diff --git a/documentation/css/idle.css b/documentation/css/idle.css index eca8faf9..23667531 100644 --- a/documentation/css/idle.css +++ b/documentation/css/idle.css @@ -28,6 +28,7 @@ pre.idle .LibraryConstant { color: #A535AE; } pre.idle .FunctionArgument { + color: #0076ad; } pre.idle .BuiltInConstant { color: #A535AE; diff --git a/documentation/underscore.html b/documentation/underscore.html index 5ce7f0cc..357a94c0 100644 --- a/documentation/underscore.html +++ b/documentation/underscore.html @@ -19,7 +19,7 @@
   1 
    2    # Underscore.coffee
-   3    # (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
+   3    # (c) 2010 Jeremy Ashkenas, DocumentCloud Inc.
    4    # Underscore is freely distributable under the terms of the MIT license.
    5    # Portions of Underscore are inspired by or borrowed from Prototype.js,
    6    # Oliver Steele's Functional, and John Resig's Micro-Templating.
@@ -40,7 +40,7 @@
   21    # If Underscore is called as a function, it returns a wrapped object that
   22    # can be used OO-style. This wrapper holds altered versions of all the
   23    # underscore functions. Wrapped objects may be chained.
-  24    wrapper: obj =>
+  24    wrapper: (obj) ->
   25      this._wrapped: obj
   26      this
   27 
@@ -50,7 +50,7 @@
   31 
   32 
   33    # Create a safe reference to the Underscore object forreference below.
-  34    _: root._: obj => new wrapper(obj)
+  34    _: root._: (obj) -> new wrapper(obj)
   35 
   36 
   37    # Export the Underscore object for CommonJS.
@@ -58,22 +58,22 @@
   39 
   40 
   41    # Create quick reference variables for speed access to core prototypes.
-  42    slice:                Array::slice
-  43    unshift:              Array::unshift
-  44    toString:             Object::toString
-  45    hasOwnProperty:       Object::hasOwnProperty
-  46    propertyIsEnumerable: Object::propertyIsEnumerable
+  42    slice:                Array::slice
+  43    unshift:              Array::unshift
+  44    toString:             Object::toString
+  45    hasOwnProperty:       Object::hasOwnProperty
+  46    propertyIsEnumerable: Object::propertyIsEnumerable
   47 
   48 
   49    # Current version.
-  50    _.VERSION: '0.5.5'
+  50    _.VERSION: '0.5.7'
   51 
   52 
   53    # ------------------------ Collection Functions: ---------------------------
   54 
   55    # The cornerstone, an each implementation.
   56    # Handles objects implementing forEach, arrays, and raw objects.
-  57    _.each: obj, iterator, context =>
+  57    _.each: (obj, iterator, context) ->
   58      index: 0
   59      try
   60        return obj.forEach(iterator, context) if obj.forEach
@@ -87,36 +87,36 @@
   68 
   69    # Return the results of applying the iterator to each element. Use JavaScript
   70    # 1.6's version of map, if possible.
-  71    _.map: obj, iterator, context =>
+  71    _.map: (obj, iterator, context) ->
   72      return obj.map(iterator, context) if (obj and _.isFunction(obj.map))
   73      results: []
-  74      _.each(obj) value, index, list =>
+  74      _.each obj, (value, index, list) ->
   75        results.push(iterator.call(context, value, index, list))
   76      results
   77 
   78 
   79    # Reduce builds up a single result from a list of values. Also known as
   80    # inject, or foldl. Uses JavaScript 1.8's version of reduce, if possible.
-  81    _.reduce: obj, memo, iterator, context =>
+  81    _.reduce: (obj, memo, iterator, context) ->
   82      return obj.reduce(_.bind(iterator, context), memo) if (obj and _.isFunction(obj.reduce))
-  83      _.each(obj) value, index, list =>
+  83      _.each obj, (value, index, list) ->
   84        memo: iterator.call(context, memo, value, index, list)
   85      memo
   86 
   87 
   88    # The right-associative version of reduce, also known as foldr. Uses
   89    # JavaScript 1.8's version of reduceRight, if available.
-  90    _.reduceRight: obj, memo, iterator, context =>
+  90    _.reduceRight: (obj, memo, iterator, context) ->
   91      return obj.reduceRight(_.bind(iterator, context), memo) if (obj and _.isFunction(obj.reduceRight))
-  92      _.each(_.clone(_.toArray(obj)).reverse()) value, index =>
+  92      _.each _.clone(_.toArray(obj)).reverse(), (value, index) ->
   93        memo: iterator.call(context, memo, value, index, obj)
   94      memo
   95 
   96 
   97    # Return the first value which passes a truth test.
-  98    _.detect: obj, iterator, context =>
+  98    _.detect: (obj, iterator, context) ->
   99      result: null
- 100      _.each(obj) value, index, list =>
+ 100      _.each obj, (value, index, list) ->
  101        if iterator.call(context, value, index, list)
  102          result: value
  103          _.breakLoop()
@@ -125,47 +125,47 @@
  106 
  107    # Return all the elements that pass a truth test. Use JavaScript 1.6's
  108    # filter(), if it exists.
- 109    _.select: obj, iterator, context =>
+ 109    _.select: (obj, iterator, context) ->
  110      if obj and _.isFunction(obj.filter) then return obj.filter(iterator, context)
  111      results: []
- 112      _.each(obj) value, index, list =>
+ 112      _.each obj, (value, index, list) ->
  113        results.push(value) if iterator.call(context, value, index, list)
  114      results
  115 
  116 
  117    # Return all the elements for which a truth test fails.
- 118    _.reject: obj, iterator, context =>
+ 118    _.reject: (obj, iterator, context) ->
  119      results: []
- 120      _.each(obj) value, index, list =>
+ 120      _.each obj, (value, index, list) ->
  121        results.push(value) if not iterator.call(context, value, index, list)
  122      results
  123 
  124 
  125    # Determine whether all of the elements match a truth test. Delegate to
  126    # JavaScript 1.6's every(), if it is present.
- 127    _.all: obj, iterator, context =>
+ 127    _.all: (obj, iterator, context) ->
  128      iterator ||= _.identity
  129      return obj.every(iterator, context) if obj and _.isFunction(obj.every)
  130      result: true
- 131      _.each(obj) value, index, list =>
+ 131      _.each obj, (value, index, list) ->
  132        _.breakLoop() unless (result: result and iterator.call(context, value, index, list))
  133      result
  134 
  135 
  136    # Determine if at least one element in the object matches a truth test. Use
  137    # JavaScript 1.6's some(), if it exists.
- 138    _.any: obj, iterator, context =>
+ 138    _.any: (obj, iterator, context) ->
  139      iterator ||= _.identity
  140      return obj.some(iterator, context) if obj and _.isFunction(obj.some)
  141      result: false
- 142      _.each(obj) value, index, list =>
+ 142      _.each obj, (value, index, list) ->
  143        _.breakLoop() if (result: iterator.call(context, value, index, list))
  144      result
  145 
  146 
  147    # Determine if a given value is included in the array or object,
  148    # based on '==='.
- 149    _.include: obj, target =>
+ 149    _.include: (obj, target) ->
  150      return _.indexOf(obj, target) isnt -1 if _.isArray(obj)
  151      for key, val of obj
  152        return true if val is target
@@ -173,49 +173,49 @@
  154 
  155 
  156    # Invoke a method with arguments on every item in a collection.
- 157    _.invoke: obj, method =>
+ 157    _.invoke: (obj, method) ->
  158      args: _.rest(arguments, 2)
  159      (if method then val[method] else val).apply(val, args) for val in obj
  160 
  161 
  162    # Convenience version of a common use case of map: fetching a property.
- 163    _.pluck: obj, key =>
- 164      _.map(obj, (val => val[key]))
+ 163    _.pluck: (obj, key) ->
+ 164      _.map(obj, ((val) -> val[key]))
  165 
  166 
  167    # Return the maximum item or (item-based computation).
- 168    _.max: obj, iterator, context =>
+ 168    _.max: (obj, iterator, context) ->
  169      return Math.max.apply(Math, obj) if not iterator and _.isArray(obj)
  170      result: {computed: -Infinity}
- 171      _.each(obj) value, index, list =>
+ 171      _.each obj, (value, index, list) ->
  172        computed: if iterator then iterator.call(context, value, index, list) else value
  173        computed >= result.computed and (result: {value: value, computed: computed})
  174      result.value
  175 
  176 
  177    # Return the minimum element (or element-based computation).
- 178    _.min: obj, iterator, context =>
+ 178    _.min: (obj, iterator, context) ->
  179      return Math.min.apply(Math, obj) if not iterator and _.isArray(obj)
  180      result: {computed: Infinity}
- 181      _.each(obj) value, index, list =>
+ 181      _.each obj, (value, index, list) ->
  182        computed: if iterator then iterator.call(context, value, index, list) else value
  183        computed < result.computed and (result: {value: value, computed: computed})
  184      result.value
  185 
  186 
  187    # Sort the object's values by a criteria produced by an iterator.
- 188    _.sortBy: obj, iterator, context =>
- 189      _.pluck(((_.map(obj) value, index, list =>
+ 188    _.sortBy: (obj, iterator, context) ->
+ 189      _.pluck(((_.map obj, (value, index, list) ->
  190        {value: value, criteria: iterator.call(context, value, index, list)}
- 191      ).sort() left, right =>
+ 191      ).sort((left, right) ->
  192        a: left.criteria; b: right.criteria
  193        if a < b then -1 else if a > b then 1 else 0
- 194      ), 'value')
+ 194      )), 'value')
  195 
  196 
  197    # Use a comparator function to figure out at what index an object should
  198    # be inserted so as to maintain order. Uses binary search.
- 199    _.sortedIndex: array, obj, iterator =>
+ 199    _.sortedIndex: (array, obj, iterator) ->
  200      iterator ||= _.identity
  201      low: 0; high: array.length
  202      while low < high
@@ -225,7 +225,7 @@
  206 
  207 
  208    # Convert anything iterable into a real, live array.
- 209    _.toArray: iterable =>
+ 209    _.toArray: (iterable) ->
  210      return []                   if (!iterable)
  211      return iterable.toArray()   if (iterable.toArray)
  212      return iterable             if (_.isArray(iterable))
@@ -234,7 +234,7 @@
  215 
  216 
  217    # Return the number of elements in an object.
- 218    _.size: obj => _.toArray(obj).length
+ 218    _.size: (obj) -> _.toArray(obj).length
  219 
  220 
  221    # -------------------------- Array Functions: ------------------------------
@@ -242,7 +242,7 @@
  223    # Get the first element of an array. Passing "n" will return the first N
  224    # values in the array. Aliased as "head". The "guard" check allows it to work
  225    # with _.map.
- 226    _.first: array, n, guard =>
+ 226    _.first: (array, n, guard) ->
  227      if n and not guard then slice.call(array, 0, n) else array[0]
  228 
  229 
@@ -250,35 +250,35 @@
  231    # Especially useful on the arguments object. Passing an "index" will return
  232    # the rest of the values in the array from that index onward. The "guard"
  233    # check allows it to work with _.map.
- 234    _.rest: array, index, guard =>
+ 234    _.rest: (array, index, guard) ->
  235      slice.call(array, if _.isUndefined(index) or guard then 1 else index)
  236 
  237 
  238    # Get the last element of an array.
- 239    _.last: array => array[array.length - 1]
+ 239    _.last: (array) -> array[array.length - 1]
  240 
  241 
  242    # Trim out all falsy values from an array.
- 243    _.compact: array => array[i] for i in [0...array.length] when array[i]
+ 243    _.compact: (array) -> array[i] for i in [0...array.length] when array[i]
  244 
  245 
  246    # Return a completely flattened version of an array.
- 247    _.flatten: array =>
- 248      _.reduce(array, []) memo, value =>
+ 247    _.flatten: (array) ->
+ 248      _.reduce array, [], (memo, value) ->
  249        return memo.concat(_.flatten(value)) if _.isArray(value)
  250        memo.push(value)
  251        memo
  252 
  253 
  254    # Return a version of the array that does not contain the specified value(s).
- 255    _.without: array =>
+ 255    _.without: (array) ->
  256      values: _.rest(arguments)
  257      val for val in _.toArray(array) when not _.include(values, val)
  258 
  259 
  260    # Produce a duplicate-free version of the array. If the array has already
  261    # been sorted, you have the option of using a faster algorithm.
- 262    _.uniq: array, isSorted =>
+ 262    _.uniq: (array, isSorted) ->
  263      memo: []
  264      for el, i in _.toArray(array)
  265        memo.push(el) if i is 0 || (if isSorted is true then _.last(memo) isnt el else not _.include(memo, el))
@@ -287,330 +287,339 @@
  268 
  269    # Produce an array that contains every item shared between all the
  270    # passed-in arrays.
- 271    _.intersect: array =>
+ 271    _.intersect: (array) ->
  272      rest: _.rest(arguments)
- 273      _.select(_.uniq(array)) item =>
- 274        _.all(rest) other =>
+ 273      _.select _.uniq(array), (item) ->
+ 274        _.all rest, (other) ->
  275          _.indexOf(other, item) >= 0
  276 
  277 
  278    # Zip together multiple lists into a single array -- elements that share
  279    # an index go together.
- 280    _.zip: =>
- 281      args:       _.toArray(arguments)
- 282      length:     _.max(_.pluck(args, 'length'))
- 283      results:    new Array(length)
- 284      for i in [0...length]
- 285        results[i]: _.pluck(args, String(i))
- 286      results
+ 280    _.zip: ->
+ 281      length:     _.max(_.pluck(arguments, 'length'))
+ 282      results:    new Array(length)
+ 283      for i in [0...length]
+ 284        results[i]: _.pluck(arguments, String(i))
+ 285      results
+ 286 
  287 
- 288 
- 289    # If the browser doesn't supply us with indexOf (I'm looking at you, MSIE),
- 290    # we need this function. Return the position of the first occurence of an
- 291    # item in an array, or -1 if the item is not included in the array.
- 292    _.indexOf: array, item =>
- 293      return array.indexOf(item) if array.indexOf
- 294      i: 0; l: array.length
- 295      while l - i
- 296        if array[i] is item then return i else i++
- 297      -1
+ 288    # If the browser doesn't supply us with indexOf (I'm looking at you, MSIE),
+ 289    # we need this function. Return the position of the first occurence of an
+ 290    # item in an array, or -1 if the item is not included in the array.
+ 291    _.indexOf: (array, item) ->
+ 292      return array.indexOf(item) if array.indexOf
+ 293      i: 0; l: array.length
+ 294      while l - i
+ 295        if array[i] is item then return i else i++
+ 296      -1
+ 297 
  298 
- 299 
- 300    # Provide JavaScript 1.6's lastIndexOf, delegating to the native function,
- 301    # if possible.
- 302    _.lastIndexOf: array, item =>
- 303      return array.lastIndexOf(item) if array.lastIndexOf
- 304      i: array.length
- 305      while i
- 306        if array[i] is item then return i else i--
- 307      -1
+ 299    # Provide JavaScript 1.6's lastIndexOf, delegating to the native function,
+ 300    # if possible.
+ 301    _.lastIndexOf: (array, item) ->
+ 302      return array.lastIndexOf(item) if array.lastIndexOf
+ 303      i: array.length
+ 304      while i
+ 305        if array[i] is item then return i else i--
+ 306      -1
+ 307 
  308 
- 309 
- 310    # Generate an integer Array containing an arithmetic progression. A port of
- 311    # the native Python range() function. See:
- 312    # http://docs.python.org/library/functions.html#range
- 313    _.range: start, stop, step =>
- 314      a:        _.toArray(arguments)
- 315      solo:     a.length <= 1
- 316      i: start: if solo then 0 else a[0];
- 317      stop:     if solo then a[0] else a[1];
- 318      step:     a[2] or 1
- 319      len:      Math.ceil((stop - start) / step)
- 320      return [] if len <= 0
- 321      range:    new Array(len)
- 322      idx:      0
- 323      while true
- 324        return range if (if step > 0 then i - stop else stop - i) >= 0
- 325        range[idx]: i
- 326        idx++
- 327        i+= step
+ 309    # Generate an integer Array containing an arithmetic progression. A port of
+ 310    # the native Python range() function. See:
+ 311    # http://docs.python.org/library/functions.html#range
+ 312    _.range: (start, stop, step) ->
+ 313      a:        arguments
+ 314      solo:     a.length <= 1
+ 315      i: start: if solo then 0 else a[0];
+ 316      stop:     if solo then a[0] else a[1];
+ 317      step:     a[2] or 1
+ 318      len:      Math.ceil((stop - start) / step)
+ 319      return [] if len <= 0
+ 320      range:    new Array(len)
+ 321      idx:      0
+ 322      while true
+ 323        return range if (if step > 0 then i - stop else stop - i) >= 0
+ 324        range[idx]: i
+ 325        idx++
+ 326        i+= step
+ 327 
  328 
- 329 
- 330    # ----------------------- Function Functions: -----------------------------
- 331 
- 332    # Create a function bound to a given object (assigning 'this', and arguments,
- 333    # optionally). Binding with arguments is also known as 'curry'.
- 334    _.bind: func, obj =>
- 335      args: _.rest(arguments, 2)
- 336      => func.apply(obj or root, args.concat(_.toArray(arguments)))
+ 329    # ----------------------- Function Functions: -----------------------------
+ 330 
+ 331    # Create a function bound to a given object (assigning 'this', and arguments,
+ 332    # optionally). Binding with arguments is also known as 'curry'.
+ 333    _.bind: (func, obj) ->
+ 334      args: _.rest(arguments, 2)
+ 335      -> func.apply(obj or root, args.concat(arguments))
+ 336 
  337 
- 338 
- 339    # Bind all of an object's methods to that object. Useful for ensuring that
- 340    # all callbacks defined on an object belong to it.
- 341    _.bindAll: obj =>
- 342      funcs: if arguments.length > 1 then _.rest(arguments) else _.functions(obj)
- 343      _.each(funcs, (f => obj[f]: _.bind(obj[f], obj)))
- 344      obj
+ 338    # Bind all of an object's methods to that object. Useful for ensuring that
+ 339    # all callbacks defined on an object belong to it.
+ 340    _.bindAll: (obj) ->
+ 341      funcs: if arguments.length > 1 then _.rest(arguments) else _.functions(obj)
+ 342      _.each(funcs, (f) -> obj[f]: _.bind(obj[f], obj))
+ 343      obj
+ 344 
  345 
- 346 
- 347    # Delays a function for the given number of milliseconds, and then calls
- 348    # it with the arguments supplied.
- 349    _.delay: func, wait =>
- 350      args: _.rest(arguments, 2)
- 351      setTimeout((=> func.apply(func, args)), wait)
+ 346    # Delays a function for the given number of milliseconds, and then calls
+ 347    # it with the arguments supplied.
+ 348    _.delay: (func, wait) ->
+ 349      args: _.rest(arguments, 2)
+ 350      setTimeout((-> func.apply(func, args)), wait)
+ 351 
  352 
- 353 
- 354    # Defers a function, scheduling it to run after the current call stack has
- 355    # cleared.
- 356    _.defer: func =>
- 357      _.delay.apply(_, [func, 1].concat(_.rest(arguments)))
+ 353    # Defers a function, scheduling it to run after the current call stack has
+ 354    # cleared.
+ 355    _.defer: (func) ->
+ 356      _.delay.apply(_, [func, 1].concat(_.rest(arguments)))
+ 357 
  358 
- 359 
- 360    # Returns the first function passed as an argument to the second,
- 361    # allowing you to adjust arguments, run code before and after, and
- 362    # conditionally execute the original function.
- 363    _.wrap: func, wrapper =>
- 364      => wrapper.apply(wrapper, [func].concat(_.toArray(arguments)))
+ 359    # Returns the first function passed as an argument to the second,
+ 360    # allowing you to adjust arguments, run code before and after, and
+ 361    # conditionally execute the original function.
+ 362    _.wrap: (func, wrapper) ->
+ 363      -> wrapper.apply(wrapper, [func].concat(arguments))
+ 364 
  365 
- 366 
- 367    # Returns a function that is the composition of a list of functions, each
- 368    # consuming the return value of the function that follows.
- 369    _.compose: =>
- 370      funcs: _.toArray(arguments)
- 371      =>
- 372        args: _.toArray(arguments)
- 373        for i in [(funcs.length - 1)..0]
- 374          args: [funcs[i].apply(this, args)]
- 375        args[0]
+ 366    # Returns a function that is the composition of a list of functions, each
+ 367    # consuming the return value of the function that follows.
+ 368    _.compose: ->
+ 369      funcs: arguments
+ 370      ->
+ 371        args: arguments
+ 372        for i in [(funcs.length - 1)..0]
+ 373          args: [funcs[i].apply(this, args)]
+ 374        args[0]
+ 375 
  376 
- 377 
- 378    # ------------------------- Object Functions: ----------------------------
- 379 
- 380    # Retrieve the names of an object's properties.
- 381    _.keys: obj =>
- 382      return _.range(0, obj.length) if _.isArray(obj)
- 383      key for key, val of obj
+ 377    # ------------------------- Object Functions: ----------------------------
+ 378 
+ 379    # Retrieve the names of an object's properties.
+ 380    _.keys: (obj) ->
+ 381      return _.range(0, obj.length) if _.isArray(obj)
+ 382      key for key, val of obj
+ 383 
  384 
- 385 
- 386    # Retrieve the values of an object's properties.
- 387    _.values: obj =>
- 388      _.map(obj, _.identity)
+ 385    # Retrieve the values of an object's properties.
+ 386    _.values: (obj) ->
+ 387      _.map(obj, _.identity)
+ 388 
  389 
- 390 
- 391    # Return a sorted list of the function names available in Underscore.
- 392    _.functions: obj =>
- 393      _.select(_.keys(obj), key => _.isFunction(obj[key])).sort()
+ 390    # Return a sorted list of the function names available in Underscore.
+ 391    _.functions: (obj) ->
+ 392      _.select(_.keys(obj), (key) -> _.isFunction(obj[key])).sort()
+ 393 
  394 
- 395 
- 396    # Extend a given object with all of the properties in a source object.
- 397    _.extend: destination, source =>
- 398      for key, val of source
- 399        destination[key]: val
- 400      destination
+ 395    # Extend a given object with all of the properties in a source object.
+ 396    _.extend: (destination, source) ->
+ 397      for key, val of source
+ 398        destination[key]: val
+ 399      destination
+ 400 
  401 
- 402 
- 403    # Create a (shallow-cloned) duplicate of an object.
- 404    _.clone: obj =>
- 405      return obj.slice(0) if _.isArray(obj)
- 406      _.extend({}, obj)
+ 402    # Create a (shallow-cloned) duplicate of an object.
+ 403    _.clone: (obj) ->
+ 404      return obj.slice(0) if _.isArray(obj)
+ 405      _.extend({}, obj)
+ 406 
  407 
- 408 
- 409    # Invokes interceptor with the obj, and then returns obj.
- 410    # The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.
- 411    _.tap: obj, interceptor =>
- 412      interceptor(obj)
- 413      obj
+ 408    # Invokes interceptor with the obj, and then returns obj.
+ 409    # The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.
+ 410    _.tap: (obj, interceptor) ->
+ 411      interceptor(obj)
+ 412      obj
+ 413 
  414 
- 415 
- 416    # Perform a deep comparison to check if two objects are equal.
- 417    _.isEqual: a, b =>
- 418      # Check object identity.
- 419      return true if a is b
- 420      # Different types?
- 421      atype: typeof(a); btype: typeof(b)
- 422      return false if atype isnt btype
- 423      # Basic equality test (watch out for coercions).
- 424      return true if `a == b`
- 425      # One is falsy and the other truthy.
- 426      return false if (!a and b) or (a and !b)
- 427      # One of them implements an isEqual()?
- 428      return a.isEqual(b) if a.isEqual
- 429      # Check dates' integer values.
- 430      return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b)
- 431      # Both are NaN?
- 432      return true if _.isNaN(a) and _.isNaN(b)
- 433      # Compare regular expressions.
- 434      if _.isRegExp(a) and _.isRegExp(b)
- 435        return a.source     is b.source and
- 436               a.global     is b.global and
- 437               a.ignoreCase is b.ignoreCase and
- 438               a.multiline  is b.multiline
- 439      # If a is not an object by this point, we can't handle it.
- 440      return false if atype isnt 'object'
- 441      # Check for different array lengths before comparing contents.
- 442      return false if a.length and (a.length isnt b.length)
- 443      # Nothing else worked, deep compare the contents.
- 444      aKeys: _.keys(a); bKeys: _.keys(b)
- 445      # Different object sizes?
- 446      return false if aKeys.length isnt bKeys.length
- 447      # Recursive comparison of contents.
- 448      # for (var key in a) if (!_.isEqual(a[key], b[key])) return false;
- 449      return true
+ 415    # Perform a deep comparison to check if two objects are equal.
+ 416    _.isEqual: (a, b) ->
+ 417      # Check object identity.
+ 418      return true if a is b
+ 419      # Different types?
+ 420      atype: typeof(a); btype: typeof(b)
+ 421      return false if atype isnt btype
+ 422      # Basic equality test (watch out for coercions).
+ 423      return true if `a == b`
+ 424      # One is falsy and the other truthy.
+ 425      return false if (!a and b) or (a and !b)
+ 426      # One of them implements an isEqual()?
+ 427      return a.isEqual(b) if a.isEqual
+ 428      # Check dates' integer values.
+ 429      return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b)
+ 430      # Both are NaN?
+ 431      return true if _.isNaN(a) and _.isNaN(b)
+ 432      # Compare regular expressions.
+ 433      if _.isRegExp(a) and _.isRegExp(b)
+ 434        return a.source     is b.source and
+ 435               a.global     is b.global and
+ 436               a.ignoreCase is b.ignoreCase and
+ 437               a.multiline  is b.multiline
+ 438      # If a is not an object by this point, we can't handle it.
+ 439      return false if atype isnt 'object'
+ 440      # Check for different array lengths before comparing contents.
+ 441      return false if a.length and (a.length isnt b.length)
+ 442      # Nothing else worked, deep compare the contents.
+ 443      aKeys: _.keys(a); bKeys: _.keys(b)
+ 444      # Different object sizes?
+ 445      return false if aKeys.length isnt bKeys.length
+ 446      # Recursive comparison of contents.
+ 447      # for (var key in a) if (!_.isEqual(a[key], b[key])) return false;
+ 448      return true
+ 449 
  450 
- 451 
- 452    # Is a given array or object empty?
- 453    _.isEmpty:      obj => _.keys(obj).length is 0
+ 451    # Is a given array or object empty?
+ 452    _.isEmpty:      (obj) -> _.keys(obj).length is 0
+ 453 
  454 
- 455 
- 456    # Is a given value a DOM element?
- 457    _.isElement:    obj => obj and obj.nodeType is 1
+ 455    # Is a given value a DOM element?
+ 456    _.isElement:    (obj) -> obj and obj.nodeType is 1
+ 457 
  458 
- 459 
- 460    # Is a given value an array?
- 461    _.isArray:      obj => !!(obj and obj.concat and obj.unshift)
+ 459    # Is a given value an array?
+ 460    _.isArray:      (obj) -> !!(obj and obj.concat and obj.unshift)
+ 461 
  462 
- 463 
- 464    # Is a given variable an arguments object?
- 465    _.isArguments:  obj => obj and _.isNumber(obj.length) and !_.isArray(obj) and !propertyIsEnumerable.call(obj, 'length')
+ 463    # Is a given variable an arguments object?
+ 464    _.isArguments:  (obj) -> obj and _.isNumber(obj.length) and not obj.concat and
+ 465                             not obj.substr and not obj.apply and not propertyIsEnumerable.call(obj, 'length')
  466 
  467 
  468    # Is the given value a function?
- 469    _.isFunction:   obj => !!(obj and obj.constructor and obj.call and obj.apply)
+ 469    _.isFunction:   (obj) -> !!(obj and obj.constructor and obj.call and obj.apply)
  470 
  471 
  472    # Is the given value a string?
- 473    _.isString:     obj => !!(obj is '' or (obj and obj.charCodeAt and obj.substr))
+ 473    _.isString:     (obj) -> !!(obj is '' or (obj and obj.charCodeAt and obj.substr))
  474 
  475 
  476    # Is a given value a number?
- 477    _.isNumber:     obj => toString.call(obj) is '[object Number]'
+ 477    _.isNumber:     (obj) -> (obj is +obj) or toString.call(obj) is '[object Number]'
  478 
  479 
  480    # Is a given value a Date?
- 481    _.isDate:       obj => !!(obj and obj.getTimezoneOffset and obj.setUTCFullYear)
+ 481    _.isDate:       (obj) -> !!(obj and obj.getTimezoneOffset and obj.setUTCFullYear)
  482 
  483 
  484    # Is the given value a regular expression?
- 485    _.isRegExp:     obj => !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false))
+ 485    _.isRegExp:     (obj) -> !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false))
  486 
  487 
  488    # Is the given value NaN -- this one is interesting. NaN != NaN, and
  489    # isNaN(undefined) == true, so we make sure it's a number first.
- 490    _.isNaN:        obj => _.isNumber(obj) and window.isNaN(obj)
+ 490    _.isNaN:        (obj) -> _.isNumber(obj) and window.isNaN(obj)
  491 
  492 
  493    # Is a given value equal to null?
- 494    _.isNull:       obj => obj is null
+ 494    _.isNull:       (obj) -> obj is null
  495 
  496 
  497    # Is a given variable undefined?
- 498    _.isUndefined:  obj => typeof obj is 'undefined'
+ 498    _.isUndefined:  (obj) -> typeof obj is 'undefined'
  499 
  500 
  501    # -------------------------- Utility Functions: --------------------------
  502 
  503    # Run Underscore.js in noConflict mode, returning the '_' variable to its
  504    # previous owner. Returns a reference to the Underscore object.
- 505    _.noConflict: =>
+ 505    _.noConflict: ->
  506      root._: previousUnderscore
  507      this
  508 
  509 
  510    # Keep the identity function around for default iterators.
- 511    _.identity: value => value
+ 511    _.identity: (value) -> value
  512 
  513 
  514    # Break out of the middle of an iteration.
- 515    _.breakLoop: => throw breaker
+ 515    _.breakLoop: -> throw breaker
  516 
  517 
  518    # Generate a unique integer id (unique within the entire client session).
  519    # Useful for temporary DOM ids.
  520    idCounter: 0
- 521    _.uniqueId: prefix =>
+ 521    _.uniqueId: (prefix) ->
  522      (prefix or '') + idCounter++
  523 
  524 
- 525    # JavaScript templating a-la ERB, pilfered from John Resig's
- 526    # "Secrets of the JavaScript Ninja", page 83.
- 527    _.template: str, data =>
- 528      `var fn = new Function('obj',
- 529        'var p=[],print=function(){p.push.apply(p,arguments);};' +
- 530        'with(obj){p.push(\'' +
- 531        str.
- 532          replace(/[\r\t\n]/g, " ").
- 533          split("<%").join("\t").
- 534          replace(/((^|%>)[^\t]*)'/g, "$1\r").
- 535          replace(/\t=(.*?)%>/g, "',$1,'").
- 536          split("\t").join("');").
- 537          split("%>").join("p.push('").
- 538          split("\r").join("\\'") +
- 539        "');}return p.join('');")`
- 540      if data then fn(data) else fn
- 541 
- 542 
- 543    # ------------------------------- Aliases ----------------------------------
- 544 
- 545    _.forEach: _.each
- 546    _.foldl:   _.inject:      _.reduce
- 547    _.foldr:   _.reduceRight
- 548    _.filter:  _.select
- 549    _.every:   _.all
- 550    _.some:    _.any
- 551    _.head:    _.first
- 552    _.tail:    _.rest
- 553    _.methods: _.functions
+ 525    # By default, Underscore uses ERB-style template delimiters, change the
+ 526    # following template settings to use alternative delimiters.
+ 527    _.templateSettings: {
+ 528      start:        '<%'
+ 529      end:          '%>'
+ 530      interpolate:  /<%=(.+?)%>/g
+ 531    }
+ 532 
+ 533 
+ 534    # JavaScript templating a-la ERB, pilfered from John Resig's
+ 535    # "Secrets of the JavaScript Ninja", page 83.
+ 536    # Single-quotea fix from Rick Strahl's version.
+ 537    _.template: (str, data) ->
+ 538      c: _.templateSettings
+ 539      fn: new Function 'obj',
+ 540        'var p=[],print=function(){p.push.apply(p,arguments);};' +
+ 541        'with(obj){p.push(\'' +
+ 542        str.replace(/[\r\t\n]/g, " ")
+ 543           .replace(new RegExp("'(?=[^"+c.end[0]+"]*"+c.end+")","g"),"\t")
+ 544           .split("'").join("\\'")
+ 545           .split("\t").join("'")
+ 546           .replace(c.interpolate, "',$1,'")
+ 547           .split(c.start).join("');")
+ 548           .split(c.end).join("p.push('") +
+ 549           "');}return p.join('');"
+ 550      if data then fn(data) else fn
+ 551 
+ 552 
+ 553    # ------------------------------- Aliases ----------------------------------
  554 
- 555 
- 556    #   /*------------------------ Setup the OOP Wrapper: --------------------------*/
- 557 
- 558    # Helper function to continue chaining intermediate results.
- 559    result: obj, chain =>
- 560      if chain then _(obj).chain() else obj
- 561 
- 562 
- 563    # Add all of the Underscore functions to the wrapper object.
- 564    _.each(_.functions(_)) name =>
- 565      method: _[name]
- 566      wrapper.prototype[name]: =>
- 567        args: _.toArray(arguments)
- 568        unshift.call(args, this._wrapped)
- 569        result(method.apply(_, args), this._chain)
- 570 
+ 555    _.forEach: _.each
+ 556    _.foldl:   _.inject:      _.reduce
+ 557    _.foldr:   _.reduceRight
+ 558    _.filter:  _.select
+ 559    _.every:   _.all
+ 560    _.some:    _.any
+ 561    _.head:    _.first
+ 562    _.tail:    _.rest
+ 563    _.methods: _.functions
+ 564 
+ 565 
+ 566    #   /*------------------------ Setup the OOP Wrapper: --------------------------*/
+ 567 
+ 568    # Helper function to continue chaining intermediate results.
+ 569    result: (obj, chain) ->
+ 570      if chain then _(obj).chain() else obj
  571 
- 572    # Add all mutator Array functions to the wrapper.
- 573    _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift']) name =>
- 574      method: Array.prototype[name]
- 575      wrapper.prototype[name]: =>
- 576        method.apply(this._wrapped, arguments)
- 577        result(this._wrapped, this._chain)
- 578 
+ 572 
+ 573    # Add all of the Underscore functions to the wrapper object.
+ 574    _.each _.functions(_), (name) ->
+ 575      method: _[name]
+ 576      wrapper.prototype[name]: ->
+ 577        unshift.call(arguments, this._wrapped)
+ 578        result(method.apply(_, arguments), this._chain)
  579 
- 580    # Add all accessor Array functions to the wrapper.
- 581    _.each(['concat', 'join', 'slice']) name =>
- 582      method: Array.prototype[name]
- 583      wrapper.prototype[name]: =>
- 584        result(method.apply(this._wrapped, arguments), this._chain)
- 585 
- 586 
- 587    # Start chaining a wrapped Underscore object.
- 588    wrapper::chain: =>
- 589      this._chain: true
- 590      this
- 591 
- 592 
- 593    # Extracts the result from a wrapped and chained object.
- 594    wrapper::value: => this._wrapped
+ 580 
+ 581    # Add all mutator Array functions to the wrapper.
+ 582    _.each ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], (name) ->
+ 583      method: Array.prototype[name]
+ 584      wrapper.prototype[name]: ->
+ 585        method.apply(this._wrapped, arguments)
+ 586        result(this._wrapped, this._chain)
+ 587 
+ 588 
+ 589    # Add all accessor Array functions to the wrapper.
+ 590    _.each ['concat', 'join', 'slice'], (name) ->
+ 591      method: Array.prototype[name]
+ 592      wrapper.prototype[name]: ->
+ 593        result(method.apply(this._wrapped, arguments), this._chain)
+ 594 
+ 595 
+ 596    # Start chaining a wrapped Underscore object.
+ 597    wrapper::chain: ->
+ 598      this._chain: true
+ 599      this
+ 600 
+ 601 
+ 602    # Extracts the result from a wrapped and chained object.
+ 603    wrapper::value: -> this._wrapped
 

obj and _.isNumber(obj.length) and !_.isArray(obj) and !propertyIsEnumerable.call(obj, 'length') + _.isArguments: (obj) -> obj and _.isNumber(obj.length) and not obj.concat and + not obj.substr and not obj.apply and not propertyIsEnumerable.call(obj, 'length') # Is the given value a function? @@ -473,7 +474,7 @@ # Is a given value a number? - _.isNumber: (obj) -> toString.call(obj) is '[object Number]' + _.isNumber: (obj) -> (obj is +obj) or toString.call(obj) is '[object Number]' # Is a given value a Date? @@ -521,21 +522,31 @@ (prefix or '') + idCounter++ + # By default, Underscore uses ERB-style template delimiters, change the + # following template settings to use alternative delimiters. + _.templateSettings: { + start: '<%' + end: '%>' + interpolate: /<%=(.+?)%>/g + } + + # JavaScript templating a-la ERB, pilfered from John Resig's # "Secrets of the JavaScript Ninja", page 83. + # Single-quotea fix from Rick Strahl's version. _.template: (str, data) -> - `var fn = new Function('obj', + c: _.templateSettings + fn: new Function 'obj', 'var p=[],print=function(){p.push.apply(p,arguments);};' + 'with(obj){p.push(\'' + - str. - replace(/[\r\t\n]/g, " "). - split("<%").join("\t"). - replace(/((^|%>)[^\t]*)'/g, "$1\r"). - replace(/\t=(.*?)%>/g, "',$1,'"). - split("\t").join("');"). - split("%>").join("p.push('"). - split("\r").join("\\'") + - "');}return p.join('');")` + str.replace(/[\r\t\n]/g, " ") + .replace(new RegExp("'(?=[^"+c.end[0]+"]*"+c.end+")","g"),"\t") + .split("'").join("\\'") + .split("\t").join("'") + .replace(c.interpolate, "',$1,'") + .split(c.start).join("');") + .split(c.end).join("p.push('") + + "');}return p.join('');" if data then fn(data) else fn @@ -564,7 +575,7 @@ method: _[name] wrapper.prototype[name]: -> unshift.call(arguments, this._wrapped) - result(method.apply(_, args), this._chain) + result(method.apply(_, arguments), this._chain) # Add all mutator Array functions to the wrapper. diff --git a/lib/coffee_script/grammar.y b/lib/coffee_script/grammar.y index 098509a7..174a498d 100644 --- a/lib/coffee_script/grammar.y +++ b/lib/coffee_script/grammar.y @@ -22,7 +22,7 @@ token INDENT OUTDENT # Declare order of operations. prechigh left '?' - nonassoc UMINUS NOT '!' '!!' '~' '++' '--' + nonassoc UMINUS UPLUS NOT '!' '!!' '~' '++' '--' left '*' '/' '%' left '+' '-' left '<<' '>>' '>>>' @@ -141,6 +141,7 @@ rule '!' Expression { result = OpNode.new(val[0], val[1]) } | '!!' Expression { result = OpNode.new(val[0], val[1]) } | '-' Expression = UMINUS { result = OpNode.new(val[0], val[1]) } + | '+' Expression = UPLUS { result = OpNode.new(val[0], val[1]) } | NOT Expression { result = OpNode.new(val[0], val[1]) } | '~' Expression { result = OpNode.new(val[0], val[1]) } | '--' Expression { result = OpNode.new(val[0], val[1]) } diff --git a/lib/coffee_script/narwhal/lib/coffee-script.js b/lib/coffee_script/narwhal/lib/coffee-script.js index 0ea08227..b2283d0f 100644 --- a/lib/coffee_script/narwhal/lib/coffee-script.js +++ b/lib/coffee_script/narwhal/lib/coffee-script.js @@ -42,7 +42,7 @@ } catch (e) { return print(e); } - })()); + }).call(this)); } return __b; }; diff --git a/lib/coffee_script/parser.rb b/lib/coffee_script/parser.rb index 65aa8f59..9b342e4b 100644 --- a/lib/coffee_script/parser.rb +++ b/lib/coffee_script/parser.rb @@ -34,312 +34,318 @@ module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 459) ##### State transition tables begin ### clist = [ -'125,11,133,26,28,31,37,39,43,48,53,58,60,88,90,92,200,1,172,259,19,23', -'86,184,87,56,40,46,276,49,54,61,121,126,275,281,282,141,12,273,20,155', -'30,32,160,41,173,46,51,56,56,152,56,68,71,4,9,137,140,144,147,150,154', -'158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135', -'138,142,145,148,151,156,118,122,127,130,134,162,69,2,56,171,274,24,56', -'29,11,34,196,26,28,31,37,39,43,48,53,58,60,183,259,190,294,1,152,98', -'19,23,46,190,137,140,40,96,202,49,54,61,62,69,2,7,13,6,12,278,20,307', -'30,32,265,41,165,46,51,7,13,7,13,68,71,4,9,15,18,7,13,192,46,35,285', -'189,255,7,13,192,56,260,7,13,11,204,205,26,28,31,37,39,43,48,53,58,60', -'289,7,13,188,1,69,2,19,23,180,24,190,29,40,34,74,49,54,61,62,98,56,7', -'13,6,12,116,20,96,30,32,98,41,287,46,51,281,282,259,96,68,71,4,9,15', -'18,46,152,56,291,35,98,98,-182,-182,7,13,192,110,96,96,11,165,46,26', -'28,31,37,39,43,48,53,58,60,46,203,99,312,1,69,2,19,23,182,24,56,29,40', -'34,106,49,54,61,62,46,46,99,181,6,12,116,20,74,30,32,152,41,211,46,51', -',137,140,,68,71,4,9,15,18,152,7,13,188,35,186,137,140,144,147,150,154', -'158,204,205,11,198,199,26,28,31,37,39,43,48,53,58,60,88,90,92,,1,69', -'2,19,23,86,24,87,29,40,34,152,49,54,61,62,,-182,-182,,6,12,,20,,30,32', -'152,41,,46,51,,-182,-182,,68,71,4,9,15,18,152,7,13,,35,,137,140,144', -'147,150,154,158,,,11,,,26,28,31,37,39,43,48,53,58,60,88,90,92,,1,69', -'2,19,23,86,24,87,29,40,34,152,49,54,61,62,,137,140,,6,12,,20,,30,32', -'152,41,,46,51,,-182,-182,,68,71,4,9,15,18,152,,,,35,,137,140,144,147', -'150,154,158,,,11,,,26,28,31,37,39,43,48,53,58,60,88,90,92,,1,69,2,19', -'23,86,24,87,29,40,34,152,49,54,61,62,,-182,-182,,6,12,,20,,30,32,,41', -',46,51,,88,90,92,68,71,4,9,15,18,86,,87,152,35,88,90,92,,137,140,144', -'147,150,86,11,87,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24', -',29,40,34,152,49,54,61,62,,-182,-182,,6,12,,20,,30,32,152,41,,46,51', -',-182,-182,,68,71,4,9,15,18,152,,,,35,,137,140,144,147,150,,,,,11,,', -'26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', -'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', -',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', -'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', -',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', -',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', -'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', -',6,12,,20,,30,32,,41,,46,51,103,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,', -'11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49', -'54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,', -',,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29', -'40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18', -',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', -',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', -'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', -',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', -',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', -'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', -',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', -'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,114,,,68,71,4,9,15,18', -',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', -',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', -'37,39,43,48,53,58,60,309,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62', -',,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,', -'11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49', -'54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,', -',,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29', -'40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18', -',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,299,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12', -',20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28', -'31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62', -',,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,', -'11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49', -'54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,', -',,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29', -'40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18', -',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', -',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', -'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', -',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', -',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', -'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', -',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', -'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,103,,,,68,71,4,9,15,18', -',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', -',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', -'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', -',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', -',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', -'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', -',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', -'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', -',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -'271,,,,68,71,4,9,15,18,152,,,,35,,137,140,144,147,150,154,158,120,124', -'129,132,136,139,143,146,149,153,157,119,123,128,,,,,,,69,2,7,13,,24', -',29,11,34,,26,28,31,37,39,43,48,53,58,60,,,,,1,,,19,23,,,,,40,,,49,54', -'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', -',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', -'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', -',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,103,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39', -'43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12', -',20,,30,32,,41,,46,51,56,,,,68,71,4,9,15,18,152,,,,35,,137,140,144,147', -'150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128', -',,,,,,69,2,7,13,,24,,29,11,34,,26,28,31,37,39,43,48,53,58,60,,,,,1,', -',19,23,,,,,40,,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', -',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', -'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', -',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', -',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', -'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', -',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', -'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', -',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', -',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', -'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', -'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', -',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', -'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', -'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', -'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', -',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', -'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', -',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', -',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', -'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', -',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', -'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,125,,133,,68,71,4,9,15', -'18,152,,,,35,,137,140,144,147,150,154,158,120,124,129,132,136,139,,', -',121,126,,,,141,,,,155,,69,2,,,,24,,29,152,34,,,,,137,140,144,147,150', -'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', -'135,138,142,145,148,151,156,118,122,127,130,134,125,,133,,,,,,,310,', -'26,28,31,37,39,43,48,53,58,60,,,,,,,,,,,,121,126,,,,141,54,61,,155,', -',,,,,,,,152,,41,,,51,137,140,144,147,150,154,158,120,124,129,132,136', -'139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156', -'118,122,127,130,134,,,,,,,,,,317,,,,,24,,29,,34,26,28,31,37,39,43,48', -'53,58,60,,,26,28,31,37,39,43,48,53,58,60,,,,,1,54,61,19,23,,,,,40,,', -'49,54,61,,41,,,51,,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,152', -',,,35,,137,140,144,147,150,154,158,120,124,129,132,136,139,,,,,,,,24', -',29,,34,,,69,2,,,,24,,29,,34,26,28,31,37,39,43,48,53,58,60,,,,,1,,,19', -'23,,,,,40,,,49,54,61,,,,,,,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15', -'18,152,,,,35,,137,140,144,147,150,154,158,120,124,129,,,26,28,31,37', -'39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,,12', -',20,,30,32,,41,,46,51,125,,133,,68,71,4,9,15,18,152,,,,35,,137,140,144', -'147,150,154,158,120,124,129,132,136,139,,,,121,126,,,,141,,,,155,,69', -'2,,,,24,,29,152,34,,,,,137,140,144,147,150,154,158,120,124,129,132,136', -'139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156', -'118,122,127,130,134,125,152,133,,,,,137,140,144,147,150,154,158,120', -'124,129,132,136,139,143,146,149,153,157,119,123,128,,,,,121,126,,,,141', -',,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132', -'136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151', -'156,118,122,127,130,134,125,152,133,,,,,137,140,144,147,150,154,158', -'120,124,129,132,136,139,143,146,149,153,157,119,123,128,,,,,121,126', -',,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124', -'129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145', -'148,151,156,118,122,127,130,134,125,152,133,,,,,137,140,144,147,150', -'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,,,,', -'121,126,,,,141,,,,155,,,,,,,,176,,152,,,,,,137,140,144,147,150,154,158', -'120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138', -'142,145,148,151,156,118,122,127,130,134,125,152,133,,,,,137,140,144', -'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', -'128,,,,,121,126,,,,141,,,,155,,,,,,,,56,,152,,,,,,137,140,144,147,150', -'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', -'135,138,142,145,148,151,156,118,122,127,130,134,125,152,133,,,,,137', -'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', -'119,123,128,,,,,121,126,,,,141,,,,155,,,,,,,,56,,152,,,,,,137,140,144', -'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', -'128,131,135,138,142,145,148,151,156,118,122,127,130,134,125,152,133', -',,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149', -'153,157,119,123,128,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137', -'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', -'119,123,128,131,135,138,142,145,148,151,156,118,122,127,130,134,125', -'152,133,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,,,,', -',,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150', -'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', -'135,138,142,145,148,151,156,118,122,127,130,134,125,152,133,,,,,137', -'140,144,147,150,154,158,120,124,129,,,,,,,,,,,,,,,,121,126,,,,141,,', -',155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136', -'139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156', -'118,122,127,130,134,125,152,133,,,,,137,140,144,147,150,154,158,120', -'124,129,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140', -'144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119', -'123,128,131,135,138,142,145,148,151,156,118,122,127,130,134,125,,133', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,', -',137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153', -'157,119,123,128,131,135,138,142,145,148,151,156,118,122,127,130,134', -'125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,', -',152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146', -'149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,122,127', -'130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155', -',,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139', -'143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118', -'122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,315,,,,,,,121,126,,,', -'141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129', -'132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148', -'151,156,118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121', -'126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120', -'124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142', -'145,148,151,156,118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154', -'158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135', -'138,142,145,148,151,156,118,122,127,130,134,125,,133,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147', -'150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128', -'131,135,138,142,145,148,151,156,118,194,127,130,134,125,,133,,,,,,,', -',,,,,,,,,,,,,,,262,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137', -'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', -'119,123,128,131,135,138,142,145,148,151,156,118,261,127,130,134,125', -',133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152', -',,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149', -'153,157,119,123,128,131,135,138,142,145,148,151,156,118,122,127,130', -'134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,', -',,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143', -'146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,122', -'127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,', -'155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136', -'139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156', -'118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,318,,,,,,,121,126', -',,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124', -'129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145', -'148,151,156,118,122,127,130,134,121,126,,,,,,,,155,,,,,,,,,,152,,,,', -',137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153', -'157,119,123,128,131,135,138,142,145,148,151,156,118,122,127,130,134', -'121,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120', -'124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142', -'145,148,151,156,118,122,127,130,134,121,126,,,,,,,,155,,,,,,,,,,152', -',,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149', -'153,157,119,123,128,131,135,138,142,145,148,151,156,118,122,121,126', -',,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129', -'132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148', -'151,156,118,122,121,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147', -'150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128', -'131,135,138,142,145,148,151,156,118,122,121,126,,,,,,,,155,,,,,,,,,', -'152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146', -'149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,122,126', -',,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129', -'132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148', -'151,156,118,122,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150', -'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', -'135,138,142,145,148,151,156,118,122,126,,,,,,,,155,,,,,,,,,,152,,,,', -',137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153', -'157,119,123,128,131,135,138,142,145,148,151,156,118,122,126,,,,,,,,155', -',,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139', -'143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118', -'122,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120', -'124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142', -'145,148,151,156,118,122,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154', -'158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135', -'138,142,145,148,151,156,118,155,,,,,,,,,,152,,,,,,137,140,144,147,150', -'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', -'135,138,142,145,148,151,156,118,155,,,,,,,,,,152,,,,,,137,140,144,147', -'150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128', -'131,135,138,142,145,148,151,156,118,152,,,,,,137,140,144,147,150,154', -'158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135', -'138,142,145,148,151,156,118,152,,,,,,137,140,144,147,150,154,158,120', -'124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142', -'145,148,151,156,118,152,,,,,,137,140,144,147,150,154,158,120,124,129', -'132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148', -'151,156,118,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136', -'139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156', -'118,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143', -'146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118' ] - racc_action_table = arr = Array.new(8898, nil) +'128,59,136,28,31,33,38,42,47,51,56,61,64,92,93,95,175,92,93,95,284,285', +'90,276,91,296,90,59,91,59,57,65,124,130,59,155,288,144,287,261,169,158', +'143,147,164,44,155,49,54,309,193,155,173,143,147,150,153,157,143,147', +'150,153,157,161,123,127,132,135,139,142,146,149,152,156,160,122,126', +'131,134,138,141,145,148,151,154,159,121,125,129,133,137,140,166,11,174', +'13,17,191,29,262,34,11,40,198,28,31,33,38,42,47,51,56,61,64,206,207', +'203,155,1,59,100,21,25,193,-183,-183,193,43,98,291,52,57,65,66,13,17', +'206,207,6,12,59,22,59,32,35,267,44,280,49,54,13,17,188,59,189,73,4,9', +'15,19,24,13,17,49,37,46,118,261,13,17,191,13,17,191,192,49,11,278,293', +'28,31,33,38,42,47,51,56,61,64,277,13,17,188,1,2,7,21,25,275,29,59,34', +'43,40,75,52,57,65,66,100,255,13,17,6,12,114,22,98,32,35,155,44,169,49', +'54,200,201,143,147,261,73,4,9,15,19,24,100,49,155,37,46,100,100,182', +'98,-183,-183,13,17,98,98,11,49,59,28,31,33,38,42,47,51,56,61,64,92,93', +'95,108,1,2,7,21,25,90,29,91,34,43,40,49,52,57,65,66,49,49,101,101,6', +'12,183,22,184,32,35,155,44,314,49,54,13,17,-183,-183,185,73,4,9,15,19', +'24,155,284,285,37,46,13,17,143,147,150,153,157,161,123,186,11,2,7,28', +'31,33,38,42,47,51,56,61,64,92,93,95,202,1,2,7,21,25,90,29,91,34,43,40', +'155,52,57,65,66,205,75,-183,-183,6,12,118,22,217,32,35,155,44,,49,54', +',,-183,-183,,73,4,9,15,19,24,155,,,37,46,,,143,147,150,153,157,161,123', +',11,,,28,31,33,38,42,47,51,56,61,64,92,93,95,,1,2,7,21,25,90,29,91,34', +'43,40,155,52,57,65,66,,,143,147,6,12,,22,,32,35,155,44,,49,54,,,-183', +'-183,,73,4,9,15,19,24,155,,,37,46,,,143,147,150,153,157,161,123,,11', +',,28,31,33,38,42,47,51,56,61,64,92,93,95,,1,2,7,21,25,90,29,91,34,43', +'40,155,52,57,65,66,,,-183,-183,6,12,,22,,32,35,155,44,,49,54,,,-183', +'-183,,73,4,9,15,19,24,155,,,37,46,,,143,147,150,153,157,,,,11,,,28,31', +'33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,', +',,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,', +',,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,', +'52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37', +'46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29', +',34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15', +'19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2', +'7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,', +',,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61', +'64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44', +',49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47', +'51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22', +',32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31', +'33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,', +',,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,', +',,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,', +'52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37', +'46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29', +',34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15', +'19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2', +'7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,106', +',,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56', +'61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12', +',22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28', +'31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66', +',,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,', +',,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40', +',52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,', +'37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,', +'29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9', +'15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1', +'2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54', +',,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56', +'61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,310,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,', +'6,12,,22,,32,35,,44,,49,54,,116,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,', +',,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,', +'52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37', +'46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29', +',34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15', +'19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2', +'7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,', +',,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61', +'64,300,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12', +',22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28', +'31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66', +',,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,', +',,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40', +',52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,', +'37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,', +'29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9', +'15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1', +'2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54', +',,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56', +'61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12', +',22,,32,35,,44,,49,54,272,,,,,73,4,9,15,19,24,155,,,37,46,,,143,147', +'150,153,157,161,123,127,132,135,139,142,146,149,152,156,160,122,126', +'131,134,,,,,,2,7,13,17,,29,,34,11,40,,28,31,33,38,42,47,51,56,61,64', +',,,,1,,,21,25,,,,,43,,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,', +',,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61', +'64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44', +',49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47', +'51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22', +',32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31', +'33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,', +',,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,', +',,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,', +'52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37', +'46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29', +',34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15', +'19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2', +'7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,', +',,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61', +'64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44', +',49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47', +'51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22', +',32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31', +'33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,', +',,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,', +',,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,', +'52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37', +'46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29', +',34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,106,,,,,73,4,9', +'15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1', +'2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54', +',,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56', +'61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12', +',22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28', +'31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66', +',,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,', +',,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40', +',52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,', +'37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,', +'29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9', +'15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1', +'2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54', +',,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56', +'61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12', +',22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28', +'31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66', +',,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,', +',,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40', +',52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,', +'37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,', +'29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9', +'15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1', +'2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54', +'106,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51', +'56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32', +'35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33', +'38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,', +'6,12,,22,,32,35,,44,,49,54,59,,,,,73,4,9,15,19,24,155,,,37,46,,,143', +'147,150,153,157,161,123,127,132,135,139,142,146,149,152,156,160,122', +'126,131,134,,,,,,2,7,13,17,,29,,34,11,40,,28,31,33,38,42,47,51,56,61', +'64,,,,,1,,,21,25,,,,,43,,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54', +',,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56', +'61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12', +',22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28', +'31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66', +',,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,', +',,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40', +',52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,', +'37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,', +'29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9', +'15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1', +'2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54', +',,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56', +'61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35', +',44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28,31,33,38', +'42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,6,12', +',22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,,,,,11,,,28', +'31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66', +',,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,,,', +',,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,,29,,34,43,40', +',52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,', +'37,46,,,,,,,,,,,11,,,28,31,33,38,42,47,51,56,61,64,,,,,1,2,7,21,25,', +'29,,34,43,40,,52,57,65,66,,,,,6,12,,22,,32,35,,44,,49,54,,128,,136,', +'73,4,9,15,19,24,155,,,37,46,,,143,147,150,153,157,161,123,127,132,135', +'139,142,146,,,124,130,,,,144,,,,158,,2,7,,,,29,,34,155,40,,,,,,143,147', +'150,153,157,161,123,127,132,135,139,142,146,149,152,156,160,122,126', +'131,134,138,141,145,148,151,154,159,121,125,129,133,137,140,128,,136', +'155,,,,,,319,143,147,150,153,157,161,123,127,132,135,139,142,146,149', +'152,156,160,122,126,131,134,,124,130,,,,144,,,,158,,,,,,,,,,155,,,,', +',,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156,160', +'122,126,131,134,138,141,145,148,151,154,159,121,125,129,133,137,140', +',,,,,,,,,313,28,31,33,38,42,47,51,56,61,64,,,,,1,,,21,25,,,,,43,,,52', +'57,65,,,,,,,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,,,,37,46,', +',,,28,31,33,38,42,47,51,56,61,64,,,,,1,,,21,25,,,,,43,2,7,52,57,65,29', +',34,,40,,12,,22,,32,35,,44,,49,54,,,,,,73,4,9,15,19,24,155,,,37,46,', +',143,147,150,153,157,161,123,127,132,135,,28,31,33,38,42,47,51,56,61', +'64,,,,,1,2,7,21,25,,29,,34,43,40,,52,57,65,66,,,,,,12,,22,,32,35,,44', +',49,54,,,,,,73,4,9,15,19,24,,,,37,46,,,,,28,31,33,38,42,47,51,56,61', +'64,,,,,1,,,21,25,,,,,43,2,7,52,57,65,29,,34,,40,,12,,22,,32,35,,44,', +'49,54,,,,,,73,4,9,15,,28,31,33,38,42,47,51,56,61,64,155,,,,,,,143,147', +'150,153,157,161,123,127,132,135,57,65,,,,,,2,7,,,,29,,34,44,40,155,54', +',128,,136,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152', +'156,160,122,126,131,134,,,,,,,,124,130,,,,144,,,,158,,,,,,,29,,34,155', +'40,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152', +'156,160,122,126,131,134,138,141,145,148,151,154,159,121,125,129,133', +'137,140,128,155,136,,,,,,143,147,150,153,157,161,123,127,132,135,139', +'142,146,149,152,156,160,122,126,131,134,,,,124,130,,,,144,,,,158,,,', +',,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146', +'149,152,156,160,122,126,131,134,138,141,145,148,151,154,159,121,125', +'129,133,137,140,128,155,136,,,,,,143,147,150,153,157,161,123,127,132', +'135,139,142,146,,,,,318,,,,,,,124,130,,,,144,,,,158,,,,,,,,,,155,,,', +',,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156,160', +'122,126,131,134,138,141,145,148,151,154,159,121,125,129,133,137,140', +'128,155,136,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146', +'149,152,156,160,122,126,131,134,,,,124,130,,,,144,,,,158,,,,,,,,,,155', +',,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156', +'160,122,126,131,134,138,141,145,148,151,154,159,121,125,129,133,137', +'140,128,155,136,,,,,,143,147,150,153,157,161,123,127,132,135,139,142', +'146,149,152,156,160,122,126,131,134,,,,124,130,,,,144,,,,158,,,,,,,', +'178,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149', +'152,156,160,122,126,131,134,138,141,145,148,151,154,159,121,125,129', +'133,137,140,128,155,136,,,,,,143,147,150,153,157,161,123,127,132,135', +'139,142,146,149,152,156,160,122,126,131,134,,,,124,130,,,,144,,,,158', +',,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146', +'149,152,156,160,122,126,131,134,138,141,145,148,151,154,159,121,125', +'129,133,137,140,128,155,136,,,,,,143,147,150,153,157,161,123,127,132', +'135,139,142,146,,,,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,', +'143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156,160', +'122,126,131,134,138,141,145,148,151,154,159,121,125,129,133,137,140', +'128,155,136,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146', +',,,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153', +'157,161,123,127,132,135,139,142,146,149,152,156,160,122,126,131,134', +'138,141,145,148,151,154,159,121,125,129,133,137,140,128,155,136,,,,', +',143,147,150,153,157,161,123,127,132,135,,,,,,,,,,,,,,,124,130,,,,144', +',,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139', +'142,146,149,152,156,160,122,126,131,134,138,141,145,148,151,154,159', +'121,125,129,133,137,140,128,,136,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,124,130', +',,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132', +'135,139,142,146,149,152,156,160,122,126,131,134,138,141,145,148,151', +'154,159,121,125,196,133,137,140,128,,136,,,,,,,,,,,,,,,,,,,,,,,,,,,', +',,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123', +'127,132,135,139,142,146,149,152,156,160,122,126,131,134,138,141,145', +'148,151,154,159,121,125,129,133,137,140,128,,136,,,,,,,,,,,,,,,,,,,', +',,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157', +'161,123,127,132,135,139,142,146,149,152,156,160,122,126,131,134,138', +'141,145,148,151,154,159,121,125,129,133,137,140,128,,136,,,,,,,,,,,', +',,,,,,,,,,,320,,,,,,,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,,143,147', +'150,153,157,161,123,127,132,135,139,142,146,149,152,156,160,122,126', +'131,134,138,141,145,148,151,154,159,121,125,129,133,137,140,128,,136', +',,,,,,,,,,,,,,,,,,,,,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,59,,155,,', +',,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156', +'160,122,126,131,134,138,141,145,148,151,154,159,121,125,129,133,137', +'140,128,,136,,,,,,,,,,,,,,,,,,,,,,,264,,,,,,,124,130,,,,144,,,,158,', +',,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146', +'149,152,156,160,122,126,131,134,138,141,145,148,151,154,159,121,125', +'263,133,137,140,128,,136,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,124,130,,,,144', +',,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139', +'142,146,149,152,156,160,122,126,131,134,138,141,145,148,151,154,159', +'121,125,129,133,137,140,128,,136,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,124,130', +',,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132', +'135,139,142,146,149,152,156,160,122,126,131,134,138,141,145,148,151', +'154,159,121,125,129,133,137,140,128,,136,,,,,,,,,,,,,,,,,,,,,,,,,,,', +',,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123', +'127,132,135,139,142,146,149,152,156,160,122,126,131,134,138,141,145', +'148,151,154,159,121,125,129,133,137,140,128,,136,,,,,,,,,,,,,,,,,,,', +',,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157', +'161,123,127,132,135,139,142,146,149,152,156,160,122,126,131,134,138', +'141,145,148,151,154,159,121,125,129,133,137,140,128,,136,,,,,,,,,,,', +',,,,,,,,,,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,,,155,,,,,,,143,147,150', +'153,157,161,123,127,132,135,139,142,146,149,152,156,160,122,126,131', +'134,138,141,145,148,151,154,159,121,125,129,133,137,140,128,,136,,,', +',,,,,,,,,,,,,,,,,,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,59,,155,,,,,', +',143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156,160', +'122,126,131,134,138,141,145,148,151,154,159,121,125,129,133,137,140', +'128,,136,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,124,130,,,,144,,,,158,,,,,,,,', +',155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152', +'156,160,122,126,131,134,138,141,145,148,151,154,159,121,125,129,133', +'137,140,124,130,,,,,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161', +'123,127,132,135,139,142,146,149,152,156,160,122,126,131,134,138,141', +'145,148,151,154,159,121,125,129,133,137,140,124,130,,,,,,,,158,,,,,', +',,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149', +'152,156,160,122,126,131,134,138,141,145,148,151,154,159,121,125,129', +'133,137,140,124,130,,,,,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157', +'161,123,127,132,135,139,142,146,149,152,156,160,122,126,131,134,138', +'141,145,148,151,154,159,121,125,129,124,130,,,,,,,,158,,,,,,,,,,155', +',,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156', +'160,122,126,131,134,138,141,145,148,151,154,159,121,125,129,124,130', +',,,,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135', +'139,142,146,149,152,156,160,122,126,131,134,138,141,145,148,151,154', +'159,121,125,129,124,130,,,,,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153', +'157,161,123,127,132,135,139,142,146,149,152,156,160,122,126,131,134', +'138,141,145,148,151,154,159,121,125,129,130,,,,,,,,158,,,,,,,,,,155', +',,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156', +'160,122,126,131,134,138,141,145,148,151,154,159,121,125,129,130,,,,', +',,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139', +'142,146,149,152,156,160,122,126,131,134,138,141,145,148,151,154,159', +'121,125,129,130,,,,,,,,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161', +'123,127,132,135,139,142,146,149,152,156,160,122,126,131,134,138,141', +'145,148,151,154,159,121,125,129,130,,,,,,,,158,,,,,,,,,,155,,,,,,,143', +'147,150,153,157,161,123,127,132,135,139,142,146,149,152,156,160,122', +'126,131,134,138,141,145,148,151,154,159,121,125,129,130,,,,,,,,158,', +',,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146', +'149,152,156,160,122,126,131,134,138,141,145,148,151,154,159,121,125', +'129,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139', +'142,146,149,152,156,160,122,126,131,134,138,141,145,148,151,154,159', +'121,125,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132,135', +'139,142,146,149,152,156,160,122,126,131,134,138,141,145,148,151,154', +'159,121,125,158,,,,,,,,,,155,,,,,,,143,147,150,153,157,161,123,127,132', +'135,139,142,146,149,152,156,160,122,126,131,134,138,141,145,148,151', +'154,159,121,125,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139', +'142,146,149,152,156,160,122,126,131,134,138,141,145,148,151,154,159', +'121,125,155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146', +'149,152,156,160,122,126,131,134,138,141,145,148,151,154,159,121,125', +'155,,,,,,,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152', +'156,160,122,126,131,134,138,141,145,148,151,154,159,121,125,155,,,,', +',,143,147,150,153,157,161,123,127,132,135,139,142,146,149,152,156,160', +'122,126,131,134,138,141,145,148,151,154,159,121,125,155,,,,,,,143,147', +'150,153,157,161,123,127,132,135,139,142,146,149,152,156,160,122,126', +'131,134,138,141,145,148,151,154,159,121,125' ] + racc_action_table = arr = Array.new(9160, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -349,344 +355,351 @@ clist = [ end clist = [ -'107,165,107,152,152,152,152,152,152,152,152,152,152,65,65,65,110,152', -'73,176,152,152,65,98,65,199,152,176,198,152,152,152,107,107,197,206', -'206,107,152,194,152,107,152,152,65,152,74,152,152,206,165,107,275,152', -'152,152,152,107,107,107,107,107,107,107,107,107,107,107,107,107,107', -'107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107', -'107,107,107,65,152,152,293,73,195,152,276,152,156,152,107,156,156,156', -'156,156,156,156,156,156,156,96,288,102,261,156,234,188,156,156,288,195', -'234,234,156,188,113,156,156,156,156,172,172,306,306,156,156,203,156', -'293,156,156,185,156,66,156,156,55,55,59,59,156,156,156,156,156,156,102', -'102,102,188,156,211,102,173,195,195,195,289,177,113,113,4,117,117,4', -'4,4,4,4,4,4,4,4,4,257,185,185,185,4,156,156,4,4,88,156,177,156,4,156', -'171,4,4,4,4,187,64,188,188,4,4,62,4,187,4,4,99,4,255,4,4,284,284,257', -'99,4,4,4,4,4,4,257,82,254,257,4,24,268,82,82,177,177,177,45,24,268,6', -'167,187,6,6,6,6,6,6,6,6,6,6,99,116,99,305,6,4,4,6,6,92,4,40,4,6,4,32', -'6,6,6,6,24,268,24,90,6,6,121,6,1,6,6,237,6,122,6,6,,237,237,,6,6,6,6', -'6,6,218,101,101,101,6,101,218,218,218,218,218,218,218,210,210,9,109', -'109,9,9,9,9,9,9,9,9,9,9,84,84,84,,9,6,6,9,9,84,6,84,6,9,6,170,9,9,9', -'9,,170,170,,9,9,,9,,9,9,76,9,,9,9,,76,76,,9,9,9,9,9,9,213,256,256,,9', -',213,213,213,213,213,213,213,,,11,,,11,11,11,11,11,11,11,11,11,11,83', -'83,83,,11,9,9,11,11,83,9,83,9,11,9,231,11,11,11,11,,231,231,,11,11,', -'11,,11,11,169,11,,11,11,,169,169,,11,11,11,11,11,11,209,,,,11,,209,209', -'209,209,209,209,209,,,12,,,12,12,12,12,12,12,12,12,12,12,246,246,246', -',12,11,11,12,12,246,11,246,11,12,11,108,12,12,12,12,,108,108,,12,12', -',12,,12,12,,12,,12,12,,22,22,22,12,12,12,12,12,12,22,,22,241,12,247', -'247,247,,241,241,241,241,241,247,15,247,,15,15,15,15,15,15,15,15,15', -'15,,,,,15,12,12,15,15,,12,,12,15,12,81,15,15,15,15,,81,81,,15,15,,15', -',15,15,78,15,,15,15,,78,78,,15,15,15,15,15,15,245,,,,15,,245,245,245', -'245,245,,,,,18,,,18,18,18,18,18,18,18,18,18,18,,,,,18,15,15,18,18,,15', -',15,18,15,,18,18,18,18,,,,,18,18,,18,,18,18,,18,,18,18,,,,,18,18,18', -'18,18,18,,,,,18,,,,,,,,,,,153,,,153,153,153,153,153,153,153,153,153', -'153,,,,,153,18,18,153,153,,18,,18,153,18,,153,153,153,153,,,,,153,153', -',153,,153,153,,153,,153,153,,,,,153,153,153,153,153,153,,,,,153,,,,', -',,,,,,20,,,20,20,20,20,20,20,20,20,20,20,,,,,20,153,153,20,20,,153,', -'153,20,153,,20,20,20,20,,,,,20,20,,20,,20,20,,20,,20,20,,,,,20,20,20', -'20,20,20,,,,,20,,,,,,,,,,,151,,,151,151,151,151,151,151,151,151,151', -'151,,,,,151,20,20,151,151,,20,,20,151,20,,151,151,151,151,,,,,151,151', -',151,,151,151,,151,,151,151,,,,,151,151,151,151,151,151,,,,,151,,,,', -',,,,,,150,,,150,150,150,150,150,150,150,150,150,150,,,,,150,151,151', -'150,150,,151,,151,150,151,,150,150,150,150,,,,,150,150,,150,,150,150', -',150,,150,150,,,,,150,150,150,150,150,150,,,,,150,,,,,,,,,,,149,,,149', -'149,149,149,149,149,149,149,149,149,,,,,149,150,150,149,149,,150,,150', -'149,150,,149,149,149,149,,,,,149,149,,149,,149,149,,149,,149,149,,,', -',149,149,149,149,149,149,,,,,149,,,,,,,,,,,29,,,29,29,29,29,29,29,29', -'29,29,29,,,,,29,149,149,29,29,,149,,149,29,149,,29,29,29,29,,,,,29,29', -',29,,29,29,,29,,29,29,29,,,,29,29,29,29,29,29,,,,,29,,,,,,,,,,,30,,', -'30,30,30,30,30,30,30,30,30,30,,,,,30,29,29,30,30,,29,,29,30,29,,30,30', -'30,30,,,,,30,30,,30,,30,30,,30,,30,30,,,,,30,30,30,30,30,30,,,,,30,', -',,,,,,,,,148,,,148,148,148,148,148,148,148,148,148,148,,,,,148,30,30', -'148,148,,30,,30,148,30,,148,148,148,148,,,,,148,148,,148,,148,148,,148', -',148,148,,,,,148,148,148,148,148,148,,,,,148,,,,,,,,,,,34,,,34,34,34', -'34,34,34,34,34,34,34,,,,,34,148,148,34,34,,148,,148,34,148,,34,34,34', -'34,,,,,34,34,,34,,34,34,,34,,34,34,,,,,34,34,34,34,34,34,,,,,34,,,,', -',,,,,,35,,,35,35,35,35,35,35,35,35,35,35,,,,,35,34,34,35,35,,34,,34', -'35,34,,35,35,35,35,,,,,35,35,,35,,35,35,,35,,35,35,,,,,35,35,35,35,35', -'35,,,,,35,,,,,,,,,,,307,,,307,307,307,307,307,307,307,307,307,307,,', -',,307,35,35,307,307,,35,,35,307,35,,307,307,307,307,,,,,307,307,,307', -',307,307,,307,,307,307,,,,,307,307,307,307,307,307,,,,,307,,,,,,,,,', -',147,,,147,147,147,147,147,147,147,147,147,147,,,,,147,307,307,147,147', -',307,,307,147,307,,147,147,147,147,,,,,147,147,,147,,147,147,,147,,147', -'147,,,,,147,147,147,147,147,147,,,,,147,,,,,,,,,,,49,,,49,49,49,49,49', -'49,49,49,49,49,,,,,49,147,147,49,49,,147,,147,49,147,,49,49,49,49,,', -',,49,49,,49,,49,49,,49,,49,49,,,,,49,49,49,49,49,49,,,,,49,,,,,,,,,', -',146,,,146,146,146,146,146,146,146,146,146,146,,,,,146,49,49,146,146', -',49,,49,146,49,,146,146,146,146,,,,,146,146,,146,,146,146,,146,,146', -'146,,,,,146,146,146,146,146,146,,,,,146,,,,,,,,,,,56,,,56,56,56,56,56', -'56,56,56,56,56,,,,,56,146,146,56,56,,146,,146,56,146,,56,56,56,56,,', -',,56,56,,56,,56,56,,56,,56,56,,56,,,56,56,56,56,56,56,,,,,56,,,,,,,', -',,,145,,,145,145,145,145,145,145,145,145,145,145,,,,,145,56,56,145,145', -',56,,56,145,56,,145,145,145,145,,,,,145,145,,145,,145,145,,145,,145', -'145,,,,,145,145,145,145,145,145,,,,,145,,,,,,,,,,,144,,,144,144,144', -'144,144,144,144,144,144,144,,,,,144,145,145,144,144,,145,,145,144,145', -',144,144,144,144,,,,,144,144,,144,,144,144,,144,,144,144,,,,,144,144', -'144,144,144,144,,,,,144,,,,,,,,,,,143,,,143,143,143,143,143,143,143', -'143,143,143,,,,,143,144,144,143,143,,144,,144,143,144,,143,143,143,143', -',,,,143,143,,143,,143,143,,143,,143,143,,,,,143,143,143,143,143,143', -',,,,143,,,,,,,,,,,294,,,294,294,294,294,294,294,294,294,294,294,,,,', -'294,143,143,294,294,,143,,143,294,143,,294,294,294,294,,,,,294,294,', -'294,,294,294,,294,,294,294,,,,,294,294,294,294,294,294,,,,,294,,,,,', -',,,,,142,,,142,142,142,142,142,142,142,142,142,142,294,,,,142,294,294', -'142,142,,294,,294,142,294,,142,142,142,142,,,,,142,142,,142,,142,142', -',142,,142,142,,,,,142,142,142,142,142,142,,,,,142,,,,,,,,,,,282,,,282', -'282,282,282,282,282,282,282,282,282,,,,,282,142,142,282,282,,142,,142', -'282,142,,282,282,282,282,,,,,282,282,,282,,282,282,,282,,282,282,,,', -',282,282,282,282,282,282,,,,,282,,,,,,,,,,,68,,,68,68,68,68,68,68,68', -'68,68,68,,,,,68,282,282,68,68,,282,,282,68,282,,68,68,68,68,,,,,68,68', -',68,,68,68,,68,,68,68,,,,,68,68,68,68,68,68,,,,,68,,,,,,,,,,,71,,,71', -'71,71,71,71,71,71,71,71,71,,,,,71,68,68,71,71,,68,,68,71,68,,71,71,71', -'71,,,,,71,71,,71,,71,71,,71,,71,71,,,,,71,71,71,71,71,71,,,,,71,,,,', -',,,,,,281,,,281,281,281,281,281,281,281,281,281,281,,,,,281,71,71,281', -'281,,71,,71,281,71,,281,281,281,281,,,,,281,281,,281,,281,281,,281,', -'281,281,,,,,281,281,281,281,281,281,,,,,281,,,,,,,,,,,273,,,273,273', -'273,273,273,273,273,273,273,273,,,,,273,281,281,273,273,,281,,281,273', -'281,,273,273,273,273,,,,,273,273,,273,,273,273,,273,,273,273,,,,,273', -'273,273,273,273,273,,,,,273,,,,,,,,,,,141,,,141,141,141,141,141,141', -'141,141,141,141,273,,,,141,273,273,141,141,,273,,273,141,273,,141,141', -'141,141,,,,,141,141,,141,,141,141,,141,,141,141,,,,,141,141,141,141', -'141,141,,,,,141,,,,,,,,,,,139,,,139,139,139,139,139,139,139,139,139', -'139,,,,,139,141,141,139,139,,141,,141,139,141,,139,139,139,139,,,,,139', -'139,,139,,139,139,,139,,139,139,,,,,139,139,139,139,139,139,,,,,139', -',,,,,,,,,,271,,,271,271,271,271,271,271,271,271,271,271,,,,,271,139', -'139,271,271,,139,,139,271,139,,271,271,271,271,,,,,271,271,,271,,271', -'271,,271,,271,271,,,,,271,271,271,271,271,271,,,,,271,,,,,,,,,,,138', -',,138,138,138,138,138,138,138,138,138,138,,,,,138,271,271,138,138,,271', -',271,138,271,,138,138,138,138,,,,,138,138,,138,,138,138,,138,,138,138', -',,,,138,138,138,138,138,138,,,,,138,,,,,,,,,,,136,,,136,136,136,136', -'136,136,136,136,136,136,,,,,136,138,138,136,136,,138,,138,136,138,,136', -'136,136,136,,,,,136,136,,136,,136,136,,136,,136,136,,,,,136,136,136', -'136,136,136,,,,,136,,,,,,,,,,,270,,,270,270,270,270,270,270,270,270', -'270,270,,,,,270,136,136,270,270,,136,,136,270,136,,270,270,270,270,', -',,,270,270,,270,,270,270,,270,,270,270,,,,,270,270,270,270,270,270,', -',,,270,,,,,,,,,,,135,,,135,135,135,135,135,135,135,135,135,135,,,,,135', -'270,270,135,135,,270,,270,135,270,,135,135,135,135,,,,,135,135,,135', -',135,135,,135,,135,135,,,,,135,135,135,135,135,135,,,,,135,,,,,,,,,', -',134,,,134,134,134,134,134,134,134,134,134,134,,,,,134,135,135,134,134', -',135,,135,134,135,,134,134,134,134,,,,,134,134,,134,,134,134,,134,,134', -'134,,,,,134,134,134,134,134,134,,,,,134,,,,,,,,,,,133,,,133,133,133', -'133,133,133,133,133,133,133,,,,,133,134,134,133,133,,134,,134,133,134', -',133,133,133,133,,,,,133,133,,133,,133,133,,133,,133,133,,,,,133,133', -'133,133,133,133,,,,,133,,,,,,,,,,,259,,,259,259,259,259,259,259,259', -'259,259,259,,,,,259,133,133,259,259,,133,,133,259,133,,259,259,259,259', -',,,,259,259,,259,,259,259,,259,,259,259,,,,,259,259,259,259,259,259', -',,,,259,,,,,,,,,,,86,,,86,86,86,86,86,86,86,86,86,86,,,,,86,259,259', -'86,86,,259,,259,86,259,,86,86,86,86,,,,,86,86,,86,,86,86,,86,,86,86', -'86,,,,86,86,86,86,86,86,,,,,86,,,,,,,,,,,87,,,87,87,87,87,87,87,87,87', -'87,87,,,,,87,86,86,87,87,,86,,86,87,86,,87,87,87,87,,,,,87,87,,87,,87', -'87,,87,,87,87,,,,,87,87,87,87,87,87,,,,,87,,,,,,,,,,,132,,,132,132,132', -'132,132,132,132,132,132,132,,,,,132,87,87,132,132,,87,,87,132,87,,132', -'132,132,132,,,,,132,132,,132,,132,132,,132,,132,132,,,,,132,132,132', -'132,132,132,,,,,132,,,,,,,,,,,131,,,131,131,131,131,131,131,131,131', -'131,131,,,,,131,132,132,131,131,,132,,132,131,132,,131,131,131,131,', -',,,131,131,,131,,131,131,,131,,131,131,,,,,131,131,131,131,131,131,', -',,,131,,,,,,,,,,,130,,,130,130,130,130,130,130,130,130,130,130,,,,,130', -'131,131,130,130,,131,,131,130,131,,130,130,130,130,,,,,130,130,,130', -',130,130,,130,,130,130,,,,,130,130,130,130,130,130,,,,,130,,,,,,,,,', -',205,,,205,205,205,205,205,205,205,205,205,205,,,,,205,130,130,205,205', -',130,,130,205,130,,205,205,205,205,,,,,205,205,,205,,205,205,,205,,205', -'205,,,,,205,205,205,205,205,205,,,,,205,,,,,,,,,,,204,,,204,204,204', -'204,204,204,204,204,204,204,,,,,204,205,205,204,204,,205,,205,204,205', -',204,204,204,204,,,,,204,204,,204,,204,204,,204,,204,204,,,,,204,204', -'204,204,204,204,,,,,204,,,,,,,,,,,129,,,129,129,129,129,129,129,129', -'129,129,129,,,,,129,204,204,129,129,,204,,204,129,204,,129,129,129,129', -',,,,129,129,,129,,129,129,,129,,129,129,,,,,129,129,129,129,129,129', -',,,,129,,,,,,,,,,,123,,,123,123,123,123,123,123,123,123,123,123,,,,', -'123,129,129,123,123,,129,,129,123,129,,123,123,123,123,,,,,123,123,', -'123,,123,123,,123,,123,123,,,,,123,123,123,123,123,123,,,,,123,,,,,', -',,,,,192,,,192,192,192,192,192,192,192,192,192,192,,,,,192,123,123,192', -'192,,123,,123,192,123,,192,192,192,192,,,,,192,192,,192,,192,192,,192', -',192,192,192,,,,192,192,192,192,192,192,226,,,,192,,226,226,226,226', -'226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226', -',,,,,,192,192,192,192,,192,,192,154,192,,154,154,154,154,154,154,154', -'154,154,154,,,,,154,,,154,154,,,,,154,,,154,154,154,154,,,,,154,154', -',154,,154,154,,154,,154,154,,,,,154,154,154,154,154,154,,,,,154,,,,', -',,,,,,103,,,103,103,103,103,103,103,103,103,103,103,,,,,103,154,154', -'103,103,,154,,154,103,154,,103,103,103,103,,,,,103,103,,103,,103,103', -',103,,103,103,,,,,103,103,103,103,103,103,,,,,103,,,,,,,,,,,128,,,128', -'128,128,128,128,128,128,128,128,128,,,,,128,103,103,128,128,,103,,103', -'128,103,,128,128,128,128,,,,,128,128,,128,,128,128,,128,,128,128,,,', -',128,128,128,128,128,128,,,,,128,,,,,,,,,,,191,,,191,191,191,191,191', -'191,191,191,191,191,,,,,191,128,128,191,191,,128,,128,191,128,,191,191', -'191,191,,,,,191,191,,191,,191,191,,191,,191,191,,,,,191,191,191,191', -'191,191,,,,,191,,,,,,,,,,,106,,,106,106,106,106,106,106,106,106,106', -'106,,,,,106,191,191,106,106,,191,,191,106,191,,106,106,106,106,,,,,106', -'106,,106,,106,106,,106,,106,106,106,,,,106,106,106,106,106,106,,,,,106', -',,,,,,,,,,0,,,0,0,0,0,0,0,0,0,0,0,,,,,0,106,106,0,0,,106,,106,0,106', -',0,0,0,0,,,,,0,0,,0,,0,0,,0,,0,0,0,,,,0,0,0,0,0,0,208,,,,0,,208,208', -'208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208', -'208,208,,,,,,,0,0,0,0,,0,,0,127,0,,127,127,127,127,127,127,127,127,127', -'127,,,,,127,,,127,127,,,,,127,,,127,127,127,127,,,,,127,127,,127,,127', -'127,,127,,127,127,,,,,127,127,127,127,127,127,,,,,127,,,,,,,,,,,184', -',,184,184,184,184,184,184,184,184,184,184,,,,,184,127,127,184,184,,127', -',127,184,127,,184,184,184,184,,,,,184,184,,184,,184,184,,184,,184,184', -',,,,184,184,184,184,184,184,,,,,184,,,,,,,,,,,183,,,183,183,183,183', -'183,183,183,183,183,183,,,,,183,184,184,183,183,,184,,184,183,184,,183', -'183,183,183,,,,,183,183,,183,,183,183,,183,,183,183,,,,,183,183,183', -'183,183,183,,,,,183,,,,,,,,,,,126,,,126,126,126,126,126,126,126,126', -'126,126,,,,,126,183,183,126,126,,183,,183,126,183,,126,126,126,126,', -',,,126,126,,126,,126,126,,126,,126,126,,,,,126,126,126,126,126,126,', -',,,126,,,,,,,,,,,112,,,112,112,112,112,112,112,112,112,112,112,,,,,112', -'126,126,112,112,,126,,126,112,126,,112,112,112,112,,,,,112,112,,112', -',112,112,,112,,112,112,,,,,112,112,112,112,112,112,,,,,112,,,,,,,,,', -',125,,,125,125,125,125,125,125,125,125,125,125,,,,,125,112,112,125,125', -',112,,112,125,112,,125,125,125,125,,,,,125,125,,125,,125,125,,125,,125', -'125,,,,,125,125,125,125,125,125,,,,,125,,,,,,,,,,,162,,,162,162,162', -'162,162,162,162,162,162,162,,,,,162,125,125,162,162,,125,,125,162,125', -',162,162,162,162,,,,,162,162,,162,,162,162,,162,,162,162,,,,,162,162', -'162,162,162,162,,,,,162,,,,,,,,,,,124,,,124,124,124,124,124,124,124', -'124,124,124,,,,,124,162,162,124,124,,162,,162,124,162,,124,124,124,124', -',,,,124,124,,124,,124,124,,124,,124,124,,,,,124,124,124,124,124,124', -',,,,124,,,,,,,,,,,118,,,118,118,118,118,118,118,118,118,118,118,,,,', -'118,124,124,118,118,,124,,124,118,124,,118,118,118,118,,,,,118,118,', -'118,,118,118,,118,,118,118,,,,,118,118,118,118,118,118,,,,,118,,,,,', -',,,,,119,,,119,119,119,119,119,119,119,119,119,119,,,,,119,118,118,119', -'119,,118,,118,119,118,,119,119,119,119,,,,,119,119,,119,,119,119,,119', -',119,119,,,,,119,119,119,119,119,119,,,,,119,,,,,,,,,,,120,,,120,120', -'120,120,120,120,120,120,120,120,,,,,120,119,119,120,120,,119,,119,120', -'119,,120,120,120,120,,,,,120,120,,120,,120,120,,120,,120,120,,,,,120', -'120,120,120,120,120,,,,,120,,,,,,,,,,,158,,,158,158,158,158,158,158', -'158,158,158,158,,,,,158,120,120,158,158,,120,,120,158,120,,158,158,158', -'158,,,,,158,158,,158,,158,158,,158,,158,158,,,,,158,158,158,158,158', -'158,,,,,158,,,,,,,,,,,157,,,157,157,157,157,157,157,157,157,157,157', -',,,,157,158,158,157,157,,158,,158,157,158,,157,157,157,157,,,,,157,157', -',157,,157,157,,157,,157,157,,,,,157,157,157,157,157,157,,,,,157,,,,', -',,,,,,155,,,155,155,155,155,155,155,155,155,155,155,,,,,155,157,157', -'155,155,,157,,157,155,157,,155,155,155,155,,,,,155,155,,155,,155,155', -',155,,155,155,298,,298,,155,155,155,155,155,155,240,,,,155,,240,240', -'240,240,240,240,240,240,240,240,240,240,240,,,,298,298,,,,298,,,,298', -',155,155,,,,155,,155,298,155,,,,,298,298,298,298,298,298,298,298,298', -'298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298', -'298,298,298,298,298,298,298,298,311,,311,,,,,,,298,,160,160,160,160', -'160,160,160,160,160,160,,,,,,,,,,,,311,311,,,,311,160,160,,311,,,,,', -',,,,311,,160,,,160,311,311,311,311,311,311,311,311,311,311,311,311,311', +'110,294,110,21,21,21,21,21,21,21,21,21,21,70,70,70,76,248,248,248,208', +'208,70,197,70,263,248,257,248,69,21,21,110,110,208,239,255,110,217,290', +'71,110,239,239,70,21,211,290,21,294,197,110,75,211,211,211,211,211,110', +'110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110', +'110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,70,169', +'76,197,197,197,21,179,21,148,21,110,148,148,148,148,148,148,148,148', +'148,148,212,212,115,112,148,277,188,148,148,105,112,112,179,148,188', +'259,148,148,148,148,308,308,119,119,148,148,278,148,169,148,148,187', +'148,205,148,148,103,103,103,201,103,148,148,148,148,148,148,115,115', +'188,148,148,66,259,105,105,105,179,179,179,105,259,4,200,259,4,4,4,4', +'4,4,4,4,4,4,199,187,187,187,4,148,148,4,4,196,148,291,148,4,148,174', +'4,4,4,4,269,173,188,188,4,4,53,4,269,4,4,236,4,171,4,4,111,111,236,236', +'178,4,4,4,4,4,4,190,178,77,4,4,29,101,92,190,77,77,258,258,29,101,6', +'269,43,6,6,6,6,6,6,6,6,6,6,249,249,249,35,6,4,4,6,6,249,4,249,4,6,4', +'190,6,6,6,6,29,101,29,101,6,6,93,6,95,6,6,83,6,307,6,6,67,67,83,83,98', +'6,6,6,6,6,6,223,286,286,6,6,62,62,223,223,223,223,223,223,223,100,9', +'175,175,9,9,9,9,9,9,9,9,9,9,27,27,27,114,9,6,6,9,9,27,6,27,6,9,6,82', +'9,9,9,9,118,1,82,82,9,9,124,9,129,9,9,79,9,,9,9,,,79,79,,9,9,9,9,9,9', +'220,,,9,9,,,220,220,220,220,220,220,220,,11,,,11,11,11,11,11,11,11,11', +'11,11,84,84,84,,11,9,9,11,11,84,9,84,9,11,9,243,11,11,11,11,,,243,243', +'11,11,,11,,11,11,87,11,,11,11,,,87,87,,11,11,11,11,11,11,215,,,11,11', +',,215,215,215,215,215,215,215,,12,,,12,12,12,12,12,12,12,12,12,12,85', +'85,85,,12,11,11,12,12,85,11,85,11,12,11,109,12,12,12,12,,,109,109,12', +'12,,12,,12,12,172,12,,12,12,,,172,172,,12,12,12,12,12,12,247,,,12,12', +',,247,247,247,247,247,,,,15,,,15,15,15,15,15,15,15,15,15,15,,,,,15,12', +'12,15,15,,12,,12,15,12,,15,15,15,15,,,,,15,15,,15,,15,15,,15,,15,15', +',,,,,15,15,15,15,15,15,,,,15,15,,,,,,,,,,,19,,,19,19,19,19,19,19,19', +'19,19,19,,,,,19,15,15,19,19,,15,,15,19,15,,19,19,19,19,,,,,19,19,,19', +',19,19,,19,,19,19,,,,,,19,19,19,19,19,19,,,,19,19,,,,,,,,,,,130,,,130', +'130,130,130,130,130,130,130,130,130,,,,,130,19,19,130,130,,19,,19,130', +'19,,130,130,130,130,,,,,130,130,,130,,130,130,,130,,130,130,,,,,,130', +'130,130,130,130,130,,,,130,130,,,,,,,,,,,22,,,22,22,22,22,22,22,22,22', +'22,22,,,,,22,130,130,22,22,,130,,130,22,130,,22,22,22,22,,,,,22,22,', +'22,,22,22,,22,,22,22,,,,,,22,22,22,22,22,22,,,,22,22,,,,,,,,,,,24,,', +'24,24,24,24,24,24,24,24,24,24,,,,,24,22,22,24,24,,22,,22,24,22,,24,24', +'24,24,,,,,24,24,,24,,24,24,,24,,24,24,,,,,,24,24,24,24,24,24,,,,24,24', +',,,,,,,,,,133,,,133,133,133,133,133,133,133,133,133,133,,,,,133,24,24', +'133,133,,24,,24,133,24,,133,133,133,133,,,,,133,133,,133,,133,133,,133', +',133,133,,,,,,133,133,133,133,133,133,,,,133,133,,,,,,,,,,,128,,,128', +'128,128,128,128,128,128,128,128,128,,,,,128,133,133,128,128,,133,,133', +'128,133,,128,128,128,128,,,,,128,128,,128,,128,128,,128,,128,128,,,', +',,128,128,128,128,128,128,,,,128,128,,,,,,,,,,,309,,,309,309,309,309', +'309,309,309,309,309,309,,,,,309,128,128,309,309,,128,,128,309,128,,309', +'309,309,309,,,,,309,309,,309,,309,309,,309,,309,309,,,,,,309,309,309', +'309,309,309,,,,309,309,,,,,,,,,,,32,,,32,32,32,32,32,32,32,32,32,32', +',,,,32,309,309,32,32,,309,,309,32,309,,32,32,32,32,,,,,32,32,,32,,32', +'32,,32,,32,32,,,,,,32,32,32,32,32,32,,,,32,32,,,,,,,,,,,34,,,34,34,34', +'34,34,34,34,34,34,34,,,,,34,32,32,34,34,,32,,32,34,32,,34,34,34,34,', +',,,34,34,,34,,34,34,,34,,34,34,34,,,,,34,34,34,34,34,34,,,,34,34,,,', +',,,,,,,127,,,127,127,127,127,127,127,127,127,127,127,,,,,127,34,34,127', +'127,,34,,34,127,34,,127,127,127,127,,,,,127,127,,127,,127,127,,127,', +'127,127,,,,,,127,127,127,127,127,127,,,,127,127,,,,,,,,,,,37,,,37,37', +'37,37,37,37,37,37,37,37,,,,,37,127,127,37,37,,127,,127,37,127,,37,37', +'37,37,,,,,37,37,,37,,37,37,,37,,37,37,,,,,,37,37,37,37,37,37,,,,37,37', +',,,,,,,,,,40,,,40,40,40,40,40,40,40,40,40,40,,,,,40,37,37,40,40,,37', +',37,40,37,,40,40,40,40,,,,,40,40,,40,,40,40,,40,,40,40,,,,,,40,40,40', +'40,40,40,,,,40,40,,,,,,,,,,,126,,,126,126,126,126,126,126,126,126,126', +'126,,,,,126,40,40,126,126,,40,,40,126,40,,126,126,126,126,,,,,126,126', +',126,,126,126,,126,,126,126,,,,,,126,126,126,126,126,126,,,,126,126', +',,,,,,,,,,46,,,46,46,46,46,46,46,46,46,46,46,,,,,46,126,126,46,46,,126', +',126,46,126,,46,46,46,46,,,,,46,46,,46,,46,46,,46,,46,46,,,,,,46,46', +'46,46,46,46,,,,46,46,,,,,,,,,,,52,,,52,52,52,52,52,52,52,52,52,52,,', +',,52,46,46,52,52,,46,,46,52,46,,52,52,52,52,,,,,52,52,,52,,52,52,,52', +',52,52,,,,,,52,52,52,52,52,52,,,,52,52,,,,,,,,,,,296,,,296,296,296,296', +'296,296,296,296,296,296,,,,,296,52,52,296,296,,52,,52,296,52,,296,296', +'296,296,,,,,296,296,,296,,296,296,,296,,296,296,,,,,,296,296,296,296', +'296,296,,,,296,296,,,,,,,,,,,59,,,59,59,59,59,59,59,59,59,59,59,296', +',,,59,296,296,59,59,,296,,296,59,296,,59,59,59,59,,,,,59,59,,59,,59', +'59,,59,,59,59,,59,,,,59,59,59,59,59,59,,,,59,59,,,,,,,,,,,285,,,285', +'285,285,285,285,285,285,285,285,285,,,,,285,59,59,285,285,,59,,59,285', +'59,,285,285,285,285,,,,,285,285,,285,,285,285,,285,,285,285,,,,,,285', +'285,285,285,285,285,,,,285,285,,,,,,,,,,,284,,,284,284,284,284,284,284', +'284,284,284,284,,,,,284,285,285,284,284,,285,,285,284,285,,284,284,284', +'284,,,,,284,284,,284,,284,284,,284,,284,284,,,,,,284,284,284,284,284', +'284,,,,284,284,,,,,,,,,,,275,,,275,275,275,275,275,275,275,275,275,275', +',,,,275,284,284,275,275,,284,,284,275,284,,275,275,275,275,,,,,275,275', +',275,,275,275,,275,,275,275,,,,,,275,275,275,275,275,275,,,,275,275', +',,,,,,,,,,272,,,272,272,272,272,272,272,272,272,272,272,275,,,,272,275', +'275,272,272,,275,,275,272,275,,272,272,272,272,,,,,272,272,,272,,272', +'272,,272,,272,272,,,,,,272,272,272,272,272,272,,,,272,272,,,,,,,,,,', +'271,,,271,271,271,271,271,271,271,271,271,271,,,,,271,272,272,271,271', +',272,,272,271,272,,271,271,271,271,,,,,271,271,,271,,271,271,,271,,271', +'271,,,,,,271,271,271,271,271,271,,,,271,271,,,,,,,,,,,261,,,261,261', +'261,261,261,261,261,261,261,261,,,,,261,271,271,261,261,,271,,271,261', +'271,,261,261,261,261,,,,,261,261,,261,,261,261,,261,,261,261,,,,,,261', +'261,261,261,261,261,,,,261,261,,,,,,,,,,,207,,,207,207,207,207,207,207', +'207,207,207,207,,,,,207,261,261,207,207,,261,,261,207,261,,207,207,207', +'207,,,,,207,207,,207,,207,207,,207,,207,207,,,,,,207,207,207,207,207', +'207,,,,207,207,,,,,,,,,,,73,,,73,73,73,73,73,73,73,73,73,73,,,,,73,207', +'207,73,73,,207,,207,73,207,,73,73,73,73,,,,,73,73,,73,,73,73,,73,,73', +'73,,,,,,73,73,73,73,73,73,,,,73,73,,,,,,,,,,,206,,,206,206,206,206,206', +'206,206,206,206,206,,,,,206,73,73,206,206,,73,,73,206,73,,206,206,206', +'206,,,,,206,206,,206,,206,206,,206,,206,206,,,,,,206,206,206,206,206', +'206,,,,206,206,,,,,,,,,,,194,,,194,194,194,194,194,194,194,194,194,194', +',,,,194,206,206,194,194,,206,,206,194,206,,194,194,194,194,,,,,194,194', +',194,,194,194,,194,,194,194,,,,,,194,194,194,194,194,194,,,,194,194', +',,,,,,,,,,191,,,191,191,191,191,191,191,191,191,191,191,,,,,191,194', +'194,191,191,,194,,194,191,194,,191,191,191,191,,,,,191,191,,191,,191', +'191,,191,,191,191,191,,,,,191,191,191,191,191,191,232,,,191,191,,,232', +'232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232', +'232,232,232,,,,,,191,191,191,191,,191,,191,186,191,,186,186,186,186', +'186,186,186,186,186,186,,,,,186,,,186,186,,,,,186,,,186,186,186,186', +',,,,186,186,,186,,186,186,,186,,186,186,,,,,,186,186,186,186,186,186', +',,,186,186,,,,,,,,,,,185,,,185,185,185,185,185,185,185,185,185,185,', +',,,185,186,186,185,185,,186,,186,185,186,,185,185,185,185,,,,,185,185', +',185,,185,185,,185,,185,185,,,,,,185,185,185,185,185,185,,,,185,185', +',,,,,,,,,,166,,,166,166,166,166,166,166,166,166,166,166,,,,,166,185', +'185,166,166,,185,,185,166,185,,166,166,166,166,,,,,166,166,,166,,166', +'166,,166,,166,166,,,,,,166,166,166,166,166,166,,,,166,166,,,,,,,,,,', +'132,,,132,132,132,132,132,132,132,132,132,132,,,,,132,166,166,132,132', +',166,,166,132,166,,132,132,132,132,,,,,132,132,,132,,132,132,,132,,132', +'132,,,,,,132,132,132,132,132,132,,,,132,132,,,,,,,,,,,161,,,161,161', +'161,161,161,161,161,161,161,161,,,,,161,132,132,161,161,,132,,132,161', +'132,,161,161,161,161,,,,,161,161,,161,,161,161,,161,,161,161,,,,,,161', +'161,161,161,161,161,,,,161,161,,,,,,,,,,,160,,,160,160,160,160,160,160', +'160,160,160,160,,,,,160,161,161,160,160,,161,,161,160,161,,160,160,160', +'160,,,,,160,160,,160,,160,160,,160,,160,160,,,,,,160,160,160,160,160', +'160,,,,160,160,,,,,,,,,,,159,,,159,159,159,159,159,159,159,159,159,159', +',,,,159,160,160,159,159,,160,,160,159,160,,159,159,159,159,,,,,159,159', +',159,,159,159,,159,,159,159,,,,,,159,159,159,159,159,159,,,,159,159', +',,,,,,,,,,158,,,158,158,158,158,158,158,158,158,158,158,,,,,158,159', +'159,158,158,,159,,159,158,159,,158,158,158,158,,,,,158,158,,158,,158', +'158,,158,,158,158,,,,,,158,158,158,158,158,158,,,,158,158,,,,,,,,,,', +'157,,,157,157,157,157,157,157,157,157,157,157,,,,,157,158,158,157,157', +',158,,158,157,158,,157,157,157,157,,,,,157,157,,157,,157,157,,157,,157', +'157,,,,,,157,157,157,157,157,157,,,,157,157,,,,,,,,,,,156,,,156,156', +'156,156,156,156,156,156,156,156,,,,,156,157,157,156,156,,157,,157,156', +'157,,156,156,156,156,,,,,156,156,,156,,156,156,,156,,156,156,,,,,,156', +'156,156,156,156,156,,,,156,156,,,,,,,,,,,125,,,125,125,125,125,125,125', +'125,125,125,125,,,,,125,156,156,125,125,,156,,156,125,156,,125,125,125', +'125,,,,,125,125,,125,,125,125,,125,,125,125,,,,,,125,125,125,125,125', +'125,,,,125,125,,,,,,,,,,,90,,,90,90,90,90,90,90,90,90,90,90,,,,,90,125', +'125,90,90,,125,,125,90,125,,90,90,90,90,,,,,90,90,,90,,90,90,,90,,90', +'90,90,,,,,90,90,90,90,90,90,,,,90,90,,,,,,,,,,,91,,,91,91,91,91,91,91', +'91,91,91,91,,,,,91,90,90,91,91,,90,,90,91,90,,91,91,91,91,,,,,91,91', +',91,,91,91,,91,,91,91,,,,,,91,91,91,91,91,91,,,,91,91,,,,,,,,,,,154', +',,154,154,154,154,154,154,154,154,154,154,,,,,154,91,91,154,154,,91', +',91,154,91,,154,154,154,154,,,,,154,154,,154,,154,154,,154,,154,154', +',,,,,154,154,154,154,154,154,,,,154,154,,,,,,,,,,,153,,,153,153,153', +'153,153,153,153,153,153,153,,,,,153,154,154,153,153,,154,,154,153,154', +',153,153,153,153,,,,,153,153,,153,,153,153,,153,,153,153,,,,,,153,153', +'153,153,153,153,,,,153,153,,,,,,,,,,,152,,,152,152,152,152,152,152,152', +'152,152,152,,,,,152,153,153,152,152,,153,,153,152,153,,152,152,152,152', +',,,,152,152,,152,,152,152,,152,,152,152,,,,,,152,152,152,152,152,152', +',,,152,152,,,,,,,,,,,151,,,151,151,151,151,151,151,151,151,151,151,', +',,,151,152,152,151,151,,152,,152,151,152,,151,151,151,151,,,,,151,151', +',151,,151,151,,151,,151,151,,,,,,151,151,151,151,151,151,,,,151,151', +',,,,,,,,,,150,,,150,150,150,150,150,150,150,150,150,150,,,,,150,151', +'151,150,150,,151,,151,150,151,,150,150,150,150,,,,,150,150,,150,,150', +'150,,150,,150,150,,,,,,150,150,150,150,150,150,,,,150,150,,,,,,,,,,', +'149,,,149,149,149,149,149,149,149,149,149,149,,,,,149,150,150,149,149', +',150,,150,149,150,,149,149,149,149,,,,,149,149,,149,,149,149,,149,,149', +'149,,,,,,149,149,149,149,149,149,,,,149,149,,,,,,,,,,,131,,,131,131', +'131,131,131,131,131,131,131,131,,,,,131,149,149,131,131,,149,,149,131', +'149,,131,131,131,131,,,,,131,131,,131,,131,131,,131,,131,131,,,,,,131', +'131,131,131,131,131,,,,131,131,,,,,,,,,,,146,,,146,146,146,146,146,146', +'146,146,146,146,,,,,146,131,131,146,146,,131,,131,146,131,,146,146,146', +'146,,,,,146,146,,146,,146,146,,146,,146,146,,,,,,146,146,146,146,146', +'146,,,,146,146,,,,,,,,,,,145,,,145,145,145,145,145,145,145,145,145,145', +',,,,145,146,146,145,145,,146,,146,145,146,,145,145,145,145,,,,,145,145', +',145,,145,145,,145,,145,145,,,,,,145,145,145,145,145,145,,,,145,145', +',,,,,,,,,,106,,,106,106,106,106,106,106,106,106,106,106,,,,,106,145', +'145,106,106,,145,,145,106,145,,106,106,106,106,,,,,106,106,,106,,106', +'106,,106,,106,106,,,,,,106,106,106,106,106,106,,,,106,106,,,,,,,,,,', +'144,,,144,144,144,144,144,144,144,144,144,144,,,,,144,106,106,144,144', +',106,,106,144,106,,144,144,144,144,,,,,144,144,,144,,144,144,,144,,144', +'144,,,,,,144,144,144,144,144,144,,,,144,144,,,,,,,,,,,108,,,108,108', +'108,108,108,108,108,108,108,108,,,,,108,144,144,108,108,,144,,144,108', +'144,,108,108,108,108,,,,,108,108,,108,,108,108,,108,,108,108,108,,,', +',108,108,108,108,108,108,,,,108,108,,,,,,,,,,,134,,,134,134,134,134', +'134,134,134,134,134,134,,,,,134,108,108,134,134,,108,,108,134,108,,134', +'134,134,134,,,,,134,134,,134,,134,134,,134,,134,134,,,,,,134,134,134', +'134,134,134,,,,134,134,,,,,,,,,,,0,,,0,0,0,0,0,0,0,0,0,0,,,,,0,134,134', +'0,0,,134,,134,0,134,,0,0,0,0,,,,,0,0,,0,,0,0,,0,,0,0,0,,,,,0,0,0,0,0', +'0,219,,,0,0,,,219,219,219,219,219,219,219,219,219,219,219,219,219,219', +'219,219,219,219,219,219,219,,,,,,0,0,0,0,,0,,0,141,0,,141,141,141,141', +'141,141,141,141,141,141,,,,,141,,,141,141,,,,,141,,,141,141,141,141', +',,,,141,141,,141,,141,141,,141,,141,141,,,,,,141,141,141,141,141,141', +',,,141,141,,,,,,,,,,,140,,,140,140,140,140,140,140,140,140,140,140,', +',,,140,141,141,140,140,,141,,141,140,141,,140,140,140,140,,,,,140,140', +',140,,140,140,,140,,140,140,,,,,,140,140,140,140,140,140,,,,140,140', +',,,,,,,,,,139,,,139,139,139,139,139,139,139,139,139,139,,,,,139,140', +'140,139,139,,140,,140,139,140,,139,139,139,139,,,,,139,139,,139,,139', +'139,,139,,139,139,,,,,,139,139,139,139,139,139,,,,139,139,,,,,,,,,,', +'138,,,138,138,138,138,138,138,138,138,138,138,,,,,138,139,139,138,138', +',139,,139,138,139,,138,138,138,138,,,,,138,138,,138,,138,138,,138,,138', +'138,,,,,,138,138,138,138,138,138,,,,138,138,,,,,,,,,,,137,,,137,137', +'137,137,137,137,137,137,137,137,,,,,137,138,138,137,137,,138,,138,137', +'138,,137,137,137,137,,,,,137,137,,137,,137,137,,137,,137,137,,,,,,137', +'137,137,137,137,137,,,,137,137,,,,,,,,,,,117,,,117,117,117,117,117,117', +'117,117,117,117,,,,,117,137,137,117,117,,137,,137,117,137,,117,117,117', +'117,,,,,117,117,,117,,117,117,,117,,117,117,,,,,,117,117,117,117,117', +'117,,,,117,117,,,,,,,,,,,136,,,136,136,136,136,136,136,136,136,136,136', +',,,,136,117,117,136,136,,117,,117,136,117,,136,136,136,136,,,,,136,136', +',136,,136,136,,136,,136,136,,,,,,136,136,136,136,136,136,,,,136,136', +',,,,,,,,,,135,,,135,135,135,135,135,135,135,135,135,135,,,,,135,136', +'136,135,135,,136,,136,135,136,,135,135,135,135,,,,,135,135,,135,,135', +'135,,135,,135,135,,,,,,135,135,135,135,135,135,,,,135,135,,,,,,,,,,', +'121,,,121,121,121,121,121,121,121,121,121,121,,,,,121,135,135,121,121', +',135,,135,121,135,,121,121,121,121,,,,,121,121,,121,,121,121,,121,,121', +'121,,,,,,121,121,121,121,121,121,,,,121,121,,,,,,,,,,,122,,,122,122', +'122,122,122,122,122,122,122,122,,,,,122,121,121,122,122,,121,,121,122', +'121,,122,122,122,122,,,,,122,122,,122,,122,122,,122,,122,122,,,,,,122', +'122,122,122,122,122,,,,122,122,,,,,,,,,,,123,,,123,123,123,123,123,123', +'123,123,123,123,,,,,123,122,122,123,123,,122,,122,123,122,,123,123,123', +'123,,,,,123,123,,123,,123,123,,123,,123,123,,,,,,123,123,123,123,123', +'123,,,,123,123,,,,,,,,,,,142,,,142,142,142,142,142,142,142,142,142,142', +',,,,142,123,123,142,142,,123,,123,142,123,,142,142,142,142,,,,,142,142', +',142,,142,142,,142,,142,142,,312,,312,,142,142,142,142,142,142,235,', +',142,142,,,235,235,235,235,235,235,235,235,235,235,235,235,235,,,312', +'312,,,,312,,,,312,,142,142,,,,142,,142,312,142,,,,,,312,312,312,312', +'312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312', +'312,312,312,312,312,312,312,312,312,312,312,312,312,301,,301,226,,,', +',,312,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226', +'226,226,226,226,226,,301,301,,,,301,,,,301,,,,,,,,,,301,,,,,,,301,301', +'301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301', +'301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,,,,,,,,', +',301,310,310,310,310,310,310,310,310,310,310,,,,,310,,,310,310,,,,,310', +',,310,310,310,,,,,,,310,,310,,310,310,,310,,310,310,,,,,,310,310,310', +'310,310,310,,,,310,310,,,,,300,300,300,300,300,300,300,300,300,300,', +',,,300,,,300,300,,,,,300,310,310,300,300,300,310,,310,,310,,300,,300', +',300,300,,300,,300,300,,,,,,300,300,300,300,300,300,233,,,300,300,,', +'233,233,233,233,233,233,233,233,233,233,,25,25,25,25,25,25,25,25,25', +'25,,,,,25,300,300,25,25,,300,,300,25,300,,25,25,25,25,,,,,,25,,25,,25', +'25,,25,,25,25,,,,,,25,25,25,25,25,25,,,,25,25,,,,,155,155,155,155,155', +'155,155,155,155,155,,,,,155,,,155,155,,,,,155,25,25,155,155,155,25,', +'25,,25,,155,,155,,155,155,,155,,155,155,,,,,,155,155,155,155,,164,164', +'164,164,164,164,164,164,164,164,227,,,,,,,227,227,227,227,227,227,227', +'227,227,227,164,164,,,,,,155,155,,,,155,,155,164,155,229,164,,204,,204', +',229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229', +'229,229,229,229,,,,,,,,204,204,,,,204,,,,204,,,,,,,164,,164,204,164', +',,,,,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204', +'204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204', +'204,68,234,68,,,,,,234,234,234,234,234,234,234,234,234,234,234,234,234', +'234,234,234,234,234,234,234,234,,,,68,68,,,,68,,,,68,,,,,,,,,,68,,,', +',,,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68', +'68,68,68,68,68,68,68,68,68,68,68,68,311,242,311,,,,,,242,242,242,242', +'242,242,242,242,242,242,242,242,242,,,,,311,,,,,,,311,311,,,,311,,,', +'311,,,,,,,,,,311,,,,,,,311,311,311,311,311,311,311,311,311,311,311,311', '311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311', -'311,311,311,311,,,,,,,,,,311,,,,,160,,160,,160,19,19,19,19,19,19,19', -'19,19,19,,,299,299,299,299,299,299,299,299,299,299,,,,,299,19,19,299', -'299,,,,,299,,,299,299,299,,19,,,19,,299,,299,,299,299,,299,,299,299', -',,,,299,299,299,299,299,299,230,,,,299,,230,230,230,230,230,230,230', -'230,230,230,230,230,230,,,,,,,,19,,19,,19,,,299,299,,,,299,,299,,299', -'309,309,309,309,309,309,309,309,309,309,,,,,309,,,309,309,,,,,309,,', -'309,309,309,,,,,,,309,,309,,309,309,,309,,309,309,,,,,309,309,309,309', -'309,309,225,,,,309,,225,225,225,225,225,225,225,225,225,225,,,23,23', -'23,23,23,23,23,23,23,23,,,,,23,309,309,23,23,,309,,309,23,309,,23,23', -'23,23,,,,,,23,,23,,23,23,,23,,23,23,272,,272,,23,23,23,23,23,23,236', -',,,23,,236,236,236,236,236,236,236,236,236,236,236,236,236,,,,272,272', -',,,272,,,,272,,23,23,,,,23,,23,272,23,,,,,272,272,272,272,272,272,272', -'272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272', -'272,272,272,272,272,272,272,272,272,272,264,229,264,,,,,229,229,229', -'229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229', -'229,,,,,264,264,,,,264,,,,264,,,,,,,,,,264,,,,,,264,264,264,264,264', -'264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264', -'264,264,264,264,264,264,264,264,264,264,264,264,269,217,269,,,,,217', -'217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217', -'217,217,217,,,,,269,269,,,,269,,,,269,,,,,,,,,,269,,,,,,269,269,269', -'269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269', -'269,269,269,269,269,269,269,269,269,269,269,269,269,269,80,224,80,,', -',,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224', -'224,224,224,224,,,,,80,80,,,,80,,,,80,,,,,,,,80,,80,,,,,,80,80,80,80', -'80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80', -'80,80,80,80,80,80,80,79,212,79,,,,,212,212,212,212,212,212,212,212,212', -'212,212,212,212,212,212,212,212,212,212,212,212,,,,,79,79,,,,79,,,,79', -',,,,,,,79,,79,,,,,,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79', -'79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,77,220,77,,,,,220', -'220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220', -'220,220,220,,,,,77,77,,,,77,,,,77,,,,,,,,77,,77,,,,,,77,77,77,77,77', -'77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77', -'77,77,77,77,77,77,263,244,263,,,,,244,244,244,244,244,244,244,244,244', -'244,244,244,244,244,244,244,244,244,244,244,244,,,,,263,263,,,,263,', -',,263,,,,,,,,,,263,,,,,,263,263,263,263,263,263,263,263,263,263,263', -'263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263', -'263,263,263,263,263,263,292,233,292,,,,,233,233,233,233,233,233,233', -'233,233,233,233,233,233,,,,,,,,,,,,,292,292,,,,292,,,,292,,,,,,,,,,292', -',,,,,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292', -'292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292', -'292,63,227,63,,,,,227,227,227,227,227,227,227,227,227,227,,,,,,,,,,', -',,,,,63,63,,,,63,,,,63,,,,,,,,,,63,,,,,,63,63,63,63,63,63,63,63,63,63', -'63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63', -'63,296,221,296,,,,,221,221,221,221,221,221,221,221,221,221,,,,,,,,,', -',,,,,,296,296,,,,296,,,,296,,,,,,,,,,296,,,,,,296,296,296,296,296,296', -'296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296', -'296,296,296,296,296,296,296,296,296,296,296,297,,297,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,297,297,,,,297,,,,297,,,,,,,,,,297,,,,,,297,297,297,297', -'297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297', -'297,297,297,297,297,297,297,297,297,297,297,297,297,228,,228,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,228,228,,,,228,,,,228,,,,,,,,,,228,,,,,,228,228', -'228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228', -'228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,222,,222', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,222,222,,,,222,,,,222,,,,,,,,,,222,,,,', -',222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222', -'222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222', -'308,,308,,,,,,,,,,,,,,,,,,,,,,,308,,,,,,,308,308,,,,308,,,,308,,,,,', -',,,,308,,,,,,308,308,308,308,308,308,308,308,308,308,308,308,308,308', -'308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308', -'308,308,308,214,,214,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,214,214,,,,214,,,', -'214,,,,,,,,,,214,,,,,,214,214,214,214,214,214,214,214,214,214,214,214', -'214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214', -'214,214,214,214,214,201,,201,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,201,201,,', -',201,,,,201,,,,,,,,,,201,,,,,,201,201,201,201,201,201,201,201,201,201', -'201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201', -'201,201,201,201,201,201,201,104,,104,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,104', -'104,,,,104,,,,104,,,,,,,,,,104,,,,,,104,104,104,104,104,104,104,104', -'104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104', -'104,104,104,104,104,104,104,104,104,179,,179,,,,,,,,,,,,,,,,,,,,,,,179', -',,,,,,179,179,,,,179,,,,179,,,,,,,,,,179,,,,,,179,179,179,179,179,179', -'179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179', -'179,179,179,179,179,179,179,179,179,179,179,178,,178,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,178,178,,,,178,,,,178,,,,,,,,,,178,,,,,,178,178,178,178', -'178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178', -'178,178,178,178,178,178,178,178,178,178,178,178,178,314,,314,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,314,314,,,,314,,,,314,,,,,,,,,,314,,,,,,314,314', -'314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314', -'314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,193,,193', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,193,193,,,,193,,,,193,,,,,,,,,,193,,,,', -',193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193', -'193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193', -'316,,316,,,,,,,,,,,,,,,,,,,,,,,316,,,,,,,316,316,,,,316,,,,316,,,,,', -',,,,316,,,,,,316,316,316,316,316,316,316,316,316,316,316,316,316,316', -'316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316', -'316,316,316,248,248,,,,,,,,248,,,,,,,,,,248,,,,,,248,248,248,248,248', -'248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248', -'248,248,248,248,248,248,248,248,248,248,248,248,95,95,,,,,,,,95,,,,', -',,,,,95,,,,,,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95', -'95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,216,216,,,,,,,,216,,,,', -',,,,,216,,,,,,216,216,216,216,216,216,216,216,216,216,216,216,216,216', +'311,311,311,311,311,231,222,231,,,,,,222,222,222,222,222,222,222,222', +'222,222,222,222,222,222,222,222,222,222,222,222,222,,,,231,231,,,,231', +',,,231,,,,,,,,,,231,,,,,,,231,231,231,231,231,231,231,231,231,231,231', +'231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231', +'231,231,231,231,231,231,81,214,81,,,,,,214,214,214,214,214,214,214,214', +'214,214,214,214,214,214,214,214,214,214,214,214,214,,,,81,81,,,,81,', +',,81,,,,,,,,81,,81,,,,,,,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81', +'81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,224,210,224', +',,,,,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210', +'210,210,210,210,210,,,,224,224,,,,224,,,,224,,,,,,,,,,224,,,,,,,224', +'224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224', +'224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,273', +'246,273,,,,,,246,246,246,246,246,246,246,246,246,246,246,246,246,,,', +',,,,,,,,273,273,,,,273,,,,273,,,,,,,,,,273,,,,,,,273,273,273,273,273', +'273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273', +'273,273,273,273,273,273,273,273,273,273,273,273,216,238,216,,,,,,238', +'238,238,238,238,238,238,238,238,238,238,238,238,,,,,,,,,,,,216,216,', +',,216,,,,216,,,,,,,,,,216,,,,,,,216,216,216,216,216,216,216,216,216', '216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216', -'223,223,,,,,,,,223,,,,,,,,,,223,,,,,,223,223,223,223,223,223,223,223', -'223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223', -'223,223,223,223,223,223,219,219,,,,,,,,219,,,,,,,,,,219,,,,,,219,219', -'219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219', -'219,219,219,219,219,219,219,219,219,219,219,219,111,111,,,,,,,,111,', -',,,,,,,,111,,,,,,111,111,111,111,111,111,111,111,111,111,111,111,111', -'111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111', -'111,279,,,,,,,,279,,,,,,,,,,279,,,,,,279,279,279,279,279,279,279,279', -'279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279', -'279,279,279,279,279,279,302,,,,,,,,302,,,,,,,,,,302,,,,,,302,302,302', -'302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302', -'302,302,302,302,302,302,302,302,302,302,302,215,,,,,,,,215,,,,,,,,,', -'215,,,,,,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215', -'215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,303', -',,,,,,,303,,,,,,,,,,303,,,,,,303,303,303,303,303,303,303,303,303,303', -'303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303', -'303,303,303,303,280,,,,,,,,280,,,,,,,,,,280,,,,,,280,280,280,280,280', -'280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280', -'280,280,280,280,280,280,280,280,280,85,,,,,,,,,,85,,,,,,85,85,85,85', -'85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85', -'85,85,85,105,,,,,,,,,,105,,,,,,105,105,105,105,105,105,105,105,105,105', -'105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105', -'105,105,105,242,,,,,,,,,,242,,,,,,242,242,242,242,242,242,242,242,242', -'242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242', -'242,242,242,242,238,,,,,,238,238,238,238,238,238,238,238,238,238,238', -'238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238', -'238,238,235,,,,,,235,235,235,235,235,235,235,235,235,235,235,235,235', -'235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235', -'232,,,,,,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232', -'232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,243,,,,', -',243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243', -'243,243,243,243,243,243,243,243,243,243,243,243,243,207,,,,,,207,207', -'207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207', -'207,207,207,207,207,207,207,207,207,207,207' ] - racc_action_check = arr = Array.new(8898, nil) +'216,216,216,216,216,216,216,216,274,230,274,,,,,,230,230,230,230,230', +'230,230,230,230,230,,,,,,,,,,,,,,,274,274,,,,274,,,,274,,,,,,,,,,274', +',,,,,,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274', +'274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274', +'274,107,,107,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,107,107,,,,107,,,,107,,,,', +',,,,,107,,,,,,,107,107,107,107,107,107,107,107,107,107,107,107,107,107', +'107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107', +'107,107,107,316,,316,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,316,316,,,,316,,,', +'316,,,,,,,,,,316,,,,,,,316,316,316,316,316,316,316,316,316,316,316,316', +'316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316', +'316,316,316,316,316,195,,195,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,195,195,,', +',195,,,,195,,,,,,,,,,195,,,,,,,195,195,195,195,195,195,195,195,195,195', +'195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195', +'195,195,195,195,195,195,195,317,,317,,,,,,,,,,,,,,,,,,,,,,,317,,,,,', +',317,317,,,,317,,,,317,,,,,,,,,,317,,,,,,,317,317,317,317,317,317,317', +'317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317', +'317,317,317,317,317,317,317,317,317,317,78,,78,,,,,,,,,,,,,,,,,,,,,', +',,,,,,,,78,78,,,,78,,,,78,,,,,,,,78,,78,,,,,,,78,78,78,78,78,78,78,78', +'78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78', +'78,78,78,181,,181,,,,,,,,,,,,,,,,,,,,,,,181,,,,,,,181,181,,,,181,,,', +'181,,,,,,,,,,181,,,,,,,181,181,181,181,181,181,181,181,181,181,181,181', +'181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181', +'181,181,181,181,181,180,,180,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,180,180,,', +',180,,,,180,,,,,,,,,,180,,,,,,,180,180,180,180,180,180,180,180,180,180', +'180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180', +'180,180,180,180,180,180,180,265,,265,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,265', +'265,,,,265,,,,265,,,,,,,,,,265,,,,,,,265,265,265,265,265,265,265,265', +'265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265', +'265,265,265,265,265,265,265,265,265,295,,295,,,,,,,,,,,,,,,,,,,,,,,', +',,,,,,295,295,,,,295,,,,295,,,,,,,,,,295,,,,,,,295,295,295,295,295,295', +'295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295', +'295,295,295,295,295,295,295,295,295,295,295,299,,299,,,,,,,,,,,,,,,', +',,,,,,,,,,,,,,299,299,,,,299,,,,299,,,,,,,,,,299,,,,,,,299,299,299,299', +'299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299', +'299,299,299,299,299,299,299,299,299,299,299,299,299,298,,298,,,,,,,', +',,,,,,,,,,,,,,,,,,,,,,298,298,,,,298,,,,298,,,,,,,,,,298,,,,,,,298,298', +'298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298', +'298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,80,,80,', +',,,,,,,,,,,,,,,,,,,,,,,,,,,,80,80,,,,80,,,,80,,,,,,,,80,,80,,,,,,,80', +'80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80', +'80,80,80,80,80,80,80,80,80,80,266,,266,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', +'266,266,,,,266,,,,266,,,,,,,,,,266,,,,,,,266,266,266,266,266,266,266', +'266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266', +'266,266,266,266,266,266,266,266,266,266,88,88,,,,,,,,88,,,,,,,,,,88', +',,,,,,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88', +'88,88,88,88,88,88,88,88,88,88,88,88,88,250,250,,,,,,,,250,,,,,,,,,,250', +',,,,,,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250', +'250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250', +'250,228,228,,,,,,,,228,,,,,,,,,,228,,,,,,,228,228,228,228,228,228,228', +'228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228', +'228,228,228,228,228,228,228,113,113,,,,,,,,113,,,,,,,,,,113,,,,,,,113', +'113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113', +'113,113,113,113,113,113,113,113,113,113,113,113,113,225,225,,,,,,,,225', +',,,,,,,,,225,,,,,,,225,225,225,225,225,225,225,225,225,225,225,225,225', +'225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225', +'225,221,221,,,,,,,,221,,,,,,,,,,221,,,,,,,221,221,221,221,221,221,221', +'221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221', +'221,221,221,221,221,221,221,305,,,,,,,,305,,,,,,,,,,305,,,,,,,305,305', +'305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305', +'305,305,305,305,305,305,305,305,305,305,305,305,304,,,,,,,,304,,,,,', +',,,,304,,,,,,,304,304,304,304,304,304,304,304,304,304,304,304,304,304', +'304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304', +'218,,,,,,,,218,,,,,,,,,,218,,,,,,,218,218,218,218,218,218,218,218,218', +'218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218', +'218,218,218,218,218,282,,,,,,,,282,,,,,,,,,,282,,,,,,,282,282,282,282', +'282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282', +'282,282,282,282,282,282,282,282,282,282,281,,,,,,,,281,,,,,,,,,,281', +',,,,,,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281', +'281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,244,,,,', +',,,,,244,,,,,,,244,244,244,244,244,244,244,244,244,244,244,244,244,244', +'244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,86,', +',,,,,,,,86,,,,,,,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86', +'86,86,86,86,86,86,86,86,86,86,86,86,86,104,,,,,,,,,,104,,,,,,,104,104', +'104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104', +'104,104,104,104,104,104,104,104,104,104,104,237,,,,,,,237,237,237,237', +'237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237', +'237,237,237,237,237,237,237,237,237,240,,,,,,,240,240,240,240,240,240', +'240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240', +'240,240,240,240,240,240,240,213,,,,,,,213,213,213,213,213,213,213,213', +'213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213', +'213,213,213,213,213,209,,,,,,,209,209,209,209,209,209,209,209,209,209', +'209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209', +'209,209,209,245,,,,,,,245,245,245,245,245,245,245,245,245,245,245,245', +'245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245', +'245' ] + racc_action_check = arr = Array.new(9160, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -696,342 +709,345 @@ clist = [ end racc_action_pointer = [ - 4416, 269, nil, nil, 172, nil, 246, nil, nil, 320, - nil, 394, 468, nil, nil, 542, nil, nil, 616, 5725, - 764, nil, 505, 5910, 232, nil, nil, nil, nil, 1060, - 1134, nil, 252, nil, 1282, 1356, nil, nil, nil, nil, - 221, nil, nil, nil, nil, 245, nil, nil, nil, 1578, - nil, nil, nil, nil, nil, 53, 1726, nil, nil, 55, - nil, nil, 199, 6687, 157, -2, 143, nil, 2244, nil, - nil, 2318, nil, -3, -43, nil, 313, 6414, 535, 6323, - 6232, 519, 181, 394, 320, 8537, 3280, 3354, 182, nil, - 270, nil, 256, nil, nil, 7988, 20, nil, -70, 212, - nil, 212, 63, 4120, 7415, 8583, 4342, -2, 445, 294, - 16, 8215, 4812, 76, nil, nil, 164, 140, 5108, 5182, - 5256, 273, 205, 3872, 5034, 4886, 4738, 4516, 4194, 3798, - 3576, 3502, 3428, 3132, 3058, 2984, 2836, nil, 2762, 2614, - nil, 2540, 2096, 1948, 1874, 1800, 1652, 1504, 1208, 986, - 912, 838, -2, 690, 4046, 5478, 98, 5404, 5330, nil, - 5626, nil, 4960, nil, nil, -1, nil, 246, nil, 387, - 297, 182, 39, 77, nil, nil, -22, 146, 7597, 7506, - nil, nil, nil, 4664, 4590, 92, nil, 201, 113, nil, - nil, 4268, 3946, 7779, -50, 71, nil, 4, 14, -26, - nil, 7324, nil, 125, 3724, 3650, -2, 8809, 4424, 402, - 285, 75, 6273, 328, 7233, 8380, 8047, 6091, 254, 8159, - 6364, 6728, 7051, 8103, 6182, 5844, 3954, 6637, 6960, 6000, - 5745, 371, 8737, 6546, 65, 8701, 5918, 239, 8665, nil, - 5486, 479, 8629, 8773, 6455, 550, 468, 519, 7929, nil, - nil, nil, nil, nil, 184, 131, 286, 184, nil, 3206, - nil, 27, nil, 6505, 6050, nil, nil, nil, 233, 6141, - 2910, 2688, 5959, 2466, nil, 1, 47, nil, nil, 8270, - 8490, 2392, 2170, nil, 186, nil, nil, nil, 73, 119, - nil, nil, 6596, 43, 2022, nil, 6778, 6869, 5527, 5737, - nil, nil, 8325, 8435, nil, 212, 39, 1430, 7142, 5836, - nil, 5618, nil, nil, 7688, nil, 7870, nil, nil ] + 4700, 340, nil, nil, 174, nil, 249, nil, nil, 324, + nil, 399, 474, nil, nil, 549, nil, nil, nil, 624, + nil, -2, 774, nil, 849, 6008, nil, 324, nil, 235, + nil, nil, 1149, nil, 1224, 243, nil, 1374, nil, nil, + 1449, nil, nil, 202, nil, nil, 1599, nil, nil, nil, + nil, nil, 1674, 215, nil, nil, nil, nil, nil, 1824, + nil, nil, 219, nil, nil, nil, 152, 203, 6272, -22, + -2, 37, nil, 2424, nil, -38, -5, 185, 7376, 317, + 8020, 6548, 301, 242, 399, 474, 8838, 392, 8172, nil, + 3575, 3650, 229, 276, nil, 278, nil, nil, 210, nil, + 231, 236, nil, 53, 8885, 71, 4400, 7008, 4550, 451, + -2, 196, 64, 8349, 342, 64, nil, 5176, 260, 101, + nil, 5401, 5476, 5551, 351, 3500, 1524, 1299, 999, 277, + 699, 4175, 2975, 924, 4625, 5326, 5251, 5101, 5026, 4951, + 4876, 4801, 5626, nil, 4475, 4325, 4250, nil, 99, 4100, + 4025, 3950, 3875, 3800, 3725, 6074, 3425, 3350, 3275, 3200, + 3125, 3050, nil, nil, 6130, nil, 2900, nil, nil, 91, + nil, 219, 467, 120, 184, 232, nil, nil, 188, 74, + 7560, 7468, nil, nil, nil, 2825, 2750, 93, 114, nil, + 230, 2649, nil, nil, 2574, 7192, 108, -2, nil, 159, + 163, 102, nil, nil, 6180, 133, 2499, 2349, -17, 9033, + 6590, -7, 79, 8996, 6498, 408, 6824, -52, 8631, 4709, + 333, 8463, 6406, 258, 6640, 8406, 5720, 6092, 8292, 6126, + 6866, 6456, 2658, 5942, 6222, 5635, 167, 8922, 6774, -18, + 8959, nil, 6314, 376, 8791, 9070, 6682, 483, 2, 249, + 8232, nil, nil, nil, nil, -54, nil, -24, 150, 126, + nil, 2274, nil, -65, nil, 7652, 8112, nil, nil, 203, + nil, 2199, 2124, 6732, 6916, 2049, nil, 68, 89, nil, + nil, 8743, 8687, nil, 1974, 1899, 275, nil, nil, nil, + -2, 149, nil, nil, -50, 7744, 1749, nil, 7928, 7836, + 5933, 5768, nil, nil, 8575, 8519, nil, 245, 37, 1074, + 5867, 6364, 5676, nil, nil, nil, 7100, 7284, nil, nil, + nil ] racc_action_default = [ - -1, -182, -97, -11, -182, -106, -182, -26, -12, -182, - -107, -182, -182, -27, -13, -182, -108, -14, -182, -182, - -182, -15, -124, -46, -118, -16, -28, -17, -29, -137, - -182, -31, -182, -18, -182, -182, -126, -35, -19, -36, - -182, -34, -20, -37, -21, -182, -47, -22, -38, -182, - -2, -30, -23, -39, -32, -3, -182, -104, -40, -182, - -103, -33, -182, -5, -182, -8, -175, -9, -182, -96, - -10, -182, -105, -182, -100, -98, -49, -154, -52, -182, - -182, -54, -53, -182, -125, -55, -137, -182, -182, -110, - -182, -114, -182, -115, -129, -45, -182, -44, -182, -118, - -119, -182, -182, -182, -138, -56, -137, -182, -50, -182, - -182, -151, -7, -182, -25, -4, -158, -182, -182, -182, - -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, - -182, -182, -182, -182, -182, -182, -182, -58, -182, -182, - -57, -182, -182, -182, -182, -182, -182, -182, -182, -182, - -182, -182, -93, -182, -182, -182, -182, -182, -182, -95, - -182, -109, -182, -128, -179, -182, -173, -175, -177, -51, - -48, -182, -182, -182, -153, -171, -182, -182, -138, -182, - -111, -112, -113, -182, -182, -182, -117, -182, -182, -136, - -144, -182, -182, -139, -182, -182, -152, -147, -182, -182, - 319, -6, -24, -182, -182, -182, -182, -87, -75, -64, - -182, -182, -76, -65, -180, -92, -88, -77, -66, -89, - -78, -67, -181, -90, -79, -68, -80, -69, -155, -81, - -70, -59, -83, -71, -60, -84, -72, -61, -85, -82, - -73, -62, -91, -86, -74, -63, -127, -182, -41, -172, - -176, -174, -178, -99, -182, -182, -182, -182, -166, -182, - -130, -182, -116, -42, -43, -123, -121, -120, -182, -141, - -182, -182, -140, -182, -131, -182, -182, -148, -159, -160, - -161, -182, -182, -157, -156, -102, -94, -101, -182, -182, - -167, -164, -145, -182, -182, -122, -142, -143, -182, -102, - -149, -150, -163, -162, -170, -182, -168, -182, -182, -102, - -132, -182, -165, -169, -146, -134, -182, -133, -135 ] + -1, -183, -97, -10, -183, -106, -183, -98, -11, -183, + -107, -183, -183, -26, -12, -183, -108, -27, -13, -183, + -109, -183, -183, -14, -183, -46, -15, -125, -28, -119, + -16, -29, -183, -31, -138, -183, -17, -183, -35, -18, + -183, -127, -36, -183, -34, -19, -183, -37, -20, -47, + -21, -38, -183, -183, -30, -22, -39, -32, -2, -183, + -23, -40, -3, -105, -104, -33, -183, -183, -5, -183, + -8, -176, -9, -183, -99, -101, -183, -48, -155, -49, + -183, -183, -53, -55, -183, -126, -56, -54, -45, -130, + -138, -183, -183, -183, -111, -183, -115, -116, -183, -44, + -183, -119, -120, -183, -57, -183, -183, -139, -138, -51, + -183, -183, -50, -152, -183, -183, -25, -7, -159, -183, + -4, -183, -183, -183, -183, -183, -183, -183, -183, -183, + -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, + -183, -183, -183, -59, -183, -183, -183, -58, -183, -183, + -183, -183, -183, -183, -183, -94, -183, -183, -183, -183, + -183, -183, -96, -129, -183, -110, -183, -178, -180, -183, + -174, -176, -52, -183, -183, -183, -154, -172, -183, -183, + -139, -183, -112, -113, -114, -183, -183, -183, -183, -118, + -183, -183, -137, -145, -183, -140, -183, -183, -153, -148, + -183, -183, 321, -24, -6, -183, -183, -183, -183, -87, + -75, -64, -183, -88, -76, -65, -181, -183, -93, -77, + -66, -89, -78, -67, -182, -90, -79, -68, -91, -80, + -69, -156, -81, -70, -82, -71, -60, -84, -72, -61, + -85, -83, -73, -62, -92, -86, -74, -63, -128, -183, + -41, -177, -173, -179, -175, -183, -100, -183, -183, -183, + -167, -183, -131, -183, -117, -42, -43, -124, -121, -183, + -122, -183, -183, -141, -142, -183, -132, -183, -183, -149, + -160, -161, -162, -158, -183, -183, -157, -103, -102, -95, + -183, -183, -168, -165, -183, -146, -183, -123, -143, -144, + -103, -183, -150, -151, -164, -163, -171, -183, -169, -183, + -103, -183, -183, -133, -166, -170, -147, -183, -135, -134, + -136 ] racc_goto_table = [ - 50, 161, 163, 59, 258, 206, 75, 76, 101, 77, - 168, 97, 78, 166, 79, 80, 266, 267, 81, 161, - 163, 82, 102, 85, 45, 83, 95, 293, 84, 117, - 257, 55, 104, 105, 197, 249, 254, 107, 108, 167, - 73, 164, nil, 109, nil, nil, nil, nil, nil, nil, - nil, nil, 111, nil, nil, 112, nil, nil, nil, 115, - nil, nil, nil, nil, nil, nil, nil, 159, nil, nil, - nil, 169, nil, nil, 170, nil, nil, nil, nil, 177, - 174, nil, 175, 185, nil, 290, 97, 113, 210, 178, - 179, nil, nil, nil, nil, nil, nil, 295, 284, 195, - nil, 187, nil, nil, nil, nil, 193, nil, nil, 178, - nil, 252, nil, 112, 251, 201, 304, nil, nil, nil, - nil, 207, 208, 209, nil, nil, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - nil, 226, 227, nil, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, nil, 256, nil, 248, 246, nil, 250, 247, - nil, nil, nil, nil, 97, 97, 253, nil, nil, nil, - nil, nil, 161, 163, nil, 187, 263, 264, 268, nil, - nil, nil, 270, nil, 269, 272, nil, nil, nil, nil, - nil, nil, 277, nil, nil, nil, nil, 279, 280, 283, + 58, 74, 260, 208, 67, 167, 165, 163, 77, 170, + 78, 62, 268, 79, 270, 80, 81, 99, 105, 82, + 165, 163, 119, 83, 84, 85, 86, 103, 87, 88, + 53, 294, 259, 199, 252, 257, 104, 171, 107, 76, + 168, 109, nil, nil, 110, nil, nil, 111, nil, nil, + 112, nil, nil, nil, nil, nil, 113, nil, nil, nil, + nil, nil, 117, nil, nil, nil, nil, 120, nil, nil, + 115, nil, nil, 162, 179, nil, nil, 172, nil, nil, + 212, nil, 176, 292, 177, nil, nil, nil, nil, 99, + nil, nil, 197, 297, 180, 181, 286, nil, nil, 187, + nil, nil, nil, 190, nil, 253, nil, nil, nil, 254, + 195, nil, 180, nil, 306, 117, nil, nil, nil, nil, + nil, 204, nil, nil, nil, 209, 210, 211, nil, 213, + 214, 215, 216, nil, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, nil, 231, 232, + 233, nil, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 258, 248, 249, nil, + 250, nil, nil, 251, 256, nil, 99, nil, 99, nil, + nil, nil, nil, nil, 165, 163, nil, 190, 269, 265, + 266, 271, nil, nil, nil, 273, nil, nil, 274, nil, + nil, nil, nil, nil, nil, 279, nil, nil, nil, nil, + 281, 282, 283, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 256, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 97, 288, 286, nil, nil, - nil, nil, 292, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 296, 297, 256, 298, nil, 300, 301, - nil, nil, nil, nil, 302, 303, nil, nil, nil, nil, - nil, nil, 305, nil, nil, nil, 306, 308, nil, nil, - nil, nil, 311, nil, nil, nil, 313, nil, nil, nil, - 314, nil, 316 ] + nil, nil, nil, nil, nil, nil, nil, 258, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 99, 290, nil, + nil, 289, nil, nil, nil, 295, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 298, 299, nil, 258, 301, + nil, 302, 303, nil, nil, nil, nil, nil, 304, 305, + nil, nil, nil, nil, nil, 307, nil, nil, 308, nil, + 311, nil, nil, nil, 312, nil, nil, nil, 315, nil, + nil, nil, nil, 316, 317 ] racc_goto_check = [ - 2, 31, 37, 4, 44, 42, 26, 5, 35, 5, - 48, 21, 5, 46, 5, 5, 23, 23, 5, 31, - 37, 5, 38, 5, 1, 6, 5, 39, 32, 41, - 43, 3, 5, 5, 40, 45, 25, 5, 5, 47, - 24, 49, nil, 4, nil, nil, nil, nil, nil, nil, - nil, nil, 5, nil, nil, 2, nil, nil, nil, 2, - nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, - nil, 5, nil, nil, 5, nil, nil, nil, nil, 38, - 4, nil, 4, 35, nil, 44, 21, 3, 41, 5, - 5, nil, nil, nil, nil, nil, nil, 23, 42, 38, - nil, 2, nil, nil, nil, nil, 5, nil, nil, 5, - nil, 48, nil, 2, 46, 5, 44, nil, nil, nil, - nil, 5, 5, 5, nil, nil, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - nil, 5, 5, nil, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, nil, 21, nil, 5, 6, nil, 4, 32, - nil, nil, nil, nil, 21, 21, 26, nil, nil, nil, - nil, nil, 31, 37, nil, 2, 5, 5, 2, nil, - nil, nil, 2, nil, 5, 5, nil, nil, nil, nil, - nil, nil, 4, nil, nil, nil, nil, 5, 5, 4, + 2, 26, 44, 42, 4, 48, 31, 37, 5, 46, + 5, 3, 23, 5, 23, 5, 5, 21, 38, 5, + 31, 37, 41, 5, 6, 32, 5, 35, 5, 5, + 1, 39, 43, 40, 45, 25, 5, 47, 5, 24, + 49, 5, nil, nil, 5, nil, nil, 4, nil, nil, + 5, nil, nil, nil, nil, nil, 5, nil, nil, nil, + nil, nil, 2, nil, nil, nil, nil, 2, nil, nil, + 3, nil, nil, 4, 38, nil, nil, 5, nil, nil, + 41, nil, 4, 44, 4, nil, nil, nil, nil, 21, + nil, nil, 38, 23, 5, 5, 42, nil, nil, 35, + nil, nil, nil, 2, nil, 48, nil, nil, nil, 46, + 5, nil, 5, nil, 44, 2, nil, nil, nil, nil, + nil, 5, nil, nil, nil, 5, 5, 5, nil, 5, + 5, 5, 5, nil, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, nil, 5, 5, + 5, nil, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 21, 6, 32, nil, + 5, nil, nil, 4, 26, nil, 21, nil, 21, nil, + nil, nil, nil, nil, 31, 37, nil, 2, 2, 5, + 5, 2, nil, nil, nil, 5, nil, nil, 5, nil, + nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, + 5, 5, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 21, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 21, 2, 4, nil, nil, - nil, nil, 5, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 5, 5, 21, 5, nil, 4, 4, - nil, nil, nil, nil, 5, 5, nil, nil, nil, nil, - nil, nil, 4, nil, nil, nil, 4, 5, nil, nil, - nil, nil, 5, nil, nil, nil, 2, nil, nil, nil, - 5, nil, 5 ] + nil, nil, nil, nil, nil, nil, nil, 21, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 21, 2, nil, + nil, 4, nil, nil, nil, 5, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 5, 5, nil, 21, 5, + nil, 4, 4, nil, nil, nil, nil, nil, 5, 5, + nil, nil, nil, nil, nil, 4, nil, nil, 4, nil, + 5, nil, nil, nil, 5, nil, nil, nil, 2, nil, + nil, nil, nil, 5, 5 ] racc_goto_pointer = [ - nil, 24, 0, 31, 3, 3, 6, nil, nil, nil, + nil, 30, 0, 11, 4, 4, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -13, nil, -171, 39, -136, 5, nil, nil, nil, - nil, -64, 9, nil, nil, -16, nil, -63, -7, -232, - -75, -33, -112, -146, -172, -130, -53, -27, -56, -25 ] + nil, -12, nil, -176, 38, -140, 0, nil, nil, nil, + nil, -64, 4, nil, nil, -2, nil, -63, -16, -230, + -78, -44, -116, -146, -176, -135, -62, -34, -66, -31 ] racc_goto_default = [ - nil, nil, 191, nil, nil, 63, 65, 67, 70, 3, - 8, 14, 17, 21, 25, 27, 33, 38, 42, 44, - 47, 52, 57, 100, nil, 64, nil, 72, 5, 10, - 16, 89, 22, 91, 93, nil, 36, 94, nil, nil, - nil, nil, nil, nil, nil, 66, nil, nil, nil, nil ] + nil, nil, 194, nil, nil, 68, 70, 72, 3, 8, + 14, 18, 23, 26, 30, 36, 39, 45, 48, 50, + 55, 60, 63, 102, nil, 69, nil, 5, 10, 16, + 20, 94, 27, 96, 97, nil, 41, 89, nil, nil, + nil, nil, nil, nil, nil, 71, nil, nil, nil, nil ] racc_reduce_table = [ 0, 0, :racc_error, - 0, 106, :_reduce_1, - 1, 106, :_reduce_2, - 1, 106, :_reduce_3, - 2, 106, :_reduce_4, - 1, 108, :_reduce_5, - 3, 108, :_reduce_6, - 2, 108, :_reduce_7, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 1, 110, :_reduce_none, - 3, 109, :_reduce_24, - 2, 109, :_reduce_25, - 1, 107, :_reduce_none, - 1, 107, :_reduce_none, - 1, 127, :_reduce_28, - 1, 127, :_reduce_29, - 1, 127, :_reduce_30, - 1, 127, :_reduce_31, - 1, 127, :_reduce_32, - 1, 127, :_reduce_33, - 1, 127, :_reduce_34, - 1, 127, :_reduce_35, - 1, 127, :_reduce_36, - 1, 127, :_reduce_37, - 1, 127, :_reduce_38, - 1, 127, :_reduce_39, - 1, 127, :_reduce_40, - 3, 115, :_reduce_41, - 3, 128, :_reduce_42, - 3, 128, :_reduce_43, - 1, 128, :_reduce_44, - 2, 119, :_reduce_45, - 1, 119, :_reduce_46, - 1, 126, :_reduce_47, - 2, 114, :_reduce_48, - 2, 114, :_reduce_49, - 2, 114, :_reduce_50, - 2, 114, :_reduce_51, - 2, 114, :_reduce_52, - 2, 114, :_reduce_53, - 2, 114, :_reduce_54, - 2, 114, :_reduce_55, - 2, 114, :_reduce_56, - 2, 114, :_reduce_57, - 2, 114, :_reduce_58, - 3, 114, :_reduce_59, - 3, 114, :_reduce_60, - 3, 114, :_reduce_61, - 3, 114, :_reduce_62, - 3, 114, :_reduce_63, - 3, 114, :_reduce_64, - 3, 114, :_reduce_65, - 3, 114, :_reduce_66, - 3, 114, :_reduce_67, - 3, 114, :_reduce_68, - 3, 114, :_reduce_69, - 3, 114, :_reduce_70, - 3, 114, :_reduce_71, - 3, 114, :_reduce_72, - 3, 114, :_reduce_73, - 3, 114, :_reduce_74, - 3, 114, :_reduce_75, - 3, 114, :_reduce_76, - 3, 114, :_reduce_77, - 3, 114, :_reduce_78, - 3, 114, :_reduce_79, - 3, 114, :_reduce_80, - 3, 114, :_reduce_81, - 3, 114, :_reduce_82, - 3, 114, :_reduce_83, - 3, 114, :_reduce_84, - 3, 114, :_reduce_85, - 3, 114, :_reduce_86, - 3, 114, :_reduce_87, - 3, 114, :_reduce_88, - 3, 114, :_reduce_89, - 3, 114, :_reduce_90, - 3, 114, :_reduce_91, - 3, 114, :_reduce_92, - 2, 125, :_reduce_93, - 5, 113, :_reduce_94, - 2, 113, :_reduce_95, - 1, 130, :_reduce_96, - 1, 130, :_reduce_97, - 1, 129, :_reduce_98, - 3, 129, :_reduce_99, - 1, 131, :_reduce_none, - 4, 131, :_reduce_101, - 4, 124, :_reduce_102, - 1, 111, :_reduce_103, - 1, 111, :_reduce_104, - 1, 111, :_reduce_105, - 1, 111, :_reduce_106, - 1, 111, :_reduce_107, - 1, 111, :_reduce_108, - 2, 111, :_reduce_109, - 2, 111, :_reduce_110, - 2, 136, :_reduce_111, - 2, 136, :_reduce_112, - 2, 136, :_reduce_113, - 1, 136, :_reduce_114, - 1, 136, :_reduce_115, - 3, 138, :_reduce_116, - 3, 133, :_reduce_117, - 0, 140, :_reduce_118, - 1, 140, :_reduce_119, - 3, 140, :_reduce_120, - 3, 140, :_reduce_121, - 4, 140, :_reduce_122, - 3, 140, :_reduce_123, - 1, 112, :_reduce_124, - 2, 112, :_reduce_125, - 1, 112, :_reduce_126, - 3, 123, :_reduce_127, - 2, 137, :_reduce_128, - 2, 137, :_reduce_129, - 3, 142, :_reduce_130, - 4, 141, :_reduce_131, - 6, 135, :_reduce_132, - 7, 135, :_reduce_133, - 6, 139, :_reduce_134, - 7, 139, :_reduce_135, - 3, 132, :_reduce_136, - 0, 143, :_reduce_137, - 1, 143, :_reduce_138, - 2, 143, :_reduce_139, - 3, 143, :_reduce_140, - 3, 143, :_reduce_141, - 4, 143, :_reduce_142, - 4, 143, :_reduce_143, - 2, 143, :_reduce_144, - 1, 144, :_reduce_145, - 3, 144, :_reduce_146, - 3, 117, :_reduce_147, - 4, 117, :_reduce_148, - 5, 117, :_reduce_149, - 3, 145, :_reduce_150, - 2, 118, :_reduce_151, - 3, 134, :_reduce_152, - 3, 120, :_reduce_153, - 2, 120, :_reduce_154, - 3, 120, :_reduce_155, - 4, 121, :_reduce_156, - 4, 121, :_reduce_157, - 1, 146, :_reduce_158, - 3, 146, :_reduce_159, - 2, 147, :_reduce_160, - 2, 147, :_reduce_161, - 3, 147, :_reduce_162, - 3, 147, :_reduce_163, - 5, 122, :_reduce_164, - 7, 122, :_reduce_165, - 1, 148, :_reduce_166, - 2, 148, :_reduce_167, - 3, 149, :_reduce_168, - 4, 149, :_reduce_169, - 3, 149, :_reduce_170, + 0, 107, :_reduce_1, + 1, 107, :_reduce_2, + 1, 107, :_reduce_3, + 2, 107, :_reduce_4, + 1, 109, :_reduce_5, + 3, 109, :_reduce_6, + 2, 109, :_reduce_7, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 3, 110, :_reduce_24, + 2, 110, :_reduce_25, + 1, 108, :_reduce_none, + 1, 108, :_reduce_none, + 1, 128, :_reduce_28, + 1, 128, :_reduce_29, + 1, 128, :_reduce_30, + 1, 128, :_reduce_31, + 1, 128, :_reduce_32, + 1, 128, :_reduce_33, + 1, 128, :_reduce_34, + 1, 128, :_reduce_35, + 1, 128, :_reduce_36, + 1, 128, :_reduce_37, + 1, 128, :_reduce_38, + 1, 128, :_reduce_39, + 1, 128, :_reduce_40, + 3, 116, :_reduce_41, + 3, 129, :_reduce_42, + 3, 129, :_reduce_43, + 1, 129, :_reduce_44, + 2, 120, :_reduce_45, + 1, 120, :_reduce_46, + 1, 127, :_reduce_47, + 2, 115, :_reduce_48, + 2, 115, :_reduce_49, + 2, 115, :_reduce_50, + 2, 115, :_reduce_51, + 2, 115, :_reduce_52, + 2, 115, :_reduce_53, + 2, 115, :_reduce_54, + 2, 115, :_reduce_55, + 2, 115, :_reduce_56, + 2, 115, :_reduce_57, + 2, 115, :_reduce_58, + 2, 115, :_reduce_59, + 3, 115, :_reduce_60, + 3, 115, :_reduce_61, + 3, 115, :_reduce_62, + 3, 115, :_reduce_63, + 3, 115, :_reduce_64, + 3, 115, :_reduce_65, + 3, 115, :_reduce_66, + 3, 115, :_reduce_67, + 3, 115, :_reduce_68, + 3, 115, :_reduce_69, + 3, 115, :_reduce_70, + 3, 115, :_reduce_71, + 3, 115, :_reduce_72, + 3, 115, :_reduce_73, + 3, 115, :_reduce_74, + 3, 115, :_reduce_75, + 3, 115, :_reduce_76, + 3, 115, :_reduce_77, + 3, 115, :_reduce_78, + 3, 115, :_reduce_79, + 3, 115, :_reduce_80, + 3, 115, :_reduce_81, + 3, 115, :_reduce_82, + 3, 115, :_reduce_83, + 3, 115, :_reduce_84, + 3, 115, :_reduce_85, + 3, 115, :_reduce_86, + 3, 115, :_reduce_87, + 3, 115, :_reduce_88, + 3, 115, :_reduce_89, + 3, 115, :_reduce_90, + 3, 115, :_reduce_91, + 3, 115, :_reduce_92, + 3, 115, :_reduce_93, + 2, 126, :_reduce_94, + 5, 114, :_reduce_95, + 2, 114, :_reduce_96, + 1, 131, :_reduce_97, + 1, 131, :_reduce_98, + 1, 130, :_reduce_99, + 3, 130, :_reduce_100, + 1, 132, :_reduce_none, + 4, 132, :_reduce_102, + 4, 125, :_reduce_103, + 1, 112, :_reduce_104, + 1, 112, :_reduce_105, + 1, 112, :_reduce_106, + 1, 112, :_reduce_107, + 1, 112, :_reduce_108, + 1, 112, :_reduce_109, + 2, 112, :_reduce_110, + 2, 112, :_reduce_111, + 2, 137, :_reduce_112, + 2, 137, :_reduce_113, + 2, 137, :_reduce_114, + 1, 137, :_reduce_115, + 1, 137, :_reduce_116, + 3, 139, :_reduce_117, + 3, 134, :_reduce_118, + 0, 141, :_reduce_119, + 1, 141, :_reduce_120, + 3, 141, :_reduce_121, + 3, 141, :_reduce_122, + 4, 141, :_reduce_123, + 3, 141, :_reduce_124, + 1, 113, :_reduce_125, + 2, 113, :_reduce_126, + 1, 113, :_reduce_127, + 3, 124, :_reduce_128, + 2, 138, :_reduce_129, + 2, 138, :_reduce_130, + 3, 143, :_reduce_131, + 4, 142, :_reduce_132, + 6, 136, :_reduce_133, + 7, 136, :_reduce_134, + 6, 140, :_reduce_135, + 7, 140, :_reduce_136, + 3, 133, :_reduce_137, + 0, 144, :_reduce_138, + 1, 144, :_reduce_139, + 2, 144, :_reduce_140, + 3, 144, :_reduce_141, + 3, 144, :_reduce_142, + 4, 144, :_reduce_143, + 4, 144, :_reduce_144, + 2, 144, :_reduce_145, + 1, 145, :_reduce_146, + 3, 145, :_reduce_147, + 3, 118, :_reduce_148, + 4, 118, :_reduce_149, + 5, 118, :_reduce_150, + 3, 146, :_reduce_151, + 2, 119, :_reduce_152, + 3, 135, :_reduce_153, + 3, 121, :_reduce_154, + 2, 121, :_reduce_155, + 3, 121, :_reduce_156, + 4, 122, :_reduce_157, + 4, 122, :_reduce_158, + 1, 147, :_reduce_159, + 3, 147, :_reduce_160, + 2, 148, :_reduce_161, + 2, 148, :_reduce_162, + 3, 148, :_reduce_163, + 3, 148, :_reduce_164, + 5, 123, :_reduce_165, + 7, 123, :_reduce_166, + 1, 149, :_reduce_167, + 2, 149, :_reduce_168, + 3, 150, :_reduce_169, + 4, 150, :_reduce_170, 3, 150, :_reduce_171, - 2, 151, :_reduce_172, - 1, 152, :_reduce_173, - 2, 152, :_reduce_174, - 0, 153, :_reduce_175, - 2, 153, :_reduce_176, - 1, 154, :_reduce_177, - 2, 154, :_reduce_178, - 2, 116, :_reduce_179, - 3, 116, :_reduce_180, - 3, 116, :_reduce_181 ] + 3, 151, :_reduce_172, + 2, 152, :_reduce_173, + 1, 153, :_reduce_174, + 2, 153, :_reduce_175, + 0, 154, :_reduce_176, + 2, 154, :_reduce_177, + 1, 155, :_reduce_178, + 2, 155, :_reduce_179, + 2, 117, :_reduce_180, + 3, 117, :_reduce_181, + 3, 117, :_reduce_182 ] -racc_reduce_n = 182 +racc_reduce_n = 183 -racc_shift_n = 319 +racc_shift_n = 321 racc_token_table = { false => 0, @@ -1089,58 +1105,59 @@ racc_token_table = { :OUTDENT => 52, "?" => 53, :UMINUS => 54, - :NOT => 55, - "!" => 56, - "!!" => 57, - "~" => 58, - "++" => 59, - "--" => 60, - "*" => 61, - "/" => 62, - "%" => 63, - "+" => 64, - "-" => 65, - "<<" => 66, - ">>" => 67, - ">>>" => 68, - "&" => 69, - "|" => 70, - "^" => 71, - "<=" => 72, - "<" => 73, - ">" => 74, - ">=" => 75, - "==" => 76, - "!=" => 77, - :IS => 78, - :ISNT => 79, - "&&" => 80, - "||" => 81, - :AND => 82, - :OR => 83, - "-=" => 84, - "+=" => 85, - "/=" => 86, - "*=" => 87, - "%=" => 88, - "." => 89, - "||=" => 90, - "&&=" => 91, - "?=" => 92, - :ASSIGN => 93, - "->" => 94, - "=>" => 95, - "\n" => 96, - ";" => 97, - "," => 98, - "{" => 99, - "}" => 100, - "[" => 101, - "]" => 102, - "(" => 103, - ")" => 104 } + :UPLUS => 55, + :NOT => 56, + "!" => 57, + "!!" => 58, + "~" => 59, + "++" => 60, + "--" => 61, + "*" => 62, + "/" => 63, + "%" => 64, + "+" => 65, + "-" => 66, + "<<" => 67, + ">>" => 68, + ">>>" => 69, + "&" => 70, + "|" => 71, + "^" => 72, + "<=" => 73, + "<" => 74, + ">" => 75, + ">=" => 76, + "==" => 77, + "!=" => 78, + :IS => 79, + :ISNT => 80, + "&&" => 81, + "||" => 82, + :AND => 83, + :OR => 84, + "-=" => 85, + "+=" => 86, + "/=" => 87, + "*=" => 88, + "%=" => 89, + "." => 90, + "||=" => 91, + "&&=" => 92, + "?=" => 93, + :ASSIGN => 94, + "->" => 95, + "=>" => 96, + "\n" => 97, + ";" => 98, + "," => 99, + "{" => 100, + "}" => 101, + "[" => 102, + "]" => 103, + "(" => 104, + ")" => 105 } -racc_nt_base = 105 +racc_nt_base = 106 racc_use_result_var = true @@ -1216,6 +1233,7 @@ Racc_token_to_s_table = [ "OUTDENT", "\"?\"", "UMINUS", + "UPLUS", "NOT", "\"!\"", "\"!!\"", @@ -1627,7 +1645,7 @@ module_eval(<<'.,.,', 'grammar.y', 148) module_eval(<<'.,.,', 'grammar.y', 149) def _reduce_57(val, _values, result) - result = OpNode.new(val[1], val[0], nil, true) + result = OpNode.new(val[0], val[1]) result end .,., @@ -1639,9 +1657,9 @@ module_eval(<<'.,.,', 'grammar.y', 150) end .,., -module_eval(<<'.,.,', 'grammar.y', 152) +module_eval(<<'.,.,', 'grammar.y', 151) def _reduce_59(val, _values, result) - result = OpNode.new(val[1], val[0], val[2]) + result = OpNode.new(val[1], val[0], nil, true) result end .,., @@ -1660,7 +1678,7 @@ module_eval(<<'.,.,', 'grammar.y', 154) end .,., -module_eval(<<'.,.,', 'grammar.y', 156) +module_eval(<<'.,.,', 'grammar.y', 155) def _reduce_62(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1674,7 +1692,7 @@ module_eval(<<'.,.,', 'grammar.y', 157) end .,., -module_eval(<<'.,.,', 'grammar.y', 159) +module_eval(<<'.,.,', 'grammar.y', 158) def _reduce_64(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1695,7 +1713,7 @@ module_eval(<<'.,.,', 'grammar.y', 161) end .,., -module_eval(<<'.,.,', 'grammar.y', 163) +module_eval(<<'.,.,', 'grammar.y', 162) def _reduce_67(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1716,7 +1734,7 @@ module_eval(<<'.,.,', 'grammar.y', 165) end .,., -module_eval(<<'.,.,', 'grammar.y', 167) +module_eval(<<'.,.,', 'grammar.y', 166) def _reduce_70(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1744,7 +1762,7 @@ module_eval(<<'.,.,', 'grammar.y', 170) end .,., -module_eval(<<'.,.,', 'grammar.y', 172) +module_eval(<<'.,.,', 'grammar.y', 171) def _reduce_74(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1772,7 +1790,7 @@ module_eval(<<'.,.,', 'grammar.y', 175) end .,., -module_eval(<<'.,.,', 'grammar.y', 177) +module_eval(<<'.,.,', 'grammar.y', 176) def _reduce_78(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1807,7 +1825,7 @@ module_eval(<<'.,.,', 'grammar.y', 181) end .,., -module_eval(<<'.,.,', 'grammar.y', 183) +module_eval(<<'.,.,', 'grammar.y', 182) def _reduce_83(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1863,7 +1881,7 @@ module_eval(<<'.,.,', 'grammar.y', 190) end .,., -module_eval(<<'.,.,', 'grammar.y', 192) +module_eval(<<'.,.,', 'grammar.y', 191) def _reduce_91(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1877,74 +1895,74 @@ module_eval(<<'.,.,', 'grammar.y', 193) end .,., -module_eval(<<'.,.,', 'grammar.y', 198) +module_eval(<<'.,.,', 'grammar.y', 194) def _reduce_93(val, _values, result) - result = ExistenceNode.new(val[0]) + result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 204) +module_eval(<<'.,.,', 'grammar.y', 199) def _reduce_94(val, _values, result) - result = CodeNode.new(val[1], val[4], val[3]) + result = ExistenceNode.new(val[0]) result end .,., module_eval(<<'.,.,', 'grammar.y', 205) def _reduce_95(val, _values, result) - result = CodeNode.new([], val[1], val[0]) + result = CodeNode.new(val[1], val[4], val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 210) +module_eval(<<'.,.,', 'grammar.y', 206) def _reduce_96(val, _values, result) - result = :func + result = CodeNode.new([], val[1], val[0]) result end .,., module_eval(<<'.,.,', 'grammar.y', 211) def _reduce_97(val, _values, result) - result = :boundfunc + result = :func result end .,., -module_eval(<<'.,.,', 'grammar.y', 216) +module_eval(<<'.,.,', 'grammar.y', 212) def _reduce_98(val, _values, result) - result = val + result = :boundfunc result end .,., module_eval(<<'.,.,', 'grammar.y', 217) def _reduce_99(val, _values, result) + result = val + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 218) + def _reduce_100(val, _values, result) result = val[0] << val[2] result end .,., -# reduce 100 omitted +# reduce 101 omitted -module_eval(<<'.,.,', 'grammar.y', 223) - def _reduce_101(val, _values, result) - result = SplatNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 228) +module_eval(<<'.,.,', 'grammar.y', 224) def _reduce_102(val, _values, result) result = SplatNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 233) +module_eval(<<'.,.,', 'grammar.y', 229) def _reduce_103(val, _values, result) - result = ValueNode.new(val[0]) + result = SplatNode.new(val[0]) result end .,., @@ -1986,84 +2004,84 @@ module_eval(<<'.,.,', 'grammar.y', 238) module_eval(<<'.,.,', 'grammar.y', 239) def _reduce_109(val, _values, result) - result = val[0] << val[1] + result = ValueNode.new(val[0]) result end .,., module_eval(<<'.,.,', 'grammar.y', 240) def _reduce_110(val, _values, result) - result = ValueNode.new(val[0], [val[1]]) + result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 245) +module_eval(<<'.,.,', 'grammar.y', 241) def _reduce_111(val, _values, result) - result = AccessorNode.new(val[1]) + result = ValueNode.new(val[0], [val[1]]) result end .,., module_eval(<<'.,.,', 'grammar.y', 246) def _reduce_112(val, _values, result) - result = AccessorNode.new(val[1], :prototype) + result = AccessorNode.new(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 247) def _reduce_113(val, _values, result) - result = AccessorNode.new(val[1], :soak) + result = AccessorNode.new(val[1], :prototype) result end .,., module_eval(<<'.,.,', 'grammar.y', 248) def _reduce_114(val, _values, result) - result = val[0] + result = AccessorNode.new(val[1], :soak) result end .,., module_eval(<<'.,.,', 'grammar.y', 249) def _reduce_115(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 250) + def _reduce_116(val, _values, result) result = SliceNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 254) - def _reduce_116(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 255) + def _reduce_117(val, _values, result) result = IndexNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 259) - def _reduce_117(val, _values, result) - result = ObjectNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 264) +module_eval(<<'.,.,', 'grammar.y', 260) def _reduce_118(val, _values, result) - result = [] + result = ObjectNode.new(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 265) def _reduce_119(val, _values, result) - result = val + result = [] result end .,., module_eval(<<'.,.,', 'grammar.y', 266) def _reduce_120(val, _values, result) - result = val[0] << val[2] + result = val result end .,., @@ -2075,51 +2093,51 @@ module_eval(<<'.,.,', 'grammar.y', 267) end .,., -module_eval(<<'.,.,', 'grammar.y', 269) +module_eval(<<'.,.,', 'grammar.y', 268) def _reduce_122(val, _values, result) - result = val[0] << val[3] + result = val[0] << val[2] result end .,., module_eval(<<'.,.,', 'grammar.y', 270) def _reduce_123(val, _values, result) - result = val[1] + result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 275) +module_eval(<<'.,.,', 'grammar.y', 271) def _reduce_124(val, _values, result) - result = val[0] + result = val[1] result end .,., module_eval(<<'.,.,', 'grammar.y', 276) def _reduce_125(val, _values, result) - result = val[1].new_instance + result = val[0] result end .,., module_eval(<<'.,.,', 'grammar.y', 277) def _reduce_126(val, _values, result) + result = val[1].new_instance + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 278) + def _reduce_127(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 282) - def _reduce_127(val, _values, result) - result = ExtendsNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 287) +module_eval(<<'.,.,', 'grammar.y', 283) def _reduce_128(val, _values, result) - result = CallNode.new(val[0], val[1]) + result = ExtendsNode.new(val[0], val[2]) result end .,., @@ -2131,365 +2149,372 @@ module_eval(<<'.,.,', 'grammar.y', 288) end .,., -module_eval(<<'.,.,', 'grammar.y', 293) +module_eval(<<'.,.,', 'grammar.y', 289) def _reduce_130(val, _values, result) + result = CallNode.new(val[0], val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 294) + def _reduce_131(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'grammar.y', 299) - def _reduce_131(val, _values, result) + def _reduce_132(val, _values, result) result = CallNode.new(Value.new('super'), val[2]) result end .,., module_eval(<<'.,.,', 'grammar.y', 305) - def _reduce_132(val, _values, result) + def _reduce_133(val, _values, result) result = RangeNode.new(val[1], val[4]) result end .,., module_eval(<<'.,.,', 'grammar.y', 307) - def _reduce_133(val, _values, result) + def _reduce_134(val, _values, result) result = RangeNode.new(val[1], val[5], true) result end .,., module_eval(<<'.,.,', 'grammar.y', 313) - def _reduce_134(val, _values, result) + def _reduce_135(val, _values, result) result = RangeNode.new(val[1], val[4]) result end .,., module_eval(<<'.,.,', 'grammar.y', 315) - def _reduce_135(val, _values, result) + def _reduce_136(val, _values, result) result = RangeNode.new(val[1], val[5], true) result end .,., module_eval(<<'.,.,', 'grammar.y', 320) - def _reduce_136(val, _values, result) + def _reduce_137(val, _values, result) result = ArrayNode.new(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 325) - def _reduce_137(val, _values, result) + def _reduce_138(val, _values, result) result = [] result end .,., module_eval(<<'.,.,', 'grammar.y', 326) - def _reduce_138(val, _values, result) + def _reduce_139(val, _values, result) result = val result end .,., module_eval(<<'.,.,', 'grammar.y', 327) - def _reduce_139(val, _values, result) + def _reduce_140(val, _values, result) result = [val[1]] result end .,., module_eval(<<'.,.,', 'grammar.y', 328) - def _reduce_140(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 329) def _reduce_141(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 330) +module_eval(<<'.,.,', 'grammar.y', 329) def _reduce_142(val, _values, result) - result = val[0] << val[3] + result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 331) +module_eval(<<'.,.,', 'grammar.y', 330) def _reduce_143(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 332) +module_eval(<<'.,.,', 'grammar.y', 331) def _reduce_144(val, _values, result) - result = val[0] + result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 337) +module_eval(<<'.,.,', 'grammar.y', 332) def _reduce_145(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 338) +module_eval(<<'.,.,', 'grammar.y', 337) def _reduce_146(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 338) + def _reduce_147(val, _values, result) result = ([val[0]] << val[2]).flatten result end .,., module_eval(<<'.,.,', 'grammar.y', 343) - def _reduce_147(val, _values, result) + def _reduce_148(val, _values, result) result = TryNode.new(val[1], val[2][0], val[2][1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 344) - def _reduce_148(val, _values, result) + def _reduce_149(val, _values, result) result = TryNode.new(val[1], nil, nil, val[3]) result end .,., module_eval(<<'.,.,', 'grammar.y', 346) - def _reduce_149(val, _values, result) + def _reduce_150(val, _values, result) result = TryNode.new(val[1], val[2][0], val[2][1], val[4]) result end .,., module_eval(<<'.,.,', 'grammar.y', 351) - def _reduce_150(val, _values, result) + def _reduce_151(val, _values, result) result = [val[1], val[2]] result end .,., module_eval(<<'.,.,', 'grammar.y', 356) - def _reduce_151(val, _values, result) + def _reduce_152(val, _values, result) result = ThrowNode.new(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 361) - def _reduce_152(val, _values, result) + def _reduce_153(val, _values, result) result = ParentheticalNode.new(val[1], val[0].line) result end .,., module_eval(<<'.,.,', 'grammar.y', 366) - def _reduce_153(val, _values, result) + def _reduce_154(val, _values, result) result = WhileNode.new(val[1], val[2]) result end .,., module_eval(<<'.,.,', 'grammar.y', 367) - def _reduce_154(val, _values, result) + def _reduce_155(val, _values, result) result = WhileNode.new(val[1], nil) result end .,., module_eval(<<'.,.,', 'grammar.y', 368) - def _reduce_155(val, _values, result) + def _reduce_156(val, _values, result) result = WhileNode.new(val[2], Expressions.wrap(val[0])) result end .,., module_eval(<<'.,.,', 'grammar.y', 375) - def _reduce_156(val, _values, result) + def _reduce_157(val, _values, result) result = ForNode.new(val[0], val[3], val[2][0], val[2][1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 376) - def _reduce_157(val, _values, result) + def _reduce_158(val, _values, result) result = ForNode.new(val[3], val[2], val[1][0], val[1][1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 381) - def _reduce_158(val, _values, result) + def _reduce_159(val, _values, result) result = val result end .,., module_eval(<<'.,.,', 'grammar.y', 382) - def _reduce_159(val, _values, result) + def _reduce_160(val, _values, result) result = [val[0], val[2]] result end .,., module_eval(<<'.,.,', 'grammar.y', 387) - def _reduce_160(val, _values, result) + def _reduce_161(val, _values, result) result = {:source => val[1]} result end .,., module_eval(<<'.,.,', 'grammar.y', 388) - def _reduce_161(val, _values, result) + def _reduce_162(val, _values, result) result = {:source => val[1], :object => true} result end .,., module_eval(<<'.,.,', 'grammar.y', 390) - def _reduce_162(val, _values, result) + def _reduce_163(val, _values, result) result = val[0].merge(:filter => val[2]) result end .,., module_eval(<<'.,.,', 'grammar.y', 392) - def _reduce_163(val, _values, result) + def _reduce_164(val, _values, result) result = val[0].merge(:step => val[2]) result end .,., module_eval(<<'.,.,', 'grammar.y', 398) - def _reduce_164(val, _values, result) + def _reduce_165(val, _values, result) result = val[3].rewrite_condition(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 400) - def _reduce_165(val, _values, result) + def _reduce_166(val, _values, result) result = val[3].rewrite_condition(val[1]).add_else(val[5]) result end .,., module_eval(<<'.,.,', 'grammar.y', 405) - def _reduce_166(val, _values, result) + def _reduce_167(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'grammar.y', 406) - def _reduce_167(val, _values, result) + def _reduce_168(val, _values, result) result = val[0] << val[1] result end .,., module_eval(<<'.,.,', 'grammar.y', 411) - def _reduce_168(val, _values, result) - result = IfNode.new(val[1], val[2], nil, {:statement => true}) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 413) def _reduce_169(val, _values, result) result = IfNode.new(val[1], val[2], nil, {:statement => true}) result end .,., -module_eval(<<'.,.,', 'grammar.y', 414) +module_eval(<<'.,.,', 'grammar.y', 413) def _reduce_170(val, _values, result) + result = IfNode.new(val[1], val[2], nil, {:statement => true}) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 414) + def _reduce_171(val, _values, result) result = val[2].add_comment(val[0]) result end .,., module_eval(<<'.,.,', 'grammar.y', 419) - def _reduce_171(val, _values, result) + def _reduce_172(val, _values, result) result = IfNode.new(val[1], val[2]) result end .,., module_eval(<<'.,.,', 'grammar.y', 424) - def _reduce_172(val, _values, result) + def _reduce_173(val, _values, result) result = val[1].force_statement result end .,., module_eval(<<'.,.,', 'grammar.y', 429) - def _reduce_173(val, _values, result) + def _reduce_174(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'grammar.y', 430) - def _reduce_174(val, _values, result) + def _reduce_175(val, _values, result) result = val[0].add_else(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 435) - def _reduce_175(val, _values, result) + def _reduce_176(val, _values, result) result = nil result end .,., module_eval(<<'.,.,', 'grammar.y', 436) - def _reduce_176(val, _values, result) + def _reduce_177(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'grammar.y', 441) - def _reduce_177(val, _values, result) + def _reduce_178(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'grammar.y', 442) - def _reduce_178(val, _values, result) - result = val[0].add_else(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 447) def _reduce_179(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 448) +module_eval(<<'.,.,', 'grammar.y', 447) def _reduce_180(val, _values, result) + result = val[0].add_else(val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 448) + def _reduce_181(val, _values, result) result = IfNode.new(val[2], Expressions.wrap(val[0]), nil, {:statement => true}) result end .,., module_eval(<<'.,.,', 'grammar.y', 449) - def _reduce_181(val, _values, result) + def _reduce_182(val, _values, result) result = IfNode.new(val[2], Expressions.wrap(val[0]), nil, {:statement => true, :invert => true}) result end