diff options
75 files changed, 6464 insertions, 5985 deletions
diff --git a/.editorconfig b/.editorconfig index 705b1f022..70cc78f0b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,38 +6,38 @@ root = true [*] -indent_style = tab -indent_size = 8 -tab_width = 8 -end_of_line = lf charset = utf-8 +end_of_line = lf +indent_size = 8 +indent_style = tab insert_final_newline = true +tab_width = 8 [{Makefile,Makefile.*,makefile,*.mk}] trim_trailing_whitespace = true #max_line_length = 80 [*.{c,cc,C,cxx,cpp,h,hh,H,hxx,hpp,inc,y}] -indent_style = space indent_size = 2 +indent_style = space trim_trailing_whitespace = true #max_line_length = 120 [{*.rb,Rakefile,rakefile,*.rake,*.gemspec,*.gembox}] -indent_style = space indent_size = 2 +indent_style = space trim_trailing_whitespace = true #max_line_length = 120 [*.bat] -end_of_line = crlf charset = latin1 +end_of_line = crlf #max_line_length = 80 [*.{yaml,yml}] -indent_style = space indent_size = 2 +indent_style = space [*.md] -indent_style = space indent_size = 2 +indent_style = space diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 000000000..d28f636f9 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# Extend the tab with 8 whitespace +6fc5dc986a5ffc1a74c63ad0617ea1dcc10d3cdd diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 93e759c3e..6ee80eefd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ jobs: MRUBY_CONFIG: ci/gcc-clang CC: gcc steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Ruby version run: ruby -v - name: Compiler version @@ -25,7 +25,7 @@ jobs: MRUBY_CONFIG: ci/gcc-clang CC: clang steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Ruby version run: ruby -v - name: Compiler version @@ -40,7 +40,7 @@ jobs: MRUBY_CONFIG: ci/gcc-clang CC: gcc steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Ruby version run: ruby -v - name: Compiler version @@ -55,7 +55,7 @@ jobs: MRUBY_CONFIG: ci/gcc-clang CC: clang steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Ruby version run: ruby -v - name: Compiler version @@ -70,7 +70,7 @@ jobs: MRUBY_CONFIG: ci/gcc-clang CC: clang steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Ruby version run: ruby -v - name: Compiler version @@ -85,7 +85,7 @@ jobs: MRUBY_CONFIG: ci/gcc-clang CC: gcc steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Ruby version run: ruby -v - name: Compiler version @@ -105,8 +105,8 @@ jobs: package-dir: C:\cygwin-package cache-version: v1 steps: - - uses: actions/checkout@v2 - - uses: actions/[email protected] + - uses: actions/[email protected] + - uses: actions/[email protected] with: path: ${{ env.package-dir }} key: ${{ runner.os }}-cygwin-${{ env.cache-version }} @@ -145,7 +145,7 @@ jobs: env: MRUBY_CONFIG: ci/msvc steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Ruby version run: ruby -v - name: Build and test diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 75f80a558..4b0be0ed0 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/[email protected] with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f949c5bbc..3e89c0328 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -4,29 +4,29 @@ on: [pull_request] jobs: misspell: - name: Check Spelling + name: Check spelling with misspell runs-on: ubuntu-latest steps: - name: Check Out - uses: actions/checkout@v2 + uses: actions/[email protected] - name: Install - run: | - wget -O - -q https://git.io/misspell | sh -s -- -b . + run: wget -O - -q https://git.io/misspell | sh -s -- -b . - name: Misspell - run: | - git ls-files --empty-directory | xargs ./misspell -error - merge-conflict: - name: Merge Conflict + run: git ls-files --empty-directory | xargs ./misspell -error + pre-commit: + name: Run pre-commit runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/[email protected] - name: Check merge conflict run: | - grep "^<<<<<<< HEAD" $(git ls-files | xargs) && exit 1 || true - trailing-whitespace: - name: Trailing whitespace - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Check for trailing whitespace - run: "! git grep -EIn $'[ \t]+$'" + python -m pip install --upgrade pip + pip install pre-commit + - name: Set PY + run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV + - uses: actions/cache@v1 + with: + path: ~/.cache/pre-commit + key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} + - name: Run pre-commit + run: pre-commit run --all-files diff --git a/.github/workflows/linter.yml b/.github/workflows/super-linter.yml index 306060c3f..884f705d5 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/super-linter.yml @@ -1,4 +1,4 @@ -name: Lint Code Base +name: Super Linter on: push: @@ -12,14 +12,12 @@ jobs: name: Lint Code Base runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: github/super-linter@v3 + - uses: actions/[email protected] + - uses: github/[email protected] env: ERROR_ON_MISSING_EXEC_BIT: true VALIDATE_BASH: true # VALIDATE_BASH_EXEC: true # VALIDATE_EDITORCONFIG: true - VALIDATE_MARKDOWN: true # VALIDATE_SHELL_SHFMT: true - VALIDATE_YAML: true GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 46abd0675..a274930e7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,16 +27,37 @@ repos: # hooks: # - id: forbid-tabs # - id: remove-tabs + - repo: https://github.com/codespell-project/codespell + rev: v2.0.0 + hooks: + - id: codespell + name: Run codespell + description: Check spelling with codespell + entry: codespell --ignore-words=codespell.txt - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.27.1 hooks: - id: markdownlint name: Run markdownlint + description: Checks the style of Markdown files entry: markdownlint -c .github/linters/.markdown-lint.yml . + types: [markdown] + files: \.(md|mdown|markdown)$ - repo: https://github.com/adrienverge/yamllint rev: v1.26.1 hooks: - id: yamllint - name: Check YAML files with yamllint - entry: yamllint --strict -c .github/linters/.yaml-lint.yml . + name: Run yamllint + description: Check YAML files with yamllint + entry: yamllint --strict -c .github/linters/.yaml-lint.yml types: [yaml] + files: \.(yaml|yml)$ + - repo: local + hooks: + - id: sort-codespell-wordlist + name: Sort codespell.txt + description: Sort alphabetically and uniquify codespell.txt + entry: ./scripts/ci/pre-commit/sort-codespell-wordlist.sh + language: system + files: ^\.pre-commit-config\.yaml$|^codespell\.txt$ + require_serial: true @@ -1,14 +1,14 @@ # Authors of mruby (mruby developers) -## The List of Contributors sorted by number of commits (as of 2021-04-12 ff2ffe3) +## The List of Contributors sorted by number of commits (as of 2021-05-15 c09a810) - 7340 Yukihiro "Matz" Matsumoto (@matz)* - 576 KOBAYASHI Shuji (@shuujii) + 7418 Yukihiro "Matz" Matsumoto (@matz)* + 582 KOBAYASHI Shuji (@shuujii) 376 Daniel Bovensiepen (@bovi) 344 Takeshi Watanabe (@take-cheeze)* 334 Masaki Muranaka (@monaka) 298 Tomoyuki Sahara (@tsahara)* - 276 dearblue (@dearblue)* + 285 dearblue (@dearblue)* 234 Jun Hiroe (@suzukaze) 217 Cremno (@cremno)* 208 Yuki Kurihara (@ksss)+ @@ -34,8 +34,8 @@ 38 Kouhei Sutou (@kou)* 31 MATSUMOTO Ryosuke (@matsumotory)* 30 Nobuyoshi Nakada (@nobu) + 29 John Bampton (@jbampton) 28 Masayoshi Takahashi (@takahashim)+ - 26 John Bampton (@jbampton) 24 Julian Aron Prenner (@furunkel)* 24 Ryan Scott (@ryan-scott-dev)* 22 Clayton Smith (@clayton-shopify) @@ -50,7 +50,7 @@ 18 Corey Powell (@IceDragon200) 18 Jon Maken (@jonforums)+ 18 Mitchell Blank Jr (@mitchblank)* - 16 Ryan Lopopolo (@lopopolo) + 17 Ryan Lopopolo (@lopopolo) 16 bggd (@bggd) 16 kano4 (@kano4) 14 Blaž Hrastnik (@archseer)* @@ -131,8 +131,8 @@ 3 J. Mutua (@katmutua)+ 3 Jan Berdajs (@mrbrdo) 3 Joseph McCullough (@joequery) + 3 Mark McCurry (@fundamental) 3 Nobuhiro Iwamatsu (@iwamatsu) - 3 Mark McCurry (@fundamental) 3 Per Lundberg (@perlun)* 3 Rob Fors (@robfors)* 3 Rodrigo Malizia (@rmalizia44)+ diff --git a/build_config/IntelGalileo.rb b/build_config/IntelGalileo.rb index d28986e36..f1f39e5dc 100644 --- a/build_config/IntelGalileo.rb +++ b/build_config/IntelGalileo.rb @@ -74,7 +74,7 @@ MRuby::CrossBuild.new("Galileo") do |conf| conf.gem :core => "mruby-fiber" conf.gem :core => "mruby-toplevel-ext" - #lightweigh regular expression + #lightweight regular expression conf.gem :github => "masamitsu-murase/mruby-hs-regexp", :branch => "master" #Arduino API diff --git a/codespell.txt b/codespell.txt new file mode 100644 index 000000000..dcc0ddb43 --- /dev/null +++ b/codespell.txt @@ -0,0 +1,17 @@ +ans +ba +creat +delet +disabl +filetest +fo +hel +hist +ist +methid +nd +quitt +remore +runn +sting +upto diff --git a/doc/guides/compile.md b/doc/guides/compile.md index 7156b2b68..08dbd850f 100644 --- a/doc/guides/compile.md +++ b/doc/guides/compile.md @@ -333,9 +333,9 @@ conf.enable_debug When debugging mode is enabled * Macro `MRB_DEBUG` would be defined. - * Which means `mrb_assert()` macro is enabled. + * Which means `mrb_assert()` macro is enabled. * Debug information of irep would be generated by `mrbc`. - * Because `-g` flag would be added to `mrbc` runner. + * Because `-g` flag would be added to `mrbc` runner. * You can have better backtrace of mruby scripts with this. ## Cross-Compilation @@ -379,23 +379,25 @@ end During the build process the directory `build` will be created in the root directory. The structure of this directory will look like this: - +- build - | - +- host - | - +- LEGAL <- License description - | - +- bin <- Binaries (mirb, mrbc and mruby) - | - +- lib <- Libraries (libmruby.a and libmruby_core.a) - | - +- mrbc <- Minimal mrbc place - | - +- mrbgems <- Compilation result from mrbgems - | - +- mrblib <- Compilation result from mrblib - | - +- src <- Compilation result from C sources +``` ++- build + | + +- host + | + +- LEGAL <- License description + | + +- bin <- Binaries (mirb, mrbc and mruby) + | + +- lib <- Libraries (libmruby.a and libmruby_core.a) + | + +- mrbc <- Minimal mrbc place + | + +- mrbgems <- Compilation result from mrbgems + | + +- mrblib <- Compilation result from mrblib + | + +- src <- Compilation result from C sources +``` The compilation workflow will look like this: @@ -425,31 +427,33 @@ The compilation workflow will look like this: In case of a cross-compilation to `i386` the `build` directory structure looks like this: - +- build - | - +- host - | | - | +- bin <- Native Binaries - | | - | +- lib <- Native Libraries - | | - | +- mrbgems - | | - | +- src - | - +- i386 - | - +- bin <- Cross-compiled Binaries - | - +- include <- Header Directory - | - +- lib <- Cross-compiled Libraries - | - +- mrbgems - | - +- mrblib - | - +- src +``` ++- build + | + +- host + | | + | +- bin <- Native Binaries + | | + | +- lib <- Native Libraries + | | + | +- mrbgems + | | + | +- src + | + +- i386 + | + +- bin <- Cross-compiled Binaries + | + +- include <- Header Directory + | + +- lib <- Cross-compiled Libraries + | + +- mrbgems + | + +- mrblib + | + +- src +``` An extra directory is created for the target platform. In case you compile for `i386` a directory called `i386` is created under the diff --git a/doc/guides/mrbgems.md b/doc/guides/mrbgems.md index d4160ebc8..9aebb9208 100644 --- a/doc/guides/mrbgems.md +++ b/doc/guides/mrbgems.md @@ -111,21 +111,21 @@ contains every gem found in the `mrbgems` directory. The maximal GEM structure looks like this: ``` -+- GEM_NAME <- Name of GEM - | - +- README.md <- Readme for GEM - | - +- mrbgem.rake <- GEM Specification - | - +- include/ <- Header for Ruby extension (will exported) - | - +- mrblib/ <- Source for Ruby extension - | - +- src/ <- Source for C extension - | - +- tools/ <- Source for Executable (in C) - | - +- test/ <- Test code (Ruby) ++- GEM_NAME <- Name of GEM + | + +- README.md <- Readme for GEM + | + +- mrbgem.rake <- GEM Specification + | + +- include/ <- Header for Ruby extension (will exported) + | + +- mrblib/ <- Source for Ruby extension + | + +- src/ <- Source for C extension + | + +- tools/ <- Source for Executable (in C) + | + +- test/ <- Test code (Ruby) ``` The folder `mrblib` contains pure Ruby files to extend mruby. The folder `src` @@ -297,19 +297,21 @@ mrb_c_extension_example_gem_final(mrb_state* mrb) { ### Example - +- c_extension_example/ - | - +- README.md (Optional) - | - +- src/ - | | - | +- example.c <- C extension source - | - +- test/ - | | - | +- example.rb <- Test code for C extension - | - +- mrbgem.rake <- GEM specification +``` ++- c_extension_example/ + | + +- README.md (Optional) + | + +- src/ + | | + | +- example.c <- C extension source + | + +- test/ + | | + | +- example.rb <- Test code for C extension + | + +- mrbgem.rake <- GEM specification +``` ## Ruby Extension @@ -323,19 +325,21 @@ none ### Example - +- ruby_extension_example/ - | - +- README.md (Optional) - | - +- mrblib/ - | | - | +- example.rb <- Ruby extension source - | - +- test/ - | | - | +- example.rb <- Test code for Ruby extension - | - +- mrbgem.rake <- GEM specification +``` ++- ruby_extension_example/ + | + +- README.md (Optional) + | + +- mrblib/ + | | + | +- example.rb <- Ruby extension source + | + +- test/ + | | + | +- example.rb <- Test code for Ruby extension + | + +- mrbgem.rake <- GEM specification +``` ## C and Ruby Extension @@ -353,23 +357,25 @@ See C and Ruby example. ### Example - +- c_and_ruby_extension_example/ - | - +- README.md (Optional) - | - +- mrblib/ - | | - | +- example.rb <- Ruby extension source - | - +- src/ - | | - | +- example.c <- C extension source - | - +- test/ - | | - | +- example.rb <- Test code for C and Ruby extension - | - +- mrbgem.rake <- GEM specification +``` ++- c_and_ruby_extension_example/ + | + +- README.md (Optional) + | + +- mrblib/ + | | + | +- example.rb <- Ruby extension source + | + +- src/ + | | + | +- example.c <- C extension source + | + +- test/ + | | + | +- example.rb <- Test code for C and Ruby extension + | + +- mrbgem.rake <- GEM specification +``` ## Binary gems @@ -389,23 +395,23 @@ binary gems, to separate normal gems and binary gems. ### Example ``` - +- mruby-bin-example/ ++- mruby-bin-example/ | - +- README.md (Optional) + +- README.md (Optional) | +- bintest/ - | | - | +- example.rb <- Test code for binary gem + | | + | +- example.rb <- Test code for binary gem | - +- mrbgem.rake <- Gem specification + +- mrbgem.rake <- Gem specification | - +- mrblib/ <- Source for Ruby extension (Optional) + +- mrblib/ <- Source for Ruby extension (Optional) | - +- src/ <- Source for C extension (Optional) + +- src/ <- Source for C extension (Optional) | +- tools/ - | - +- example/ <- Executable name directory - | - +- example.c <- Source for Executable (includes main) + | + +- example/ <- Executable name directory + | + +- example.c <- Source for Executable (includes main) ``` diff --git a/doc/limitations.md b/doc/limitations.md index d903d528c..265e4a2d4 100644 --- a/doc/limitations.md +++ b/doc/limitations.md @@ -13,28 +13,6 @@ This document is collecting these limitations. This document does not contain a complete list of limitations. Please help to improve it by submitting your findings. -## `Array` passed to `puts` - -Passing an Array to `puts` results in different output. - -```ruby -puts [1,2,3] -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -``` -1 -2 -3 -``` - -#### mruby [3.0.0 (2021-03-05)] - -``` -[1, 2, 3] -``` - ## `Kernel.raise` in rescue clause `Kernel.raise` without arguments does not raise the current exception within @@ -54,7 +32,7 @@ end #### mruby [3.0.0 (2021-03-05)] -No exception is raised. Instead, you have to do: +`RuntimeError` is raised instead of `ZeroDivisionError`. To re-raise the exception, you have to do: ```ruby begin @@ -77,7 +55,7 @@ To reduce memory consumption `Array` does not support instance variables. ```ruby class Liste < Array def initialize(str = nil) - @feld = str + @field = str end end diff --git a/doc/mruby3.md b/doc/mruby3.md index d5218428e..cf103e428 100644 --- a/doc/mruby3.md +++ b/doc/mruby3.md @@ -77,8 +77,9 @@ to be default `mrb_value` representation. Now the default is Pack `mrb_value` in an `intptr_t` integer. Consumes less memory compared to `MRB_NO_BOXING` especially on 32-bit -platforms. `Fixnum` size is 31 bits, so some integer values -does not fit in `Fixnum` integers. +platforms. Inlined integer size is 31 bits, so some `mrb_int` +values does not fit in `mrb_value`. Those integers are allocated +in the object heap as `struct RInteger`. ## `MRB_NAN_BOXING` diff --git a/include/mrbconf.h b/include/mrbconf.h index d4da81bfc..2a320f371 100644 --- a/include/mrbconf.h +++ b/include/mrbconf.h @@ -181,14 +181,6 @@ # include <stdio.h> #endif -#ifndef FALSE -# define FALSE 0 -#endif - -#ifndef TRUE -# define TRUE 1 -#endif - /* ** mruby tuning profiles **/ diff --git a/include/mruby.h b/include/mruby.h index d421dc58c..04d8c1a53 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -1220,9 +1220,8 @@ MRB_API mrb_bool mrb_obj_eq(mrb_state *mrb, mrb_value a, mrb_value b); MRB_API mrb_bool mrb_obj_equal(mrb_state *mrb, mrb_value a, mrb_value b); MRB_API mrb_bool mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2); MRB_API mrb_value mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base); -MRB_API mrb_value mrb_Integer(mrb_state *mrb, mrb_value val); #ifndef MRB_NO_FLOAT -MRB_API mrb_value mrb_Float(mrb_state *mrb, mrb_value val); +MRB_API mrb_value mrb_to_float(mrb_state *mrb, mrb_value val); #endif MRB_API mrb_value mrb_inspect(mrb_state *mrb, mrb_value obj); MRB_API mrb_bool mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2); @@ -1340,7 +1339,8 @@ MRB_API void mrb_gc_register(mrb_state *mrb, mrb_value obj); MRB_API void mrb_gc_unregister(mrb_state *mrb, mrb_value obj); MRB_API mrb_value mrb_to_int(mrb_state *mrb, mrb_value val); -#define mrb_int(mrb, val) mrb_integer(mrb_to_int(mrb, val)) +#define mrb_as_int(mrb, val) mrb_integer(mrb_to_int(mrb, val)) + /* string type checking (contrary to the name, it doesn't convert) */ MRB_API mrb_value mrb_to_str(mrb_state *mrb, mrb_value val); MRB_API void mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t); @@ -1361,6 +1361,8 @@ MRB_API mrb_bool mrb_respond_to(mrb_state *mrb, mrb_value obj, mrb_sym mid); MRB_API mrb_bool mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, struct RClass* c); MRB_API mrb_bool mrb_func_basic_p(mrb_state *mrb, mrb_value obj, mrb_sym mid, mrb_func_t func); +/* obsolete function(s); will be removed */ +#define mrb_int(mrb, val) mrb_as_int(mrb, val) /** * Resume a Fiber diff --git a/include/mruby/array.h b/include/mruby/array.h index 16f78f773..105e825ea 100644 --- a/include/mruby/array.h +++ b/include/mruby/array.h @@ -177,20 +177,6 @@ MRB_API void mrb_ary_push(mrb_state *mrb, mrb_value array, mrb_value value); MRB_API mrb_value mrb_ary_pop(mrb_state *mrb, mrb_value ary); /* - * Returns a reference to an element of the array on the given index. - * - * Equivalent to: - * - * ary[n] - * - * @param mrb The mruby state reference. - * @param ary The target array. - * @param n The array index being referenced - * @return The referenced value. - */ -MRB_API mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n); - -/* * Sets a value on an array at the given index * * Equivalent to: @@ -200,7 +186,7 @@ MRB_API mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n); * @param mrb The mruby state reference. * @param ary The target array. * @param n The array index being referenced. - * @param val The value being setted. + * @param val The value being set. */ MRB_API void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val); @@ -243,6 +229,7 @@ MRB_API mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item * @param offset The element position (negative counts from the tail). */ MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset); +#define mrb_ary_ref(mrb, ary, n) mrb_ary_entry(ary, n) /* * Replace subsequence of an array. diff --git a/include/mruby/numeric.h b/include/mruby/numeric.h index fc6cacfda..e09a797ed 100644 --- a/include/mruby/numeric.h +++ b/include/mruby/numeric.h @@ -30,21 +30,19 @@ MRB_BEGIN_DECL #endif #endif -#ifndef MRB_NO_FLOAT -MRB_API mrb_value mrb_flo_to_fixnum(mrb_state *mrb, mrb_value val); -#endif -MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base); -/* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */ -#ifndef MRB_NO_FLOAT -MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt); -MRB_API int mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float f); -MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value x); -#endif - MRB_API mrb_value mrb_num_plus(mrb_state *mrb, mrb_value x, mrb_value y); MRB_API mrb_value mrb_num_minus(mrb_state *mrb, mrb_value x, mrb_value y); MRB_API mrb_value mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y); +MRB_API mrb_value mrb_integer_to_str(mrb_state *mrb, mrb_value x, mrb_int base); +MRB_API char *mrb_int_to_cstr(char *buf, size_t len, mrb_int n, mrb_int base); + +/* internal function(s) */ +mrb_int mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y); + +/* obsolete function(s); will be removed */ +#define mrb_fixnum_to_str(mrb, x, base) mrb_integer_to_str(mrb, x, base) + #ifndef __has_builtin #define __has_builtin(x) 0 #endif @@ -162,6 +160,19 @@ mrb_int_mul_overflow(mrb_int a, mrb_int b, mrb_int *c) # define MRB_FLT_MAX DBL_MAX # define MRB_FLT_MAX_10_EXP DBL_MAX_10_EXP # endif /* MRB_USE_FLOAT32 */ + +MRB_API mrb_value mrb_float_to_integer(mrb_state *mrb, mrb_value val); +MRB_API mrb_float mrb_as_float(mrb_state *mrb, mrb_value x); + +/* internal functions */ +mrb_float mrb_div_float(mrb_float x, mrb_float y); +mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt); +int mrb_format_float(mrb_float f, char *buf, size_t buf_size, char fmt, int prec, char sign); + +/* obsolete functions; will be removed */ +#define mrb_flo_to_fixnum(mrb, val) mrb_float_to_integer(mrb, val) +#define mrb_to_flo(mrb, x) mrb_as_float(mrb, x) + #endif /* MRB_NO_FLOAT */ MRB_END_DECL diff --git a/include/mruby/ops.h b/include/mruby/ops.h index d5d8fb077..98f447aab 100644 --- a/include/mruby/ops.h +++ b/include/mruby/ops.h @@ -93,8 +93,8 @@ OPCODE(AREF, BBB) /* R(a) = R(b)[c] */ OPCODE(ASET, BBB) /* R(a)[c] = R(b) */ OPCODE(APOST, BBB) /* *R(a),R(a+1)..R(a+c) = R(a)[b..] */ OPCODE(INTERN, B) /* R(a) = intern(R(a)) */ -OPCODE(STRING, BB) /* R(a) = str_dup(Lit(b)) */ -OPCODE(STRING16, BS) /* R(a) = str_dup(Lit(b)) */ +OPCODE(STRING, BB) /* R(a) = str_dup(Pool(b)) */ +OPCODE(STRING16, BS) /* R(a) = str_dup(Pool(b)) */ OPCODE(STRCAT, B) /* str_cat(R(a),R(a+1)) */ OPCODE(HASH, BB) /* R(a) = hash_new(R(a),R(a+1)..R(a+b*2-1)) */ OPCODE(HASHADD, BB) /* R(a) = hash_push(R(a),R(a+1)..R(a+b*2)) */ @@ -118,5 +118,5 @@ OPCODE(UNDEF, B) /* undef_method(target_class,Syms(a)) */ OPCODE(SCLASS, B) /* R(a) = R(a).singleton_class */ OPCODE(TCLASS, B) /* R(a) = target_class */ OPCODE(DEBUG, BBB) /* print a,b,c */ -OPCODE(ERR, B) /* raise(LocalJumpError, Lit(a)) */ +OPCODE(ERR, B) /* raise(LocalJumpError, Pool(a)) */ OPCODE(STOP, Z) /* stop VM */ diff --git a/include/mruby/string.h b/include/mruby/string.h index 4410accd5..9c88a0856 100644 --- a/include/mruby/string.h +++ b/include/mruby/string.h @@ -370,9 +370,7 @@ MRB_API mrb_value mrb_str_dup(mrb_state *mrb, mrb_value str); MRB_API mrb_value mrb_str_intern(mrb_state *mrb, mrb_value self); MRB_API mrb_value mrb_str_to_inum(mrb_state *mrb, mrb_value str, mrb_int base, mrb_bool badcheck); -MRB_API mrb_value mrb_cstr_to_inum(mrb_state *mrb, const char *s, mrb_int base, mrb_bool badcheck); MRB_API double mrb_str_to_dbl(mrb_state *mrb, mrb_value str, mrb_bool badcheck); -MRB_API double mrb_cstr_to_dbl(mrb_state *mrb, const char *s, mrb_bool badcheck); /** * Returns a converted string type. diff --git a/include/mruby/value.h b/include/mruby/value.h index 39c01509d..d9389b6fd 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -31,7 +31,30 @@ typedef uint32_t mrb_sym; * Not to be confused with Ruby's boolean classes, which can be * obtained using mrb_false_value() and mrb_true_value() */ +#if defined(__cplusplus) || (defined(__bool_true_false_are_defined) && __bool_true_false_are_defined) +typedef bool mrb_bool; + +# ifndef FALSE +# define FALSE false +# endif +# ifndef TRUE +# define TRUE true +# endif +#else +# if __STDC_VERSION__ >= 199901L +typedef _Bool mrb_bool; +# else typedef uint8_t mrb_bool; +# endif + +# ifndef FALSE +# define FALSE 0 +# endif +# ifndef TRUE +# define TRUE 1 +# endif +#endif + struct mrb_state; #if defined _MSC_VER && _MSC_VER < 1800 @@ -77,6 +100,7 @@ struct mrb_state; # define MRB_ENDIAN_LOHI(a,b) b a #endif +MRB_API mrb_int mrb_int_read(const char *p, const char *e, char **endp); #ifndef MRB_NO_FLOAT MRB_API double mrb_float_read(const char*, char**); #ifdef MRB_USE_FLOAT32 diff --git a/lib/mruby/presym.rb b/lib/mruby/presym.rb index 6a68cf65c..016c2b20e 100644 --- a/lib/mruby/presym.rb +++ b/lib/mruby/presym.rb @@ -99,7 +99,7 @@ module MRuby end def list_path - @list_pat ||= "#{@build.build_dir}/presym".freeze + @list_path ||= "#{@build.build_dir}/presym".freeze end def header_dir; diff --git a/mrbgems/mruby-array-ext/mrblib/array.rb b/mrbgems/mruby-array-ext/mrblib/array.rb index ecd09aa6e..7fbb948d2 100644 --- a/mrbgems/mruby-array-ext/mrblib/array.rb +++ b/mrbgems/mruby-array-ext/mrblib/array.rb @@ -150,7 +150,7 @@ class Array # [ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ] # def &(elem) - raise TypeError, "can't convert #{elem.class} into Array" unless elem.class == Array + raise TypeError, "cannot convert #{elem.class} into Array" unless elem.class == Array hash = {} array = [] @@ -204,7 +204,7 @@ class Array # a.intersect?(b) #=> true # a.intersect?(c) #=> false def intersect?(ary) - raise TypeError, "can't convert #{ary.class} into Array" unless ary.class == Array + raise TypeError, "cannot convert #{ary.class} into Array" unless ary.class == Array hash = {} if self.length > ary.length @@ -294,41 +294,6 @@ class Array end end - ## - # call-seq: - # ary.compact -> new_ary - # - # Returns a copy of +self+ with all +nil+ elements removed. - # - # [ "a", nil, "b", nil, "c", nil ].compact - # #=> [ "a", "b", "c" ] - # - def compact - result = self.dup - result.compact! - result - end - - ## - # call-seq: - # ary.compact! -> ary or nil - # - # Removes +nil+ elements from the array. - # Returns +nil+ if no changes were made, otherwise returns - # <i>ary</i>. - # - # [ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ] - # [ "a", "b", "c" ].compact! #=> nil - # - def compact! - result = self.select { |e| !e.nil? } - if result.size == self.size - nil - else - self.replace(result) - end - end - # for efficiency def reverse_each(&block) return to_enum :reverse_each unless block @@ -485,57 +450,6 @@ class Array ## # call-seq: - # ary.rotate(count=1) -> new_ary - # - # Returns a new array by rotating +self+ so that the element at +count+ is - # the first element of the new array. - # - # If +count+ is negative then it rotates in the opposite direction, starting - # from the end of +self+ where +-1+ is the last element. - # - # a = [ "a", "b", "c", "d" ] - # a.rotate #=> ["b", "c", "d", "a"] - # a #=> ["a", "b", "c", "d"] - # a.rotate(2) #=> ["c", "d", "a", "b"] - # a.rotate(-3) #=> ["b", "c", "d", "a"] - - def rotate(count=1) - ary = [] - len = self.length - - if len > 0 - idx = (count < 0) ? (len - (~count % len) - 1) : (count % len) # rotate count - len.times do - ary << self[idx] - idx += 1 - idx = 0 if idx > len-1 - end - end - ary - end - - ## - # call-seq: - # ary.rotate!(count=1) -> ary - # - # Rotates +self+ in place so that the element at +count+ comes first, and - # returns +self+. - # - # If +count+ is negative then it rotates in the opposite direction, starting - # from the end of the array where +-1+ is the last element. - # - # a = [ "a", "b", "c", "d" ] - # a.rotate! #=> ["b", "c", "d", "a"] - # a #=> ["b", "c", "d", "a"] - # a.rotate!(2) #=> ["d", "a", "b", "c"] - # a.rotate!(-3) #=> ["a", "b", "c", "d"] - - def rotate!(count=1) - self.replace(self.rotate(count)) - end - - ## - # call-seq: # ary.delete_if { |item| block } -> ary # ary.delete_if -> Enumerator # @@ -961,7 +875,7 @@ class Array # ary.to_h -> Hash # ary.to_h{|item| ... } -> Hash # - # Returns the result of interpreting <i>aray</i> as an array of + # Returns the result of interpreting <i>array</i> as an array of # <tt>[key, value]</tt> pairs. If a block is given, it should # return <tt>[key, value]</tt> pairs to construct a hash. # diff --git a/mrbgems/mruby-array-ext/src/array.c b/mrbgems/mruby-array-ext/src/array.c index 8df9d7f30..d97778642 100644 --- a/mrbgems/mruby-array-ext/src/array.c +++ b/mrbgems/mruby-array-ext/src/array.c @@ -95,6 +95,12 @@ mrb_ary_at(mrb_state *mrb, mrb_value ary) } static mrb_value +ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n) +{ + return mrb_ary_entry(ary, n); +} + +static mrb_value mrb_ary_values_at(mrb_state *mrb, mrb_value self) { mrb_int argc; @@ -102,10 +108,9 @@ mrb_ary_values_at(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "*", &argv, &argc); - return mrb_get_values_at(mrb, self, RARRAY_LEN(self), argc, argv, mrb_ary_ref); + return mrb_get_values_at(mrb, self, RARRAY_LEN(self), argc, argv, ary_ref); } - /* * call-seq: * ary.slice!(index) -> obj or nil @@ -183,6 +188,168 @@ mrb_ary_slice_bang(mrb_state *mrb, mrb_value self) return ary; } +/* + * call-seq: + * ary.compact -> new_ary + * + * Returns a copy of +self+ with all +nil+ elements removed. + * + * [ "a", nil, "b", nil, "c", nil ].compact + * #=> [ "a", "b", "c" ] + */ + +static mrb_value +mrb_ary_compact(mrb_state *mrb, mrb_value self) +{ + mrb_value ary = mrb_ary_new(mrb); + mrb_int len = RARRAY_LEN(self); + mrb_value *p = RARRAY_PTR(self); + + for (mrb_int i = 0; i < len; ++i) { + if (!mrb_nil_p(p[i])) { + mrb_ary_push(mrb, ary, p[i]); + } + } + return ary; +} + +/* + * call-seq: + * ary.compact! -> ary or nil + * + * Removes +nil+ elements from the array. + * Returns +nil+ if no changes were made, otherwise returns + * <i>ary</i>. + * + * [ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ] + * [ "a", "b", "c" ].compact! #=> nil + */ +static mrb_value +mrb_ary_compact_bang(mrb_state *mrb, mrb_value self) +{ + struct RArray *a = mrb_ary_ptr(self); + mrb_int i, j = 0; + mrb_int len = ARY_LEN(a); + mrb_value *p = ARY_PTR(a); + + mrb_ary_modify(mrb, a); + for (i = 0; i < len; ++i) { + if (!mrb_nil_p(p[i])) { + if (i != j) p[j] = p[i]; + j++; + } + } + if (i == j) return mrb_nil_value(); + if (j < len) ARY_SET_LEN(RARRAY(self), j); + return self; +} + + +/* + * call-seq: + * ary.rotate(count=1) -> new_ary + * + * Returns a new array by rotating +self+ so that the element at +count+ is + * the first element of the new array. + * + * If +count+ is negative then it rotates in the opposite direction, starting + * from the end of +self+ where +-1+ is the last element. + * + * a = [ "a", "b", "c", "d" ] + * a.rotate #=> ["b", "c", "d", "a"] + * a #=> ["a", "b", "c", "d"] + * a.rotate(2) #=> ["c", "d", "a", "b"] + * a.rotate(-3) #=> ["b", "c", "d", "a"] + */ +static mrb_value +mrb_ary_rotate(mrb_state *mrb, mrb_value self) +{ + mrb_value ary = mrb_ary_new(mrb); + mrb_int len = RARRAY_LEN(self); + mrb_value *p = RARRAY_PTR(self); + mrb_int count=1, idx; + + mrb_get_args(mrb, "|i", &count); + if (len <= 0) return ary; + if (count < 0) { + idx = len - (~count % len) - 1; + } + else { + idx = count % len; + } + for (mrb_int i = 0; i<len; i++) { + mrb_ary_push(mrb, ary, p[idx++]); + if (idx == len) idx = 0; + } + return ary; +} + +static void +rev(mrb_value *p, mrb_int beg, mrb_int end) +{ + for (mrb_int i=beg,j=end-1; i<j; i++,j--) { + mrb_value v = p[i]; + p[i] = p[j]; + p[j] = v; + } +} + +/* + * call-seq: + * ary.rotate!(count=1) -> ary + * + * Rotates +self+ in place so that the element at +count+ comes first, and + * returns +self+. + * + * If +count+ is negative then it rotates in the opposite direction, starting + * from the end of the array where +-1+ is the last element. + * + * a = [ "a", "b", "c", "d" ] + * a.rotate! #=> ["b", "c", "d", "a"] + * a #=> ["b", "c", "d", "a"] + * a.rotate!(2) #=> ["d", "a", "b", "c"] + * a.rotate!(-3) #=> ["a", "b", "c", "d"] + */ +static mrb_value +mrb_ary_rotate_bang(mrb_state *mrb, mrb_value self) +{ + struct RArray *a = mrb_ary_ptr(self); + mrb_int len = ARY_LEN(a); + mrb_value *p = ARY_PTR(a); + mrb_int count=1, idx; + + mrb_get_args(mrb, "|i", &count); + mrb_ary_modify(mrb, a); + if (len == 0 || count == 0) return self; + if (count == 1) { + mrb_value v = p[0]; + for (mrb_int i=1; i<len; i++) { + p[i-1] = p[i]; + } + p[len-1] = v; + return self; + } + if (count < 0) { + idx = len - (~count % len) - 1; + } + else { + idx = count % len; + } + /* e.g. [1,2,3,4,5].rotate!(2) -> [3,4,5,1,2] */ + /* first, reverse the whole array */ + /* [1,2,3,4,5] -> [5,4,3,2,1] */ + rev(p, 0, len); + /* then, re-reverse part before idx */ + /* [5,4,3,2,1] -> [3,4,5,2,1] */ + /* ^idx ~~~~~ */ + rev(p, 0, len-idx); + /* finally, re-reverse part after idx */ + /* [3,4,5,2,1] -> [3,4,5,1,2] */ + /* ^idx ~~~ */ + rev(p, len-idx, len); + return self; +} + void mrb_mruby_array_ext_gem_init(mrb_state* mrb) { @@ -192,7 +359,11 @@ mrb_mruby_array_ext_gem_init(mrb_state* mrb) mrb_define_method(mrb, a, "at", mrb_ary_at, MRB_ARGS_REQ(1)); mrb_define_method(mrb, a, "rassoc", mrb_ary_rassoc, MRB_ARGS_REQ(1)); mrb_define_method(mrb, a, "values_at", mrb_ary_values_at, MRB_ARGS_ANY()); - mrb_define_method(mrb, a, "slice!", mrb_ary_slice_bang, MRB_ARGS_ARG(1,1)); + mrb_define_method(mrb, a, "slice!", mrb_ary_slice_bang, MRB_ARGS_ARG(1,1)); + mrb_define_method(mrb, a, "compact", mrb_ary_compact, MRB_ARGS_NONE()); + mrb_define_method(mrb, a, "compact!", mrb_ary_compact_bang, MRB_ARGS_NONE()); + mrb_define_method(mrb, a, "rotate", mrb_ary_rotate, MRB_ARGS_OPT(1)); + mrb_define_method(mrb, a, "rotate!", mrb_ary_rotate_bang, MRB_ARGS_OPT(1)); } void diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 12f7c3b3f..06696850f 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1320,9 +1320,7 @@ gen_assignment(codegen_scope *s, node *tree, int sp, int val) break; default: -#ifndef MRB_NO_STDIO - fprintf(stderr, "unknown lhs %d\n", type); -#endif + codegen_error(s, "unknown lhs"); break; } if (val) push(); @@ -1450,7 +1448,7 @@ raise_error(codegen_scope *s, const char *msg) } static mrb_int -readint_mrb_int(codegen_scope *s, const char *p, int base, mrb_bool neg, mrb_bool *overflow) +readint(codegen_scope *s, const char *p, int base, mrb_bool *overflow) { const char *e = p + strlen(p); mrb_int result = 0; @@ -1460,31 +1458,23 @@ readint_mrb_int(codegen_scope *s, const char *p, int base, mrb_bool neg, mrb_boo if (*p == '+') p++; while (p < e) { char c = *p; - c = tolower((unsigned char)c); - for (n=0; n<base; n++) { - if (mrb_digitmap[n] == c) { - break; - } - } - if (n == base) { + switch (c) { + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + n = c - '0'; break; + case '8': case '9': + n = c - '0'; break; + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + n = c - 'a' + 10; break; + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + n = c - 'A' + 10; break; + default: codegen_error(s, "malformed readint input"); } - - if (neg) { - if ((MRB_INT_MIN + n)/base > result) { - *overflow = TRUE; - return 0; - } - result *= base; - result -= n; - } - else { - if ((MRB_INT_MAX - n)/base < result) { - *overflow = TRUE; - return 0; - } - result *= base; - result += n; + if (mrb_int_mul_overflow(result, base, &result) || + mrb_int_add_overflow(result, n, &result)) { + *overflow = TRUE; + return 0; } p++; } @@ -2538,7 +2528,7 @@ codegen(codegen_scope *s, node *tree, int val) mrb_int i; mrb_bool overflow; - i = readint_mrb_int(s, p, base, FALSE, &overflow); + i = readint(s, p, base, &overflow); if (overflow) { int off = new_litbn(s, p, base, FALSE); genop_bs(s, OP_LOADL, cursp(), off); @@ -2603,12 +2593,13 @@ codegen(codegen_scope *s, node *tree, int val) mrb_int i; mrb_bool overflow; - i = readint_mrb_int(s, p, base, TRUE, &overflow); + i = readint(s, p, base, &overflow); if (overflow) { int off = new_litbn(s, p, base, TRUE); genop_bs(s, OP_LOADL, cursp(), off); } else { + i = -i; if (i == -1) genop_1(s, OP_LOADI__1, cursp()); else if (i >= -0xff) { genop_2(s, OP_LOADINEG, cursp(), (uint16_t)-i); diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 2c2bff714..8e68fa21a 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -1754,6 +1754,44 @@ command_asgn : lhs '=' command_rhs { $$ = new_op_asgn(p, new_call(p, $1, $3, 0, tCOLON2), $4, $5); } + | defn_head f_opt_arglist_paren '=' command + { + $$ = $1; + endless_method_name(p, $1); + void_expr_error(p, $4); + defn_setup(p, $$, $2, $4); + nvars_unnest(p); + p->in_def--; + } + | defn_head f_opt_arglist_paren '=' command modifier_rescue arg + { + $$ = $1; + endless_method_name(p, $1); + void_expr_error(p, $4); + void_expr_error(p, $6); + defn_setup(p, $$, $2, new_mod_rescue(p, $4, $6)); + nvars_unnest(p); + p->in_def--; + } + | defs_head f_opt_arglist_paren '=' command + { + $$ = $1; + void_expr_error(p, $4); + defs_setup(p, $$, $2, $4); + nvars_unnest(p); + p->in_def--; + p->in_single--; + } + | defs_head f_opt_arglist_paren '=' command modifier_rescue arg + { + $$ = $1; + void_expr_error(p, $4); + void_expr_error(p, $6); + defs_setup(p, $$, $2, new_mod_rescue(p, $4, $6)); + nvars_unnest(p); + p->in_def--; + p->in_single--; + } | backref tOP_ASGN command_rhs { backref_error(p, $1); @@ -2370,7 +2408,7 @@ arg : lhs '=' arg_rhs nvars_unnest(p); p->in_def--; } - | defs_head f_arglist_paren '=' arg + | defs_head f_opt_arglist_paren '=' arg { $$ = $1; void_expr_error(p, $4); @@ -2379,7 +2417,7 @@ arg : lhs '=' arg_rhs p->in_def--; p->in_single--; } - | defs_head f_arglist_paren '=' arg modifier_rescue arg + | defs_head f_opt_arglist_paren '=' arg modifier_rescue arg { $$ = $1; void_expr_error(p, $4); diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 137e4d4cf..22752e050 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -1946,16 +1946,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12611 +#define YYLAST 13314 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 149 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 177 /* YYNRULES -- Number of rules. */ -#define YYNRULES 607 +#define YYNRULES 611 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1063 +#define YYNSTATES 1075 #define YYUNDEFTOK 2 #define YYMAXUTOK 377 @@ -2018,63 +2018,64 @@ static const yytype_int16 yyrline[] = 1603, 1602, 1616, 1643, 1649, 1653, 1658, 1662, 1668, 1668, 1672, 1676, 1680, 1684, 1688, 1692, 1696, 1701, 1702, 1706, 1710, 1714, 1718, 1725, 1728, 1732, 1736, 1740, 1744, 1748, - 1753, 1757, 1764, 1765, 1769, 1773, 1774, 1778, 1782, 1786, - 1790, 1794, 1804, 1803, 1818, 1827, 1828, 1831, 1832, 1839, - 1838, 1853, 1857, 1862, 1866, 1871, 1875, 1880, 1884, 1888, - 1892, 1896, 1902, 1906, 1912, 1913, 1919, 1923, 1927, 1931, - 1935, 1939, 1943, 1947, 1951, 1955, 1961, 1962, 1968, 1972, - 1978, 1982, 1988, 1992, 1996, 2000, 2004, 2008, 2014, 2020, - 2027, 2031, 2035, 2039, 2043, 2047, 2053, 2059, 2064, 2070, - 2074, 2077, 2081, 2085, 2092, 2093, 2094, 2095, 2100, 2107, - 2108, 2111, 2115, 2115, 2121, 2122, 2123, 2124, 2125, 2126, - 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, - 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, - 2147, 2148, 2149, 2150, 2153, 2153, 2153, 2154, 2154, 2155, - 2155, 2155, 2156, 2156, 2156, 2156, 2157, 2157, 2157, 2158, - 2158, 2158, 2159, 2159, 2159, 2159, 2160, 2160, 2160, 2160, - 2161, 2161, 2161, 2161, 2162, 2162, 2162, 2162, 2163, 2163, - 2163, 2163, 2164, 2164, 2167, 2171, 2175, 2179, 2183, 2187, - 2191, 2196, 2201, 2206, 2210, 2214, 2218, 2222, 2226, 2230, - 2234, 2238, 2242, 2246, 2250, 2254, 2258, 2262, 2266, 2270, - 2274, 2278, 2282, 2286, 2290, 2294, 2298, 2302, 2306, 2310, - 2314, 2318, 2322, 2326, 2330, 2334, 2338, 2342, 2346, 2350, - 2354, 2363, 2373, 2382, 2392, 2398, 2399, 2404, 2408, 2415, - 2419, 2427, 2431, 2447, 2473, 2474, 2477, 2478, 2479, 2484, - 2489, 2496, 2502, 2507, 2512, 2517, 2524, 2524, 2535, 2541, - 2545, 2551, 2552, 2555, 2561, 2567, 2572, 2579, 2584, 2589, - 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2607, 2612, - 2611, 2623, 2627, 2622, 2632, 2632, 2636, 2640, 2644, 2648, - 2653, 2658, 2662, 2666, 2670, 2674, 2678, 2679, 2685, 2691, - 2684, 2703, 2711, 2719, 2719, 2719, 2726, 2726, 2726, 2733, - 2739, 2744, 2746, 2743, 2755, 2753, 2771, 2776, 2769, 2793, - 2791, 2807, 2817, 2828, 2832, 2836, 2840, 2846, 2853, 2854, - 2855, 2858, 2859, 2862, 2863, 2871, 2872, 2878, 2882, 2885, - 2889, 2893, 2897, 2902, 2906, 2910, 2914, 2920, 2919, 2929, - 2933, 2937, 2941, 2947, 2952, 2957, 2961, 2965, 2969, 2973, - 2977, 2981, 2985, 2989, 2993, 2997, 3001, 3005, 3009, 3013, - 3019, 3024, 3031, 3031, 3035, 3040, 3047, 3051, 3057, 3058, - 3061, 3066, 3069, 3073, 3079, 3083, 3090, 3089, 3104, 3114, - 3118, 3123, 3130, 3134, 3138, 3142, 3146, 3150, 3154, 3158, - 3162, 3169, 3168, 3183, 3182, 3198, 3206, 3215, 3218, 3225, - 3228, 3232, 3233, 3236, 3240, 3243, 3247, 3250, 3251, 3252, - 3253, 3256, 3257, 3263, 3264, 3265, 3269, 3275, 3276, 3282, - 3287, 3286, 3297, 3301, 3307, 3311, 3317, 3321, 3327, 3330, - 3331, 3334, 3340, 3346, 3347, 3350, 3357, 3356, 3370, 3374, - 3381, 3386, 3393, 3399, 3400, 3401, 3402, 3403, 3407, 3413, - 3417, 3423, 3424, 3425, 3429, 3435, 3439, 3443, 3447, 3451, - 3457, 3461, 3467, 3471, 3475, 3479, 3483, 3487, 3495, 3502, - 3513, 3514, 3518, 3522, 3521, 3538, 3539, 3542, 3548, 3566, - 3586, 3587, 3593, 3599, 3605, 3612, 3617, 3624, 3628, 3634, - 3638, 3644, 3645, 3648, 3652, 3658, 3662, 3666, 3670, 3676, - 3681, 3686, 3690, 3694, 3698, 3702, 3706, 3710, 3714, 3718, - 3722, 3726, 3730, 3734, 3738, 3743, 3749, 3754, 3759, 3764, - 3769, 3776, 3780, 3787, 3792, 3791, 3803, 3807, 3813, 3821, - 3829, 3837, 3841, 3847, 3851, 3857, 3858, 3861, 3866, 3873, - 3874, 3877, 3883, 3887, 3893, 3898, 3898, 3923, 3924, 3930, - 3935, 3941, 3942, 3945, 3951, 3956, 3966, 3973, 3974, 3975, - 3978, 3979, 3980, 3981, 3984, 3985, 3986, 3989, 3990, 3993, - 3997, 4003, 4004, 4010, 4011, 4014, 4015, 4018, 4021, 4022, - 4023, 4026, 4027, 4028, 4031, 4038, 4039, 4043 + 1753, 1757, 1766, 1776, 1785, 1795, 1802, 1803, 1807, 1811, + 1812, 1816, 1820, 1824, 1828, 1832, 1842, 1841, 1856, 1865, + 1866, 1869, 1870, 1877, 1876, 1891, 1895, 1900, 1904, 1909, + 1913, 1918, 1922, 1926, 1930, 1934, 1940, 1944, 1950, 1951, + 1957, 1961, 1965, 1969, 1973, 1977, 1981, 1985, 1989, 1993, + 1999, 2000, 2006, 2010, 2016, 2020, 2026, 2030, 2034, 2038, + 2042, 2046, 2052, 2058, 2065, 2069, 2073, 2077, 2081, 2085, + 2091, 2097, 2102, 2108, 2112, 2115, 2119, 2123, 2130, 2131, + 2132, 2133, 2138, 2145, 2146, 2149, 2153, 2153, 2159, 2160, + 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, + 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, + 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2191, 2191, + 2191, 2192, 2192, 2193, 2193, 2193, 2194, 2194, 2194, 2194, + 2195, 2195, 2195, 2196, 2196, 2196, 2197, 2197, 2197, 2197, + 2198, 2198, 2198, 2198, 2199, 2199, 2199, 2199, 2200, 2200, + 2200, 2200, 2201, 2201, 2201, 2201, 2202, 2202, 2205, 2209, + 2213, 2217, 2221, 2225, 2229, 2234, 2239, 2244, 2248, 2252, + 2256, 2260, 2264, 2268, 2272, 2276, 2280, 2284, 2288, 2292, + 2296, 2300, 2304, 2308, 2312, 2316, 2320, 2324, 2328, 2332, + 2336, 2340, 2344, 2348, 2352, 2356, 2360, 2364, 2368, 2372, + 2376, 2380, 2384, 2388, 2392, 2401, 2411, 2420, 2430, 2436, + 2437, 2442, 2446, 2453, 2457, 2465, 2469, 2485, 2511, 2512, + 2515, 2516, 2517, 2522, 2527, 2534, 2540, 2545, 2550, 2555, + 2562, 2562, 2573, 2579, 2583, 2589, 2590, 2593, 2599, 2605, + 2610, 2617, 2622, 2627, 2634, 2635, 2636, 2637, 2638, 2639, + 2640, 2641, 2645, 2650, 2649, 2661, 2665, 2660, 2670, 2670, + 2674, 2678, 2682, 2686, 2691, 2696, 2700, 2704, 2708, 2712, + 2716, 2717, 2723, 2729, 2722, 2741, 2749, 2757, 2757, 2757, + 2764, 2764, 2764, 2771, 2777, 2782, 2784, 2781, 2793, 2791, + 2809, 2814, 2807, 2831, 2829, 2845, 2855, 2866, 2870, 2874, + 2878, 2884, 2891, 2892, 2893, 2896, 2897, 2900, 2901, 2909, + 2910, 2916, 2920, 2923, 2927, 2931, 2935, 2940, 2944, 2948, + 2952, 2958, 2957, 2967, 2971, 2975, 2979, 2985, 2990, 2995, + 2999, 3003, 3007, 3011, 3015, 3019, 3023, 3027, 3031, 3035, + 3039, 3043, 3047, 3051, 3057, 3062, 3069, 3069, 3073, 3078, + 3085, 3089, 3095, 3096, 3099, 3104, 3107, 3111, 3117, 3121, + 3128, 3127, 3142, 3152, 3156, 3161, 3168, 3172, 3176, 3180, + 3184, 3188, 3192, 3196, 3200, 3207, 3206, 3221, 3220, 3236, + 3244, 3253, 3256, 3263, 3266, 3270, 3271, 3274, 3278, 3281, + 3285, 3288, 3289, 3290, 3291, 3294, 3295, 3301, 3302, 3303, + 3307, 3313, 3314, 3320, 3325, 3324, 3335, 3339, 3345, 3349, + 3355, 3359, 3365, 3368, 3369, 3372, 3378, 3384, 3385, 3388, + 3395, 3394, 3408, 3412, 3419, 3424, 3431, 3437, 3438, 3439, + 3440, 3441, 3445, 3451, 3455, 3461, 3462, 3463, 3467, 3473, + 3477, 3481, 3485, 3489, 3495, 3499, 3505, 3509, 3513, 3517, + 3521, 3525, 3533, 3540, 3551, 3552, 3556, 3560, 3559, 3576, + 3577, 3580, 3586, 3604, 3624, 3625, 3631, 3637, 3643, 3650, + 3655, 3662, 3666, 3672, 3676, 3682, 3683, 3686, 3690, 3696, + 3700, 3704, 3708, 3714, 3719, 3724, 3728, 3732, 3736, 3740, + 3744, 3748, 3752, 3756, 3760, 3764, 3768, 3772, 3776, 3781, + 3787, 3792, 3797, 3802, 3807, 3814, 3818, 3825, 3830, 3829, + 3841, 3845, 3851, 3859, 3867, 3875, 3879, 3885, 3889, 3895, + 3896, 3899, 3904, 3911, 3912, 3915, 3921, 3925, 3931, 3936, + 3936, 3961, 3962, 3968, 3973, 3979, 3980, 3983, 3989, 3994, + 4004, 4011, 4012, 4013, 4016, 4017, 4018, 4019, 4022, 4023, + 4024, 4027, 4028, 4031, 4035, 4041, 4042, 4048, 4049, 4052, + 4053, 4056, 4059, 4060, 4061, 4064, 4065, 4066, 4069, 4076, + 4077, 4081 }; #endif @@ -2170,12 +2171,12 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-848) +#define YYPACT_NINF (-850) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-608) +#define YYTABLE_NINF (-612) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -2184,113 +2185,114 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -848, 137, 2991, -848, 7860, 9984, 10326, 6168, -848, 9630, - 9630, -848, -848, 10098, 7350, 5903, 8096, 8096, -848, -848, - 8096, 3648, 3240, -848, -848, -848, -848, 97, 7350, -848, - 49, -848, -848, -848, 6310, 3104, -848, -848, 6452, -848, - -848, -848, -848, -848, -848, -848, 51, 9748, 9748, 9748, - 9748, 168, 5162, 891, 8568, 8922, 7632, -848, 7068, 1196, - 473, 810, 1387, 1396, -848, 273, 9866, 9748, -848, 1021, - -848, 1343, -848, 279, 1637, 1722, -848, -848, 130, 112, - -848, 121, 10212, -848, 152, 12292, 671, 677, 36, 82, - -848, 321, -848, -848, -848, -848, -848, -848, -848, -848, - -848, 46, 187, -848, 200, 71, -848, -848, -848, -848, - -848, 181, 181, 207, 689, 917, -848, 9630, 283, 5281, - 352, 1722, 1722, -848, 174, -848, 806, -848, -848, 71, - -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, - -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, - -848, -848, -848, -848, -848, -848, -848, -848, 24, 103, - 146, 166, -848, -848, -848, -848, -848, -848, 179, 182, - 197, 225, -848, 228, -848, -848, -848, -848, -848, -848, - -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, - -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, - -848, -848, -848, -848, -848, -848, -848, -848, -848, 233, - 4340, 341, 279, 680, 277, 12416, 843, 52, 309, 76, - 680, 9630, 9630, 883, 348, -848, -848, 1109, 381, 98, - 107, -848, -848, -848, -848, -848, -848, -848, -848, -848, - 7209, -848, -848, 278, -848, -848, -848, -848, -848, -848, - 1021, -848, 338, -848, 402, -848, -848, 1021, 3376, 9748, - 9748, 9748, 9748, -848, 12354, -848, -848, 292, 379, 292, - -848, -848, -848, 8214, -848, -848, -848, 8096, -848, -848, - -848, 5903, 9630, -848, -848, 317, 5400, -848, 1118, 368, - 12478, 12478, 203, 7978, 5162, 343, 1021, 1343, 1021, 380, - -848, 7978, 1021, 359, 1352, 1352, -848, 12354, 364, 1352, - -848, 461, 10440, 383, 1158, 1213, 1216, 1732, -848, -848, - -848, -848, 1421, -848, -848, -848, -848, -848, -848, 518, - 1507, -848, -848, 499, -848, 880, -848, 1513, -848, 1528, - 430, 441, -848, -848, -848, -848, 5665, 9630, 9630, 9630, - 9630, 7978, 9630, 9630, 155, -848, -848, -848, -848, -848, - -848, -848, -848, -848, -848, -848, -848, 1378, 431, 444, - 4340, 9748, -848, 409, 524, 446, -848, 1021, -848, -848, - -848, 475, 9748, -848, 480, 556, 481, 576, -848, -848, - 511, 4340, -848, -848, 9040, -848, 5162, 7746, 492, 9040, - 9748, 9748, 9748, 9748, 9748, 9748, 9748, 9748, 9748, 9748, - 9748, 9748, 9748, 9748, 588, 9748, 9748, 9748, 9748, 9748, - 9748, 9748, 9748, 9748, 9748, 9748, 9748, 1200, -848, 8096, - -848, 2511, -848, -848, 11750, -848, -848, -848, -848, 9866, - 9866, -848, 542, -848, 279, -848, 1218, -848, -848, -848, - -848, -848, -848, 2629, 8096, 10718, 4340, 9630, -848, -848, - -848, 627, 630, 218, -848, 4486, 629, 9748, 10804, 8096, - 10890, 9748, 9748, 4778, 106, 106, 122, 10976, 8096, 11062, - -848, 583, -848, 5400, 402, -848, -848, 9158, 645, -848, - 518, 9748, 12416, 12416, 12416, 9748, 374, -848, 8332, -848, - 9748, -848, 8686, 6022, 520, 1021, 292, 292, -848, -848, - 1016, 526, -848, -848, 7350, 4897, 534, 10804, 10890, 9748, - 1343, 1021, -848, -848, 5784, 541, 1343, -848, -848, 8804, - -848, 1021, 8922, -848, -848, -848, 1218, 121, 10440, -848, - 10440, 11148, 8096, 11234, 2150, -848, -848, -848, 1539, 5400, - 518, -848, -848, -848, -848, -848, -848, -848, 9748, 9748, - -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, - 1672, 1021, 1021, 545, 9748, 661, 12416, 78, -848, -848, - -848, 47, -848, -848, 2150, -848, 12416, 2150, -848, -848, - 1545, -848, -848, 9748, 673, 38, 9748, -848, 12008, 292, - -848, 1021, 10440, 549, -848, -848, -848, 648, 572, 1998, - -848, -848, 1267, 219, 2194, 2194, 2194, 2194, 2128, 2128, - 2694, 2786, 2194, 2194, 12478, 12478, 465, 465, -848, 368, - 11946, 2128, 2128, 1923, 1923, 1531, 674, 674, 368, 368, - 368, 3784, 6808, 4056, 6926, -848, 181, -848, 554, 292, - 258, -848, 507, -848, -848, 3512, -848, -848, 2370, 38, - 38, -848, 2848, -848, -848, -848, -848, -848, 1021, 9630, - 4340, 1033, 515, -848, 181, 557, 181, 685, 1016, 7491, - -848, 9276, 683, -848, 425, -848, 6570, 6689, 563, 295, - 296, 683, -848, -848, -848, -848, 66, 115, 567, 126, - 128, 9630, 7350, 571, 706, 12416, 80, -848, 518, 12416, - 12416, 518, 9748, 12354, -848, 292, 12416, -848, -848, -848, - -848, 8450, 8686, -848, -848, -848, 585, -848, -848, 170, - 1343, 1021, 1352, 492, -848, 1033, 515, 586, 1058, 1092, - 581, 89, -848, 591, -848, 368, 368, -848, 1286, 1021, - 592, -848, -848, 1886, 11822, -848, 676, -848, 446, -848, - -848, -848, 593, 595, 596, -848, 612, 676, 596, 11884, - -848, -848, 2150, 4340, -848, -848, 12079, 9394, -848, -848, - 10440, 7978, 9866, 9748, 11320, 8096, 11406, 55, 9866, 9866, - -848, 542, 509, 8332, 9866, 9866, -848, 542, 82, 130, - 4340, 5400, 38, -848, 1021, 740, -848, -848, -848, -848, - 12008, -848, 665, -848, 5043, 745, -848, 9630, 750, -848, - 9748, 9748, 298, 9748, 9748, 753, 5546, 5546, 140, 106, - -848, -848, -848, 9512, 4632, 518, 12416, -848, 6022, 292, - -848, -848, -848, 1095, 615, 625, 4340, 5400, -848, -848, - -848, 631, -848, 1803, 1021, 9748, -848, 2150, -848, 1545, - -848, 1545, -848, 1545, -848, -848, 9748, -848, 581, 581, - 10554, -848, 635, 446, 638, 10554, -848, 643, 649, -848, - 757, 9748, 12150, -848, -848, 12416, 3920, 4192, 651, 305, - 449, 9748, 9748, -848, -848, -848, -848, -848, 9866, -848, - -848, -848, -848, -848, -848, -848, 789, 684, 5400, 4340, - -848, -848, 10668, 680, -848, -848, 5546, -848, -848, 680, - -848, 9748, -848, 797, 825, -848, 12416, 365, -848, 8686, - -848, 1320, 826, 710, 1836, 1836, 1295, -848, 12416, 596, - 704, 596, 596, 12416, 724, 727, 801, 1322, 78, -848, - -848, 1742, -848, 1322, 2150, -848, 1545, -848, -848, 12221, - 464, 12416, 12416, -848, -848, -848, -848, 718, 844, 805, - -848, 1335, 1213, 1216, 4340, -848, 4486, -848, -848, 5546, - -848, -848, -848, -848, 12, -848, -848, -848, -848, 721, - 721, 1836, 726, -848, 1545, -848, -848, -848, -848, -848, - -848, 11492, -848, 446, 78, -848, -848, 731, 735, 739, - -848, 742, 739, -848, -848, 1218, 11578, 8096, 11664, 630, - 425, 851, 1320, -848, 1836, 721, 1836, 596, 741, 744, - -848, 2150, -848, 1545, -848, 1545, -848, 1545, -848, -848, - 1033, 515, 748, 746, 804, -848, -848, -848, -848, 721, - -848, 739, 751, 739, 739, 1095, -848, 1545, -848, -848, - -848, 739, -848 + -850, 124, 3596, -850, 8329, 10453, 10795, 6637, -850, 10099, + 10099, -850, -850, 10567, 7819, 6372, 8565, 8565, -850, -850, + 8565, 4253, 3845, -850, -850, -850, -850, 200, 7819, -850, + 37, -850, -850, -850, 6779, 3709, -850, -850, 6921, -850, + -850, -850, -850, -850, -850, -850, 34, 10217, 10217, 10217, + 10217, 106, 5631, 633, 9037, 9391, 8101, -850, 7537, 1187, + 767, 989, 1214, 1237, -850, 86, 10335, 10217, -850, 751, + -850, 1505, -850, 115, 1288, 1288, -850, -850, 176, 70, + -850, 71, 10681, -850, 118, 12995, 477, 483, 60, 84, + -850, 365, -850, -850, -850, -850, -850, -850, -850, -850, + -850, 349, 165, -850, 501, 82, -850, -850, -850, -850, + -850, 131, 131, 137, 506, 1044, -850, 10099, 314, 5750, + 268, 1266, 1266, -850, 143, -850, 599, -850, -850, 82, + -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, + -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, + -850, -850, -850, -850, -850, -850, -850, -850, 49, 58, + 72, 83, -850, -850, -850, -850, -850, -850, 133, 162, + 187, 196, -850, 208, -850, -850, -850, -850, -850, -850, + -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, + -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, + -850, -850, -850, -850, -850, -850, -850, -850, -850, 241, + 4809, 233, 115, 1288, 1288, 69, 169, 13119, 628, 151, + 203, 155, 69, 10099, 10099, 659, 247, -850, -850, 732, + 329, 67, 87, -850, -850, -850, -850, -850, -850, -850, + -850, -850, 7678, -850, -850, 228, -850, -850, -850, -850, + -850, -850, 751, -850, 721, -850, 352, -850, -850, 751, + 3981, 10217, 10217, 10217, 10217, -850, 13057, -850, -850, 237, + 324, 237, -850, -850, -850, 8683, -850, -850, -850, 8565, + -850, -850, -850, 6372, 10099, -850, -850, 251, 5869, -850, + 851, 286, 13181, 13181, 544, 8447, 5631, 275, 751, 1505, + 751, 303, -850, 8447, 751, 292, 1351, 1351, -850, 13057, + 288, 1351, -850, 381, 10909, 296, 862, 905, 929, 1387, + -850, -850, -850, -850, 1282, -850, -850, -850, -850, -850, + -850, 814, 1287, -850, -850, 1021, -850, 1052, -850, 1320, + -850, 1337, 341, 350, -850, -850, -850, -850, 6134, 10099, + 10099, 10099, 10099, 8447, 10099, 10099, 61, -850, -850, -850, + -850, -850, -850, -850, -850, -850, -850, -850, -850, 1604, + 337, 340, 4809, 10217, -850, 321, 417, 354, -850, 751, + -850, -850, -850, 387, 10217, -850, 401, 472, 403, 511, + -850, -850, 449, 4809, -850, -850, 9509, -850, 5631, 8215, + 441, 9509, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, + 10217, 10217, 10217, 10217, 10217, 10217, 534, 10217, 10217, 10217, + 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 3391, + -850, 8565, -850, 11187, -850, -850, 12391, -850, -850, -850, + -850, 10335, 10335, -850, 491, -850, 115, -850, 952, -850, + -850, -850, -850, -850, -850, 11273, 8565, 11359, 4809, 10099, + -850, -850, -850, 577, 581, 158, 474, 479, -850, 4955, + 582, 10217, 11445, 8565, 11531, 10217, 10217, 5247, 639, 639, + 94, 11617, 8565, 11703, -850, 541, -850, 5869, 352, -850, + -850, 9627, 600, -850, 814, 10217, 13119, 13119, 13119, 10217, + 1057, -850, 8801, -850, 10217, -850, 9155, 6491, 471, 751, + 237, 237, -850, -850, 885, 473, -850, -850, 7819, 5366, + 498, 11445, 11531, 10217, 1505, 751, -850, -850, 6253, 484, + 1505, -850, -850, 9273, -850, 751, 9391, -850, -850, -850, + 952, 71, 10909, -850, 10909, 11789, 8565, 11875, 1458, -850, + -850, -850, 1348, 5869, 814, -850, -850, -850, -850, -850, + -850, -850, 10217, 10217, -850, -850, -850, -850, -850, -850, + -850, -850, -850, -850, 1165, 751, 751, 497, 10335, 632, + 13119, 345, -850, -850, -850, 12, -850, -850, 1458, -850, + 13119, 1458, -850, -850, 1769, -850, -850, 10335, 644, 63, + 10217, -850, 12711, 237, -850, 751, 10909, 512, -850, -850, + -850, 604, 542, 2903, -850, -850, 956, 284, 2755, 2755, + 2755, 2755, 1752, 1752, 3456, 2669, 2755, 2755, 13181, 13181, + 1232, 1232, -850, 286, 12649, 1752, 1752, 1467, 1467, 1477, + 355, 355, 286, 286, 286, 3275, 7277, 4525, 7395, -850, + 131, -850, 523, 237, 564, -850, 588, -850, -850, 4117, + -850, -850, 2330, 63, 63, -850, 12463, -850, -850, -850, + -850, -850, 751, 10099, 4809, 1109, 192, -850, 131, 529, + 131, 658, 885, 7960, -850, 9745, 657, -850, 10217, 10217, + 487, -850, 7039, 7158, 546, 311, 338, 657, -850, -850, + -850, -850, 91, 98, 556, 103, 104, 10099, 7819, 555, + 685, 13119, 249, -850, 814, 13119, 13119, 814, 10217, 13057, + -850, 237, 13119, -850, -850, -850, -850, 8919, 9155, -850, + -850, -850, 568, -850, -850, 38, 1505, 751, 1351, 441, + -850, 1109, 192, 562, 1167, 1168, 565, 77, -850, 573, + -850, 286, 286, -850, 147, 751, 572, -850, -850, 1708, + 673, 12525, -850, 665, -850, 354, -850, -850, -850, 587, + 590, 593, -850, 596, 665, 593, 679, 12587, -850, -850, + 1458, 4809, -850, -850, 12782, 9863, -850, -850, 10909, 8447, + 10335, 10217, 11961, 8565, 12047, 76, 10335, 10335, -850, 491, + 613, 8801, 10335, 10335, -850, 491, 84, 176, 4809, 5869, + 63, -850, 751, 726, -850, -850, -850, -850, 12711, -850, + 652, -850, 5512, 742, -850, 10099, 747, -850, 10217, 10217, + 386, 10217, 10217, 750, 6015, 6015, 107, 639, -850, -850, + -850, 9981, 5101, 814, 13119, -850, 6491, 237, -850, -850, + -850, 756, 624, 640, 4809, 5869, -850, -850, -850, 646, + -850, 1485, 751, 10217, 10217, -850, 1458, -850, 1769, -850, + 1769, -850, 1769, -850, -850, 10217, 10217, -850, 565, 565, + 11023, -850, 650, 354, 653, 11023, -850, 660, 661, -850, + 755, 10217, 12853, -850, -850, 13119, 4389, 4661, 666, 414, + 426, 10217, 10217, -850, -850, -850, -850, -850, 10335, -850, + -850, -850, -850, -850, -850, -850, 759, 670, 5869, 4809, + -850, -850, 11137, 69, -850, -850, 6015, -850, -850, 69, + -850, 10217, -850, 785, 797, -850, 13119, 148, -850, 9155, + -850, 1683, 799, 676, 1630, 1630, 894, -850, 13119, 13119, + 593, 681, 593, 593, 13119, 13119, 698, 712, 786, 957, + 345, -850, -850, 1422, -850, 957, 1458, -850, 1769, -850, + -850, 12924, 486, 13119, 13119, -850, -850, -850, -850, 705, + 832, 796, -850, 968, 905, 929, 4809, -850, 4955, -850, + -850, 6015, -850, -850, -850, -850, 116, -850, -850, -850, + -850, 713, 713, 1630, 714, -850, 1769, -850, -850, -850, + -850, -850, -850, 12133, -850, 354, 345, -850, -850, 716, + 718, 722, -850, 723, 722, -850, -850, 952, 12219, 8565, + 12305, 581, 487, 870, 1683, -850, 1630, 713, 1630, 593, + 733, 743, -850, 1458, -850, 1769, -850, 1769, -850, 1769, + -850, -850, 1109, 192, 745, 553, 866, -850, -850, -850, + -850, 713, -850, 722, 753, 722, 722, 756, -850, 1769, + -850, -850, -850, 722, -850 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2298,159 +2300,160 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 0, 1, 0, 0, 0, 0, 289, 0, - 0, 313, 316, 0, 0, 593, 333, 334, 335, 336, - 301, 266, 266, 484, 483, 485, 486, 595, 0, 10, - 0, 488, 487, 489, 475, 579, 477, 476, 479, 478, - 471, 472, 433, 434, 490, 491, 287, 0, 0, 0, - 0, 0, 0, 291, 607, 607, 84, 308, 0, 0, - 0, 0, 0, 0, 448, 0, 0, 0, 3, 593, - 6, 9, 27, 33, 535, 535, 45, 56, 55, 0, - 72, 0, 76, 86, 0, 50, 244, 0, 57, 306, - 280, 281, 431, 282, 283, 284, 429, 428, 460, 430, - 427, 482, 0, 285, 286, 266, 5, 8, 333, 334, - 301, 607, 409, 0, 109, 110, 287, 0, 0, 0, - 0, 535, 535, 112, 492, 337, 0, 482, 286, 0, - 329, 164, 174, 165, 161, 190, 191, 192, 193, 172, - 187, 180, 170, 169, 185, 168, 167, 163, 188, 162, - 175, 179, 181, 173, 166, 182, 189, 184, 183, 176, - 186, 171, 160, 178, 177, 159, 157, 158, 154, 155, - 156, 114, 116, 115, 149, 150, 127, 128, 129, 136, - 133, 135, 130, 131, 151, 152, 137, 138, 142, 145, - 146, 132, 134, 124, 125, 126, 139, 140, 141, 143, - 144, 147, 148, 153, 565, 51, 117, 118, 564, 0, - 0, 0, 54, 0, 0, 50, 0, 482, 0, 286, - 0, 0, 0, 108, 0, 348, 347, 0, 0, 482, - 286, 183, 176, 186, 171, 154, 155, 156, 114, 115, - 0, 119, 121, 20, 120, 451, 456, 455, 601, 604, - 593, 603, 0, 453, 0, 605, 602, 594, 577, 0, - 0, 0, 0, 261, 273, 70, 265, 607, 431, 607, - 569, 71, 69, 607, 255, 302, 68, 0, 254, 408, - 67, 593, 0, 596, 18, 0, 0, 217, 0, 218, - 205, 208, 298, 0, 0, 0, 593, 15, 593, 74, - 14, 0, 593, 0, 598, 598, 245, 0, 0, 598, - 567, 0, 0, 82, 0, 92, 99, 535, 465, 464, - 466, 467, 0, 463, 462, 435, 440, 439, 442, 0, - 0, 437, 444, 0, 446, 0, 458, 0, 469, 0, - 473, 474, 49, 232, 233, 4, 594, 0, 0, 0, - 0, 0, 0, 0, 542, 538, 537, 536, 539, 540, - 544, 556, 511, 512, 560, 559, 555, 535, 0, 500, - 0, 504, 509, 607, 514, 607, 534, 0, 541, 543, - 546, 520, 0, 553, 520, 558, 520, 0, 518, 496, - 500, 0, 396, 398, 0, 88, 0, 80, 77, 0, + 2, 0, 0, 1, 0, 0, 0, 0, 293, 0, + 0, 317, 320, 0, 0, 597, 337, 338, 339, 340, + 305, 270, 270, 488, 487, 489, 490, 599, 0, 10, + 0, 492, 491, 493, 479, 583, 481, 480, 483, 482, + 475, 476, 437, 438, 494, 495, 291, 0, 0, 0, + 0, 0, 0, 295, 611, 611, 88, 312, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 0, 3, 597, + 6, 9, 27, 33, 539, 539, 49, 60, 59, 0, + 76, 0, 80, 90, 0, 54, 248, 0, 61, 310, + 284, 285, 435, 286, 287, 288, 433, 432, 464, 434, + 431, 486, 0, 289, 290, 270, 5, 8, 337, 338, + 305, 611, 413, 0, 113, 114, 291, 0, 0, 0, + 0, 539, 539, 116, 496, 341, 0, 486, 290, 0, + 333, 168, 178, 169, 165, 194, 195, 196, 197, 176, + 191, 184, 174, 173, 189, 172, 171, 167, 192, 166, + 179, 183, 185, 177, 170, 186, 193, 188, 187, 180, + 190, 175, 164, 182, 181, 163, 161, 162, 158, 159, + 160, 118, 120, 119, 153, 154, 131, 132, 133, 140, + 137, 139, 134, 135, 155, 156, 141, 142, 146, 149, + 150, 136, 138, 128, 129, 130, 143, 144, 145, 147, + 148, 151, 152, 157, 569, 55, 121, 122, 568, 0, + 0, 0, 58, 539, 539, 0, 0, 54, 0, 486, + 0, 290, 0, 0, 0, 112, 0, 352, 351, 0, + 0, 486, 290, 187, 180, 190, 175, 158, 159, 160, + 118, 119, 0, 123, 125, 20, 124, 455, 460, 459, + 605, 608, 597, 607, 0, 457, 0, 609, 606, 598, + 581, 0, 0, 0, 0, 265, 277, 74, 269, 611, + 435, 611, 573, 75, 73, 611, 259, 306, 72, 0, + 258, 412, 71, 597, 0, 600, 18, 0, 0, 221, + 0, 222, 209, 212, 302, 0, 0, 0, 597, 15, + 597, 78, 14, 0, 597, 0, 602, 602, 249, 0, + 0, 602, 571, 0, 0, 86, 0, 96, 103, 539, + 469, 468, 470, 471, 0, 467, 466, 439, 444, 443, + 446, 0, 0, 441, 448, 0, 450, 0, 462, 0, + 473, 0, 477, 478, 53, 236, 237, 4, 598, 0, + 0, 0, 0, 0, 0, 0, 546, 542, 541, 540, + 543, 544, 548, 560, 515, 516, 564, 563, 559, 539, + 0, 504, 0, 508, 513, 611, 518, 611, 538, 0, + 545, 547, 550, 524, 0, 557, 524, 562, 524, 0, + 522, 500, 0, 0, 400, 402, 0, 92, 0, 84, + 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 208, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 204, 207, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 590, 607, - 589, 0, 592, 591, 0, 413, 411, 307, 432, 0, - 0, 402, 61, 305, 326, 109, 110, 111, 473, 474, - 500, 493, 324, 0, 607, 0, 0, 0, 588, 587, - 52, 0, 607, 298, 339, 0, 338, 0, 0, 607, - 0, 0, 0, 0, 0, 0, 298, 0, 607, 0, - 321, 0, 122, 0, 0, 452, 454, 0, 0, 606, - 571, 0, 274, 576, 268, 0, 271, 262, 0, 270, - 0, 263, 0, 593, 0, 593, 607, 607, 256, 267, - 593, 0, 304, 48, 0, 0, 0, 0, 0, 0, - 17, 593, 296, 13, 594, 73, 292, 295, 299, 600, - 246, 599, 600, 248, 300, 568, 98, 90, 0, 85, - 0, 0, 607, 0, 535, 309, 393, 468, 0, 0, - 443, 449, 436, 438, 445, 447, 459, 470, 0, 0, - 7, 21, 22, 23, 24, 25, 46, 47, 502, 548, - 0, 593, 593, 520, 0, 0, 503, 0, 516, 563, - 513, 0, 517, 501, 0, 527, 549, 0, 530, 557, - 0, 532, 561, 0, 0, 607, 0, 28, 30, 0, - 31, 593, 0, 78, 89, 44, 34, 42, 0, 249, - 194, 29, 0, 286, 222, 227, 228, 229, 224, 226, - 236, 237, 230, 231, 203, 206, 234, 235, 32, 214, - 595, 223, 225, 219, 220, 221, 209, 210, 211, 212, - 213, 580, 585, 581, 586, 407, 266, 405, 0, 607, - 580, 582, 581, 583, 406, 266, 580, 581, 266, 607, - 607, 35, 249, 195, 41, 202, 59, 62, 0, 0, - 0, 109, 110, 113, 0, 0, 607, 0, 593, 0, - 290, 607, 607, 419, 607, 340, 584, 297, 0, 580, - 581, 607, 342, 314, 341, 317, 584, 297, 0, 580, - 581, 0, 0, 0, 0, 273, 0, 320, 572, 574, - 573, 0, 0, 275, 269, 607, 575, 570, 253, 251, - 257, 258, 260, 303, 597, 19, 0, 26, 201, 75, - 16, 593, 598, 91, 83, 95, 97, 0, 94, 96, - 595, 0, 461, 0, 450, 215, 216, 542, 356, 593, - 349, 499, 497, 0, 240, 331, 0, 510, 607, 562, - 519, 547, 520, 520, 520, 554, 520, 542, 520, 242, - 332, 384, 382, 0, 381, 380, 279, 0, 87, 81, - 0, 0, 0, 0, 0, 607, 0, 0, 0, 0, - 404, 65, 410, 258, 0, 0, 403, 63, 399, 58, - 0, 0, 607, 327, 0, 0, 410, 330, 566, 53, - 420, 421, 607, 422, 0, 607, 345, 0, 0, 343, - 0, 0, 410, 0, 0, 0, 0, 0, 410, 0, - 123, 457, 319, 0, 0, 272, 276, 264, 593, 607, - 11, 293, 247, 93, 0, 386, 0, 0, 310, 441, - 357, 354, 545, 0, 593, 0, 515, 0, 523, 0, - 525, 0, 531, 0, 528, 533, 0, 379, 595, 595, - 506, 507, 607, 607, 364, 0, 551, 364, 364, 362, - 0, 0, 277, 79, 43, 250, 580, 581, 0, 580, - 581, 0, 0, 40, 199, 39, 200, 66, 0, 37, - 197, 38, 198, 64, 400, 401, 0, 0, 0, 0, - 494, 325, 0, 0, 424, 346, 0, 12, 426, 0, - 311, 0, 312, 0, 0, 322, 275, 607, 252, 259, - 392, 0, 0, 0, 0, 0, 352, 498, 241, 520, - 520, 520, 520, 243, 0, 0, 0, 505, 0, 360, - 361, 364, 372, 550, 0, 375, 0, 377, 397, 278, - 410, 239, 238, 36, 196, 414, 412, 0, 0, 0, - 423, 0, 100, 107, 0, 425, 0, 315, 318, 0, - 416, 417, 415, 390, 595, 388, 391, 395, 394, 358, - 355, 0, 350, 524, 0, 521, 526, 529, 385, 383, - 298, 0, 508, 607, 0, 363, 370, 364, 364, 364, - 552, 364, 364, 60, 328, 106, 0, 607, 0, 607, - 607, 0, 0, 387, 0, 353, 0, 520, 584, 297, - 359, 0, 367, 0, 369, 0, 376, 0, 373, 378, - 103, 105, 0, 580, 581, 418, 344, 323, 389, 351, - 522, 364, 364, 364, 364, 101, 368, 0, 365, 371, - 374, 364, 366 + 594, 611, 593, 0, 596, 595, 0, 417, 415, 311, + 436, 0, 0, 406, 65, 309, 330, 113, 114, 115, + 477, 478, 504, 497, 328, 0, 611, 0, 0, 0, + 592, 591, 56, 0, 611, 302, 0, 0, 343, 0, + 342, 0, 0, 611, 0, 0, 0, 0, 0, 0, + 302, 0, 611, 0, 325, 0, 126, 0, 0, 456, + 458, 0, 0, 610, 575, 0, 278, 580, 272, 0, + 275, 266, 0, 274, 0, 267, 0, 597, 0, 597, + 611, 611, 260, 271, 597, 0, 308, 52, 0, 0, + 0, 0, 0, 0, 17, 597, 300, 13, 598, 77, + 296, 299, 303, 604, 250, 603, 604, 252, 304, 572, + 102, 94, 0, 89, 0, 0, 611, 0, 539, 313, + 397, 472, 0, 0, 447, 453, 440, 442, 449, 451, + 463, 474, 0, 0, 7, 21, 22, 23, 24, 25, + 50, 51, 506, 552, 0, 597, 597, 524, 0, 0, + 507, 0, 520, 567, 517, 0, 521, 505, 0, 531, + 553, 0, 534, 561, 0, 536, 565, 0, 0, 611, + 0, 28, 30, 0, 31, 597, 0, 82, 93, 48, + 34, 46, 0, 253, 198, 29, 0, 290, 226, 231, + 232, 233, 228, 230, 240, 241, 234, 235, 207, 210, + 238, 239, 32, 218, 599, 227, 229, 223, 224, 225, + 213, 214, 215, 216, 217, 584, 589, 585, 590, 411, + 270, 409, 0, 611, 584, 586, 585, 587, 410, 270, + 584, 585, 270, 611, 611, 35, 253, 199, 45, 206, + 63, 66, 0, 0, 0, 113, 114, 117, 0, 0, + 611, 0, 597, 0, 294, 611, 611, 423, 0, 0, + 611, 344, 588, 301, 0, 584, 585, 611, 346, 318, + 345, 321, 588, 301, 0, 584, 585, 0, 0, 0, + 0, 277, 0, 324, 576, 578, 577, 0, 0, 279, + 273, 611, 579, 574, 257, 255, 261, 262, 264, 307, + 601, 19, 0, 26, 205, 79, 16, 597, 602, 95, + 87, 99, 101, 0, 98, 100, 599, 0, 465, 0, + 454, 219, 220, 546, 360, 597, 353, 503, 501, 0, + 41, 244, 335, 0, 514, 611, 566, 523, 551, 524, + 524, 524, 558, 524, 546, 524, 43, 246, 336, 388, + 386, 0, 385, 384, 283, 0, 91, 85, 0, 0, + 0, 0, 0, 611, 0, 0, 0, 0, 408, 69, + 414, 262, 0, 0, 407, 67, 403, 62, 0, 0, + 611, 331, 0, 0, 414, 334, 570, 57, 424, 425, + 611, 426, 0, 611, 349, 0, 0, 347, 0, 0, + 414, 0, 0, 0, 0, 0, 414, 0, 127, 461, + 323, 0, 0, 276, 280, 268, 597, 611, 11, 297, + 251, 97, 0, 390, 0, 0, 314, 445, 361, 358, + 549, 0, 597, 0, 0, 519, 0, 527, 0, 529, + 0, 535, 0, 532, 537, 0, 0, 383, 599, 599, + 510, 511, 611, 611, 368, 0, 555, 368, 368, 366, + 0, 0, 281, 83, 47, 254, 584, 585, 0, 584, + 585, 0, 0, 40, 203, 39, 204, 70, 0, 37, + 201, 38, 202, 68, 404, 405, 0, 0, 0, 0, + 498, 329, 0, 0, 428, 350, 0, 12, 430, 0, + 315, 0, 316, 0, 0, 326, 279, 611, 256, 263, + 396, 0, 0, 0, 0, 0, 356, 502, 42, 245, + 524, 524, 524, 524, 44, 247, 0, 0, 0, 509, + 0, 364, 365, 368, 376, 554, 0, 379, 0, 381, + 401, 282, 414, 243, 242, 36, 200, 418, 416, 0, + 0, 0, 427, 0, 104, 111, 0, 429, 0, 319, + 322, 0, 420, 421, 419, 394, 599, 392, 395, 399, + 398, 362, 359, 0, 354, 528, 0, 525, 530, 533, + 389, 387, 302, 0, 512, 611, 0, 367, 374, 368, + 368, 368, 556, 368, 368, 64, 332, 110, 0, 611, + 0, 611, 611, 0, 0, 391, 0, 357, 0, 524, + 588, 301, 363, 0, 371, 0, 373, 0, 380, 0, + 377, 382, 107, 109, 0, 584, 585, 422, 348, 327, + 393, 355, 526, 368, 368, 368, 368, 105, 372, 0, + 369, 375, 378, 368, 370 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -848, -848, -848, 382, -848, 28, -848, -255, 267, -848, - 120, -848, -31, -208, 229, 64, 100, -848, 83, -46, - -848, -605, -848, 30, 886, -183, -19, -66, -274, -472, - -45, 1894, -87, 898, 20, 14, -848, -848, 15, -848, - 1140, -848, 707, 65, -55, -403, 72, 26, -848, -298, - -233, 280, 375, -340, 129, -848, -848, -848, -848, -848, - -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, - -848, 8, -216, -467, -115, -563, -848, -848, -848, 136, - 91, -848, -565, -848, -848, -424, -848, -110, -848, -848, - 114, -848, -848, -848, -86, -848, -848, -469, -848, -104, - -848, -848, -848, -848, -848, -15, 21, -178, -848, -848, - -848, -848, -405, -273, -848, 669, -848, -848, -848, 16, - -848, -848, -848, 1698, 2055, 921, 1364, -848, -848, -848, - 405, 74, -668, 354, -16, -848, -848, -848, 73, -20, - -195, -246, -815, -685, -526, -848, 135, -735, -520, -847, - -11, -505, -848, -439, -848, 262, -318, -848, -848, -848, - 45, 667, -422, 609, -265, -848, -848, -53, -848, 34, - -18, 366, -264, 601, -21, -62, -2 + -850, -850, -850, 379, -850, 44, -850, -221, 102, -850, + 30, -850, -19, -171, 161, 1373, 1745, -850, 1, -30, + -850, -656, -850, -13, 889, -220, 23, -60, -285, -450, + 15, 2261, -78, 901, 43, 3, -850, -850, 19, -850, + 1221, -850, 464, 81, -495, -377, 114, 17, -850, -415, + -256, -111, 39, -338, 32, -850, -850, -850, -850, -850, + -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, + -850, 8, -213, -435, -122, -602, -850, -850, -850, 134, + 101, -850, -566, -850, -850, -359, -850, -116, -850, -850, + 135, -850, -850, -850, -81, -850, -850, -458, -850, -112, + -850, -850, -850, -850, -850, 66, 6, -158, -850, -850, + -850, -850, -394, -280, -850, 671, -850, -850, -850, 13, + -850, -850, -850, 2384, 2648, 924, 1983, -850, -850, 14, + 459, 24, 163, 357, -14, -850, -850, -850, 112, -453, + 189, -206, -837, -693, -553, -850, 280, -715, -542, -849, + -12, -518, -850, -90, -850, 111, -357, -850, -850, -850, + 26, 691, -399, 625, -173, -850, -850, -82, -850, 42, + -25, 525, -249, 78, -26, 9, -2 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 2, 68, 69, 70, 285, 461, 462, 296, - 297, 514, 72, 606, 73, 74, 75, 679, 213, 76, - 77, 667, 802, 78, 79, 298, 80, 81, 82, 539, - 83, 214, 123, 124, 241, 242, 243, 702, 644, 207, - 85, 303, 610, 645, 275, 504, 505, 276, 277, 266, - 497, 532, 649, 600, 86, 210, 301, 731, 302, 317, - 741, 221, 826, 222, 827, 701, 979, 670, 668, 909, - 456, 288, 465, 693, 818, 819, 228, 749, 934, 1005, - 952, 868, 773, 774, 869, 844, 984, 985, 545, 848, - 393, 595, 88, 89, 443, 660, 659, 488, 982, 682, - 812, 913, 917, 90, 91, 92, 330, 331, 549, 93, - 94, 95, 550, 251, 252, 253, 483, 96, 97, 98, - 324, 99, 100, 217, 218, 103, 219, 452, 669, 368, - 450, 370, 371, 372, 871, 872, 373, 374, 375, 760, - 585, 377, 378, 379, 380, 570, 381, 382, 383, 876, - 877, 384, 385, 386, 387, 388, 578, 209, 457, 308, - 507, 491, 270, 129, 674, 647, 460, 455, 434, 511, - 845, 512, 530, 255, 256, 257, 300 + -1, 1, 2, 68, 69, 70, 287, 463, 464, 298, + 299, 518, 72, 610, 73, 213, 214, 683, 215, 76, + 77, 671, 810, 78, 79, 300, 80, 81, 82, 543, + 83, 216, 123, 124, 243, 244, 245, 708, 648, 207, + 85, 305, 614, 649, 277, 508, 509, 278, 279, 268, + 501, 536, 653, 604, 86, 210, 303, 737, 304, 319, + 747, 223, 834, 224, 835, 707, 991, 674, 672, 919, + 458, 290, 469, 699, 826, 827, 230, 755, 944, 1017, + 964, 878, 781, 782, 879, 852, 996, 997, 549, 856, + 395, 599, 88, 89, 445, 664, 663, 492, 994, 686, + 820, 923, 927, 90, 91, 92, 332, 333, 553, 93, + 94, 95, 554, 253, 254, 255, 487, 96, 97, 98, + 326, 99, 100, 219, 220, 103, 221, 454, 673, 370, + 371, 372, 373, 374, 881, 882, 375, 376, 377, 378, + 589, 379, 380, 381, 382, 574, 383, 384, 385, 886, + 887, 386, 387, 388, 389, 390, 582, 209, 459, 310, + 511, 495, 272, 129, 678, 651, 462, 457, 436, 515, + 853, 516, 534, 257, 258, 259, 302 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2458,472 +2461,560 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 106, 268, 268, 437, 473, 268, 283, 346, 695, 282, - 87, 313, 87, 126, 126, 704, 398, 216, 216, 278, - 342, 227, 206, 216, 216, 216, 648, 205, 216, 206, - 244, 447, 107, 299, 431, 433, 501, 875, 538, 268, - 268, 533, 284, 206, 244, 535, 263, 263, 280, 254, - 263, 675, 306, 310, 376, 376, 551, 582, 761, 611, - 87, 269, 269, 851, 314, 269, 688, 765, 734, 121, - 121, 546, 389, 206, 216, 698, 438, 121, 323, 762, - 717, 333, 335, 337, 339, 708, 274, 279, 265, 271, - 314, -103, 272, 220, 800, 801, 464, 435, 250, 305, - 309, 376, 376, 345, 870, 122, 122, 1010, 435, 278, - 717, 521, 891, 122, -484, 575, 986, 771, 846, 815, - 121, 572, 71, -100, 71, 216, 432, 87, 825, 756, - 779, 442, -107, 692, 125, 125, 594, 3, -480, 737, - -105, 428, 125, -481, -480, 763, 121, -106, 766, 391, - 364, -102, 553, -104, 1022, 553, 122, 553, 392, 553, - 249, 553, 646, 470, 772, -101, 655, -100, 472, 658, - 441, -484, -108, -100, 479, 365, 274, 279, 892, 362, - 363, 364, 122, 430, 1010, 125, 897, 286, -92, 588, - 676, 591, 903, -483, 441, 245, 391, -107, 246, 247, - 714, 677, 847, 646, 714, 655, 365, 986, -95, 436, - -580, 125, 568, 601, 676, 273, 875, 551, 87, 875, - 436, 245, 496, 292, 246, 247, 248, 761, 249, 216, - 216, 661, 664, 394, 524, 518, -485, 908, 212, 212, - -92, 281, 531, 531, 212, 249, 537, 531, 762, -99, - -483, 992, 248, 676, 249, 206, -486, -97, 268, -581, - 323, 543, 268, 395, -98, 499, 538, 499, -94, -488, - -96, 508, -487, 399, 501, 299, 569, 744, 676, 439, - 870, 216, -93, 870, 484, 216, 870, -489, 870, 216, - 216, -73, 440, -485, 87, 519, 875, 376, 740, 451, - 717, 87, 87, 263, 474, 475, 835, 263, 883, 87, - 519, 440, -87, -486, 763, -475, 352, 353, -479, 295, - 314, -107, 269, 458, -106, 273, -488, 761, 538, -487, - 523, 340, 341, 878, 445, 761, 870, 765, 446, -106, - -107, 811, -99, 548, -489, -98, 444, 376, 597, 509, - 794, 281, 603, 607, 87, 216, 216, 216, 216, 87, - 216, 216, 925, 870, 980, 870, 673, 870, 605, 870, - 553, 579, -475, 579, 560, -479, 121, 299, 87, -102, - 459, 42, 888, 814, 43, 487, 295, 823, 824, 870, - 921, 267, 267, 607, 607, 267, 463, 794, 467, 87, - -94, 471, 216, 476, 87, 314, 480, 612, 605, 605, - 448, 449, 122, 520, 268, 805, -102, -104, 940, -101, - 482, 526, 487, 714, 714, 761, -102, 508, 59, 304, - 561, 562, 563, 564, 496, 744, 490, 216, 551, 268, - 856, 125, 817, 814, 944, 945, 653, 612, 612, 653, - 212, 212, 508, 485, 268, 515, 246, 247, 981, 263, - 683, 121, 216, 268, 87, 216, 71, 508, 842, 415, - 653, 565, 733, 87, 537, 283, 508, 216, 711, 369, - 390, 87, 837, 268, 263, 653, 216, 268, 522, -595, - 834, 87, -595, -595, 653, 714, 654, 122, 761, 263, - 528, -72, 573, 534, 499, 499, 538, 717, 263, 761, - 510, 513, 1008, 106, 268, 1011, 536, 268, 880, 646, - 654, 655, 249, 87, 376, 540, 125, 268, 725, 206, - 244, 558, 87, 653, 332, 654, 537, 326, 327, 720, - 508, 795, 559, 715, 654, 906, 314, 498, 314, 502, - 216, 577, 574, 516, 949, 950, 898, 87, 653, 786, - 554, 295, 744, 326, 327, -495, 415, 858, 860, 862, - -104, 864, 263, 865, 732, 580, 212, 212, 212, 212, - 893, 566, 567, 654, 529, -101, 899, 901, 581, 328, - 329, 932, 1052, 775, 422, 423, 424, 425, 426, 795, - 796, 898, 121, 798, 121, -297, 837, 589, 654, 283, - 314, 105, 787, 105, 1042, 328, 329, 584, 105, 105, - -297, 796, 587, 590, 105, 105, 105, 592, -104, 105, - -101, 714, 593, 245, 604, 71, 246, 247, 122, 628, - 122, 666, 680, 681, 730, 685, 547, 499, 506, -96, - 758, -93, 267, 278, 968, -297, 278, 775, 775, -581, - 707, 105, -297, 295, 525, 719, 121, 125, 527, 125, - 531, 724, 791, 727, 278, 105, 755, 216, 87, 813, - 816, 797, 816, -87, 799, 1030, 678, 753, 770, 816, - 963, 780, 781, 782, 206, 792, 464, 974, 806, 809, - 807, 814, 122, 976, 822, 750, 268, 268, 828, 216, - 831, 790, 904, 499, 537, -577, 830, 206, 244, 283, - 274, 832, 764, 274, 840, 768, 105, 843, 105, 249, - 849, 125, 684, 568, 853, 857, 607, 859, 861, 790, - 691, 274, 607, 895, 993, 995, 996, 997, 607, 607, - 703, 605, 804, 676, 863, 911, 579, 605, 912, 916, - 930, -337, -102, 605, 605, 920, 839, 427, 922, 599, - 268, 931, 958, 935, 599, 415, -337, 948, 268, -475, - 951, 87, 428, 508, 829, 954, 721, 722, 314, 87, - 612, 956, 960, 216, -475, 245, 612, 216, 246, 247, - 775, 653, 612, 612, 965, 424, 425, 426, 87, 87, - 914, -337, 977, 918, 466, 263, 743, 429, -337, 105, - -104, 466, 87, 966, 430, 216, 248, -577, 249, -475, - 105, 105, 1050, -577, 87, 87, -475, 499, 839, 759, - 978, 987, 87, 759, 121, 873, 994, 283, 283, 988, - 998, 654, 607, 999, 87, 87, 1000, 1013, 489, 1014, - 1015, -102, 706, 1024, -102, -102, 1047, 605, 1026, 718, - 579, 579, 334, 1031, 326, 327, 723, 1033, 947, 777, - 122, 1035, 105, 953, 1037, -580, 105, 729, -581, 1055, - 105, 105, -102, 1057, -102, 105, 453, 726, 212, 225, - 919, 884, 105, 105, 130, 1046, 612, 874, 867, 125, - 105, 428, 1048, 905, 268, 1045, 87, 87, 1018, -104, - 971, 486, -104, -104, 87, 816, 328, 329, 208, 793, - 212, 757, 1002, 468, 121, 500, 0, 751, 752, 121, - 1007, 0, 555, -578, 326, 327, 454, 489, 428, 0, - -104, 0, -104, 430, 0, 105, 105, 105, 105, 105, - 105, 105, 105, 283, 0, 0, 1023, 778, 955, 957, - 122, 0, 0, -287, 0, 122, 121, 0, 583, 105, - 0, 0, 87, 469, 87, 0, 833, 87, -287, 0, - 430, 0, 939, 0, 941, 502, 328, 329, 942, 125, - 105, 579, 268, 105, 125, 105, -294, -479, 105, -294, - -294, 0, 122, 0, 0, 508, 0, 683, 816, 0, - 0, 1003, -479, -287, 873, 216, 0, 873, 0, 873, - -287, 0, 0, 653, 879, 0, -294, -294, 105, -294, - 0, 125, 1006, 0, 808, 0, 212, 263, 105, 105, - 0, 0, 0, 352, 353, -578, 599, -479, 0, -584, - 0, -578, 0, 105, -479, 105, 105, 0, 907, 989, - 990, 0, 0, 0, 105, 694, 694, 873, 105, 0, - 0, 915, 105, 654, -580, 0, 0, 105, 0, 1009, - 0, 1012, 105, 923, 924, 0, 0, 841, 1032, 1034, - 1036, 927, 1038, 1039, 873, 0, 873, 0, 873, 0, - 873, 0, 0, 0, 933, 852, 0, 0, -581, 929, - 0, -410, 0, -584, 105, 489, 1025, 0, 0, 1027, - 873, 245, 489, 105, 246, 247, 245, 0, -584, 246, - 247, 0, 1056, 1058, 1059, 1060, 663, 665, -580, 215, - 215, 105, 1062, 0, 0, 215, 264, 264, 105, 0, - 264, 1049, 248, -580, 249, 0, 1051, 248, 1053, 249, - 0, -584, 1054, -584, 0, 967, 0, -580, 663, 665, - -584, 0, -581, 975, 0, -410, 0, 287, 289, 290, - 291, 0, 1061, 0, 264, 307, -580, -581, -580, 477, - -410, 0, -580, 0, 928, -580, 343, 344, 517, 0, - 759, 0, 0, 879, 428, 0, 879, 0, 879, 0, - 937, 0, 0, 428, 0, 0, 728, 0, 0, 0, - -581, 0, -581, -410, 0, -410, -581, 0, 0, -581, - 0, 1019, -410, 1020, 0, 0, 1021, 0, 541, 478, - 0, 641, 642, 0, 0, 643, 430, 215, 469, 325, - 326, 327, 0, 428, 0, 430, 879, 0, 0, 803, - 174, 175, 176, 177, 178, 179, 180, 181, 105, 105, - 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, - 0, 0, 0, 879, 0, 879, 0, 879, 542, 879, - 188, 189, 190, -482, 0, 430, -286, 466, -298, 0, - 105, 0, 328, 329, 0, 0, 0, 0, -482, 879, - 0, -286, 0, -298, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 0, 201, 202, 747, 0, 355, - 356, 357, 358, 203, 273, 0, 747, 0, 355, 356, - 357, 358, 0, -482, 0, 359, -286, 784, -298, 0, - -482, 215, 215, -286, 359, -298, 104, 0, 104, 128, - 128, 983, 428, 355, 356, 357, 358, 230, 0, 0, - 0, 0, 105, 347, 348, 349, 350, 351, 0, 359, - 105, 105, 0, 0, 105, 0, 0, 105, 105, 492, - 493, 494, 343, 105, 105, 910, 0, 785, 0, 105, - 105, 0, 1001, 264, 430, 0, 104, 264, 0, 0, - 316, 215, 215, 105, 0, 1016, 105, 428, 850, 354, - 694, 355, 356, 357, 358, 105, 105, 991, 0, 0, - 428, 0, 0, 105, 0, 0, 316, 359, 0, 0, - 336, 326, 327, 0, 0, 105, 105, 0, 0, 338, - 326, 327, 454, 571, 0, 0, 0, 245, 0, 430, - 246, 247, 360, 0, 0, 1017, 0, 0, 361, 362, - 363, 364, 430, 104, 547, 326, 327, 215, 215, 215, - 215, 0, 215, 215, 496, 894, 896, 0, 248, 0, - 249, 900, 902, 328, 329, 0, 365, 105, 0, 366, - 0, 576, 328, 329, 466, 0, 0, 105, 105, 0, - 466, 0, 586, 0, 0, 105, 0, 894, 896, 0, - 900, 902, 0, 0, 598, 0, 0, 328, 329, 609, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 0, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 640, 0, 0, 264, - 552, 326, 327, 0, 104, 0, 556, 326, 327, 662, - 662, 0, 0, 105, 0, 105, 0, 0, 105, 0, - 0, 557, 326, 327, 264, 0, 767, 215, 355, 356, - 357, 358, 742, 326, 327, 964, 0, 662, 0, 264, - 0, 662, 662, 0, 359, 0, 0, 0, 264, 412, - 413, 0, 0, 328, 329, 0, 105, 705, 964, 328, - 329, 709, 415, 0, 0, 710, 0, 0, 713, 360, - 716, 0, 307, 291, 328, 329, 362, 363, 364, 0, - 104, 0, 0, 0, 0, 328, 329, 104, 104, 662, - 422, 423, 424, 425, 426, 104, 0, 0, 0, 713, - 0, 0, 307, 365, 0, 0, 316, 0, 0, 0, - 0, 0, 264, 0, 0, 0, 0, 0, 354, 0, - 355, 356, 357, 358, 0, 0, 0, 0, 745, 746, - 101, 0, 101, 127, 127, 127, 359, 0, 0, 0, - 104, 229, 0, 0, 754, 104, 0, 0, 0, 0, - 0, 0, 0, 747, 0, 355, 356, 357, 358, 0, - 0, 360, 0, 769, 104, 0, 776, 361, 362, 363, - 364, 359, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 0, 0, 0, 315, 104, 0, 0, -607, 0, - 104, 316, 0, 613, 0, 365, 360, 0, 366, 0, - 0, 0, 748, 354, 0, 355, 356, 357, 358, 0, - 315, 367, 0, 354, 0, 355, 356, 357, 358, 0, - 0, 359, 0, 354, 0, 355, 356, 357, 358, 0, - 0, 359, 0, 613, 613, 0, 0, 0, 0, 215, - 0, 359, 0, 0, 0, 0, 360, 101, 0, 0, - 104, 810, 361, 362, 363, 364, 360, 0, 0, 104, - 0, 0, 361, 362, 363, 364, 360, 104, 0, 0, - 0, 215, 361, 362, 363, 364, 0, 104, 0, 0, - 365, 0, 836, 366, 747, 0, 355, 356, 357, 358, - 365, 713, 307, 366, 0, 0, 367, 0, 0, 0, - 365, 0, 359, 366, 0, 0, 544, 0, 0, 104, - 0, 0, 0, 0, 1004, 0, 0, 747, 104, 355, - 356, 357, 358, 0, 0, 0, 84, 360, 84, 0, - 0, 0, 316, 936, 316, 359, 0, 226, 101, 0, - 0, 0, 0, 104, 0, 0, 0, 882, 0, 0, - 0, 0, 662, 885, 0, 264, 0, 0, 662, 662, - 360, 0, 0, 713, 662, 662, 0, 354, 0, 355, - 356, 357, 358, 0, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 0, 0, 359, 0, 215, 0, 0, - 662, 662, 0, 662, 662, 0, 316, 0, 0, 0, - 0, 854, 0, 926, 0, 0, 0, 0, 291, 0, - 360, 0, 0, 0, 101, 0, 361, 362, 363, 364, - 0, 101, 101, 0, 0, 938, 0, 0, 0, 101, - 0, 0, 0, 0, 0, 0, 943, 0, 0, 0, - 315, 412, 413, 84, 365, 0, 0, 366, 0, 0, - 0, 959, 0, 0, 415, 0, 0, 0, 0, 0, - 0, 961, 962, 0, 104, 0, 0, 0, 662, 0, - 0, 0, 783, 0, 101, 0, 0, 0, 0, 101, - 0, 421, 422, 423, 424, 425, 426, 102, 0, 102, - 0, 662, 0, 0, 0, 0, 0, 0, 101, 307, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 0, 0, 0, 0, 412, 413, 0, 101, - 0, 0, 0, 0, 101, 315, 0, 0, 0, 415, - 0, 0, 0, 0, 84, 0, 0, 102, 0, 0, + 106, 285, 284, 265, 265, 433, 435, 265, 439, 477, + 87, 222, 87, 126, 126, 505, 252, 218, 218, 280, + 586, 229, 400, 218, 218, 218, 206, 246, 218, 542, + 710, 286, 71, 206, 71, 768, 344, 125, 125, 282, + 449, 246, 271, 271, 701, 125, 271, 206, 107, 772, + 205, 555, 308, 312, 652, 269, 269, 256, 537, 269, + 87, 859, 539, 615, 316, 885, 335, 337, 339, 341, + 769, 315, 391, 391, 218, 301, 525, 206, 348, 679, + 307, 311, 270, 270, 823, 468, 270, 720, 125, 392, + 316, 720, -104, 306, 740, 833, 694, 808, 809, 393, + 714, 325, 276, 281, 998, 704, 854, 723, 437, 280, + 437, 347, -111, 550, 125, 366, -107, 1022, 572, -110, + 270, 270, 444, -109, 3, 218, -485, 87, -106, -108, + 267, 273, -105, 901, 274, 767, 474, 723, 767, -488, + 367, 767, 779, 907, 342, 343, 393, 483, -487, 913, + 434, 579, 354, 355, 297, -112, 787, 440, 502, -77, + 506, 294, -489, 576, 804, 430, 822, 806, 491, 743, + 212, 212, 598, -490, 557, 288, 212, 557, 605, 557, + -91, 557, 573, 557, 247, 804, 443, 248, 249, 780, + 855, 396, 276, 281, 1022, 533, -488, 998, 753, 902, + 357, 358, 359, 360, 394, -487, 768, 432, 522, -96, + 443, 391, 391, 397, 555, 250, 361, 251, 87, -489, + 438, 297, 438, -492, 478, 479, 275, 466, 467, -103, + -490, 218, 218, -99, 547, -584, -102, 681, 393, 401, + -101, 769, -585, -484, 918, -98, -100, 476, 885, -97, + 523, 885, -491, 1004, 541, 505, 650, 441, 1034, 542, + 659, 206, 265, 662, 251, 468, 265, 503, 453, 503, + 665, 668, -104, 512, 750, 275, -111, -493, 446, -110, + -492, 283, -301, 218, 680, 325, -479, 218, 465, 858, + 471, 218, 218, 470, 488, 475, 87, -301, -483, 650, + 470, 659, 480, 87, 87, 271, 767, 528, 768, -491, + 680, 87, 720, 720, 510, 535, 535, 768, 269, 301, + 535, 542, 316, 843, 772, 524, 450, 451, 885, 723, + 552, 460, -301, 530, -493, 992, -585, 493, 893, -301, + 527, 270, 746, -479, 283, 270, 125, 819, 251, 680, + 565, 566, 567, 568, 484, -483, 87, 218, 218, 218, + 218, 87, 218, 218, 247, 447, 601, 248, 249, 448, + 486, 611, 491, 583, 680, 583, 442, 677, 71, 500, + 87, 494, 609, 569, 212, 212, 720, 417, 461, 519, + 520, 500, 564, 513, 557, 250, 763, 251, 297, 727, + 728, 87, 935, 831, 218, -111, 87, 316, 865, 616, + 768, 611, 611, 767, 607, 767, 898, 767, 265, 767, + 526, 301, 609, 609, -76, 42, 493, 538, 43, 512, + 832, 125, -106, 532, 750, 603, 540, 555, 544, 218, + 603, -484, 562, 265, 514, 517, 364, 365, 366, 616, + 616, 563, 657, 813, 512, 657, 417, 587, 578, -108, + 265, -499, 687, 581, 218, 845, 87, 218, 584, 265, + -104, 512, 59, 367, 285, 717, 657, 87, 931, 993, + 512, 218, 739, 768, 541, 87, 426, 427, 428, 850, + 218, -96, 785, 657, 768, 87, 585, 270, 770, 842, + 297, 773, 657, 542, 825, 822, 802, -105, 503, 503, + 212, 212, 212, 212, 658, 570, 571, 106, 803, 956, + 957, 731, 270, 593, 720, 961, 962, 87, 721, 588, + 712, 246, -581, 265, 794, -106, 87, 206, 658, 270, + 723, 657, 801, 591, 512, 594, 541, -108, 270, 71, + 316, 726, 316, 767, 218, 658, 700, 700, 736, 738, + 890, 87, 596, 750, 658, 760, 657, -341, 270, -106, + 597, 690, 270, 429, 125, 592, 125, 595, 908, 697, + 452, 452, -341, 608, 776, 632, 218, 916, 430, 709, + 670, 845, 684, 442, 685, 688, -479, 783, 691, 270, + 689, 841, 270, 658, 551, 218, 493, -105, 285, 795, + 506, -479, 270, 493, 316, 713, 725, -341, 730, 650, + 682, 659, -111, 431, -341, 903, -91, 105, 658, 105, + 432, 909, 911, 942, 105, 105, 523, 733, 125, 759, + 105, 105, 105, -103, -581, 105, -479, 762, 789, 577, + -581, 503, 1054, -479, 788, 749, 802, 280, 1042, 778, + 280, 783, 783, 790, 800, -110, 698, 799, -106, 770, + 814, -106, -106, 815, 812, 822, 805, 105, 280, 807, + 803, 218, 87, 821, 824, -106, -102, 830, 824, 455, + 888, 105, 766, 765, 839, 824, 766, 836, 980, -106, + 840, -106, 206, 851, 430, 908, -98, 848, 837, -108, + 986, 838, 857, 251, 861, 218, 988, 863, 472, 503, + 285, 246, 572, 875, 603, 914, 817, 206, 541, 866, + -100, 798, 868, 430, -105, 870, 939, 975, 872, 456, + 276, 921, 105, 276, 105, 922, 432, 535, -298, -291, + 811, -298, -298, 847, 247, -97, 926, 248, 249, 798, + 611, 276, 930, 583, -291, 932, 611, 905, 473, 940, + 970, 609, 611, 611, 977, 432, 951, 609, -298, -298, + 265, -298, -414, 609, 609, 250, 941, 251, 945, 87, + 470, 512, 960, 270, 270, 963, 316, 87, 616, -291, + 989, 218, 966, 968, 616, 218, -291, 972, 783, 978, + 616, 616, 990, 657, 999, 1000, 87, 87, 924, 894, + 125, 928, 481, 1006, 1010, 529, 929, 847, 334, 531, + 87, 328, 329, 218, 212, 105, 489, 430, 1011, 248, + 249, 1012, 87, 87, 1025, 503, -414, 1026, 105, 105, + 87, 1027, 285, 285, 756, 1036, 1038, 680, 1043, 270, + 1045, -414, 87, 87, 1047, 1049, 247, 270, 212, 248, + 249, 771, 482, 1020, 775, 658, 1023, -584, 611, 432, + 583, 583, -108, 330, 331, 1059, 1067, -585, 959, 609, + 920, 889, 883, 965, -414, 1069, -414, 250, 732, 251, + 105, 1030, 227, -414, 105, 667, 669, 130, 105, 105, + 1058, 917, 125, 105, 877, 700, 616, 125, 1060, 1057, + 105, 105, 354, 355, 925, 490, 87, 87, 105, 247, + 983, 208, 248, 249, 87, 824, 933, 934, 764, 667, + 669, 521, 915, 880, 937, 753, 1014, 357, 358, 359, + 360, 1019, 545, 1064, 125, 0, 430, 943, 867, 869, + 871, 504, 873, 361, 874, 0, 0, 430, 0, 0, + 285, 1035, 0, 105, 105, 105, 105, 105, 105, 105, + 105, -108, 0, 0, -108, -108, 212, 734, 967, 969, + 0, 473, 0, 0, 87, -486, 87, 105, 432, 87, + 247, 470, 546, 248, 249, 270, 0, 470, 0, 432, + -486, 0, -108, 583, -108, 0, 265, 0, 105, -290, + 979, 105, 0, 105, 0, 0, 105, 512, 987, 687, + 824, 250, 724, 251, -290, 0, 1003, 218, 0, 729, + 0, 0, -302, 0, 0, -486, 792, 1013, 0, 657, + 735, 336, -486, 328, 329, 0, 105, -302, 1028, 0, + 884, 430, 430, 0, 1018, 0, 105, 105, 0, -290, + -582, 766, 1015, 430, 889, 883, -290, 889, 883, 889, + 883, 105, 558, 105, 105, 328, 329, 0, 1031, 0, + 1032, 0, -302, 1033, 105, 270, 793, 456, 105, -302, + 757, 758, 105, 432, 432, 330, 331, 105, 1029, 0, + 0, 658, 105, 0, 559, 432, 328, 329, 0, 0, + 1044, 1046, 1048, 880, 1050, 1051, 880, 889, 883, 880, + 786, 880, 0, 0, -483, -588, 0, 330, 331, 1005, + 1007, 1008, 1009, 0, 105, 0, 950, 0, 952, -483, + 0, 0, 953, 105, 889, 883, 889, 883, 889, 883, + 889, 883, 0, 0, 1068, 1070, 1071, 1072, 330, 331, + 0, 105, -599, 0, 1074, -599, -599, 0, 105, 880, + 889, 883, -582, 0, -483, 0, 0, 0, -582, 0, + 0, -483, 0, -584, -585, 0, 0, 0, 0, -588, + 0, 0, 0, 105, 0, 251, 880, 816, 880, 0, + 880, 0, 880, 0, -588, 0, 753, 0, 357, 358, + 359, 360, 105, 0, 1001, 1002, 0, 0, 1062, 0, + 217, 217, 880, 0, 361, 0, 217, 266, 266, 0, + 0, 266, 0, 0, 0, 0, 1021, -588, 1024, -588, + 327, 328, 329, -584, 0, 0, -588, -584, -585, 362, + 904, 906, 849, 0, 0, 754, 910, 912, 289, 291, + 292, 293, -584, -585, 0, 266, 309, 338, 328, 329, + 860, 0, 0, 1037, 0, 0, 1039, 345, 346, 0, + 0, 0, 904, 906, 0, 910, 912, 0, 105, 105, + 340, 328, 329, 330, 331, -584, -585, -584, -585, 0, + 0, -584, -585, 0, -584, -585, 0, 356, 1061, 357, + 358, 359, 360, 1063, 0, 1065, 0, 0, 0, 1066, + 330, 331, 105, 417, 0, 361, 0, 0, 217, 356, + 0, 357, 358, 359, 360, 551, 328, 329, 0, 1073, + 556, 328, 329, 330, 331, 0, 0, 361, 0, 0, + 362, 424, 425, 426, 427, 428, 363, 364, 365, 366, + 0, 938, 976, 0, 0, 74, 0, 74, 121, 121, + 0, 0, 362, 560, 328, 329, 121, 947, 363, 364, + 365, 366, 0, 0, 367, 976, 0, 368, 330, 331, + 561, 328, 329, 330, 331, 0, 105, 0, 0, -611, + 369, 748, 328, 329, 105, 105, 367, 0, 105, 368, + 0, 105, 105, 0, 0, 74, 0, 105, 105, 121, + 0, 0, 369, 105, 105, 0, 330, 331, 356, 0, + 357, 358, 359, 360, 217, 217, 0, 105, 0, 0, + 105, 0, 0, 330, 331, 121, 361, 0, 0, 105, + 105, 0, 0, 0, 330, 331, 247, 105, 0, 248, + 249, 0, 0, 356, 0, 357, 358, 359, 360, 105, + 105, 362, 496, 497, 498, 345, 0, 363, 364, 365, + 366, 361, 74, 500, 0, 0, 266, 250, 0, 251, + 266, 0, 0, 0, 217, 217, 0, 0, 0, 356, + 0, 357, 358, 359, 360, 367, 362, 0, 368, 0, + 0, 0, 363, 364, 365, 366, 0, 361, 0, 0, + 0, 548, 0, 105, 0, 0, 753, 0, 357, 358, + 359, 360, 0, 105, 105, 349, 350, 351, 352, 353, + 367, 105, 362, 368, 361, 414, 415, 0, 363, 364, + 365, 366, 0, 0, 1016, 414, 415, 0, 417, 0, + 217, 217, 217, 217, 0, 217, 217, 0, 417, 362, + 0, 0, 0, 74, 0, 946, 367, 0, 0, 368, + 0, 0, 0, 0, 580, 423, 424, 425, 426, 427, + 428, 0, 0, 0, 0, 590, 424, 425, 426, 427, + 428, 105, 0, 105, 0, 0, 105, 602, 0, 0, + 0, 0, 613, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 631, 0, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 0, 0, 266, 0, 105, 356, 0, 357, 358, 359, + 360, 74, 666, 666, 0, 0, 0, 0, 74, 74, + 0, 0, 0, 361, 0, 0, 74, 266, 0, 0, + 217, 753, 0, 357, 358, 359, 360, 121, 0, 575, + 0, 0, 666, 0, 266, 0, 666, 666, 362, 361, + 0, 0, 0, 266, 363, 364, 365, 366, 0, 0, + 0, 0, 711, 0, 0, 0, 715, 0, 0, 0, + 716, 74, 0, 719, 362, 722, 74, 309, 293, 0, + 0, 0, 367, 0, 995, 368, 357, 358, 359, 360, + 0, 0, 0, 0, 666, 74, 0, 75, 0, 75, + 122, 122, 361, 0, 719, 0, 0, 309, 122, 356, + 0, 357, 358, 359, 360, 0, 74, 266, 0, 0, + 0, 74, 121, 0, 74, 0, 0, 361, 0, 0, + 0, 0, 0, 751, 752, 0, 0, 0, 0, 0, + 0, 0, 0, 862, 0, 0, 0, 75, 0, 761, + 0, 122, 362, 0, 0, 0, 0, 0, 363, 364, + 365, 366, 0, 0, 74, 74, 0, 0, 777, 0, + 774, 784, 357, 358, 359, 360, 0, 122, 0, 0, + 0, 74, 0, 0, 0, 0, 367, 0, 361, 368, + 414, 415, 74, 0, 0, 0, 0, 0, 0, 0, + 74, 0, 0, 417, 0, 0, 0, 0, 0, 0, + 74, 0, 0, 362, 75, 0, 0, 0, 0, 0, + 364, 365, 366, 0, 0, 0, 0, 0, 421, 422, + 423, 424, 425, 426, 427, 428, 0, 0, 0, 0, + 0, 0, 74, 0, 217, 0, 0, 367, 0, 0, + 0, 74, 0, 0, 0, 0, 818, 0, 0, 761, + 777, 0, 0, 0, 0, 121, 0, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 0, 217, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 844, + 0, 0, 0, 0, 0, 0, 0, 0, 719, 309, + 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, + 0, 0, 0, 0, 0, 104, 0, 104, 128, 128, + 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 892, 0, 0, 0, + 0, 666, 895, 0, 266, 0, 0, 666, 666, 0, + 0, 0, 719, 666, 666, 0, 0, 0, 0, 0, + 0, 0, 0, 75, 0, 104, 0, 0, 0, 318, + 75, 75, 0, 0, 0, 0, 217, 74, 75, 666, + 666, 0, 666, 666, 0, 0, 0, 0, 0, 122, + 0, 0, 936, 0, 0, 318, 0, 293, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 948, 949, 0, 0, 0, 0, + 0, 0, 0, 75, 0, 0, 954, 955, 75, 0, + 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 971, 0, 0, 0, 0, 75, 0, 0, + 0, 0, 973, 974, 0, 0, 0, 0, 0, 666, + 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, + 0, 0, 0, 75, 122, 0, 75, 0, 0, 0, + 0, 0, 666, 0, 74, 0, 0, 0, 0, 0, + 309, 121, 74, 74, 0, 0, 0, 0, 0, 74, + 0, 0, 0, 0, 0, 74, 74, 0, 0, 0, + 0, 74, 74, 0, 0, 0, 75, 75, 0, 0, + 0, 0, 0, 104, 0, 74, 0, 0, 0, 0, + 0, 0, 0, 75, 0, 0, 0, 74, 74, 0, + 0, 0, 0, 0, 75, 74, 0, 0, 0, 0, + 0, 0, 75, 0, 0, 0, 0, 74, 74, 0, + 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 266, 0, 0, 121, 0, 0, 0, 0, 121, 0, + 0, 0, 0, 84, 75, 84, 0, 0, 0, 0, + 0, 104, 0, 75, 228, 0, 0, 0, 104, 104, + 0, 74, 0, 0, 0, 0, 104, 122, 0, 122, + 0, 74, 74, 0, 0, 121, 0, 318, 75, 74, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -611, 104, 0, 0, 0, 0, 104, 0, 0, 0, + 0, 0, 0, -611, -611, -611, -611, -611, -611, 0, + -611, 122, 0, 0, 0, 104, -611, -611, 0, 74, + 0, 74, 0, 0, 74, 0, 0, -611, -611, 0, + -611, -611, -611, -611, -611, 0, 104, 0, 0, 0, + 84, 104, 318, 0, 617, 0, 101, 0, 101, 127, + 127, 127, 0, 0, 0, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, + -611, 0, 0, 0, 617, 617, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -611, 101, 0, 0, 0, + 317, 104, 0, 0, 0, -611, 0, 0, -611, -611, + 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, 317, 0, -611, -611, + 104, 84, 0, 0, 275, -611, -611, -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 416, 0, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 0, 0, 0, 0, 0, 104, 0, 0, - -273, 0, 0, 0, 316, 104, 613, 0, 0, 0, - 0, 0, 613, 0, 101, 0, 0, 264, 613, 613, - 0, 0, 0, 101, 104, 104, 0, 0, 0, 0, - 0, 101, 0, 0, 102, 0, 0, 0, 104, 0, - 84, 101, 0, 0, 0, 0, 0, 84, 84, 0, - 104, 104, 0, 0, 0, 84, 0, 0, 104, 0, - 0, 354, 0, 355, 356, 357, 358, 0, 0, 0, - 104, 104, 0, 101, 0, 0, 412, 413, 0, 359, - 0, 0, 101, 0, 0, 0, 0, 0, 0, 415, - 0, 0, 0, 0, 128, 0, 315, 0, 315, 128, - 84, 0, 0, 0, 360, 84, 0, 101, 0, 0, - 361, 362, 363, 364, 419, 420, 421, 422, 423, 424, - 425, 426, 613, 0, 84, 102, -608, -608, -608, -608, - 404, 405, 104, 104, -608, -608, 973, 0, 365, 0, - 104, 366, 412, 413, 0, 84, 0, 0, 0, 0, - 84, 0, 0, 608, 0, 415, 0, 0, 0, 0, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 0, 0, - 0, 0, 0, 608, 608, 0, 0, 0, 104, 0, - 104, 102, 0, 104, 0, 0, 0, 0, 102, 102, - 84, 0, 0, 0, 0, 0, 102, 0, 0, 84, - 0, 0, 0, 0, 0, 0, 0, 84, 101, 0, - -607, 0, 0, 0, 0, 0, 0, 84, 0, 0, - 0, 0, 0, -607, -607, -607, -607, -607, -607, 0, - -607, 0, 0, 0, 0, 0, -607, -607, 0, 0, - 0, 102, 0, 0, 0, 0, 102, -607, -607, 84, - -607, -607, -607, -607, -607, 0, 0, 0, 84, 0, - 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 104, 101, 0, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 318, 75, 318, 0, 0, + 0, 0, 0, 122, 75, 75, 104, 0, 0, 0, + 0, 75, 0, 0, 0, 0, 0, 75, 75, 84, + 0, 0, 0, 75, 75, 0, 84, 84, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 75, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, + 75, 0, 0, 0, 0, 0, 0, 75, 0, 318, + 0, 0, 0, 0, 101, 0, 0, 0, 0, 75, + 75, 0, 0, 0, 0, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, + 122, 0, 0, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 0, 102, 75, 84, 0, 0, 104, 0, 84, + 0, 0, 612, 75, 75, 0, 0, 122, 0, 0, + 0, 75, 101, 0, 0, 0, 0, 0, 0, 101, + 101, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, + 102, 0, 612, 612, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 75, 101, 75, 0, 0, 75, 101, 84, 0, + 0, 402, 403, 404, 405, 406, 407, 408, 84, 410, + 411, 0, 0, 0, 0, 0, 101, 414, 415, 0, + 0, 0, 0, 0, 104, 0, 0, 102, 0, 0, + 417, 318, 104, 617, 0, 0, 0, 101, 0, 617, + 84, 0, 101, 317, 0, 617, 617, 0, 0, 84, + 0, 104, 104, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 0, 0, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 104, 104, 0, + 0, 0, 0, 0, 0, 104, 0, -612, -612, -612, + -612, 406, 407, 0, 0, -612, -612, 104, 104, 0, + 0, 0, 101, 414, 415, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 0, 0, 417, 0, 102, 0, + 0, 101, 0, 128, 0, 0, 0, 0, 128, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 0, + 0, 617, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 104, 104, 101, 0, 985, 0, 0, 0, 104, + 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 317, 0, 317, 0, + 0, 0, 0, 0, 0, 84, 102, 101, 0, 0, + 0, 0, 0, 102, 102, 0, 0, 791, 0, 0, + 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, + 0, 104, 0, 0, 104, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 0, 0, 0, + 317, 414, 415, 0, 0, 0, 102, 0, 0, 0, + 0, 102, 0, 0, 417, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 0, 0, 0, 0, 418, 0, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 0, 0, 0, + 0, 102, 84, 0, 0, -277, 102, 0, 0, 102, + 84, 612, 0, 0, 0, 0, 0, 612, 101, 0, + 0, 0, 0, 612, 612, 0, 0, 0, 0, 84, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 0, 0, 0, 0, 102, + 102, 0, 0, 0, 0, 84, 84, 0, 0, 0, 0, 0, 0, 84, 0, 0, 102, 0, 0, 0, - 0, 102, 0, 0, 102, 0, 0, 0, 0, 0, - -607, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 0, 0, -607, 0, 0, 315, 101, - 0, 0, 0, 0, 0, -607, 0, 0, -607, -607, - 0, 0, 0, 0, 102, 102, 0, 0, 101, 101, - 0, 0, 0, 0, 0, 0, 0, 0, -607, -607, - 0, 102, 101, 0, 273, -607, -607, -607, -607, 0, - 102, 0, 0, 0, 101, 101, 0, 0, 102, 0, - 0, 0, 101, 0, 0, 0, 0, 0, 102, 0, - 0, 0, 0, 0, 101, 101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 84, 84, 102, 0, 0, + 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 650, 651, 84, 0, 652, 0, 127, 0, - 102, 0, 0, 127, 0, 0, 0, 0, 0, 102, - 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, - 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, - 187, 0, 0, 0, 102, 0, 101, 101, 0, 0, - 972, 188, 189, 190, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 0, 102, 0, 612, + 0, 0, 317, 101, 0, 0, 102, 0, 0, 84, + 84, 0, 0, 982, 0, 0, 0, 84, 0, 0, + 0, 0, 101, 101, 0, 0, 0, 0, 0, 0, + 0, 102, 0, 0, 0, 0, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, + 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, + 0, 0, 0, 0, 0, 0, 0, 84, 0, 84, + 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 127, 0, 0, 0, 0, 127, + 0, 0, 0, 0, 0, -588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -588, -588, + -588, 0, -588, -588, 0, -588, 0, 0, 0, 0, + 0, -588, 101, 101, 0, 0, 984, 0, 0, 0, + 101, 0, -588, -588, 0, -588, -588, -588, -588, -588, + 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -588, -588, -588, + -588, -588, -588, -588, -588, -588, -588, -588, -588, 0, + 0, 0, 0, -588, -588, -588, 0, 796, -588, 0, + 101, 0, 101, 0, 0, 101, -588, 0, 0, 0, + -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -588, 0, 0, -588, -588, 0, -107, -588, 0, -588, + -588, -588, -588, -588, -588, -588, -588, -588, -588, 0, + 0, 0, 0, -588, -588, -588, 0, -99, 0, 0, + -588, -588, -588, -588, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 0, 0, 0, 0, 102, 102, 0, + 0, 0, 645, 646, 102, 0, 647, 0, 0, 0, + 102, 102, 0, 0, 0, 0, 102, 102, 0, 0, + 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, + 102, 182, 183, 0, 0, 0, 0, 184, 185, 186, + 187, 0, 102, 102, 0, 0, 0, 0, 0, 0, + 102, 188, 189, 190, 0, 0, 0, 0, 0, 0, + 0, 0, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 0, 201, 202, 0, 0, - 0, 0, 0, 0, 203, 273, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, - 0, 0, 101, 0, 101, 84, 608, 101, 0, 0, - 671, 642, 608, 0, 672, 0, 0, 0, 608, 608, - 0, 0, 0, 0, 84, 84, 0, 0, 0, 174, - 175, 176, 177, 178, 179, 180, 181, 0, 84, 182, - 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, - 84, 84, 0, 0, 0, 102, 0, 0, 84, 188, - 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 84, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 0, 201, 202, 400, 401, 402, 403, - 404, 405, 203, 273, 408, 409, 0, 0, 0, 0, - 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, - 0, 0, 608, 0, 0, 415, 0, 0, 0, 0, - 0, 0, 84, 84, 0, 0, 970, 0, 0, 0, - 84, 0, 0, 0, 0, 0, 0, 0, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 102, 0, + 196, 197, 198, 199, 200, 0, 201, 202, 402, 403, + 404, 405, 406, 407, 203, 275, 410, 411, 0, 0, + 0, 0, 0, 0, 414, 415, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 102, 417, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 0, 0, - 0, 0, 0, 102, 0, 0, 0, 0, 0, 102, - 102, 0, 0, 0, 0, 102, 102, 0, 400, 401, - 402, 403, 404, 405, 406, 0, 408, 409, 84, 102, - 84, 0, 0, 84, 412, 413, 0, 0, 0, 0, - 0, 102, 102, 0, 0, 0, 0, 415, 0, 102, - 0, 0, 783, 0, 0, 0, 0, 0, 0, 0, - 0, 102, 102, 0, 0, 0, 0, 0, 0, 0, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 0, 0, 0, 0, 412, 413, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, - 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 102, 102, 0, 0, 0, 0, 0, - 416, 102, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -607, 4, 0, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, - 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 20, 21, 22, 23, 24, 25, 26, 0, 102, - 27, 102, 0, 0, 102, 0, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, - 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, -288, 64, -607, 0, 0, -607, - -607, 0, 0, 0, 0, 0, 0, -288, -288, -288, - -288, -288, -288, 0, -288, 65, 66, 67, 0, 0, - 0, -288, -288, -288, 0, 0, 0, -607, 0, -607, - 0, -288, -288, 0, -288, -288, -288, -288, -288, 0, + 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 0, 0, 0, 0, 0, 0, -611, 4, 0, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, + 0, 0, 0, 0, 0, 15, 0, 16, 17, 18, + 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, + 24, 25, 26, 0, 102, 27, 102, 0, 0, 102, + 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, + 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 0, 0, - 0, 0, -288, -288, -288, 0, 0, -288, 0, 0, - 0, 0, 0, -288, 0, -288, 0, 0, 0, -288, - 0, 0, 0, 0, 0, 0, 0, -288, 0, -288, - 0, 0, -288, -288, 0, 0, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 0, 0, - -409, 0, 0, -288, -288, -288, -288, 0, 0, -288, - -288, -288, -288, -409, -409, -409, -409, -409, -409, 0, - -409, 0, 0, 0, 0, 0, -409, -409, -409, 0, - 0, 0, 0, 0, 0, 0, 0, -409, -409, 0, - -409, -409, -409, -409, -409, 0, 0, 0, 0, 0, + 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, + 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, + 57, 0, 58, 59, 60, 0, 61, 62, 63, -292, + 64, -611, 0, 0, -611, -611, 0, 0, 0, 0, + 0, 0, -292, -292, -292, -292, -292, -292, 0, -292, + 65, 66, 67, 0, 0, 0, -292, -292, -292, 0, + 0, 0, -611, 0, -611, 0, -292, -292, 0, -292, + -292, -292, -292, -292, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, 0, 0, 0, 0, -292, -292, -292, + 0, 0, -292, 0, 0, 0, 0, 0, -292, 0, + -292, 0, 0, 0, -292, 0, 0, 0, 0, 0, + 0, 0, -292, 0, -292, 0, 0, -292, -292, 0, + 0, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, 0, 0, -413, 0, 0, -292, -292, + -292, -292, 0, 0, -292, -292, -292, -292, -413, -413, + -413, -413, -413, -413, 0, -413, 0, 0, 0, 0, + 0, -413, -413, -413, 0, 0, 0, 0, 0, 0, + 0, 0, -413, -413, 0, -413, -413, -413, -413, -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -409, -409, -409, -409, -409, -409, -409, -409, - -409, -409, -409, -409, 0, 0, 0, 0, -409, -409, - -409, 0, 0, -409, 0, 0, 0, 0, 0, -409, - 0, -409, 0, 0, 0, -409, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -409, 0, 0, -409, -409, - 0, 0, -409, 0, -409, -409, -409, -409, -409, -409, - -409, -409, -409, -409, 0, 0, -475, 0, -409, -409, - -409, -409, -409, 0, 273, -409, -409, -409, -409, -475, - -475, -475, -475, -475, -475, 0, -475, 0, 0, 0, - 0, 0, 0, -475, -475, 0, 0, 0, 0, 0, - 0, 0, 0, -475, -475, 0, -475, -475, -475, -475, - -475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 490, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -475, -475, - -475, -475, -475, -475, -475, -475, -475, -475, -475, -475, - 0, 0, 0, 0, -475, -475, -475, 0, -475, -475, - 0, 0, 0, 0, 0, -475, 0, -475, 0, 0, - 0, -475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -475, 0, 0, -475, -475, 0, -475, -475, 0, - -475, -475, -475, -475, -475, -475, -475, -475, -475, -475, - 0, 0, -607, 0, 0, -475, -475, -475, -475, 0, - 0, -475, -475, -475, -475, -607, -607, -607, -607, -607, - -607, 0, -607, 0, 0, 0, 0, 0, -607, -607, - -607, 0, 0, 0, 0, 0, 0, 0, 0, -607, - -607, 0, -607, -607, -607, -607, -607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -413, -413, -413, + -413, -413, -413, -413, -413, -413, -413, -413, -413, 0, + 0, 0, 0, -413, -413, -413, 0, 0, -413, 0, + 0, 0, 0, 0, -413, 0, -413, 0, 0, 0, + -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -413, 0, 0, -413, -413, 0, 0, -413, 0, -413, + -413, -413, -413, -413, -413, -413, -413, -413, -413, 0, + 0, -479, 0, -413, -413, -413, -413, -413, 0, 275, + -413, -413, -413, -413, -479, -479, -479, -479, -479, -479, + 0, -479, 0, 0, 0, 0, 0, 0, -479, -479, + 0, 0, 0, 0, 0, 0, 0, 0, -479, -479, + 0, -479, -479, -479, -479, -479, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -607, -607, -607, -607, -607, -607, - -607, -607, -607, -607, -607, -607, 0, 0, 0, 0, - -607, -607, -607, 0, 0, -607, 0, 0, 0, 0, - 0, -607, 0, -607, 0, 0, 0, -607, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -607, 0, 0, - -607, -607, 0, 0, -607, 0, -607, -607, -607, -607, - -607, -607, -607, -607, -607, -607, 0, 0, -607, 0, - -607, -607, -607, -607, -607, 0, 273, -607, -607, -607, - -607, -607, -607, -607, -607, -607, -607, 0, -607, 0, - 0, 0, 0, 0, 0, -607, -607, 0, 0, 0, - 0, 0, 0, 0, 0, -607, -607, 0, -607, -607, - -607, -607, -607, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, 0, 0, 0, 0, -479, + -479, -479, 0, -479, -479, 0, 0, 0, 0, 0, + -479, 0, -479, 0, 0, 0, -479, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -479, 0, 0, -479, + -479, 0, -479, -479, 0, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, 0, 0, -611, 0, 0, + -479, -479, -479, -479, 0, 0, -479, -479, -479, -479, + -611, -611, -611, -611, -611, -611, 0, -611, 0, 0, + 0, 0, 0, -611, -611, -611, 0, 0, 0, 0, + 0, 0, 0, 0, -611, -611, 0, -611, -611, -611, + -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -611, + -611, -611, -611, -611, -611, -611, -611, -611, -611, -611, + -611, 0, 0, 0, 0, -611, -611, -611, 0, 0, + -611, 0, 0, 0, 0, 0, -611, 0, -611, 0, + 0, 0, -611, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -611, 0, 0, -611, -611, 0, 0, -611, + 0, -611, -611, -611, -611, -611, -611, -611, -611, -611, + -611, 0, 0, -611, 0, -611, -611, -611, -611, -611, + 0, 275, -611, -611, -611, -611, -611, -611, -611, -611, + -611, -611, 0, -611, 0, 0, 0, 0, 0, 0, + -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, + -611, -611, 0, -611, -611, -611, -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, - -607, -607, 0, 0, 0, 0, -607, -607, -607, 0, - 0, -607, 0, 0, 0, 0, 0, -607, 0, -607, - 0, 0, 0, -607, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -607, 0, 0, -607, -607, 0, 0, - -607, 0, -607, -607, -607, -607, -607, -607, -607, -607, - -607, -607, 0, 0, -584, 0, 0, -607, -607, -607, - -607, 0, 273, -607, -607, -607, -607, -584, -584, -584, - 0, -584, -584, 0, -584, 0, 0, 0, 0, 0, - -584, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -584, -584, 0, -584, -584, -584, -584, -584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -611, -611, -611, -611, -611, + -611, -611, -611, -611, -611, -611, -611, 0, 0, 0, + 0, -611, -611, -611, 0, 0, -611, 0, 0, 0, + 0, 0, -611, 0, -611, 0, 0, 0, -611, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -611, 0, + 0, -611, -611, 0, 0, -611, 0, -611, -611, -611, + -611, -611, -611, -611, -611, -611, -611, 0, 0, -588, + 0, 0, -611, -611, -611, -611, 0, 275, -611, -611, + -611, -611, -588, -588, -588, 0, -588, -588, 0, -588, + 0, 0, 0, 0, 0, -588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -588, -588, 0, -588, + -588, -588, -588, -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -584, -584, -584, -584, - -584, -584, -584, -584, -584, -584, -584, -584, 0, 0, - 0, 0, -584, -584, -584, 0, 788, -584, 0, 0, - 0, 0, 0, 0, 0, -584, 0, 0, 0, -584, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -584, - 0, 0, -584, -584, 0, -103, -584, 0, -584, -584, - -584, -584, -584, -584, -584, -584, -584, -584, 0, 0, - -584, 0, -584, -584, -584, 0, -95, 0, 0, -584, - -584, -584, -584, -584, -584, -584, 0, -584, -584, 0, - -584, 0, 0, 0, 0, 0, -584, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -584, -584, 0, - -584, -584, -584, -584, -584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -588, -588, -588, -588, -588, -588, -588, -588, -588, + -588, -588, -588, 0, 0, 0, 0, -588, -588, -588, + 0, 796, -588, 0, 0, 0, 0, 0, 0, 0, + -588, 0, 0, 0, -588, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -588, 0, 0, -588, -588, 0, + -107, -588, 0, -588, -588, -588, -588, -588, -588, -588, + -588, -588, -588, 0, 0, -301, 0, -588, -588, -588, + 0, -588, 0, 0, -588, -588, -588, -588, -301, -301, + -301, 0, -301, -301, 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -584, -584, -584, -584, -584, -584, -584, -584, - -584, -584, -584, -584, 0, 0, 0, 0, -584, -584, - -584, 0, 788, -584, 0, 0, 0, 0, 0, 0, - 0, -584, 0, 0, 0, -584, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -584, 0, 0, -584, -584, - 0, -103, -584, 0, -584, -584, -584, -584, -584, -584, - -584, -584, -584, -584, 0, 0, -297, 0, -584, -584, - -584, 0, -584, 0, 0, -584, -584, -584, -584, -297, - -297, -297, 0, -297, -297, 0, -297, 0, 0, 0, + 0, 0, -301, -301, 0, -301, -301, -301, -301, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -297, -297, 0, -297, -297, -297, -297, - -297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -297, -297, - -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, - 0, 0, 0, 0, -297, -297, -297, 0, 789, -297, - 0, 0, 0, 0, 0, 0, 0, -297, 0, 0, - 0, -297, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -297, 0, 0, -297, -297, 0, -105, -297, 0, - -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, - 0, 0, -297, 0, 0, -297, -297, 0, -97, 0, - 0, -297, -297, -297, -297, -297, -297, -297, 0, -297, - -297, 0, -297, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -297, - -297, 0, -297, -297, -297, -297, -297, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, 0, + 0, 0, 0, -301, -301, -301, 0, 797, -301, 0, + 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, + -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -301, 0, 0, -301, -301, 0, -109, -301, 0, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, 0, + 0, -301, 0, 0, -301, -301, 0, -101, 0, 0, + -301, -301, -301, -301, -301, -301, -301, 0, -301, -301, + 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -301, -301, + 0, -301, -301, -301, -301, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -297, -297, -297, -297, -297, -297, - -297, -297, -297, -297, -297, -297, 0, 0, 0, 0, - -297, -297, -297, 0, 789, -297, 0, 0, 0, 0, - 0, 0, 0, -297, 0, 0, 0, -297, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -297, 0, 0, - -297, -297, 0, -105, -297, 0, -297, -297, -297, -297, - -297, -297, -297, -297, -297, -297, 0, 0, 0, 0, - 0, -297, -297, 0, -297, 0, 0, -297, -297, -297, - -297, 293, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, -607, -607, -607, 0, 0, -607, 15, - 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, - 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, - 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, - 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, -607, 0, 0, -607, -607, + 0, 0, 0, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, 0, 0, 0, 0, -301, + -301, -301, 0, 797, -301, 0, 0, 0, 0, 0, + 0, 0, -301, 0, 0, 0, -301, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -301, 0, 0, -301, + -301, 0, -109, -301, 0, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, 0, 0, 0, 0, 0, + -301, -301, 0, -301, 0, 0, -301, -301, -301, -301, + 295, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, -611, -611, -611, 0, 0, -611, 15, 0, + 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, + 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, + 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, + 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, + 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, + 62, 63, 0, 64, -611, 0, 0, -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 65, 66, 67, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -607, 293, -607, 5, + 0, 0, 0, 65, 66, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -611, 295, -611, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, + -611, 0, -611, -611, 15, 0, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, + 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, + 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, + 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, + -611, 0, 0, -611, -611, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -611, 295, -611, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 0, 0, -611, 0, 0, -611, + 15, -611, 16, 17, 18, 19, 0, 0, 0, 0, + 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, + 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, + 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, + 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, + 0, 61, 62, 63, 0, 64, -611, 0, 0, -611, + -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 66, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -611, 295, -611, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 0, 0, -611, 0, 0, -611, 15, 0, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, + 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, + 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, + 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, + 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, + 0, 64, -611, 0, 0, -611, -611, 4, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, - 0, -607, 0, -607, -607, 15, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, + 0, 65, 66, 67, 0, 15, 0, 16, 17, 18, + 19, 0, 0, -611, 0, -611, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, + 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, -607, 0, 0, -607, -607, 0, 0, 0, 0, + 64, -611, 0, 0, -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -607, 293, -607, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 0, 0, -607, 0, 0, - -607, 15, -607, 16, 17, 18, 19, 0, 0, 0, + 65, 66, 67, 0, 0, -611, 0, 0, 0, 0, + 0, 0, -611, 295, -611, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 0, -611, -611, 0, 0, + 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, @@ -2932,75 +3023,22 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, -607, 0, 0, - -607, -607, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 66, 67, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -607, 293, - -607, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 0, 0, -607, 0, 0, -607, 15, 0, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, - 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, - 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, - 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, - 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, - 63, 0, 64, -607, 0, 0, -607, -607, 4, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 0, 0, 65, 66, 67, 0, 15, 0, 16, 17, - 18, 19, 0, 0, -607, 0, -607, 20, 21, 22, - 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, - 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, - 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, - 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, -607, 0, 0, -607, -607, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65, 66, 67, 0, 0, -607, 0, 0, 0, - 0, 0, 0, -607, 293, -607, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 0, -607, -607, 0, - 0, 0, 15, 0, 16, 17, 18, 19, 0, 0, - 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, - 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, - 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, - 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, - 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, -607, 0, - 0, -607, -607, 293, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, - 0, 15, 0, 16, 17, 18, 19, 0, 0, -607, - 0, -607, 20, 21, 22, 23, 24, 25, 26, 0, - 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, - 0, 0, 0, 51, 0, 0, 294, 53, 0, 54, - 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, -607, 0, 0, - -607, -607, 293, 0, 5, 6, 7, 8, 9, 10, + 60, 0, 61, 62, 63, 0, 64, -611, 0, 0, + -611, -611, 295, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, - 15, 0, 16, 17, 18, 19, 0, -607, -607, 0, - -607, 20, 21, 22, 23, 24, 25, 26, 0, 0, + 15, 0, 16, 17, 18, 19, 0, 0, -611, 0, + -611, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, + 0, 0, 51, 0, 0, 296, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, -607, 0, 0, -607, - -607, 293, 0, 5, 6, 7, 8, 9, 10, 11, + 0, 61, 62, 63, 0, 64, -611, 0, 0, -611, + -611, 295, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, - 0, 16, 17, 18, 19, 0, -607, -607, 0, -607, + 0, 16, 17, 18, 19, 0, -611, -611, 0, -611, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, @@ -3009,1175 +3047,1298 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, -607, 0, 0, -607, -607, + 61, 62, 63, 0, 64, -611, 0, 0, -611, -611, + 295, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 0, 0, 65, 66, 67, 0, 15, 0, + 16, 17, 18, 19, 0, -611, -611, 0, -611, 20, + 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, + 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, + 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, + 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, + 62, 63, 0, 64, -611, 0, 0, -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 65, 66, 67, 0, 0, -607, - 0, 0, 0, 0, 0, 0, -607, 293, -607, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, - 0, -607, 0, 0, 0, 15, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, - 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, - 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, -607, 0, 0, -607, -607, 0, 0, 5, 6, + 0, 0, 0, 65, 66, 67, 0, 0, -611, 0, + 0, 0, 0, 0, 0, -611, 295, -611, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, - 65, 66, 67, 0, 15, 0, 16, 17, 18, 19, - 0, 0, -607, 0, -607, 20, 21, 22, 23, 24, + -611, 0, 0, 0, 15, 0, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - 245, 0, 0, 246, 247, 0, 0, 5, 6, 7, + -611, 0, 0, -611, -611, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, 0, 16, 17, 18, 19, 0, - 0, 248, 0, 249, 20, 21, 22, 23, 24, 25, + 0, -611, 0, -611, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, - 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, - 58, 59, 60, 0, 61, 62, 63, 0, 64, 245, - 0, 0, 246, 247, 0, 0, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 65, 66, + 58, 59, 60, 0, 61, 62, 63, 0, 64, 247, + 0, 0, 248, 249, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, 0, 16, 17, 18, 19, 0, 0, - 248, 0, 249, 20, 21, 22, 23, 24, 25, 26, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 250, 0, 251, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, - 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, - 54, 55, 0, 0, 0, 0, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, 245, 0, - 0, 246, 247, 0, 0, 5, 6, 7, 8, 9, + 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, + 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, + 59, 60, 0, 61, 62, 63, 0, 64, 247, 0, + 0, 248, 249, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 65, 66, 67, - 0, 15, 0, 108, 109, 18, 19, 0, 0, 248, - 0, 249, 110, 111, 112, 23, 24, 25, 26, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 16, 17, 18, 19, 0, 0, 250, + 0, 251, 20, 21, 22, 23, 24, 25, 26, 0, + 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, 0, 0, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, 245, 0, 0, - 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 262, 67, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, - 249, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 0, 0, 0, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 0, 0, - 0, 0, 0, 165, 166, 167, 168, 169, 170, 171, - 172, 36, 37, 173, 39, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, - 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, - 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 61, 62, 63, 0, 64, 247, 0, 0, + 248, 249, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 65, 66, 67, 0, + 15, 0, 108, 109, 18, 19, 0, 0, 250, 0, + 251, 110, 111, 112, 23, 24, 25, 26, 0, 0, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, + 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, + 0, 0, 0, 0, 0, 57, 0, 58, 59, 60, + 0, 61, 62, 63, 0, 64, 247, 0, 0, 248, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 264, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 250, 0, 251, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 0, 0, 0, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 0, 0, 0, + 0, 0, 165, 166, 167, 168, 169, 170, 171, 172, + 36, 37, 173, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, + 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 201, 202, 0, 0, 0, 0, 0, - 0, 203, 204, -577, -577, -577, -577, -577, -577, -577, - -577, -577, 0, 0, 0, 0, 0, 0, 0, -577, - 0, -577, -577, -577, -577, 0, -577, 0, 0, 0, - -577, -577, -577, -577, -577, -577, -577, 0, 0, -577, - 0, 0, 0, 0, 0, 0, 0, 0, -577, -577, - -577, -577, -577, -577, -577, -577, -577, 0, -577, -577, - -577, 0, 0, -577, 0, 0, -577, -577, 0, -577, - -577, -577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -577, -577, 0, 0, 0, 0, - 0, -577, 0, 0, -577, -577, 0, -577, -577, 0, - -577, 0, -577, -577, -577, 0, -577, -577, -577, 0, - -577, -577, -577, 0, -577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -577, -577, -577, 0, -577, 0, - 0, 0, 0, 0, -577, -578, -578, -578, -578, -578, - -578, -578, -578, -578, 0, 0, 0, 0, 0, 0, - 0, -578, 0, -578, -578, -578, -578, 0, -578, 0, - 0, 0, -578, -578, -578, -578, -578, -578, -578, 0, - 0, -578, 0, 0, 0, 0, 0, 0, 0, 0, - -578, -578, -578, -578, -578, -578, -578, -578, -578, 0, - -578, -578, -578, 0, 0, -578, 0, 0, -578, -578, - 0, -578, -578, -578, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -578, -578, 0, 0, - 0, 0, 0, -578, 0, 0, -578, -578, 0, -578, - -578, 0, -578, 0, -578, -578, -578, 0, -578, -578, - -578, 0, -578, -578, -578, 0, -578, 0, 0, 0, - 0, 0, 0, -580, -580, -580, -580, -580, -580, -580, - -580, -580, 0, 0, 0, 0, -578, -578, -578, -580, - -578, -580, -580, -580, -580, 0, -578, 0, 0, 0, - -580, -580, -580, -580, -580, -580, -580, 0, 0, -580, - 0, 0, 0, 0, 0, 0, 0, 0, -580, -580, - -580, -580, -580, -580, -580, -580, -580, 0, -580, -580, - -580, 0, 0, -580, 0, 0, -580, -580, 0, -580, - -580, -580, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -580, -580, 0, 0, 0, 0, - 0, -580, 820, 0, -580, -580, 0, -580, -580, 0, - -580, 0, -580, -580, -580, 0, -580, -580, -580, 0, - -580, -580, -580, 0, -580, 0, 0, 0, 0, 0, - 0, -103, -581, -581, -581, -581, -581, -581, -581, -581, - -581, 0, 0, 0, -580, -580, -580, 0, -581, 0, - -581, -581, -581, -581, -580, 0, 0, 0, 0, -581, + 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 0, 201, 202, 0, 0, 0, 0, 0, 0, + 203, 204, -581, -581, -581, -581, -581, -581, -581, -581, + -581, 0, 0, 0, 0, 0, 0, 0, -581, 0, + -581, -581, -581, -581, 0, -581, 0, 0, 0, -581, -581, -581, -581, -581, -581, -581, 0, 0, -581, 0, 0, 0, 0, 0, 0, 0, 0, -581, -581, -581, -581, -581, -581, -581, -581, -581, 0, -581, -581, -581, 0, 0, -581, 0, 0, -581, -581, 0, -581, -581, -581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -581, -581, 0, 0, 0, 0, 0, - -581, 821, 0, -581, -581, 0, -581, -581, 0, -581, + -581, 0, 0, -581, -581, 0, -581, -581, 0, -581, 0, -581, -581, -581, 0, -581, -581, -581, 0, -581, -581, -581, 0, -581, 0, 0, 0, 0, 0, 0, - -105, -582, -582, -582, -582, -582, -582, -582, -582, -582, - 0, 0, 0, -581, -581, -581, 0, -582, 0, -582, - -582, -582, -582, -581, 0, 0, 0, 0, -582, -582, - -582, -582, -582, -582, -582, 0, 0, -582, 0, 0, - 0, 0, 0, 0, 0, 0, -582, -582, -582, -582, - -582, -582, -582, -582, -582, 0, -582, -582, -582, 0, - 0, -582, 0, 0, -582, -582, 0, -582, -582, -582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -582, -582, 0, 0, 0, 0, 0, -582, - 0, 0, -582, -582, 0, -582, -582, 0, -582, 0, - -582, -582, -582, 0, -582, -582, -582, 0, -582, -582, - -582, 0, -582, 0, 0, 0, 0, 0, 0, -583, - -583, -583, -583, -583, -583, -583, -583, -583, 0, 0, - 0, 0, -582, -582, -582, -583, 0, -583, -583, -583, - -583, 0, -582, 0, 0, 0, -583, -583, -583, -583, - -583, -583, -583, 0, 0, -583, 0, 0, 0, 0, - 0, 0, 0, 0, -583, -583, -583, -583, -583, -583, - -583, -583, -583, 0, -583, -583, -583, 0, 0, -583, - 0, 0, -583, -583, 0, -583, -583, -583, 0, 0, + 0, 0, 0, -581, -581, -581, 0, -581, 0, 0, + 0, 0, 0, -581, -582, -582, -582, -582, -582, -582, + -582, -582, -582, 0, 0, 0, 0, 0, 0, 0, + -582, 0, -582, -582, -582, -582, 0, -582, 0, 0, + 0, -582, -582, -582, -582, -582, -582, -582, 0, 0, + -582, 0, 0, 0, 0, 0, 0, 0, 0, -582, + -582, -582, -582, -582, -582, -582, -582, -582, 0, -582, + -582, -582, 0, 0, -582, 0, 0, -582, -582, 0, + -582, -582, -582, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -582, -582, 0, 0, 0, + 0, 0, -582, 0, 0, -582, -582, 0, -582, -582, + 0, -582, 0, -582, -582, -582, 0, -582, -582, -582, + 0, -582, -582, -582, 0, -582, 0, 0, 0, 0, + 0, 0, -584, -584, -584, -584, -584, -584, -584, -584, + -584, 0, 0, 0, 0, -582, -582, -582, -584, -582, + -584, -584, -584, -584, 0, -582, 0, 0, 0, -584, + -584, -584, -584, -584, -584, -584, 0, 0, -584, 0, + 0, 0, 0, 0, 0, 0, 0, -584, -584, -584, + -584, -584, -584, -584, -584, -584, 0, -584, -584, -584, + 0, 0, -584, 0, 0, -584, -584, 0, -584, -584, + -584, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -584, -584, 0, 0, 0, 0, 0, + -584, 828, 0, -584, -584, 0, -584, -584, 0, -584, + 0, -584, -584, -584, 0, -584, -584, -584, 0, -584, + -584, -584, 0, -584, 0, 0, 0, 0, 0, 0, + -107, -585, -585, -585, -585, -585, -585, -585, -585, -585, + 0, 0, 0, -584, -584, -584, 0, -585, 0, -585, + -585, -585, -585, -584, 0, 0, 0, 0, -585, -585, + -585, -585, -585, -585, -585, 0, 0, -585, 0, 0, + 0, 0, 0, 0, 0, 0, -585, -585, -585, -585, + -585, -585, -585, -585, -585, 0, -585, -585, -585, 0, + 0, -585, 0, 0, -585, -585, 0, -585, -585, -585, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -585, -585, 0, 0, 0, 0, 0, -585, + 829, 0, -585, -585, 0, -585, -585, 0, -585, 0, + -585, -585, -585, 0, -585, -585, -585, 0, -585, -585, + -585, 0, -585, 0, 0, 0, 0, 0, 0, -109, + -586, -586, -586, -586, -586, -586, -586, -586, -586, 0, + 0, 0, -585, -585, -585, 0, -586, 0, -586, -586, + -586, -586, -585, 0, 0, 0, 0, -586, -586, -586, + -586, -586, -586, -586, 0, 0, -586, 0, 0, 0, + 0, 0, 0, 0, 0, -586, -586, -586, -586, -586, + -586, -586, -586, -586, 0, -586, -586, -586, 0, 0, + -586, 0, 0, -586, -586, 0, -586, -586, -586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -586, -586, 0, 0, 0, 0, 0, -586, 0, + 0, -586, -586, 0, -586, -586, 0, -586, 0, -586, + -586, -586, 0, -586, -586, -586, 0, -586, -586, -586, + 0, -586, 0, 0, 0, 0, 0, 0, -587, -587, + -587, -587, -587, -587, -587, -587, -587, 0, 0, 0, + 0, -586, -586, -586, -587, 0, -587, -587, -587, -587, + 0, -586, 0, 0, 0, -587, -587, -587, -587, -587, + -587, -587, 0, 0, -587, 0, 0, 0, 0, 0, + 0, 0, 0, -587, -587, -587, -587, -587, -587, -587, + -587, -587, 0, -587, -587, -587, 0, 0, -587, 0, + 0, -587, -587, 0, -587, -587, -587, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -587, + -587, 0, 0, 0, 0, 0, -587, 0, 0, -587, + -587, 0, -587, -587, 0, -587, 0, -587, -587, -587, + 0, -587, -587, -587, 0, -587, -587, -587, 0, -587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -583, -583, 0, 0, 0, 0, 0, -583, 0, 0, - -583, -583, 0, -583, -583, 0, -583, 0, -583, -583, - -583, 0, -583, -583, -583, 0, -583, -583, -583, 0, - -583, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -587, + -587, -587, 0, 0, 0, 0, 0, 0, 0, -587, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 0, 0, 0, 155, 156, 157, + 233, 234, 235, 236, 162, 163, 164, 0, 0, 0, + 0, 0, 165, 166, 167, 237, 238, 239, 240, 172, + 320, 321, 241, 322, 0, 0, 0, 0, 0, 0, + 323, 0, 0, 0, 0, 0, 0, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, + 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, + 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -583, -583, -583, 0, 0, 0, 0, 0, 0, 0, - -583, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 0, 201, 202, 0, 0, 0, 0, 0, 0, + 203, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 0, 0, 0, 155, 156, - 157, 231, 232, 233, 234, 162, 163, 164, 0, 0, - 0, 0, 0, 165, 166, 167, 235, 236, 237, 238, - 172, 318, 319, 239, 320, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 0, 0, 0, 0, 174, 175, + 157, 233, 234, 235, 236, 162, 163, 164, 0, 0, + 0, 0, 0, 165, 166, 167, 237, 238, 239, 240, + 172, 320, 321, 241, 322, 0, 0, 0, 0, 0, + 0, 323, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, - 190, 0, 0, 0, 0, 322, 0, 0, 0, 0, + 190, 0, 0, 0, 0, 485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, 0, 0, 0, 0, 0, 0, 203, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 0, 0, 0, 155, - 156, 157, 231, 232, 233, 234, 162, 163, 164, 0, - 0, 0, 0, 0, 165, 166, 167, 235, 236, 237, - 238, 172, 318, 319, 239, 320, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 0, 0, 0, 0, 174, + 156, 157, 233, 234, 235, 236, 162, 163, 164, 0, + 0, 0, 0, 0, 165, 166, 167, 237, 238, 239, + 240, 172, 0, 0, 241, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 189, 190, 0, 0, 0, 0, 481, 0, 0, 0, + 189, 190, 0, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, 0, 0, 0, 0, 0, 0, 203, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 0, 0, 0, - 155, 156, 157, 231, 232, 233, 234, 162, 163, 164, - 0, 0, 0, 0, 0, 165, 166, 167, 235, 236, - 237, 238, 172, 0, 0, 239, 0, 0, 0, 0, + 155, 156, 157, 233, 234, 235, 236, 162, 163, 164, + 0, 0, 0, 0, 0, 165, 166, 167, 237, 238, + 239, 240, 172, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 189, 190, 0, 0, 0, 240, 0, 0, 0, + 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, 0, 0, 0, - 0, 0, 0, 203, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 0, 0, - 0, 155, 156, 157, 231, 232, 233, 234, 162, 163, - 164, 0, 0, 0, 0, 0, 165, 166, 167, 235, - 236, 237, 238, 172, 0, 0, 239, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, - 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 0, 201, 202, 0, 0, - 0, 0, 0, 0, 203, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 108, 109, 18, 19, 0, 0, 0, - 0, 0, 110, 111, 112, 23, 24, 25, 26, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 311, 0, 0, 119, 53, 0, 54, - 55, 0, 0, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 0, 0, 0, 15, 120, 108, 109, 18, - 19, 0, 0, 0, 312, 0, 110, 111, 112, 23, - 24, 25, 26, 0, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 311, 0, 0, - 119, 53, 0, 54, 55, 0, 0, 0, 0, 0, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 0, 0, 0, 0, 0, 0, 15, - 120, 16, 17, 18, 19, 0, 0, 0, 602, 0, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, - 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, - 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, - 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 0, 0, 0, 65, 66, 67, 15, 0, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, - 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, - 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, - 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, - 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, - 63, 0, 64, 0, 0, 0, 0, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 65, 66, 67, 15, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, - 24, 25, 26, 0, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 258, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 50, 0, 0, 0, 0, 0, 211, 0, 0, - 119, 53, 0, 54, 55, 0, 259, 0, 260, 261, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 65, 262, 67, 15, 0, 16, 17, 18, 19, 0, - 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, - 26, 0, 0, 113, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 258, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 503, - 0, 0, 0, 0, 0, 211, 0, 0, 119, 53, - 0, 54, 55, 0, 259, 0, 260, 261, 57, 0, - 58, 59, 60, 0, 61, 62, 63, 0, 64, 0, - 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 65, 262, - 67, 15, 0, 108, 109, 18, 19, 0, 0, 0, - 0, 0, 110, 111, 112, 23, 24, 25, 26, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 258, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, - 0, 0, 0, 211, 0, 0, 119, 53, 0, 54, - 55, 0, 712, 0, 260, 261, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, 0, 0, 0, - 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 65, 262, 67, 15, - 0, 108, 109, 18, 19, 0, 0, 0, 0, 0, - 110, 111, 112, 23, 24, 25, 26, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 258, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 838, 0, 0, 0, 0, - 0, 211, 0, 0, 119, 53, 0, 54, 55, 0, - 712, 0, 260, 261, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 65, 262, 67, 15, 0, 108, - 109, 18, 19, 0, 0, 0, 0, 0, 110, 111, - 112, 23, 24, 25, 26, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 258, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 50, 0, 0, 0, 0, 0, 211, - 0, 0, 119, 53, 0, 54, 55, 0, 259, 0, - 260, 0, 57, 0, 58, 59, 60, 0, 61, 62, - 63, 0, 64, 0, 0, 0, 0, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 65, 262, 67, 15, 0, 108, 109, 18, - 19, 0, 0, 0, 0, 0, 110, 111, 112, 23, - 24, 25, 26, 0, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 258, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 50, 0, 0, 0, 0, 0, 211, 0, 0, - 119, 53, 0, 54, 55, 0, 0, 0, 260, 261, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 65, 262, 67, 15, 0, 108, 109, 18, 19, 0, - 0, 0, 0, 0, 110, 111, 112, 23, 24, 25, - 26, 0, 0, 113, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 258, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, - 0, 0, 0, 0, 0, 211, 0, 0, 119, 53, - 0, 54, 55, 0, 712, 0, 260, 0, 57, 0, - 58, 59, 60, 0, 61, 62, 63, 0, 64, 0, - 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 65, 262, - 67, 15, 0, 108, 109, 18, 19, 0, 0, 0, - 0, 0, 110, 111, 112, 23, 24, 25, 26, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 258, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, - 0, 0, 0, 211, 0, 0, 119, 53, 0, 54, - 55, 0, 0, 0, 260, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, 0, 0, 0, - 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 65, 262, 67, 15, - 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, - 0, 211, 0, 0, 119, 53, 0, 54, 55, 0, - 596, 0, 0, 0, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 65, 262, 67, 15, 0, 108, - 109, 18, 19, 0, 0, 0, 0, 0, 110, 111, - 112, 23, 24, 25, 26, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, + 0, 0, 0, 203, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, + 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 50, 0, 0, 0, 0, 0, 211, - 0, 0, 119, 53, 0, 54, 55, 0, 259, 0, - 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, - 63, 0, 64, 0, 0, 0, 0, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 65, 262, 67, 15, 0, 108, 109, 18, - 19, 0, 0, 0, 0, 0, 110, 111, 112, 23, - 24, 25, 26, 0, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, + 0, 0, 313, 0, 0, 119, 53, 0, 54, 55, + 0, 0, 0, 0, 0, 57, 0, 58, 59, 60, + 0, 61, 62, 63, 0, 64, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 0, 0, 0, 15, 120, 108, 109, 18, 19, + 0, 0, 0, 314, 0, 110, 111, 112, 23, 24, + 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 50, 0, 0, 0, 0, 0, 211, 0, 0, - 119, 53, 0, 54, 55, 0, 596, 0, 0, 0, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 65, 262, 67, 15, 0, 108, 109, 18, 19, 0, - 0, 0, 0, 0, 110, 111, 112, 23, 24, 25, - 26, 0, 0, 113, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, - 0, 0, 0, 0, 0, 211, 0, 0, 119, 53, - 0, 54, 55, 0, 881, 0, 0, 0, 57, 0, - 58, 59, 60, 0, 61, 62, 63, 0, 64, 0, - 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 65, 262, - 67, 15, 0, 108, 109, 18, 19, 0, 0, 0, - 0, 0, 110, 111, 112, 23, 24, 25, 26, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, - 0, 0, 0, 211, 0, 0, 119, 53, 0, 54, - 55, 0, 712, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, 0, 0, 0, - 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 65, 262, 67, 15, - 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, - 0, 211, 0, 0, 119, 53, 0, 54, 55, 0, - 0, 0, 0, 0, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 65, 66, 67, 15, 0, 108, - 109, 18, 19, 0, 0, 0, 0, 0, 110, 111, - 112, 23, 24, 25, 26, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, + 0, 0, 0, 0, 0, 0, 313, 0, 0, 119, + 53, 0, 54, 55, 0, 0, 0, 0, 0, 57, + 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 0, 0, 0, 0, 0, 0, 15, 120, + 16, 17, 18, 19, 0, 0, 0, 606, 0, 20, + 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, + 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, + 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, + 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, + 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 0, 0, 0, 65, 66, 67, 15, 0, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, + 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, + 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 50, 0, 0, 0, 0, 0, 211, - 0, 0, 119, 53, 0, 54, 55, 0, 0, 0, - 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, - 63, 0, 64, 0, 0, 0, 0, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 65, 262, 67, 15, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, - 24, 25, 26, 0, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, + 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, + 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, + 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, + 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 65, 66, 67, 15, 0, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 260, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, + 53, 0, 54, 55, 0, 261, 0, 262, 263, 57, + 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, + 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, + 264, 67, 15, 0, 16, 17, 18, 19, 0, 0, + 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 260, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 49, 507, 0, + 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, + 54, 55, 0, 261, 0, 262, 263, 57, 0, 58, + 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, + 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 65, 264, 67, + 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, + 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 260, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, + 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, + 0, 718, 0, 262, 263, 57, 0, 58, 59, 60, + 0, 61, 62, 63, 0, 64, 0, 0, 0, 0, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 65, 264, 67, 15, 0, + 108, 109, 18, 19, 0, 0, 0, 0, 0, 110, + 111, 112, 23, 24, 25, 26, 0, 0, 113, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 260, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 846, 0, 0, 0, 0, 0, + 211, 0, 0, 119, 53, 0, 54, 55, 0, 718, + 0, 262, 263, 57, 0, 58, 59, 60, 0, 61, + 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 65, 264, 67, 15, 0, 108, 109, + 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, + 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 260, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 50, 0, 0, 0, 0, 0, 211, 0, 0, - 119, 53, 0, 54, 55, 0, 0, 0, 0, 0, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 65, 262, 67, 15, 0, 108, 109, 18, 19, 0, - 0, 0, 0, 0, 110, 111, 112, 23, 24, 25, - 26, 0, 0, 113, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 114, 35, 36, 37, 115, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 116, 0, 0, 0, 0, 0, 0, + 0, 49, 50, 0, 0, 0, 0, 0, 211, 0, + 0, 119, 53, 0, 54, 55, 0, 261, 0, 262, + 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, + 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 65, 264, 67, 15, 0, 108, 109, 18, 19, + 0, 0, 0, 0, 0, 110, 111, 112, 23, 24, + 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 260, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, + 53, 0, 54, 55, 0, 0, 0, 262, 263, 57, + 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, + 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, + 264, 67, 15, 0, 108, 109, 18, 19, 0, 0, + 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, + 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 260, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, + 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, + 54, 55, 0, 718, 0, 262, 0, 57, 0, 58, + 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, + 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 65, 264, 67, + 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, + 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 260, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, + 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, + 0, 0, 0, 262, 0, 57, 0, 58, 59, 60, + 0, 61, 62, 63, 0, 64, 0, 0, 0, 0, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 65, 264, 67, 15, 0, + 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, + 21, 22, 23, 24, 25, 26, 0, 0, 113, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, + 211, 0, 0, 119, 53, 0, 54, 55, 0, 600, + 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, + 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 65, 264, 67, 15, 0, 108, 109, + 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, + 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 117, 0, 0, 118, 0, 0, 119, 53, - 0, 54, 55, 0, 0, 0, 0, 0, 57, 0, - 58, 59, 60, 0, 61, 62, 63, 0, 64, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 0, 0, 0, 15, 120, 108, - 109, 18, 19, 0, 0, 0, 0, 0, 110, 111, - 112, 23, 24, 25, 26, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 223, 0, 0, + 0, 49, 50, 0, 0, 0, 0, 0, 211, 0, + 0, 119, 53, 0, 54, 55, 0, 261, 0, 0, + 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, + 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 65, 264, 67, 15, 0, 108, 109, 18, 19, + 0, 0, 0, 0, 0, 110, 111, 112, 23, 24, + 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, + 53, 0, 54, 55, 0, 600, 0, 0, 0, 57, + 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, + 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, + 264, 67, 15, 0, 108, 109, 18, 19, 0, 0, + 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, + 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, + 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, + 54, 55, 0, 891, 0, 0, 0, 57, 0, 58, + 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, + 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 65, 264, 67, + 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, + 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, + 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, + 0, 718, 0, 0, 0, 57, 0, 58, 59, 60, + 0, 61, 62, 63, 0, 64, 0, 0, 0, 0, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 65, 264, 67, 15, 0, + 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, + 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, + 211, 0, 0, 119, 53, 0, 54, 55, 0, 0, + 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, + 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 65, 66, 67, 15, 0, 108, 109, + 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, + 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 0, 0, 52, 53, 0, 54, 55, 0, 56, 0, - 0, 0, 57, 0, 58, 59, 60, 0, 61, 62, - 63, 0, 64, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, - 0, 15, 120, 108, 109, 18, 19, 0, 0, 0, - 0, 0, 110, 111, 112, 23, 24, 25, 26, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 49, 50, 0, 0, 0, 0, 0, 211, 0, + 0, 119, 53, 0, 54, 55, 0, 0, 0, 0, + 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, + 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 65, 264, 67, 15, 0, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, + 53, 0, 54, 55, 0, 0, 0, 0, 0, 57, + 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, + 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, + 264, 67, 15, 0, 108, 109, 18, 19, 0, 0, + 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, + 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 114, 35, 36, 37, 115, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 311, 0, 0, 396, 53, 0, 54, - 55, 0, 397, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 0, 0, 0, 15, 120, 108, 109, 18, - 19, 0, 0, 0, 0, 0, 110, 111, 112, 23, - 24, 25, 26, 0, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 114, 35, 36, - 37, 115, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 116, 0, 0, 0, 0, + 0, 117, 0, 0, 118, 0, 0, 119, 53, 0, + 54, 55, 0, 0, 0, 0, 0, 57, 0, 58, + 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 0, 0, 0, 15, 120, 108, 109, + 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, + 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, - 119, 53, 0, 54, 55, 0, 0, 0, 0, 0, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 0, 0, 0, 15, - 120, 108, 109, 18, 19, 0, 0, 0, 0, 0, - 110, 111, 112, 23, 24, 25, 26, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 226, 0, + 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, + 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, + 0, 64, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, + 15, 120, 108, 109, 18, 19, 0, 0, 0, 0, + 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 0, 0, 398, 53, 0, 54, 55, + 0, 399, 0, 0, 0, 57, 0, 58, 59, 60, + 0, 61, 62, 63, 0, 64, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 0, 0, 0, 15, 120, 108, 109, 18, 19, + 0, 0, 0, 0, 0, 110, 111, 112, 23, 24, + 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 114, 35, 36, 37, + 115, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 311, 0, 0, 396, 53, 0, 54, 55, 0, - 0, 0, 0, 0, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 0, 0, 0, 15, 120, 108, 109, 18, 19, 0, - 0, 0, 0, 0, 110, 111, 112, 23, 24, 25, - 26, 0, 0, 113, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 53, 0, 54, 55, 0, 0, 0, 0, 0, 57, + 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 0, 0, 0, 15, 120, + 108, 109, 18, 19, 0, 0, 0, 0, 0, 110, + 111, 112, 23, 24, 25, 26, 0, 0, 113, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 946, 0, 0, 119, 53, - 0, 54, 55, 0, 0, 0, 0, 0, 57, 0, - 58, 59, 60, 0, 61, 62, 63, 0, 64, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 0, 0, 0, 15, 120, 108, - 109, 18, 19, 0, 0, 0, 0, 0, 110, 111, - 112, 23, 24, 25, 26, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 969, - 0, 0, 119, 53, 0, 54, 55, 0, 0, 656, - 651, 0, 57, 657, 58, 59, 60, 0, 61, 62, - 63, 0, 64, 0, 0, 0, 0, 0, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, - 0, 0, 120, 0, 184, 185, 186, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, - 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 0, 0, 398, 53, 0, 54, 55, 0, 0, + 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, + 62, 63, 0, 64, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, + 0, 0, 15, 120, 108, 109, 18, 19, 0, 0, + 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, + 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 201, 202, 686, 642, 0, 0, 687, - 0, 203, 273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, - 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, - 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, + 0, 0, 0, 0, 958, 0, 0, 119, 53, 0, + 54, 55, 0, 0, 0, 0, 0, 57, 0, 58, + 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 0, 0, 0, 15, 120, 108, 109, + 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, + 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 0, 201, - 202, 689, 651, 0, 0, 690, 0, 203, 273, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 981, 0, + 0, 119, 53, 0, 54, 55, 0, 0, 654, 655, + 0, 57, 656, 58, 59, 60, 0, 61, 62, 63, + 0, 64, 0, 0, 0, 0, 0, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, + 0, 120, 0, 184, 185, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, - 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 0, 201, 202, 675, 646, 0, 0, 676, 0, + 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, + 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, + 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 0, 201, 202, 696, 642, 0, - 0, 697, 0, 203, 273, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, - 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, - 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 188, 189, 190, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, + 660, 655, 0, 0, 661, 0, 203, 275, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, + 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 0, 201, 202, 692, 646, 0, 0, + 693, 0, 203, 275, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, + 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, + 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 0, 201, 202, 699, 651, 0, 0, 700, 0, 203, - 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, - 0, 0, 182, 183, 0, 0, 0, 0, 184, 185, - 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, + 201, 202, 695, 655, 0, 0, 696, 0, 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 0, 201, 202, 735, - 642, 0, 0, 736, 0, 203, 273, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, - 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, - 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, + 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 201, 202, 738, 651, 0, 0, 739, - 0, 203, 273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, - 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, - 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 0, 201, 202, 702, 646, + 0, 0, 703, 0, 203, 275, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, + 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 0, 201, - 202, 886, 642, 0, 0, 887, 0, 203, 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, - 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, + 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 0, 201, 202, 705, 655, 0, 0, 706, 0, + 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, + 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, + 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, + 741, 646, 0, 0, 742, 0, 203, 275, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, + 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 0, 201, 202, 889, 651, 0, - 0, 890, 0, 203, 273, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, - 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, - 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 188, 189, 190, 0, + 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 0, 201, 202, 744, 655, 0, 0, + 745, 0, 203, 275, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, + 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, + 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, + 201, 202, 896, 646, 0, 0, 897, 0, 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 0, 201, 202, 1028, 642, 0, 0, 1029, 0, 203, - 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 174, 175, 176, 177, 178, 179, 180, 181, - 0, 0, 182, 183, 0, 0, 0, 0, 184, 185, - 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, + 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, + 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 0, 201, 202, 1040, - 642, 0, 0, 1041, 0, 203, 273, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, - 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, - 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 0, 201, 202, 899, 655, + 0, 0, 900, 0, 203, 275, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, + 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 201, 202, 1043, 651, 0, 0, 1044, - 0, 203, 273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, - 180, 181, 0, 0, 182, 183, 0, 0, 0, 0, - 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 0, 201, - 202, 656, 651, 0, 0, 657, 0, 203, 273, 0, + 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 0, 201, 202, 1040, 646, 0, 0, 1041, 0, + 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, + 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, + 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, - 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, + 1052, 646, 0, 0, 1053, 0, 203, 275, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, + 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 855, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 0, 201, 202, 0, 0, 0, - 0, 0, 0, 203, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 0, 0, 0, 0, - 412, 413, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 415, 0, 0, 0, 0, 866, 0, + 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 0, 201, 202, 1055, 655, 0, 0, + 1056, 0, 203, 275, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, + 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, + 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 416, 0, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 0, 0, - 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 415, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, + 201, 202, 660, 655, 0, 0, 661, 0, 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 416, 0, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 0, 0, 0, 0, 412, 413, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 415, 0, 0, + 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, + 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 0, 201, 202, 0, 0, + 0, 0, 0, 0, 203, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 0, 0, 0, + 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 417, 0, 0, 0, 0, 864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 0, 0, 249, 0, 412, 413, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, + 0, 0, 0, 0, 0, 418, 0, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, + 0, 0, 0, 414, 415, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, + 0, 876, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 418, 0, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 0, 0, 0, 0, 414, 415, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, + 0, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 0, 0, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 416, 0, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 0, 0, 0, 0, 0, 0, 0, 0, - -273, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 0, 0, 0, 0, 412, 413, 0, + 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 418, 0, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 0, 0, 251, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 416, 0, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 0, 0, 0, 0, 0, 0, 0, - 0, -274, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 0, 0, 0, 0, 412, 413, + 0, 0, 0, 418, 0, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 0, 0, 0, 0, 0, + 0, 0, 0, -277, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 0, 0, 0, 0, + 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 418, 0, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 0, 0, 0, 0, + 0, 0, 0, 0, -278, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 0, 0, 0, + 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 416, 0, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 0, 0, 0, 0, 0, 0, - 0, 0, -275, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 0, 0, 0, 0, 412, - 413, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 418, 0, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 0, 0, 0, + 0, 0, 0, 0, 0, -279, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, + 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 416, 0, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, -276, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 0, 0, 0, 0, - 412, 413, 0, 0, 0, 414, 0, 0, 0, 0, - 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 418, 0, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 0, 0, + 0, 0, 0, 0, 0, 0, -280, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, + 0, 0, 0, 414, 415, 0, 0, 0, 416, 0, + 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 416, 0, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 0, 0, - 0, 0, 412, 413, 0, 0, 0, 495, 0, 0, - 0, 0, 0, 0, 0, 415, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 418, 0, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 0, 0, 0, 0, 414, 415, 0, 0, 0, + 499, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 416, 0, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 0, 0, 0, 0, 412, 413, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, + 0, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 0, 0, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - -608, -608, 0, 0, 0, 0, 412, 413, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, + 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 418, 0, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -612, -612, 0, 0, 0, 0, 414, + 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426 + 0, 0, 0, 0, 0, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428 }; static const yytype_int16 yycheck[] = { - 2, 16, 17, 89, 220, 20, 27, 69, 475, 27, - 2, 56, 4, 5, 6, 484, 82, 9, 10, 21, - 66, 13, 7, 15, 16, 17, 429, 7, 20, 14, - 14, 118, 4, 52, 87, 88, 269, 772, 312, 54, - 55, 305, 28, 28, 28, 309, 16, 17, 22, 15, - 20, 454, 54, 55, 74, 75, 329, 375, 584, 399, - 52, 16, 17, 748, 56, 20, 469, 587, 540, 5, - 6, 317, 74, 58, 66, 478, 91, 13, 58, 584, - 502, 60, 61, 62, 63, 490, 21, 22, 16, 17, - 82, 25, 20, 10, 659, 660, 16, 26, 15, 54, - 55, 121, 122, 69, 772, 5, 6, 954, 26, 111, - 532, 294, 57, 13, 90, 370, 931, 79, 29, 682, - 56, 367, 2, 25, 4, 117, 90, 119, 691, 51, - 602, 105, 25, 27, 5, 6, 391, 0, 92, 542, - 25, 105, 13, 92, 92, 584, 82, 25, 587, 75, - 103, 25, 330, 25, 142, 333, 56, 335, 28, 337, - 148, 339, 427, 216, 126, 25, 431, 121, 92, 434, - 105, 147, 121, 121, 227, 128, 111, 112, 123, 101, - 102, 103, 82, 147, 1031, 56, 791, 138, 142, 384, - 455, 386, 797, 90, 129, 115, 122, 121, 118, 119, - 498, 456, 113, 468, 502, 470, 128, 1022, 142, 138, - 144, 82, 57, 396, 479, 144, 951, 490, 210, 954, - 138, 115, 142, 55, 118, 119, 146, 753, 148, 221, - 222, 439, 440, 121, 296, 288, 90, 802, 9, 10, - 142, 144, 304, 305, 15, 148, 312, 309, 753, 142, - 147, 936, 146, 518, 148, 240, 90, 142, 273, 144, - 240, 314, 277, 142, 142, 267, 540, 269, 142, 90, - 142, 273, 90, 121, 507, 294, 121, 550, 543, 92, - 948, 273, 142, 951, 250, 277, 954, 90, 956, 281, - 282, 121, 92, 147, 286, 92, 1031, 317, 544, 125, - 722, 293, 294, 273, 221, 222, 711, 277, 780, 301, - 92, 92, 142, 147, 753, 90, 37, 38, 90, 52, - 312, 121, 277, 90, 121, 144, 147, 853, 602, 147, - 296, 58, 59, 772, 51, 861, 1004, 857, 55, 121, - 121, 681, 142, 322, 147, 142, 117, 367, 394, 277, - 92, 144, 397, 399, 346, 347, 348, 349, 350, 351, - 352, 353, 829, 1031, 927, 1033, 453, 1035, 399, 1037, - 548, 373, 147, 375, 346, 147, 312, 396, 370, 121, - 147, 60, 785, 18, 63, 20, 119, 92, 92, 1057, - 92, 16, 17, 439, 440, 20, 55, 92, 121, 391, - 142, 92, 394, 55, 396, 397, 25, 399, 439, 440, - 58, 59, 312, 293, 429, 670, 121, 121, 857, 121, - 142, 301, 20, 721, 722, 951, 121, 429, 107, 54, - 347, 348, 349, 350, 142, 708, 57, 429, 711, 454, - 758, 312, 17, 18, 868, 869, 431, 439, 440, 434, - 221, 222, 454, 115, 469, 138, 118, 119, 927, 429, - 462, 397, 454, 478, 456, 457, 346, 469, 732, 101, - 455, 351, 538, 465, 540, 496, 478, 469, 496, 74, - 75, 473, 715, 498, 454, 470, 478, 502, 145, 115, - 706, 483, 118, 119, 479, 793, 431, 397, 1024, 469, - 141, 121, 367, 139, 506, 507, 780, 929, 478, 1035, - 281, 282, 951, 515, 529, 954, 55, 532, 773, 784, - 455, 786, 148, 515, 544, 142, 397, 542, 514, 514, - 514, 101, 524, 518, 61, 470, 602, 64, 65, 505, - 542, 92, 101, 498, 479, 800, 538, 267, 540, 269, - 542, 142, 121, 286, 872, 873, 92, 549, 543, 612, - 61, 294, 835, 64, 65, 121, 101, 762, 763, 764, - 121, 766, 542, 768, 529, 51, 347, 348, 349, 350, - 788, 352, 353, 518, 304, 121, 794, 795, 142, 116, - 117, 846, 1031, 595, 129, 130, 131, 132, 133, 92, - 655, 92, 538, 658, 540, 90, 839, 51, 543, 630, - 602, 2, 630, 4, 1017, 116, 117, 142, 9, 10, - 105, 676, 142, 142, 15, 16, 17, 51, 121, 20, - 121, 929, 121, 115, 142, 515, 118, 119, 538, 51, - 540, 99, 15, 13, 524, 16, 63, 649, 273, 142, - 577, 142, 277, 655, 909, 140, 658, 659, 660, 144, - 15, 52, 147, 396, 298, 145, 602, 538, 302, 540, - 732, 145, 646, 139, 676, 66, 15, 669, 670, 681, - 682, 655, 684, 142, 658, 1003, 457, 142, 15, 691, - 898, 142, 44, 121, 679, 141, 16, 913, 141, 679, - 15, 18, 602, 919, 141, 570, 721, 722, 141, 701, - 139, 646, 798, 715, 780, 26, 702, 702, 702, 740, - 655, 15, 587, 658, 139, 590, 117, 141, 119, 148, - 139, 602, 465, 57, 142, 142, 782, 142, 142, 674, - 473, 676, 788, 789, 939, 940, 941, 942, 794, 795, - 483, 782, 669, 1018, 142, 15, 758, 788, 93, 14, - 145, 90, 16, 794, 795, 15, 721, 90, 15, 394, - 785, 146, 15, 142, 399, 101, 105, 142, 793, 90, - 142, 773, 105, 785, 701, 142, 506, 507, 780, 781, - 782, 142, 141, 785, 105, 115, 788, 789, 118, 119, - 802, 786, 794, 795, 15, 131, 132, 133, 800, 801, - 812, 140, 15, 815, 213, 785, 549, 140, 147, 210, - 16, 220, 814, 139, 147, 817, 146, 138, 148, 140, - 221, 222, 1027, 144, 826, 827, 147, 839, 793, 577, - 15, 15, 834, 581, 780, 772, 142, 868, 869, 139, - 126, 786, 898, 126, 846, 847, 55, 139, 257, 15, - 55, 115, 487, 142, 118, 119, 15, 898, 142, 503, - 872, 873, 62, 142, 64, 65, 510, 142, 870, 599, - 780, 142, 273, 875, 142, 144, 277, 521, 144, 141, - 281, 282, 146, 142, 148, 286, 90, 515, 669, 13, - 817, 781, 293, 294, 6, 1020, 898, 772, 772, 780, - 301, 105, 1022, 799, 929, 1019, 908, 909, 971, 115, - 912, 252, 118, 119, 916, 927, 116, 117, 7, 649, - 701, 577, 948, 90, 870, 268, -1, 571, 572, 875, - 951, -1, 62, 26, 64, 65, 140, 346, 105, -1, - 146, -1, 148, 147, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 984, -1, -1, 984, 601, 877, 878, - 870, -1, -1, 90, -1, 875, 912, -1, 377, 370, - -1, -1, 974, 140, 976, -1, 706, 979, 105, -1, - 147, -1, 857, -1, 859, 715, 116, 117, 863, 870, - 391, 1003, 1017, 394, 875, 396, 115, 90, 399, 118, - 119, -1, 912, -1, -1, 1017, -1, 1019, 1020, -1, - -1, 948, 105, 140, 951, 1017, -1, 954, -1, 956, - 147, -1, -1, 1018, 772, -1, 145, 146, 429, 148, - -1, 912, 951, -1, 678, -1, 817, 1017, 439, 440, - -1, -1, -1, 37, 38, 138, 681, 140, -1, 26, - -1, 144, -1, 454, 147, 456, 457, -1, 801, 934, - 935, -1, -1, -1, 465, 474, 475, 1004, 469, -1, - -1, 814, 473, 1018, 26, -1, -1, 478, -1, 954, - -1, 956, 483, 826, 827, -1, -1, 731, 1007, 1008, - 1009, 834, 1011, 1012, 1031, -1, 1033, -1, 1035, -1, - 1037, -1, -1, -1, 847, 749, -1, -1, 26, 839, - -1, 26, -1, 90, 515, 524, 991, -1, -1, 994, - 1057, 115, 531, 524, 118, 119, 115, -1, 105, 118, - 119, -1, 1051, 1052, 1053, 1054, 439, 440, 90, 9, - 10, 542, 1061, -1, -1, 15, 16, 17, 549, -1, - 20, 1026, 146, 105, 148, -1, 1031, 146, 1033, 148, - -1, 138, 1037, 140, -1, 908, -1, 144, 471, 472, - 147, -1, 90, 916, -1, 90, -1, 47, 48, 49, - 50, -1, 1057, -1, 54, 55, 138, 105, 140, 90, - 105, -1, 144, -1, 838, 147, 66, 67, 90, -1, - 948, -1, -1, 951, 105, -1, 954, -1, 956, -1, - 854, -1, -1, 105, -1, -1, 519, -1, -1, -1, - 138, -1, 140, 138, -1, 140, 144, -1, -1, 147, - -1, 974, 147, 976, -1, -1, 979, -1, 90, 140, - -1, 51, 52, -1, -1, 55, 147, 117, 140, 63, - 64, 65, -1, 105, -1, 147, 1004, -1, -1, 668, - 70, 71, 72, 73, 74, 75, 76, 77, 669, 670, - 80, 81, -1, -1, -1, -1, 86, 87, 88, 89, - -1, -1, -1, 1031, -1, 1033, -1, 1035, 140, 1037, - 100, 101, 102, 90, -1, 147, 90, 706, 90, -1, - 701, -1, 116, 117, -1, -1, -1, -1, 105, 1057, - -1, 105, -1, 105, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, 135, 136, 51, -1, 53, - 54, 55, 56, 143, 144, -1, 51, -1, 53, 54, - 55, 56, -1, 140, -1, 69, 140, 90, 140, -1, - 147, 221, 222, 147, 69, 147, 2, -1, 4, 5, - 6, 51, 105, 53, 54, 55, 56, 13, -1, -1, - -1, -1, 773, 40, 41, 42, 43, 44, -1, 69, - 781, 782, -1, -1, 785, -1, -1, 788, 789, 259, - 260, 261, 262, 794, 795, 804, -1, 140, -1, 800, - 801, -1, 90, 273, 147, -1, 52, 277, -1, -1, - 56, 281, 282, 814, -1, 90, 817, 105, 142, 51, - 829, 53, 54, 55, 56, 826, 827, 142, -1, -1, - 105, -1, -1, 834, -1, -1, 82, 69, -1, -1, - 63, 64, 65, -1, -1, 846, 847, -1, -1, 63, - 64, 65, 140, 85, -1, -1, -1, 115, -1, 147, - 118, 119, 94, -1, -1, 140, -1, -1, 100, 101, - 102, 103, 147, 119, 63, 64, 65, 347, 348, 349, - 350, -1, 352, 353, 142, 788, 789, -1, 146, -1, - 148, 794, 795, 116, 117, -1, 128, 898, -1, 131, - -1, 371, 116, 117, 913, -1, -1, 908, 909, -1, - 919, -1, 382, -1, -1, 916, -1, 820, 821, -1, - 823, 824, -1, -1, 394, -1, -1, 116, 117, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, -1, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, -1, -1, 429, - 63, 64, 65, -1, 210, -1, 63, 64, 65, 439, - 440, -1, -1, 974, -1, 976, -1, -1, 979, -1, - -1, 63, 64, 65, 454, -1, 51, 457, 53, 54, - 55, 56, 63, 64, 65, 898, -1, 467, -1, 469, - -1, 471, 472, -1, 69, -1, -1, -1, 478, 88, - 89, -1, -1, 116, 117, -1, 1017, 487, 921, 116, - 117, 491, 101, -1, -1, 495, -1, -1, 498, 94, - 500, -1, 502, 503, 116, 117, 101, 102, 103, -1, - 286, -1, -1, -1, -1, 116, 117, 293, 294, 519, - 129, 130, 131, 132, 133, 301, -1, -1, -1, 529, - -1, -1, 532, 128, -1, -1, 312, -1, -1, -1, - -1, -1, 542, -1, -1, -1, -1, -1, 51, -1, - 53, 54, 55, 56, -1, -1, -1, -1, 558, 559, - 2, -1, 4, 5, 6, 7, 69, -1, -1, -1, - 346, 13, -1, -1, 574, 351, -1, -1, -1, -1, - -1, -1, -1, 51, -1, 53, 54, 55, 56, -1, - -1, 94, -1, 593, 370, -1, 596, 100, 101, 102, - 103, 69, -1, -1, -1, -1, -1, -1, -1, -1, - 52, -1, -1, -1, 56, 391, -1, -1, 121, -1, - 396, 397, -1, 399, -1, 128, 94, -1, 131, -1, - -1, -1, 100, 51, -1, 53, 54, 55, 56, -1, - 82, 144, -1, 51, -1, 53, 54, 55, 56, -1, - -1, 69, -1, 51, -1, 53, 54, 55, 56, -1, - -1, 69, -1, 439, 440, -1, -1, -1, -1, 669, - -1, 69, -1, -1, -1, -1, 94, 119, -1, -1, - 456, 681, 100, 101, 102, 103, 94, -1, -1, 465, - -1, -1, 100, 101, 102, 103, 94, 473, -1, -1, - -1, 701, 100, 101, 102, 103, -1, 483, -1, -1, - 128, -1, 712, 131, 51, -1, 53, 54, 55, 56, - 128, 721, 722, 131, -1, -1, 144, -1, -1, -1, - 128, -1, 69, 131, -1, -1, 144, -1, -1, 515, - -1, -1, -1, -1, 142, -1, -1, 51, 524, 53, - 54, 55, 56, -1, -1, -1, 2, 94, 4, -1, - -1, -1, 538, 100, 540, 69, -1, 13, 210, -1, - -1, -1, -1, 549, -1, -1, -1, 777, -1, -1, - -1, -1, 782, 783, -1, 785, -1, -1, 788, 789, - 94, -1, -1, 793, 794, 795, -1, 51, -1, 53, - 54, 55, 56, -1, -1, -1, 52, -1, -1, -1, - -1, -1, -1, -1, -1, 69, -1, 817, -1, -1, - 820, 821, -1, 823, 824, -1, 602, -1, -1, -1, - -1, 85, -1, 833, -1, -1, -1, -1, 838, -1, - 94, -1, -1, -1, 286, -1, 100, 101, 102, 103, - -1, 293, 294, -1, -1, 855, -1, -1, -1, 301, - -1, -1, -1, -1, -1, -1, 866, -1, -1, -1, - 312, 88, 89, 119, 128, -1, -1, 131, -1, -1, - -1, 881, -1, -1, 101, -1, -1, -1, -1, -1, - -1, 891, 892, -1, 670, -1, -1, -1, 898, -1, - -1, -1, 44, -1, 346, -1, -1, -1, -1, 351, - -1, 128, 129, 130, 131, 132, 133, 2, -1, 4, - -1, 921, -1, -1, -1, -1, -1, -1, 370, 929, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, -1, -1, -1, -1, 88, 89, -1, 391, - -1, -1, -1, -1, 396, 397, -1, -1, -1, 101, - -1, -1, -1, -1, 210, -1, -1, 52, -1, -1, + 2, 27, 27, 16, 17, 87, 88, 20, 89, 222, + 2, 10, 4, 5, 6, 271, 15, 9, 10, 21, + 377, 13, 82, 15, 16, 17, 7, 14, 20, 314, + 488, 28, 2, 14, 4, 588, 66, 5, 6, 22, + 118, 28, 16, 17, 479, 13, 20, 28, 4, 591, + 7, 331, 54, 55, 431, 16, 17, 15, 307, 20, + 52, 754, 311, 401, 56, 780, 60, 61, 62, 63, + 588, 56, 74, 75, 66, 52, 296, 58, 69, 456, + 54, 55, 16, 17, 686, 16, 20, 502, 56, 75, + 82, 506, 25, 54, 544, 697, 473, 663, 664, 75, + 494, 58, 21, 22, 941, 482, 29, 506, 26, 111, + 26, 69, 25, 319, 82, 103, 25, 966, 57, 25, + 54, 55, 105, 25, 0, 117, 92, 119, 25, 25, + 16, 17, 25, 57, 20, 588, 218, 536, 591, 90, + 128, 594, 79, 799, 58, 59, 122, 229, 90, 805, + 90, 372, 37, 38, 52, 121, 606, 91, 269, 121, + 271, 55, 90, 369, 659, 105, 18, 662, 20, 546, + 9, 10, 393, 90, 332, 138, 15, 335, 398, 337, + 142, 339, 121, 341, 115, 680, 105, 118, 119, 126, + 113, 121, 111, 112, 1043, 306, 147, 1034, 51, 123, + 53, 54, 55, 56, 28, 147, 759, 147, 290, 142, + 129, 213, 214, 142, 494, 146, 69, 148, 210, 147, + 138, 119, 138, 90, 223, 224, 144, 213, 214, 142, + 147, 223, 224, 142, 316, 144, 142, 458, 214, 121, + 142, 759, 144, 92, 810, 142, 142, 92, 963, 142, + 92, 966, 90, 946, 314, 511, 429, 92, 142, 544, + 433, 242, 275, 436, 148, 16, 279, 269, 125, 271, + 441, 442, 121, 275, 554, 144, 121, 90, 117, 121, + 147, 144, 90, 275, 457, 242, 90, 279, 55, 142, + 121, 283, 284, 215, 252, 92, 288, 105, 90, 472, + 222, 474, 55, 295, 296, 279, 759, 298, 861, 147, + 483, 303, 727, 728, 275, 306, 307, 870, 279, 296, + 311, 606, 314, 717, 866, 295, 58, 59, 1043, 728, + 324, 90, 140, 303, 147, 937, 144, 259, 788, 147, + 298, 275, 548, 147, 144, 279, 314, 685, 148, 522, + 349, 350, 351, 352, 25, 147, 348, 349, 350, 351, + 352, 353, 354, 355, 115, 51, 396, 118, 119, 55, + 142, 401, 20, 375, 547, 377, 92, 455, 348, 142, + 372, 57, 401, 353, 223, 224, 801, 101, 147, 138, + 288, 142, 348, 279, 552, 146, 51, 148, 296, 510, + 511, 393, 837, 92, 396, 121, 398, 399, 765, 401, + 963, 441, 442, 866, 399, 868, 793, 870, 431, 872, + 145, 398, 441, 442, 121, 60, 348, 139, 63, 431, + 92, 399, 121, 141, 714, 396, 55, 717, 142, 431, + 401, 92, 101, 456, 283, 284, 101, 102, 103, 441, + 442, 101, 433, 674, 456, 436, 101, 379, 121, 121, + 473, 121, 464, 142, 456, 721, 458, 459, 51, 482, + 121, 473, 107, 128, 500, 500, 457, 469, 92, 937, + 482, 473, 542, 1036, 544, 477, 131, 132, 133, 738, + 482, 142, 603, 474, 1047, 487, 142, 431, 588, 712, + 398, 591, 483, 788, 17, 18, 92, 121, 510, 511, + 349, 350, 351, 352, 433, 354, 355, 519, 92, 878, + 879, 518, 456, 51, 939, 882, 883, 519, 502, 142, + 491, 518, 26, 546, 616, 121, 528, 518, 457, 473, + 939, 522, 653, 142, 546, 142, 606, 121, 482, 519, + 542, 509, 544, 1006, 546, 474, 478, 479, 528, 533, + 781, 553, 51, 843, 483, 578, 547, 90, 502, 16, + 121, 469, 506, 90, 542, 386, 544, 388, 92, 477, + 121, 122, 105, 142, 597, 51, 578, 808, 105, 487, + 99, 847, 15, 92, 13, 121, 90, 599, 16, 533, + 121, 712, 536, 522, 63, 597, 528, 121, 634, 634, + 721, 105, 546, 535, 606, 15, 145, 140, 145, 792, + 459, 794, 121, 140, 147, 796, 142, 2, 547, 4, + 147, 802, 803, 854, 9, 10, 92, 139, 606, 142, + 15, 16, 17, 142, 138, 20, 140, 15, 44, 369, + 144, 653, 1029, 147, 142, 553, 92, 659, 1015, 15, + 662, 663, 664, 121, 141, 121, 27, 650, 115, 759, + 141, 118, 119, 15, 673, 18, 659, 52, 680, 662, + 92, 673, 674, 685, 686, 121, 142, 141, 690, 90, + 780, 66, 581, 581, 139, 697, 585, 141, 919, 146, + 15, 148, 683, 141, 105, 92, 142, 139, 707, 121, + 923, 708, 139, 148, 142, 707, 929, 44, 90, 721, + 746, 708, 57, 44, 685, 806, 683, 708, 788, 142, + 142, 650, 142, 105, 121, 142, 847, 908, 142, 140, + 659, 15, 117, 662, 119, 93, 147, 738, 115, 90, + 672, 118, 119, 727, 115, 142, 14, 118, 119, 678, + 790, 680, 15, 765, 105, 15, 796, 797, 140, 145, + 15, 790, 802, 803, 15, 147, 866, 796, 145, 146, + 793, 148, 26, 802, 803, 146, 146, 148, 142, 781, + 712, 793, 142, 727, 728, 142, 788, 789, 790, 140, + 15, 793, 142, 142, 796, 797, 147, 141, 810, 139, + 802, 803, 15, 794, 15, 139, 808, 809, 820, 789, + 788, 823, 90, 142, 126, 300, 825, 801, 61, 304, + 822, 64, 65, 825, 673, 210, 115, 105, 126, 118, + 119, 55, 834, 835, 139, 847, 90, 15, 223, 224, + 842, 55, 878, 879, 574, 142, 142, 1030, 142, 793, + 142, 105, 854, 855, 142, 142, 115, 801, 707, 118, + 119, 591, 140, 963, 594, 794, 966, 144, 908, 147, + 882, 883, 16, 116, 117, 15, 141, 144, 880, 908, + 812, 780, 780, 885, 138, 142, 140, 146, 519, 148, + 275, 983, 13, 147, 279, 441, 442, 6, 283, 284, + 1032, 809, 880, 288, 780, 837, 908, 885, 1034, 1031, + 295, 296, 37, 38, 822, 254, 918, 919, 303, 115, + 922, 7, 118, 119, 926, 937, 834, 835, 581, 475, + 476, 90, 807, 780, 842, 51, 960, 53, 54, 55, + 56, 963, 90, 1043, 922, -1, 105, 855, 769, 770, + 771, 270, 773, 69, 775, -1, -1, 105, -1, -1, + 996, 996, -1, 348, 349, 350, 351, 352, 353, 354, + 355, 115, -1, -1, 118, 119, 825, 523, 887, 888, + -1, 140, -1, -1, 986, 90, 988, 372, 147, 991, + 115, 923, 140, 118, 119, 939, -1, 929, -1, 147, + 105, -1, 146, 1015, 148, -1, 1029, -1, 393, 90, + 918, 396, -1, 398, -1, -1, 401, 1029, 926, 1031, + 1032, 146, 507, 148, 105, -1, 142, 1029, -1, 514, + -1, -1, 90, -1, -1, 140, 90, 90, -1, 1030, + 525, 62, 147, 64, 65, -1, 431, 105, 90, -1, + 780, 105, 105, -1, 963, -1, 441, 442, -1, 140, + 26, 960, 960, 105, 963, 963, 147, 966, 966, 968, + 968, 456, 61, 458, 459, 64, 65, -1, 986, -1, + 988, -1, 140, 991, 469, 1029, 140, 140, 473, 147, + 575, 576, 477, 147, 147, 116, 117, 482, 140, -1, + -1, 1030, 487, -1, 62, 147, 64, 65, -1, -1, + 1019, 1020, 1021, 960, 1023, 1024, 963, 1016, 1016, 966, + 605, 968, -1, -1, 90, 26, -1, 116, 117, 950, + 951, 952, 953, -1, 519, -1, 866, -1, 868, 105, + -1, -1, 872, 528, 1043, 1043, 1045, 1045, 1047, 1047, + 1049, 1049, -1, -1, 1063, 1064, 1065, 1066, 116, 117, + -1, 546, 115, -1, 1073, 118, 119, -1, 553, 1016, + 1069, 1069, 138, -1, 140, -1, -1, -1, 144, -1, + -1, 147, -1, 26, 26, -1, -1, -1, -1, 90, + -1, -1, -1, 578, -1, 148, 1043, 682, 1045, -1, + 1047, -1, 1049, -1, 105, -1, 51, -1, 53, 54, + 55, 56, 597, -1, 944, 945, -1, -1, 1039, -1, + 9, 10, 1069, -1, 69, -1, 15, 16, 17, -1, + -1, 20, -1, -1, -1, -1, 966, 138, 968, 140, + 63, 64, 65, 144, -1, -1, 147, 90, 90, 94, + 796, 797, 737, -1, -1, 100, 802, 803, 47, 48, + 49, 50, 105, 105, -1, 54, 55, 63, 64, 65, + 755, -1, -1, 1003, -1, -1, 1006, 66, 67, -1, + -1, -1, 828, 829, -1, 831, 832, -1, 673, 674, + 63, 64, 65, 116, 117, 138, 138, 140, 140, -1, + -1, 144, 144, -1, 147, 147, -1, 51, 1038, 53, + 54, 55, 56, 1043, -1, 1045, -1, -1, -1, 1049, + 116, 117, 707, 101, -1, 69, -1, -1, 117, 51, + -1, 53, 54, 55, 56, 63, 64, 65, -1, 1069, + 63, 64, 65, 116, 117, -1, -1, 69, -1, -1, + 94, 129, 130, 131, 132, 133, 100, 101, 102, 103, + -1, 846, 908, -1, -1, 2, -1, 4, 5, 6, + -1, -1, 94, 63, 64, 65, 13, 862, 100, 101, + 102, 103, -1, -1, 128, 931, -1, 131, 116, 117, + 63, 64, 65, 116, 117, -1, 781, -1, -1, 121, + 144, 63, 64, 65, 789, 790, 128, -1, 793, 131, + -1, 796, 797, -1, -1, 52, -1, 802, 803, 56, + -1, -1, 144, 808, 809, -1, 116, 117, 51, -1, + 53, 54, 55, 56, 223, 224, -1, 822, -1, -1, + 825, -1, -1, 116, 117, 82, 69, -1, -1, 834, + 835, -1, -1, -1, 116, 117, 115, 842, -1, 118, + 119, -1, -1, 51, -1, 53, 54, 55, 56, 854, + 855, 94, 261, 262, 263, 264, -1, 100, 101, 102, + 103, 69, 119, 142, -1, -1, 275, 146, -1, 148, + 279, -1, -1, -1, 283, 284, -1, -1, -1, 51, + -1, 53, 54, 55, 56, 128, 94, -1, 131, -1, + -1, -1, 100, 101, 102, 103, -1, 69, -1, -1, + -1, 144, -1, 908, -1, -1, 51, -1, 53, 54, + 55, 56, -1, 918, 919, 40, 41, 42, 43, 44, + 128, 926, 94, 131, 69, 88, 89, -1, 100, 101, + 102, 103, -1, -1, 142, 88, 89, -1, 101, -1, + 349, 350, 351, 352, -1, 354, 355, -1, 101, 94, + -1, -1, -1, 210, -1, 100, 128, -1, -1, 131, + -1, -1, -1, -1, 373, 128, 129, 130, 131, 132, + 133, -1, -1, -1, -1, 384, 129, 130, 131, 132, + 133, 986, -1, 988, -1, -1, 991, 396, -1, -1, + -1, -1, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, -1, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + -1, -1, 431, -1, 1029, 51, -1, 53, 54, 55, + 56, 288, 441, 442, -1, -1, -1, -1, 295, 296, + -1, -1, -1, 69, -1, -1, 303, 456, -1, -1, + 459, 51, -1, 53, 54, 55, 56, 314, -1, 85, + -1, -1, 471, -1, 473, -1, 475, 476, 94, 69, + -1, -1, -1, 482, 100, 101, 102, 103, -1, -1, + -1, -1, 491, -1, -1, -1, 495, -1, -1, -1, + 499, 348, -1, 502, 94, 504, 353, 506, 507, -1, + -1, -1, 128, -1, 51, 131, 53, 54, 55, 56, + -1, -1, -1, -1, 523, 372, -1, 2, -1, 4, + 5, 6, 69, -1, 533, -1, -1, 536, 13, 51, + -1, 53, 54, 55, 56, -1, 393, 546, -1, -1, + -1, 398, 399, -1, 401, -1, -1, 69, -1, -1, + -1, -1, -1, 562, 563, -1, -1, -1, -1, -1, + -1, -1, -1, 85, -1, -1, -1, 52, -1, 578, + -1, 56, 94, -1, -1, -1, -1, -1, 100, 101, + 102, 103, -1, -1, 441, 442, -1, -1, 597, -1, + 51, 600, 53, 54, 55, 56, -1, 82, -1, -1, + -1, 458, -1, -1, -1, -1, 128, -1, 69, 131, + 88, 89, 469, -1, -1, -1, -1, -1, -1, -1, + 477, -1, -1, 101, -1, -1, -1, -1, -1, -1, + 487, -1, -1, 94, 119, -1, -1, -1, -1, -1, + 101, 102, 103, -1, -1, -1, -1, -1, 126, 127, + 128, 129, 130, 131, 132, 133, -1, -1, -1, -1, + -1, -1, 519, -1, 673, -1, -1, 128, -1, -1, + -1, 528, -1, -1, -1, -1, 685, -1, -1, 688, + 689, -1, -1, -1, -1, 542, -1, 544, -1, -1, + -1, -1, -1, -1, -1, -1, 553, -1, 707, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 718, + -1, -1, -1, -1, -1, -1, -1, -1, 727, 728, + -1, -1, -1, -1, -1, 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, -1, -1, -1, -1, 773, -1, -1, - 142, -1, -1, -1, 780, 781, 782, -1, -1, -1, - -1, -1, 788, -1, 456, -1, -1, 1017, 794, 795, - -1, -1, -1, 465, 800, 801, -1, -1, -1, -1, - -1, 473, -1, -1, 119, -1, -1, -1, 814, -1, - 286, 483, -1, -1, -1, -1, -1, 293, 294, -1, - 826, 827, -1, -1, -1, 301, -1, -1, 834, -1, - -1, 51, -1, 53, 54, 55, 56, -1, -1, -1, - 846, 847, -1, 515, -1, -1, 88, 89, -1, 69, - -1, -1, 524, -1, -1, -1, -1, -1, -1, 101, - -1, -1, -1, -1, 870, -1, 538, -1, 540, 875, - 346, -1, -1, -1, 94, 351, -1, 549, -1, -1, - 100, 101, 102, 103, 126, 127, 128, 129, 130, 131, - 132, 133, 898, -1, 370, 210, 72, 73, 74, 75, - 76, 77, 908, 909, 80, 81, 912, -1, 128, -1, - 916, 131, 88, 89, -1, 391, -1, -1, -1, -1, - 396, -1, -1, 399, -1, 101, -1, -1, -1, -1, - 602, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, -1, -1, - -1, -1, -1, 439, 440, -1, -1, -1, 974, -1, - 976, 286, -1, 979, -1, -1, -1, -1, 293, 294, - 456, -1, -1, -1, -1, -1, 301, -1, -1, 465, - -1, -1, -1, -1, -1, -1, -1, 473, 670, -1, - 0, -1, -1, -1, -1, -1, -1, 483, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 606, + -1, -1, -1, -1, -1, 2, -1, 4, 5, 6, + -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 785, -1, -1, -1, + -1, 790, 791, -1, 793, -1, -1, 796, 797, -1, + -1, -1, 801, 802, 803, -1, -1, -1, -1, -1, + -1, -1, -1, 288, -1, 52, -1, -1, -1, 56, + 295, 296, -1, -1, -1, -1, 825, 674, 303, 828, + 829, -1, 831, 832, -1, -1, -1, -1, -1, 314, + -1, -1, 841, -1, -1, 82, -1, 846, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 863, 864, -1, -1, -1, -1, + -1, -1, -1, 348, -1, -1, 875, 876, 353, -1, + -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 891, -1, -1, -1, -1, 372, -1, -1, + -1, -1, 901, 902, -1, -1, -1, -1, -1, 908, + -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, + -1, -1, -1, 398, 399, -1, 401, -1, -1, -1, + -1, -1, 931, -1, 781, -1, -1, -1, -1, -1, + 939, 788, 789, 790, -1, -1, -1, -1, -1, 796, + -1, -1, -1, -1, -1, 802, 803, -1, -1, -1, + -1, 808, 809, -1, -1, -1, 441, 442, -1, -1, + -1, -1, -1, 210, -1, 822, -1, -1, -1, -1, + -1, -1, -1, 458, -1, -1, -1, 834, 835, -1, + -1, -1, -1, -1, 469, 842, -1, -1, -1, -1, + -1, -1, 477, -1, -1, -1, -1, 854, 855, -1, + -1, -1, 487, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1029, -1, -1, 880, -1, -1, -1, -1, 885, -1, + -1, -1, -1, 2, 519, 4, -1, -1, -1, -1, + -1, 288, -1, 528, 13, -1, -1, -1, 295, 296, + -1, 908, -1, -1, -1, -1, 303, 542, -1, 544, + -1, 918, 919, -1, -1, 922, -1, 314, 553, 926, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 348, -1, -1, -1, -1, 353, -1, -1, -1, -1, -1, -1, 13, 14, 15, 16, 17, 18, -1, - 20, -1, -1, -1, -1, -1, 26, 27, -1, -1, - -1, 346, -1, -1, -1, -1, 351, 37, 38, 515, - 40, 41, 42, 43, 44, -1, -1, -1, 524, -1, - -1, -1, -1, -1, -1, 370, -1, -1, -1, -1, + 20, 606, -1, -1, -1, 372, 26, 27, -1, 986, + -1, 988, -1, -1, 991, -1, -1, 37, 38, -1, + 40, 41, 42, 43, 44, -1, 393, -1, -1, -1, + 119, 398, 399, -1, 401, -1, 2, -1, 4, 5, + 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 549, -1, -1, 391, -1, -1, -1, - -1, 396, -1, -1, 399, -1, -1, -1, -1, -1, - 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 773, -1, -1, -1, 105, -1, -1, 780, 781, - -1, -1, -1, -1, -1, 115, -1, -1, 118, 119, - -1, -1, -1, -1, 439, 440, -1, -1, 800, 801, - -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, - -1, 456, 814, -1, 144, 145, 146, 147, 148, -1, - 465, -1, -1, -1, 826, 827, -1, -1, 473, -1, - -1, -1, 834, -1, -1, -1, -1, -1, 483, -1, - -1, -1, -1, -1, 846, 847, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 674, + 90, -1, -1, -1, 441, 442, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 105, 52, -1, -1, -1, + 56, 458, -1, -1, -1, 115, -1, -1, 118, 119, + -1, -1, 469, -1, -1, -1, -1, -1, -1, -1, + 477, -1, -1, -1, -1, -1, 82, -1, 138, 139, + 487, 210, -1, -1, 144, 145, 146, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 51, 52, 670, -1, 55, -1, 870, -1, - 515, -1, -1, 875, -1, -1, -1, -1, -1, 524, - -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, - 89, -1, -1, -1, 549, -1, 908, 909, -1, -1, - 912, 100, 101, 102, 916, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 519, 119, -1, -1, -1, -1, -1, -1, + -1, 528, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 542, 781, 544, -1, -1, + -1, -1, -1, 788, 789, 790, 553, -1, -1, -1, + -1, 796, -1, -1, -1, -1, -1, 802, 803, 288, + -1, -1, -1, 808, 809, -1, 295, 296, -1, -1, + -1, -1, -1, -1, 303, -1, -1, 822, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 834, + 835, -1, -1, -1, -1, -1, -1, 842, -1, 606, + -1, -1, -1, -1, 210, -1, -1, -1, -1, 854, + 855, -1, -1, -1, -1, -1, -1, -1, -1, 348, + -1, -1, -1, -1, 353, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 880, -1, -1, -1, -1, + 885, -1, -1, 372, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2, -1, 4, 908, 393, -1, -1, 674, -1, 398, + -1, -1, 401, 918, 919, -1, -1, 922, -1, -1, + -1, 926, 288, -1, -1, -1, -1, -1, -1, 295, + 296, -1, -1, -1, -1, -1, -1, 303, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, + 52, -1, 441, 442, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 458, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 469, 986, 348, 988, -1, -1, 991, 353, 477, -1, + -1, 72, 73, 74, 75, 76, 77, 78, 487, 80, + 81, -1, -1, -1, -1, -1, 372, 88, 89, -1, + -1, -1, -1, -1, 781, -1, -1, 119, -1, -1, + 101, 788, 789, 790, -1, -1, -1, 393, -1, 796, + 519, -1, 398, 399, -1, 802, 803, -1, -1, 528, + -1, 808, 809, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, -1, -1, 822, -1, -1, -1, -1, + -1, -1, -1, -1, 553, -1, -1, 834, 835, -1, + -1, -1, -1, -1, -1, 842, -1, 72, 73, 74, + 75, 76, 77, -1, -1, 80, 81, 854, 855, -1, + -1, -1, 458, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, 469, -1, -1, 101, -1, 210, -1, + -1, 477, -1, 880, -1, -1, -1, -1, 885, -1, + -1, 487, -1, -1, -1, -1, -1, -1, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + -1, 908, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 918, 919, 519, -1, 922, -1, -1, -1, 926, + -1, -1, 528, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 542, -1, 544, -1, + -1, -1, -1, -1, -1, 674, 288, 553, -1, -1, + -1, -1, -1, 295, 296, -1, -1, 44, -1, -1, + -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 986, + -1, 988, -1, -1, 991, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + 606, 88, 89, -1, -1, -1, 348, -1, -1, -1, + -1, 353, -1, -1, 101, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 372, -1, -1, -1, -1, 122, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, -1, -1, -1, + -1, 393, 781, -1, -1, 142, 398, -1, -1, 401, + 789, 790, -1, -1, -1, -1, -1, 796, 674, -1, + -1, -1, -1, 802, 803, -1, -1, -1, -1, 808, + 809, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 822, -1, -1, -1, -1, -1, 441, + 442, -1, -1, -1, -1, 834, 835, -1, -1, -1, + -1, -1, -1, 842, -1, -1, 458, -1, -1, -1, + -1, -1, -1, -1, -1, 854, 855, 469, -1, -1, + -1, -1, -1, -1, -1, 477, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 487, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 781, -1, 519, -1, 908, + -1, -1, 788, 789, -1, -1, 528, -1, -1, 918, + 919, -1, -1, 922, -1, -1, -1, 926, -1, -1, + -1, -1, 808, 809, -1, -1, -1, -1, -1, -1, + -1, 553, -1, -1, -1, -1, 822, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 834, 835, + -1, -1, -1, -1, -1, -1, 842, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 854, 855, + -1, -1, -1, -1, -1, -1, -1, 986, -1, 988, + -1, -1, 991, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 880, -1, -1, -1, -1, 885, + -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 13, 14, + 15, -1, 17, 18, -1, 20, -1, -1, -1, -1, + -1, 26, 918, 919, -1, -1, 922, -1, -1, -1, + 926, -1, 37, 38, -1, 40, 41, 42, 43, 44, + -1, -1, 674, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, -1, -1, 88, 89, 90, -1, 92, 93, -1, + 986, -1, 988, -1, -1, 991, 101, -1, -1, -1, + 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 115, -1, -1, 118, 119, -1, 121, 122, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + -1, -1, -1, 138, 139, 140, -1, 142, -1, -1, + 145, 146, 147, 148, -1, -1, -1, -1, -1, 781, + -1, -1, -1, -1, -1, -1, -1, 789, 790, -1, + -1, -1, 51, 52, 796, -1, 55, -1, -1, -1, + 802, 803, -1, -1, -1, -1, 808, 809, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + 822, 80, 81, -1, -1, -1, -1, 86, 87, 88, + 89, -1, 834, 835, -1, -1, -1, -1, -1, -1, + 842, 100, 101, 102, -1, -1, -1, -1, -1, -1, + -1, -1, 854, 855, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, 135, 136, -1, -1, - -1, -1, -1, -1, 143, 144, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 773, -1, -1, - -1, -1, 974, -1, 976, 781, 782, 979, -1, -1, - 51, 52, 788, -1, 55, -1, -1, -1, 794, 795, - -1, -1, -1, -1, 800, 801, -1, -1, -1, 70, - 71, 72, 73, 74, 75, 76, 77, -1, 814, 80, - 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, - 826, 827, -1, -1, -1, 670, -1, -1, 834, 100, - 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, - 846, 847, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, 135, 136, 72, 73, 74, 75, - 76, 77, 143, 144, 80, 81, -1, -1, -1, -1, - -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, 898, -1, -1, 101, -1, -1, -1, -1, - -1, -1, 908, 909, -1, -1, 912, -1, -1, -1, - 916, -1, -1, -1, -1, -1, -1, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 773, -1, - -1, -1, -1, -1, -1, -1, 781, 782, -1, -1, - -1, -1, -1, 788, -1, -1, -1, -1, -1, 794, - 795, -1, -1, -1, -1, 800, 801, -1, 72, 73, - 74, 75, 76, 77, 78, -1, 80, 81, 974, 814, - 976, -1, -1, 979, 88, 89, -1, -1, -1, -1, - -1, 826, 827, -1, -1, -1, -1, 101, -1, 834, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, 846, 847, -1, -1, -1, -1, -1, -1, -1, + 129, 130, 131, 132, 133, -1, 135, 136, 72, 73, + 74, 75, 76, 77, 143, 144, 80, 81, -1, -1, + -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 908, 101, -1, -1, + -1, -1, -1, -1, -1, -1, 918, 919, -1, -1, + -1, -1, -1, -1, 926, -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, -1, -1, -1, -1, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, - -1, -1, -1, 898, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 908, 909, -1, -1, -1, -1, -1, - 122, 916, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 0, 1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, 974, - 39, 976, -1, -1, 979, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, 0, 114, 115, -1, -1, 118, - 119, -1, -1, -1, -1, -1, -1, 13, 14, 15, - 16, 17, 18, -1, 20, 134, 135, 136, -1, -1, - -1, 27, 28, 29, -1, -1, -1, 146, -1, 148, - -1, 37, 38, -1, 40, 41, 42, 43, 44, -1, + -1, -1, -1, -1, -1, -1, 0, 1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, + -1, -1, -1, -1, -1, 19, -1, 21, 22, 23, + 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, + 34, 35, 36, -1, 986, 39, 988, -1, -1, 991, + -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, + -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, - -1, -1, 88, 89, 90, -1, -1, 93, -1, -1, - -1, -1, -1, 99, -1, 101, -1, -1, -1, 105, - -1, -1, -1, -1, -1, -1, -1, 113, -1, 115, - -1, -1, 118, 119, -1, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, -1, -1, - 0, -1, -1, 139, 140, 141, 142, -1, -1, 145, - 146, 147, 148, 13, 14, 15, 16, 17, 18, -1, - 20, -1, -1, -1, -1, -1, 26, 27, 28, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, + 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, + 94, 95, -1, 97, 98, -1, 100, -1, -1, -1, + 104, -1, 106, 107, 108, -1, 110, 111, 112, 0, + 114, 115, -1, -1, 118, 119, -1, -1, -1, -1, + -1, -1, 13, 14, 15, 16, 17, 18, -1, 20, + 134, 135, 136, -1, -1, -1, 27, 28, 29, -1, + -1, -1, 146, -1, 148, -1, 37, 38, -1, 40, + 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, -1, -1, -1, -1, 88, 89, 90, + -1, -1, 93, -1, -1, -1, -1, -1, 99, -1, + 101, -1, -1, -1, 105, -1, -1, -1, -1, -1, + -1, -1, 113, -1, 115, -1, -1, 118, 119, -1, + -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, -1, -1, 0, -1, -1, 139, 140, + 141, 142, -1, -1, 145, 146, 147, 148, 13, 14, + 15, 16, 17, 18, -1, 20, -1, -1, -1, -1, + -1, 26, 27, 28, -1, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, -1, -1, -1, -1, 88, 89, - 90, -1, -1, 93, -1, -1, -1, -1, -1, 99, - -1, 101, -1, -1, -1, 105, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 115, -1, -1, 118, 119, - -1, -1, 122, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, -1, 0, -1, 138, 139, - 140, 141, 142, -1, 144, 145, 146, 147, 148, 13, - 14, 15, 16, 17, 18, -1, 20, -1, -1, -1, - -1, -1, -1, 27, 28, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - -1, -1, -1, -1, 88, 89, 90, -1, 92, 93, - -1, -1, -1, -1, -1, 99, -1, 101, -1, -1, - -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 115, -1, -1, 118, 119, -1, 121, 122, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - -1, -1, 0, -1, -1, 139, 140, 141, 142, -1, - -1, 145, 146, 147, 148, 13, 14, 15, 16, 17, - 18, -1, 20, -1, -1, -1, -1, -1, 26, 27, - 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, -1, -1, 88, 89, 90, -1, -1, 93, -1, + -1, -1, -1, -1, 99, -1, 101, -1, -1, -1, + 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 115, -1, -1, 118, 119, -1, -1, 122, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + -1, 0, -1, 138, 139, 140, 141, 142, -1, 144, + 145, 146, 147, 148, 13, 14, 15, 16, 17, 18, + -1, 20, -1, -1, -1, -1, -1, -1, 27, 28, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, - 88, 89, 90, -1, -1, 93, -1, -1, -1, -1, - -1, 99, -1, 101, -1, -1, -1, 105, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, - 118, 119, -1, -1, 122, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, -1, 0, -1, - 138, 139, 140, 141, 142, -1, 144, 145, 146, 147, - 148, 13, 14, 15, 16, 17, 18, -1, 20, -1, - -1, -1, -1, -1, -1, 27, 28, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, + 89, 90, -1, 92, 93, -1, -1, -1, -1, -1, + 99, -1, 101, -1, -1, -1, 105, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 115, -1, -1, 118, + 119, -1, 121, 122, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, -1, -1, 0, -1, -1, + 139, 140, 141, 142, -1, -1, 145, 146, 147, 148, + 13, 14, 15, 16, 17, 18, -1, 20, -1, -1, + -1, -1, -1, 26, 27, 28, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, -1, 88, 89, 90, -1, -1, + 93, -1, -1, -1, -1, -1, 99, -1, 101, -1, + -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 115, -1, -1, 118, 119, -1, -1, 122, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, -1, -1, 0, -1, 138, 139, 140, 141, 142, + -1, 144, 145, 146, 147, 148, 13, 14, 15, 16, + 17, 18, -1, 20, -1, -1, -1, -1, -1, -1, + 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, -1, -1, -1, -1, 88, 89, 90, -1, - -1, 93, -1, -1, -1, -1, -1, 99, -1, 101, - -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 115, -1, -1, 118, 119, -1, -1, - 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, -1, 0, -1, -1, 139, 140, 141, - 142, -1, 144, 145, 146, 147, 148, 13, 14, 15, - -1, 17, 18, -1, 20, -1, -1, -1, -1, -1, - 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + -1, 88, 89, 90, -1, -1, 93, -1, -1, -1, + -1, -1, 99, -1, 101, -1, -1, -1, 105, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 115, -1, + -1, 118, 119, -1, -1, 122, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, -1, -1, 0, + -1, -1, 139, 140, 141, 142, -1, 144, 145, 146, + 147, 148, 13, 14, 15, -1, 17, 18, -1, 20, + -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, - -1, -1, 88, 89, 90, -1, 92, 93, -1, -1, - -1, -1, -1, -1, -1, 101, -1, -1, -1, 105, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, - -1, -1, 118, 119, -1, 121, 122, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, -1, -1, - 0, -1, 138, 139, 140, -1, 142, -1, -1, 145, - 146, 147, 148, 13, 14, 15, -1, 17, 18, -1, - 20, -1, -1, -1, -1, -1, 26, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, -1, -1, -1, -1, 88, 89, 90, + -1, 92, 93, -1, -1, -1, -1, -1, -1, -1, + 101, -1, -1, -1, 105, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 115, -1, -1, 118, 119, -1, + 121, 122, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, -1, -1, 0, -1, 138, 139, 140, + -1, 142, -1, -1, 145, 146, 147, 148, 13, 14, + 15, -1, 17, 18, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, -1, -1, -1, -1, 88, 89, - 90, -1, 92, 93, -1, -1, -1, -1, -1, -1, - -1, 101, -1, -1, -1, 105, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 115, -1, -1, 118, 119, - -1, 121, 122, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, -1, 0, -1, 138, 139, - 140, -1, 142, -1, -1, 145, 146, 147, 148, 13, - 14, 15, -1, 17, 18, -1, 20, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - -1, -1, -1, -1, 88, 89, 90, -1, 92, 93, - -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, - -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 115, -1, -1, 118, 119, -1, 121, 122, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - -1, -1, 0, -1, -1, 139, 140, -1, 142, -1, - -1, 145, 146, 147, 148, 13, 14, 15, -1, 17, - 18, -1, 20, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, -1, -1, 88, 89, 90, -1, 92, 93, -1, + -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, + 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 115, -1, -1, 118, 119, -1, 121, 122, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + -1, 0, -1, -1, 139, 140, -1, 142, -1, -1, + 145, 146, 147, 148, 13, 14, 15, -1, 17, 18, + -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, - 88, 89, 90, -1, 92, 93, -1, -1, -1, -1, - -1, -1, -1, 101, -1, -1, -1, 105, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, - 118, 119, -1, 121, 122, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, -1, -1, -1, - -1, 139, 140, -1, 142, -1, -1, 145, 146, 147, - 148, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, 115, -1, -1, 118, 119, + -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, + 89, 90, -1, 92, 93, -1, -1, -1, -1, -1, + -1, -1, 101, -1, -1, -1, 105, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 115, -1, -1, 118, + 119, -1, 121, 122, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, -1, -1, -1, -1, -1, + 139, 140, -1, 142, -1, -1, 145, 146, 147, 148, + 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, -1, -1, 18, 19, -1, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, + -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, 115, -1, -1, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 134, 135, 136, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 146, 1, 148, 3, + -1, -1, -1, 134, 135, 136, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 146, 1, 148, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, 100, -1, -1, -1, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + 115, -1, -1, 118, 119, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, + 135, 136, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 146, 1, 148, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, 18, + 19, 20, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, + 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 134, 135, 136, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 146, 1, 148, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, 18, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, + -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, + -1, 114, 115, -1, -1, 118, 119, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, 17, 18, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, + -1, 134, 135, 136, -1, 19, -1, 21, 22, 23, + 24, -1, -1, 146, -1, 148, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, + -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -4186,10 +4347,10 @@ static const yytype_int16 yycheck[] = 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 134, 135, 136, -1, -1, -1, -1, -1, -1, -1, + 134, 135, 136, -1, -1, 139, -1, -1, -1, -1, -1, -1, 146, 1, 148, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, + 8, 9, 10, 11, 12, -1, 14, 15, -1, -1, + -1, 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, @@ -4199,62 +4360,9 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, - 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 134, 135, 136, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 146, 1, - 148, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, 18, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, - -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, 115, -1, -1, 118, 119, 1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, 134, 135, 136, -1, 19, -1, 21, 22, - 23, 24, -1, -1, 146, -1, 148, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, - -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, 115, -1, -1, 118, 119, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 134, 135, 136, -1, -1, 139, -1, -1, -1, - -1, -1, -1, 146, 1, 148, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, -1, 14, 15, -1, - -1, -1, 19, -1, 21, 22, 23, 24, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, - 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, - -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, - 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, - -1, 118, 119, 1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, 134, 135, 136, - -1, 19, -1, 21, 22, 23, 24, -1, -1, 146, - -1, 148, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, 119, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 134, 135, 136, -1, - 19, -1, 21, 22, 23, 24, -1, 145, 146, -1, + 19, -1, 21, 22, 23, 24, -1, -1, 146, -1, 148, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, @@ -4276,26 +4384,26 @@ static const yytype_int16 yycheck[] = -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, 119, + 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, -1, -1, 134, 135, 136, -1, 19, -1, + 21, 22, 23, 24, -1, 145, 146, -1, 148, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, + -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, 115, -1, -1, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 134, 135, 136, -1, -1, 139, - -1, -1, -1, -1, -1, -1, 146, 1, 148, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, 100, -1, -1, -1, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, 115, -1, -1, 118, 119, -1, -1, 3, 4, + -1, -1, -1, 134, 135, 136, -1, -1, 139, -1, + -1, -1, -1, -1, -1, 146, 1, 148, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - 134, 135, 136, -1, 19, -1, 21, 22, 23, 24, - -1, -1, 146, -1, 148, 30, 31, 32, 33, 34, + 15, -1, -1, -1, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, @@ -4307,7 +4415,7 @@ static const yytype_int16 yycheck[] = 135, 136, -1, 19, -1, 21, 22, 23, 24, -1, -1, 146, -1, 148, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, - -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, @@ -4315,16 +4423,16 @@ static const yytype_int16 yycheck[] = -1, 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, 119, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, -1, -1, 134, 135, + 7, 8, 9, 10, 11, 12, -1, -1, 134, 135, 136, -1, 19, -1, 21, 22, 23, 24, -1, -1, 146, -1, 148, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, -1, -1, -1, -1, 104, -1, 106, + 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, 119, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, 134, 135, 136, @@ -4338,64 +4446,64 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, -1, -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, - 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 134, 135, 136, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 146, -1, - 148, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - -1, -1, -1, -1, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 118, 119, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, 134, 135, 136, -1, + 19, -1, 21, 22, 23, 24, -1, -1, 146, -1, + 148, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, -1, -1, -1, -1, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, + 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 134, 135, 136, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 146, -1, 148, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, + -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, + -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, 135, 136, -1, -1, -1, -1, -1, - -1, 143, 144, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, - -1, 21, 22, 23, 24, -1, 26, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - 100, -1, 102, 103, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 134, 135, 136, -1, 138, -1, - -1, -1, -1, -1, 144, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, 19, -1, 21, 22, 23, 24, -1, 26, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, 100, -1, 102, 103, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, 134, 135, 136, 19, - 138, 21, 22, 23, 24, -1, 144, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, 92, -1, 94, 95, -1, 97, 98, -1, - 100, -1, 102, 103, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, -1, -1, -1, -1, -1, - -1, 121, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, -1, -1, 134, 135, 136, -1, 19, -1, - 21, 22, 23, 24, 144, -1, -1, -1, -1, 30, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, -1, 135, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, 19, -1, + 21, 22, 23, 24, -1, 26, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, + -1, 102, 103, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 134, 135, 136, -1, 138, -1, -1, + -1, -1, -1, 144, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, + 19, -1, 21, 22, 23, 24, -1, 26, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, 100, -1, 102, 103, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 134, 135, 136, 19, 138, + 21, 22, 23, 24, -1, 144, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, @@ -4414,24 +4522,50 @@ static const yytype_int16 yycheck[] = -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, + 92, -1, 94, 95, -1, 97, 98, -1, 100, -1, 102, 103, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 134, 135, 136, 19, -1, 21, 22, 23, - 24, -1, 144, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + 112, -1, 114, -1, -1, -1, -1, -1, -1, 121, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, 134, 135, 136, -1, 19, -1, 21, 22, + 23, 24, 144, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, 100, -1, 102, 103, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, 100, -1, 102, + 103, 104, -1, 106, 107, 108, -1, 110, 111, 112, + -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, + -1, 144, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, 100, -1, 102, 103, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, + 135, 136, -1, -1, -1, -1, -1, -1, -1, 144, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, + -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, -1, -1, -1, -1, -1, + 63, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, + -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, + -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 134, 135, 136, -1, -1, -1, -1, -1, -1, -1, - 144, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, -1, 135, 136, -1, -1, -1, -1, -1, -1, + 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, @@ -4450,12 +4584,12 @@ static const yytype_int16 yycheck[] = 21, 22, 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, -1, -1, -1, - -1, -1, 63, -1, -1, -1, -1, -1, -1, 70, + 51, 52, -1, -1, 55, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, - 101, 102, -1, -1, -1, -1, 107, -1, -1, -1, + 101, 102, -1, -1, -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, -1, -1, -1, -1, @@ -4469,523 +4603,532 @@ static const yytype_int16 yycheck[] = 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 100, 101, 102, -1, -1, -1, 106, -1, -1, -1, + 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, -1, -1, -1, -1, -1, -1, 143, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, - 49, 50, 51, 52, -1, -1, 55, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, 135, 136, -1, -1, - -1, -1, -1, -1, 143, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, -1, -1, -1, -1, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, -1, -1, -1, 19, 134, 21, 22, 23, 24, + -1, -1, -1, 142, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, -1, -1, -1, -1, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, -1, -1, -1, 19, 134, 21, 22, 23, - 24, -1, -1, -1, 142, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, -1, -1, -1, -1, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, 19, 134, + 21, 22, 23, 24, -1, -1, -1, 142, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, + -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, -1, -1, -1, -1, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, -1, -1, -1, -1, -1, -1, 19, - 134, 21, 22, 23, 24, -1, -1, -1, 142, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, -1, -1, -1, 134, 135, 136, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, + -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, + -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, + -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, 100, -1, 102, 103, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, + 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, + -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, + 97, 98, -1, 100, -1, 102, 103, 104, -1, 106, + 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, 134, 135, 136, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, 100, -1, 102, 103, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 134, 135, 136, 19, -1, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, + -1, 102, 103, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, - -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 134, 135, 136, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, 100, -1, 102, + -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, + -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, -1, -1, 102, 103, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, + 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, + -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, + 97, 98, -1, 100, -1, 102, -1, 104, -1, 106, + 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, 134, 135, 136, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, -1, -1, 102, -1, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 134, 135, 136, 19, -1, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, + -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, 100, -1, 102, 103, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - 134, 135, 136, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, - -1, -1, -1, -1, -1, 91, -1, -1, 94, 95, - -1, 97, 98, -1, 100, -1, 102, 103, 104, -1, - 106, 107, 108, -1, 110, 111, 112, -1, 114, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, 134, 135, - 136, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, 100, -1, 102, 103, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, 134, 135, 136, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - 100, -1, 102, 103, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, 134, 135, 136, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, + -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, + -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, + -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, 100, -1, -1, -1, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, + 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, + -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, + 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, + 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, 134, 135, 136, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 134, 135, 136, 19, -1, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, -1, + -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, - 102, -1, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 134, 135, 136, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, -1, -1, -1, + -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, + -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, -1, -1, -1, -1, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, + 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, -1, -1, 102, 103, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - 134, 135, 136, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, - -1, -1, -1, -1, -1, 91, -1, -1, 94, 95, - -1, 97, 98, -1, 100, -1, 102, -1, 104, -1, - 106, 107, 108, -1, 110, 111, 112, -1, 114, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, 134, 135, - 136, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, -1, -1, 102, -1, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, 134, 135, 136, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, 134, 135, 136, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, + -1, 88, -1, -1, 91, -1, -1, 94, 95, -1, + 97, 98, -1, -1, -1, -1, -1, 104, -1, 106, + 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 19, 134, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, - -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 134, 135, 136, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, + -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, + -1, 114, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, + 19, 134, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, 100, -1, -1, -1, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - 134, 135, 136, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, - -1, -1, -1, -1, -1, 91, -1, -1, 94, 95, - -1, 97, 98, -1, 100, -1, -1, -1, 104, -1, - 106, 107, 108, -1, 110, 111, 112, -1, 114, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, 134, 135, - 136, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, 134, 135, 136, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - -1, -1, -1, -1, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, 134, 135, 136, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, + -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, + -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, + -1, 110, 111, 112, -1, 114, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, -1, -1, -1, 19, 134, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, -1, -1, - -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 134, 135, 136, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, + 95, -1, 97, 98, -1, -1, -1, -1, -1, 104, + -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, 19, 134, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, -1, -1, -1, -1, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - 134, 135, 136, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 88, -1, -1, 91, -1, -1, 94, 95, - -1, 97, 98, -1, -1, -1, -1, -1, 104, -1, - 106, 107, 108, -1, 110, 111, 112, -1, 114, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, -1, -1, -1, 19, 134, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, -1, -1, + 91, -1, -1, 94, 95, -1, 97, 98, -1, -1, + -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, + 111, 112, -1, 114, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, 19, 134, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, 100, -1, - -1, -1, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, 19, 134, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, + 97, 98, -1, -1, -1, -1, -1, 104, -1, 106, + 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 19, 134, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, -1, -1, -1, 19, 134, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, + -1, 94, 95, -1, 97, 98, -1, -1, 51, 52, + -1, 104, 55, 106, 107, 108, -1, 110, 111, 112, + -1, 114, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, + -1, 134, -1, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, -1, -1, -1, -1, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, - 134, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, -1, 135, 136, 51, 52, -1, -1, 55, -1, + 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, + 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - -1, -1, -1, -1, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - -1, -1, -1, 19, 134, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, + 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, + 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, + 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 91, -1, -1, 94, 95, - -1, 97, 98, -1, -1, -1, -1, -1, 104, -1, - 106, 107, 108, -1, 110, 111, 112, -1, 114, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, -1, -1, -1, 19, 134, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, -1, -1, + -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, -1, 135, 136, 51, 52, -1, -1, + 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, + -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, - -1, -1, 94, 95, -1, 97, 98, -1, -1, 51, - 52, -1, 104, 55, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - -1, -1, 134, -1, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + 135, 136, 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, 135, 136, 51, 52, -1, -1, 55, - -1, 143, 144, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, -1, -1, 80, 81, -1, -1, -1, -1, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, + 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, -1, 135, - 136, 51, 52, -1, -1, 55, -1, 143, 144, -1, + -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, -1, 135, 136, 51, 52, + -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, + -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, - 80, 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, -1, 135, 136, 51, 52, -1, -1, 55, -1, + 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, + 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, 135, 136, 51, 52, -1, - -1, 55, -1, 143, 144, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 77, -1, -1, 80, 81, -1, -1, - -1, -1, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, + 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, + 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, + 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, -1, 135, 136, 51, 52, -1, -1, + 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, + -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - -1, 135, 136, 51, 52, -1, -1, 55, -1, 143, - 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, - -1, -1, 80, 81, -1, -1, -1, -1, 86, 87, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + 135, 136, 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, 135, 136, 51, - 52, -1, -1, 55, -1, 143, 144, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - -1, -1, -1, -1, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, + 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, 135, 136, 51, 52, -1, -1, 55, - -1, 143, 144, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, -1, -1, 80, 81, -1, -1, -1, -1, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, + -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, -1, 135, 136, 51, 52, + -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, + -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, -1, 135, - 136, 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, - 80, 81, -1, -1, -1, -1, 86, 87, 88, 89, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, -1, 135, 136, 51, 52, -1, -1, 55, -1, + 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, + 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, + 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, + 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, + 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, 135, 136, 51, 52, -1, - -1, 55, -1, 143, 144, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 77, -1, -1, 80, 81, -1, -1, - -1, -1, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, + -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, -1, 135, 136, 51, 52, -1, -1, + 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, + -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + 135, 136, 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - -1, 135, 136, 51, 52, -1, -1, 55, -1, 143, - 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, - -1, -1, 80, 81, -1, -1, -1, -1, 86, 87, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 100, 101, 102, -1, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, + -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, + 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, + -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, -1, 135, 136, -1, -1, + -1, -1, -1, -1, 143, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 101, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, 135, 136, 51, - 52, -1, -1, 55, -1, 143, 144, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - -1, -1, -1, -1, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 122, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 122, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, 135, 136, 51, 52, -1, -1, 55, - -1, 143, 144, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, -1, -1, 80, 81, -1, -1, -1, -1, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 100, 101, 102, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, -1, 135, - 136, 51, 52, -1, -1, 55, -1, 143, 144, -1, + 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, - 80, 81, -1, -1, -1, -1, 86, 87, 88, 89, + -1, 122, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, -1, -1, 148, -1, 88, + 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, 135, 136, -1, -1, -1, - -1, -1, -1, 143, 72, 73, 74, 75, 76, 77, + -1, -1, -1, 122, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, -1, -1, -1, -1, -1, + -1, -1, -1, 142, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 101, -1, -1, -1, -1, 44, -1, + -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 72, 73, 74, 75, + 128, 129, 130, 131, 132, 133, -1, -1, -1, -1, + -1, -1, -1, -1, 142, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 122, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, -1, -1, -1, + -1, -1, -1, -1, -1, 142, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, -1, -1, 148, -1, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, + 126, 127, 128, 129, 130, 131, 132, 133, -1, -1, + -1, -1, -1, -1, -1, -1, 142, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, -1, -1, 88, 89, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 122, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, + 93, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, -1, -1, -1, -1, -1, -1, -1, - 142, 72, 73, 74, 75, 76, 77, 78, 79, 80, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, -1, -1, -1, -1, -1, -1, - -1, 142, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, -1, -1, -1, -1, 88, 89, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 122, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, -1, -1, -1, -1, -1, - -1, -1, 142, 72, 73, 74, 75, 76, 77, 78, + 131, 132, 133, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 122, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, -1, -1, -1, -1, - -1, -1, -1, 142, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, - 88, 89, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 122, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, - -1, -1, 88, 89, -1, -1, -1, 93, -1, -1, - -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 122, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, -1, -1, -1, -1, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133 + -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -5013,92 +5156,93 @@ static const yytype_int16 yystos[] = 76, 77, 80, 81, 86, 87, 88, 89, 100, 101, 102, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 143, 144, 183, 187, 188, 274, 306, - 204, 91, 163, 167, 180, 189, 220, 272, 273, 275, - 167, 210, 212, 69, 91, 173, 180, 220, 225, 272, - 275, 33, 34, 35, 36, 48, 49, 50, 51, 55, - 106, 183, 184, 185, 268, 115, 118, 119, 146, 148, - 167, 262, 263, 264, 318, 322, 323, 324, 51, 100, - 102, 103, 135, 172, 189, 195, 198, 201, 254, 309, - 311, 195, 195, 144, 192, 193, 196, 197, 325, 192, - 196, 144, 319, 323, 184, 155, 138, 189, 220, 189, - 189, 189, 55, 1, 94, 157, 158, 159, 174, 175, - 325, 205, 207, 190, 201, 309, 325, 189, 308, 309, - 325, 91, 142, 179, 220, 272, 275, 208, 53, 54, - 56, 63, 107, 183, 269, 63, 64, 65, 116, 117, - 255, 256, 61, 255, 62, 255, 63, 255, 63, 255, - 58, 59, 168, 189, 189, 318, 324, 40, 41, 42, - 43, 44, 37, 38, 51, 53, 54, 55, 56, 69, - 94, 100, 101, 102, 103, 128, 131, 144, 278, 279, - 280, 281, 282, 285, 286, 287, 288, 290, 291, 292, - 293, 295, 296, 297, 300, 301, 302, 303, 304, 325, - 279, 280, 28, 239, 121, 142, 94, 100, 176, 121, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 88, 89, 93, 101, 122, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 90, 105, 140, - 147, 316, 90, 316, 317, 26, 138, 243, 254, 92, - 92, 192, 196, 243, 163, 51, 55, 181, 58, 59, - 279, 125, 276, 90, 140, 316, 219, 307, 90, 147, - 315, 156, 157, 55, 16, 221, 322, 121, 90, 140, - 316, 92, 92, 221, 167, 167, 55, 90, 140, 316, - 25, 107, 142, 265, 318, 115, 264, 20, 246, 322, - 57, 310, 189, 189, 189, 93, 142, 199, 200, 325, - 310, 199, 200, 85, 194, 195, 201, 309, 325, 195, - 163, 318, 320, 163, 160, 138, 157, 90, 316, 92, - 159, 174, 145, 318, 324, 320, 159, 320, 141, 200, - 321, 324, 200, 321, 139, 321, 55, 176, 177, 178, - 142, 90, 140, 316, 144, 237, 290, 63, 255, 257, - 261, 262, 63, 256, 61, 62, 63, 63, 101, 101, - 154, 167, 167, 167, 167, 159, 163, 163, 57, 121, - 294, 85, 290, 295, 121, 156, 189, 142, 305, 325, - 51, 142, 305, 322, 142, 289, 189, 142, 289, 51, - 142, 289, 51, 121, 156, 240, 100, 168, 189, 201, - 202, 174, 142, 179, 142, 161, 162, 168, 180, 189, - 191, 202, 220, 275, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 51, 189, + 204, 91, 163, 164, 165, 167, 180, 189, 220, 272, + 273, 275, 167, 210, 212, 69, 91, 173, 180, 220, + 225, 272, 275, 33, 34, 35, 36, 48, 49, 50, + 51, 55, 106, 183, 184, 185, 268, 115, 118, 119, + 146, 148, 167, 262, 263, 264, 318, 322, 323, 324, + 51, 100, 102, 103, 135, 172, 189, 195, 198, 201, + 254, 309, 311, 195, 195, 144, 192, 193, 196, 197, + 325, 192, 196, 144, 319, 323, 184, 155, 138, 189, + 220, 189, 189, 189, 55, 1, 94, 157, 158, 159, + 174, 175, 325, 205, 207, 190, 201, 309, 325, 189, + 308, 309, 325, 91, 142, 179, 220, 272, 275, 208, + 53, 54, 56, 63, 107, 183, 269, 63, 64, 65, + 116, 117, 255, 256, 61, 255, 62, 255, 63, 255, + 63, 255, 58, 59, 168, 189, 189, 318, 324, 40, + 41, 42, 43, 44, 37, 38, 51, 53, 54, 55, + 56, 69, 94, 100, 101, 102, 103, 128, 131, 144, + 278, 279, 280, 281, 282, 285, 286, 287, 288, 290, + 291, 292, 293, 295, 296, 297, 300, 301, 302, 303, + 304, 325, 278, 280, 28, 239, 121, 142, 94, 100, + 176, 121, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 88, 89, 93, 101, 122, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 90, + 105, 140, 147, 316, 90, 316, 317, 26, 138, 243, + 254, 92, 92, 192, 196, 243, 163, 51, 55, 181, + 58, 59, 279, 125, 276, 90, 140, 316, 219, 307, + 90, 147, 315, 156, 157, 55, 278, 278, 16, 221, + 322, 121, 90, 140, 316, 92, 92, 221, 167, 167, + 55, 90, 140, 316, 25, 107, 142, 265, 318, 115, + 264, 20, 246, 322, 57, 310, 189, 189, 189, 93, + 142, 199, 200, 325, 310, 199, 200, 85, 194, 195, + 201, 309, 325, 195, 163, 318, 320, 163, 160, 138, + 157, 90, 316, 92, 159, 174, 145, 318, 324, 320, + 159, 320, 141, 200, 321, 324, 200, 321, 139, 321, + 55, 176, 177, 178, 142, 90, 140, 316, 144, 237, + 290, 63, 255, 257, 261, 262, 63, 256, 61, 62, + 63, 63, 101, 101, 154, 167, 167, 167, 167, 159, + 163, 163, 57, 121, 294, 85, 290, 295, 121, 156, + 189, 142, 305, 325, 51, 142, 305, 322, 142, 289, + 189, 142, 289, 51, 142, 289, 51, 121, 156, 240, + 100, 168, 189, 201, 202, 174, 142, 179, 142, 161, + 162, 168, 180, 189, 191, 202, 220, 275, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 51, 52, 55, 187, 192, 313, 314, 194, 201, - 51, 52, 55, 187, 192, 313, 51, 55, 313, 245, - 244, 162, 189, 191, 162, 191, 99, 170, 217, 277, - 216, 51, 55, 181, 313, 194, 313, 156, 163, 166, - 15, 13, 248, 325, 157, 16, 51, 55, 194, 51, - 55, 157, 27, 222, 322, 222, 51, 55, 194, 51, - 55, 214, 186, 157, 246, 189, 201, 15, 261, 189, - 189, 319, 100, 189, 198, 309, 189, 311, 320, 145, - 318, 200, 200, 320, 145, 184, 152, 139, 191, 320, - 159, 206, 309, 176, 178, 51, 55, 194, 51, 55, - 290, 209, 63, 157, 262, 189, 189, 51, 100, 226, - 295, 320, 320, 142, 189, 15, 51, 282, 287, 304, - 288, 293, 300, 302, 295, 297, 302, 51, 295, 189, - 15, 79, 126, 231, 232, 325, 189, 200, 320, 178, - 142, 44, 121, 44, 90, 140, 316, 319, 92, 92, - 192, 196, 141, 200, 92, 92, 193, 196, 193, 196, - 231, 231, 171, 322, 167, 156, 141, 15, 320, 183, - 189, 202, 249, 325, 18, 224, 325, 17, 223, 224, - 92, 92, 141, 92, 92, 224, 211, 213, 141, 167, - 184, 139, 15, 200, 221, 261, 189, 199, 85, 309, - 139, 320, 321, 141, 234, 319, 29, 113, 238, 139, - 142, 292, 320, 142, 85, 44, 305, 142, 289, 142, - 289, 142, 289, 142, 289, 289, 44, 228, 230, 233, + 189, 189, 51, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 51, 52, 55, 187, 192, + 313, 314, 194, 201, 51, 52, 55, 187, 192, 313, + 51, 55, 313, 245, 244, 162, 189, 191, 162, 191, + 99, 170, 217, 277, 216, 51, 55, 181, 313, 194, + 313, 156, 163, 166, 15, 13, 248, 325, 121, 121, + 157, 16, 51, 55, 194, 51, 55, 157, 27, 222, + 322, 222, 51, 55, 194, 51, 55, 214, 186, 157, + 246, 189, 201, 15, 261, 189, 189, 319, 100, 189, + 198, 309, 189, 311, 320, 145, 318, 200, 200, 320, + 145, 184, 152, 139, 191, 320, 159, 206, 309, 176, + 178, 51, 55, 194, 51, 55, 290, 209, 63, 157, + 262, 189, 189, 51, 100, 226, 295, 320, 320, 142, + 172, 189, 15, 51, 282, 287, 304, 288, 293, 300, + 302, 295, 297, 302, 51, 295, 172, 189, 15, 79, + 126, 231, 232, 325, 189, 200, 320, 178, 142, 44, + 121, 44, 90, 140, 316, 319, 92, 92, 192, 196, + 141, 200, 92, 92, 193, 196, 193, 196, 231, 231, + 171, 322, 167, 156, 141, 15, 320, 183, 189, 202, + 249, 325, 18, 224, 325, 17, 223, 224, 92, 92, + 141, 92, 92, 224, 211, 213, 141, 167, 184, 139, + 15, 200, 221, 261, 189, 199, 85, 309, 139, 320, + 321, 141, 234, 319, 29, 113, 238, 139, 142, 292, + 320, 142, 85, 44, 44, 305, 142, 289, 142, 289, + 142, 289, 142, 289, 289, 44, 44, 228, 230, 233, 281, 283, 284, 287, 295, 296, 298, 299, 302, 304, 156, 100, 189, 178, 159, 189, 51, 55, 194, 51, 55, 57, 123, 162, 191, 168, 191, 170, 92, 162, 191, 162, 191, 170, 243, 239, 156, 157, 231, 218, 322, 15, 93, 250, 325, 157, 14, 251, 325, 167, 15, 92, 15, 157, 157, 222, 189, 157, 320, 200, - 145, 146, 156, 157, 227, 142, 100, 320, 189, 295, - 302, 295, 295, 189, 234, 234, 91, 220, 142, 305, - 305, 142, 229, 220, 142, 229, 142, 229, 15, 189, - 141, 189, 189, 162, 191, 15, 139, 157, 156, 91, - 180, 220, 272, 275, 221, 157, 221, 15, 15, 215, - 224, 246, 247, 51, 235, 236, 291, 15, 139, 295, - 295, 142, 292, 289, 142, 289, 289, 289, 126, 126, - 55, 90, 283, 287, 142, 228, 229, 299, 302, 295, - 298, 302, 295, 139, 15, 55, 90, 140, 316, 157, - 157, 157, 142, 319, 142, 295, 142, 295, 51, 55, - 305, 142, 229, 142, 229, 142, 229, 142, 229, 229, - 51, 55, 194, 51, 55, 248, 223, 15, 236, 295, - 289, 295, 302, 295, 295, 141, 229, 142, 229, 229, - 229, 295, 229 + 145, 146, 156, 157, 227, 142, 100, 320, 189, 189, + 295, 302, 295, 295, 189, 189, 234, 234, 91, 220, + 142, 305, 305, 142, 229, 220, 142, 229, 142, 229, + 15, 189, 141, 189, 189, 162, 191, 15, 139, 157, + 156, 91, 180, 220, 272, 275, 221, 157, 221, 15, + 15, 215, 224, 246, 247, 51, 235, 236, 291, 15, + 139, 295, 295, 142, 292, 289, 142, 289, 289, 289, + 126, 126, 55, 90, 283, 287, 142, 228, 229, 299, + 302, 295, 298, 302, 295, 139, 15, 55, 90, 140, + 316, 157, 157, 157, 142, 319, 142, 295, 142, 295, + 51, 55, 305, 142, 229, 142, 229, 142, 229, 142, + 229, 229, 51, 55, 194, 51, 55, 248, 223, 15, + 236, 295, 289, 295, 302, 295, 295, 141, 229, 142, + 229, 229, 229, 295, 229 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -5108,63 +5252,64 @@ static const yytype_int16 yyr1[] = 155, 154, 156, 157, 158, 158, 158, 158, 160, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 161, 161, 161, 161, 161, 161, - 161, 161, 162, 162, 162, 163, 163, 163, 163, 163, - 163, 164, 166, 165, 167, 168, 168, 169, 169, 171, - 170, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 173, 173, 174, 174, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 176, 176, 177, 177, - 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 181, - 181, 182, 182, 182, 183, 183, 183, 183, 183, 184, - 184, 185, 186, 185, 187, 187, 187, 187, 187, 187, + 161, 161, 161, 161, 161, 161, 162, 162, 162, 163, + 163, 163, 163, 163, 163, 164, 166, 165, 167, 168, + 168, 169, 169, 171, 170, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 173, 173, 174, 174, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 176, 176, 177, 177, 178, 178, 179, 179, 179, 179, + 179, 179, 179, 179, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 181, 181, 182, 182, 182, 183, 183, + 183, 183, 183, 184, 184, 185, 186, 185, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, + 187, 187, 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, + 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 190, 190, 190, 190, 191, - 191, 192, 192, 192, 193, 193, 194, 194, 194, 194, - 194, 195, 195, 195, 195, 195, 197, 196, 198, 199, - 199, 200, 200, 201, 201, 201, 201, 202, 202, 202, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, - 203, 205, 206, 203, 207, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 208, 209, - 203, 203, 203, 210, 211, 203, 212, 213, 203, 203, - 203, 214, 215, 203, 216, 203, 217, 218, 203, 219, - 203, 203, 203, 203, 203, 203, 203, 220, 221, 221, - 221, 222, 222, 223, 223, 224, 224, 225, 225, 226, - 226, 226, 226, 226, 226, 226, 226, 227, 226, 228, - 228, 228, 228, 229, 229, 230, 230, 230, 230, 230, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, + 190, 190, 190, 191, 191, 192, 192, 192, 193, 193, + 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, + 197, 196, 198, 199, 199, 200, 200, 201, 201, 201, + 201, 202, 202, 202, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 204, 203, 205, 206, 203, 207, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 208, 209, 203, 203, 203, 210, 211, 203, + 212, 213, 203, 203, 203, 214, 215, 203, 216, 203, + 217, 218, 203, 219, 203, 203, 203, 203, 203, 203, + 203, 220, 221, 221, 221, 222, 222, 223, 223, 224, + 224, 225, 225, 226, 226, 226, 226, 226, 226, 226, + 226, 227, 226, 228, 228, 228, 228, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 231, 231, 233, 232, 232, 232, 234, 234, 235, 235, - 236, 236, 237, 237, 238, 238, 240, 239, 241, 241, - 241, 241, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 244, 243, 245, 243, 246, 247, 247, 248, 248, - 249, 249, 249, 250, 250, 251, 251, 252, 252, 252, - 252, 253, 253, 254, 254, 254, 254, 255, 255, 256, - 257, 256, 256, 256, 258, 258, 259, 259, 260, 261, - 261, 262, 262, 263, 263, 264, 265, 264, 266, 266, - 267, 267, 268, 269, 269, 269, 269, 269, 269, 270, - 270, 271, 271, 271, 271, 272, 272, 272, 272, 272, - 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, - 275, 275, 276, 277, 276, 278, 278, 279, 279, 279, - 280, 280, 281, 282, 282, 283, 283, 284, 284, 285, - 285, 286, 286, 287, 287, 288, 288, 288, 288, 289, - 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 291, 291, 291, 291, - 291, 292, 292, 293, 294, 293, 295, 295, 296, 297, - 298, 299, 299, 300, 300, 301, 301, 302, 302, 303, - 303, 304, 305, 305, 306, 307, 306, 308, 308, 309, - 309, 310, 310, 311, 311, 311, 311, 312, 312, 312, - 313, 313, 313, 313, 314, 314, 314, 315, 315, 316, - 316, 317, 317, 318, 318, 319, 319, 320, 321, 321, - 321, 322, 322, 322, 323, 324, 324, 325 + 230, 230, 230, 230, 231, 231, 233, 232, 232, 232, + 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, + 240, 239, 241, 241, 241, 241, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 244, 243, 245, 243, 246, + 247, 247, 248, 248, 249, 249, 249, 250, 250, 251, + 251, 252, 252, 252, 252, 253, 253, 254, 254, 254, + 254, 255, 255, 256, 257, 256, 256, 256, 258, 258, + 259, 259, 260, 261, 261, 262, 262, 263, 263, 264, + 265, 264, 266, 266, 267, 267, 268, 269, 269, 269, + 269, 269, 269, 270, 270, 271, 271, 271, 271, 272, + 272, 272, 272, 272, 273, 273, 274, 274, 274, 274, + 274, 274, 274, 274, 275, 275, 276, 277, 276, 278, + 278, 279, 279, 279, 280, 280, 281, 282, 282, 283, + 283, 284, 284, 285, 285, 286, 286, 287, 287, 288, + 288, 288, 288, 289, 289, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 291, 291, 291, 291, 291, 292, 292, 293, 294, 293, + 295, 295, 296, 297, 298, 299, 299, 300, 300, 301, + 301, 302, 302, 303, 303, 304, 305, 305, 306, 307, + 306, 308, 308, 309, 309, 310, 310, 311, 311, 311, + 311, 312, 312, 312, 313, 313, 313, 313, 314, 314, + 314, 315, 315, 316, 316, 317, 317, 318, 318, 319, + 319, 320, 321, 321, 321, 322, 322, 322, 323, 324, + 324, 325 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -5174,63 +5319,64 @@ static const yytype_int8 yyr2[] = 0, 5, 4, 2, 1, 1, 3, 2, 0, 4, 2, 3, 3, 3, 3, 3, 4, 1, 3, 3, 3, 3, 3, 1, 3, 3, 6, 5, 5, 5, - 5, 3, 1, 3, 1, 1, 3, 3, 3, 2, - 1, 2, 0, 5, 1, 1, 1, 1, 4, 0, - 5, 2, 3, 4, 5, 4, 5, 2, 2, 2, - 2, 2, 1, 3, 1, 3, 1, 2, 3, 5, - 2, 4, 2, 4, 1, 3, 1, 3, 2, 3, - 1, 2, 1, 4, 3, 3, 3, 3, 2, 1, - 1, 4, 3, 3, 3, 3, 2, 1, 1, 1, - 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 1, 1, 1, 1, 1, 1, + 5, 4, 6, 4, 6, 3, 1, 3, 1, 1, + 3, 3, 3, 2, 1, 2, 0, 5, 1, 1, + 1, 1, 4, 0, 5, 2, 3, 4, 5, 4, + 5, 2, 2, 2, 2, 2, 1, 3, 1, 3, + 1, 2, 3, 5, 2, 4, 2, 4, 1, 3, + 1, 3, 2, 3, 1, 2, 1, 4, 3, 3, + 3, 3, 2, 1, 1, 4, 3, 3, 3, 3, + 2, 1, 1, 1, 1, 2, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 3, 6, 5, 5, 5, - 5, 4, 3, 3, 2, 2, 3, 2, 2, 3, - 3, 3, 3, 3, 3, 4, 4, 2, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 3, 3, 3, 3, 6, 6, - 4, 6, 4, 6, 1, 1, 2, 4, 2, 1, - 3, 3, 5, 3, 1, 1, 1, 2, 2, 4, - 2, 1, 2, 2, 4, 1, 0, 2, 2, 2, - 1, 1, 3, 1, 2, 3, 4, 3, 4, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 4, 0, 0, 5, 0, 3, 3, 3, 2, 3, - 3, 1, 2, 4, 3, 2, 1, 2, 0, 0, - 5, 6, 6, 0, 0, 7, 0, 0, 7, 5, - 4, 0, 0, 9, 0, 6, 0, 0, 8, 0, - 5, 4, 4, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 1, 5, 1, 2, 1, 1, 1, - 4, 6, 3, 5, 2, 4, 1, 0, 4, 4, - 2, 2, 1, 2, 0, 6, 8, 4, 6, 4, - 3, 6, 2, 4, 6, 2, 4, 2, 4, 1, - 1, 1, 0, 4, 1, 4, 1, 4, 1, 3, - 1, 1, 4, 1, 3, 3, 0, 5, 2, 4, - 5, 5, 2, 4, 4, 3, 3, 3, 2, 1, - 4, 0, 5, 0, 5, 5, 1, 1, 6, 1, - 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 2, 3, 1, 2, 1, - 0, 4, 1, 2, 2, 3, 2, 3, 1, 1, - 2, 1, 2, 1, 2, 1, 0, 4, 2, 3, - 1, 4, 2, 1, 1, 1, 1, 1, 2, 2, - 3, 1, 1, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 0, 4, 1, 1, 3, 5, 3, - 1, 2, 2, 2, 1, 2, 1, 1, 3, 1, - 3, 1, 1, 2, 1, 4, 2, 2, 1, 2, - 0, 6, 8, 4, 6, 4, 6, 2, 4, 6, - 2, 4, 2, 4, 1, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 1, 3, 2, 2, - 2, 1, 3, 1, 3, 1, 1, 2, 1, 1, - 1, 2, 2, 1, 1, 0, 4, 1, 2, 1, - 3, 1, 2, 3, 3, 3, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 6, 5, 5, 5, 5, 4, 3, 3, 2, 2, + 3, 2, 2, 3, 3, 3, 3, 3, 3, 4, + 4, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, + 3, 3, 6, 6, 4, 6, 4, 6, 1, 1, + 2, 4, 2, 1, 3, 3, 5, 3, 1, 1, + 1, 2, 2, 4, 2, 1, 2, 2, 4, 1, + 0, 2, 2, 2, 1, 1, 3, 1, 2, 3, + 4, 3, 4, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 4, 0, 0, 5, 0, 3, + 3, 3, 2, 3, 3, 1, 2, 4, 3, 2, + 1, 2, 0, 0, 5, 6, 6, 0, 0, 7, + 0, 0, 7, 5, 4, 0, 0, 9, 0, 6, + 0, 0, 8, 0, 5, 4, 4, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 5, 1, + 2, 1, 1, 1, 4, 6, 3, 5, 2, 4, + 1, 0, 4, 4, 2, 2, 1, 2, 0, 6, + 8, 4, 6, 4, 3, 6, 2, 4, 6, 2, + 4, 2, 4, 1, 1, 1, 0, 4, 1, 4, + 1, 4, 1, 3, 1, 1, 4, 1, 3, 3, + 0, 5, 2, 4, 5, 5, 2, 4, 4, 3, + 3, 3, 2, 1, 4, 0, 5, 0, 5, 5, + 1, 1, 6, 1, 1, 1, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, + 3, 1, 2, 1, 0, 4, 1, 2, 2, 3, + 2, 3, 1, 1, 2, 1, 2, 1, 2, 1, + 0, 4, 2, 3, 1, 4, 2, 1, 1, 1, + 1, 1, 2, 2, 3, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 0, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 2, 0 + 1, 1, 1, 1, 1, 1, 0, 0, 4, 1, + 1, 3, 5, 3, 1, 2, 2, 2, 1, 2, + 1, 1, 3, 1, 3, 1, 1, 2, 1, 4, + 2, 2, 1, 2, 0, 6, 8, 4, 6, 4, + 6, 2, 4, 6, 2, 4, 2, 4, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 1, 3, 2, 2, 2, 1, 3, 1, 3, 1, + 1, 2, 1, 1, 1, 2, 2, 1, 1, 0, + 4, 1, 2, 1, 3, 1, 2, 3, 3, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 0 }; @@ -5937,7 +6083,7 @@ yyreduce: p->lstate = EXPR_BEG; if (!p->locals) p->locals = cons(0,0); } -#line 5941 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6087 "mrbgems/mruby-compiler/core/y.tab.c" break; case 3: @@ -5946,7 +6092,7 @@ yyreduce: p->tree = new_scope(p, (yyvsp[0].nd)); NODE_LINENO(p->tree, (yyvsp[0].nd)); } -#line 5950 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6096 "mrbgems/mruby-compiler/core/y.tab.c" break; case 4: @@ -5954,7 +6100,7 @@ yyreduce: { (yyval.nd) = (yyvsp[-1].nd); } -#line 5958 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6104 "mrbgems/mruby-compiler/core/y.tab.c" break; case 5: @@ -5962,7 +6108,7 @@ yyreduce: { (yyval.nd) = new_begin(p, 0); } -#line 5966 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6112 "mrbgems/mruby-compiler/core/y.tab.c" break; case 6: @@ -5971,7 +6117,7 @@ yyreduce: (yyval.nd) = new_begin(p, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 5975 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6121 "mrbgems/mruby-compiler/core/y.tab.c" break; case 7: @@ -5979,7 +6125,7 @@ yyreduce: { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 5983 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6129 "mrbgems/mruby-compiler/core/y.tab.c" break; case 8: @@ -5987,7 +6133,7 @@ yyreduce: { (yyval.nd) = new_begin(p, 0); } -#line 5991 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6137 "mrbgems/mruby-compiler/core/y.tab.c" break; case 10: @@ -5996,7 +6142,7 @@ yyreduce: (yyval.nd) = local_switch(p); nvars_block(p); } -#line 6000 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6146 "mrbgems/mruby-compiler/core/y.tab.c" break; case 11: @@ -6007,7 +6153,7 @@ yyreduce: nvars_unnest(p); (yyval.nd) = 0; } -#line 6011 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6157 "mrbgems/mruby-compiler/core/y.tab.c" break; case 12: @@ -6033,7 +6179,7 @@ yyreduce: } } } -#line 6037 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6183 "mrbgems/mruby-compiler/core/y.tab.c" break; case 13: @@ -6041,7 +6187,7 @@ yyreduce: { (yyval.nd) = (yyvsp[-1].nd); } -#line 6045 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6191 "mrbgems/mruby-compiler/core/y.tab.c" break; case 14: @@ -6049,7 +6195,7 @@ yyreduce: { (yyval.nd) = new_begin(p, 0); } -#line 6053 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6199 "mrbgems/mruby-compiler/core/y.tab.c" break; case 15: @@ -6058,7 +6204,7 @@ yyreduce: (yyval.nd) = new_begin(p, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 6062 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6208 "mrbgems/mruby-compiler/core/y.tab.c" break; case 16: @@ -6066,7 +6212,7 @@ yyreduce: { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 6070 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6216 "mrbgems/mruby-compiler/core/y.tab.c" break; case 17: @@ -6074,13 +6220,13 @@ yyreduce: { (yyval.nd) = new_begin(p, (yyvsp[0].nd)); } -#line 6078 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6224 "mrbgems/mruby-compiler/core/y.tab.c" break; case 18: #line 1668 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_FNAME;} -#line 6084 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6230 "mrbgems/mruby-compiler/core/y.tab.c" break; case 19: @@ -6088,7 +6234,7 @@ yyreduce: { (yyval.nd) = new_alias(p, (yyvsp[-2].id), (yyvsp[0].id)); } -#line 6092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6238 "mrbgems/mruby-compiler/core/y.tab.c" break; case 20: @@ -6096,7 +6242,7 @@ yyreduce: { (yyval.nd) = (yyvsp[0].nd); } -#line 6100 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6246 "mrbgems/mruby-compiler/core/y.tab.c" break; case 21: @@ -6104,7 +6250,7 @@ yyreduce: { (yyval.nd) = new_if(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 6108 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6254 "mrbgems/mruby-compiler/core/y.tab.c" break; case 22: @@ -6112,7 +6258,7 @@ yyreduce: { (yyval.nd) = new_unless(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 6116 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6262 "mrbgems/mruby-compiler/core/y.tab.c" break; case 23: @@ -6120,7 +6266,7 @@ yyreduce: { (yyval.nd) = new_while(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } -#line 6124 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6270 "mrbgems/mruby-compiler/core/y.tab.c" break; case 24: @@ -6128,7 +6274,7 @@ yyreduce: { (yyval.nd) = new_until(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } -#line 6132 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6278 "mrbgems/mruby-compiler/core/y.tab.c" break; case 25: @@ -6136,7 +6282,7 @@ yyreduce: { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6140 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6286 "mrbgems/mruby-compiler/core/y.tab.c" break; case 26: @@ -6145,7 +6291,7 @@ yyreduce: yyerror(p, "END not supported"); (yyval.nd) = new_postexe(p, (yyvsp[-1].nd)); } -#line 6149 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6295 "mrbgems/mruby-compiler/core/y.tab.c" break; case 28: @@ -6153,7 +6299,7 @@ yyreduce: { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6157 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6303 "mrbgems/mruby-compiler/core/y.tab.c" break; case 29: @@ -6161,7 +6307,7 @@ yyreduce: { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); } -#line 6165 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6311 "mrbgems/mruby-compiler/core/y.tab.c" break; case 30: @@ -6169,7 +6315,7 @@ yyreduce: { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6173 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6319 "mrbgems/mruby-compiler/core/y.tab.c" break; case 31: @@ -6177,7 +6323,7 @@ yyreduce: { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); } -#line 6181 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6327 "mrbgems/mruby-compiler/core/y.tab.c" break; case 32: @@ -6188,7 +6334,7 @@ yyreduce: assignable(p, lhs); (yyval.nd) = new_asgn(p, lhs, (yyvsp[-2].nd)); } -#line 6192 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6338 "mrbgems/mruby-compiler/core/y.tab.c" break; case 34: @@ -6196,7 +6342,7 @@ yyreduce: { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6200 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6346 "mrbgems/mruby-compiler/core/y.tab.c" break; case 35: @@ -6204,7 +6350,7 @@ yyreduce: { (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6208 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6354 "mrbgems/mruby-compiler/core/y.tab.c" break; case 36: @@ -6212,7 +6358,7 @@ yyreduce: { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6216 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6362 "mrbgems/mruby-compiler/core/y.tab.c" break; case 37: @@ -6220,7 +6366,7 @@ yyreduce: { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6224 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6370 "mrbgems/mruby-compiler/core/y.tab.c" break; case 38: @@ -6228,7 +6374,7 @@ yyreduce: { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6232 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6378 "mrbgems/mruby-compiler/core/y.tab.c" break; case 39: @@ -6237,7 +6383,7 @@ yyreduce: yyerror(p, "constant re-assignment"); (yyval.nd) = 0; } -#line 6241 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6387 "mrbgems/mruby-compiler/core/y.tab.c" break; case 40: @@ -6245,79 +6391,133 @@ yyreduce: { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6249 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6395 "mrbgems/mruby-compiler/core/y.tab.c" break; case 41: #line 1758 "mrbgems/mruby-compiler/core/parse.y" { + (yyval.nd) = (yyvsp[-3].nd); + endless_method_name(p, (yyvsp[-3].nd)); + void_expr_error(p, (yyvsp[0].nd)); + defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); + nvars_unnest(p); + p->in_def--; + } +#line 6408 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 42: +#line 1767 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-5].nd); + endless_method_name(p, (yyvsp[-5].nd)); + void_expr_error(p, (yyvsp[-2].nd)); + void_expr_error(p, (yyvsp[0].nd)); + defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); + nvars_unnest(p); + p->in_def--; + } +#line 6422 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 43: +#line 1777 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-3].nd); + void_expr_error(p, (yyvsp[0].nd)); + defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); + nvars_unnest(p); + p->in_def--; + p->in_single--; + } +#line 6435 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 44: +#line 1786 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-5].nd); + void_expr_error(p, (yyvsp[-2].nd)); + void_expr_error(p, (yyvsp[0].nd)); + defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); + nvars_unnest(p); + p->in_def--; + p->in_single--; + } +#line 6449 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 45: +#line 1796 "mrbgems/mruby-compiler/core/parse.y" + { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_begin(p, 0); } -#line 6258 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6458 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 43: -#line 1766 "mrbgems/mruby-compiler/core/parse.y" + case 47: +#line 1804 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6266 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6466 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 46: -#line 1775 "mrbgems/mruby-compiler/core/parse.y" + case 50: +#line 1813 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6274 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6474 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 47: -#line 1779 "mrbgems/mruby-compiler/core/parse.y" + case 51: +#line 1817 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6282 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6482 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 48: -#line 1783 "mrbgems/mruby-compiler/core/parse.y" + case 52: +#line 1821 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 6290 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6490 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 49: -#line 1787 "mrbgems/mruby-compiler/core/parse.y" + case 53: +#line 1825 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 6298 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6498 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 51: -#line 1795 "mrbgems/mruby-compiler/core/parse.y" + case 55: +#line 1833 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_def(p, (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); p->cmdarg_stack = 0; p->in_def++; nvars_block(p); } -#line 6309 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6509 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 52: -#line 1804 "mrbgems/mruby-compiler/core/parse.y" + case 56: +#line 1842 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_FNAME; } -#line 6317 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6517 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 53: -#line 1808 "mrbgems/mruby-compiler/core/parse.y" + case 57: +#line 1846 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sdef(p, (yyvsp[-3].nd), (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); p->cmdarg_stack = 0; @@ -6326,1054 +6526,1054 @@ yyreduce: nvars_block(p); p->lstate = EXPR_ENDFN; /* force for args */ } -#line 6330 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6530 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 54: -#line 1819 "mrbgems/mruby-compiler/core/parse.y" + case 58: +#line 1857 "mrbgems/mruby-compiler/core/parse.y" { if (!(yyvsp[0].nd)) (yyval.nd) = new_nil(p); else { (yyval.nd) = (yyvsp[0].nd); } } -#line 6341 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6541 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 58: -#line 1833 "mrbgems/mruby-compiler/core/parse.y" + case 62: +#line 1871 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 6349 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6549 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 59: -#line 1839 "mrbgems/mruby-compiler/core/parse.y" + case 63: +#line 1877 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 6358 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6558 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 60: -#line 1846 "mrbgems/mruby-compiler/core/parse.y" + case 64: +#line 1884 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p, (yyvsp[-2].nd), (yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 6368 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6568 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 61: -#line 1854 "mrbgems/mruby-compiler/core/parse.y" + case 65: +#line 1892 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6376 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6576 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 62: -#line 1858 "mrbgems/mruby-compiler/core/parse.y" + case 66: +#line 1896 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_fcall(p, (yyvsp[-2].id), (yyvsp[-1].nd)); } -#line 6385 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6585 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 63: -#line 1863 "mrbgems/mruby-compiler/core/parse.y" + case 67: +#line 1901 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 6393 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6593 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 64: -#line 1867 "mrbgems/mruby-compiler/core/parse.y" + case 68: +#line 1905 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); } -#line 6402 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6602 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 65: -#line 1872 "mrbgems/mruby-compiler/core/parse.y" + case 69: +#line 1910 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 6410 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6610 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 66: -#line 1876 "mrbgems/mruby-compiler/core/parse.y" + case 70: +#line 1914 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), tCOLON2); } -#line 6419 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6619 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 67: -#line 1881 "mrbgems/mruby-compiler/core/parse.y" + case 71: +#line 1919 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 6427 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6627 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 68: -#line 1885 "mrbgems/mruby-compiler/core/parse.y" + case 72: +#line 1923 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } -#line 6435 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6635 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 69: -#line 1889 "mrbgems/mruby-compiler/core/parse.y" + case 73: +#line 1927 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd))); } -#line 6443 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6643 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 70: -#line 1893 "mrbgems/mruby-compiler/core/parse.y" + case 74: +#line 1931 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd))); } -#line 6451 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6651 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 71: -#line 1897 "mrbgems/mruby-compiler/core/parse.y" + case 75: +#line 1935 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd))); } -#line 6459 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6659 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 72: -#line 1903 "mrbgems/mruby-compiler/core/parse.y" + case 76: +#line 1941 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 6467 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6667 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 73: -#line 1907 "mrbgems/mruby-compiler/core/parse.y" + case 77: +#line 1945 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6475 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6675 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 75: -#line 1914 "mrbgems/mruby-compiler/core/parse.y" + case 79: +#line 1952 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6483 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6683 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 76: -#line 1920 "mrbgems/mruby-compiler/core/parse.y" + case 80: +#line 1958 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 6491 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6691 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 77: -#line 1924 "mrbgems/mruby-compiler/core/parse.y" + case 81: +#line 1962 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd))); } -#line 6499 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6699 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 78: -#line 1928 "mrbgems/mruby-compiler/core/parse.y" + case 82: +#line 1966 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6507 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6707 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 79: -#line 1932 "mrbgems/mruby-compiler/core/parse.y" + case 83: +#line 1970 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6515 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6715 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 80: -#line 1936 "mrbgems/mruby-compiler/core/parse.y" + case 84: +#line 1974 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p)); } -#line 6523 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6723 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 81: -#line 1940 "mrbgems/mruby-compiler/core/parse.y" + case 85: +#line 1978 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd)); } -#line 6531 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6731 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 82: -#line 1944 "mrbgems/mruby-compiler/core/parse.y" + case 86: +#line 1982 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2(0, (yyvsp[0].nd)); } -#line 6539 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6739 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 83: -#line 1948 "mrbgems/mruby-compiler/core/parse.y" + case 87: +#line 1986 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6547 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6747 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 84: -#line 1952 "mrbgems/mruby-compiler/core/parse.y" + case 88: +#line 1990 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2(0, new_nil(p)); } -#line 6555 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6755 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 85: -#line 1956 "mrbgems/mruby-compiler/core/parse.y" + case 89: +#line 1994 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd)); } -#line 6563 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6763 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 87: -#line 1963 "mrbgems/mruby-compiler/core/parse.y" + case 91: +#line 2001 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL); } -#line 6571 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6771 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 88: -#line 1969 "mrbgems/mruby-compiler/core/parse.y" + case 92: +#line 2007 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[-1].nd)); } -#line 6579 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6779 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 89: -#line 1973 "mrbgems/mruby-compiler/core/parse.y" + case 93: +#line 2011 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd)); } -#line 6587 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6787 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 90: -#line 1979 "mrbgems/mruby-compiler/core/parse.y" + case 94: +#line 2017 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 6595 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6795 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 91: -#line 1983 "mrbgems/mruby-compiler/core/parse.y" + case 95: +#line 2021 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 6603 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6803 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 92: -#line 1989 "mrbgems/mruby-compiler/core/parse.y" + case 96: +#line 2027 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 6611 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6811 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 93: -#line 1993 "mrbgems/mruby-compiler/core/parse.y" + case 97: +#line 2031 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 6619 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6819 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 94: -#line 1997 "mrbgems/mruby-compiler/core/parse.y" + case 98: +#line 2035 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6627 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6827 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 95: -#line 2001 "mrbgems/mruby-compiler/core/parse.y" + case 99: +#line 2039 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 6635 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6835 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 96: -#line 2005 "mrbgems/mruby-compiler/core/parse.y" + case 100: +#line 2043 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6643 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6843 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 97: -#line 2009 "mrbgems/mruby-compiler/core/parse.y" + case 101: +#line 2047 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 6653 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6853 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 98: -#line 2015 "mrbgems/mruby-compiler/core/parse.y" + case 102: +#line 2053 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 6663 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6863 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 99: -#line 2021 "mrbgems/mruby-compiler/core/parse.y" + case 103: +#line 2059 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[0].nd)); (yyval.nd) = 0; } -#line 6672 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6872 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 100: -#line 2028 "mrbgems/mruby-compiler/core/parse.y" + case 104: +#line 2066 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 6680 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6880 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 101: -#line 2032 "mrbgems/mruby-compiler/core/parse.y" + case 105: +#line 2070 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 6688 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6888 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 102: -#line 2036 "mrbgems/mruby-compiler/core/parse.y" + case 106: +#line 2074 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6696 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6896 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 103: -#line 2040 "mrbgems/mruby-compiler/core/parse.y" + case 107: +#line 2078 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 6704 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6904 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 104: -#line 2044 "mrbgems/mruby-compiler/core/parse.y" + case 108: +#line 2082 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6712 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6912 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 105: -#line 2048 "mrbgems/mruby-compiler/core/parse.y" + case 109: +#line 2086 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 6722 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6922 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 106: -#line 2054 "mrbgems/mruby-compiler/core/parse.y" + case 110: +#line 2092 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 6732 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6932 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 107: -#line 2060 "mrbgems/mruby-compiler/core/parse.y" + case 111: +#line 2098 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[0].nd)); (yyval.nd) = 0; } -#line 6741 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6941 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 108: -#line 2065 "mrbgems/mruby-compiler/core/parse.y" + case 112: +#line 2103 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "can't assign to numbered parameter"); } -#line 6749 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6949 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 109: -#line 2071 "mrbgems/mruby-compiler/core/parse.y" + case 113: +#line 2109 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "class/module name must be CONSTANT"); } -#line 6757 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6957 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 111: -#line 2078 "mrbgems/mruby-compiler/core/parse.y" + case 115: +#line 2116 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(nint(1), nsym((yyvsp[0].id))); } -#line 6765 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6965 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 112: -#line 2082 "mrbgems/mruby-compiler/core/parse.y" + case 116: +#line 2120 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(nint(0), nsym((yyvsp[0].id))); } -#line 6773 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6973 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 113: -#line 2086 "mrbgems/mruby-compiler/core/parse.y" + case 117: +#line 2124 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); (yyval.nd) = cons((yyvsp[-2].nd), nsym((yyvsp[0].id))); } -#line 6782 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6982 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 117: -#line 2096 "mrbgems/mruby-compiler/core/parse.y" + case 121: +#line 2134 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDFN; (yyval.id) = (yyvsp[0].id); } -#line 6791 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6991 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 118: -#line 2101 "mrbgems/mruby-compiler/core/parse.y" + case 122: +#line 2139 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDFN; (yyval.id) = (yyvsp[0].id); } -#line 6800 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7000 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 121: -#line 2112 "mrbgems/mruby-compiler/core/parse.y" + case 125: +#line 2150 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_undef(p, (yyvsp[0].id)); } -#line 6808 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7008 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 122: -#line 2115 "mrbgems/mruby-compiler/core/parse.y" + case 126: +#line 2153 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_FNAME;} -#line 6814 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7014 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 123: -#line 2116 "mrbgems/mruby-compiler/core/parse.y" + case 127: +#line 2154 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), nsym((yyvsp[0].id))); } -#line 6822 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7022 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 124: -#line 2121 "mrbgems/mruby-compiler/core/parse.y" + case 128: +#line 2159 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(or); } -#line 6828 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7028 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 125: -#line 2122 "mrbgems/mruby-compiler/core/parse.y" + case 129: +#line 2160 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(xor); } -#line 6834 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7034 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 126: -#line 2123 "mrbgems/mruby-compiler/core/parse.y" + case 130: +#line 2161 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(and); } -#line 6840 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7040 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 127: -#line 2124 "mrbgems/mruby-compiler/core/parse.y" + case 131: +#line 2162 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(cmp); } -#line 6846 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7046 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 128: -#line 2125 "mrbgems/mruby-compiler/core/parse.y" + case 132: +#line 2163 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(eq); } -#line 6852 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7052 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 129: -#line 2126 "mrbgems/mruby-compiler/core/parse.y" + case 133: +#line 2164 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(eqq); } -#line 6858 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7058 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 130: -#line 2127 "mrbgems/mruby-compiler/core/parse.y" + case 134: +#line 2165 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(match); } -#line 6864 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7064 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 131: -#line 2128 "mrbgems/mruby-compiler/core/parse.y" + case 135: +#line 2166 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(nmatch); } -#line 6870 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7070 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 132: -#line 2129 "mrbgems/mruby-compiler/core/parse.y" + case 136: +#line 2167 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(gt); } -#line 6876 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7076 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 133: -#line 2130 "mrbgems/mruby-compiler/core/parse.y" + case 137: +#line 2168 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(ge); } -#line 6882 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7082 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 134: -#line 2131 "mrbgems/mruby-compiler/core/parse.y" + case 138: +#line 2169 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(lt); } -#line 6888 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7088 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 135: -#line 2132 "mrbgems/mruby-compiler/core/parse.y" + case 139: +#line 2170 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(le); } -#line 6894 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7094 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 136: -#line 2133 "mrbgems/mruby-compiler/core/parse.y" + case 140: +#line 2171 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(neq); } -#line 6900 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7100 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 137: -#line 2134 "mrbgems/mruby-compiler/core/parse.y" + case 141: +#line 2172 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(lshift); } -#line 6906 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7106 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 138: -#line 2135 "mrbgems/mruby-compiler/core/parse.y" + case 142: +#line 2173 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(rshift); } -#line 6912 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7112 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 139: -#line 2136 "mrbgems/mruby-compiler/core/parse.y" + case 143: +#line 2174 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(add); } -#line 6918 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7118 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 140: -#line 2137 "mrbgems/mruby-compiler/core/parse.y" + case 144: +#line 2175 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(sub); } -#line 6924 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7124 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 141: -#line 2138 "mrbgems/mruby-compiler/core/parse.y" + case 145: +#line 2176 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mul); } -#line 6930 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7130 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 142: -#line 2139 "mrbgems/mruby-compiler/core/parse.y" + case 146: +#line 2177 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mul); } -#line 6936 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7136 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 143: -#line 2140 "mrbgems/mruby-compiler/core/parse.y" + case 147: +#line 2178 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(div); } -#line 6942 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7142 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 144: -#line 2141 "mrbgems/mruby-compiler/core/parse.y" + case 148: +#line 2179 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mod); } -#line 6948 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7148 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 145: -#line 2142 "mrbgems/mruby-compiler/core/parse.y" + case 149: +#line 2180 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(pow); } -#line 6954 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7154 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 146: -#line 2143 "mrbgems/mruby-compiler/core/parse.y" + case 150: +#line 2181 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(pow); } -#line 6960 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7160 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 147: -#line 2144 "mrbgems/mruby-compiler/core/parse.y" + case 151: +#line 2182 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(not); } -#line 6966 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7166 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 148: -#line 2145 "mrbgems/mruby-compiler/core/parse.y" + case 152: +#line 2183 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(neg); } -#line 6972 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7172 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 149: -#line 2146 "mrbgems/mruby-compiler/core/parse.y" + case 153: +#line 2184 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(plus); } -#line 6978 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7178 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 150: -#line 2147 "mrbgems/mruby-compiler/core/parse.y" + case 154: +#line 2185 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(minus); } -#line 6984 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7184 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 151: -#line 2148 "mrbgems/mruby-compiler/core/parse.y" + case 155: +#line 2186 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(aref); } -#line 6990 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7190 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 152: -#line 2149 "mrbgems/mruby-compiler/core/parse.y" + case 156: +#line 2187 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(aset); } -#line 6996 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7196 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 153: -#line 2150 "mrbgems/mruby-compiler/core/parse.y" + case 157: +#line 2188 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(tick); } -#line 7002 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7202 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 194: -#line 2168 "mrbgems/mruby-compiler/core/parse.y" + case 198: +#line 2206 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7010 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7210 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 195: -#line 2172 "mrbgems/mruby-compiler/core/parse.y" + case 199: +#line 2210 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7018 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7218 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 196: -#line 2176 "mrbgems/mruby-compiler/core/parse.y" + case 200: +#line 2214 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7026 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7226 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 197: -#line 2180 "mrbgems/mruby-compiler/core/parse.y" + case 201: +#line 2218 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7034 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7234 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 198: -#line 2184 "mrbgems/mruby-compiler/core/parse.y" + case 202: +#line 2222 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7042 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7242 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 199: -#line 2188 "mrbgems/mruby-compiler/core/parse.y" + case 203: +#line 2226 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7050 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7250 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 200: -#line 2192 "mrbgems/mruby-compiler/core/parse.y" + case 204: +#line 2230 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = new_begin(p, 0); } -#line 7059 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7259 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 201: -#line 2197 "mrbgems/mruby-compiler/core/parse.y" + case 205: +#line 2235 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = new_begin(p, 0); } -#line 7068 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7268 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 202: -#line 2202 "mrbgems/mruby-compiler/core/parse.y" + case 206: +#line 2240 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_begin(p, 0); } -#line 7077 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7277 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 203: -#line 2207 "mrbgems/mruby-compiler/core/parse.y" + case 207: +#line 2245 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7085 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7285 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 204: -#line 2211 "mrbgems/mruby-compiler/core/parse.y" + case 208: +#line 2249 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p)); } -#line 7093 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7293 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 205: -#line 2215 "mrbgems/mruby-compiler/core/parse.y" + case 209: +#line 2253 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot2(p, new_nil(p), (yyvsp[0].nd)); } -#line 7101 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7301 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 206: -#line 2219 "mrbgems/mruby-compiler/core/parse.y" + case 210: +#line 2257 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7109 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7309 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 207: -#line 2223 "mrbgems/mruby-compiler/core/parse.y" + case 211: +#line 2261 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p)); } -#line 7117 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7317 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 208: -#line 2227 "mrbgems/mruby-compiler/core/parse.y" + case 212: +#line 2265 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot3(p, new_nil(p), (yyvsp[0].nd)); } -#line 7125 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7325 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 209: -#line 2231 "mrbgems/mruby-compiler/core/parse.y" + case 213: +#line 2269 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); } -#line 7133 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7333 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 210: -#line 2235 "mrbgems/mruby-compiler/core/parse.y" + case 214: +#line 2273 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); } -#line 7141 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7341 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 211: -#line 2239 "mrbgems/mruby-compiler/core/parse.y" + case 215: +#line 2277 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); } -#line 7149 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7349 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 212: -#line 2243 "mrbgems/mruby-compiler/core/parse.y" + case 216: +#line 2281 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); } -#line 7157 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7357 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 213: -#line 2247 "mrbgems/mruby-compiler/core/parse.y" + case 217: +#line 2285 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); } -#line 7165 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7365 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 214: -#line 2251 "mrbgems/mruby-compiler/core/parse.y" + case 218: +#line 2289 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); } -#line 7173 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7373 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 215: -#line 2255 "mrbgems/mruby-compiler/core/parse.y" + case 219: +#line 2293 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); } -#line 7181 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7381 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 216: -#line 2259 "mrbgems/mruby-compiler/core/parse.y" + case 220: +#line 2297 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); } -#line 7189 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7389 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 217: -#line 2263 "mrbgems/mruby-compiler/core/parse.y" + case 221: +#line 2301 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); } -#line 7197 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7397 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 218: -#line 2267 "mrbgems/mruby-compiler/core/parse.y" + case 222: +#line 2305 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "-@"); } -#line 7205 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7405 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 219: -#line 2271 "mrbgems/mruby-compiler/core/parse.y" + case 223: +#line 2309 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); } -#line 7213 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7413 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 220: -#line 2275 "mrbgems/mruby-compiler/core/parse.y" + case 224: +#line 2313 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); } -#line 7221 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7421 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 221: -#line 2279 "mrbgems/mruby-compiler/core/parse.y" + case 225: +#line 2317 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); } -#line 7229 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7429 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 222: -#line 2283 "mrbgems/mruby-compiler/core/parse.y" + case 226: +#line 2321 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); } -#line 7237 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7437 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 223: -#line 2287 "mrbgems/mruby-compiler/core/parse.y" + case 227: +#line 2325 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); } -#line 7245 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7445 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 224: -#line 2291 "mrbgems/mruby-compiler/core/parse.y" + case 228: +#line 2329 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); } -#line 7253 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7453 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 225: -#line 2295 "mrbgems/mruby-compiler/core/parse.y" + case 229: +#line 2333 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); } -#line 7261 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7461 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 226: -#line 2299 "mrbgems/mruby-compiler/core/parse.y" + case 230: +#line 2337 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); } -#line 7269 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7469 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 227: -#line 2303 "mrbgems/mruby-compiler/core/parse.y" + case 231: +#line 2341 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); } -#line 7277 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7477 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 228: -#line 2307 "mrbgems/mruby-compiler/core/parse.y" + case 232: +#line 2345 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); } -#line 7285 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7485 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 229: -#line 2311 "mrbgems/mruby-compiler/core/parse.y" + case 233: +#line 2349 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); } -#line 7293 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7493 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 230: -#line 2315 "mrbgems/mruby-compiler/core/parse.y" + case 234: +#line 2353 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); } -#line 7301 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7501 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 231: -#line 2319 "mrbgems/mruby-compiler/core/parse.y" + case 235: +#line 2357 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); } -#line 7309 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7509 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 232: -#line 2323 "mrbgems/mruby-compiler/core/parse.y" + case 236: +#line 2361 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 7317 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7517 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 233: -#line 2327 "mrbgems/mruby-compiler/core/parse.y" + case 237: +#line 2365 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); } -#line 7325 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7525 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 234: -#line 2331 "mrbgems/mruby-compiler/core/parse.y" + case 238: +#line 2369 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); } -#line 7333 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7533 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 235: -#line 2335 "mrbgems/mruby-compiler/core/parse.y" + case 239: +#line 2373 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); } -#line 7341 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7541 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 236: -#line 2339 "mrbgems/mruby-compiler/core/parse.y" + case 240: +#line 2377 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7349 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7549 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 237: -#line 2343 "mrbgems/mruby-compiler/core/parse.y" + case 241: +#line 2381 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7357 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7557 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 238: -#line 2347 "mrbgems/mruby-compiler/core/parse.y" + case 242: +#line 2385 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); } -#line 7365 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7565 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 239: -#line 2351 "mrbgems/mruby-compiler/core/parse.y" + case 243: +#line 2389 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); } -#line 7373 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7573 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 240: -#line 2355 "mrbgems/mruby-compiler/core/parse.y" + case 244: +#line 2393 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); endless_method_name(p, (yyvsp[-3].nd)); @@ -7382,11 +7582,11 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 7386 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7586 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 241: -#line 2364 "mrbgems/mruby-compiler/core/parse.y" + case 245: +#line 2402 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); endless_method_name(p, (yyvsp[-5].nd)); @@ -7396,11 +7596,11 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 7400 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7600 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 242: -#line 2374 "mrbgems/mruby-compiler/core/parse.y" + case 246: +#line 2412 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); void_expr_error(p, (yyvsp[0].nd)); @@ -7409,11 +7609,11 @@ yyreduce: p->in_def--; p->in_single--; } -#line 7413 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7613 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 243: -#line 2383 "mrbgems/mruby-compiler/core/parse.y" + case 247: +#line 2421 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); void_expr_error(p, (yyvsp[-2].nd)); @@ -7423,71 +7623,71 @@ yyreduce: p->in_def--; p->in_single--; } -#line 7427 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7627 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 244: -#line 2393 "mrbgems/mruby-compiler/core/parse.y" + case 248: +#line 2431 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7435 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7635 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 246: -#line 2400 "mrbgems/mruby-compiler/core/parse.y" + case 250: +#line 2438 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7444 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7644 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 247: -#line 2405 "mrbgems/mruby-compiler/core/parse.y" + case 251: +#line 2443 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))); } -#line 7452 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7652 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 248: -#line 2409 "mrbgems/mruby-compiler/core/parse.y" + case 252: +#line 2447 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7461 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7661 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 249: -#line 2416 "mrbgems/mruby-compiler/core/parse.y" + case 253: +#line 2454 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7469 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7669 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 250: -#line 2420 "mrbgems/mruby-compiler/core/parse.y" + case 254: +#line 2458 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7479 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7679 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 251: -#line 2428 "mrbgems/mruby-compiler/core/parse.y" + case 255: +#line 2466 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 7487 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7687 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 252: -#line 2432 "mrbgems/mruby-compiler/core/parse.y" + case 256: +#line 2470 "mrbgems/mruby-compiler/core/parse.y" { #if 1 mrb_sym r = intern_op(mul); @@ -7503,11 +7703,11 @@ yyreduce: new_block_arg(p, new_lvar(p, b))); #endif } -#line 7507 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7707 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 253: -#line 2448 "mrbgems/mruby-compiler/core/parse.y" + case 257: +#line 2486 "mrbgems/mruby-compiler/core/parse.y" { #if 1 mrb_sym r = intern_op(mul); @@ -7531,373 +7731,373 @@ yyreduce: (yyval.nd) = 0; } } -#line 7535 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7735 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 258: -#line 2480 "mrbgems/mruby-compiler/core/parse.y" + case 262: +#line 2518 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((yyvsp[-1].nd),0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7544 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7744 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 259: -#line 2485 "mrbgems/mruby-compiler/core/parse.y" + case 263: +#line 2523 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), 0); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7553 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7753 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 260: -#line 2490 "mrbgems/mruby-compiler/core/parse.y" + case 264: +#line 2528 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), 0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7562 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7762 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 261: -#line 2497 "mrbgems/mruby-compiler/core/parse.y" + case 265: +#line 2535 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(list1((yyvsp[0].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7572 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7772 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 262: -#line 2503 "mrbgems/mruby-compiler/core/parse.y" + case 266: +#line 2541 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((yyvsp[-1].nd), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7581 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7781 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 263: -#line 2508 "mrbgems/mruby-compiler/core/parse.y" + case 267: +#line 2546 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7590 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7790 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 264: -#line 2513 "mrbgems/mruby-compiler/core/parse.y" + case 268: +#line 2551 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7599 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7799 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 265: -#line 2518 "mrbgems/mruby-compiler/core/parse.y" + case 269: +#line 2556 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(0, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7608 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7808 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 266: -#line 2524 "mrbgems/mruby-compiler/core/parse.y" + case 270: +#line 2562 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; CMDARG_PUSH(1); } -#line 7617 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7817 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 267: -#line 2529 "mrbgems/mruby-compiler/core/parse.y" + case 271: +#line 2567 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-1].stack); (yyval.nd) = (yyvsp[0].nd); } -#line 7626 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7826 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 268: -#line 2536 "mrbgems/mruby-compiler/core/parse.y" + case 272: +#line 2574 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block_arg(p, (yyvsp[0].nd)); } -#line 7634 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7834 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 269: -#line 2542 "mrbgems/mruby-compiler/core/parse.y" + case 273: +#line 2580 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7642 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7842 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 270: -#line 2546 "mrbgems/mruby-compiler/core/parse.y" + case 274: +#line 2584 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 7650 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7850 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 273: -#line 2556 "mrbgems/mruby-compiler/core/parse.y" + case 277: +#line 2594 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[0].nd), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7660 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7860 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 274: -#line 2562 "mrbgems/mruby-compiler/core/parse.y" + case 278: +#line 2600 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_splat(p, (yyvsp[0].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7670 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7870 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 275: -#line 2568 "mrbgems/mruby-compiler/core/parse.y" + case 279: +#line 2606 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7679 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7879 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 276: -#line 2573 "mrbgems/mruby-compiler/core/parse.y" + case 280: +#line 2611 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7688 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7888 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 277: -#line 2580 "mrbgems/mruby-compiler/core/parse.y" + case 281: +#line 2618 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7697 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7897 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 278: -#line 2585 "mrbgems/mruby-compiler/core/parse.y" + case 282: +#line 2623 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7706 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7906 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 279: -#line 2590 "mrbgems/mruby-compiler/core/parse.y" + case 283: +#line 2628 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); } -#line 7715 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7915 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 287: -#line 2604 "mrbgems/mruby-compiler/core/parse.y" + case 291: +#line 2642 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nvar(p, (yyvsp[0].num)); } -#line 7723 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7923 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 288: -#line 2608 "mrbgems/mruby-compiler/core/parse.y" + case 292: +#line 2646 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0); } -#line 7731 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7931 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 289: -#line 2612 "mrbgems/mruby-compiler/core/parse.y" + case 293: +#line 2650 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7740 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7940 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 290: -#line 2618 "mrbgems/mruby-compiler/core/parse.y" + case 294: +#line 2656 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-2].stack); (yyval.nd) = (yyvsp[-1].nd); } -#line 7749 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7949 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 291: -#line 2623 "mrbgems/mruby-compiler/core/parse.y" + case 295: +#line 2661 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7758 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7958 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 292: -#line 2627 "mrbgems/mruby-compiler/core/parse.y" + case 296: +#line 2665 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_ENDARG;} -#line 7764 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7964 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 293: -#line 2628 "mrbgems/mruby-compiler/core/parse.y" + case 297: +#line 2666 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-3].stack); (yyval.nd) = (yyvsp[-2].nd); } -#line 7773 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7973 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 294: -#line 2632 "mrbgems/mruby-compiler/core/parse.y" + case 298: +#line 2670 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_ENDARG;} -#line 7779 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7979 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 295: -#line 2633 "mrbgems/mruby-compiler/core/parse.y" + case 299: +#line 2671 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nil(p); } -#line 7787 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7987 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 296: -#line 2637 "mrbgems/mruby-compiler/core/parse.y" + case 300: +#line 2675 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 7795 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7995 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 297: -#line 2641 "mrbgems/mruby-compiler/core/parse.y" + case 301: +#line 2679 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 7803 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8003 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 298: -#line 2645 "mrbgems/mruby-compiler/core/parse.y" + case 302: +#line 2683 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 7811 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8011 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 299: -#line 2649 "mrbgems/mruby-compiler/core/parse.y" + case 303: +#line 2687 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_array(p, (yyvsp[-1].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7820 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8020 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 300: -#line 2654 "mrbgems/mruby-compiler/core/parse.y" + case 304: +#line 2692 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7829 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8029 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 301: -#line 2659 "mrbgems/mruby-compiler/core/parse.y" + case 305: +#line 2697 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_return(p, 0); } -#line 7837 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8037 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 302: -#line 2663 "mrbgems/mruby-compiler/core/parse.y" + case 306: +#line 2701 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } -#line 7845 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8045 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 303: -#line 2667 "mrbgems/mruby-compiler/core/parse.y" + case 307: +#line 2705 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); } -#line 7853 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8053 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 304: -#line 2671 "mrbgems/mruby-compiler/core/parse.y" + case 308: +#line 2709 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, new_nil(p), "!"); } -#line 7861 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8061 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 305: -#line 2675 "mrbgems/mruby-compiler/core/parse.y" + case 309: +#line 2713 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), cons(0, (yyvsp[0].nd))); } -#line 7869 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8069 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 307: -#line 2680 "mrbgems/mruby-compiler/core/parse.y" + case 311: +#line 2718 "mrbgems/mruby-compiler/core/parse.y" { call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = (yyvsp[-1].nd); } -#line 7878 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8078 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 308: -#line 2685 "mrbgems/mruby-compiler/core/parse.y" + case 312: +#line 2723 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); (yyval.num) = p->lpar_beg; p->lpar_beg = ++p->paren_nest; } -#line 7888 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8088 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 309: -#line 2691 "mrbgems/mruby-compiler/core/parse.y" + case 313: +#line 2729 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7897 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8097 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 310: -#line 2696 "mrbgems/mruby-compiler/core/parse.y" + case 314: +#line 2734 "mrbgems/mruby-compiler/core/parse.y" { p->lpar_beg = (yyvsp[-3].num); (yyval.nd) = new_lambda(p, (yyvsp[-2].nd), (yyvsp[0].nd)); @@ -7905,149 +8105,149 @@ yyreduce: p->cmdarg_stack = (yyvsp[-1].stack); CMDARG_LEXPOP(); } -#line 7909 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8109 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 311: -#line 2707 "mrbgems/mruby-compiler/core/parse.y" + case 315: +#line 2745 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 7918 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8118 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 312: -#line 2715 "mrbgems/mruby-compiler/core/parse.y" + case 316: +#line 2753 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_unless(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 7927 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8127 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 313: -#line 2719 "mrbgems/mruby-compiler/core/parse.y" + case 317: +#line 2757 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7933 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8133 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 314: -#line 2719 "mrbgems/mruby-compiler/core/parse.y" + case 318: +#line 2757 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7939 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8139 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 315: -#line 2722 "mrbgems/mruby-compiler/core/parse.y" + case 319: +#line 2760 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_while(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 7948 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8148 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 316: -#line 2726 "mrbgems/mruby-compiler/core/parse.y" + case 320: +#line 2764 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7954 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8154 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 317: -#line 2726 "mrbgems/mruby-compiler/core/parse.y" + case 321: +#line 2764 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7960 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8160 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 318: -#line 2729 "mrbgems/mruby-compiler/core/parse.y" + case 322: +#line 2767 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_until(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 7969 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8169 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 319: -#line 2736 "mrbgems/mruby-compiler/core/parse.y" + case 323: +#line 2774 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 7977 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8177 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 320: -#line 2740 "mrbgems/mruby-compiler/core/parse.y" + case 324: +#line 2778 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd)); } -#line 7985 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8185 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 321: -#line 2744 "mrbgems/mruby-compiler/core/parse.y" + case 325: +#line 2782 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7991 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8191 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 322: -#line 2746 "mrbgems/mruby-compiler/core/parse.y" + case 326: +#line 2784 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7997 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8197 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 323: -#line 2749 "mrbgems/mruby-compiler/core/parse.y" + case 327: +#line 2787 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_for(p, (yyvsp[-7].nd), (yyvsp[-4].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-8].num)); } -#line 8006 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8206 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 324: -#line 2755 "mrbgems/mruby-compiler/core/parse.y" + case 328: +#line 2793 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "class definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 8017 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8217 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 325: -#line 2763 "mrbgems/mruby-compiler/core/parse.y" + case 329: +#line 2801 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 8028 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8228 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 326: -#line 2771 "mrbgems/mruby-compiler/core/parse.y" + case 330: +#line 2809 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = p->in_def; p->in_def = 0; } -#line 8037 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8237 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 327: -#line 2776 "mrbgems/mruby-compiler/core/parse.y" + case 331: +#line 2814 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(local_switch(p), nint(p->in_single)); nvars_block(p); p->in_single = 0; } -#line 8047 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8247 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 328: -#line 2783 "mrbgems/mruby-compiler/core/parse.y" + case 332: +#line 2821 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-7].num)); @@ -8056,44 +8256,44 @@ yyreduce: p->in_def = (yyvsp[-4].num); p->in_single = intn((yyvsp[-2].nd)->cdr); } -#line 8060 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8260 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 329: -#line 2793 "mrbgems/mruby-compiler/core/parse.y" + case 333: +#line 2831 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "module definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 8071 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8271 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 330: -#line 2801 "mrbgems/mruby-compiler/core/parse.y" + case 334: +#line 2839 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-4].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 8082 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8282 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 331: -#line 2811 "mrbgems/mruby-compiler/core/parse.y" + case 335: +#line 2849 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); nvars_unnest(p); p->in_def--; } -#line 8093 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8293 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 332: -#line 2821 "mrbgems/mruby-compiler/core/parse.y" + case 336: +#line 2859 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); @@ -8101,451 +8301,451 @@ yyreduce: p->in_def--; p->in_single--; } -#line 8105 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8305 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 333: -#line 2829 "mrbgems/mruby-compiler/core/parse.y" + case 337: +#line 2867 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_break(p, 0); } -#line 8113 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8313 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 334: -#line 2833 "mrbgems/mruby-compiler/core/parse.y" + case 338: +#line 2871 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_next(p, 0); } -#line 8121 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8321 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 335: -#line 2837 "mrbgems/mruby-compiler/core/parse.y" + case 339: +#line 2875 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_redo(p); } -#line 8129 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8329 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 336: -#line 2841 "mrbgems/mruby-compiler/core/parse.y" + case 340: +#line 2879 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_retry(p); } -#line 8137 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8337 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 337: -#line 2847 "mrbgems/mruby-compiler/core/parse.y" + case 341: +#line 2885 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 8146 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8346 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 344: -#line 2866 "mrbgems/mruby-compiler/core/parse.y" + case 348: +#line 2904 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8154 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8354 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 346: -#line 2873 "mrbgems/mruby-compiler/core/parse.y" + case 350: +#line 2911 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8162 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8362 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 347: -#line 2879 "mrbgems/mruby-compiler/core/parse.y" + case 351: +#line 2917 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list1((yyvsp[0].nd))); } -#line 8170 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8370 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 349: -#line 2886 "mrbgems/mruby-compiler/core/parse.y" + case 353: +#line 2924 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[0].nd),0,0); } -#line 8178 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8378 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 350: -#line 2890 "mrbgems/mruby-compiler/core/parse.y" + case 354: +#line 2928 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0); } -#line 8186 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8386 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 351: -#line 2894 "mrbgems/mruby-compiler/core/parse.y" + case 355: +#line 2932 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 8194 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8394 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 352: -#line 2898 "mrbgems/mruby-compiler/core/parse.y" + case 356: +#line 2936 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); (yyval.nd) = list3((yyvsp[-2].nd), nint(-1), 0); } -#line 8203 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8403 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 353: -#line 2903 "mrbgems/mruby-compiler/core/parse.y" + case 357: +#line 2941 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), nint(-1), (yyvsp[0].nd)); } -#line 8211 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8411 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 354: -#line 2907 "mrbgems/mruby-compiler/core/parse.y" + case 358: +#line 2945 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); } -#line 8219 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8419 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 355: -#line 2911 "mrbgems/mruby-compiler/core/parse.y" + case 359: +#line 2949 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 8227 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8427 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 356: -#line 2915 "mrbgems/mruby-compiler/core/parse.y" + case 360: +#line 2953 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); (yyval.nd) = list3(0, nint(-1), 0); } -#line 8236 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8436 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 357: -#line 2920 "mrbgems/mruby-compiler/core/parse.y" + case 361: +#line 2958 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); } -#line 8244 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8444 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 358: -#line 2924 "mrbgems/mruby-compiler/core/parse.y" + case 362: +#line 2962 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, nint(-1), (yyvsp[0].nd)); } -#line 8252 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8452 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 359: -#line 2930 "mrbgems/mruby-compiler/core/parse.y" + case 363: +#line 2968 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8260 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8460 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 360: -#line 2934 "mrbgems/mruby-compiler/core/parse.y" + case 364: +#line 2972 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 8268 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8468 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 361: -#line 2938 "mrbgems/mruby-compiler/core/parse.y" + case 365: +#line 2976 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8276 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8476 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 362: -#line 2942 "mrbgems/mruby-compiler/core/parse.y" + case 366: +#line 2980 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 8284 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8484 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 363: -#line 2948 "mrbgems/mruby-compiler/core/parse.y" + case 367: +#line 2986 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8292 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8492 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 364: -#line 2952 "mrbgems/mruby-compiler/core/parse.y" + case 368: +#line 2990 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 8300 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8500 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 365: -#line 2958 "mrbgems/mruby-compiler/core/parse.y" + case 369: +#line 2996 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8308 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8508 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 366: -#line 2962 "mrbgems/mruby-compiler/core/parse.y" + case 370: +#line 3000 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8316 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8516 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 367: -#line 2966 "mrbgems/mruby-compiler/core/parse.y" + case 371: +#line 3004 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8324 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8524 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 368: -#line 2970 "mrbgems/mruby-compiler/core/parse.y" + case 372: +#line 3008 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8332 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8532 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 369: -#line 2974 "mrbgems/mruby-compiler/core/parse.y" + case 373: +#line 3012 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8340 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8540 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 370: -#line 2978 "mrbgems/mruby-compiler/core/parse.y" + case 374: +#line 3016 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 8348 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8548 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 371: -#line 2982 "mrbgems/mruby-compiler/core/parse.y" + case 375: +#line 3020 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8356 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8556 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 372: -#line 2986 "mrbgems/mruby-compiler/core/parse.y" + case 376: +#line 3024 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 8364 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8564 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 373: -#line 2990 "mrbgems/mruby-compiler/core/parse.y" + case 377: +#line 3028 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8372 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8572 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 374: -#line 2994 "mrbgems/mruby-compiler/core/parse.y" + case 378: +#line 3032 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8380 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8580 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 375: -#line 2998 "mrbgems/mruby-compiler/core/parse.y" + case 379: +#line 3036 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8388 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8588 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 376: -#line 3002 "mrbgems/mruby-compiler/core/parse.y" + case 380: +#line 3040 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8396 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8596 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 377: -#line 3006 "mrbgems/mruby-compiler/core/parse.y" + case 381: +#line 3044 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8404 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8604 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 378: -#line 3010 "mrbgems/mruby-compiler/core/parse.y" + case 382: +#line 3048 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8412 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8612 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 379: -#line 3014 "mrbgems/mruby-compiler/core/parse.y" + case 383: +#line 3052 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); } -#line 8420 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8620 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 380: -#line 3020 "mrbgems/mruby-compiler/core/parse.y" + case 384: +#line 3058 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8429 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8629 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 381: -#line 3025 "mrbgems/mruby-compiler/core/parse.y" + case 385: +#line 3063 "mrbgems/mruby-compiler/core/parse.y" { p->cmd_start = TRUE; (yyval.nd) = (yyvsp[0].nd); } -#line 8438 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8638 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 382: -#line 3031 "mrbgems/mruby-compiler/core/parse.y" + case 386: +#line 3069 "mrbgems/mruby-compiler/core/parse.y" {local_add_blk(p, 0);} -#line 8444 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8644 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 383: -#line 3032 "mrbgems/mruby-compiler/core/parse.y" + case 387: +#line 3070 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8452 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8652 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 384: -#line 3036 "mrbgems/mruby-compiler/core/parse.y" + case 388: +#line 3074 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8461 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8661 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 385: -#line 3041 "mrbgems/mruby-compiler/core/parse.y" + case 389: +#line 3079 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8469 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8669 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 386: -#line 3048 "mrbgems/mruby-compiler/core/parse.y" + case 390: +#line 3086 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8477 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8677 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 387: -#line 3052 "mrbgems/mruby-compiler/core/parse.y" + case 391: +#line 3090 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8485 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8685 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 390: -#line 3062 "mrbgems/mruby-compiler/core/parse.y" + case 394: +#line 3100 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); new_bv(p, (yyvsp[0].id)); } -#line 8494 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8694 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 392: -#line 3070 "mrbgems/mruby-compiler/core/parse.y" + case 396: +#line 3108 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8502 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8702 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 393: -#line 3074 "mrbgems/mruby-compiler/core/parse.y" + case 397: +#line 3112 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8510 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8710 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 394: -#line 3080 "mrbgems/mruby-compiler/core/parse.y" + case 398: +#line 3118 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8518 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8718 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 395: -#line 3084 "mrbgems/mruby-compiler/core/parse.y" + case 399: +#line 3122 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8526 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8726 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 396: -#line 3090 "mrbgems/mruby-compiler/core/parse.y" + case 400: +#line 3128 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 8535 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8735 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 397: -#line 3097 "mrbgems/mruby-compiler/core/parse.y" + case 401: +#line 3135 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 8545 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8745 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 398: -#line 3105 "mrbgems/mruby-compiler/core/parse.y" + case 402: +#line 3143 "mrbgems/mruby-compiler/core/parse.y" { if (typen((yyvsp[-1].nd)->car) == NODE_YIELD) { yyerror(p, "block given to yield"); @@ -8555,159 +8755,159 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 8559 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8759 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 399: -#line 3115 "mrbgems/mruby-compiler/core/parse.y" + case 403: +#line 3153 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8567 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8767 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 400: -#line 3119 "mrbgems/mruby-compiler/core/parse.y" + case 404: +#line 3157 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8576 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8776 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 401: -#line 3124 "mrbgems/mruby-compiler/core/parse.y" + case 405: +#line 3162 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8585 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8785 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 402: -#line 3131 "mrbgems/mruby-compiler/core/parse.y" + case 406: +#line 3169 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 8593 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8793 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 403: -#line 3135 "mrbgems/mruby-compiler/core/parse.y" + case 407: +#line 3173 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8601 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8801 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 404: -#line 3139 "mrbgems/mruby-compiler/core/parse.y" + case 408: +#line 3177 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 8609 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8809 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 405: -#line 3143 "mrbgems/mruby-compiler/core/parse.y" + case 409: +#line 3181 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 8617 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8817 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 406: -#line 3147 "mrbgems/mruby-compiler/core/parse.y" + case 410: +#line 3185 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num)); } -#line 8625 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8825 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 407: -#line 3151 "mrbgems/mruby-compiler/core/parse.y" + case 411: +#line 3189 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2); } -#line 8633 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8833 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 408: -#line 3155 "mrbgems/mruby-compiler/core/parse.y" + case 412: +#line 3193 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 8641 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8841 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 409: -#line 3159 "mrbgems/mruby-compiler/core/parse.y" + case 413: +#line 3197 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_zsuper(p); } -#line 8649 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8849 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 410: -#line 3163 "mrbgems/mruby-compiler/core/parse.y" + case 414: +#line 3201 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 8657 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8857 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 411: -#line 3169 "mrbgems/mruby-compiler/core/parse.y" + case 415: +#line 3207 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8667 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8867 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 412: -#line 3176 "mrbgems/mruby-compiler/core/parse.y" + case 416: +#line 3214 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 8678 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8878 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 413: -#line 3183 "mrbgems/mruby-compiler/core/parse.y" + case 417: +#line 3221 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8688 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8888 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 414: -#line 3190 "mrbgems/mruby-compiler/core/parse.y" + case 418: +#line 3228 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 8699 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8899 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 415: -#line 3201 "mrbgems/mruby-compiler/core/parse.y" + case 419: +#line 3239 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); } -#line 8707 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8907 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 416: -#line 3207 "mrbgems/mruby-compiler/core/parse.y" + case 420: +#line 3245 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[0].nd)) { (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0); @@ -8716,383 +8916,383 @@ yyreduce: (yyval.nd) = 0; } } -#line 8720 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8920 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 418: -#line 3221 "mrbgems/mruby-compiler/core/parse.y" + case 422: +#line 3259 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd))); if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd)); } -#line 8729 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8929 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 420: -#line 3229 "mrbgems/mruby-compiler/core/parse.y" + case 424: +#line 3267 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8737 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8937 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 423: -#line 3237 "mrbgems/mruby-compiler/core/parse.y" + case 427: +#line 3275 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8745 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8945 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 425: -#line 3244 "mrbgems/mruby-compiler/core/parse.y" + case 429: +#line 3282 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8753 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8953 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 432: -#line 3258 "mrbgems/mruby-compiler/core/parse.y" + case 436: +#line 3296 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8761 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8961 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 435: -#line 3266 "mrbgems/mruby-compiler/core/parse.y" + case 439: +#line 3304 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8769 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8969 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 436: -#line 3270 "mrbgems/mruby-compiler/core/parse.y" + case 440: +#line 3308 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8777 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8977 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 438: -#line 3277 "mrbgems/mruby-compiler/core/parse.y" + case 442: +#line 3315 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8785 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8985 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 439: -#line 3283 "mrbgems/mruby-compiler/core/parse.y" + case 443: +#line 3321 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8793 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8993 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 440: -#line 3287 "mrbgems/mruby-compiler/core/parse.y" + case 444: +#line 3325 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = p->lex_strterm; p->lex_strterm = NULL; } -#line 8802 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9002 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 441: -#line 3293 "mrbgems/mruby-compiler/core/parse.y" + case 445: +#line 3331 "mrbgems/mruby-compiler/core/parse.y" { p->lex_strterm = (yyvsp[-2].nd); (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 8811 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9011 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 442: -#line 3298 "mrbgems/mruby-compiler/core/parse.y" + case 446: +#line 3336 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 8819 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9019 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 443: -#line 3302 "mrbgems/mruby-compiler/core/parse.y" + case 447: +#line 3340 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 8827 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9027 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 444: -#line 3308 "mrbgems/mruby-compiler/core/parse.y" + case 448: +#line 3346 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8835 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9035 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 445: -#line 3312 "mrbgems/mruby-compiler/core/parse.y" + case 449: +#line 3350 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dxstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8843 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9043 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 446: -#line 3318 "mrbgems/mruby-compiler/core/parse.y" + case 450: +#line 3356 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8851 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9051 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 447: -#line 3322 "mrbgems/mruby-compiler/core/parse.y" + case 451: +#line 3360 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8859 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9059 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 451: -#line 3335 "mrbgems/mruby-compiler/core/parse.y" + case 455: +#line 3373 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); inf->doc = push(inf->doc, new_str(p, "", 0)); heredoc_end(p); } -#line 8869 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9069 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 452: -#line 3341 "mrbgems/mruby-compiler/core/parse.y" + case 456: +#line 3379 "mrbgems/mruby-compiler/core/parse.y" { heredoc_end(p); } -#line 8877 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9077 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 455: -#line 3351 "mrbgems/mruby-compiler/core/parse.y" + case 459: +#line 3389 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); inf->doc = push(inf->doc, (yyvsp[0].nd)); heredoc_treat_nextline(p); } -#line 8887 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9087 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 456: -#line 3357 "mrbgems/mruby-compiler/core/parse.y" + case 460: +#line 3395 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = p->lex_strterm; p->lex_strterm = NULL; } -#line 8896 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9096 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 457: -#line 3363 "mrbgems/mruby-compiler/core/parse.y" + case 461: +#line 3401 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); p->lex_strterm = (yyvsp[-2].nd); inf->doc = push(push(inf->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd)); } -#line 8906 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9106 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 458: -#line 3371 "mrbgems/mruby-compiler/core/parse.y" + case 462: +#line 3409 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); } -#line 8914 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9114 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 459: -#line 3375 "mrbgems/mruby-compiler/core/parse.y" + case 463: +#line 3413 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8922 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9122 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 460: -#line 3382 "mrbgems/mruby-compiler/core/parse.y" + case 464: +#line 3420 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_sym(p, (yyvsp[0].id)); } -#line 8931 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9131 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 461: -#line 3387 "mrbgems/mruby-compiler/core/parse.y" + case 465: +#line 3425 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_dsym(p, new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd)))); } -#line 8940 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9140 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 462: -#line 3394 "mrbgems/mruby-compiler/core/parse.y" + case 466: +#line 3432 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 8948 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9148 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 467: -#line 3404 "mrbgems/mruby-compiler/core/parse.y" + case 471: +#line 3442 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 8956 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9156 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 468: -#line 3408 "mrbgems/mruby-compiler/core/parse.y" + case 472: +#line 3446 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 8964 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9164 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 469: -#line 3414 "mrbgems/mruby-compiler/core/parse.y" + case 473: +#line 3452 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); } -#line 8972 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9172 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 470: -#line 3418 "mrbgems/mruby-compiler/core/parse.y" + case 474: +#line 3456 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_symbols(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8980 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9180 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 473: -#line 3426 "mrbgems/mruby-compiler/core/parse.y" + case 477: +#line 3464 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); } -#line 8988 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9188 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 474: -#line 3430 "mrbgems/mruby-compiler/core/parse.y" + case 478: +#line 3468 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); } -#line 8996 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9196 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 475: -#line 3436 "mrbgems/mruby-compiler/core/parse.y" + case 479: +#line 3474 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_lvar(p, (yyvsp[0].id)); } -#line 9004 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9204 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 476: -#line 3440 "mrbgems/mruby-compiler/core/parse.y" + case 480: +#line 3478 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_ivar(p, (yyvsp[0].id)); } -#line 9012 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9212 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 477: -#line 3444 "mrbgems/mruby-compiler/core/parse.y" + case 481: +#line 3482 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_gvar(p, (yyvsp[0].id)); } -#line 9020 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9220 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 478: -#line 3448 "mrbgems/mruby-compiler/core/parse.y" + case 482: +#line 3486 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_cvar(p, (yyvsp[0].id)); } -#line 9028 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9228 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 479: -#line 3452 "mrbgems/mruby-compiler/core/parse.y" + case 483: +#line 3490 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_const(p, (yyvsp[0].id)); } -#line 9036 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9236 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 480: -#line 3458 "mrbgems/mruby-compiler/core/parse.y" + case 484: +#line 3496 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 9044 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9244 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 481: -#line 3462 "mrbgems/mruby-compiler/core/parse.y" + case 485: +#line 3500 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "can't assign to numbered parameter"); } -#line 9052 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9252 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 482: -#line 3468 "mrbgems/mruby-compiler/core/parse.y" + case 486: +#line 3506 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = var_reference(p, (yyvsp[0].nd)); } -#line 9060 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9260 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 483: -#line 3472 "mrbgems/mruby-compiler/core/parse.y" + case 487: +#line 3510 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nil(p); } -#line 9068 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9268 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 484: -#line 3476 "mrbgems/mruby-compiler/core/parse.y" + case 488: +#line 3514 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_self(p); } -#line 9076 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9276 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 485: -#line 3480 "mrbgems/mruby-compiler/core/parse.y" + case 489: +#line 3518 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_true(p); } -#line 9084 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9284 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 486: -#line 3484 "mrbgems/mruby-compiler/core/parse.y" + case 490: +#line 3522 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_false(p); } -#line 9092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9292 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 487: -#line 3488 "mrbgems/mruby-compiler/core/parse.y" + case 491: +#line 3526 "mrbgems/mruby-compiler/core/parse.y" { const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); if (!fn) { @@ -9100,22 +9300,22 @@ yyreduce: } (yyval.nd) = new_str(p, fn, strlen(fn)); } -#line 9104 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9304 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 488: -#line 3496 "mrbgems/mruby-compiler/core/parse.y" + case 492: +#line 3534 "mrbgems/mruby-compiler/core/parse.y" { char buf[16]; dump_int(p->lineno, buf); (yyval.nd) = new_int(p, buf, 10, 0); } -#line 9115 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9315 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 489: -#line 3503 "mrbgems/mruby-compiler/core/parse.y" + case 493: +#line 3541 "mrbgems/mruby-compiler/core/parse.y" { #ifdef MRB_UTF8_STRING const char *enc = "UTF-8"; @@ -9124,46 +9324,46 @@ yyreduce: #endif (yyval.nd) = new_str(p, enc, strlen(enc)); } -#line 9128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9328 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 492: -#line 3518 "mrbgems/mruby-compiler/core/parse.y" + case 496: +#line 3556 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 9136 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9336 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 493: -#line 3522 "mrbgems/mruby-compiler/core/parse.y" + case 497: +#line 3560 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 9145 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9345 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 494: -#line 3527 "mrbgems/mruby-compiler/core/parse.y" + case 498: +#line 3565 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9153 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9353 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 497: -#line 3543 "mrbgems/mruby-compiler/core/parse.y" + case 501: +#line 3581 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 9163 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9363 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 498: -#line 3549 "mrbgems/mruby-compiler/core/parse.y" + case 502: +#line 3587 "mrbgems/mruby-compiler/core/parse.y" { #if 1 /* til real keyword args implemented */ @@ -9181,11 +9381,11 @@ yyreduce: new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b)); #endif } -#line 9185 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9385 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 499: -#line 3567 "mrbgems/mruby-compiler/core/parse.y" + case 503: +#line 3605 "mrbgems/mruby-compiler/core/parse.y" { #if 1 /* til real keyword args implemented */ @@ -9203,504 +9403,504 @@ yyreduce: new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b)); #endif } -#line 9207 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9407 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 501: -#line 3588 "mrbgems/mruby-compiler/core/parse.y" + case 505: +#line 3626 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9215 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9415 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 502: -#line 3594 "mrbgems/mruby-compiler/core/parse.y" + case 506: +#line 3632 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); } -#line 9223 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9423 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 503: -#line 3600 "mrbgems/mruby-compiler/core/parse.y" + case 507: +#line 3638 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9233 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9433 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 504: -#line 3606 "mrbgems/mruby-compiler/core/parse.y" + case 508: +#line 3644 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } -#line 9242 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9442 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 505: -#line 3613 "mrbgems/mruby-compiler/core/parse.y" + case 509: +#line 3651 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9251 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9451 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 506: -#line 3618 "mrbgems/mruby-compiler/core/parse.y" + case 510: +#line 3656 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } -#line 9260 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9460 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 507: -#line 3625 "mrbgems/mruby-compiler/core/parse.y" + case 511: +#line 3663 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9268 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9468 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 508: -#line 3629 "mrbgems/mruby-compiler/core/parse.y" + case 512: +#line 3667 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9276 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9476 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 509: -#line 3635 "mrbgems/mruby-compiler/core/parse.y" + case 513: +#line 3673 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9284 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9484 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 510: -#line 3639 "mrbgems/mruby-compiler/core/parse.y" + case 514: +#line 3677 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9292 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9492 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 513: -#line 3649 "mrbgems/mruby-compiler/core/parse.y" + case 517: +#line 3687 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_rest_args(p, nsym((yyvsp[0].id))); } -#line 9300 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9500 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 514: -#line 3653 "mrbgems/mruby-compiler/core/parse.y" + case 518: +#line 3691 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_rest_args(p, 0); } -#line 9308 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9508 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 515: -#line 3659 "mrbgems/mruby-compiler/core/parse.y" + case 519: +#line 3697 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 9316 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9516 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 516: -#line 3663 "mrbgems/mruby-compiler/core/parse.y" + case 520: +#line 3701 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 9324 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9524 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 517: -#line 3667 "mrbgems/mruby-compiler/core/parse.y" + case 521: +#line 3705 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 9332 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9532 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 518: -#line 3671 "mrbgems/mruby-compiler/core/parse.y" + case 522: +#line 3709 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 9340 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9540 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 519: -#line 3677 "mrbgems/mruby-compiler/core/parse.y" + case 523: +#line 3715 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9348 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9548 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 520: -#line 3681 "mrbgems/mruby-compiler/core/parse.y" + case 524: +#line 3719 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 9356 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9556 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 521: -#line 3687 "mrbgems/mruby-compiler/core/parse.y" + case 525: +#line 3725 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9364 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9564 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 522: -#line 3691 "mrbgems/mruby-compiler/core/parse.y" + case 526: +#line 3729 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9372 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9572 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 523: -#line 3695 "mrbgems/mruby-compiler/core/parse.y" + case 527: +#line 3733 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 9380 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9580 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 524: -#line 3699 "mrbgems/mruby-compiler/core/parse.y" + case 528: +#line 3737 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9388 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9588 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 525: -#line 3703 "mrbgems/mruby-compiler/core/parse.y" + case 529: +#line 3741 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9396 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9596 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 526: -#line 3707 "mrbgems/mruby-compiler/core/parse.y" + case 530: +#line 3745 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9404 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9604 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 527: -#line 3711 "mrbgems/mruby-compiler/core/parse.y" + case 531: +#line 3749 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 9412 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9612 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 528: -#line 3715 "mrbgems/mruby-compiler/core/parse.y" + case 532: +#line 3753 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9420 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9620 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 529: -#line 3719 "mrbgems/mruby-compiler/core/parse.y" + case 533: +#line 3757 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9428 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9628 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 530: -#line 3723 "mrbgems/mruby-compiler/core/parse.y" + case 534: +#line 3761 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 9436 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9636 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 531: -#line 3727 "mrbgems/mruby-compiler/core/parse.y" + case 535: +#line 3765 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9444 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9644 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 532: -#line 3731 "mrbgems/mruby-compiler/core/parse.y" + case 536: +#line 3769 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9452 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9652 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 533: -#line 3735 "mrbgems/mruby-compiler/core/parse.y" + case 537: +#line 3773 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9460 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9660 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 534: -#line 3739 "mrbgems/mruby-compiler/core/parse.y" + case 538: +#line 3777 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); } -#line 9468 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9668 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 535: -#line 3743 "mrbgems/mruby-compiler/core/parse.y" + case 539: +#line 3781 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(and)); (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); } -#line 9477 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9677 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 536: -#line 3750 "mrbgems/mruby-compiler/core/parse.y" + case 540: +#line 3788 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a constant"); (yyval.nd) = 0; } -#line 9486 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9686 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 537: -#line 3755 "mrbgems/mruby-compiler/core/parse.y" + case 541: +#line 3793 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be an instance variable"); (yyval.nd) = 0; } -#line 9495 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9695 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 538: -#line 3760 "mrbgems/mruby-compiler/core/parse.y" + case 542: +#line 3798 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a global variable"); (yyval.nd) = 0; } -#line 9504 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9704 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 539: -#line 3765 "mrbgems/mruby-compiler/core/parse.y" + case 543: +#line 3803 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a class variable"); (yyval.nd) = 0; } -#line 9513 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9713 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 540: -#line 3770 "mrbgems/mruby-compiler/core/parse.y" + case 544: +#line 3808 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a numbered parameter"); (yyval.nd) = 0; } -#line 9522 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9722 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 541: -#line 3777 "mrbgems/mruby-compiler/core/parse.y" + case 545: +#line 3815 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9530 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9730 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 542: -#line 3781 "mrbgems/mruby-compiler/core/parse.y" + case 546: +#line 3819 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9539 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9739 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 543: -#line 3788 "mrbgems/mruby-compiler/core/parse.y" + case 547: +#line 3826 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_arg(p, (yyvsp[0].id)); } -#line 9547 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9747 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 544: -#line 3792 "mrbgems/mruby-compiler/core/parse.y" + case 548: +#line 3830 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); } -#line 9555 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9755 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 545: -#line 3796 "mrbgems/mruby-compiler/core/parse.y" + case 549: +#line 3834 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car); local_resume(p, (yyvsp[-2].nd)); local_add_f(p, 0); } -#line 9565 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9765 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 546: -#line 3804 "mrbgems/mruby-compiler/core/parse.y" + case 550: +#line 3842 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9573 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9773 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 547: -#line 3808 "mrbgems/mruby-compiler/core/parse.y" + case 551: +#line 3846 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9581 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9781 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 548: -#line 3814 "mrbgems/mruby-compiler/core/parse.y" + case 552: +#line 3852 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[-1].id)); local_nest(p); (yyval.id) = (yyvsp[-1].id); } -#line 9591 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9791 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 549: -#line 3822 "mrbgems/mruby-compiler/core/parse.y" + case 553: +#line 3860 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9601 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9801 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 550: -#line 3830 "mrbgems/mruby-compiler/core/parse.y" + case 554: +#line 3868 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9611 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9811 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 551: -#line 3838 "mrbgems/mruby-compiler/core/parse.y" + case 555: +#line 3876 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9619 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9819 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 552: -#line 3842 "mrbgems/mruby-compiler/core/parse.y" + case 556: +#line 3880 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9627 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9827 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 553: -#line 3848 "mrbgems/mruby-compiler/core/parse.y" + case 557: +#line 3886 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9635 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9835 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 554: -#line 3852 "mrbgems/mruby-compiler/core/parse.y" + case 558: +#line 3890 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9643 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9843 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 557: -#line 3862 "mrbgems/mruby-compiler/core/parse.y" + case 561: +#line 3900 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9652 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9852 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 558: -#line 3867 "mrbgems/mruby-compiler/core/parse.y" + case 562: +#line 3905 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(mul)); (yyval.id) = -1; } -#line 9661 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9861 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 561: -#line 3878 "mrbgems/mruby-compiler/core/parse.y" + case 565: +#line 3916 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9669 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9869 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 562: -#line 3884 "mrbgems/mruby-compiler/core/parse.y" + case 566: +#line 3922 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9677 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9877 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 563: -#line 3888 "mrbgems/mruby-compiler/core/parse.y" + case 567: +#line 3926 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9685 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9885 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 564: -#line 3894 "mrbgems/mruby-compiler/core/parse.y" + case 568: +#line 3932 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 9694 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9894 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 565: -#line 3898 "mrbgems/mruby-compiler/core/parse.y" + case 569: +#line 3936 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_BEG;} -#line 9700 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9900 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 566: -#line 3899 "mrbgems/mruby-compiler/core/parse.y" + case 570: +#line 3937 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-1].nd) == 0) { yyerror(p, "can't define singleton method for ()."); @@ -9723,55 +9923,55 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 9727 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9927 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 568: -#line 3925 "mrbgems/mruby-compiler/core/parse.y" + case 572: +#line 3963 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9735 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9935 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 569: -#line 3931 "mrbgems/mruby-compiler/core/parse.y" + case 573: +#line 3969 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 9744 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9944 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 570: -#line 3936 "mrbgems/mruby-compiler/core/parse.y" + case 574: +#line 3974 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9752 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9952 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 573: -#line 3946 "mrbgems/mruby-compiler/core/parse.y" + case 577: +#line 3984 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9762 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9962 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 574: -#line 3952 "mrbgems/mruby-compiler/core/parse.y" + case 578: +#line 3990 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 9771 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9971 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 575: -#line 3957 "mrbgems/mruby-compiler/core/parse.y" + case 579: +#line 3995 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); if (typen((yyvsp[-2].nd)->car) == NODE_DSTR) { @@ -9781,67 +9981,67 @@ yyreduce: (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd)); } } -#line 9785 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9985 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 576: -#line 3967 "mrbgems/mruby-compiler/core/parse.y" + case 580: +#line 4005 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd)); } -#line 9794 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9994 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 589: -#line 3994 "mrbgems/mruby-compiler/core/parse.y" + case 593: +#line 4032 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = '.'; } -#line 9802 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10002 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 590: -#line 3998 "mrbgems/mruby-compiler/core/parse.y" + case 594: +#line 4036 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = 0; } -#line 9810 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10010 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 592: -#line 4005 "mrbgems/mruby-compiler/core/parse.y" + case 596: +#line 4043 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = tCOLON2; } -#line 9818 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10018 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 601: -#line 4026 "mrbgems/mruby-compiler/core/parse.y" + case 605: +#line 4064 "mrbgems/mruby-compiler/core/parse.y" {yyerrok;} -#line 9824 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10024 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 604: -#line 4032 "mrbgems/mruby-compiler/core/parse.y" + case 608: +#line 4070 "mrbgems/mruby-compiler/core/parse.y" { p->lineno += (yyvsp[0].num); p->column = 0; } -#line 9833 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10033 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 607: -#line 4043 "mrbgems/mruby-compiler/core/parse.y" + case 611: +#line 4081 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 9841 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10041 "mrbgems/mruby-compiler/core/y.tab.c" break; -#line 9845 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10045 "mrbgems/mruby-compiler/core/y.tab.c" default: break; } @@ -10073,7 +10273,7 @@ yyreturn: #endif return yyresult; } -#line 4047 "mrbgems/mruby-compiler/core/parse.y" +#line 4085 "mrbgems/mruby-compiler/core/parse.y" #define pylval (*((YYSTYPE*)(p->ylval))) diff --git a/mrbgems/mruby-complex/src/complex.c b/mrbgems/mruby-complex/src/complex.c index fe66e0e37..2a2f9c49b 100644 --- a/mrbgems/mruby-complex/src/complex.c +++ b/mrbgems/mruby-complex/src/complex.c @@ -184,7 +184,7 @@ complex_add(mrb_state *mrb, mrb_value x) default: { - mrb_float z = mrb_to_flo(mrb, y); + mrb_float z = mrb_as_float(mrb, y); return mrb_complex_new(mrb, p1->real+z, p1->imaginary); } } @@ -205,7 +205,7 @@ complex_sub(mrb_state *mrb, mrb_value x) default: { - mrb_float z = mrb_to_flo(mrb, y); + mrb_float z = mrb_as_float(mrb, y); return mrb_complex_new(mrb, p1->real-z, p1->imaginary); } } @@ -227,16 +227,12 @@ complex_mul(mrb_state *mrb, mrb_value x) default: { - mrb_float z = mrb_to_flo(mrb, y); + mrb_float z = mrb_as_float(mrb, y); return mrb_complex_new(mrb, p1->real*z, p1->imaginary*z); } } } -#ifndef MRB_NO_FLOAT -mrb_float mrb_div_flo(mrb_float, mrb_float); -#endif - /* Arithmetic on (significand, exponent) pairs avoids premature overflow in complex division */ struct float_pair { @@ -273,7 +269,7 @@ static void div_pair(struct float_pair *q, struct float_pair const *a, struct float_pair const *b) { - q->s = mrb_div_flo(a->s, b->s); + q->s = mrb_div_float(a->s, b->s); q->x = a->x - b->x; } @@ -285,8 +281,8 @@ complex_div(mrb_state *mrb, mrb_value self) a = complex_ptr(mrb, self); if (mrb_type(rhs) != MRB_TT_COMPLEX) { - mrb_float f = mrb_to_flo(mrb, rhs); - return complex_new(mrb, mrb_div_flo(a->real, f), mrb_div_flo(a->imaginary, f)); + mrb_float f = mrb_as_float(mrb, rhs); + return complex_new(mrb, mrb_div_float(a->real, f), mrb_div_float(a->imaginary, f)); } struct float_pair ar, ai, br, bi; @@ -356,7 +352,7 @@ cpx_int_div(mrb_state *mrb, mrb_value x) x = complex_new(mrb, (mrb_float)a, 0); return complex_div(mrb, x); default: - return mrb_float_value(mrb, mrb_div_flo((mrb_float)a, mrb_to_flo(mrb, y))); + return mrb_float_value(mrb, mrb_div_float((mrb_float)a, mrb_as_float(mrb, y))); } } @@ -381,7 +377,7 @@ cpx_int_quo(mrb_state *mrb, mrb_value x) x = complex_new(mrb, (mrb_float)a, 0); return complex_div(mrb, x); default: - return mrb_float_value(mrb, mrb_div_flo((mrb_float)a, mrb_to_flo(mrb, y))); + return mrb_float_value(mrb, mrb_div_float((mrb_float)a, mrb_as_float(mrb, y))); } } @@ -395,10 +391,10 @@ cpx_flo_div(mrb_state *mrb, mrb_value x) case MRB_TT_COMPLEX: return complex_div(mrb, complex_new(mrb, a, 0)); case MRB_TT_FLOAT: - a = mrb_div_flo(a, mrb_float(y)); + a = mrb_div_float(a, mrb_float(y)); return mrb_float_value(mrb, a); default: - a = mrb_div_flo(a, mrb_to_flo(mrb, y)); + a = mrb_div_float(a, mrb_as_float(mrb, y)); return mrb_float_value(mrb, a); } } @@ -429,10 +425,10 @@ void mrb_mruby_complex_gem_init(mrb_state *mrb) mrb_define_method(mrb, comp, "/", complex_div, MRB_ARGS_REQ(1)); mrb_define_method(mrb, comp, "quo", complex_div, MRB_ARGS_REQ(1)); mrb_define_method(mrb, comp, "==", complex_eq, MRB_ARGS_REQ(1)); - mrb_define_method(mrb, mrb->integer_class, "/", cpx_int_div, MRB_ARGS_REQ(1)); /* overrride */ - mrb_define_method(mrb, mrb->integer_class, "quo", cpx_int_quo, MRB_ARGS_REQ(1)); /* overrride */ - mrb_define_method(mrb, mrb->float_class, "/", cpx_flo_div, MRB_ARGS_REQ(1)); /* overrride */ - mrb_define_method(mrb, mrb->float_class, "quo", cpx_flo_div, MRB_ARGS_REQ(1)); /* overrride */ + mrb_define_method(mrb, mrb->integer_class, "/", cpx_int_div, MRB_ARGS_REQ(1)); /* override */ + mrb_define_method(mrb, mrb->integer_class, "quo", cpx_int_quo, MRB_ARGS_REQ(1)); /* override */ + mrb_define_method(mrb, mrb->float_class, "/", cpx_flo_div, MRB_ARGS_REQ(1)); /* override */ + mrb_define_method(mrb, mrb->float_class, "quo", cpx_flo_div, MRB_ARGS_REQ(1)); /* override */ } void diff --git a/mrbgems/mruby-error/src/exception.c b/mrbgems/mruby-error/src/exception.c index ca26b8819..ffa7d53bf 100644 --- a/mrbgems/mruby-error/src/exception.c +++ b/mrbgems/mruby-error/src/exception.c @@ -31,7 +31,7 @@ mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data, mrb_func_t ensure, mrb_gc_arena_restore(mrb, ai); mrb_gc_protect(mrb, result); if (error) { - mrb_exc_raise(mrb, result); /* rethrow catched exceptions */ + mrb_exc_raise(mrb, result); /* rethrow caught exceptions */ } return result; } diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c index 508f5ffcb..dc0017e1c 100644 --- a/mrbgems/mruby-eval/src/eval.c +++ b/mrbgems/mruby-eval/src/eval.c @@ -11,6 +11,7 @@ struct REnv *mrb_env_new(mrb_state *mrb, struct mrb_context *c, mrb_callinfo *ci, int nstacks, mrb_value *stack, struct RClass *tc); mrb_value mrb_exec_irep(mrb_state *mrb, mrb_value self, struct RProc *p, mrb_func_t posthook); mrb_value mrb_obj_instance_eval(mrb_state *mrb, mrb_value self); +mrb_value mrb_mod_module_eval(mrb_state*, mrb_value); void mrb_codedump_all(mrb_state*, struct RProc*); void mrb_proc_merge_lvar(mrb_state *mrb, mrb_irep *irep, struct REnv *env, int num, const mrb_sym *lv, const mrb_value *stack); @@ -221,11 +222,41 @@ f_instance_eval(mrb_state *mrb, mrb_value self) } } +static mrb_value +f_class_eval(mrb_state *mrb, mrb_value self) +{ + mrb_value b; + mrb_int argc; const mrb_value *argv; + + mrb_get_args(mrb, "*!&", &argv, &argc, &b); + + if (mrb_nil_p(b)) { + const char *s; + mrb_int len; + const char *file = NULL; + mrb_int line = 1; + struct RProc *proc; + + mrb_get_args(mrb, "s|zi", &s, &len, &file, &line); + proc = create_proc_from_string(mrb, s, len, mrb_nil_value(), file, line); + MRB_PROC_SET_TARGET_CLASS(proc, mrb_class_ptr(self)); + mrb_assert(!MRB_PROC_CFUNC_P(proc)); + mrb_vm_ci_target_class_set(mrb->c->ci, mrb_class_ptr(self)); + return exec_irep(mrb, self, proc, NULL); + } + else { + mrb_get_args(mrb, "&", &b); + return mrb_mod_module_eval(mrb, self); + } +} + void mrb_mruby_eval_gem_init(mrb_state* mrb) { mrb_define_module_function(mrb, mrb->kernel_module, "eval", f_eval, MRB_ARGS_ARG(1, 3)); mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), MRB_SYM(instance_eval), f_instance_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK()); + mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(module_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK()); + mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(class_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK()); } void diff --git a/mrbgems/mruby-eval/test/eval.rb b/mrbgems/mruby-eval/test/eval.rb index e95171223..524b0b959 100644 --- a/mrbgems/mruby-eval/test/eval.rb +++ b/mrbgems/mruby-eval/test/eval.rb @@ -151,3 +151,11 @@ assert('Access numbered parameter from eval') do hoge.fuga(3) { _1 + eval("_1") } } end + +assert('Module#class_eval with string') do + c = Class.new + c.class_eval "def foo() 42; end" + cc = c.new + assert_true cc.respond_to?(:foo) + assert_equal 42, c.new.foo +end diff --git a/mrbgems/mruby-io/src/file.c b/mrbgems/mruby-io/src/file.c index 03a6a070d..b9e1eca03 100644 --- a/mrbgems/mruby-io/src/file.c +++ b/mrbgems/mruby-io/src/file.c @@ -497,7 +497,7 @@ mrb_file_truncate(mrb_state *mrb, mrb_value self) mrb_value lenv = mrb_get_arg1(mrb); fd = mrb_io_fileno(mrb, self); - length = mrb_int(mrb, lenv); + length = mrb_as_int(mrb, lenv); if (mrb_ftruncate(fd, length) != 0) { mrb_raise(mrb, E_IO_ERROR, "ftruncate failed"); } diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index 234d7b1fc..0c79660a8 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -169,7 +169,7 @@ mrb_io_mode_to_flags(mrb_state *mrb, mrb_value mode) } else { int flags = 0; - mrb_int flags0 = mrb_int(mrb, mode); + mrb_int flags0 = mrb_as_int(mrb, mode); switch (flags0 & MRB_O_ACCMODE) { case MRB_O_RDONLY: @@ -1415,7 +1415,7 @@ mrb_io_sync(mrb_state *mrb, mrb_value self) static off_t value2off(mrb_state *mrb, mrb_value offv) { - return (off_t)mrb_int(mrb, offv); + return (off_t)mrb_as_int(mrb, offv); } /* diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c index 7afa6fa5f..15b4c5f72 100644 --- a/mrbgems/mruby-kernel-ext/src/kernel.c +++ b/mrbgems/mruby-kernel-ext/src/kernel.c @@ -8,57 +8,58 @@ static mrb_value mrb_f_caller(mrb_state *mrb, mrb_value self) { - mrb_value bt, v, length; + mrb_value bt, v; mrb_int bt_len, argc, lev, n; + argc = mrb_get_args(mrb, "|oi", &v, &n); + bt = mrb_get_backtrace(mrb); bt_len = RARRAY_LEN(bt); - argc = mrb_get_args(mrb, "|oo", &v, &length); switch (argc) { - case 0: - lev = 1; - n = bt_len - lev; - break; - case 1: - if (mrb_range_p(v)) { - mrb_int beg, len; - if (mrb_range_beg_len(mrb, v, &beg, &len, bt_len, TRUE) == MRB_RANGE_OK) { - lev = beg; - n = len; - } - else { - return mrb_nil_value(); - } + case 0: + lev = 1; + n = bt_len - 1; + break; + case 1: + if (mrb_range_p(v)) { + mrb_int beg, len; + if (mrb_range_beg_len(mrb, v, &beg, &len, bt_len, TRUE) == MRB_RANGE_OK) { + lev = beg; + n = len; } else { - lev = mrb_int(mrb, v); - if (lev < 0) { - mrb_raisef(mrb, E_ARGUMENT_ERROR, "negative level (%v)", v); - } - n = bt_len - lev; + return mrb_nil_value(); } - break; - case 2: - lev = mrb_int(mrb, v); - n = mrb_int(mrb, length); + } + else { + lev = mrb_as_int(mrb, v); if (lev < 0) { mrb_raisef(mrb, E_ARGUMENT_ERROR, "negative level (%v)", v); } - if (n < 0) { - mrb_raisef(mrb, E_ARGUMENT_ERROR, "negative size (%v)", length); - } - break; - default: - lev = n = 0; - break; + n = bt_len - lev; + } + break; + case 2: + lev = mrb_as_int(mrb, v); + break; + default: + /* not reached */ + lev = n = 0; + break; } - - if (n == 0) { + if (lev >= bt_len) return mrb_nil_value(); + if (lev < 0) { + mrb_raisef(mrb, E_ARGUMENT_ERROR, "negative level (%v)", v); + } + if (n < 0) { + mrb_raisef(mrb, E_ARGUMENT_ERROR, "negative size (%d)", n); + } + if (n == 0 || bt_len <= lev) { return mrb_ary_new(mrb); } - - return mrb_funcall_id(mrb, bt, MRB_OPSYM(aref), 2, mrb_fixnum_value(lev), mrb_fixnum_value(n)); + if (bt_len <= n + lev) n = bt_len - lev - 1; + return mrb_ary_new_from_values(mrb, n, RARRAY_PTR(bt)+lev+1); } /* @@ -131,7 +132,7 @@ mrb_f_float(mrb_state *mrb, mrb_value self) { mrb_value arg = mrb_get_arg1(mrb); - return mrb_Float(mrb, arg); + return mrb_to_float(mrb, arg); } #endif diff --git a/mrbgems/mruby-metaprog/test/metaprog.rb b/mrbgems/mruby-metaprog/test/metaprog.rb index d63913020..4d2651702 100644 --- a/mrbgems/mruby-metaprog/test/metaprog.rb +++ b/mrbgems/mruby-metaprog/test/metaprog.rb @@ -104,6 +104,17 @@ assert('Kernel#global_variables', '15.3.1.3.14') do assert_equal(1, variables2.size - variables1.size) end +assert('Kernel#local_variables', '15.3.1.3.28') do + assert_equal Array, local_variables.class + + def local_var_list + a = "hello" + local_variables + end + + assert_equal [:a], local_var_list +end + assert('Kernel.local_variables', '15.3.1.2.7') do a, b = 0, 1 a += b diff --git a/mrbgems/mruby-numeric-ext/src/numeric_ext.c b/mrbgems/mruby-numeric-ext/src/numeric_ext.c index dbc7f39d9..00b13174f 100644 --- a/mrbgems/mruby-numeric-ext/src/numeric_ext.c +++ b/mrbgems/mruby-numeric-ext/src/numeric_ext.c @@ -15,7 +15,7 @@ mrb_int_allbits(mrb_state *mrb, mrb_value self) mrb_int n, m; mrb_get_args(mrb, "i", &m); - n = mrb_int(mrb, self); + n = mrb_as_int(mrb, self); return mrb_bool_value((n & m) == m); } @@ -31,7 +31,7 @@ mrb_int_anybits(mrb_state *mrb, mrb_value self) mrb_int n, m; mrb_get_args(mrb, "i", &m); - n = mrb_int(mrb, self); + n = mrb_as_int(mrb, self); return mrb_bool_value((n & m) != 0); } @@ -47,7 +47,7 @@ mrb_int_nobits(mrb_state *mrb, mrb_value self) mrb_int n, m; mrb_get_args(mrb, "i", &m); - n = mrb_int(mrb, self); + n = mrb_as_int(mrb, self); return mrb_bool_value((n & m) == 0); } diff --git a/mrbgems/mruby-pack/README.md b/mrbgems/mruby-pack/README.md index efa51cc1b..717c13ddc 100644 --- a/mrbgems/mruby-pack/README.md +++ b/mrbgems/mruby-pack/README.md @@ -8,7 +8,7 @@ mruby-pack provides `Array#pack` and `String#unpack` for mruby. Add the line below into your build configuration: ``` - conf.gem :github => 'iij/mruby-pack' + conf.gem :core => 'mruby-pack' ``` There is no dependency on other mrbgems. diff --git a/mrbgems/mruby-pack/src/pack.c b/mrbgems/mruby-pack/src/pack.c index e52171d6b..6c2a06fde 100644 --- a/mrbgems/mruby-pack/src/pack.c +++ b/mrbgems/mruby-pack/src/pack.c @@ -23,13 +23,14 @@ struct tmpl { int idx; }; -enum { +enum pack_dir { PACK_DIR_CHAR, /* C */ PACK_DIR_SHORT, /* S */ PACK_DIR_LONG, /* L */ PACK_DIR_QUAD, /* Q */ //PACK_DIR_INT, /* i */ //PACK_DIR_VAX, + PACK_DIR_BER, /* w */ PACK_DIR_UTF8, /* U */ //PACK_DIR_BER, PACK_DIR_DOUBLE, /* E */ @@ -37,30 +38,33 @@ enum { PACK_DIR_STR, /* A */ PACK_DIR_HEX, /* h */ PACK_DIR_BASE64, /* m */ + PACK_DIR_QENC, /* M */ PACK_DIR_NUL, /* x */ + PACK_DIR_BACK, /* X */ + PACK_DIR_ABS, /* @ */ PACK_DIR_INVALID }; -enum { +enum pack_type { PACK_TYPE_INTEGER, PACK_TYPE_FLOAT, PACK_TYPE_STRING, PACK_TYPE_NONE }; -#define PACK_FLAG_s 0x00000001 /* native size ("_" "!") */ -#define PACK_FLAG_a 0x00000002 /* null padding ("a") */ -#define PACK_FLAG_Z 0x00000004 /* append nul char ("z") */ -#define PACK_FLAG_SIGNED 0x00000008 /* native size ("_" "!") */ -#define PACK_FLAG_GT 0x00000010 /* big endian (">") */ -#define PACK_FLAG_LT 0x00000020 /* little endian ("<") */ -#define PACK_FLAG_WIDTH 0x00000040 /* "count" is "width" */ -#define PACK_FLAG_LSB 0x00000080 /* LSB / low nibble first */ -#define PACK_FLAG_COUNT2 0x00000100 /* "count" is special... */ -#define PACK_FLAG_LITTLEENDIAN 0x00000200 /* little endian actually */ +#define PACK_FLAG_s 0x00000001 /* native size ("_" "!") */ +#define PACK_FLAG_a 0x00000002 /* null padding ("a") */ +#define PACK_FLAG_Z 0x00000004 /* append nul char ("z") */ +#define PACK_FLAG_SIGNED 0x00000008 /* native size ("_" "!") */ +#define PACK_FLAG_GT 0x00000010 /* big endian (">") */ +#define PACK_FLAG_LT 0x00000020 /* little endian ("<") */ +#define PACK_FLAG_WIDTH 0x00000040 /* "count" is "width" */ +#define PACK_FLAG_LSB 0x00000080 /* LSB / low nibble first */ +#define PACK_FLAG_COUNT2 0x00000100 /* "count" is special... */ +#define PACK_FLAG_LITTLEENDIAN 0x00000200 /* little endian actually */ -#define PACK_BASE64_IGNORE 0xff -#define PACK_BASE64_PADDING 0xfe +#define PACK_BASE64_IGNORE 0xff +#define PACK_BASE64_PADDING 0xfe const static unsigned char base64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; @@ -76,7 +80,7 @@ hex2int(unsigned char ch) else if (ch >= 'a' && ch <= 'f') return 10 + (ch - 'a'); else - return 0; + return -1; } static void @@ -375,6 +379,46 @@ unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un return 8; } +static int +pack_w(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags) +{ + mrb_int n = mrb_integer(o); + mrb_int i; + char *p; + + if (n < 0) { + mrb_raise(mrb, E_ARGUMENT_ERROR, "can't compress negative numbers"); + } + for (i=1; i<sizeof(mrb_int)+1; i++) { + mrb_int mask = ~((1L<<(7*i))-1); + if ((n & mask) == 0) break; + } + str = str_len_ensure(mrb, str, sidx + i); + p = RSTRING_PTR(str); + for (mrb_int j=i; j>0; p++,j--) { + mrb_int x = (n>>(7*(j-1)))&0x7f; + *p = (char)x; + if (j > 1) *p |= 0x80; + } + return i; +} + +static int +unpack_w(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, unsigned int flags) +{ + mrb_int i, n = 0; + const unsigned char *p = src; + const unsigned char *e = p + srclen; + + for (i=1; p<e; p++,i++) { + n <<= 7; + n |= *p & 0x7f; + if ((*p & 0x80) == 0) break; + } + mrb_ary_push(mrb, ary, mrb_int_value(mrb, n)); + return i; +} + #ifndef MRB_NO_FLOAT static int pack_double(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags) @@ -504,7 +548,7 @@ unpack_float(mrb_state *mrb, const unsigned char * src, int srclen, mrb_value ar #endif static int -pack_utf8(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, long count, unsigned int flags) +pack_utf8(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, int count, unsigned int flags) { char utf8[4]; int len = 0; @@ -621,7 +665,7 @@ unpack_utf8(mrb_state *mrb, const unsigned char * src, int srclen, mrb_value ary } static int -pack_a(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, long count, unsigned int flags) +pack_a(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, int count, unsigned int flags) { mrb_int copylen, slen, padlen; char *dptr, *dptr0, pad, *sptr; @@ -659,7 +703,7 @@ pack_a(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, long count, u } static int -unpack_a(mrb_state *mrb, const void *src, int slen, mrb_value ary, long count, unsigned int flags) +unpack_a(mrb_state *mrb, const void *src, int slen, mrb_value ary, int count, unsigned int flags) { mrb_value dst; const char *cp, *sptr; @@ -693,7 +737,7 @@ unpack_a(mrb_state *mrb, const void *src, int slen, mrb_value ary, long count, u static int -pack_h(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, long count, unsigned int flags) +pack_h(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, int count, unsigned int flags) { unsigned int a, ashift, b, bshift; long slen; @@ -724,10 +768,12 @@ pack_h(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, long count, u a = b = 0; if (slen > 0) { a = hex2int(*sptr++); + if (a < 0) break; slen--; } if (slen > 0) { b = hex2int(*sptr++); + if (b < 0) break; slen--; } *dptr++ = (a << ashift) + (b << bshift); @@ -783,9 +829,8 @@ unpack_h(mrb_state *mrb, const void *src, int slen, mrb_value ary, int count, un return (int)(sptr - sptr0); } - static int -pack_m(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, long count, unsigned int flags) +pack_m(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, int count) { mrb_int dstlen; unsigned long l; @@ -851,7 +896,7 @@ pack_m(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, long count, u } static int -unpack_m(mrb_state *mrb, const void *src, int slen, mrb_value ary, unsigned int flags) +unpack_m(mrb_state *mrb, const void *src, int slen, mrb_value ary) { mrb_value dst; int dlen; @@ -874,13 +919,13 @@ unpack_m(mrb_state *mrb, const void *src, int slen, mrb_value ary, unsigned int if (slen-- == 0) goto done; c = *sptr++; - if (c >= sizeof(base64_dec_tab)) - continue; - ch[i] = base64_dec_tab[c]; - if (ch[i] == PACK_BASE64_PADDING) { - ch[i] = 0; - padding++; - } + if (c >= sizeof(base64_dec_tab)) + continue; + ch[i] = base64_dec_tab[c]; + if (ch[i] == PACK_BASE64_PADDING) { + ch[i] = 0; + padding++; + } } while (c >= sizeof(base64_dec_tab) || ch[i] == PACK_BASE64_IGNORE); } @@ -907,25 +952,117 @@ done: } static int -pack_x(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, long count, unsigned int flags) +pack_M(mrb_state *mrb, mrb_value src, mrb_value dst, mrb_int didx, int count) +{ + static const char hex_table[] = "0123456789ABCDEF"; + char buff[1024]; + char *s = RSTRING_PTR(src); + char *send = s + RSTRING_LEN(src); + int i = 0, n = 0, prev = EOF; + int dlen = 0; + + if (count <= 1) count = 72; + while (s < send) { + if ((*s > 126) || + (*s < 32 && *s != '\n' && *s != '\t') || + (*s == '=')) { + buff[i++] = '='; + buff[i++] = hex_table[(*s & 0xf0) >> 4]; + buff[i++] = hex_table[*s & 0x0f]; + n += 3; + prev = EOF; + } + else if (*s == '\n') { + if (prev == ' ' || prev == '\t') { + buff[i++] = '='; + buff[i++] = *s; + } + buff[i++] = *s; + n = 0; + prev = *s; + } + else { + buff[i++] = *s; + n++; + prev = *s; + } + if (n > count) { + buff[i++] = '='; + buff[i++] = '\n'; + n = 0; + prev = '\n'; + } + if (i > 1024 - 5) { + str_len_ensure(mrb, dst, didx+i); + memcpy(RSTRING_PTR(dst), buff, i); + dlen += i; + i = 0; + } + s++; + } + if (n > 0) { + buff[i++] = '='; + buff[i++] = '\n'; + } + if (i > 0) { + str_len_ensure(mrb, dst, didx+i); + memcpy(RSTRING_PTR(dst), buff, i); + dlen += i; + } + return dlen; +} + +static int +unpack_M(mrb_state *mrb, const void *src, int slen, mrb_value ary) +{ + mrb_value buf = mrb_str_new(mrb, 0, slen); + const char *s = (const char*)src, *ss = s; + const char *send = s + slen; + char *ptr = RSTRING_PTR(buf); + int c1, c2; + + while (s < send) { + if (*s == '=') { + if (++s == send) break; + if (s+1 < send && *s == '\r' && *(s+1) == '\n') + s++; + if (*s != '\n') { + if ((c1 = hex2int(*s)) == -1) break; + if (++s == send) break; + if ((c2 = hex2int(*s)) == -1) break; + *ptr++ = (char)(c1 << 4 | c2); + } + } + else { + *ptr++ = *s; + } + s++; + ss = s; + } + buf = mrb_str_resize(mrb, buf, (mrb_int)(ptr - RSTRING_PTR(buf))); + mrb_str_cat(mrb, buf, ss, send-ss); + mrb_ary_push(mrb, ary, buf); + return slen; +} + +static int +pack_x(mrb_state *mrb, mrb_value dst, mrb_int didx, int count) { long i; - if (count < 0) return 0; dst = str_len_ensure(mrb, dst, didx + count); for (i = 0; i < count; i++) { RSTRING_PTR(dst)[didx + i] = '\0'; } return count; } -static int -unpack_x(mrb_state *mrb, const void *src, int slen, mrb_value ary, int count, unsigned int flags) + +static void +check_x(mrb_state *mrb, int a, int count, char c) { - if (count < 0) return slen; - if (slen < count) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "x outside of string"); + if (a < count) { + mrb_raisef(mrb, E_ARGUMENT_ERROR, "%c outside of string", c); } - return count; } static void @@ -942,10 +1079,12 @@ has_tmpl(const struct tmpl *tmpl) } static void -read_tmpl(mrb_state *mrb, struct tmpl *tmpl, int *dirp, int *typep, int *sizep, int *countp, unsigned int *flagsp) +read_tmpl(mrb_state *mrb, struct tmpl *tmpl, enum pack_dir *dirp, enum pack_type *typep, int *sizep, int *countp, unsigned int *flagsp) { mrb_int t, tlen; - int ch, dir, type, size = 0; + int ch, size = 0; + enum pack_dir dir; + enum pack_type type; int count = 1; unsigned int flags = 0; const char *tptr; @@ -1052,11 +1191,21 @@ alias: size = 4; flags |= PACK_FLAG_SIGNED; break; + case 'w': + dir = PACK_DIR_BER; + type = PACK_TYPE_INTEGER; + flags |= PACK_FLAG_SIGNED; + break; case 'm': dir = PACK_DIR_BASE64; type = PACK_TYPE_STRING; flags |= PACK_FLAG_WIDTH | PACK_FLAG_COUNT2; break; + case 'M': + dir = PACK_DIR_QENC; + type = PACK_TYPE_STRING; + flags |= PACK_FLAG_WIDTH | PACK_FLAG_COUNT2; + break; case 'N': /* = "L>" */ dir = PACK_DIR_LONG; type = PACK_TYPE_INTEGER; @@ -1111,11 +1260,23 @@ alias: dir = PACK_DIR_NUL; type = PACK_TYPE_NONE; break; + case 'X': + dir = PACK_DIR_BACK; + type = PACK_TYPE_NONE; + break; + case '@': + dir = PACK_DIR_ABS; + type = PACK_TYPE_NONE; + break; case 'Z': dir = PACK_DIR_STR; type = PACK_TYPE_STRING; flags |= PACK_FLAG_WIDTH | PACK_FLAG_COUNT2 | PACK_FLAG_Z; break; + case 'p': case 'P': + case '%': + mrb_raisef(mrb, E_ARGUMENT_ERROR, "%c is not supported", (char)t); + break; default: dir = PACK_DIR_INVALID; type = PACK_TYPE_NONE; @@ -1124,19 +1285,21 @@ alias: /* read suffix [0-9*_!<>] */ while (tmpl->idx < tlen) { - ch = tptr[tmpl->idx++]; + ch = tptr[tmpl->idx]; if (ISDIGIT(ch)) { - count = ch - '0'; - while (tmpl->idx < tlen && ISDIGIT(tptr[tmpl->idx])) { - int ch = tptr[tmpl->idx++] - '0'; - if (count+ch > INT_MAX/10) { - mrb_raise(mrb, E_RUNTIME_ERROR, "too big template length"); - } - count = count * 10 + ch; + char *e; + mrb_int n = mrb_int_read(tptr+tmpl->idx, tptr+tlen, &e); + if (e == NULL || n > INT_MAX) { + mrb_raise(mrb, E_RUNTIME_ERROR, "too big template length"); } - continue; /* special case */ + count = (int)n; + tmpl->idx = e - tptr; + continue; } else if (ch == '*') { - count = -1; + if (type == PACK_TYPE_NONE) + count = 0; + else + count = -1; } else if (ch == '_' || ch == '!' || ch == '<' || ch == '>') { if (strchr("sSiIlLqQ", (int)t) == NULL) { mrb_raisef(mrb, E_ARGUMENT_ERROR, "'%c' allowed only after types sSiIlLqQ", ch); @@ -1148,10 +1311,11 @@ alias: } else if (ch == '>') { flags |= PACK_FLAG_GT; } - } else { - tmpl->idx--; + } + else { break; } + tmpl->idx++; } if ((flags & PACK_FLAG_LT) || (!(flags & PACK_FLAG_GT) && littleendian)) { @@ -1173,7 +1337,9 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) struct tmpl tmpl; int count; unsigned int flags; - int dir, ridx, size, type; + enum pack_dir dir; + enum pack_type type; + int ridx, size; prepare_tmpl(mrb, &tmpl); @@ -1186,8 +1352,22 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) if (dir == PACK_DIR_INVALID) continue; else if (dir == PACK_DIR_NUL) { - ridx += pack_x(mrb, mrb_nil_value(), result, ridx, count, flags); - if (ridx < 0) goto overflow; + grow: + if (ridx > INT_MAX - count) goto overflow; + ridx += pack_x(mrb, result, ridx, count); + continue; + } + else if (dir == PACK_DIR_BACK) { + check_x(mrb, ridx, count, 'X'); + ridx -= count; + continue; + } + else if (dir == PACK_DIR_ABS) { + count -= ridx; + if (count > 0) goto grow; + count = -count; + check_x(mrb, ridx, count, '@'); + ridx -= count; continue; } @@ -1205,7 +1385,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) #ifndef MRB_NO_FLOAT else if (type == PACK_TYPE_FLOAT) { if (!mrb_float_p(o)) { - mrb_float f = mrb_to_flo(mrb, o); + mrb_float f = mrb_as_float(mrb, o); o = mrb_float_value(mrb, f); } } @@ -1229,8 +1409,14 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) case PACK_DIR_QUAD: ridx += pack_q(mrb, o, result, ridx, flags); break; + case PACK_DIR_BER: + ridx += pack_w(mrb, o, result, ridx, flags); + break; case PACK_DIR_BASE64: - ridx += pack_m(mrb, o, result, ridx, count, flags); + ridx += pack_m(mrb, o, result, ridx, count); + break; + case PACK_DIR_QENC: + ridx += pack_M(mrb, o, result, ridx, count); break; case PACK_DIR_HEX: ridx += pack_h(mrb, o, result, ridx, count, flags); @@ -1278,7 +1464,9 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) struct tmpl tmpl; int count; unsigned int flags; - int dir, size, type; + enum pack_dir dir; + enum pack_type type; + int size; int srcidx, srclen; const unsigned char *sptr; @@ -1294,7 +1482,18 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) if (dir == PACK_DIR_INVALID) continue; else if (dir == PACK_DIR_NUL) { - srcidx += unpack_x(mrb, sptr, srclen - srcidx, result, count, flags); + check_x(mrb, srclen-srcidx, count, 'x'); + srcidx += count; + continue; + } + else if (dir == PACK_DIR_BACK) { + check_x(mrb, srcidx, count, 'X'); + srcidx -= count; + continue; + } + else if (dir == PACK_DIR_ABS) { + check_x(mrb, srclen, count, '@'); + srcidx = count; continue; } @@ -1308,7 +1507,12 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) srcidx += unpack_a(mrb, sptr, srclen - srcidx, result, count, flags); break; case PACK_DIR_BASE64: - srcidx += unpack_m(mrb, sptr, srclen - srcidx, result, flags); + srcidx += unpack_m(mrb, sptr, srclen - srcidx, result); + break; + case PACK_DIR_QENC: + srcidx += unpack_M(mrb, sptr, srclen - srcidx, result); + break; + default: break; } continue; @@ -1336,6 +1540,9 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) case PACK_DIR_QUAD: srcidx += unpack_q(mrb, sptr, srclen - srcidx, result, flags); break; + case PACK_DIR_BER: + srcidx += unpack_w(mrb, sptr, srclen - srcidx, result, flags); + break; #ifndef MRB_NO_FLOAT case PACK_DIR_FLOAT: srcidx += unpack_float(mrb, sptr, srclen - srcidx, result, flags); diff --git a/mrbgems/mruby-pack/test/pack.rb b/mrbgems/mruby-pack/test/pack.rb index a248174a5..16db6607b 100644 --- a/mrbgems/mruby-pack/test/pack.rb +++ b/mrbgems/mruby-pack/test/pack.rb @@ -10,78 +10,59 @@ def assert_pack tmpl, packed, unpacked end # pack & unpack 'm' (base64) -assert('[""].pack("m")') do +assert('pack("m")') do assert_pack "m", "", [""] -end - -assert('["\0"].pack("m")') do assert_pack "m", "AA==\n", ["\0"] -end - -assert('["\0\0"].pack("m")') do assert_pack "m", "AAA=\n", ["\0\0"] -end - -assert('["\0\0\0"].pack("m")') do assert_pack "m", "AAAA\n", ["\0\0\0"] -end - -assert('["abc..xyzABC..XYZ"].pack("m")') do assert_pack "m", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJT\nVFVWV1hZWg==\n", ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] -end -assert('"YWJ...".unpack("m") should "abc..xyzABC..XYZ"') do ary = ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] assert_equal ary, "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJT\nVFVWV1hZWg==\n".unpack("m") assert_equal ary, "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWg==\n".unpack("m") -end -assert('["A", "B"].pack') do assert_equal "QQ==\n", ["A", "B"].pack("m50") assert_equal ["A"], "QQ==\n".unpack("m50") assert_equal "QQ==Qg==", ["A", "B"].pack("m0 m0") assert_equal ["A", "B"], "QQ==Qg==".unpack("m10 m10") + assert_pack "m0", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWg==", ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] end -assert('["abc..xyzABC..XYZ"].pack("m0")') do - assert_pack "m0", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWg==", ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] +# pack & unpack 'M' (Quoted-printable) +assert('pack("M")') do + assert_pack "M", "123=\n", ["123"] + assert_pack "M", "=3D\n", ["=\n"] + assert_pack "M", "=E3=81=82=\n", ["あ"] + + assert_equal ["123"], "123=\n".unpack("M") + assert_equal ["=\n"], "=3D\n".unpack("M") + assert_equal ["あ"], "=E3=81=82=\n".unpack("M") end # pack & unpack 'H' -assert('["3031"].pack("H*")') do +assert('pack("H")') do assert_pack "H*", "01", ["3031"] -end - -assert('["10"].pack("H*")') do assert_pack "H*", "\020", ["10"] end -assert('[0,1,127,128,255].pack("C*")') do +assert('pack("C")') do assert_pack "C*", "\x00\x01\x7F\x80\xFF", [0, 1, 127, 128, 255] end -# pack "a" -assert('["abc"].pack("a")') do +assert('pack("a")') do assert_equal "a", ["abc"].pack("a") assert_equal "abc", ["abc"].pack("a*") assert_equal "abc\0", ["abc"].pack("a4") -end -# upack "a" -assert('["abc"].pack("a")') do assert_equal ["abc\0"], "abc\0".unpack("a4") assert_equal ["abc "], "abc ".unpack("a4") end -# pack "A" -assert('["abc"].pack("A")') do +assert('pack("A")') do assert_equal "a", ["abc"].pack("A") assert_equal "abc", ["abc"].pack("A*") assert_equal "abc ", ["abc"].pack("A4") -end -# upack "A" -assert('["abc"].pack("A")') do assert_equal ["abc"], "abc\0".unpack("A4") assert_equal ["abc"], "abc ".unpack("A4") end @@ -143,6 +124,12 @@ assert 'pack/unpack "I"' do assert_pack 'I', str, [12345] end +assert 'pack/unpack "w"' do + for x in [0,1,127,128,16383,16384,65535,65536] + assert_equal [x], [x].pack("w").unpack("w") + end +end + assert 'pack/unpack "U"' do assert_equal [], "".unpack("U") assert_equal [], "".unpack("U*") diff --git a/mrbgems/mruby-range-ext/src/range.c b/mrbgems/mruby-range-ext/src/range.c index 7b919eb90..2d021f31f 100644 --- a/mrbgems/mruby-range-ext/src/range.c +++ b/mrbgems/mruby-range-ext/src/range.c @@ -81,7 +81,7 @@ range_size(mrb_state *mrb, mrb_value range) beg = RANGE_BEG(r); end = RANGE_END(r); - if ((mrb_fixnum_p(beg) || mrb_float_p(beg)) && mrb_nil_p(end)) { + if ((mrb_integer_p(beg) || mrb_float_p(beg)) && mrb_nil_p(end)) { return mrb_float_value(mrb, INFINITY); } @@ -136,7 +136,7 @@ range_size(mrb_state *mrb, mrb_value range) beg = RANGE_BEG(r); end = RANGE_END(r); - if (mrb_fixnum_p(beg) && mrb_nil_p(end)) { + if (mrb_integer_p(beg) && mrb_nil_p(end)) { return mrb_nil_value(); } @@ -147,7 +147,7 @@ range_size(mrb_state *mrb, mrb_value range) mrb_int b = mrb_integer(end); mrb_int c = b - a + excl; - return mrb_fixnum_value(c); + return mrb_int_value(mrb, c); } return mrb_nil_value(); } diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c index 2dfabe504..2cbd88131 100644 --- a/mrbgems/mruby-rational/src/rational.c +++ b/mrbgems/mruby-rational/src/rational.c @@ -255,20 +255,20 @@ rational_s_new(mrb_state *mrb, mrb_value self) } else { mrb_float numf = (mrb_float)numerator; - mrb_float denomf = mrb_to_flo(mrb, denomv); + mrb_float denomf = mrb_as_float(mrb, denomv); return rational_new_f(mrb, numf/denomf); } } else { - mrb_float numf = mrb_to_flo(mrb, numv); + mrb_float numf = mrb_as_float(mrb, numv); mrb_float denomf; if (mrb_integer_p(denomv)) { denomf = (mrb_float)mrb_integer(denomv); } else { - denomf = mrb_to_flo(mrb, denomv); + denomf = mrb_as_float(mrb, denomv); } return rational_new_f(mrb, numf/denomf); } @@ -278,7 +278,7 @@ rational_s_new(mrb_state *mrb, mrb_value self) #ifndef MRB_NO_FLOAT static mrb_float -rat_to_flo(struct mrb_rational *p) +rat_float(struct mrb_rational *p) { mrb_float f; @@ -296,7 +296,7 @@ static mrb_value rational_to_f(mrb_state *mrb, mrb_value self) { struct mrb_rational *p = rational_ptr(mrb, self); - return mrb_float_value(mrb, rat_to_flo(p)); + return mrb_float_value(mrb, rat_float(p)); } #endif @@ -346,8 +346,8 @@ rational_m(mrb_state *mrb, mrb_value self) return rational_new_i(mrb, mrb_integer(a), mrb_integer(b)); } else { - mrb_float x = mrb_to_flo(mrb, a); - mrb_float y = mrb_to_flo(mrb, b); + mrb_float x = mrb_as_float(mrb, a); + mrb_float y = mrb_as_float(mrb, b); return rational_new_f(mrb, x/y); } #endif @@ -436,7 +436,7 @@ rational_cmp(mrb_state *mrb, mrb_value x) #ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: { - mrb_float a = rat_to_flo(p1), b = mrb_to_flo(mrb, y); + mrb_float a = rat_float(p1), b = mrb_as_float(mrb, y); if (a > b) return mrb_fixnum_value(1); else if (a < b) @@ -458,7 +458,7 @@ rational_cmp(mrb_state *mrb, mrb_value x) #endif #ifdef MRB_USE_COMPLEX case MRB_TT_COMPLEX: - x = mrb_complex_new(mrb, rat_to_flo(p1), 0); + x = mrb_complex_new(mrb, rat_float(p1), 0); return mrb_funcall_id(mrb, x, MRB_OPSYM(cmp), 1, y); #endif default: @@ -480,10 +480,6 @@ rational_minus(mrb_state *mrb, mrb_value x) return rational_new(mrb, -n, p->denominator); } -#ifndef MRB_NO_FLOAT -mrb_float mrb_div_flo(mrb_float, mrb_float); -#endif - static mrb_value rational_add(mrb_state *mrb, mrb_value x) { @@ -514,7 +510,7 @@ rational_add(mrb_state *mrb, mrb_value x) case MRB_TT_FLOAT: { mrb_float z = p1->numerator + mrb_float(y) * p1->denominator; - return mrb_float_value(mrb, mrb_div_flo(z, (mrb_float)p1->denominator)); + return mrb_float_value(mrb, mrb_div_float(z, (mrb_float)p1->denominator)); } #endif @@ -551,7 +547,7 @@ rational_sub(mrb_state *mrb, mrb_value x) #if defined(MRB_USE_COMPLEX) case MRB_TT_COMPLEX: - x = mrb_complex_new(mrb, rat_to_flo(p1), 0); + x = mrb_complex_new(mrb, rat_float(p1), 0); return mrb_funcall_id(mrb, x, MRB_OPSYM(sub), 1, y); #endif @@ -559,8 +555,8 @@ rational_sub(mrb_state *mrb, mrb_value x) case MRB_TT_FLOAT: default: { - mrb_float z = p1->numerator - mrb_to_flo(mrb, y) * p1->denominator; - return mrb_float_value(mrb, mrb_div_flo(z, (mrb_float)p1->denominator)); + mrb_float z = p1->numerator - mrb_as_float(mrb, y) * p1->denominator; + return mrb_float_value(mrb, mrb_div_float(z, (mrb_float)p1->denominator)); } #else default: @@ -596,7 +592,7 @@ rational_mul(mrb_state *mrb, mrb_value x) case MRB_TT_FLOAT: { mrb_float z = p1->numerator * mrb_float(y); - return mrb_float_value(mrb, mrb_div_flo(z, (mrb_float)p1->denominator)); + return mrb_float_value(mrb, mrb_div_float(z, (mrb_float)p1->denominator)); } #endif @@ -630,7 +626,7 @@ mrb_rational_div(mrb_state *mrb, mrb_value x) #if defined(MRB_USE_COMPLEX) case MRB_TT_COMPLEX: - x = mrb_complex_new(mrb, rat_to_flo(p1), 0); + x = mrb_complex_new(mrb, rat_float(p1), 0); return mrb_funcall_id(mrb, x, MRB_OPSYM(div), 1, y); #endif @@ -638,8 +634,8 @@ mrb_rational_div(mrb_state *mrb, mrb_value x) #ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: { - mrb_float z = mrb_div_flo((mrb_float)p1->numerator, mrb_to_flo(mrb, y)); - return mrb_float_value(mrb, mrb_div_flo(z, (mrb_float)p1->denominator)); + mrb_float z = mrb_div_float((mrb_float)p1->numerator, mrb_as_float(mrb, y)); + return mrb_float_value(mrb, mrb_div_float(z, (mrb_float)p1->denominator)); } #else mrb_raise(mrb, E_TYPE_ERROR, "non integer division"); @@ -656,7 +652,7 @@ mrb_int mrb_div_int(mrb_state *, mrb_int, mrb_int); * redefine Integer#/ */ static mrb_value -rat_int_div(mrb_state *mrb, mrb_value x) +rational_int_div(mrb_state *mrb, mrb_value x) { mrb_value y = mrb_get_arg1(mrb); mrb_int a = mrb_integer(x); @@ -673,7 +669,7 @@ rat_int_div(mrb_state *mrb, mrb_value x) case MRB_TT_FLOAT: mrb_raise(mrb, E_TYPE_ERROR, "non integer multiplication"); #else - return mrb_float_value(mrb, mrb_div_flo((mrb_float)a, mrb_to_flo(mrb, y))); + return mrb_float_value(mrb, mrb_div_float((mrb_float)a, mrb_as_float(mrb, y))); #endif } } @@ -684,7 +680,7 @@ rat_int_div(mrb_state *mrb, mrb_value x) */ static mrb_value -rat_int_quo(mrb_state *mrb, mrb_value x) +rational_int_quo(mrb_state *mrb, mrb_value x) { mrb_value y = mrb_get_arg1(mrb); mrb_int a = mrb_integer(x); @@ -700,7 +696,7 @@ rat_int_quo(mrb_state *mrb, mrb_value x) #ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non integer multiplication"); #else - return mrb_float_value(mrb, mrb_div_flo((mrb_float)a, mrb_to_flo(mrb, y))); + return mrb_float_value(mrb, mrb_div_float((mrb_float)a, mrb_as_float(mrb, y))); #endif } } @@ -732,8 +728,8 @@ void mrb_mruby_rational_gem_init(mrb_state *mrb) mrb_define_method(mrb, rat, "quo", rational_div, MRB_ARGS_REQ(1)); mrb_define_method(mrb, mrb->integer_class, "to_r", fix_to_r, MRB_ARGS_NONE()); #ifndef MRB_USE_COMPLEX - mrb_define_method(mrb, mrb->integer_class, "/", rat_int_div, MRB_ARGS_REQ(1)); /* overrride */ - mrb_define_method(mrb, mrb->integer_class, "quo", rat_int_quo, MRB_ARGS_REQ(1)); /* overrride */ + mrb_define_method(mrb, mrb->integer_class, "/", rational_int_div, MRB_ARGS_REQ(1)); /* override */ + mrb_define_method(mrb, mrb->integer_class, "quo", rational_int_quo, MRB_ARGS_REQ(1)); /* override */ #endif mrb_define_method(mrb, mrb->kernel_module, "Rational", rational_m, MRB_ARGS_ARG(1,1)); } diff --git a/mrbgems/mruby-sleep/mrbgem.rake b/mrbgems/mruby-sleep/mrbgem.rake index 7a303b81c..024106a48 100644 --- a/mrbgems/mruby-sleep/mrbgem.rake +++ b/mrbgems/mruby-sleep/mrbgem.rake @@ -1,5 +1,5 @@ MRuby::Gem::Specification.new('mruby-sleep') do |spec| spec.license = 'MIT' spec.authors = ['MATSUMOTO Ryosuke', 'mruby developers'] - spec.version = '0.0.1' + spec.summary = 'Kernel#sleep and Kernel#usleep' end diff --git a/mrbgems/mruby-socket/src/socket.c b/mrbgems/mruby-socket/src/socket.c index 28418fa12..c7de66d41 100644 --- a/mrbgems/mruby-socket/src/socket.c +++ b/mrbgems/mruby-socket/src/socket.c @@ -65,52 +65,52 @@ #ifdef _WIN32 static const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) { - if (af == AF_INET) - { - struct sockaddr_in in; - memset(&in, 0, sizeof(in)); - in.sin_family = AF_INET; - memcpy(&in.sin_addr, src, sizeof(struct in_addr)); - getnameinfo((struct sockaddr *)&in, sizeof(struct - sockaddr_in), dst, cnt, NULL, 0, NI_NUMERICHOST); - return dst; - } - else if (af == AF_INET6) - { - struct sockaddr_in6 in; - memset(&in, 0, sizeof(in)); - in.sin6_family = AF_INET6; - memcpy(&in.sin6_addr, src, sizeof(struct in_addr6)); - getnameinfo((struct sockaddr *)&in, sizeof(struct - sockaddr_in6), dst, cnt, NULL, 0, NI_NUMERICHOST); - return dst; - } - return NULL; + if (af == AF_INET) + { + struct sockaddr_in in; + memset(&in, 0, sizeof(in)); + in.sin_family = AF_INET; + memcpy(&in.sin_addr, src, sizeof(struct in_addr)); + getnameinfo((struct sockaddr *)&in, sizeof(struct + sockaddr_in), dst, cnt, NULL, 0, NI_NUMERICHOST); + return dst; + } + else if (af == AF_INET6) + { + struct sockaddr_in6 in; + memset(&in, 0, sizeof(in)); + in.sin6_family = AF_INET6; + memcpy(&in.sin6_addr, src, sizeof(struct in_addr6)); + getnameinfo((struct sockaddr *)&in, sizeof(struct + sockaddr_in6), dst, cnt, NULL, 0, NI_NUMERICHOST); + return dst; + } + return NULL; } static int inet_pton(int af, const char *src, void *dst) { - struct addrinfo hints, *res, *ressave; + struct addrinfo hints, *res, *ressave; - memset(&hints, 0, sizeof(struct addrinfo)); - hints.ai_family = af; + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = af; - if (getaddrinfo(src, NULL, &hints, &res) != 0) - { - printf("Couldn't resolve host %s\n", src); - return -1; - } + if (getaddrinfo(src, NULL, &hints, &res) != 0) + { + printf("Couldn't resolve host %s\n", src); + return -1; + } - ressave = res; + ressave = res; - while (res) - { - memcpy(dst, res->ai_addr, res->ai_addrlen); - res = res->ai_next; - } + while (res) + { + memcpy(dst, res->ai_addr, res->ai_addrlen); + res = res->ai_next; + } - freeaddrinfo(ressave); - return 0; + freeaddrinfo(ressave); + return 0; } #endif @@ -142,7 +142,7 @@ mrb_addrinfo_getaddrinfo(mrb_state *mrb, mrb_value klass) if (mrb_string_p(service)) { servname = RSTRING_CSTR(mrb, service); } else if (mrb_integer_p(service)) { - servname = RSTRING_PTR(mrb_fixnum_to_str(mrb, service, 10)); + servname = RSTRING_PTR(mrb_integer_to_str(mrb, service, 10)); } else if (mrb_nil_p(service)) { servname = NULL; } else { @@ -574,7 +574,7 @@ mrb_ipsocket_recvfrom(mrb_state *mrb, mrb_value self) buf = mrb_str_new_capa(mrb, maxlen); socklen = sizeof(ss); n = recvfrom(fd, RSTRING_PTR(buf), (fsize_t)maxlen, (int)flags, - (struct sockaddr *)&ss, &socklen); + (struct sockaddr *)&ss, &socklen); if (n == -1) { mrb_sys_fail(mrb, "recvfrom"); } @@ -938,8 +938,8 @@ mrb_mruby_socket_gem_init(mrb_state* mrb) constants = mrb_define_module_under(mrb, sock, "Constants"); #define define_const(SYM) \ - do { \ - mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM)); \ + do { \ + mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM)); \ } while (0) #include "const.cstub" diff --git a/mrbgems/mruby-sprintf/src/sprintf.c b/mrbgems/mruby-sprintf/src/sprintf.c index 839ee4dc4..ea9d74d95 100644 --- a/mrbgems/mruby-sprintf/src/sprintf.c +++ b/mrbgems/mruby-sprintf/src/sprintf.c @@ -21,9 +21,6 @@ #define EXTENDSIGN(n, l) (((~0U << (n)) >> (((n)*(l)) % BITSPERDIG)) & ~(~0U << (n))) mrb_value mrb_str_format(mrb_state *, mrb_int, const mrb_value *, mrb_value); -#ifndef MRB_NO_FLOAT -static void fmt_setup(char*,size_t,int,int,mrb_int,mrb_int); -#endif static char* remove_sign_bits(char *str, int base) @@ -71,35 +68,24 @@ sign_bits(int base, const char *p) return c; } -static mrb_value -mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base) +static char * +mrb_uint_to_cstr(char *buf, size_t len, mrb_int num, int base) { - char buf[66], *b = buf + sizeof buf; - mrb_int num = mrb_integer(x); - const int mask = base -1; + char *b = buf + len - 1; + const int mask = base-1; int shift; -#ifdef MRB_INT64 - uint64_t val = (uint64_t)num; -#else - uint32_t val = (uint32_t)num; -#endif + mrb_uint val = (uint64_t)num; char d; - switch (base) { - case 2: - shift = 1; - break; - case 8: - shift = 3; - break; - case 16: - shift = 4; - break; - default: - mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %d", base); - } if (num == 0) { - return mrb_str_new_lit(mrb, "0"); + buf[0] = '0'; buf[1] = '\0'; + return buf; + } + switch (base) { + case 16: d = 'f'; shift = 4; break; + case 8: d = '7'; shift = 3; break; + case 2: d = '1'; shift = 1; break; + default: return NULL; } *--b = '\0'; do { @@ -108,19 +94,12 @@ mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base) if (num < 0) { b = remove_sign_bits(b, base); - switch (base) { - case 16: d = 'f'; break; - case 8: d = '7'; break; - case 2: d = '1'; break; - default: d = 0; break; - } - if (d && *b != d) { *--b = d; } } - return mrb_str_new_cstr(mrb, b); + return b; } #define FNONE 0 @@ -133,7 +112,52 @@ mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base) #define FPREC 64 #define FPREC0 128 -#define CHECK(l) do {\ +#ifndef MRB_NO_FLOAT +static int +fmt_float(char *buf, size_t buf_size, char fmt, int flags, mrb_int width, int prec, mrb_float f) +{ + char sign = '\0'; + int left_align = 0; + int zero_pad = 0; + + if (flags & FSHARP) fmt |= 0x80; + if (flags & FPLUS) sign = '+'; + if (flags & FMINUS) left_align = 1; + if (flags & FZERO) zero_pad = 1; + if (flags & FSPACE) sign = ' '; + + int len = mrb_format_float(f, buf, buf_size, fmt, prec, sign); + + // buf[0] < '0' returns true if the first character is space, + or - + // buf[1] < '9' matches a digit, and doesn't match when we get back +nan or +inf + if (buf[0] < '0' && buf[1] <= '9' && zero_pad) { + buf++; + width--; + len--; + } + if (*buf < '0' || *buf >= '9') { + // For inf or nan, we don't want to zero pad. + zero_pad = 0; + } + if (len >= width) { + return len; + } + buf[width] = '\0'; + if (left_align) { + memset(&buf[len], ' ', width - len); + return width; + } + memmove(&buf[width - len], buf, len); + if (zero_pad) { + memset(buf, '0', width - len); + } else { + memset(buf, ' ', width - len); + } + return width; +} +#endif + +#define CHECK(l) do { \ while ((l) >= bsiz - blen) {\ if (bsiz > MRB_INT_MAX/2) mrb_raise(mrb, E_ARGUMENT_ERROR, "too big specifier"); \ bsiz*=2;\ @@ -221,7 +245,6 @@ check_name_arg(mrb_state *mrb, int posarg, const char *name, size_t len) #define GETASTER(num) do { \ mrb_value tmp_v; \ t = p++; \ - n = 0; \ GETNUM(n, val); \ if (*p == '$') { \ tmp_v = GETPOSARG(n); \ @@ -230,27 +253,17 @@ check_name_arg(mrb_state *mrb, int posarg, const char *name, size_t len) tmp_v = GETNEXTARG(); \ p = t; \ } \ - num = mrb_int(mrb, tmp_v); \ + num = mrb_as_int(mrb, tmp_v); \ } while (0) static const char * -get_num(mrb_state *mrb, const char *p, const char *end, mrb_int *valp) +get_num(mrb_state *mrb, const char *p, const char *end, int *valp) { - mrb_int next_n = *valp; - for (; p < end && ISDIGIT(*p); p++) { - if (mrb_int_mul_overflow(10, next_n, &next_n)) { - return NULL; - } - if (MRB_INT_MAX - (*p - '0') < next_n) { - return NULL; - } - next_n += *p - '0'; - } - if (p >= end) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "malformed format string - %%*[0-9]"); - } - *valp = next_n; - return p; + char *e; + mrb_int n = mrb_int_read(p, end, &e); + if (e == NULL || n > INT_MAX) return NULL; + *valp = (int)n; + return e; } static void @@ -326,10 +339,6 @@ get_hash(mrb_state *mrb, mrb_value *hash, mrb_int argc, const mrb_value *argv) * | equal to the precision, or in dd.dddd form otherwise. * | The precision specifies the number of significant digits. * G | Equivalent to 'g', but use an uppercase 'E' in exponent form. - * a | Convert floating-point argument as [-]0xh.hhhhp[+-]dd, - * | which is consisted from optional sign, "0x", fraction part - * | as hexadecimal, "p", and exponential part as decimal. - * A | Equivalent to 'a', but use uppercase 'X' and 'P'. * * Field | Other Format * ------+-------------------------------------------------------------- @@ -364,7 +373,7 @@ get_hash(mrb_state *mrb, mrb_value *hash, mrb_int argc, const mrb_value *argv) * | | For the conversions 'x', 'X', 'b' and 'B' * | | on non-zero, prefix the result with "0x", * | | "0X", "0b" and "0B", respectively. - * | | For 'a', 'A', 'e', 'E', 'f', 'g', and 'G', + * | | For 'e', 'E', 'f', 'g', and 'G', * | | force a decimal point to be added, * | | even if no digits follow. * | | For 'g' and 'G', do not remove trailing zeros. @@ -547,50 +556,6 @@ mrb_f_sprintf(mrb_state *mrb, mrb_value obj) } } -static int -mrb_int2str(char *buf, size_t len, mrb_int n) -{ -#ifdef MRB_NO_STDIO - char *bufend = buf + len; - char *p = bufend - 1; - - if (len < 1) return -1; - - *p -- = '\0'; - len --; - - if (n < 0) { - if (len < 1) return -1; - - *p -- = '-'; - len --; - n = -n; - } - - if (n > 0) { - for (; n > 0; len --, n /= 10) { - if (len < 1) return -1; - - *p -- = '0' + (n % 10); - } - p ++; - } - else if (len > 0) { - *p = '0'; - len --; - } - else { - return -1; - } - - memmove(buf, p, bufend - p); - - return bufend - p - 1; -#else - return snprintf(buf, len, "%" MRB_PRId, n); -#endif /* MRB_NO_STDIO */ -} - mrb_value mrb_str_format(mrb_state *mrb, mrb_int argc, const mrb_value *argv, mrb_value fmt) { @@ -599,9 +564,9 @@ mrb_str_format(mrb_state *mrb, mrb_int argc, const mrb_value *argv, mrb_value fm mrb_int blen; mrb_int bsiz; mrb_value result; - mrb_int n; - mrb_int width; - mrb_int prec; + int n; + int width; + int prec; int nextarg = 1; int posarg = 0; mrb_value nextvalue; @@ -688,7 +653,6 @@ retry: case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - n = 0; GETNUM(n, width); if (*p == '$') { if (!mrb_undef_p(nextvalue)) { @@ -745,7 +709,6 @@ retry: } flags |= FPREC|FPREC0; - prec = 0; p++; if (*p == '*') { GETASTER(prec); @@ -755,7 +718,6 @@ retry: p++; goto retry; } - GETNUM(prec, precision); goto retry; @@ -898,9 +860,8 @@ retry: switch (mrb_type(val)) { #ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: - val = mrb_flo_to_fixnum(mrb, val); - if (mrb_integer_p(val)) goto bin_retry; - break; + val = mrb_float_to_integer(mrb, val); + goto bin_retry; #endif case MRB_TT_STRING: val = mrb_str_to_inum(mrb, val, 0, TRUE); @@ -909,8 +870,8 @@ retry: v = mrb_integer(val); break; default: - val = mrb_Integer(mrb, val); - goto bin_retry; + v = mrb_as_int(mrb, val); + break; } switch (*p) { @@ -946,21 +907,15 @@ retry: sc = '-'; width--; } - mrb_assert(base == 10); - mrb_int2str(nbuf, sizeof(nbuf)-1, v); - s = nbuf; + s = mrb_int_to_cstr(nbuf, sizeof(nbuf), v, base); if (v < 0) s++; /* skip minus sign */ } else { - s = nbuf; + /* print as unsigned */ + s = mrb_uint_to_cstr(nbuf, sizeof(nbuf), v, base); if (v < 0) { dots = 1; - val = mrb_fix2binstr(mrb, mrb_int_value(mrb, v), base); } - else { - val = mrb_fixnum_to_str(mrb, mrb_int_value(mrb, v), base); - } - strncpy(++s, RSTRING_PTR(val), sizeof(nbuf)-2); } { size_t size; @@ -1053,15 +1008,12 @@ retry: case 'g': case 'G': case 'e': - case 'E': - case 'a': - case 'A': { + case 'E': { mrb_value val = GETARG(); double fval; mrb_int need = 6; - char fbuf[64]; - fval = mrb_float(mrb_Float(mrb, val)); + fval = mrb_as_float(mrb, val); if (!isfinite(fval)) { const char *expr; const mrb_int elen = 3; @@ -1121,8 +1073,7 @@ retry: need += 20; CHECK(need); - fmt_setup(fbuf, sizeof(fbuf), *p, flags, width, prec); - n = mrb_float_to_cstr(mrb, &buf[blen], need, fbuf, fval); + n = fmt_float(&buf[blen], need, *p, flags, width, prec, fval); if (n < 0 || n >= need) { mrb_raise(mrb, E_RUNTIME_ERROR, "formatting error"); } @@ -1149,35 +1100,6 @@ retry: return result; } -#ifndef MRB_NO_FLOAT -static void -fmt_setup(char *buf, size_t size, int c, int flags, mrb_int width, mrb_int prec) -{ - char *end = buf + size; - int n; - - *buf++ = '%'; - if (flags & FSHARP) *buf++ = '#'; - if (flags & FPLUS) *buf++ = '+'; - if (flags & FMINUS) *buf++ = '-'; - if (flags & FZERO) *buf++ = '0'; - if (flags & FSPACE) *buf++ = ' '; - - if (flags & FWIDTH) { - n = mrb_int2str(buf, end - buf, width); - buf += n; - } - - if (flags & FPREC) { - *buf ++ = '.'; - n = mrb_int2str(buf, end - buf, prec); - buf += n; - } - - *buf++ = c; - *buf = '\0'; -} -#endif void mrb_mruby_sprintf_gem_init(mrb_state *mrb) diff --git a/mrbgems/mruby-sprintf/test/sprintf.rb b/mrbgems/mruby-sprintf/test/sprintf.rb index 0a8166bae..aedc2787a 100644 --- a/mrbgems/mruby-sprintf/test/sprintf.rb +++ b/mrbgems/mruby-sprintf/test/sprintf.rb @@ -10,11 +10,11 @@ assert('String#%') do assert_equal 15, ("%b" % (1<<14)).size skip unless Object.const_defined?(:Float) assert_equal "1.0", "%3.1f" % 1.01 - assert_equal " 1234567.12", "% 4.2f" % 1234567.123456789 - assert_equal "1234567.12", "%-4.2f" % 1234567.123456789 - assert_equal "+1234567.12", "%+4.2f" % 1234567.123456789 - assert_equal "1234567.12", "%04.2f" % 1234567.123456789 - assert_equal "00000000001234567.12", "%020.2f" % 1234567.123456789 + assert_equal " 12345.12", "% 4.2f" % 12345.1234 + assert_equal "12345.12", "%-4.2f" % 12345.12345 + assert_equal "+12345.12", "%+4.2f" % 12345.1234 + assert_equal "12345.12", "%04.2f" % 12345.12345 + assert_equal "0012345.12", "%010.2f" % 12345.1234 end assert('String#% with inf') do diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index ff113dd95..84d566fda 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -465,8 +465,6 @@ class String end def __upto_endless(&block) - return to_enum(:__upto_endless) unless block - len = self.length # both edges are all digits bi = self.to_i(10) diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index 09cbf7995..158cb5193 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -35,7 +35,7 @@ str_casecmp_p(const char *s1, mrb_int len1, const char *s2, mrb_int len2) static mrb_value int_chr_binary(mrb_state *mrb, mrb_value num) { - mrb_int cp = mrb_int(mrb, num); + mrb_int cp = mrb_as_int(mrb, num); char c; mrb_value str; @@ -262,7 +262,7 @@ enum tr_pattern_type { <range> ::= <ch> '-' <ch> */ struct tr_pattern { - uint8_t type; // 1:in-order, 2:range + uint8_t type; // 1:in-order, 2:range mrb_bool flag_reverse : 1; mrb_bool flag_on_heap : 1; uint16_t n; @@ -329,9 +329,9 @@ tr_parse_pattern(mrb_state *mrb, struct tr_pattern *ret, const mrb_value v_patte mrb_int len; while (i < pattern_length) { - if ((i+2) < pattern_length && pattern[i] != '\\' && pattern[i+1] == '-') + if ((i+2) < pattern_length && pattern[i] != '\\' && pattern[i+1] == '-') break; - i++; + i++; } len = i - start_pos; @@ -375,7 +375,7 @@ tr_find_character(const struct tr_pattern *pat, const char *pat_str, int ch) if (pat->type == TR_IN_ORDER) { int i; for (i = 0; i < pat->n; i++) { - if (pat_str[pat->val.start_pos + i] == ch) ret = n_sum + i; + if (pat_str[pat->val.start_pos + i] == ch) ret = n_sum + i; } } else if (pat->type == TR_RANGE) { @@ -509,7 +509,7 @@ str_tr(mrb_state *mrb, mrb_value str, mrb_value p1, mrb_value p2, mrb_bool squee if (n >= 0) { flag_changed = TRUE; if (rep == NULL) { - j--; + j--; } else { mrb_int c = tr_get_character(rep, RSTRING_PTR(p2), n); @@ -521,8 +521,8 @@ str_tr(mrb_state *mrb, mrb_value str, mrb_value p1, mrb_value p2, mrb_bool squee if (c > 0x80) { mrb_raisef(mrb, E_ARGUMENT_ERROR, "character (%i) out of range", c); } - lastch = c; - s[i] = (char)c; + lastch = c; + s[i] = (char)c; } } } diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index 54afefd74..df76d7a33 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -435,7 +435,7 @@ mrb_struct_aref(mrb_state *mrb, mrb_value s) if (mrb_symbol_p(idx)) { return struct_aref_sym(mrb, s, mrb_symbol(idx)); } - return struct_aref_int(mrb, s, mrb_int(mrb, idx)); + return struct_aref_int(mrb, s, mrb_as_int(mrb, idx)); } static mrb_value @@ -499,7 +499,7 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s) return mrb_struct_aset_sym(mrb, s, mrb_symbol(idx), val); } - i = mrb_int(mrb, idx); + i = mrb_as_int(mrb, idx); if (i < 0) i = RSTRUCT_LEN(s) + i; if (i < 0) { mrb_raisef(mrb, E_INDEX_ERROR, diff --git a/mrbgems/mruby-test/driver.c b/mrbgems/mruby-test/driver.c index 958e87dd1..23f172198 100644 --- a/mrbgems/mruby-test/driver.c +++ b/mrbgems/mruby-test/driver.c @@ -220,9 +220,9 @@ mrb_init_test_driver(mrb_state *mrb, mrb_bool verbose) mrbtest = mrb_define_module(mrb, "Mrbtest"); - mrb_define_const(mrb, mrbtest, "FIXNUM_MAX", mrb_fixnum_value(MRB_INT_MAX)); - mrb_define_const(mrb, mrbtest, "FIXNUM_MIN", mrb_fixnum_value(MRB_INT_MIN)); - mrb_define_const(mrb, mrbtest, "FIXNUM_BIT", mrb_fixnum_value(MRB_INT_BIT)); + mrb_define_const(mrb, mrbtest, "FIXNUM_MAX", mrb_int_value(mrb, MRB_INT_MAX)); + mrb_define_const(mrb, mrbtest, "FIXNUM_MIN", mrb_int_value(mrb, MRB_INT_MIN)); + mrb_define_const(mrb, mrbtest, "FIXNUM_BIT", mrb_int_value(mrb, MRB_INT_BIT)); #ifndef MRB_NO_FLOAT #ifdef MRB_USE_FLOAT32 diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c index 2a5e9dd6b..299d4d7e1 100644 --- a/mrbgems/mruby-time/src/time.c +++ b/mrbgems/mruby-time/src/time.c @@ -85,8 +85,12 @@ double round(double x) { /** end of Time class configuration */ -#ifndef NO_GETTIMEOFDAY -# ifdef _WIN32 +#if (defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0) && defined(CLOCK_REALTIME) +# define USE_CLOCK_GETTIME +#endif + +#if !defined(NO_GETTIMEOFDAY) +# if defined(_WIN32) && !defined(USE_CLOCK_GETTIME) # define WIN32_LEAN_AND_MEAN /* don't include winsock.h */ # include <windows.h> # define gettimeofday my_gettimeofday @@ -389,7 +393,7 @@ current_mrb_time(mrb_state *mrb) sec = ts.tv_sec; usec = ts.tv_nsec / 1000; } -#elif (defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0) && defined(CLOCK_REALTIME) +#elif defined(USE_CLOCK_GETTIME) { struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); diff --git a/mrblib/array.rb b/mrblib/array.rb index 18b729128..6b4f74b96 100644 --- a/mrblib/array.rb +++ b/mrblib/array.rb @@ -4,7 +4,6 @@ # # ISO 15.2.12 class Array - ## # Calls the given block for each element of +self+ # and pass the respective element. @@ -193,13 +192,6 @@ class Array return block.call if ret.nil? && block ret end -end - -## -# Array is enumerable -class Array - # ISO 15.2.12.3 - include Enumerable ## # Sort all elements and replace +self+ with these @@ -276,4 +268,10 @@ class Array def to_a self end + alias entries to_a + + ## + # Array is enumerable + # ISO 15.2.12.3 + include Enumerable end diff --git a/mrblib/hash.rb b/mrblib/hash.rb index 085536c6c..ac70f4c70 100644 --- a/mrblib/hash.rb +++ b/mrblib/hash.rb @@ -4,6 +4,12 @@ # ISO 15.2.13 class Hash ## + # Hash is enumerable + # + # ISO 15.2.13.3 + include Enumerable + + ## # Equality---Two hashes are equal if they each contain the same number # of keys and if each key-value pair is equal to (according to # <code>Object#==</code>) the corresponding elements in the other @@ -297,11 +303,3 @@ class Hash h end end - -## -# Hash is enumerable -# -# ISO 15.2.13.3 -class Hash - include Enumerable -end diff --git a/mrblib/range.rb b/mrblib/range.rb index 36886d50c..f808053ca 100644 --- a/mrblib/range.rb +++ b/mrblib/range.rb @@ -3,6 +3,11 @@ # # ISO 15.2.14 class Range + ## + # Range is enumerable + # + # ISO 15.2.14.3 + include Enumerable ## # Calls the given block for each element of +self+ @@ -15,7 +20,7 @@ class Range val = self.begin last = self.end - if val.kind_of?(Fixnum) && last.nil? + if val.kind_of?(Integer) && last.nil? i = val while true block.call(i) @@ -74,16 +79,19 @@ class Range h end + ## + # call-seq: + # rng.to_a -> array + # rng.entries -> array + # + # Returns an array containing the items in the range. + # + # (1..7).to_a #=> [1, 2, 3, 4, 5, 6, 7] + # (1..).to_a #=> RangeError: cannot convert endless range to an array def to_a - raise RangeError, "cannot convert endless range to an array" if self.last.nil? + a = __num_to_a + return a if a super end -end - -## -# Range is enumerable -# -# ISO 15.2.14.3 -class Range - include Enumerable + alias entries to_a end diff --git a/scripts/ci/pre-commit/sort-codespell-wordlist.sh b/scripts/ci/pre-commit/sort-codespell-wordlist.sh new file mode 100755 index 000000000..e5250f0a9 --- /dev/null +++ b/scripts/ci/pre-commit/sort-codespell-wordlist.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +CODESPELL_WORDLIST="codespell.txt" +temp_file=$(mktemp) +sort <"${CODESPELL_WORDLIST}" | uniq >"${temp_file}" +cat "${temp_file}" >"${CODESPELL_WORDLIST}" +rm "${temp_file}" diff --git a/src/array.c b/src/array.c index 739b2b3e1..6a3034962 100644 --- a/src/array.c +++ b/src/array.c @@ -591,6 +591,7 @@ mrb_ary_shift_m(mrb_state *mrb, mrb_value self) }; ary_modify_check(mrb, a); if (len == 0 || n == 0) return mrb_ary_new(mrb); + if (n < 0) mrb_raise(mrb, E_ARGUMENT_ERROR, "negative array shift"); if (n > len) n = len; val = mrb_ary_new_from_values(mrb, n, ARY_PTR(a)); if (ARY_SHARED_P(a)) { @@ -693,19 +694,6 @@ mrb_ary_unshift_m(mrb_state *mrb, mrb_value self) return self; } -MRB_API mrb_value -mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n) -{ - struct RArray *a = mrb_ary_ptr(ary); - mrb_int len = ARY_LEN(a); - - /* range check */ - if (n < 0) n += len; - if (n < 0 || len <= n) return mrb_nil_value(); - - return ARY_PTR(a)[n]; -} - MRB_API void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val) { @@ -1190,15 +1178,16 @@ mrb_ary_empty_p(mrb_state *mrb, mrb_value self) } MRB_API mrb_value -mrb_ary_entry(mrb_value ary, mrb_int offset) +mrb_ary_entry(mrb_value ary, mrb_int n) { - if (offset < 0) { - offset += RARRAY_LEN(ary); - } - if (offset < 0 || RARRAY_LEN(ary) <= offset) { - return mrb_nil_value(); - } - return RARRAY_PTR(ary)[offset]; + struct RArray *a = mrb_ary_ptr(ary); + mrb_int len = ARY_LEN(a); + + /* range check */ + if (n < 0) n += len; + if (n < 0 || len <= n) return mrb_nil_value(); + + return ARY_PTR(a)[n]; } static mrb_value diff --git a/src/backtrace.c b/src/backtrace.c index 6e7e66f8c..7ff1cea6c 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -32,44 +32,63 @@ mrb_value mrb_unpack_backtrace(mrb_state *mrb, mrb_value backtrace); static void each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void *data) { - ptrdiff_t i; - int n = 0; - if (ciidx >= mrb->c->ciend - mrb->c->cibase) ciidx = 10; /* ciidx is broken... */ - for (i=ciidx; i >= 0; i--) { + for (ptrdiff_t i=ciidx; i >= 0; i--) { struct backtrace_location loc; mrb_callinfo *ci; - const mrb_irep *irep; + const mrb_irep *irep = 0; const mrb_code *pc; uint32_t idx; ci = &mrb->c->cibase[i]; - if (!ci->proc) continue; - if (MRB_PROC_CFUNC_P(ci->proc)) continue; - - irep = ci->proc->body.irep; - if (!irep) continue; - - if (mrb->c->cibase[i].pc) { - pc = &mrb->c->cibase[i].pc[-1]; + if (!ci->proc || MRB_PROC_CFUNC_P(ci->proc)) { + loc.lineno = -1; + idx = 0; } else { - continue; + irep = ci->proc->body.irep; + if (!irep) continue; + if (mrb->c->cibase[i].pc) { + pc = &mrb->c->cibase[i].pc[-1]; + } + else { + continue; + } + idx = (uint32_t)(pc - irep->iseq); + loc.lineno = mrb_debug_get_line(mrb, irep, idx); + } + loc.method_id = ci->mid; + if (loc.lineno == -1) { + for (ptrdiff_t j=i-1; j >= 0; j--) { + ci = &mrb->c->cibase[j]; + + if (!ci->proc) continue; + if (MRB_PROC_CFUNC_P(ci->proc)) continue; + + irep = ci->proc->body.irep; + if (!irep) continue; + + if (mrb->c->cibase[j].pc) { + pc = &mrb->c->cibase[j].pc[-1]; + } + else { + continue; + } + + idx = (uint32_t)(pc - irep->iseq); + loc.lineno = mrb_debug_get_line(mrb, irep, idx); + if (loc.lineno > 0) break; + } } - - idx = (uint32_t)(pc - irep->iseq); - loc.lineno = mrb_debug_get_line(mrb, irep, idx); - if (n++ == 0 && loc.lineno == -1 && ci->acc < 0) continue; loc.filename = mrb_debug_get_filename(mrb, irep, idx); if (!loc.filename) { loc.filename = "(unknown)"; } - loc.method_id = ci->mid; func(mrb, &loc, data); } } @@ -85,7 +104,9 @@ print_backtrace(mrb_state *mrb, struct RObject *exc, mrb_value backtrace) FILE *stream = stderr; if (n != 0) { - fprintf(stream, "trace (most recent call last):\n"); + if (n > 1) { + fprintf(stream, "trace (most recent call last):\n"); + } for (i=n-1,loc=&RARRAY_PTR(backtrace)[i]; i>0; i--,loc--) { if (mrb_string_p(*loc)) { fprintf(stream, "\t[%d] %.*s\n", diff --git a/src/cdump.c b/src/cdump.c new file mode 100644 index 000000000..9b7040e58 --- /dev/null +++ b/src/cdump.c @@ -0,0 +1,445 @@ +/* +** dump.c - mruby binary dumper (mrbc binary format) +** +** See Copyright Notice in mruby.h +*/ + +#include <mruby.h> +#include <mruby/string.h> +#include <mruby/dump.h> +#include <mruby/irep.h> +#include <mruby/debug.h> + +#include <string.h> + +#ifndef MRB_NO_STDIO + +#ifndef MRB_NO_FLOAT +#include <mruby/endian.h> +#define MRB_FLOAT_FMT "%.17g" +#endif + +static int +cdump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) +{ + if (p->tt & IREP_TT_NFLAG) { /* number */ + switch (p->tt) { +#ifdef MRB_64BIT + case IREP_TT_INT64: + if (p->u.i64 < INT32_MIN || INT32_MAX < p->u.i64) { + fprintf(fp, "{IREP_TT_INT64, {.i64=%" PRId64 "}},\n", p->u.i64); + } + else { + fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", (int32_t)p->u.i64); + } + break; +#endif + case IREP_TT_INT32: + fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", p->u.i32); + break; + case IREP_TT_FLOAT: +#ifndef MRB_NO_FLOAT + if (p->u.f == 0) { + fprintf(fp, "{IREP_TT_FLOAT, {.f=%#.1f}},\n", p->u.f); + } + else { + fprintf(fp, "{IREP_TT_FLOAT, {.f=" MRB_FLOAT_FMT "}},\n", p->u.f); + } +#endif + break; + case IREP_TT_BIGINT: + { + const char *s = p->u.str; + int len = s[0]+2; + fputs("{IREP_TT_BIGINT, {\"", fp); + for (int i=0; i<len; i++) { + fprintf(fp, "\\x%02x", (int)s[i]&0xff); + } + fputs("\"}},\n", fp); + } + break; + } + } + else { /* string */ + int i, len = p->tt>>2; + const char *s = p->u.str; + fprintf(fp, "{IREP_TT_STR|(%d<<2), {\"", len); + for (i=0; i<len; i++) { + fprintf(fp, "\\x%02x", (int)s[i]&0xff); + } + fputs("\"}},\n", fp); + } + return MRB_DUMP_OK; +} + +static mrb_bool +sym_name_word_p(const char *name, mrb_int len) +{ + if (len == 0) return FALSE; + if (name[0] != '_' && !ISALPHA(name[0])) return FALSE; + for (int i = 1; i < len; i++) { + if (name[i] != '_' && !ISALNUM(name[i])) return FALSE; + } + return TRUE; +} + +static mrb_bool +sym_name_with_equal_p(const char *name, mrb_int len) +{ + return len >= 2 && name[len-1] == '=' && sym_name_word_p(name, len-1); +} + +static mrb_bool +sym_name_with_question_mark_p(const char *name, mrb_int len) +{ + return len >= 2 && name[len-1] == '?' && sym_name_word_p(name, len-1); +} + +static mrb_bool +sym_name_with_bang_p(const char *name, mrb_int len) +{ + return len >= 2 && name[len-1] == '!' && sym_name_word_p(name, len-1); +} + +static mrb_bool +sym_name_ivar_p(const char *name, mrb_int len) +{ + return len >= 2 && name[0] == '@' && sym_name_word_p(name+1, len-1); +} + +static mrb_bool +sym_name_cvar_p(const char *name, mrb_int len) +{ + return len >= 3 && name[0] == '@' && sym_name_ivar_p(name+1, len-1); +} + +#define OPERATOR_SYMBOL(sym_name, name) {name, sym_name, sizeof(sym_name)-1} +struct operator_symbol { + const char *name; + const char *sym_name; + uint16_t sym_name_len; +}; +static const struct operator_symbol operator_table[] = { + OPERATOR_SYMBOL("!", "not"), + OPERATOR_SYMBOL("%", "mod"), + OPERATOR_SYMBOL("&", "and"), + OPERATOR_SYMBOL("*", "mul"), + OPERATOR_SYMBOL("+", "add"), + OPERATOR_SYMBOL("-", "sub"), + OPERATOR_SYMBOL("/", "div"), + OPERATOR_SYMBOL("<", "lt"), + OPERATOR_SYMBOL(">", "gt"), + OPERATOR_SYMBOL("^", "xor"), + OPERATOR_SYMBOL("`", "tick"), + OPERATOR_SYMBOL("|", "or"), + OPERATOR_SYMBOL("~", "neg"), + OPERATOR_SYMBOL("!=", "neq"), + OPERATOR_SYMBOL("!~", "nmatch"), + OPERATOR_SYMBOL("&&", "andand"), + OPERATOR_SYMBOL("**", "pow"), + OPERATOR_SYMBOL("+@", "plus"), + OPERATOR_SYMBOL("-@", "minus"), + OPERATOR_SYMBOL("<<", "lshift"), + OPERATOR_SYMBOL("<=", "le"), + OPERATOR_SYMBOL("==", "eq"), + OPERATOR_SYMBOL("=~", "match"), + OPERATOR_SYMBOL(">=", "ge"), + OPERATOR_SYMBOL(">>", "rshift"), + OPERATOR_SYMBOL("[]", "aref"), + OPERATOR_SYMBOL("||", "oror"), + OPERATOR_SYMBOL("<=>", "cmp"), + OPERATOR_SYMBOL("===", "eqq"), + OPERATOR_SYMBOL("[]=", "aset"), +}; + +static const char* +sym_operator_name(const char *sym_name, mrb_int len) +{ + mrb_sym table_size = sizeof(operator_table)/sizeof(struct operator_symbol); + if (operator_table[table_size-1].sym_name_len < len) return NULL; + + mrb_sym start, idx; + int cmp; + const struct operator_symbol *op_sym; + for (start = 0; table_size != 0; table_size/=2) { + idx = start+table_size/2; + op_sym = &operator_table[idx]; + cmp = (int)len-(int)op_sym->sym_name_len; + if (cmp == 0) { + cmp = memcmp(sym_name, op_sym->sym_name, len); + if (cmp == 0) return op_sym->name; + } + if (0 < cmp) { + start = ++idx; + --table_size; + } + } + return NULL; +} + +static const char* +sym_var_name(mrb_state *mrb, const char *initname, const char *key, int n) +{ + char buf[32]; + mrb_value s = mrb_str_new_cstr(mrb, initname); + mrb_str_cat_lit(mrb, s, "_"); + mrb_str_cat_cstr(mrb, s, key); + mrb_str_cat_lit(mrb, s, "_"); + snprintf(buf, sizeof(buf), "%d", n); + mrb_str_cat_cstr(mrb, s, buf); + return RSTRING_PTR(s); +} + +static int +cdump_sym(mrb_state *mrb, mrb_sym sym, const char *var_name, int idx, mrb_value init_syms_code, FILE *fp) +{ + if (sym == 0) return MRB_DUMP_INVALID_ARGUMENT; + + mrb_int len; + const char *name = mrb_sym_name_len(mrb, sym, &len), *op_name; + if (!name) return MRB_DUMP_INVALID_ARGUMENT; + if (sym_name_word_p(name, len)) { + fprintf(fp, "MRB_SYM(%s)", name); + } + else if (sym_name_with_equal_p(name, len)) { + fprintf(fp, "MRB_SYM_E(%.*s)", (int)(len-1), name); + } + else if (sym_name_with_question_mark_p(name, len)) { + fprintf(fp, "MRB_SYM_Q(%.*s)", (int)(len-1), name); + } + else if (sym_name_with_bang_p(name, len)) { + fprintf(fp, "MRB_SYM_B(%.*s)", (int)(len-1), name); + } + else if (sym_name_ivar_p(name, len)) { + fprintf(fp, "MRB_IVSYM(%s)", name+1); + } + else if (sym_name_cvar_p(name, len)) { + fprintf(fp, "MRB_CVSYM(%s)", name+2); + } + else if ((op_name = sym_operator_name(name, len))) { + fprintf(fp, "MRB_OPSYM(%s)", op_name); + } + else { + char buf[32]; + mrb_value name_obj = mrb_str_new(mrb, name, len); + mrb_str_cat_lit(mrb, init_syms_code, " "); + mrb_str_cat_cstr(mrb, init_syms_code, var_name); + snprintf(buf, sizeof(buf), "[%d] = ", idx); + mrb_str_cat_cstr(mrb, init_syms_code, buf); + mrb_str_cat_lit(mrb, init_syms_code, "mrb_intern_lit(mrb, "); + mrb_str_cat_str(mrb, init_syms_code, mrb_str_dump(mrb, name_obj)); + mrb_str_cat_lit(mrb, init_syms_code, ");\n"); + fputs("0", fp); + } + fputs(", ", fp); + return MRB_DUMP_OK; +} + +static int +cdump_syms(mrb_state *mrb, const char *name, const char *key, int n, int syms_len, const mrb_sym *syms, mrb_value init_syms_code, FILE *fp) +{ + int ai = mrb_gc_arena_save(mrb); + mrb_int code_len = RSTRING_LEN(init_syms_code); + const char *var_name = sym_var_name(mrb, name, key, n); + fprintf(fp, "mrb_DEFINE_SYMS_VAR(%s, %d, (", var_name, syms_len); + for (int i=0; i<syms_len; i++) { + cdump_sym(mrb, syms[i], var_name, i, init_syms_code, fp); + } + fputs("), ", fp); + if (code_len == RSTRING_LEN(init_syms_code)) fputs("const", fp); + fputs(");\n", fp); + mrb_gc_arena_restore(mrb, ai); + return MRB_DUMP_OK; +} + +//Handle the simple/common case of debug_info: +// - 1 file associated with a single irep +// - mrb_debug_line_ary format only +static int +simple_debug_info(mrb_irep_debug_info *info) +{ + if (!info || + info->flen != 1 || + info->files[0]->line_type != mrb_debug_line_ary) { + return 0; + } + return 1; +} + +//Adds debug information to c-structs and +//adds filenames in init_syms_code block +static int +cdump_debug(mrb_state *mrb, const char *name, int n, mrb_irep_debug_info *info, + mrb_value init_syms_code, FILE *fp) +{ + char buffer[256]; + const char *filename; + mrb_int file_len; + int len, i; + + if (!simple_debug_info(info)) + return MRB_DUMP_INVALID_IREP; + + len = info->files[0]->line_entry_count; + + filename = mrb_sym_name_len(mrb, info->files[0]->filename_sym, &file_len); + snprintf(buffer, sizeof(buffer), " %s_debug_file_%d.filename_sym = mrb_intern_lit(mrb,\"", + name, n); + mrb_str_cat_cstr(mrb, init_syms_code, buffer); + mrb_str_cat_cstr(mrb, init_syms_code, filename); + mrb_str_cat_cstr(mrb, init_syms_code, "\");\n"); + + fprintf(fp, "static uint16_t %s_debug_lines_%d[%d] = {", name, n, len); + for (i=0; i<len; i++) { + if (i%10 == 0) fputs("\n", fp); + fprintf(fp, "0x%04x,", info->files[0]->lines.ary[i]); + } + fputs("};\n", fp); + + fprintf(fp, "static mrb_irep_debug_info_file %s_debug_file_%d = {\n", name, n); + fprintf(fp, "%d, %d, %d, mrb_debug_line_ary, {%s_debug_lines_%d}};\n", + info->files[0]->start_pos, + info->files[0]->filename_sym, + info->files[0]->line_entry_count, + name,n); + fprintf(fp, "static mrb_irep_debug_info_file *%s_debug_file_%d_ = &%s_debug_file_%d;\n", name, n, name, n); + + fprintf(fp, "static mrb_irep_debug_info %s_debug_%d = {\n", name, n); + fprintf(fp, "%d, %d, &%s_debug_file_%d_};\n", info->pc_count, info->flen, name, n); + + return MRB_DUMP_OK; +} + +static int +cdump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, const char *name, int n, mrb_value init_syms_code, int *mp) +{ + int i, len; + int max = *mp; + int debug_available = 0; + + /* dump reps */ + if (irep->reps) { + for (i=0,len=irep->rlen; i<len; i++) { + *mp += len; + if (cdump_irep_struct(mrb, irep->reps[i], flags, fp, name, max+i, init_syms_code, mp) != MRB_DUMP_OK) + return MRB_DUMP_INVALID_ARGUMENT; + } + fprintf(fp, "static const mrb_irep *%s_reps_%d[%d] = {\n", name, n, len); + for (i=0,len=irep->rlen; i<len; i++) { + fprintf(fp, " &%s_irep_%d,\n", name, max+i); + } + fputs("};\n", fp); + } + /* dump pool */ + if (irep->pool) { + len=irep->plen; + fprintf(fp, "static const mrb_pool_value %s_pool_%d[%d] = {\n", name, n, len); + for (i=0; i<len; i++) { + if (cdump_pool(mrb, &irep->pool[i], fp) != MRB_DUMP_OK) + return MRB_DUMP_INVALID_ARGUMENT; + } + fputs("};\n", fp); + } + /* dump syms */ + if (irep->syms) { + cdump_syms(mrb, name, "syms", n, irep->slen, irep->syms, init_syms_code, fp); + } + /* dump iseq */ + len=irep->ilen+sizeof(struct mrb_irep_catch_handler)*irep->clen; + fprintf(fp, "static const mrb_code %s_iseq_%d[%d] = {", name, n, len); + for (i=0; i<len; i++) { + if (i%20 == 0) fputs("\n", fp); + fprintf(fp, "0x%02x,", irep->iseq[i]); + } + fputs("};\n", fp); + /* dump lv */ + if (irep->lv) { + cdump_syms(mrb, name, "lv", n, irep->nlocals-1, irep->lv, init_syms_code, fp); + } + /* dump debug */ + if (flags & MRB_DUMP_DEBUG_INFO) { + if(cdump_debug(mrb, name, n, irep->debug_info, + init_syms_code, fp) == MRB_DUMP_OK) { + debug_available = 1; + } + } + + + /* dump irep */ + fprintf(fp, "static const mrb_irep %s_irep_%d = {\n", name, n); + fprintf(fp, " %d,%d,%d,\n", irep->nlocals, irep->nregs, irep->clen); + fprintf(fp, " MRB_IREP_STATIC,%s_iseq_%d,\n", name, n); + if (irep->pool) { + fprintf(fp, " %s_pool_%d,", name, n); + } + else { + fputs( " NULL,", fp); + } + if (irep->syms) { + fprintf(fp, "%s_syms_%d,", name, n); + } + else { + fputs( "NULL,", fp); + } + if (irep->reps) { + fprintf(fp, "%s_reps_%d,\n", name, n); + } + else { + fputs( "NULL,\n", fp); + } + if (irep->lv) { + fprintf(fp, " %s_lv_%d,\n", name, n); + } + else { + fputs( " NULL,\t\t\t\t\t/* lv */\n", fp); + } + if(debug_available) { + fprintf(fp, " &%s_debug_%d,\n", name, n); + } + else { + fputs(" NULL,\t\t\t\t\t/* debug_info */\n", fp); + } + fprintf(fp, " %d,%d,%d,%d,0\n};\n", irep->ilen, irep->plen, irep->slen, irep->rlen); + + return MRB_DUMP_OK; +} + +int +mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, const char *initname) +{ + if (fp == NULL || initname == NULL || initname[0] == '\0') { + return MRB_DUMP_INVALID_ARGUMENT; + } + if (fprintf(fp, "#include <mruby.h>\n" + "#include <mruby/irep.h>\n" + "#include <mruby/debug.h>\n" + "#include <mruby/proc.h>\n" + "#include <mruby/presym.h>\n" + "\n") < 0) { + return MRB_DUMP_WRITE_FAULT; + } + fputs("#define mrb_BRACED(...) {__VA_ARGS__}\n", fp); + fputs("#define mrb_DEFINE_SYMS_VAR(name, len, syms, qualifier) \\\n", fp); + fputs(" static qualifier mrb_sym name[len] = mrb_BRACED syms\n", fp); + fputs("\n", fp); + mrb_value init_syms_code = mrb_str_new_capa(mrb, 0); + int max = 1; + int n = cdump_irep_struct(mrb, irep, flags, fp, initname, 0, init_syms_code, &max); + if (n != MRB_DUMP_OK) return n; + fprintf(fp, + "%s\n" + "const struct RProc %s[] = {{\n", + (flags & MRB_DUMP_STATIC) ? "static" + : "#ifdef __cplusplus\n" + "extern\n" + "#endif", + initname); + fprintf(fp, "NULL,NULL,MRB_TT_PROC,MRB_GC_RED,0,{&%s_irep_0},NULL,{NULL},\n}};\n", initname); + fputs("static void\n", fp); + fprintf(fp, "%s_init_syms(mrb_state *mrb)\n", initname); + fputs("{\n", fp); + fputs(RSTRING_PTR(init_syms_code), fp); + fputs("}\n", fp); + return MRB_DUMP_OK; +} +#endif diff --git a/src/class.c b/src/class.c index dfd25b371..30e2b2603 100644 --- a/src/class.c +++ b/src/class.c @@ -1151,7 +1151,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) p = va_arg(ap, mrb_float*); if (i < argc) { - *p = mrb_to_flo(mrb, argv[i++]); + *p = mrb_as_float(mrb, argv[i]); i++; } } break; @@ -1162,7 +1162,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) p = va_arg(ap, mrb_int*); if (i < argc) { - *p = mrb_integer(mrb_to_int(mrb, argv[i++])); + *p = mrb_as_int(mrb, argv[i]); i++; } } break; @@ -2197,6 +2197,7 @@ mrb_obj_class(mrb_state *mrb, mrb_value obj) MRB_API void mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b) { + if (a == b) return; mrb_method_t m = mrb_method_search(mrb, c, b); if (!MRB_METHOD_CFUNC_P(m)) { @@ -2216,6 +2217,7 @@ mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b) } p->e.env = e; p->flags |= MRB_PROC_ENVSET; + mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)e); } } mrb_define_method_raw(mrb, c, a, m); diff --git a/src/codedump.c b/src/codedump.c index f382bb7eb..0556d724d 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -140,11 +140,11 @@ codedump(mrb_state *mrb, const mrb_irep *irep) CASE(OP_LOADL, BB); op_loadl: switch (irep->pool[b].tt) { - case IREP_TT_FLOAT: #ifndef MRB_NO_FLOAT + case IREP_TT_FLOAT: printf("OP_LOADL\tR%d\tL(%d)\t; %f", a, b, (double)irep->pool[b].u.f); -#endif break; +#endif case IREP_TT_INT32: printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId32, a, b, irep->pool[b].u.i32); break; diff --git a/src/dump.c b/src/dump.c index 91edf17d3..0b4200795 100644 --- a/src/dump.c +++ b/src/dump.c @@ -1,5 +1,5 @@ /* -** dump.c - mruby binary dumper (mrbc binary format) +** cdump.c - mruby binary dumper (in C) ** ** See Copyright Notice in mruby.h */ @@ -14,7 +14,6 @@ #ifndef MRB_NO_FLOAT #include <mruby/endian.h> -#define MRB_FLOAT_FMT "%.17g" #endif static size_t get_irep_record_size_1(mrb_state *mrb, const mrb_irep *irep); @@ -929,428 +928,4 @@ mrb_dump_irep_cfunc(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *f return result; } -static int -dump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) -{ - if (p->tt & IREP_TT_NFLAG) { /* number */ - switch (p->tt) { -#ifdef MRB_64BIT - case IREP_TT_INT64: - if (p->u.i64 < INT32_MIN || INT32_MAX < p->u.i64) { - fprintf(fp, "{IREP_TT_INT64, {.i64=%" PRId64 "}},\n", p->u.i64); - } - else { - fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", (int32_t)p->u.i64); - } - break; -#endif - case IREP_TT_INT32: - fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", p->u.i32); - break; - case IREP_TT_FLOAT: -#ifndef MRB_NO_FLOAT - if (p->u.f == 0) { - fprintf(fp, "{IREP_TT_FLOAT, {.f=%#.1f}},\n", p->u.f); - } - else { - fprintf(fp, "{IREP_TT_FLOAT, {.f=" MRB_FLOAT_FMT "}},\n", p->u.f); - } -#endif - break; - case IREP_TT_BIGINT: - { - const char *s = p->u.str; - int len = s[0]+2; - fputs("{IREP_TT_BIGINT, {\"", fp); - for (int i=0; i<len; i++) { - fprintf(fp, "\\x%02x", (int)s[i]&0xff); - } - fputs("\"}},\n", fp); - } - break; - } - } - else { /* string */ - int i, len = p->tt>>2; - const char *s = p->u.str; - fprintf(fp, "{IREP_TT_STR|(%d<<2), {\"", len); - for (i=0; i<len; i++) { - fprintf(fp, "\\x%02x", (int)s[i]&0xff); - } - fputs("\"}},\n", fp); - } - return MRB_DUMP_OK; -} - -static mrb_bool -sym_name_word_p(const char *name, mrb_int len) -{ - if (len == 0) return FALSE; - if (name[0] != '_' && !ISALPHA(name[0])) return FALSE; - for (int i = 1; i < len; i++) { - if (name[i] != '_' && !ISALNUM(name[i])) return FALSE; - } - return TRUE; -} - -static mrb_bool -sym_name_with_equal_p(const char *name, mrb_int len) -{ - return len >= 2 && name[len-1] == '=' && sym_name_word_p(name, len-1); -} - -static mrb_bool -sym_name_with_question_mark_p(const char *name, mrb_int len) -{ - return len >= 2 && name[len-1] == '?' && sym_name_word_p(name, len-1); -} - -static mrb_bool -sym_name_with_bang_p(const char *name, mrb_int len) -{ - return len >= 2 && name[len-1] == '!' && sym_name_word_p(name, len-1); -} - -static mrb_bool -sym_name_ivar_p(const char *name, mrb_int len) -{ - return len >= 2 && name[0] == '@' && sym_name_word_p(name+1, len-1); -} - -static mrb_bool -sym_name_cvar_p(const char *name, mrb_int len) -{ - return len >= 3 && name[0] == '@' && sym_name_ivar_p(name+1, len-1); -} - -#define OPERATOR_SYMBOL(sym_name, name) {name, sym_name, sizeof(sym_name)-1} -struct operator_symbol { - const char *name; - const char *sym_name; - uint16_t sym_name_len; -}; -static const struct operator_symbol operator_table[] = { - OPERATOR_SYMBOL("!", "not"), - OPERATOR_SYMBOL("%", "mod"), - OPERATOR_SYMBOL("&", "and"), - OPERATOR_SYMBOL("*", "mul"), - OPERATOR_SYMBOL("+", "add"), - OPERATOR_SYMBOL("-", "sub"), - OPERATOR_SYMBOL("/", "div"), - OPERATOR_SYMBOL("<", "lt"), - OPERATOR_SYMBOL(">", "gt"), - OPERATOR_SYMBOL("^", "xor"), - OPERATOR_SYMBOL("`", "tick"), - OPERATOR_SYMBOL("|", "or"), - OPERATOR_SYMBOL("~", "neg"), - OPERATOR_SYMBOL("!=", "neq"), - OPERATOR_SYMBOL("!~", "nmatch"), - OPERATOR_SYMBOL("&&", "andand"), - OPERATOR_SYMBOL("**", "pow"), - OPERATOR_SYMBOL("+@", "plus"), - OPERATOR_SYMBOL("-@", "minus"), - OPERATOR_SYMBOL("<<", "lshift"), - OPERATOR_SYMBOL("<=", "le"), - OPERATOR_SYMBOL("==", "eq"), - OPERATOR_SYMBOL("=~", "match"), - OPERATOR_SYMBOL(">=", "ge"), - OPERATOR_SYMBOL(">>", "rshift"), - OPERATOR_SYMBOL("[]", "aref"), - OPERATOR_SYMBOL("||", "oror"), - OPERATOR_SYMBOL("<=>", "cmp"), - OPERATOR_SYMBOL("===", "eqq"), - OPERATOR_SYMBOL("[]=", "aset"), -}; - -static const char* -sym_operator_name(const char *sym_name, mrb_int len) -{ - mrb_sym table_size = sizeof(operator_table)/sizeof(struct operator_symbol); - if (operator_table[table_size-1].sym_name_len < len) return NULL; - - mrb_sym start, idx; - int cmp; - const struct operator_symbol *op_sym; - for (start = 0; table_size != 0; table_size/=2) { - idx = start+table_size/2; - op_sym = &operator_table[idx]; - cmp = (int)len-(int)op_sym->sym_name_len; - if (cmp == 0) { - cmp = memcmp(sym_name, op_sym->sym_name, len); - if (cmp == 0) return op_sym->name; - } - if (0 < cmp) { - start = ++idx; - --table_size; - } - } - return NULL; -} - -static const char* -sym_var_name(mrb_state *mrb, const char *initname, const char *key, int n) -{ - char buf[32]; - mrb_value s = mrb_str_new_cstr(mrb, initname); - mrb_str_cat_lit(mrb, s, "_"); - mrb_str_cat_cstr(mrb, s, key); - mrb_str_cat_lit(mrb, s, "_"); - snprintf(buf, sizeof(buf), "%d", n); - mrb_str_cat_cstr(mrb, s, buf); - return RSTRING_PTR(s); -} - -static int -dump_sym(mrb_state *mrb, mrb_sym sym, const char *var_name, int idx, mrb_value init_syms_code, FILE *fp) -{ - if (sym == 0) return MRB_DUMP_INVALID_ARGUMENT; - - mrb_int len; - const char *name = mrb_sym_name_len(mrb, sym, &len), *op_name; - if (!name) return MRB_DUMP_INVALID_ARGUMENT; - if (sym_name_word_p(name, len)) { - fprintf(fp, "MRB_SYM(%s)", name); - } - else if (sym_name_with_equal_p(name, len)) { - fprintf(fp, "MRB_SYM_E(%.*s)", (int)(len-1), name); - } - else if (sym_name_with_question_mark_p(name, len)) { - fprintf(fp, "MRB_SYM_Q(%.*s)", (int)(len-1), name); - } - else if (sym_name_with_bang_p(name, len)) { - fprintf(fp, "MRB_SYM_B(%.*s)", (int)(len-1), name); - } - else if (sym_name_ivar_p(name, len)) { - fprintf(fp, "MRB_IVSYM(%s)", name+1); - } - else if (sym_name_cvar_p(name, len)) { - fprintf(fp, "MRB_CVSYM(%s)", name+2); - } - else if ((op_name = sym_operator_name(name, len))) { - fprintf(fp, "MRB_OPSYM(%s)", op_name); - } - else { - char buf[32]; - mrb_value name_obj = mrb_str_new(mrb, name, len); - mrb_str_cat_lit(mrb, init_syms_code, " "); - mrb_str_cat_cstr(mrb, init_syms_code, var_name); - snprintf(buf, sizeof(buf), "[%d] = ", idx); - mrb_str_cat_cstr(mrb, init_syms_code, buf); - mrb_str_cat_lit(mrb, init_syms_code, "mrb_intern_lit(mrb, "); - mrb_str_cat_str(mrb, init_syms_code, mrb_str_dump(mrb, name_obj)); - mrb_str_cat_lit(mrb, init_syms_code, ");\n"); - fputs("0", fp); - } - fputs(", ", fp); - return MRB_DUMP_OK; -} - -static int -dump_syms(mrb_state *mrb, const char *name, const char *key, int n, int syms_len, const mrb_sym *syms, mrb_value init_syms_code, FILE *fp) -{ - int ai = mrb_gc_arena_save(mrb); - mrb_int code_len = RSTRING_LEN(init_syms_code); - const char *var_name = sym_var_name(mrb, name, key, n); - fprintf(fp, "mrb_DEFINE_SYMS_VAR(%s, %d, (", var_name, syms_len); - for (int i=0; i<syms_len; i++) { - dump_sym(mrb, syms[i], var_name, i, init_syms_code, fp); - } - fputs("), ", fp); - if (code_len == RSTRING_LEN(init_syms_code)) fputs("const", fp); - fputs(");\n", fp); - mrb_gc_arena_restore(mrb, ai); - return MRB_DUMP_OK; -} - -//Handle the simple/common case of debug_info: -// - 1 file associated with a single irep -// - mrb_debug_line_ary format only -static int -simple_debug_info(mrb_irep_debug_info *info) -{ - if (!info || - info->flen != 1 || - info->files[0]->line_type != mrb_debug_line_ary) { - return 0; - } - return 1; -} - -//Adds debug information to c-structs and -//adds filenames in init_syms_code block -static int -dump_debug(mrb_state *mrb, const char *name, int n, mrb_irep_debug_info *info, - mrb_value init_syms_code, FILE *fp) -{ - char buffer[256]; - const char *filename; - mrb_int file_len; - int len, i; - - if (!simple_debug_info(info)) - return MRB_DUMP_INVALID_IREP; - - len = info->files[0]->line_entry_count; - - filename = mrb_sym_name_len(mrb, info->files[0]->filename_sym, &file_len); - snprintf(buffer, sizeof(buffer), " %s_debug_file_%d.filename_sym = mrb_intern_lit(mrb,\"", - name, n); - mrb_str_cat_cstr(mrb, init_syms_code, buffer); - mrb_str_cat_cstr(mrb, init_syms_code, filename); - mrb_str_cat_cstr(mrb, init_syms_code, "\");\n"); - - fprintf(fp, "static uint16_t %s_debug_lines_%d[%d] = {", name, n, len); - for (i=0; i<len; i++) { - if (i%10 == 0) fputs("\n", fp); - fprintf(fp, "0x%04x,", info->files[0]->lines.ary[i]); - } - fputs("};\n", fp); - - fprintf(fp, "static mrb_irep_debug_info_file %s_debug_file_%d = {\n", name, n); - fprintf(fp, "%d, %d, %d, mrb_debug_line_ary, {%s_debug_lines_%d}};\n", - info->files[0]->start_pos, - info->files[0]->filename_sym, - info->files[0]->line_entry_count, - name,n); - fprintf(fp, "static mrb_irep_debug_info_file *%s_debug_file_%d_ = &%s_debug_file_%d;\n", name, n, name, n); - - fprintf(fp, "static mrb_irep_debug_info %s_debug_%d = {\n", name, n); - fprintf(fp, "%d, %d, &%s_debug_file_%d_};\n", info->pc_count, info->flen, name, n); - - return MRB_DUMP_OK; -} - -static int -dump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, const char *name, int n, mrb_value init_syms_code, int *mp) -{ - int i, len; - int max = *mp; - int debug_available = 0; - - /* dump reps */ - if (irep->reps) { - for (i=0,len=irep->rlen; i<len; i++) { - *mp += len; - if (dump_irep_struct(mrb, irep->reps[i], flags, fp, name, max+i, init_syms_code, mp) != MRB_DUMP_OK) - return MRB_DUMP_INVALID_ARGUMENT; - } - fprintf(fp, "static const mrb_irep *%s_reps_%d[%d] = {\n", name, n, len); - for (i=0,len=irep->rlen; i<len; i++) { - fprintf(fp, " &%s_irep_%d,\n", name, max+i); - } - fputs("};\n", fp); - } - /* dump pool */ - if (irep->pool) { - len=irep->plen; - fprintf(fp, "static const mrb_pool_value %s_pool_%d[%d] = {\n", name, n, len); - for (i=0; i<len; i++) { - if (dump_pool(mrb, &irep->pool[i], fp) != MRB_DUMP_OK) - return MRB_DUMP_INVALID_ARGUMENT; - } - fputs("};\n", fp); - } - /* dump syms */ - if (irep->syms) { - dump_syms(mrb, name, "syms", n, irep->slen, irep->syms, init_syms_code, fp); - } - /* dump iseq */ - len=irep->ilen+sizeof(struct mrb_irep_catch_handler)*irep->clen; - fprintf(fp, "static const mrb_code %s_iseq_%d[%d] = {", name, n, len); - for (i=0; i<len; i++) { - if (i%20 == 0) fputs("\n", fp); - fprintf(fp, "0x%02x,", irep->iseq[i]); - } - fputs("};\n", fp); - /* dump lv */ - if (irep->lv) { - dump_syms(mrb, name, "lv", n, irep->nlocals-1, irep->lv, init_syms_code, fp); - } - /* dump debug */ - if (flags & MRB_DUMP_DEBUG_INFO) { - if(dump_debug(mrb, name, n, irep->debug_info, - init_syms_code, fp) == MRB_DUMP_OK) { - debug_available = 1; - } - } - - - /* dump irep */ - fprintf(fp, "static const mrb_irep %s_irep_%d = {\n", name, n); - fprintf(fp, " %d,%d,%d,\n", irep->nlocals, irep->nregs, irep->clen); - fprintf(fp, " MRB_IREP_STATIC,%s_iseq_%d,\n", name, n); - if (irep->pool) { - fprintf(fp, " %s_pool_%d,", name, n); - } - else { - fputs( " NULL,", fp); - } - if (irep->syms) { - fprintf(fp, "%s_syms_%d,", name, n); - } - else { - fputs( "NULL,", fp); - } - if (irep->reps) { - fprintf(fp, "%s_reps_%d,\n", name, n); - } - else { - fputs( "NULL,\n", fp); - } - if (irep->lv) { - fprintf(fp, " %s_lv_%d,\n", name, n); - } - else { - fputs( " NULL,\t\t\t\t\t/* lv */\n", fp); - } - if(debug_available) { - fprintf(fp, " &%s_debug_%d,\n", name, n); - } - else { - fputs(" NULL,\t\t\t\t\t/* debug_info */\n", fp); - } - fprintf(fp, " %d,%d,%d,%d,0\n};\n", irep->ilen, irep->plen, irep->slen, irep->rlen); - - return MRB_DUMP_OK; -} - -int -mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, const char *initname) -{ - if (fp == NULL || initname == NULL || initname[0] == '\0') { - return MRB_DUMP_INVALID_ARGUMENT; - } - if (fprintf(fp, "#include <mruby.h>\n" - "#include <mruby/irep.h>\n" - "#include <mruby/debug.h>\n" - "#include <mruby/proc.h>\n" - "#include <mruby/presym.h>\n" - "\n") < 0) { - return MRB_DUMP_WRITE_FAULT; - } - fputs("#define mrb_BRACED(...) {__VA_ARGS__}\n", fp); - fputs("#define mrb_DEFINE_SYMS_VAR(name, len, syms, qualifier) \\\n", fp); - fputs(" static qualifier mrb_sym name[len] = mrb_BRACED syms\n", fp); - fputs("\n", fp); - mrb_value init_syms_code = mrb_str_new_capa(mrb, 0); - int max = 1; - int n = dump_irep_struct(mrb, irep, flags, fp, initname, 0, init_syms_code, &max); - if (n != MRB_DUMP_OK) return n; - fprintf(fp, - "%s\n" - "const struct RProc %s[] = {{\n", - (flags & MRB_DUMP_STATIC) ? "static" - : "#ifdef __cplusplus\n" - "extern\n" - "#endif", - initname); - fprintf(fp, "NULL,NULL,MRB_TT_PROC,MRB_GC_RED,0,{&%s_irep_0},NULL,{NULL},\n}};\n", initname); - fputs("static void\n", fp); - fprintf(fp, "%s_init_syms(mrb_state *mrb)\n", initname); - fputs("{\n", fp); - fputs(RSTRING_PTR(init_syms_code), fp); - fputs("}\n", fp); - return MRB_DUMP_OK; -} - #endif /* MRB_NO_STDIO */ diff --git a/src/fmt_fp.c b/src/fmt_fp.c index d3fe97ce3..43daf2307 100644 --- a/src/fmt_fp.c +++ b/src/fmt_fp.c @@ -1,463 +1,364 @@ #include <mruby.h> -#if !defined(MRB_NO_FLOAT) -#if defined(MRB_NO_STDIO) || defined(_WIN32) || defined(_WIN64) -/* - -Most code in this file originates from musl (src/stdio/vfprintf.c) -which, just like mruby itself, is licensed under the MIT license. - -Copyright (c) 2005-2014 Rich Felker, et al. - -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 OR COPYRIGHT HOLDERS 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. - -*/ - -#include <limits.h> #include <string.h> -#include <math.h> -#include <float.h> -#include <ctype.h> +#include <stdlib.h> -#include <mruby/string.h> +#ifndef MRB_NO_FLOAT +/*********************************************************************** -struct fmt_args; + Routine for converting a single-precision + floating point number into a string. -typedef void output_func(struct fmt_args *f, const char *s, size_t l); + The code in this function was inspired from Fred Bayer's pdouble.c. + Since pdouble.c was released as Public Domain, I'm releasing this + code as public domain as well. -struct fmt_args { - mrb_state *mrb; - output_func *output; - void *opaque; -}; + Dave Hylands -struct mrb_cstr { - char *buf; - size_t len; -}; + The original code can be found in https://github.com/dhylands/format-float +***********************************************************************/ -#define MAX(a,b) ((a)>(b) ? (a) : (b)) -#define MIN(a,b) ((a)<(b) ? (a) : (b)) +/*********************************************************************** -/* Convenient bit representation for modifier flags, which all fall - * within 31 codepoints of the space character. */ + I modified the routine for mruby: -#define ALT_FORM (1U<<('#'-' ')) -#define ZERO_PAD (1U<<('0'-' ')) -#define LEFT_ADJ (1U<<('-'-' ')) -#define PAD_POS (1U<<(' '-' ')) -#define MARK_POS (1U<<('+'-' ')) + * support `double` + * support `#` (alt_form) modifier -#define FLAGMASK (ALT_FORM|ZERO_PAD|LEFT_ADJ|PAD_POS|MARK_POS) + My modifications in this file are also placed in the public domain. -static output_func strcat_value; -static output_func strcat_cstr; + Matz (Yukihiro Matsumoto) -static void -strcat_value(struct fmt_args *f, const char *s, size_t l) -{ - mrb_value str = *(mrb_value*)f->opaque; - mrb_str_cat(f->mrb, str, s, l); -} +***********************************************************************/ -static void -strcat_cstr(struct fmt_args *f, const char *s, size_t l) -{ - struct mrb_cstr *cstr = (struct mrb_cstr*)f->opaque; +#include <math.h> - if (l > cstr->len) { - mrb_state *mrb = f->mrb; +#ifdef MRB_USE_FLOAT32 - mrb_raise(mrb, E_ARGUMENT_ERROR, "string buffer too small"); - } +// 1 sign bit, 8 exponent bits, and 23 mantissa bits. +// exponent values 0 and 255 are reserved, exponent can be 1 to 254. +// exponent is stored with a bias of 127. +// The min and max floats are on the order of 1x10^37 and 1x10^-37 - memcpy(cstr->buf, s, l); +#define FLT_DECEXP 32 +#define FLT_ROUND_TO_ONE 0.9999995F +#define FLT_MIN_BUF_SIZE 6 // -9e+99 - cstr->buf += l; - cstr->len -= l; -} +#else -static void -out(struct fmt_args *f, const char *s, size_t l) -{ - f->output(f, s, l); -} +// 1 sign bit, 11 exponent bits, and 52 mantissa bits. -#define PAD_SIZE 256 -static void -pad(struct fmt_args *f, char c, ptrdiff_t w, ptrdiff_t l, uint32_t fl) -{ - char pad[PAD_SIZE]; - if (fl & (LEFT_ADJ | ZERO_PAD) || l >= w) return; - l = w - l; - memset(pad, c, l>PAD_SIZE ? PAD_SIZE : l); - for (; l >= PAD_SIZE; l -= PAD_SIZE) - out(f, pad, PAD_SIZE); - out(f, pad, l); -} +#define FLT_DECEXP 256 +#define FLT_ROUND_TO_ONE 0.999999999995 +#define FLT_MIN_BUF_SIZE 7 // -9e+199 -static const char xdigits[16] = { - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' -}; +#endif /* MRB_USE_FLOAT32 */ -static char* -fmt_u(uint32_t x, char *s) -{ - for (; x; x /= 10) *--s = '0' + x % 10; - return s; -} - -/* Do not override this check. The floating-point printing code below - * depends on the float.h constants being right. If they are wrong, it - * may overflow the stack. */ -#if LDBL_MANT_DIG == 53 -typedef char compiler_defines_long_double_incorrectly[9-(int)sizeof(long double)]; +static const mrb_float g_pos_pow[] = { +#ifndef MRB_USE_FLOAT32 + 1e256, 1e128, 1e64, #endif + 1e32, 1e16, 1e8, 1e4, 1e2, 1e1 +}; +static const mrb_float g_neg_pow[] = { +#ifndef MRB_USE_FLOAT32 + 1e-256, 1e-128, 1e-64, +#endif + 1e-32, 1e-16, 1e-8, 1e-4, 1e-2, 1e-1 +}; -static int -fmt_fp(struct fmt_args *f, long double y, ptrdiff_t w, ptrdiff_t p, uint32_t fl, int t) -{ - uint32_t big[(LDBL_MANT_DIG+28)/29 + 1 // mantissa expansion - + (LDBL_MAX_EXP+LDBL_MANT_DIG+28+8)/9]; // exponent expansion - uint32_t *a, *d, *r, *z; - uint32_t i; - int e2=0, e, j; - ptrdiff_t l; - char buf[9+LDBL_MANT_DIG/4], *s; - const char *prefix="-0X+0X 0X-0x+0x 0x"; - ptrdiff_t pl; - char ebuf0[3*sizeof(int)], *ebuf=&ebuf0[3*sizeof(int)], *estr; - - pl=1; - if (signbit(y)) { - y=-y; - } else if (fl & MARK_POS) { - prefix+=3; - } else if (fl & PAD_POS) { - prefix+=6; - } else prefix++, pl=0; - - if (!isfinite(y)) { - const char *ss = (t&32)?"inf":"INF"; - if (y!=y) ss=(t&32)?"nan":"NAN"; - pad(f, ' ', w, 3+pl, fl&~ZERO_PAD); - out(f, prefix, pl); - out(f, ss, 3); - pad(f, ' ', w, 3+pl, fl^LEFT_ADJ); - return (int)MAX(w, 3+pl); +/* + * mrb_format_float(mrb_float f, char *buf, size_t buf_size, char fmt, int prec, char sign) + * + * fmt: should be one of 'e', 'E', 'f', 'F', 'g', or 'G'. (|0x80 for '#') + * prec: is the precision (as specified in printf) + * sign: should be '\0', '+', or ' ' ('\0' is the normal one - only print + * a sign if ```f``` is negative. Anything else is printed as the + * sign character for positive numbers. + */ + +int +mrb_format_float(mrb_float f, char *buf, size_t buf_size, char fmt, int prec, char sign) { + char *s = buf; + int buf_remaining = buf_size - 1; + int alt_form = 0; + + if ((uint8_t)fmt & 0x80) { + fmt &= 0x7f; /* turn off alt_form flag */ + alt_form = 1; } + if (buf_size <= FLT_MIN_BUF_SIZE) { + // Smallest exp notion is -9e+99 (-9e+199) which is 6 (7) chars plus terminating + // null. - y = frexp((double)y, &e2) * 2; - if (y) e2--; - - if ((t|32)=='a') { - long double round = 8.0; - ptrdiff_t re; - - if (t&32) prefix += 9; - pl += 2; + if (buf_size >= 2) { + *s++ = '?'; + } + if (buf_size >= 1) { + *s++ = '\0'; + } + return buf_size >= 2; + } + if (signbit(f)) { + *s++ = '-'; + f = -f; + } else if (sign) { + *s++ = sign; + } + buf_remaining -= (s - buf); // Adjust for sign + + { + char uc = fmt & 0x20; + if (isinf(f)) { + *s++ = 'I' ^ uc; + *s++ = 'N' ^ uc; + *s++ = 'F' ^ uc; + goto ret; + } else if (isnan(f)) { + *s++ = 'N' ^ uc; + *s++ = 'A' ^ uc; + *s++ = 'N' ^ uc; + ret: + *s = '\0'; + return s - buf; + } + } - if (p<0 || p>=LDBL_MANT_DIG/4-1) re=0; - else re=LDBL_MANT_DIG/4-1-p; + if (prec < 0) { + prec = 6; + } + char e_char = 'E' | (fmt & 0x20); // e_char will match case of fmt + fmt |= 0x20; // Force fmt to be lowercase + char org_fmt = fmt; + if (fmt == 'g' && prec == 0) { + prec = 1; + } + int e, e1; + int dec = 0; + char e_sign = '\0'; + int num_digits = 0; + const mrb_float *pos_pow = g_pos_pow; + const mrb_float *neg_pow = g_neg_pow; + + if (f == 0.0) { + e = 0; + if (fmt == 'e') { + e_sign = '+'; + } else if (fmt == 'f') { + num_digits = prec + 1; + } + } else if (f < 1.0) { // f < 1.0 + char first_dig = '0'; + if (f >= FLT_ROUND_TO_ONE) { + first_dig = '1'; + } - if (re) { - while (re--) round*=16; - if (*prefix=='-') { - y=-y; - y-=round; - y+=round; - y=-y; + // Build negative exponent + for (e = 0, e1 = FLT_DECEXP; e1; e1 >>= 1, pos_pow++, neg_pow++) { + if (*neg_pow > f) { + e += e1; + f *= *pos_pow; } - else { - y+=round; - y-=round; + } + char e_sign_char = '-'; + if (f < 1.0) { + if (f >= FLT_ROUND_TO_ONE) { + f = 1.0; + if (e == 0) { + e_sign_char = '+'; + } + } else { + e++; + f *= 10.0; } } - estr=fmt_u(e2<0 ? -e2 : e2, ebuf); - if (estr==ebuf) *--estr='0'; - *--estr = (e2<0 ? '-' : '+'); - *--estr = t+('p'-'a'); - - s=buf; - do { - int x=(int)y; - *s++=xdigits[x]|(t&32); - y=16*(y-x); - if (s-buf==1 && (y||p>0||(fl&ALT_FORM))) *s++='.'; - } while (y); - - if (p && s-buf-2 < p) - l = (p+2) + (ebuf-estr); - else - l = (s-buf) + (ebuf-estr); - - pad(f, ' ', w, pl+l, fl); - out(f, prefix, pl); - pad(f, '0', w, pl+l, fl^ZERO_PAD); - out(f, buf, s-buf); - pad(f, '0', l-(ebuf-estr)-(s-buf), 0, 0); - out(f, estr, ebuf-estr); - pad(f, ' ', w, pl+l, fl^LEFT_ADJ); - return (int)MAX(w, pl+l); - } - if (p<0) p=6; - - if (y) y *= 268435456.0, e2-=28; + // If the user specified 'g' format, and e is <= 4, then we'll switch + // to the fixed format ('f') - if (e2<0) a=r=z=big; - else a=r=z=big+sizeof(big)/sizeof(*big) - LDBL_MANT_DIG - 1; + if (fmt == 'f' || (fmt == 'g' && e <= 4)) { + fmt = 'f'; + dec = -1; + *s++ = first_dig; - do { - *z = (uint32_t)y; - y = 1000000000*(y-*z++); - } while (y); - - while (e2>0) { - uint32_t carry=0; - int sh=MIN(29,e2); - for (d=z-1; d>=a; d--) { - uint64_t x = ((uint64_t)*d<<sh)+carry; - *d = x % 1000000000; - carry = (uint32_t)(x / 1000000000); + if (org_fmt == 'g') { + prec += (e - 1); + } + // truncate precision to prevent buffer overflow + if (prec + 2 > buf_remaining) { + prec = buf_remaining - 2; + } + num_digits = prec; + if (num_digits || alt_form) { + *s++ = '.'; + while (--e && num_digits) { + *s++ = '0'; + num_digits--; + } + } + } else { + // For e & g formats, we'll be printing the exponent, so set the + // sign. + e_sign = e_sign_char; + dec = 0; + + if (prec > (buf_remaining - FLT_MIN_BUF_SIZE)) { + prec = buf_remaining - FLT_MIN_BUF_SIZE; + if (fmt == 'g') { + prec++; + } + } } - if (carry) *--a = carry; - while (z>a && !z[-1]) z--; - e2-=sh; - } - while (e2<0) { - uint32_t carry=0, *b; - int sh=MIN(9,-e2), need=1+((int)p+LDBL_MANT_DIG/3+8)/9; - for (d=a; d<z; d++) { - uint32_t rm = *d & ((1<<sh)-1); - *d = (*d>>sh) + carry; - carry = (1000000000>>sh) * rm; + } else { + // Build positive exponent + for (e = 0, e1 = FLT_DECEXP; e1; e1 >>= 1, pos_pow++, neg_pow++) { + if (*pos_pow <= f) { + e += e1; + f *= *neg_pow; + } } - if (!*a) a++; - if (carry) *z++ = carry; - /* Avoid (slow!) computation past requested precision */ - b = (t|32)=='f' ? r : a; - if (z-b > need) z = b+need; - e2+=sh; - } - if (a<z) for (i=10, e=9*(int)(r-a); *a>=i; i*=10, e++); - else e=0; - - /* Perform rounding: j is precision after the radix (possibly neg) */ - j = (int)p - ((t|32)!='f')*e - ((t|32)=='g' && p); - if (j < 9*(z-r-1)) { - uint32_t x; - /* We avoid C's broken division of negative numbers */ - d = r + 1 + ((j+9*LDBL_MAX_EXP)/9 - LDBL_MAX_EXP); - j += 9*LDBL_MAX_EXP; - j %= 9; - for (i=10, j++; j<9; i*=10, j++); - x = *d % i; - /* Are there any significant digits past j? */ - if (x || d+1!=z) { - long double round = 2/LDBL_EPSILON; - long double small; - if (*d/i & 1) round += 2; - if (x<i/2) small=0.5; - else if (x==i/2 && d+1==z) small=1.0; - else small=1.5; - if (pl && *prefix=='-') round*=-1, small*=-1; - *d -= x; - /* Decide whether to round by probing round+small */ - if (round+small != round) { - *d = *d + i; - while (*d > 999999999) { - *d--=0; - if (d<a) *--a=0; - (*d)++; + // If the user specified fixed format (fmt == 'f') and e makes the + // number too big to fit into the available buffer, then we'll + // switch to the 'e' format. + + if (fmt == 'f') { + if (e >= buf_remaining) { + fmt = 'e'; + } else if ((e + prec + 2) > buf_remaining) { + prec = buf_remaining - e - 2; + if (prec < 0) { + // This means no decimal point, so we can add one back + // for the decimal. + prec++; } - for (i=10, e=9*(int)(r-a); *a>=i; i*=10, e++); } } - if (z>d+1) z=d+1; - } - for (; z>a && !z[-1]; z--); - - if ((t|32)=='g') { - if (!p) p++; - if (p>e && e>=-4) { - t--; - p-=e+1; - } - else { - t-=2; - p--; - } - if (!(fl&ALT_FORM)) { - /* Count trailing zeros in last place */ - if (z>a && z[-1]) for (i=10, j=0; z[-1]%i==0; i*=10, j++); - else j=9; - if ((t|32)=='f') - p = MIN(p,MAX(0,9*(z-r-1)-j)); - else - p = MIN(p,MAX(0,9*(z-r-1)+e-j)); + if (fmt == 'e' && prec > (buf_remaining - 6)) { + prec = buf_remaining - 6; } - } - l = 1 + p + (p || (fl&ALT_FORM)); - if ((t|32)=='f') { - if (e>0) l+=e; - } - else { - estr=fmt_u(e<0 ? -e : e, ebuf); - while(ebuf-estr<2) *--estr='0'; - *--estr = (e<0 ? '-' : '+'); - *--estr = t; - l += ebuf-estr; - } + // If the user specified 'g' format, and e is < prec, then we'll switch + // to the fixed format. - pad(f, ' ', w, pl+l, fl); - out(f, prefix, pl); - pad(f, '0', w, pl+l, fl^ZERO_PAD); - - if ((t|32)=='f') { - if (a>r) a=r; - for (d=a; d<=r; d++) { - char *ss = fmt_u(*d, buf+9); - if (d!=a) while (ss>buf) *--ss='0'; - else if (ss==buf+9) *--ss='0'; - out(f, ss, buf+9-ss); + if (fmt == 'g' && e < prec) { + fmt = 'f'; + prec -= (e + 1); } - if (p || (fl&ALT_FORM)) out(f, ".", 1); - for (; d<z && p>0; d++, p-=9) { - char *ss = fmt_u(*d, buf+9); - while (ss>buf) *--ss='0'; - out(f, ss, MIN(9,p)); + if (fmt == 'f') { + dec = e; + num_digits = prec + e + 1; + } else { + e_sign = '+'; } - pad(f, '0', p+9, 9, 0); } - else { - if (z<=a) z=a+1; - for (d=a; d<z && p>=0; d++) { - char *ss = fmt_u(*d, buf+9); - if (ss==buf+9) *--ss='0'; - if (d!=a) while (ss>buf) *--ss='0'; - else { - out(f, ss++, 1); - if (p>0||(fl&ALT_FORM)) out(f, ".", 1); - } - out(f, ss, MIN(buf+9-ss, p)); - p -= (int)(buf+9-ss); - } - pad(f, '0', p+18, 18, 0); - out(f, estr, ebuf-estr); + if (prec < 0) { + // This can happen when the prec is trimmed to prevent buffer overflow + prec = 0; } - pad(f, ' ', w, pl+l, fl^LEFT_ADJ); - - return (int)MAX(w, pl+l); -} - -static int -fmt_core(struct fmt_args *f, const char *fmt, mrb_float flo) -{ - ptrdiff_t w, p; - uint32_t fl; - - if (*fmt != '%') { - return -1; - } - ++fmt; - - /* Read modifier flags */ - for (fl=0; (unsigned)*fmt-' '<32 && (FLAGMASK&(1U<<(*fmt-' '))); fmt++) - fl |= 1U<<(*fmt-' '); - - /* - and 0 flags are mutually exclusive */ - if (fl & LEFT_ADJ) fl &= ~ZERO_PAD; - - for (w = 0; ISDIGIT(*fmt); ++fmt) { - w = 10 * w + (*fmt - '0'); + // We now have f as a floating point number between >= 1 and < 10 + // (or equal to zero), and e contains the absolute value of the power of + // 10 exponent. and (dec + 1) == the number of dgits before the decimal. + + // For e, prec is # digits after the decimal + // For f, prec is # digits after the decimal + // For g, prec is the max number of significant digits + // + // For e & g there will be a single digit before the decimal + // for f there will be e digits before the decimal + + if (fmt == 'e') { + num_digits = prec + 1; + } else if (fmt == 'g') { + if (prec == 0) { + prec = 1; + } + num_digits = prec; } - if (*fmt == '.') { - ++fmt; - for (p = 0; ISDIGIT(*fmt); ++fmt) { - p = 10 * p + (*fmt - '0'); + // Print the digits of the mantissa + for (int i = 0; i < num_digits; ++i, --dec) { + int8_t d = f; + *s++ = '0' + d; + if (dec == 0 && (prec > 0 || alt_form)) { + *s++ = '.'; } - } - else { - p = -1; + f -= (mrb_float)d; + f *= 10.0; } - switch (*fmt) { - case 'e': case 'f': case 'g': case 'a': - case 'E': case 'F': case 'G': case 'A': - return fmt_fp(f, flo, w, p, fl, *fmt); - default: - return -1; + // Round + if (f >= 5.0) { + char *rs = s; + rs--; + while (1) { + if (*rs == '.') { + rs--; + continue; + } + if (*rs < '0' || *rs > '9') { + // + or - + rs++; // So we sit on the digit to the right of the sign + break; + } + if (*rs < '9') { + (*rs)++; + break; + } + *rs = '0'; + if (rs == buf) { + break; + } + rs--; + } + if (*rs == '0') { + // We need to insert a 1 + if (rs[1] == '.' && fmt != 'f') { + // We're going to round 9.99 to 10.00 + // Move the decimal point + rs[0] = '.'; + rs[1] = '0'; + if (e_sign == '-') { + e--; + } else { + e++; + } + } + s++; + char *ss = s; + while (ss > rs) { + *ss = ss[-1]; + ss--; + } + *rs = '1'; + if (f < 1.0 && fmt == 'f') { + // We rounded up to 1.0 + prec--; + } + } } -} -MRB_API mrb_value -mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt) -{ - struct fmt_args f; - mrb_value str = mrb_str_new_capa(mrb, 24); - - f.mrb = mrb; - f.output = strcat_value; - f.opaque = (void*)&str; - if (fmt_core(&f, fmt, mrb_float(flo)) < 0) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid format string"); + if (org_fmt == 'g' && prec > 0 && !alt_form) { + // Remove trailing zeros and a trailing decimal point + while (s[-1] == '0') { + s--; + } + if (s[-1] == '.') { + s--; + } } - return str; -} - -MRB_API int -mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float fval) -{ - struct fmt_args f; - struct mrb_cstr cstr; - - cstr.buf = buf; - cstr.len = len - 1; /* reserve NUL terminator */ - f.mrb = mrb; - f.output = strcat_cstr; - f.opaque = (void*)&cstr; - if (fmt_core(&f, fmt, fval) < 0) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid format string"); + // Append the exponent + if (e_sign) { + *s++ = e_char; + *s++ = e_sign; + if (e >= 100) { + *s++ = '0' + (e / 100); + e %= 100; + } + *s++ = '0' + (e / 10); + *s++ = '0' + (e % 10); } - *cstr.buf = '\0'; - return (int)(cstr.buf - buf); -} -#else /* MRB_NO_STDIO || _WIN32 || _WIN64 */ -#include <stdio.h> - -MRB_API mrb_value -mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt) -{ - char buf[25]; - - snprintf(buf, sizeof(buf), fmt, mrb_float(flo)); - return mrb_str_new_cstr(mrb, buf); -} + *s = '\0'; -MRB_API int -mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float fval) -{ - return snprintf(buf, len, fmt, fval); + return s - buf; } -#endif /* MRB_NO_STDIO || _WIN32 || _WIN64 */ #endif diff --git a/src/kernel.c b/src/kernel.c index 719f92b7e..615b68ac3 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -423,8 +423,8 @@ mrb_f_raise(mrb_state *mrb, mrb_value self) mrb_value a[2], exc; mrb_int argc; - argc = mrb_get_args(mrb, "|oo", &a[0], &a[1]); + mrb->c->ci->mid = 0; switch (argc) { case 0: mrb_raise(mrb, E_RUNTIME_ERROR, ""); @@ -527,6 +527,7 @@ mrb_obj_missing(mrb_state *mrb, mrb_value mod) const mrb_value *a; mrb_int alen; + mrb->c->ci->mid = 0; mrb_get_args(mrb, "n*!", &name, &a, &alen); mrb_method_missing(mrb, name, mod, mrb_ary_new_from_values(mrb, alen, a)); /* not reached */ diff --git a/src/load.c b/src/load.c index f370dc67e..2e637aa19 100644 --- a/src/load.c +++ b/src/load.c @@ -60,8 +60,6 @@ str_to_double(mrb_state *mrb, const char *p) } #endif -mrb_value mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, mrb_int base, int badcheck); - static mrb_bool read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flags, mrb_irep **irepp) { @@ -146,7 +144,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag } break; case IREP_TT_INT64: -#ifdef MRB_64BIT +#ifdef MRB_INT64 { uint64_t i64 = bin_to_uint32(src); src += sizeof(uint32_t); @@ -158,7 +156,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag } break; #else - return FALSE; /* INT64 not supported on MRB_32BIT */ + return FALSE; #endif case IREP_TT_BIGINT: diff --git a/src/numeric.c b/src/numeric.c index fe1a18f04..b377ce0e6 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -25,15 +25,13 @@ #define floor(f) floorf(f) #define ceil(f) ceilf(f) #define fmod(x,y) fmodf(x,y) -#define FLO_TO_STR_PREC 8 #else -#define FLO_TO_STR_PREC 16 #endif #endif #ifndef MRB_NO_FLOAT MRB_API mrb_float -mrb_to_flo(mrb_state *mrb, mrb_value val) +mrb_as_float(mrb_state *mrb, mrb_value val) { switch (mrb_type(val)) { case MRB_TT_INTEGER: @@ -137,10 +135,6 @@ mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y) return 0; } -#ifndef MRB_NO_FLOAT -mrb_float mrb_div_flo(mrb_float x, mrb_float y); -#endif - /* 15.2.8.3.4 */ /* 15.2.9.3.4 */ /* @@ -164,7 +158,7 @@ int_div(mrb_state *mrb, mrb_value x) #ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non integer division"); #else - return mrb_float_value(mrb, mrb_div_flo((mrb_float)a, mrb_to_flo(mrb, y))); + return mrb_float_value(mrb, mrb_div_float((mrb_float)a, mrb_as_float(mrb, y))); #endif } @@ -219,7 +213,7 @@ coerce_step_counter(mrb_state *mrb, mrb_value self) #ifndef MRB_NO_FLOAT if (mrb_float_p(self) || mrb_float_p(num) || mrb_float_p(step)) { - return mrb_Float(mrb, self); + return mrb_to_float(mrb, self); } #endif @@ -240,7 +234,7 @@ static mrb_value flo_pow(mrb_state *mrb, mrb_value x) { mrb_value y = mrb_get_arg1(mrb); - mrb_float d = pow(mrb_to_flo(mrb, x), mrb_to_flo(mrb, y)); + mrb_float d = pow(mrb_as_float(mrb, x), mrb_as_float(mrb, y)); return mrb_float_value(mrb, d); } @@ -255,7 +249,7 @@ flo_idiv(mrb_state *mrb, mrb_value xv) } mrb_float -mrb_div_flo(mrb_float x, mrb_float y) +mrb_div_float(mrb_float x, mrb_float y) { if (y != 0.0) { return x / y; @@ -275,14 +269,39 @@ flo_div(mrb_state *mrb, mrb_value x) mrb_float a = mrb_float(x); if (mrb_float_p(y)) { - a = mrb_div_flo(a, mrb_float(y)); + a = mrb_div_float(a, mrb_float(y)); } else { - a = mrb_div_flo(a, mrb_to_flo(mrb, y)); + a = mrb_div_float(a, mrb_as_float(mrb, y)); } return mrb_float_value(mrb, a); } +/* the argument `fmt` is no longer used; you can pass `NULL` */ +mrb_value +mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt) +{ + char buf[25]; +#ifdef MRB_USE_FLOAT32 + const int prec = 7; +#else + const int prec = 15; +#endif + + mrb_format_float(mrb_float(flo), buf, sizeof(buf), 'g', prec, '\0'); + for (char *p = buf; *p; p++) { + if (*p == '.') goto exit; + if (*p == 'e') { + memmove(p+2, p, strlen(p)+1); + memcpy(p, ".0", 2); + goto exit; + } + } + strcat(buf, ".0"); + exit: + return mrb_str_new_cstr(mrb, buf); +} + /* 15.2.9.3.16(x) */ /* * call-seq: @@ -307,49 +326,14 @@ flo_to_s(mrb_state *mrb, mrb_value flt) if (isinf(f)) { str = f < 0 ? mrb_str_new_lit(mrb, "-Infinity") : mrb_str_new_lit(mrb, "Infinity"); - goto exit; } else if (isnan(f)) { str = mrb_str_new_lit(mrb, "NaN"); - goto exit; } else { - char fmt[] = "%." MRB_STRINGIZE(FLO_TO_STR_PREC) "g"; - mrb_int len; - char *begp, *p, *endp; - - str = mrb_float_to_str(mrb, flt, fmt); - - insert_dot_zero: - begp = RSTRING_PTR(str); - len = RSTRING_LEN(str); - for (p = begp, endp = p + len; p < endp; ++p) { - if (*p == '.') { - goto exit; - } - else if (*p == 'e') { - ptrdiff_t e_pos = p - begp; - mrb_str_cat(mrb, str, ".0", 2); - p = RSTRING_PTR(str) + e_pos; - memmove(p + 2, p, len - e_pos); - memcpy(p, ".0", 2); - goto exit; - } - } - - if (FLO_TO_STR_PREC + (begp[0] == '-') <= len) { - --fmt[sizeof(fmt) - 3]; /* %.16g(%.8g) -> %.15g(%.7g) */ - str = mrb_float_to_str(mrb, flt, fmt); - goto insert_dot_zero; - } - else { - mrb_str_cat(mrb, str, ".0", 2); - } - - goto exit; + str = mrb_float_to_str(mrb, flt, NULL); } - exit: RSTR_SET_ASCII_FLAG(mrb_str_ptr(str)); return str; } @@ -376,7 +360,7 @@ flo_add(mrb_state *mrb, mrb_value x) return mrb_funcall_id(mrb, y, MRB_OPSYM(add), 1, x); #endif default: - return mrb_float_value(mrb, a + mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, a + mrb_as_float(mrb, y)); } } @@ -404,7 +388,7 @@ flo_sub(mrb_state *mrb, mrb_value x) return mrb_funcall_id(mrb, x, MRB_OPSYM(minus), 0); #endif default: - return mrb_float_value(mrb, a - mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, a - mrb_as_float(mrb, y)); } } @@ -431,7 +415,7 @@ flo_mul(mrb_state *mrb, mrb_value x) return mrb_funcall_id(mrb, y, MRB_OPSYM(mul), 1, x); #endif default: - return mrb_float_value(mrb, a * mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, a * mrb_as_float(mrb, y)); } } @@ -490,7 +474,7 @@ flo_mod(mrb_state *mrb, mrb_value x) mrb_value y = mrb_get_arg1(mrb); mrb_float mod; - flodivmod(mrb, mrb_float(x), mrb_to_flo(mrb, y), 0, &mod); + flodivmod(mrb, mrb_float(x), mrb_as_float(mrb, y), 0, &mod); return mrb_float_value(mrb, mod); } #endif @@ -551,7 +535,7 @@ flo_eq(mrb_state *mrb, mrb_value x) return mrb_bool_value(mrb_float(x) == mrb_float(y)); #ifdef MRB_USE_RATIONAL case MRB_TT_RATIONAL: - return mrb_bool_value(mrb_float(x) == mrb_to_flo(mrb, y)); + return mrb_bool_value(mrb_float(x) == mrb_as_float(mrb, y)); #endif #ifdef MRB_USE_COMPLEX case MRB_TT_COMPLEX: @@ -967,7 +951,7 @@ fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y) #ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non integer multiplication"); #else - return mrb_float_value(mrb, (mrb_float)a * mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, (mrb_float)a * mrb_as_float(mrb, y)); #endif } } @@ -980,7 +964,7 @@ mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y) } #ifndef MRB_NO_FLOAT if (mrb_float_p(x)) { - return mrb_float_value(mrb, mrb_float(x) * mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, mrb_float(x) * mrb_as_float(mrb, y)); } #endif #if defined(MRB_USE_RATIONAL) || defined(MRB_USE_COMPLEX) @@ -1065,7 +1049,7 @@ int_mod(mrb_state *mrb, mrb_value x) else { mrb_float mod; - flodivmod(mrb, (mrb_float)a, mrb_to_flo(mrb, y), NULL, &mod); + flodivmod(mrb, (mrb_float)a, mrb_as_float(mrb, y), NULL, &mod); return mrb_float_value(mrb, mod); } #endif @@ -1095,7 +1079,7 @@ int_divmod(mrb_state *mrb, mrb_value x) mrb_float div, mod; mrb_value a, b; - flodivmod(mrb, (mrb_float)mrb_integer(x), mrb_to_flo(mrb, y), &div, &mod); + flodivmod(mrb, (mrb_float)mrb_integer(x), mrb_as_float(mrb, y), &div, &mod); a = mrb_int_value(mrb, (mrb_int)div); b = mrb_float_value(mrb, mod); return mrb_assoc_new(mrb, a, b); @@ -1111,7 +1095,7 @@ flo_divmod(mrb_state *mrb, mrb_value x) mrb_float div, mod; mrb_value a, b; - flodivmod(mrb, mrb_float(x), mrb_to_flo(mrb, y), &div, &mod); + flodivmod(mrb, mrb_float(x), mrb_as_float(mrb, y), &div, &mod); if (!FIXABLE_FLOAT(div)) a = mrb_float_value(mrb, div); else @@ -1357,13 +1341,12 @@ int_to_f(mrb_state *mrb, mrb_value num) */ /* ------------------------------------------------------------------------*/ MRB_API mrb_value -mrb_flo_to_fixnum(mrb_state *mrb, mrb_value x) +mrb_float_to_integer(mrb_state *mrb, mrb_value x) { mrb_int z = 0; if (!mrb_float_p(x)) { mrb_raise(mrb, E_TYPE_ERROR, "non float value"); - z = 0; /* not reached. just suppress warnings. */ } else { mrb_float d = mrb_float(x); @@ -1406,7 +1389,7 @@ int_plus(mrb_state *mrb, mrb_value x, mrb_value y) #ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non integer addition"); #else - return mrb_float_value(mrb, (mrb_float)a + mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, (mrb_float)a + mrb_as_float(mrb, y)); #endif } } @@ -1419,7 +1402,7 @@ mrb_num_plus(mrb_state *mrb, mrb_value x, mrb_value y) } #ifndef MRB_NO_FLOAT if (mrb_float_p(x)) { - return mrb_float_value(mrb, mrb_float(x) + mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, mrb_float(x) + mrb_as_float(mrb, y)); } #endif #if defined(MRB_USE_RATIONAL) || defined(MRB_USE_COMPLEX) @@ -1478,7 +1461,7 @@ int_minus(mrb_state *mrb, mrb_value x, mrb_value y) #ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non integer subtraction"); #else - return mrb_float_value(mrb, (mrb_float)a - mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, (mrb_float)a - mrb_as_float(mrb, y)); #endif } } @@ -1491,7 +1474,7 @@ mrb_num_minus(mrb_state *mrb, mrb_value x, mrb_value y) } #ifndef MRB_NO_FLOAT if (mrb_float_p(x)) { - return mrb_float_value(mrb, mrb_float(x) - mrb_to_flo(mrb, y)); + return mrb_float_value(mrb, mrb_float(x) - mrb_as_float(mrb, y)); } #endif #if defined(MRB_USE_RATIONAL) || defined(MRB_USE_COMPLEX) @@ -1525,35 +1508,51 @@ int_sub(mrb_state *mrb, mrb_value self) return int_minus(mrb, self, other); } - -MRB_API mrb_value -mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base) +MRB_API char* +mrb_int_to_cstr(char *buf, size_t len, mrb_int n, mrb_int base) { - char buf[MRB_INT_BIT+1]; - char *b = buf + sizeof buf; - mrb_int val = mrb_integer(x); - mrb_value str; + char *bufend = buf + len; + char *b = bufend-1; - if (base < 2 || 36 < base) { - mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %i", base); - } + if (base < 2 || 36 < base) return NULL; + if (len < 2) return NULL; - if (val == 0) { - *--b = '0'; + if (n == 0) { + buf[0] = '0'; + buf[1] = '\0'; + return buf; } - else if (val < 0) { + + *b = '\0'; + if (n < 0) { do { - *--b = mrb_digitmap[-(val % base)]; - } while (val /= base); - *--b = '-'; + if (b-- == buf) return NULL; + *b = mrb_digitmap[-(n % base)]; + } while (n /= base); + if (b-- == buf) return NULL; + *b = '-'; } else { do { - *--b = mrb_digitmap[(int)(val % base)]; - } while (val /= base); + if (b-- == buf) return NULL; + *b = mrb_digitmap[(int)(n % base)]; + } while (n /= base); } + return b; +} + +MRB_API mrb_value +mrb_integer_to_str(mrb_state *mrb, mrb_value x, mrb_int base) +{ + char buf[MRB_INT_BIT+1]; + mrb_int val = mrb_integer(x); - str = mrb_str_new(mrb, b, buf + sizeof(buf) - b); + if (base < 2 || 36 < base) { + mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %i", base); + } + const char *p = mrb_int_to_cstr(buf, sizeof(buf), val, base); + mrb_assert(p != NULL); + mrb_value str = mrb_str_new_cstr(mrb, p); RSTR_SET_ASCII_FLAG(mrb_str_ptr(str)); return str; } @@ -1580,7 +1579,7 @@ int_to_s(mrb_state *mrb, mrb_value self) mrb_int base = 10; mrb_get_args(mrb, "|i", &base); - return mrb_fixnum_to_str(mrb, self, base); + return mrb_integer_to_str(mrb, self, base); } /* compare two numbers: (1:0:-1; -2 for error) */ @@ -1596,7 +1595,7 @@ cmpnum(mrb_state *mrb, mrb_value v1, mrb_value v2) #ifdef MRB_NO_FLOAT x = mrb_integer(v1); #else - x = mrb_to_flo(mrb, v1); + x = mrb_as_float(mrb, v1); #endif switch (mrb_type(v2)) { case MRB_TT_INTEGER: @@ -1612,7 +1611,7 @@ cmpnum(mrb_state *mrb, mrb_value v1, mrb_value v2) break; #ifdef MRB_USE_RATIONAL case MRB_TT_RATIONAL: - y = mrb_to_flo(mrb, v2); + y = mrb_as_float(mrb, v2); break; #endif #endif diff --git a/src/object.c b/src/object.c index a44eab4bb..7e2748018 100644 --- a/src/object.c +++ b/src/object.c @@ -409,7 +409,7 @@ mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t) ename = "nil"; } else if (mrb_integer_p(x)) { - ename = "Fixnum"; + ename = "Integer"; } else if (mrb_symbol_p(x)) { ename = "Symbol"; @@ -513,7 +513,7 @@ mrb_to_int(mrb_state *mrb, mrb_value val) if (!mrb_integer_p(val)) { #ifndef MRB_NO_FLOAT if (mrb_float_p(val)) { - return mrb_flo_to_fixnum(mrb, val); + return mrb_float_to_integer(mrb, val); } #endif if (mrb_string_p(val)) { @@ -537,7 +537,7 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base) #ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: if (base != 0) goto arg_error; - return mrb_flo_to_fixnum(mrb, val); + return mrb_float_to_integer(mrb, val); #endif case MRB_TT_INTEGER: @@ -564,15 +564,9 @@ arg_error: return mrb_to_int(mrb, val); } -MRB_API mrb_value -mrb_Integer(mrb_state *mrb, mrb_value val) -{ - return mrb_convert_to_integer(mrb, val, 0); -} - #ifndef MRB_NO_FLOAT MRB_API mrb_value -mrb_Float(mrb_state *mrb, mrb_value val) +mrb_to_float(mrb_state *mrb, mrb_value val) { if (mrb_nil_p(val)) { mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Float"); diff --git a/src/range.c b/src/range.c index cb60bb63c..be611b2a3 100644 --- a/src/range.c +++ b/src/range.c @@ -11,9 +11,9 @@ #include <mruby/array.h> #include <mruby/presym.h> -#define RANGE_INITIALIZED_MASK 1 -#define RANGE_INITIALIZED(p) ((p)->flags |= RANGE_INITIALIZED_MASK) -#define RANGE_INITIALIZED_P(p) ((p)->flags & RANGE_INITIALIZED_MASK) +#define RANGE_INITIALIZED_FLAG 1 +#define RANGE_INITIALIZED(p) ((p)->flags |= RANGE_INITIALIZED_FLAG) +#define RANGE_INITIALIZED_P(p) ((p)->flags & RANGE_INITIALIZED_FLAG) static void r_check(mrb_state *mrb, mrb_value a, mrb_value b) @@ -25,13 +25,13 @@ r_check(mrb_state *mrb, mrb_value a, mrb_value b) ta = mrb_type(a); tb = mrb_type(b); #ifdef MRB_NO_FLOAT - if (ta == MRB_TT_INTEGER && tb == MRB_TT_INTEGER ) { + if (ta == MRB_TT_INTEGER && tb == MRB_TT_INTEGER ) return; #else if ((ta == MRB_TT_INTEGER || ta == MRB_TT_FLOAT) && (tb == MRB_TT_INTEGER || tb == MRB_TT_FLOAT)) { -#endif return; } +#endif if (mrb_nil_p(a) || mrb_nil_p(b)) return; @@ -342,6 +342,55 @@ range_initialize_copy(mrb_state *mrb, mrb_value copy) return copy; } +static mrb_value +range_num_to_a(mrb_state *mrb, mrb_value range) +{ + struct RRange *r = mrb_range_ptr(mrb, range); + mrb_value beg = RANGE_BEG(r); + mrb_value end = RANGE_END(r); + mrb_value ary; + + if (mrb_nil_p(end)) { + mrb_raise(mrb, E_RANGE_ERROR, "cannot convert endless range to an array"); + } + if (mrb_integer_p(beg)) { + if (mrb_integer_p(end)) { + mrb_int a = mrb_integer(beg); + mrb_int b = mrb_integer(end); + mrb_int len = b - a; + + if (!RANGE_EXCL(r)) len++; + ary = mrb_ary_new_capa(mrb, len); + for (mrb_int i=0; i<len; i++) { + mrb_ary_push(mrb, ary, mrb_int_value(mrb, a+i)); + } + return ary; + } +#ifndef MRB_NO_FLOAT + if (mrb_float_p(end)) { + mrb_float a = (mrb_float)mrb_integer(beg); + mrb_float b = mrb_float(end); + + ary = mrb_ary_new_capa(mrb, (mrb_int)(b - a) + 1); + if (RANGE_EXCL(r)) { + while (a < b) { + mrb_ary_push(mrb, ary, mrb_int_value(mrb, a)); + a += 1.0; + } + } + else { + while (a <= b) { + mrb_ary_push(mrb, ary, mrb_int_value(mrb, a)); + a += 1.0; + } + } + return ary; + } +#endif + } + return mrb_nil_value(); +} + mrb_value mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, const mrb_value *argv, mrb_value (*func)(mrb_state*, mrb_value, mrb_int)) { @@ -409,8 +458,8 @@ mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, if (!mrb_range_p(range)) return MRB_RANGE_TYPE_MISMATCH; r = mrb_range_ptr(mrb, range); - beg = mrb_nil_p(RANGE_BEG(r)) ? 0 : mrb_int(mrb, RANGE_BEG(r)); - end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_int(mrb, RANGE_END(r)); + beg = mrb_nil_p(RANGE_BEG(r)) ? 0 : mrb_as_int(mrb, RANGE_BEG(r)); + end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_as_int(mrb, RANGE_END(r)); excl = mrb_nil_p(RANGE_END(r)) ? 0 : RANGE_EXCL(r); if (beg < 0) { @@ -456,4 +505,5 @@ mrb_init_range(mrb_state *mrb) mrb_define_method(mrb, r, "inspect", range_inspect, MRB_ARGS_NONE()); /* 15.2.14.4.13(x) */ mrb_define_method(mrb, r, "eql?", range_eql, MRB_ARGS_REQ(1)); /* 15.2.14.4.14(x) */ mrb_define_method(mrb, r, "initialize_copy", range_initialize_copy, MRB_ARGS_REQ(1)); /* 15.2.14.4.15(x) */ + mrb_define_method(mrb, r, "__num_to_a", range_num_to_a, MRB_ARGS_NONE()); } diff --git a/src/readflt.c b/src/readflt.c new file mode 100644 index 000000000..19a8e8dc6 --- /dev/null +++ b/src/readflt.c @@ -0,0 +1,120 @@ +#include <mruby.h> + +#ifndef MRB_NO_FLOAT +/* + * strtod implementation. + * author: Yasuhiro Matsumoto (@mattn) + * license: public domain + */ + +/* +The original code can be found in https://github.com/mattn/strtod + +I modified the routine for mruby: + + * renamed the function `vim_strtod` -> `mrb_float_read` + * simplified the code + +My modifications in this file are also placed in the public domain. + +Matz (Yukihiro Matsumoto) +*/ + +#include <stdlib.h> +#include <string.h> +#include <math.h> +#include <errno.h> + +MRB_API double +mrb_float_read(const char *str, char **end) +{ + double d = 0.0; + int sign; + int n = 0; + const char *p, *a; + + a = p = str; + while (ISSPACE(*p)) + ++p; + + /* decimal part */ + sign = 1; + if (*p == '-') { + sign = -1; + ++p; + } else if (*p == '+') + ++p; + if (ISDIGIT(*p)) { + d = (double)(*p++ - '0'); + while (*p && ISDIGIT(*p)) { + d = d * 10.0 + (double)(*p - '0'); + ++p; + ++n; + } + a = p; + } else if (*p != '.') + goto done; + d *= sign; + + /* fraction part */ + if (*p == '.') { + double f = 0.0; + double base = 0.1; + ++p; + + if (ISDIGIT(*p)) + { + while (*p && ISDIGIT(*p)) { + f += base * (*p - '0') ; + base /= 10.0; + ++p; + ++n; + } + } + d += f * sign; + a = p; + } + + /* exponential part */ + if ((*p == 'E') || (*p == 'e')) { + int e = 0; + ++p; + + sign = 1; + if (*p == '-') { + sign = -1; + ++p; + } else if (*p == '+') + ++p; + + if (ISDIGIT(*p)) { + while (*p == '0') + ++p; + if (*p == '\0') --p; + e = (int)(*p++ - '0'); + for (; *p && ISDIGIT(*p); p++) { + if (e < 10000) + e = e * 10 + (*p - '0'); + } + e *= sign; + } + else if (!ISDIGIT(*(a-1))) { + a = str; + goto done; + } + else if (*p == 0) + goto done; + d *= pow(10.0, (double) e); + a = p; + } + else if (p > str && !ISDIGIT(*(p-1))) { + a = str; + goto done; + } + +done: + if (end) + *end = (char*)a; + return d; +} +#endif diff --git a/src/readint.c b/src/readint.c new file mode 100644 index 000000000..5fae222c2 --- /dev/null +++ b/src/readint.c @@ -0,0 +1,30 @@ +#include <mruby.h> +#include <mruby/numeric.h> +#include <errno.h> + +/* mrb_int_read(): read mrb_int from a string (base 10 only) */ +/* const char *p - string to read */ +/* const char *e - end of string */ +/* char **endp - end of parsed integer */ + +/* if integer overflows, errno will be set to ERANGE */ +/* also endp will be set to NULL on overflow */ +MRB_API mrb_int +mrb_int_read(const char *p, const char *e, char **endp) +{ + mrb_int n = 0; + int ch; + + while ((e == NULL || p < e) && ISDIGIT(*p)) { + ch = *p - '0'; + if (mrb_int_mul_overflow(n, 10, &n) || + mrb_int_add_overflow(n, ch, &n)) { + if (endp) *endp = NULL; + errno = ERANGE; + return MRB_INT_MAX; + } + p++; + } + if (endp) *endp = (char*)p; + return n; +} diff --git a/src/string.c b/src/string.c index d442ff17d..9af361f18 100644 --- a/src/string.c +++ b/src/string.c @@ -1102,8 +1102,8 @@ static enum str_convert_range str_convert_range(mrb_state *mrb, mrb_value str, mrb_value indx, mrb_value alen, mrb_int *beg, mrb_int *len) { if (!mrb_undef_p(alen)) { - *beg = mrb_int(mrb, indx); - *len = mrb_int(mrb, alen); + *beg = mrb_as_int(mrb, indx); + *len = mrb_as_int(mrb, alen); return STR_CHAR_RANGE; } else { @@ -1901,7 +1901,7 @@ mrb_obj_as_string(mrb_state *mrb, mrb_value obj) case MRB_TT_SYMBOL: return mrb_sym_str(mrb, mrb_symbol(obj)); case MRB_TT_INTEGER: - return mrb_fixnum_to_str(mrb, obj, 10); + return mrb_integer_to_str(mrb, obj, 10); case MRB_TT_SCLASS: case MRB_TT_CLASS: case MRB_TT_MODULE: @@ -2199,7 +2199,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str) return result; } -mrb_value +static mrb_value mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, mrb_int base, int badcheck) { const char *p = str; @@ -2363,12 +2363,6 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, mrb_int base, i return mrb_fixnum_value(0); } -MRB_API mrb_value -mrb_cstr_to_inum(mrb_state *mrb, const char *str, mrb_int base, mrb_bool badcheck) -{ - return mrb_str_len_to_inum(mrb, str, strlen(str), base, badcheck); -} - /* obslete: use RSTRING_CSTR() or mrb_string_cstr() */ MRB_API const char* mrb_string_value_cstr(mrb_state *mrb, mrb_value *ptr) @@ -2439,14 +2433,14 @@ mrb_str_to_i(mrb_state *mrb, mrb_value self) mrb_int base = 10; mrb_get_args(mrb, "|i", &base); - if (base < 0) { + if (base < 0 || 36 < base) { mrb_raisef(mrb, E_ARGUMENT_ERROR, "illegal radix %i", base); } return mrb_str_to_inum(mrb, self, base, FALSE); } #ifndef MRB_NO_FLOAT -double +static double mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck) { char buf[DBL_DIG * 4 + 20]; @@ -2536,12 +2530,6 @@ bad: } MRB_API double -mrb_cstr_to_dbl(mrb_state *mrb, const char *s, mrb_bool badcheck) -{ - return mrb_str_len_to_dbl(mrb, s, strlen(s), badcheck); -} - -MRB_API double mrb_str_to_dbl(mrb_state *mrb, mrb_value str, mrb_bool badcheck) { return mrb_str_len_to_dbl(mrb, RSTRING_PTR(str), RSTRING_LEN(str), badcheck); @@ -2922,250 +2910,3 @@ mrb_init_string(mrb_state *mrb) mrb_define_method(mrb, s, "setbyte", mrb_str_setbyte, MRB_ARGS_REQ(2)); mrb_define_method(mrb, s, "byteslice", mrb_str_byteslice, MRB_ARGS_ARG(1,1)); } - -#ifndef MRB_NO_FLOAT -/* - * Source code for the "strtod" library procedure. - * - * Copyright (c) 1988-1993 The Regents of the University of California. - * Copyright (c) 1994 Sun Microsystems, Inc. - * - * Permission to use, copy, modify, and distribute this - * software and its documentation for any purpose and without - * fee is hereby granted, provided that the above copyright - * notice appear in all copies. The University of California - * makes no representations about the suitability of this - * software for any purpose. It is provided "as is" without - * express or implied warranty. - * - * RCS: @(#) $Id: strtod.c 11708 2007-02-12 23:01:19Z shyouhei $ - */ - -#include <ctype.h> -#include <errno.h> - -static const int maxExponent = 511; /* Largest possible base 10 exponent. Any - * exponent larger than this will already - * produce underflow or overflow, so there's - * no need to worry about additional digits. - */ -static const double powersOf10[] = {/* Table giving binary powers of 10. Entry */ - 10., /* is 10^2^i. Used to convert decimal */ - 100., /* exponents into floating-point numbers. */ - 1.0e4, - 1.0e8, - 1.0e16, - 1.0e32, - 1.0e64, - 1.0e128, - 1.0e256 -}; - -MRB_API double -mrb_float_read(const char *string, char **endPtr) -/* const char *string; A decimal ASCII floating-point number, - * optionally preceded by white space. - * Must have form "-I.FE-X", where I is the - * integer part of the mantissa, F is the - * fractional part of the mantissa, and X - * is the exponent. Either of the signs - * may be "+", "-", or omitted. Either I - * or F may be omitted, or both. The decimal - * point isn't necessary unless F is present. - * The "E" may actually be an "e". E and X - * may both be omitted (but not just one). - */ -/* char **endPtr; If non-NULL, store terminating character's - * address here. */ -{ - int sign, expSign = FALSE; - double fraction, dblExp; - const double *d; - const char *p; - int c; - int exp = 0; /* Exponent read from "EX" field. */ - int fracExp = 0; /* Exponent that derives from the fractional - * part. Under normal circumstances, it is - * the negative of the number of digits in F. - * However, if I is very long, the last digits - * of I get dropped (otherwise a long I with a - * large negative exponent could cause an - * unnecessary overflow on I alone). In this - * case, fracExp is incremented one for each - * dropped digit. */ - int mantSize; /* Number of digits in mantissa. */ - int decPt; /* Number of mantissa digits BEFORE decimal - * point. */ - const char *pExp; /* Temporarily holds location of exponent - * in string. */ - - /* - * Strip off leading blanks and check for a sign. - */ - - p = string; - while (ISSPACE(*p)) { - p += 1; - } - if (*p == '-') { - sign = TRUE; - p += 1; - } - else { - if (*p == '+') { - p += 1; - } - sign = FALSE; - } - - /* - * Count the number of digits in the mantissa (including the decimal - * point), and also locate the decimal point. - */ - - decPt = -1; - for (mantSize = 0; ; mantSize += 1) - { - c = *p; - if (!ISDIGIT(c)) { - if ((c != '.') || (decPt >= 0)) { - break; - } - decPt = mantSize; - } - p += 1; - } - - /* - * Now suck up the digits in the mantissa. Use two integers to - * collect 9 digits each (this is faster than using floating-point). - * If the mantissa has more than 18 digits, ignore the extras, since - * they can't affect the value anyway. - */ - - pExp = p; - p -= mantSize; - if (decPt < 0) { - decPt = mantSize; - } - else { - mantSize -= 1; /* One of the digits was the point. */ - } - if (mantSize > 18) { - if (decPt - 18 > 29999) { - fracExp = 29999; - } - else { - fracExp = decPt - 18; - } - mantSize = 18; - } - else { - fracExp = decPt - mantSize; - } - if (mantSize == 0) { - fraction = 0.0; - p = string; - goto done; - } - else { - int frac1, frac2; - frac1 = 0; - for ( ; mantSize > 9; mantSize -= 1) - { - c = *p; - p += 1; - if (c == '.') { - c = *p; - p += 1; - } - frac1 = 10*frac1 + (c - '0'); - } - frac2 = 0; - for (; mantSize > 0; mantSize -= 1) - { - c = *p; - p += 1; - if (c == '.') { - c = *p; - p += 1; - } - frac2 = 10*frac2 + (c - '0'); - } - fraction = (1.0e9 * frac1) + frac2; - } - - /* - * Skim off the exponent. - */ - - p = pExp; - if ((*p == 'E') || (*p == 'e')) { - p += 1; - if (*p == '-') { - expSign = TRUE; - p += 1; - } - else { - if (*p == '+') { - p += 1; - } - expSign = FALSE; - } - while (ISDIGIT(*p)) { - exp = exp * 10 + (*p - '0'); - if (exp > 19999) { - exp = 19999; - } - p += 1; - } - } - if (expSign) { - exp = fracExp - exp; - } - else { - exp = fracExp + exp; - } - - /* - * Generate a floating-point number that represents the exponent. - * Do this by processing the exponent one bit at a time to combine - * many powers of 2 of 10. Then combine the exponent with the - * fraction. - */ - - if (exp < 0) { - expSign = TRUE; - exp = -exp; - } - else { - expSign = FALSE; - } - if (exp > maxExponent) { - exp = maxExponent; - errno = ERANGE; - } - dblExp = 1.0; - for (d = powersOf10; exp != 0; exp >>= 1, d += 1) { - if (exp & 01) { - dblExp *= *d; - } - } - if (expSign) { - fraction /= dblExp; - } - else { - fraction *= dblExp; - } - -done: - if (endPtr != NULL) { - *endPtr = (char *) p; - } - - if (sign) { - return -fraction; - } - return fraction; -} -#endif diff --git a/src/symbol.c b/src/symbol.c index 71cd65a63..007b8c885 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -401,6 +401,30 @@ sym_to_s(mrb_state *mrb, mrb_value sym) return mrb_sym_str(mrb, mrb_symbol(sym)); } +/* + * call-seq: + * sym.name -> string + * + * Returns the name or string corresponding to <i>sym</i>. Unlike #to_s, the + * returned string is frozen. + * + * :fred.name #=> "fred" + * :fred.name.frozen? #=> true + */ +static mrb_value +sym_name(mrb_state *mrb, mrb_value vsym) +{ + mrb_sym sym = mrb_symbol(vsym); + mrb_int len; + const char *name = mrb_sym_name_len(mrb, sym, &len); + + mrb_assert(name != NULL); + if (SYMBOL_INLINE_P(sym)) { + return mrb_str_new_frozen(mrb, name, len); + } + return mrb_str_new_static_frozen(mrb, name, len); +} + /* 15.2.11.3.4 */ /* * call-seq: @@ -587,7 +611,7 @@ mrb_sym_str(mrb_state *mrb, mrb_sym sym) } static const char* -sym_name(mrb_state *mrb, mrb_sym sym, mrb_bool dump) +sym_cstr(mrb_state *mrb, mrb_sym sym, mrb_bool dump) { mrb_int len; const char *name = mrb_sym_name_len(mrb, sym, &len); @@ -606,13 +630,13 @@ sym_name(mrb_state *mrb, mrb_sym sym, mrb_bool dump) MRB_API const char* mrb_sym_name(mrb_state *mrb, mrb_sym sym) { - return sym_name(mrb, sym, FALSE); + return sym_cstr(mrb, sym, FALSE); } MRB_API const char* mrb_sym_dump(mrb_state *mrb, mrb_sym sym) { - return sym_name(mrb, sym, TRUE); + return sym_cstr(mrb, sym, TRUE); } #define lesser(a,b) (((a)>(b))?(b):(a)) @@ -657,6 +681,7 @@ mrb_init_symbol(mrb_state *mrb) mrb_undef_class_method(mrb, sym, "new"); mrb_define_method(mrb, sym, "to_s", sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.3 */ + mrb_define_method(mrb, sym, "name", sym_name, MRB_ARGS_NONE()); mrb_define_method(mrb, sym, "to_sym", sym_to_sym, MRB_ARGS_NONE()); /* 15.2.11.3.4 */ mrb_define_method(mrb, sym, "inspect", sym_inspect, MRB_ARGS_NONE()); /* 15.2.11.3.5(x) */ mrb_define_method(mrb, sym, "<=>", sym_cmp, MRB_ARGS_REQ(1)); @@ -1136,6 +1136,13 @@ check_target_class(mrb_state *mrb) return TRUE; } +mrb_value +get_send_args(mrb_state *mrb, mrb_int argc, mrb_value *regs) +{ + if (argc < 0) return regs[0]; + return mrb_ary_new_from_values(mrb, argc, regs); +} + mrb_value mrb_obj_missing(mrb_state *mrb, mrb_value mod); void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self); @@ -1552,11 +1559,18 @@ RETRY_TRY_BLOCK: m = mrb_method_search_vm(mrb, &cls, mid); if (MRB_METHOD_UNDEF_P(m)) { mrb_sym missing = MRB_SYM(method_missing); - m = mrb_method_search_vm(mrb, &cls, missing); - if (MRB_METHOD_UNDEF_P(m) || (missing == mrb->c->ci->mid && mrb_obj_eq(mrb, regs[0], recv))) { - mrb_value args = (argc < 0) ? regs[a+1] : mrb_ary_new_from_values(mrb, c, regs+a+1); + mrb_value args; + + if (mrb_func_basic_p(mrb, recv, missing, mrb_obj_missing)) { + method_missing: + args = get_send_args(mrb, argc, regs+a+1); mrb_method_missing(mrb, mid, recv, args); } + if (mid != missing) { + cls = mrb_class(mrb, recv); + } + m = mrb_method_search_vm(mrb, &cls, missing); + if (MRB_METHOD_UNDEF_P(m)) goto method_missing; /* just in case */ if (argc >= 0) { if (a+2 >= irep->nregs) { mrb_stack_extend(mrb, a+3); @@ -1614,7 +1628,6 @@ RETRY_TRY_BLOCK: /* pop stackpos */ ci = cipop(mrb); pc = ci->pc; - JUMP; } else { /* setup environment for calling method */ @@ -1624,9 +1637,9 @@ RETRY_TRY_BLOCK: syms = irep->syms; mrb_stack_extend(mrb, (argc < 0 && irep->nregs < 3) ? 3 : irep->nregs); pc = irep->iseq; - JUMP; } } + JUMP; CASE(OP_CALL, Z) { mrb_callinfo *ci; @@ -1712,13 +1725,12 @@ RETRY_TRY_BLOCK: else if (target_class->tt == MRB_TT_MODULE) { target_class = mrb_vm_ci_target_class(ci); if (target_class->tt != MRB_TT_ICLASS) { - mrb_value exc = mrb_exc_new_lit(mrb, E_RUNTIME_ERROR, "superclass info lost [mruby limitations]"); - mrb_exc_set(mrb, exc); - goto L_RAISE; + goto super_typeerror; } } recv = regs[0]; if (!mrb_obj_is_kind_of(mrb, recv, target_class)) { + super_typeerror: ; mrb_value exc = mrb_exc_new_lit(mrb, E_TYPE_ERROR, "self has wrong type to call super in this context"); mrb_exc_set(mrb, exc); @@ -1736,20 +1748,18 @@ RETRY_TRY_BLOCK: m = mrb_method_search_vm(mrb, &cls, mid); if (MRB_METHOD_UNDEF_P(m)) { mrb_sym missing = MRB_SYM(method_missing); + mrb_value args; if (mrb_func_basic_p(mrb, recv, missing, mrb_obj_missing)) { - mrb_value args = (argc < 0) ? regs[a+1] : mrb_ary_new_from_values(mrb, b, regs+a+1); + super_missing: + args = get_send_args(mrb, argc, regs+a+1); mrb_no_method_error(mrb, mid, args, "no superclass method '%n'", mid); } if (mid != missing) { cls = mrb_class(mrb, recv); } m = mrb_method_search_vm(mrb, &cls, missing); - if (MRB_METHOD_UNDEF_P(m)) { /* just in case */ - mrb_value args = (argc < 0) ? regs[a+1] : mrb_ary_new_from_values(mrb, b, regs+a+1); - mrb_method_missing(mrb, missing, recv, args); - } - mid = missing; + if (MRB_METHOD_UNDEF_P(m)) goto super_missing; /* just in case */ if (argc >= 0) { if (a+2 >= irep->nregs) { mrb_stack_extend(mrb, a+3); @@ -1758,7 +1768,8 @@ RETRY_TRY_BLOCK: regs[a+2] = blk; argc = -1; } - mrb_ary_unshift(mrb, regs[a+1], mrb_symbol_value(ci->mid)); + mrb_ary_unshift(mrb, regs[a+1], mrb_symbol_value(mid)); + mid = missing; } /* push callinfo */ @@ -2150,7 +2161,7 @@ RETRY_TRY_BLOCK: } /* check jump destination */ while (cibase <= ci && ci->proc != dst) { - if (ci->acc < 0) { /* jump cross C boudary */ + if (ci->acc < 0) { /* jump cross C boundary */ localjump_error(mrb, LOCALJUMP_ERROR_RETURN); goto L_RAISE; } @@ -2440,9 +2451,7 @@ RETRY_TRY_BLOCK: CASE(OP_DIV, B) { #ifndef MRB_NO_FLOAT mrb_float x, y, f; - mrb_float mrb_div_flo(mrb_float x, mrb_float y); #endif - mrb_int mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y); /* need to check if op is overridden */ switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) { @@ -2475,7 +2484,7 @@ RETRY_TRY_BLOCK: } #ifndef MRB_NO_FLOAT - f = mrb_div_flo(x, y); + f = mrb_div_float(x, y); SET_FLOAT_VALUE(mrb, regs[a], f); #endif NEXT; diff --git a/test/t/bs_block.rb b/test/t/bs_block.rb index 995e52559..f4e4da375 100644 --- a/test/t/bs_block.rb +++ b/test/t/bs_block.rb @@ -520,3 +520,15 @@ assert('BS Block 38') do assert_equal [1,2,3,4,5], iter{|a,b,c=:c,d,e| [a,b,c,d,e]} end + +assert('BS Block 39') do + def iter + yield 1 + end + + assert_equal([1, 2, nil]) do + iter{|a, b=2, c| + [a, b, c] + } + end +end diff --git a/test/t/class.rb b/test/t/class.rb index e2839111c..1b4b84890 100644 --- a/test/t/class.rb +++ b/test/t/class.rb @@ -375,6 +375,20 @@ assert('clone Class') do assert_true(Foo.clone.new.func) end +assert('class definition in singleton class') do + class AClassS + class << self + class BClass + end + + def iclass + BClass + end + end + end + assert_equal(Class, AClassS.iclass.class) +end + assert('class variable and class << self style class method') do class ClassVariableTest @@class_variable = "value" diff --git a/test/t/syntax.rb b/test/t/syntax.rb index b3ee2d438..c5c677b3f 100644 --- a/test/t/syntax.rb +++ b/test/t/syntax.rb @@ -706,3 +706,29 @@ assert('argument forwarding') do o.a(1,2,3){} o.b(1,2,3){} end + +assert('endless def') do + c = Class.new { + def m1 = 42 + def m2() = 42 + def m3(x) = x+1 + def self.s1 = 42 + def self.s2() = 42 + def self.s3(x) = x + 1 + def cm1 = m3 42 + def cm2() = m3 42 + def cm3(x) = m3 x+1 + def self.cs1 = s3 42 + def self.cs2() = s3 42 + def self.cs3(x) = s3 x + 1 + } + o = c.new + assert_equal(42, o.m1) + assert_equal(43, o.m3(o.m2)) + assert_equal(42, c.s1) + assert_equal(43, c.s3(c.s2)) + assert_equal(43, o.cm1) + assert_equal(45, o.cm3(o.cm2)) + assert_equal(43, c.cs1) + assert_equal(45, c.cs3(c.cs2)) +end diff --git a/test/t/unicode.rb b/test/t/unicode.rb index 8622ae08a..c8602da5a 100644 --- a/test/t/unicode.rb +++ b/test/t/unicode.rb @@ -1,15 +1,15 @@ # Test of the \u notation assert('bare \u notation test') do - # Mininum and maximum one byte characters + # Minimum and maximum one byte characters assert_equal("\x00", "\u0000") assert_equal("\x7F", "\u007F") - # Mininum and maximum two byte characters + # Minimum and maximum two byte characters assert_equal("\xC2\x80", "\u0080") assert_equal("\xDF\xBF", "\u07FF") - # Mininum and maximum three byte characters + # Minimum and maximum three byte characters assert_equal("\xE0\xA0\x80", "\u0800") assert_equal("\xEF\xBF\xBF", "\uFFFF") @@ -17,19 +17,19 @@ assert('bare \u notation test') do end assert('braced \u notation test') do - # Mininum and maximum one byte characters + # Minimum and maximum one byte characters assert_equal("\x00", "\u{0000}") assert_equal("\x7F", "\u{007F}") - # Mininum and maximum two byte characters + # Minimum and maximum two byte characters assert_equal("\xC2\x80", "\u{0080}") assert_equal("\xDF\xBF", "\u{07FF}") - # Mininum and maximum three byte characters + # Minimum and maximum three byte characters assert_equal("\xE0\xA0\x80", "\u{0800}") assert_equal("\xEF\xBF\xBF", "\u{FFFF}") - # Mininum and maximum four byte characters + # Minimum and maximum four byte characters assert_equal("\xF0\x90\x80\x80", "\u{10000}") assert_equal("\xF4\x8F\xBF\xBF", "\u{10FFFF}") end |
