dxopal 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.ignore +5 -0
  4. data/.nojekyll +4 -0
  5. data/CHANGELOG.md +90 -0
  6. data/DEVELOPMENT.md +57 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +39 -0
  9. data/README.md +22 -0
  10. data/Rakefile +66 -0
  11. data/TODO.md +278 -0
  12. data/build/dxopal.js +46590 -0
  13. data/build/dxopal.min.js +1 -0
  14. data/config.ru +39 -0
  15. data/doc/api/DXOpal.html +129 -0
  16. data/doc/api/DXOpal/Font.html +485 -0
  17. data/doc/api/DXOpal/Image.html +2533 -0
  18. data/doc/api/DXOpal/Input.html +1086 -0
  19. data/doc/api/DXOpal/Input/MouseCodes.html +146 -0
  20. data/doc/api/DXOpal/RemoteResource.html +641 -0
  21. data/doc/api/DXOpal/Sound.html +568 -0
  22. data/doc/api/DXOpal/SoundEffect.html +444 -0
  23. data/doc/api/DXOpal/SoundEffect/WaveTypes.html +130 -0
  24. data/doc/api/DXOpal/Sprite.html +1419 -0
  25. data/doc/api/DXOpal/Window.html +1915 -0
  26. data/doc/api/_index.html +228 -0
  27. data/doc/api/class_list.html +51 -0
  28. data/doc/api/css/common.css +1 -0
  29. data/doc/api/css/full_list.css +58 -0
  30. data/doc/api/css/style.css +492 -0
  31. data/doc/api/file.CHANGELOG.html +162 -0
  32. data/doc/api/file.README.html +124 -0
  33. data/doc/api/file_list.html +61 -0
  34. data/doc/api/frames.html +17 -0
  35. data/doc/api/index.html +124 -0
  36. data/doc/api/js/app.js +248 -0
  37. data/doc/api/js/full_list.js +216 -0
  38. data/doc/api/js/jquery.js +4 -0
  39. data/doc/api/method_list.html +939 -0
  40. data/doc/api/top-level-namespace.html +110 -0
  41. data/doc/en/index.html +93 -0
  42. data/doc/ja/index.html +92 -0
  43. data/dxopal.gemspec +29 -0
  44. data/exe/dxopal +44 -0
  45. data/index.html +56 -0
  46. data/opal/dxopal.rb +54 -0
  47. data/opal/dxopal/constants/colors.rb +16 -0
  48. data/opal/dxopal/font.rb +20 -0
  49. data/opal/dxopal/image.rb +301 -0
  50. data/opal/dxopal/input.rb +170 -0
  51. data/opal/dxopal/input/key_codes.rb +168 -0
  52. data/opal/dxopal/remote_resource.rb +65 -0
  53. data/opal/dxopal/sound.rb +53 -0
  54. data/opal/dxopal/sound_effect.rb +84 -0
  55. data/opal/dxopal/sprite.rb +94 -0
  56. data/opal/dxopal/sprite/collision_area.rb +288 -0
  57. data/opal/dxopal/sprite/collision_check.rb +106 -0
  58. data/opal/dxopal/sprite/collision_checker.rb +169 -0
  59. data/opal/dxopal/sprite/physics.rb +82 -0
  60. data/opal/dxopal/version.rb +3 -0
  61. data/opal/dxopal/window.rb +173 -0
  62. data/template/index.html +13 -0
  63. data/template/main.rb +9 -0
  64. metadata +191 -0
@@ -0,0 +1 @@
1
+ (function(undefined){if(typeof this.Opal!=="undefined"){console.warn("Opal already loaded. Loading twice can cause troubles, please fix your setup.");return this.Opal}var nil;var BasicObject;var _Object;var Module;var Class;function BasicObject_alloc(){}function Object_alloc(){}function Class_alloc(){}function Module_alloc(){}function NilClass_alloc(){}var Opal=this.Opal={};var bridges={};var TopScope=function(){};TopScope.prototype=Opal;Opal.constructor=TopScope;Opal.constants=[];Opal.global=this;Opal.config={missing_require_severity:"error",unsupported_features_severity:"warning"};var $hasOwn=Opal.hasOwnProperty;var $slice=Opal.slice=Array.prototype.slice;var nil_id=4;var unique_id=nil_id;Opal.uid=function(){unique_id+=2;return unique_id};Opal.cvars={};Opal.gvars={};Opal.exit=function(status){if(Opal.gvars.DEBUG)console.log("Exited with status "+status)};Opal.exceptions=[];Opal.pop_exception=function(){Opal.gvars["!"]=Opal.exceptions.pop()||nil};Opal.get=function(name){var constant=this[name];if(constant==null){return this.base.$const_get(name)}return constant};Opal.create_scope=function(base_scope,klass,id){var const_alloc=function(){};var const_scope=const_alloc.prototype=new base_scope.constructor;klass.$$scope=const_scope;klass.$$base_module=base_scope.base;const_scope.base=klass;const_scope.constructor=const_alloc;const_scope.constants=[];if(id){Opal.cdecl(base_scope,id,klass);const_alloc.displayName=id+"_scope_alloc"}};Opal.casgn=function(base_module,name,value){function update(klass,name){klass.$$name=name;for(name in klass.$$scope){var value=klass.$$scope[name];if(value.$$name===nil&&(value.$$is_class||value.$$is_module)){update(value,name)}}}var scope=base_module.$$scope;if(value.$$is_class||value.$$is_module){if(value.$$is_class||value.$$base_module===_Object){value.$$base_module=base_module}if(value.$$name===nil&&value.$$base_module.$$name!==nil){update(value,name)}}scope.constants.push(name);scope[name]=value;if(base_module.$$is_module&&base_module.$$dep){for(var i=0;i<base_module.$$dep.length;i++){var dep=base_module.$$dep[i];Opal.casgn(dep,name,value)}}return value};Opal.cdecl=function(base_scope,name,value){if((value.$$is_class||value.$$is_module)&&value.$$orig_scope==null){value.$$name=name;value.$$orig_scope=base_scope;value.$$base_module=base_scope.base;base_scope.constructor[name]=value}base_scope.constants.push(name);return base_scope[name]=value};Opal.klass=function(base,superclass,name,constructor){var klass,bridged,alloc;if(!base.$$is_class&&!base.$$is_module){base=base.$$class}if(typeof superclass==="function"){bridged=superclass;superclass=_Object}klass=base.$$scope[name];if(klass&&klass.$$orig_scope===base.$$scope){if(!klass.$$is_class){throw Opal.TypeError.$new(name+" is not a class")}if(superclass&&klass.$$super!==superclass){throw Opal.TypeError.$new("superclass mismatch for class "+name)}return klass}if(superclass==null){superclass=_Object}alloc=bridged||Opal.boot_class_alloc(name,constructor,superclass);klass=Opal.setup_class_object(name,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;Opal.create_scope(base.$$scope,klass,name);base[name]=klass;if(bridged){Opal.bridge(klass,alloc)}else{if(superclass!==_Object&&superclass!==BasicObject){Opal.donate_constants(superclass,klass)}if(superclass.$inherited){superclass.$inherited(klass)}}return klass};Opal.boot_class_alloc=function(name,constructor,superclass){if(superclass){var alloc_proxy=function(){};alloc_proxy.prototype=superclass.$$proto||superclass.prototype;constructor.prototype=new alloc_proxy}if(name){constructor.displayName=name+"_alloc"}constructor.prototype.constructor=constructor;return constructor};Opal.setup_class_object=function(name,alloc,superclass_name,superclass_alloc){var superclass_alloc_proxy=function(){};superclass_alloc_proxy.prototype=superclass_alloc.prototype;superclass_alloc_proxy.displayName=superclass_name;var singleton_class_alloc=function(){};singleton_class_alloc.prototype=new superclass_alloc_proxy;var klass=new singleton_class_alloc;klass.$$alloc=alloc;klass.$$name=name||nil;klass.$$id=Opal.uid();singleton_class_alloc.displayName="#<Class:"+(name||"#<Class:"+klass.$$id+">")+">";klass.$$proto=alloc.prototype;klass.$$proto.$$class=klass;klass.constructor=singleton_class_alloc;klass.$$is_class=true;klass.$$class=Class;klass.$$inc=[];return klass};Opal.module=function(base,name){var module;if(!base.$$is_class&&!base.$$is_module){base=base.$$class}if($hasOwn.call(base.$$scope,name)){module=base.$$scope[name];if(!module.$$is_module&&module!==_Object){throw Opal.TypeError.$new(name+" is not a module")}}else{module=Opal.module_allocate(Module);Opal.create_scope(base.$$scope,module,name)}return module};Opal.module_initialize=function(module,block){if(block!==nil){var block_self=block.$$s;block.$$s=null;block.call(module);block.$$s=block_self}return nil};Opal.module_allocate=function(superclass){var mtor=function(){};mtor.prototype=superclass.$$alloc.prototype;function module_constructor(){}module_constructor.prototype=new mtor;var module=new module_constructor;var module_prototype={};module.$$id=Opal.uid();module_constructor.displayName="#<Class:#<Module:"+module.$$id+">>";module.$$proto=module_prototype;module.constructor=module_constructor;module.$$is_module=true;module.$$class=Module;module.$$super=superclass;module.$$parent=superclass;module.$$inc=[];module.$$is_module=true;module.$$dep=[];module.$$name=nil;return module};Opal.get_singleton_class=function(object){if(object.$$meta){return object.$$meta}if(object.$$is_class||object.$$is_module){return Opal.build_class_singleton_class(object)}return Opal.build_object_singleton_class(object)};Opal.build_class_singleton_class=function(object){var alloc,superclass,klass;if(object.$$meta){return object.$$meta}alloc=object.constructor;superclass=object===BasicObject?Class:Opal.build_class_singleton_class(object.$$super);klass=Opal.setup_class_object(null,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;Opal.create_scope(object.$$scope,klass);klass.$$is_singleton=true;klass.$$singleton_of=object;return object.$$meta=klass};Opal.build_object_singleton_class=function(object){var superclass=object.$$class,name="#<Class:#<"+superclass.$$name+":"+superclass.$$id+">>";var alloc=Opal.boot_class_alloc(name,function(){},superclass);var klass=Opal.setup_class_object(name,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;klass.$$class=superclass.$$class;klass.$$scope=superclass.$$scope;klass.$$proto=object;klass.$$is_singleton=true;klass.$$singleton_of=object;return object.$$meta=klass};Opal.bridge_method=function(target,from,name,body){var ancestors,i,ancestor,length;ancestors=target.$$bridge.$ancestors();for(i=0,length=ancestors.length;i<length;i++){ancestor=ancestors[i];if($hasOwn.call(ancestor.$$proto,name)&&ancestor.$$proto[name]&&!ancestor.$$proto[name].$$donated&&!ancestor.$$proto[name].$$stub&&ancestor!==from){break}if(ancestor===from){target.prototype[name]=body;break}}};Opal._bridge=function(target,donator){var id,methods,method,i,bridged;if(typeof target==="function"){id=donator.$__id__();methods=donator.$instance_methods();for(i=methods.length-1;i>=0;i--){method="$"+methods[i];Opal.bridge_method(target,donator,method,donator.$$proto[method])}if(!bridges[id]){bridges[id]=[]}bridges[id].push(target)}else{bridged=bridges[target.$__id__()];if(bridged){for(i=bridged.length-1;i>=0;i--){Opal._bridge(bridged[i],donator)}bridges[donator.$__id__()]=bridged.slice()}}};Opal.append_features=function(module,klass){var iclass,donator,prototype,methods,id,i;for(i=klass.$$inc.length-1;i>=0;i--){if(klass.$$inc[i]===module){return}}klass.$$inc.push(module);module.$$dep.push(klass);Opal._bridge(klass,module);iclass={$$name:module.$$name,$$proto:module.$$proto,$$parent:klass.$$parent,$$module:module,$$iclass:true};klass.$$parent=iclass;donator=module.$$proto;prototype=klass.$$proto;methods=module.$instance_methods();for(i=methods.length-1;i>=0;i--){id="$"+methods[i];if(prototype.hasOwnProperty(id)&&!prototype[id].$$donated&&!prototype[id].$$stub){continue}prototype[id]=donator[id];prototype[id].$$donated=module}Opal.donate_constants(module,klass)};Opal.stubs={};Opal.bridge=function(klass,constructor){if(constructor.$$bridge){throw Opal.ArgumentError.$new("already bridged")}Opal.stub_subscribers.push(constructor.prototype);for(var method_name in Opal.stubs){if(!(method_name in constructor.prototype)){constructor.prototype[method_name]=Opal.stub_for(method_name)}}constructor.prototype.$$class=klass;constructor.$$bridge=klass;var ancestors=klass.$ancestors();for(var i=ancestors.length-1;i>=0;i--){Opal._bridge(constructor,ancestors[i])}for(var name in BasicObject_alloc.prototype){var method=BasicObject_alloc.prototype[method];if(method&&method.$$stub&&!(name in constructor.prototype)){constructor.prototype[name]=method}}return klass};Opal.donate_constants=function(source_mod,target_mod){var source_constants=source_mod.$$scope.constants,target_scope=target_mod.$$scope,target_constants=target_scope.constants;for(var i=0,length=source_constants.length;i<length;i++){target_constants.push(source_constants[i]);target_scope[source_constants[i]]=source_mod.$$scope[source_constants[i]]}};Opal.donate=function(module,jsid){var included_in=module.$$dep,body=module.$$proto[jsid],i,length,includee,dest,current,klass_includees,j,jj,current_owner_index,module_index;if(!included_in){return}for(i=0,length=included_in.length;i<length;i++){includee=included_in[i];dest=includee.$$proto;current=dest[jsid];if(dest.hasOwnProperty(jsid)&&!current.$$donated&&!current.$$stub){}else if(dest.hasOwnProperty(jsid)&&!current.$$stub){klass_includees=includee.$$inc;for(j=0,jj=klass_includees.length;j<jj;j++){if(klass_includees[j]===current.$$donated){current_owner_index=j}if(klass_includees[j]===module){module_index=j}}if(current_owner_index<=module_index){dest[jsid]=body;dest[jsid].$$donated=module}}else{dest[jsid]=body;dest[jsid].$$donated=module}if(includee.$$dep){Opal.donate(includee,jsid)}}};Opal.ancestors=function(module_or_class){var parent=module_or_class,result=[],modules;while(parent){result.push(parent);for(var i=0;i<parent.$$inc.length;i++){modules=Opal.ancestors(parent.$$inc[i]);for(var j=0;j<modules.length;j++){result.push(modules[j])}}if(parent.$$is_singleton&&parent.$$singleton_of.$$is_module){parent=parent.$$singleton_of.$$super}else{parent=parent.$$is_class?parent.$$super:null}}return result};Opal.add_stubs=function(stubs){var subscriber,subscribers=Opal.stub_subscribers,i,ilength=stubs.length,j,jlength=subscribers.length,method_name,stub;for(i=0;i<ilength;i++){method_name=stubs[i];Opal.stubs[method_name]=true;stub=Opal.stub_for(method_name);for(j=0;j<jlength;j++){subscriber=subscribers[j];if(!(method_name in subscriber)){subscriber[method_name]=stub}}}};Opal.stub_subscribers=[BasicObject_alloc.prototype];Opal.add_stub_for=function(prototype,stub){var method_missing_stub=Opal.stub_for(stub);prototype[stub]=method_missing_stub};Opal.stub_for=function(method_name){function method_missing_stub(){this.$method_missing.$$p=method_missing_stub.$$p;method_missing_stub.$$p=null;var args_ary=new Array(arguments.length);for(var i=0,l=args_ary.length;i<l;i++){args_ary[i]=arguments[i]}return this.$method_missing.apply(this,[method_name.slice(1)].concat(args_ary))}method_missing_stub.$$stub=true;return method_missing_stub};Opal.ac=function(actual,expected,object,meth){var inspect="";if(object.$$is_class||object.$$is_module){inspect+=object.$$name+"."}else{inspect+=object.$$class.$$name+"#"}inspect+=meth;throw Opal.ArgumentError.$new("["+inspect+"] wrong number of arguments("+actual+" for "+expected+")")};Opal.block_ac=function(actual,expected,context){var inspect="`block in "+context+"'";throw Opal.ArgumentError.$new(inspect+": wrong number of arguments ("+actual+" for "+expected+")")};Opal.find_super_dispatcher=function(obj,jsid,current_func,defcheck,defs){var dispatcher;if(defs){if(obj.$$is_class||obj.$$is_module){dispatcher=defs.$$super}else{dispatcher=obj.$$class.$$proto}}else{dispatcher=Opal.find_obj_super_dispatcher(obj,jsid,current_func)}dispatcher=dispatcher["$"+jsid];if(!defcheck&&dispatcher.$$stub&&Opal.Kernel.$method_missing===obj.$method_missing){throw Opal.NoMethodError.$new("super: no superclass method `"+jsid+"' for "+obj,jsid)}return dispatcher};Opal.find_iter_super_dispatcher=function(obj,jsid,current_func,defcheck,implicit){var call_jsid=jsid;if(!current_func){throw Opal.RuntimeError.$new("super called outside of method")}if(implicit&&current_func.$$define_meth){throw Opal.RuntimeError.$new("implicit argument passing of super from method defined by define_method() is not supported. Specify all arguments explicitly")}if(current_func.$$def){call_jsid=current_func.$$jsid}return Opal.find_super_dispatcher(obj,call_jsid,current_func,defcheck)};Opal.find_obj_super_dispatcher=function(obj,jsid,current_func){var klass=obj.$$meta||obj.$$class;klass=Opal.find_owning_class(klass,current_func);if(!klass){throw new Error("could not find current class for super()")}jsid="$"+jsid;return Opal.find_super_func(klass,jsid,current_func)};Opal.find_owning_class=function(klass,current_func){var owner=current_func.$$owner;while(klass){if(klass.$$iclass&&klass.$$module===current_func.$$donated){break}else if(klass.$$iclass&&klass.$$module===owner){break}else if(owner.$$is_singleton&&klass===owner.$$singleton_of.$$class){break}else if(klass===owner){break}klass=klass.$$parent}return klass};Opal.find_super_func=function(owning_klass,jsid,current_func){var klass=owning_klass.$$parent;while(klass){var working=klass.$$proto[jsid];if(working&&working!==current_func){break}klass=klass.$$parent}return klass.$$proto};Opal.ret=function(val){Opal.returner.$v=val;throw Opal.returner};Opal.brk=function(val,breaker){breaker.$v=val;throw breaker};Opal.new_brk=function(){return new Error("unexpected break")};Opal.yield1=function(block,arg){if(typeof block!=="function"){throw Opal.LocalJumpError.$new("no block given")}var has_mlhs=block.$$has_top_level_mlhs_arg,has_trailing_comma=block.$$has_trailing_comma_in_args;if(block.length>1||(has_mlhs||has_trailing_comma)&&block.length===1){arg=Opal.to_ary(arg)}if((block.length>1||has_trailing_comma&&block.length===1)&&arg.$$is_array){return block.apply(null,arg)}else{return block(arg)}};Opal.yieldX=function(block,args){if(typeof block!=="function"){throw Opal.LocalJumpError.$new("no block given")}if(block.length>1&&args.length===1){if(args[0].$$is_array){return block.apply(null,args[0])}}if(!args.$$is_array){var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i<l;i++){args_ary[i]=args[i]}return block.apply(null,args_ary)}return block.apply(null,args)};Opal.rescue=function(exception,candidates){for(var i=0;i<candidates.length;i++){var candidate=candidates[i];if(candidate.$$is_array){var result=Opal.rescue(exception,candidate);if(result){return result}}else if(candidate["$==="](exception)){return candidate}}return null};Opal.is_a=function(object,klass){if(object.$$meta===klass){return true}var i,length,ancestors=Opal.ancestors(object.$$class);for(i=0,length=ancestors.length;i<length;i++){if(ancestors[i]===klass){return true}}ancestors=Opal.ancestors(object.$$meta);for(i=0,length=ancestors.length;i<length;i++){if(ancestors[i]===klass){return true}}return false};Opal.to_hash=function(value){if(value.$$is_hash){return value}else if(value["$respond_to?"]("to_hash",true)){var hash=value.$to_hash();if(hash.$$is_hash){return hash}else{throw Opal.TypeError.$new("Can't convert "+value.$$class+" to Hash ("+value.$$class+"#to_hash gives "+hash.$$class+")")}}else{throw Opal.TypeError.$new("no implicit conversion of "+value.$$class+" into Hash")}};Opal.to_ary=function(value){if(value.$$is_array){return value}else if(value["$respond_to?"]("to_ary",true)){var ary=value.$to_ary();if(ary===nil){return[value]}else if(ary.$$is_array){return ary}else{throw Opal.TypeError.$new("Can't convert "+value.$$class+" to Array ("+value.$$class+"#to_ary gives "+ary.$$class+")")}}else{return[value]}};Opal.to_a=function(value){if(value.$$is_array){return value.slice()}else if(value["$respond_to?"]("to_a",true)){var ary=value.$to_a();if(ary===nil){return[value]}else if(ary.$$is_array){return ary}else{throw Opal.TypeError.$new("Can't convert "+value.$$class+" to Array ("+value.$$class+"#to_a gives "+ary.$$class+")")}}else{return[value]}};Opal.extract_kwargs=function(parameters){var kwargs=parameters[parameters.length-1];if(kwargs!=null&&kwargs["$respond_to?"]("to_hash",true)){Array.prototype.splice.call(parameters,parameters.length-1,1);return kwargs.$to_hash()}else{return Opal.hash2([],{})}};Opal.kwrestargs=function(given_args,used_args){var keys=[],map={},key=null,given_map=given_args.$$smap;for(key in given_map){if(!used_args[key]){keys.push(key);map[key]=given_map[key]}}return Opal.hash2(keys,map)};Opal.send=function(recv,mid){var args_ary=new Array(Math.max(arguments.length-2,0));for(var i=0,l=args_ary.length;i<l;i++){args_ary[i]=arguments[i+2]}var func=recv["$"+mid];if(func){return func.apply(recv,args_ary)}return recv.$method_missing.apply(recv,[mid].concat(args_ary))};Opal.block_send=function(recv,mid,block){var args_ary=new Array(Math.max(arguments.length-3,0));for(var i=0,l=args_ary.length;i<l;i++){args_ary[i]=arguments[i+3]}var func=recv["$"+mid];if(func){func.$$p=block;return func.apply(recv,args_ary)}return recv.$method_missing.apply(recv,[mid].concat(args_ary))};Opal.defn=function(obj,jsid,body){obj.$$proto[jsid]=body;body.$$owner=obj;if(obj.$$is_module){Opal.donate(obj,jsid);if(obj.$$module_function){Opal.defs(obj,jsid,body)}}if(obj.$__id__&&!obj.$__id__.$$stub){var bridged=bridges[obj.$__id__()];if(bridged){for(var i=bridged.length-1;i>=0;i--){Opal.bridge_method(bridged[i],obj,jsid,body)}}}var singleton_of=obj.$$singleton_of;if(obj.$method_added&&!obj.$method_added.$$stub&&!singleton_of){obj.$method_added(jsid.substr(1))}else if(singleton_of&&singleton_of.$singleton_method_added&&!singleton_of.$singleton_method_added.$$stub){singleton_of.$singleton_method_added(jsid.substr(1))}return nil};Opal.defs=function(obj,jsid,body){Opal.defn(Opal.get_singleton_class(obj),jsid,body)};Opal.def=function(obj,jsid,body){if(!obj.$$eval&&(obj.$$is_class||obj.$$is_module)){Opal.defn(obj,jsid,body)}else{Opal.defs(obj,jsid,body)}};Opal.rdef=function(obj,jsid){if(!$hasOwn.call(obj.$$proto,jsid)){throw Opal.NameError.$new("method '"+jsid.substr(1)+"' not defined in "+obj.$name())}delete obj.$$proto[jsid];if(obj.$$is_singleton){if(obj.$$proto.$singleton_method_removed&&!obj.$$proto.$singleton_method_removed.$$stub){obj.$$proto.$singleton_method_removed(jsid.substr(1))}}else{if(obj.$method_removed&&!obj.$method_removed.$$stub){obj.$method_removed(jsid.substr(1))}}};Opal.udef=function(obj,jsid){if(!obj.$$proto[jsid]||obj.$$proto[jsid].$$stub){throw Opal.NameError.$new("method '"+jsid.substr(1)+"' not defined in "+obj.$name())}Opal.add_stub_for(obj.$$proto,jsid);if(obj.$$is_singleton){if(obj.$$proto.$singleton_method_undefined&&!obj.$$proto.$singleton_method_undefined.$$stub){obj.$$proto.$singleton_method_undefined(jsid.substr(1))}}else{if(obj.$method_undefined&&!obj.$method_undefined.$$stub){obj.$method_undefined(jsid.substr(1))}}};Opal.alias=function(obj,name,old){var id="$"+name,old_id="$"+old,body=obj.$$proto["$"+old];if(obj.$$eval){return Opal.alias(Opal.get_singleton_class(obj),name,old)}if(typeof body!=="function"||body.$$stub){var ancestor=obj.$$super;while(typeof body!=="function"&&ancestor){body=ancestor[old_id];ancestor=ancestor.$$super}if(typeof body!=="function"||body.$$stub){throw Opal.NameError.$new("undefined method `"+old+"' for class `"+obj.$name()+"'")}}Opal.defn(obj,id,body);return obj};Opal.alias_native=function(obj,name,native_name){var id="$"+name,body=obj.$$proto[native_name];if(typeof body!=="function"||body.$$stub){throw Opal.NameError.$new("undefined native method `"+native_name+"' for class `"+obj.$name()+"'")}Opal.defn(obj,id,body);return obj};Opal.hash_init=function(hash){hash.$$smap={};hash.$$map={};hash.$$keys=[]};Opal.hash_clone=function(from_hash,to_hash){to_hash.$$none=from_hash.$$none;to_hash.$$proc=from_hash.$$proc;for(var i=0,keys=from_hash.$$keys,length=keys.length,key,value;i<length;i++){key=from_hash.$$keys[i];if(key.$$is_string){value=from_hash.$$smap[key]}else{value=key.value;key=key.key}Opal.hash_put(to_hash,key,value)}};Opal.hash_put=function(hash,key,value){if(key.$$is_string){if(!hash.$$smap.hasOwnProperty(key)){hash.$$keys.push(key)}hash.$$smap[key]=value;return}var key_hash=key.$hash(),bucket,last_bucket;if(!hash.$$map.hasOwnProperty(key_hash)){bucket={key:key,key_hash:key_hash,value:value};hash.$$keys.push(bucket);hash.$$map[key_hash]=bucket;return}bucket=hash.$$map[key_hash];while(bucket){if(key===bucket.key||key["$eql?"](bucket.key)){last_bucket=undefined;bucket.value=value;break}last_bucket=bucket;bucket=bucket.next}if(last_bucket){bucket={key:key,key_hash:key_hash,value:value};hash.$$keys.push(bucket);last_bucket.next=bucket}};Opal.hash_get=function(hash,key){if(key.$$is_string){if(hash.$$smap.hasOwnProperty(key)){return hash.$$smap[key]}return}var key_hash=key.$hash(),bucket;if(hash.$$map.hasOwnProperty(key_hash)){bucket=hash.$$map[key_hash];while(bucket){if(key===bucket.key||key["$eql?"](bucket.key)){return bucket.value}bucket=bucket.next}}};Opal.hash_delete=function(hash,key){var i,keys=hash.$$keys,length=keys.length,value;if(key.$$is_string){if(!hash.$$smap.hasOwnProperty(key)){return}for(i=0;i<length;i++){if(keys[i]===key){keys.splice(i,1);break}}value=hash.$$smap[key];delete hash.$$smap[key];return value}var key_hash=key.$hash();if(!hash.$$map.hasOwnProperty(key_hash)){return}var bucket=hash.$$map[key_hash],last_bucket;while(bucket){if(key===bucket.key||key["$eql?"](bucket.key)){value=bucket.value;for(i=0;i<length;i++){if(keys[i]===bucket){keys.splice(i,1);break}}if(last_bucket&&bucket.next){last_bucket.next=bucket.next}else if(last_bucket){delete last_bucket.next}else if(bucket.next){hash.$$map[key_hash]=bucket.next}else{delete hash.$$map[key_hash]}return value}last_bucket=bucket;bucket=bucket.next}};Opal.hash_rehash=function(hash){for(var i=0,length=hash.$$keys.length,key_hash,bucket,last_bucket;i<length;i++){if(hash.$$keys[i].$$is_string){continue}key_hash=hash.$$keys[i].key.$hash();if(key_hash===hash.$$keys[i].key_hash){continue}bucket=hash.$$map[hash.$$keys[i].key_hash];last_bucket=undefined;while(bucket){if(bucket===hash.$$keys[i]){if(last_bucket&&bucket.next){last_bucket.next=bucket.next}else if(last_bucket){delete last_bucket.next}else if(bucket.next){hash.$$map[hash.$$keys[i].key_hash]=bucket.next}else{delete hash.$$map[hash.$$keys[i].key_hash]}break}last_bucket=bucket;bucket=bucket.next}hash.$$keys[i].key_hash=key_hash;if(!hash.$$map.hasOwnProperty(key_hash)){hash.$$map[key_hash]=hash.$$keys[i];continue}bucket=hash.$$map[key_hash];last_bucket=undefined;while(bucket){if(bucket===hash.$$keys[i]){last_bucket=undefined;break}last_bucket=bucket;bucket=bucket.next}if(last_bucket){last_bucket.next=hash.$$keys[i]}}};Opal.hash=function(){var arguments_length=arguments.length,args,hash,i,length,key,value;if(arguments_length===1&&arguments[0].$$is_hash){return arguments[0]}hash=new Opal.Hash.$$alloc;Opal.hash_init(hash);if(arguments_length===1&&arguments[0].$$is_array){args=arguments[0];length=args.length;for(i=0;i<length;i++){if(args[i].length!==2){throw Opal.ArgumentError.$new("value not of length 2: "+args[i].$inspect())}key=args[i][0];value=args[i][1];Opal.hash_put(hash,key,value)}return hash}if(arguments_length===1){args=arguments[0];for(key in args){if(args.hasOwnProperty(key)){value=args[key];Opal.hash_put(hash,key,value)}}return hash}if(arguments_length%2!==0){throw Opal.ArgumentError.$new("odd number of arguments for Hash")}for(i=0;i<arguments_length;i+=2){key=arguments[i];value=arguments[i+1];Opal.hash_put(hash,key,value)}return hash};Opal.hash2=function(keys,smap){var hash=new Opal.Hash.$$alloc;hash.$$smap=smap;hash.$$map={};hash.$$keys=keys;return hash};Opal.range=function(first,last,exc){var range=new Opal.Range.$$alloc;range.begin=first;range.end=last;range.exclude=exc;return range};Opal.ivar=function(name){if(name==="constructor"||name==="displayName"||name==="__count__"||name==="__noSuchMethod__"||name==="__parent__"||name==="__proto__"||name==="hasOwnProperty"||name==="valueOf"){return name+"$"}return name};Opal.modules={};Opal.loaded_features=["corelib/runtime"];Opal.current_dir=".";Opal.require_table={"corelib/runtime":true};Opal.normalize=function(path){var parts,part,new_parts=[],SEPARATOR="/";if(Opal.current_dir!=="."){path=Opal.current_dir.replace(/\/*$/,"/")+path}path=path.replace(/\.(rb|opal|js)$/,"");parts=path.split(SEPARATOR);for(var i=0,ii=parts.length;i<ii;i++){part=parts[i];if(part==="")continue;part===".."?new_parts.pop():new_parts.push(part)}return new_parts.join(SEPARATOR)};Opal.loaded=function(paths){var i,l,path;for(i=0,l=paths.length;i<l;i++){path=Opal.normalize(paths[i]);if(Opal.require_table[path]){return}Opal.loaded_features.push(path);Opal.require_table[path]=true}};Opal.load=function(path){path=Opal.normalize(path);Opal.loaded([path]);var module=Opal.modules[path];if(module){module(Opal)}else{var severity=Opal.config.missing_require_severity;var message="cannot load such file -- "+path;if(severity==="error"){Opal.LoadError?Opal.LoadError.$new(message):function(){throw message}()}else if(severity==="warning"){console.warn("WARNING: LoadError: "+message)}}return true};Opal.require=function(path){path=Opal.normalize(path);if(Opal.require_table[path]){return false}return Opal.load(path)};Opal.boot_class_alloc("BasicObject",BasicObject_alloc);Opal.boot_class_alloc("Object",Object_alloc,BasicObject_alloc);Opal.boot_class_alloc("Module",Module_alloc,Object_alloc);Opal.boot_class_alloc("Class",Class_alloc,Module_alloc);Opal.BasicObject=BasicObject=Opal.setup_class_object("BasicObject",BasicObject_alloc,"Class",Class_alloc);Opal.Object=_Object=Opal.setup_class_object("Object",Object_alloc,"BasicObject",BasicObject.constructor);Opal.Module=Module=Opal.setup_class_object("Module",Module_alloc,"Object",_Object.constructor);Opal.Class=Class=Opal.setup_class_object("Class",Class_alloc,"Module",Module.constructor);Opal.constants.push("BasicObject");Opal.constants.push("Object");Opal.constants.push("Module");Opal.constants.push("Class");BasicObject.$$class=Class;_Object.$$class=Class;Module.$$class=Class;Class.$$class=Class;BasicObject.$$super=null;_Object.$$super=BasicObject;Module.$$super=_Object;Class.$$super=Module;BasicObject.$$parent=null;_Object.$$parent=BasicObject;Module.$$parent=_Object;Class.$$parent=Module;Opal.base=_Object;BasicObject.$$scope=_Object.$$scope=Opal;BasicObject.$$orig_scope=_Object.$$orig_scope=Opal;Module.$$scope=_Object.$$scope;Module.$$orig_scope=_Object.$$orig_scope;Class.$$scope=_Object.$$scope;Class.$$orig_scope=_Object.$$orig_scope;_Object.$$proto.toString=function(){return this.$to_s()};_Object.$$proto.$require=Opal.require;Opal.top=new _Object.$$alloc;Opal.klass(_Object,_Object,"NilClass",NilClass_alloc);nil=Opal.nil=new NilClass_alloc;nil.$$id=nil_id;nil.call=nil.apply=function(){throw Opal.LocalJumpError.$new("no block given")};Opal.breaker=new Error("unexpected break (old)");Opal.returner=new Error("unexpected return");TypeError.$$super=Error}).call(this);if(typeof global!=="undefined"){global.Opal=this.Opal;Opal.global=global}if(typeof window!=="undefined"){window.Opal=this.Opal;Opal.global=window}Opal.loaded(["corelib/runtime"]);Opal.modules["corelib/helpers"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$new","$class","$===","$respond_to?","$raise","$type_error","$__send__","$coerce_to","$nil?","$<=>","$inspect","$coerce_to!","$!=","$[]","$upcase"]);return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13;Opal.defs(self,"$bridge",TMP_1=function $$bridge(klass,constructor){var self=this;return Opal.bridge(klass,constructor)},TMP_1.$$arity=2);Opal.defs(self,"$type_error",TMP_2=function $$type_error(object,type,method,coerced){var $a,$b,self=this;if(method==null){method=nil}if(coerced==null){coerced=nil}if(($a=($b=method!==false&&method!==nil&&method!=null)?coerced:method)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("TypeError").$new("can't convert "+object.$class()+" into "+type+" ("+object.$class()+"#"+method+" gives "+coerced.$class())}else{return $scope.get("TypeError").$new("no implicit conversion of "+object.$class()+" into "+type)}},TMP_2.$$arity=-3);Opal.defs(self,"$coerce_to",TMP_3=function $$coerce_to(object,type,method){var $a,self=this;if(($a=type["$==="](object))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return object}if(($a=object["$respond_to?"](method))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise(self.$type_error(object,type))}return object.$__send__(method)},TMP_3.$$arity=3);Opal.defs(self,"$coerce_to!",TMP_4=function(object,type,method){var $a,self=this,coerced=nil;coerced=self.$coerce_to(object,type,method);if(($a=type["$==="](coerced))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},TMP_4.$$arity=3);Opal.defs(self,"$coerce_to?",TMP_5=function(object,type,method){var $a,self=this,coerced=nil;if(($a=object["$respond_to?"](method))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return nil}coerced=self.$coerce_to(object,type,method);if(($a=coerced["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}if(($a=type["$==="](coerced))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},TMP_5.$$arity=3);Opal.defs(self,"$try_convert",TMP_6=function $$try_convert(object,type,method){var $a,self=this;if(($a=type["$==="](object))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return object}if(($a=object["$respond_to?"](method))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return object.$__send__(method)}else{return nil}},TMP_6.$$arity=3);Opal.defs(self,"$compare",TMP_7=function $$compare(a,b){var $a,self=this,compare=nil;compare=a["$<=>"](b);if(($a=compare===nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"comparison of "+a.$class()+" with "+b.$class()+" failed")}return compare},TMP_7.$$arity=2);Opal.defs(self,"$destructure",TMP_8=function $$destructure(args){var self=this;if(args.length==1){return args[0]}else if(args.$$is_array){return args}else{var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i<l;i++){args_ary[i]=args[i]}return args_ary}},TMP_8.$$arity=1);Opal.defs(self,"$respond_to?",TMP_9=function(obj,method){var self=this;if(obj==null||!obj.$$class){return false}return obj["$respond_to?"](method)},TMP_9.$$arity=2);Opal.defs(self,"$inspect",TMP_10=function $$inspect(obj){var self=this;if(obj===undefined){return"undefined"}else if(obj===null){return"null"}else if(!obj.$$class){return obj.toString()}else{return obj.$inspect()}},TMP_10.$$arity=1);Opal.defs(self,"$instance_variable_name!",TMP_11=function(name){var $a,self=this;name=$scope.get("Opal")["$coerce_to!"](name,$scope.get("String"),"to_str");if(($a=/^@[a-zA-Z_][a-zA-Z0-9_]*?$/.test(name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError").$new("'"+name+"' is not allowed as an instance variable name",name))}return name},TMP_11.$$arity=1);Opal.defs(self,"$const_name!",TMP_12=function(const_name){var $a,self=this;const_name=$scope.get("Opal")["$coerce_to!"](const_name,$scope.get("String"),"to_str");if(($a=const_name["$[]"](0)["$!="](const_name["$[]"](0).$upcase()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("NameError"),"wrong constant name "+const_name)}return const_name},TMP_12.$$arity=1);Opal.defs(self,"$pristine",TMP_13=function $$pristine(owner_class,$a_rest){var self=this,method_names;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}method_names=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){method_names[$arg_idx-1]=arguments[$arg_idx]}var method_name;for(var i=method_names.length-1;i>=0;i--){method_name=method_names[i];owner_class.$$proto["$"+method_name].$$pristine=true}return nil},TMP_13.$$arity=-2)}($scope.base)};Opal.modules["corelib/module"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$range=Opal.range,$hash2=Opal.hash2;Opal.add_stubs(["$===","$raise","$equal?","$<","$>","$nil?","$attr_reader","$attr_writer","$coerce_to!","$new","$const_name!","$=~","$inject","$const_get","$split","$const_missing","$==","$!","$start_with?","$to_proc","$lambda","$bind","$call","$class","$append_features","$included","$name","$cover?","$size","$merge","$compile","$proc","$to_s","$__id__","$constants","$include?"]);return function($base,$super){function $Module(){}var self=$Module=$klass($base,$super,"Module",$Module);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_22,TMP_23,TMP_24,TMP_25,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_41,TMP_42,TMP_43,TMP_44,TMP_45,TMP_46,TMP_47,TMP_48,TMP_49;Opal.defs(self,"$allocate",TMP_1=function $$allocate(){var self=this;var module;module=Opal.module_allocate(self);Opal.create_scope(Opal.Module.$$scope,module,null);return module},TMP_1.$$arity=0);Opal.defn(self,"$initialize",TMP_2=function $$initialize(){var self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;return Opal.module_initialize(self,block)},TMP_2.$$arity=0);Opal.defn(self,"$===",TMP_3=function(object){var $a,self=this;if(($a=object==null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return false}return Opal.is_a(object,self)},TMP_3.$$arity=1);Opal.defn(self,"$<",TMP_4=function(other){var $a,self=this;if(($a=$scope.get("Module")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"compared with non class/module")}var working=self,ancestors,i,length;if(working===other){return false}for(i=0,ancestors=Opal.ancestors(self),length=ancestors.length;i<length;i++){if(ancestors[i]===other){return true}}for(i=0,ancestors=Opal.ancestors(other),length=ancestors.length;i<length;i++){if(ancestors[i]===self){return false}}return nil},TMP_4.$$arity=1);Opal.defn(self,"$<=",TMP_5=function(other){var $a,self=this;return($a=self["$equal?"](other))!==false&&$a!==nil&&$a!=null?$a:$rb_lt(self,other)},TMP_5.$$arity=1);Opal.defn(self,"$>",TMP_6=function(other){var $a,self=this;if(($a=$scope.get("Module")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"compared with non class/module")}return $rb_lt(other,self)},TMP_6.$$arity=1);Opal.defn(self,"$>=",TMP_7=function(other){var $a,self=this;return($a=self["$equal?"](other))!==false&&$a!==nil&&$a!=null?$a:$rb_gt(self,other)},TMP_7.$$arity=1);Opal.defn(self,"$<=>",TMP_8=function(other){var $a,self=this,lt=nil;if(self===other){return 0}if(($a=$scope.get("Module")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return nil}lt=$rb_lt(self,other);if(($a=lt["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}if(lt!==false&&lt!==nil&&lt!=null){return-1}else{return 1}},TMP_8.$$arity=1);Opal.defn(self,"$alias_method",TMP_9=function $$alias_method(newname,oldname){var self=this;Opal.alias(self,newname,oldname);return self},TMP_9.$$arity=2);Opal.defn(self,"$alias_native",TMP_10=function $$alias_native(mid,jsid){var self=this;if(jsid==null){jsid=mid}Opal.alias_native(self,mid,jsid);return self},TMP_10.$$arity=-2);Opal.defn(self,"$ancestors",TMP_11=function $$ancestors(){var self=this;return Opal.ancestors(self)},TMP_11.$$arity=0);Opal.defn(self,"$append_features",TMP_12=function $$append_features(klass){var self=this;Opal.append_features(self,klass);return self},TMP_12.$$arity=1);Opal.defn(self,"$attr_accessor",TMP_13=function $$attr_accessor($a_rest){var $b,$c,self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}($b=self).$attr_reader.apply($b,Opal.to_a(names));return($c=self).$attr_writer.apply($c,Opal.to_a(names))},TMP_13.$$arity=-1);Opal.alias(self,"attr","attr_accessor");Opal.defn(self,"$attr_reader",TMP_14=function $$attr_reader($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}var proto=self.$$proto;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name,ivar=Opal.ivar(name);var body=function(ivar){return function(){if(this[ivar]==null){return nil}else{return this[ivar]}}}(ivar);proto[ivar]=nil;body.$$parameters=[];body.$$arity=0;if(self.$$is_singleton){proto.constructor.prototype[id]=body}else{Opal.defn(self,id,body)}}return nil},TMP_14.$$arity=-1);Opal.defn(self,"$attr_writer",TMP_15=function $$attr_writer($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}var proto=self.$$proto;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name+"=",ivar=Opal.ivar(name);var body=function(ivar){return function(value){return this[ivar]=value}}(ivar);body.$$parameters=[["req"]];body.$$arity=1;proto[ivar]=nil;if(self.$$is_singleton){proto.constructor.prototype[id]=body}else{Opal.defn(self,id,body)}}return nil},TMP_15.$$arity=-1);Opal.defn(self,"$autoload",TMP_16=function $$autoload(const$,path){var self=this;var autoloaders;if(!(autoloaders=self.$$autoload)){autoloaders=self.$$autoload={}}autoloaders[const$]=path;return nil},TMP_16.$$arity=2);Opal.defn(self,"$class_variable_get",TMP_17=function $$class_variable_get(name){var $a,self=this;name=$scope.get("Opal")["$coerce_to!"](name,$scope.get("String"),"to_str");if(($a=name.length<3||name.slice(0,2)!=="@@")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("NameError").$new("class vars should start with @@",name))}var value=Opal.cvars[name.slice(2)];(function(){if(($a=value==null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("NameError").$new("uninitialized class variable @@a in",name))}else{return nil}return nil})();return value},TMP_17.$$arity=1);Opal.defn(self,"$class_variable_set",TMP_18=function $$class_variable_set(name,value){var $a,self=this;name=$scope.get("Opal")["$coerce_to!"](name,$scope.get("String"),"to_str");if(($a=name.length<3||name.slice(0,2)!=="@@")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("NameError"))}Opal.cvars[name.slice(2)]=value;return value},TMP_18.$$arity=2);Opal.defn(self,"$constants",TMP_19=function $$constants(){var self=this;return self.$$scope.constants.slice(0)},TMP_19.$$arity=0);Opal.defn(self,"$const_defined?",TMP_20=function(name,inherit){var $a,self=this;if(inherit==null){inherit=true}name=$scope.get("Opal")["$const_name!"](name);if(($a=name["$=~"]($scope.get("Opal").$$scope.get("CONST_NAME_REGEXP")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError").$new("wrong constant name "+name,name))}var scopes=[self.$$scope];if(inherit||self===Opal.Object){var parent=self.$$super;while(parent!==Opal.BasicObject){scopes.push(parent.$$scope);parent=parent.$$super}}for(var i=0,length=scopes.length;i<length;i++){if(scopes[i].hasOwnProperty(name)){return true}}return false},TMP_20.$$arity=-2);Opal.defn(self,"$const_get",TMP_22=function $$const_get(name,inherit){var $a,$b,TMP_21,self=this;if(inherit==null){inherit=true}name=$scope.get("Opal")["$const_name!"](name);if(name.indexOf("::")===0&&name!=="::"){name=name.slice(2)}if(($a=name.indexOf("::")!=-1&&name!="::")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=name.$split("::")).$inject,$a.$$p=(TMP_21=function(o,c){var self=TMP_21.$$s||this;if(o==null)o=nil;if(c==null)c=nil;return o.$const_get(c)},TMP_21.$$s=self,TMP_21.$$arity=2,TMP_21),$a).call($b,self)}if(($a=name["$=~"]($scope.get("Opal").$$scope.get("CONST_NAME_REGEXP")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError").$new("wrong constant name "+name,name))}var scopes=[self.$$scope];if(inherit||self==Opal.Object){var parent=self.$$super;while(parent!==Opal.BasicObject){scopes.push(parent.$$scope);parent=parent.$$super}}for(var i=0,length=scopes.length;i<length;i++){if(scopes[i].hasOwnProperty(name)){return scopes[i][name]}}return self.$const_missing(name)},TMP_22.$$arity=-2);Opal.defn(self,"$const_missing",TMP_23=function $$const_missing(name){var self=this,full_const_name=nil;if(self.$$autoload){var file=self.$$autoload[name];if(file){self.$require(file);return self.$const_get(name)}}full_const_name=function(){if(self["$=="]($scope.get("Object"))){return name}else{return""+self+"::"+name}return nil}();return self.$raise($scope.get("NameError").$new("uninitialized constant "+full_const_name,name))},TMP_23.$$arity=1);Opal.defn(self,"$const_set",TMP_24=function $$const_set(name,value){var $a,$b,self=this;name=$scope.get("Opal")["$const_name!"](name);if(($a=($b=name["$=~"]($scope.get("Opal").$$scope.get("CONST_NAME_REGEXP"))["$!"]())!==false&&$b!==nil&&$b!=null?$b:name["$start_with?"]("::"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("NameError").$new("wrong constant name "+name,name))}Opal.casgn(self,name,value);return value},TMP_24.$$arity=2);Opal.defn(self,"$define_method",TMP_25=function $$define_method(name,method){var $a,$b,$c,TMP_26,self=this,$iter=TMP_25.$$p,block=$iter||nil,$case=nil;TMP_25.$$p=null;if(($a=method===undefined&&block===nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"tried to create a Proc object without a block")}($a=block)!==false&&$a!==nil&&$a!=null?$a:block=function(){$case=method;if($scope.get("Proc")["$==="]($case)){return method}else if($scope.get("Method")["$==="]($case)){return method.$to_proc().$$unbound}else if($scope.get("UnboundMethod")["$==="]($case)){return($b=($c=self).$lambda,$b.$$p=(TMP_26=function($d_rest){var self=TMP_26.$$s||this,args,$e,bound=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}bound=method.$bind(self);return($e=bound).$call.apply($e,Opal.to_a(args))},TMP_26.$$s=self,TMP_26.$$arity=-1,TMP_26),$b).call($c)}else{return self.$raise($scope.get("TypeError"),"wrong argument type "+block.$class()+" (expected Proc/Method)")}}();var id="$"+name;block.$$jsid=name;block.$$s=null;block.$$def=block;block.$$define_meth=true;Opal.defn(self,id,block);return name},TMP_25.$$arity=-2);Opal.defn(self,"$remove_method",TMP_27=function $$remove_method($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=names.length;i<length;i++){Opal.rdef(self,"$"+names[i])}return self},TMP_27.$$arity=-1);Opal.defn(self,"$singleton_class?",TMP_28=function(){var self=this;return!!self.$$is_singleton},TMP_28.$$arity=0);Opal.defn(self,"$include",TMP_29=function $$include($a_rest){var self=this,mods;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}mods=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){mods[$arg_idx-0]=arguments[$arg_idx]}for(var i=mods.length-1;i>=0;i--){var mod=mods[i];if(mod===self){continue}if(!mod.$$is_module){self.$raise($scope.get("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(self);mod.$included(self)}return self},TMP_29.$$arity=-1);Opal.defn(self,"$included_modules",TMP_30=function $$included_modules(){var self=this;var results;var module_chain=function(klass){var included=[];for(var i=0;i!=klass.$$inc.length;i++){var mod_or_class=klass.$$inc[i];included.push(mod_or_class);included=included.concat(module_chain(mod_or_class))}return included};results=module_chain(self);if(self.$$is_class){for(var cls=self;cls;cls=cls.$$super){results=results.concat(module_chain(cls))}}return results},TMP_30.$$arity=0);Opal.defn(self,"$include?",TMP_31=function(mod){var self=this;for(var cls=self;cls;cls=cls.$$super){for(var i=0;i!=cls.$$inc.length;i++){var mod2=cls.$$inc[i];if(mod===mod2){return true}}}return false},TMP_31.$$arity=1);Opal.defn(self,"$instance_method",TMP_32=function $$instance_method(name){var self=this;var meth=self.$$proto["$"+name];if(!meth||meth.$$stub){self.$raise($scope.get("NameError").$new("undefined method `"+name+"' for class `"+self.$name()+"'",name))}return $scope.get("UnboundMethod").$new(self,meth,name)},TMP_32.$$arity=1);Opal.defn(self,"$instance_methods",TMP_33=function $$instance_methods(include_super){var self=this;if(include_super==null){include_super=true}var methods=[],proto=self.$$proto;for(var prop in proto){if(prop.charAt(0)!=="$"){continue}if(typeof proto[prop]!=="function"){continue}if(proto[prop].$$stub){continue}if(!self.$$is_module){if(self!==Opal.BasicObject&&proto[prop]===Opal.BasicObject.$$proto[prop]){continue}if(!include_super&&!proto.hasOwnProperty(prop)){continue}if(!include_super&&proto[prop].$$donated){continue}}methods.push(prop.substr(1))}return methods},TMP_33.$$arity=-1);Opal.defn(self,"$included",TMP_34=function $$included(mod){var self=this;return nil},TMP_34.$$arity=1);Opal.defn(self,"$extended",TMP_35=function $$extended(mod){var self=this;return nil},TMP_35.$$arity=1);Opal.defn(self,"$method_added",TMP_36=function $$method_added($a_rest){var self=this;return nil},TMP_36.$$arity=-1);Opal.defn(self,"$method_removed",TMP_37=function $$method_removed($a_rest){var self=this;return nil},TMP_37.$$arity=-1);Opal.defn(self,"$method_undefined",TMP_38=function $$method_undefined($a_rest){var self=this;return nil},TMP_38.$$arity=-1);Opal.defn(self,"$module_eval",TMP_39=function $$module_eval($a_rest){var $b,$c,TMP_40,self=this,args,$iter=TMP_39.$$p,block=$iter||nil,string=nil,file=nil,_lineno=nil,default_eval_options=nil,compiling_options=nil,compiled=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_39.$$p=null;if(($b=($c=block["$nil?"](),$c!==false&&$c!==nil&&$c!=null?!!Opal.compile:$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=$range(1,3,false)["$cover?"](args.$size()))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{$scope.get("Kernel").$raise($scope.get("ArgumentError"),"wrong number of arguments (0 for 1..3)")}$b=Opal.to_a(args),string=$b[0]==null?nil:$b[0],file=$b[1]==null?nil:$b[1],_lineno=$b[2]==null?nil:$b[2],$b;default_eval_options=$hash2(["file","eval"],{file:($b=file)!==false&&$b!==nil&&$b!=null?$b:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);compiled=$scope.get("Opal").$compile(string,compiling_options);block=($b=($c=$scope.get("Kernel")).$proc,$b.$$p=(TMP_40=function(){var self=TMP_40.$$s||this;return function(self){return eval(compiled)}(self)},TMP_40.$$s=self,TMP_40.$$arity=0,TMP_40),$b).call($c)}else if(($b=$rb_gt(args.$size(),0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$scope.get("Kernel").$raise($scope.get("ArgumentError"),"wrong number of arguments ("+args.$size()+" for 0)")}var old=block.$$s,result;block.$$s=null;result=block.apply(self,[self]);block.$$s=old;return result},TMP_39.$$arity=-1);Opal.alias(self,"class_eval","module_eval");Opal.defn(self,"$module_exec",TMP_41=function $$module_exec($a_rest){var self=this,args,$iter=TMP_41.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_41.$$p=null;if(block===nil){self.$raise($scope.get("LocalJumpError"),"no block given")}var block_self=block.$$s,result;block.$$s=null;result=block.apply(self,args);block.$$s=block_self;return result},TMP_41.$$arity=-1);Opal.alias(self,"class_exec","module_exec");Opal.defn(self,"$method_defined?",TMP_42=function(method){var self=this;var body=self.$$proto["$"+method];return!!body&&!body.$$stub},TMP_42.$$arity=1);Opal.defn(self,"$module_function",TMP_43=function $$module_function($a_rest){var self=this,methods;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}methods=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){methods[$arg_idx-0]=arguments[$arg_idx]}if(methods.length===0){self.$$module_function=true}else{for(var i=0,length=methods.length;i<length;i++){var meth=methods[i],id="$"+meth,func=self.$$proto[id];Opal.defs(self,id,func)}}return self},TMP_43.$$arity=-1);Opal.defn(self,"$name",TMP_44=function $$name(){var self=this;if(self.$$full_name){return self.$$full_name}var result=[],base=self;while(base){if(base.$$name===nil){return result.length===0?nil:result.join("::")}result.unshift(base.$$name);base=base.$$base_module;if(base===Opal.Object){break}}if(result.length===0){return nil}return self.$$full_name=result.join("::")},TMP_44.$$arity=0);Opal.defn(self,"$remove_class_variable",TMP_45=function $$remove_class_variable($a_rest){var self=this;return nil},TMP_45.$$arity=-1);Opal.defn(self,"$remove_const",TMP_46=function $$remove_const(name){var self=this;var old=self.$$scope[name];delete self.$$scope[name];return old},TMP_46.$$arity=1);Opal.defn(self,"$to_s",TMP_47=function $$to_s(){var $a,self=this;return($a=Opal.Module.$name.call(self))!==false&&$a!==nil&&$a!=null?$a:"#<"+(self.$$is_module?"Module":"Class")+":0x"+self.$__id__().$to_s(16)+">"},TMP_47.$$arity=0);Opal.defn(self,"$undef_method",TMP_48=function $$undef_method($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=names.length;i<length;i++){Opal.udef(self,"$"+names[i])}return self},TMP_48.$$arity=-1);return(Opal.defn(self,"$instance_variables",TMP_49=function $$instance_variables(){var self=this,consts=nil;consts=self.$constants();var result=[];for(var name in self){if(self.hasOwnProperty(name)&&name.charAt(0)!=="$"&&name!=="constructor"&&!consts["$include?"](name)){result.push("@"+name)}}return result},TMP_49.$$arity=0),nil)&&"instance_variables"}($scope.base,null)};Opal.modules["corelib/class"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$allocate","$name","$to_s"]);self.$require("corelib/module");return function($base,$super){function $Class(){}var self=$Class=$klass($base,$super,"Class",$Class);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6;Opal.defs(self,"$new",TMP_1=function(superclass){var self=this,$iter=TMP_1.$$p,block=$iter||nil;if(superclass==null){superclass=$scope.get("Object")}TMP_1.$$p=null;if(!superclass.$$is_class){throw Opal.TypeError.$new("superclass must be a Class")}var alloc=Opal.boot_class_alloc(null,function(){},superclass);var klass=Opal.setup_class_object(null,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;Opal.create_scope(superclass.$$scope,klass);superclass.$inherited(klass);Opal.module_initialize(klass,block);return klass},TMP_1.$$arity=-1);Opal.defn(self,"$allocate",TMP_2=function $$allocate(){var self=this;var obj=new self.$$alloc;obj.$$id=Opal.uid();return obj},TMP_2.$$arity=0);Opal.defn(self,"$inherited",TMP_3=function $$inherited(cls){var self=this;return nil},TMP_3.$$arity=1);Opal.defn(self,"$new",TMP_4=function($a_rest){var self=this,args,$iter=TMP_4.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_4.$$p=null;var obj=self.$allocate();obj.$initialize.$$p=block;obj.$initialize.apply(obj,args);return obj},TMP_4.$$arity=-1);Opal.defn(self,"$superclass",TMP_5=function $$superclass(){var self=this;return self.$$super||nil},TMP_5.$$arity=0);return(Opal.defn(self,"$to_s",TMP_6=function $$to_s(){var $a,$b,self=this,$iter=TMP_6.$$p,$yield=$iter||nil;TMP_6.$$p=null;var singleton_of=self.$$singleton_of;if(singleton_of&&(singleton_of.$$is_class||singleton_of.$$is_module)){return"#<Class:"+singleton_of.$name()+">"}else if(singleton_of){return"#<Class:#<"+singleton_of.$$class.$name()+":0x"+singleton_of.$$id.$to_s(16)+">>"}return($a=($b=self,Opal.find_super_dispatcher(self,"to_s",TMP_6,false)),$a.$$p=null,$a).call($b)},TMP_6.$$arity=0),nil)&&"to_s"}($scope.base,null)};Opal.modules["corelib/basic_object"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$range=Opal.range,$hash2=Opal.hash2;Opal.add_stubs(["$==","$!","$nil?","$cover?","$size","$raise","$merge","$compile","$proc","$>","$new","$inspect"]);return function($base,$super){function $BasicObject(){}var self=$BasicObject=$klass($base,$super,"BasicObject",$BasicObject);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14;Opal.defn(self,"$initialize",TMP_1=function $$initialize($a_rest){var self=this;return nil},TMP_1.$$arity=-1);Opal.defn(self,"$==",TMP_2=function(other){var self=this;return self===other},TMP_2.$$arity=1);Opal.defn(self,"$eql?",TMP_3=function(other){var self=this;return self["$=="](other)},TMP_3.$$arity=1);Opal.alias(self,"equal?","==");Opal.defn(self,"$__id__",TMP_4=function $$__id__(){var self=this;return self.$$id||(self.$$id=Opal.uid())},TMP_4.$$arity=0);Opal.defn(self,"$__send__",TMP_5=function $$__send__(symbol,$a_rest){var self=this,args,$iter=TMP_5.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_5.$$p=null;var func=self["$"+symbol];if(func){if(block!==nil){func.$$p=block}return func.apply(self,args)}if(block!==nil){self.$method_missing.$$p=block}return self.$method_missing.apply(self,[symbol].concat(args))},TMP_5.$$arity=-2);Opal.defn(self,"$!",TMP_6=function(){var self=this;return false},TMP_6.$$arity=0);Opal.defn(self,"$!=",TMP_7=function(other){var self=this;return self["$=="](other)["$!"]()},TMP_7.$$arity=1);Opal.alias(self,"equal?","==");Opal.defn(self,"$instance_eval",TMP_8=function $$instance_eval($a_rest){var $b,$c,TMP_9,self=this,args,$iter=TMP_8.$$p,block=$iter||nil,string=nil,file=nil,_lineno=nil,default_eval_options=nil,compiling_options=nil,compiled=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_8.$$p=null;if(($b=($c=block["$nil?"](),$c!==false&&$c!==nil&&$c!=null?!!Opal.compile:$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=$range(1,3,false)["$cover?"](args.$size()))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{$scope.get("Kernel").$raise($scope.get("ArgumentError"),"wrong number of arguments (0 for 1..3)")}$b=Opal.to_a(args),string=$b[0]==null?nil:$b[0],file=$b[1]==null?nil:$b[1],_lineno=$b[2]==null?nil:$b[2],$b;default_eval_options=$hash2(["file","eval"],{file:($b=file)!==false&&$b!==nil&&$b!=null?$b:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);compiled=$scope.get("Opal").$compile(string,compiling_options);block=($b=($c=$scope.get("Kernel")).$proc,$b.$$p=(TMP_9=function(){var self=TMP_9.$$s||this;return function(self){return eval(compiled)}(self)},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9),$b).call($c)}else if(($b=$rb_gt(args.$size(),0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$scope.get("Kernel").$raise($scope.get("ArgumentError"),"wrong number of arguments ("+args.$size()+" for 0)")}var old=block.$$s,result;block.$$s=null;if(self.$$is_class||self.$$is_module){self.$$eval=true;try{result=block.call(self,self)}finally{self.$$eval=false}}else{result=block.call(self,self)}block.$$s=old;return result},TMP_8.$$arity=-1);Opal.defn(self,"$instance_exec",TMP_10=function $$instance_exec($a_rest){var self=this,args,$iter=TMP_10.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_10.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{$scope.get("Kernel").$raise($scope.get("ArgumentError"),"no block given")}var block_self=block.$$s,result;block.$$s=null;if(self.$$is_class||self.$$is_module){self.$$eval=true;try{result=block.apply(self,args)}finally{self.$$eval=false}}else{result=block.apply(self,args)}block.$$s=block_self;return result},TMP_10.$$arity=-1);Opal.defn(self,"$singleton_method_added",TMP_11=function $$singleton_method_added($a_rest){var self=this;return nil},TMP_11.$$arity=-1);Opal.defn(self,"$singleton_method_removed",TMP_12=function $$singleton_method_removed($a_rest){var self=this;return nil},TMP_12.$$arity=-1);Opal.defn(self,"$singleton_method_undefined",TMP_13=function $$singleton_method_undefined($a_rest){var self=this;return nil},TMP_13.$$arity=-1);return(Opal.defn(self,"$method_missing",TMP_14=function $$method_missing(symbol,$a_rest){var $b,self=this,args,$iter=TMP_14.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_14.$$p=null;return $scope.get("Kernel").$raise($scope.get("NoMethodError").$new(function(){if(($b=self.$inspect&&!self.$inspect.$$stub)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"undefined method `"+symbol+"' for "+self.$inspect()+":"+self.$$class}else{return"undefined method `"+symbol+"' for "+self.$$class}return nil}(),symbol))},TMP_14.$$arity=-2),nil)&&"method_missing"}($scope.base,null)};Opal.modules["corelib/kernel"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$gvars=Opal.gvars,$hash2=Opal.hash2,$klass=Opal.klass;Opal.add_stubs(["$raise","$new","$inspect","$!","$=~","$==","$object_id","$class","$coerce_to?","$<<","$allocate","$copy_instance_variables","$copy_singleton_methods","$initialize_clone","$initialize_copy","$define_method","$to_proc","$singleton_class","$initialize_dup","$for","$>","$size","$pop","$call","$append_features","$extended","$length","$respond_to?","$[]","$nil?","$to_a","$to_int","$fetch","$Integer","$Float","$to_ary","$to_str","$coerce_to","$to_s","$__id__","$instance_variable_name!","$coerce_to!","$===","$enum_for","$print","$format","$puts","$each","$<=","$empty?","$exception","$kind_of?","$respond_to_missing?","$try_convert!","$expand_path","$join","$start_with?","$sym","$arg","$open","$include"]);(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41,TMP_42,TMP_43,TMP_45,TMP_46,TMP_47,TMP_48,TMP_49,TMP_50,TMP_51,TMP_52,TMP_53,TMP_54,TMP_55,TMP_56,TMP_57,TMP_58,TMP_59,TMP_60,TMP_61,TMP_62,TMP_63;Opal.defn(self,"$method_missing",TMP_1=function $$method_missing(symbol,$a_rest){var self=this,args,$iter=TMP_1.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_1.$$p=null;return self.$raise($scope.get("NoMethodError").$new("undefined method `"+symbol+"' for "+self.$inspect(),symbol,args))},TMP_1.$$arity=-2);Opal.defn(self,"$=~",TMP_2=function(obj){var self=this;return false},TMP_2.$$arity=1);Opal.defn(self,"$!~",TMP_3=function(obj){var self=this;return self["$=~"](obj)["$!"]()},TMP_3.$$arity=1);Opal.defn(self,"$===",TMP_4=function(other){var $a,self=this;return($a=self.$object_id()["$=="](other.$object_id()))!==false&&$a!==nil&&$a!=null?$a:self["$=="](other)},TMP_4.$$arity=1);Opal.defn(self,"$<=>",TMP_5=function(other){var self=this;self.$$comparable=true;var x=self["$=="](other);if(x&&x!==nil){return 0}return nil},TMP_5.$$arity=1);Opal.defn(self,"$method",TMP_6=function $$method(name){var self=this;var meth=self["$"+name];if(!meth||meth.$$stub){self.$raise($scope.get("NameError").$new("undefined method `"+name+"' for class `"+self.$class()+"'",name))}return $scope.get("Method").$new(self,meth,name)},TMP_6.$$arity=1);Opal.defn(self,"$methods",TMP_7=function $$methods(all){var self=this;if(all==null){all=true}var methods=[];for(var key in self){if(key[0]=="$"&&typeof self[key]==="function"){if(all==false||all===nil){if(!Opal.hasOwnProperty.call(self,key)){continue}}if(self[key].$$stub===undefined){methods.push(key.substr(1))}}}return methods},TMP_7.$$arity=-1);Opal.alias(self,"public_methods","methods");Opal.defn(self,"$Array",TMP_8=function $$Array(object){var self=this;var coerced;if(object===nil){return[]}if(object.$$is_array){return object}coerced=$scope.get("Opal")["$coerce_to?"](object,$scope.get("Array"),"to_ary");if(coerced!==nil){return coerced}coerced=$scope.get("Opal")["$coerce_to?"](object,$scope.get("Array"),"to_a");if(coerced!==nil){return coerced}return[object]},TMP_8.$$arity=1);Opal.defn(self,"$at_exit",TMP_9=function $$at_exit(){var $a,self=this,$iter=TMP_9.$$p,block=$iter||nil;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;TMP_9.$$p=null;($a=$gvars.__at_exit__)!==false&&$a!==nil&&$a!=null?$a:$gvars.__at_exit__=[];return $gvars.__at_exit__["$<<"](block)},TMP_9.$$arity=0);Opal.defn(self,"$caller",TMP_10=function $$caller(){var self=this;return[]},TMP_10.$$arity=0);Opal.defn(self,"$class",TMP_11=function(){var self=this;return self.$$class},TMP_11.$$arity=0);Opal.defn(self,"$copy_instance_variables",TMP_12=function $$copy_instance_variables(other){var self=this;for(var name in other){if(other.hasOwnProperty(name)&&name.charAt(0)!=="$"){self[name]=other[name]}}},TMP_12.$$arity=1);Opal.defn(self,"$copy_singleton_methods",TMP_13=function $$copy_singleton_methods(other){var self=this;var name;if(other.hasOwnProperty("$$meta")){var other_singleton_class_proto=Opal.get_singleton_class(other).$$proto;var self_singleton_class_proto=Opal.get_singleton_class(self).$$proto;for(name in other_singleton_class_proto){if(name.charAt(0)==="$"&&other_singleton_class_proto.hasOwnProperty(name)){self_singleton_class_proto[name]=other_singleton_class_proto[name]}}}for(name in other){if(name.charAt(0)==="$"&&name.charAt(1)!=="$"&&other.hasOwnProperty(name)){self[name]=other[name]}}},TMP_13.$$arity=1);Opal.defn(self,"$clone",TMP_14=function $$clone(){var self=this,copy=nil;copy=self.$class().$allocate();copy.$copy_instance_variables(self);copy.$copy_singleton_methods(self);copy.$initialize_clone(self);return copy},TMP_14.$$arity=0);Opal.defn(self,"$initialize_clone",TMP_15=function $$initialize_clone(other){var self=this;return self.$initialize_copy(other)},TMP_15.$$arity=1);Opal.defn(self,"$define_singleton_method",TMP_16=function $$define_singleton_method(name,method){var $a,$b,self=this,$iter=TMP_16.$$p,block=$iter||nil;TMP_16.$$p=null;return($a=($b=self.$singleton_class()).$define_method,$a.$$p=block.$to_proc(),$a).call($b,name,method)},TMP_16.$$arity=-2);Opal.defn(self,"$dup",TMP_17=function $$dup(){var self=this,copy=nil;copy=self.$class().$allocate();copy.$copy_instance_variables(self);copy.$initialize_dup(self);return copy},TMP_17.$$arity=0);Opal.defn(self,"$initialize_dup",TMP_18=function $$initialize_dup(other){var self=this;return self.$initialize_copy(other)},TMP_18.$$arity=1);Opal.defn(self,"$enum_for",TMP_19=function $$enum_for(method,$a_rest){var $b,$c,self=this,args,$iter=TMP_19.$$p,block=$iter||nil;if(method==null){method="each"}var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_19.$$p=null;return($b=($c=$scope.get("Enumerator")).$for,$b.$$p=block.$to_proc(),$b).apply($c,[self,method].concat(Opal.to_a(args)))},TMP_19.$$arity=-1);Opal.alias(self,"to_enum","enum_for");Opal.defn(self,"$equal?",TMP_20=function(other){var self=this;return self===other},TMP_20.$$arity=1);Opal.defn(self,"$exit",TMP_21=function $$exit(status){var $a,$b,self=this,block=nil;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;if(status==null){status=true}($a=$gvars.__at_exit__)!==false&&$a!==nil&&$a!=null?$a:$gvars.__at_exit__=[];while(($b=$rb_gt($gvars.__at_exit__.$size(),0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){block=$gvars.__at_exit__.$pop();block.$call()}if(($a=status===true)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){status=0}Opal.exit(status);return nil},TMP_21.$$arity=-1);Opal.defn(self,"$extend",TMP_22=function $$extend($a_rest){var self=this,mods;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}mods=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){mods[$arg_idx-0]=arguments[$arg_idx]}var singleton=self.$singleton_class();for(var i=mods.length-1;i>=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise($scope.get("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(singleton);mod.$extended(self)}return self},TMP_22.$$arity=-1);Opal.defn(self,"$format",TMP_23=function $$format(format_string,$a_rest){var $b,$c,self=this,args,ary=nil;if($gvars.DEBUG==null)$gvars.DEBUG=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(($b=($c=args.$length()["$=="](1))?args["$[]"](0)["$respond_to?"]("to_ary"):args.$length()["$=="](1))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){ary=$scope.get("Opal")["$coerce_to?"](args["$[]"](0),$scope.get("Array"),"to_ary");if(($b=ary["$nil?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{args=ary.$to_a()}}var result="",begin_slice=0,end_slice,i,len=format_string.length,arg,str,exponent,width,precision,tmp_num,hash_parameter_key,closing_brace_char,base_number,base_prefix,base_neg_zero_regex,base_neg_zero_digit,next_arg,seq_arg_num=1,pos_arg_num=0,flags,FNONE=0,FSHARP=1,FMINUS=2,FPLUS=4,FZERO=8,FSPACE=16,FWIDTH=32,FPREC=64,FPREC0=128;function CHECK_FOR_FLAGS(){if(flags&FWIDTH){self.$raise($scope.get("ArgumentError"),"flag after width")}if(flags&FPREC0){self.$raise($scope.get("ArgumentError"),"flag after precision")}}function CHECK_FOR_WIDTH(){if(flags&FWIDTH){self.$raise($scope.get("ArgumentError"),"width given twice")}if(flags&FPREC0){self.$raise($scope.get("ArgumentError"),"width after precision")}}function GET_NTH_ARG(num){if(num>=args.length){self.$raise($scope.get("ArgumentError"),"too few arguments")}return args[num]}function GET_NEXT_ARG(){switch(pos_arg_num){case-1:self.$raise($scope.get("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with numbered");case-2:self.$raise($scope.get("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with named")}pos_arg_num=seq_arg_num++;return GET_NTH_ARG(pos_arg_num-1)}function GET_POS_ARG(num){if(pos_arg_num>0){self.$raise($scope.get("ArgumentError"),"numbered("+num+") after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-2){self.$raise($scope.get("ArgumentError"),"numbered("+num+") after named")}if(num<1){self.$raise($scope.get("ArgumentError"),"invalid index - "+num+"$")}pos_arg_num=-1;return GET_NTH_ARG(num-1)}function GET_ARG(){return next_arg===undefined?GET_NEXT_ARG():next_arg}function READ_NUM(label){var num,str="";for(;;i++){if(i===len){self.$raise($scope.get("ArgumentError"),"malformed format string - %*[0-9]")}if(format_string.charCodeAt(i)<48||format_string.charCodeAt(i)>57){i--;num=parseInt(str,10)||0;if(num>2147483647){self.$raise($scope.get("ArgumentError"),""+label+" too big")}return num}str+=format_string.charAt(i)}}function READ_NUM_AFTER_ASTER(label){var arg,num=READ_NUM(label);if(format_string.charAt(i+1)==="$"){i++;arg=GET_POS_ARG(num)}else{arg=GET_NEXT_ARG()}return arg.$to_int()}for(i=format_string.indexOf("%");i!==-1;i=format_string.indexOf("%",i)){str=undefined;flags=FNONE;width=-1;precision=-1;next_arg=undefined;end_slice=i;i++;switch(format_string.charAt(i)){case"%":begin_slice=i;case"":case"\n":case"\0":i++;continue}format_sequence:for(;i<len;i++){switch(format_string.charAt(i)){case" ":CHECK_FOR_FLAGS();flags|=FSPACE;continue format_sequence;case"#":CHECK_FOR_FLAGS();flags|=FSHARP;continue format_sequence;case"+":CHECK_FOR_FLAGS();flags|=FPLUS;continue format_sequence;case"-":CHECK_FOR_FLAGS();flags|=FMINUS;continue format_sequence;case"0":CHECK_FOR_FLAGS();flags|=FZERO;continue format_sequence;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":tmp_num=READ_NUM("width");if(format_string.charAt(i+1)==="$"){if(i+2===len){str="%";i++;break format_sequence}if(next_arg!==undefined){self.$raise($scope.get("ArgumentError"),"value given twice - %"+tmp_num+"$")}next_arg=GET_POS_ARG(tmp_num);i++}else{CHECK_FOR_WIDTH();flags|=FWIDTH;width=tmp_num}continue format_sequence;case"<":case"{":closing_brace_char=format_string.charAt(i)==="<"?">":"}";hash_parameter_key="";i++;for(;;i++){if(i===len){self.$raise($scope.get("ArgumentError"),"malformed name - unmatched parenthesis")}if(format_string.charAt(i)===closing_brace_char){if(pos_arg_num>0){self.$raise($scope.get("ArgumentError"),"named "+hash_parameter_key+" after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-1){self.$raise($scope.get("ArgumentError"),"named "+hash_parameter_key+" after numbered")}pos_arg_num=-2;if(args[0]===undefined||!args[0].$$is_hash){self.$raise($scope.get("ArgumentError"),"one hash required")}next_arg=args[0].$fetch(hash_parameter_key);if(closing_brace_char===">"){continue format_sequence}else{str=next_arg.toString();if(precision!==-1){str=str.slice(0,precision)}if(flags&FMINUS){while(str.length<width){str=str+" "}}else{while(str.length<width){str=" "+str}}break format_sequence}}hash_parameter_key+=format_string.charAt(i)}case"*":i++;CHECK_FOR_WIDTH();flags|=FWIDTH;width=READ_NUM_AFTER_ASTER("width");if(width<0){flags|=FMINUS;width=-width}continue format_sequence;case".":if(flags&FPREC0){self.$raise($scope.get("ArgumentError"),"precision given twice")}flags|=FPREC|FPREC0;precision=0;i++;if(format_string.charAt(i)==="*"){i++;precision=READ_NUM_AFTER_ASTER("precision");if(precision<0){flags&=~FPREC}continue format_sequence}precision=READ_NUM("precision");continue format_sequence;case"d":case"i":case"u":arg=self.$Integer(GET_ARG());if(arg>=0){str=arg.toString();while(str.length<precision){str="0"+str}if(flags&FMINUS){if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length<width){str=str+" "}}else{if(flags&FZERO&&precision===-1){while(str.length<width-(flags&FPLUS||flags&FSPACE?1:0)){str="0"+str}if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}}else{if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length<width){str=" "+str}}}}else{str=(-arg).toString();while(str.length<precision){str="0"+str}if(flags&FMINUS){str="-"+str;while(str.length<width){str=str+" "}}else{if(flags&FZERO&&precision===-1){while(str.length<width-1){str="0"+str}str="-"+str}else{str="-"+str;while(str.length<width){str=" "+str}}}}break format_sequence;case"b":case"B":case"o":case"x":case"X":switch(format_string.charAt(i)){case"b":case"B":base_number=2;base_prefix="0b";base_neg_zero_regex=/^1+/;base_neg_zero_digit="1";break;case"o":base_number=8;base_prefix="0";base_neg_zero_regex=/^3?7+/;base_neg_zero_digit="7";break;case"x":case"X":base_number=16;base_prefix="0x";base_neg_zero_regex=/^f+/;base_neg_zero_digit="f";break}arg=self.$Integer(GET_ARG());if(arg>=0){str=arg.toString(base_number);while(str.length<precision){str="0"+str}if(flags&FMINUS){if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}if(flags&FSHARP&&arg!==0){str=base_prefix+str}while(str.length<width){str=str+" "}}else{if(flags&FZERO&&precision===-1){while(str.length<width-(flags&FPLUS||flags&FSPACE?1:0)-(flags&FSHARP&&arg!==0?base_prefix.length:0)){str="0"+str}if(flags&FSHARP&&arg!==0){str=base_prefix+str}if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}}else{if(flags&FSHARP&&arg!==0){str=base_prefix+str}if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length<width){str=" "+str}}}}else{if(flags&FPLUS||flags&FSPACE){str=(-arg).toString(base_number);while(str.length<precision){str="0"+str}if(flags&FMINUS){if(flags&FSHARP){str=base_prefix+str}str="-"+str;while(str.length<width){str=str+" "}}else{if(flags&FZERO&&precision===-1){while(str.length<width-1-(flags&FSHARP?2:0)){str="0"+str}if(flags&FSHARP){str=base_prefix+str}str="-"+str}else{if(flags&FSHARP){str=base_prefix+str}str="-"+str;while(str.length<width){str=" "+str}}}}else{str=(arg>>>0).toString(base_number).replace(base_neg_zero_regex,base_neg_zero_digit);while(str.length<precision-2){str=base_neg_zero_digit+str}if(flags&FMINUS){str=".."+str;if(flags&FSHARP){str=base_prefix+str}while(str.length<width){str=str+" "}}else{if(flags&FZERO&&precision===-1){while(str.length<width-2-(flags&FSHARP?base_prefix.length:0)){str=base_neg_zero_digit+str}str=".."+str;if(flags&FSHARP){str=base_prefix+str}}else{str=".."+str;if(flags&FSHARP){str=base_prefix+str}while(str.length<width){str=" "+str}}}}}if(format_string.charAt(i)===format_string.charAt(i).toUpperCase()){str=str.toUpperCase()}break format_sequence;case"f":case"e":case"E":case"g":case"G":arg=self.$Float(GET_ARG());if(arg>=0||isNaN(arg)){if(arg===Infinity){str="Inf"}else{switch(format_string.charAt(i)){case"f":str=arg.toFixed(precision===-1?6:precision);break;case"e":case"E":str=arg.toExponential(precision===-1?6:precision);break;case"g":case"G":str=arg.toExponential();exponent=parseInt(str.split("e")[1],10);if(!(exponent<-4||exponent>=(precision===-1?6:precision))){str=arg.toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length<width){str=str+" "}}else{if(flags&FZERO&&arg!==Infinity&&!isNaN(arg)){while(str.length<width-(flags&FPLUS||flags&FSPACE?1:0)){str="0"+str}if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}}else{if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length<width){str=" "+str}}}}else{if(arg===-Infinity){str="Inf"}else{switch(format_string.charAt(i)){case"f":str=(-arg).toFixed(precision===-1?6:precision);break;case"e":case"E":str=(-arg).toExponential(precision===-1?6:precision);break;case"g":case"G":str=(-arg).toExponential();exponent=parseInt(str.split("e")[1],10);if(!(exponent<-4||exponent>=(precision===-1?6:precision))){str=(-arg).toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){str="-"+str;while(str.length<width){str=str+" "}}else{if(flags&FZERO&&arg!==-Infinity){while(str.length<width-1){str="0"+str}str="-"+str}else{str="-"+str;while(str.length<width){str=" "+str}}}}if(format_string.charAt(i)===format_string.charAt(i).toUpperCase()&&arg!==Infinity&&arg!==-Infinity&&!isNaN(arg)){str=str.toUpperCase()}str=str.replace(/([eE][-+]?)([0-9])$/,"$10$2");break format_sequence;case"a":case"A":self.$raise($scope.get("NotImplementedError"),"`A` and `a` format field types are not implemented in Opal yet");case"c":arg=GET_ARG();if(arg["$respond_to?"]("to_ary")){arg=arg.$to_ary()[0]}if(arg["$respond_to?"]("to_str")){str=arg.$to_str()}else{str=String.fromCharCode($scope.get("Opal").$coerce_to(arg,$scope.get("Integer"),"to_int"))}if(str.length!==1){self.$raise($scope.get("ArgumentError"),"%c requires a character")}if(flags&FMINUS){while(str.length<width){str=str+" "}}else{while(str.length<width){str=" "+str}}break format_sequence;case"p":str=GET_ARG().$inspect();if(precision!==-1){str=str.slice(0,precision)}if(flags&FMINUS){while(str.length<width){str=str+" "}}else{while(str.length<width){str=" "+str}}break format_sequence;case"s":str=GET_ARG().$to_s();if(precision!==-1){str=str.slice(0,precision)}if(flags&FMINUS){while(str.length<width){str=str+" "}}else{while(str.length<width){str=" "+str}}break format_sequence;default:self.$raise($scope.get("ArgumentError"),"malformed format string - %"+format_string.charAt(i))}}if(str===undefined){self.$raise($scope.get("ArgumentError"),"malformed format string - %")}result+=format_string.slice(begin_slice,end_slice)+str;begin_slice=i+1}if($gvars.DEBUG&&pos_arg_num>=0&&seq_arg_num<args.length){self.$raise($scope.get("ArgumentError"),"too many arguments for format string")}return result+format_string.slice(begin_slice)},TMP_23.$$arity=-2);Opal.defn(self,"$hash",TMP_24=function $$hash(){var self=this;return self.$__id__()},TMP_24.$$arity=0);Opal.defn(self,"$initialize_copy",TMP_25=function $$initialize_copy(other){var self=this;return nil},TMP_25.$$arity=1);Opal.defn(self,"$inspect",TMP_26=function $$inspect(){var self=this;return self.$to_s()},TMP_26.$$arity=0);Opal.defn(self,"$instance_of?",TMP_27=function(klass){var self=this;if(!klass.$$is_class&&!klass.$$is_module){self.$raise($scope.get("TypeError"),"class or module required")}return self.$$class===klass},TMP_27.$$arity=1);Opal.defn(self,"$instance_variable_defined?",TMP_28=function(name){var self=this;name=$scope.get("Opal")["$instance_variable_name!"](name);return Opal.hasOwnProperty.call(self,name.substr(1))},TMP_28.$$arity=1);Opal.defn(self,"$instance_variable_get",TMP_29=function $$instance_variable_get(name){var self=this;name=$scope.get("Opal")["$instance_variable_name!"](name);var ivar=self[Opal.ivar(name.substr(1))];return ivar==null?nil:ivar},TMP_29.$$arity=1);Opal.defn(self,"$instance_variable_set",TMP_30=function $$instance_variable_set(name,value){var self=this;name=$scope.get("Opal")["$instance_variable_name!"](name);return self[Opal.ivar(name.substr(1))]=value},TMP_30.$$arity=2);Opal.defn(self,"$remove_instance_variable",TMP_31=function $$remove_instance_variable(name){var self=this;name=$scope.get("Opal")["$instance_variable_name!"](name);var key=Opal.ivar(name.substr(1)),val;if(self.hasOwnProperty(key)){val=self[key];delete self[key];return val}return self.$raise($scope.get("NameError"),"instance variable "+name+" not defined")},TMP_31.$$arity=1);Opal.defn(self,"$instance_variables",TMP_32=function $$instance_variables(){var self=this;var result=[],ivar;for(var name in self){if(self.hasOwnProperty(name)&&name.charAt(0)!=="$"){if(name.substr(-1)==="$"){ivar=name.slice(0,name.length-1)}else{ivar=name}result.push("@"+ivar)}}return result},TMP_32.$$arity=0);Opal.defn(self,"$Integer",TMP_33=function $$Integer(value,base){var self=this;var i,str,base_digits;if(!value.$$is_string){if(base!==undefined){self.$raise($scope.get("ArgumentError"),"base specified for non string value")}if(value===nil){self.$raise($scope.get("TypeError"),"can't convert nil into Integer")}if(value.$$is_number){if(value===Infinity||value===-Infinity||isNaN(value)){self.$raise($scope.get("FloatDomainError"),value)}return Math.floor(value)}if(value["$respond_to?"]("to_int")){i=value.$to_int();if(i!==nil){return i}}return $scope.get("Opal")["$coerce_to!"](value,$scope.get("Integer"),"to_i")}if(base===undefined){base=0}else{base=$scope.get("Opal").$coerce_to(base,$scope.get("Integer"),"to_int");if(base===1||base<0||base>36){self.$raise($scope.get("ArgumentError"),"invalid radix "+base)}}str=value.toLowerCase();str=str.replace(/(\d)_(?=\d)/g,"$1");str=str.replace(/^(\s*[+-]?)(0[bodx]?)/,function(_,head,flag){switch(flag){case"0b":if(base===0||base===2){base=2;return head}case"0":case"0o":if(base===0||base===8){base=8;return head}case"0d":if(base===0||base===10){base=10;return head}case"0x":if(base===0||base===16){base=16;return head}}self.$raise($scope.get("ArgumentError"),'invalid value for Integer(): "'+value+'"')});base=base===0?10:base;base_digits="0-"+(base<=10?base-1:"9a-"+String.fromCharCode(97+(base-11)));if(!new RegExp("^\\s*[+-]?["+base_digits+"]+\\s*$").test(str)){self.$raise($scope.get("ArgumentError"),'invalid value for Integer(): "'+value+'"')}i=parseInt(str,base);if(isNaN(i)){self.$raise($scope.get("ArgumentError"),'invalid value for Integer(): "'+value+'"')}return i},TMP_33.$$arity=-2);Opal.defn(self,"$Float",TMP_34=function $$Float(value){var self=this;var str;if(value===nil){self.$raise($scope.get("TypeError"),"can't convert nil into Float")}if(value.$$is_string){str=value.toString();str=str.replace(/(\d)_(?=\d)/g,"$1");if(/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)){return self.$Integer(str)}if(!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)){self.$raise($scope.get("ArgumentError"),'invalid value for Float(): "'+value+'"')}return parseFloat(str)}return $scope.get("Opal")["$coerce_to!"](value,$scope.get("Float"),"to_f")},TMP_34.$$arity=1);Opal.defn(self,"$Hash",TMP_35=function $$Hash(arg){var $a,$b,self=this;if(($a=($b=arg["$nil?"]())!==false&&$b!==nil&&$b!=null?$b:arg["$=="]([]))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $hash2([],{})}if(($a=$scope.get("Hash")["$==="](arg))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return arg}return $scope.get("Opal")["$coerce_to!"](arg,$scope.get("Hash"),"to_hash")},TMP_35.$$arity=1);Opal.defn(self,"$is_a?",TMP_36=function(klass){var self=this;if(!klass.$$is_class&&!klass.$$is_module){self.$raise($scope.get("TypeError"),"class or module required")}return Opal.is_a(self,klass)},TMP_36.$$arity=1);Opal.alias(self,"kind_of?","is_a?");Opal.defn(self,"$lambda",TMP_37=function $$lambda(){var self=this,$iter=TMP_37.$$p,block=$iter||nil;TMP_37.$$p=null;block.$$is_lambda=true;return block},TMP_37.$$arity=0);Opal.defn(self,"$load",TMP_38=function $$load(file){var self=this;file=$scope.get("Opal")["$coerce_to!"](file,$scope.get("String"),"to_str");return Opal.load(file)},TMP_38.$$arity=1);Opal.defn(self,"$loop",TMP_39=function $$loop(){var self=this,$iter=TMP_39.$$p,$yield=$iter||nil;TMP_39.$$p=null;if($yield!==nil){}else{return self.$enum_for("loop")}while(true){Opal.yieldX($yield,[])}return self},TMP_39.$$arity=0);Opal.defn(self,"$nil?",TMP_40=function(){var self=this;return false},TMP_40.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$printf",TMP_41=function $$printf($a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(($b=$rb_gt(args.$length(),0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$print(($b=self).$format.apply($b,Opal.to_a(args)))}return nil},TMP_41.$$arity=-1);Opal.defn(self,"$proc",TMP_42=function $$proc(){var self=this,$iter=TMP_42.$$p,block=$iter||nil;TMP_42.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to create Proc object without a block")}block.$$is_lambda=false;return block},TMP_42.$$arity=0);Opal.defn(self,"$puts",TMP_43=function $$puts($a_rest){var $b,self=this,strs;if($gvars.stdout==null)$gvars.stdout=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return($b=$gvars.stdout).$puts.apply($b,Opal.to_a(strs))},TMP_43.$$arity=-1);Opal.defn(self,"$p",TMP_45=function $$p($a_rest){var $b,$c,TMP_44,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}($b=($c=args).$each,$b.$$p=(TMP_44=function(obj){var self=TMP_44.$$s||this;if($gvars.stdout==null)$gvars.stdout=nil;if(obj==null)obj=nil;return $gvars.stdout.$puts(obj.$inspect())},TMP_44.$$s=self,TMP_44.$$arity=1,TMP_44),$b).call($c);if(($b=$rb_le(args.$length(),1))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return args["$[]"](0)}else{return args}},TMP_45.$$arity=-1);Opal.defn(self,"$print",TMP_46=function $$print($a_rest){var $b,self=this,strs;if($gvars.stdout==null)$gvars.stdout=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return($b=$gvars.stdout).$print.apply($b,Opal.to_a(strs))},TMP_46.$$arity=-1);Opal.defn(self,"$warn",TMP_47=function $$warn($a_rest){var $b,$c,self=this,strs;if($gvars.VERBOSE==null)$gvars.VERBOSE=nil;if($gvars.stderr==null)$gvars.stderr=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}if(($b=($c=$gvars.VERBOSE["$nil?"]())!==false&&$c!==nil&&$c!=null?$c:strs["$empty?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return nil}else{return($b=$gvars.stderr).$puts.apply($b,Opal.to_a(strs))}},TMP_47.$$arity=-1);Opal.defn(self,"$raise",TMP_48=function $$raise(exception,string,_backtrace){var self=this;if($gvars["!"]==null)$gvars["!"]=nil;if(string==null){string=nil}if(_backtrace==null){_backtrace=nil}if(exception==null&&$gvars["!"]!==nil){throw $gvars["!"]}if(exception==null){exception=$scope.get("RuntimeError").$new()}else if(exception.$$is_string){exception=$scope.get("RuntimeError").$new(exception)}else if(exception.$$is_class&&exception["$respond_to?"]("exception")){exception=exception.$exception(string)}else if(exception["$kind_of?"]($scope.get("Exception"))){}else{exception=$scope.get("TypeError").$new("exception class/object expected")}if($gvars["!"]!==nil){Opal.exceptions.push($gvars["!"])}$gvars["!"]=exception;throw exception},TMP_48.$$arity=-1);Opal.alias(self,"fail","raise");Opal.defn(self,"$rand",TMP_49=function $$rand(max){var self=this;if(max===undefined){return Math.random()}else if(max.$$is_range){var min=max.begin,range=max.end-min;if(!max.exclude)range++;return self.$rand(range)+min}else{return Math.floor(Math.random()*Math.abs($scope.get("Opal").$coerce_to(max,$scope.get("Integer"),"to_int")))}},TMP_49.$$arity=-1);Opal.defn(self,"$respond_to?",TMP_50=function(name,include_all){var $a,self=this;if(include_all==null){include_all=false}if(($a=self["$respond_to_missing?"](name,include_all))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}var body=self["$"+name];if(typeof body==="function"&&!body.$$stub){return true}return false},TMP_50.$$arity=-2);Opal.defn(self,"$respond_to_missing?",TMP_51=function(method_name,include_all){var self=this;if(include_all==null){include_all=false}return false},TMP_51.$$arity=-2);Opal.defn(self,"$require",TMP_52=function $$require(file){var self=this;file=$scope.get("Opal")["$coerce_to!"](file,$scope.get("String"),"to_str");return Opal.require(file)},TMP_52.$$arity=1);Opal.defn(self,"$require_relative",TMP_53=function $$require_relative(file){var self=this;$scope.get("Opal")["$try_convert!"](file,$scope.get("String"),"to_str");file=$scope.get("File").$expand_path($scope.get("File").$join(Opal.current_file,"..",file));return Opal.require(file)},TMP_53.$$arity=1);Opal.defn(self,"$require_tree",TMP_54=function $$require_tree(path){var self=this;path=$scope.get("File").$expand_path(path);if(path["$=="](".")){path=""}for(var name in Opal.modules){if(name["$start_with?"](path)){Opal.require(name)}}return nil},TMP_54.$$arity=1);Opal.alias(self,"send","__send__");Opal.alias(self,"public_send","__send__");Opal.defn(self,"$singleton_class",TMP_55=function $$singleton_class(){var self=this;return Opal.get_singleton_class(self)},TMP_55.$$arity=0);Opal.defn(self,"$sleep",TMP_56=function $$sleep(seconds){var self=this;if(seconds==null){seconds=nil}if(seconds===nil){self.$raise($scope.get("TypeError"),"can't convert NilClass into time interval")}if(!seconds.$$is_number){self.$raise($scope.get("TypeError"),"can't convert "+seconds.$class()+" into time interval")}if(seconds<0){self.$raise($scope.get("ArgumentError"),"time interval must be positive")}var t=new Date;while(new Date-t<=seconds*1e3);return seconds},TMP_56.$$arity=-1);Opal.alias(self,"sprintf","format");Opal.alias(self,"srand","rand");Opal.defn(self,"$String",TMP_57=function $$String(str){var $a,self=this;return($a=$scope.get("Opal")["$coerce_to?"](str,$scope.get("String"),"to_str"))!==false&&$a!==nil&&$a!=null?$a:$scope.get("Opal")["$coerce_to!"](str,$scope.get("String"),"to_s")},TMP_57.$$arity=1);Opal.defn(self,"$tap",TMP_58=function $$tap(){var self=this,$iter=TMP_58.$$p,block=$iter||nil;TMP_58.$$p=null;Opal.yield1(block,self);return self},TMP_58.$$arity=0);Opal.defn(self,"$to_proc",TMP_59=function $$to_proc(){var self=this;return self},TMP_59.$$arity=0);Opal.defn(self,"$to_s",TMP_60=function $$to_s(){var self=this;return"#<"+self.$class()+":0x"+self.$__id__().$to_s(16)+">"},TMP_60.$$arity=0);Opal.defn(self,"$catch",TMP_61=function(sym){var self=this,$iter=TMP_61.$$p,$yield=$iter||nil,e=nil;TMP_61.$$p=null;try{return Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[$scope.get("UncaughtThrowError")])){e=$err;try{if(e.$sym()["$=="](sym)){return e.$arg()}return self.$raise()}finally{Opal.pop_exception()}}else{throw $err}}},TMP_61.$$arity=1);Opal.defn(self,"$throw",TMP_62=function($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.$raise($scope.get("UncaughtThrowError").$new(args))},TMP_62.$$arity=-1);Opal.defn(self,"$open",TMP_63=function $$open($a_rest){var $b,$c,self=this,args,$iter=TMP_63.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_63.$$p=null;return($b=($c=$scope.get("File")).$open,$b.$$p=block.$to_proc(),$b).apply($c,Opal.to_a(args))},TMP_63.$$arity=-1)})($scope.base);return function($base,$super){function $Object(){}var self=$Object=$klass($base,$super,"Object",$Object);var def=self.$$proto,$scope=self.$$scope;return self.$include($scope.get("Kernel"))}($scope.base,null)};Opal.modules["corelib/error"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module;Opal.add_stubs(["$new","$clone","$to_s","$empty?","$class","$attr_reader","$[]","$>","$length","$inspect"]);(function($base,$super){function $Exception(){}var self=$Exception=$klass($base,$super,"Exception",$Exception);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8;def.message=nil;Opal.defs(self,"$new",TMP_1=function($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var message=args.length>0?args[0]:nil;var err=new self.$$alloc(message);if(Error.captureStackTrace){Error.captureStackTrace(err)}err.name=self.$$name;err.$initialize.apply(err,args);return err},TMP_1.$$arity=-1);Opal.defs(self,"$exception",TMP_2=function $$exception($a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return($b=self).$new.apply($b,Opal.to_a(args))},TMP_2.$$arity=-1);Opal.defn(self,"$initialize",TMP_3=function $$initialize($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.message=args.length>0?args[0]:nil},TMP_3.$$arity=-1);Opal.defn(self,"$backtrace",TMP_4=function $$backtrace(){var self=this;var backtrace=self.stack;if(typeof backtrace==="string"){return backtrace.split("\n").slice(0,15)}else if(backtrace){return backtrace.slice(0,15)}return[]},TMP_4.$$arity=0);Opal.defn(self,"$exception",TMP_5=function $$exception(str){var self=this;if(str==null){str=nil}if(str===nil||self===str){return self}var cloned=self.$clone();cloned.message=str;return cloned},TMP_5.$$arity=-1);Opal.defn(self,"$message",TMP_6=function $$message(){var self=this;return self.$to_s()},TMP_6.$$arity=0);Opal.defn(self,"$inspect",TMP_7=function $$inspect(){var $a,self=this,as_str=nil;as_str=self.$to_s();if(($a=as_str["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$class().$to_s()}else{return"#<"+self.$class().$to_s()+": "+self.$to_s()+">"}},TMP_7.$$arity=0);return(Opal.defn(self,"$to_s",TMP_8=function $$to_s(){var $a,$b,self=this;return($a=($b=self.message,$b!==false&&$b!==nil&&$b!=null?self.message.$to_s():$b))!==false&&$a!==nil&&$a!=null?$a:self.$class().$to_s()},TMP_8.$$arity=0),nil)&&"to_s"})($scope.base,Error);(function($base,$super){function $ScriptError(){}var self=$ScriptError=$klass($base,$super,"ScriptError",$ScriptError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));(function($base,$super){function $SyntaxError(){}var self=$SyntaxError=$klass($base,$super,"SyntaxError",$SyntaxError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("ScriptError"));(function($base,$super){function $LoadError(){}var self=$LoadError=$klass($base,$super,"LoadError",$LoadError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("ScriptError"));(function($base,$super){function $NotImplementedError(){}var self=$NotImplementedError=$klass($base,$super,"NotImplementedError",$NotImplementedError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("ScriptError"));(function($base,$super){function $SystemExit(){}var self=$SystemExit=$klass($base,$super,"SystemExit",$SystemExit);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));(function($base,$super){function $NoMemoryError(){}var self=$NoMemoryError=$klass($base,$super,"NoMemoryError",$NoMemoryError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));(function($base,$super){function $SignalException(){}var self=$SignalException=$klass($base,$super,"SignalException",$SignalException);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));(function($base,$super){function $Interrupt(){}var self=$Interrupt=$klass($base,$super,"Interrupt",$Interrupt);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));(function($base,$super){function $SecurityError(){}var self=$SecurityError=$klass($base,$super,"SecurityError",$SecurityError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));(function($base,$super){function $StandardError(){}var self=$StandardError=$klass($base,$super,"StandardError",$StandardError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));(function($base,$super){function $ZeroDivisionError(){}var self=$ZeroDivisionError=$klass($base,$super,"ZeroDivisionError",$ZeroDivisionError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $NameError(){}var self=$NameError=$klass($base,$super,"NameError",$NameError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $NoMethodError(){}var self=$NoMethodError=$klass($base,$super,"NoMethodError",$NoMethodError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("NameError"));(function($base,$super){function $RuntimeError(){}var self=$RuntimeError=$klass($base,$super,"RuntimeError",$RuntimeError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $LocalJumpError(){}var self=$LocalJumpError=$klass($base,$super,"LocalJumpError",$LocalJumpError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $TypeError(){}var self=$TypeError=$klass($base,$super,"TypeError",$TypeError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $ArgumentError(){}var self=$ArgumentError=$klass($base,$super,"ArgumentError",$ArgumentError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $IndexError(){}var self=$IndexError=$klass($base,$super,"IndexError",$IndexError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $StopIteration(){}var self=$StopIteration=$klass($base,$super,"StopIteration",$StopIteration);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("IndexError"));(function($base,$super){function $KeyError(){}var self=$KeyError=$klass($base,$super,"KeyError",$KeyError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("IndexError"));(function($base,$super){function $RangeError(){}var self=$RangeError=$klass($base,$super,"RangeError",$RangeError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $FloatDomainError(){}var self=$FloatDomainError=$klass($base,$super,"FloatDomainError",$FloatDomainError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("RangeError"));(function($base,$super){function $IOError(){}var self=$IOError=$klass($base,$super,"IOError",$IOError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $SystemCallError(){}var self=$SystemCallError=$klass($base,$super,"SystemCallError",$SystemCallError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base){var $Errno,self=$Errno=$module($base,"Errno");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $EINVAL(){}var self=$EINVAL=$klass($base,$super,"EINVAL",$EINVAL);var def=self.$$proto,$scope=self.$$scope,TMP_9;return(Opal.defs(self,"$new",TMP_9=function(){var $a,$b,self=this,$iter=TMP_9.$$p,$yield=$iter||nil;TMP_9.$$p=null;return($a=($b=self,Opal.find_super_dispatcher(self,"new",TMP_9,false,$EINVAL)),$a.$$p=null,$a).call($b,"Invalid argument")},TMP_9.$$arity=0),nil)&&"new"})($scope.base,$scope.get("SystemCallError"))})($scope.base);(function($base,$super){function $UncaughtThrowError(){}var self=$UncaughtThrowError=$klass($base,$super,"UncaughtThrowError",$UncaughtThrowError);var def=self.$$proto,$scope=self.$$scope,TMP_10;def.sym=nil;self.$attr_reader("sym","arg");return(Opal.defn(self,"$initialize",TMP_10=function $$initialize(args){var $a,$b,self=this,$iter=TMP_10.$$p,$yield=$iter||nil;TMP_10.$$p=null;self.sym=args["$[]"](0);if(($a=$rb_gt(args.$length(),1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.arg=args["$[]"](1)}return($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_10,false)),$a.$$p=null,$a).call($b,"uncaught throw "+self.sym.$inspect())},TMP_10.$$arity=1),nil)&&"initialize"})($scope.base,$scope.get("ArgumentError"));(function($base,$super){function $NameError(){}var self=$NameError=$klass($base,$super,"NameError",$NameError);var def=self.$$proto,$scope=self.$$scope,TMP_11;self.$attr_reader("name");return(Opal.defn(self,"$initialize",TMP_11=function $$initialize(message,name){var $a,$b,self=this,$iter=TMP_11.$$p,$yield=$iter||nil;if(name==null){name=nil}TMP_11.$$p=null;($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_11,false)),$a.$$p=null,$a).call($b,message);return self.name=name},TMP_11.$$arity=-2),nil)&&"initialize"})($scope.base,null);return function($base,$super){function $NoMethodError(){}var self=$NoMethodError=$klass($base,$super,"NoMethodError",$NoMethodError);var def=self.$$proto,$scope=self.$$scope,TMP_12;self.$attr_reader("args");return(Opal.defn(self,"$initialize",TMP_12=function $$initialize(message,name,args){var $a,$b,self=this,$iter=TMP_12.$$p,$yield=$iter||nil;if(name==null){name=nil}if(args==null){args=[]}TMP_12.$$p=null;($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_12,false)),$a.$$p=null,$a).call($b,message,name);return self.args=args},TMP_12.$$arity=-2),nil)&&"initialize"}($scope.base,null)};Opal.modules["corelib/constants"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.cdecl($scope,"RUBY_PLATFORM","opal");Opal.cdecl($scope,"RUBY_ENGINE","opal");Opal.cdecl($scope,"RUBY_VERSION","2.2.7");Opal.cdecl($scope,"RUBY_ENGINE_VERSION","0.10.5");Opal.cdecl($scope,"RUBY_RELEASE_DATE","2017-06-21");Opal.cdecl($scope,"RUBY_PATCHLEVEL",0);Opal.cdecl($scope,"RUBY_REVISION",0);Opal.cdecl($scope,"RUBY_COPYRIGHT","opal - Copyright (C) 2013-2015 Adam Beynon");return Opal.cdecl($scope,"RUBY_DESCRIPTION","opal "+$scope.get("RUBY_ENGINE_VERSION")+" ("+$scope.get("RUBY_RELEASE_DATE")+" revision "+$scope.get("RUBY_REVISION")+")")};Opal.modules["opal/base"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("corelib/runtime");self.$require("corelib/helpers");self.$require("corelib/module");self.$require("corelib/class");self.$require("corelib/basic_object");self.$require("corelib/kernel");self.$require("corelib/error");return self.$require("corelib/constants")};Opal.modules["corelib/nil"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$raise","$class","$new","$>","$length","$Rational"]);(function($base,$super){function $NilClass(){}var self=$NilClass=$klass($base,$super,"NilClass",$NilClass);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18;def.$$meta=self;Opal.defn(self,"$!",TMP_1=function(){var self=this;return true},TMP_1.$$arity=0);Opal.defn(self,"$&",TMP_2=function(other){var self=this;return false},TMP_2.$$arity=1);Opal.defn(self,"$|",TMP_3=function(other){var self=this;return other!==false&&other!==nil},TMP_3.$$arity=1);Opal.defn(self,"$^",TMP_4=function(other){var self=this;return other!==false&&other!==nil},TMP_4.$$arity=1);Opal.defn(self,"$==",TMP_5=function(other){var self=this;return other===nil},TMP_5.$$arity=1);Opal.defn(self,"$dup",TMP_6=function $$dup(){var self=this;return self.$raise($scope.get("TypeError"),"can't dup "+self.$class())},TMP_6.$$arity=0);Opal.defn(self,"$clone",TMP_7=function $$clone(){var self=this;return self.$raise($scope.get("TypeError"),"can't clone "+self.$class())},TMP_7.$$arity=0);Opal.defn(self,"$inspect",TMP_8=function $$inspect(){var self=this;return"nil"},TMP_8.$$arity=0);Opal.defn(self,"$nil?",TMP_9=function(){var self=this;return true},TMP_9.$$arity=0);Opal.defn(self,"$singleton_class",TMP_10=function $$singleton_class(){var self=this;return $scope.get("NilClass")},TMP_10.$$arity=0);Opal.defn(self,"$to_a",TMP_11=function $$to_a(){var self=this;return[]},TMP_11.$$arity=0);Opal.defn(self,"$to_h",TMP_12=function $$to_h(){var self=this;return Opal.hash()},TMP_12.$$arity=0);Opal.defn(self,"$to_i",TMP_13=function $$to_i(){var self=this;return 0},TMP_13.$$arity=0);Opal.alias(self,"to_f","to_i");Opal.defn(self,"$to_s",TMP_14=function $$to_s(){var self=this;return""},TMP_14.$$arity=0);Opal.defn(self,"$to_c",TMP_15=function $$to_c(){var self=this;return $scope.get("Complex").$new(0,0)},TMP_15.$$arity=0);Opal.defn(self,"$rationalize",TMP_16=function $$rationalize($a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(($b=$rb_gt(args.$length(),1))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$raise($scope.get("ArgumentError"))}return self.$Rational(0,1)},TMP_16.$$arity=-1);Opal.defn(self,"$to_r",TMP_17=function $$to_r(){var self=this;return self.$Rational(0,1)},TMP_17.$$arity=0);return(Opal.defn(self,"$instance_variables",TMP_18=function $$instance_variables(){var self=this;return[]},TMP_18.$$arity=0),nil)&&"instance_variables"})($scope.base,null);return Opal.cdecl($scope,"NIL",nil)};Opal.modules["corelib/boolean"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$raise","$class"]);(function($base,$super){function $Boolean(){}var self=$Boolean=$klass($base,$super,"Boolean",$Boolean);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10;def.$$is_boolean=true;def.$$meta=self;Opal.defn(self,"$__id__",TMP_1=function $$__id__(){var self=this;return self.valueOf()?2:0},TMP_1.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$!",TMP_2=function(){var self=this;return self!=true},TMP_2.$$arity=0);Opal.defn(self,"$&",TMP_3=function(other){var self=this;return self==true?other!==false&&other!==nil:false},TMP_3.$$arity=1);Opal.defn(self,"$|",TMP_4=function(other){var self=this;return self==true?true:other!==false&&other!==nil},TMP_4.$$arity=1);Opal.defn(self,"$^",TMP_5=function(other){var self=this;return self==true?other===false||other===nil:other!==false&&other!==nil},TMP_5.$$arity=1);Opal.defn(self,"$==",TMP_6=function(other){var self=this;return self==true===other.valueOf()},TMP_6.$$arity=1);Opal.alias(self,"equal?","==");Opal.alias(self,"eql?","==");Opal.defn(self,"$singleton_class",TMP_7=function $$singleton_class(){var self=this;return $scope.get("Boolean")},TMP_7.$$arity=0);Opal.defn(self,"$to_s",TMP_8=function $$to_s(){var self=this;return self==true?"true":"false"},TMP_8.$$arity=0);Opal.defn(self,"$dup",TMP_9=function $$dup(){var self=this;return self.$raise($scope.get("TypeError"),"can't dup "+self.$class())},TMP_9.$$arity=0);return(Opal.defn(self,"$clone",TMP_10=function $$clone(){var self=this;return self.$raise($scope.get("TypeError"),"can't clone "+self.$class())},TMP_10.$$arity=0),nil)&&"clone"})($scope.base,Boolean);Opal.cdecl($scope,"TrueClass",$scope.get("Boolean"));Opal.cdecl($scope,"FalseClass",$scope.get("Boolean"));Opal.cdecl($scope,"TRUE",true);return Opal.cdecl($scope,"FALSE",false)};Opal.modules["corelib/comparable"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$===","$>","$<","$equal?","$<=>","$normalize","$raise","$class"]);return function($base){var $Comparable,self=$Comparable=$module($base,"Comparable");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7;Opal.defs(self,"$normalize",TMP_1=function $$normalize(what){var $a,self=this;if(($a=$scope.get("Integer")["$==="](what))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return what}if(($a=$rb_gt(what,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return 1}if(($a=$rb_lt(what,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return-1}return 0},TMP_1.$$arity=1);Opal.defn(self,"$==",TMP_2=function(other){var $a,self=this,cmp=nil;try{if(($a=self["$equal?"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}if(self["$<=>"]==Opal.Kernel["$<=>"]){return false}if(self.$$comparable){delete self.$$comparable;return false}if(($a=cmp=self["$<=>"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return false}return $scope.get("Comparable").$normalize(cmp)==0}catch($err){if(Opal.rescue($err,[$scope.get("StandardError")])){try{return false}finally{Opal.pop_exception()}}else{throw $err}}},TMP_2.$$arity=1);Opal.defn(self,"$>",TMP_3=function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)>0},TMP_3.$$arity=1);Opal.defn(self,"$>=",TMP_4=function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)>=0},TMP_4.$$arity=1);Opal.defn(self,"$<",TMP_5=function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)<0},TMP_5.$$arity=1);Opal.defn(self,"$<=",TMP_6=function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)<=0},TMP_6.$$arity=1);Opal.defn(self,"$between?",TMP_7=function(min,max){var self=this;if($rb_lt(self,min)){return false}if($rb_gt(self,max)){return false}return true},TMP_7.$$arity=2)}($scope.base)};Opal.modules["corelib/regexp"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$nil?","$[]","$raise","$escape","$options","$to_str","$new","$join","$coerce_to!","$!","$match","$coerce_to?","$begin","$coerce_to","$call","$=~","$attr_reader","$===","$inspect","$to_a"]);(function($base,$super){function $RegexpError(){}var self=$RegexpError=$klass($base,$super,"RegexpError",$RegexpError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));(function($base,$super){function $Regexp(){}var self=$Regexp=$klass($base,$super,"Regexp",$Regexp);var def=self.$$proto,$scope=self.$$scope,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15;Opal.cdecl($scope,"IGNORECASE",1);Opal.cdecl($scope,"MULTILINE",4);def.$$is_regexp=true;(function(self){var $scope=self.$$scope,def=self.$$proto,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5;Opal.defn(self,"$allocate",TMP_1=function $$allocate(){var $a,$b,self=this,$iter=TMP_1.$$p,$yield=$iter||nil,allocated=nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_1.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}allocated=($a=($b=self,Opal.find_super_dispatcher(self,"allocate",TMP_1,false)),$a.$$p=$iter,$a).apply($b,$zuper);allocated.uninitialized=true;return allocated},TMP_1.$$arity=0);Opal.defn(self,"$escape",TMP_2=function $$escape(string){var self=this;return string.replace(/([-[\]\/{}()*+?.^$\\| ])/g,"\\$1").replace(/[\n]/g,"\\n").replace(/[\r]/g,"\\r").replace(/[\f]/g,"\\f").replace(/[\t]/g,"\\t")},TMP_2.$$arity=1);Opal.defn(self,"$last_match",TMP_3=function $$last_match(n){var $a,self=this;if($gvars["~"]==null)$gvars["~"]=nil;if(n==null){n=nil}if(($a=n["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $gvars["~"]}else{return $gvars["~"]["$[]"](n)}},TMP_3.$$arity=-1);Opal.alias(self,"quote","escape");Opal.defn(self,"$union",TMP_4=function $$union($a_rest){var self=this,parts;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}parts=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){parts[$arg_idx-0]=arguments[$arg_idx]}var is_first_part_array,quoted_validated,part,options,each_part_options;if(parts.length==0){return/(?!)/}is_first_part_array=parts[0].$$is_array;if(parts.length>1&&is_first_part_array){self.$raise($scope.get("TypeError"),"no implicit conversion of Array into String")}if(is_first_part_array){parts=parts[0]}options=undefined;quoted_validated=[];for(var i=0;i<parts.length;i++){part=parts[i];if(part.$$is_string){quoted_validated.push(self.$escape(part))}else if(part.$$is_regexp){each_part_options=part.$options();if(options!=undefined&&options!=each_part_options){self.$raise($scope.get("TypeError"),"All expressions must use the same options")}options=each_part_options;quoted_validated.push("("+part.source+")")}else{quoted_validated.push(self.$escape(part.$to_str()))}}return self.$new(quoted_validated.$join("|"),options)},TMP_4.$$arity=-1);return(Opal.defn(self,"$new",TMP_5=function(regexp,options){var self=this;if(regexp.$$is_regexp){return new RegExp(regexp)}regexp=$scope.get("Opal")["$coerce_to!"](regexp,$scope.get("String"),"to_str");if(regexp.charAt(regexp.length-1)==="\\"&&regexp.charAt(regexp.length-2)!=="\\"){self.$raise($scope.get("RegexpError"),"too short escape sequence: /"+regexp+"/")}if(options===undefined||options["$!"]()){return new RegExp(regexp)}if(options.$$is_number){var temp="";if($scope.get("IGNORECASE")&options){temp+="i"}if($scope.get("MULTILINE")&options){temp+="m"}options=temp}else{options="i"}return new RegExp(regexp,options)},TMP_5.$$arity=-2),nil)&&"new"})(Opal.get_singleton_class(self));Opal.defn(self,"$==",TMP_6=function(other){var self=this;return other.constructor==RegExp&&self.toString()===other.toString()},TMP_6.$$arity=1);Opal.defn(self,"$===",TMP_7=function(string){var self=this;return self.$match($scope.get("Opal")["$coerce_to?"](string,$scope.get("String"),"to_str"))!==nil},TMP_7.$$arity=1);Opal.defn(self,"$=~",TMP_8=function(string){var $a,self=this;if($gvars["~"]==null)$gvars["~"]=nil;return $a=self.$match(string),$a!==false&&$a!==nil&&$a!=null?$gvars["~"].$begin(0):$a},TMP_8.$$arity=1);Opal.alias(self,"eql?","==");Opal.defn(self,"$inspect",TMP_9=function $$inspect(){var self=this;return self.toString()},TMP_9.$$arity=0);Opal.defn(self,"$match",TMP_10=function $$match(string,pos){var self=this,$iter=TMP_10.$$p,block=$iter||nil;if($gvars["~"]==null)$gvars["~"]=nil;TMP_10.$$p=null;if(self.uninitialized){self.$raise($scope.get("TypeError"),"uninitialized Regexp")}if(pos===undefined){pos=0}else{pos=$scope.get("Opal").$coerce_to(pos,$scope.get("Integer"),"to_int")}if(string===nil){return $gvars["~"]=nil}string=$scope.get("Opal").$coerce_to(string,$scope.get("String"),"to_str");if(pos<0){pos+=string.length;if(pos<0){return $gvars["~"]=nil}}var source=self.source;var flags="g";if(self.multiline){source=source.replace(".","[\\s\\S]");flags+="m"}var md,re=new RegExp(source,flags+(self.ignoreCase?"i":""));while(true){md=re.exec(string);if(md===null){return $gvars["~"]=nil}if(md.index>=pos){$gvars["~"]=$scope.get("MatchData").$new(re,md);return block===nil?$gvars["~"]:block.$call($gvars["~"])}re.lastIndex=md.index+1}},TMP_10.$$arity=-2);Opal.defn(self,"$~",TMP_11=function(){var self=this;if($gvars._==null)$gvars._=nil;return self["$=~"]($gvars._)},TMP_11.$$arity=0);Opal.defn(self,"$source",TMP_12=function $$source(){var self=this;return self.source},TMP_12.$$arity=0);Opal.defn(self,"$options",TMP_13=function $$options(){var self=this;if(self.uninitialized){self.$raise($scope.get("TypeError"),"uninitialized Regexp")}var result=0;if(self.multiline){result|=$scope.get("MULTILINE")}if(self.ignoreCase){result|=$scope.get("IGNORECASE")}return result},TMP_13.$$arity=0);Opal.defn(self,"$casefold?",TMP_14=function(){var self=this;return self.ignoreCase},TMP_14.$$arity=0);Opal.alias(self,"to_s","source");return(Opal.defs(self,"$_load",TMP_15=function $$_load(args){var $a,self=this;return($a=self).$new.apply($a,Opal.to_a(args))},TMP_15.$$arity=1),nil)&&"_load"})($scope.base,RegExp);return function($base,$super){function $MatchData(){}var self=$MatchData=$klass($base,$super,"MatchData",$MatchData);var def=self.$$proto,$scope=self.$$scope,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27;def.matches=nil;self.$attr_reader("post_match","pre_match","regexp","string");Opal.defn(self,"$initialize",TMP_16=function $$initialize(regexp,match_groups){var self=this;$gvars["~"]=self;self.regexp=regexp;self.begin=match_groups.index;self.string=match_groups.input;self.pre_match=match_groups.input.slice(0,match_groups.index);self.post_match=match_groups.input.slice(match_groups.index+match_groups[0].length);self.matches=[];for(var i=0,length=match_groups.length;i<length;i++){var group=match_groups[i];if(group==null){self.matches.push(nil)}else{self.matches.push(group)}}},TMP_16.$$arity=2);Opal.defn(self,"$[]",TMP_17=function($a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return($b=self.matches)["$[]"].apply($b,Opal.to_a(args))},TMP_17.$$arity=-1);Opal.defn(self,"$offset",TMP_18=function $$offset(n){var self=this;if(n!==0){self.$raise($scope.get("ArgumentError"),"MatchData#offset only supports 0th element")}return[self.begin,self.begin+self.matches[n].length]},TMP_18.$$arity=1);Opal.defn(self,"$==",TMP_19=function(other){var $a,$b,$c,$d,self=this;if(($a=$scope.get("MatchData")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return false}return $a=($b=($c=($d=self.string==other.string,$d!==false&&$d!==nil&&$d!=null?self.regexp.toString()==other.regexp.toString():$d),$c!==false&&$c!==nil&&$c!=null?self.pre_match==other.pre_match:$c),$b!==false&&$b!==nil&&$b!=null?self.post_match==other.post_match:$b),$a!==false&&$a!==nil&&$a!=null?self.begin==other.begin:$a},TMP_19.$$arity=1);Opal.alias(self,"eql?","==");Opal.defn(self,"$begin",TMP_20=function $$begin(n){var self=this;if(n!==0){self.$raise($scope.get("ArgumentError"),"MatchData#begin only supports 0th element")}return self.begin},TMP_20.$$arity=1);Opal.defn(self,"$end",TMP_21=function $$end(n){var self=this;if(n!==0){self.$raise($scope.get("ArgumentError"),"MatchData#end only supports 0th element")}return self.begin+self.matches[n].length},TMP_21.$$arity=1);Opal.defn(self,"$captures",TMP_22=function $$captures(){var self=this;return self.matches.slice(1)},TMP_22.$$arity=0);Opal.defn(self,"$inspect",TMP_23=function $$inspect(){var self=this;var str="#<MatchData "+self.matches[0].$inspect();for(var i=1,length=self.matches.length;i<length;i++){str+=" "+i+":"+self.matches[i].$inspect()}return str+">"},TMP_23.$$arity=0);Opal.defn(self,"$length",TMP_24=function $$length(){var self=this;return self.matches.length},TMP_24.$$arity=0);Opal.alias(self,"size","length");Opal.defn(self,"$to_a",TMP_25=function $$to_a(){var self=this;return self.matches},TMP_25.$$arity=0);Opal.defn(self,"$to_s",TMP_26=function $$to_s(){var self=this;return self.matches[0]},TMP_26.$$arity=0);return(Opal.defn(self,"$values_at",TMP_27=function $$values_at($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var i,a,index,values=[];for(i=0;i<args.length;i++){if(args[i].$$is_range){a=args[i].$to_a();a.unshift(i,1);Array.prototype.splice.apply(args,a)}index=$scope.get("Opal")["$coerce_to!"](args[i],$scope.get("Integer"),"to_int");if(index<0){index+=self.matches.length;if(index<0){values.push(nil);continue}}values.push(self.matches[index])}return values},TMP_27.$$arity=-1),nil)&&"values_at"}($scope.base,null)};Opal.modules["corelib/string"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$require","$include","$coerce_to?","$coerce_to","$raise","$===","$format","$to_s","$respond_to?","$to_str","$<=>","$==","$=~","$new","$empty?","$ljust","$ceil","$/","$+","$rjust","$floor","$to_a","$each_char","$to_proc","$coerce_to!","$copy_singleton_methods","$initialize_clone","$initialize_dup","$enum_for","$size","$chomp","$[]","$to_i","$each_line","$class","$match","$captures","$proc","$shift","$__send__","$succ","$escape"]);self.$require("corelib/comparable");self.$require("corelib/regexp");(function($base,$super){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41,TMP_42,TMP_43,TMP_44,TMP_45,TMP_46,TMP_47,TMP_48,TMP_49,TMP_50,TMP_51,TMP_52,TMP_53,TMP_54,TMP_55,TMP_56,TMP_57,TMP_58,TMP_59,TMP_61,TMP_62,TMP_63,TMP_64,TMP_65,TMP_66,TMP_67,TMP_68;def.length=nil;self.$include($scope.get("Comparable"));def.$$is_string=true;Opal.defn(self,"$__id__",TMP_1=function $$__id__(){var self=this;return self.toString()},TMP_1.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defs(self,"$try_convert",TMP_2=function $$try_convert(what){var self=this;return $scope.get("Opal")["$coerce_to?"](what,$scope.get("String"),"to_str")},TMP_2.$$arity=1);Opal.defs(self,"$new",TMP_3=function(str){var self=this;if(str==null){str=""}str=$scope.get("Opal").$coerce_to(str,$scope.get("String"),"to_str");return new String(str)},TMP_3.$$arity=-1);Opal.defn(self,"$initialize",TMP_4=function $$initialize(str){var self=this;if(str===undefined){return self}return self.$raise($scope.get("NotImplementedError"),"Mutable strings are not supported in Opal.")},TMP_4.$$arity=-1);Opal.defn(self,"$%",TMP_5=function(data){var $a,self=this;if(($a=$scope.get("Array")["$==="](data))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=self).$format.apply($a,[self].concat(Opal.to_a(data)))}else{return self.$format(self,data)}},TMP_5.$$arity=1);Opal.defn(self,"$*",TMP_6=function(count){var self=this;count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(count<0){self.$raise($scope.get("ArgumentError"),"negative argument")}if(count===0){return""}var result="",string=self.toString();if(string.length*count>=1<<28){self.$raise($scope.get("RangeError"),"multiply count must not overflow maximum string size")}for(;;){if((count&1)===1){result+=string}count>>>=1;if(count===0){break}string+=string}return result},TMP_6.$$arity=1);Opal.defn(self,"$+",TMP_7=function(other){var self=this;other=$scope.get("Opal").$coerce_to(other,$scope.get("String"),"to_str");return self+other.$to_s()},TMP_7.$$arity=1);Opal.defn(self,"$<=>",TMP_8=function(other){var $a,self=this;if(($a=other["$respond_to?"]("to_str"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_str().$to_s();return self>other?1:self<other?-1:0}else{var cmp=other["$<=>"](self);if(cmp===nil){return nil}else{return cmp>0?-1:cmp<0?1:0}}},TMP_8.$$arity=1);Opal.defn(self,"$==",TMP_9=function(other){var self=this;if(other.$$is_string){return self.toString()===other.toString()}if($scope.get("Opal")["$respond_to?"](other,"to_str")){return other["$=="](self)}return false},TMP_9.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.defn(self,"$=~",TMP_10=function(other){var self=this;if(other.$$is_string){self.$raise($scope.get("TypeError"),"type mismatch: String given")}return other["$=~"](self)},TMP_10.$$arity=1);Opal.defn(self,"$[]",TMP_11=function(index,length){var self=this;var size=self.length,exclude;if(index.$$is_range){exclude=index.exclude;length=$scope.get("Opal").$coerce_to(index.end,$scope.get("Integer"),"to_int");index=$scope.get("Opal").$coerce_to(index.begin,$scope.get("Integer"),"to_int");if(Math.abs(index)>size){return nil}if(index<0){index+=size}if(length<0){length+=size}if(!exclude){length+=1}length=length-index;if(length<0){length=0}return self.substr(index,length)}if(index.$$is_string){if(length!=null){self.$raise($scope.get("TypeError"))}return self.indexOf(index)!==-1?index:nil}if(index.$$is_regexp){var match=self.match(index);if(match===null){$gvars["~"]=nil;return nil}$gvars["~"]=$scope.get("MatchData").$new(index,match);if(length==null){return match[0]}length=$scope.get("Opal").$coerce_to(length,$scope.get("Integer"),"to_int");if(length<0&&-length<match.length){return match[length+=match.length]}if(length>=0&&length<match.length){return match[length]}return nil}index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=size}if(length==null){if(index>=size||index<0){return nil}return self.substr(index,1)}length=$scope.get("Opal").$coerce_to(length,$scope.get("Integer"),"to_int");if(length<0){return nil}if(index>size||index<0){return nil}return self.substr(index,length)},TMP_11.$$arity=-2);Opal.alias(self,"byteslice","[]");Opal.defn(self,"$capitalize",TMP_12=function $$capitalize(){var self=this;return self.charAt(0).toUpperCase()+self.substr(1).toLowerCase()},TMP_12.$$arity=0);Opal.defn(self,"$casecmp",TMP_13=function $$casecmp(other){var self=this;other=$scope.get("Opal").$coerce_to(other,$scope.get("String"),"to_str").$to_s();var ascii_only=/^[\x00-\x7F]*$/;if(ascii_only.test(self)&&ascii_only.test(other)){self=self.toLowerCase();other=other.toLowerCase()}return self["$<=>"](other)},TMP_13.$$arity=1);Opal.defn(self,"$center",TMP_14=function $$center(width,padstr){var $a,self=this;if(padstr==null){padstr=" "}width=$scope.get("Opal").$coerce_to(width,$scope.get("Integer"),"to_int");padstr=$scope.get("Opal").$coerce_to(padstr,$scope.get("String"),"to_str").$to_s();if(($a=padstr["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"zero width padding")}if(($a=width<=self.length)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}var ljustified=self.$ljust($rb_divide($rb_plus(width,self.length),2).$ceil(),padstr),rjustified=self.$rjust($rb_divide($rb_plus(width,self.length),2).$floor(),padstr);return rjustified+ljustified.slice(self.length)},TMP_14.$$arity=-2);Opal.defn(self,"$chars",TMP_15=function $$chars(){var $a,$b,self=this,$iter=TMP_15.$$p,block=$iter||nil;TMP_15.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return self.$each_char().$to_a()}return($a=($b=self).$each_char,$a.$$p=block.$to_proc(),$a).call($b)},TMP_15.$$arity=0);Opal.defn(self,"$chomp",TMP_16=function $$chomp(separator){var $a,self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if(($a=separator===nil||self.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}separator=$scope.get("Opal")["$coerce_to!"](separator,$scope.get("String"),"to_str").$to_s();if(separator==="\n"){return self.replace(/\r?\n?$/,"")}else if(separator===""){return self.replace(/(\r?\n)+$/,"")}else if(self.length>separator.length){var tail=self.substr(self.length-separator.length,separator.length);if(tail===separator){return self.substr(0,self.length-separator.length)}}return self},TMP_16.$$arity=-1);Opal.defn(self,"$chop",TMP_17=function $$chop(){var self=this;var length=self.length;if(length<=1){return""}if(self.charAt(length-1)==="\n"&&self.charAt(length-2)==="\r"){return self.substr(0,length-2)}else{return self.substr(0,length-1)}},TMP_17.$$arity=0);Opal.defn(self,"$chr",TMP_18=function $$chr(){var self=this;return self.charAt(0)},TMP_18.$$arity=0);Opal.defn(self,"$clone",TMP_19=function $$clone(){var self=this,copy=nil;copy=self.slice();copy.$copy_singleton_methods(self);copy.$initialize_clone(self);return copy},TMP_19.$$arity=0);Opal.defn(self,"$dup",TMP_20=function $$dup(){var self=this,copy=nil;copy=self.slice();copy.$initialize_dup(self);return copy},TMP_20.$$arity=0);Opal.defn(self,"$count",TMP_21=function $$count($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){self.$raise($scope.get("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return 0}return self.length-self.replace(new RegExp(char_class,"g"),"").length},TMP_21.$$arity=-1);Opal.defn(self,"$delete",TMP_22=function($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){self.$raise($scope.get("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.replace(new RegExp(char_class,"g"),"")},TMP_22.$$arity=-1);Opal.defn(self,"$downcase",TMP_23=function $$downcase(){var self=this;return self.toLowerCase()},TMP_23.$$arity=0);Opal.defn(self,"$each_char",TMP_24=function $$each_char(){var $a,$b,TMP_25,self=this,$iter=TMP_24.$$p,block=$iter||nil;TMP_24.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_25=function(){var self=TMP_25.$$s||this;return self.$size()},TMP_25.$$s=self,TMP_25.$$arity=0,TMP_25),$a).call($b,"each_char")}for(var i=0,length=self.length;i<length;i++){Opal.yield1(block,self.charAt(i))}return self},TMP_24.$$arity=0);Opal.defn(self,"$each_line",TMP_26=function $$each_line(separator){var self=this,$iter=TMP_26.$$p,block=$iter||nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}TMP_26.$$p=null;if(block!==nil){}else{return self.$enum_for("each_line",separator)}if(separator===nil){Opal.yield1(block,self);return self}separator=$scope.get("Opal").$coerce_to(separator,$scope.get("String"),"to_str");var a,i,n,length,chomped,trailing,splitted;if(separator.length===0){for(a=self.split(/(\n{2,})/),i=0,n=a.length;i<n;i+=2){if(a[i]||a[i+1]){Opal.yield1(block,(a[i]||"")+(a[i+1]||""))}}return self}chomped=self.$chomp(separator);trailing=self.length!=chomped.length;splitted=chomped.split(separator);for(i=0,length=splitted.length;i<length;i++){if(i<length-1||trailing){Opal.yield1(block,splitted[i]+separator)}else{Opal.yield1(block,splitted[i])}}return self},TMP_26.$$arity=-1);Opal.defn(self,"$empty?",TMP_27=function(){var self=this;return self.length===0},TMP_27.$$arity=0);Opal.defn(self,"$end_with?",TMP_28=function($a_rest){var self=this,suffixes;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}suffixes=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){suffixes[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=suffixes.length;i<length;i++){var suffix=$scope.get("Opal").$coerce_to(suffixes[i],$scope.get("String"),"to_str").$to_s();if(self.length>=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix){return true}}return false},TMP_28.$$arity=-1);Opal.alias(self,"eql?","==");Opal.alias(self,"equal?","===");Opal.defn(self,"$gsub",TMP_29=function $$gsub(pattern,replacement){var self=this,$iter=TMP_29.$$p,block=$iter||nil;TMP_29.$$p=null;if(replacement===undefined&&block===nil){return self.$enum_for("gsub",pattern)}var result="",match_data=nil,index=0,match,_replacement;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=$scope.get("Opal").$coerce_to(pattern,$scope.get("String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}while(true){match=pattern.exec(self);if(match===null){$gvars["~"]=nil;result+=self.slice(index);break}match_data=$scope.get("MatchData").$new(pattern,match);if(replacement===undefined){_replacement=block(match[0])}else if(replacement.$$is_hash){_replacement=replacement["$[]"](match[0]).$to_s()}else{if(!replacement.$$is_string){replacement=$scope.get("Opal").$coerce_to(replacement,$scope.get("String"),"to_str")}_replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,function(original,slashes,command){if(slashes.length%2===0){return original}switch(command){case"+":for(var i=match.length-1;i>0;i--){if(match[i]!==undefined){return slashes.slice(1)+match[i]}}return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}}).replace(/\\\\/g,"\\")}if(pattern.lastIndex===match.index){result+=_replacement+self.slice(index,match.index+1);pattern.lastIndex+=1}else{result+=self.slice(index,match.index)+_replacement}index=pattern.lastIndex}$gvars["~"]=match_data;return result},TMP_29.$$arity=-2);Opal.defn(self,"$hash",TMP_30=function $$hash(){var self=this;return self.toString()},TMP_30.$$arity=0);Opal.defn(self,"$hex",TMP_31=function $$hex(){var self=this;return self.$to_i(16)},TMP_31.$$arity=0);Opal.defn(self,"$include?",TMP_32=function(other){var self=this;if(!other.$$is_string){other=$scope.get("Opal").$coerce_to(other,$scope.get("String"),"to_str")}return self.indexOf(other)!==-1},TMP_32.$$arity=1);Opal.defn(self,"$index",TMP_33=function $$index(search,offset){var self=this;var index,match,regex;if(offset===undefined){offset=0}else{offset=$scope.get("Opal").$coerce_to(offset,$scope.get("Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){regex=new RegExp(search.source,"gm"+(search.ignoreCase?"i":""));while(true){match=regex.exec(self);if(match===null){$gvars["~"]=nil;index=-1;break}if(match.index>=offset){$gvars["~"]=$scope.get("MatchData").$new(regex,match);index=match.index;break}regex.lastIndex=match.index+1}}else{search=$scope.get("Opal").$coerce_to(search,$scope.get("String"),"to_str");if(search.length===0&&offset>self.length){index=-1}else{index=self.indexOf(search,offset)}}return index===-1?nil:index},TMP_33.$$arity=-2);Opal.defn(self,"$inspect",TMP_34=function $$inspect(){var self=this;var escapable=/[\\\"\x00-\x1f\x7f-\x9f\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,meta={"":"\\a","":"\\e","\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\v":"\\v",'"':'\\"',"\\":"\\\\"},escaped=self.replace(escapable,function(chr){return meta[chr]||"\\u"+("0000"+chr.charCodeAt(0).toString(16).toUpperCase()).slice(-4)});return'"'+escaped.replace(/\#[\$\@\{]/g,"\\$&")+'"'},TMP_34.$$arity=0);Opal.defn(self,"$intern",TMP_35=function $$intern(){var self=this;return self},TMP_35.$$arity=0);Opal.defn(self,"$lines",TMP_36=function $$lines(separator){var $a,$b,self=this,$iter=TMP_36.$$p,block=$iter||nil,e=nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}TMP_36.$$p=null;e=($a=($b=self).$each_line,$a.$$p=block.$to_proc(),$a).call($b,separator);if(block!==false&&block!==nil&&block!=null){return self}else{return e.$to_a()}},TMP_36.$$arity=-1);Opal.defn(self,"$length",TMP_37=function $$length(){var self=this;return self.length},TMP_37.$$arity=0);Opal.defn(self,"$ljust",TMP_38=function $$ljust(width,padstr){var $a,self=this;if(padstr==null){padstr=" "}width=$scope.get("Opal").$coerce_to(width,$scope.get("Integer"),"to_int");padstr=$scope.get("Opal").$coerce_to(padstr,$scope.get("String"),"to_str").$to_s();if(($a=padstr["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"zero width padding")}if(($a=width<=self.length)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}var index=-1,result="";width-=self.length;while(++index<width){result+=padstr}return self+result.slice(0,width)},TMP_38.$$arity=-2);Opal.defn(self,"$lstrip",TMP_39=function $$lstrip(){var self=this;return self.replace(/^\s*/,"")},TMP_39.$$arity=0);Opal.defn(self,"$match",TMP_40=function $$match(pattern,pos){var $a,$b,self=this,$iter=TMP_40.$$p,block=$iter||nil;TMP_40.$$p=null;if(($a=($b=$scope.get("String")["$==="](pattern))!==false&&$b!==nil&&$b!=null?$b:pattern["$respond_to?"]("to_str"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){pattern=$scope.get("Regexp").$new(pattern.$to_str())}if(($a=$scope.get("Regexp")["$==="](pattern))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"wrong argument type "+pattern.$class()+" (expected Regexp)")}return($a=($b=pattern).$match,$a.$$p=block.$to_proc(),$a).call($b,self,pos)},TMP_40.$$arity=-2);Opal.defn(self,"$next",TMP_41=function $$next(){var self=this;var i=self.length;if(i===0){return""}var result=self;var first_alphanum_char_index=self.search(/[a-zA-Z0-9]/);var carry=false;var code;while(i--){code=self.charCodeAt(i);if(code>=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122){switch(code){case 57:carry=true;code=48;break;case 90:carry=true;code=65;break;case 122:carry=true;code=97;break;default:carry=false;code+=1}}else{if(first_alphanum_char_index===-1){if(code===255){carry=true;code=0}else{carry=false;code+=1}}else{carry=true}}result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i+1);if(carry&&(i===0||i===first_alphanum_char_index)){switch(code){case 65:break;case 97:break;default:code+=1}if(i===0){result=String.fromCharCode(code)+result}else{result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i)}carry=false}if(!carry){break}}return result},TMP_41.$$arity=0);Opal.defn(self,"$oct",TMP_42=function $$oct(){var self=this;var result,string=self,radix=8;if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"){return original}}switch(flag){case"0b":radix=2;break;case"0":case"0o":radix=8;break;case"0d":radix=10;break;case"0x":radix=16;break}return head+tail});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},TMP_42.$$arity=0);Opal.defn(self,"$ord",TMP_43=function $$ord(){var self=this;return self.charCodeAt(0)},TMP_43.$$arity=0);Opal.defn(self,"$partition",TMP_44=function $$partition(sep){var self=this;var i,m;if(sep.$$is_regexp){m=sep.exec(self);if(m===null){i=-1}else{$scope.get("MatchData").$new(sep,m);sep=m[0];i=m.index}}else{sep=$scope.get("Opal").$coerce_to(sep,$scope.get("String"),"to_str");i=self.indexOf(sep)}if(i===-1){return[self,"",""]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},TMP_44.$$arity=1);Opal.defn(self,"$reverse",TMP_45=function $$reverse(){var self=this;return self.split("").reverse().join("")},TMP_45.$$arity=0);Opal.defn(self,"$rindex",TMP_46=function $$rindex(search,offset){var self=this;var i,m,r,_m;if(offset===undefined){offset=self.length}else{offset=$scope.get("Opal").$coerce_to(offset,$scope.get("Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){m=null;r=new RegExp(search.source,"gm"+(search.ignoreCase?"i":""));while(true){_m=r.exec(self);if(_m===null||_m.index>offset){break}m=_m;r.lastIndex=m.index+1}if(m===null){$gvars["~"]=nil;i=-1}else{$scope.get("MatchData").$new(r,m);i=m.index}}else{search=$scope.get("Opal").$coerce_to(search,$scope.get("String"),"to_str");i=self.lastIndexOf(search,offset)}return i===-1?nil:i},TMP_46.$$arity=-2);Opal.defn(self,"$rjust",TMP_47=function $$rjust(width,padstr){var $a,self=this;if(padstr==null){padstr=" "}width=$scope.get("Opal").$coerce_to(width,$scope.get("Integer"),"to_int");padstr=$scope.get("Opal").$coerce_to(padstr,$scope.get("String"),"to_str").$to_s();if(($a=padstr["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"zero width padding")}if(($a=width<=self.length)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}var chars=Math.floor(width-self.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return result+padstr.slice(0,remaining)+self},TMP_47.$$arity=-2);Opal.defn(self,"$rpartition",TMP_48=function $$rpartition(sep){var self=this;var i,m,r,_m;if(sep.$$is_regexp){m=null;r=new RegExp(sep.source,"gm"+(sep.ignoreCase?"i":""));while(true){_m=r.exec(self);if(_m===null){break}m=_m;r.lastIndex=m.index+1}if(m===null){i=-1}else{$scope.get("MatchData").$new(r,m);sep=m[0];i=m.index}}else{sep=$scope.get("Opal").$coerce_to(sep,$scope.get("String"),"to_str");i=self.lastIndexOf(sep)}if(i===-1){return["","",self]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},TMP_48.$$arity=1);Opal.defn(self,"$rstrip",TMP_49=function $$rstrip(){var self=this;return self.replace(/[\s\u0000]*$/,"")},TMP_49.$$arity=0);Opal.defn(self,"$scan",TMP_50=function $$scan(pattern){var self=this,$iter=TMP_50.$$p,block=$iter||nil;TMP_50.$$p=null;var result=[],match_data=nil,match;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=$scope.get("Opal").$coerce_to(pattern,$scope.get("String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}while((match=pattern.exec(self))!=null){match_data=$scope.get("MatchData").$new(pattern,match);if(block===nil){match.length==1?result.push(match[0]):result.push(match_data.$captures())}else{match.length==1?block(match[0]):block.call(self,match_data.$captures())}if(pattern.lastIndex===match.index){pattern.lastIndex+=1}}$gvars["~"]=match_data;return block!==nil?self:result},TMP_50.$$arity=1);Opal.alias(self,"size","length");Opal.alias(self,"slice","[]");Opal.defn(self,"$split",TMP_51=function $$split(pattern,limit){var $a,self=this;if($gvars[";"]==null)$gvars[";"]=nil;if(self.length===0){return[]}if(limit===undefined){limit=0}else{limit=$scope.get("Opal")["$coerce_to!"](limit,$scope.get("Integer"),"to_int");if(limit===1){return[self]}}if(pattern===undefined||pattern===nil){pattern=($a=$gvars[";"])!==false&&$a!==nil&&$a!=null?$a:" "}var result=[],string=self.toString(),index=0,match,i;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=$scope.get("Opal").$coerce_to(pattern,$scope.get("String"),"to_str").$to_s();if(pattern===" "){pattern=/\s+/gm;string=string.replace(/^\s+/,"")}else{pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}}result=string.split(pattern);if(result.length===1&&result[0]===string){return result}while((i=result.indexOf(undefined))!==-1){result.splice(i,1)}if(limit===0){while(result[result.length-1]===""){result.length-=1}return result}match=pattern.exec(string);if(limit<0){if(match!==null&&match[0]===""&&pattern.source.indexOf("(?=")===-1){for(i=0;i<match.length;i++){result.push("")}}return result}if(match!==null&&match[0]===""){result.splice(limit-1,result.length-1,result.slice(limit-1).join(""));return result}if(limit>=result.length){return result}i=0;while(match!==null){i++;index=pattern.lastIndex;if(i+1===limit){break}match=pattern.exec(string)}result.splice(limit-1,result.length-1,string.slice(index));return result},TMP_51.$$arity=-1);Opal.defn(self,"$squeeze",TMP_52=function $$squeeze($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){return self.replace(/(.)\1+/g,"$1")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.replace(new RegExp("("+char_class+")\\1+","g"),"$1")},TMP_52.$$arity=-1);Opal.defn(self,"$start_with?",TMP_53=function($a_rest){var self=this,prefixes;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}prefixes=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){prefixes[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=prefixes.length;i<length;i++){var prefix=$scope.get("Opal").$coerce_to(prefixes[i],$scope.get("String"),"to_str").$to_s();if(self.indexOf(prefix)===0){return true}}return false},TMP_53.$$arity=-1);Opal.defn(self,"$strip",TMP_54=function $$strip(){var self=this;return self.replace(/^\s*/,"").replace(/[\s\u0000]*$/,"")},TMP_54.$$arity=0);Opal.defn(self,"$sub",TMP_55=function $$sub(pattern,replacement){var self=this,$iter=TMP_55.$$p,block=$iter||nil;TMP_55.$$p=null;if(!pattern.$$is_regexp){pattern=$scope.get("Opal").$coerce_to(pattern,$scope.get("String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))}var result=pattern.exec(self);if(result===null){$gvars["~"]=nil;return self.toString()}$scope.get("MatchData").$new(pattern,result);if(replacement===undefined){if(block===nil){self.$raise($scope.get("ArgumentError"),"wrong number of arguments (1 for 2)")}return self.slice(0,result.index)+block(result[0])+self.slice(result.index+result[0].length)}if(replacement.$$is_hash){return self.slice(0,result.index)+replacement["$[]"](result[0]).$to_s()+self.slice(result.index+result[0].length)}replacement=$scope.get("Opal").$coerce_to(replacement,$scope.get("String"),"to_str");replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,function(original,slashes,command){if(slashes.length%2===0){return original}switch(command){case"+":for(var i=result.length-1;i>0;i--){if(result[i]!==undefined){return slashes.slice(1)+result[i]}}return"";case"&":return slashes.slice(1)+result[0];case"`":return slashes.slice(1)+self.slice(0,result.index);case"'":return slashes.slice(1)+self.slice(result.index+result[0].length);default:return slashes.slice(1)+(result[command]||"")}}).replace(/\\\\/g,"\\");return self.slice(0,result.index)+replacement+self.slice(result.index+result[0].length)},TMP_55.$$arity=-2);Opal.alias(self,"succ","next");Opal.defn(self,"$sum",TMP_56=function $$sum(n){var self=this;if(n==null){n=16}n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");var result=0,length=self.length,i=0;for(;i<length;i++){result+=self.charCodeAt(i)}if(n<=0){return result}return result&Math.pow(2,n)-1},TMP_56.$$arity=-1);Opal.defn(self,"$swapcase",TMP_57=function $$swapcase(){var self=this;var str=self.replace(/([a-z]+)|([A-Z]+)/g,function($0,$1,$2){return $1?$0.toUpperCase():$0.toLowerCase()});if(self.constructor===String){return str}return self.$class().$new(str)},TMP_57.$$arity=0);Opal.defn(self,"$to_f",TMP_58=function $$to_f(){var self=this;if(self.charAt(0)==="_"){return 0}var result=parseFloat(self.replace(/_/g,""));if(isNaN(result)||result==Infinity||result==-Infinity){return 0}else{return result}},TMP_58.$$arity=0);Opal.defn(self,"$to_i",TMP_59=function $$to_i(base){var self=this;if(base==null){base=10}var result,string=self.toLowerCase(),radix=$scope.get("Opal").$coerce_to(base,$scope.get("Integer"),"to_int");if(radix===1||radix<0||radix>36){self.$raise($scope.get("ArgumentError"),"invalid radix "+radix)}if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"&&(radix===0||radix===16)){return original}}switch(flag){case"0b":if(radix===0||radix===2){radix=2;return head+tail}break;case"0":case"0o":if(radix===0||radix===8){radix=8;return head+tail}break;case"0d":if(radix===0||radix===10){radix=10;return head+tail}break;case"0x":if(radix===0||radix===16){radix=16;return head+tail}break}return original});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},TMP_59.$$arity=-1);Opal.defn(self,"$to_proc",TMP_61=function $$to_proc(){var $a,$b,TMP_60,self=this,sym=nil;sym=self;return($a=($b=self).$proc,$a.$$p=(TMP_60=function($c_rest){var self=TMP_60.$$s||this,block,args,$d,$e,obj=nil;block=TMP_60.$$p||nil,TMP_60.$$p=null;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(($d=args["$empty?"]())!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){self.$raise($scope.get("ArgumentError"),"no receiver given")}obj=args.$shift();return($d=($e=obj).$__send__,$d.$$p=block.$to_proc(),$d).apply($e,[sym].concat(Opal.to_a(args)))},TMP_60.$$s=self,TMP_60.$$arity=-1,TMP_60),$a).call($b)},TMP_61.$$arity=0);Opal.defn(self,"$to_s",TMP_62=function $$to_s(){var self=this;return self.toString()},TMP_62.$$arity=0);Opal.alias(self,"to_str","to_s");Opal.alias(self,"to_sym","intern");Opal.defn(self,"$tr",TMP_63=function $$tr(from,to){var self=this;from=$scope.get("Opal").$coerce_to(from,$scope.get("String"),"to_str").$to_s();to=$scope.get("Opal").$coerce_to(to,$scope.get("String"),"to_str").$to_s();if(from.length==0||from===to){return self}var i,in_range,c,ch,start,end,length;var subs={};var from_chars=from.split("");var from_length=from_chars.length;var to_chars=to.split("");var to_length=to_chars.length;var inverse=false;var global_sub=null;if(from_chars[0]==="^"&&from_chars.length>1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;i<from_length;i++){ch=from_chars[i];if(last_from==null){last_from=ch;from_chars_expanded.push(ch)}else if(ch==="-"){if(last_from==="-"){from_chars_expanded.push("-");from_chars_expanded.push("-")}else if(i==from_length-1){from_chars_expanded.push("-")}else{in_range=true}}else if(in_range){start=last_from.charCodeAt(0);end=ch.charCodeAt(0);if(start>end){self.$raise($scope.get("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c<end;c++){from_chars_expanded.push(String.fromCharCode(c))}from_chars_expanded.push(ch);in_range=null;last_from=null}else{from_chars_expanded.push(ch)}}from_chars=from_chars_expanded;from_length=from_chars.length;if(inverse){for(i=0;i<from_length;i++){subs[from_chars[i]]=true}}else{if(to_length>0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;i<to_length;i++){ch=to_chars[i];if(last_to==null){last_to=ch;to_chars_expanded.push(ch)}else if(ch==="-"){if(last_to==="-"){to_chars_expanded.push("-");to_chars_expanded.push("-")}else if(i==to_length-1){to_chars_expanded.push("-")}else{in_range=true}}else if(in_range){start=last_to.charCodeAt(0);end=ch.charCodeAt(0);if(start>end){self.$raise($scope.get("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c<end;c++){to_chars_expanded.push(String.fromCharCode(c))}to_chars_expanded.push(ch);in_range=null;last_to=null}else{to_chars_expanded.push(ch)}}to_chars=to_chars_expanded;to_length=to_chars.length}var length_diff=from_length-to_length;if(length_diff>0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i<length_diff;i++){to_chars.push(pad_char)}}for(i=0;i<from_length;i++){subs[from_chars[i]]=to_chars[i]}}var new_str="";for(i=0,length=self.length;i<length;i++){ch=self.charAt(i);var sub=subs[ch];if(inverse){new_str+=sub==null?global_sub:ch}else{new_str+=sub!=null?sub:ch}}return new_str},TMP_63.$$arity=2);Opal.defn(self,"$tr_s",TMP_64=function $$tr_s(from,to){var self=this;from=$scope.get("Opal").$coerce_to(from,$scope.get("String"),"to_str").$to_s();to=$scope.get("Opal").$coerce_to(to,$scope.get("String"),"to_str").$to_s();if(from.length==0){return self}var i,in_range,c,ch,start,end,length;var subs={};var from_chars=from.split("");var from_length=from_chars.length;var to_chars=to.split("");var to_length=to_chars.length;var inverse=false;var global_sub=null;if(from_chars[0]==="^"&&from_chars.length>1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;i<from_length;i++){ch=from_chars[i];if(last_from==null){last_from=ch;from_chars_expanded.push(ch)}else if(ch==="-"){if(last_from==="-"){from_chars_expanded.push("-");from_chars_expanded.push("-")}else if(i==from_length-1){from_chars_expanded.push("-")}else{in_range=true}}else if(in_range){start=last_from.charCodeAt(0);end=ch.charCodeAt(0);if(start>end){self.$raise($scope.get("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c<end;c++){from_chars_expanded.push(String.fromCharCode(c))}from_chars_expanded.push(ch);in_range=null;last_from=null}else{from_chars_expanded.push(ch)}}from_chars=from_chars_expanded;from_length=from_chars.length;if(inverse){for(i=0;i<from_length;i++){subs[from_chars[i]]=true}}else{if(to_length>0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;i<to_length;i++){ch=to_chars[i];if(last_from==null){last_from=ch;to_chars_expanded.push(ch)}else if(ch==="-"){if(last_to==="-"){to_chars_expanded.push("-");to_chars_expanded.push("-")}else if(i==to_length-1){to_chars_expanded.push("-")}else{in_range=true}}else if(in_range){start=last_from.charCodeAt(0);end=ch.charCodeAt(0);if(start>end){self.$raise($scope.get("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c<end;c++){to_chars_expanded.push(String.fromCharCode(c))}to_chars_expanded.push(ch);in_range=null;last_from=null}else{to_chars_expanded.push(ch)}}to_chars=to_chars_expanded;to_length=to_chars.length}var length_diff=from_length-to_length;if(length_diff>0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i<length_diff;i++){to_chars.push(pad_char)}}for(i=0;i<from_length;i++){subs[from_chars[i]]=to_chars[i]}}var new_str="";var last_substitute=null;for(i=0,length=self.length;i<length;i++){ch=self.charAt(i);var sub=subs[ch];if(inverse){if(sub==null){if(last_substitute==null){new_str+=global_sub;last_substitute=true}}else{new_str+=ch;last_substitute=null}}else{if(sub!=null){if(last_substitute==null||last_substitute!==sub){new_str+=sub;last_substitute=sub}}else{new_str+=ch;last_substitute=null}}}return new_str},TMP_64.$$arity=2);Opal.defn(self,"$upcase",TMP_65=function $$upcase(){var self=this;return self.toUpperCase()},TMP_65.$$arity=0);Opal.defn(self,"$upto",TMP_66=function $$upto(stop,excl){var self=this,$iter=TMP_66.$$p,block=$iter||nil;if(excl==null){excl=false}TMP_66.$$p=null;if(block!==nil){}else{return self.$enum_for("upto",stop,excl)}stop=$scope.get("Opal").$coerce_to(stop,$scope.get("String"),"to_str");var a,b,s=self.toString();if(s.length===1&&stop.length===1){a=s.charCodeAt(0);b=stop.charCodeAt(0);while(a<=b){if(excl&&a===b){break}block(String.fromCharCode(a));a+=1}}else if(parseInt(s,10).toString()===s&&parseInt(stop,10).toString()===stop){a=parseInt(s,10);b=parseInt(stop,10);while(a<=b){if(excl&&a===b){break}block(a.toString());a+=1}}else{while(s.length<=stop.length&&s<=stop){if(excl&&s===stop){break}block(s);s=s.$succ()}}return self},TMP_66.$$arity=-2);function char_class_from_char_sets(sets){function explode_sequences_in_character_set(set){var result="",i,len=set.length,curr_char,skip_next_dash,char_code_from,char_code_upto,char_code;for(i=0;i<len;i++){curr_char=set.charAt(i);if(curr_char==="-"&&i>0&&i<len-1&&!skip_next_dash){char_code_from=set.charCodeAt(i-1);char_code_upto=set.charCodeAt(i+1);if(char_code_from>char_code_upto){self.$raise($scope.get("ArgumentError"),'invalid range "'+char_code_from+"-"+char_code_upto+'" in string transliteration')}for(char_code=char_code_from+1;char_code<char_code_upto+1;char_code++){result+=String.fromCharCode(char_code)}skip_next_dash=true;i++}else{skip_next_dash=curr_char==="\\";result+=curr_char}}return result}function intersection(setA,setB){if(setA.length===0){return setB}var result="",i,len=setA.length,chr;for(i=0;i<len;i++){chr=setA.charAt(i);if(setB.indexOf(chr)!==-1){result+=chr}}return result}var i,len,set,neg,chr,tmp,pos_intersection="",neg_intersection="";for(i=0,len=sets.length;i<len;i++){set=$scope.get("Opal").$coerce_to(sets[i],$scope.get("String"),"to_str");neg=set.charAt(0)==="^"&&set.length>1;set=explode_sequences_in_character_set(neg?set.slice(1):set);if(neg){neg_intersection=intersection(neg_intersection,set)}else{pos_intersection=intersection(pos_intersection,set)}}if(pos_intersection.length>0&&neg_intersection.length>0){tmp="";for(i=0,len=pos_intersection.length;i<len;i++){chr=pos_intersection.charAt(i);if(neg_intersection.indexOf(chr)===-1){tmp+=chr}}pos_intersection=tmp;neg_intersection=""}if(pos_intersection.length>0){return"["+$scope.get("Regexp").$escape(pos_intersection)+"]"}if(neg_intersection.length>0){return"[^"+$scope.get("Regexp").$escape(neg_intersection)+"]"}return null}Opal.defn(self,"$instance_variables",TMP_67=function $$instance_variables(){var self=this;return[]},TMP_67.$$arity=0);return(Opal.defs(self,"$_load",TMP_68=function $$_load($a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return($b=self).$new.apply($b,Opal.to_a(args))},TMP_68.$$arity=-1),nil)&&"_load"})($scope.base,String);return Opal.cdecl($scope,"Symbol",$scope.get("String"))};Opal.modules["corelib/enumerable"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$each","$destructure","$raise","$new","$yield","$dup","$enum_for","$enumerator_size","$flatten","$map","$proc","$==","$nil?","$respond_to?","$coerce_to!","$>","$*","$coerce_to","$try_convert","$<","$+","$-","$to_enum","$ceil","$/","$size","$===","$<<","$[]","$[]=","$inspect","$__send__","$<=>","$first","$reverse","$sort","$to_proc","$compare","$call","$to_a","$lambda","$sort!","$map!","$zip"]);return function($base){var $Enumerable,self=$Enumerable=$module($base,"Enumerable");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_4,TMP_7,TMP_10,TMP_12,TMP_15,TMP_19,TMP_21,TMP_23,TMP_24,TMP_25,TMP_27,TMP_29,TMP_31,TMP_33,TMP_35,TMP_36,TMP_38,TMP_43,TMP_44,TMP_45,TMP_48,TMP_49,TMP_51,TMP_52,TMP_53,TMP_54,TMP_56,TMP_57,TMP_59,TMP_61,TMP_62,TMP_65,TMP_68,TMP_70,TMP_72,TMP_74,TMP_76,TMP_78,TMP_83,TMP_84,TMP_86;Opal.defn(self,"$all?",TMP_1=function(){try{var $a,$b,TMP_2,$c,TMP_3,self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;if(block!==nil){($a=($b=self).$each,$a.$$p=(TMP_2=function($c_rest){var self=TMP_2.$$s||this,value,$d;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($d=Opal.yieldX(block,Opal.to_a(value)))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){return nil}else{Opal.ret(false)}},TMP_2.$$s=self,TMP_2.$$arity=-1,TMP_2),$a).call($b)}else{($a=($c=self).$each,$a.$$p=(TMP_3=function($d_rest){var self=TMP_3.$$s||this,value,$e;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($e=$scope.get("Opal").$destructure(value))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){return nil}else{Opal.ret(false)}},TMP_3.$$s=self,TMP_3.$$arity=-1,TMP_3),$a).call($c)}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_1.$$arity=0);Opal.defn(self,"$any?",TMP_4=function(){try{var $a,$b,TMP_5,$c,TMP_6,self=this,$iter=TMP_4.$$p,block=$iter||nil;TMP_4.$$p=null;if(block!==nil){($a=($b=self).$each,$a.$$p=(TMP_5=function($c_rest){var self=TMP_5.$$s||this,value,$d;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($d=Opal.yieldX(block,Opal.to_a(value)))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){Opal.ret(true)}else{return nil}},TMP_5.$$s=self,TMP_5.$$arity=-1,TMP_5),$a).call($b)}else{($a=($c=self).$each,$a.$$p=(TMP_6=function($d_rest){var self=TMP_6.$$s||this,value,$e;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($e=$scope.get("Opal").$destructure(value))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){Opal.ret(true)}else{return nil}},TMP_6.$$s=self,TMP_6.$$arity=-1,TMP_6),$a).call($c)}return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_4.$$arity=0);Opal.defn(self,"$chunk",TMP_7=function $$chunk(state){var $a,$b,TMP_8,self=this,$iter=TMP_7.$$p,original_block=$iter||nil;TMP_7.$$p=null;if(original_block!==false&&original_block!==nil&&original_block!=null){}else{$scope.get("Kernel").$raise($scope.get("ArgumentError"),"no block given")}return($a=($b=Opal.get("Enumerator")).$new,$a.$$p=(TMP_8=function(yielder){var self=TMP_8.$$s||this,$c,$d,TMP_9;if(yielder==null)yielder=nil;var block,previous=nil,accumulate=[];if(state==undefined||state===nil){block=original_block}else{block=($c=($d=$scope.get("Proc")).$new,$c.$$p=(TMP_9=function(val){var self=TMP_9.$$s||this;if(val==null)val=nil;return original_block.$yield(val,state.$dup())},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9),$c).call($d)}function releaseAccumulate(){if(accumulate.length>0){yielder.$yield(previous,accumulate)}}self.$each.$$p=function(value){var key=Opal.yield1(block,value);if(key===nil){releaseAccumulate();accumulate=[];previous=nil}else{if(previous===nil||previous===key){accumulate.push(value)}else{releaseAccumulate();accumulate=[value]}previous=key}};self.$each();releaseAccumulate()},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8),$a).call($b)},TMP_7.$$arity=-1);Opal.defn(self,"$collect",TMP_10=function $$collect(){var $a,$b,TMP_11,self=this,$iter=TMP_10.$$p,block=$iter||nil;TMP_10.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_11=function(){var self=TMP_11.$$s||this;return self.$enumerator_size()},TMP_11.$$s=self,TMP_11.$$arity=0,TMP_11),$a).call($b,"collect")}var result=[];self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);result.push(value)};self.$each();return result},TMP_10.$$arity=0);Opal.defn(self,"$collect_concat",TMP_12=function $$collect_concat(){var $a,$b,TMP_13,$c,TMP_14,self=this,$iter=TMP_12.$$p,block=$iter||nil;TMP_12.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_13=function(){var self=TMP_13.$$s||this;return self.$enumerator_size()},TMP_13.$$s=self,TMP_13.$$arity=0,TMP_13),$a).call($b,"collect_concat")}return($a=($c=self).$map,$a.$$p=(TMP_14=function(item){var self=TMP_14.$$s||this;if(item==null)item=nil;return Opal.yield1(block,item)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$a).call($c).$flatten(1)},TMP_12.$$arity=0);Opal.defn(self,"$count",TMP_15=function $$count(object){var $a,$b,TMP_16,$c,TMP_17,$d,TMP_18,self=this,$iter=TMP_15.$$p,block=$iter||nil,result=nil;TMP_15.$$p=null;result=0;if(($a=object!=null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block=($a=($b=self).$proc,$a.$$p=(TMP_16=function($c_rest){var self=TMP_16.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $scope.get("Opal").$destructure(args)["$=="](object)},TMP_16.$$s=self,TMP_16.$$arity=-1,TMP_16),$a).call($b)}else if(($a=block["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block=($a=($c=self).$proc,$a.$$p=(TMP_17=function(){var self=TMP_17.$$s||this;return true},TMP_17.$$s=self,TMP_17.$$arity=0,TMP_17),$a).call($c)}($a=($d=self).$each,$a.$$p=(TMP_18=function($e_rest){var self=TMP_18.$$s||this,args,$f;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(($f=Opal.yieldX(block,args))!==nil&&$f!=null&&(!$f.$$is_boolean||$f==true)){return result++}else{return nil}},TMP_18.$$s=self,TMP_18.$$arity=-1,TMP_18),$a).call($d);return result},TMP_15.$$arity=-1);Opal.defn(self,"$cycle",TMP_19=function $$cycle(n){var $a,$b,TMP_20,self=this,$iter=TMP_19.$$p,block=$iter||nil;if(n==null){n=nil}TMP_19.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_20=function(){var self=TMP_20.$$s||this,$c;if(n["$=="](nil)){if(($c=self["$respond_to?"]("size"))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return $scope.get("Float").$$scope.get("INFINITY")}else{return nil}}else{n=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if(($c=$rb_gt(n,0))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return $rb_times(self.$enumerator_size(),n)}else{return 0}}},TMP_20.$$s=self,TMP_20.$$arity=0,TMP_20),$a).call($b,"cycle",n)}if(($a=n["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{n=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if(($a=n<=0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}}var result,all=[],i,length,value;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);all.push(param)};self.$each();if(result!==undefined){return result}if(all.length===0){return nil}if(n===nil){while(true){for(i=0,length=all.length;i<length;i++){value=Opal.yield1(block,all[i])}}}else{while(n>1){for(i=0,length=all.length;i<length;i++){value=Opal.yield1(block,all[i])}n--}}},TMP_19.$$arity=-1);Opal.defn(self,"$detect",TMP_21=function $$detect(ifnone){try{var $a,$b,TMP_22,self=this,$iter=TMP_21.$$p,block=$iter||nil;TMP_21.$$p=null;if(block!==nil){}else{return self.$enum_for("detect",ifnone)}($a=($b=self).$each,$a.$$p=(TMP_22=function($c_rest){var self=TMP_22.$$s||this,args,$d,value=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}value=$scope.get("Opal").$destructure(args);if(($d=Opal.yield1(block,value))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){Opal.ret(value)}else{return nil}},TMP_22.$$s=self,TMP_22.$$arity=-1,TMP_22),$a).call($b);if(ifnone!==undefined){if(typeof ifnone==="function"){return ifnone()}else{return ifnone}}return nil}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_21.$$arity=-1);Opal.defn(self,"$drop",TMP_23=function $$drop(number){var $a,self=this;number=$scope.get("Opal").$coerce_to(number,$scope.get("Integer"),"to_int");if(($a=number<0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"attempt to drop negative size")}var result=[],current=0;self.$each.$$p=function(){if(number<=current){result.push($scope.get("Opal").$destructure(arguments))}current++};self.$each();return result},TMP_23.$$arity=1);Opal.defn(self,"$drop_while",TMP_24=function $$drop_while(){var $a,self=this,$iter=TMP_24.$$p,block=$iter||nil;TMP_24.$$p=null;if(block!==nil){}else{return self.$enum_for("drop_while")}var result=[],dropping=true;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(dropping){var value=Opal.yield1(block,param);if(($a=value)===nil||$a==null||$a.$$is_boolean&&$a==false){dropping=false;result.push(param)}}else{result.push(param)}};self.$each();return result},TMP_24.$$arity=0);Opal.defn(self,"$each_cons",TMP_25=function $$each_cons(n){var $a,$b,TMP_26,self=this,$iter=TMP_25.$$p,block=$iter||nil;TMP_25.$$p=null;if(($a=arguments.length!=1)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 1)")}n=$scope.get("Opal").$try_convert(n,$scope.get("Integer"),"to_int");if(($a=n<=0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"invalid size")}if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_26=function(){var self=TMP_26.$$s||this,$c,$d,enum_size=nil;enum_size=self.$enumerator_size();if(($c=enum_size["$nil?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return nil}else if(($c=($d=enum_size["$=="](0))!==false&&$d!==nil&&$d!=null?$d:$rb_lt(enum_size,n))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return 0}else{return $rb_plus($rb_minus(enum_size,n),1)}},TMP_26.$$s=self,TMP_26.$$arity=0,TMP_26),$a).call($b,"each_cons",n)}var buffer=[],result=nil;self.$each.$$p=function(){var element=$scope.get("Opal").$destructure(arguments);buffer.push(element);if(buffer.length>n){buffer.shift()}if(buffer.length==n){Opal.yield1(block,buffer.slice(0,n))}};self.$each();return result},TMP_25.$$arity=1);Opal.defn(self,"$each_entry",TMP_27=function $$each_entry($a_rest){var $b,$c,TMP_28,self=this,data,$iter=TMP_27.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}data=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){data[$arg_idx-0]=arguments[$arg_idx]}TMP_27.$$p=null;if(block!==nil){}else{return($b=($c=self).$to_enum,$b.$$p=(TMP_28=function(){var self=TMP_28.$$s||this;return self.$enumerator_size()},TMP_28.$$s=self,TMP_28.$$arity=0,TMP_28),$b).apply($c,["each_entry"].concat(Opal.to_a(data)))}self.$each.$$p=function(){var item=$scope.get("Opal").$destructure(arguments);Opal.yield1(block,item)};self.$each.apply(self,data);return self},TMP_27.$$arity=-1);Opal.defn(self,"$each_slice",TMP_29=function $$each_slice(n){var $a,$b,TMP_30,self=this,$iter=TMP_29.$$p,block=$iter||nil;TMP_29.$$p=null;n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");if(($a=n<=0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"invalid slice size")}if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_30=function(){var self=TMP_30.$$s||this,$c;if(($c=self["$respond_to?"]("size"))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return $rb_divide(self.$size(),n).$ceil()}else{return nil}},TMP_30.$$s=self,TMP_30.$$arity=0,TMP_30),$a).call($b,"each_slice",n)}var result,slice=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);slice.push(param);if(slice.length===n){Opal.yield1(block,slice);slice=[]}};self.$each();if(result!==undefined){return result}if(slice.length>0){Opal.yield1(block,slice)}return nil},TMP_29.$$arity=1);Opal.defn(self,"$each_with_index",TMP_31=function $$each_with_index($a_rest){var $b,$c,TMP_32,self=this,args,$iter=TMP_31.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_31.$$p=null;if(block!==nil){}else{return($b=($c=self).$enum_for,$b.$$p=(TMP_32=function(){var self=TMP_32.$$s||this;return self.$enumerator_size()},TMP_32.$$s=self,TMP_32.$$arity=0,TMP_32),$b).apply($c,["each_with_index"].concat(Opal.to_a(args)))}var result,index=0;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);block(param,index);index++};self.$each.apply(self,args);if(result!==undefined){return result}return self},TMP_31.$$arity=-1);Opal.defn(self,"$each_with_object",TMP_33=function $$each_with_object(object){var $a,$b,TMP_34,self=this,$iter=TMP_33.$$p,block=$iter||nil;TMP_33.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_34=function(){var self=TMP_34.$$s||this;return self.$enumerator_size()},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34),$a).call($b,"each_with_object",object)}var result;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);block(param,object)};self.$each();if(result!==undefined){return result}return object},TMP_33.$$arity=1);Opal.defn(self,"$entries",TMP_35=function $$entries($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var result=[];self.$each.$$p=function(){result.push($scope.get("Opal").$destructure(arguments))};self.$each.apply(self,args);return result},TMP_35.$$arity=-1);Opal.alias(self,"find","detect");Opal.defn(self,"$find_all",TMP_36=function $$find_all(){var $a,$b,TMP_37,self=this,$iter=TMP_36.$$p,block=$iter||nil;TMP_36.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_37=function(){var self=TMP_37.$$s||this;return self.$enumerator_size()},TMP_37.$$s=self,TMP_37.$$arity=0,TMP_37),$a).call($b,"find_all")}var result=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(($a=value)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result.push(param)}};self.$each();return result},TMP_36.$$arity=0);Opal.defn(self,"$find_index",TMP_38=function $$find_index(object){try{var $a,$b,TMP_39,$c,TMP_40,self=this,$iter=TMP_38.$$p,block=$iter||nil,index=nil;TMP_38.$$p=null;if(($a=object===undefined&&block===nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$enum_for("find_index")}index=0;if(($a=object!=null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){($a=($b=self).$each,$a.$$p=(TMP_39=function($c_rest){var self=TMP_39.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($scope.get("Opal").$destructure(value)["$=="](object)){Opal.ret(index)}return index+=1},TMP_39.$$s=self,TMP_39.$$arity=-1,TMP_39),$a).call($b)}else{($a=($c=self).$each,$a.$$p=(TMP_40=function($d_rest){var self=TMP_40.$$s||this,value,$e;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($e=Opal.yieldX(block,Opal.to_a(value)))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){Opal.ret(index)}return index+=1},TMP_40.$$s=self,TMP_40.$$arity=-1,TMP_40),$a).call($c)}return nil}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_38.$$arity=-1);Opal.defn(self,"$first",TMP_43=function $$first(number){try{var $a,$b,TMP_41,$c,TMP_42,self=this,result=nil,current=nil;if(($a=number===undefined)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=self).$each,$a.$$p=(TMP_41=function(value){var self=TMP_41.$$s||this;if(value==null)value=nil;Opal.ret(value)},TMP_41.$$s=self,TMP_41.$$arity=1,TMP_41),$a).call($b)}else{result=[];number=$scope.get("Opal").$coerce_to(number,$scope.get("Integer"),"to_int");if(($a=number<0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"attempt to take negative size")}if(($a=number==0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[]}current=0;($a=($c=self).$each,$a.$$p=(TMP_42=function($d_rest){var self=TMP_42.$$s||this,args,$e;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}result.push($scope.get("Opal").$destructure(args));if(($e=number<=++current)!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){Opal.ret(result)}else{return nil}},TMP_42.$$s=self,TMP_42.$$arity=-1,TMP_42),$a).call($c);return result}}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_43.$$arity=-1);Opal.alias(self,"flat_map","collect_concat");Opal.defn(self,"$grep",TMP_44=function $$grep(pattern){var $a,self=this,$iter=TMP_44.$$p,block=$iter||nil;TMP_44.$$p=null;var result=[];if(block!==nil){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=pattern["$==="](param);if(($a=value)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){value=Opal.yield1(block,param);result.push(value)}}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=pattern["$==="](param);if(($a=value)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result.push(param)}}}self.$each();return result},TMP_44.$$arity=1);Opal.defn(self,"$group_by",TMP_45=function $$group_by(){var $a,$b,TMP_46,$c,$d,self=this,$iter=TMP_45.$$p,block=$iter||nil,hash=nil;TMP_45.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_46=function(){var self=TMP_46.$$s||this;return self.$enumerator_size()},TMP_46.$$s=self,TMP_46.$$arity=0,TMP_46),$a).call($b,"group_by")}hash=$scope.get("Hash").$new();var result;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);($a=value,$c=hash,($d=$c["$[]"]($a))!==false&&$d!==nil&&$d!=null?$d:$c["$[]="]($a,[]))["$<<"](param)};self.$each();if(result!==undefined){return result}return hash},TMP_45.$$arity=0);Opal.defn(self,"$include?",TMP_48=function(obj){try{var $a,$b,TMP_47,self=this;($a=($b=self).$each,$a.$$p=(TMP_47=function($c_rest){var self=TMP_47.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($scope.get("Opal").$destructure(args)["$=="](obj)){Opal.ret(true)}else{return nil}},TMP_47.$$s=self,TMP_47.$$arity=-1,TMP_47),$a).call($b);return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_48.$$arity=1);Opal.defn(self,"$inject",TMP_49=function $$inject(object,sym){var self=this,$iter=TMP_49.$$p,block=$iter||nil;TMP_49.$$p=null;var result=object;if(block!==nil&&sym===undefined){self.$each.$$p=function(){var value=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=value;return}value=Opal.yieldX(block,[result,value]);result=value}}else{if(sym===undefined){if(!$scope.get("Symbol")["$==="](object)){self.$raise($scope.get("TypeError"),""+object.$inspect()+" is not a Symbol")}sym=object;result=undefined}self.$each.$$p=function(){var value=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=value;return}result=result.$__send__(sym,value)}}self.$each();return result==undefined?nil:result},TMP_49.$$arity=-1);Opal.defn(self,"$lazy",TMP_51=function $$lazy(){var $a,$b,TMP_50,self=this;return($a=($b=$scope.get("Enumerator").$$scope.get("Lazy")).$new,$a.$$p=(TMP_50=function(enum$,$c_rest){var self=TMP_50.$$s||this,args,$d;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;return($d=enum$).$yield.apply($d,Opal.to_a(args))},TMP_50.$$s=self,TMP_50.$$arity=-2,TMP_50),$a).call($b,self,self.$enumerator_size())},TMP_51.$$arity=0);Opal.defn(self,"$enumerator_size",TMP_52=function $$enumerator_size(){var $a,self=this;if(($a=self["$respond_to?"]("size"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$size()}else{return nil}},TMP_52.$$arity=0);Opal.alias(self,"map","collect");Opal.defn(self,"$max",TMP_53=function $$max(n){var $a,$b,self=this,$iter=TMP_53.$$p,block=$iter||nil;TMP_53.$$p=null;if(n===undefined||n===nil){var result,value;self.$each.$$p=function(){var item=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=item;return}if(block!==nil){value=Opal.yieldX(block,[item,result])}else{value=item["$<=>"](result)}if(value===nil){self.$raise($scope.get("ArgumentError"),"comparison failed")}if(value>0){result=item}};self.$each();if(result===undefined){return nil}else{return result}}n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");return($a=($b=self).$sort,$a.$$p=block.$to_proc(),$a).call($b).$reverse().$first(n)},TMP_53.$$arity=-1);Opal.defn(self,"$max_by",TMP_54=function $$max_by(){var $a,$b,TMP_55,self=this,$iter=TMP_54.$$p,block=$iter||nil;TMP_54.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_55=function(){var self=TMP_55.$$s||this;return self.$enumerator_size()},TMP_55.$$s=self,TMP_55.$$arity=0,TMP_55),$a).call($b,"max_by")}var result,by;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)>0){result=param;by=value}};self.$each();return result===undefined?nil:result},TMP_54.$$arity=0);Opal.alias(self,"member?","include?");Opal.defn(self,"$min",TMP_56=function $$min(){var self=this,$iter=TMP_56.$$p,block=$iter||nil;TMP_56.$$p=null;var result;if(block!==nil){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=param;return}var value=block(param,result);if(value===nil){self.$raise($scope.get("ArgumentError"),"comparison failed")}if(value<0){result=param}}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=param;return}if($scope.get("Opal").$compare(param,result)<0){result=param}}}self.$each();return result===undefined?nil:result},TMP_56.$$arity=0);Opal.defn(self,"$min_by",TMP_57=function $$min_by(){var $a,$b,TMP_58,self=this,$iter=TMP_57.$$p,block=$iter||nil;TMP_57.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_58=function(){var self=TMP_58.$$s||this;return self.$enumerator_size()},TMP_58.$$s=self,TMP_58.$$arity=0,TMP_58),$a).call($b,"min_by")}var result,by;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)<0){result=param;by=value}};self.$each();return result===undefined?nil:result},TMP_57.$$arity=0);Opal.defn(self,"$minmax",TMP_59=function $$minmax(){var $a,$b,$c,TMP_60,self=this,$iter=TMP_59.$$p,block=$iter||nil;TMP_59.$$p=null;($a=block)!==false&&$a!==nil&&$a!=null?$a:block=($b=($c=self).$proc,$b.$$p=(TMP_60=function(a,b){var self=TMP_60.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$<=>"](b)},TMP_60.$$s=self,TMP_60.$$arity=2,TMP_60),$b).call($c);var min=nil,max=nil,first_time=true;self.$each.$$p=function(){var element=$scope.get("Opal").$destructure(arguments);if(first_time){min=max=element;first_time=false}else{var min_cmp=block.$call(min,element);if(min_cmp===nil){self.$raise($scope.get("ArgumentError"),"comparison failed")}else if(min_cmp>0){min=element}var max_cmp=block.$call(max,element);if(max_cmp===nil){self.$raise($scope.get("ArgumentError"),"comparison failed")}else if(max_cmp<0){max=element}}};self.$each();return[min,max]},TMP_59.$$arity=0);Opal.defn(self,"$minmax_by",TMP_61=function $$minmax_by(){var self=this,$iter=TMP_61.$$p,block=$iter||nil;TMP_61.$$p=null;return self.$raise($scope.get("NotImplementedError"))},TMP_61.$$arity=0);Opal.defn(self,"$none?",TMP_62=function(){try{var $a,$b,TMP_63,$c,TMP_64,self=this,$iter=TMP_62.$$p,block=$iter||nil;TMP_62.$$p=null;if(block!==nil){($a=($b=self).$each,$a.$$p=(TMP_63=function($c_rest){var self=TMP_63.$$s||this,value,$d;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($d=Opal.yieldX(block,Opal.to_a(value)))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){Opal.ret(false)}else{return nil}},TMP_63.$$s=self,TMP_63.$$arity=-1,TMP_63),$a).call($b)}else{($a=($c=self).$each,$a.$$p=(TMP_64=function($d_rest){var self=TMP_64.$$s||this,value,$e;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($e=$scope.get("Opal").$destructure(value))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){Opal.ret(false)}else{return nil}},TMP_64.$$s=self,TMP_64.$$arity=-1,TMP_64),$a).call($c)}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_62.$$arity=0);Opal.defn(self,"$one?",TMP_65=function(){try{var $a,$b,TMP_66,$c,TMP_67,self=this,$iter=TMP_65.$$p,block=$iter||nil,count=nil;TMP_65.$$p=null;count=0;if(block!==nil){($a=($b=self).$each,$a.$$p=(TMP_66=function($c_rest){var self=TMP_66.$$s||this,value,$d;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($d=Opal.yieldX(block,Opal.to_a(value)))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){count=$rb_plus(count,1);if(($d=$rb_gt(count,1))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){Opal.ret(false)}else{return nil}}else{return nil}},TMP_66.$$s=self,TMP_66.$$arity=-1,TMP_66),$a).call($b)}else{($a=($c=self).$each,$a.$$p=(TMP_67=function($d_rest){var self=TMP_67.$$s||this,value,$e;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(($e=$scope.get("Opal").$destructure(value))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){count=$rb_plus(count,1);if(($e=$rb_gt(count,1))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){Opal.ret(false)}else{return nil}}else{return nil}},TMP_67.$$s=self,TMP_67.$$arity=-1,TMP_67),$a).call($c)}return count["$=="](1)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_65.$$arity=0);Opal.defn(self,"$partition",TMP_68=function $$partition(){var $a,$b,TMP_69,self=this,$iter=TMP_68.$$p,block=$iter||nil;TMP_68.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_69=function(){var self=TMP_69.$$s||this;return self.$enumerator_size()},TMP_69.$$s=self,TMP_69.$$arity=0,TMP_69),$a).call($b,"partition")}var truthy=[],falsy=[],result;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(($a=value)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){truthy.push(param)}else{falsy.push(param)}};self.$each();return[truthy,falsy]},TMP_68.$$arity=0);Opal.alias(self,"reduce","inject");Opal.defn(self,"$reject",TMP_70=function $$reject(){var $a,$b,TMP_71,self=this,$iter=TMP_70.$$p,block=$iter||nil;TMP_70.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_71=function(){var self=TMP_71.$$s||this;return self.$enumerator_size()},TMP_71.$$s=self,TMP_71.$$arity=0,TMP_71),$a).call($b,"reject")}var result=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(($a=value)===nil||$a==null||$a.$$is_boolean&&$a==false){result.push(param)}};self.$each();return result},TMP_70.$$arity=0);Opal.defn(self,"$reverse_each",TMP_72=function $$reverse_each(){var $a,$b,TMP_73,self=this,$iter=TMP_72.$$p,block=$iter||nil;TMP_72.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_73=function(){var self=TMP_73.$$s||this;return self.$enumerator_size()},TMP_73.$$s=self,TMP_73.$$arity=0,TMP_73),$a).call($b,"reverse_each")}var result=[];self.$each.$$p=function(){result.push(arguments)};self.$each();for(var i=result.length-1;i>=0;i--){Opal.yieldX(block,result[i])}return result},TMP_72.$$arity=0);Opal.alias(self,"select","find_all");Opal.defn(self,"$slice_before",TMP_74=function $$slice_before(pattern){var $a,$b,TMP_75,self=this,$iter=TMP_74.$$p,block=$iter||nil;TMP_74.$$p=null;if(($a=pattern===undefined&&block===nil||arguments.length>1)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 1)")}return($a=($b=$scope.get("Enumerator")).$new,$a.$$p=(TMP_75=function(e){var self=TMP_75.$$s||this,$c;if(e==null)e=nil;var slice=[];if(block!==nil){if(pattern===undefined){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(($c=value)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=block(param,pattern.$dup());if(($c=value)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=pattern["$==="](param);if(($c=value)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}self.$each();if(slice.length>0){e["$<<"](slice)}},TMP_75.$$s=self,TMP_75.$$arity=1,TMP_75),$a).call($b)},TMP_74.$$arity=-1);Opal.defn(self,"$sort",TMP_76=function $$sort(){var $a,$b,TMP_77,$c,self=this,$iter=TMP_76.$$p,block=$iter||nil,ary=nil;TMP_76.$$p=null;ary=self.$to_a();if(block!==nil){}else{block=($a=($b=self).$lambda,$a.$$p=(TMP_77=function(a,b){var self=TMP_77.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$<=>"](b)},TMP_77.$$s=self,TMP_77.$$arity=2,TMP_77),$a).call($b)}return($a=($c=ary).$sort,$a.$$p=block.$to_proc(),$a).call($c)},TMP_76.$$arity=0);Opal.defn(self,"$sort_by",TMP_78=function $$sort_by(){var $a,$b,TMP_79,$c,TMP_80,$d,TMP_81,$e,TMP_82,self=this,$iter=TMP_78.$$p,block=$iter||nil,dup=nil;TMP_78.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_79=function(){var self=TMP_79.$$s||this;return self.$enumerator_size()},TMP_79.$$s=self,TMP_79.$$arity=0,TMP_79),$a).call($b,"sort_by")}dup=($a=($c=self).$map,$a.$$p=(TMP_80=function(){var self=TMP_80.$$s||this,$yielded,arg=nil;arg=$scope.get("Opal").$destructure(arguments);$yielded=Opal.yield1(block,arg);return[$yielded,arg]},TMP_80.$$s=self,TMP_80.$$arity=0,TMP_80),$a).call($c);($a=($d=dup)["$sort!"],$a.$$p=(TMP_81=function(a,b){var self=TMP_81.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a[0]["$<=>"](b[0])},TMP_81.$$s=self,TMP_81.$$arity=2,TMP_81),$a).call($d);return($a=($e=dup)["$map!"],$a.$$p=(TMP_82=function(i){var self=TMP_82.$$s||this;if(i==null)i=nil;return i[1]},TMP_82.$$s=self,TMP_82.$$arity=1,TMP_82),$a).call($e)},TMP_78.$$arity=0);Opal.defn(self,"$take",TMP_83=function $$take(num){var self=this;return self.$first(num)},TMP_83.$$arity=1);Opal.defn(self,"$take_while",TMP_84=function $$take_while(){try{var $a,$b,TMP_85,self=this,$iter=TMP_84.$$p,block=$iter||nil,result=nil;TMP_84.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return self.$enum_for("take_while")}result=[];return($a=($b=self).$each,$a.$$p=(TMP_85=function($c_rest){var self=TMP_85.$$s||this,args,$d,value=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}value=$scope.get("Opal").$destructure(args);if(($d=Opal.yield1(block,value))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){}else{Opal.ret(result)}return result.push(value)},TMP_85.$$s=self,TMP_85.$$arity=-1,TMP_85),$a).call($b)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_84.$$arity=0);Opal.alias(self,"to_a","entries");Opal.defn(self,"$zip",TMP_86=function $$zip($a_rest){var $b,self=this,others,$iter=TMP_86.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}others=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){others[$arg_idx-0]=arguments[$arg_idx]}TMP_86.$$p=null;return($b=self.$to_a()).$zip.apply($b,Opal.to_a(others))},TMP_86.$$arity=-1)}($scope.base)};Opal.modules["corelib/enumerator"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$allocate","$new","$to_proc","$coerce_to","$nil?","$empty?","$+","$class","$__send__","$===","$call","$enum_for","$size","$destructure","$inspect","$[]","$raise","$yield","$each","$enumerator_size","$respond_to?","$try_convert","$<","$for"]);self.$require("corelib/enumerable");return function($base,$super){function $Enumerator(){}var self=$Enumerator=$klass($base,$super,"Enumerator",$Enumerator);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_7;def.size=def.args=def.object=def.method=nil;self.$include($scope.get("Enumerable"));def.$$is_enumerator=true;Opal.defs(self,"$for",TMP_1=function(object,method,$a_rest){var self=this,args,$iter=TMP_1.$$p,block=$iter||nil;if(method==null){method="each"}var $args_len=arguments.length,$rest_len=$args_len-2;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=2;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-2]=arguments[$arg_idx]}TMP_1.$$p=null;var obj=self.$allocate();obj.object=object;obj.size=block;obj.method=method;obj.args=args;return obj},TMP_1.$$arity=-2);Opal.defn(self,"$initialize",TMP_2=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;if(block!==false&&block!==nil&&block!=null){self.object=($b=($c=$scope.get("Generator")).$new,$b.$$p=block.$to_proc(),$b).call($c);self.method="each";self.args=[];self.size=arguments[0]||nil;if(($b=self.size)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.size=$scope.get("Opal").$coerce_to(self.size,$scope.get("Integer"),"to_int")}else{return nil}}else{self.object=arguments[0];self.method=arguments[1]||"each";self.args=$slice.call(arguments,2);return self.size=nil}},TMP_2.$$arity=-1);Opal.defn(self,"$each",TMP_3=function $$each($a_rest){var $b,$c,$d,self=this,args,$iter=TMP_3.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_3.$$p=null;if(($b=($c=block["$nil?"](),$c!==false&&$c!==nil&&$c!=null?args["$empty?"]():$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self}args=$rb_plus(self.args,args);if(($b=block["$nil?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return($b=self.$class()).$new.apply($b,[self.object,self.method].concat(Opal.to_a(args)))}return($c=($d=self.object).$__send__,$c.$$p=block.$to_proc(),$c).apply($d,[self.method].concat(Opal.to_a(args)))},TMP_3.$$arity=-1);Opal.defn(self,"$size",TMP_4=function $$size(){var $a,self=this;if(($a=$scope.get("Proc")["$==="](self.size))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=self.size).$call.apply($a,Opal.to_a(self.args))}else{return self.size}},TMP_4.$$arity=0);Opal.defn(self,"$with_index",TMP_5=function $$with_index(offset){var $a,$b,TMP_6,self=this,$iter=TMP_5.$$p,block=$iter||nil;if(offset==null){offset=0}TMP_5.$$p=null;if(offset!==false&&offset!==nil&&offset!=null){offset=$scope.get("Opal").$coerce_to(offset,$scope.get("Integer"),"to_int")}else{offset=0}if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_6=function(){var self=TMP_6.$$s||this;return self.$size()},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6),$a).call($b,"with_index",offset)}var result,index=offset;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=block(param,index);index++;return value};return self.$each()},TMP_5.$$arity=-1);Opal.alias(self,"with_object","each_with_object");Opal.defn(self,"$inspect",TMP_7=function $$inspect(){var $a,self=this,result=nil;result="#<"+self.$class()+": "+self.object.$inspect()+":"+self.method;if(($a=self.args["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{result=$rb_plus(result,"("+self.args.$inspect()["$[]"]($scope.get("Range").$new(1,-2))+")")}return $rb_plus(result,">")},TMP_7.$$arity=0);(function($base,$super){function $Generator(){}var self=$Generator=$klass($base,$super,"Generator",$Generator);var def=self.$$proto,$scope=self.$$scope,TMP_8,TMP_9;def.block=nil;self.$include($scope.get("Enumerable"));Opal.defn(self,"$initialize",TMP_8=function $$initialize(){var self=this,$iter=TMP_8.$$p,block=$iter||nil;TMP_8.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("LocalJumpError"),"no block given")}return self.block=block},TMP_8.$$arity=0);return(Opal.defn(self,"$each",TMP_9=function $$each($a_rest){var $b,$c,self=this,args,$iter=TMP_9.$$p,block=$iter||nil,yielder=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_9.$$p=null;yielder=($b=($c=$scope.get("Yielder")).$new,$b.$$p=block.$to_proc(),$b).call($c);try{args.unshift(yielder);Opal.yieldX(self.block,args)}catch(e){if(e===$breaker){return $breaker.$v}else{throw e}}return self},TMP_9.$$arity=-1),nil)&&"each"})($scope.base,null);(function($base,$super){function $Yielder(){}var self=$Yielder=$klass($base,$super,"Yielder",$Yielder);var def=self.$$proto,$scope=self.$$scope,TMP_10,TMP_11,TMP_12;def.block=nil;Opal.defn(self,"$initialize",TMP_10=function $$initialize(){var self=this,$iter=TMP_10.$$p,block=$iter||nil;TMP_10.$$p=null;return self.block=block},TMP_10.$$arity=0);Opal.defn(self,"$yield",TMP_11=function($a_rest){var self=this,values;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}values=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){values[$arg_idx-0]=arguments[$arg_idx]}var value=Opal.yieldX(self.block,values);if(value===$breaker){throw $breaker}return value},TMP_11.$$arity=-1);return(Opal.defn(self,"$<<",TMP_12=function($a_rest){var $b,self=this,values;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}values=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){values[$arg_idx-0]=arguments[$arg_idx]}($b=self).$yield.apply($b,Opal.to_a(values));return self},TMP_12.$$arity=-1),nil)&&"<<"})($scope.base,null);return function($base,$super){function $Lazy(){}var self=$Lazy=$klass($base,$super,"Lazy",$Lazy);var def=self.$$proto,$scope=self.$$scope,TMP_13,TMP_16,TMP_17,TMP_19,TMP_24,TMP_25,TMP_27,TMP_28,TMP_30,TMP_33,TMP_36,TMP_37,TMP_39;def.enumerator=nil;(function($base,$super){function $StopLazyError(){}var self=$StopLazyError=$klass($base,$super,"StopLazyError",$StopLazyError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("Exception"));Opal.defn(self,"$initialize",TMP_13=function $$initialize(object,size){var $a,$b,TMP_14,self=this,$iter=TMP_13.$$p,block=$iter||nil;if(size==null){size=nil}TMP_13.$$p=null;if(block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy new without a block")}self.enumerator=object;return($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_13,false)),$a.$$p=(TMP_14=function(yielder,$c_rest){var self=TMP_14.$$s||this,each_args,$d,$e,TMP_15;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}each_args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){each_args[$arg_idx-1]=arguments[$arg_idx]}if(yielder==null)yielder=nil;try{return($d=($e=object).$each,$d.$$p=(TMP_15=function($c_rest){var self=TMP_15.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}args.unshift(yielder);Opal.yieldX(block,args)},TMP_15.$$s=self,TMP_15.$$arity=-1,TMP_15),$d).apply($e,Opal.to_a(each_args))}catch($err){if(Opal.rescue($err,[$scope.get("Exception")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},TMP_14.$$s=self,TMP_14.$$arity=-2,TMP_14),$a).call($b,size)},TMP_13.$$arity=-2);Opal.alias(self,"force","to_a");Opal.defn(self,"$lazy",TMP_16=function $$lazy(){var self=this;return self},TMP_16.$$arity=0);Opal.defn(self,"$collect",TMP_17=function $$collect(){var $a,$b,TMP_18,self=this,$iter=TMP_17.$$p,block=$iter||nil;TMP_17.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy map without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_18=function(enum$,$c_rest){var self=TMP_18.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);enum$.$yield(value)},TMP_18.$$s=self,TMP_18.$$arity=-2,TMP_18),$a).call($b,self,self.$enumerator_size())},TMP_17.$$arity=0);Opal.defn(self,"$collect_concat",TMP_19=function $$collect_concat(){var $a,$b,TMP_20,self=this,$iter=TMP_19.$$p,block=$iter||nil;TMP_19.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy map without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_20=function(enum$,$c_rest){var self=TMP_20.$$s||this,args,$d,$e,TMP_21,$f,TMP_22;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if(value["$respond_to?"]("force")&&value["$respond_to?"]("each")){($d=($e=value).$each,$d.$$p=(TMP_21=function(v){var self=TMP_21.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21),$d).call($e)}else{var array=$scope.get("Opal").$try_convert(value,$scope.get("Array"),"to_ary");if(array===nil){enum$.$yield(value)}else{($d=($f=value).$each,$d.$$p=(TMP_22=function(v){var self=TMP_22.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22),$d).call($f)}}},TMP_20.$$s=self,TMP_20.$$arity=-2,TMP_20),$a).call($b,self,nil)},TMP_19.$$arity=0);Opal.defn(self,"$drop",TMP_24=function $$drop(n){var $a,$b,TMP_23,self=this,current_size=nil,set_size=nil,dropped=nil;n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");if(($a=$rb_lt(n,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"attempt to drop negative size")}current_size=self.$enumerator_size();set_size=function(){if(($a=$scope.get("Integer")["$==="](current_size))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$rb_lt(n,current_size))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return n}else{return current_size}}else{return current_size}return nil}();dropped=0;return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_23=function(enum$,$c_rest){var self=TMP_23.$$s||this,args,$d;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if(($d=$rb_lt(dropped,n))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){return dropped=$rb_plus(dropped,1)}else{return($d=enum$).$yield.apply($d,Opal.to_a(args))}},TMP_23.$$s=self,TMP_23.$$arity=-2,TMP_23),$a).call($b,self,set_size)},TMP_24.$$arity=1);Opal.defn(self,"$drop_while",TMP_25=function $$drop_while(){var $a,$b,TMP_26,self=this,$iter=TMP_25.$$p,block=$iter||nil,succeeding=nil;TMP_25.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy drop_while without a block")}succeeding=true;return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_26=function(enum$,$c_rest){var self=TMP_26.$$s||this,args,$d,$e;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if(succeeding!==false&&succeeding!==nil&&succeeding!=null){var value=Opal.yieldX(block,args);if(($d=value)===nil||$d==null||$d.$$is_boolean&&$d==false){succeeding=false;($d=enum$).$yield.apply($d,Opal.to_a(args))}}else{return($e=enum$).$yield.apply($e,Opal.to_a(args))}},TMP_26.$$s=self,TMP_26.$$arity=-2,TMP_26),$a).call($b,self,nil)},TMP_25.$$arity=0);Opal.defn(self,"$enum_for",TMP_27=function $$enum_for(method,$a_rest){var $b,$c,self=this,args,$iter=TMP_27.$$p,block=$iter||nil;if(method==null){method="each"}var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_27.$$p=null;return($b=($c=self.$class()).$for,$b.$$p=block.$to_proc(),$b).apply($c,[self,method].concat(Opal.to_a(args)))},TMP_27.$$arity=-1);Opal.defn(self,"$find_all",TMP_28=function $$find_all(){var $a,$b,TMP_29,self=this,$iter=TMP_28.$$p,block=$iter||nil;TMP_28.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy select without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_29=function(enum$,$c_rest){var self=TMP_29.$$s||this,args,$d;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if(($d=value)!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){($d=enum$).$yield.apply($d,Opal.to_a(args))}},TMP_29.$$s=self,TMP_29.$$arity=-2,TMP_29),$a).call($b,self,nil)},TMP_28.$$arity=0);Opal.alias(self,"flat_map","collect_concat");Opal.defn(self,"$grep",TMP_30=function $$grep(pattern){var $a,$b,TMP_31,$c,TMP_32,self=this,$iter=TMP_30.$$p,block=$iter||nil;TMP_30.$$p=null;if(block!==false&&block!==nil&&block!=null){return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_31=function(enum$,$c_rest){var self=TMP_31.$$s||this,args,$d;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var param=$scope.get("Opal").$destructure(args),value=pattern["$==="](param);if(($d=value)!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){value=Opal.yield1(block,param);enum$.$yield(Opal.yield1(block,param))}},TMP_31.$$s=self,TMP_31.$$arity=-2,TMP_31),$a).call($b,self,nil)}else{return($a=($c=$scope.get("Lazy")).$new,$a.$$p=(TMP_32=function(enum$,$d_rest){var self=TMP_32.$$s||this,args,$e;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var param=$scope.get("Opal").$destructure(args),value=pattern["$==="](param);if(($e=value)!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){enum$.$yield(param)}},TMP_32.$$s=self,TMP_32.$$arity=-2,TMP_32),$a).call($c,self,nil)}},TMP_30.$$arity=1);Opal.alias(self,"map","collect");Opal.alias(self,"select","find_all");Opal.defn(self,"$reject",TMP_33=function $$reject(){var $a,$b,TMP_34,self=this,$iter=TMP_33.$$p,block=$iter||nil;TMP_33.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy reject without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_34=function(enum$,$c_rest){var self=TMP_34.$$s||this,args,$d;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if(($d=value)===nil||$d==null||$d.$$is_boolean&&$d==false){($d=enum$).$yield.apply($d,Opal.to_a(args))}},TMP_34.$$s=self,TMP_34.$$arity=-2,TMP_34),$a).call($b,self,nil)},TMP_33.$$arity=0);Opal.defn(self,"$take",TMP_36=function $$take(n){var $a,$b,TMP_35,self=this,current_size=nil,set_size=nil,taken=nil;n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");if(($a=$rb_lt(n,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"attempt to take negative size")}current_size=self.$enumerator_size();set_size=function(){if(($a=$scope.get("Integer")["$==="](current_size))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$rb_lt(n,current_size))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return n}else{return current_size}}else{return current_size}return nil}();taken=0;return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_35=function(enum$,$c_rest){var self=TMP_35.$$s||this,args,$d;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if(($d=$rb_lt(taken,n))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){($d=enum$).$yield.apply($d,Opal.to_a(args));return taken=$rb_plus(taken,1)}else{return self.$raise($scope.get("StopLazyError"))}},TMP_35.$$s=self,TMP_35.$$arity=-2,TMP_35),$a).call($b,self,set_size)},TMP_36.$$arity=1);Opal.defn(self,"$take_while",TMP_37=function $$take_while(){var $a,$b,TMP_38,self=this,$iter=TMP_37.$$p,block=$iter||nil;TMP_37.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy take_while without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_38=function(enum$,$c_rest){var self=TMP_38.$$s||this,args,$d;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if(($d=value)!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){($d=enum$).$yield.apply($d,Opal.to_a(args))}else{self.$raise($scope.get("StopLazyError"))}},TMP_38.$$s=self,TMP_38.$$arity=-2,TMP_38),$a).call($b,self,nil)},TMP_37.$$arity=0);Opal.alias(self,"to_enum","enum_for");return(Opal.defn(self,"$inspect",TMP_39=function $$inspect(){var self=this;return"#<"+self.$class()+": "+self.enumerator.$inspect()+">"},TMP_39.$$arity=0),nil)&&"inspect"}($scope.base,self)}($scope.base,null)};Opal.modules["corelib/numeric"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$instance_of?","$class","$Float","$coerce","$===","$raise","$__send__","$equal?","$coerce_to!","$-@","$**","$-","$*","$div","$<","$ceil","$to_f","$denominator","$to_r","$==","$floor","$/","$%","$Complex","$zero?","$numerator","$abs","$arg","$round","$to_i","$truncate","$>"]);self.$require("corelib/comparable");return function($base,$super){function $Numeric(){}var self=$Numeric=$klass($base,$super,"Numeric",$Numeric);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36;self.$include($scope.get("Comparable"));Opal.defn(self,"$coerce",TMP_1=function $$coerce(other){var $a,self=this;if(($a=other["$instance_of?"](self.$class()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[other,self]}return[self.$Float(other),self.$Float(self)]},TMP_1.$$arity=1);Opal.defn(self,"$__coerced__",TMP_2=function $$__coerced__(method,other){var $a,$b,self=this,a=nil,b=nil,$case=nil;try{$b=other.$coerce(self),$a=Opal.to_ary($b),a=$a[0]==null?nil:$a[0],b=$a[1]==null?nil:$a[1],$b}catch($err){if(Opal.rescue($err,[$scope.get("StandardError")])){try{$case=method;if("+"["$==="]($case)||"-"["$==="]($case)||"*"["$==="]($case)||"/"["$==="]($case)||"%"["$==="]($case)||"&"["$==="]($case)||"|"["$==="]($case)||"^"["$==="]($case)||"**"["$==="]($case)){self.$raise($scope.get("TypeError"),""+other.$class()+" can't be coerce into Numeric")}else if(">"["$==="]($case)||">="["$==="]($case)||"<"["$==="]($case)||"<="["$==="]($case)||"<=>"["$==="]($case)){self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}}finally{Opal.pop_exception()}}else{throw $err}}return a.$__send__(method,b)},TMP_2.$$arity=2);Opal.defn(self,"$<=>",TMP_3=function(other){var $a,self=this;if(($a=self["$equal?"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return 0}return nil},TMP_3.$$arity=1);Opal.defn(self,"$[]",TMP_4=function(bit){var self=this,min=nil,max=nil;bit=$scope.get("Opal")["$coerce_to!"](bit,$scope.get("Integer"),"to_int");min=2["$**"](30)["$-@"]();max=$rb_minus(2["$**"](30),1);return bit<min||bit>max?0:(self>>bit)%2},TMP_4.$$arity=1);Opal.defn(self,"$+@",TMP_5=function(){var self=this;return self},TMP_5.$$arity=0);Opal.defn(self,"$-@",TMP_6=function(){var self=this;return $rb_minus(0,self)},TMP_6.$$arity=0);Opal.defn(self,"$%",TMP_7=function(other){var self=this;return $rb_minus(self,$rb_times(other,self.$div(other)))},TMP_7.$$arity=1);Opal.defn(self,"$abs",TMP_8=function $$abs(){var self=this;if($rb_lt(self,0)){return self["$-@"]()}else{return self}},TMP_8.$$arity=0);Opal.defn(self,"$abs2",TMP_9=function $$abs2(){var self=this;return $rb_times(self,self)},TMP_9.$$arity=0);Opal.defn(self,"$angle",TMP_10=function $$angle(){var self=this;if($rb_lt(self,0)){return $scope.get("Math").$$scope.get("PI")}else{return 0}},TMP_10.$$arity=0);Opal.alias(self,"arg","angle");Opal.defn(self,"$ceil",TMP_11=function $$ceil(){var self=this;return self.$to_f().$ceil()},TMP_11.$$arity=0);Opal.defn(self,"$conj",TMP_12=function $$conj(){var self=this;return self},TMP_12.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.defn(self,"$denominator",TMP_13=function $$denominator(){var self=this;return self.$to_r().$denominator()},TMP_13.$$arity=0);Opal.defn(self,"$div",TMP_14=function $$div(other){var self=this;if(other["$=="](0)){self.$raise($scope.get("ZeroDivisionError"),"divided by o")}return $rb_divide(self,other).$floor()},TMP_14.$$arity=1);Opal.defn(self,"$divmod",TMP_15=function $$divmod(other){var self=this;return[self.$div(other),self["$%"](other)]},TMP_15.$$arity=1);Opal.defn(self,"$fdiv",TMP_16=function $$fdiv(other){var self=this;return $rb_divide(self.$to_f(),other)},TMP_16.$$arity=1);Opal.defn(self,"$floor",TMP_17=function $$floor(){var self=this;return self.$to_f().$floor()},TMP_17.$$arity=0);Opal.defn(self,"$i",TMP_18=function $$i(){var self=this;return self.$Complex(0,self)},TMP_18.$$arity=0);Opal.defn(self,"$imag",TMP_19=function $$imag(){var self=this;return 0},TMP_19.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.defn(self,"$integer?",TMP_20=function(){var self=this;return false},TMP_20.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.defn(self,"$nonzero?",TMP_21=function(){var $a,self=this;if(($a=self["$zero?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self}},TMP_21.$$arity=0);Opal.defn(self,"$numerator",TMP_22=function $$numerator(){var self=this;return self.$to_r().$numerator()},TMP_22.$$arity=0);Opal.alias(self,"phase","arg");Opal.defn(self,"$polar",TMP_23=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},TMP_23.$$arity=0);Opal.defn(self,"$quo",TMP_24=function $$quo(other){var self=this;return $rb_divide($scope.get("Opal")["$coerce_to!"](self,$scope.get("Rational"),"to_r"),other)},TMP_24.$$arity=1);Opal.defn(self,"$real",TMP_25=function $$real(){var self=this;return self},TMP_25.$$arity=0);Opal.defn(self,"$real?",TMP_26=function(){var self=this;return true},TMP_26.$$arity=0);Opal.defn(self,"$rect",TMP_27=function $$rect(){var self=this;return[self,0]},TMP_27.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.defn(self,"$round",TMP_28=function $$round(digits){var self=this;return self.$to_f().$round(digits)},TMP_28.$$arity=-1);Opal.defn(self,"$to_c",TMP_29=function $$to_c(){var self=this;return self.$Complex(self,0)},TMP_29.$$arity=0);Opal.defn(self,"$to_int",TMP_30=function $$to_int(){var self=this;return self.$to_i()},TMP_30.$$arity=0);Opal.defn(self,"$truncate",TMP_31=function $$truncate(){var self=this;return self.$to_f().$truncate()},TMP_31.$$arity=0);Opal.defn(self,"$zero?",TMP_32=function(){var self=this;return self["$=="](0)},TMP_32.$$arity=0);Opal.defn(self,"$positive?",TMP_33=function(){var self=this;return $rb_gt(self,0)},TMP_33.$$arity=0);Opal.defn(self,"$negative?",TMP_34=function(){var self=this;return $rb_lt(self,0)},TMP_34.$$arity=0);Opal.defn(self,"$dup",TMP_35=function $$dup(){var self=this;return self.$raise($scope.get("TypeError"),"can't dup "+self.$class())},TMP_35.$$arity=0);return(Opal.defn(self,"$clone",TMP_36=function $$clone(){var self=this;return self.$raise($scope.get("TypeError"),"can't clone "+self.$class())},TMP_36.$$arity=0),nil)&&"clone"}($scope.base,null)};Opal.modules["corelib/array"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2,$gvars=Opal.gvars;Opal.add_stubs(["$require","$include","$to_a","$raise","$===","$replace","$respond_to?","$to_ary","$coerce_to","$coerce_to?","$join","$to_str","$class","$clone","$hash","$<=>","$==","$object_id","$inspect","$enum_for","$coerce_to!","$>","$*","$enumerator_size","$empty?","$size","$eql?","$length","$begin","$end","$exclude_end?","$flatten","$__id__","$[]","$to_s","$new","$!","$>=","$**","$delete_if","$to_proc","$each","$reverse","$rotate","$rand","$at","$keep_if","$shuffle!","$dup","$<","$sort","$sort_by","$!=","$times","$[]=","$<<","$values","$kind_of?","$last","$first","$upto","$reject","$pristine"]);self.$require("corelib/enumerable");self.$require("corelib/numeric");return function($base,$super){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_19,TMP_20,TMP_21,TMP_22,TMP_24,TMP_26,TMP_28,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_37,TMP_38,TMP_39,TMP_41,TMP_43,TMP_44,TMP_45,TMP_46,TMP_47,TMP_48,TMP_49,TMP_50,TMP_51,TMP_52,TMP_53,TMP_54,TMP_55,TMP_56,TMP_58,TMP_59,TMP_60,TMP_62,TMP_64,TMP_65,TMP_66,TMP_67,TMP_68,TMP_70,TMP_72,TMP_73,TMP_74,TMP_75,TMP_77,TMP_78,TMP_79,TMP_82,TMP_83,TMP_85,TMP_87,TMP_88,TMP_89,TMP_90,TMP_91,TMP_92,TMP_93,TMP_95,TMP_96,TMP_97,TMP_98,TMP_101,TMP_102,TMP_103,TMP_104,TMP_107,TMP_108,TMP_109,TMP_111;def.length=nil;self.$include($scope.get("Enumerable"));def.$$is_array=true;function toArraySubclass(obj,klass){if(klass.$$name===Opal.Array){return obj}else{return klass.$allocate().$replace(obj.$to_a())}}Opal.defs(self,"$[]",TMP_1=function($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}return toArraySubclass(objects,self)},TMP_1.$$arity=-1);Opal.defn(self,"$initialize",TMP_2=function $$initialize(size,obj){var $a,self=this,$iter=TMP_2.$$p,block=$iter||nil;if(size==null){size=nil}if(obj==null){obj=nil}TMP_2.$$p=null;if(($a=arguments.length>2)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..2)")}if(arguments.length===0){self.splice(0,self.length);return self}if(($a=arguments.length===1)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$scope.get("Array")["$==="](size))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$replace(size.$to_a());return self}else if(($a=size["$respond_to?"]("to_ary"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$replace(size.$to_ary());return self}}size=$scope.get("Opal").$coerce_to(size,$scope.get("Integer"),"to_int");if(($a=size<0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative array size")}self.splice(0,self.length);var i,value;if(block===nil){for(i=0;i<size;i++){self.push(obj)}}else{for(i=0,value;i<size;i++){value=block(i);self[i]=value}}return self},TMP_2.$$arity=-1);Opal.defs(self,"$try_convert",TMP_3=function $$try_convert(obj){var self=this;return $scope.get("Opal")["$coerce_to?"](obj,$scope.get("Array"),"to_ary")},TMP_3.$$arity=1);Opal.defn(self,"$&",TMP_4=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}var result=[],hash=$hash2([],{}),i,length,item;for(i=0,length=other.length;i<length;i++){Opal.hash_put(hash,other[i],true)}for(i=0,length=self.length;i<length;i++){item=self[i];if(Opal.hash_delete(hash,item)!==undefined){result.push(item)}}return result},TMP_4.$$arity=1);Opal.defn(self,"$|",TMP_5=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}var hash=$hash2([],{}),i,length,item;for(i=0,length=self.length;i<length;i++){Opal.hash_put(hash,self[i],true)}for(i=0,length=other.length;i<length;i++){Opal.hash_put(hash,other[i],true)}return hash.$keys()},TMP_5.$$arity=1);Opal.defn(self,"$*",TMP_6=function(other){var $a,self=this;if(($a=other["$respond_to?"]("to_str"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$join(other.$to_str())}other=$scope.get("Opal").$coerce_to(other,$scope.get("Integer"),"to_int");if(($a=other<0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative argument")}var result=[],converted=self.$to_a();for(var i=0;i<other;i++){result=result.concat(converted)}return toArraySubclass(result,self.$class())},TMP_6.$$arity=1);Opal.defn(self,"$+",TMP_7=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}return self.concat(other)},TMP_7.$$arity=1);Opal.defn(self,"$-",TMP_8=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}if(($a=self.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[]}if(($a=other.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$clone().$to_a()}var result=[],hash=$hash2([],{}),i,length,item;for(i=0,length=other.length;i<length;i++){Opal.hash_put(hash,other[i],true)}for(i=0,length=self.length;i<length;i++){item=self[i];if(Opal.hash_get(hash,item)===undefined){result.push(item)}}return result},TMP_8.$$arity=1);Opal.defn(self,"$<<",TMP_9=function(object){var self=this;self.push(object);return self},TMP_9.$$arity=1);Opal.defn(self,"$<=>",TMP_10=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else if(($a=other["$respond_to?"]("to_ary"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_ary().$to_a()}else{return nil}if(self.$hash()===other.$hash()){return 0}var count=Math.min(self.length,other.length);for(var i=0;i<count;i++){var tmp=self[i]["$<=>"](other[i]);if(tmp!==0){return tmp}}return self.length["$<=>"](other.length)},TMP_10.$$arity=1);Opal.defn(self,"$==",TMP_11=function(other){var self=this;var recursed={};function _eqeq(array,other){var i,length,a,b;if(array===other)return true;if(!other.$$is_array){if($scope.get("Opal")["$respond_to?"](other,"to_ary")){return other["$=="](array)}else{return false}}if(array.constructor!==Array)array=array.$to_a();if(other.constructor!==Array)other=other.$to_a();if(array.length!==other.length){return false}recursed[array.$object_id()]=true;for(i=0,length=array.length;i<length;i++){a=array[i];b=other[i];if(a.$$is_array){if(b.$$is_array&&b.length!==a.length){return false}if(!recursed.hasOwnProperty(a.$object_id())){if(!_eqeq(a,b)){return false}}}else{if(!a["$=="](b)){return false}}}return true}return _eqeq(self,other)},TMP_11.$$arity=1);Opal.defn(self,"$[]",TMP_12=function(index,length){var self=this;var size=self.length,exclude,from,to,result;if(index.$$is_range){exclude=index.exclude;from=$scope.get("Opal").$coerce_to(index.begin,$scope.get("Integer"),"to_int");to=$scope.get("Opal").$coerce_to(index.end,$scope.get("Integer"),"to_int");if(from<0){from+=size;if(from<0){return nil}}if(from>size){return nil}if(to<0){to+=size;if(to<0){return[]}}if(!exclude){to+=1}result=self.slice(from,to)}else{index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=size;if(index<0){return nil}}if(length===undefined){if(index>=size||index<0){return nil}return self[index]}else{length=$scope.get("Opal").$coerce_to(length,$scope.get("Integer"),"to_int");if(length<0||index>size||index<0){return nil}result=self.slice(index,index+length)}}return toArraySubclass(result,self.$class())},TMP_12.$$arity=-2);Opal.defn(self,"$[]=",TMP_13=function(index,value,extra){var $a,self=this,data=nil,length=nil;var i,size=self.length;if(($a=$scope.get("Range")["$==="](index))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$scope.get("Array")["$==="](value))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){data=value.$to_a()}else if(($a=value["$respond_to?"]("to_ary"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){data=value.$to_ary().$to_a()}else{data=[value]}var exclude=index.exclude,from=$scope.get("Opal").$coerce_to(index.begin,$scope.get("Integer"),"to_int"),to=$scope.get("Opal").$coerce_to(index.end,$scope.get("Integer"),"to_int");if(from<0){from+=size;if(from<0){self.$raise($scope.get("RangeError"),""+index.$inspect()+" out of range")}}if(to<0){to+=size}if(!exclude){to+=1}if(from>size){for(i=size;i<from;i++){self[i]=nil}}if(to<0){self.splice.apply(self,[from,0].concat(data))}else{self.splice.apply(self,[from,to-from].concat(data))}return value}else{if(($a=extra===undefined)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){length=1}else{length=value;value=extra;if(($a=$scope.get("Array")["$==="](value))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){data=value.$to_a()}else if(($a=value["$respond_to?"]("to_ary"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){data=value.$to_ary().$to_a()}else{data=[value]}}var old;index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");length=$scope.get("Opal").$coerce_to(length,$scope.get("Integer"),"to_int");if(index<0){old=index;index+=size;if(index<0){self.$raise($scope.get("IndexError"),"index "+old+" too small for array; minimum "+-self.length)}}if(length<0){self.$raise($scope.get("IndexError"),"negative length ("+length+")")}if(index>size){for(i=size;i<index;i++){self[i]=nil}}if(extra===undefined){self[index]=value}else{self.splice.apply(self,[index,length].concat(data))}return value}},TMP_13.$$arity=-3);Opal.defn(self,"$assoc",TMP_14=function $$assoc(object){var self=this;for(var i=0,length=self.length,item;i<length;i++){if(item=self[i],item.length&&item[0]["$=="](object)){return item}}return nil},TMP_14.$$arity=1);Opal.defn(self,"$at",TMP_15=function $$at(index){var self=this;index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=self.length}if(index<0||index>=self.length){return nil}return self[index]},TMP_15.$$arity=1);Opal.defn(self,"$bsearch",TMP_16=function $$bsearch(){var self=this,$iter=TMP_16.$$p,block=$iter||nil;TMP_16.$$p=null;if(block!==nil){}else{return self.$enum_for("bsearch")}var min=0,max=self.length,mid,val,ret,smaller=false,satisfied=nil;while(min<max){mid=min+Math.floor((max-min)/2);val=self[mid];ret=block(val);if(ret===true){satisfied=val;smaller=true}else if(ret===false||ret===nil){smaller=false}else if(ret.$$is_number){if(ret===0){return val}smaller=ret<0}else{self.$raise($scope.get("TypeError"),"wrong argument type "+ret.$class()+" (must be numeric, true, false or nil)")}if(smaller){max=mid}else{min=mid+1}}return satisfied},TMP_16.$$arity=0);Opal.defn(self,"$cycle",TMP_17=function $$cycle(n){var $a,$b,TMP_18,$c,self=this,$iter=TMP_17.$$p,block=$iter||nil;if(n==null){n=nil}TMP_17.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_18=function(){var self=TMP_18.$$s||this,$c;if(n["$=="](nil)){return $scope.get("Float").$$scope.get("INFINITY")}else{n=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if(($c=$rb_gt(n,0))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return $rb_times(self.$enumerator_size(),n)}else{return 0}}},TMP_18.$$s=self,TMP_18.$$arity=0,TMP_18),$a).call($b,"cycle",n)}if(($a=($c=self["$empty?"]())!==false&&$c!==nil&&$c!=null?$c:n["$=="](0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}var i,length,value;if(n===nil){while(true){for(i=0,length=self.length;i<length;i++){value=Opal.yield1(block,self[i])}}}else{n=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if(n<=0){return self}while(n>0){for(i=0,length=self.length;i<length;i++){value=Opal.yield1(block,self[i])}n--}}return self},TMP_17.$$arity=-1);Opal.defn(self,"$clear",TMP_19=function $$clear(){var self=this;self.splice(0,self.length);return self},TMP_19.$$arity=0);Opal.defn(self,"$count",TMP_20=function $$count(object){var $a,$b,self=this,$iter=TMP_20.$$p,block=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;if(object==null){object=nil}TMP_20.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=($b=object)!==false&&$b!==nil&&$b!=null?$b:block)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=self,Opal.find_super_dispatcher(self,"count",TMP_20,false)),$a.$$p=$iter,$a).apply($b,$zuper)}else{return self.$size()}},TMP_20.$$arity=-1);Opal.defn(self,"$initialize_copy",TMP_21=function $$initialize_copy(other){var self=this;return self.$replace(other)},TMP_21.$$arity=1);Opal.defn(self,"$collect",TMP_22=function $$collect(){var $a,$b,TMP_23,self=this,$iter=TMP_22.$$p,block=$iter||nil;TMP_22.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_23=function(){var self=TMP_23.$$s||this;return self.$size()},TMP_23.$$s=self,TMP_23.$$arity=0,TMP_23),$a).call($b,"collect")}var result=[];for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i]);result.push(value)}return result},TMP_22.$$arity=0);Opal.defn(self,"$collect!",TMP_24=function(){var $a,$b,TMP_25,self=this,$iter=TMP_24.$$p,block=$iter||nil;TMP_24.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_25=function(){var self=TMP_25.$$s||this;return self.$size()},TMP_25.$$s=self,TMP_25.$$arity=0,TMP_25),$a).call($b,"collect!")}for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i]);self[i]=value}return self},TMP_24.$$arity=0);function binomial_coefficient(n,k){if(n===k||k===0){return 1}if(k>0&&n>k){return binomial_coefficient(n-1,k-1)+binomial_coefficient(n-1,k)}return 0}Opal.defn(self,"$combination",TMP_26=function $$combination(n){var $a,$b,TMP_27,self=this,$iter=TMP_26.$$p,$yield=$iter||nil,num=nil;TMP_26.$$p=null;num=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if($yield!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_27=function(){var self=TMP_27.$$s||this;return binomial_coefficient(self.length,num)},TMP_27.$$s=self,TMP_27.$$arity=0,TMP_27),$a).call($b,"combination",num)}var i,length,stack,chosen,lev,done,next;if(num===0){Opal.yield1($yield,[])}else if(num===1){for(i=0,length=self.length;i<length;i++){Opal.yield1($yield,[self[i]])}}else if(num===self.length){Opal.yield1($yield,self.slice())}else if(num>=0&&num<self.length){stack=[];for(i=0;i<=num+1;i++){stack.push(0)}chosen=[];lev=0;done=false;stack[0]=-1;while(!done){chosen[lev]=self[stack[lev+1]];while(lev<num-1){lev++;next=stack[lev+1]=stack[lev]+1;chosen[lev]=self[next]}Opal.yield1($yield,chosen.slice());lev++;do{done=lev===0;stack[lev]++;lev--}while(stack[lev+1]+num===self.length+lev+1)}}return self},TMP_26.$$arity=1);Opal.defn(self,"$repeated_combination",TMP_28=function $$repeated_combination(n){var $a,$b,TMP_29,self=this,$iter=TMP_28.$$p,$yield=$iter||nil,num=nil;TMP_28.$$p=null;num=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if($yield!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_29=function(){var self=TMP_29.$$s||this;return binomial_coefficient(self.length+num-1,num)},TMP_29.$$s=self,TMP_29.$$arity=0,TMP_29),$a).call($b,"repeated_combination",num)}function iterate(max,from,buffer,self){if(buffer.length==max){var copy=buffer.slice();Opal.yield1($yield,copy);return}for(var i=from;i<self.length;i++){buffer.push(self[i]);iterate(max,i,buffer,self);buffer.pop()}}if(num>=0){iterate(num,0,[],self)}return self},TMP_28.$$arity=1);Opal.defn(self,"$compact",TMP_30=function $$compact(){var self=this;var result=[];for(var i=0,length=self.length,item;i<length;i++){if((item=self[i])!==nil){result.push(item)}}return result},TMP_30.$$arity=0);Opal.defn(self,"$compact!",TMP_31=function(){var self=this;var original=self.length;for(var i=0,length=self.length;i<length;i++){if(self[i]===nil){self.splice(i,1);length--;i--}}return self.length===original?nil:self},TMP_31.$$arity=0);Opal.defn(self,"$concat",TMP_32=function $$concat(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}for(var i=0,length=other.length;i<length;i++){self.push(other[i])}return self},TMP_32.$$arity=1);Opal.defn(self,"$delete",TMP_33=function(object){var self=this,$iter=TMP_33.$$p,$yield=$iter||nil;TMP_33.$$p=null;var original=self.length;for(var i=0,length=original;i<length;i++){if(self[i]["$=="](object)){self.splice(i,1);length--;i--}}if(self.length===original){if($yield!==nil){return Opal.yieldX($yield,[])}return nil}return object},TMP_33.$$arity=1);Opal.defn(self,"$delete_at",TMP_34=function $$delete_at(index){var self=this;index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=self.length}if(index<0||index>=self.length){return nil}var result=self[index];self.splice(index,1);return result},TMP_34.$$arity=1);Opal.defn(self,"$delete_if",TMP_35=function $$delete_if(){var $a,$b,TMP_36,self=this,$iter=TMP_35.$$p,block=$iter||nil;TMP_35.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_36=function(){var self=TMP_36.$$s||this;return self.$size()},TMP_36.$$s=self,TMP_36.$$arity=0,TMP_36),$a).call($b,"delete_if")}for(var i=0,length=self.length,value;i<length;i++){value=block(self[i]);if(value!==false&&value!==nil){self.splice(i,1);length--;i--}}return self},TMP_35.$$arity=0);Opal.defn(self,"$drop",TMP_37=function $$drop(number){var self=this;if(number<0){self.$raise($scope.get("ArgumentError"))}return self.slice(number)},TMP_37.$$arity=1);Opal.defn(self,"$dup",TMP_38=function $$dup(){var $a,$b,self=this,$iter=TMP_38.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_38.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(self.$$class===Opal.Array&&self.$allocate.$$pristine&&self.$copy_instance_variables.$$pristine&&self.$initialize_dup.$$pristine)return self.slice(0);return($a=($b=self,Opal.find_super_dispatcher(self,"dup",TMP_38,false)),$a.$$p=$iter,$a).apply($b,$zuper)},TMP_38.$$arity=0);Opal.defn(self,"$each",TMP_39=function $$each(){var $a,$b,TMP_40,self=this,$iter=TMP_39.$$p,block=$iter||nil;TMP_39.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_40=function(){var self=TMP_40.$$s||this;return self.$size()},TMP_40.$$s=self,TMP_40.$$arity=0,TMP_40),$a).call($b,"each")}for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i])}return self},TMP_39.$$arity=0);Opal.defn(self,"$each_index",TMP_41=function $$each_index(){var $a,$b,TMP_42,self=this,$iter=TMP_41.$$p,block=$iter||nil;TMP_41.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_42=function(){var self=TMP_42.$$s||this;return self.$size()},TMP_42.$$s=self,TMP_42.$$arity=0,TMP_42),$a).call($b,"each_index")}for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,i)}return self},TMP_41.$$arity=0);Opal.defn(self,"$empty?",TMP_43=function(){var self=this;return self.length===0},TMP_43.$$arity=0);Opal.defn(self,"$eql?",TMP_44=function(other){var self=this;var recursed={};function _eql(array,other){var i,length,a,b;if(!other.$$is_array){return false}other=other.$to_a();if(array.length!==other.length){return false}recursed[array.$object_id()]=true;for(i=0,length=array.length;i<length;i++){a=array[i];b=other[i];if(a.$$is_array){if(b.$$is_array&&b.length!==a.length){return false}if(!recursed.hasOwnProperty(a.$object_id())){if(!_eql(a,b)){return false}}}else{if(!a["$eql?"](b)){return false}}}return true}return _eql(self,other)},TMP_44.$$arity=1);Opal.defn(self,"$fetch",TMP_45=function $$fetch(index,defaults){var self=this,$iter=TMP_45.$$p,block=$iter||nil;TMP_45.$$p=null;var original=index;index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=self.length}if(index>=0&&index<self.length){return self[index]}if(block!==nil){return block(original)}if(defaults!=null){return defaults}if(self.length===0){self.$raise($scope.get("IndexError"),"index "+original+" outside of array bounds: 0...0")}else{self.$raise($scope.get("IndexError"),"index "+original+" outside of array bounds: -"+self.length+"..."+self.length)}},TMP_45.$$arity=-2);Opal.defn(self,"$fill",TMP_46=function $$fill($a_rest){var $b,$c,self=this,args,$iter=TMP_46.$$p,block=$iter||nil,one=nil,two=nil,obj=nil,left=nil,right=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_46.$$p=null;var i,length,value;if(block!==false&&block!==nil&&block!=null){if(($b=args.length>2)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 0..2)")}$c=args,$b=Opal.to_ary($c),one=$b[0]==null?nil:$b[0],two=$b[1]==null?nil:$b[1],$c}else{if(($b=args.length==0)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments (0 for 1..3)")}else if(($b=args.length>3)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 1..3)")}$c=args,$b=Opal.to_ary($c),obj=$b[0]==null?nil:$b[0],one=$b[1]==null?nil:$b[1],two=$b[2]==null?nil:$b[2],$c}if(($b=$scope.get("Range")["$==="](one))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(two!==false&&two!==nil&&two!=null){self.$raise($scope.get("TypeError"),"length invalid with range")}left=$scope.get("Opal").$coerce_to(one.$begin(),$scope.get("Integer"),"to_int");if(($b=left<0)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){left+=self.length}if(($b=left<0)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$raise($scope.get("RangeError"),""+one.$inspect()+" out of range")}right=$scope.get("Opal").$coerce_to(one.$end(),$scope.get("Integer"),"to_int");if(($b=right<0)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){right+=self.length}if(($b=one["$exclude_end?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{right+=1}if(($b=right<=left)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self}}else if(one!==false&&one!==nil&&one!=null){left=$scope.get("Opal").$coerce_to(one,$scope.get("Integer"),"to_int");if(($b=left<0)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){left+=self.length}if(($b=left<0)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){left=0}if(two!==false&&two!==nil&&two!=null){right=$scope.get("Opal").$coerce_to(two,$scope.get("Integer"),"to_int");if(($b=right==0)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self}right+=left}else{right=self.length}}else{left=0;right=self.length}if(($b=left>self.length)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){for(i=self.length;i<right;i++){self[i]=nil}}if(($b=right>self.length)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.length=right}if(block!==false&&block!==nil&&block!=null){for(length=self.length;left<right;left++){value=block(left);self[left]=value}}else{for(length=self.length;left<right;left++){self[left]=obj}}return self},TMP_46.$$arity=-1);Opal.defn(self,"$first",TMP_47=function $$first(count){var self=this;if(count==null){return self.length===0?nil:self[0]}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(count<0){self.$raise($scope.get("ArgumentError"),"negative array size")}return self.slice(0,count)},TMP_47.$$arity=-1);Opal.defn(self,"$flatten",TMP_48=function $$flatten(level){var self=this;function _flatten(array,level){var result=[],i,length,item,ary;array=array.$to_a();for(i=0,length=array.length;i<length;i++){item=array[i];if(!$scope.get("Opal")["$respond_to?"](item,"to_ary")){result.push(item);continue}ary=item.$to_ary();if(ary===nil){result.push(item);continue}if(!ary.$$is_array){self.$raise($scope.get("TypeError"))}if(ary===self){self.$raise($scope.get("ArgumentError"))}switch(level){case undefined:result=result.concat(_flatten(ary));break;case 0:result.push(ary);break;default:result.push.apply(result,_flatten(ary,level-1))}}return result}if(level!==undefined){level=$scope.get("Opal").$coerce_to(level,$scope.get("Integer"),"to_int")}return toArraySubclass(_flatten(self,level),self.$class())},TMP_48.$$arity=-1);Opal.defn(self,"$flatten!",TMP_49=function(level){var self=this;var flattened=self.$flatten(level);if(self.length==flattened.length){for(var i=0,length=self.length;i<length;i++){if(self[i]!==flattened[i]){break}}if(i==length){return nil}}self.$replace(flattened);return self},TMP_49.$$arity=-1);Opal.defn(self,"$hash",TMP_50=function $$hash(){var self=this;var top=Opal.hash_ids==undefined,result=["A"],hash_id=self.$object_id(),item,i,key;try{if(top){Opal.hash_ids={}}if(Opal.hash_ids.hasOwnProperty(hash_id)){return"self"}for(key in Opal.hash_ids){if(Opal.hash_ids.hasOwnProperty(key)){item=Opal.hash_ids[key];if(self["$eql?"](item)){return"self"}}}Opal.hash_ids[hash_id]=self;for(i=0;i<self.length;i++){item=self[i];result.push(item.$hash())}return result.join(",")}finally{if(top){delete Opal.hash_ids}}},TMP_50.$$arity=0);Opal.defn(self,"$include?",TMP_51=function(member){var self=this;for(var i=0,length=self.length;i<length;i++){if(self[i]["$=="](member)){return true}}return false},TMP_51.$$arity=1);Opal.defn(self,"$index",TMP_52=function $$index(object){var self=this,$iter=TMP_52.$$p,block=$iter||nil;TMP_52.$$p=null;var i,length,value;if(object!=null){for(i=0,length=self.length;i<length;i++){if(self[i]["$=="](object)){return i}}}else if(block!==nil){for(i=0,length=self.length;i<length;i++){value=block(self[i]);if(value!==false&&value!==nil){return i}}}else{return self.$enum_for("index")}return nil},TMP_52.$$arity=-1);Opal.defn(self,"$insert",TMP_53=function $$insert(index,$a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-1]=arguments[$arg_idx]}index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(objects.length>0){if(index<0){index+=self.length+1;if(index<0){self.$raise($scope.get("IndexError"),""+index+" is out of bounds")}}if(index>self.length){for(var i=self.length;i<index;i++){self.push(nil)}}self.splice.apply(self,[index,0].concat(objects))}return self},TMP_53.$$arity=-2);Opal.defn(self,"$inspect",TMP_54=function $$inspect(){var self=this;var result=[],id=self.$__id__();for(var i=0,length=self.length;i<length;i++){var item=self["$[]"](i);if(item.$__id__()===id){result.push("[...]")}else{result.push(item.$inspect())}}return"["+result.join(", ")+"]"},TMP_54.$$arity=0);Opal.defn(self,"$join",TMP_55=function $$join(sep){var $a,self=this;if($gvars[","]==null)$gvars[","]=nil;if(sep==null){sep=nil}if(($a=self.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return""}if(($a=sep===nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sep=$gvars[","]}var result=[];var i,length,item,tmp;for(i=0,length=self.length;i<length;i++){item=self[i];if($scope.get("Opal")["$respond_to?"](item,"to_str")){tmp=item.$to_str();if(tmp!==nil){result.push(tmp.$to_s());continue}}if($scope.get("Opal")["$respond_to?"](item,"to_ary")){tmp=item.$to_ary();if(tmp===self){self.$raise($scope.get("ArgumentError"))}if(tmp!==nil){result.push(tmp.$join(sep));continue}}if($scope.get("Opal")["$respond_to?"](item,"to_s")){tmp=item.$to_s();if(tmp!==nil){result.push(tmp);continue}}self.$raise($scope.get("NoMethodError").$new(""+$scope.get("Opal").$inspect(item)+" doesn't respond to #to_str, #to_ary or #to_s","to_str"))}if(sep===nil){return result.join("")}else{return result.join($scope.get("Opal")["$coerce_to!"](sep,$scope.get("String"),"to_str").$to_s())}},TMP_55.$$arity=-1);Opal.defn(self,"$keep_if",TMP_56=function $$keep_if(){var $a,$b,TMP_57,self=this,$iter=TMP_56.$$p,block=$iter||nil;TMP_56.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_57=function(){var self=TMP_57.$$s||this;return self.$size()},TMP_57.$$s=self,TMP_57.$$arity=0,TMP_57),$a).call($b,"keep_if")}for(var i=0,length=self.length,value;i<length;i++){value=block(self[i]);if(value===false||value===nil){self.splice(i,1);length--;i--}}return self},TMP_56.$$arity=0);Opal.defn(self,"$last",TMP_58=function $$last(count){var self=this;if(count==null){return self.length===0?nil:self[self.length-1]}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(count<0){self.$raise($scope.get("ArgumentError"),"negative array size")}if(count>self.length){count=self.length}return self.slice(self.length-count,self.length)},TMP_58.$$arity=-1);Opal.defn(self,"$length",TMP_59=function $$length(){var self=this;return self.length},TMP_59.$$arity=0);Opal.alias(self,"map","collect");Opal.alias(self,"map!","collect!");function descending_factorial(from,how_many){var count=how_many>=0?1:0;while(how_many){count*=from;from--;how_many--}return count}Opal.defn(self,"$permutation",TMP_60=function $$permutation(num){var $a,$b,TMP_61,self=this,$iter=TMP_60.$$p,block=$iter||nil,perm=nil,used=nil;TMP_60.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_61=function(){var self=TMP_61.$$s||this;return descending_factorial(self.length,num===undefined?self.length:num)},TMP_61.$$s=self,TMP_61.$$arity=0,TMP_61),$a).call($b,"permutation",num)}var permute,offensive,output;if(num===undefined){num=self.length}else{num=$scope.get("Opal").$coerce_to(num,$scope.get("Integer"),"to_int")}if(num<0||self.length<num){}else if(num===0){Opal.yield1(block,[])}else if(num===1){for(var i=0;i<self.length;i++){Opal.yield1(block,[self[i]])}}else{perm=$scope.get("Array").$new(num);used=$scope.get("Array").$new(self.length,false);permute=function(num,perm,index,used,blk){self=this;for(var i=0;i<self.length;i++){if(used["$[]"](i)["$!"]()){perm[index]=i;if(index<num-1){used[i]=true;permute.call(self,num,perm,index+1,used,blk);used[i]=false}else{output=[];for(var j=0;j<perm.length;j++){output.push(self[perm[j]])}Opal.yield1(blk,output)}}}};if(block!==nil){offensive=self.slice();permute.call(offensive,num,perm,0,used,block)}else{permute.call(self,num,perm,0,used,block)}}return self},TMP_60.$$arity=-1);Opal.defn(self,"$repeated_permutation",TMP_62=function $$repeated_permutation(n){var $a,$b,TMP_63,self=this,$iter=TMP_62.$$p,$yield=$iter||nil,num=nil;TMP_62.$$p=null;num=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if($yield!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_63=function(){var self=TMP_63.$$s||this,$c;if(($c=$rb_ge(num,0))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.$size()["$**"](num)}else{return 0}},TMP_63.$$s=self,TMP_63.$$arity=0,TMP_63),$a).call($b,"repeated_permutation",num)}function iterate(max,buffer,self){if(buffer.length==max){var copy=buffer.slice();Opal.yield1($yield,copy);return}for(var i=0;i<self.length;i++){buffer.push(self[i]);iterate(max,buffer,self);buffer.pop()}}iterate(num,[],self.slice());return self},TMP_62.$$arity=1);Opal.defn(self,"$pop",TMP_64=function $$pop(count){var $a,self=this;if(($a=count===undefined)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=self.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}return self.pop()}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(($a=count<0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative array size")}if(($a=self.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[]}if(($a=count>self.length)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.splice(0,self.length)}else{return self.splice(self.length-count,self.length)}},TMP_64.$$arity=-1);Opal.defn(self,"$product",TMP_65=function $$product($a_rest){var self=this,args,$iter=TMP_65.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_65.$$p=null;var result=block!==nil?null:[],n=args.length+1,counters=new Array(n),lengths=new Array(n),arrays=new Array(n),i,m,subarray,len,resultlen=1;arrays[0]=self;for(i=1;i<n;i++){arrays[i]=$scope.get("Opal").$coerce_to(args[i-1],$scope.get("Array"),"to_ary")}for(i=0;i<n;i++){len=arrays[i].length;if(len===0){return result||self}resultlen*=len;if(resultlen>2147483647){self.$raise($scope.get("RangeError"),"too big to product")}lengths[i]=len;counters[i]=0}outer_loop:for(;;){subarray=[];for(i=0;i<n;i++){subarray.push(arrays[i][counters[i]])}if(result){result.push(subarray)}else{Opal.yield1(block,subarray)}m=n-1;counters[m]++;while(counters[m]===lengths[m]){counters[m]=0;if(--m<0)break outer_loop;counters[m]++}}return result||self},TMP_65.$$arity=-1);Opal.defn(self,"$push",TMP_66=function $$push($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=objects.length;i<length;i++){self.push(objects[i])}return self},TMP_66.$$arity=-1);Opal.defn(self,"$rassoc",TMP_67=function $$rassoc(object){var self=this;for(var i=0,length=self.length,item;i<length;i++){item=self[i];if(item.length&&item[1]!==undefined){if(item[1]["$=="](object)){return item}}}return nil},TMP_67.$$arity=1);Opal.defn(self,"$reject",TMP_68=function $$reject(){var $a,$b,TMP_69,self=this,$iter=TMP_68.$$p,block=$iter||nil;TMP_68.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_69=function(){var self=TMP_69.$$s||this;return self.$size()},TMP_69.$$s=self,TMP_69.$$arity=0,TMP_69),$a).call($b,"reject")}var result=[];for(var i=0,length=self.length,value;i<length;i++){value=block(self[i]);if(value===false||value===nil){result.push(self[i])}}return result},TMP_68.$$arity=0);Opal.defn(self,"$reject!",TMP_70=function(){var $a,$b,TMP_71,$c,self=this,$iter=TMP_70.$$p,block=$iter||nil,original=nil;TMP_70.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_71=function(){var self=TMP_71.$$s||this;return self.$size()},TMP_71.$$s=self,TMP_71.$$arity=0,TMP_71),$a).call($b,"reject!")}original=self.$length();($a=($c=self).$delete_if,$a.$$p=block.$to_proc(),$a).call($c);if(self.$length()["$=="](original)){return nil}else{return self}},TMP_70.$$arity=0);Opal.defn(self,"$replace",TMP_72=function $$replace(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}self.splice(0,self.length);self.push.apply(self,other);return self},TMP_72.$$arity=1);Opal.defn(self,"$reverse",TMP_73=function $$reverse(){var self=this;return self.slice(0).reverse()},TMP_73.$$arity=0);Opal.defn(self,"$reverse!",TMP_74=function(){var self=this;return self.reverse()},TMP_74.$$arity=0);Opal.defn(self,"$reverse_each",TMP_75=function $$reverse_each(){var $a,$b,TMP_76,$c,self=this,$iter=TMP_75.$$p,block=$iter||nil;TMP_75.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_76=function(){var self=TMP_76.$$s||this;return self.$size()},TMP_76.$$s=self,TMP_76.$$arity=0,TMP_76),$a).call($b,"reverse_each")}($a=($c=self.$reverse()).$each,$a.$$p=block.$to_proc(),$a).call($c);return self},TMP_75.$$arity=0);Opal.defn(self,"$rindex",TMP_77=function $$rindex(object){var self=this,$iter=TMP_77.$$p,block=$iter||nil;TMP_77.$$p=null;var i,value;if(object!=null){for(i=self.length-1;i>=0;i--){if(i>=self.length){break}if(self[i]["$=="](object)){return i}}}else if(block!==nil){for(i=self.length-1;i>=0;i--){if(i>=self.length){break}value=block(self[i]);if(value!==false&&value!==nil){return i}}}else if(object==null){return self.$enum_for("rindex")}return nil},TMP_77.$$arity=-1);Opal.defn(self,"$rotate",TMP_78=function $$rotate(n){var self=this;if(n==null){n=1}n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");var ary,idx,firstPart,lastPart;if(self.length===1){return self.slice()}if(self.length===0){return[]}ary=self.slice();idx=n%ary.length;firstPart=ary.slice(idx);lastPart=ary.slice(0,idx);return firstPart.concat(lastPart)},TMP_78.$$arity=-1);Opal.defn(self,"$rotate!",TMP_79=function(cnt){var self=this,ary=nil;if(cnt==null){cnt=1}if(self.length===0||self.length===1){return self}cnt=$scope.get("Opal").$coerce_to(cnt,$scope.get("Integer"),"to_int");ary=self.$rotate(cnt);return self.$replace(ary)},TMP_79.$$arity=-1);(function($base,$super){function $SampleRandom(){}var self=$SampleRandom=$klass($base,$super,"SampleRandom",$SampleRandom);var def=self.$$proto,$scope=self.$$scope,TMP_80,TMP_81;def.rng=nil;Opal.defn(self,"$initialize",TMP_80=function $$initialize(rng){var self=this;return self.rng=rng},TMP_80.$$arity=1);return(Opal.defn(self,"$rand",TMP_81=function $$rand(size){var $a,self=this,random=nil;random=$scope.get("Opal").$coerce_to(self.rng.$rand(size),$scope.get("Integer"),"to_int");if(($a=random<0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("RangeError"),"random value must be >= 0")}if(($a=random<size)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("RangeError"),"random value must be less than Array size")}return random},TMP_81.$$arity=1),nil)&&"rand"})($scope.base,null);Opal.defn(self,"$sample",TMP_82=function $$sample(count,options){var $a,$b,self=this,o=nil,rng=nil;if(($a=count===undefined)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$at($scope.get("Kernel").$rand(self.length))}if(($a=options===undefined)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=o=$scope.get("Opal")["$coerce_to?"](count,$scope.get("Hash"),"to_hash"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){options=o;count=nil}else{options=nil;count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int")}}else{count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");options=$scope.get("Opal").$coerce_to(options,$scope.get("Hash"),"to_hash")}if(($a=($b=count!==false&&count!==nil&&count!=null)?count<0:count)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"count must be greater than 0")}if(options!==false&&options!==nil&&options!=null){rng=options["$[]"]("random")}if(($a=($b=rng!==false&&rng!==nil&&rng!=null)?rng["$respond_to?"]("rand"):rng)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){rng=$scope.get("SampleRandom").$new(rng)}else{rng=$scope.get("Kernel")}if(count!==false&&count!==nil&&count!=null){}else{return self[rng.$rand(self.length)]}var abandon,spin,result,i,j,k,targetIndex,oldValue;if(count>self.length){count=self.length}switch(count){case 0:return[];break;case 1:return[self[rng.$rand(self.length)]];break;case 2:i=rng.$rand(self.length);j=rng.$rand(self.length);if(i===j){j=i===0?i+1:i-1}return[self[i],self[j]];break;default:if(self.length/count>3){abandon=false;spin=0;result=$scope.get("Array").$new(count);i=1;result[0]=rng.$rand(self.length);while(i<count){k=rng.$rand(self.length);j=0;while(j<i){while(k===result[j]){spin++;if(spin>100){abandon=true;break}k=rng.$rand(self.length)}if(abandon){break}j++}if(abandon){break}result[i]=k;i++}if(!abandon){i=0;while(i<count){result[i]=self[result[i]];i++}return result}}result=self.slice();for(var c=0;c<count;c++){targetIndex=rng.$rand(self.length);oldValue=result[c];result[c]=result[targetIndex];result[targetIndex]=oldValue}return count===self.length?result:result["$[]"](0,count)}},TMP_82.$$arity=-1);Opal.defn(self,"$select",TMP_83=function $$select(){var $a,$b,TMP_84,self=this,$iter=TMP_83.$$p,block=$iter||nil;TMP_83.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_84=function(){var self=TMP_84.$$s||this;return self.$size()},TMP_84.$$s=self,TMP_84.$$arity=0,TMP_84),$a).call($b,"select")}var result=[];for(var i=0,length=self.length,item,value;i<length;i++){item=self[i];value=Opal.yield1(block,item);if(value!==false&&value!==nil){result.push(item)}}return result},TMP_83.$$arity=0);Opal.defn(self,"$select!",TMP_85=function(){var $a,$b,TMP_86,$c,self=this,$iter=TMP_85.$$p,block=$iter||nil;TMP_85.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_86=function(){var self=TMP_86.$$s||this;return self.$size()},TMP_86.$$s=self,TMP_86.$$arity=0,TMP_86),$a).call($b,"select!")}var original=self.length;($a=($c=self).$keep_if,$a.$$p=block.$to_proc(),$a).call($c);return self.length===original?nil:self},TMP_85.$$arity=0);Opal.defn(self,"$shift",TMP_87=function $$shift(count){var $a,self=this;if(($a=count===undefined)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=self.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}return self.shift()}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(($a=count<0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative array size")}if(($a=self.length===0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[]}return self.splice(0,count)},TMP_87.$$arity=-1);Opal.alias(self,"size","length");Opal.defn(self,"$shuffle",TMP_88=function $$shuffle(rng){var self=this;return self.$dup().$to_a()["$shuffle!"](rng)},TMP_88.$$arity=-1);Opal.defn(self,"$shuffle!",TMP_89=function(rng){var self=this;var randgen,i=self.length,j,tmp;if(rng!==undefined){rng=$scope.get("Opal")["$coerce_to?"](rng,$scope.get("Hash"),"to_hash");if(rng!==nil){rng=rng["$[]"]("random");if(rng!==nil&&rng["$respond_to?"]("rand")){randgen=rng}}}while(i){if(randgen){j=randgen.$rand(i).$to_int();if(j<0){self.$raise($scope.get("RangeError"),"random number too small "+j)}if(j>=i){self.$raise($scope.get("RangeError"),"random number too big "+j)}}else{j=Math.floor(Math.random()*i)}tmp=self[--i];self[i]=self[j];self[j]=tmp}return self},TMP_89.$$arity=-1);Opal.alias(self,"slice","[]");Opal.defn(self,"$slice!",TMP_90=function(index,length){var $a,self=this,result=nil,range=nil,range_start=nil,range_end=nil,start=nil;result=nil;if(($a=length===undefined)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$scope.get("Range")["$==="](index))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){range=index;result=self["$[]"](range);range_start=$scope.get("Opal").$coerce_to(range.$begin(),$scope.get("Integer"),"to_int");range_end=$scope.get("Opal").$coerce_to(range.$end(),$scope.get("Integer"),"to_int");if(range_start<0){range_start+=self.length}if(range_end<0){range_end+=self.length}else if(range_end>=self.length){range_end=self.length-1;if(range.exclude){range_end+=1}}var range_length=range_end-range_start;if(range.exclude){range_end-=1}else{range_length+=1}if(range_start<self.length&&range_start>=0&&range_end<self.length&&range_end>=0&&range_length>0){self.splice(range_start,range_length)}}else{start=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(start<0){start+=self.length}if(start<0||start>=self.length){return nil}result=self[start];if(start===0){self.shift()}else{self.splice(start,1)}}}else{start=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");length=$scope.get("Opal").$coerce_to(length,$scope.get("Integer"),"to_int");if(length<0){return nil}var end=start+length;result=self["$[]"](start,length);if(start<0){start+=self.length}if(start+length>self.length){length=self.length-start}if(start<self.length&&start>=0){self.splice(start,length)}}return result},TMP_90.$$arity=-2);Opal.defn(self,"$sort",TMP_91=function $$sort(){var $a,self=this,$iter=TMP_91.$$p,block=$iter||nil;TMP_91.$$p=null;if(($a=self.length>1)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return self}if(block===nil){block=function(a,b){return a["$<=>"](b)}}return self.slice().sort(function(x,y){var ret=block(x,y);if(ret===nil){self.$raise($scope.get("ArgumentError"),"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed")}return $rb_gt(ret,0)?1:$rb_lt(ret,0)?-1:0})},TMP_91.$$arity=0);Opal.defn(self,"$sort!",TMP_92=function(){var $a,$b,self=this,$iter=TMP_92.$$p,block=$iter||nil;TMP_92.$$p=null;var result;if(block!==nil){result=($a=($b=self.slice()).$sort,$a.$$p=block.$to_proc(),$a).call($b)}else{result=self.slice().$sort()}self.length=0;for(var i=0,length=result.length;i<length;i++){self.push(result[i])}return self},TMP_92.$$arity=0);Opal.defn(self,"$sort_by!",TMP_93=function(){var $a,$b,TMP_94,$c,self=this,$iter=TMP_93.$$p,block=$iter||nil;TMP_93.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_94=function(){var self=TMP_94.$$s||this;return self.$size()},TMP_94.$$s=self,TMP_94.$$arity=0,TMP_94),$a).call($b,"sort_by!")}return self.$replace(($a=($c=self).$sort_by,$a.$$p=block.$to_proc(),$a).call($c))},TMP_93.$$arity=0);Opal.defn(self,"$take",TMP_95=function $$take(count){var self=this;if(count<0){self.$raise($scope.get("ArgumentError"))}return self.slice(0,count)},TMP_95.$$arity=1);Opal.defn(self,"$take_while",TMP_96=function $$take_while(){var self=this,$iter=TMP_96.$$p,block=$iter||nil;TMP_96.$$p=null;var result=[];for(var i=0,length=self.length,item,value;i<length;i++){item=self[i];value=block(item);if(value===false||value===nil){return result}result.push(item)}return result},TMP_96.$$arity=0);Opal.defn(self,"$to_a",TMP_97=function $$to_a(){var self=this;return self},TMP_97.$$arity=0);Opal.alias(self,"to_ary","to_a");Opal.defn(self,"$to_h",TMP_98=function $$to_h(){var self=this;var i,len=self.length,ary,key,val,hash=$hash2([],{});for(i=0;i<len;i++){ary=$scope.get("Opal")["$coerce_to?"](self[i],$scope.get("Array"),"to_ary");if(!ary.$$is_array){self.$raise($scope.get("TypeError"),"wrong element type "+ary.$class()+" at "+i+" (expected array)")}if(ary.length!==2){self.$raise($scope.get("ArgumentError"),"wrong array length at "+i+" (expected 2, was "+ary.$length()+")")}key=ary[0];val=ary[1];Opal.hash_put(hash,key,val)}return hash},TMP_98.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.defn(self,"$transpose",TMP_101=function $$transpose(){var $a,$b,TMP_99,self=this,result=nil,max=nil;if(($a=self["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[]}result=[];max=nil;($a=($b=self).$each,$a.$$p=(TMP_99=function(row){var self=TMP_99.$$s||this,$c,$d,TMP_100;if(row==null)row=nil;if(($c=$scope.get("Array")["$==="](row))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){row=row.$to_a()}else{row=$scope.get("Opal").$coerce_to(row,$scope.get("Array"),"to_ary").$to_a()}($c=max)!==false&&$c!==nil&&$c!=null?$c:max=row.length;if(($c=row.length["$!="](max))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$raise($scope.get("IndexError"),"element size differs ("+row.length+" should be "+max)}return($c=($d=row.length).$times,$c.$$p=(TMP_100=function(i){var self=TMP_100.$$s||this,$e,$f,$g,entry=nil;if(i==null)i=nil;entry=($e=i,$f=result,($g=$f["$[]"]($e))!==false&&$g!==nil&&$g!=null?$g:$f["$[]="]($e,[]));return entry["$<<"](row.$at(i))},TMP_100.$$s=self,TMP_100.$$arity=1,TMP_100),$c).call($d)},TMP_99.$$s=self,TMP_99.$$arity=1,TMP_99),$a).call($b);return result},TMP_101.$$arity=0);Opal.defn(self,"$uniq",TMP_102=function $$uniq(){var self=this,$iter=TMP_102.$$p,block=$iter||nil;TMP_102.$$p=null;var hash=$hash2([],{}),i,length,item,key;if(block===nil){for(i=0,length=self.length;i<length;i++){item=self[i];if(Opal.hash_get(hash,item)===undefined){Opal.hash_put(hash,item,item)}}}else{for(i=0,length=self.length;i<length;i++){item=self[i];key=Opal.yield1(block,item);if(Opal.hash_get(hash,key)===undefined){Opal.hash_put(hash,key,item)}}}return toArraySubclass(hash.$values(),self.$class())},TMP_102.$$arity=0);Opal.defn(self,"$uniq!",TMP_103=function(){var self=this,$iter=TMP_103.$$p,block=$iter||nil;TMP_103.$$p=null;var original_length=self.length,hash=$hash2([],{}),i,length,item,key;for(i=0,length=original_length;i<length;i++){item=self[i];key=block===nil?item:Opal.yield1(block,item);if(Opal.hash_get(hash,key)===undefined){Opal.hash_put(hash,key,item);continue}self.splice(i,1);length--;i--}return self.length===original_length?nil:self},TMP_103.$$arity=0);Opal.defn(self,"$unshift",TMP_104=function $$unshift($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}for(var i=objects.length-1;i>=0;i--){self.unshift(objects[i])}return self},TMP_104.$$arity=-1);Opal.defn(self,"$values_at",TMP_107=function $$values_at($a_rest){var $b,$c,TMP_105,self=this,args,out=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}out=[];($b=($c=args).$each,$b.$$p=(TMP_105=function(elem){var self=TMP_105.$$s||this,$a,$d,TMP_106,finish=nil,start=nil,i=nil;if(elem==null)elem=nil;if(($a=elem["$kind_of?"]($scope.get("Range")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){finish=$scope.get("Opal").$coerce_to(elem.$last(),$scope.get("Integer"),"to_int");start=$scope.get("Opal").$coerce_to(elem.$first(),$scope.get("Integer"),"to_int");if(start<0){start=start+self.length;return nil}if(finish<0){finish=finish+self.length}if(elem["$exclude_end?"]()){finish--}if(finish<start){return nil}return($a=($d=start).$upto,$a.$$p=(TMP_106=function(i){var self=TMP_106.$$s||this;if(i==null)i=nil;return out["$<<"](self.$at(i))},TMP_106.$$s=self,TMP_106.$$arity=1,TMP_106),$a).call($d,finish)}else{i=$scope.get("Opal").$coerce_to(elem,$scope.get("Integer"),"to_int");return out["$<<"](self.$at(i))}},TMP_105.$$s=self,TMP_105.$$arity=1,TMP_105),$b).call($c);return out},TMP_107.$$arity=-1);Opal.defn(self,"$zip",TMP_108=function $$zip($a_rest){var $b,self=this,others,$iter=TMP_108.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}others=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){others[$arg_idx-0]=arguments[$arg_idx]}TMP_108.$$p=null;var result=[],size=self.length,part,o,i,j,jj;for(j=0,jj=others.length;j<jj;j++){o=others[j];if(o.$$is_array){continue}if(o.$$is_enumerator){if(o.$size()===Infinity){others[j]=o.$take(size)}else{others[j]=o.$to_a()}continue}others[j]=(($b=$scope.get("Opal")["$coerce_to?"](o,$scope.get("Array"),"to_ary"))!==false&&$b!==nil&&$b!=null?$b:$scope.get("Opal")["$coerce_to!"](o,$scope.get("Enumerator"),"each")).$to_a()}for(i=0;i<size;i++){part=[self[i]];for(j=0,jj=others.length;j<jj;j++){o=others[j][i];if(o==null){o=nil}part[j+1]=o}result[i]=part}if(block!==nil){for(i=0;i<size;i++){block(result[i])}return nil}return result},TMP_108.$$arity=-1);Opal.defs(self,"$inherited",TMP_109=function $$inherited(klass){var self=this;klass.$$proto.$to_a=function(){return this.slice(0,this.length)}},TMP_109.$$arity=1);Opal.defn(self,"$instance_variables",TMP_111=function $$instance_variables(){var $a,$b,TMP_110,$c,$d,self=this,$iter=TMP_111.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_111.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}return($a=($b=($c=($d=self,Opal.find_super_dispatcher(self,"instance_variables",TMP_111,false)),$c.$$p=$iter,$c).apply($d,$zuper)).$reject,$a.$$p=(TMP_110=function(ivar){var self=TMP_110.$$s||this,$c;if(ivar==null)ivar=nil;return($c=/^@\d+$/.test(ivar))!==false&&$c!==nil&&$c!=null?$c:ivar["$=="]("@length")},TMP_110.$$s=self,TMP_110.$$arity=1,TMP_110),$a).call($b)},TMP_111.$$arity=0);return $scope.get("Opal").$pristine(self,"allocate","copy_instance_variables","initialize_dup")}($scope.base,Array)};Opal.modules["corelib/hash"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$coerce_to?","$[]","$merge!","$allocate","$raise","$==","$coerce_to!","$lambda?","$abs","$arity","$call","$enum_for","$size","$inspect","$flatten","$eql?","$default","$to_proc","$dup","$===","$default_proc","$default_proc=","$default=","$alias_method"]);self.$require("corelib/enumerable");return function($base,$super){function $Hash(){}var self=$Hash=$klass($base,$super,"Hash",$Hash);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_18,TMP_20,TMP_22,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41,TMP_42,TMP_44,TMP_46,TMP_47,TMP_49,TMP_51,TMP_52,TMP_53,TMP_54,TMP_55;self.$include($scope.get("Enumerable"));def.$$is_hash=true;Opal.defs(self,"$[]",TMP_1=function($a_rest){var self=this,argv;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}argv=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){argv[$arg_idx-0]=arguments[$arg_idx]}var hash,argc=argv.length,i;if(argc===1){hash=$scope.get("Opal")["$coerce_to?"](argv["$[]"](0),$scope.get("Hash"),"to_hash");if(hash!==nil){return self.$allocate()["$merge!"](hash)}argv=$scope.get("Opal")["$coerce_to?"](argv["$[]"](0),$scope.get("Array"),"to_ary");if(argv===nil){self.$raise($scope.get("ArgumentError"),"odd number of arguments for Hash")}argc=argv.length;hash=self.$allocate();for(i=0;i<argc;i++){if(!argv[i].$$is_array)continue;switch(argv[i].length){case 1:hash.$store(argv[i][0],nil);break;case 2:hash.$store(argv[i][0],argv[i][1]);break;default:self.$raise($scope.get("ArgumentError"),"invalid number of elements ("+argv[i].length+" for 1..2)")}}return hash}if(argc%2!==0){self.$raise($scope.get("ArgumentError"),"odd number of arguments for Hash")}hash=self.$allocate();for(i=0;i<argc;i+=2){hash.$store(argv[i],argv[i+1])}return hash},TMP_1.$$arity=-1);Opal.defs(self,"$allocate",TMP_2=function $$allocate(){var self=this;var hash=new self.$$alloc;Opal.hash_init(hash);hash.$$none=nil;hash.$$proc=nil;return hash},TMP_2.$$arity=0);Opal.defs(self,"$try_convert",TMP_3=function $$try_convert(obj){var self=this;return $scope.get("Opal")["$coerce_to?"](obj,$scope.get("Hash"),"to_hash")},TMP_3.$$arity=1);Opal.defn(self,"$initialize",TMP_4=function $$initialize(defaults){var self=this,$iter=TMP_4.$$p,block=$iter||nil;TMP_4.$$p=null;if(defaults!==undefined&&block!==nil){self.$raise($scope.get("ArgumentError"),"wrong number of arguments (1 for 0)")}self.$$none=defaults===undefined?nil:defaults;self.$$proc=block;return self},TMP_4.$$arity=-1);Opal.defn(self,"$==",TMP_5=function(other){var self=this;if(self===other){return true}if(!other.$$is_hash){return false}if(self.$$keys.length!==other.$$keys.length){return false}for(var i=0,keys=self.$$keys,length=keys.length,key,value,other_value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key];other_value=other.$$smap[key]}else{value=key.value;other_value=Opal.hash_get(other,key.key)}if(other_value===undefined||!value["$eql?"](other_value)){return false}}return true},TMP_5.$$arity=1);Opal.defn(self,"$[]",TMP_6=function(key){var self=this;var value=Opal.hash_get(self,key);if(value!==undefined){return value}return self.$default(key)},TMP_6.$$arity=1);Opal.defn(self,"$[]=",TMP_7=function(key,value){var self=this;Opal.hash_put(self,key,value);return value},TMP_7.$$arity=2);Opal.defn(self,"$assoc",TMP_8=function $$assoc(object){var self=this;for(var i=0,keys=self.$$keys,length=keys.length,key;i<length;i++){key=keys[i];if(key.$$is_string){if(key["$=="](object)){return[key,self.$$smap[key]]}}else{if(key.key["$=="](object)){return[key.key,key.value]}}}return nil},TMP_8.$$arity=1);Opal.defn(self,"$clear",TMP_9=function $$clear(){var self=this;Opal.hash_init(self);return self},TMP_9.$$arity=0);Opal.defn(self,"$clone",TMP_10=function $$clone(){var self=this;var hash=new self.$$class.$$alloc;Opal.hash_init(hash);Opal.hash_clone(self,hash);return hash},TMP_10.$$arity=0);Opal.defn(self,"$default",TMP_11=function(key){var self=this;if(key!==undefined&&self.$$proc!==nil&&self.$$proc!==undefined){return self.$$proc.$call(self,key)}if(self.$$none===undefined){return nil}return self.$$none},TMP_11.$$arity=-1);Opal.defn(self,"$default=",TMP_12=function(object){var self=this;self.$$proc=nil;self.$$none=object;return object},TMP_12.$$arity=1);Opal.defn(self,"$default_proc",TMP_13=function $$default_proc(){var self=this;if(self.$$proc!==undefined){return self.$$proc}return nil},TMP_13.$$arity=0);Opal.defn(self,"$default_proc=",TMP_14=function(proc){var self=this;if(proc!==nil){proc=$scope.get("Opal")["$coerce_to!"](proc,$scope.get("Proc"),"to_proc");if(proc["$lambda?"]()&&proc.$arity().$abs()!==2){self.$raise($scope.get("TypeError"),"default_proc takes two arguments")}}self.$$none=nil;self.$$proc=proc;return proc},TMP_14.$$arity=1);Opal.defn(self,"$delete",TMP_15=function(key){var self=this,$iter=TMP_15.$$p,block=$iter||nil;TMP_15.$$p=null;var value=Opal.hash_delete(self,key);if(value!==undefined){return value}if(block!==nil){return block.$call(key)}return nil},TMP_15.$$arity=1);Opal.defn(self,"$delete_if",TMP_16=function $$delete_if(){var $a,$b,TMP_17,self=this,$iter=TMP_16.$$p,block=$iter||nil;TMP_16.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_17=function(){var self=TMP_17.$$s||this;return self.$size()},TMP_17.$$s=self,TMP_17.$$arity=0,TMP_17),$a).call($b,"delete_if")}for(var i=0,keys=self.$$keys,length=keys.length,key,value,obj;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}obj=block(key,value);if(obj!==false&&obj!==nil){if(Opal.hash_delete(self,key)!==undefined){length--;i--}}}return self},TMP_16.$$arity=0);Opal.alias(self,"dup","clone");Opal.defn(self,"$each",TMP_18=function $$each(){var $a,$b,TMP_19,self=this,$iter=TMP_18.$$p,block=$iter||nil;TMP_18.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_19=function(){var self=TMP_19.$$s||this;return self.$size()},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19),$a).call($b,"each")}for(var i=0,keys=self.$$keys,length=keys.length,key,value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}Opal.yield1(block,[key,value])}return self},TMP_18.$$arity=0);Opal.defn(self,"$each_key",TMP_20=function $$each_key(){var $a,$b,TMP_21,self=this,$iter=TMP_20.$$p,block=$iter||nil;TMP_20.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_21=function(){var self=TMP_21.$$s||this;return self.$size()},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21),$a).call($b,"each_key")}for(var i=0,keys=self.$$keys,length=keys.length,key;i<length;i++){key=keys[i];block(key.$$is_string?key:key.key)}return self},TMP_20.$$arity=0);Opal.alias(self,"each_pair","each");Opal.defn(self,"$each_value",TMP_22=function $$each_value(){var $a,$b,TMP_23,self=this,$iter=TMP_22.$$p,block=$iter||nil;TMP_22.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_23=function(){var self=TMP_23.$$s||this;return self.$size()},TMP_23.$$s=self,TMP_23.$$arity=0,TMP_23),$a).call($b,"each_value")}for(var i=0,keys=self.$$keys,length=keys.length,key;i<length;i++){key=keys[i];block(key.$$is_string?self.$$smap[key]:key.value)}return self},TMP_22.$$arity=0);Opal.defn(self,"$empty?",TMP_24=function(){var self=this;return self.$$keys.length===0},TMP_24.$$arity=0);Opal.alias(self,"eql?","==");Opal.defn(self,"$fetch",TMP_25=function $$fetch(key,defaults){var self=this,$iter=TMP_25.$$p,block=$iter||nil;TMP_25.$$p=null;var value=Opal.hash_get(self,key);if(value!==undefined){return value}if(block!==nil){return block(key)}if(defaults!==undefined){return defaults}return self.$raise($scope.get("KeyError"),"key not found: "+key.$inspect())},TMP_25.$$arity=-2);Opal.defn(self,"$flatten",TMP_26=function $$flatten(level){var self=this;if(level==null){level=1}level=$scope.get("Opal")["$coerce_to!"](level,$scope.get("Integer"),"to_int");var result=[];for(var i=0,keys=self.$$keys,length=keys.length,key,value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}result.push(key);if(value.$$is_array){if(level===1){result.push(value);continue}result=result.concat(value.$flatten(level-2));continue}result.push(value)}return result},TMP_26.$$arity=-1);Opal.defn(self,"$has_key?",TMP_27=function(key){var self=this;return Opal.hash_get(self,key)!==undefined},TMP_27.$$arity=1);Opal.defn(self,"$has_value?",TMP_28=function(value){var self=this;for(var i=0,keys=self.$$keys,length=keys.length,key;i<length;i++){key=keys[i];if((key.$$is_string?self.$$smap[key]:key.value)["$=="](value)){return true}}return false},TMP_28.$$arity=1);Opal.defn(self,"$hash",TMP_29=function $$hash(){var self=this;var top=Opal.hash_ids===undefined,hash_id=self.$object_id(),result=["Hash"],key,item;try{if(top){Opal.hash_ids={}}if(Opal.hash_ids.hasOwnProperty(hash_id)){return"self"}for(key in Opal.hash_ids){if(Opal.hash_ids.hasOwnProperty(key)){item=Opal.hash_ids[key];if(self["$eql?"](item)){return"self"}}}Opal.hash_ids[hash_id]=self;for(var i=0,keys=self.$$keys,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){result.push([key,self.$$smap[key].$hash()])}else{result.push([key.key_hash,key.value.$hash()])}}return result.sort().join()}finally{if(top){delete Opal.hash_ids}}},TMP_29.$$arity=0);Opal.alias(self,"include?","has_key?");Opal.defn(self,"$index",TMP_30=function $$index(object){var self=this;for(var i=0,keys=self.$$keys,length=keys.length,key,value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}if(value["$=="](object)){return key}}return nil},TMP_30.$$arity=1);Opal.defn(self,"$indexes",TMP_31=function $$indexes($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var result=[];for(var i=0,length=args.length,key,value;i<length;i++){key=args[i];value=Opal.hash_get(self,key);if(value===undefined){result.push(self.$default());continue}result.push(value)}return result},TMP_31.$$arity=-1);Opal.alias(self,"indices","indexes");var inspect_ids;Opal.defn(self,"$inspect",TMP_32=function $$inspect(){var self=this;var top=inspect_ids===undefined,hash_id=self.$object_id(),result=[];try{if(top){inspect_ids={}}if(inspect_ids.hasOwnProperty(hash_id)){return"{...}"}inspect_ids[hash_id]=true;for(var i=0,keys=self.$$keys,length=keys.length,key,value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}result.push(key.$inspect()+"=>"+value.$inspect())}return"{"+result.join(", ")+"}"}finally{if(top){inspect_ids=undefined}}},TMP_32.$$arity=0);Opal.defn(self,"$invert",TMP_33=function $$invert(){var self=this;var hash=Opal.hash();for(var i=0,keys=self.$$keys,length=keys.length,key,value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}Opal.hash_put(hash,value,key)}return hash},TMP_33.$$arity=0);Opal.defn(self,"$keep_if",TMP_34=function $$keep_if(){var $a,$b,TMP_35,self=this,$iter=TMP_34.$$p,block=$iter||nil;TMP_34.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_35=function(){var self=TMP_35.$$s||this;return self.$size()},TMP_35.$$s=self,TMP_35.$$arity=0,TMP_35),$a).call($b,"keep_if")}for(var i=0,keys=self.$$keys,length=keys.length,key,value,obj;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}obj=block(key,value);if(obj===false||obj===nil){if(Opal.hash_delete(self,key)!==undefined){length--;i--}}}return self},TMP_34.$$arity=0);Opal.alias(self,"key","index");Opal.alias(self,"key?","has_key?");Opal.defn(self,"$keys",TMP_36=function $$keys(){var self=this;var result=[];for(var i=0,keys=self.$$keys,length=keys.length,key;i<length;i++){key=keys[i];if(key.$$is_string){result.push(key)}else{result.push(key.key)}}return result},TMP_36.$$arity=0);Opal.defn(self,"$length",TMP_37=function $$length(){var self=this;return self.$$keys.length},TMP_37.$$arity=0);Opal.alias(self,"member?","has_key?");Opal.defn(self,"$merge",TMP_38=function $$merge(other){var $a,$b,self=this,$iter=TMP_38.$$p,block=$iter||nil;TMP_38.$$p=null;return($a=($b=self.$dup())["$merge!"],$a.$$p=block.$to_proc(),$a).call($b,other)},TMP_38.$$arity=1);Opal.defn(self,"$merge!",TMP_39=function(other){var self=this,$iter=TMP_39.$$p,block=$iter||nil;TMP_39.$$p=null;if(!$scope.get("Hash")["$==="](other)){other=$scope.get("Opal")["$coerce_to!"](other,$scope.get("Hash"),"to_hash")}var i,other_keys=other.$$keys,length=other_keys.length,key,value,other_value;if(block===nil){for(i=0;i<length;i++){key=other_keys[i];if(key.$$is_string){other_value=other.$$smap[key]}else{other_value=key.value;key=key.key}Opal.hash_put(self,key,other_value)}return self}for(i=0;i<length;i++){key=other_keys[i];if(key.$$is_string){other_value=other.$$smap[key]}else{other_value=key.value;key=key.key}value=Opal.hash_get(self,key);if(value===undefined){Opal.hash_put(self,key,other_value);continue}Opal.hash_put(self,key,block(key,value,other_value))}return self},TMP_39.$$arity=1);Opal.defn(self,"$rassoc",TMP_40=function $$rassoc(object){var self=this;for(var i=0,keys=self.$$keys,length=keys.length,key,value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}if(value["$=="](object)){return[key,value]}}return nil},TMP_40.$$arity=1);Opal.defn(self,"$rehash",TMP_41=function $$rehash(){var self=this;Opal.hash_rehash(self);return self},TMP_41.$$arity=0);Opal.defn(self,"$reject",TMP_42=function $$reject(){var $a,$b,TMP_43,self=this,$iter=TMP_42.$$p,block=$iter||nil;TMP_42.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_43=function(){var self=TMP_43.$$s||this;return self.$size()},TMP_43.$$s=self,TMP_43.$$arity=0,TMP_43),$a).call($b,"reject")}var hash=Opal.hash();for(var i=0,keys=self.$$keys,length=keys.length,key,value,obj;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}obj=block(key,value);if(obj===false||obj===nil){Opal.hash_put(hash,key,value)}}return hash},TMP_42.$$arity=0);Opal.defn(self,"$reject!",TMP_44=function(){var $a,$b,TMP_45,self=this,$iter=TMP_44.$$p,block=$iter||nil;TMP_44.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_45=function(){var self=TMP_45.$$s||this;return self.$size()},TMP_45.$$s=self,TMP_45.$$arity=0,TMP_45),$a).call($b,"reject!")}var changes_were_made=false;for(var i=0,keys=self.$$keys,length=keys.length,key,value,obj;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}obj=block(key,value);if(obj!==false&&obj!==nil){if(Opal.hash_delete(self,key)!==undefined){changes_were_made=true;length--;i--}}}return changes_were_made?self:nil},TMP_44.$$arity=0);Opal.defn(self,"$replace",TMP_46=function $$replace(other){var $a,$b,self=this;other=$scope.get("Opal")["$coerce_to!"](other,$scope.get("Hash"),"to_hash");Opal.hash_init(self);for(var i=0,other_keys=other.$$keys,length=other_keys.length,key,value,other_value;i<length;i++){key=other_keys[i];if(key.$$is_string){other_value=other.$$smap[key]}else{other_value=key.value;key=key.key}Opal.hash_put(self,key,other_value)}if(($a=other.$default_proc())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[other.$default_proc()],$b=self,$b["$default_proc="].apply($b,$a),$a[$a.length-1]}else{$a=[other.$default()],$b=self,$b["$default="].apply($b,$a),$a[$a.length-1]}return self},TMP_46.$$arity=1);Opal.defn(self,"$select",TMP_47=function $$select(){var $a,$b,TMP_48,self=this,$iter=TMP_47.$$p,block=$iter||nil;TMP_47.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_48=function(){var self=TMP_48.$$s||this;return self.$size()},TMP_48.$$s=self,TMP_48.$$arity=0,TMP_48),$a).call($b,"select")}var hash=Opal.hash();for(var i=0,keys=self.$$keys,length=keys.length,key,value,obj;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}obj=block(key,value);if(obj!==false&&obj!==nil){Opal.hash_put(hash,key,value)}}return hash},TMP_47.$$arity=0);Opal.defn(self,"$select!",TMP_49=function(){var $a,$b,TMP_50,self=this,$iter=TMP_49.$$p,block=$iter||nil;TMP_49.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_50=function(){var self=TMP_50.$$s||this;return self.$size()},TMP_50.$$s=self,TMP_50.$$arity=0,TMP_50),$a).call($b,"select!")}var result=nil;for(var i=0,keys=self.$$keys,length=keys.length,key,value,obj;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}obj=block(key,value);if(obj===false||obj===nil){if(Opal.hash_delete(self,key)!==undefined){length--;i--}result=self}}return result},TMP_49.$$arity=0);Opal.defn(self,"$shift",TMP_51=function $$shift(){var self=this;var keys=self.$$keys,key;if(keys.length>0){key=keys[0];key=key.$$is_string?key:key.key;return[key,Opal.hash_delete(self,key)]}return self.$default(nil)},TMP_51.$$arity=0);Opal.alias(self,"size","length");self.$alias_method("store","[]=");Opal.defn(self,"$to_a",TMP_52=function $$to_a(){var self=this;var result=[];for(var i=0,keys=self.$$keys,length=keys.length,key,value;i<length;i++){key=keys[i];if(key.$$is_string){value=self.$$smap[key]}else{value=key.value;key=key.key}result.push([key,value])}return result},TMP_52.$$arity=0);Opal.defn(self,"$to_h",TMP_53=function $$to_h(){var self=this;if(self.$$class===Opal.Hash){return self}var hash=new Opal.Hash.$$alloc;Opal.hash_init(hash);Opal.hash_clone(self,hash);return hash},TMP_53.$$arity=0);Opal.defn(self,"$to_hash",TMP_54=function $$to_hash(){var self=this;return self},TMP_54.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.alias(self,"update","merge!");Opal.alias(self,"value?","has_value?");Opal.alias(self,"values_at","indexes");return(Opal.defn(self,"$values",TMP_55=function $$values(){var self=this;var result=[];for(var i=0,keys=self.$$keys,length=keys.length,key;i<length;i++){key=keys[i];if(key.$$is_string){result.push(self.$$smap[key])}else{result.push(key.value)}}return result},TMP_55.$$arity=0),nil)&&"values"}($scope.base,null)};Opal.modules["corelib/number"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$bridge","$raise","$class","$Float","$respond_to?","$coerce_to!","$__coerced__","$===","$!","$>","$**","$new","$<","$to_f","$==","$nan?","$infinite?","$enum_for","$+","$-","$gcd","$lcm","$/","$frexp","$to_i","$ldexp","$rationalize","$*","$<<","$to_r","$-@","$size","$<=","$>="]);self.$require("corelib/numeric");(function($base,$super){function $Number(){}var self=$Number=$klass($base,$super,"Number",$Number);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41,TMP_42,TMP_43,TMP_44,TMP_45,TMP_46,TMP_47,TMP_48,TMP_49,TMP_50,TMP_51,TMP_52,TMP_54,TMP_55,TMP_56,TMP_57,TMP_58,TMP_59,TMP_61,TMP_62,TMP_63,TMP_64,TMP_65,TMP_66,TMP_67;$scope.get("Opal").$bridge(self,Number);Number.prototype.$$is_number=true;Opal.defn(self,"$coerce",TMP_1=function $$coerce(other){var self=this;if(other===nil){self.$raise($scope.get("TypeError"),"can't convert "+other.$class()+" into Float")}else if(other.$$is_string){return[self.$Float(other),self]}else if(other["$respond_to?"]("to_f")){return[$scope.get("Opal")["$coerce_to!"](other,$scope.get("Float"),"to_f"),self]}else if(other.$$is_number){return[other,self]}else{self.$raise($scope.get("TypeError"),"can't convert "+other.$class()+" into Float")}},TMP_1.$$arity=1);Opal.defn(self,"$__id__",TMP_2=function $$__id__(){var self=this;return self*2+1},TMP_2.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$+",TMP_3=function(other){var self=this;if(other.$$is_number){return self+other}else{return self.$__coerced__("+",other)}},TMP_3.$$arity=1);Opal.defn(self,"$-",TMP_4=function(other){var self=this;if(other.$$is_number){return self-other}else{return self.$__coerced__("-",other)}},TMP_4.$$arity=1);Opal.defn(self,"$*",TMP_5=function(other){var self=this;if(other.$$is_number){return self*other}else{return self.$__coerced__("*",other)}},TMP_5.$$arity=1);Opal.defn(self,"$/",TMP_6=function(other){var self=this;if(other.$$is_number){return self/other}else{return self.$__coerced__("/",other)}},TMP_6.$$arity=1);Opal.alias(self,"fdiv","/");Opal.defn(self,"$%",TMP_7=function(other){var self=this;if(other.$$is_number){if(other==-Infinity){return other}else if(other==0){self.$raise($scope.get("ZeroDivisionError"),"divided by 0")}else if(other<0||self<0){return(self%other+other)%other}else{return self%other}}else{return self.$__coerced__("%",other)}},TMP_7.$$arity=1);Opal.defn(self,"$&",TMP_8=function(other){var self=this;if(other.$$is_number){return self&other}else{return self.$__coerced__("&",other)}},TMP_8.$$arity=1);Opal.defn(self,"$|",TMP_9=function(other){var self=this;if(other.$$is_number){return self|other}else{return self.$__coerced__("|",other)}},TMP_9.$$arity=1);Opal.defn(self,"$^",TMP_10=function(other){var self=this;if(other.$$is_number){return self^other}else{return self.$__coerced__("^",other)}},TMP_10.$$arity=1);Opal.defn(self,"$<",TMP_11=function(other){var self=this;if(other.$$is_number){return self<other}else{return self.$__coerced__("<",other)}},TMP_11.$$arity=1);Opal.defn(self,"$<=",TMP_12=function(other){var self=this;if(other.$$is_number){return self<=other}else{return self.$__coerced__("<=",other)}},TMP_12.$$arity=1);Opal.defn(self,"$>",TMP_13=function(other){var self=this;if(other.$$is_number){return self>other}else{return self.$__coerced__(">",other)}},TMP_13.$$arity=1);Opal.defn(self,"$>=",TMP_14=function(other){var self=this;if(other.$$is_number){return self>=other}else{return self.$__coerced__(">=",other)}},TMP_14.$$arity=1);var spaceship_operator=function(self,other){if(other.$$is_number){if(isNaN(self)||isNaN(other)){return nil}if(self>other){return 1}else if(self<other){return-1}else{return 0}}else{return self.$__coerced__("<=>",other)}};Opal.defn(self,"$<=>",TMP_15=function(other){var self=this;try{return spaceship_operator(self,other)}catch($err){if(Opal.rescue($err,[$scope.get("ArgumentError")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},TMP_15.$$arity=1);Opal.defn(self,"$<<",TMP_16=function(count){var self=this;count=$scope.get("Opal")["$coerce_to!"](count,$scope.get("Integer"),"to_int");return count>0?self<<count:self>>-count},TMP_16.$$arity=1);Opal.defn(self,"$>>",TMP_17=function(count){var self=this;count=$scope.get("Opal")["$coerce_to!"](count,$scope.get("Integer"),"to_int");return count>0?self>>count:self<<-count},TMP_17.$$arity=1);Opal.defn(self,"$[]",TMP_18=function(bit){var self=this;bit=$scope.get("Opal")["$coerce_to!"](bit,$scope.get("Integer"),"to_int");if(bit<0){return 0}if(bit>=32){return self<0?1:0}return self>>bit&1},TMP_18.$$arity=1);Opal.defn(self,"$+@",TMP_19=function(){var self=this;return+self},TMP_19.$$arity=0);Opal.defn(self,"$-@",TMP_20=function(){var self=this;return-self},TMP_20.$$arity=0);Opal.defn(self,"$~",TMP_21=function(){var self=this;return~self},TMP_21.$$arity=0);Opal.defn(self,"$**",TMP_22=function(other){var $a,$b,$c,self=this;if(($a=$scope.get("Integer")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=($b=$scope.get("Integer")["$==="](self)["$!"]())!==false&&$b!==nil&&$b!=null?$b:$rb_gt(other,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return Math.pow(self,other)}else{return $scope.get("Rational").$new(self,1)["$**"](other)}}else if(($a=($b=$rb_lt(self,0))?($c=$scope.get("Float")["$==="](other))!==false&&$c!==nil&&$c!=null?$c:$scope.get("Rational")["$==="](other):$rb_lt(self,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Complex").$new(self,0)["$**"](other.$to_f())}else if(($a=other.$$is_number!=null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return Math.pow(self,other)}else{return self.$__coerced__("**",other)}},TMP_22.$$arity=1);Opal.defn(self,"$==",TMP_23=function(other){var self=this;if(other.$$is_number){return self==Number(other)}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}},TMP_23.$$arity=1);Opal.defn(self,"$abs",TMP_24=function $$abs(){var self=this;return Math.abs(self)},TMP_24.$$arity=0);Opal.defn(self,"$abs2",TMP_25=function $$abs2(){var self=this;return Math.abs(self*self)},TMP_25.$$arity=0);Opal.defn(self,"$angle",TMP_26=function $$angle(){var $a,self=this;if(($a=self["$nan?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}if(self==0){if(1/self>0){return 0}else{return Math.PI}}else if(self<0){return Math.PI}else{return 0}},TMP_26.$$arity=0);Opal.alias(self,"arg","angle");Opal.alias(self,"phase","angle");Opal.defn(self,"$bit_length",TMP_27=function $$bit_length(){var $a,self=this;if(($a=$scope.get("Integer")["$==="](self))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NoMethodError").$new("undefined method `bit_length` for "+self+":Float","bit_length"))}if(self===0||self===-1){return 0}var result=0,value=self<0?~self:self;while(value!=0){result+=1;value>>>=1}return result},TMP_27.$$arity=0);Opal.defn(self,"$ceil",TMP_28=function $$ceil(){var self=this;return Math.ceil(self)},TMP_28.$$arity=0);Opal.defn(self,"$chr",TMP_29=function $$chr(encoding){var self=this;return String.fromCharCode(self)},TMP_29.$$arity=-1);Opal.defn(self,"$denominator",TMP_30=function $$denominator(){var $a,$b,self=this,$iter=TMP_30.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_30.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=($b=self["$nan?"]())!==false&&$b!==nil&&$b!=null?$b:self["$infinite?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return 1}else{return($a=($b=self,Opal.find_super_dispatcher(self,"denominator",TMP_30,false)),$a.$$p=$iter,$a).apply($b,$zuper)}},TMP_30.$$arity=0);Opal.defn(self,"$downto",TMP_31=function $$downto(stop){var $a,$b,TMP_32,self=this,$iter=TMP_31.$$p,block=$iter||nil;TMP_31.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_32=function(){var self=TMP_32.$$s||this,$c;if(($c=$scope.get("Numeric")["$==="](stop))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed")}if(($c=$rb_gt(stop,self))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return 0}else{return $rb_plus($rb_minus(self,stop),1)}},TMP_32.$$s=self,TMP_32.$$arity=0,TMP_32),$a).call($b,"downto",stop)}if(!stop.$$is_number){self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed")}for(var i=self;i>=stop;i--){block(i)}return self},TMP_31.$$arity=1);Opal.alias(self,"eql?","==");Opal.defn(self,"$equal?",TMP_33=function(other){var $a,self=this;return($a=self["$=="](other))!==false&&$a!==nil&&$a!=null?$a:isNaN(self)&&isNaN(other)},TMP_33.$$arity=1);Opal.defn(self,"$even?",TMP_34=function(){var self=this;return self%2===0},TMP_34.$$arity=0);Opal.defn(self,"$floor",TMP_35=function $$floor(){var self=this;return Math.floor(self)},TMP_35.$$arity=0);Opal.defn(self,"$gcd",TMP_36=function $$gcd(other){var $a,self=this;if(($a=$scope.get("Integer")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"not an integer")}var min=Math.abs(self),max=Math.abs(other);while(min>0){var tmp=min;min=max%min;max=tmp}return max},TMP_36.$$arity=1);Opal.defn(self,"$gcdlcm",TMP_37=function $$gcdlcm(other){var self=this;return[self.$gcd(),self.$lcm()]},TMP_37.$$arity=1);Opal.defn(self,"$integer?",TMP_38=function(){var self=this;return self%1===0},TMP_38.$$arity=0);Opal.defn(self,"$is_a?",TMP_39=function(klass){var $a,$b,self=this,$iter=TMP_39.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_39.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=($b=klass["$=="]($scope.get("Fixnum")))?$scope.get("Integer")["$==="](self):klass["$=="]($scope.get("Fixnum")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Integer")))?$scope.get("Integer")["$==="](self):klass["$=="]($scope.get("Integer")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Float")))?$scope.get("Float")["$==="](self):klass["$=="]($scope.get("Float")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}return($a=($b=self,Opal.find_super_dispatcher(self,"is_a?",TMP_39,false)),$a.$$p=$iter,$a).apply($b,$zuper)},TMP_39.$$arity=1);Opal.alias(self,"kind_of?","is_a?");Opal.defn(self,"$instance_of?",TMP_40=function(klass){var $a,$b,self=this,$iter=TMP_40.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_40.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=($b=klass["$=="]($scope.get("Fixnum")))?$scope.get("Integer")["$==="](self):klass["$=="]($scope.get("Fixnum")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Integer")))?$scope.get("Integer")["$==="](self):klass["$=="]($scope.get("Integer")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Float")))?$scope.get("Float")["$==="](self):klass["$=="]($scope.get("Float")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}return($a=($b=self,Opal.find_super_dispatcher(self,"instance_of?",TMP_40,false)),$a.$$p=$iter,$a).apply($b,$zuper)},TMP_40.$$arity=1);Opal.defn(self,"$lcm",TMP_41=function $$lcm(other){var $a,self=this;if(($a=$scope.get("Integer")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"not an integer")}if(self==0||other==0){return 0}else{return Math.abs(self*other/self.$gcd(other))}},TMP_41.$$arity=1);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.defn(self,"$next",TMP_42=function $$next(){var self=this;return self+1},TMP_42.$$arity=0);Opal.defn(self,"$nonzero?",TMP_43=function(){var self=this;return self==0?nil:self},TMP_43.$$arity=0);Opal.defn(self,"$numerator",TMP_44=function $$numerator(){var $a,$b,self=this,$iter=TMP_44.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_44.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=($b=self["$nan?"]())!==false&&$b!==nil&&$b!=null?$b:self["$infinite?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}else{return($a=($b=self,Opal.find_super_dispatcher(self,"numerator",TMP_44,false)),$a.$$p=$iter,$a).apply($b,$zuper)}},TMP_44.$$arity=0);Opal.defn(self,"$odd?",TMP_45=function(){var self=this;return self%2!==0},TMP_45.$$arity=0);Opal.defn(self,"$ord",TMP_46=function $$ord(){var self=this;return self},TMP_46.$$arity=0);Opal.defn(self,"$pred",TMP_47=function $$pred(){var self=this;return self-1},TMP_47.$$arity=0);Opal.defn(self,"$quo",TMP_48=function $$quo(other){var $a,$b,self=this,$iter=TMP_48.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_48.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=$scope.get("Integer")["$==="](self))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=self,Opal.find_super_dispatcher(self,"quo",TMP_48,false)),$a.$$p=$iter,$a).apply($b,$zuper)}else{return $rb_divide(self,other)}},TMP_48.$$arity=1);Opal.defn(self,"$rationalize",TMP_49=function $$rationalize(eps){var $a,$b,self=this,f=nil,n=nil;if(arguments.length>1){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)")}if(($a=$scope.get("Integer")["$==="](self))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Rational").$new(self,1)}else if(($a=self["$infinite?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("FloatDomainError"),"Infinity")}else if(($a=self["$nan?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("FloatDomainError"),"NaN")}else if(($a=eps==null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$b=$scope.get("Math").$frexp(self),$a=Opal.to_ary($b),f=$a[0]==null?nil:$a[0],n=$a[1]==null?nil:$a[1],$b;f=$scope.get("Math").$ldexp(f,$scope.get("Float").$$scope.get("MANT_DIG")).$to_i();n=$rb_minus(n,$scope.get("Float").$$scope.get("MANT_DIG"));return $scope.get("Rational").$new($rb_times(2,f),1["$<<"]($rb_minus(1,n))).$rationalize($scope.get("Rational").$new(1,1["$<<"]($rb_minus(1,n))))}else{return self.$to_r().$rationalize(eps)}},TMP_49.$$arity=-1);Opal.defn(self,"$round",TMP_50=function $$round(ndigits){var $a,$b,self=this,_=nil,exp=nil;if(($a=$scope.get("Integer")["$==="](self))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=ndigits==null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}if(($a=($b=$scope.get("Float")["$==="](ndigits),$b!==false&&$b!==nil&&$b!=null?ndigits["$infinite?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("RangeError"),"Infinity")}ndigits=$scope.get("Opal")["$coerce_to!"](ndigits,$scope.get("Integer"),"to_int");if(($a=$rb_lt(ndigits,$scope.get("Integer").$$scope.get("MIN")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("RangeError"),"out of bounds")}if(($a=ndigits>=0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}ndigits=ndigits["$-@"]();if(.415241*ndigits-.125>self.$size()){return 0}var f=Math.pow(10,ndigits),x=Math.floor((Math.abs(x)+f/2)/f)*f;return self<0?-x:x}else{if(($a=($b=self["$nan?"](),$b!==false&&$b!==nil&&$b!=null?ndigits==null:$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("FloatDomainError"),"NaN")}ndigits=$scope.get("Opal")["$coerce_to!"](ndigits||0,$scope.get("Integer"),"to_int");if(($a=$rb_le(ndigits,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=self["$nan?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("RangeError"),"NaN")}else if(($a=self["$infinite?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("FloatDomainError"),"Infinity")}}else if(ndigits["$=="](0)){return Math.round(self)}else if(($a=($b=self["$nan?"]())!==false&&$b!==nil&&$b!=null?$b:self["$infinite?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}$b=$scope.get("Math").$frexp(self),$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],exp=$a[1]==null?nil:$a[1],$b;if(($a=$rb_ge(ndigits,$rb_minus($rb_plus($scope.get("Float").$$scope.get("DIG"),2),function(){if(($b=$rb_gt(exp,0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return $rb_divide(exp,4)}else{return $rb_minus($rb_divide(exp,3),1)}return nil}())))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self}if(($a=$rb_lt(ndigits,function(){if(($b=$rb_gt(exp,0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return $rb_plus($rb_divide(exp,3),1)}else{return $rb_divide(exp,4)}return nil}()["$-@"]()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return 0}return Math.round(self*Math.pow(10,ndigits))/Math.pow(10,ndigits)}},TMP_50.$$arity=-1);Opal.defn(self,"$step",TMP_51=function $$step(limit,step){var $a,self=this,$iter=TMP_51.$$p,block=$iter||nil;if(step==null){step=1}TMP_51.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return self.$enum_for("step",limit,step)}if(($a=step==0)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"step cannot be 0")}var value=self;if(limit===Infinity||limit===-Infinity){block(value);return self}if(step>0){while(value<=limit){block(value);value+=step}}else{while(value>=limit){block(value);value+=step}}return self},TMP_51.$$arity=-2);Opal.alias(self,"succ","next");Opal.defn(self,"$times",TMP_52=function $$times(){var $a,$b,TMP_53,self=this,$iter=TMP_52.$$p,block=$iter||nil;TMP_52.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_53=function(){var self=TMP_53.$$s||this;return self},TMP_53.$$s=self,TMP_53.$$arity=0,TMP_53),$a).call($b,"times")}for(var i=0;i<self;i++){block(i)}return self},TMP_52.$$arity=0);Opal.defn(self,"$to_f",TMP_54=function $$to_f(){var self=this;return self},TMP_54.$$arity=0);Opal.defn(self,"$to_i",TMP_55=function $$to_i(){var self=this;return parseInt(self,10)},TMP_55.$$arity=0);Opal.alias(self,"to_int","to_i");Opal.defn(self,"$to_r",TMP_56=function $$to_r(){var $a,$b,self=this,f=nil,e=nil;if(($a=$scope.get("Integer")["$==="](self))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Rational").$new(self,1)}else{$b=$scope.get("Math").$frexp(self),$a=Opal.to_ary($b),f=$a[0]==null?nil:$a[0],e=$a[1]==null?nil:$a[1],$b;f=$scope.get("Math").$ldexp(f,$scope.get("Float").$$scope.get("MANT_DIG")).$to_i();e=$rb_minus(e,$scope.get("Float").$$scope.get("MANT_DIG"));return $rb_times(f,$scope.get("Float").$$scope.get("RADIX")["$**"](e)).$to_r()}},TMP_56.$$arity=0);Opal.defn(self,"$to_s",TMP_57=function $$to_s(base){var $a,$b,self=this;if(base==null){base=10}if(($a=($b=$rb_lt(base,2))!==false&&$b!==nil&&$b!=null?$b:$rb_gt(base,36))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"base must be between 2 and 36")}return self.toString(base)},TMP_57.$$arity=-1);Opal.alias(self,"truncate","to_i");Opal.alias(self,"inspect","to_s");Opal.defn(self,"$divmod",TMP_58=function $$divmod(other){var $a,$b,self=this,$iter=TMP_58.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_58.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=($b=self["$nan?"]())!==false&&$b!==nil&&$b!=null?$b:other["$nan?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("FloatDomainError"),"NaN")}else if(($a=self["$infinite?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("FloatDomainError"),"Infinity")}else{return($a=($b=self,Opal.find_super_dispatcher(self,"divmod",TMP_58,false)),$a.$$p=$iter,$a).apply($b,$zuper)}},TMP_58.$$arity=1);Opal.defn(self,"$upto",TMP_59=function $$upto(stop){var $a,$b,TMP_60,self=this,$iter=TMP_59.$$p,block=$iter||nil;TMP_59.$$p=null;if(block!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_60=function(){var self=TMP_60.$$s||this,$c;if(($c=$scope.get("Numeric")["$==="](stop))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed")}if(($c=$rb_lt(stop,self))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return 0}else{return $rb_plus($rb_minus(stop,self),1)}},TMP_60.$$s=self,TMP_60.$$arity=0,TMP_60),$a).call($b,"upto",stop)}if(!stop.$$is_number){self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed")}for(var i=self;i<=stop;i++){block(i)}return self},TMP_59.$$arity=1);Opal.defn(self,"$zero?",TMP_61=function(){var self=this;return self==0},TMP_61.$$arity=0);Opal.defn(self,"$size",TMP_62=function $$size(){var self=this;return 4},TMP_62.$$arity=0);Opal.defn(self,"$nan?",TMP_63=function(){var self=this;return isNaN(self)},TMP_63.$$arity=0);Opal.defn(self,"$finite?",TMP_64=function(){var self=this;return self!=Infinity&&self!=-Infinity&&!isNaN(self)},TMP_64.$$arity=0);Opal.defn(self,"$infinite?",TMP_65=function(){var self=this;if(self==Infinity){return+1}else if(self==-Infinity){return-1}else{return nil}},TMP_65.$$arity=0);Opal.defn(self,"$positive?",TMP_66=function(){var self=this;return self==Infinity||1/self>0},TMP_66.$$arity=0);return(Opal.defn(self,"$negative?",TMP_67=function(){var self=this;return self==-Infinity||1/self<0},TMP_67.$$arity=0),nil)&&"negative?"})($scope.base,$scope.get("Numeric"));Opal.cdecl($scope,"Fixnum",$scope.get("Number"));(function($base,$super){function $Integer(){}var self=$Integer=$klass($base,$super,"Integer",$Integer);var def=self.$$proto,$scope=self.$$scope,TMP_68;Opal.defs(self,"$===",TMP_68=function(other){var self=this;if(!other.$$is_number){return false}return other%1===0},TMP_68.$$arity=1);Opal.cdecl($scope,"MAX",Math.pow(2,30)-1);return Opal.cdecl($scope,"MIN",-Math.pow(2,30))})($scope.base,$scope.get("Numeric"));return function($base,$super){function $Float(){}var self=$Float=$klass($base,$super,"Float",$Float);var def=self.$$proto,$scope=self.$$scope,TMP_69,$a;Opal.defs(self,"$===",TMP_69=function(other){var self=this;return!!other.$$is_number},TMP_69.$$arity=1);Opal.cdecl($scope,"INFINITY",Infinity);Opal.cdecl($scope,"MAX",Number.MAX_VALUE);Opal.cdecl($scope,"MIN",Number.MIN_VALUE);Opal.cdecl($scope,"NAN",NaN);Opal.cdecl($scope,"DIG",15);Opal.cdecl($scope,"MANT_DIG",53);Opal.cdecl($scope,"RADIX",2);if(($a=typeof Number.EPSILON!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return Opal.cdecl($scope,"EPSILON",Number.EPSILON)}else{return Opal.cdecl($scope,"EPSILON",2.220446049250313e-16)}}($scope.base,$scope.get("Numeric"))};Opal.modules["corelib/range"]=function(Opal){function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$attr_reader","$<=>","$raise","$include?","$<=","$<","$enum_for","$upto","$to_proc","$succ","$!","$==","$===","$exclude_end?","$eql?","$begin","$end","$-","$abs","$to_i","$inspect","$[]"]);self.$require("corelib/enumerable");return function($base,$super){function $Range(){}var self=$Range=$klass($base,$super,"Range",$Range);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13;def.begin=def.exclude=def.end=nil;self.$include($scope.get("Enumerable"));def.$$is_range=true;self.$attr_reader("begin","end");Opal.defn(self,"$initialize",TMP_1=function $$initialize(first,last,exclude){var $a,self=this;if(exclude==null){exclude=false}if(($a=first["$<=>"](last))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"))}self.begin=first;self.end=last;return self.exclude=exclude},TMP_1.$$arity=-3);Opal.defn(self,"$==",TMP_2=function(other){var self=this;if(!other.$$is_range){return false}return self.exclude===other.exclude&&self.begin==other.begin&&self.end==other.end},TMP_2.$$arity=1);Opal.defn(self,"$===",TMP_3=function(value){var self=this;return self["$include?"](value)},TMP_3.$$arity=1);Opal.defn(self,"$cover?",TMP_4=function(value){var $a,$b,self=this;return $a=$rb_le(self.begin,value),$a!==false&&$a!==nil&&$a!=null?function(){if(($b=self.exclude)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return $rb_lt(value,self.end)}else{return $rb_le(value,self.end)}return nil}():$a},TMP_4.$$arity=1);Opal.defn(self,"$each",TMP_5=function $$each(){var $a,$b,$c,self=this,$iter=TMP_5.$$p,block=$iter||nil,current=nil,last=nil;TMP_5.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}var i,limit;if(self.begin.$$is_number&&self.end.$$is_number){if(self.begin%1!==0||self.end%1!==0){self.$raise($scope.get("TypeError"),"can't iterate from Float")}for(i=self.begin,limit=self.end+function(){if(($a=self.exclude)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return 0}else{return 1}return nil}();i<limit;i++){block(i)}return self}if(self.begin.$$is_string&&self.end.$$is_string){($a=($b=self.begin).$upto,$a.$$p=block.$to_proc(),$a).call($b,self.end,self.exclude);return self}current=self.begin;last=self.end;while(($c=$rb_lt(current,last))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){Opal.yield1(block,current);current=current.$succ()}if(($a=($c=self.exclude["$!"](),$c!==false&&$c!==nil&&$c!=null?current["$=="](last):$c))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){Opal.yield1(block,current)}return self},TMP_5.$$arity=0);Opal.defn(self,"$eql?",TMP_6=function(other){var $a,$b,self=this;if(($a=$scope.get("Range")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return false}return $a=($b=self.exclude["$==="](other["$exclude_end?"]()),$b!==false&&$b!==nil&&$b!=null?self.begin["$eql?"](other.$begin()):$b),$a!==false&&$a!==nil&&$a!=null?self.end["$eql?"](other.$end()):$a},TMP_6.$$arity=1);Opal.defn(self,"$exclude_end?",TMP_7=function(){var self=this;return self.exclude},TMP_7.$$arity=0);Opal.alias(self,"first","begin");Opal.alias(self,"include?","cover?");Opal.alias(self,"last","end");Opal.defn(self,"$max",TMP_8=function $$max(){var $a,$b,self=this,$iter=TMP_8.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_8.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if($yield!==nil){return($a=($b=self,Opal.find_super_dispatcher(self,"max",TMP_8,false)),$a.$$p=$iter,$a).apply($b,$zuper)}else{return self.exclude?self.end-1:self.end}},TMP_8.$$arity=0);Opal.alias(self,"member?","cover?");Opal.defn(self,"$min",TMP_9=function $$min(){var $a,$b,self=this,$iter=TMP_9.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_9.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if($yield!==nil){return($a=($b=self,Opal.find_super_dispatcher(self,"min",TMP_9,false)),$a.$$p=$iter,$a).apply($b,$zuper)}else{return self.begin}},TMP_9.$$arity=0);Opal.alias(self,"member?","include?");Opal.defn(self,"$size",TMP_10=function $$size(){var $a,$b,self=this,_begin=nil,_end=nil,infinity=nil;_begin=self.begin;_end=self.end;if(($a=self.exclude)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){_end=$rb_minus(_end,1)}if(($a=($b=$scope.get("Numeric")["$==="](_begin),$b!==false&&$b!==nil&&$b!=null?$scope.get("Numeric")["$==="](_end):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return nil}if(($a=$rb_lt(_end,_begin))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return 0}infinity=$scope.get("Float").$$scope.get("INFINITY");if(($a=($b=infinity["$=="](_begin.$abs()))!==false&&$b!==nil&&$b!=null?$b:_end.$abs()["$=="](infinity))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return infinity}return(Math.abs(_end-_begin)+1).$to_i()},TMP_10.$$arity=0);Opal.defn(self,"$step",TMP_11=function $$step(n){var self=this;if(n==null){n=1}return self.$raise($scope.get("NotImplementedError"))},TMP_11.$$arity=-1);Opal.defn(self,"$to_s",TMP_12=function $$to_s(){var self=this;return self.begin.$inspect()+(self.exclude?"...":"..")+self.end.$inspect()},TMP_12.$$arity=0);Opal.alias(self,"inspect","to_s");return(Opal.defn(self,"$marshal_load",TMP_13=function $$marshal_load(args){var self=this;self.begin=args["$[]"]("begin");self.end=args["$[]"]("end");return self.exclude=args["$[]"]("excl")},TMP_13.$$arity=1),nil)&&"marshal_load"}($scope.base,null)};Opal.modules["corelib/proc"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$raise","$coerce_to!"]);return function($base,$super){function $Proc(){}var self=$Proc=$klass($base,$super,"Proc",$Proc);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10;def.$$is_proc=true;def.$$is_lambda=false;Opal.defs(self,"$new",TMP_1=function(){var self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"tried to create a Proc object without a block")}return block},TMP_1.$$arity=0);Opal.defn(self,"$call",TMP_2=function $$call($a_rest){var self=this,args,$iter=TMP_2.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_2.$$p=null;if(block!==nil){self.$$p=block}var result,$brk=self.$$brk;if($brk){try{if(self.$$is_lambda){result=self.apply(null,args)}else{result=Opal.yieldX(self,args)}}catch(err){if(err===$brk){return $brk.$v}else{throw err}}}else{if(self.$$is_lambda){result=self.apply(null,args)}else{result=Opal.yieldX(self,args)}}return result},TMP_2.$$arity=-1);Opal.alias(self,"[]","call");Opal.alias(self,"===","call");Opal.alias(self,"yield","call");Opal.defn(self,"$to_proc",TMP_3=function $$to_proc(){var self=this;return self},TMP_3.$$arity=0);Opal.defn(self,"$lambda?",TMP_4=function(){var self=this;return!!self.$$is_lambda},TMP_4.$$arity=0);Opal.defn(self,"$arity",TMP_5=function $$arity(){var self=this;if(self.$$is_curried){return-1}else{return self.$$arity}},TMP_5.$$arity=0);Opal.defn(self,"$source_location",TMP_6=function $$source_location(){var self=this;if(self.$$is_curried){return nil}return nil},TMP_6.$$arity=0);Opal.defn(self,"$binding",TMP_7=function $$binding(){var self=this;if(self.$$is_curried){self.$raise($scope.get("ArgumentError"),"Can't create Binding")}return nil},TMP_7.$$arity=0);Opal.defn(self,"$parameters",TMP_8=function $$parameters(){var self=this;if(self.$$is_curried){return[["rest"]]}else if(self.$$parameters){if(self.$$is_lambda){return self.$$parameters}else{var result=[],i,length;for(i=0,length=self.$$parameters.length;i<length;i++){var parameter=self.$$parameters[i];if(parameter[0]==="req"){parameter=["opt",parameter[1]]}result.push(parameter)}return result}}else{return[]}},TMP_8.$$arity=0);Opal.defn(self,"$curry",TMP_9=function $$curry(arity){var self=this;if(arity===undefined){arity=self.length}else{arity=$scope.get("Opal")["$coerce_to!"](arity,$scope.get("Integer"),"to_int");if(self.$$is_lambda&&arity!==self.length){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arity+" for "+self.length+")")}}function curried(){var args=$slice.call(arguments),length=args.length,result;if(length>arity&&self.$$is_lambda&&!self.$$is_curried){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+length+" for "+arity+")")}if(length>=arity){return self.$call.apply(self,args)}result=function(){return curried.apply(null,args.concat($slice.call(arguments)))};result.$$is_lambda=self.$$is_lambda;result.$$is_curried=true;return result}curried.$$is_lambda=self.$$is_lambda;curried.$$is_curried=true;return curried},TMP_9.$$arity=-1);Opal.defn(self,"$dup",TMP_10=function $$dup(){var self=this;var original_proc=self.$$original_proc||self,proc=function(){return original_proc.apply(this,arguments)};for(var prop in self){if(self.hasOwnProperty(prop)){proc[prop]=self[prop]}}return proc},TMP_10.$$arity=0);return Opal.alias(self,"clone","dup")}($scope.base,Function)};Opal.modules["corelib/method"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$attr_reader","$class","$arity","$new","$name"]);(function($base,$super){function $Method(){}var self=$Method=$klass($base,$super,"Method",$Method);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7;def.method=def.receiver=def.owner=def.name=nil;self.$attr_reader("owner","receiver","name");Opal.defn(self,"$initialize",TMP_1=function $$initialize(receiver,method,name){var self=this;self.receiver=receiver;self.owner=receiver.$class();self.name=name;return self.method=method},TMP_1.$$arity=3);Opal.defn(self,"$arity",TMP_2=function $$arity(){var self=this;return self.method.$arity()},TMP_2.$$arity=0);Opal.defn(self,"$parameters",TMP_3=function $$parameters(){var self=this;return self.method.$$parameters},TMP_3.$$arity=0);Opal.defn(self,"$call",TMP_4=function $$call($a_rest){var self=this,args,$iter=TMP_4.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_4.$$p=null;self.method.$$p=block;return self.method.apply(self.receiver,args)},TMP_4.$$arity=-1);Opal.alias(self,"[]","call");Opal.defn(self,"$unbind",TMP_5=function $$unbind(){var self=this;return $scope.get("UnboundMethod").$new(self.owner,self.method,self.name)},TMP_5.$$arity=0);Opal.defn(self,"$to_proc",TMP_6=function $$to_proc(){var self=this;var proc=function(){return self.$call.apply(self,$slice.call(arguments))};proc.$$unbound=self.method;proc.$$is_lambda=true;return proc},TMP_6.$$arity=0);return(Opal.defn(self,"$inspect",TMP_7=function $$inspect(){var self=this;return"#<Method: "+self.receiver.$class()+"#"+self.name+">"},TMP_7.$$arity=0),nil)&&"inspect"})($scope.base,null);return function($base,$super){function $UnboundMethod(){}var self=$UnboundMethod=$klass($base,$super,"UnboundMethod",$UnboundMethod);var def=self.$$proto,$scope=self.$$scope,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12;def.method=def.name=def.owner=nil;self.$attr_reader("owner","name");Opal.defn(self,"$initialize",TMP_8=function $$initialize(owner,method,name){var self=this;self.owner=owner;self.method=method;return self.name=name},TMP_8.$$arity=3);Opal.defn(self,"$arity",TMP_9=function $$arity(){var self=this;return self.method.$arity()},TMP_9.$$arity=0);Opal.defn(self,"$parameters",TMP_10=function $$parameters(){var self=this;return self.method.$$parameters},TMP_10.$$arity=0);Opal.defn(self,"$bind",TMP_11=function $$bind(object){var self=this;return $scope.get("Method").$new(object,self.method,self.name)},TMP_11.$$arity=1);return(Opal.defn(self,"$inspect",TMP_12=function $$inspect(){var self=this;return"#<UnboundMethod: "+self.owner.$name()+"#"+self.name+">"},TMP_12.$$arity=0),nil)&&"inspect"}($scope.base,null)};Opal.modules["corelib/variables"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$hash2=Opal.hash2;Opal.add_stubs(["$new"]);$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil;$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features;$gvars.LOAD_PATH=$gvars[":"]=[];$gvars["/"]="\n";$gvars[","]=nil;Opal.cdecl($scope,"ARGV",[]);Opal.cdecl($scope,"ARGF",$scope.get("Object").$new());Opal.cdecl($scope,"ENV",$hash2([],{}));$gvars.VERBOSE=false;$gvars.DEBUG=false;return $gvars.SAFE=0};Opal.modules["opal/regexp_anchors"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$==","$new"]);return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"REGEXP_START",function(){if($scope.get("RUBY_ENGINE")["$=="]("opal")){return"^"}return nil}());Opal.cdecl($scope,"REGEXP_END",function(){if($scope.get("RUBY_ENGINE")["$=="]("opal")){return"$"}return nil}());Opal.cdecl($scope,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.cdecl($scope,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.cdecl($scope,"INLINE_IDENTIFIER_REGEXP",$scope.get("Regexp").$new("[^"+$scope.get("FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$scope.get("FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]"));Opal.cdecl($scope,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.cdecl($scope,"CONST_NAME_REGEXP",$scope.get("Regexp").$new(""+$scope.get("REGEXP_START")+"(::)?[A-Z][^"+$scope.get("FORBIDDEN_CONST_NAME_CHARS")+"]*"+$scope.get("REGEXP_END")))}($scope.base)};Opal.modules["opal/mini"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/base");self.$require("corelib/nil");self.$require("corelib/boolean");self.$require("corelib/string");self.$require("corelib/comparable");self.$require("corelib/enumerable");self.$require("corelib/enumerator");self.$require("corelib/array");self.$require("corelib/hash");self.$require("corelib/number");self.$require("corelib/range");self.$require("corelib/proc");self.$require("corelib/method");self.$require("corelib/regexp");self.$require("corelib/variables");return self.$require("opal/regexp_anchors")};Opal.modules["corelib/string/inheritance"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$require","$new","$allocate","$initialize","$to_proc","$__send__","$class","$clone","$respond_to?","$==","$inspect","$+","$*","$map","$split","$enum_for","$each_line","$to_a","$%","$-"]);self.$require("corelib/string");(function($base,$super){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$scope=self.$$scope,TMP_1;return(Opal.defs(self,"$inherited",TMP_1=function $$inherited(klass){var self=this,replace=nil;replace=$scope.get("Class").$new($scope.get("String").$$scope.get("Wrapper"));klass.$$proto=replace.$$proto;klass.$$proto.$$class=klass;klass.$$alloc=replace.$$alloc;klass.$$parent=$scope.get("String").$$scope.get("Wrapper");klass.$allocate=replace.$allocate;klass.$new=replace.$new},TMP_1.$$arity=1),nil)&&"inherited"})($scope.base,null);return function($base,$super){function $Wrapper(){}var self=$Wrapper=$klass($base,$super,"Wrapper",$Wrapper);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_15,TMP_16,TMP_17,TMP_19,TMP_20,TMP_21;def.literal=nil;def.$$is_string=true;Opal.defs(self,"$allocate",TMP_2=function $$allocate(string){var $a,$b,self=this,$iter=TMP_2.$$p,$yield=$iter||nil,obj=nil;if(string==null){string=""}TMP_2.$$p=null;obj=($a=($b=self,Opal.find_super_dispatcher(self,"allocate",TMP_2,false,$Wrapper)),$a.$$p=null,$a).call($b);obj.literal=string;return obj},TMP_2.$$arity=-1);Opal.defs(self,"$new",TMP_3=function($a_rest){var $b,$c,self=this,args,$iter=TMP_3.$$p,block=$iter||nil,obj=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_3.$$p=null;obj=self.$allocate();($b=($c=obj).$initialize,$b.$$p=block.$to_proc(),$b).apply($c,Opal.to_a(args));return obj},TMP_3.$$arity=-1);Opal.defs(self,"$[]",TMP_4=function($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}return self.$allocate(objects)},TMP_4.$$arity=-1);Opal.defn(self,"$initialize",TMP_5=function $$initialize(string){var self=this;if(string==null){string=""}return self.literal=string},TMP_5.$$arity=-1);Opal.defn(self,"$method_missing",TMP_6=function $$method_missing($a_rest){var $b,$c,self=this,args,$iter=TMP_6.$$p,block=$iter||nil,result=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_6.$$p=null;result=($b=($c=self.literal).$__send__,$b.$$p=block.$to_proc(),$b).apply($c,Opal.to_a(args));if(($b=result.$$is_string!=null)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=result==self.literal)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self}else{return self.$class().$allocate(result)}}else{return result}},TMP_6.$$arity=-1);Opal.defn(self,"$initialize_copy",TMP_7=function $$initialize_copy(other){var self=this;return self.literal=other.literal.$clone()},TMP_7.$$arity=1);Opal.defn(self,"$respond_to?",TMP_8=function(name,$a_rest){var $b,$c,$d,self=this,$iter=TMP_8.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_8.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}return($b=($c=($d=self,Opal.find_super_dispatcher(self,"respond_to?",TMP_8,false)),$c.$$p=$iter,$c).apply($d,$zuper))!==false&&$b!==nil&&$b!=null?$b:self.literal["$respond_to?"](name)},TMP_8.$$arity=-2);Opal.defn(self,"$==",TMP_9=function(other){var self=this;return self.literal["$=="](other)},TMP_9.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.defn(self,"$to_s",TMP_10=function $$to_s(){var self=this;return self.literal},TMP_10.$$arity=0);Opal.alias(self,"to_str","to_s");Opal.defn(self,"$inspect",TMP_11=function $$inspect(){var self=this;return self.literal.$inspect()},TMP_11.$$arity=0);Opal.defn(self,"$+",TMP_12=function(other){var self=this;return $rb_plus(self.literal,other)},TMP_12.$$arity=1);Opal.defn(self,"$*",TMP_13=function(other){var self=this;var result=$rb_times(self.literal,other);if(result.$$is_string){return self.$class().$allocate(result)}else{return result}},TMP_13.$$arity=1);Opal.defn(self,"$split",TMP_15=function $$split(pattern,limit){var $a,$b,TMP_14,self=this;return($a=($b=self.literal.$split(pattern,limit)).$map,$a.$$p=(TMP_14=function(str){var self=TMP_14.$$s||this;if(str==null)str=nil;return self.$class().$allocate(str)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$a).call($b)},TMP_15.$$arity=-1);Opal.defn(self,"$replace",TMP_16=function $$replace(string){var self=this;return self.literal=string},TMP_16.$$arity=1);Opal.defn(self,"$each_line",TMP_17=function $$each_line(separator){var $a,$b,TMP_18,self=this,$iter=TMP_17.$$p,$yield=$iter||nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}TMP_17.$$p=null;if($yield!==nil){}else{return self.$enum_for("each_line",separator)}return($a=($b=self.literal).$each_line,$a.$$p=(TMP_18=function(str){var self=TMP_18.$$s||this;if(str==null)str=nil;return Opal.yield1($yield,self.$class().$allocate(str))},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18),$a).call($b,separator)},TMP_17.$$arity=-1);Opal.defn(self,"$lines",TMP_19=function $$lines(separator){var $a,$b,self=this,$iter=TMP_19.$$p,block=$iter||nil,e=nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}TMP_19.$$p=null;e=($a=($b=self).$each_line,$a.$$p=block.$to_proc(),$a).call($b,separator);if(block!==false&&block!==nil&&block!=null){return self}else{return e.$to_a()}},TMP_19.$$arity=-1);Opal.defn(self,"$%",TMP_20=function(data){var self=this;return self.literal["$%"](data)},TMP_20.$$arity=1);return(Opal.defn(self,"$instance_variables",TMP_21=function $$instance_variables(){var $a,$b,self=this,$iter=TMP_21.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_21.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}return $rb_minus(($a=($b=self,Opal.find_super_dispatcher(self,"instance_variables",TMP_21,false)),$a.$$p=$iter,$a).apply($b,$zuper),["@literal"])},TMP_21.$$arity=0),nil)&&"instance_variables"}($scope.get("String"),null)};Opal.modules["corelib/string/encoding"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var $a,$b,TMP_13,$c,TMP_16,$d,TMP_19,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$require","$+","$[]","$new","$to_proc","$each","$const_set","$sub","$upcase","$const_get","$===","$==","$name","$include?","$names","$constants","$raise","$attr_accessor","$attr_reader","$register","$length","$bytes","$to_a","$each_byte","$bytesize","$enum_for","$force_encoding","$dup","$coerce_to!","$find","$nil?","$getbyte"]);self.$require("corelib/string");(function($base,$super){function $Encoding(){}var self=$Encoding=$klass($base,$super,"Encoding",$Encoding);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12;def.ascii=def.dummy=def.name=nil;Opal.defs(self,"$register",TMP_1=function $$register(name,options){var $a,$b,$c,TMP_2,self=this,$iter=TMP_1.$$p,block=$iter||nil,names=nil,encoding=nil;if(options==null){options=$hash2([],{})}TMP_1.$$p=null;names=$rb_plus([name],($a=options["$[]"]("aliases"))!==false&&$a!==nil&&$a!=null?$a:[]);encoding=($a=($b=$scope.get("Class")).$new,$a.$$p=block.$to_proc(),$a).call($b,self).$new(name,names,($a=options["$[]"]("ascii"))!==false&&$a!==nil&&$a!=null?$a:false,($a=options["$[]"]("dummy"))!==false&&$a!==nil&&$a!=null?$a:false);return($a=($c=names).$each,$a.$$p=(TMP_2=function(name){var self=TMP_2.$$s||this;if(name==null)name=nil;return self.$const_set(name.$sub("-","_"),encoding)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($c)},TMP_1.$$arity=-2);Opal.defs(self,"$find",TMP_4=function $$find(name){try{var $a,$b,TMP_3,self=this,upcase=nil;upcase=name.$upcase();($a=($b=self.$constants()).$each,$a.$$p=(TMP_3=function(const$){var self=TMP_3.$$s||this,$c,$d,encoding=nil;if(const$==null)const$=nil;encoding=self.$const_get(const$);if(($c=$scope.get("Encoding")["$==="](encoding))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{return nil}if(($c=($d=encoding.$name()["$=="](upcase))!==false&&$d!==nil&&$d!=null?$d:encoding.$names()["$include?"](upcase))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){Opal.ret(encoding)}else{return nil}},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$a).call($b);return self.$raise($scope.get("ArgumentError"),"unknown encoding name - "+name)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_4.$$arity=1);(function(self){var $scope=self.$$scope,def=self.$$proto;return self.$attr_accessor("default_external")})(Opal.get_singleton_class(self));self.$attr_reader("name","names");Opal.defn(self,"$initialize",TMP_5=function $$initialize(name,names,ascii,dummy){var self=this;self.name=name;self.names=names;self.ascii=ascii;return self.dummy=dummy},TMP_5.$$arity=4);Opal.defn(self,"$ascii_compatible?",TMP_6=function(){var self=this;return self.ascii},TMP_6.$$arity=0);Opal.defn(self,"$dummy?",TMP_7=function(){var self=this;return self.dummy},TMP_7.$$arity=0);Opal.defn(self,"$to_s",TMP_8=function $$to_s(){var self=this;return self.name},TMP_8.$$arity=0);Opal.defn(self,"$inspect",TMP_9=function $$inspect(){var $a,self=this;return"#<Encoding:"+self.name+function(){if(($a=self.dummy)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return" (dummy)"}else{return nil}return nil}()+">"},TMP_9.$$arity=0);Opal.defn(self,"$each_byte",TMP_10=function $$each_byte($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"))},TMP_10.$$arity=-1);Opal.defn(self,"$getbyte",TMP_11=function $$getbyte($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"))},TMP_11.$$arity=-1);Opal.defn(self,"$bytesize",TMP_12=function $$bytesize($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"))},TMP_12.$$arity=-1);(function($base,$super){function $EncodingError(){}var self=$EncodingError=$klass($base,$super,"EncodingError",$EncodingError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"));return function($base,$super){function $CompatibilityError(){}var self=$CompatibilityError=$klass($base,$super,"CompatibilityError",$CompatibilityError);var def=self.$$proto,$scope=self.$$scope;return nil}($scope.base,$scope.get("EncodingError"))})($scope.base,null);($a=($b=$scope.get("Encoding")).$register,$a.$$p=(TMP_13=function(){var self=TMP_13.$$s||this,TMP_14,TMP_15;Opal.def(self,"$each_byte",TMP_14=function $$each_byte(string){var self=this,$iter=TMP_14.$$p,block=$iter||nil;TMP_14.$$p=null;for(var i=0,length=string.length;i<length;i++){var code=string.charCodeAt(i);if(code<=127){Opal.yield1(block,code)}else{var encoded=encodeURIComponent(string.charAt(i)).substr(1).split("%");for(var j=0,encoded_length=encoded.length;j<encoded_length;j++){Opal.yield1(block,parseInt(encoded[j],16))}}}},TMP_14.$$arity=1);return(Opal.def(self,"$bytesize",TMP_15=function $$bytesize(){var self=this;return self.$bytes().$length()},TMP_15.$$arity=0),nil)&&"bytesize"},TMP_13.$$s=self,TMP_13.$$arity=0,TMP_13),$a).call($b,"UTF-8",$hash2(["aliases","ascii"],{aliases:["CP65001"],ascii:true}));($a=($c=$scope.get("Encoding")).$register,$a.$$p=(TMP_16=function(){var self=TMP_16.$$s||this,TMP_17,TMP_18;Opal.def(self,"$each_byte",TMP_17=function $$each_byte(string){var self=this,$iter=TMP_17.$$p,block=$iter||nil;TMP_17.$$p=null;for(var i=0,length=string.length;i<length;i++){var code=string.charCodeAt(i);Opal.yield1(block,code&255);Opal.yield1(block,code>>8)}},TMP_17.$$arity=1);return(Opal.def(self,"$bytesize",TMP_18=function $$bytesize(){var self=this;return self.$bytes().$length()},TMP_18.$$arity=0),nil)&&"bytesize"},TMP_16.$$s=self,TMP_16.$$arity=0,TMP_16),$a).call($c,"UTF-16LE");($a=($d=$scope.get("Encoding")).$register,$a.$$p=(TMP_19=function(){var self=TMP_19.$$s||this,TMP_20,TMP_21;Opal.def(self,"$each_byte",TMP_20=function $$each_byte(string){var self=this,$iter=TMP_20.$$p,block=$iter||nil;TMP_20.$$p=null;for(var i=0,length=string.length;i<length;i++){Opal.yield1(block,string.charCodeAt(i)&255)}},TMP_20.$$arity=1);return(Opal.def(self,"$bytesize",TMP_21=function $$bytesize(){var self=this;return self.$bytes().$length()},TMP_21.$$arity=0),nil)&&"bytesize"},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19),$a).call($d,"ASCII-8BIT",$hash2(["aliases","ascii"],{aliases:["BINARY"],ascii:true}));return function($base,$super){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$scope=self.$$scope,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28;def.encoding=nil;String.prototype.encoding=$scope.get("Encoding").$$scope.get("UTF_16LE");Opal.defn(self,"$bytes",TMP_22=function $$bytes(){var self=this;return self.$each_byte().$to_a()},TMP_22.$$arity=0);Opal.defn(self,"$bytesize",TMP_23=function $$bytesize(){var self=this;return self.encoding.$bytesize(self)},TMP_23.$$arity=0);Opal.defn(self,"$each_byte",TMP_24=function $$each_byte(){var $a,$b,self=this,$iter=TMP_24.$$p,block=$iter||nil;TMP_24.$$p=null;if(block!==nil){}else{return self.$enum_for("each_byte")}($a=($b=self.encoding).$each_byte,$a.$$p=block.$to_proc(),$a).call($b,self);return self},TMP_24.$$arity=0);Opal.defn(self,"$encode",TMP_25=function $$encode(encoding){var self=this;return self.$dup().$force_encoding(encoding)},TMP_25.$$arity=1);Opal.defn(self,"$encoding",TMP_26=function $$encoding(){var self=this;return self.encoding},TMP_26.$$arity=0);Opal.defn(self,"$force_encoding",TMP_27=function $$force_encoding(encoding){var $a,self=this;encoding=$scope.get("Opal")["$coerce_to!"](encoding,$scope.get("String"),"to_str");encoding=$scope.get("Encoding").$find(encoding);if(encoding["$=="](self.encoding)){return self}if(($a=encoding["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"unknown encoding name - "+encoding)}var result=new String(self);result.encoding=encoding;return result},TMP_27.$$arity=1);return(Opal.defn(self,"$getbyte",TMP_28=function $$getbyte(idx){var self=this;return self.encoding.$getbyte(self,idx)},TMP_28.$$arity=1),nil)&&"getbyte"}($scope.base,null)};Opal.modules["corelib/math"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$new","$raise","$Float","$type_error","$Integer","$module_function","$checked","$float!","$===","$gamma","$-","$integer!","$/","$infinite?"]);return function($base){var $Math,self=$Math=$module($base,"Math");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,$a,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29;Opal.cdecl($scope,"E",Math.E);Opal.cdecl($scope,"PI",Math.PI);Opal.cdecl($scope,"DomainError",$scope.get("Class").$new($scope.get("StandardError")));Opal.defs(self,"$checked",TMP_1=function $$checked(method,$a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(isNaN(args[0])||args.length==2&&isNaN(args[1])){return NaN}var result=Math[method].apply(null,args);if(isNaN(result)){self.$raise($scope.get("DomainError"),'Numerical argument is out of domain - "'+method+'"')}return result},TMP_1.$$arity=-2);Opal.defs(self,"$float!",TMP_2=function(value){var self=this;try{return self.$Float(value)}catch($err){if(Opal.rescue($err,[$scope.get("ArgumentError")])){try{return self.$raise($scope.get("Opal").$type_error(value,$scope.get("Float")))}finally{Opal.pop_exception()}}else{throw $err}}},TMP_2.$$arity=1);Opal.defs(self,"$integer!",TMP_3=function(value){var self=this;try{return self.$Integer(value)}catch($err){if(Opal.rescue($err,[$scope.get("ArgumentError")])){try{return self.$raise($scope.get("Opal").$type_error(value,$scope.get("Integer")))}finally{Opal.pop_exception()}}else{throw $err}}},TMP_3.$$arity=1);self.$module_function();Opal.defn(self,"$acos",TMP_4=function $$acos(x){var self=this;return $scope.get("Math").$checked("acos",$scope.get("Math")["$float!"](x))},TMP_4.$$arity=1);if(($a=typeof Math.acosh!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.acosh=function(x){return Math.log(x+Math.sqrt(x*x-1))}}Opal.defn(self,"$acosh",TMP_5=function $$acosh(x){var self=this;return $scope.get("Math").$checked("acosh",$scope.get("Math")["$float!"](x))},TMP_5.$$arity=1);Opal.defn(self,"$asin",TMP_6=function $$asin(x){var self=this;return $scope.get("Math").$checked("asin",$scope.get("Math")["$float!"](x))},TMP_6.$$arity=1);if(($a=typeof Math.asinh!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.asinh=function(x){return Math.log(x+Math.sqrt(x*x+1))}}Opal.defn(self,"$asinh",TMP_7=function $$asinh(x){var self=this;return $scope.get("Math").$checked("asinh",$scope.get("Math")["$float!"](x))},TMP_7.$$arity=1);Opal.defn(self,"$atan",TMP_8=function $$atan(x){var self=this;return $scope.get("Math").$checked("atan",$scope.get("Math")["$float!"](x))},TMP_8.$$arity=1);Opal.defn(self,"$atan2",TMP_9=function $$atan2(y,x){var self=this;return $scope.get("Math").$checked("atan2",$scope.get("Math")["$float!"](y),$scope.get("Math")["$float!"](x))},TMP_9.$$arity=2);if(($a=typeof Math.atanh!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.atanh=function(x){return.5*Math.log((1+x)/(1-x))}}Opal.defn(self,"$atanh",TMP_10=function $$atanh(x){var self=this;return $scope.get("Math").$checked("atanh",$scope.get("Math")["$float!"](x))},TMP_10.$$arity=1);if(($a=typeof Math.cbrt!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.cbrt=function(x){if(x==0){return 0}if(x<0){return-Math.cbrt(-x)}var r=x,ex=0;while(r<.125){r*=8;ex--}while(r>1){r*=.125;ex++}r=(-.46946116*r+1.072302)*r+.3812513;while(ex<0){r*=.5;ex++}while(ex>0){r*=2;ex--}r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);return r}}Opal.defn(self,"$cbrt",TMP_11=function $$cbrt(x){var self=this;return $scope.get("Math").$checked("cbrt",$scope.get("Math")["$float!"](x))},TMP_11.$$arity=1);Opal.defn(self,"$cos",TMP_12=function $$cos(x){var self=this;return $scope.get("Math").$checked("cos",$scope.get("Math")["$float!"](x))},TMP_12.$$arity=1);if(($a=typeof Math.cosh!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2}}Opal.defn(self,"$cosh",TMP_13=function $$cosh(x){var self=this;return $scope.get("Math").$checked("cosh",$scope.get("Math")["$float!"](x))},TMP_13.$$arity=1);if(($a=typeof Math.erf!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.erf=function(x){var A1=.254829592,A2=-.284496736,A3=1.421413741,A4=-1.453152027,A5=1.061405429,P=.3275911;var sign=1;if(x<0){sign=-1}x=Math.abs(x);var t=1/(1+P*x);var y=1-((((A5*t+A4)*t+A3)*t+A2)*t+A1)*t*Math.exp(-x*x);return sign*y}}Opal.defn(self,"$erf",TMP_14=function $$erf(x){var self=this;return $scope.get("Math").$checked("erf",$scope.get("Math")["$float!"](x))},TMP_14.$$arity=1);if(($a=typeof Math.erfc!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.erfc=function(x){var z=Math.abs(x),t=1/(.5*z+1);var A1=t*.17087277+-.82215223,A2=t*A1+1.48851587,A3=t*A2+-1.13520398,A4=t*A3+.27886807,A5=t*A4+-.18628806,A6=t*A5+.09678418,A7=t*A6+.37409196,A8=t*A7+1.00002368,A9=t*A8,A10=-z*z-1.26551223+A9;var a=t*Math.exp(A10);if(x<0){return 2-a}else{return a}}}Opal.defn(self,"$erfc",TMP_15=function $$erfc(x){var self=this;return $scope.get("Math").$checked("erfc",$scope.get("Math")["$float!"](x))},TMP_15.$$arity=1);Opal.defn(self,"$exp",TMP_16=function $$exp(x){var self=this;return $scope.get("Math").$checked("exp",$scope.get("Math")["$float!"](x))},TMP_16.$$arity=1);Opal.defn(self,"$frexp",TMP_17=function $$frexp(x){var self=this;x=$scope.get("Math")["$float!"](x);if(isNaN(x)){return[NaN,0]}var ex=Math.floor(Math.log(Math.abs(x))/Math.log(2))+1,frac=x/Math.pow(2,ex);return[frac,ex]},TMP_17.$$arity=1);Opal.defn(self,"$gamma",TMP_18=function $$gamma(n){var self=this;n=$scope.get("Math")["$float!"](n);var i,t,x,value,result,twoN,threeN,fourN,fiveN;var G=4.7421875;var P=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];if(isNaN(n)){return NaN}if(n===0&&1/n<0){return-Infinity}if(n===-1||n===-Infinity){self.$raise($scope.get("DomainError"),'Numerical argument is out of domain - "gamma"')}if($scope.get("Integer")["$==="](n)){if(n<=0){return isFinite(n)?Infinity:NaN}if(n>171){return Infinity}value=n-2;result=n-1;while(value>1){result*=value;value--}if(result==0){result=1}return result}if(n<.5){return Math.PI/(Math.sin(Math.PI*n)*$scope.get("Math").$gamma($rb_minus(1,n)))}if(n>=171.35){return Infinity}if(n>85){twoN=n*n;threeN=twoN*n;fourN=threeN*n;fiveN=fourN*n;return Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n))}n-=1;x=P[0];for(i=1;i<P.length;++i){x+=P[i]/(n+i)}t=n+G+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,n+.5)*Math.exp(-t)*x},TMP_18.$$arity=1);if(($a=typeof Math.hypot!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.hypot=function(x,y){return Math.sqrt(x*x+y*y)}}Opal.defn(self,"$hypot",TMP_19=function $$hypot(x,y){var self=this;return $scope.get("Math").$checked("hypot",$scope.get("Math")["$float!"](x),$scope.get("Math")["$float!"](y))},TMP_19.$$arity=2);Opal.defn(self,"$ldexp",TMP_20=function $$ldexp(mantissa,exponent){var self=this;mantissa=$scope.get("Math")["$float!"](mantissa);exponent=$scope.get("Math")["$integer!"](exponent);if(isNaN(exponent)){self.$raise($scope.get("RangeError"),"float NaN out of range of integer")}return mantissa*Math.pow(2,exponent)},TMP_20.$$arity=2);Opal.defn(self,"$lgamma",TMP_21=function $$lgamma(n){var self=this;if(n==-1){return[Infinity,1]}else{return[Math.log(Math.abs($scope.get("Math").$gamma(n))),$scope.get("Math").$gamma(n)<0?-1:1]}},TMP_21.$$arity=1);Opal.defn(self,"$log",TMP_22=function $$log(x,base){var $a,self=this;if(($a=$scope.get("String")["$==="](x))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("Opal").$type_error(x,$scope.get("Float")))}if(($a=base==null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Math").$checked("log",$scope.get("Math")["$float!"](x))}else{if(($a=$scope.get("String")["$==="](base))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("Opal").$type_error(base,$scope.get("Float")))}return $rb_divide($scope.get("Math").$checked("log",$scope.get("Math")["$float!"](x)),$scope.get("Math").$checked("log",$scope.get("Math")["$float!"](base)))}},TMP_22.$$arity=-2);if(($a=typeof Math.log10!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.log10=function(x){return Math.log(x)/Math.LN10}}Opal.defn(self,"$log10",TMP_23=function $$log10(x){var $a,self=this;if(($a=$scope.get("String")["$==="](x))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("Opal").$type_error(x,$scope.get("Float")))}return $scope.get("Math").$checked("log10",$scope.get("Math")["$float!"](x))},TMP_23.$$arity=1);if(($a=typeof Math.log2!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.log2=function(x){return Math.log(x)/Math.LN2}}Opal.defn(self,"$log2",TMP_24=function $$log2(x){var $a,self=this;if(($a=$scope.get("String")["$==="](x))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("Opal").$type_error(x,$scope.get("Float")))}return $scope.get("Math").$checked("log2",$scope.get("Math")["$float!"](x))},TMP_24.$$arity=1);Opal.defn(self,"$sin",TMP_25=function $$sin(x){var self=this;return $scope.get("Math").$checked("sin",$scope.get("Math")["$float!"](x))},TMP_25.$$arity=1);if(($a=typeof Math.sinh!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.sinh=function(x){return(Math.exp(x)-Math.exp(-x))/2}}Opal.defn(self,"$sinh",TMP_26=function $$sinh(x){var self=this;return $scope.get("Math").$checked("sinh",$scope.get("Math")["$float!"](x))},TMP_26.$$arity=1);Opal.defn(self,"$sqrt",TMP_27=function $$sqrt(x){var self=this;return $scope.get("Math").$checked("sqrt",$scope.get("Math")["$float!"](x))},TMP_27.$$arity=1);Opal.defn(self,"$tan",TMP_28=function $$tan(x){var $a,self=this;x=$scope.get("Math")["$float!"](x);if(($a=x["$infinite?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Float").$$scope.get("NAN")}return $scope.get("Math").$checked("tan",$scope.get("Math")["$float!"](x))},TMP_28.$$arity=1);if(($a=typeof Math.tanh!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Math.tanh=function(x){if(x==Infinity){return 1}else if(x==-Infinity){return-1}else{return(Math.exp(x)-Math.exp(-x))/(Math.exp(x)+Math.exp(-x))}}}Opal.defn(self,"$tanh",TMP_29=function $$tanh(x){var self=this;return $scope.get("Math").$checked("tanh",$scope.get("Math")["$float!"](x))},TMP_29.$$arity=1)}($scope.base)};Opal.modules["corelib/complex"]=function(Opal){function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module;Opal.add_stubs(["$require","$===","$real?","$raise","$new","$*","$cos","$sin","$attr_reader","$class","$==","$real","$imag","$Complex","$-@","$+","$__coerced__","$-","$nan?","$/","$conj","$abs2","$quo","$polar","$exp","$log","$>","$!=","$divmod","$**","$hypot","$atan2","$lcm","$denominator","$to_s","$numerator","$abs","$arg","$rationalize","$to_f","$to_i","$to_r","$inspect","$positive?","$infinite?"]);self.$require("corelib/numeric");(function($base,$super){function $Complex(){}var self=$Complex=$klass($base,$super,"Complex",$Complex);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29;def.real=def.imag=nil;Opal.defs(self,"$rect",TMP_1=function $$rect(real,imag){var $a,$b,$c,$d,self=this;if(imag==null){imag=0}if(($a=($b=($c=($d=$scope.get("Numeric")["$==="](real),$d!==false&&$d!==nil&&$d!=null?real["$real?"]():$d),$c!==false&&$c!==nil&&$c!=null?$scope.get("Numeric")["$==="](imag):$c),$b!==false&&$b!==nil&&$b!=null?imag["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"not a real")}return self.$new(real,imag)},TMP_1.$$arity=-2);(function(self){var $scope=self.$$scope,def=self.$$proto;return Opal.alias(self,"rectangular","rect")})(Opal.get_singleton_class(self));Opal.defs(self,"$polar",TMP_2=function $$polar(r,theta){var $a,$b,$c,$d,self=this;if(theta==null){theta=0}if(($a=($b=($c=($d=$scope.get("Numeric")["$==="](r),$d!==false&&$d!==nil&&$d!=null?r["$real?"]():$d),$c!==false&&$c!==nil&&$c!=null?$scope.get("Numeric")["$==="](theta):$c),$b!==false&&$b!==nil&&$b!=null?theta["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"not a real")}return self.$new($rb_times(r,$scope.get("Math").$cos(theta)),$rb_times(r,$scope.get("Math").$sin(theta)))},TMP_2.$$arity=-2);self.$attr_reader("real","imag");Opal.defn(self,"$initialize",TMP_3=function $$initialize(real,imag){var self=this;if(imag==null){imag=0}self.real=real;return self.imag=imag},TMP_3.$$arity=-2);Opal.defn(self,"$coerce",TMP_4=function $$coerce(other){var $a,$b,self=this;if(($a=$scope.get("Complex")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[other,self]}else if(($a=($b=$scope.get("Numeric")["$==="](other),$b!==false&&$b!==nil&&$b!=null?other["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[$scope.get("Complex").$new(other,0),self]}else{return self.$raise($scope.get("TypeError"),""+other.$class()+" can't be coerced into Complex")}},TMP_4.$$arity=1);Opal.defn(self,"$==",TMP_5=function(other){var $a,$b,self=this;if(($a=$scope.get("Complex")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=self.real["$=="](other.$real()))?self.imag["$=="](other.$imag()):self.real["$=="](other.$real())}else if(($a=($b=$scope.get("Numeric")["$==="](other),$b!==false&&$b!==nil&&$b!=null?other["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=self.real["$=="](other))?self.imag["$=="](0):self.real["$=="](other)}else{return other["$=="](self)}},TMP_5.$$arity=1);Opal.defn(self,"$-@",TMP_6=function(){var self=this;return self.$Complex(self.real["$-@"](),self.imag["$-@"]())},TMP_6.$$arity=0);Opal.defn(self,"$+",TMP_7=function(other){var $a,$b,self=this;if(($a=$scope.get("Complex")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Complex($rb_plus(self.real,other.$real()),$rb_plus(self.imag,other.$imag()))}else if(($a=($b=$scope.get("Numeric")["$==="](other),$b!==false&&$b!==nil&&$b!=null?other["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Complex($rb_plus(self.real,other),self.imag)}else{return self.$__coerced__("+",other)}},TMP_7.$$arity=1);Opal.defn(self,"$-",TMP_8=function(other){var $a,$b,self=this;if(($a=$scope.get("Complex")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Complex($rb_minus(self.real,other.$real()),$rb_minus(self.imag,other.$imag()))}else if(($a=($b=$scope.get("Numeric")["$==="](other),$b!==false&&$b!==nil&&$b!=null?other["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Complex($rb_minus(self.real,other),self.imag)}else{return self.$__coerced__("-",other)}},TMP_8.$$arity=1);Opal.defn(self,"$*",TMP_9=function(other){var $a,$b,self=this;if(($a=$scope.get("Complex")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Complex($rb_minus($rb_times(self.real,other.$real()),$rb_times(self.imag,other.$imag())),$rb_plus($rb_times(self.real,other.$imag()),$rb_times(self.imag,other.$real())))}else if(($a=($b=$scope.get("Numeric")["$==="](other),$b!==false&&$b!==nil&&$b!=null?other["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Complex($rb_times(self.real,other),$rb_times(self.imag,other))}else{return self.$__coerced__("*",other)}},TMP_9.$$arity=1);Opal.defn(self,"$/",TMP_10=function(other){var $a,$b,$c,$d,$e,self=this;if(($a=$scope.get("Complex")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=($b=($c=($d=($e=$scope.get("Number")["$==="](self.real),$e!==false&&$e!==nil&&$e!=null?self.real["$nan?"]():$e))!==false&&$d!==nil&&$d!=null?$d:($e=$scope.get("Number")["$==="](self.imag),$e!==false&&$e!==nil&&$e!=null?self.imag["$nan?"]():$e))!==false&&$c!==nil&&$c!=null?$c:($d=$scope.get("Number")["$==="](other.$real()),$d!==false&&$d!==nil&&$d!=null?other.$real()["$nan?"]():$d))!==false&&$b!==nil&&$b!=null?$b:($c=$scope.get("Number")["$==="](other.$imag()),$c!==false&&$c!==nil&&$c!=null?other.$imag()["$nan?"]():$c))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Complex").$new($scope.get("Float").$$scope.get("NAN"),$scope.get("Float").$$scope.get("NAN"))}else{return $rb_divide($rb_times(self,other.$conj()),other.$abs2())}}else if(($a=($b=$scope.get("Numeric")["$==="](other),$b!==false&&$b!==nil&&$b!=null?other["$real?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Complex(self.real.$quo(other),self.imag.$quo(other))}else{return self.$__coerced__("/",other)}},TMP_10.$$arity=1);Opal.defn(self,"$**",TMP_11=function(other){var $a,$b,$c,$d,$e,self=this,r=nil,theta=nil,ore=nil,oim=nil,nr=nil,ntheta=nil,x=nil,z=nil,n=nil,div=nil,mod=nil;if(other["$=="](0)){return $scope.get("Complex").$new(1,0)}if(($a=$scope.get("Complex")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;ore=other.$real();oim=other.$imag();nr=$scope.get("Math").$exp($rb_minus($rb_times(ore,$scope.get("Math").$log(r)),$rb_times(oim,theta)));ntheta=$rb_plus($rb_times(theta,ore),$rb_times(oim,$scope.get("Math").$log(r)));return $scope.get("Complex").$polar(nr,ntheta)}else if(($a=$scope.get("Integer")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$rb_gt(other,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){x=self;z=x;n=$rb_minus(other,1);while(($b=n["$!="](0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){while(($c=($e=n.$divmod(2),$d=Opal.to_ary($e),div=$d[0]==null?nil:$d[0],mod=$d[1]==null?nil:$d[1],$e,mod["$=="](0)))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){x=self.$Complex($rb_minus($rb_times(x.$real(),x.$real()),$rb_times(x.$imag(),x.$imag())),$rb_times($rb_times(2,x.$real()),x.$imag()));n=div}z=$rb_times(z,x);n=$rb_minus(n,1)}return z}else{return $rb_divide($scope.get("Rational").$new(1,1),self)["$**"](other["$-@"]())}}else if(($a=($b=$scope.get("Float")["$==="](other))!==false&&$b!==nil&&$b!=null?$b:$scope.get("Rational")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;return $scope.get("Complex").$polar(r["$**"](other),$rb_times(theta,other))}else{return self.$__coerced__("**",other)}},TMP_11.$$arity=1);Opal.defn(self,"$abs",TMP_12=function $$abs(){var self=this;return $scope.get("Math").$hypot(self.real,self.imag)},TMP_12.$$arity=0);Opal.defn(self,"$abs2",TMP_13=function $$abs2(){var self=this;return $rb_plus($rb_times(self.real,self.real),$rb_times(self.imag,self.imag))},TMP_13.$$arity=0);Opal.defn(self,"$angle",TMP_14=function $$angle(){var self=this;return $scope.get("Math").$atan2(self.imag,self.real)},TMP_14.$$arity=0);Opal.alias(self,"arg","angle");Opal.defn(self,"$conj",TMP_15=function $$conj(){var self=this;return self.$Complex(self.real,self.imag["$-@"]())},TMP_15.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.defn(self,"$denominator",TMP_16=function $$denominator(){var self=this;return self.real.$denominator().$lcm(self.imag.$denominator())},TMP_16.$$arity=0);Opal.alias(self,"divide","/");Opal.defn(self,"$eql?",TMP_17=function(other){var $a,$b,self=this;return $a=($b=$scope.get("Complex")["$==="](other),$b!==false&&$b!==nil&&$b!=null?self.real.$class()["$=="](self.imag.$class()):$b),$a!==false&&$a!==nil&&$a!=null?self["$=="](other):$a},TMP_17.$$arity=1);Opal.defn(self,"$fdiv",TMP_18=function $$fdiv(other){var $a,self=this;if(($a=$scope.get("Numeric")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),""+other.$class()+" can't be coerced into Complex")}return $rb_divide(self,other)},TMP_18.$$arity=1);Opal.defn(self,"$hash",TMP_19=function $$hash(){var self=this;return"Complex:"+self.real+":"+self.imag},TMP_19.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.defn(self,"$inspect",TMP_20=function $$inspect(){var self=this;return"("+self.$to_s()+")"},TMP_20.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.defn(self,"$numerator",TMP_21=function $$numerator(){var self=this,d=nil;d=self.$denominator();return self.$Complex($rb_times(self.real.$numerator(),$rb_divide(d,self.real.$denominator())),$rb_times(self.imag.$numerator(),$rb_divide(d,self.imag.$denominator())))},TMP_21.$$arity=0);Opal.alias(self,"phase","arg");Opal.defn(self,"$polar",TMP_22=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},TMP_22.$$arity=0);Opal.alias(self,"quo","/");Opal.defn(self,"$rationalize",TMP_23=function $$rationalize(eps){var $a,self=this;if(arguments.length>1){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)")}if(($a=self.imag["$!="](0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("RangeError"),"can't' convert "+self+" into Rational")}return self.$real().$rationalize(eps)},TMP_23.$$arity=-1);Opal.defn(self,"$real?",TMP_24=function(){var self=this;return false},TMP_24.$$arity=0);Opal.defn(self,"$rect",TMP_25=function $$rect(){var self=this;return[self.real,self.imag]},TMP_25.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.defn(self,"$to_f",TMP_26=function $$to_f(){var self=this;if(self.imag["$=="](0)){}else{self.$raise($scope.get("RangeError"),"can't convert "+self+" into Float")}return self.real.$to_f()},TMP_26.$$arity=0);Opal.defn(self,"$to_i",TMP_27=function $$to_i(){var self=this;if(self.imag["$=="](0)){}else{self.$raise($scope.get("RangeError"),"can't convert "+self+" into Integer")}return self.real.$to_i()},TMP_27.$$arity=0);Opal.defn(self,"$to_r",TMP_28=function $$to_r(){var self=this;if(self.imag["$=="](0)){}else{self.$raise($scope.get("RangeError"),"can't convert "+self+" into Rational")}return self.real.$to_r()},TMP_28.$$arity=0);Opal.defn(self,"$to_s",TMP_29=function $$to_s(){var $a,$b,$c,self=this,result=nil;result=self.real.$inspect();if(($a=($b=($c=$scope.get("Number")["$==="](self.imag),$c!==false&&$c!==nil&&$c!=null?self.imag["$nan?"]():$c))!==false&&$b!==nil&&$b!=null?$b:self.imag["$positive?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result=$rb_plus(result,"+")}else{result=$rb_plus(result,"-")}result=$rb_plus(result,self.imag.$abs().$inspect());if(($a=($b=$scope.get("Number")["$==="](self.imag),$b!==false&&$b!==nil&&$b!=null?($c=self.imag["$nan?"]())!==false&&$c!==nil&&$c!=null?$c:self.imag["$infinite?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result=$rb_plus(result,"*")}return $rb_plus(result,"i")},TMP_29.$$arity=0);return Opal.cdecl($scope,"I",self.$new(0,1))})($scope.base,$scope.get("Numeric"));return function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_30;Opal.defn(self,"$Complex",TMP_30=function $$Complex(real,imag){var self=this;if(imag==null){imag=nil}if(imag!==false&&imag!==nil&&imag!=null){return $scope.get("Complex").$new(real,imag)}else{return $scope.get("Complex").$new(real,0)}},TMP_30.$$arity=-2)}($scope.base)};Opal.modules["corelib/rational"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module;Opal.add_stubs(["$require","$to_i","$==","$raise","$<","$-@","$new","$gcd","$/","$nil?","$===","$reduce","$to_r","$equal?","$!","$coerce_to!","$attr_reader","$to_f","$numerator","$denominator","$<=>","$-","$*","$__coerced__","$+","$Rational","$>","$**","$abs","$ceil","$with_precision","$floor","$to_s","$<=","$truncate","$send","$convert"]);self.$require("corelib/numeric");(function($base,$super){function $Rational(){}var self=$Rational=$klass($base,$super,"Rational",$Rational);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26;def.num=def.den=nil;Opal.defs(self,"$reduce",TMP_1=function $$reduce(num,den){var $a,self=this,gcd=nil;num=num.$to_i();den=den.$to_i();if(den["$=="](0)){self.$raise($scope.get("ZeroDivisionError"),"divided by 0")}else if(($a=$rb_lt(den,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){num=num["$-@"]();den=den["$-@"]()}else if(den["$=="](1)){return self.$new(num,den)}gcd=num.$gcd(den);return self.$new($rb_divide(num,gcd),$rb_divide(den,gcd))},TMP_1.$$arity=2);Opal.defs(self,"$convert",TMP_2=function $$convert(num,den){var $a,$b,$c,self=this;if(($a=($b=num["$nil?"]())!==false&&$b!==nil&&$b!=null?$b:den["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("TypeError"),"cannot convert nil into Rational")}if(($a=($b=$scope.get("Integer")["$==="](num),$b!==false&&$b!==nil&&$b!=null?$scope.get("Integer")["$==="](den):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$reduce(num,den)}if(($a=($b=($c=$scope.get("Float")["$==="](num))!==false&&$c!==nil&&$c!=null?$c:$scope.get("String")["$==="](num))!==false&&$b!==nil&&$b!=null?$b:$scope.get("Complex")["$==="](num))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){num=num.$to_r()}if(($a=($b=($c=$scope.get("Float")["$==="](den))!==false&&$c!==nil&&$c!=null?$c:$scope.get("String")["$==="](den))!==false&&$b!==nil&&$b!=null?$b:$scope.get("Complex")["$==="](den))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){den=den.$to_r()}if(($a=($b=den["$equal?"](1),$b!==false&&$b!==nil&&$b!=null?$scope.get("Integer")["$==="](num)["$!"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Opal")["$coerce_to!"](num,$scope.get("Rational"),"to_r")}else if(($a=($b=$scope.get("Numeric")["$==="](num),$b!==false&&$b!==nil&&$b!=null?$scope.get("Numeric")["$==="](den):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_divide(num,den)}else{return self.$reduce(num,den)}},TMP_2.$$arity=2);self.$attr_reader("numerator","denominator");Opal.defn(self,"$initialize",TMP_3=function $$initialize(num,den){var self=this;self.num=num;return self.den=den},TMP_3.$$arity=2);Opal.defn(self,"$numerator",TMP_4=function $$numerator(){var self=this;return self.num},TMP_4.$$arity=0);Opal.defn(self,"$denominator",TMP_5=function $$denominator(){var self=this;return self.den},TMP_5.$$arity=0);Opal.defn(self,"$coerce",TMP_6=function $$coerce(other){var self=this,$case=nil;return function(){$case=other;if($scope.get("Rational")["$==="]($case)){return[other,self]}else if($scope.get("Integer")["$==="]($case)){return[other.$to_r(),self]}else if($scope.get("Float")["$==="]($case)){return[other,self.$to_f()]}else{return nil}}()},TMP_6.$$arity=1);Opal.defn(self,"$==",TMP_7=function(other){var $a,self=this,$case=nil;return function(){$case=other;if($scope.get("Rational")["$==="]($case)){return($a=self.num["$=="](other.$numerator()))?self.den["$=="](other.$denominator()):self.num["$=="](other.$numerator())}else if($scope.get("Integer")["$==="]($case)){return($a=self.num["$=="](other))?self.den["$=="](1):self.num["$=="](other)}else if($scope.get("Float")["$==="]($case)){return self.$to_f()["$=="](other)}else{return other["$=="](self)}}()},TMP_7.$$arity=1);Opal.defn(self,"$<=>",TMP_8=function(other){var self=this,$case=nil;return function(){$case=other;if($scope.get("Rational")["$==="]($case)){return $rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()))["$<=>"](0)}else if($scope.get("Integer")["$==="]($case)){return $rb_minus(self.num,$rb_times(self.den,other))["$<=>"](0)}else if($scope.get("Float")["$==="]($case)){return self.$to_f()["$<=>"](other)}else{return self.$__coerced__("<=>",other)}}()},TMP_8.$$arity=1);Opal.defn(self,"$+",TMP_9=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($scope.get("Rational")["$==="]($case)){num=$rb_plus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if($scope.get("Integer")["$==="]($case)){return self.$Rational($rb_plus(self.num,$rb_times(other,self.den)),self.den)}else if($scope.get("Float")["$==="]($case)){return $rb_plus(self.$to_f(),other)}else{return self.$__coerced__("+",other)}}()},TMP_9.$$arity=1);Opal.defn(self,"$-",TMP_10=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($scope.get("Rational")["$==="]($case)){num=$rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if($scope.get("Integer")["$==="]($case)){return self.$Rational($rb_minus(self.num,$rb_times(other,self.den)),self.den)}else if($scope.get("Float")["$==="]($case)){return $rb_minus(self.$to_f(),other)}else{return self.$__coerced__("-",other)}}()},TMP_10.$$arity=1);Opal.defn(self,"$*",TMP_11=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($scope.get("Rational")["$==="]($case)){num=$rb_times(self.num,other.$numerator());den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if($scope.get("Integer")["$==="]($case)){return self.$Rational($rb_times(self.num,other),self.den)}else if($scope.get("Float")["$==="]($case)){return $rb_times(self.$to_f(),other)}else{return self.$__coerced__("*",other)}}()},TMP_11.$$arity=1);Opal.defn(self,"$/",TMP_12=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if($scope.get("Rational")["$==="]($case)){num=$rb_times(self.num,other.$denominator());den=$rb_times(self.den,other.$numerator());return self.$Rational(num,den)}else if($scope.get("Integer")["$==="]($case)){if(other["$=="](0)){return $rb_divide(self.$to_f(),0)}else{return self.$Rational(self.num,$rb_times(self.den,other))}}else if($scope.get("Float")["$==="]($case)){return $rb_divide(self.$to_f(),other)}else{return self.$__coerced__("/",other)}}()},TMP_12.$$arity=1);Opal.defn(self,"$**",TMP_13=function(other){var $a,$b,self=this,$case=nil;return function(){$case=other;if($scope.get("Integer")["$==="]($case)){if(($a=($b=self["$=="](0))?$rb_lt(other,0):self["$=="](0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Float").$$scope.get("INFINITY")}else if(($a=$rb_gt(other,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Rational(self.num["$**"](other),self.den["$**"](other))}else if(($a=$rb_lt(other,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Rational(self.den["$**"](other["$-@"]()),self.num["$**"](other["$-@"]()))}else{return self.$Rational(1,1)}}else if($scope.get("Float")["$==="]($case)){return self.$to_f()["$**"](other)}else if($scope.get("Rational")["$==="]($case)){if(other["$=="](0)){return self.$Rational(1,1)}else if(other.$denominator()["$=="](1)){if(($a=$rb_lt(other,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$Rational(self.den["$**"](other.$numerator().$abs()),self.num["$**"](other.$numerator().$abs()))}else{return self.$Rational(self.num["$**"](other.$numerator()),self.den["$**"](other.$numerator()))}}else if(($a=($b=self["$=="](0))?$rb_lt(other,0):self["$=="](0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("ZeroDivisionError"),"divided by 0")}else{return self.$to_f()["$**"](other)}}else{return self.$__coerced__("**",other)}}()},TMP_13.$$arity=1);Opal.defn(self,"$abs",TMP_14=function $$abs(){var self=this;return self.$Rational(self.num.$abs(),self.den.$abs())},TMP_14.$$arity=0);Opal.defn(self,"$ceil",TMP_15=function $$ceil(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$ceil()}else{return self.$with_precision("ceil",precision)}},TMP_15.$$arity=-1);Opal.alias(self,"divide","/");Opal.defn(self,"$floor",TMP_16=function $$floor(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$floor()}else{return self.$with_precision("floor",precision)}},TMP_16.$$arity=-1);Opal.defn(self,"$hash",TMP_17=function $$hash(){var self=this;return"Rational:"+self.num+":"+self.den},TMP_17.$$arity=0);Opal.defn(self,"$inspect",TMP_18=function $$inspect(){var self=this;return"("+self.$to_s()+")"},TMP_18.$$arity=0);Opal.alias(self,"quo","/");Opal.defn(self,"$rationalize",TMP_19=function $$rationalize(eps){var self=this;if(arguments.length>1){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)")}if(eps==null){return self}var e=eps.$abs(),a=$rb_minus(self,e),b=$rb_plus(self,e);var p0=0,p1=1,q0=1,q1=0,p2,q2;var c,k,t;while(true){c=a.$ceil();if($rb_le(c,b)){break}k=c-1;p2=k*p1+p0;q2=k*q1+q0;t=$rb_divide(1,$rb_minus(b,k));b=$rb_divide(1,$rb_minus(a,k));a=t;p0=p1;q0=q1;p1=p2;q1=q2}return self.$Rational(c*p1+p0,c*q1+q0)},TMP_19.$$arity=-1);Opal.defn(self,"$round",TMP_20=function $$round(precision){var $a,self=this,num=nil,den=nil,approx=nil;if(precision==null){precision=0}if(precision["$=="](0)){}else{return self.$with_precision("round",precision)}if(self.num["$=="](0)){return 0}if(self.den["$=="](1)){return self.num}num=$rb_plus($rb_times(self.num.$abs(),2),self.den);den=$rb_times(self.den,2);approx=$rb_divide(num,den).$truncate();if(($a=$rb_lt(self.num,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return approx["$-@"]()}else{return approx}},TMP_20.$$arity=-1);Opal.defn(self,"$to_f",TMP_21=function $$to_f(){var self=this;return $rb_divide(self.num,self.den)},TMP_21.$$arity=0);Opal.defn(self,"$to_i",TMP_22=function $$to_i(){var self=this;return self.$truncate()},TMP_22.$$arity=0);Opal.defn(self,"$to_r",TMP_23=function $$to_r(){var self=this;return self},TMP_23.$$arity=0);Opal.defn(self,"$to_s",TMP_24=function $$to_s(){var self=this;return""+self.num+"/"+self.den},TMP_24.$$arity=0);Opal.defn(self,"$truncate",TMP_25=function $$truncate(precision){var $a,self=this;if(precision==null){precision=0}if(precision["$=="](0)){if(($a=$rb_lt(self.num,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$ceil()}else{return self.$floor()}}else{return self.$with_precision("truncate",precision)}},TMP_25.$$arity=-1);return(Opal.defn(self,"$with_precision",TMP_26=function $$with_precision(method,precision){var $a,self=this,p=nil,s=nil;if(($a=$scope.get("Integer")["$==="](precision))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"not an Integer")}p=10["$**"](precision);s=$rb_times(self,p);if(($a=$rb_lt(precision,1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_divide(s.$send(method),p).$to_i()}else{return self.$Rational(s.$send(method),p)}},TMP_26.$$arity=2),nil)&&"with_precision"})($scope.base,$scope.get("Numeric"));return function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_27;Opal.defn(self,"$Rational",TMP_27=function $$Rational(numerator,denominator){var self=this;if(denominator==null){denominator=1}return $scope.get("Rational").$convert(numerator,denominator)},TMP_27.$$arity=-2)}($scope.base)};Opal.modules["corelib/time"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$include","$===","$raise","$coerce_to!","$respond_to?","$to_str","$to_i","$new","$<=>","$to_f","$nil?","$>","$<","$strftime","$year","$month","$day","$+","$round","$/","$-","$copy_instance_variables","$initialize_dup","$is_a?","$zero?","$wday","$utc?","$mon","$yday","$hour","$min","$sec","$rjust","$ljust","$zone","$to_s","$[]","$cweek_cyear","$isdst","$<=","$!=","$==","$ceil"]);self.$require("corelib/comparable");return function($base,$super){function $Time(){}var self=$Time=$klass($base,$super,"Time",$Time);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41,TMP_42;self.$include($scope.get("Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];Opal.defs(self,"$at",TMP_1=function $$at(seconds,frac){var self=this;var result;if($scope.get("Time")["$==="](seconds)){if(frac!==undefined){self.$raise($scope.get("TypeError"),"can't convert Time into an exact number")}result=new Date(seconds.getTime());result.is_utc=seconds.is_utc;return result}if(!seconds.$$is_number){seconds=$scope.get("Opal")["$coerce_to!"](seconds,$scope.get("Integer"),"to_int")}if(frac===undefined){return new Date(seconds*1e3)}if(!frac.$$is_number){frac=$scope.get("Opal")["$coerce_to!"](frac,$scope.get("Integer"),"to_int")}return new Date(seconds*1e3+frac/1e3)},TMP_1.$$arity=-2);function time_params(year,month,day,hour,min,sec){if(year.$$is_string){year=parseInt(year,10)}else{year=$scope.get("Opal")["$coerce_to!"](year,$scope.get("Integer"),"to_int")}if(month===nil){month=1}else if(!month.$$is_number){if(month["$respond_to?"]("to_str")){month=month.$to_str();switch(month.toLowerCase()){case"jan":month=1;break;case"feb":month=2;break;case"mar":month=3;break;case"apr":month=4;break;case"may":month=5;break;case"jun":month=6;break;case"jul":month=7;break;case"aug":month=8;break;case"sep":month=9;break;case"oct":month=10;break;case"nov":month=11;break;case"dec":month=12;break;default:month=month.$to_i()}}else{month=$scope.get("Opal")["$coerce_to!"](month,$scope.get("Integer"),"to_int")}}if(month<1||month>12){self.$raise($scope.get("ArgumentError"),"month out of range: "+month)}month=month-1;if(day===nil){day=1}else if(day.$$is_string){day=parseInt(day,10)}else{day=$scope.get("Opal")["$coerce_to!"](day,$scope.get("Integer"),"to_int")}if(day<1||day>31){self.$raise($scope.get("ArgumentError"),"day out of range: "+day)}if(hour===nil){hour=0}else if(hour.$$is_string){hour=parseInt(hour,10)}else{hour=$scope.get("Opal")["$coerce_to!"](hour,$scope.get("Integer"),"to_int")}if(hour<0||hour>24){self.$raise($scope.get("ArgumentError"),"hour out of range: "+hour)}if(min===nil){min=0}else if(min.$$is_string){min=parseInt(min,10)}else{min=$scope.get("Opal")["$coerce_to!"](min,$scope.get("Integer"),"to_int")}if(min<0||min>59){self.$raise($scope.get("ArgumentError"),"min out of range: "+min)}if(sec===nil){sec=0}else if(!sec.$$is_number){if(sec.$$is_string){sec=parseInt(sec,10)}else{sec=$scope.get("Opal")["$coerce_to!"](sec,$scope.get("Integer"),"to_int")}}if(sec<0||sec>60){self.$raise($scope.get("ArgumentError"),"sec out of range: "+sec)}return[year,month,day,hour,min,sec]}Opal.defs(self,"$new",TMP_2=function(year,month,day,hour,min,sec,utc_offset){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(utc_offset==null){utc_offset=nil}var args,result;if(year===undefined){return new Date}if(utc_offset!==nil){self.$raise($scope.get("ArgumentError"),"Opal does not support explicitly specifying UTC offset for Time")}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},TMP_2.$$arity=-1);Opal.defs(self,"$local",TMP_3=function $$local(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},TMP_3.$$arity=-2);Opal.defs(self,"$gm",TMP_4=function $$gm(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(Date.UTC(year,month,day,hour,min,0,sec*1e3));if(year<100){result.setUTCFullYear(year)}result.is_utc=true;return result},TMP_4.$$arity=-2);(function(self){var $scope=self.$$scope,def=self.$$proto;Opal.alias(self,"mktime","local");return Opal.alias(self,"utc","gm")})(Opal.get_singleton_class(self));Opal.defs(self,"$now",TMP_5=function $$now(){var self=this;return self.$new()},TMP_5.$$arity=0);Opal.defn(self,"$+",TMP_6=function(other){var $a,self=this;if(($a=$scope.get("Time")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("TypeError"),"time + time?")}if(!other.$$is_number){other=$scope.get("Opal")["$coerce_to!"](other,$scope.get("Integer"),"to_int")}var result=new Date(self.getTime()+other*1e3);result.is_utc=self.is_utc;return result},TMP_6.$$arity=1);Opal.defn(self,"$-",TMP_7=function(other){var $a,self=this;if(($a=$scope.get("Time")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return(self.getTime()-other.getTime())/1e3}if(!other.$$is_number){other=$scope.get("Opal")["$coerce_to!"](other,$scope.get("Integer"),"to_int")}var result=new Date(self.getTime()-other*1e3);result.is_utc=self.is_utc;return result},TMP_7.$$arity=1);Opal.defn(self,"$<=>",TMP_8=function(other){var $a,self=this,r=nil;if(($a=$scope.get("Time")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$to_f()["$<=>"](other.$to_f())}else{r=other["$<=>"](self);if(($a=r["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else if(($a=$rb_gt(r,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return-1}else if(($a=$rb_lt(r,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return 1}else{return 0}}},TMP_8.$$arity=1);Opal.defn(self,"$==",TMP_9=function(other){var self=this;return self.$to_f()===other.$to_f()},TMP_9.$$arity=1);Opal.defn(self,"$asctime",TMP_10=function $$asctime(){var self=this;return self.$strftime("%a %b %e %H:%M:%S %Y")},TMP_10.$$arity=0);Opal.alias(self,"ctime","asctime");Opal.defn(self,"$day",TMP_11=function $$day(){var self=this;return self.is_utc?self.getUTCDate():self.getDate()},TMP_11.$$arity=0);Opal.defn(self,"$yday",TMP_12=function $$yday(){var self=this,start_of_year=nil,start_of_day=nil,one_day=nil;start_of_year=$scope.get("Time").$new(self.$year()).$to_i();start_of_day=$scope.get("Time").$new(self.$year(),self.$month(),self.$day()).$to_i();one_day=86400;return $rb_plus($rb_divide($rb_minus(start_of_day,start_of_year),one_day).$round(),1)},TMP_12.$$arity=0);Opal.defn(self,"$isdst",TMP_13=function $$isdst(){var self=this;var jan=new Date(self.getFullYear(),0,1),jul=new Date(self.getFullYear(),6,1);return self.getTimezoneOffset()<Math.max(jan.getTimezoneOffset(),jul.getTimezoneOffset())},TMP_13.$$arity=0);Opal.alias(self,"dst?","isdst");Opal.defn(self,"$dup",TMP_14=function $$dup(){var self=this,copy=nil;copy=new Date(self.getTime());copy.$copy_instance_variables(self);copy.$initialize_dup(self);return copy},TMP_14.$$arity=0);Opal.defn(self,"$eql?",TMP_15=function(other){var $a,self=this;return $a=other["$is_a?"]($scope.get("Time")),$a!==false&&$a!==nil&&$a!=null?self["$<=>"](other)["$zero?"]():$a},TMP_15.$$arity=1);Opal.defn(self,"$friday?",TMP_16=function(){var self=this;return self.$wday()==5},TMP_16.$$arity=0);Opal.defn(self,"$hash",TMP_17=function $$hash(){var self=this;return"Time:"+self.getTime()},TMP_17.$$arity=0);Opal.defn(self,"$hour",TMP_18=function $$hour(){var self=this;return self.is_utc?self.getUTCHours():self.getHours()},TMP_18.$$arity=0);Opal.defn(self,"$inspect",TMP_19=function $$inspect(){var $a,self=this;if(($a=self["$utc?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$strftime("%Y-%m-%d %H:%M:%S UTC")}else{return self.$strftime("%Y-%m-%d %H:%M:%S %z")}},TMP_19.$$arity=0);Opal.alias(self,"mday","day");Opal.defn(self,"$min",TMP_20=function $$min(){var self=this;return self.is_utc?self.getUTCMinutes():self.getMinutes()},TMP_20.$$arity=0);Opal.defn(self,"$mon",TMP_21=function $$mon(){var self=this;return(self.is_utc?self.getUTCMonth():self.getMonth())+1},TMP_21.$$arity=0);Opal.defn(self,"$monday?",TMP_22=function(){var self=this;return self.$wday()==1},TMP_22.$$arity=0);Opal.alias(self,"month","mon");Opal.defn(self,"$saturday?",TMP_23=function(){var self=this;return self.$wday()==6},TMP_23.$$arity=0);Opal.defn(self,"$sec",TMP_24=function $$sec(){var self=this;return self.is_utc?self.getUTCSeconds():self.getSeconds()},TMP_24.$$arity=0);Opal.defn(self,"$succ",TMP_25=function $$succ(){var self=this;var result=new Date(self.getTime()+1e3);result.is_utc=self.is_utc;return result},TMP_25.$$arity=0);Opal.defn(self,"$usec",TMP_26=function $$usec(){var self=this;return self.getMilliseconds()*1e3},TMP_26.$$arity=0);Opal.defn(self,"$zone",TMP_27=function $$zone(){var self=this;var string=self.toString(),result;if(string.indexOf("(")==-1){result=string.match(/[A-Z]{3,4}/)[0]}else{result=string.match(/\((.+)\)(?:\s|$)/)[1]}if(result=="GMT"&&/(GMT\W*\d{4})/.test(string)){return RegExp.$1}else{return result}},TMP_27.$$arity=0);Opal.defn(self,"$getgm",TMP_28=function $$getgm(){var self=this;var result=new Date(self.getTime());result.is_utc=true;return result},TMP_28.$$arity=0);Opal.alias(self,"getutc","getgm");Opal.defn(self,"$gmtime",TMP_29=function $$gmtime(){var self=this;self.is_utc=true;return self},TMP_29.$$arity=0);Opal.alias(self,"utc","gmtime");Opal.defn(self,"$gmt?",TMP_30=function(){var self=this;return self.is_utc===true},TMP_30.$$arity=0);Opal.defn(self,"$gmt_offset",TMP_31=function $$gmt_offset(){var self=this;return-self.getTimezoneOffset()*60},TMP_31.$$arity=0);Opal.defn(self,"$strftime",TMP_32=function $$strftime(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,function(full,flags,width,_,conv){var result="",zero=flags.indexOf("0")!==-1,pad=flags.indexOf("-")===-1,blank=flags.indexOf("_")!==-1,upcase=flags.indexOf("^")!==-1,invert=flags.indexOf("#")!==-1,colons=(flags.match(":")||[]).length;width=parseInt(width,10);if(zero&&blank){if(flags.indexOf("0")<flags.indexOf("_")){zero=false}else{blank=false}}switch(conv){case"Y":result+=self.$year();break;case"C":zero=!blank;result+=Math.round(self.$year()/100);break;case"y":zero=!blank;result+=self.$year()%100;break;case"m":zero=!blank;result+=self.$mon();break;case"B":result+=long_months[self.$mon()-1];break;case"b":case"h":blank=!zero;result+=short_months[self.$mon()-1];break;case"d":zero=!blank;result+=self.$day();break;case"e":blank=!zero;result+=self.$day();break;case"j":result+=self.$yday();break;case"H":zero=!blank;result+=self.$hour();break;case"k":blank=!zero;result+=self.$hour();break;case"I":zero=!blank;result+=self.$hour()%12||12;break;case"l":blank=!zero;result+=self.$hour()%12||12;break;case"P":result+=self.$hour()>=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank;result+=self.$min();break;case"S":zero=!blank;result+=self.$sec();break;case"L":zero=!blank;width=isNaN(width)?3:width;result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width;result+=self.getMilliseconds().toString().$rjust(3,"0");result=result.$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-";result+=hours<10?"0":"";result+=hours;if(colons>0){result+=":"}result+=minutes<10?"0":"";result+=minutes;if(colons>1){result+=":00"}break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,false));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+="\t";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}if(upcase){result=result.toUpperCase()}if(invert){result=result.replace(/[A-Z]/,function(c){c.toLowerCase()}).replace(/[a-z]/,function(c){c.toUpperCase()})}if(pad&&(zero||blank)){result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")}return result})},TMP_32.$$arity=1);Opal.defn(self,"$sunday?",TMP_33=function(){var self=this;return self.$wday()==0},TMP_33.$$arity=0);Opal.defn(self,"$thursday?",TMP_34=function(){var self=this;return self.$wday()==4},TMP_34.$$arity=0);Opal.defn(self,"$to_a",TMP_35=function $$to_a(){var self=this;return[self.$sec(),self.$min(),self.$hour(),self.$day(),self.$month(),self.$year(),self.$wday(),self.$yday(),self.$isdst(),self.$zone()]},TMP_35.$$arity=0);Opal.defn(self,"$to_f",TMP_36=function $$to_f(){var self=this;return self.getTime()/1e3},TMP_36.$$arity=0);Opal.defn(self,"$to_i",TMP_37=function $$to_i(){var self=this;return parseInt(self.getTime()/1e3,10)},TMP_37.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.defn(self,"$tuesday?",TMP_38=function(){var self=this;return self.$wday()==2},TMP_38.$$arity=0);Opal.alias(self,"tv_sec","sec");Opal.alias(self,"tv_usec","usec");Opal.alias(self,"utc?","gmt?");Opal.alias(self,"gmtoff","gmt_offset");Opal.alias(self,"utc_offset","gmt_offset");Opal.defn(self,"$wday",TMP_39=function $$wday(){var self=this;return self.is_utc?self.getUTCDay():self.getDay()},TMP_39.$$arity=0);Opal.defn(self,"$wednesday?",TMP_40=function(){var self=this;return self.$wday()==3},TMP_40.$$arity=0);Opal.defn(self,"$year",TMP_41=function $$year(){var self=this;return self.is_utc?self.getUTCFullYear():self.getFullYear()},TMP_41.$$arity=0);return(Opal.defn(self,"$cweek_cyear",TMP_42=function $$cweek_cyear(){var $a,$b,self=this,jan01=nil,jan01_wday=nil,first_monday=nil,year=nil,offset=nil,week=nil,dec31=nil,dec31_wday=nil;jan01=$scope.get("Time").$new(self.$year(),1,1);jan01_wday=jan01.$wday();first_monday=0;year=self.$year();if(($a=($b=$rb_le(jan01_wday,4),$b!==false&&$b!==nil&&$b!=null?jan01_wday["$!="](0):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){offset=$rb_minus(jan01_wday,1)}else{offset=$rb_minus($rb_minus(jan01_wday,7),1);if(offset["$=="](-8)){offset=-1}}week=$rb_divide($rb_plus(self.$yday(),offset),7).$ceil();if(($a=$rb_le(week,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Time").$new($rb_minus(self.$year(),1),12,31).$cweek_cyear()}else if(week["$=="](53)){dec31=$scope.get("Time").$new(self.$year(),12,31);dec31_wday=dec31.$wday();if(($a=($b=$rb_le(dec31_wday,3),$b!==false&&$b!==nil&&$b!=null?dec31_wday["$!="](0):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){week=1;year=$rb_plus(year,1)}}return[week,year]},TMP_42.$$arity=0),nil)&&"cweek_cyear"}($scope.base,Date)};Opal.modules["corelib/struct"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$require","$include","$const_name!","$unshift","$map","$coerce_to!","$new","$each","$define_struct_attribute","$allocate","$initialize","$module_eval","$to_proc","$const_set","$==","$raise","$<<","$members","$define_method","$instance_eval","$>","$length","$class","$each_with_index","$[]=","$[]","$hash","$===","$<","$-@","$size","$>=","$include?","$to_sym","$instance_of?","$__id__","$eql?","$enum_for","$name","$+","$join","$inspect","$each_pair","$inject","$flatten","$to_a","$values_at"]);self.$require("corelib/enumerable");return function($base,$super){function $Struct(){}var self=$Struct=$klass($base,$super,"Struct",$Struct);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_8,TMP_9,TMP_11,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_23,TMP_26,TMP_28,TMP_30,TMP_32,TMP_34,TMP_35;self.$include($scope.get("Enumerable"));Opal.defs(self,"$new",TMP_1=function(const_name,$a_rest){var $b,$c,TMP_2,$d,TMP_3,$e,self=this,args,$iter=TMP_1.$$p,block=$iter||nil,klass=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_1.$$p=null;if(const_name!==false&&const_name!==nil&&const_name!=null){try{const_name=$scope.get("Opal")["$const_name!"](const_name)}catch($err){if(Opal.rescue($err,[$scope.get("TypeError"),$scope.get("NameError")])){try{args.$unshift(const_name);const_name=nil}finally{Opal.pop_exception()}}else{throw $err}}}($b=($c=args).$map,$b.$$p=(TMP_2=function(arg){var self=TMP_2.$$s||this;if(arg==null)arg=nil;return $scope.get("Opal")["$coerce_to!"](arg,$scope.get("String"),"to_str")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$b).call($c);klass=($b=($d=$scope.get("Class")).$new,$b.$$p=(TMP_3=function(){var self=TMP_3.$$s||this,$a,$e,TMP_4;($a=($e=args).$each,$a.$$p=(TMP_4=function(arg){var self=TMP_4.$$s||this;if(arg==null)arg=nil;return self.$define_struct_attribute(arg)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4),$a).call($e);return function(self){var $scope=self.$$scope,def=self.$$proto,TMP_5;Opal.defn(self,"$new",TMP_5=function($a_rest){var $b,self=this,args,instance=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}instance=self.$allocate();instance.$$data={};($b=instance).$initialize.apply($b,Opal.to_a(args));return instance},TMP_5.$$arity=-1);return Opal.alias(self,"[]","new")}(Opal.get_singleton_class(self))},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3),$b).call($d,self);if(block!==false&&block!==nil&&block!=null){($b=($e=klass).$module_eval,$b.$$p=block.$to_proc(),$b).call($e)}if(const_name!==false&&const_name!==nil&&const_name!=null){$scope.get("Struct").$const_set(const_name,klass)}return klass},TMP_1.$$arity=-2);Opal.defs(self,"$define_struct_attribute",TMP_8=function $$define_struct_attribute(name){var $a,$b,TMP_6,$c,TMP_7,self=this;if(self["$=="]($scope.get("Struct"))){self.$raise($scope.get("ArgumentError"),"you cannot define attributes to the Struct class")}self.$members()["$<<"](name);($a=($b=self).$define_method,$a.$$p=(TMP_6=function(){var self=TMP_6.$$s||this;return self.$$data[name]},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6),$a).call($b,name);return($a=($c=self).$define_method,$a.$$p=(TMP_7=function(value){var self=TMP_7.$$s||this;if(value==null)value=nil;return self.$$data[name]=value},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$a).call($c,""+name+"=")},TMP_8.$$arity=1);Opal.defs(self,"$members",TMP_9=function $$members(){var $a,self=this;if(self.members==null)self.members=nil;if(self["$=="]($scope.get("Struct"))){self.$raise($scope.get("ArgumentError"),"the Struct class has no members")}return($a=self.members)!==false&&$a!==nil&&$a!=null?$a:self.members=[]},TMP_9.$$arity=0);Opal.defs(self,"$inherited",TMP_11=function $$inherited(klass){var $a,$b,TMP_10,self=this,members=nil;if(self.members==null)self.members=nil;members=self.members;return($a=($b=klass).$instance_eval,$a.$$p=(TMP_10=function(){var self=TMP_10.$$s||this;return self.members=members},TMP_10.$$s=self,TMP_10.$$arity=0,TMP_10),$a).call($b)},TMP_11.$$arity=1);Opal.defn(self,"$initialize",TMP_13=function $$initialize($a_rest){var $b,$c,TMP_12,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(($b=$rb_gt(args.$length(),self.$class().$members().$length()))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$raise($scope.get("ArgumentError"),"struct size differs")}return($b=($c=self.$class().$members()).$each_with_index,$b.$$p=(TMP_12=function(name,index){var self=TMP_12.$$s||this;if(name==null)name=nil;if(index==null)index=nil;return self["$[]="](name,args["$[]"](index))},TMP_12.$$s=self,TMP_12.$$arity=2,TMP_12),$b).call($c)},TMP_13.$$arity=-1);Opal.defn(self,"$members",TMP_14=function $$members(){var self=this;return self.$class().$members()},TMP_14.$$arity=0);Opal.defn(self,"$hash",TMP_15=function $$hash(){var self=this;return $scope.get("Hash").$new(self.$$data).$hash()},TMP_15.$$arity=0);Opal.defn(self,"$[]",TMP_16=function(name){var $a,self=this;if(($a=$scope.get("Integer")["$==="](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$rb_lt(name,self.$class().$members().$size()["$-@"]()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("IndexError"),"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if(($a=$rb_ge(name,self.$class().$members().$size()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("IndexError"),"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if(($a=$scope.get("String")["$==="](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(!self.$$data.hasOwnProperty(name)){self.$raise($scope.get("NameError").$new("no member '"+name+"' in struct",name))}}else{self.$raise($scope.get("TypeError"),"no implicit conversion of "+name.$class()+" into Integer")}name=$scope.get("Opal")["$coerce_to!"](name,$scope.get("String"),"to_str");return self.$$data[name]},TMP_16.$$arity=1);Opal.defn(self,"$[]=",TMP_17=function(name,value){var $a,self=this;if(($a=$scope.get("Integer")["$==="](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$rb_lt(name,self.$class().$members().$size()["$-@"]()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("IndexError"),"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if(($a=$rb_ge(name,self.$class().$members().$size()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("IndexError"),"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if(($a=$scope.get("String")["$==="](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=self.$class().$members()["$include?"](name.$to_sym()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError").$new("no member '"+name+"' in struct",name))}}else{self.$raise($scope.get("TypeError"),"no implicit conversion of "+name.$class()+" into Integer")}name=$scope.get("Opal")["$coerce_to!"](name,$scope.get("String"),"to_str");return self.$$data[name]=value},TMP_17.$$arity=2);Opal.defn(self,"$==",TMP_18=function(other){var $a,self=this;if(($a=other["$instance_of?"](self.$class()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if($scope.get("Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$=="](b)){return false}}}return true}return _eqeq(self,other)},TMP_18.$$arity=1);Opal.defn(self,"$eql?",TMP_19=function(other){var $a,self=this;if(($a=other["$instance_of?"](self.$class()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if($scope.get("Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$eql?"](b)){return false}}}return true}return _eqeq(self,other)},TMP_19.$$arity=1);Opal.defn(self,"$each",TMP_20=function $$each(){var $a,$b,TMP_21,$c,TMP_22,self=this,$iter=TMP_20.$$p,$yield=$iter||nil;TMP_20.$$p=null;if($yield!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_21=function(){var self=TMP_21.$$s||this;return self.$size()},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21),$a).call($b,"each")}($a=($c=self.$class().$members()).$each,$a.$$p=(TMP_22=function(name){var self=TMP_22.$$s||this;if(name==null)name=nil;return Opal.yield1($yield,self["$[]"](name))},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22),$a).call($c);return self},TMP_20.$$arity=0);Opal.defn(self,"$each_pair",TMP_23=function $$each_pair(){var $a,$b,TMP_24,$c,TMP_25,self=this,$iter=TMP_23.$$p,$yield=$iter||nil;TMP_23.$$p=null;if($yield!==nil){}else{return($a=($b=self).$enum_for,$a.$$p=(TMP_24=function(){var self=TMP_24.$$s||this;return self.$size()},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24),$a).call($b,"each_pair")}($a=($c=self.$class().$members()).$each,$a.$$p=(TMP_25=function(name){var self=TMP_25.$$s||this;if(name==null)name=nil;return Opal.yield1($yield,[name,self["$[]"](name)])},TMP_25.$$s=self,TMP_25.$$arity=1,TMP_25),$a).call($c);return self},TMP_23.$$arity=0);Opal.defn(self,"$length",TMP_26=function $$length(){var self=this;return self.$class().$members().$length()},TMP_26.$$arity=0);Opal.alias(self,"size","length");Opal.defn(self,"$to_a",TMP_28=function $$to_a(){var $a,$b,TMP_27,self=this;return($a=($b=self.$class().$members()).$map,$a.$$p=(TMP_27=function(name){var self=TMP_27.$$s||this;if(name==null)name=nil;return self["$[]"](name)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27),$a).call($b)},TMP_28.$$arity=0);Opal.alias(self,"values","to_a");Opal.defn(self,"$inspect",TMP_30=function $$inspect(){var $a,$b,TMP_29,self=this,result=nil;result="#<struct ";if(($a=($b=$scope.get("Struct")["$==="](self),$b!==false&&$b!==nil&&$b!=null?self.$class().$name():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result=$rb_plus(result,""+self.$class()+" ")}result=$rb_plus(result,($a=($b=self.$each_pair()).$map,$a.$$p=(TMP_29=function(name,value){var self=TMP_29.$$s||this;if(name==null)name=nil;if(value==null)value=nil;return""+name+"="+value.$inspect()},TMP_29.$$s=self,TMP_29.$$arity=2,TMP_29),$a).call($b).$join(", "));result=$rb_plus(result,">");return result},TMP_30.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.defn(self,"$to_h",TMP_32=function $$to_h(){var $a,$b,TMP_31,self=this;return($a=($b=self.$class().$members()).$inject,$a.$$p=(TMP_31=function(h,name){var self=TMP_31.$$s||this;if(h==null)h=nil;if(name==null)name=nil;h["$[]="](name,self["$[]"](name));return h},TMP_31.$$s=self,TMP_31.$$arity=2,TMP_31),$a).call($b,$hash2([],{}))},TMP_32.$$arity=0);Opal.defn(self,"$values_at",TMP_34=function $$values_at($a_rest){var $b,$c,TMP_33,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}args=($b=($c=args).$map,$b.$$p=(TMP_33=function(arg){var self=TMP_33.$$s||this;if(arg==null)arg=nil;return arg.$$is_range?arg.$to_a():arg},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33),$b).call($c).$flatten();var result=[];for(var i=0,len=args.length;i<len;i++){if(!args[i].$$is_number){self.$raise($scope.get("TypeError"),"no implicit conversion of "+args[i].$class()+" into Integer")}result.push(self["$[]"](args[i]))}return result},TMP_34.$$arity=-1);return(Opal.defs(self,"$_load",TMP_35=function $$_load(args){var $a,$b,self=this,attributes=nil;attributes=($a=args).$values_at.apply($a,Opal.to_a(self.$members()));return($b=self).$new.apply($b,Opal.to_a(attributes))},TMP_35.$$arity=1),nil)&&"_load"}($scope.base,null)};Opal.modules["corelib/io"]=function(Opal){var $a,$b,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module,$gvars=Opal.gvars;Opal.add_stubs(["$attr_accessor","$size","$write","$join","$map","$String","$empty?","$concat","$chomp","$getbyte","$getc","$raise","$new","$write_proc=","$extend"]);(function($base,$super){function $IO(){}var self=$IO=$klass($base,$super,"IO",$IO);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4;def.tty=def.closed=nil;Opal.cdecl($scope,"SEEK_SET",0);Opal.cdecl($scope,"SEEK_CUR",1);Opal.cdecl($scope,"SEEK_END",2);Opal.defn(self,"$tty?",TMP_1=function(){var self=this;return self.tty},TMP_1.$$arity=0);Opal.defn(self,"$closed?",TMP_2=function(){var self=this;return self.closed},TMP_2.$$arity=0);self.$attr_accessor("write_proc");Opal.defn(self,"$write",TMP_3=function $$write(string){var self=this;self.write_proc(string);return string.$size()},TMP_3.$$arity=1);self.$attr_accessor("sync","tty");Opal.defn(self,"$flush",TMP_4=function $$flush(){var self=this;return nil},TMP_4.$$arity=0);(function($base){var $Writable,self=$Writable=$module($base,"Writable");var def=self.$$proto,$scope=self.$$scope,TMP_5,TMP_7,TMP_9;Opal.defn(self,"$<<",TMP_5=function(string){var self=this;self.$write(string);return self},TMP_5.$$arity=1);Opal.defn(self,"$print",TMP_7=function $$print($a_rest){var $b,$c,TMP_6,self=this,args;if($gvars[","]==null)$gvars[","]=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}self.$write(($b=($c=args).$map,$b.$$p=(TMP_6=function(arg){var self=TMP_6.$$s||this;if(arg==null)arg=nil;return self.$String(arg)},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6),$b).call($c).$join($gvars[","]));return nil},TMP_7.$$arity=-1);Opal.defn(self,"$puts",TMP_9=function $$puts($a_rest){var $b,$c,TMP_8,self=this,args,newline=nil;if($gvars["/"]==null)$gvars["/"]=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}newline=$gvars["/"];if(($b=args["$empty?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$write($gvars["/"])}else{self.$write(($b=($c=args).$map,$b.$$p=(TMP_8=function(arg){var self=TMP_8.$$s||this;if(arg==null)arg=nil;return self.$String(arg).$chomp()},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8),$b).call($c).$concat([nil]).$join(newline))}return nil},TMP_9.$$arity=-1)})($scope.base);return function($base){var $Readable,self=$Readable=$module($base,"Readable");var def=self.$$proto,$scope=self.$$scope,TMP_10,TMP_11,TMP_12,TMP_13;Opal.defn(self,"$readbyte",TMP_10=function $$readbyte(){var self=this;return self.$getbyte()},TMP_10.$$arity=0);Opal.defn(self,"$readchar",TMP_11=function $$readchar(){var self=this;return self.$getc()},TMP_11.$$arity=0);Opal.defn(self,"$readline",TMP_12=function $$readline(sep){var self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(sep==null){sep=$gvars["/"]}return self.$raise($scope.get("NotImplementedError"))},TMP_12.$$arity=-1);Opal.defn(self,"$readpartial",TMP_13=function $$readpartial(integer,outbuf){var self=this;if(outbuf==null){outbuf=nil}return self.$raise($scope.get("NotImplementedError"))},TMP_13.$$arity=-2)}($scope.base)})($scope.base,null);Opal.cdecl($scope,"STDERR",$gvars.stderr=$scope.get("IO").$new());Opal.cdecl($scope,"STDIN",$gvars.stdin=$scope.get("IO").$new());Opal.cdecl($scope,"STDOUT",$gvars.stdout=$scope.get("IO").$new());$a=[typeof process==="object"?function(s){process.stdout.write(s)}:function(s){console.log(s)}],$b=$scope.get("STDOUT"),$b["$write_proc="].apply($b,$a),$a[$a.length-1];$a=[typeof process==="object"?function(s){process.stderr.write(s)}:function(s){console.warn(s)}],$b=$scope.get("STDERR"),$b["$write_proc="].apply($b,$a),$a[$a.length-1];$scope.get("STDOUT").$extend($scope.get("IO").$$scope.get("Writable"));return $scope.get("STDERR").$extend($scope.get("IO").$$scope.get("Writable"))};Opal.modules["corelib/main"]=function(Opal){var TMP_1,TMP_2,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$include"]);Opal.defs(self,"$to_s",TMP_1=function $$to_s(){var self=this;return"main"},TMP_1.$$arity=0);return(Opal.defs(self,"$include",TMP_2=function $$include(mod){var self=this;return $scope.get("Object").$include(mod)},TMP_2.$$arity=1),nil)&&"include"};Opal.modules["corelib/dir"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$[]"]);return function($base,$super){function $Dir(){}var self=$Dir=$klass($base,$super,"Dir",$Dir);var def=self.$$proto,$scope=self.$$scope;return function(self){var $scope=self.$$scope,def=self.$$proto,TMP_1,TMP_2,TMP_3;Opal.defn(self,"$chdir",TMP_1=function $$chdir(dir){var self=this,$iter=TMP_1.$$p,$yield=$iter||nil,prev_cwd=nil;TMP_1.$$p=null;try{prev_cwd=Opal.current_dir;Opal.current_dir=dir;return Opal.yieldX($yield,[])}finally{Opal.current_dir=prev_cwd}},TMP_1.$$arity=1);Opal.defn(self,"$pwd",TMP_2=function $$pwd(){var self=this;return Opal.current_dir||"."},TMP_2.$$arity=0);Opal.alias(self,"getwd","pwd");return(Opal.defn(self,"$home",TMP_3=function $$home(){var $a,self=this;return($a=$scope.get("ENV")["$[]"]("HOME"))!==false&&$a!==nil&&$a!=null?$a:"."},TMP_3.$$arity=0),nil)&&"home"}(Opal.get_singleton_class(self))}($scope.base,null)};Opal.modules["corelib/file"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$join","$compact","$split","$==","$first","$[]=","$home","$pwd","$each","$pop","$<<","$raise","$respond_to?","$to_path","$class","$nil?","$is_a?","$basename","$empty?","$rindex","$[]","$+","$-","$length","$gsub","$find","$=~"]);return function($base,$super){function $File(){}var self=$File=$klass($base,$super,"File",$File);var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"Separator",Opal.cdecl($scope,"SEPARATOR","/"));Opal.cdecl($scope,"ALT_SEPARATOR",nil);Opal.cdecl($scope,"PATH_SEPARATOR",":");Opal.cdecl($scope,"FNM_SYSCASE",0);return function(self){var $scope=self.$$scope,def=self.$$proto,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_8,TMP_9,TMP_10;Opal.defn(self,"$expand_path",TMP_2=function $$expand_path(path,basedir){var $a,$b,TMP_1,self=this,parts=nil,new_parts=nil;if(basedir==null){basedir=nil}path=[basedir,path].$compact().$join($scope.get("SEPARATOR"));parts=path.$split($scope.get("SEPARATOR"));new_parts=[];if(parts.$first()["$=="]("~")){parts["$[]="](0,$scope.get("Dir").$home())}if(parts.$first()["$=="](".")){parts["$[]="](0,$scope.get("Dir").$pwd())}($a=($b=parts).$each,$a.$$p=(TMP_1=function(part){var self=TMP_1.$$s||this;if(part==null)part=nil;if(part["$=="]("..")){return new_parts.$pop()}else{return new_parts["$<<"](part)}},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b);return new_parts.$join($scope.get("SEPARATOR"))},TMP_2.$$arity=-2);Opal.alias(self,"realpath","expand_path");function chompdirsep(path){var last;while(path.length>0){if(isDirSep(path)){last=path;path=path.substring(1,path.length);while(path.length>0&&isDirSep(path)){path=inc(path)}if(path.length==0){return last}}else{path=inc(path)}}return path}function inc(a){return a.substring(1,a.length)}function skipprefix(path){return path}function lastSeparator(path){var tmp,last;while(path.length>0){if(isDirSep(path)){tmp=path;path=inc(path);while(path.length>0&&isDirSep(path)){path=inc(path)}if(!path){break}last=tmp}else{path=inc(path)}}return last}function isDirSep(sep){return sep.charAt(0)===$scope.get("SEPARATOR")}function skipRoot(path){while(path.length>0&&isDirSep(path)){path=inc(path)}return path}function pointerSubtract(a,b){if(a.length==0){return b.length}return b.indexOf(a)}function handleSuffix(n,f,p,suffix,name,origName){var suffixMatch;if(n>=0){if(suffix===nil){f=n}else{suffixMatch=suffix===".*"?"\\.\\w+":suffix.replace(/\?/g,"\\?");suffixMatch=new RegExp(suffixMatch+$scope.get("Separator")+"*$").exec(p);if(suffixMatch){f=suffixMatch.index}else{f=n}}if(f===origName.length){return name}}return p.substring(0,f)}Opal.defn(self,"$dirname",TMP_3=function $$dirname(path){var self=this;if(path===nil){self.$raise($scope.get("TypeError"),"no implicit conversion of nil into String")}if(path["$respond_to?"]("to_path")){path=path.$to_path()}if(!path.$$is_string){self.$raise($scope.get("TypeError"),"no implicit conversion of "+path.$class()+" into String")}var root,p;root=skipRoot(path);if(root.length==0){path=path.substring(path.length-1,path.length)}else if(root.length-path.length<0){path=path.substring(path.indexOf(root)-1,path.length)}p=lastSeparator(root);if(!p){p=root}if(p===path){return"."}return path.substring(0,path.length-p.length)},TMP_3.$$arity=1);Opal.defn(self,"$basename",TMP_4=function $$basename(name,suffix){var self=this;if(suffix==null){suffix=nil}var p,q,e,f=0,n=-1,tmp,pointerMath,origName;if(name===nil){self.$raise($scope.get("TypeError"),"no implicit conversion of nil into String")}if(name["$respond_to?"]("to_path")){name=name.$to_path()}if(!name.$$is_string){self.$raise($scope.get("TypeError"),"no implicit conversion of "+name.$class()+" into String")}if(suffix!==nil&&!suffix.$$is_string){self.$raise($scope.get("TypeError"),"no implicit conversion of "+suffix.$class()+" into String")}if(name.length==0){return name}origName=name;name=skipprefix(name);while(isDirSep(name)){tmp=name;name=inc(name)}if(!name){p=tmp;f=1}else{if(!(p=lastSeparator(name))){p=name}else{while(isDirSep(p)){p=inc(p)}}n=pointerSubtract(chompdirsep(p),p);for(q=p;pointerSubtract(q,p)<n&&q.charAt(0)===".";q=inc(q)){}for(e=null;pointerSubtract(q,p)<n;q=inc(q)){if(q.charAt(0)==="."){e=q}}if(e){f=pointerSubtract(e,p)}else{f=n}}return handleSuffix(n,f,p,suffix,name,origName)},TMP_4.$$arity=-2);Opal.defn(self,"$extname",TMP_5=function $$extname(path){var $a,$b,self=this,filename=nil,last_dot_idx=nil;if(($a=path["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("TypeError"),"no implicit conversion of nil into String")}if(($a=path["$respond_to?"]("to_path"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){path=path.$to_path()}if(($a=path["$is_a?"]($scope.get("String")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"no implicit conversion of "+path.$class()+" into String")}filename=self.$basename(path);if(($a=filename["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return""}last_dot_idx=filename["$[]"]($range(1,-1,false)).$rindex(".");if(($a=($b=last_dot_idx["$nil?"]())!==false&&$b!==nil&&$b!=null?$b:$rb_plus(last_dot_idx,1)["$=="]($rb_minus(filename.$length(),1)))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return""}else{return filename["$[]"]($range($rb_plus(last_dot_idx,1),-1,false))}},TMP_5.$$arity=1);Opal.defn(self,"$exist?",TMP_6=function(path){var self=this;return Opal.modules[path]!=null},TMP_6.$$arity=1);Opal.alias(self,"exists?","exist?");Opal.defn(self,"$directory?",TMP_8=function(path){var $a,$b,TMP_7,self=this,files=nil,file=nil;files=[];for(var key in Opal.modules){files.push(key)}path=path.$gsub(new RegExp("(^."+$scope.get("SEPARATOR")+"+|"+$scope.get("SEPARATOR")+"+$)"));file=($a=($b=files).$find,$a.$$p=(TMP_7=function(file){var self=TMP_7.$$s||this;if(file==null)file=nil;return file["$=~"](new RegExp("^"+path))},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$a).call($b);return file},TMP_8.$$arity=1);Opal.defn(self,"$join",TMP_9=function $$join($a_rest){var self=this,paths;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}paths=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){paths[$arg_idx-0]=arguments[$arg_idx]}return paths.$join($scope.get("SEPARATOR")).$gsub(new RegExp(""+$scope.get("SEPARATOR")+"+"),$scope.get("SEPARATOR"))},TMP_9.$$arity=-1);return(Opal.defn(self,"$split",TMP_10=function $$split(path){var self=this;return path.$split($scope.get("SEPARATOR"))},TMP_10.$$arity=1),nil)&&"split"}(Opal.get_singleton_class(self))}($scope.base,$scope.get("IO"))};Opal.modules["corelib/process"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$to_f","$now","$new"]);(function($base,$super){function $Process(){}var self=$Process=$klass($base,$super,"Process",$Process);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3;Opal.cdecl($scope,"CLOCK_REALTIME",0);Opal.cdecl($scope,"CLOCK_MONOTONIC",1);Opal.defs(self,"$pid",TMP_1=function $$pid(){var self=this;return 0},TMP_1.$$arity=0);Opal.defs(self,"$times",TMP_2=function $$times(){var self=this,t=nil;t=$scope.get("Time").$now().$to_f();return $scope.get("Benchmark").$$scope.get("Tms").$new(t,t,t,t,t)},TMP_2.$$arity=0);return(Opal.defs(self,"$clock_gettime",TMP_3=function $$clock_gettime(clock_id,unit){var self=this;if(unit==null){unit=nil}return $scope.get("Time").$now().$to_f()},TMP_3.$$arity=-2),nil)&&"clock_gettime"})($scope.base,null);(function($base,$super){function $Signal(){}var self=$Signal=$klass($base,$super,"Signal",$Signal);var def=self.$$proto,$scope=self.$$scope,TMP_4;return(Opal.defs(self,"$trap",TMP_4=function $$trap($a_rest){var self=this;return nil},TMP_4.$$arity=-1),nil)&&"trap"})($scope.base,null);return function($base,$super){function $GC(){}var self=$GC=$klass($base,$super,"GC",$GC);var def=self.$$proto,$scope=self.$$scope,TMP_5;return(Opal.defs(self,"$start",TMP_5=function $$start(){var self=this;return nil},TMP_5.$$arity=0),nil)&&"start"}($scope.base,null)};Opal.modules["corelib/unsupported"]=function(Opal){var TMP_30,TMP_31,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module;Opal.add_stubs(["$raise","$warn","$%"]);var warnings={};function handle_unsupported_feature(message){switch(Opal.config.unsupported_features_severity){case"error":$scope.get("Kernel").$raise($scope.get("NotImplementedError"),message);break;case"warning":warn(message);break;default:}}function warn(string){if(warnings[string]){return}warnings[string]=true;self.$warn(string)}(function($base,$super){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18;var ERROR="String#%s not supported. Mutable String methods are not supported in Opal.";Opal.defn(self,"$<<",TMP_1=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("<<"))},TMP_1.$$arity=-1);Opal.defn(self,"$capitalize!",TMP_2=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("capitalize!"))},TMP_2.$$arity=-1);Opal.defn(self,"$chomp!",TMP_3=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("chomp!"))},TMP_3.$$arity=-1);Opal.defn(self,"$chop!",TMP_4=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("chop!"))},TMP_4.$$arity=-1);Opal.defn(self,"$downcase!",TMP_5=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("downcase!"))},TMP_5.$$arity=-1);Opal.defn(self,"$gsub!",TMP_6=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("gsub!"))},TMP_6.$$arity=-1);Opal.defn(self,"$lstrip!",TMP_7=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("lstrip!"))},TMP_7.$$arity=-1);Opal.defn(self,"$next!",TMP_8=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("next!"))},TMP_8.$$arity=-1);Opal.defn(self,"$reverse!",TMP_9=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("reverse!"))},TMP_9.$$arity=-1);Opal.defn(self,"$slice!",TMP_10=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("slice!"))},TMP_10.$$arity=-1);Opal.defn(self,"$squeeze!",TMP_11=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("squeeze!"))},TMP_11.$$arity=-1);Opal.defn(self,"$strip!",TMP_12=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("strip!"))},TMP_12.$$arity=-1);Opal.defn(self,"$sub!",TMP_13=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("sub!"))},TMP_13.$$arity=-1);Opal.defn(self,"$succ!",TMP_14=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("succ!"))},TMP_14.$$arity=-1);Opal.defn(self,"$swapcase!",TMP_15=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("swapcase!"))},TMP_15.$$arity=-1);Opal.defn(self,"$tr!",TMP_16=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("tr!"))},TMP_16.$$arity=-1);Opal.defn(self,"$tr_s!",TMP_17=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("tr_s!"))},TMP_17.$$arity=-1);return(Opal.defn(self,"$upcase!",TMP_18=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),ERROR["$%"]("upcase!"))},TMP_18.$$arity=-1),nil)&&"upcase!"})($scope.base,null);(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_19,TMP_20;var ERROR="Object freezing is not supported by Opal";Opal.defn(self,"$freeze",TMP_19=function $$freeze(){var self=this;handle_unsupported_feature(ERROR);return self},TMP_19.$$arity=0);Opal.defn(self,"$frozen?",TMP_20=function(){var self=this;handle_unsupported_feature(ERROR);return false},TMP_20.$$arity=0)})($scope.base);(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_21,TMP_22,TMP_23;var ERROR="Object tainting is not supported by Opal";Opal.defn(self,"$taint",TMP_21=function $$taint(){var self=this;handle_unsupported_feature(ERROR);return self},TMP_21.$$arity=0);Opal.defn(self,"$untaint",TMP_22=function $$untaint(){var self=this;handle_unsupported_feature(ERROR);return self},TMP_22.$$arity=0);Opal.defn(self,"$tainted?",TMP_23=function(){var self=this;handle_unsupported_feature(ERROR);return false},TMP_23.$$arity=0)})($scope.base);(function($base,$super){function $Module(){}var self=$Module=$klass($base,$super,"Module",$Module);var def=self.$$proto,$scope=self.$$scope,TMP_24,TMP_25,TMP_26,TMP_27;Opal.defn(self,"$public",TMP_24=function($a_rest){var self=this,methods;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}methods=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){methods[$arg_idx-0]=arguments[$arg_idx]}if(methods.length===0){self.$$module_function=false}return nil},TMP_24.$$arity=-1);Opal.alias(self,"private","public");Opal.alias(self,"protected","public");Opal.alias(self,"nesting","public");Opal.defn(self,"$private_class_method",TMP_25=function $$private_class_method($a_rest){var self=this;return self},TMP_25.$$arity=-1);Opal.alias(self,"public_class_method","private_class_method");Opal.defn(self,"$private_method_defined?",TMP_26=function(obj){var self=this;return false},TMP_26.$$arity=1);Opal.defn(self,"$private_constant",TMP_27=function $$private_constant($a_rest){var self=this;return nil},TMP_27.$$arity=-1);Opal.alias(self,"protected_method_defined?","private_method_defined?");Opal.alias(self,"public_instance_methods","instance_methods");return Opal.alias(self,"public_method_defined?","method_defined?")})($scope.base,null);(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_28;Opal.defn(self,"$private_methods",TMP_28=function $$private_methods($a_rest){var self=this;return[]},TMP_28.$$arity=-1);Opal.alias(self,"private_instance_methods","private_methods")})($scope.base);(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_29;Opal.defn(self,"$eval",TMP_29=function($a_rest){var self=this;return self.$raise($scope.get("NotImplementedError"),"To use Kernel#eval, you must first require 'opal-parser'. "+("See https://github.com/opal/opal/blob/"+$scope.get("RUBY_ENGINE_VERSION")+"/docs/opal_parser.md for details."))},TMP_29.$$arity=-1)})($scope.base);Opal.defs(self,"$public",TMP_30=function($a_rest){var self=this;return nil},TMP_30.$$arity=-1);return(Opal.defs(self,"$private",TMP_31=function($a_rest){var self=this;return nil},TMP_31.$$arity=-1),nil)&&"private"};Opal.modules["opal"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/base");self.$require("opal/mini");self.$require("corelib/string/inheritance");self.$require("corelib/string/encoding");self.$require("corelib/math");self.$require("corelib/complex");self.$require("corelib/rational");self.$require("corelib/time");self.$require("corelib/struct");self.$require("corelib/io");self.$require("corelib/main");self.$require("corelib/dir");self.$require("corelib/file");self.$require("corelib/process");return self.$require("corelib/unsupported")};Opal.modules["native"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$range=Opal.range,$hash2=Opal.hash2,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$try_convert","$native?","$respond_to?","$to_n","$raise","$inspect","$Native","$proc","$map!","$end_with?","$define_method","$[]","$convert","$call","$to_proc","$new","$each","$native_reader","$native_writer","$extend","$is_a?","$map","$alias_method","$to_a","$_Array","$include","$method_missing","$bind","$instance_method","$[]=","$slice","$-","$length","$enum_for","$===","$>=","$<<","$each_pair","$_initialize","$name","$exiting_mid","$native_module"]);(function($base){var $Native,self=$Native=$module($base,"Native");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_19,TMP_20,TMP_21;Opal.defs(self,"$is_a?",TMP_1=function(object,klass){var self=this;try{return object instanceof self.$try_convert(klass)}catch(e){return false}},TMP_1.$$arity=2);Opal.defs(self,"$try_convert",TMP_2=function $$try_convert(value,default$){var self=this;if(default$==null){default$=nil}if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{return default$}},TMP_2.$$arity=-2);Opal.defs(self,"$convert",TMP_3=function $$convert(value){var self=this;if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{self.$raise($scope.get("ArgumentError"),""+value.$inspect()+" isn't native")}},TMP_3.$$arity=1);Opal.defs(self,"$call",TMP_4=function $$call(obj,key,$a_rest){var self=this,args,$iter=TMP_4.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-2;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=2;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-2]=arguments[$arg_idx]}TMP_4.$$p=null;var prop=obj[key];if(prop instanceof Function){var converted=new Array(args.length);for(var i=0,l=args.length;i<l;i++){var item=args[i],conv=self.$try_convert(item);converted[i]=conv===nil?item:conv}if(block!==nil){converted.push(block)}return self.$Native(prop.apply(obj,converted))}else{return self.$Native(prop)}},TMP_4.$$arity=-3);Opal.defs(self,"$proc",TMP_5=function $$proc(){var $a,$b,TMP_6,self=this,$iter=TMP_5.$$p,block=$iter||nil;TMP_5.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("LocalJumpError"),"no block given")}return($a=($b=$scope.get("Kernel")).$proc,$a.$$p=(TMP_6=function($c_rest){var self=TMP_6.$$s||this,args,$d,$e,TMP_7,instance=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}($d=($e=args)["$map!"],$d.$$p=(TMP_7=function(arg){var self=TMP_7.$$s||this;if(arg==null)arg=nil;return self.$Native(arg)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$d).call($e);instance=self.$Native(this);if(this===Opal.global){return block.apply(self,args)}var self_=block.$$s;block.$$s=null;try{return block.apply(instance,args)}finally{block.$$s=self_}},TMP_6.$$s=self,TMP_6.$$arity=-1,TMP_6),$a).call($b)},TMP_5.$$arity=0);(function($base){var $Helpers,self=$Helpers=$module($base,"Helpers");var def=self.$$proto,$scope=self.$$scope,TMP_11,TMP_14,TMP_17,TMP_18;Opal.defn(self,"$alias_native",TMP_11=function $$alias_native(new$,$old,$kwargs){var $a,$b,TMP_8,$c,TMP_9,$d,TMP_10,self=this,$post_args,as,old;$post_args=Opal.slice.call(arguments,1,arguments.length);$kwargs=Opal.extract_kwargs($post_args);if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}if((as=$kwargs.$$smap["as"])==null){as=nil}if(0<$post_args.length){old=$post_args.splice(0,1)[0]}if(old==null){old=new$}if(($a=old["$end_with?"]("="))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=self).$define_method,$a.$$p=(TMP_8=function(value){var self=TMP_8.$$s||this;if(self["native"]==null)self["native"]=nil;if(value==null)value=nil;self["native"][old["$[]"]($range(0,-2,false))]=$scope.get("Native").$convert(value);return value},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8),$a).call($b,new$)}else if(as!==false&&as!==nil&&as!=null){return($a=($c=self).$define_method,$a.$$p=(TMP_9=function($d_rest){var self=TMP_9.$$s||this,block,args,$e,$f,$g,value=nil;if(self["native"]==null)self["native"]=nil;block=TMP_9.$$p||nil,TMP_9.$$p=null;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(($e=value=($f=($g=$scope.get("Native")).$call,$f.$$p=block.$to_proc(),$f).apply($g,[self["native"],old].concat(Opal.to_a(args))))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){return as.$new(value.$to_n())}else{return nil}},TMP_9.$$s=self,TMP_9.$$arity=-1,TMP_9),$a).call($c,new$)}else{return($a=($d=self).$define_method,$a.$$p=(TMP_10=function($e_rest){var self=TMP_10.$$s||this,block,args,$f,$g;if(self["native"]==null)self["native"]=nil;block=TMP_10.$$p||nil,TMP_10.$$p=null;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return($f=($g=$scope.get("Native")).$call,$f.$$p=block.$to_proc(),$f).apply($g,[self["native"],old].concat(Opal.to_a(args)))},TMP_10.$$s=self,TMP_10.$$arity=-1,TMP_10),$a).call($d,new$)}},TMP_11.$$arity=-2);Opal.defn(self,"$native_reader",TMP_14=function $$native_reader($a_rest){var $b,$c,TMP_12,self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}return($b=($c=names).$each,$b.$$p=(TMP_12=function(name){var self=TMP_12.$$s||this,$a,$d,TMP_13;if(name==null)name=nil;return($a=($d=self).$define_method,$a.$$p=(TMP_13=function(){var self=TMP_13.$$s||this;if(self["native"]==null)self["native"]=nil;return self.$Native(self["native"][name])},TMP_13.$$s=self,TMP_13.$$arity=0,TMP_13),$a).call($d,name)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12),$b).call($c)},TMP_14.$$arity=-1);Opal.defn(self,"$native_writer",TMP_17=function $$native_writer($a_rest){var $b,$c,TMP_15,self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}return($b=($c=names).$each,$b.$$p=(TMP_15=function(name){var self=TMP_15.$$s||this,$a,$d,TMP_16;if(name==null)name=nil;return($a=($d=self).$define_method,$a.$$p=(TMP_16=function(value){var self=TMP_16.$$s||this;if(self["native"]==null)self["native"]=nil;if(value==null)value=nil;return self.$Native(self["native"][name]=value)},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16),$a).call($d,""+name+"=")},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15),$b).call($c)},TMP_17.$$arity=-1);Opal.defn(self,"$native_accessor",TMP_18=function $$native_accessor($a_rest){var $b,$c,self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}($b=self).$native_reader.apply($b,Opal.to_a(names));return($c=self).$native_writer.apply($c,Opal.to_a(names))},TMP_18.$$arity=-1)})($scope.base);Opal.defs(self,"$included",TMP_19=function $$included(klass){var self=this;return klass.$extend($scope.get("Helpers"))},TMP_19.$$arity=1);Opal.defn(self,"$initialize",TMP_20=function $$initialize(native$){var $a,self=this;if(($a=$scope.get("Kernel")["$native?"](native$))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{$scope.get("Kernel").$raise($scope.get("ArgumentError"),""+native$.$inspect()+" isn't native")}return self["native"]=native$},TMP_20.$$arity=1);Opal.defn(self,"$to_n",TMP_21=function $$to_n(){var self=this;if(self["native"]==null)self["native"]=nil;return self["native"]},TMP_21.$$arity=0)})($scope.base);(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_22,TMP_25,TMP_26;Opal.defn(self,"$native?",TMP_22=function(value){var self=this;return value==null||!value.$$class},TMP_22.$$arity=1);Opal.defn(self,"$Native",TMP_25=function $$Native(obj){var $a,$b,TMP_23,$c,TMP_24,self=this;if(($a=obj==null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else if(($a=self["$native?"](obj))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Native").$$scope.get("Object").$new(obj)}else if(($a=obj["$is_a?"]($scope.get("Array")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=obj).$map,$a.$$p=(TMP_23=function(o){var self=TMP_23.$$s||this;if(o==null)o=nil;return self.$Native(o)},TMP_23.$$s=self,TMP_23.$$arity=1,TMP_23),$a).call($b)}else if(($a=obj["$is_a?"]($scope.get("Proc")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($c=self).$proc,$a.$$p=(TMP_24=function($d_rest){var self=TMP_24.$$s||this,block,args,$e,$f;block=TMP_24.$$p||nil,TMP_24.$$p=null;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.$Native(($e=($f=obj).$call,$e.$$p=block.$to_proc(),$e).apply($f,Opal.to_a(args)))},TMP_24.$$s=self,TMP_24.$$arity=-1,TMP_24),$a).call($c)}else{return obj}},TMP_25.$$arity=1);self.$alias_method("_Array","Array");Opal.defn(self,"$Array",TMP_26=function $$Array(object,$a_rest){var $b,$c,self=this,args,$iter=TMP_26.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_26.$$p=null;if(($b=self["$native?"](object))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return($b=($c=$scope.get("Native").$$scope.get("Array")).$new,$b.$$p=block.$to_proc(),$b).apply($c,[object].concat(Opal.to_a(args))).$to_a()}return self.$_Array(object)},TMP_26.$$arity=-2)})($scope.base);(function($base,$super){function $Object(){}var self=$Object=$klass($base,$super,"Object",$Object);var def=self.$$proto,$scope=self.$$scope,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41;def["native"]=nil;self.$include(Opal.get("Native"));Opal.defn(self,"$==",TMP_27=function(other){var self=this;return self["native"]===$scope.get("Native").$try_convert(other)},TMP_27.$$arity=1);Opal.defn(self,"$has_key?",TMP_28=function(name){var self=this;return Opal.hasOwnProperty.call(self["native"],name)},TMP_28.$$arity=1);Opal.alias(self,"key?","has_key?");Opal.alias(self,"include?","has_key?");Opal.alias(self,"member?","has_key?");Opal.defn(self,"$each",TMP_29=function $$each($a_rest){var $b,self=this,args,$iter=TMP_29.$$p,$yield=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_29.$$p=null;if($yield!==nil){for(var key in self["native"]){Opal.yieldX($yield,[key,self["native"][key]])}return self}else{return($b=self).$method_missing.apply($b,["each"].concat(Opal.to_a(args)))}},TMP_29.$$arity=-1);Opal.defn(self,"$[]",TMP_30=function(key){var self=this;var prop=self["native"][key];if(prop instanceof Function){return prop}else{return Opal.get("Native").$call(self["native"],key)}},TMP_30.$$arity=1);Opal.defn(self,"$[]=",TMP_31=function(key,value){var $a,self=this,native$=nil;native$=$scope.get("Native").$try_convert(value);if(($a=native$===nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self["native"][key]=value}else{return self["native"][key]=native$}},TMP_31.$$arity=2);Opal.defn(self,"$merge!",TMP_32=function(other){var self=this;other=$scope.get("Native").$convert(other);for(var prop in other){self["native"][prop]=other[prop]}return self},TMP_32.$$arity=1);Opal.defn(self,"$respond_to?",TMP_33=function(name,include_all){var self=this;if(include_all==null){include_all=false}return $scope.get("Kernel").$instance_method("respond_to?").$bind(self).$call(name,include_all)},TMP_33.$$arity=-2);Opal.defn(self,"$respond_to_missing?",TMP_34=function(name,include_all){var self=this;if(include_all==null){include_all=false}return Opal.hasOwnProperty.call(self["native"],name)},TMP_34.$$arity=-2);Opal.defn(self,"$method_missing",TMP_35=function $$method_missing(mid,$a_rest){var $b,$c,self=this,args,$iter=TMP_35.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_35.$$p=null;if(mid.charAt(mid.length-1)==="="){return self["$[]="](mid.$slice(0,$rb_minus(mid.$length(),1)),args["$[]"](0))}else{return($b=($c=Opal.get("Native")).$call,$b.$$p=block.$to_proc(),$b).apply($c,[self["native"],mid].concat(Opal.to_a(args)))}},TMP_35.$$arity=-2);Opal.defn(self,"$nil?",TMP_36=function(){var self=this;return false},TMP_36.$$arity=0);Opal.defn(self,"$is_a?",TMP_37=function(klass){var self=this;return Opal.is_a(self,klass)},TMP_37.$$arity=1);Opal.alias(self,"kind_of?","is_a?");Opal.defn(self,"$instance_of?",TMP_38=function(klass){var self=this;return self.$$class===klass},TMP_38.$$arity=1);Opal.defn(self,"$class",TMP_39=function(){var self=this;return self.$$class},TMP_39.$$arity=0);Opal.defn(self,"$to_a",TMP_40=function $$to_a(options){var $a,$b,self=this,$iter=TMP_40.$$p,block=$iter||nil;if(options==null){options=$hash2([],{})}TMP_40.$$p=null;return($a=($b=$scope.get("Native").$$scope.get("Array")).$new,$a.$$p=block.$to_proc(),$a).call($b,self["native"],options).$to_a()},TMP_40.$$arity=-1);return(Opal.defn(self,"$inspect",TMP_41=function $$inspect(){var self=this;return"#<Native:"+String(self["native"])+">"},TMP_41.$$arity=0),nil)&&"inspect"})($scope.get("Native"),$scope.get("BasicObject"));(function($base,$super){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$scope=self.$$scope,TMP_42,TMP_43,TMP_44,TMP_45,TMP_46,TMP_47,TMP_48;def.named=def["native"]=def.get=def.block=def.set=def.length=nil;self.$include($scope.get("Native"));self.$include($scope.get("Enumerable"));Opal.defn(self,"$initialize",TMP_42=function $$initialize(native$,options){var $a,$b,self=this,$iter=TMP_42.$$p,block=$iter||nil;if(options==null){options=$hash2([],{})}TMP_42.$$p=null;($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_42,false)),$a.$$p=null,$a).call($b,native$);self.get=($a=options["$[]"]("get"))!==false&&$a!==nil&&$a!=null?$a:options["$[]"]("access");self.named=options["$[]"]("named");self.set=($a=options["$[]"]("set"))!==false&&$a!==nil&&$a!=null?$a:options["$[]"]("access");self.length=($a=options["$[]"]("length"))!==false&&$a!==nil&&$a!=null?$a:"length";self.block=block;if(($a=self.$length()==null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("ArgumentError"),"no length found on the array-like object")}else{return nil}},TMP_42.$$arity=-2);Opal.defn(self,"$each",TMP_43=function $$each(){var self=this,$iter=TMP_43.$$p,block=$iter||nil;TMP_43.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{return self.$enum_for("each")}for(var i=0,length=self.$length();i<length;i++){Opal.yield1(block,self["$[]"](i))}return self},TMP_43.$$arity=0);Opal.defn(self,"$[]",TMP_44=function(index){var $a,self=this,result=nil,$case=nil;result=function(){$case=index;if($scope.get("String")["$==="]($case)||$scope.get("Symbol")["$==="]($case)){if(($a=self.named)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self["native"][self.named](index)}else{return self["native"][index]}}else if($scope.get("Integer")["$==="]($case)){if(($a=self.get)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self["native"][self.get](index)}else{return self["native"][index]}}else{return nil}}();if(result!==false&&result!==nil&&result!=null){if(($a=self.block)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.block.$call(result)}else{return self.$Native(result)}}else{return nil}},TMP_44.$$arity=1);Opal.defn(self,"$[]=",TMP_45=function(index,value){var $a,self=this;if(($a=self.set)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self["native"][self.set](index,$scope.get("Native").$convert(value))}else{return self["native"][index]=$scope.get("Native").$convert(value)}},TMP_45.$$arity=2);Opal.defn(self,"$last",TMP_46=function $$last(count){var $a,$b,self=this,index=nil,result=nil;if(count==null){count=nil}if(count!==false&&count!==nil&&count!=null){index=$rb_minus(self.$length(),1);result=[];while(($b=$rb_ge(index,0))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result["$<<"](self["$[]"](index));index=$rb_minus(index,1)}return result}else{return self["$[]"]($rb_minus(self.$length(),1))}},TMP_46.$$arity=-1);Opal.defn(self,"$length",TMP_47=function $$length(){var self=this;return self["native"][self.length]},TMP_47.$$arity=0);Opal.alias(self,"to_ary","to_a");return(Opal.defn(self,"$inspect",TMP_48=function $$inspect(){var self=this;return self.$to_a().$inspect()},TMP_48.$$arity=0),nil)&&"inspect"})($scope.get("Native"),null);(function($base,$super){function $Numeric(){}var self=$Numeric=$klass($base,$super,"Numeric",$Numeric);var def=self.$$proto,$scope=self.$$scope,TMP_49;return(Opal.defn(self,"$to_n",TMP_49=function $$to_n(){var self=this;return self.valueOf()},TMP_49.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Proc(){}var self=$Proc=$klass($base,$super,"Proc",$Proc);var def=self.$$proto,$scope=self.$$scope,TMP_50;return(Opal.defn(self,"$to_n",TMP_50=function $$to_n(){var self=this;return self},TMP_50.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$scope=self.$$scope,TMP_51;return(Opal.defn(self,"$to_n",TMP_51=function $$to_n(){var self=this;return self.valueOf()},TMP_51.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Regexp(){}var self=$Regexp=$klass($base,$super,"Regexp",$Regexp);var def=self.$$proto,$scope=self.$$scope,TMP_52;return(Opal.defn(self,"$to_n",TMP_52=function $$to_n(){var self=this;return self.valueOf()},TMP_52.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $MatchData(){}var self=$MatchData=$klass($base,$super,"MatchData",$MatchData);var def=self.$$proto,$scope=self.$$scope,TMP_53;def.matches=nil;return(Opal.defn(self,"$to_n",TMP_53=function $$to_n(){var self=this;return self.matches},TMP_53.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Struct(){}var self=$Struct=$klass($base,$super,"Struct",$Struct);var def=self.$$proto,$scope=self.$$scope,TMP_55;return(Opal.defn(self,"$to_n",TMP_55=function $$to_n(){var $a,$b,TMP_54,self=this,result=nil;result={};($a=($b=self).$each_pair,$a.$$p=(TMP_54=function(name,value){var self=TMP_54.$$s||this;if(name==null)name=nil;if(value==null)value=nil;return result[name]=$scope.get("Native").$try_convert(value,value)},TMP_54.$$s=self,TMP_54.$$arity=2,TMP_54),$a).call($b);return result},TMP_55.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$scope=self.$$scope,TMP_56;return(Opal.defn(self,"$to_n",TMP_56=function $$to_n(){var self=this;var result=[];for(var i=0,length=self.length;i<length;i++){var obj=self[i];result.push($scope.get("Native").$try_convert(obj,obj))}return result},TMP_56.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Boolean(){}var self=$Boolean=$klass($base,$super,"Boolean",$Boolean);var def=self.$$proto,$scope=self.$$scope,TMP_57;return(Opal.defn(self,"$to_n",TMP_57=function $$to_n(){var self=this;return self.valueOf()},TMP_57.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Time(){}var self=$Time=$klass($base,$super,"Time",$Time);var def=self.$$proto,$scope=self.$$scope,TMP_58;return(Opal.defn(self,"$to_n",TMP_58=function $$to_n(){var self=this;return self},TMP_58.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $NilClass(){}var self=$NilClass=$klass($base,$super,"NilClass",$NilClass);var def=self.$$proto,$scope=self.$$scope,TMP_59;return(Opal.defn(self,"$to_n",TMP_59=function $$to_n(){var self=this;return null},TMP_59.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Hash(){}var self=$Hash=$klass($base,$super,"Hash",$Hash);var def=self.$$proto,$scope=self.$$scope,TMP_60,TMP_61;self.$alias_method("_initialize","initialize");Opal.defn(self,"$initialize",TMP_60=function $$initialize(defaults){var $a,$b,self=this,$iter=TMP_60.$$p,block=$iter||nil;TMP_60.$$p=null;if(defaults!=null&&defaults.constructor===Object){var smap=self.$$smap,keys=self.$$keys,key,value;for(key in defaults){value=defaults[key];if(value&&value.constructor===Object){smap[key]=$scope.get("Hash").$new(value)}else if(value&&value.$$is_array){value=value.map(function(item){if(item&&item.constructor===Object){return $scope.get("Hash").$new(item)}return item});smap[key]=value}else{smap[key]=self.$Native(value)}keys.push(key)}return self}return($a=($b=self).$_initialize,$a.$$p=block.$to_proc(),$a).call($b,defaults)},TMP_60.$$arity=-1);return(Opal.defn(self,"$to_n",TMP_61=function $$to_n(){var self=this;var result={},keys=self.$$keys,smap=self.$$smap,key,value;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){value=smap[key]}else{key=key.key;value=key.value}result[key]=$scope.get("Native").$try_convert(value,value)}return result},TMP_61.$$arity=0),nil)&&"to_n"})($scope.base,null);(function($base,$super){function $Module(){}var self=$Module=$klass($base,$super,"Module",$Module);var def=self.$$proto,$scope=self.$$scope,TMP_62;return(Opal.defn(self,"$native_module",TMP_62=function $$native_module(){var self=this;return Opal.global[self.$name()]=self},TMP_62.$$arity=0),nil)&&"native_module"})($scope.base,null);(function($base,$super){function $Class(){}var self=$Class=$klass($base,$super,"Class",$Class);var def=self.$$proto,$scope=self.$$scope,TMP_63,TMP_64;Opal.defn(self,"$native_alias",TMP_63=function $$native_alias(new_jsid,existing_mid){var self=this;var aliased=self.$$proto["$"+existing_mid];if(!aliased){self.$raise($scope.get("NameError").$new("undefined method `"+existing_mid+"' for class `"+self.$inspect()+"'",self.$exiting_mid()))}self.$$proto[new_jsid]=aliased},TMP_63.$$arity=2);return(Opal.defn(self,"$native_class",TMP_64=function $$native_class(){var self=this;self.$native_module();self["new"]=self.$new},TMP_64.$$arity=0),nil)&&"native_class"})($scope.base,null);return $gvars.$=$gvars.global=self.$Native(Opal.global)};Opal.modules["console"]=function(Opal){var $a,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$require","$include","$raise","$==","$arity","$instance_exec","$to_proc","$call","$new"]);self.$require("native");(function($base,$super){function $Console(){}var self=$Console=$klass($base,$super,"Console",$Console);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9;def["native"]=nil;self.$include($scope.get("Native"));Opal.defn(self,"$clear",TMP_1=function $$clear(){var self=this;return self["native"].clear()},TMP_1.$$arity=0);Opal.defn(self,"$trace",TMP_2=function $$trace(){var self=this;return self["native"].trace()},TMP_2.$$arity=0);Opal.defn(self,"$log",TMP_3=function $$log($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self["native"].log.apply(self["native"],args)},TMP_3.$$arity=-1);Opal.defn(self,"$info",TMP_4=function $$info($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self["native"].info.apply(self["native"],args)},TMP_4.$$arity=-1);Opal.defn(self,"$warn",TMP_5=function $$warn($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self["native"].warn.apply(self["native"],args)},TMP_5.$$arity=-1);Opal.defn(self,"$error",TMP_6=function $$error($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self["native"].error.apply(self["native"],args)},TMP_6.$$arity=-1);Opal.defn(self,"$time",TMP_7=function $$time(label){var $a,$b,self=this,$iter=TMP_7.$$p,block=$iter||nil;TMP_7.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"no block given")}self["native"].time(label);try{if(block.$arity()["$=="](0)){return($a=($b=self).$instance_exec,$a.$$p=block.$to_proc(),$a).call($b)}else{return block.$call(self)}}finally{self["native"].timeEnd()}},TMP_7.$$arity=1);Opal.defn(self,"$group",TMP_8=function $$group($a_rest){var $b,$c,self=this,args,$iter=TMP_8.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_8.$$p=null;if(block!==false&&block!==nil&&block!=null){}else{self.$raise($scope.get("ArgumentError"),"no block given")}self["native"].group.apply(self["native"],args);try{if(block.$arity()["$=="](0)){return($b=($c=self).$instance_exec,$b.$$p=block.$to_proc(),$b).call($c)}else{return block.$call(self)}}finally{self["native"].groupEnd()}},TMP_8.$$arity=-1);return(Opal.defn(self,"$group!",TMP_9=function($a_rest){var $b,$c,self=this,args,$iter=TMP_9.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}TMP_9.$$p=null;if(block!==nil){}else{return nil}self["native"].groupCollapsed.apply(self["native"],args);try{if(block.$arity()["$=="](0)){return($b=($c=self).$instance_exec,$b.$$p=block.$to_proc(),$b).call($c)}else{return block.$call(self)}}finally{self["native"].groupEnd()}},TMP_9.$$arity=-1),nil)&&"group!"})($scope.base,null);if(($a=typeof Opal.global.console!=="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $gvars.console=$scope.get("Console").$new(Opal.global.console)}else{return nil}};Opal.modules["dxopal/constants/colors"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Constants,self=$Constants=$module($base,"Constants");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Colors,self=$Colors=$module($base,"Colors");var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"C_BLACK",[255,0,0,0]);Opal.cdecl($scope,"C_RED",[255,255,0,0]);Opal.cdecl($scope,"C_GREEN",[255,0,255,0]);Opal.cdecl($scope,"C_BLUE",[255,0,0,255]);Opal.cdecl($scope,"C_YELLOW",[255,255,255,0]);Opal.cdecl($scope,"C_CYAN",[255,0,255,255]);Opal.cdecl($scope,"C_MAGENTA",[255,255,0,255]);Opal.cdecl($scope,"C_WHITE",[255,255,255,255]);Opal.cdecl($scope,"C_DEFAULT",[0,0,0,0])})($scope.base)})($scope.base)}($scope.base)};Opal.modules["dxopal/font"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$new"]);return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Font(){}var self=$Font=$klass($base,$super,"Font",$Font);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6;def.size=def.orig_fontname=def.fontname=nil;Opal.defs(self,"$default",TMP_1=function(){var $a,$b,self=this;return($a=($b=Opal.cvars["@@default"])==null?nil:$b)!==false&&$a!==nil&&$a!=null?$a:Opal.cvars["@@default"]=$scope.get("Font").$new(24)},TMP_1.$$arity=0);Opal.defs(self,"$default=",TMP_2=function(f){var self=this;return Opal.cvars["@@default"]=f},TMP_2.$$arity=1);Opal.defn(self,"$initialize",TMP_3=function $$initialize(size,fontname,option){var $a,self=this;if(fontname==null){fontname=nil}if(option==null){option=$hash2([],{})}self.size=size;self.orig_fontname=fontname;return self.fontname=($a=fontname)!==false&&$a!==nil&&$a!=null?$a:"sans-serif"},TMP_3.$$arity=-2);Opal.defn(self,"$size",TMP_4=function $$size(){var self=this;return self.size},TMP_4.$$arity=0);Opal.defn(self,"$fontname",TMP_5=function $$fontname(){var self=this;return self.orig_fontname},TMP_5.$$arity=0);return(Opal.defn(self,"$_spec_str",TMP_6=function $$_spec_str(){var self=this;return""+self.size+"px "+self.fontname},TMP_6.$$arity=0),nil)&&"_spec_str"})($scope.base,null)}($scope.base)};Opal.modules["dxopal/input"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$_init_mouse_events","$keyevent_target","$keyevent_target=","$+","$key_down?","$-","$_pressing_keys"]);return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Input,self=$Input=$module($base,"Input");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,$a,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16;(function($base){var $MouseCodes,self=$MouseCodes=$module($base,"MouseCodes");var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"M_LBUTTON",1);Opal.cdecl($scope,"M_RBUTTON",2);Opal.cdecl($scope,"M_MBUTTON",4);Opal.cdecl($scope,"M_4TH_BUTTON",8);Opal.cdecl($scope,"M_5TH_BUTTON",16)})($scope.base);Opal.defs(self,"$_pressing_keys",TMP_1=function $$_pressing_keys(){var $a,self=this;return($a=Opal.cvars["@@pressing_keys"])==null?nil:$a},TMP_1.$$arity=0);Opal.defs(self,"$_init",TMP_2=function $$_init(canvas){var $a,$b,self=this,rect=nil;Opal.cvars["@@tick"]=0;Opal.cvars["@@pressing_keys"]=new Object;Opal.cvars["@@mouse_info"]={x:0,y:0};Opal.cvars["@@pressing_mouse_buttons"]=new Object;rect=canvas.getBoundingClientRect();Opal.cvars["@@canvas_x"]=rect.left+window.pageXOffset;Opal.cvars["@@canvas_y"]=rect.top+window.pageYOffset;self.$_init_mouse_events();if(($a=$scope.get("Input").$keyevent_target())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return $a=[window],$b=self,$b["$keyevent_target="].apply($b,$a),$a[$a.length-1]}},TMP_2.$$arity=1);Opal.defs(self,"$_on_tick",TMP_3=function $$_on_tick(){var $a,self=this;return Opal.cvars["@@tick"]=$rb_plus(($a=Opal.cvars["@@tick"])==null?nil:$a,1)},TMP_3.$$arity=0);Opal.defs(self,"$x",TMP_4=function $$x(pad_number){var $a,self=this,ret=nil;if(pad_number==null){pad_number=0}ret=0;if(($a=self["$key_down?"]($scope.get("K_RIGHT")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){ret=$rb_plus(ret,1)}if(($a=self["$key_down?"]($scope.get("K_LEFT")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){ret=$rb_minus(ret,1)}return ret},TMP_4.$$arity=-1);Opal.defs(self,"$y",TMP_5=function $$y(pad_number){var $a,self=this,ret=nil;if(pad_number==null){pad_number=0}ret=0;if(($a=self["$key_down?"]($scope.get("K_DOWN")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){ret=$rb_plus(ret,1)}if(($a=self["$key_down?"]($scope.get("K_UP")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){ret=$rb_minus(ret,1)}return ret},TMP_5.$$arity=-1);Opal.defs(self,"$key_down?",TMP_6=function(code){var $a,self=this;return(($a=Opal.cvars["@@pressing_keys"])==null?nil:$a)[code]>0},TMP_6.$$arity=1);Opal.defs(self,"$key_push?",TMP_7=function(code){var $a,self=this;return(($a=Opal.cvars["@@pressing_keys"])==null?nil:$a)[code]==(($a=Opal.cvars["@@tick"])==null?nil:$a)-1},TMP_7.$$arity=1);Opal.defs(self,"$key_release?",TMP_8=function(code){var $a,self=this;return(($a=Opal.cvars["@@pressing_keys"])==null?nil:$a)[code]==-((($a=Opal.cvars["@@tick"])==null?nil:$a)-1)},TMP_8.$$arity=1);Opal.cdecl($scope,"ON_KEYDOWN_",function(ev){$scope.get("Input").$_pressing_keys()[ev.keyCode]=($a=Opal.cvars["@@tick"])==null?nil:$a;ev.preventDefault();ev.stopPropagation()});Opal.cdecl($scope,"ON_KEYUP_",function(ev){$scope.get("Input").$_pressing_keys()[ev.keyCode]=-(($a=Opal.cvars["@@tick"])==null?nil:$a);ev.preventDefault();ev.stopPropagation()});Opal.defs(self,"$keyevent_target=",TMP_9=function(target){var $a,$b,self=this;if(($a=($b=Opal.cvars["@@keyevent_target"])==null?nil:$b)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){(($a=Opal.cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keydown",$scope.get("ON_KEYDOWN_"));(($a=Opal.cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keyup",$scope.get("ON_KEYUP_"))}Opal.cvars["@@keyevent_target"]=target;if((($a=Opal.cvars["@@keyevent_target"])==null?nil:$a).tagName=="CANVAS"){(($a=Opal.cvars["@@keyevent_target"])==null?nil:$a).setAttribute("tabindex",0)}(($a=Opal.cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keydown",$scope.get("ON_KEYDOWN_"));(($a=Opal.cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keyup",$scope.get("ON_KEYUP_"))},TMP_9.$$arity=1);Opal.defs(self,"$keyevent_target",TMP_10=function $$keyevent_target(){var $a,self=this;return($a=Opal.cvars["@@keyevent_target"])==null?nil:$a},TMP_10.$$arity=0);Opal.defs(self,"$_init_mouse_events",TMP_11=function $$_init_mouse_events(){var $a,self=this;document.addEventListener("mousemove",function(ev){(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=Opal.cvars["@@canvas_x"])==null?nil:$a);(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=Opal.cvars["@@canvas_y"])==null?nil:$a)});document.addEventListener("mousedown",function(ev){(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=Opal.cvars["@@canvas_x"])==null?nil:$a);(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=Opal.cvars["@@canvas_y"])==null?nil:$a);for(var k=1;k<=16;k<<=1){if(ev.buttons&k){(($a=Opal.cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]=($a=Opal.cvars["@@tick"])==null?nil:$a}}});document.addEventListener("mouseup",function(ev){(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=Opal.cvars["@@canvas_x"])==null?nil:$a);(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=Opal.cvars["@@canvas_y"])==null?nil:$a);for(var k=1;k<=16;k<<=1){if((ev.buttons&k)==0&&(($a=Opal.cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]){(($a=Opal.cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]=-(($a=Opal.cvars["@@tick"])==null?nil:$a)}}})},TMP_11.$$arity=0);Opal.defs(self,"$mouse_x",TMP_12=function $$mouse_x(){var $a,self=this;return(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).x},TMP_12.$$arity=0);Opal.defs(self,"$mouse_y",TMP_13=function $$mouse_y(){var $a,self=this;return(($a=Opal.cvars["@@mouse_info"])==null?nil:$a).y},TMP_13.$$arity=0);(function(self){var $scope=self.$$scope,def=self.$$proto;Opal.alias(self,"mouse_pos_x","mouse_x");return Opal.alias(self,"mouse_pos_y","mouse_y")})(Opal.get_singleton_class(self));Opal.defs(self,"$mouse_down?",TMP_14=function(mouse_code){var $a,self=this;return(($a=Opal.cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]>0},TMP_14.$$arity=1);Opal.defs(self,"$mouse_push?",TMP_15=function(mouse_code){var $a,self=this;return(($a=Opal.cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=Opal.cvars["@@tick"])==null?nil:$a)-1)},TMP_15.$$arity=1);Opal.defs(self,"$mouse_release?",TMP_16=function(mouse_code){var $a,self=this;return(($a=Opal.cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=Opal.cvars["@@tick"])==null?nil:$a)-1)},TMP_16.$$arity=1)})($scope.base)}($scope.base)};Opal.modules["dxopal/input/key_codes"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Input,self=$Input=$module($base,"Input");var def=self.$$proto,$scope=self.$$scope;(function($base){var $KeyCodes,self=$KeyCodes=$module($base,"KeyCodes");var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"K_SPACE"," ");Opal.cdecl($scope,"K_X","x");Opal.cdecl($scope,"K_ESCAPE",27);Opal.cdecl($scope,"K_MINUS",189);Opal.cdecl($scope,"K_BACK",8);Opal.cdecl($scope,"K_TAB",9);Opal.cdecl($scope,"K_Q",81);Opal.cdecl($scope,"K_W",87);Opal.cdecl($scope,"K_E",69);Opal.cdecl($scope,"K_R",82);Opal.cdecl($scope,"K_T",84);Opal.cdecl($scope,"K_Y",89);Opal.cdecl($scope,"K_U",85);Opal.cdecl($scope,"K_I",73);Opal.cdecl($scope,"K_O",79);Opal.cdecl($scope,"K_P",80);Opal.cdecl($scope,"K_LBRACKET",219);Opal.cdecl($scope,"K_RBRACKET",221);Opal.cdecl($scope,"K_RETURN",13);Opal.cdecl($scope,"K_A",65);Opal.cdecl($scope,"K_S",83);Opal.cdecl($scope,"K_D",68);Opal.cdecl($scope,"K_F",70);Opal.cdecl($scope,"K_G",71);Opal.cdecl($scope,"K_H",72);Opal.cdecl($scope,"K_J",74);Opal.cdecl($scope,"K_K",75);Opal.cdecl($scope,"K_L",76);Opal.cdecl($scope,"K_SEMICOLON",186);Opal.cdecl($scope,"K_BACKSLASH",0);Opal.cdecl($scope,"K_Z",90);Opal.cdecl($scope,"K_X",88);Opal.cdecl($scope,"K_C",67);Opal.cdecl($scope,"K_V",86);Opal.cdecl($scope,"K_B",66);Opal.cdecl($scope,"K_N",78);Opal.cdecl($scope,"K_M",77);Opal.cdecl($scope,"K_COMMA",188);Opal.cdecl($scope,"K_PERIOD",190);Opal.cdecl($scope,"K_SLASH",191);Opal.cdecl($scope,"K_SPACE",32);Opal.cdecl($scope,"K_F1",112);Opal.cdecl($scope,"K_F2",113);Opal.cdecl($scope,"K_F3",114);Opal.cdecl($scope,"K_F4",115);Opal.cdecl($scope,"K_F5",116);Opal.cdecl($scope,"K_F6",117);Opal.cdecl($scope,"K_F7",118);Opal.cdecl($scope,"K_F8",119);Opal.cdecl($scope,"K_F9",120);Opal.cdecl($scope,"K_F10",121);Opal.cdecl($scope,"K_F11",122);Opal.cdecl($scope,"K_F12",123);Opal.cdecl($scope,"K_F13",124);Opal.cdecl($scope,"K_F14",125);Opal.cdecl($scope,"K_F15",126);Opal.cdecl($scope,"K_PREVTRACK",187);Opal.cdecl($scope,"K_AT",219);Opal.cdecl($scope,"K_COLON",186);Opal.cdecl($scope,"K_UNDERLINE",189);Opal.cdecl($scope,"K_UP",38);Opal.cdecl($scope,"K_LEFT",37);Opal.cdecl($scope,"K_RIGHT",39);Opal.cdecl($scope,"K_DOWN",40);Opal.cdecl($scope,"K_BACKSPACE",8);Opal.cdecl($scope,"K_UPARROW",38);Opal.cdecl($scope,"K_LEFTARROW",37);Opal.cdecl($scope,"K_RIGHTARROW",39);Opal.cdecl($scope,"K_DOWNARROW",40)})($scope.base)})($scope.base)}($scope.base)};Opal.modules["dxopal/remote_resource"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$new","$[]=","$_klass_name","$[]","$raise","$inspect","$each","$!","$_load","$to_proc","$flat_map","$values","$call","$last","$split","$name"]);return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $RemoteResource(){}var self=$RemoteResource=$klass($base,$super,"RemoteResource",$RemoteResource);var def=self.$$proto,$scope=self.$$scope,$a,$b,TMP_1,$c,TMP_2,$d,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_10,TMP_11;Opal.cvars["@@resources"]=($a=($b=$scope.get("Hash")).$new,$a.$$p=(TMP_1=function(h,k){var self=TMP_1.$$s||this;if(h==null)h=nil;if(k==null)k=nil;return h["$[]="](k,$hash2([],{}))},TMP_1.$$s=self,TMP_1.$$arity=2,TMP_1),$a).call($b);Opal.cvars["@@promises"]=($a=($c=$scope.get("Hash")).$new,$a.$$p=(TMP_2=function(h,k){var self=TMP_2.$$s||this;if(h==null)h=nil;if(k==null)k=nil;return h["$[]="](k,$hash2([],{}))},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2),$a).call($c);Opal.cvars["@@instances"]=($a=($d=$scope.get("Hash")).$new,$a.$$p=(TMP_3=function(h,k){var self=TMP_3.$$s||this;if(h==null)h=nil;if(k==null)k=nil;return h["$[]="](k,$hash2([],{}))},TMP_3.$$s=self,TMP_3.$$arity=2,TMP_3),$a).call($d);Opal.cvars["@@klasses"]=$hash2([],{});Opal.defs(self,"$add_class",TMP_4=function $$add_class(subklass){var $a,self=this;return(($a=Opal.cvars["@@klasses"])==null?nil:$a)["$[]="](subklass.$_klass_name(),subklass)},TMP_4.$$arity=1);Opal.defs(self,"$register",TMP_5=function $$register(name,$a_rest){var $b,$c,$d,self=this,args,$iter=TMP_5.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_5.$$p=null;$b=self.$_klass_name(),$c=($d=Opal.cvars["@@resources"])==null?nil:$d,($d=$c["$[]"]($b))!==false&&$d!==nil&&$d!=null?$d:$c["$[]="]($b,$hash2([],{}));return(($b=Opal.cvars["@@resources"])==null?nil:$b)["$[]"](self.$_klass_name())["$[]="](name,[block,args])},TMP_5.$$arity=-2);Opal.defs(self,"$[]",TMP_6=function(name){var $a,$b,self=this,ret=nil;if(($a=ret=(($b=Opal.cvars["@@instances"])==null?nil:$b)["$[]"](self.$_klass_name())["$[]"](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return ret}else{return self.$raise(""+self.$_klass_name()+" "+name.$inspect()+" is not registered")}},TMP_6.$$arity=1);Opal.defs(self,"$_load_resources",TMP_7=function $$_load_resources(){var $a,$b,TMP_8,$c,$d,self=this,$iter=TMP_7.$$p,block=$iter||nil,promises=nil;TMP_7.$$p=null;($a=($b=($c=Opal.cvars["@@resources"])==null?nil:$c).$each,$a.$$p=(TMP_8=function(klass_name,items){var self=TMP_8.$$s||this,$c,$d,TMP_9,klass=nil;if(klass_name==null)klass_name=nil;if(items==null)items=nil;klass=(($c=Opal.cvars["@@klasses"])==null?nil:$c)["$[]"](klass_name);return($c=($d=items).$each,$c.$$p=(TMP_9=function(name,$e){var self=TMP_9.$$s||this,$e_args,block,args,$f,$g,$h,$i,instance=nil,promise=nil;if($e==null){$e=nil}$e=Opal.to_ary($e);$e_args=Opal.slice.call($e,0,$e.length);block=$e_args.splice(0,1)[0];if(block==null){block=nil}args=$e_args.splice(0,1)[0];if(args==null){args=nil}if(name==null)name=nil;if(($f=(($g=Opal.cvars["@@promises"])==null?nil:$g)["$[]"](klass_name)["$[]"](name)["$!"]())!==nil&&$f!=null&&(!$f.$$is_boolean||$f==true)){$g=($h=($i=klass).$_load,$h.$$p=block.$to_proc(),$h).apply($i,Opal.to_a(args)),$f=Opal.to_ary($g),instance=$f[0]==null?nil:$f[0],promise=$f[1]==null?nil:$f[1],$g;(($f=Opal.cvars["@@instances"])==null?nil:$f)["$[]"](klass_name)["$[]="](name,instance);return(($f=Opal.cvars["@@promises"])==null?nil:$f)["$[]"](klass_name)["$[]="](name,promise)}else{return nil}},TMP_9.$$s=self,TMP_9.$$arity=2,TMP_9.$$has_top_level_mlhs_arg=true,TMP_9),$c).call($d)},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8),$a).call($b);promises=($a=($c=(($d=Opal.cvars["@@promises"])==null?nil:$d).$values()).$flat_map,$a.$$p="values".$to_proc(),$a).call($c);Promise.all(promises).then(function(){block.$call()})},TMP_7.$$arity=0);Opal.defs(self,"$_load",TMP_10=function $$_load($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.$raise("override me")},TMP_10.$$arity=-1);return(Opal.defs(self,"$_klass_name",TMP_11=function $$_klass_name(){var self=this;return self.$name().$split(/::/).$last()},TMP_11.$$arity=0),nil)&&"_klass_name"})($scope.base,null)}($scope.base)};Opal.modules["dxopal/image"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$range=Opal.range;Opal.add_stubs(["$require","$add_class","$new","$_resize","$box_fill","$attr_reader","$canvas","$draw_ex","$[]","$/","$width","$height","$+","$_spec_str","$_rgba","$_rgba_ary","$-","$fill","$_image_data","$_put_image_data","$flat_map","$map","$slice","$*","$length","$===","$raise","$inspect","$join"]);self.$require("dxopal/remote_resource");return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Image(){}var self=$Image=$klass($base,$super,"Image",$Image);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29;def.canvas=def.width=def.height=def.ctx=nil;$scope.get("RemoteResource").$add_class($scope.get("Image"));Opal.defs(self,"$_load",TMP_1=function $$_load(path_or_url){var self=this,raw_img=nil,img_promise=nil,img=nil;raw_img=new Image;img_promise=new Promise(function(resolve,reject){raw_img.onload=function(){resolve(raw_img)};raw_img.src=path_or_url});img=self.$new(0,0);img_promise.then(function(raw_img){img.$_resize(raw_img.width,raw_img.height);img.$_draw_raw_image(0,0,raw_img)});return[img,img_promise]},TMP_1.$$arity=1);Opal.defn(self,"$initialize",TMP_2=function $$initialize(width,height,$color,$kwargs){var $a,self=this,$post_args,canvas,color;$post_args=Opal.slice.call(arguments,2,arguments.length);$kwargs=Opal.extract_kwargs($post_args);if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}if((canvas=$kwargs.$$smap["canvas"])==null){canvas=nil}if(0<$post_args.length){color=$post_args.splice(0,1)[0]}if(color==null){color=$scope.get("C_DEFAULT")}$a=[width,height],self.width=$a[0],self.height=$a[1],$a;self.canvas=($a=canvas)!==false&&$a!==nil&&$a!=null?$a:document.createElement("canvas");self.ctx=self.canvas.getContext("2d");self.$_resize(self.width,self.height);return self.$box_fill(0,0,self.width,self.height,color)},TMP_2.$$arity=-3);self.$attr_reader("ctx","canvas","width","height");Opal.defn(self,"$_resize",TMP_3=function $$_resize(w,h){var $a,self=this;$a=[w,h],self.width=$a[0],self.height=$a[1],$a;self.canvas.width=w;self.canvas.height=h},TMP_3.$$arity=2);Opal.defn(self,"$draw",TMP_4=function $$draw(x,y,image){var self=this;self.ctx.drawImage(image.$canvas(),x,y);return self},TMP_4.$$arity=3);Opal.defn(self,"$draw_rot",TMP_5=function $$draw_rot(x,y,image,angle,center_x,center_y){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}return self.$draw_ex(x,y,image,$hash2(["angle","center_x","center_y"],{angle:angle,center_x:center_x,center_y:center_y}))},TMP_5.$$arity=-5);Opal.defn(self,"$draw_ex",TMP_6=function $$draw_ex(x,y,image,options){var $a,self=this,scale_x=nil,scale_y=nil,center_x=nil,center_y=nil,angle=nil,cx=nil,cy=nil;if(options==null){options=$hash2([],{})}scale_x=($a=options["$[]"]("scale_x"))!==false&&$a!==nil&&$a!=null?$a:1;scale_y=($a=options["$[]"]("scale_y"))!==false&&$a!==nil&&$a!=null?$a:1;center_x=($a=options["$[]"]("center_x"))!==false&&$a!==nil&&$a!=null?$a:$rb_divide(image.$width(),2);center_y=($a=options["$[]"]("center_y"))!==false&&$a!==nil&&$a!=null?$a:$rb_divide(image.$height(),2);angle=($a=options["$[]"]("angle"))!==false&&$a!==nil&&$a!=null?$a:0;cx=$rb_plus(x,center_x);cy=$rb_plus(y,center_y);self.ctx.translate(cx,cy);self.ctx.rotate(angle*Math.PI/180);self.ctx.scale(scale_x,scale_y);self.ctx.drawImage(image.$canvas(),x-cx,y-cy);self.ctx.setTransform(1,0,0,1,0,0);return self},TMP_6.$$arity=-4);Opal.defn(self,"$draw_font",TMP_7=function $$draw_font(x,y,string,font,color){var self=this,ctx=nil;if(color==null){color=[255,255,255]}ctx=self.ctx;ctx.font=font.$_spec_str();ctx.textBaseline="top";ctx.fillStyle=self.$_rgba(color);ctx.fillText(string,x,y);return self},TMP_7.$$arity=-5);Opal.defn(self,"$[]",TMP_8=function(x,y){var self=this,ctx=nil,ret=nil;ctx=self.ctx;ret=nil;var pixel=ctx.getImageData(x,y,1,1);var rgba=pixel.data;ret=[rgba[3],rgba[0],rgba[1],rgba[2]];return ret},TMP_8.$$arity=2);Opal.defn(self,"$[]=",TMP_9=function(x,y,color){var self=this;return self.$box_fill(x,y,x,y,color)},TMP_9.$$arity=3);Opal.defn(self,"$compare",TMP_10=function $$compare(x,y,color){var self=this,ctx=nil,rgba1=nil,rgba2=nil,ret=nil;ctx=self.ctx;rgba1=self.$_rgba_ary(color);rgba2=nil;ret=nil;var pixel=ctx.getImageData(x,y,1,1);rgba2=pixel.data;ret=rgba1[0]==rgba2[0]&&rgba1[1]==rgba2[1]&&rgba1[2]==rgba2[2]&&rgba1[3]==rgba2[3];return ret},TMP_10.$$arity=3);Opal.defn(self,"$line",TMP_11=function $$line(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.stroke();return self},TMP_11.$$arity=5);Opal.defn(self,"$box",TMP_12=function $$box(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.rect(x1,y1,x2-x1+1,y2-y1+1);ctx.stroke();return self},TMP_12.$$arity=5);Opal.defn(self,"$box_fill",TMP_13=function $$box_fill(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.fillRect(x1,y1,x2-x1+1,y2-y1+1);return self},TMP_13.$$arity=5);Opal.defn(self,"$circle",TMP_14=function $$circle(x,y,r,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.arc(x,y,r,0,Math.PI*2,false);ctx.stroke();return self},TMP_14.$$arity=4);Opal.defn(self,"$circle_fill",TMP_15=function $$circle_fill(x,y,r,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.arc(x,y,r,0,Math.PI*2,false);ctx.fill();return self},TMP_15.$$arity=4);Opal.defn(self,"$triangle",TMP_16=function $$triangle(x1,y1,x2,y2,x3,y3,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.lineTo(x1,y1);ctx.stroke();return self},TMP_16.$$arity=7);Opal.defn(self,"$triangle_fill",TMP_17=function $$triangle_fill(x1,y1,x2,y2,x3,y3,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.fill();return self},TMP_17.$$arity=7);Opal.defn(self,"$fill",TMP_18=function $$fill(color){var self=this;return self.$box_fill(0,0,$rb_minus(self.width,1),$rb_minus(self.height,1),color)},TMP_18.$$arity=1);Opal.defn(self,"$clear",TMP_19=function $$clear(){var self=this;return self.$fill([0,0,0,0])},TMP_19.$$arity=0);Opal.defn(self,"$slice",TMP_20=function $$slice(x,y,width,height){var self=this,newimg=nil,data=nil;newimg=$scope.get("Image").$new(width,height);data=self.$_image_data(x,y,width,height);newimg.$_put_image_data(data,0,0);return newimg},TMP_20.$$arity=4);Opal.defn(self,"$slice_tiles",TMP_23=function $$slice_tiles(xcount,ycount){var $a,$b,TMP_21,self=this,tile_w=nil,tile_h=nil;tile_w=$rb_divide(self.width,xcount);tile_h=$rb_divide(self.height,ycount);return($a=($b=$range(0,ycount,true)).$flat_map,$a.$$p=(TMP_21=function(v){var self=TMP_21.$$s||this,$c,$d,TMP_22;if(v==null)v=nil;return($c=($d=$range(0,xcount,true)).$map,$c.$$p=(TMP_22=function(u){var self=TMP_22.$$s||this;if(u==null)u=nil;return self.$slice($rb_times(tile_w,u),$rb_times(tile_h,v),tile_w,tile_h)},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22),$c).call($d)},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21),$a).call($b)},TMP_23.$$arity=2);Opal.defn(self,"$_draw_raw_image",TMP_24=function $$_draw_raw_image(x,y,raw_img){var self=this;self.ctx.drawImage(raw_img,x,y)},TMP_24.$$arity=3);Opal.defn(self,"$_image_data",TMP_25=function $$_image_data(x,y,w,h){var self=this;if(x==null){x=0}if(y==null){y=0}if(w==null){w=self.width}if(h==null){h=self.height}return self.ctx.getImageData(x,y,w,h)},TMP_25.$$arity=-1);Opal.defn(self,"$_put_image_data",TMP_26=function $$_put_image_data(image_data,x,y){var self=this;return self.ctx.putImageData(image_data,x,y)},TMP_26.$$arity=3);Opal.defn(self,"$_rgb",TMP_27=function $$_rgb(color){var self=this,$case=nil,rgb=nil;$case=color.$length();if(4["$==="]($case)){rgb=color["$[]"](1,3)}else if(3["$==="]($case)){rgb=color}else{self.$raise("invalid color: "+color.$inspect())}return $rb_plus($rb_plus("rgb(",rgb.$join(", ")),")")},TMP_27.$$arity=1);Opal.defn(self,"$_rgba",TMP_28=function $$_rgba(color){var self=this;return $rb_plus($rb_plus("rgba(",self.$_rgba_ary(color).$join(", ")),")")},TMP_28.$$arity=1);return(Opal.defn(self,"$_rgba_ary",TMP_29=function $$_rgba_ary(color){var self=this,$case=nil;return function(){$case=color.$length();if(4["$==="]($case)){return $rb_plus(color["$[]"](1,3),[$rb_divide(color["$[]"](0),255)])}else if(3["$==="]($case)){return $rb_plus(color,[1])}else{return self.$raise("invalid color: "+color.$inspect())}}()},TMP_29.$$arity=1),nil)&&"_rgba_ary"})($scope.base,$scope.get("RemoteResource"))}($scope.base)};Opal.modules["dxopal/sound"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$add_class","$new","$audio_context","$attr_accessor","$raise","$path_or_url"]);self.$require("dxopal/remote_resource");return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Sound(){}var self=$Sound=$klass($base,$super,"Sound",$Sound);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4;def.decoded=nil;$scope.get("RemoteResource").$add_class($scope.get("Sound"));Opal.defs(self,"$audio_context",TMP_1=function $$audio_context(){var $a,$b,self=this;return($a=($b=Opal.cvars["@@audio_context"])==null?nil:$b)!==false&&$a!==nil&&$a!=null?$a:Opal.cvars["@@audio_context"]=new(window.AudioContext||window.webkitAudioContext)},TMP_1.$$arity=0);Opal.defs(self,"$_load",TMP_2=function $$_load(path_or_url){var self=this,snd=nil,snd_promise=nil;snd=self.$new(path_or_url);snd_promise=new Promise(function(resolve,reject){var request=new XMLHttpRequest;request.open("GET",path_or_url,true);request.responseType="arraybuffer";request.onload=function(){var audioData=request.response;var context=$scope.get("Sound").$audio_context();context.decodeAudioData(audioData,function(decoded){snd["$decoded="](decoded);resolve()})};request.send()});return[snd,snd_promise]},TMP_2.$$arity=1);Opal.defn(self,"$initialize",TMP_3=function $$initialize(path_or_url){var self=this;return self.path_or_url=path_or_url},TMP_3.$$arity=1);self.$attr_accessor("decoded");return(Opal.defn(self,"$play",TMP_4=function $$play(){var $a,self=this;if(($a=self.decoded)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise("Sound "+self.$path_or_url()+" is not loaded yet")}var context=$scope.get("Sound").$audio_context();var source=context.createBufferSource();source.buffer=self.decoded;source.connect(context.destination);source.start(0)},TMP_4.$$arity=0),nil)&&"play"})($scope.base,$scope.get("RemoteResource"))}($scope.base)};Opal.modules["dxopal/sound_effect"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$add_class","$new","$audio_context","$/","$call","$raise","$+","$inspect"]);return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $SoundEffect(){}var self=$SoundEffect=$klass($base,$super,"SoundEffect",$SoundEffect);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2;$scope.get("RemoteResource").$add_class($scope.get("SoundEffect"));(function($base){var $WaveTypes,self=$WaveTypes=$module($base,"WaveTypes");var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"WAVE_SIN","sine");Opal.cdecl($scope,"WAVE_SAW","sawtooth");Opal.cdecl($scope,"WAVE_TRI","triangle");Opal.cdecl($scope,"WAVE_RECT","square")})($scope.base);Opal.defs(self,"$_load",TMP_1=function $$_load(time,wave_type,resolution){var self=this,$iter=TMP_1.$$p,block=$iter||nil,snd=nil,snd_promise=nil;if(wave_type==null){wave_type=$scope.get("WAVE_RECT")}if(resolution==null){resolution=1e3}TMP_1.$$p=null;snd=self.$new("(soundeffect)");snd_promise=new Promise(function(resolve,reject){var n_channels=1;var context=$scope.get("Sound").$audio_context();var n_ticks=time;var totalSeconds=$rb_divide(time,resolution);var valuesPerSecond=context.sampleRate;var n_values=totalSeconds*valuesPerSecond;var myArrayBuffer=context.createBuffer(n_channels,n_values,valuesPerSecond);var values=myArrayBuffer.getChannelData(0);var n=0;for(var i=0;i<n_ticks;i++){var ret=block.$call();var freq=ret[0],volume=ret[1];if(freq<0)freq=0;if(freq>44100)freq=44100;if(volume<0)volume=0;if(volume>255)volume=255;var vol=volume/255;var period=valuesPerSecond*1/freq;for(;n<(i+1)/n_ticks*n_values;n++){var phase=n%period/period;var value;switch(wave_type){case"sine":value=Math.sin(2*Math.PI*phase)*2-1;break;case"sawtooth":value=phase*2-1;break;case"triangle":value=phase<.25?0+phase*4:phase<.5?1-(phase-.25)*4:phase<.75?0-(phase-.5)*4:-1+(phase-.75)*4;break;case"square":value=phase<.5?1:-1;break;default:self.$raise($rb_plus("unknown wave_type: ",wave_type.$inspect()))}values[n]=value*vol}}snd["$decoded="](myArrayBuffer);resolve()});return[snd,snd_promise]},TMP_1.$$arity=-2);return(Opal.defn(self,"$add",TMP_2=function $$add(wave_type,resolution){var self=this;if(wave_type==null){wave_type=$scope.get("WAVE_RECT")}if(resolution==null){resolution=1e3}return nil},TMP_2.$$arity=-1),nil)&&"add"})($scope.base,$scope.get("Sound"))}($scope.base)};Opal.modules["dxopal/sprite/collision_checker"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;(function(){var intersect=function(x1,y1,x2,y2,x3,y3,x4,y4){return((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))};var check_line_line=function(x1,y1,x2,y2,x3,y3,x4,y4){return!(((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))>0||((x3-x4)*(y1-y3)+(y3-y4)*(x3-x1))*((x3-x4)*(y2-y3)+(y3-y4)*(x3-x2))>0)};var check_circle_line=function(x,y,r,x1,y1,x2,y2){var vx=x2-x1,vy=y2-y1;var cx=x-x1,cy=y-y1;if(vx==0&&vy==0)return CCk.check_point_circle(x,y,r,x1,y1);var n1=vx*cx+vy*cy;if(n1<0)return cx*cx+cy*cy<r*r;var n2=vx*vx+vy*vy;if(n1>n2){var len=(x2-x)*(x2-x)+(y2-y)*(y2-y);return len<r*r}else{var n3=cx*cx+cy*cy;return n3-n1/n2*n1<r*r}};var CCk={check_point_circle:function(px,py,cx,cy,cr){return cr*cr>=(cx-px)*(cx-px)+(cy-py)*(cy-py)},check_point_straight_rect:function(x,y,x1,y1,x2,y2){return x>=x1&&y>=y1&&x<x2&&y<y2},check_point_triangle:function(x,y,x1,y1,x2,y2,x3,y3){if((x1-x3)*(y1-y2)==(x1-x2)*(y1-y3))return false;var cx=(x1+x2+x3)/3,cy=(y1+y2+y3)/3;if(intersect(x1,y1,x2,y2,x,y,cx,cy)<0||intersect(x2,y2,x3,y3,x,y,cx,cy)<0||intersect(x3,y3,x1,y1,x,y,cx,cy)<0){return false}return true},check_circle_circle:function(ox,oy,or,dx,dy,dr){return(or+dr)*(or+dr)>=(ox-dx)*(ox-dx)+(oy-dy)*(oy-dy)},check_ellipse_ellipse:function(E1,E2){var DefAng=E1.fAngle-E2.fAngle;var Cos=Math.cos(DefAng);var Sin=Math.sin(DefAng);var nx=E2.fRad_X*Cos;var ny=-E2.fRad_X*Sin;var px=E2.fRad_Y*Sin;var py=E2.fRad_Y*Cos;var ox=Math.cos(E1.fAngle)*(E2.fCx-E1.fCx)+Math.sin(E1.fAngle)*(E2.fCy-E1.fCy);var oy=-Math.sin(E1.fAngle)*(E2.fCx-E1.fCx)+Math.cos(E1.fAngle)*(E2.fCy-E1.fCy);var rx_pow2=1/(E1.fRad_X*E1.fRad_X);var ry_pow2=1/(E1.fRad_Y*E1.fRad_Y);var A=rx_pow2*nx*nx+ry_pow2*ny*ny;var B=rx_pow2*px*px+ry_pow2*py*py;var D=2*rx_pow2*nx*px+2*ry_pow2*ny*py;var E=2*rx_pow2*nx*ox+2*ry_pow2*ny*oy;var F=2*rx_pow2*px*ox+2*ry_pow2*py*oy;var G=ox/E1.fRad_X*(ox/E1.fRad_X)+oy/E1.fRad_Y*(oy/E1.fRad_Y)-1;var tmp1=1/(D*D-4*A*B);var h=(F*D-2*E*B)*tmp1;var k=(E*D-2*A*F)*tmp1;var Th=B-A==0?0:Math.atan(D/(B-A))*.5;var CosTh=Math.cos(Th);var SinTh=Math.sin(Th);var A_tt=A*CosTh*CosTh+B*SinTh*SinTh-D*CosTh*SinTh;var B_tt=A*SinTh*SinTh+B*CosTh*CosTh+D*CosTh*SinTh;var KK=A*h*h+B*k*k+D*h*k-E*h-F*k+G>0?0:A*h*h+B*k*k+D*h*k-E*h-F*k+G;var Rx_tt=1+Math.sqrt(-KK/A_tt);var Ry_tt=1+Math.sqrt(-KK/B_tt);var x_tt=CosTh*h-SinTh*k;var y_tt=SinTh*h+CosTh*k;var JudgeValue=x_tt*x_tt/(Rx_tt*Rx_tt)+y_tt*y_tt/(Ry_tt*Ry_tt);return JudgeValue<=1},check_circle_tilted_rect:function(cx,cy,cr,x1,y1,x2,y2,x3,y3,x4,y4){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||CCk.check_point_triangle(cx,cy,x1,y1,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x4,y4,x1,y1)},check_circle_triangle:function(cx,cy,cr,x1,y1,x2,y2,x3,y3){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x1,y1)},check_rect_rect:function(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2){return ax1<bx2&&ay1<by2&&bx1<ax2&&by1<ay2},check_tilted_rect_triangle:function(ox1,oy1,ox2,oy2,ox3,oy3,ox4,oy4,dx1,dy1,dx2,dy2,dx3,dy3){return check_line_line(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2)||check_line_line(ox1,oy1,ox2,oy2,dx2,dy2,dx3,dy3)||check_line_line(ox1,oy1,ox2,oy2,dx3,dy3,dx1,dy1)||check_line_line(ox2,oy2,ox3,oy3,dx1,dy1,dx2,dy2)||check_line_line(ox2,oy2,ox3,oy3,dx2,dy2,dx3,dy3)||check_line_line(ox2,oy2,ox3,oy3,dx3,dy3,dx1,dy1)||check_line_line(ox3,oy3,ox4,oy4,dx1,dy1,dx2,dy2)||check_line_line(ox3,oy3,ox4,oy4,dx2,dy2,dx3,dy3)||check_line_line(ox3,oy3,ox4,oy4,dx3,dy3,dx1,dy1)||check_line_line(ox4,oy4,ox1,oy1,dx1,dy1,dx2,dy2)||check_line_line(ox4,oy4,ox1,oy1,dx2,dy2,dx3,dy3)||check_line_line(ox4,oy4,ox1,oy1,dx3,dy3,dx1,dy1)||CCk.check_point_triangle(dx1,dy1,ox1,oy1,ox2,oy2,ox3,oy3)||CCk.check_point_triangle(dx1,dy1,ox1,oy1,ox3,oy3,ox4,oy4)||CCk.check_point_triangle(ox1,oy1,dx1,dy1,dx2,dy2,dx3,dy3)},check_triangle_triangle:function(ox1,oy1,ox2,oy2,ox3,oy3,dx1,dy1,dx2,dy2,dx3,dy3){return check_line_line(ox1,oy1,ox2,oy2,dx2,dy2,dx3,dy3)||check_line_line(ox1,oy1,ox2,oy2,dx3,dy3,dx1,dy1)||check_line_line(ox2,oy2,ox3,oy3,dx1,dy1,dx2,dy2)||check_line_line(ox2,oy2,ox3,oy3,dx3,dy3,dx1,dy1)||check_line_line(ox3,oy3,ox1,oy1,dx1,dy1,dx2,dy2)||check_line_line(ox3,oy3,ox1,oy1,dx2,dy2,dx3,dy3)||CCk.check_point_triangle(ox1,oy1,dx1,dy1,dx2,dy2,dx3,dy3)||CCk.check_point_triangle(dx1,dy1,ox1,oy1,ox2,oy2,ox3,oy3)}};Opal.DXOpal.CollisionChecker=CCk;Opal.DXOpal.CCk=CCk})()};Opal.modules["dxopal/sprite/collision_area"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$attr_reader","$raise","$x","$y","$!","$collision_sync","$map","$+","$angle","$center_x","$center_y","$scale_x","$scale_y","$first","$absolute","$transback","$-@","$type","$===","$==","$absolute_pos","$transback1","$sprite","$absolute_norot_pos","$r","$absolute_norot_poss","$absolute_poss","$absolute1","$collides?","$collides_circle?","$private","$circle?","$/","$*","$aabb"]);self.$require("dxopal/sprite/collision_checker");return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$scope=self.$$scope;return function($base){var $CollisionArea,self=$CollisionArea=$module($base,"CollisionArea");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Base(){}var self=$Base=$klass($base,$super,"Base",$Base);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7;def.sprite=nil;self.$attr_reader("sprite");Opal.defn(self,"$type",TMP_1=function $$type(){var self=this;return self.$raise("override me")},TMP_1.$$arity=0);Opal.defn(self,"$absolute",TMP_3=function $$absolute(poss){var $a,$b,TMP_2,self=this,ox=nil,oy=nil,angle=nil,cx=nil,cy=nil,sx=nil,sy=nil,ret=nil;ox=self.sprite.$x();oy=self.sprite.$y();if(($a=self.sprite.$collision_sync()["$!"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=poss).$map,$a.$$p=(TMP_2=function($c){var self=TMP_2.$$s||this,$c_args,x,y;if($c==null){$c=nil}$c=Opal.to_ary($c);$c_args=Opal.slice.call($c,0,$c.length);x=$c_args.splice(0,1)[0];if(x==null){x=nil}y=$c_args.splice(0,1)[0];if(y==null){y=nil}return[$rb_plus(x,ox),$rb_plus(y,oy)]},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2.$$has_top_level_mlhs_arg=true,TMP_2),$a).call($b)}angle=self.sprite.$angle();cx=self.sprite.$center_x();cy=self.sprite.$center_y();sx=self.sprite.$scale_x();sy=self.sprite.$scale_y();ret=[];var rad=Math.PI/180*angle;var sin=Math.sin(rad);var cos=Math.cos(rad);poss.forEach(function(pos){var x=pos[0],y=pos[1];x2=(x-cx)*sx*cos-(y-cy)*sy*sin+cx+ox;y2=(x-cx)*sx*sin+(y-cy)*sy*cos+cy+oy;ret.push([x2,y2])});return ret},TMP_3.$$arity=1);Opal.defn(self,"$absolute1",TMP_4=function $$absolute1(pos){var self=this;return self.$absolute([pos]).$first()},TMP_4.$$arity=1);Opal.defn(self,"$transback",TMP_5=function $$transback(poss,sprite){var $a,self=this,angle=nil,cx=nil,cy=nil,sx=nil,sy=nil,ret=nil;if(($a=sprite.$collision_sync()["$!"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return poss}angle=sprite.$angle();cx=$rb_plus(sprite.$x(),sprite.$center_x());cy=$rb_plus(sprite.$y(),sprite.$center_y());sx=sprite.$scale_x();sy=sprite.$scale_y();ret=[];var rad=Math.PI/180*-angle;var sin=Math.sin(rad);var cos=Math.cos(rad);poss.forEach(function(pos){var x=pos[0],y=pos[1];x2=((x-cx)*cos-(y-cy)*sin)/sx+cx;y2=((x-cx)*sin+(y-cy)*cos)/sy+cy;ret.push([x2,y2])});return ret},TMP_5.$$arity=2);Opal.defn(self,"$transback1",TMP_6=function $$transback1(pos,sprite){var self=this;return self.$transback([pos],sprite).$first()},TMP_6.$$arity=2);return(Opal.defn(self,"$aabb",TMP_7=function $$aabb(poss){var self=this,x1=nil,y1=nil,x2=nil,y2=nil;x1=y1=$scope.get("Float").$$scope.get("INFINITY");x2=y2=$scope.get("Float").$$scope.get("INFINITY")["$-@"]();for(var i=0;i<poss.length;i++){if(poss[i][0]<x1)x1=poss[i][0];if(poss[i][1]<y1)y1=poss[i][1];if(poss[i][0]>x2)x2=poss[i][0];if(poss[i][1]>y2)y2=poss[i][1]}return[[x1,y1],[x2,y2]]},TMP_7.$$arity=1),nil)&&"aabb"})($scope.base,null);(function($base,$super){function $Point(){}var self=$Point=$klass($base,$super,"Point",$Point);var def=self.$$proto,$scope=self.$$scope,TMP_8,TMP_9,TMP_10,TMP_11;def.x=def.y=nil;Opal.defn(self,"$initialize",TMP_8=function $$initialize(sprite,x,y){var $a,$b,self=this,$iter=TMP_8.$$p,$yield=$iter||nil;TMP_8.$$p=null;$a=[sprite,x,y],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],$a;return($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_8,false)),$a.$$p=null,$a).call($b)},TMP_8.$$arity=3);Opal.defn(self,"$type",TMP_9=function $$type(){var self=this;return"Point"},TMP_9.$$arity=0);Opal.defn(self,"$collides?",TMP_10=function(other){var $a,$b,self=this,$case=nil,x=nil,y=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return self.$absolute_pos()["$=="](other.$absolute_pos())}else if("Circle"["$==="]($case)){$a=Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite())),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=Opal.to_a(other.$absolute_norot_pos()),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;return Opal.DXOpal.CCk.check_point_circle(x,y,cx,cy,other.$r())}else if("Rect"["$==="]($case)){$a=Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite())),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=Opal.to_a(other.$absolute_norot_poss()),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_straight_rect(x,y,x1,y1,x2,y2)}else if("Triangle"["$==="]($case)){$a=Opal.to_a(self.$absolute_pos()),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=Opal.to_a(other.$absolute_poss()),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_triangle(x,y,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},TMP_10.$$arity=1);return(Opal.defn(self,"$absolute_pos",TMP_11=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},TMP_11.$$arity=0),nil)&&"absolute_pos"})($scope.base,$scope.get("Base"));(function($base,$super){function $Circle(){}var self=$Circle=$klass($base,$super,"Circle",$Circle);var def=self.$$proto,$scope=self.$$scope,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18;def.sprite=def.r=def.x=def.y=nil;Opal.defn(self,"$initialize",TMP_12=function $$initialize(sprite,x,y,r){var $a,$b,self=this,$iter=TMP_12.$$p,$yield=$iter||nil;TMP_12.$$p=null;$a=[sprite,x,y,r],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],self.r=$a[3],$a;return($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_12,false)),$a.$$p=null,$a).call($b)},TMP_12.$$arity=4);self.$attr_reader("r");Opal.defn(self,"$type",TMP_13=function $$type(){var self=this;return"Circle"},TMP_13.$$arity=0);Opal.defn(self,"$circle?",TMP_14=function(){var self=this;return self.sprite.$scale_x()["$=="](self.sprite.$scale_y())},TMP_14.$$arity=0);Opal.defn(self,"$collides?",TMP_15=function(other){var $a,$b,self=this,$case=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil,x4=nil,y4=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return other["$collides?"](self)}else if("Circle"["$==="]($case)){return self["$collides_circle?"](other)}else if("Rect"["$==="]($case)){$a=Opal.to_a(self.$absolute_norot_pos()),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite)),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),x4=$b[0]==null?nil:$b[0],y4=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_tilted_rect(cx,cy,self.r,x1,y1,x2,y2,x3,y3,x4,y4)}else if("Triangle"["$==="]($case)){$a=Opal.to_a(self.$absolute_norot_pos()),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite)),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_triangle(cx,cy,self.r,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},TMP_15.$$arity=1);Opal.defn(self,"$absolute_pos",TMP_16=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},TMP_16.$$arity=0);Opal.defn(self,"$absolute_norot_pos",TMP_17=function $$absolute_norot_pos(){var self=this;return[$rb_plus(self.x,self.sprite.$x()),$rb_plus(self.y,self.sprite.$y())]},TMP_17.$$arity=0);self.$private();return(Opal.defn(self,"$collides_circle?",TMP_18=function(other){var $a,$b,self=this,x1=nil,y1=nil,r1=nil,x2=nil,y2=nil,r2=nil,scale_x1=nil,scale_y1=nil,angle1=nil,scale_x2=nil,scale_y2=nil,angle2=nil,ret=nil;$a=Opal.to_a(self.$absolute_pos()),x1=$a[0]==null?nil:$a[0],y1=$a[1]==null?nil:$a[1],$a;r1=self.r;$a=Opal.to_a(other.$absolute_pos()),x2=$a[0]==null?nil:$a[0],y2=$a[1]==null?nil:$a[1],$a;r2=other.$r();if(($a=($b=self["$circle?"](),$b!==false&&$b!==nil&&$b!=null?other["$circle?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return Opal.DXOpal.CCk.check_circle_circle(x1,y1,self.r,x2,y2,other.$r())}else{if(($a=self.sprite.$collision_sync())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){scale_x1=self.sprite.$scale_x();scale_y1=self.sprite.$scale_y();angle1=$rb_divide($rb_times(self.sprite.$angle(),$scope.get("Math").$$scope.get("PI")),180)}else{scale_x1=1;scale_y1=1;angle1=0}if(($a=other.$sprite().$collision_sync())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){scale_x2=other.$sprite().$scale_x();scale_y2=other.$sprite().$scale_y();angle2=$rb_divide($rb_times(other.$sprite().$angle(),$scope.get("Math").$$scope.get("PI")),180)}else{scale_x2=1;scale_y2=1;angle2=0}ret=nil;var e1={fRad_X:scale_x1*r1,fRad_Y:scale_y1*r1,fAngle:angle1,fCx:x1,fCy:y1};var e2={fRad_X:scale_x2*r2,fRad_Y:scale_y2*r2,fAngle:angle2,fCx:x2,fCy:y2};ret=Opal.DXOpal.CCk.check_ellipse_ellipse(e1,e2);return ret}},TMP_18.$$arity=1),nil)&&"collides_circle?"})($scope.base,$scope.get("Base"));(function($base,$super){function $Rect(){}var self=$Rect=$klass($base,$super,"Rect",$Rect);var def=self.$$proto,$scope=self.$$scope,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24;def.x1=def.y1=def.x2=def.y2=def.sprite=def.poss=nil;Opal.defn(self,"$initialize",TMP_19=function $$initialize(sprite,x1,y1,x2,y2){var $a,$b,self=this,$iter=TMP_19.$$p,$yield=$iter||nil;TMP_19.$$p=null;$a=[sprite,x1,y1,x2,y2],self.sprite=$a[0],self.x1=$a[1],self.y1=$a[2],self.x2=$a[3],self.y2=$a[4],$a;self.poss=[[x1,y1],[x2,y1],[x2,y2],[x1,y2]];return($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_19,false)),$a.$$p=null,$a).call($b)},TMP_19.$$arity=5);Opal.defn(self,"$type",TMP_20=function $$type(){var self=this;return"Rect"},TMP_20.$$arity=0);Opal.defn(self,"$inspect",TMP_21=function $$inspect(){var self=this;return"#<CollisionArea::Rect("+self.x1+", "+self.y1+", "+self.x2+", "+self.y2+")>"},TMP_21.$$arity=0);Opal.defn(self,"$collides?",TMP_22=function(other){var $a,$b,$c,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,ox3=nil,oy3=nil,ox4=nil,oy4=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)){return other["$collides?"](self)}else if("Rect"["$==="]($case)){$b=self.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(other.$absolute_poss(),self.sprite)),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if(($a=Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return false}$b=other.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(self.$absolute_poss(),other.$sprite())),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if(($a=Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return false}return true}else if("Triangle"["$==="]($case)){$a=Opal.to_a(self.$absolute_poss()),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),ox4=$b[0]==null?nil:$b[0],oy4=$b[1]==null?nil:$b[1],$a;$a=Opal.to_a(other.$absolute_poss()),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_tilted_rect_triangle(ox1,oy1,ox2,oy2,ox3,oy3,ox4,oy4,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},TMP_22.$$arity=1);Opal.defn(self,"$absolute_poss",TMP_23=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},TMP_23.$$arity=0);return(Opal.defn(self,"$absolute_norot_poss",TMP_24=function $$absolute_norot_poss(){var self=this;return[[$rb_plus(self.x1,self.sprite.$x()),$rb_plus(self.y1,self.sprite.$y())],[$rb_plus(self.x2,self.sprite.$x()),$rb_plus(self.y2,self.sprite.$y())]]},TMP_24.$$arity=0),nil)&&"absolute_norot_poss"})($scope.base,$scope.get("Base"));(function($base,$super){function $Triangle(){}var self=$Triangle=$klass($base,$super,"Triangle",$Triangle);var def=self.$$proto,$scope=self.$$scope,TMP_25,TMP_26,TMP_27,TMP_28;def.poss=nil;Opal.defn(self,"$initialize",TMP_25=function $$initialize(sprite,x1,y1,x2,y2,x3,y3){var $a,$b,self=this,$iter=TMP_25.$$p,$yield=$iter||nil;TMP_25.$$p=null;self.sprite=sprite;self.poss=[[x1,y1],[x2,y2],[x3,y3]];return($a=($b=self,Opal.find_super_dispatcher(self,"initialize",TMP_25,false)),$a.$$p=null,$a).call($b)},TMP_25.$$arity=7);Opal.defn(self,"$type",TMP_26=function $$type(){var self=this;return"Triangle"},TMP_26.$$arity=0);Opal.defn(self,"$collides?",TMP_27=function(other){var $a,$b,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,ox3=nil,oy3=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)||"Rect"["$==="]($case)){return other["$collides?"](self)}else if("Triangle"["$==="]($case)){$a=Opal.to_a(self.$absolute_poss()),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$a;$a=Opal.to_a(other.$absolute_poss()),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_triangle_triangle(ox1,oy1,ox2,oy2,ox3,oy3,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},TMP_27.$$arity=1);return(Opal.defn(self,"$absolute_poss",TMP_28=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},TMP_28.$$arity=0),nil)&&"absolute_poss"})($scope.base,$scope.get("Base"))}($scope.base)})($scope.base,null)}($scope.base)};Opal.modules["dxopal/sprite/collision_check"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$equal?","$select","$is_a?","$length","$nil?","$new","$width","$height","$attr_accessor","$attr_reader","$===","$raise","$inspect","$x","$any?","$check","$Array","$_collides?","$_collision_area","$!","$_collidable?","$collides?"]);self.$require("dxopal/sprite/collision_area");return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$scope=self.$$scope;return function($base){var $CollisionCheck,self=$CollisionCheck=$module($base,"CollisionCheck");var def=self.$$proto,$scope=self.$$scope,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_9,TMP_10,TMP_11;(function($base){var $ClassMethods,self=$ClassMethods=$module($base,"ClassMethods");var def=self.$$proto,$scope=self.$$scope,TMP_2;Opal.defn(self,"$check",TMP_2=function $$check(offences,defences,shot,hit){var $a,$b,TMP_1,self=this,sprites=nil,n=nil;if(shot==null){shot="shot"}if(hit==null){hit="hit"}if(($a=offences["$equal?"](defences))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sprites=($a=($b=offences).$select,$a.$$p=(TMP_1=function(x){var self=TMP_1.$$s||this;if(x==null)x=nil;return x["$is_a?"]($scope.get("Sprite"))},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b);n=sprites.$length();for(var i=0;i<n;i++){for(var j=i+1;j<n;j++){if(sprites[i]["$==="](sprites[j])){sprites[i]["$hit"]();sprites[j]["$hit"]()}}}}else{for(var i=0;i<offences.length;i++){for(var j=0;j<defences.length;j++){if(offences[i]["$==="](defences[j])){offences[i]["$shot"](defences[j]);defences[j]["$hit"](offences[i])}}}}},TMP_2.$$arity=-3)})($scope.base);Opal.defn(self,"$shot",TMP_3=function $$shot(other){var self=this;return nil},TMP_3.$$arity=1);Opal.defn(self,"$hit",TMP_4=function $$hit(other){var self=this;return nil},TMP_4.$$arity=1);Opal.defn(self,"$_init_collision_info",TMP_5=function $$_init_collision_info(image){var $a,self=this;if(self.collision==null)self.collision=nil;if(self.collision_enable==null)self.collision_enable=nil;if(self.collision_sync==null)self.collision_sync=nil;if(self._collision_area==null)self._collision_area=nil;($a=self.collision)!==false&&$a!==nil&&$a!=null?$a:self.collision=nil;if(($a=self.collision_enable["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.collision_enable=true}if(($a=self.collision_sync["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.collision_sync=true}return($a=self._collision_area)!==false&&$a!==nil&&$a!=null?$a:self._collision_area=function(){if(image!==false&&image!==nil&&image!=null){return $scope.get("CollisionArea").$$scope.get("Rect").$new(self,0,0,image.$width(),image.$height())}else{return nil}return nil}()},TMP_5.$$arity=1);self.$attr_accessor("collision_enable");self.$attr_accessor("collision_sync");self.$attr_reader("collision");self.$attr_reader("_collision_area");Opal.defn(self,"$collision=",TMP_6=function(area_spec){var $a,$b,$c,$d,self=this,$case=nil;self._collision_area=function(){$case=area_spec.$length();if(2["$==="]($case)){return($a=$scope.get("CollisionArea").$$scope.get("Point")).$new.apply($a,[self].concat(Opal.to_a(area_spec)))}else if(3["$==="]($case)){return($b=$scope.get("CollisionArea").$$scope.get("Circle")).$new.apply($b,[self].concat(Opal.to_a(area_spec)))}else if(4["$==="]($case)){return($c=$scope.get("CollisionArea").$$scope.get("Rect")).$new.apply($c,[self].concat(Opal.to_a(area_spec)))}else if(6["$==="]($case)){return($d=$scope.get("CollisionArea").$$scope.get("Triangle")).$new.apply($d,[self].concat(Opal.to_a(area_spec)))}else{return self.$raise("Inlivad area data: "+self.$x().$inspect())}}();return self.collision=area_spec},TMP_6.$$arity=1);Opal.defn(self,"$===",TMP_7=function(sprite_or_sprites){var self=this;return self.$check(sprite_or_sprites)["$any?"]()},TMP_7.$$arity=1);Opal.defn(self,"$check",TMP_9=function $$check(sprite_or_sprites){var $a,$b,TMP_8,self=this,sprites=nil;sprites=self.$Array(sprite_or_sprites);return($a=($b=sprites).$select,$a.$$p=(TMP_8=function(sprite){var self=TMP_8.$$s||this;if(sprite==null)sprite=nil;return self["$_collides?"](sprite)},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8),$a).call($b)},TMP_9.$$arity=1);Opal.defn(self,"$_collides?",TMP_10=function(sprite){var $a,$b,self=this;if(self._collision_area==null)self._collision_area=nil;if(($a=($b=self._collision_area["$nil?"]())!==false&&$b!==nil&&$b!=null?$b:sprite.$_collision_area()["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise("Sprite image not set")}if(($a=($b=self["$_collidable?"]()["$!"]())!==false&&$b!==nil&&$b!=null?$b:sprite["$_collidable?"]()["$!"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return false}return self._collision_area["$collides?"](sprite.$_collision_area())},TMP_10.$$arity=1);Opal.defn(self,"$_collidable?",TMP_11=function(){var $a,self=this;if(self.vanished==null)self.vanished=nil;if(self.collision_enable==null)self.collision_enable=nil;return $a=self.vanished["$!"](),$a!==false&&$a!==nil&&$a!=null?self.collision_enable:$a},TMP_11.$$arity=0)}($scope.base)})($scope.base,null)}($scope.base)};Opal.modules["dxopal/sprite/physics"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$nil?","$x","$raise","$[]","$===","$+","$/","$y","$*","$angle","$inspect","$_add_matter_body","$attr_reader","$-","$[]=","$_matter_sprites","$_matter_engine","$_matter_runner","$type"]);return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$scope=self.$$scope,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9;(function($base){var $Physics,self=$Physics=$module($base,"Physics");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3;Opal.defn(self,"$physical_body=",TMP_1=function(ary){var $a,self=this,type=nil,$case=nil,_=nil,width=nil,height=nil,opts=nil,x=nil,y=nil,info=nil;if(self._matter_body==null)self._matter_body=nil;if(($a=self.$x()["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise("Call Sprite#initialize before calling physical_body=")}type=ary["$[]"](0);$case=type;if("rectangle"["$==="]($case)){$a=Opal.to_a(ary),_=$a[0]==null?nil:$a[0],width=$a[1]==null?nil:$a[1],height=$a[2]==null?nil:$a[2],opts=$a[3]==null?nil:$a[3],$a;x=$rb_plus(self.$x(),$rb_divide(width,2));y=$rb_plus(self.$y(),$rb_divide(height,2));info=[width,height];opts.angle=opts.angle||$rb_divide($rb_times(self.$angle(),$scope.get("Math").$$scope.get("PI")),180);self._matter_body=Matter.Bodies[type](x,y,width,height,opts)}else{self.$raise("type "+type.$inspect()+" is unknown or not supported yet")}return $scope.get("Sprite").$_add_matter_body(self._matter_body,type,self,info)},TMP_1.$$arity=1);self.$attr_reader("_matter_body");Opal.defn(self,"$_move_matter_body",TMP_2=function $$_move_matter_body(){var self=this;if(self._matter_body==null)self._matter_body=nil;if(self.x==null)self.x=nil;if(self.center_x==null)self.center_x=nil;if(self.y==null)self.y=nil;if(self.center_y==null)self.center_y=nil;return Matter.Body.setPosition(self._matter_body,Matter.Vector.create($rb_plus(self.x,self.center_x),$rb_plus(self.y,self.center_y)))},TMP_2.$$arity=0);Opal.defn(self,"$_move_to_matter_body",TMP_3=function $$_move_to_matter_body(mx,my){var self=this;if(self.center_x==null)self.center_x=nil;if(self.center_y==null)self.center_y=nil;self.x=$rb_minus(mx,self.center_x);return self.y=$rb_minus(my,self.center_y)},TMP_3.$$arity=2)})($scope.base);Opal.defs(self,"$_matter_engine",TMP_4=function $$_matter_engine(){var $a,self=this;if(self.matter_engine==null)self.matter_engine=nil;return($a=self.matter_engine)!==false&&$a!==nil&&$a!=null?$a:self.matter_engine=Matter.Engine.create()},TMP_4.$$arity=0);Opal.defs(self,"$_matter_runner",TMP_5=function $$_matter_runner(){var $a,self=this;if(self.matter_runner==null)self.matter_runner=nil;return($a=self.matter_runner)!==false&&$a!==nil&&$a!=null?$a:self.matter_runner=Matter.Runner.create()},TMP_5.$$arity=0);Opal.defs(self,"$_matter_sprites",TMP_6=function $$_matter_sprites(){var $a,self=this;if(self.matter_bodies==null)self.matter_bodies=nil;return($a=self.matter_bodies)!==false&&$a!==nil&&$a!=null?$a:self.matter_bodies=$hash2([],{})},TMP_6.$$arity=0);Opal.defs(self,"$_add_matter_body",TMP_7=function $$_add_matter_body(body,type,sprite,info){var self=this;self.$_matter_sprites()["$[]="](body.id,[type,sprite,info]);return Matter.World.addBody($scope.get("Sprite").$_matter_engine().world,body)},TMP_7.$$arity=4);Opal.defs(self,"$matter_enabled?",TMP_8=function(){var self=this;if(self.matter_engine==null)self.matter_engine=nil;return!!self.matter_engine},TMP_8.$$arity=0);return(Opal.defs(self,"$matter_tick",TMP_9=function $$matter_tick(time){var self=this;Matter.Runner.tick($scope.get("Sprite").$_matter_runner(),$scope.get("Sprite").$_matter_engine(),time);Matter.Composite.allBodies($scope.get("Sprite").$_matter_engine().world).forEach(body=>{var[type,sprite,info]=$scope.get("Sprite").$_matter_sprites()["$[]"](body.id);switch(type){case"rectangle":var[width,height]=info;sprite["$_move_to_matter_body"](body.position.x,body.position.y);sprite["$angle="](body.angle/Math.PI*180);break;default:`self.$raise("unknown type: " + (self.$type()))`}})},TMP_9.$$arity=1),nil)&&"matter_tick"})($scope.base,null)}($scope.base)};Opal.modules["dxopal/sprite"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$require","$extend","$include","$each","$!","$respond_to?","$vanished?","$update","$reject!","$nil?","$draw","$sort_by","$to_proc","$flatten","$/","$width","$height","$_init_collision_info","$attr_accessor","$attr_reader","$_move_matter_body","$collision=","$-","$raise","$draw_ex"]);self.$require("dxopal/sprite/collision_check");self.$require("dxopal/sprite/physics");return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_4,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14;def.image=def._matter_body=def.collision=def.center_x=def.vanished=def.visible=def.x=def.y=def.scale_x=def.scale_y=def.angle=def.center_y=nil;self.$extend($scope.get("DXOpal").$$scope.get("Sprite").$$scope.get("CollisionCheck").$$scope.get("ClassMethods"));self.$include($scope.get("DXOpal").$$scope.get("Sprite").$$scope.get("CollisionCheck"));self.$include($scope.get("DXOpal").$$scope.get("Sprite").$$scope.get("Physics"));Opal.defs(self,"$update",TMP_2=function $$update(sprites){var $a,$b,TMP_1,self=this;return($a=($b=sprites).$each,$a.$$p=(TMP_1=function(sprite){var self=TMP_1.$$s||this,$c,$d;if(sprite==null)sprite=nil;if(($c=sprite["$respond_to?"]("update")["$!"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return nil}if(($c=($d=sprite["$respond_to?"]("vanished?"),$d!==false&&$d!==nil&&$d!=null?sprite["$vanished?"]():$d))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return nil}return sprite.$update()},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b)},TMP_2.$$arity=1);Opal.defs(self,"$clean",TMP_4=function $$clean(sprites){var $a,$b,TMP_3,self=this;return($a=($b=sprites)["$reject!"],$a.$$p=(TMP_3=function(sprite){var self=TMP_3.$$s||this,$c;if(sprite==null)sprite=nil;return($c=sprite["$nil?"]())!==false&&$c!==nil&&$c!=null?$c:sprite["$vanished?"]()},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$a).call($b)},TMP_4.$$arity=1);Opal.defs(self,"$draw",TMP_6=function $$draw(sprites){var $a,$b,TMP_5,$c,$d,self=this;return($a=($b=($c=($d=sprites.$flatten()).$sort_by,$c.$$p="z".$to_proc(),$c).call($d)).$each,$a.$$p=(TMP_5=function(sprite){var self=TMP_5.$$s||this,$c,$d;if(sprite==null)sprite=nil;if(($c=($d=sprite["$respond_to?"]("vanished?"),$d!==false&&$d!==nil&&$d!=null?sprite["$vanished?"]():$d))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return nil}return sprite.$draw()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5),$a).call($b)},TMP_6.$$arity=1);Opal.defn(self,"$initialize",TMP_7=function $$initialize(x,y,image){var $a,self=this;if(x==null){x=0}if(y==null){y=0}if(image==null){image=nil}$a=[x,y,image],self.x=$a[0],self.y=$a[1],self.image=$a[2],$a;self.z=0;self.angle=0;self.scale_x=self.scale_y=1;if(image!==false&&image!==nil&&image!=null){self.center_x=$rb_divide(image.$width(),2);self.center_y=$rb_divide(image.$height(),2)}self.visible=true;self.vanished=false;return self.$_init_collision_info(self.image)},TMP_7.$$arity=-1);self.$attr_accessor("z","visible");self.$attr_accessor("angle");self.$attr_accessor("scale_x","scale_y");self.$attr_accessor("center_x","center_y");self.$attr_reader("x","y");Opal.defn(self,"$x=",TMP_8=function(newx){var $a,self=this;self.x=newx;if(($a=self._matter_body)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$_move_matter_body()}else{return nil}},TMP_8.$$arity=1);Opal.defn(self,"$y=",TMP_9=function(newy){var $a,self=this;self.y=newy;if(($a=self._matter_body)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$_move_matter_body()}else{return nil}},TMP_9.$$arity=1);Opal.defn(self,"$image",TMP_10=function $$image(){var self=this;return self.image},TMP_10.$$arity=0);Opal.defn(self,"$image=",TMP_11=function(img){var $a,$b,self=this;self.image=img;if(($a=self.collision["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[[0,0,$rb_minus(img.$width(),1),$rb_minus(img.$height(),1)]],$b=self,$b["$collision="].apply($b,$a),$a[$a.length-1]}if(($a=self.center_x["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.center_x=$rb_divide(img.$width(),2);return self.center_y=$rb_divide(img.$height(),2)}else{return nil}},TMP_11.$$arity=1);Opal.defn(self,"$vanish",TMP_12=function $$vanish(){var self=this;return self.vanished=true},TMP_12.$$arity=0);Opal.defn(self,"$vanished?",TMP_13=function(){var self=this;return self.vanished},TMP_13.$$arity=0);return(Opal.defn(self,"$draw",TMP_14=function $$draw(){var $a,self=this;if(($a=self.image["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise("image not set to Sprite")}if(($a=self.visible["$!"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}return $scope.get("Window").$draw_ex(self.x,self.y,self.image,$hash2(["scale_x","scale_y","angle","center_x","center_y"],{scale_x:self.scale_x,scale_y:self.scale_y,angle:self.angle,center_x:self.center_x,center_y:self.center_y}))},TMP_14.$$arity=0),nil)&&"draw"})($scope.base,null)}($scope.base)};Opal.modules["dxopal/window"]=function(Opal){function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2;Opal.add_stubs(["$require","$now","$_load_resources","$to_proc","$_loop","$clear","$draw_pause_screen","$nil?","$raise","$loop","$draw_box_fill","$width","$height","$draw_font","$default","$_init","$>=","$-","$+","$matter_enabled?","$matter_tick","$_on_tick","$call","$box_fill","$sort","$==","$[]","$<=>","$each","$===","$draw","$drop","$draw_rot","$draw_ex","$[]=","$line","$box","$circle","$circle_fill","$triangle","$triangle_fill","$new","$enqueue_draw","$push","$length"]);self.$require("dxopal/constants/colors");return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Window,self=$Window=$module($base,"Window");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_4,TMP_5,TMP_6,TMP_7,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35;Opal.cvars["@@fps"]=60;Opal.cvars["@@real_fps"]=0;Opal.cvars["@@real_fps_ct"]=1;Opal.cvars["@@real_fps_t"]=$scope.get("Time").$now();Opal.cvars["@@width"]=640;Opal.cvars["@@height"]=480;Opal.cvars["@@block"]=nil;Opal.cvars["@@paused"]=false;Opal.defs(self,"$load_resources",TMP_1=function $$load_resources(){var $a,$b,self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;return($a=($b=$scope.get("RemoteResource")).$_load_resources,$a.$$p=block.$to_proc(),$a).call($b)},TMP_1.$$arity=0);Opal.defs(self,"$loop",TMP_2=function $$loop(){var $a,TMP_3,self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;Opal.cvars["@@block"]=block;return($a=(TMP_3=function(time){var self=TMP_3.$$s||this;if(time==null)time=nil;return self.$_loop(time)},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),window.requestAnimationFrame)($a)},TMP_2.$$arity=0);Opal.defs(self,"$pause",TMP_4=function $$pause(){var $a,self=this;Opal.cvars["@@paused"]=true;(($a=Opal.cvars["@@draw_queue"])==null?nil:$a).$clear();return self.$draw_pause_screen()},TMP_4.$$arity=0);Opal.defs(self,"$paused?",TMP_5=function(){var $a,self=this;return($a=Opal.cvars["@@paused"])==null?nil:$a},TMP_5.$$arity=0);Opal.defs(self,"$resume",TMP_6=function $$resume(){var $a,$b,$c,self=this;if(($a=(($b=Opal.cvars["@@block"])==null?nil:$b)["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise("Window.resume is called before Window.loop")}Opal.cvars["@@paused"]=false;return($a=($b=$scope.get("Window")).$loop,$a.$$p=(($c=Opal.cvars["@@block"])==null?nil:$c).$to_proc(),$a).call($b)},TMP_6.$$arity=0);Opal.defs(self,"$draw_pause_screen",TMP_7=function $$draw_pause_screen(){var self=this;$scope.get("Window").$draw_box_fill(0,0,$scope.get("Window").$width(),$scope.get("Window").$height(),$scope.get("C_BLACK"));return $scope.get("Window").$draw_font(0,0,"...PAUSE...",$scope.get("Font").$default(),$hash2(["color"],{color:$scope.get("C_WHITE")}))},TMP_7.$$arity=0);Opal.defs(self,"$_loop",TMP_11=function $$_loop(time){var $a,$b,TMP_8,$c,TMP_9,TMP_10,self=this,t0=nil,sorted=nil;($a=($b=Opal.cvars["@@img"])==null?nil:$b)!==false&&$a!==nil&&$a!=null?$a:Opal.cvars["@@img"]=self.$_init(($b=Opal.cvars["@@width"])==null?nil:$b,($b=Opal.cvars["@@height"])==null?nil:$b);t0=$scope.get("Time").$now();if(($a=$rb_ge($rb_minus(t0,($b=Opal.cvars["@@real_fps_t"])==null?nil:$b),1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){Opal.cvars["@@real_fps"]=($a=Opal.cvars["@@real_fps_ct"])==null?nil:$a;Opal.cvars["@@real_fps_ct"]=1;Opal.cvars["@@real_fps_t"]=t0}else{Opal.cvars["@@real_fps_ct"]=$rb_plus(($a=Opal.cvars["@@real_fps_ct"])==null?nil:$a,1)}if(($a=$scope.get("Sprite")["$matter_enabled?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$scope.get("Sprite").$matter_tick(time)}$scope.get("Input").$_on_tick();Opal.cvars["@@draw_queue"]=[];if(($a=($b=Opal.cvars["@@paused"])==null?nil:$b)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$scope.get("Window").$draw_pause_screen()}else{(($a=Opal.cvars["@@block"])==null?nil:$a).$call()}(($a=Opal.cvars["@@img"])==null?nil:$a).$box_fill(0,0,($a=Opal.cvars["@@width"])==null?nil:$a,($a=Opal.cvars["@@height"])==null?nil:$a,($a=Opal.cvars["@@bgcolor"])==null?nil:$a);sorted=($a=($b=($c=Opal.cvars["@@draw_queue"])==null?nil:$c).$sort,$a.$$p=(TMP_8=function(a,b){var self=TMP_8.$$s||this;if(a==null)a=nil;if(b==null)b=nil;if(a["$[]"](0)["$=="](b["$[]"](0))){return a["$[]"](1)["$<=>"](b["$[]"](1))}else{return a["$[]"](0)["$<=>"](a["$[]"](1))}},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8),$a).call($b);($a=($c=sorted).$each,$a.$$p=(TMP_9=function(item){var self=TMP_9.$$s||this,$d,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,$p,$case=nil;if(item==null)item=nil;return function(){$case=item["$[]"](2);if("image"["$==="]($case)){return($d=($e=Opal.cvars["@@img"])==null?nil:$e).$draw.apply($d,Opal.to_a(item.$drop(3)))}else if("image_rot"["$==="]($case)){return($e=($f=Opal.cvars["@@img"])==null?nil:$f).$draw_rot.apply($e,Opal.to_a(item.$drop(3)))}else if("draw_ex"["$==="]($case)){return($f=($g=Opal.cvars["@@img"])==null?nil:$g).$draw_ex.apply($f,Opal.to_a(item.$drop(3)))}else if("font"["$==="]($case)){return($g=($h=Opal.cvars["@@img"])==null?nil:$h).$draw_font.apply($g,Opal.to_a(item.$drop(3)))}else if("pixel"["$==="]($case)){return($h=($i=Opal.cvars["@@img"])==null?nil:$i)["$[]="].apply($h,Opal.to_a(item.$drop(3)))}else if("line"["$==="]($case)){return($i=($j=Opal.cvars["@@img"])==null?nil:$j).$line.apply($i,Opal.to_a(item.$drop(3)))}else if("box"["$==="]($case)){return($j=($k=Opal.cvars["@@img"])==null?nil:$k).$box.apply($j,Opal.to_a(item.$drop(3)))}else if("box_fill"["$==="]($case)){return($k=($l=Opal.cvars["@@img"])==null?nil:$l).$box_fill.apply($k,Opal.to_a(item.$drop(3)))}else if("circle"["$==="]($case)){return($l=($m=Opal.cvars["@@img"])==null?nil:$m).$circle.apply($l,Opal.to_a(item.$drop(3)))}else if("circle_fill"["$==="]($case)){return($m=($n=Opal.cvars["@@img"])==null?nil:$n).$circle_fill.apply($m,Opal.to_a(item.$drop(3)))}else if("triangle"["$==="]($case)){return($n=($o=Opal.cvars["@@img"])==null?nil:$o).$triangle.apply($n,Opal.to_a(item.$drop(3)))}else if("triangle_fill"["$==="]($case)){return($o=($p=Opal.cvars["@@img"])==null?nil:$p).$triangle_fill.apply($o,Opal.to_a(item.$drop(3)))}else{return nil}}()},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9),$a).call($c);return($a=(TMP_10=function(time){var self=TMP_10.$$s||this;if(time==null)time=nil;return self.$_loop(time)},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10),window.requestAnimationFrame)($a)},TMP_11.$$arity=1);Opal.defs(self,"$_init",TMP_12=function $$_init(w,h){var self=this,canvas=nil,img=nil;canvas=document.getElementById("dxopal-canvas");canvas.width=w;canvas.height=h;img=$scope.get("Image").$new(w,h,$hash2(["canvas"],{canvas:canvas}));$scope.get("Input").$_init(canvas);return img},TMP_12.$$arity=2);Opal.defs(self,"$_img",TMP_13=function $$_img(){var $a,self=this;return($a=Opal.cvars["@@img"])==null?nil:$a},TMP_13.$$arity=0);Opal.defs(self,"$fps",TMP_14=function $$fps(){var $a,self=this;return($a=Opal.cvars["@@fps"])==null?nil:$a},TMP_14.$$arity=0);Opal.defs(self,"$fps=",TMP_15=function(w){var self=this;return Opal.cvars["@@fps"]=w},TMP_15.$$arity=1);Opal.defs(self,"$real_fps",TMP_16=function $$real_fps(){var $a,self=this;return($a=Opal.cvars["@@real_fps"])==null?nil:$a},TMP_16.$$arity=0);Opal.defs(self,"$width",TMP_17=function $$width(){var $a,self=this;return($a=Opal.cvars["@@width"])==null?nil:$a},TMP_17.$$arity=0);Opal.defs(self,"$width=",TMP_18=function(w){var self=this;return Opal.cvars["@@width"]=w},TMP_18.$$arity=1);Opal.defs(self,"$height",TMP_19=function $$height(){var $a,self=this;return($a=Opal.cvars["@@height"])==null?nil:$a},TMP_19.$$arity=0);Opal.defs(self,"$height=",TMP_20=function(h){var self=this;return Opal.cvars["@@height"]=h},TMP_20.$$arity=1);Opal.cvars["@@bgcolor"]=$scope.get("Constants").$$scope.get("Colors").$$scope.get("C_BLACK");Opal.defs(self,"$bgcolor",TMP_21=function $$bgcolor(){var $a,self=this;return($a=Opal.cvars["@@bgcolor"])==null?nil:$a},TMP_21.$$arity=0);Opal.defs(self,"$bgcolor=",TMP_22=function(col){var self=this;return Opal.cvars["@@bgcolor"]=col},TMP_22.$$arity=1);Opal.defs(self,"$draw",TMP_23=function $$draw(x,y,image,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"image",x,y,image)},TMP_23.$$arity=-4);Opal.defs(self,"$draw_rot",TMP_24=function $$draw_rot(x,y,image,angle,center_x,center_y,z){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}if(z==null){z=0}return self.$enqueue_draw(z,"image_rot",x,y,image,angle,center_x,center_y)},TMP_24.$$arity=-5);Opal.defs(self,"$draw_ex",TMP_25=function $$draw_ex(x,y,image,options){var $a,self=this;if(options==null){options=$hash2([],{})}return self.$enqueue_draw(($a=options["$[]"]("z"))!==false&&$a!==nil&&$a!=null?$a:0,"draw_ex",x,y,image,options)},TMP_25.$$arity=-4);Opal.defs(self,"$draw_font",TMP_26=function $$draw_font(x,y,string,font,option){var $a,self=this,z=nil,color=nil;if(option==null){option=$hash2([],{})}z=($a=option["$[]"]("z"))!==false&&$a!==nil&&$a!=null?$a:0;color=($a=option["$[]"]("color"))!==false&&$a!==nil&&$a!=null?$a:[255,255,255];return self.$enqueue_draw(z,"font",x,y,string,font,color)},TMP_26.$$arity=-5);Opal.defs(self,"$draw_pixel",TMP_27=function $$draw_pixel(x,y,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"pixel",x,y,color)},TMP_27.$$arity=-4);Opal.defs(self,"$draw_line",TMP_28=function $$draw_line(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"line",x1,y1,x2,y2,color)},TMP_28.$$arity=-6);Opal.defs(self,"$draw_box",TMP_29=function $$draw_box(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box",x1,y1,x2,y2,color)},TMP_29.$$arity=-6);Opal.defs(self,"$draw_box_fill",TMP_30=function $$draw_box_fill(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box_fill",x1,y1,x2,y2,color)},TMP_30.$$arity=-6);Opal.defs(self,"$draw_circle",TMP_31=function $$draw_circle(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle",x,y,r,color)},TMP_31.$$arity=-5);Opal.defs(self,"$draw_circle_fill",TMP_32=function $$draw_circle_fill(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle_fill",x,y,r,color)},TMP_32.$$arity=-5);Opal.defs(self,"$draw_triangle",TMP_33=function $$draw_triangle(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle",x1,y1,x2,y2,x3,y3,color)},TMP_33.$$arity=-8);Opal.defs(self,"$draw_triangle_fill",TMP_34=function $$draw_triangle_fill(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle_fill",x1,y1,x2,y2,x3,y3,color)},TMP_34.$$arity=-8);Opal.defs(self,"$enqueue_draw",TMP_35=function $$enqueue_draw(z,$a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}return(($b=Opal.cvars["@@draw_queue"])==null?nil:$b).$push([z,(($b=Opal.cvars["@@draw_queue"])==null?nil:$b).$length()].concat(Opal.to_a(args)))},TMP_35.$$arity=-2)})($scope.base)}($scope.base)};Opal.modules["dxopal/version"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"VERSION","1.0.0")}($scope.base)};Opal.modules["set"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module;Opal.add_stubs(["$include","$new","$nil?","$===","$raise","$each","$add","$call","$merge","$class","$respond_to?","$subtract","$dup","$join","$to_a","$equal?","$instance_of?","$==","$instance_variable_get","$is_a?","$size","$all?","$include?","$[]=","$enum_for","$[]","$<<","$replace","$delete","$select","$each_key","$to_proc","$empty?","$eql?","$instance_eval","$clear","$<","$<=","$keys"]);(function($base,$super){function $Set(){}var self=$Set=$klass($base,$super,"Set",$Set);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_4,TMP_5,TMP_6,TMP_8,TMP_9,TMP_10,TMP_13,TMP_15,TMP_16,TMP_17,TMP_20,TMP_21,TMP_22,TMP_24,TMP_25,TMP_26,TMP_28,TMP_29,TMP_30,TMP_32,TMP_33,TMP_35,TMP_37,TMP_39,TMP_41,TMP_42;def.hash=nil;self.$include($scope.get("Enumerable"));Opal.defs(self,"$[]",TMP_1=function($a_rest){var self=this,ary;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}ary=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){ary[$arg_idx-0]=arguments[$arg_idx]}return self.$new(ary)},TMP_1.$$arity=-1);Opal.defn(self,"$initialize",TMP_2=function $$initialize(enum$){var $a,$b,TMP_3,self=this,$iter=TMP_2.$$p,block=$iter||nil;if(enum$==null){enum$=nil}TMP_2.$$p=null;self.hash=$scope.get("Hash").$new();if(($a=enum$["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}if(($a=$scope.get("Enumerable")["$==="](enum$))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"value must be enumerable")}if(block!==false&&block!==nil&&block!=null){return($a=($b=enum$).$each,$a.$$p=(TMP_3=function(item){var self=TMP_3.$$s||this;if(item==null)item=nil;return self.$add(block.$call(item))},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$a).call($b)}else{return self.$merge(enum$)}},TMP_2.$$arity=-1);Opal.defn(self,"$dup",TMP_4=function $$dup(){var self=this,result=nil;result=self.$class().$new();return result.$merge(self)},TMP_4.$$arity=0);Opal.defn(self,"$-",TMP_5=function(enum$){var $a,self=this;if(($a=enum$["$respond_to?"]("each"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"value must be enumerable")}return self.$dup().$subtract(enum$)},TMP_5.$$arity=1);Opal.alias(self,"difference","-");Opal.defn(self,"$inspect",TMP_6=function $$inspect(){var self=this;return"#<Set: {"+self.$to_a().$join(",")+"}>"},TMP_6.$$arity=0);Opal.defn(self,"$==",TMP_8=function(other){var $a,$b,TMP_7,self=this;if(($a=self["$equal?"](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}else if(($a=other["$instance_of?"](self.$class()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.hash["$=="](other.$instance_variable_get("@hash"))}else if(($a=($b=other["$is_a?"]($scope.get("Set")),$b!==false&&$b!==nil&&$b!=null?self.$size()["$=="](other.$size()):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=other)["$all?"],$a.$$p=(TMP_7=function(o){var self=TMP_7.$$s||this;if(self.hash==null)self.hash=nil;if(o==null)o=nil;return self.hash["$include?"](o)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$a).call($b)}else{return false}},TMP_8.$$arity=1);Opal.defn(self,"$add",TMP_9=function $$add(o){var self=this;self.hash["$[]="](o,true);return self},TMP_9.$$arity=1);Opal.alias(self,"<<","add");Opal.defn(self,"$classify",TMP_10=function $$classify(){var $a,$b,TMP_11,$c,TMP_12,self=this,$iter=TMP_10.$$p,block=$iter||nil,result=nil;TMP_10.$$p=null;if(block!==nil){}else{return self.$enum_for("classify")}result=($a=($b=$scope.get("Hash")).$new,$a.$$p=(TMP_11=function(h,k){var self=TMP_11.$$s||this;if(h==null)h=nil;if(k==null)k=nil;return h["$[]="](k,self.$class().$new())},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11),$a).call($b);($a=($c=self).$each,$a.$$p=(TMP_12=function(item){var self=TMP_12.$$s||this;if(item==null)item=nil;return result["$[]"](Opal.yield1(block,item)).$add(item)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12),$a).call($c);return result},TMP_10.$$arity=0);Opal.defn(self,"$collect!",TMP_13=function(){var $a,$b,TMP_14,self=this,$iter=TMP_13.$$p,block=$iter||nil,result=nil;TMP_13.$$p=null;if(block!==nil){}else{return self.$enum_for("collect!")}result=self.$class().$new();($a=($b=self).$each,$a.$$p=(TMP_14=function(item){var self=TMP_14.$$s||this;if(item==null)item=nil;return result["$<<"](Opal.yield1(block,item))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$a).call($b);return self.$replace(result)},TMP_13.$$arity=0);Opal.alias(self,"map!","collect!");Opal.defn(self,"$delete",TMP_15=function(o){var self=this;self.hash.$delete(o);return self},TMP_15.$$arity=1);Opal.defn(self,"$delete?",TMP_16=function(o){var $a,self=this;if(($a=self["$include?"](o))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$delete(o);return self}else{return nil}},TMP_16.$$arity=1);Opal.defn(self,"$delete_if",TMP_17=function $$delete_if(){try{var $a,$b,TMP_18,$c,$d,TMP_19,self=this,$iter=TMP_17.$$p,$yield=$iter||nil;TMP_17.$$p=null;($a=$yield!==nil)!==false&&$a!==nil&&$a!=null?$a:Opal.ret(self.$enum_for("delete_if"));($a=($b=($c=($d=self).$select,$c.$$p=(TMP_19=function(o){var self=TMP_19.$$s||this;if(o==null)o=nil;return Opal.yield1($yield,o)},TMP_19.$$s=self,TMP_19.$$arity=1,TMP_19),$c).call($d)).$each,$a.$$p=(TMP_18=function(o){var self=TMP_18.$$s||this;if(self.hash==null)self.hash=nil;if(o==null)o=nil;return self.hash.$delete(o)},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18),$a).call($b);return self}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_17.$$arity=0);Opal.defn(self,"$add?",TMP_20=function(o){var $a,self=this;if(($a=self["$include?"](o))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.$add(o)}},TMP_20.$$arity=1);Opal.defn(self,"$each",TMP_21=function $$each(){var $a,$b,self=this,$iter=TMP_21.$$p,block=$iter||nil;TMP_21.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}($a=($b=self.hash).$each_key,$a.$$p=block.$to_proc(),$a).call($b);return self},TMP_21.$$arity=0);Opal.defn(self,"$empty?",TMP_22=function(){var self=this;return self.hash["$empty?"]()},TMP_22.$$arity=0);Opal.defn(self,"$eql?",TMP_24=function(other){var $a,$b,TMP_23,self=this;return self.hash["$eql?"](($a=($b=other).$instance_eval,$a.$$p=(TMP_23=function(){var self=TMP_23.$$s||this;if(self.hash==null)self.hash=nil;return self.hash},TMP_23.$$s=self,TMP_23.$$arity=0,TMP_23),$a).call($b))},TMP_24.$$arity=1);Opal.defn(self,"$clear",TMP_25=function $$clear(){var self=this;self.hash.$clear();return self},TMP_25.$$arity=0);Opal.defn(self,"$include?",TMP_26=function(o){var self=this;return self.hash["$include?"](o)},TMP_26.$$arity=1);Opal.alias(self,"member?","include?");Opal.defn(self,"$merge",TMP_28=function $$merge(enum$){var $a,$b,TMP_27,self=this;($a=($b=enum$).$each,$a.$$p=(TMP_27=function(item){var self=TMP_27.$$s||this;if(item==null)item=nil;return self.$add(item)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27),$a).call($b);return self},TMP_28.$$arity=1);Opal.defn(self,"$replace",TMP_29=function $$replace(enum$){var self=this;self.$clear();self.$merge(enum$);return self},TMP_29.$$arity=1);Opal.defn(self,"$size",TMP_30=function $$size(){var self=this;return self.hash.$size()},TMP_30.$$arity=0);Opal.alias(self,"length","size");Opal.defn(self,"$subtract",TMP_32=function $$subtract(enum$){var $a,$b,TMP_31,self=this;($a=($b=enum$).$each,$a.$$p=(TMP_31=function(item){var self=TMP_31.$$s||this;if(item==null)item=nil;return self.$delete(item)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31),$a).call($b);return self},TMP_32.$$arity=1);Opal.defn(self,"$|",TMP_33=function(enum$){var $a,self=this;if(($a=enum$["$respond_to?"]("each"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"value must be enumerable")}return self.$dup().$merge(enum$)},TMP_33.$$arity=1);Opal.defn(self,"$superset?",TMP_35=function(set){var $a,$b,TMP_34,self=this;($a=set["$is_a?"]($scope.get("Set")))!==false&&$a!==nil&&$a!=null?$a:self.$raise($scope.get("ArgumentError"),"value must be a set");if(($a=$rb_lt(self.$size(),set.$size()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return false}return($a=($b=set)["$all?"],$a.$$p=(TMP_34=function(o){var self=TMP_34.$$s||this;if(o==null)o=nil;return self["$include?"](o)},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34),$a).call($b)},TMP_35.$$arity=1);Opal.alias(self,">=","superset?");Opal.defn(self,"$proper_superset?",TMP_37=function(set){var $a,$b,TMP_36,self=this;($a=set["$is_a?"]($scope.get("Set")))!==false&&$a!==nil&&$a!=null?$a:self.$raise($scope.get("ArgumentError"),"value must be a set");if(($a=$rb_le(self.$size(),set.$size()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return false}return($a=($b=set)["$all?"],$a.$$p=(TMP_36=function(o){var self=TMP_36.$$s||this;if(o==null)o=nil;return self["$include?"](o)},TMP_36.$$s=self,TMP_36.$$arity=1,TMP_36),$a).call($b)},TMP_37.$$arity=1);Opal.alias(self,">","proper_superset?");Opal.defn(self,"$subset?",TMP_39=function(set){var $a,$b,TMP_38,self=this;($a=set["$is_a?"]($scope.get("Set")))!==false&&$a!==nil&&$a!=null?$a:self.$raise($scope.get("ArgumentError"),"value must be a set");if(($a=$rb_lt(set.$size(),self.$size()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return false}return($a=($b=self)["$all?"],$a.$$p=(TMP_38=function(o){var self=TMP_38.$$s||this;if(o==null)o=nil;return set["$include?"](o)},TMP_38.$$s=self,TMP_38.$$arity=1,TMP_38),$a).call($b)},TMP_39.$$arity=1);Opal.alias(self,"<=","subset?");Opal.defn(self,"$proper_subset?",TMP_41=function(set){var $a,$b,TMP_40,self=this;($a=set["$is_a?"]($scope.get("Set")))!==false&&$a!==nil&&$a!=null?$a:self.$raise($scope.get("ArgumentError"),"value must be a set");if(($a=$rb_le(set.$size(),self.$size()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return false}return($a=($b=self)["$all?"],$a.$$p=(TMP_40=function(o){var self=TMP_40.$$s||this;if(o==null)o=nil;return set["$include?"](o)},TMP_40.$$s=self,TMP_40.$$arity=1,TMP_40),$a).call($b)},TMP_41.$$arity=1);Opal.alias(self,"<","proper_subset?");Opal.alias(self,"+","|");Opal.alias(self,"union","|");return(Opal.defn(self,"$to_a",TMP_42=function $$to_a(){var self=this;return self.hash.$keys()},TMP_42.$$arity=0),nil)&&"to_a"})($scope.base,null);return function($base){var $Enumerable,self=$Enumerable=$module($base,"Enumerable");var def=self.$$proto,$scope=self.$$scope,TMP_43;Opal.defn(self,"$to_set",TMP_43=function $$to_set(klass,$a_rest){var $b,$c,self=this,args,$iter=TMP_43.$$p,block=$iter||nil;if(klass==null){klass=$scope.get("Set")}var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_43.$$p=null;return($b=($c=klass).$new,$b.$$p=block.$to_proc(),$b).apply($c,[self].concat(Opal.to_a(args)))},TMP_43.$$arity=-1)}($scope.base)};Opal.modules["opal/parser/sexp"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range,$hash2=Opal.hash2;Opal.add_stubs(["$attr_reader","$attr_accessor","$[]","$[]=","$send","$to_proc","$<<","$push","$concat","$new","$dup","$is_a?","$==","$array","$join","$map","$inspect","$line"]);return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Sexp(){}var self=$Sexp=$klass($base,$super,"Sexp",$Sexp);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_16,TMP_18;def.array=def.meta=def.source=nil;self.$attr_reader("array");self.$attr_accessor("source");Opal.defn(self,"$initialize",TMP_1=function $$initialize(args){var self=this;return self.array=args},TMP_1.$$arity=1);Opal.defn(self,"$type",TMP_2=function $$type(){var self=this;return self.array["$[]"](0)},TMP_2.$$arity=0);Opal.defn(self,"$type=",TMP_3=function(type){var self=this;return self.array["$[]="](0,type)},TMP_3.$$arity=1);Opal.defn(self,"$children",TMP_4=function $$children(){var self=this;return self.array["$[]"]($range(1,-1,false))},TMP_4.$$arity=0);Opal.defn(self,"$meta",TMP_5=function $$meta(){var $a,self=this;return($a=self.meta)!==false&&$a!==nil&&$a!=null?$a:self.meta=$hash2([],{})},TMP_5.$$arity=0);Opal.defn(self,"$method_missing",TMP_6=function $$method_missing(sym,$a_rest){var $b,$c,self=this,args,$iter=TMP_6.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}TMP_6.$$p=null;return($b=($c=self.array).$send,$b.$$p=block.$to_proc(),$b).apply($c,[sym].concat(Opal.to_a(args)))},TMP_6.$$arity=-2);Opal.defn(self,"$<<",TMP_7=function(other){var self=this;self.array["$<<"](other);return self},TMP_7.$$arity=1);Opal.defn(self,"$push",TMP_8=function $$push($a_rest){var $b,self=this,parts;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}parts=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){parts[$arg_idx-0]=arguments[$arg_idx]}($b=self.array).$push.apply($b,Opal.to_a(parts));return self},TMP_8.$$arity=-1);Opal.defn(self,"$concat",TMP_9=function $$concat(children){var self=this;self.array.$concat(children);return self},TMP_9.$$arity=1);Opal.defn(self,"$to_ary",TMP_10=function $$to_ary(){var self=this;return self.array},TMP_10.$$arity=0);Opal.defn(self,"$dup",TMP_11=function $$dup(){var self=this;return $scope.get("Sexp").$new(self.array.$dup())},TMP_11.$$arity=0);Opal.defn(self,"$==",TMP_12=function(other){var $a,self=this;if(($a=other["$is_a?"]($scope.get("Sexp")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.array["$=="](other.$array())}else{return self.array["$=="](other)}},TMP_12.$$arity=1);Opal.alias(self,"eql?","==");Opal.defn(self,"$line",TMP_13=function $$line(){var $a,self=this;return $a=self.source,$a!==false&&$a!==nil&&$a!=null?self.source["$[]"](0):$a},TMP_13.$$arity=0);Opal.defn(self,"$column",TMP_14=function $$column(){var $a,self=this;return $a=self.source,$a!==false&&$a!==nil&&$a!=null?self.source["$[]"](1):$a},TMP_14.$$arity=0);Opal.defn(self,"$inspect",TMP_16=function $$inspect(){var $a,$b,TMP_15,self=this;return"("+($a=($b=self.array).$map,$a.$$p=(TMP_15=function(e){var self=TMP_15.$$s||this;if(e==null)e=nil;return e.$inspect()},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15),$a).call($b).$join(", ")+")"},TMP_16.$$arity=0);Opal.defn(self,"$pretty_inspect",TMP_18=function $$pretty_inspect(){var $a,$b,TMP_17,self=this;return"("+function(){if(($a=self.$line())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return""+self.$line()+" "}else{return""}return nil}()+($a=($b=self.array).$map,$a.$$p=(TMP_17=function(e){var self=TMP_17.$$s||this;if(e==null)e=nil;return e.$inspect()},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17),$a).call($b).$join(", ")+")"},TMP_18.$$arity=0);return Opal.alias(self,"to_s","inspect")})($scope.base,null)}($scope.base)};Opal.modules["strscan"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$attr_reader","$anchor","$scan_until","$length","$size","$rest","$pos=","$private"]);return function($base,$super){function $StringScanner(){}var self=$StringScanner=$klass($base,$super,"StringScanner",$StringScanner);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24;def.pos=def.string=def.working=def.matched=def.prev_pos=def.match=nil;self.$attr_reader("pos");self.$attr_reader("matched");Opal.defn(self,"$initialize",TMP_1=function $$initialize(string){var self=this;self.string=string;self.pos=0;self.matched=nil;self.working=string;return self.match=[]},TMP_1.$$arity=1);self.$attr_reader("string");Opal.defn(self,"$beginning_of_line?",TMP_2=function(){var self=this;return self.pos===0||self.string.charAt(self.pos-1)==="\n"},TMP_2.$$arity=0);Opal.alias(self,"bol?","beginning_of_line?");Opal.defn(self,"$scan",TMP_3=function $$scan(pattern){var self=this;pattern=self.$anchor(pattern);var result=pattern.exec(self.working);if(result==null){return self.matched=nil}else if(typeof result==="object"){self.prev_pos=self.pos;self.pos+=result[0].length;self.working=self.working.substring(result[0].length);self.matched=result[0];self.match=result;return result[0]}else if(typeof result==="string"){self.pos+=result.length;self.working=self.working.substring(result.length);return result}else{return nil}},TMP_3.$$arity=1);Opal.defn(self,"$scan_until",TMP_4=function $$scan_until(pattern){var self=this;pattern=self.$anchor(pattern);var pos=self.pos,working=self.working,result;while(true){result=pattern.exec(working);pos+=1;working=working.substr(1);if(result==null){if(working.length===0){return self.matched=nil}continue}self.matched=self.string.substr(self.pos,pos-self.pos-1+result[0].length);self.prev_pos=pos-1;self.pos=pos;self.working=working.substr(result[0].length);return self.matched}},TMP_4.$$arity=1);Opal.defn(self,"$[]",TMP_5=function(idx){var self=this;var match=self.match;if(idx<0){idx+=match.length}if(idx<0||idx>=match.length){return nil}if(match[idx]==null){return nil}return match[idx]},TMP_5.$$arity=1);Opal.defn(self,"$check",TMP_6=function $$check(pattern){var self=this;pattern=self.$anchor(pattern);var result=pattern.exec(self.working);if(result==null){return self.matched=nil}return self.matched=result[0]},TMP_6.$$arity=1);Opal.defn(self,"$check_until",TMP_7=function $$check_until(pattern){var self=this;var prev_pos=self.prev_pos,pos=self.pos;var result=self.$scan_until(pattern);if(result!==nil){self.matched=result.substr(-1);self.working=self.string.substr(pos)}self.prev_pos=prev_pos;self.pos=pos;return result},TMP_7.$$arity=1);Opal.defn(self,"$peek",TMP_8=function $$peek(length){var self=this;return self.working.substring(0,length)},TMP_8.$$arity=1);Opal.defn(self,"$eos?",TMP_9=function(){var self=this;return self.working.length===0},TMP_9.$$arity=0);Opal.defn(self,"$exist?",TMP_10=function(pattern){var self=this;var result=pattern.exec(self.working);if(result==null){return nil}else if(result.index==0){return 0}else{return result.index+1}},TMP_10.$$arity=1);Opal.defn(self,"$skip",TMP_11=function $$skip(pattern){var self=this;pattern=self.$anchor(pattern);var result=pattern.exec(self.working);if(result==null){return self.matched=nil}else{var match_str=result[0];var match_len=match_str.length;self.matched=match_str;self.prev_pos=self.pos;self.pos+=match_len;self.working=self.working.substring(match_len);return match_len}},TMP_11.$$arity=1);Opal.defn(self,"$skip_until",TMP_12=function $$skip_until(pattern){var self=this;var result=self.$scan_until(pattern);if(result===nil){return nil}else{self.matched=result.substr(-1);return result.length}},TMP_12.$$arity=1);Opal.defn(self,"$get_byte",TMP_13=function $$get_byte(){var self=this;var result=nil;if(self.pos<self.string.length){self.prev_pos=self.pos;self.pos+=1;result=self.matched=self.working.substring(0,1);self.working=self.working.substring(1)}else{self.matched=nil}return result},TMP_13.$$arity=0);Opal.alias(self,"getch","get_byte");Opal.defn(self,"$match?",TMP_14=function(pattern){var self=this;pattern=self.$anchor(pattern);var result=pattern.exec(self.working);if(result==null){return nil}else{self.prev_pos=self.pos;return result[0].length}},TMP_14.$$arity=1);Opal.defn(self,"$pos=",TMP_15=function(pos){var self=this;if(pos<0){pos+=self.string.$length()}self.pos=pos;return self.working=self.string.slice(pos)},TMP_15.$$arity=1);Opal.defn(self,"$post_match",TMP_16=function $$post_match(){var self=this;if(self.matched===nil){return nil}return self.string.substr(self.pos)},TMP_16.$$arity=0);Opal.defn(self,"$pre_match",TMP_17=function $$pre_match(){var self=this;if(self.matched===nil){return nil}return self.string.substr(0,self.prev_pos)},TMP_17.$$arity=0);Opal.defn(self,"$reset",TMP_18=function $$reset(){var self=this;self.working=self.string;self.matched=nil;return self.pos=0},TMP_18.$$arity=0);Opal.defn(self,"$rest",TMP_19=function $$rest(){var self=this;return self.working},TMP_19.$$arity=0);Opal.defn(self,"$rest?",TMP_20=function(){var self=this;return self.working.length!==0},TMP_20.$$arity=0);Opal.defn(self,"$rest_size",TMP_21=function $$rest_size(){var self=this;return self.$rest().$size()},TMP_21.$$arity=0);Opal.defn(self,"$terminate",TMP_22=function $$terminate(){var $a,$b,self=this;self.match=nil;return $a=[self.string.$length()],$b=self,$b["$pos="].apply($b,$a),$a[$a.length-1]},TMP_22.$$arity=0);Opal.defn(self,"$unscan",TMP_23=function $$unscan(){var self=this;self.pos=self.prev_pos;self.prev_pos=nil;self.match=nil;return self},TMP_23.$$arity=0);self.$private();return(Opal.defn(self,"$anchor",TMP_24=function $$anchor(pattern){var self=this;return new RegExp("^(?:"+pattern.toString().substr(1,pattern.toString().length-2)+")")},TMP_24.$$arity=1),nil)&&"anchor"}($scope.base,null)};Opal.modules["opal/parser/keywords"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$attr_accessor","$map","$new","$each","$[]=","$name","$[]"]);return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Keywords,self=$Keywords=$module($base,"Keywords");var def=self.$$proto,$scope=self.$$scope,$a,$b,TMP_2,TMP_4,TMP_5;(function($base,$super){function $KeywordTable(){}var self=$KeywordTable=$klass($base,$super,"KeywordTable",$KeywordTable);var def=self.$$proto,$scope=self.$$scope,TMP_1;self.$attr_accessor("name","id","state");return(Opal.defn(self,"$initialize",TMP_1=function $$initialize(name,id,state){var self=this;self.name=name;self.id=id;return self.state=state},TMP_1.$$arity=3),nil)&&"initialize"})($scope.base,null);Opal.cdecl($scope,"KEYWORDS",($a=($b=[["__LINE__",["k__LINE__","k__LINE__"],"expr_end"],["__FILE__",["k__FILE__","k__FILE__"],"expr_end"],["alias",["kALIAS","kALIAS"],"expr_fname"],["and",["kAND","kAND"],"expr_beg"],["begin",["kBEGIN","kBEGIN"],"expr_beg"],["break",["kBREAK","kBREAK"],"expr_mid"],["case",["kCASE","kCASE"],"expr_beg"],["class",["kCLASS","kCLASS"],"expr_class"],["def",["kDEF","kDEF"],"expr_fname"],["defined?",["kDEFINED","kDEFINED"],"expr_arg"],["do",["kDO","kDO"],"expr_beg"],["else",["kELSE","kELSE"],"expr_beg"],["elsif",["kELSIF","kELSIF"],"expr_beg"],["end",["kEND","kEND"],"expr_end"],["ensure",["kENSURE","kENSURE"],"expr_beg"],["false",["kFALSE","kFALSE"],"expr_end"],["for",["kFOR","kFOR"],"expr_beg"],["if",["kIF","kIF_MOD"],"expr_beg"],["in",["kIN","kIN"],"expr_beg"],["module",["kMODULE","kMODULE"],"expr_beg"],["nil",["kNIL","kNIL"],"expr_end"],["next",["kNEXT","kNEXT"],"expr_mid"],["not",["kNOT","kNOT"],"expr_beg"],["or",["kOR","kOR"],"expr_beg"],["redo",["kREDO","kREDO"],"expr_end"],["rescue",["kRESCUE","kRESCUE_MOD"],"expr_mid"],["return",["kRETURN","kRETURN"],"expr_mid"],["self",["kSELF","kSELF"],"expr_end"],["super",["kSUPER","kSUPER"],"expr_arg"],["then",["kTHEN","kTHEN"],"expr_beg"],["true",["kTRUE","kTRUE"],"expr_end"],["undef",["kUNDEF","kUNDEF"],"expr_fname"],["unless",["kUNLESS","kUNLESS_MOD"],"expr_beg"],["until",["kUNTIL","kUNTIL_MOD"],"expr_beg"],["when",["kWHEN","kWHEN"],"expr_beg"],["while",["kWHILE","kWHILE_MOD"],"expr_beg"],["yield",["kYIELD","kYIELD"],"expr_arg"]]).$map,$a.$$p=(TMP_2=function(decl){var self=TMP_2.$$s||this,$c;if(decl==null)decl=nil;return($c=$scope.get("KeywordTable")).$new.apply($c,Opal.to_a(decl))},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b));Opal.defs(self,"$map",TMP_4=function $$map(){var $a,$b,TMP_3,self=this;if(self.map==null)self.map=nil;if(($a=self.map)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.map=$hash2([],{});($a=($b=$scope.get("KEYWORDS")).$each,$a.$$p=(TMP_3=function(k){var self=TMP_3.$$s||this;if(self.map==null)self.map=nil;if(k==null)k=nil;return self.map["$[]="](k.$name(),k)},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$a).call($b)}return self.map},TMP_4.$$arity=0);Opal.defs(self,"$keyword",TMP_5=function $$keyword(kw){var self=this;return self.$map()["$[]"](kw)},TMP_5.$$arity=1)})($scope.base)}($scope.base)};Opal.modules["opal/parser/lexer"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$require","$|","$attr_reader","$attr_accessor","$new","$yylex","$yylval","$has_local?","$scope","$parser","$to_sym","$<<","$&","$>>","$!=","$include?","$arg?","$!","$space?","$check","$after_operator?","$scan","$+","$length","$matched","$pos=","$-","$pos","$new_strterm","$merge","$yylval=","$to_f","$gsub","$scanner","$to_i","$raise","$peek","$chr","$%","$[]","$ord","$downcase","$escape","$peek_variable_name","$bol?","$eos?","$read_escape","$join","$count","$lines","$min","$map","$strterm","$[]=","$pushback","$==","$cond?","$strterm=","$match","$add_string_content","$line=","$line","$label_state?","$end_with?","$=~","$keyword","$state","$name","$id","$last","$pop","$cmdarg?","$here_document","$parse_string","$skip","$empty?","$new_op_asgn","$set_arg_state","$spcarg?","$beg?","$===","$new_strterm2","$cond_push","$cmdarg_push","$cond_lexpop","$cmdarg_lexpop","$end?","$heredoc_identifier","$push","$sub","$inspect","$process_numeric","$process_identifier","$size"]);self.$require("opal/regexp_anchors");self.$require("strscan");self.$require("opal/parser/keywords");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Lexer(){}var self=$Lexer=$klass($base,$super,"Lexer",$Lexer);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39;def.scanner=def.tok_line=def.tok_column=def.column=def.line=def.cond=def.lparen_arg_seen=def.cmdarg=def.lex_state=def.space_seen=def.yylval=def.scanner_stack=def.lambda_stack=def.paren_nest=def.file=nil;Opal.cdecl($scope,"STR_FUNC_ESCAPE",1);Opal.cdecl($scope,"STR_FUNC_EXPAND",2);Opal.cdecl($scope,"STR_FUNC_REGEXP",4);Opal.cdecl($scope,"STR_FUNC_QWORDS",8);Opal.cdecl($scope,"STR_FUNC_SYMBOL",16);Opal.cdecl($scope,"STR_FUNC_INDENT",32);Opal.cdecl($scope,"STR_FUNC_XQUOTE",64);Opal.cdecl($scope,"STR_SQUOTE",0);Opal.cdecl($scope,"STR_DQUOTE",$scope.get("STR_FUNC_EXPAND"));Opal.cdecl($scope,"STR_XQUOTE",$scope.get("STR_FUNC_EXPAND")["$|"]($scope.get("STR_FUNC_XQUOTE")));Opal.cdecl($scope,"STR_REGEXP",$scope.get("STR_FUNC_REGEXP")["$|"]($scope.get("STR_FUNC_ESCAPE"))["$|"]($scope.get("STR_FUNC_EXPAND")));Opal.cdecl($scope,"STR_SWORD",$scope.get("STR_FUNC_QWORDS"));Opal.cdecl($scope,"STR_DWORD",$scope.get("STR_FUNC_QWORDS")["$|"]($scope.get("STR_FUNC_EXPAND")));Opal.cdecl($scope,"STR_SSYM",$scope.get("STR_FUNC_SYMBOL"));Opal.cdecl($scope,"STR_DSYM",$scope.get("STR_FUNC_SYMBOL")["$|"]($scope.get("STR_FUNC_EXPAND")));self.$attr_reader("line","column");self.$attr_reader("scope");self.$attr_reader("eof_content");self.$attr_accessor("lex_state");self.$attr_accessor("strterm");self.$attr_accessor("scanner");self.$attr_accessor("yylval");self.$attr_accessor("parser");Opal.defn(self,"$initialize",TMP_1=function $$initialize(source,file){var self=this;self.lex_state="expr_beg";self.cond=0;self.cmdarg=0;self.line=1;self.tok_line=1;self.column=0;self.tok_column=0;self.file=file;self.scanner=$scope.get("StringScanner").$new(source);self.scanner_stack=[self.scanner];self.case_stmt=nil;self.paren_nest=0;return self.lambda_stack=[]},TMP_1.$$arity=2);Opal.defn(self,"$next_token",TMP_2=function $$next_token(){var self=this,token=nil,value=nil,location=nil;token=self.$yylex();value=self.$yylval();location=[self.tok_line,self.tok_column];self.tok_column=self.column;self.tok_line=self.line;return[token,[value,location]]},TMP_2.$$arity=0);Opal.defn(self,"$has_local?",TMP_3=function(local){var self=this;return self.$parser().$scope()["$has_local?"](local.$to_sym())},TMP_3.$$arity=1);Opal.defn(self,"$cond_push",TMP_4=function $$cond_push(n){var self=this;return self.cond=self.cond["$<<"](1)["$|"](n["$&"](1))},TMP_4.$$arity=1);Opal.defn(self,"$cond_pop",TMP_5=function $$cond_pop(){var self=this;return self.cond=self.cond["$>>"](1)},TMP_5.$$arity=0);Opal.defn(self,"$cond_lexpop",TMP_6=function $$cond_lexpop(){var self=this;return self.cond=self.cond["$>>"](1)["$|"](self.cond["$&"](1))},TMP_6.$$arity=0);Opal.defn(self,"$cond?",TMP_7=function(){var self=this;return self.cond["$&"](1)["$!="](0)},TMP_7.$$arity=0);Opal.defn(self,"$cmdarg_push",TMP_8=function $$cmdarg_push(n){var $a,self=this;if(($a=self.lparen_arg_seen)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.cmdarg=self.cmdarg["$<<"](1)["$|"](n["$&"](1))}},TMP_8.$$arity=1);Opal.defn(self,"$cmdarg_pop",TMP_9=function $$cmdarg_pop(){var self=this;return self.cmdarg=self.cmdarg["$>>"](1)},TMP_9.$$arity=0);Opal.defn(self,"$cmdarg_lexpop",TMP_10=function $$cmdarg_lexpop(){var self=this;return self.cmdarg=self.cmdarg["$>>"](1)["$|"](self.cmdarg["$&"](1))},TMP_10.$$arity=0);Opal.defn(self,"$cmdarg?",TMP_11=function(){var self=this;return self.cmdarg["$&"](1)["$!="](0)},TMP_11.$$arity=0);Opal.defn(self,"$arg?",TMP_12=function(){var self=this;return["expr_arg","expr_cmdarg"]["$include?"](self.lex_state)},TMP_12.$$arity=0);Opal.defn(self,"$end?",TMP_13=function(){var self=this;return["expr_end","expr_endarg","expr_endfn"]["$include?"](self.lex_state)},TMP_13.$$arity=0);Opal.defn(self,"$beg?",TMP_14=function(){var self=this;return["expr_beg","expr_value","expr_mid","expr_class"]["$include?"](self.lex_state)},TMP_14.$$arity=0);Opal.defn(self,"$after_operator?",TMP_15=function(){var self=this;return["expr_fname","expr_dot"]["$include?"](self.lex_state)},TMP_15.$$arity=0);Opal.defn(self,"$label_state?",TMP_16=function(){var $a,self=this;return($a=["expr_beg","expr_endfn"]["$include?"](self.lex_state))!==false&&$a!==nil&&$a!=null?$a:self["$arg?"]()},TMP_16.$$arity=0);Opal.defn(self,"$spcarg?",TMP_17=function(){var $a,$b,self=this;return $a=($b=self["$arg?"](),$b!==false&&$b!==nil&&$b!=null?self.space_seen:$b),$a!==false&&$a!==nil&&$a!=null?self["$space?"]()["$!"]():$a},TMP_17.$$arity=0);Opal.defn(self,"$space?",TMP_18=function(){var self=this;return self.scanner.$check(/\s/)},TMP_18.$$arity=0);Opal.defn(self,"$set_arg_state",TMP_19=function $$set_arg_state(){var $a,self=this;return self.lex_state=function(){if(($a=self["$after_operator?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"expr_arg"}else{return"expr_beg"}return nil}()},TMP_19.$$arity=0);Opal.defn(self,"$scan",TMP_20=function $$scan(regexp){var $a,self=this,result=nil;if(($a=result=self.scanner.$scan(regexp))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.column=$rb_plus(self.column,result.$length());self.yylval=$rb_plus(self.yylval,self.scanner.$matched())}return result},TMP_20.$$arity=1);Opal.defn(self,"$skip",TMP_21=function $$skip(regexp){var $a,self=this,result=nil;if(($a=result=self.scanner.$scan(regexp))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.column=$rb_plus(self.column,result.$length());self.tok_column=self.column}return result},TMP_21.$$arity=1);Opal.defn(self,"$check",TMP_22=function $$check(regexp){var self=this;return self.scanner.$check(regexp)},TMP_22.$$arity=1);Opal.defn(self,"$pushback",TMP_23=function $$pushback(n){var $a,self=this;return $a=self.scanner,$a["$pos="]($rb_minus($a.$pos(),n))},TMP_23.$$arity=1);Opal.defn(self,"$matched",TMP_24=function $$matched(){var self=this;return self.scanner.$matched()},TMP_24.$$arity=0);Opal.defn(self,"$line=",TMP_25=function(line){var self=this;self.column=self.tok_column=0;return self.line=self.tok_line=line},TMP_25.$$arity=1);Opal.defn(self,"$new_strterm",TMP_26=function $$new_strterm(func,term,paren){var self=this;return $hash2(["type","func","term","paren"],{type:"string",func:func,term:term,paren:paren})},TMP_26.$$arity=3);Opal.defn(self,"$new_strterm2",TMP_27=function $$new_strterm2(func,term,paren){var self=this;term=self.$new_strterm(func,term,paren);return term.$merge($hash2(["balance","nesting"],{balance:true,nesting:0}))},TMP_27.$$arity=3);Opal.defn(self,"$new_op_asgn",TMP_28=function $$new_op_asgn(value){var $a,$b,self=this;$a=[value],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];self.lex_state="expr_beg";return"tOP_ASGN"},TMP_28.$$arity=1);Opal.defn(self,"$process_numeric",TMP_29=function $$process_numeric(){var $a,$b,self=this;self.lex_state="expr_end";if(($a=self.$scan(/[\d_]+\.[\d_]+\b|[\d_]+(\.[\d_]+)?[eE][-+]?[\d_]+\b/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[self.$scanner().$matched().$gsub(/_/,"").$to_f()],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tFLOAT"}else if(($a=self.$scan(/([^0][\d_]*|0)\b/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[self.$scanner().$matched().$gsub(/_/,"").$to_i()],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tINTEGER"}else if(($a=self.$scan(/0[bB](0|1|_)+/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[self.$scanner().$matched().$to_i(2)],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tINTEGER"}else if(($a=self.$scan(/0[xX](\d|[a-f]|[A-F]|_)+/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[self.$scanner().$matched().$to_i(16)],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tINTEGER"}else if(($a=self.$scan(/0[oO]?([0-7]|_)+/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[self.$scanner().$matched().$to_i(8)],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tINTEGER"}else if(($a=self.$scan(/0[dD]([0-9]|_)+/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[self.$scanner().$matched().$gsub(/_/,"").$to_i()],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tINTEGER"}else{return self.$raise("Lexing error on numeric type: `"+self.$scanner().$peek(5)+"`")}},TMP_29.$$arity=0);Opal.defn(self,"$read_escape",TMP_30=function $$read_escape(){var $a,self=this;if(($a=self.$scan(/\\/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\\"}else if(($a=self.$scan(/n/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\n"}else if(($a=self.$scan(/t/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\t"}else if(($a=self.$scan(/r/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\r"}else if(($a=self.$scan(/f/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\f"}else if(($a=self.$scan(/v/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\v"}else if(($a=self.$scan(/a/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return""}else if(($a=self.$scan(/b/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\b"}else if(($a=self.$scan(/e/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return""}else if(($a=self.$scan(/s/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return" "}else if(($a=self.$scan(/[0-7]{1,3}/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$matched().$to_i(8)["$%"](256).$chr()}else if(($a=self.$scan(/x([0-9a-fA-F]{1,2})/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$scanner()["$[]"](1).$to_i(16).$chr()}else if(($a=self.$scan(/u([0-9a-zA-Z]{1,4})/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$scanner()["$[]"](1).$to_i(16).$chr($scope.get("Encoding").$$scope.get("UTF_8"))}else if(($a=self.$scan(/C-([a-zA-Z])/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_plus($rb_minus(self.$scanner()["$[]"](1).$downcase().$ord(),"a".$ord()),"1".$to_i(16)).$chr($scope.get("Encoding").$$scope.get("UTF_8"))}else if(($a=self.$scan(/C-([0-9])/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_plus($rb_minus(self.$scanner()["$[]"](1).$ord(),"0".$ord()),"10".$to_i(16)).$chr($scope.get("Encoding").$$scope.get("UTF_8"))}else if(($a=self.$scan(/M-\\C-([a-zA-Z])/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_plus($rb_minus(self.$scanner()["$[]"](1).$downcase().$ord(),"a".$ord()),"81".$to_i(16)).$chr($scope.get("Encoding").$$scope.get("UTF_8"))}else if(($a=self.$scan(/M-\\C-([0-9])/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_plus($rb_minus(self.$scanner()["$[]"](1).$ord(),"0".$ord()),"90".$to_i(16)).$chr($scope.get("Encoding").$$scope.get("UTF_8"))}else{return self.$scan(/./)}},TMP_30.$$arity=0);Opal.defn(self,"$peek_variable_name",TMP_31=function $$peek_variable_name(){var $a,self=this;if(($a=self.$check(/[@$]/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"tSTRING_DVAR"}else if(($a=self.$scan(/\{/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"tSTRING_DBEG"}else{return nil}},TMP_31.$$arity=0);Opal.defn(self,"$here_document",TMP_34=function $$here_document(str_parse){var $a,$b,$c,TMP_32,TMP_33,$d,self=this,eos_regx=nil,expand=nil,escape=nil,str_buffer=nil,tok=nil,reg=nil,complete_str=nil,lines=nil,min_indent=nil;eos_regx=new RegExp("[ \\t]*"+$scope.get("Regexp").$escape(str_parse["$[]"]("term"))+"(\\r*\\n|$)");expand=str_parse["$[]"]("func")["$&"]($scope.get("STR_FUNC_EXPAND"))["$!="](0);escape=str_parse["$[]"]("func")["$!="]($scope.get("STR_SQUOTE"));if(($a=self.$check(eos_regx))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$scan(new RegExp("[ \\t]*"+$scope.get("Regexp").$escape(str_parse["$[]"]("term"))));if(($a=str_parse["$[]"]("scanner"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.scanner_stack["$<<"](str_parse["$[]"]("scanner"));self.scanner=str_parse["$[]"]("scanner")}return"tSTRING_END"}str_buffer=[];if(($a=self.$scan(/#/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=tok=self.$peek_variable_name())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return tok}str_buffer["$<<"]("#")}while(!(($b=($c=self.$check(eos_regx),$c!==false&&$c!==nil&&$c!=null?self.$scanner()["$bol?"]():$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true))){if(($b=self.$scanner()["$eos?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$raise("reached EOF while in heredoc")}if(($b=self.$scan(/\n/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){str_buffer["$<<"](self.$scanner().$matched())}else if(($b=($c=expand!==false&&expand!==nil&&expand!=null)?self.$check(/#(?=[\$\@\{])/):expand)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){break}else if(($b=self.$scan(/\\/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){str_buffer["$<<"](function(){if(escape!==false&&escape!==nil&&escape!=null){return self.$read_escape()}else{return self.$scanner().$matched()}return nil}())}else{reg=$scope.get("Regexp").$new("[^#\0\\\\\n]+|.");self.$scan(reg);str_buffer["$<<"](self.$scanner().$matched())}}complete_str=str_buffer.$join("");self.line=$rb_plus(self.line,complete_str.$count("\n"));if(($a=str_parse["$[]"]("squiggly_heredoc"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){lines=complete_str.$lines();min_indent=($a=($b=lines).$map,$a.$$p=(TMP_32=function(line){var self=TMP_32.$$s||this;if(line==null)line=nil;return line.$scan(new RegExp(""+$scope.get("REGEXP_START")+"\\s+"))["$[]"](0).$length()},TMP_32.$$s=self,TMP_32.$$arity=1,TMP_32),$a).call($b).$min();complete_str=($a=($c=lines).$map,$a.$$p=(TMP_33=function(line){var self=TMP_33.$$s||this;if(line==null)line=nil;return line["$[]"](min_indent,line.$length())},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33),$a).call($c).$join()}$a=[complete_str],$d=self,$d["$yylval="].apply($d,$a),$a[$a.length-1];return"tSTRING_CONTENT"},TMP_34.$$arity=1);Opal.defn(self,"$parse_string",TMP_35=function $$parse_string(){var $a,$b,self=this,str_parse=nil,func=nil,space=nil,qwords=nil,expand=nil,regexp=nil,str_buffer=nil,complete_str=nil;str_parse=self.$strterm();func=str_parse["$[]"]("func");space=false;qwords=func["$&"]($scope.get("STR_FUNC_QWORDS"))["$!="](0);expand=func["$&"]($scope.get("STR_FUNC_EXPAND"))["$!="](0);regexp=func["$&"]($scope.get("STR_FUNC_REGEXP"))["$!="](0);if(($a=($b=qwords!==false&&qwords!==nil&&qwords!=null)?self.$scan(/\s+/):qwords)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){space=true}str_buffer=[];if(($a=self.$scan($scope.get("Regexp").$new($scope.get("Regexp").$escape(str_parse["$[]"]("term")))))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=($b=qwords!==false&&qwords!==nil&&qwords!=null)?str_parse["$[]"]("done_last_space")["$!"]():qwords)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){str_parse["$[]="]("done_last_space",true);self.$pushback(1);$a=[" "],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tSPACE"}if(($a=str_parse["$[]"]("balance"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(str_parse["$[]"]("nesting")["$=="](0)){if(regexp!==false&&regexp!==nil&&regexp!=null){$a=[self.$scan(/\w+/)],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tREGEXP_END"}return function(){if(($a=($b=self["$cond?"]()["$!"](),$b!==false&&$b!==nil&&$b!=null?self.$scan(/:[^:]/):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"tLABEL_END"}else{return"tSTRING_END"}return nil}()}else{str_buffer["$<<"](self.$scanner().$matched());$a="nesting",$b=str_parse,$b["$[]="]($a,$rb_minus($b["$[]"]($a),1));$a=[str_parse],$b=self,$b["$strterm="].apply($b,$a),$a[$a.length-1]}}else if(regexp!==false&&regexp!==nil&&regexp!=null){self.lex_state="expr_end";$a=[self.$scan(/\w+/)],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tREGEXP_END"}else{if(($a=str_parse["$[]"]("scanner"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.scanner_stack["$<<"](str_parse["$[]"]("scanner"));self.scanner=str_parse["$[]"]("scanner")}return function(){if(($a=($b=self["$cond?"]()["$!"](),$b!==false&&$b!==nil&&$b!=null?self.$scan(/:[^:]/):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"tLABEL_END"}else{return"tSTRING_END"}return nil}()}}if(space!==false&&space!==nil&&space!=null){$a=[" "],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tSPACE"}if(($a=($b=str_parse["$[]"]("balance"),$b!==false&&$b!==nil&&$b!=null?self.$scan($scope.get("Regexp").$new($scope.get("Regexp").$escape(str_parse["$[]"]("paren")))):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){str_buffer["$<<"](self.$scanner().$matched());$a="nesting",$b=str_parse,$b["$[]="]($a,$rb_plus($b["$[]"]($a),1))}else if(($a=self.$check(/#[@$]/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$scan(/#/);if(expand!==false&&expand!==nil&&expand!=null){return"tSTRING_DVAR"}else{str_buffer["$<<"](self.$scanner().$matched())}}else if(($a=self.$scan(/#\{/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(expand!==false&&expand!==nil&&expand!=null){return"tSTRING_DBEG"}else{str_buffer["$<<"](self.$scanner().$matched());if(($a=($b=qwords!==false&&qwords!==nil&&qwords!=null)?self.$scanner().$matched().$match($scope.get("Regexp").$new($scope.get("Regexp").$escape(str_parse["$[]"]("paren")))):qwords)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a="nesting",$b=str_parse,$b["$[]="]($a,$rb_plus($b["$[]"]($a),1))}}}else if(($a=self.$scan(/\#/))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){str_buffer["$<<"]("#")}self.$add_string_content(str_buffer,str_parse);complete_str=str_buffer.$join("");self.line=$rb_plus(self.line,complete_str.$count("\n"));$a=[complete_str],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tSTRING_CONTENT"},TMP_35.$$arity=0);Opal.defn(self,"$add_string_content",TMP_36=function $$add_string_content(str_buffer,str_parse){var $a,$b,$c,self=this,func=nil,end_str_re=nil,qwords=nil,expand=nil,regexp=nil,escape=nil,xquote=nil,c=nil,handled=nil,reg=nil;func=str_parse["$[]"]("func");end_str_re=$scope.get("Regexp").$new($scope.get("Regexp").$escape(str_parse["$[]"]("term")));qwords=func["$&"]($scope.get("STR_FUNC_QWORDS"))["$!="](0);expand=func["$&"]($scope.get("STR_FUNC_EXPAND"))["$!="](0);regexp=func["$&"]($scope.get("STR_FUNC_REGEXP"))["$!="](0);escape=func["$&"]($scope.get("STR_FUNC_ESCAPE"))["$!="](0);xquote=func["$=="]($scope.get("STR_XQUOTE"));while(!(($b=self.$scanner()["$eos?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true))){c=nil;handled=true;if(($b=self.$check(end_str_re))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=($c=str_parse["$[]"]("balance"),$c!==false&&$c!==nil&&$c!=null?str_parse["$[]"]("nesting")["$!="](0):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$scan(end_str_re);c=self.$scanner().$matched();$b="nesting",$c=str_parse,$c["$[]="]($b,$rb_minus($c["$[]"]($b),1))}else{break}}else if(($b=($c=str_parse["$[]"]("balance"),$c!==false&&$c!==nil&&$c!=null?self.$scan($scope.get("Regexp").$new($scope.get("Regexp").$escape(str_parse["$[]"]("paren")))):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b="nesting",$c=str_parse,$c["$[]="]($b,$rb_plus($c["$[]"]($b),1));c=self.$scanner().$matched()}else if(($b=($c=qwords!==false&&qwords!==nil&&qwords!=null)?self.$scan(/\s/):qwords)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$pushback(1);break}else if(($b=($c=expand!==false&&expand!==nil&&expand!=null)?self.$check(/#(?=[\$\@\{])/):expand)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){break}else if(($b=($c=qwords!==false&&qwords!==nil&&qwords!=null)?self.$scan(/\s/):qwords)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$pushback(1);break}else if(($b=self.$scan(/\\/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(xquote!==false&&xquote!==nil&&xquote!=null){c=$rb_plus("\\",self.$scan(/./))}else if(($b=($c=qwords!==false&&qwords!==nil&&qwords!=null)?self.$scan(/\n/):qwords)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){str_buffer["$<<"]("\n");continue}else if(($b=($c=expand!==false&&expand!==nil&&expand!=null)?self.$scan(/\n/):expand)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){continue}else if(($b=($c=qwords!==false&&qwords!==nil&&qwords!=null)?self.$scan(/\s/):qwords)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){c=" "}else if(regexp!==false&&regexp!==nil&&regexp!=null){if(($b=self.$scan(/(.)/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){c=$rb_plus("\\",self.$scanner().$matched())}}else if(expand!==false&&expand!==nil&&expand!=null){c=self.$read_escape()}else if(($b=self.$scan(/\n/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else if(($b=self.$scan(/\\/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(escape!==false&&escape!==nil&&escape!=null){c="\\\\"}else{c=self.$scanner().$matched()}}else if(($b=self.$scan(end_str_re))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{str_buffer["$<<"]("\\")}}else{handled=false}if(handled!==false&&handled!==nil&&handled!=null){}else{reg=function(){if(qwords!==false&&qwords!==nil&&qwords!=null){return $scope.get("Regexp").$new("[^"+$scope.get("Regexp").$escape(str_parse["$[]"]("term"))+"#\0\n \\\\]+|.")}else if(($b=str_parse["$[]"]("balance"))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return $scope.get("Regexp").$new("[^"+$scope.get("Regexp").$escape(str_parse["$[]"]("term"))+$scope.get("Regexp").$escape(str_parse["$[]"]("paren"))+"#\0\\\\]+|.")}else{return $scope.get("Regexp").$new("[^"+$scope.get("Regexp").$escape(str_parse["$[]"]("term"))+"#\0\\\\]+|.")}return nil}();self.$scan(reg);c=self.$scanner().$matched()}($b=c)!==false&&$b!==nil&&$b!=null?$b:c=self.$scanner().$matched();str_buffer["$<<"](c)}if(($a=self.$scanner()["$eos?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$raise("reached EOF while in string")}else{return nil}},TMP_36.$$arity=2);Opal.defn(self,"$heredoc_identifier",TMP_37=function $$heredoc_identifier(){var $a,$b,self=this,starts_with_minus=nil,squiggly_heredoc=nil,escape_char=nil,regexp=nil,escape_method=nil,heredoc=nil,end_of_line=nil;starts_with_minus=self.$scan(/-/)["$!"]()["$!"]();squiggly_heredoc=($a=starts_with_minus["$!"](),$a!==false&&$a!==nil&&$a!=null?self.$scan(/~/)["$!"]()["$!"]():$a);self.$scan(/(['"]?)/);escape_char=self.scanner["$[]"](0);if(($a=escape_char["$!="](""))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){regexp=$scope.get("Regexp").$new("([^"+escape_char+"]+)")}else{regexp=/\w+/}if(($a=self.$scan(regexp))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){escape_method=function(){if(($a=escape_char["$=="]("'"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("STR_SQUOTE")}else{return $scope.get("STR_DQUOTE")}return nil}();heredoc=self.scanner["$[]"](0);$a=[self.$new_strterm(escape_method,heredoc,heredoc)],$b=self,$b["$strterm="].apply($b,$a),$a[$a.length-1];self.$strterm()["$[]="]("type","heredoc");self.$strterm()["$[]="]("squiggly_heredoc",squiggly_heredoc);if(escape_char!==false&&escape_char!==nil&&escape_char!=null){self.$scan($scope.get("Regexp").$new(escape_char))}end_of_line=self.$scan(/.*\n/);if(($a=end_of_line["$!="]("\n"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$strterm()["$[]="]("scanner",$scope.get("StringScanner").$new(end_of_line))}$a=self,$a["$line="]($rb_plus($a.$line(),1));$a=[heredoc],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tSTRING_BEG"}else{return nil}},TMP_37.$$arity=0);Opal.defn(self,"$process_identifier",TMP_38=function $$process_identifier(matched,cmd_start){var $a,$b,$c,self=this,last_state=nil,result=nil,kw=nil,old_state=nil;last_state=self.lex_state;if(($a=($b=($c=self["$label_state?"](),$c!==false&&$c!==nil&&$c!=null?self.$check(/::/)["$!"]():$c),$b!==false&&$b!==nil&&$b!=null?self.$scan(/:/):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state="expr_beg";$a=[matched],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return"tLABEL"}if(matched["$=="]("defined?")){if(($a=self["$after_operator?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state="expr_end";return"tIDENTIFIER"}self.lex_state="expr_arg";return"kDEFINED"}if(($a=matched["$end_with?"]("?","!"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result="tIDENTIFIER"}else if(self.lex_state["$=="]("expr_fname")){if(($a=($b=self.$check(/\=\>/)["$!"](),$b!==false&&$b!==nil&&$b!=null?self.$scan(/\=/):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result="tIDENTIFIER";matched=$rb_plus(matched,self.$scanner().$matched())}}else if(($a=matched["$=~"](new RegExp(""+$scope.get("REGEXP_START")+"[A-Z]")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result="tCONSTANT"}else{result="tIDENTIFIER"}if(($a=($b=self.lex_state["$!="]("expr_dot"),$b!==false&&$b!==nil&&$b!=null?kw=$scope.get("Keywords").$keyword(matched):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){old_state=self.lex_state;self.lex_state=kw.$state();if(old_state["$=="]("expr_fname")){$a=[kw.$name()],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return kw.$id()["$[]"](0)}if(self.lex_state["$=="]("expr_beg")){cmd_start=true}if(matched["$=="]("do")){if(($a=self["$after_operator?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state="expr_end";return"tIDENTIFIER"}if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.lex_state="expr_beg";return"kDO_LAMBDA"}else if(($a=self["$cond?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state="expr_beg";return"kDO_COND"}else if(($a=($b=self["$cmdarg?"](),$b!==false&&$b!==nil&&$b!=null?self.lex_state["$!="]("expr_cmdarg"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state="expr_beg";return"kDO_BLOCK"}else if(last_state["$=="]("expr_endarg")){return"kDO_BLOCK"}else{self.lex_state="expr_beg";return"kDO"}}else if(($a=($b=old_state["$=="]("expr_beg"))!==false&&$b!==nil&&$b!=null?$b:old_state["$=="]("expr_value"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[matched],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return kw.$id()["$[]"](0)}else{if(($a=kw.$id()["$[]"](0)["$!="](kw.$id()["$[]"](1)))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state="expr_beg"}$a=[matched],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return kw.$id()["$[]"](1)}}if(($a=["expr_beg","expr_dot","expr_mid","expr_arg","expr_cmdarg"]["$include?"](self.lex_state))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state=function(){if(cmd_start!==false&&cmd_start!==nil&&cmd_start!=null){return"expr_cmdarg"}else{return"expr_arg"}return nil}()}else if(self.lex_state["$=="]("expr_fname")){self.lex_state="expr_endfn"}else{self.lex_state="expr_end"}if(($a=($b=["expr_dot","expr_fname"]["$include?"](last_state)["$!"](),$b!==false&&$b!==nil&&$b!=null?self["$has_local?"](matched):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.lex_state="expr_end"}$a=[matched],$b=self,$b["$yylval="].apply($b,$a),$a[$a.length-1];return function(){if(($a=matched["$=~"](new RegExp(""+$scope.get("REGEXP_START")+"[A-Z]")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"tCONSTANT"}else{return"tIDENTIFIER"}return nil}()},TMP_38.$$arity=2);return(Opal.defn(self,"$yylex",TMP_39=function $$yylex(){try{var $a,$b,$c,$d,$e,self=this,cmd_start=nil,c=nil,token=nil,line_count=nil,result=nil,str_type=nil,paren=nil,term=nil,$case=nil,func=nil,matched=nil,sign=nil,utype=nil;self.yylval="";self.space_seen=false;cmd_start=false;c="";if(($a=self.$strterm())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(self.$strterm()["$[]"]("type")["$=="]("heredoc")){token=self.$here_document(self.$strterm())}else{token=self.$parse_string()}if(($a=($b=($c=token["$=="]("tSTRING_END"))!==false&&$c!==nil&&$c!=null?$c:token["$=="]("tREGEXP_END"))!==false&&$b!==nil&&$b!=null?$b:token["$=="]("tLABEL_END"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[nil],$b=self,$b["$strterm="].apply($b,$a),$a[$a.length-1];self.lex_state="expr_end"}return token}while(($b=true)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$skip(/\ |\t|\r/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.space_seen=true;continue}else if(($b=self.$skip(/(\n|#)/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){c=self.$scanner().$matched();if(c["$=="]("#")){self.$skip(/(.*)/)}else{$b=self,$b["$line="]($rb_plus($b.$line(),1))}self.$skip(/(\n+)/);if(($b=self.$scanner().$matched())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=self,$b["$line="]($rb_plus($b.$line(),self.$scanner().$matched().$length()))}if(($b=["expr_beg","expr_dot"]["$include?"](self.lex_state))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){continue}if(($b=self.$skip(/([\ \t\r\f\v]*)\./))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scanner()["$[]"](1)["$empty?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{self.space_seen=true}self.$pushback(1);if(($b=self.$check(/\.\./))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{continue}}cmd_start=true;self.lex_state="expr_beg";$b=["\\n"],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return"tNL"}else if(($b=self.$scan(/\;/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tSEMI"}else if(($b=self.$check(/\*/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/\*\*\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("**")}else if(($b=self.$scan(/\*\*/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=["expr_beg","expr_mid"]["$include?"](self.lex_state))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tDSTAR"}else{self.$set_arg_state();return"tPOW"}}else if(($b=self.$scan(/\*\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("*")}else{self.$scan(/\*/);if(($b=self["$after_operator?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_arg";return"tSTAR2"}else if(($b=($c=self.space_seen,$c!==false&&$c!==nil&&$c!=null?self.$check(/\S/):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tSTAR"}else if(($b=["expr_beg","expr_mid"]["$include?"](self.lex_state))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tSTAR"}else{self.lex_state="expr_beg";return"tSTAR2"}}}else if(($b=self.$scan(/\!/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self["$after_operator?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_arg";if(($b=self.$scan(/@/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return["tBANG","!"]}}else{self.lex_state="expr_beg"}if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tNEQ"}else if(($b=self.$scan(/\~/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tNMATCH"}return"tBANG"}else if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=($c=self.lex_state["$=="]("expr_beg"))?self.space_seen["$!"]():self.lex_state["$=="]("expr_beg"))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=($c=self.$scan(/begin/),$c!==false&&$c!==nil&&$c!=null?self["$space?"]():$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$scan(/(.*)/);line_count=0;while(($c=true)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){if(($c=self.$scanner()["$eos?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$raise("embedded document meets end of file")}if(($c=($d=self.$scan(/\=end/),$d!==false&&$d!==nil&&$d!=null?self["$space?"]():$d))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.line=$rb_plus(self.line,line_count);return self.$yylex()}if(($c=self.$scan(/\n/))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){line_count=$rb_plus(line_count,1);continue}self.$scan(/(.*)/)}}}self.$set_arg_state();if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tEQQ"}return"tEQ"}if(($b=self.$scan(/\~/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tMATCH"}else if(($b=self.$scan(/\>/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tASSOC"}return"tEQL"}else if(($b=self.$scan(/\"/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[self.$new_strterm($scope.get("STR_DQUOTE"),'"',"\0")],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1];return"tSTRING_BEG"}else if(($b=self.$scan(/\'/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[self.$new_strterm($scope.get("STR_SQUOTE"),"'","\0")],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1];return"tSTRING_BEG"}else if(($b=self.$scan(/\`/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[self.$new_strterm($scope.get("STR_XQUOTE"),"`","\0")],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1];return"tXSTRING_BEG"}else if(($b=self.$scan(/\&/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/\&/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("&&")}return"tANDOP"}else if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("&")}if(($b=self["$spcarg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result="tAMPER"}else if(($b=self["$beg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result="tAMPER"}else{result="tAMPER2"}self.$set_arg_state();return result}else if(($b=self.$scan(/\|/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/\|/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("||")}return"tOROP"}else if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("|")}self.$set_arg_state();return"tPIPE"}else if(($b=self.$scan(/\%[QqWwIixrs]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){str_type=self.$scanner().$matched()["$[]"](1,1);paren=term=self.$scan(/./);$case=term;if("("["$==="]($case)){term=")"}else if("["["$==="]($case)){term="]"}else if("{"["$==="]($case)){term="}"}else if("<"["$==="]($case)){term=">"}else{paren="\0"}$c=function(){$case=str_type;if("Q"["$==="]($case)){return["tSTRING_BEG",$scope.get("STR_DQUOTE")]}else if("q"["$==="]($case)){return["tSTRING_BEG",$scope.get("STR_SQUOTE")]}else if("W"["$==="]($case)||"I"["$==="]($case)){self.$skip(/\s*/);return["tWORDS_BEG",$scope.get("STR_DWORD")]}else if("w"["$==="]($case)||"i"["$==="]($case)){self.$skip(/\s*/);return["tAWORDS_BEG",$scope.get("STR_SWORD")]}else if("x"["$==="]($case)){return["tXSTRING_BEG",$scope.get("STR_XQUOTE")]}else if("r"["$==="]($case)){return["tREGEXP_BEG",$scope.get("STR_REGEXP")]}else if("s"["$==="]($case)){return["tSTRING_BEG",$scope.get("STR_SQUOTE")]}else{return nil}}(),$b=Opal.to_ary($c),token=$b[0]==null?nil:$b[0],func=$b[1]==null?nil:$b[1],$c;$b=[self.$new_strterm2(func,term,paren)],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1];return token}else if(($b=self.$scan(/\//))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self["$beg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[self.$new_strterm($scope.get("STR_REGEXP"),"/","/")],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1];return"tREGEXP_BEG"}else if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("/")}if(($b=self["$arg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=($c=self.$check(/\s/)["$!"](),$c!==false&&$c!==nil&&$c!=null?self.space_seen:$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[self.$new_strterm($scope.get("STR_REGEXP"),"/","/")],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1];return"tREGEXP_BEG"}}if(($b=self["$after_operator?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_arg"}else{self.lex_state="expr_beg"}return"tDIVIDE"}else if(($b=self.$scan(/\%/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=($c=self.$check(/\=/),$c!==false&&$c!==nil&&$c!=null?self.lex_state["$!="]("expr_beg"):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$scan(/\=/);return self.$new_op_asgn("%")}else if(($b=self.$check(/[^\s]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=($c=($d=self.lex_state["$=="]("expr_beg"))!==false&&$d!==nil&&$d!=null?$d:($e=self.lex_state["$=="]("expr_arg"))?self.space_seen:self.lex_state["$=="]("expr_arg"))!==false&&$c!==nil&&$c!=null?$c:self.lex_state["$=="]("expr_mid"))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){paren=term=self.$scan(/./);$case=term;if("("["$==="]($case)){term=")"}else if("["["$==="]($case)){term="]"}else if("{"["$==="]($case)){term="}"}else if("<"["$==="]($case)){term=">"}else{paren="\0"}$b=[self.$new_strterm2($scope.get("STR_DQUOTE"),term,paren)],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1];return"tSTRING_BEG"}}self.$set_arg_state();return"tPERCENT"}else if(($b=self.$scan(/\\/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/\r?\n/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.space_seen=true;continue}self.$raise($scope.get("SyntaxError"),"backslash must appear before newline :"+self.file+":"+self.line)}else if(($b=self.$scan(/\(/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result=self.$scanner().$matched();if(($b=self["$beg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result="tLPAREN"}else if(($b=($c=self.space_seen,$c!==false&&$c!==nil&&$c!=null?self["$arg?"]():$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lparen_arg_seen=true;result="tLPAREN_ARG"}else{result="tLPAREN2"}self.lex_state="expr_beg";self.$cond_push(0);self.$cmdarg_push(0);self.paren_nest=$rb_plus(self.paren_nest,1);return result}else if(($b=self.$scan(/\)/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$cond_lexpop();self.$cmdarg_lexpop();self.paren_nest=$rb_minus(self.paren_nest,1);self.lex_state="expr_end";self.lparen_arg_seen=false;return"tRPAREN"}else if(($b=self.$scan(/\[/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result=self.$scanner().$matched();if(($b=self["$after_operator?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_arg";if(($b=self.$scan(/\]=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tASET"}else if(($b=self.$scan(/\]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return"tAREF"}else{self.$raise("Unexpected '[' token")}}else if(($b=self["$beg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result="tLBRACK"}else if(($b=($c=self["$arg?"](),$c!==false&&$c!==nil&&$c!=null?self.space_seen:$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result="tLBRACK"}else{result="tLBRACK2"}self.lex_state="expr_beg";self.$cond_push(0);self.$cmdarg_push(0);return result}else if(($b=self.$scan(/\]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$cond_lexpop();self.$cmdarg_lexpop();self.lex_state="expr_end";return"tRBRACK"}else if(($b=self.$scan(/\}/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$cond_lexpop();self.$cmdarg_lexpop();self.lex_state="expr_end";return"tRCURLY"}else if(($b=self.$scan(/\.\.\./))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tDOT3"}else if(($b=self.$scan(/\.\./))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tDOT2"}else if(($b=($c=self.lex_state["$!="]("expr_fname"),$c!==false&&$c!==nil&&$c!=null?self.$scan(/\.JS\[/):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";self.$cond_push(0);self.$cmdarg_push(0);return"tJSLBRACK"}else if(($b=($c=self.lex_state["$!="]("expr_fname"),$c!==false&&$c!==nil&&$c!=null?self.$scan(/\.JS\./):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_dot";return"tJSDOT"}else if(($b=self.$scan(/\./))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(self.lex_state["$=="]("expr_fname")){}else{self.lex_state="expr_dot"}return"tDOT"}else if(($b=self.$scan(/\:\:/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self["$beg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tCOLON3"}else if(($b=self["$spcarg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tCOLON3"}self.lex_state="expr_dot";return"tCOLON2"}else if(($b=self.$scan(/\:/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=($c=self["$end?"]())!==false&&$c!==nil&&$c!=null?$c:self.$check(/\s/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$check(/\w/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{self.lex_state="expr_beg";return"tCOLON"}self.lex_state="expr_fname";return"tSYMBEG"}if(($b=self.$scan(/\'/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[self.$new_strterm($scope.get("STR_SSYM"),"'","\0")],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1]}else if(($b=self.$scan(/\"/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[self.$new_strterm($scope.get("STR_DSYM"),'"',"\0")],$c=self,$c["$strterm="].apply($c,$b),$b[$b.length-1]}self.lex_state="expr_fname";return"tSYMBEG"}else if(($b=self.$scan(/\^\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("^")}else if(($b=self.$scan(/\^/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$set_arg_state();return"tCARET"}else if(($b=self.$check(/</))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/<<\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn("<<")}else if(($b=self.$scan(/<</))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self["$after_operator?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_arg";return"tLSHFT"}else if(($b=($c=($d=($e=self["$after_operator?"]()["$!"](),$e!==false&&$e!==nil&&$e!=null?self["$end?"]()["$!"]():$e),$d!==false&&$d!==nil&&$d!=null?($e=self["$arg?"]()["$!"]())!==false&&$e!==nil&&$e!=null?$e:self.space_seen:$d),$c!==false&&$c!==nil&&$c!=null?self.lex_state["$!="]("expr_class"):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=token=self.$heredoc_identifier())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return token}self.lex_state="expr_beg";return"tLSHFT"}self.lex_state="expr_beg";return"tLSHFT"}else if(($b=self.$scan(/<\=\>/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self["$after_operator?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_arg"}else{if(self.lex_state["$=="]("expr_class")){cmd_start=true}self.lex_state="expr_beg"}return"tCMP"}else if(($b=self.$scan(/<\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$set_arg_state();return"tLEQ"}else if(($b=self.$scan(/</))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$set_arg_state();return"tLT"}}else if(($b=self.$check(/\>/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/\>\>\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn(">>")}else if(($b=self.$scan(/\>\>/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$set_arg_state();return"tRSHFT"}else if(($b=self.$scan(/\>\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$set_arg_state();return"tGEQ"}else if(($b=self.$scan(/\>/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$set_arg_state();return"tGT"}}else if(($b=self.$scan(/->/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";self.lambda_stack.$push(self.paren_nest);return"tLAMBDA"}else if(($b=self.$scan(/[+-]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){matched=self.$scanner().$matched();$c=function(){if(matched["$=="]("+")){return["tPLUS","tUPLUS"]}else{return["tMINUS","tUMINUS"]}return nil}(),$b=Opal.to_ary($c),sign=$b[0]==null?nil:$b[0],utype=$b[1]==null?nil:$b[1],$c;if(($b=self["$beg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_mid";$b=[matched],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];if(($b=($c=self.$scanner().$peek(1)["$=~"](/\d/),$c!==false&&$c!==nil&&$c!=null?Opal.ret(function(){if(utype["$=="]("tUMINUS")){return"-@NUM"}else{return"+@NUM"}return nil}()):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{return utype}}else if(($b=self["$after_operator?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_arg";if(($b=self.$scan(/@/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$b=[$rb_plus(matched,"@")],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return"tIDENTIFIER"}$b=[matched],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return sign}if(($b=self.$scan(/\=/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$new_op_asgn(matched)}if(($b=self["$spcarg?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_mid";$b=[matched],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];if(($b=($c=self.$scanner().$peek(1)["$=~"](/\d/),$c!==false&&$c!==nil&&$c!=null?Opal.ret(function(){if(utype["$=="]("tUMINUS")){return"-@NUM"}else{return"+@NUM"}return nil}()):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{return utype}}self.lex_state="expr_beg";$b=[matched],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return sign}else if(($b=self.$scan(/\?/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self["$end?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tEH"}if(($b=self.$check(/\ |\t|\r|\s/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tEH"}else if(($b=self.$scan(/\\/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";$b=[self.$read_escape()],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return"tSTRING"}self.lex_state="expr_end";$b=[self.$scan(/./)],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return"tSTRING"}else if(($b=self.$scan(/\~/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.$set_arg_state();return"tTILDE"}else if(($b=self.$check(/\$/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.$scan(/\$([1-9]\d*)/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";$b=[self.$scanner().$matched().$sub("$","")],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return"tNTH_REF"}else if(($b=self.$scan(/(\$_)(\w+)/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";return"tGVAR"}else if(($b=self.$scan(/\$[\+\'\`\&!@\"~*$?\/\\:;=.,<>_]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";return"tGVAR"}else if(($b=self.$scan(/\$\w+/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";return"tGVAR"}else if(($b=self.$scan(/\$-[0-9a-zA-Z]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";return"tGVAR"}else{self.$raise("Bad gvar name: "+self.$scanner().$peek(5).$inspect())}}else if(($b=self.$scan(/\$\w+/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";return"tGVAR"}else if(($b=self.$scan(/\@\@\w*/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";return"tCVAR"}else if(($b=self.$scan(/\@\w*/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_end";return"tIVAR"}else if(($b=self.$scan(/\,/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lex_state="expr_beg";return"tCOMMA"}else if(($b=self.$scan(/\{/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.lex_state="expr_beg";self.$cond_push(0);self.$cmdarg_push(0);return"tLAMBEG"}else if(($b=($c=self["$arg?"]())!==false&&$c!==nil&&$c!=null?$c:self.lex_state["$=="]("expr_end"))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=self.lparen_arg_seen)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){self.lparen_arg_seen=false;result="tLBRACE_ARG"}else{result="tLCURLY"}}else if(self.lex_state["$=="]("expr_endarg")){result="tLBRACE_ARG"}else{result="tLBRACE"}self.lex_state="expr_beg";self.$cond_push(0);self.$cmdarg_push(0);return result}else if(($b=($c=self.$scanner()["$bol?"](),$c!==false&&$c!==nil&&$c!=null?self.$skip(/\__END__(\n|$)/):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){while(($c=true)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){if(($c=self.$scanner()["$eos?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.eof_content=self.$yylval();return false}self.$scan(/(.*)/);self.$scan(/\n/)}}else if(($b=self.$check(/[0-9]/))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$process_numeric()}else if(($b=self.$scan($scope.get("INLINE_IDENTIFIER_REGEXP")))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$process_identifier(self.$scanner().$matched(),cmd_start)}if(($b=self.$scanner()["$eos?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(self.scanner_stack.$size()["$=="](1)){$b=[false],$c=self,$c["$yylval="].apply($c,$b),$b[$b.length-1];return false}else{self.scanner_stack.$pop();self.scanner=self.scanner_stack.$last();return self.$yylex()}}self.$raise("Unexpected content in parsing stream `"+self.$scanner().$peek(5)+"` :"+self.file+":"+self.line)}}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_39.$$arity=0),nil)&&"yylex"})($scope.base,null)}($scope.base)};Opal.modules["racc/parser"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var $a,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$[]","$class","$<","$size","$[]=","$__send__","$_racc_setup","$raise","$_racc_init_sysvars","$catch","$!=","$next_token","$racc_read_token","$+","$>=","$==","$_racc_evalact","$!","$>","$-","$push","$racc_shift","$-@","$_racc_do_reduce","$===","$racc_accept","$throw","$on_error","$<=","$pop","$racc_e_pop","$inspect","$racc_next_state","$*","$racc_reduce","$sprintf","$token_to_str","$print","$racc_token2str","$puts","$racc_print_stacks","$empty?","$each","$racc_print_states","$each_index"]);(function($base){var $Racc,self=$Racc=$module($base,"Racc");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ParseError(){}var self=$ParseError=$klass($base,$super,"ParseError",$ParseError);var def=self.$$proto,$scope=self.$$scope;return nil})($scope.base,$scope.get("StandardError"))})($scope.base);if(($a=Opal.Object.$$scope.ParseError==null?nil:"constant")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Opal.cdecl($scope,"ParseError",$scope.get("Racc").$$scope.get("ParseError"))}return function($base){var $Racc,self=$Racc=$module($base,"Racc");var def=self.$$proto,$scope=self.$$scope,$a;if(($a=$scope.Racc_No_Extensions!=null)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{Opal.cdecl($scope,"Racc_No_Extensions",false)}(function($base,$super){function $Parser(){}var self=$Parser=$klass($base,$super,"Parser",$Parser);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_7,TMP_8,TMP_11,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_22,TMP_23,TMP_24,TMP_25,TMP_27,TMP_29,TMP_30,TMP_31;def.yydebug=def.racc_debug_out=def.racc_error_status=def.racc_t=def.racc_vstack=def.racc_val=def.racc_state=def.racc_tstack=nil;Opal.cdecl($scope,"Racc_Runtime_Version","1.4.6");Opal.cdecl($scope,"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1));Opal.cdecl($scope,"Racc_Runtime_Core_Version_R","1.4.6");Opal.cdecl($scope,"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1));Opal.cdecl($scope,"Racc_Main_Parsing_Routine","_racc_do_parse_rb");Opal.cdecl($scope,"Racc_YY_Parse_Method","_racc_yyparse_rb");Opal.cdecl($scope,"Racc_Runtime_Core_Version",$scope.get("Racc_Runtime_Core_Version_R"));Opal.cdecl($scope,"Racc_Runtime_Core_Revision",$scope.get("Racc_Runtime_Core_Revision_R"));Opal.cdecl($scope,"Racc_Runtime_Type","ruby");Opal.defs($scope.get("Parser"),"$racc_runtime_type",TMP_1=function $$racc_runtime_type(){var self=this;return $scope.get("Racc_Runtime_Type")},TMP_1.$$arity=0);Opal.defn(self,"$_racc_setup",TMP_2=function $$_racc_setup(){var $a,$b,self=this,arg=nil;if($gvars.stderr==null)$gvars.stderr=nil;if(($a=self.$class().$$scope.get("Racc_debug_parser"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.yydebug=false}if(($a=($b=self["yydebug"],$b!=null&&$b!==nil)?"instance-variable":nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.yydebug=false}if(($a=self.yydebug)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=($b=self["racc_debug_out"],$b!=null&&$b!==nil)?"instance-variable":nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.racc_debug_out=$gvars.stderr}($a=self.racc_debug_out)!==false&&$a!==nil&&$a!=null?$a:self.racc_debug_out=$gvars.stderr}arg=self.$class().$$scope.get("Racc_arg");if(($a=$rb_lt(arg.$size(),14))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){arg["$[]="](13,true)}return arg},TMP_2.$$arity=0);Opal.defn(self,"$_racc_init_sysvars",TMP_3=function $$_racc_init_sysvars(){var self=this;self.racc_state=[0];self.racc_tstack=[];self.racc_vstack=[];self.racc_t=nil;self.racc_val=nil;self.racc_read_next=true;self.racc_user_yyerror=false;return self.racc_error_status=0},TMP_3.$$arity=0);Opal.defn(self,"$do_parse",TMP_4=function $$do_parse(){var self=this;return self.$__send__($scope.get("Racc_Main_Parsing_Routine"),self.$_racc_setup(),false)},TMP_4.$$arity=0);Opal.defn(self,"$next_token",TMP_5=function $$next_token(){var self=this;return self.$raise($scope.get("NotImplementedError"),""+self.$class()+"#next_token is not defined")},TMP_5.$$arity=0);Opal.defn(self,"$_racc_do_parse_rb",TMP_7=function $$_racc_do_parse_rb(arg,in_debug){var $a,$b,TMP_6,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,tok=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();tok=act=i=nil;return($a=($b=self).$catch,$a.$$p=(TMP_6=function(){var self=TMP_6.$$s||this,$c,$d,$e,$f;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(self.racc_t==null)self.racc_t=nil;if(self.yydebug==null)self.yydebug=nil;if(self.racc_val==null)self.racc_val=nil;while(($d=true)!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){if(($d=i=action_pointer["$[]"](self.racc_state["$[]"](-1)))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){if(($d=self.racc_read_next)!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){if(($d=self.racc_t["$!="](0))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){$e=self.$next_token(),$d=Opal.to_ary($e),tok=$d[0]==null?nil:$d[0],self.racc_val=$d[1]==null?nil:$d[1],$e;if(tok!==false&&tok!==nil&&tok!=null){self.racc_t=($d=token_table["$[]"](tok))!==false&&$d!==nil&&$d!=null?$d:1}else{self.racc_t=0}if(($d=self.yydebug)!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){self.$racc_read_token(self.racc_t,tok,self.racc_val)}self.racc_read_next=false}}i=$rb_plus(i,self.racc_t);if(($d=($e=($f=$rb_ge(i,0),$f!==false&&$f!==nil&&$f!=null?act=action_table["$[]"](i):$f),$e!==false&&$e!==nil&&$e!=null?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$e))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while(($e=act=self.$_racc_evalact(act,arg))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){}}},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6),$a).call($b,"racc_end_parse")},TMP_7.$$arity=2);Opal.defn(self,"$yyparse",TMP_8=function $$yyparse(recv,mid){var self=this;return self.$__send__($scope.get("Racc_YY_Parse_Method"),recv,mid,self.$_racc_setup(),true)},TMP_8.$$arity=2);Opal.defn(self,"$_racc_yyparse_rb",TMP_11=function $$_racc_yyparse_rb(recv,mid,arg,c_debug){var $a,$b,TMP_9,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();act=nil;i=nil;return($a=($b=self).$catch,$a.$$p=(TMP_9=function(){var self=TMP_9.$$s||this,$c,$d,$e,TMP_10;if(self.racc_state==null)self.racc_state=nil;while(!(($d=i=action_pointer["$[]"](self.racc_state["$[]"](-1)))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true))){while(($e=act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg))!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){}}return($c=($d=recv).$__send__,$c.$$p=(TMP_10=function(tok,val){var self=TMP_10.$$s||this,$f,$g,$h,$i,$j,$k;if(self.racc_t==null)self.racc_t=nil;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(tok==null)tok=nil;if(val==null)val=nil;if(tok!==false&&tok!==nil&&tok!=null){self.racc_t=($f=token_table["$[]"](tok))!==false&&$f!==nil&&$f!=null?$f:1}else{self.racc_t=0}self.racc_val=val;self.racc_read_next=false;i=$rb_plus(i,self.racc_t);if(($f=($g=($h=$rb_ge(i,0),$h!==false&&$h!==nil&&$h!=null?act=action_table["$[]"](i):$h),$g!==false&&$g!==nil&&$g!=null?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$g))!==nil&&$f!=null&&(!$f.$$is_boolean||$f==true)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while(($g=act=self.$_racc_evalact(act,arg))!==nil&&$g!=null&&(!$g.$$is_boolean||$g==true)){}while(($g=($h=($i=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())!==false&&$i!==nil&&$i!=null?$i:self.racc_read_next["$!"]())!==false&&$h!==nil&&$h!=null?$h:self.racc_t["$=="](0))!==nil&&$g!=null&&(!$g.$$is_boolean||$g==true)){if(($g=($h=($i=($j=($k=i!==false&&i!==nil&&i!=null)?i=$rb_plus(i,self.racc_t):i,$j!==false&&$j!==nil&&$j!=null?$rb_ge(i,0):$j),$i!==false&&$i!==nil&&$i!=null?act=action_table["$[]"](i):$i),$h!==false&&$h!==nil&&$h!=null?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$h))!==nil&&$g!=null&&(!$g.$$is_boolean||$g==true)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while(($h=act=self.$_racc_evalact(act,arg))!==nil&&$h!=null&&(!$h.$$is_boolean||$h==true)){}}},TMP_10.$$s=self,TMP_10.$$arity=2,TMP_10),$c).call($d,mid)},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9),$a).call($b,"racc_end_parse")},TMP_11.$$arity=4);Opal.defn(self,"$_racc_evalact",TMP_13=function $$_racc_evalact(act,arg){var $a,$b,TMP_12,$c,$d,$e,self=this,action_table=nil,action_check=nil,_=nil,action_pointer=nil,shift_n=nil,reduce_n=nil,code=nil,$case=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],shift_n=$a[11]==null?nil:$a[11],reduce_n=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],_=$a[14]==null?nil:$a[14],$b;if(($a=($b=$rb_gt(act,0),$b!==false&&$b!==nil&&$b!=null?$rb_lt(act,shift_n):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=$rb_gt(self.racc_error_status,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(self.racc_t["$=="](1)){}else{self.racc_error_status=$rb_minus(self.racc_error_status,1)}}self.racc_vstack.$push(self.racc_val);self.racc_state.$push(act);self.racc_read_next=true;if(($a=self.yydebug)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.racc_tstack.$push(self.racc_t);self.$racc_shift(self.racc_t,self.racc_tstack,self.racc_vstack)}}else if(($a=($b=$rb_lt(act,0),$b!==false&&$b!==nil&&$b!=null?$rb_gt(act,reduce_n["$-@"]()):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){code=($a=($b=self).$catch,$a.$$p=(TMP_12=function(){var self=TMP_12.$$s||this;if(self.racc_state==null)self.racc_state=nil;self.racc_state.$push(self.$_racc_do_reduce(arg,act));return false},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12),$a).call($b,"racc_jump");if(code!==false&&code!==nil&&code!=null){$case=code;if(1["$==="]($case)){self.racc_user_yyerror=true;return reduce_n["$-@"]()}else if(2["$==="]($case)){return shift_n}else{self.$raise("[Racc Bug] unknown jump code")}}}else if(act["$=="](shift_n)){if(($a=self.yydebug)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$racc_accept()}self.$throw("racc_end_parse",self.racc_vstack["$[]"](0))}else if(act["$=="](reduce_n["$-@"]())){$case=self.racc_error_status;if((0)["$==="]($case)){if(($a=arg["$[]"](21))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$on_error(self.racc_t,self.racc_val,self.racc_vstack)}}else if(3["$==="]($case)){if(self.racc_t["$=="](0)){self.$throw("racc_end_parse",nil)}self.racc_read_next=true}self.racc_user_yyerror=false;self.racc_error_status=3;while(($c=true)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){if(($c=i=action_pointer["$[]"](self.racc_state["$[]"](-1)))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){i=$rb_plus(i,1);if(($c=($d=($e=$rb_ge(i,0),$e!==false&&$e!==nil&&$e!=null?act=action_table["$[]"](i):$e),$d!==false&&$d!==nil&&$d!=null?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$d))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){break}}if(($c=$rb_le(self.racc_state.$size(),1))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$throw("racc_end_parse",nil)}self.racc_state.$pop();self.racc_vstack.$pop();if(($c=self.yydebug)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.racc_tstack.$pop();self.$racc_e_pop(self.racc_state,self.racc_tstack,self.racc_vstack)}}return act}else{self.$raise("[Racc Bug] unknown action "+act.$inspect())}if(($a=self.yydebug)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$racc_next_state(self.racc_state["$[]"](-1),self.racc_state)}return nil},TMP_13.$$arity=2);Opal.defn(self,"$_racc_do_reduce",TMP_14=function $$_racc_do_reduce(arg,act){var $a,$b,$c,self=this,_=nil,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,nt_base=nil,reduce_table=nil,use_result=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,reduce_to=nil,method_id=nil,void_array=nil,tmp_t=nil,tmp_v=nil,k1=nil,curstate=nil;$b=arg,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],_=$a[3]==null?nil:$a[3],goto_table=$a[4]==null?nil:$a[4],goto_check=$a[5]==null?nil:$a[5],goto_default=$a[6]==null?nil:$a[6],goto_pointer=$a[7]==null?nil:$a[7],nt_base=$a[8]==null?nil:$a[8],reduce_table=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],use_result=$a[13]==null?nil:$a[13],$b;state=self.racc_state;vstack=self.racc_vstack;tstack=self.racc_tstack;i=$rb_times(act,-3);len=reduce_table["$[]"](i);reduce_to=reduce_table["$[]"]($rb_plus(i,1));method_id=reduce_table["$[]"]($rb_plus(i,2));void_array=[];if(($a=self.yydebug)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){tmp_t=tstack["$[]"](len["$-@"](),len)}tmp_v=vstack["$[]"](len["$-@"](),len);if(($a=self.yydebug)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){tstack["$[]="](len["$-@"](),len,void_array)}vstack["$[]="](len["$-@"](),len,void_array);state["$[]="](len["$-@"](),len,void_array);if(use_result!==false&&use_result!==nil&&use_result!=null){vstack.$push(self.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0)))}else{vstack.$push(self.$__send__(method_id,tmp_v,vstack))}tstack.$push(reduce_to);if(($a=self.yydebug)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$racc_reduce(tmp_t,reduce_to,tstack,vstack)}k1=$rb_minus(reduce_to,nt_base);if(($a=i=goto_pointer["$[]"](k1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){i=$rb_plus(i,state["$[]"](-1));if(($a=($b=($c=$rb_ge(i,0),$c!==false&&$c!==nil&&$c!=null?curstate=goto_table["$[]"](i):$c),$b!==false&&$b!==nil&&$b!=null?goto_check["$[]"](i)["$=="](k1):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return curstate}}return goto_default["$[]"](k1)},TMP_14.$$arity=2);Opal.defn(self,"$on_error",TMP_15=function $$on_error(t,val,vstack){var $a,self=this;return self.$raise($scope.get("ParseError"),self.$sprintf("\nparse error on value %s (%s)",val.$inspect(),($a=self.$token_to_str(t))!==false&&$a!==nil&&$a!=null?$a:"?"))},TMP_15.$$arity=3);Opal.defn(self,"$yyerror",TMP_16=function $$yyerror(){var self=this;return self.$throw("racc_jump",1)},TMP_16.$$arity=0);Opal.defn(self,"$yyaccept",TMP_17=function $$yyaccept(){var self=this;return self.$throw("racc_jump",2)},TMP_17.$$arity=0);Opal.defn(self,"$yyerrok",TMP_18=function $$yyerrok(){var self=this;return self.racc_error_status=0},TMP_18.$$arity=0);Opal.defn(self,"$racc_read_token",TMP_19=function $$racc_read_token(t,tok,val){var self=this;self.racc_debug_out.$print("read ");self.racc_debug_out.$print(tok.$inspect(),"(",self.$racc_token2str(t),") ");self.racc_debug_out.$puts(val.$inspect());return self.racc_debug_out.$puts()},TMP_19.$$arity=3);Opal.defn(self,"$racc_shift",TMP_20=function $$racc_shift(tok,tstack,vstack){var self=this;self.racc_debug_out.$puts("shift "+self.$racc_token2str(tok));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_20.$$arity=3);Opal.defn(self,"$racc_reduce",TMP_22=function $$racc_reduce(toks,sim,tstack,vstack){var $a,$b,TMP_21,self=this,out=nil;out=self.racc_debug_out;out.$print("reduce ");if(($a=toks["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){out.$print(" <none>")}else{($a=($b=toks).$each,$a.$$p=(TMP_21=function(t){var self=TMP_21.$$s||this;if(t==null)t=nil;return out.$print(" ",self.$racc_token2str(t))},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21),$a).call($b)}out.$puts(" --\x3e "+self.$racc_token2str(sim));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_22.$$arity=4);Opal.defn(self,"$racc_accept",TMP_23=function $$racc_accept(){var self=this;self.racc_debug_out.$puts("accept");return self.racc_debug_out.$puts()},TMP_23.$$arity=0);Opal.defn(self,"$racc_e_pop",TMP_24=function $$racc_e_pop(state,tstack,vstack){var self=this;self.racc_debug_out.$puts("error recovering mode: pop token");self.$racc_print_states(state);self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_24.$$arity=3);Opal.defn(self,"$racc_next_state",TMP_25=function $$racc_next_state(curstate,state){var self=this;self.racc_debug_out.$puts("goto "+curstate);self.$racc_print_states(state);return self.racc_debug_out.$puts()},TMP_25.$$arity=2);Opal.defn(self,"$racc_print_stacks",TMP_27=function $$racc_print_stacks(t,v){var $a,$b,TMP_26,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");($a=($b=t).$each_index,$a.$$p=(TMP_26=function(i){var self=TMP_26.$$s||this;if(i==null)i=nil;return out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26),$a).call($b);return out.$puts(" ]")},TMP_27.$$arity=2);Opal.defn(self,"$racc_print_states",TMP_29=function $$racc_print_states(s){var $a,$b,TMP_28,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");($a=($b=s).$each,$a.$$p=(TMP_28=function(st){var self=TMP_28.$$s||this;if(st==null)st=nil;return out.$print(" ",st)},TMP_28.$$s=self,TMP_28.$$arity=1,TMP_28),$a).call($b);return out.$puts(" ]")},TMP_29.$$arity=1);Opal.defn(self,"$racc_token2str",TMP_30=function $$racc_token2str(tok){var $a,self=this;return($a=self.$class().$$scope.get("Racc_token_to_s_table")["$[]"](tok))!==false&&$a!==nil&&$a!=null?$a:self.$raise("[Racc Bug] can't convert token "+tok+" to string")},TMP_30.$$arity=1);return(Opal.defn(self,"$token_to_str",TMP_31=function $$token_to_str(t){var self=this;return self.$class().$$scope.get("Racc_token_to_s_table")["$[]"](t)},TMP_31.$$arity=1),nil)&&"token_to_str"})($scope.base,null)}($scope.base)};Opal.modules["opal/parser/grammar"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash=Opal.hash,$range=Opal.range;Opal.add_stubs(["$require","$new","$each","$empty?","$[]=","$to_i","$+","$split","$new_compstmt","$[]","$new_block","$<<","$new_body","$lex_state=","$lexer","$new_alias","$s","$to_sym","$value","$new_if","$new_while","$new_until","$new_rescue_mod","$new_op_asgn","$op_to_setter","$new_assign","$new_unary_call","$new_iter","$new_call","$new_js_call","$new_super","$new_yield","$new_return","$new_break","$new_next","$concat","$children","$new_assignable","$new_js_attrasgn","$new_attrasgn","$new_colon2","$new_colon3","$new_const","$new_sym","$new_op_asgn1","$raise","$new_irange","$new_erange","$new_binary_call","$new_int","$new_float","$include?","$type","$==","$-@","$to_f","$new_and","$new_or","$cond_push","$cond_pop","$new_hash","$add_block_pass","$cmdarg_push","$cmdarg_pop","$new_block_pass","$new_splat","$line","$new_nil","$new_paren","$new_array","$new_method_call_with_block","$new_class","$new_sclass","$new_module","$push_scope","$new_def","$pop_scope","$new_shadowarg","$new_block_args","$new_ident","$new_optarg","$new_restarg","$push","$intern","$nil?","$new_str","$str_append","$new_xstr","$new_regexp","$new_str_content","$strterm","$strterm=","$new_evstr","$cond_lexpop","$cmdarg_lexpop","$new_gvar","$new_ivar","$new_cvar","$new_dsym","$negate_num","$new_self","$new_true","$new_false","$new___FILE__","$new___LINE__","$new_var_ref","$new_kwrestarg","$new_kwoptarg","$new_kwarg","$new_args_tail","$new_args","$add_local","$scope","$insert","$source","$new_kwsplat"]);self.$require("racc/parser.rb");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Parser(){}var self=$Parser=$klass($base,$super,"Parser",$Parser);var def=self.$$proto,$scope=self.$$scope,$a,$b,TMP_1,$c,TMP_3,$d,TMP_5,$e,TMP_7,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41,TMP_42,TMP_43,TMP_44,TMP_45,TMP_46,TMP_47,TMP_48,TMP_49,TMP_50,TMP_51,TMP_52,TMP_53,TMP_54,TMP_55,TMP_56,TMP_57,TMP_58,TMP_59,TMP_60,TMP_61,TMP_62,TMP_63,TMP_64,TMP_65,TMP_66,TMP_67,TMP_68,TMP_69,TMP_70,TMP_71,TMP_72,TMP_73,TMP_74,TMP_75,TMP_76,TMP_77,TMP_78,TMP_79,TMP_80,TMP_81,TMP_82,TMP_83,TMP_84,TMP_85,TMP_86,TMP_87,TMP_88,TMP_89,TMP_90,TMP_91,TMP_92,TMP_93,TMP_94,TMP_95,TMP_96,TMP_97,TMP_98,TMP_99,TMP_100,TMP_101,TMP_102,TMP_103,TMP_104,TMP_105,TMP_106,TMP_107,TMP_108,TMP_109,TMP_110,TMP_111,TMP_112,TMP_113,TMP_114,TMP_115,TMP_116,TMP_117,TMP_118,TMP_119,TMP_120,TMP_121,TMP_122,TMP_123,TMP_124,TMP_125,TMP_126,TMP_127,TMP_128,TMP_129,TMP_130,TMP_131,TMP_132,TMP_133,TMP_134,TMP_135,TMP_136,TMP_137,TMP_138,TMP_139,TMP_140,TMP_141,TMP_142,TMP_143,TMP_144,TMP_145,TMP_146,TMP_147,TMP_148,TMP_149,TMP_150,TMP_151,TMP_152,TMP_153,TMP_154,TMP_155,TMP_156,TMP_157,TMP_158,TMP_159,TMP_160,TMP_161,TMP_162,TMP_163,TMP_164,TMP_165,TMP_166,TMP_167,TMP_168,TMP_169,TMP_170,TMP_171,TMP_172,TMP_173,TMP_174,TMP_175,TMP_176,TMP_177,TMP_178,TMP_179,TMP_180,TMP_181,TMP_182,TMP_183,TMP_184,TMP_185,TMP_186,TMP_187,TMP_188,TMP_189,TMP_190,TMP_191,TMP_192,TMP_193,TMP_194,TMP_195,TMP_196,TMP_197,TMP_198,TMP_199,TMP_200,TMP_201,TMP_202,TMP_203,TMP_204,TMP_205,TMP_206,TMP_207,TMP_208,TMP_209,TMP_210,TMP_211,TMP_212,TMP_213,TMP_214,TMP_215,TMP_216,TMP_217,TMP_218,TMP_219,TMP_220,TMP_221,TMP_222,TMP_223,TMP_224,TMP_225,TMP_226,TMP_227,TMP_228,TMP_229,TMP_230,TMP_231,TMP_232,TMP_233,TMP_234,TMP_235,TMP_236,TMP_237,TMP_238,TMP_239,TMP_240,TMP_241,TMP_242,TMP_243,TMP_244,TMP_245,TMP_246,TMP_247,TMP_248,TMP_249,TMP_250,TMP_251,TMP_252,TMP_253,TMP_254,TMP_255,TMP_256,TMP_257,TMP_258,TMP_259,TMP_260,TMP_261,TMP_262,TMP_263,TMP_264,TMP_265,TMP_266,TMP_267,TMP_268,TMP_269,TMP_270,TMP_271,TMP_272,TMP_273,TMP_274,TMP_275,TMP_276,TMP_277,TMP_278,TMP_279,TMP_280,TMP_281,TMP_282,TMP_283,TMP_284,TMP_285,TMP_286,TMP_287,TMP_288,TMP_289,TMP_290,TMP_291,TMP_292,TMP_293,TMP_294,TMP_295,TMP_296,TMP_297,TMP_298,TMP_299,TMP_300,TMP_301,TMP_302,TMP_303,TMP_304,TMP_305,TMP_306,TMP_307,TMP_308,TMP_309,TMP_310,TMP_311,TMP_312,TMP_313,TMP_314,TMP_315,TMP_316,TMP_317,TMP_318,TMP_319,TMP_320,TMP_321,TMP_322,TMP_323,TMP_324,TMP_325,TMP_326,TMP_327,TMP_328,TMP_329,TMP_330,TMP_331,TMP_332,TMP_333,TMP_334,TMP_335,TMP_336,TMP_337,TMP_338,TMP_339,TMP_340,TMP_341,TMP_342,TMP_343,TMP_344,TMP_345,TMP_346,TMP_347,TMP_348,TMP_349,TMP_350,TMP_351,TMP_352,TMP_353,TMP_354,TMP_355,TMP_356,TMP_357,TMP_358,TMP_359,TMP_360,TMP_361,TMP_362,TMP_363,TMP_364,TMP_365,TMP_366,TMP_367,TMP_368,TMP_369,TMP_370,TMP_371,TMP_372,TMP_373,TMP_374,TMP_375,TMP_376,TMP_377,TMP_378,TMP_379,TMP_380,TMP_381,TMP_382,TMP_383,TMP_384,TMP_385,TMP_386,TMP_387,TMP_388,TMP_389,TMP_390,TMP_391,TMP_392,TMP_393,TMP_394,TMP_395,TMP_396,TMP_397,TMP_398,TMP_399,TMP_400,TMP_401,TMP_402,TMP_403,TMP_404,TMP_405,TMP_406,TMP_407,TMP_408,TMP_409,TMP_410,clist=nil,racc_action_table=nil,arr=nil,idx=nil,racc_action_check=nil,racc_action_pointer=nil,racc_action_default=nil,racc_goto_table=nil,racc_goto_check=nil,racc_goto_pointer=nil,racc_goto_default=nil,racc_reduce_table=nil,racc_reduce_n=nil,racc_shift_n=nil,racc_token_table=nil,racc_nt_base=nil,racc_use_result_var=nil;clist=["64,65,66,8,52,598,258,568,58,59,258,258,598,62,98,60,61,63,28,29,67","68,-95,-477,-103,109,642,27,26,25,91,90,92,93,560,468,18,559,677,677","-102,-87,7,42,6,9,95,94,85,51,87,86,88,-98,89,96,97,598,82,83,196,39","40,-94,-100,-70,677,206,207,620,253,676,676,-95,-97,253,560,102,197","562,206,207,101,37,598,-103,31,641,598,53,257,55,-95,33,257,257,-103","41,74,676,-102,-82,206,207,-99,19,75,-87,-98,567,80,74,76,77,78,79,102","198,597,75,81,101,-100,102,-87,597,-94,57,101,-94,54,64,65,66,673,52","38,84,205,58,59,-97,-93,-87,62,-101,60,61,63,28,29,67,68,-87,311,-89","835,247,27,26,25,91,90,92,93,-94,-91,18,102,-569,597,938,619,101,42","-94,-88,95,94,85,51,87,86,88,546,89,96,97,-99,82,83,102,39,40,-93,102","101,597,302,102,101,597,303,-95,101,-95,-90,-103,-95,-103,-570,-102","-103,-102,211,311,-102,215,216,-98,53,-98,55,-101,-98,-465,630,400,41","755,755,-89,-465,-100,-102,-100,19,560,-100,677,562,80,74,76,77,78,79","-92,206,207,75,81,-97,-91,-97,755,-88,-97,57,403,-93,54,64,65,66,-569","52,38,84,102,58,59,676,414,101,62,-90,60,61,63,28,29,67,68,-92,632,631","628,801,27,26,25,91,90,92,93,-93,-89,220,-99,-570,-99,699,630,-99,42","-93,427,95,94,85,51,87,86,88,467,89,96,97,-91,82,83,-88,39,40,228,102","102,754,754,204,101,101,-89,-101,102,-101,469,-96,-101,101,-569,-90","-89,630,211,206,207,215,-570,-92,53,102,55,754,-91,225,101,-88,41,227","226,632,631,604,-91,605,219,-88,813,-94,795,80,74,76,77,78,79,-90,470","-103,75,81,814,-468,907,-92,-477,-90,57,216,-468,54,64,65,66,-92,52","38,84,-475,58,59,632,631,628,62,-475,60,61,63,28,29,67,68,560,-567,503","562,-98,27,26,25,91,90,92,93,-87,516,220,249,250,518,-100,665,-96,42","-95,251,95,94,85,51,87,86,88,274,89,96,97,630,82,83,520,39,40,228,232","237,238,239,234,236,244,245,240,241,-468,-468,221,222,908,102,242,243","-468,211,101,630,215,-567,635,53,228,55,-69,271,225,269,231,41,227,226","223,224,235,233,229,219,230,-567,304,305,80,272,76,77,78,79,632,631","633,75,81,225,246,546,-238,227,226,57,-97,-468,54,-468,275,341,-474","528,38,84,64,65,66,-474,52,338,632,631,58,59,838,311,605,62,998,60,61","63,28,29,67,68,412,413,529,-93,530,27,26,25,91,90,92,93,424,-102,220","356,355,426,425,665,539,42,541,542,95,94,85,51,87,86,88,274,89,96,97","630,82,83,262,39,40,228,232,237,238,239,234,236,244,245,240,241,339","311,221,222,-473,253,242,243,341,211,630,-473,215,206,207,53,543,55","338,271,225,269,231,41,227,226,223,224,235,233,229,219,230,206,207,547","80,272,76,77,78,79,632,631,637,75,81,-470,246,652,356,355,-471,57,-470","548,54,228,275,-471,-472,311,38,84,64,65,66,-472,52,632,631,643,58,59","356,355,311,62,563,60,61,63,28,29,67,68,564,339,520,-89,571,27,26,25","91,90,92,93,625,-98,220,203,201,102,653,626,574,42,101,202,95,94,85","51,87,86,88,274,89,96,97,575,82,83,578,39,40,102,579,228,800,586,101","348,346,345,586,347,348,346,345,102,347,581,-91,583,101,211,865,838","215,865,838,53,-100,55,199,271,200,269,225,41,593,594,227,226,223,224","416,219,-88,610,611,612,80,272,76,77,78,79,-97,636,640,75,81,-335,-335","644,647,-264,649,57,650,-335,54,651,275,253,664,228,38,84,64,65,66,8","52,748,228,228,58,59,930,228,311,62,688,60,61,63,28,29,67,68,104,105","106,107,108,27,26,25,91,90,92,93,689,692,18,701,-335,-82,-335,702,7","42,704,9,95,94,85,51,87,86,88,552,89,96,97,715,82,83,721,39,40,722,586","311,348,346,345,586,347,348,346,345,341,347,897,898,724,729,899,96,97","37,338,743,281,228,744,53,746,55,961,33,348,346,345,41,347,750,203,463","589,605,758,19,797,350,464,592,80,74,76,77,78,79,356,355,225,75,81,-265","227,226,223,224,503,57,503,503,54,64,65,66,816,52,38,84,817,58,59,824","518,520,62,715,60,61,63,295,296,67,68,339,832,466,253,465,291,292,298","91,90,92,93,253,833,220,538,535,253,715,228,228,293,838,536,95,94,85","51,87,86,88,843,89,96,97,845,82,83,846,331,847,348,346,345,341,347,849","538,549,104,105,106,107,108,338,550,586,578,348,346,345,289,347,852","286,854,849,53,858,55,534,285,537,861,838,869,870,350,326,104,105,106","107,108,353,352,356,355,80,74,76,77,78,79,589,872,873,75,81,-569,875","592,466,884,465,57,578,887,54,64,65,66,889,52,299,84,891,58,59,893,895","-266,62,339,60,61,63,295,296,67,68,910,911,311,913,914,291,292,298,91","90,92,93,915,916,220,538,607,917,715,919,-264,293,923,608,95,94,85,51","87,86,88,-570,89,96,97,932,82,83,933,331,935,348,346,345,341,347,941","943,944,538,616,311,957,-267,338,963,586,614,348,346,345,289,347,849","215,972,849,53,849,55,606,976,609,932,979,980,985,350,578,570,987,989","991,993,353,352,356,355,80,74,76,77,78,79,589,993,1003,75,81,932,1011","860,301,721,615,57,537,849,54,64,65,66,932,52,299,84,1026,58,59,1027","993,993,62,339,60,61,63,295,296,67,68,993,1032,1033,993,,291,292,298","91,90,92,93,,,220,538,616,,,,,42,,742,95,94,85,51,87,86,88,,89,96,97",",82,83,,39,40,,586,,348,346,345,586,347,348,346,345,341,347,961,,348","346,345,,347,211,338,,215,,,53,,55,615,,537,,,41,,,-288,-288,589,,,219",",350,-288,,80,74,76,77,78,79,356,355,,75,81,,,,,,,57,,,54,64,65,66,","52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,339,,-288,,-288,291,292","298,91,90,92,93,,,220,538,616,,,,,42,,742,95,94,85,51,87,86,88,,89,96","97,,82,83,,39,40,,586,,348,346,345,586,347,348,346,345,341,347,,,,,",",,211,338,,215,,,53,,55,615,,537,,,41,,,-290,-290,589,,,219,,350,-290",",80,74,76,77,78,79,356,355,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,","58,59,,,,62,,60,61,63,295,296,67,68,339,,-290,,-290,291,292,298,91,90","92,93,,,220,538,1001,,,,,42,,1002,95,94,85,51,87,86,88,,89,96,97,,82","83,,39,40,,228,,,,,586,,348,346,345,341,347,,,,,,242,243,211,338,,215",",,53,,55,1000,,609,225,,41,,227,226,223,224,,,219,,350,,,80,74,76,77","78,79,356,355,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,","60,61,63,28,29,67,68,339,,,,,27,26,25,91,90,92,93,,,18,,586,,348,346","345,42,347,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,586,,348","346,345,586,347,348,346,345,341,347,589,,,,242,243,,211,338,,215,,,53",",55,,,225,,231,41,227,226,223,224,589,,229,19,230,350,,,80,74,76,77","78,79,356,355,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,","60,61,63,28,29,67,68,339,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,228,232,237,238,239,234","236,244,245,240,241,-287,-287,221,222,,,242,243,-287,211,,,215,-570",",53,,55,,271,225,,231,41,227,226,223,224,235,233,229,219,230,,,,80,272","76,77,78,79,,,,75,81,,246,818,,,,57,,-287,54,-287,275,,,,38,84,64,65","66,,52,,,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90","92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39","40,228,232,237,238,239,234,236,244,245,240,241,,,221,222,,,242,243,","211,,,215,,,53,,55,,,225,,231,41,227,226,223,224,235,233,229,219,230",",,,80,272,76,77,78,79,,,,75,81,,246,,,,,57,,,54,,275,,,,38,84,64,65","66,,52,,,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93",",,18,,586,,348,346,345,42,347,,95,94,85,51,87,86,88,,89,96,97,,82,83",",39,40,228,,,,,,586,,348,346,345,341,347,589,,,,242,243,,211,338,,215",",,53,,55,,,225,,231,41,227,226,223,224,,,229,19,230,350,,,80,74,76,77","78,79,356,355,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,","60,61,63,28,29,67,68,339,,,,,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,,,,,,586,,348,346,345","341,347,,,,,242,243,,211,338,,215,,,53,,55,,,225,,231,41,227,226,223","224,,,229,19,230,350,,,80,74,76,77,78,79,356,355,,75,81,,,,,,,57,,,54","64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,339,,,,,27,26","25,91,90,92,93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83",",39,40,228,,,,,,586,,348,346,345,341,347,,,,,242,243,,211,338,,215,",",53,,55,,,225,,231,41,227,226,223,224,,,229,19,230,350,,,80,74,76,77","78,79,356,355,,75,81,102,,,,,101,57,,,54,64,65,66,,52,38,84,,58,59,",",,62,,60,61,63,295,296,67,68,339,,,,,291,292,298,91,90,92,93,,,220,",",,,,,293,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,331,,348,346,345,341","347,,,,,,,,,338,,,,,,,368,,,31,,,53,,55,,33,,,,,,350,,,,,,,353,352,356","355,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,299,84,,58","59,,,,62,339,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220",",,,,,,293,,,95,94,85,51,87,86,373,,89,96,97,228,82,83,,331,,348,346","345,341,347,,,,,,,242,243,338,,,,379,,,374,,,215,,225,53,231,55,227","226,223,224,,,,350,,,,,,,353,352,356,355,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,-566,-566,-566,,-566,299,84,,-566,-566,,,,-566,339,-566","-566,-566,-566,-566,-566,-566,,-566,,,,-566,-566,-566,-566,-566,-566","-566,,,-566,,,,,,,-566,,,-566,-566,-566,-566,-566,-566,-566,-566,-566","-566,-566,,-566,-566,,-566,-566,228,232,237,238,239,234,236,244,245","240,241,,,221,222,,,242,243,,-566,,,-566,-566,,-566,,-566,,-566,225","-566,231,-566,227,226,223,224,235,233,229,-566,230,-566,,,-566,-566","-566,-566,-566,-566,,,,-566,-566,,246,,,,,-566,,,-566,,-566,,,,-566","-566,-567,-567,-567,,-567,,,,-567,-567,,,,-567,,-567,-567,-567,-567","-567,-567,-567,,-567,,,,-567,-567,-567,-567,-567,-567,-567,,,-567,,",",,,,-567,,,-567,-567,-567,-567,-567,-567,-567,-567,-567,-567,-567,,-567","-567,,-567,-567,228,232,237,238,239,234,236,244,245,240,241,,,221,222",",,242,243,,-567,,,-567,-567,,-567,,-567,,-567,225,-567,231,-567,227","226,223,224,235,233,229,-567,230,-567,,,-567,-567,-567,-567,-567,-567",",,,-567,-567,,246,,,,,-567,,,-567,,-567,,,,-567,-567,64,65,66,8,52,",",,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,",",,,,7,42,6,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,,,,,,586",",348,346,345,341,347,,,,,242,243,,37,338,,31,,,53,,55,,33,225,,231,41","227,226,223,224,,,,19,,350,,,80,74,76,77,78,79,356,355,,75,81,,,,,,416","57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,339,,",",,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97",",82,83,,39,40,,,,,,,586,,348,346,345,341,347,,,,,,,,211,338,,215,,,53",",55,,,,,,41,,,,,,,,19,,350,,,80,74,76,77,78,79,356,355,,75,81,,,,,,","57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,339,,",",,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97",",82,83,,39,40,228,232,237,238,239,234,236,244,245,240,241,,,221,222",",,242,243,,211,,,215,,,53,,55,,,225,,231,41,227,226,223,224,235,233","229,19,230,,,,80,74,76,77,78,79,,,,75,81,,246,,,,,57,,,54,64,65,66,","52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93",",,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,232","237,238,239,234,236,244,245,240,241,,,221,222,,,242,243,,211,,,215,",",53,,55,,,225,,231,41,227,226,223,224,235,233,229,19,230,,,,80,74,76","77,78,79,,,,75,81,,246,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,","60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94","85,51,87,86,88,,89,96,97,,82,83,,39,40,228,232,237,238,239,234,236,244","245,240,241,,,221,222,,,242,243,,211,,,215,,,53,,55,,,225,,231,41,227","226,223,224,235,233,229,19,230,,,,80,74,76,77,78,79,,,,75,81,,246,,",",,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,",",,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96","97,,82,83,,39,40,228,232,237,238,239,234,236,244,245,240,241,,,221,222",",,242,243,,37,,,31,,,53,,55,,33,225,,231,41,227,226,223,224,235,233","229,19,230,,,,80,74,76,77,78,79,,,,75,81,,246,,,,,57,,,54,64,65,66,8","52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93",",,18,,,,,,7,42,6,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228","232,237,238,239,234,236,244,245,240,241,,,221,222,,,242,243,,37,,,31",",,53,,55,,33,225,,231,41,227,226,223,224,235,233,229,19,230,,,,80,74","76,77,78,79,,,,75,81,,246,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,","62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9","95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,232,237,238,239,234","236,244,245,240,241,,,221,222,,,242,243,,37,,,31,,,53,,55,,33,225,,231","41,227,226,223,224,235,233,229,19,230,,,,80,74,76,77,78,79,,,,75,81",",246,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67","68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,","89,96,97,,82,83,,39,40,228,232,237,238,239,234,236,244,245,240,241,",",221,222,,,242,243,,211,,,215,,,53,,55,,432,225,,231,41,227,226,223","224,235,233,229,219,230,,,,80,74,76,77,78,79,,,,75,81,,246,,,,,57,,","54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26","25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83",",39,40,228,232,237,238,239,234,236,244,245,240,241,,,221,222,,,242,243",",211,,,215,,,53,,55,,,225,,231,41,227,226,223,224,235,233,229,219,230",",,,80,74,76,77,78,79,,,,75,81,,246,,,,,57,,,54,64,65,66,,52,38,84,,58","59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,",",42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,228,232,237,238","239,234,236,244,245,240,241,,,221,222,,,242,243,,211,,,215,,,53,,55",",271,225,,231,41,227,226,223,224,235,233,229,219,230,,,,80,272,76,77","78,79,,,,75,81,,246,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,,,58,59",",,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42",",,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,228,232,237,238,239","234,236,244,245,240,241,,,221,222,,,242,243,,211,,,215,,,53,,55,,271","225,,231,41,227,226,223,224,235,233,229,219,230,,,,80,272,76,77,78,79",",,,75,81,,246,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,,,58,59,,,,62",",60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,232,237,238,239,234,236","244,245,240,241,,,221,222,,,242,243,,211,,,215,,,53,,55,,,225,,231,41","227,226,223,224,235,233,229,219,230,,,,80,74,76,77,78,79,,,,75,81,,246",",,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,",",,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96","97,,82,83,,39,40,228,232,237,238,239,234,236,244,245,240,241,,,-590","-590,,,242,243,,211,,,215,,,53,,55,,432,225,,231,41,227,226,223,224","235,233,229,219,230,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65","66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90","92,93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228","232,237,238,239,234,236,244,245,240,241,,,-590,-590,,,242,243,,211,",",215,,,53,,55,,,225,,231,41,227,226,223,224,235,233,229,19,230,,,,80","74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62",",60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94","85,51,87,86,88,,89,96,97,,82,83,,39,40,228,-590,-590,-590,-590,234,236",",,-590,-590,,,,,,,242,243,,211,,,215,,,53,,55,,,225,,231,41,227,226","223,224,235,233,229,19,230,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,","54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26","25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82","83,,39,40,228,-590,-590,-590,-590,234,236,,,-590,-590,,,,,,,242,243",",37,,,31,,,53,,55,,33,225,,231,41,227,226,223,224,235,233,229,19,230",",,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59",",,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,,42",",,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,-590,-590,-590,-590","234,236,,,-590,-590,,,,,,,242,243,,211,,,215,,472,53,,55,,,225,,231","41,227,226,223,224,235,233,229,19,230,,,,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68",",,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,","89,96,97,,82,83,,39,40,228,-590,-590,-590,-590,234,236,,,-590,-590,",",,,,,242,243,,211,,,215,,,53,,55,,,225,,231,41,227,226,223,224,235,233","229,219,230,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228","-590,-590,-590,-590,234,236,,,-590,-590,,,,,,,242,243,,211,,,215,,,53",",55,,,225,,231,41,227,226,223,224,235,233,229,219,230,,,,80,74,76,77","78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61","63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94","85,51,87,86,88,,89,96,97,,82,83,,39,40,228,-590,-590,-590,-590,234,236",",,-590,-590,,,,,,,242,243,,211,,,215,,,53,,55,,,225,,231,41,227,226","223,224,235,233,229,219,230,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,",",54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291","292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97",",82,83,,39,40,228,232,237,238,239,234,236,,,240,241,,,,,,,242,243,,211",",,215,,,53,,55,,,225,,231,41,227,226,223,224,235,233,229,219,230,,,","80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,",",,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,",",,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,228,232,237,238","239,234,236,244,,240,241,,,,,,,242,243,,211,,,215,,,53,,55,,,225,,231","41,227,226,223,224,235,233,229,219,230,,,,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68",",,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,","89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41",",,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,","27,26,25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96","97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,271,,269,,41",",,,,,,,219,,,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38","84,64,65,66,,52,,,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91","90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,","39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,271,,269,,41,,,,,,,,219",",,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66",",52,,,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,",",220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,,,,",",,,,,,,,,,,,,,,,211,,,215,,514,53,,55,,271,,269,,41,,,,,,,,219,,,,,80","272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,",",58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,","220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,",",,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78","79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63","295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85","51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,","53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,","54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291","292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97",",82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,","219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84",",58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,","220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,",",,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78","79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63","28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51","87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,281,,,53,","55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54","64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292","298,91,90,92,93,,,220,,,,,,,293,,,95,94,85,51,87,86,88,,89,96,97,,82","83,,789,,348,346,345,341,347,,,,,,,,,338,,,,,,,289,,,215,,,53,,55,,",",,,,,350,778,,,,,,353,352,356,355,80,74,76,77,78,79,,,,75,81,,,,532",",,57,,,54,64,65,66,8,52,299,84,,58,59,,,,62,339,60,61,63,28,29,67,68",",,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,281,,,53,,55,,33,,,,41",",,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,293,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,331,,348","346,345,341,347,,,,,,,,,338,,,,,,,289,,,286,,,53,,55,,,,,,,,350,,,,",",,353,352,356,355,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66","311,52,299,84,,58,59,,,,62,339,60,61,63,295,296,67,68,,,,,,291,292,298","91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,","39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,552,,53,,55,,,,,,41,,,,,,,,219,",",,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58","59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7","42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,",",,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75","81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67","68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,293,,,95,94,85,51,87,86","88,,89,96,97,,82,83,,789,,348,346,345,341,347,,,,,,,,,338,,,,,,,585",",,215,,,53,,55,,,,,,,,350,,,,,,,353,352,356,355,80,74,76,77,78,79,,",",75,81,,,,,,,57,,,54,64,65,66,,52,299,84,,58,59,,,,62,339,60,61,63,28","29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94,85,51,87,86","88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,",",,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66",",52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92","93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,",",,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,19,,,,,80,74,76,77","78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61","63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,293,,,95,94","85,51,87,86,373,,89,96,97,,82,83,,331,,348,346,345,341,347,,,,,,,,,338",",,,,,,374,,,215,,,53,,55,,,,,,,,350,,,,,,,353,352,356,355,80,74,76,77","78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,299,84,,58,59,,,,62,339,60","61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94,85","51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,","53,,55,,,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54","64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292","298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82","83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219",",,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,-571,-571,-571,,-571,38","84,,-571,-571,,,,-571,,-571,-571,-571,-571,-571,-571,-571,,,,,,-571","-571,-571,-571,-571,-571,-571,,,-571,,,,,,,-571,,,-571,-571,-571,-571","-571,-571,-571,-571,-571,-571,-571,,-571,-571,,-571,-571,,,,,,,,,,,",",,,,,,,,,-571,,,-571,-571,,-571,,-571,,-571,,-571,,-571,,,,,,,,-571",",,,,-571,-571,-571,-571,-571,-571,,,,-571,-571,,,,,,,-571,,,-571,,-571",",,,-571,-571,-572,-572,-572,,-572,,,,-572,-572,,,,-572,,-572,-572,-572","-572,-572,-572,-572,,,,,,-572,-572,-572,-572,-572,-572,-572,,,-572,",",,,,,-572,,,-572,-572,-572,-572,-572,-572,-572,-572,-572,-572,-572,","-572,-572,,-572,-572,,,,,,,,,,,,,,,,,,,,,-572,,,-572,-572,,-572,,-572",",-572,,-572,,-572,,,,,,,,-572,,,,,-572,-572,-572,-572,-572,-572,,,,-572","-572,,,,,,,-572,,,-572,,-572,,,,-572,-572,64,65,66,,52,,,,58,59,,,,62",",60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211",",,215,,,53,,55,,271,,,,41,,,,,,,,219,,,,,80,272,76,77,78,79,,,,75,81",",,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,,,58,59,,,,62,,60,61,63,28","29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86","88,274,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55",",271,,,,41,,,,,,,,219,,,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54",",275,,,,38,84,64,65,66,,52,,,,58,59,,,,62,,60,61,63,295,296,67,68,,",",,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40",",,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,696,,269,,41,,,,,,,,219,,,,","80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66,,52",",,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93",",,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,269,,41,,,,,,,,219,,,,,80,272","76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,,,58","59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220",",,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,",",,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79",",,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28","29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87","86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,","33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,416,57,,,54,64","65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298","91,90,92,93,,,220,,,,,,,293,,,95,94,85,51,87,86,88,,89,96,97,,82,83",",789,,348,346,345,341,347,,,,,,,,,338,,,,,,,289,,,286,,,53,,55,,,,,",",,350,,,,,,,353,352,356,355,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54","64,65,66,,52,299,84,,58,59,,,,62,339,60,61,63,28,29,67,68,,,,,,27,26","25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82","83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,271,,,,41,,,,,,,,219",",,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66",",52,,,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,",",220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,,,,",",,,,,,,,,,,,,,,,211,,,215,,,53,,55,,271,,,,41,,,,,,,,219,,,,,80,272","76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,,,58","59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220",",,,,,,293,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,789,,348,346,345","341,347,,,,,,,,,338,,,,,,,289,,,286,,,53,,55,,,,,,,,350,,,,,,,353,352","356,355,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,299,84",",58,59,,,,62,339,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93",",,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,",",,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77","78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61","63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94","85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215",",,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57",",,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291","292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97",",82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,","219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84",",58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,",",,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,",",,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,","75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296","67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86","88,274,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55",",696,,269,,41,,,,,,,,219,,,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,","54,,275,,,,38,84,64,65,66,,52,,,,58,59,,,,62,,60,61,63,295,296,67,68",",,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274","89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41",",,,,,,,219,,,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38","84,64,65,66,8,52,,,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25","91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83",",39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,","80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59",",,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42",",9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,","37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68",",,,,,291,292,298,91,90,92,93,,,220,,,,,,,293,,,95,94,85,51,87,86,88",",89,96,97,,82,83,,789,,348,346,345,341,347,,,,,,,,,338,,,,,,,585,,,215",",,53,,55,,,,,,,,350,778,,,,,,353,352,356,355,80,74,76,77,78,79,,,,75","81,,,,,,,57,,,54,64,65,66,8,52,299,84,,58,59,,,,62,339,60,61,63,28,29","67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86","88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33",",,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66","8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92","93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,",",,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60","61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94","85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,",",53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57",",,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26","25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82","83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,271,,,,41,,,,,,,,219",",,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66",",52,,,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,",",220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,,,,",",,,,,,,,,,,,,,,,211,,,215,,,53,,55,,271,,,,41,,,,,,,,219,,,,,80,272","76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,,,58","59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,",",42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,",",,,,,,211,,,215,,,53,,55,,271,,,,41,,,,,,,,219,,,,,80,272,76,77,78,79",",,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66,,52,,,,58,59,,,,62,,60","61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94,85","51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,","53,,55,,,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54","64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25","91,90,92,93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39","40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,19,,,,,80,74","76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,","60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,",",95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211",",,215,,,53,,55,,799,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68",",,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,",",220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,",",,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78","79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63","28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87","86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55",",,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65","66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91","90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39","40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80","74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62",",60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,",",,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52","38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,",",18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,",",,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78","79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63","28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51","87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55",",33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64","65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298","91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83",",39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,696,,269,,41,,,,,,,,219",",,,,80,272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66",",52,,,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40",",,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,269,,41,,,,,,,,219,,,,,80","272,76,77,78,79,,,,75,81,,,,,,,57,,,54,,275,,,,38,84,64,65,66,8,52,",",,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,",",,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,",",,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79",",,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28","29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87","86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,","33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65","66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91","90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39","40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80","74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62",",60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42",",,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211",",,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,",",,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,",",,,,291,292,298,91,90,92,93,,,220,,,,,,,293,,,95,94,85,51,87,86,88,","89,96,97,,82,83,,789,,348,346,345,341,347,,,,,,,,,338,,,,,,,289,,,286",",,53,,55,,,,,,,,350,,,,,,,353,352,356,355,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,64,65,66,,52,299,84,,58,59,,,,62,339,60,61,63,295,296","67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,293,,,95,94,85,51,87","86,88,,89,96,97,,82,83,,,,,,,,,,,,,,,,,,,,,,,,289,,,286,,,53,,55,,,",",,,,,,,,,,,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","299,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,432,,,,41,,,,,,,,219,,,,,80,74","76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,","60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,",",95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211",",,215,,,53,,55,,271,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68",",,,,,27,26,25,91,90,92,93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96","97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,",",,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38","84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18",",,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,",",,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79",",,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28","29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87","86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,","33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65","66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90","92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40",",,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60","61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95","94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,","215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,",",57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,",",27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96","97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,",",,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84",",58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,","220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,",",,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78","79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63","28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87","86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55",",,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65","66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90","92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40",",,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74","76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,","60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,",",95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211",",,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,",",,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,",",,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,",",,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52","38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92","93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,",",,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76","77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60","61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94","85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,",",53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57",",,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26","25,91,90,92,93,,,18,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83",",39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,19,,,,","80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59",",,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42",",9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,","37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81",",,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68",",,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89","96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,",",,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38","84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93",",,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,",",,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77","78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61","63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94","85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215",",,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57",",,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291","292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97",",82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,","219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84",",58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90,92,93,,","220,,,,,,,42,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,",",,,,,,,,,,,,211,,,215,,,53,,55,,,,,,41,,,,,,,,219,,,,,80,74,76,77,78","79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,,,,62,,60,61,63","295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85","51,87,86,88,274,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215",",,53,,55,,,,269,,41,,,,,,,,219,,,,,80,272,76,77,78,79,,,,75,81,,,,,",",57,,,54,,275,,,,38,84,64,65,66,8,52,,,,58,59,,,,62,,60,61,63,28,29","67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86","88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33",",,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66",",52,38,84,,58,59,,,,62,,60,61,63,295,296,67,68,,,,,,291,292,298,91,90","92,93,,,220,,,,,,,293,,,95,94,85,51,87,86,88,,89,96,97,,82,83,,,,,,",",,,,,,,,,,,,,,,,,968,,,215,,,53,,55,,,,,,,,,,,,,,,,,,,80,74,76,77,78","79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,299,84,,58,59,,,,62,,60,61,63","295,296,67,68,,,,,,291,292,298,91,90,92,93,,,220,,,,,,,42,,,95,94,85","51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,211,,,215,,","53,,55,,696,,,,41,,,,,,,,219,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57",",,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27","26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,","82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19",",,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58","59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7","42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,",",,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75","81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67","68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88",",89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,","41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8","52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93",",,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83,,39,40,,,,,",",,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77","78,79,,,,75,81,,,,,,,57,,,54,64,65,66,8,52,38,84,,58,59,,,,62,,60,61","63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,18,,,,,,7,42,,9,95,94,85","51,87,86,88,,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53",",55,,33,,,,41,,,,,,,,19,,,,,80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54","64,65,66,8,52,38,84,,58,59,,,,62,,60,61,63,28,29,67,68,,,,,,27,26,25","91,90,92,93,,,18,,,,,,7,42,,9,95,94,85,51,87,86,88,,89,96,97,,82,83",",39,40,,,,,,,,,,,,,,,,,,,,,37,,,31,,,53,,55,,33,,,,41,,,,,,,,19,,,,","80,74,76,77,78,79,,,,75,81,,,,,,,57,,,54,64,65,66,,52,38,84,,58,59,",",,62,,60,61,63,28,29,67,68,,,,,,27,26,25,91,90,92,93,,,220,,,,,,,42",",,95,94,85,51,87,86,88,274,89,96,97,,82,83,,39,40,,,,,,,,,,,,,,,,,,",",,211,,,215,,,53,,55,,271,,,,41,,,,,,,,219,,,,-573,80,272,76,77,78,79","-573,-573,-573,75,81,,-573,-573,,-573,,57,,,54,,275,,-573,,38,84,,,",",,,,-573,-573,,-573,-573,-573,-573,-573,,,,,,,,,,,,,,,,,,,,,,-573,-573","-573,-573,-573,-573,-573,-573,-573,-573,-573,-573,-573,-573,-573,,,-573","-573,-573,,658,,,,-573,,,,,,-573,,-573,,-573,-573,-573,-573,-573,-573","-573,,-573,-573,-573,,,,,,,,,,,,,-573,-573,,-90,,-573,,-287,-573,,-573",",,-99,-287,-287,-287,,,,-287,-287,,-287,,,,,,,,,,,,,,,,,,,,-287,-287",",-287,-287,-287,-287,-287,,,,,,,,,,,,,,,,,,,,,,-287,-287,-287,-287,-287","-287,-287,-287,-287,-287,-287,-287,-287,-287,-287,,,-287,-287,-287,","661,,,,-287,,,,,,-287,,-287,,-287,-287,-287,-287,-287,-287,-287,,-287",",-287,,,,,,,,,,,,,-287,-287,,-92,,-287,,-573,-287,,-287,,,-101,-573","-573,-573,,,-573,-573,-573,,-573,,,,,,,,,-573,-573,-573,,,,,,,,,-573","-573,,-573,-573,-573,-573,-573,,,,,,,,,,,,,,,,,,,,,,-573,-573,-573,-573","-573,-573,-573,-573,-573,-573,-573,-573,-573,-573,-573,,,-573,-573,-573",",815,-573,,,-573,,-573,,-573,,-573,,-573,,-573,-573,-573,-573,-573,-573","-573,,-573,-573,-573,,,,,,,,,,,,,-573,-573,-573,-573,,-573,,-287,-573",",-573,,,-99,-287,-287,-287,,,-287,-287,-287,,-287,,,,,,,,,,-287,-287",",,,,,,,,-287,-287,,-287,-287,-287,-287,-287,,,,,,,,,,,,,,,,,,,,,,-287","-287,-287,-287,-287,-287,-287,-287,-287,-287,-287,-287,-287,-287,-287",",,-287,-287,-287,,661,-287,,,-287,,-287,,-287,,-287,,-287,,-287,-287","-287,-287,-287,-287,-287,,-287,,-287,,,,,,,,,,,,,-287,-287,-287,-287",",-287,,-401,-287,,-287,,,-101,-401,-401,-401,,,-401,-401,-401,,-401",",,,,,,,,-401,-401,-401,,,,,,,,,-401,-401,,-401,-401,-401,-401,-401,",",,,,,,,,,,,,,,,,,,,,-401,-401,-401,-401,-401,-401,-401,-401,-401,-401","-401,-401,-401,-401,-401,,,-401,-401,-401,,,-401,,253,-401,,-401,,-401",",-401,,-401,,-401,-401,-401,-401,-401,-401,-401,,-401,-401,-401,,,,",",,,,,,,,-401,-401,-401,-401,-296,-401,,,-401,,-401,-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,,262","-296,,-296,,-296,,-296,,-296,,-296,-296,-296,-296,-296,-296,-296,,-296",",-296,,,,,,,,,,,,,-296,-296,-296,-296,-279,-296,,,-296,,-296,-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,-279,",",-279,,,-279,,-279,,-279,,-279,,-279,,-279,-279,-279,-279,-279,-279","-279,,-279,,-279,,,,,,,,,,,,,-279,-279,-279,-279,-589,-279,,-279,-279",",-279,-589,-589,-589,,,-589,-589,-589,,-589,,,,,,,,,-589,-589,-589,",",,,,,,,-589,-589,,-589,-589,-589,-589,-589,,,,,,,,,,,,,,,,,,,,,,-589","-589,-589,-589,-589,-589,-589,-589,-589,-589,-589,-589,-589,-589,-589",",,-589,-589,-589,,,-589,,253,-589,,-589,,-589,,-589,,-589,,-589,-589","-589,-589,-589,-589,-589,,-589,-589,-589,,,,,,,,,,,,,-589,-589,-589","-589,-589,-589,,,-589,,-589,-589,-589,-589,,,-589,-589,-589,,-589,,",",,,,,,-589,-589,-589,,,,,,,,,-589,-589,,-589,-589,-589,-589,-589,,,",",,,,,,,,,,,,,,,,,,-589,-589,-589,-589,-589,-589,-589,-589,-589,-589","-589,-589,-589,-589,-589,,,-589,-589,-589,,,-589,,253,-589,,-589,,-589",",-589,,-589,,-589,-589,-589,-589,-589,-589,-589,,-589,-589,-589,,,,",",,,,,,,,-589,-589,-589,-589,-589,-589,,,-589,,-589,-589,-589,-589,,","-589,-589,-589,,-589,,,,,,,,,,-589,,,,,,,,,,-589,-589,,-589,-589,-589","-589,-589,,,,,,,,,,,,-589,,,,,,,-589,-589,-589,,,-589,-589,-589,,-589",",,,,-589,-589,,,,-589,,,-589,,,,,253,-589,-589,-589,,-589,-589,-589","-589,-589,,,,,,,,,,,,-589,,,,,,,,,,,,,-589,,-589,,,-589,,,-589,-589",",-589,,,,,-589,,-589,-589,-589,253,-589,-589,-589,-589,,-589,,,,,,,",",,-589,,,,,-589,,,,,-589,-589,,-589,-589,-589,-589,-589,-589,,-589,",",-589,444,448,,,446,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125","126,-589,-589,,,145,146,132,133,-589,,,,,253,-589,,,,,137,136,,121,142","139,138,134,135,129,127,119,141,120,,-589,147,,,,,,,,,,,,-589,,-589",",,-589,157,168,158,181,154,174,164,163,189,192,179,162,161,156,182,190","191,166,155,169,173,175,167,160,,,,176,183,178,177,170,180,165,153,172","171,184,185,186,187,188,152,159,150,151,148,149,112,114,111,,113,,,",",,,,,143,144,140,122,123,124,131,128,130,,,125,126,,,,,145,146,132,133",",,,,,,,,,,,137,136,,121,142,139,138,134,135,129,127,119,141,120,,,147","193,,,,,,,,,,81,157,168,158,181,154,174,164,163,189,192,179,162,161","156,182,190,191,166,155,169,173,175,167,160,,,,176,183,178,177,170,180","165,153,172,171,184,185,186,187,188,152,159,150,151,148,149,112,114",",,113,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126,,,,,145","146,132,133,,,,,,,,,,,,137,136,,121,142,139,138,134,135,129,127,119","141,120,,,147,193,,,,,,,,,,81,157,168,158,181,154,174,164,163,189,192","179,162,161,156,182,190,191,166,155,169,173,175,167,160,,,,176,183,178","177,170,180,165,153,172,171,184,185,186,187,188,152,159,150,151,148","149,112,114,,,113,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125","126,,,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142,139,138,134,135","129,127,119,141,120,,,147,193,,,,,,,,,,81,157,168,158,181,154,174,164","163,189,192,179,162,161,156,182,190,191,166,155,169,173,175,167,160",",,,176,183,178,177,170,180,165,153,172,171,184,185,186,187,188,152,159","150,151,148,149,112,114,,,113,,,,,,,,,143,144,140,122,123,124,131,128","130,,,125,126,,,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142,139,138","134,135,129,127,119,141,120,,,147,193,,,,,,,,,,81,157,168,158,181,154","174,164,163,189,192,179,162,161,156,182,190,191,166,155,169,173,175","167,160,,,,176,183,178,388,387,389,386,153,172,171,184,185,186,187,188","152,159,150,151,384,385,382,114,87,86,383,,89,,,,,,,143,144,140,122","123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,393,,,,,,137","136,,121,142,139,138,134,135,129,127,119,141,120,,,147,157,168,158,181","154,174,164,163,189,192,179,162,161,156,182,190,191,166,155,169,173","175,167,160,,,,176,183,178,177,170,180,165,153,172,171,184,185,186,187","188,152,159,150,151,148,149,112,114,410,409,113,,411,,,,,,,143,144,140","122,123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,,,137","136,,121,142,139,138,134,135,129,127,119,141,120,,,147,157,168,158,181","154,174,164,163,189,192,179,162,161,156,182,190,191,166,155,169,173","175,167,160,,,,176,183,178,177,170,180,165,153,172,171,184,185,186,187","188,152,159,150,151,148,149,112,114,410,409,113,,411,,,,,,,143,144,140","122,123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,,,137","136,,121,142,139,138,134,135,129,127,119,141,120,,,147,157,168,158,181","154,174,164,163,189,192,179,162,161,156,182,190,191,166,155,169,173","175,167,160,,,,176,183,178,177,170,180,165,153,172,171,184,185,186,187","188,152,159,150,151,148,149,112,114,,,113,,,,,,,,,143,144,140,122,123","124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,,,137,136,,121","142,139,138,134,135,129,127,119,141,120,438,442,147,,439,,,,,,,,,143","144,140,122,123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,253",",,,,,137,136,,121,142,139,138,134,135,129,127,119,141,120,451,442,147",",452,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126,,,,,145,146","132,133,,,,,,,,,,,,137,136,,121,142,139,138,134,135,129,127,119,141","120,451,442,147,,452,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125","126,,,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142,139,138,134,135","129,127,119,141,120,451,442,147,,452,,,,,,,,,143,144,140,122,123,124","131,128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142","139,138,134,135,129,127,119,141,120,451,442,147,,452,,,,,,,,,143,144","140,122,123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,",",137,136,,121,142,139,138,134,135,129,127,119,141,120,666,442,147,,667",",,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126,,,,,145,146,132","133,,,,,,253,,,,,,137,136,,121,142,139,138,134,135,129,127,119,141,120","668,448,147,,669,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126",",,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142,139,138,134,135,129","127,119,141,120,706,442,147,,707,,,,,,,,,143,144,140,122,123,124,131","128,130,,,125,126,,,,,145,146,132,133,,,,,,253,,,,,,137,136,,121,142","139,138,134,135,129,127,119,141,120,709,448,147,,710,,,,,,,,,143,144","140,122,123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,",",137,136,,121,142,139,138,134,135,129,127,119,141,120,451,442,147,,452",",,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126,,,,,145,146,132","133,,,,,,,,,,,,137,136,,121,142,139,138,134,135,129,127,119,141,120","666,442,147,,667,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126",",,,,145,146,132,133,,,,,,253,,,,,,137,136,,121,142,139,138,134,135,129","127,119,141,120,668,448,147,,669,,,,,,,,,143,144,140,122,123,124,131","128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142,139","138,134,135,129,127,119,141,120,762,442,147,,763,,,,,,,,,143,144,140","122,123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,253,,,,,","137,136,,121,142,139,138,134,135,129,127,119,141,120,764,448,147,,765",",,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126,,,,,145,146,132","133,,,,,,,,,,,,137,136,,121,142,139,138,134,135,129,127,119,141,120","770,448,147,,768,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126",",,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142,139,138,134,135,129","127,119,141,120,451,442,147,,452,,,,,,,,,143,144,140,122,123,124,131","128,130,,,125,126,,,,,145,146,132,133,,,,,,253,,,,,,137,136,,121,142","139,138,134,135,129,127,119,141,120,770,448,147,,857,,,,,,,,,143,144","140,122,123,124,131,128,130,,,125,126,,,,,145,146,132,133,,,,,,,,,,",",137,136,,121,142,139,138,134,135,129,127,119,141,120,1020,442,147,","1021,,,,,,,,,143,144,140,122,123,124,131,128,130,,,125,126,,,,,145,146","132,133,,,,,,253,,,,,,137,136,,121,142,139,138,134,135,129,127,119,141","120,1022,448,147,,1023,,,,,,,,,143,144,140,122,123,124,131,128,130,",",125,126,,,,,145,146,132,133,,,,,,,,,,,,137,136,,121,142,139,138,134","135,129,127,119,141,120,,,147"];racc_action_table=arr=Opal.get("Array").$new(25645,nil);idx=0;($a=($b=clist).$each,$a.$$p=(TMP_1=function(str){var self=TMP_1.$$s||this,$c,$d,TMP_2;if(str==null)str=nil;return($c=($d=str.$split(",",-1)).$each,$c.$$p=(TMP_2=function(i){var self=TMP_2.$$s||this,$e;if(i==null)i=nil;if(($e=i["$empty?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){}else{arr["$[]="](idx,i.$to_i())}return idx=$rb_plus(idx,1)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$c).call($d)},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b);clist=["0,0,0,0,0,359,24,325,0,0,56,294,360,0,1,0,0,0,0,0,0,0,366,210,369,6","404,0,0,0,0,0,0,0,317,212,0,317,499,503,610,287,0,0,0,0,0,0,0,0,0,0","0,762,0,0,0,871,0,0,9,0,0,290,763,701,511,627,627,378,24,499,503,210","872,294,318,3,11,318,471,471,3,0,922,212,0,404,934,0,24,0,966,0,56,294","969,0,72,511,1003,701,719,719,764,0,72,287,1020,325,0,0,0,0,0,0,359","12,359,0,0,359,1021,360,366,360,369,0,360,290,0,18,18,18,471,18,0,0","15,18,18,1033,610,287,18,765,18,18,18,18,18,18,18,287,627,762,719,21","18,18,18,18,18,18,18,290,763,18,871,764,871,871,378,871,18,290,872,18","18,18,18,18,18,18,467,18,18,18,1022,18,18,378,18,18,539,922,378,922","35,934,922,934,37,966,934,966,764,969,966,969,765,1003,969,1003,18,42","1003,18,18,1020,18,1020,18,1023,1020,382,522,78,18,600,601,706,382,1021","467,1021,18,321,1021,512,321,18,18,18,18,18,18,765,775,775,18,18,1033","707,1033,874,832,1033,18,79,539,18,19,19,19,1022,19,18,18,278,19,19","512,98,278,19,709,19,19,19,19,19,19,19,710,522,522,522,651,19,19,19","19,19,19,19,539,706,19,1022,1023,1022,522,638,1022,19,539,194,19,19","19,19,19,19,19,211,19,19,19,707,19,19,832,19,19,475,600,601,600,601","14,600,601,706,1023,775,1023,213,651,1023,775,709,709,706,395,19,16","16,19,710,710,19,874,19,874,707,475,874,832,19,475,475,638,638,364,707","364,19,832,666,14,638,19,19,19,19,19,19,709,214,14,19,19,667,383,816","710,36,709,19,220,383,19,27,27,27,710,27,19,19,384,27,27,395,395,395","27,384,27,27,27,27,27,27,27,725,373,252,725,666,27,27,27,27,27,27,27","36,266,27,23,23,267,667,459,816,27,36,23,27,27,27,27,27,27,27,27,27","27,27,397,27,27,270,27,27,459,459,459,459,459,459,459,459,459,459,459","373,373,459,459,817,363,459,459,373,27,363,399,27,373,399,27,476,27","280,27,459,27,459,27,459,459,459,459,459,459,459,27,459,373,38,38,27","27,27,27,27,27,397,397,397,27,27,476,459,303,459,476,476,27,817,373","27,373,27,575,385,282,27,27,28,28,28,385,28,575,399,399,28,28,982,959","982,28,959,28,28,28,28,28,28,28,84,84,283,303,284,28,28,28,28,28,28","28,111,303,28,575,575,111,111,672,289,28,299,299,28,28,28,28,28,28,28","28,28,28,28,401,28,28,292,28,28,672,672,672,672,672,672,672,672,672","672,672,575,293,672,672,386,298,672,672,884,28,406,386,28,313,313,28","300,28,884,28,672,28,672,28,672,672,672,672,672,672,672,28,672,358,358","304,28,28,28,28,28,28,401,401,401,28,28,387,672,438,884,884,388,28,387","305,28,308,28,388,389,314,28,28,29,29,29,389,29,406,406,406,29,29,578","578,316,29,319,29,29,29,29,29,29,29,320,884,322,438,330,29,29,29,29","29,29,29,391,438,29,13,13,620,439,391,331,29,620,13,29,29,29,29,29,29","29,29,29,29,29,332,29,29,333,29,29,773,335,494,650,592,773,592,592,592","860,592,860,860,860,779,860,336,439,340,779,29,749,749,29,1006,1006","29,439,29,13,29,13,29,494,29,354,357,494,494,494,494,365,29,650,368","370,374,29,29,29,29,29,29,650,400,403,29,29,43,43,422,428,430,433,29","436,43,29,437,29,445,456,477,29,29,31,31,31,31,31,592,478,479,31,31","860,480,505,31,508,31,31,31,31,31,31,31,5,5,5,5,5,31,31,31,31,31,31","31,509,513,31,527,43,528,43,531,31,31,533,31,31,31,31,31,31,31,31,540","31,31,31,544,31,31,553,31,31,554,350,555,350,350,350,581,350,581,581","581,581,581,793,793,556,569,793,793,793,31,581,585,31,495,587,31,591","31,910,31,910,910,910,31,910,596,209,209,350,602,603,31,642,581,209","350,31,31,31,31,31,31,581,581,495,31,31,648,495,495,495,495,654,31,659","662,31,32,32,32,670,32,31,31,671,32,32,687,693,695,32,703,32,32,32,32","32,32,32,581,705,209,708,209,32,32,32,32,32,32,32,711,712,32,288,288","713,714,717,718,32,720,288,32,32,32,32,32,32,32,723,32,32,32,727,32","32,728,57,732,57,57,57,57,57,733,306,306,279,279,279,279,279,57,306","589,735,589,589,589,32,589,738,32,739,741,32,745,32,288,32,288,747,751","757,759,57,57,700,700,700,700,700,57,57,57,57,32,32,32,32,32,32,589","761,766,32,32,770,771,589,306,782,306,32,783,785,32,33,33,33,786,33","32,32,787,33,33,789,792,798,33,57,33,33,33,33,33,33,33,819,820,821,822","823,33,33,33,33,33,33,33,825,826,33,367,367,827,831,836,839,33,840,367","33,33,33,33,33,33,33,857,33,33,33,862,33,33,863,326,866,326,326,326","326,326,876,879,880,376,376,881,901,902,326,912,746,376,746,746,746","33,746,925,33,926,927,33,928,33,367,929,367,931,936,937,945,326,947","326,949,950,951,952,326,326,326,326,33,33,33,33,33,33,746,954,968,33","33,977,984,746,33,999,376,33,376,1004,33,39,39,39,1005,39,33,33,1010","39,39,1012,1013,1014,39,326,39,39,39,39,39,39,39,1015,1016,1019,1034",",39,39,39,39,39,39,39,,,39,584,584,,,,,39,,584,39,39,39,39,39,39,39",",39,39,39,,39,39,,39,39,,748,,748,748,748,847,748,847,847,847,847,847","998,,998,998,998,,998,39,847,,39,,,39,,39,584,,584,,,39,,,612,612,748",",,39,,847,612,,39,39,39,39,39,39,847,847,,39,39,,,,,,,39,,,39,40,40","40,,40,39,39,,40,40,,,,40,,40,40,40,40,40,40,40,847,,612,,612,40,40","40,40,40,40,40,,,40,734,734,,,,,40,,734,40,40,40,40,40,40,40,,40,40","40,,40,40,,40,40,,861,,861,861,861,849,861,849,849,849,849,849,,,,,",",,40,849,,40,,,40,,40,734,,734,,,40,,,873,873,861,,,40,,849,873,,40","40,40,40,40,40,849,849,,40,40,,,,,,,40,,,40,41,41,41,,41,40,40,,41,41",",,,41,,41,41,41,41,41,41,41,849,,873,,873,41,41,41,41,41,41,41,,,41","967,967,,,,,41,,967,41,41,41,41,41,41,41,,41,41,41,,41,41,,41,41,,483",",,,,854,,854,854,854,854,854,,,,,,483,483,41,854,,41,,,41,,41,967,,967","483,,41,,483,483,483,483,,,41,,854,,,41,41,41,41,41,41,854,854,,41,41",",,,,,,41,,,41,53,53,53,,53,41,41,,53,53,,,,53,,53,53,53,53,53,53,53","854,,,,,53,53,53,53,53,53,53,,,53,,930,,930,930,930,53,930,,53,53,53","53,53,53,53,,53,53,53,,53,53,,53,53,485,932,,932,932,932,891,932,891","891,891,891,891,930,,,,485,485,,53,891,,53,,,53,,53,,,485,,485,53,485","485,485,485,932,,485,53,485,891,,,53,53,53,53,53,53,891,891,,53,53,",",,,,,53,,,53,54,54,54,,54,53,53,,54,54,,,,54,,54,54,54,54,54,54,54,891",",,,,54,54,54,54,54,54,54,,,54,,,,,,,54,,,54,54,54,54,54,54,54,54,54","54,54,,54,54,,54,54,674,674,674,674,674,674,674,674,674,674,674,768","768,674,674,,,674,674,768,54,,,54,768,,54,,54,,54,674,,674,54,674,674","674,674,674,674,674,54,674,,,,54,54,54,54,54,54,,,,54,54,,674,674,,",",54,,768,54,768,54,,,,54,54,55,55,55,,55,,,,55,55,,,,55,,55,55,55,55","55,55,55,,,,,,55,55,55,55,55,55,55,,,55,,,,,,,55,,,55,55,55,55,55,55","55,55,55,55,55,,55,55,,55,55,20,20,20,20,20,20,20,20,20,20,20,,,20,20",",,20,20,,55,,,55,,,55,,55,,,20,,20,55,20,20,20,20,20,20,20,55,20,,,","55,55,55,55,55,55,,,,55,55,,20,,,,,55,,,55,,55,,,,55,55,58,58,58,,58",",,,58,58,,,,58,,58,58,58,58,58,58,58,,,,,,58,58,58,58,58,58,58,,,58",",976,,976,976,976,58,976,,58,58,58,58,58,58,58,,58,58,58,,58,58,,58","58,486,,,,,,972,,972,972,972,972,972,976,,,,486,486,,58,972,,58,,,58",",58,,,486,,486,58,486,486,486,486,,,486,58,486,972,,,58,58,58,58,58","58,972,972,,58,58,,,,,,,58,,,58,59,59,59,,59,58,58,,59,59,,,,59,,59","59,59,59,59,59,59,972,,,,,59,59,59,59,59,59,59,,,59,,,,,,,59,,,59,59","59,59,59,59,59,,59,59,59,,59,59,,59,59,487,,,,,,989,,989,989,989,989","989,,,,,487,487,,59,989,,59,,,59,,59,,,487,,487,59,487,487,487,487,",",487,59,487,989,,,59,59,59,59,59,59,989,989,,59,59,,,,,,,59,,,59,62","62,62,,62,59,59,,62,62,,,,62,,62,62,62,62,62,62,62,989,,,,,62,62,62","62,62,62,62,,,62,,,,,,,62,,,62,62,62,62,62,62,62,,62,62,62,,62,62,,62","62,488,,,,,,991,,991,991,991,991,991,,,,,488,488,,62,991,,62,,,62,,62",",,488,,488,62,488,488,488,488,,,488,62,488,991,,,62,62,62,62,62,62,991","991,,62,62,62,,,,,62,62,,,62,63,63,63,,63,62,62,,63,63,,,,63,,63,63","63,63,63,63,63,991,,,,,63,63,63,63,63,63,63,,,63,,,,,,,63,,,63,63,63","63,63,63,63,,63,63,63,,63,63,,571,,571,571,571,571,571,,,,,,,,,571,",",,,,,63,,,63,,,63,,63,,63,,,,,,571,,,,,,,571,571,571,571,63,63,63,63","63,63,,,,63,63,,,,,,,63,,,63,64,64,64,,64,63,63,,64,64,,,,64,571,64","64,64,64,64,64,64,,,,,,64,64,64,64,64,64,64,,,64,,,,,,,64,,,64,64,64","64,64,64,64,,64,64,64,481,64,64,,579,,579,579,579,579,579,,,,,,,481","481,579,,,,64,,,64,,,64,,481,64,481,64,481,481,481,481,,,,579,,,,,,","579,579,579,579,64,64,64,64,64,64,,,,64,64,,,,,,,64,,,64,85,85,85,,85","64,64,,85,85,,,,85,579,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,264","264,264,264,264,264,264,264,264,264,264,,,264,264,,,264,264,,85,,,85","85,,85,,85,,85,264,85,264,85,264,264,264,264,264,264,264,85,264,85,",",85,85,85,85,85,85,,,,85,85,,264,,,,,85,,,85,,85,,,,85,85,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,88,435,435","435,435,435,435,435,435,435,435,435,,,435,435,,,435,435,,88,,,88,88",",88,,88,,88,435,88,435,88,435,435,435,435,435,435,435,88,435,88,,,88","88,88,88,88,88,,,,88,88,,435,,,,,88,,,88,,88,,,,88,88,100,100,100,100","100,,,,100,100,,,,100,,100,100,100,100,100,100,100,,,,,,100,100,100","100,100,100,100,,,100,,,,,,100,100,100,100,100,100,100,100,100,100,100",",100,100,100,,100,100,,100,100,482,,,,,,993,,993,993,993,993,993,,,",",482,482,,100,993,,100,,,100,,100,,100,482,,482,100,482,482,482,482",",,,100,,993,,,100,100,100,100,100,100,993,993,,100,100,,,,,,100,100",",,100,104,104,104,,104,100,100,,104,104,,,,104,,104,104,104,104,104","104,104,993,,,,,104,104,104,104,104,104,104,,,104,,,,,,,104,,,104,104","104,104,104,104,104,,104,104,104,,104,104,,104,104,,,,,,,1027,,1027","1027,1027,1027,1027,,,,,,,,104,1027,,104,,,104,,104,,,,,,104,,,,,,,","104,,1027,,,104,104,104,104,104,104,1027,1027,,104,104,,,,,,,104,,,104","105,105,105,,105,104,104,,105,105,,,,105,,105,105,105,105,105,105,105","1027,,,,,105,105,105,105,105,105,105,,,105,,,,,,,105,,,105,105,105,105","105,105,105,,105,105,105,,105,105,,105,105,454,454,454,454,454,454,454","454,454,454,454,,,454,454,,,454,454,,105,,,105,,,105,,105,,,454,,454","105,454,454,454,454,454,454,454,105,454,,,,105,105,105,105,105,105,",",,105,105,,454,,,,,105,,,105,106,106,106,,106,105,105,,106,106,,,,106",",106,106,106,106,106,106,106,,,,,,106,106,106,106,106,106,106,,,106",",,,,,,106,,,106,106,106,106,106,106,106,,106,106,106,,106,106,,106,106","551,551,551,551,551,551,551,551,551,551,551,,,551,551,,,551,551,,106",",,106,,,106,,106,,,551,,551,106,551,551,551,551,551,551,551,106,551",",,,106,106,106,106,106,106,,,,106,106,,551,,,,,106,,,106,107,107,107",",107,106,106,,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,716,716,716,716,716,716,716,716,716,716,716",",,716,716,,,716,716,,107,,,107,,,107,,107,,,716,,716,107,716,716,716","716,716,716,716,107,716,,,,107,107,107,107,107,107,,,,107,107,,716,",",,,107,,,107,108,108,108,108,108,107,107,,108,108,,,,108,,108,108,108","108,108,108,108,,,,,,108,108,108,108,108,108,108,,,108,,,,,,108,108",",108,108,108,108,108,108,108,108,,108,108,108,,108,108,,108,108,803","803,803,803,803,803,803,803,803,803,803,,,803,803,,,803,803,,108,,,108",",,108,,108,,108,803,,803,108,803,803,803,803,803,803,803,108,803,,,","108,108,108,108,108,108,,,,108,108,,803,,,,,108,,,108,109,109,109,109","109,108,108,,109,109,,,,109,,109,109,109,109,109,109,109,,,,,,109,109","109,109,109,109,109,,,109,,,,,,109,109,109,109,109,109,109,109,109,109","109,,109,109,109,,109,109,,109,109,805,805,805,805,805,805,805,805,805","805,805,,,805,805,,,805,805,,109,,,109,,,109,,109,,109,805,,805,109","805,805,805,805,805,805,805,109,805,,,,109,109,109,109,109,109,,,,109","109,,805,,,,,109,,,109,196,196,196,196,196,109,109,,196,196,,,,196,","196,196,196,196,196,196,196,,,,,,196,196,196,196,196,196,196,,,196,",",,,,196,196,,196,196,196,196,196,196,196,196,,196,196,196,,196,196,","196,196,808,808,808,808,808,808,808,808,808,808,808,,,808,808,,,808","808,,196,,,196,,,196,,196,,196,808,,808,196,808,808,808,808,808,808","808,196,808,,,,196,196,196,196,196,196,,,,196,196,,808,,,,,196,,,196","197,197,197,,197,196,196,,197,197,,,,197,,197,197,197,197,197,197,197",",,,,,197,197,197,197,197,197,197,,,197,,,,,,,197,,,197,197,197,197,197","197,197,,197,197,197,,197,197,,197,197,810,810,810,810,810,810,810,810","810,810,810,,,810,810,,,810,810,,197,,,197,,,197,,197,,197,810,,810","197,810,810,810,810,810,810,810,197,810,,,,197,197,197,197,197,197,",",,197,197,,810,,,,,197,,,197,198,198,198,,198,197,197,,198,198,,,,198",",198,198,198,198,198,198,198,,,,,,198,198,198,198,198,198,198,,,198",",,,,,,198,,,198,198,198,198,198,198,198,,198,198,198,,198,198,,198,198","812,812,812,812,812,812,812,812,812,812,812,,,812,812,,,812,812,,198",",,198,,,198,,198,,,812,,812,198,812,812,812,812,812,812,812,198,812",",,,198,198,198,198,198,198,,,,198,198,,812,,,,,198,,,198,199,199,199",",199,198,198,,199,199,,,,199,,199,199,199,199,199,199,199,,,,,,199,199","199,199,199,199,199,,,199,,,,,,,199,,,199,199,199,199,199,199,199,199","199,199,199,,199,199,,199,199,904,904,904,904,904,904,904,904,904,904","904,,,904,904,,,904,904,,199,,,199,,,199,,199,,199,904,,904,199,904","904,904,904,904,904,904,199,904,,,,199,199,199,199,199,199,,,,199,199",",904,,,,,199,,,199,,199,,,,199,199,200,200,200,,200,,,,200,200,,,,200",",200,200,200,200,200,200,200,,,,,,200,200,200,200,200,200,200,,,200",",,,,,,200,,,200,200,200,200,200,200,200,200,200,200,200,,200,200,,200","200,906,906,906,906,906,906,906,906,906,906,906,,,906,906,,,906,906",",200,,,200,,,200,,200,,200,906,,906,200,906,906,906,906,906,906,906","200,906,,,,200,200,200,200,200,200,,,,200,200,,906,,,,,200,,,200,,200",",,,200,200,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,204,,204,204,958,958,958,958,958,958,958","958,958,958,958,,,958,958,,,958,958,,204,,,204,,,204,,204,,,958,,958","204,958,958,958,958,958,958,958,204,958,,,,204,204,204,204,204,204,",",,204,204,,958,,,,,204,,,204,205,205,205,,205,204,204,,205,205,,,,205",",205,205,205,205,205,205,205,,,,,,205,205,205,205,205,205,205,,,205",",,,,,,205,,,205,205,205,205,205,205,205,,205,205,205,,205,205,,205,205","473,473,473,473,473,473,473,473,473,473,473,,,473,473,,,473,473,,205",",,205,,,205,,205,,205,473,,473,205,473,473,473,473,473,473,473,205,473",",,,205,205,205,205,205,205,,,,205,205,,,,,,,205,,,205,206,206,206,,206","205,205,,206,206,,,,206,,206,206,206,206,206,206,206,,,,,,206,206,206","206,206,206,206,,,206,,,,,,,206,,,206,206,206,206,206,206,206,,206,206","206,,206,206,,206,206,474,474,474,474,474,474,474,474,474,474,474,,","474,474,,,474,474,,206,,,206,,,206,,206,,,474,,474,206,474,474,474,474","474,474,474,206,474,,,,206,206,206,206,206,206,,,,206,206,,,,,,,206",",,206,207,207,207,,207,206,206,,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,,207,207,484,484,484,484,484,484","484,,,484,484,,,,,,,484,484,,207,,,207,,,207,,207,,,484,,484,207,484","484,484,484,484,484,484,207,484,,,,207,207,207,207,207,207,,,,207,207",",,,,,,207,,,207,215,215,215,215,215,207,207,,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,215","489,489,489,489,489,489,489,,,489,489,,,,,,,489,489,,215,,,215,,,215",",215,,215,489,,489,215,489,489,489,489,489,489,489,215,489,,,,215,215","215,215,215,215,,,,215,215,,,,,,,215,,,215,216,216,216,,216,215,215",",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,,216,216,490,490,490,490,490,490,490,,,490,490,,,,,,,490,490",",216,,,216,,216,216,,216,,,490,,490,216,490,490,490,490,490,490,490","216,490,,,,216,216,216,216,216,216,,,,216,216,,,,,,,216,,,216,219,219","219,,219,216,216,,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,491,491,491,491,491,491,491,,,491,491",",,,,,,491,491,,219,,,219,,,219,,219,,,491,,491,219,491,491,491,491,491","491,491,219,491,,,,219,219,219,219,219,219,,,,219,219,,,,,,,219,,,219","221,221,221,,221,219,219,,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,492,492,492,492,492,492,492,",",492,492,,,,,,,492,492,,221,,,221,,,221,,221,,,492,,492,221,492,492","492,492,492,492,492,221,492,,,,221,221,221,221,221,221,,,,221,221,,",",,,,221,,,221,222,222,222,,222,221,221,,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,493,493,493,493","493,493,493,,,493,493,,,,,,,493,493,,222,,,222,,,222,,222,,,493,,493","222,493,493,493,493,493,493,493,222,493,,,,222,222,222,222,222,222,",",,222,222,,,,,,,222,,,222,223,223,223,,223,222,222,,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","496,496,496,496,496,496,496,,,496,496,,,,,,,496,496,,223,,,223,,,223",",223,,,496,,496,223,496,496,496,496,496,496,496,223,496,,,,223,223,223","223,223,223,,,,223,223,,,,,,,223,,,223,224,224,224,,224,223,223,,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,497,497,497,497,497,497,497,497,,497,497,,,,,,,497,497",",224,,,224,,,224,,224,,,497,,497,224,497,497,497,497,497,497,497,224","497,,,,224,224,224,224,224,224,,,,224,224,,,,,,,224,,,224,225,225,225",",225,224,224,,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,,,225,,225,",",,,,225,,,,,,,,225,,,,,225,225,225,225,225,225,,,,225,225,,,,,,,225",",,225,226,226,226,,226,225,225,,226,226,,,,226,,226,226,226,226,226","226,226,,,,,,226,226,226,226,226,226,226,,,226,,,,,,,226,,,226,226,226","226,226,226,226,,226,226,226,,226,226,,226,226,,,,,,,,,,,,,,,,,,,,,226",",,226,,,226,,226,,,,,,226,,,,,,,,226,,,,,226,226,226,226,226,226,,,","226,226,,,,,,,226,,,226,227,227,227,,227,226,226,,227,227,,,,227,,227","227,227,227,227,227,227,,,,,,227,227,227,227,227,227,227,,,227,,,,,",",227,,,227,227,227,227,227,227,227,,227,227,227,,227,227,,227,227,,",",,,,,,,,,,,,,,,,,,227,,,227,,,227,,227,,,,,,227,,,,,,,,227,,,,,227,227","227,227,227,227,,,,227,227,,,,,,,227,,,227,228,228,228,,228,227,227",",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,228,228,228,228,,,,228,228,,,,,,,228,,,228,229","229,229,,229,228,228,,229,229,,,,229,,229,229,229,229,229,229,229,,",",,,229,229,229,229,229,229,229,,,229,,,,,,,229,,,229,229,229,229,229","229,229,,229,229,229,,229,229,,229,229,,,,,,,,,,,,,,,,,,,,,229,,,229",",,229,,229,,,,,,229,,,,,,,,229,,,,,229,229,229,229,229,229,,,,229,229",",,,,,,229,,,229,230,230,230,,230,229,229,,230,230,,,,230,,230,230,230","230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230,,,,,,,230,,,230","230,230,230,230,230,230,,230,230,230,,230,230,,230,230,,,,,,,,,,,,,",",,,,,,,230,,,230,,,230,,230,,,,,,230,,,,,,,,230,,,,,230,230,230,230","230,230,,,,230,230,,,,,,,230,,,230,231,231,231,,231,230,230,,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",",,,,231,231,231,231,231,231,,,,231,231,,,,,,,231,,,231,232,232,232,","232,231,231,,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,,232,232,,,,,,,,,,,,,,,,,,,,,232,,,232,,,232,,232,",",,,,232,,,,,,,,232,,,,,232,232,232,232,232,232,,,,232,232,,,,,,,232",",,232,233,233,233,,233,232,232,,233,233,,,,233,,233,233,233,233,233","233,233,,,,,,233,233,233,233,233,233,233,,,233,,,,,,,233,,,233,233,233","233,233,233,233,,233,233,233,,233,233,,233,233,,,,,,,,,,,,,,,,,,,,,233",",,233,,,233,,233,,,,,,233,,,,,,,,233,,,,,233,233,233,233,233,233,,,","233,233,,,,,,,233,,,233,234,234,234,,234,233,233,,234,234,,,,234,,234","234,234,234,234,234,234,,,,,,234,234,234,234,234,234,234,,,234,,,,,",",234,,,234,234,234,234,234,234,234,,234,234,234,,234,234,,234,234,,",",,,,,,,,,,,,,,,,,,234,,,234,,,234,,234,,,,,,234,,,,,,,,234,,,,,234,234","234,234,234,234,,,,234,234,,,,,,,234,,,234,235,235,235,,235,234,234",",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,,235,235,,,,,,,,,,,,,,,,,,,,,235,,,235,,,235,,235,,,,,,235,",",,,,,,235,,,,,235,235,235,235,235,235,,,,235,235,,,,,,,235,,,235,236","236,236,,236,235,235,,236,236,,,,236,,236,236,236,236,236,236,236,,",",,,236,236,236,236,236,236,236,,,236,,,,,,,236,,,236,236,236,236,236","236,236,,236,236,236,,236,236,,236,236,,,,,,,,,,,,,,,,,,,,,236,,,236",",,236,,236,,,,,,236,,,,,,,,236,,,,,236,236,236,236,236,236,,,,236,236",",,,,,,236,,,236,237,237,237,,237,236,236,,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,,237,237,,,,,,,,,,,,,",",,,,,,,237,,,237,,,237,,237,,,,,,237,,,,,,,,237,,,,,237,237,237,237","237,237,,,,237,237,,,,,,,237,,,237,238,238,238,,238,237,237,,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",",238,238,,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,,238,,,,,,238,,,,,,,,238",",,,,238,238,238,238,238,238,,,,238,238,,,,,,,238,,,238,239,239,239,","239,238,238,,239,239,,,,239,,239,239,239,239,239,239,239,,,,,,239,239","239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,,239","239,239,,239,239,,239,239,,,,,,,,,,,,,,,,,,,,,239,,,239,,,239,,239,",",,,,239,,,,,,,,239,,,,,239,239,239,239,239,239,,,,239,239,,,,,,,239",",,239,240,240,240,,240,239,239,,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,,240,240,,,,,,,,,,,,,,,,,,,,,240",",,240,,,240,,240,,,,,,240,,,,,,,,240,,,,,240,240,240,240,240,240,,,","240,240,,,,,,,240,,,240,241,241,241,,241,240,240,,241,241,,,,241,,241","241,241,241,241,241,241,,,,,,241,241,241,241,241,241,241,,,241,,,,,",",241,,,241,241,241,241,241,241,241,,241,241,241,,241,241,,241,241,,",",,,,,,,,,,,,,,,,,,241,,,241,,,241,,241,,,,,,241,,,,,,,,241,,,,,241,241","241,241,241,241,,,,241,241,,,,,,,241,,,241,242,242,242,,242,241,241",",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,242,,,,,,,,,,,,,,,,,,,,,242,,,242,,,242,,242,,,,,,242,",",,,,,,242,,,,,242,242,242,242,242,242,,,,242,242,,,,,,,242,,,242,243","243,243,,243,242,242,,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,,243,243,,,,,,,,,,,,,,,,,,,,,243,,,243",",,243,,243,,,,,,243,,,,,,,,243,,,,,243,243,243,243,243,243,,,,243,243",",,,,,,243,,,243,244,244,244,,244,243,243,,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,244,,,,,,,,,,,,,",",,,,,,,244,,,244,,,244,,244,,,,,,244,,,,,,,,244,,,,,244,244,244,244","244,244,,,,244,244,,,,,,,244,,,244,245,245,245,,245,244,244,,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",",245,245,,,,,,,,,,,,,,,,,,,,,245,,,245,,,245,,245,,,,,,245,,,,,,,,245",",,,,245,245,245,245,245,245,,,,245,245,,,,,,,245,,,245,253,253,253,","253,245,245,,253,253,,,,253,,253,253,253,253,253,253,253,,,,,,253,253","253,253,253,253,253,,,253,,,,,,,253,,,253,253,253,253,253,253,253,253","253,253,253,,253,253,,253,253,,,,,,,,,,,,,,,,,,,,,253,,,253,,,253,,253",",253,,253,,253,,,,,,,,253,,,,,253,253,253,253,253,253,,,,253,253,,,",",,,253,,,253,,253,,,,253,253,254,254,254,,254,,,,254,254,,,,254,,254","254,254,254,254,254,254,,,,,,254,254,254,254,254,254,254,,,254,,,,,",",254,,,254,254,254,254,254,254,254,254,254,254,254,,254,254,,254,254",",,,,,,,,,,,,,,,,,,,,254,,,254,,,254,,254,,254,,254,,254,,,,,,,,254,",",,,254,254,254,254,254,254,,,,254,254,,,,,,,254,,,254,,254,,,,254,254","262,262,262,,262,,,,262,262,,,,262,,262,262,262,262,262,262,262,,,,",",262,262,262,262,262,262,262,,,262,,,,,,,262,,,262,262,262,262,262,262","262,262,262,262,262,,262,262,,262,262,,,,,,,,,,,,,,,,,,,,,262,,,262",",262,262,,262,,262,,262,,262,,,,,,,,262,,,,,262,262,262,262,262,262",",,,262,262,,,,,,,262,,,262,,262,,,,262,262,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,,,269,,269,,,,,,269,,,,,,,,269",",,,,269,269,269,269,269,269,,,,269,269,,,,,,,269,,,269,271,271,271,","271,269,269,,271,271,,,,271,,271,271,271,271,271,271,271,,,,,,271,271","271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271,271,271,,271","271,271,,271,271,,271,271,,,,,,,,,,,,,,,,,,,,,271,,,271,,,271,,271,",",,,,271,,,,,,,,271,,,,,271,271,271,271,271,271,,,,271,271,,,,,,,271",",,271,274,274,274,,274,271,271,,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,,,,,274,274,274,274,274,274,,,","274,274,,,,,,,274,,,274,275,275,275,,275,274,274,,275,275,,,,275,,275","275,275,275,275,275,275,,,,,,275,275,275,275,275,275,275,,,275,,,,,",",275,,,275,275,275,275,275,275,275,,275,275,275,,275,275,,275,275,,",",,,,,,,,,,,,,,,,,,275,,,275,,,275,,275,,,,,,275,,,,,,,,275,,,,,275,275","275,275,275,275,,,,275,275,,,,,,,275,,,275,281,281,281,281,281,275,275",",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,281,,,,,,,,,,,,,,,,,,,,,281,,,281,,,281,,281,,281",",,,281,,,,,,,,281,,,,,281,281,281,281,281,281,,,,281,281,,,,,,,281,",",281,285,285,285,,285,281,281,,285,285,,,,285,,285,285,285,285,285,285","285,,,,,,285,285,285,285,285,285,285,,,285,,,,,,,285,,,285,285,285,285","285,285,285,,285,285,285,,285,285,,623,,623,623,623,623,623,,,,,,,,","623,,,,,,,285,,,285,,,285,,285,,,,,,,,623,623,,,,,,623,623,623,623,285","285,285,285,285,285,,,,285,285,,,,285,,,285,,,285,286,286,286,286,286","285,285,,286,286,,,,286,623,286,286,286,286,286,286,286,,,,,,286,286","286,286,286,286,286,,,286,,,,,,286,286,,286,286,286,286,286,286,286","286,,286,286,286,,286,286,,286,286,,,,,,,,,,,,,,,,,,,,,286,,,286,,,286",",286,,286,,,,286,,,,,,,,286,,,,,286,286,286,286,286,286,,,,286,286,",",,,,,286,,,286,301,301,301,,301,286,286,,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,,676,,676,676,676,676","676,,,,,,,,,676,,,,,,,301,,,301,,,301,,301,,,,,,,,676,,,,,,,676,676","676,676,301,301,301,301,301,301,,,,301,301,,,,,,,301,,,301,310,310,310","676,310,301,301,,310,310,,,,310,676,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,310",",310,,310,,,,,,310,,,,,,,,310,,,,,310,310,310,310,310,310,,,,310,310",",,,,,,310,,,310,312,312,312,312,312,310,310,,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,312",",,,,,,,,,,,,,,,,,,,,312,,,312,,,312,,312,,312,,,,312,,,,,,,,312,,,,","312,312,312,312,312,312,,,,312,312,,,,,,,312,,,312,342,342,342,,342","312,312,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,,342,342,342","342,342,342,342,,,342,,,,,,,342,,,342,342,342,342,342,342,342,,342,342","342,,342,342,,778,,778,778,778,778,778,,,,,,,,,778,,,,,,,342,,,342,",",342,,342,,,,,,,,778,,,,,,,778,778,778,778,342,342,342,342,342,342,",",,342,342,,,,,,,342,,,342,361,361,361,,361,342,342,,361,361,,,,361,778","361,361,361,361,361,361,361,,,,,,361,361,361,361,361,361,361,,,361,",",,,,,361,,,361,361,361,361,361,361,361,,361,361,361,,361,361,,361,361",",,,,,,,,,,,,,,,,,,,,361,,,361,,,361,,361,,,,,,361,,,,,,,,361,,,,,361","361,361,361,361,361,,,,361,361,,,,,,,361,,,361,362,362,362,,362,361","361,,362,362,,,,362,,362,362,362,362,362,362,362,,,,,,362,362,362,362","362,362,362,,,362,,,,,,,362,,,362,362,362,362,362,362,362,,362,362,362",",362,362,,362,362,,,,,,,,,,,,,,,,,,,,,362,,,362,,,362,,362,,,,,,362",",,,,,,,362,,,,,362,362,362,362,362,362,,,,362,362,,,,,,,362,,,362,381","381,381,,381,362,362,,381,381,,,,381,,381,381,381,381,381,381,381,,",",,,381,381,381,381,381,381,381,,,381,,,,,,,381,,,381,381,381,381,381","381,381,,381,381,381,,381,381,,852,,852,852,852,852,852,,,,,,,,,852",",,,,,,381,,,381,,,381,,381,,,,,,,,852,,,,,,,852,852,852,852,381,381","381,381,381,381,,,,381,381,,,,,,,381,,,381,393,393,393,,393,381,381",",393,393,,,,393,852,393,393,393,393,393,393,393,,,,,,393,393,393,393","393,393,393,,,393,,,,,,,393,,,393,393,393,393,393,393,393,,393,393,393",",393,393,,393,393,,,,,,,,,,,,,,,,,,,,,393,,,393,,,393,,393,,,,,,393",",,,,,,,393,,,,,393,393,393,393,393,393,,,,393,393,,,,,,,393,,,393,432","432,432,,432,393,393,,432,432,,,,432,,432,432,432,432,432,432,432,,",",,,432,432,432,432,432,432,432,,,432,,,,,,,432,,,432,432,432,432,432","432,432,,432,432,432,,432,432,,432,432,,,,,,,,,,,,,,,,,,,,,432,,,432",",,432,,432,,,,,,432,,,,,,,,432,,,,,432,432,432,432,432,432,,,,432,432",",,,,,,432,,,432,448,448,448,,448,432,432,,448,448,,,,448,,448,448,448","448,448,448,448,,,,,,448,448,448,448,448,448,448,,,448,,,,,,,448,,,448","448,448,448,448,448,448,448,448,448,448,,448,448,,448,448,,,,,,,,,,",",,,,,,,,,,448,,,448,448,,448,,448,,448,,448,,448,,,,,,,,448,,,,,448","448,448,448,448,448,,,,448,448,,,,,,,448,,,448,,448,,,,448,448,449,449","449,,449,,,,449,449,,,,449,,449,449,449,449,449,449,449,,,,,,449,449","449,449,449,449,449,,,449,,,,,,,449,,,449,449,449,449,449,449,449,449","449,449,449,,449,449,,449,449,,,,,,,,,,,,,,,,,,,,,449,,,449,449,,449",",449,,449,,449,,449,,,,,,,,449,,,,,449,449,449,449,449,449,,,,449,449",",,,,,,449,,,449,,449,,,,449,449,465,465,465,,465,,,,465,465,,,,465,","465,465,465,465,465,465,465,,,,,,465,465,465,465,465,465,465,,,465,",",,,,,465,,,465,465,465,465,465,465,465,465,465,465,465,,465,465,,465","465,,,,,,,,,,,,,,,,,,,,,465,,,465,,,465,,465,,465,,,,465,,,,,,,,465",",,,,465,465,465,465,465,465,,,,465,465,,,,,,,465,,,465,,465,,,,465,465","466,466,466,,466,,,,466,466,,,,466,,466,466,466,466,466,466,466,,,,",",466,466,466,466,466,466,466,,,466,,,,,,,466,,,466,466,466,466,466,466","466,466,466,466,466,,466,466,,466,466,,,,,,,,,,,,,,,,,,,,,466,,,466",",,466,,466,,466,,,,466,,,,,,,,466,,,,,466,466,466,466,466,466,,,,466","466,,,,,,,466,,,466,,466,,,,466,466,468,468,468,,468,,,,468,468,,,,468",",468,468,468,468,468,468,468,,,,,,468,468,468,468,468,468,468,,,468",",,,,,,468,,,468,468,468,468,468,468,468,,468,468,468,,468,468,,468,468",",,,,,,,,,,,,,,,,,,,,468,,,468,,,468,,468,,,,,,468,,,,,,,,468,,,,,468","468,468,468,468,468,,,,468,468,,,,,,,468,,,468,469,469,469,,469,468","468,,469,469,,,,469,,469,469,469,469,469,469,469,,,,,,469,469,469,469","469,469,469,,,469,,,,,,,469,,,469,469,469,469,469,469,469,,469,469,469",",469,469,,469,469,,,,,,,,,,,,,,,,,,,,,469,,,469,,,469,,469,,,,,,469",",,,,,,,469,,,,,469,469,469,469,469,469,,,,469,469,,,,,,,469,,,469,470","470,470,,470,469,469,,470,470,,,,470,,470,470,470,470,470,470,470,,",",,,470,470,470,470,470,470,470,,,470,,,,,,,470,,,470,470,470,470,470","470,470,,470,470,470,,470,470,,470,470,,,,,,,,,,,,,,,,,,,,,470,,,470",",,470,,470,,,,,,470,,,,,,,,470,,,,,470,470,470,470,470,470,,,,470,470",",,,,,,470,,,470,498,498,498,,498,470,470,,498,498,,,,498,,498,498,498","498,498,498,498,,,,,,498,498,498,498,498,498,498,,,498,,,,,,,498,,,498","498,498,498,498,498,498,,498,498,498,,498,498,,498,498,,,,,,,,,,,,,",",,,,,,,498,,,498,,,498,,498,,,,,,498,,,,,,,,498,,,,,498,498,498,498","498,498,,,,498,498,,,,,,,498,,,498,516,516,516,,516,498,498,,516,516",",,,516,,516,516,516,516,516,516,516,,,,,,516,516,516,516,516,516,516",",,516,,,,,,,516,,,516,516,516,516,516,516,516,516,516,516,516,,516,516",",516,516,,,,,,,,,,,,,,,,,,,,,516,,,516,,,516,,516,,516,,516,,516,,,",",,,,516,,,,,516,516,516,516,516,516,,,,516,516,,,,,,,516,,,516,,516",",,,516,516,518,518,518,,518,,,,518,518,,,,518,,518,518,518,518,518,518","518,,,,,,518,518,518,518,518,518,518,,,518,,,,,,,518,,,518,518,518,518","518,518,518,518,518,518,518,,518,518,,518,518,,,,,,,,,,,,,,,,,,,,,518",",,518,,,518,,518,,,,518,,518,,,,,,,,518,,,,,518,518,518,518,518,518",",,,518,518,,,,,,,518,,,518,,518,,,,518,518,520,520,520,,520,,,,520,520",",,,520,,520,520,520,520,520,520,520,,,,,,520,520,520,520,520,520,520",",,520,,,,,,,520,,,520,520,520,520,520,520,520,,520,520,520,,520,520",",520,520,,,,,,,,,,,,,,,,,,,,,520,,,520,,,520,,520,,,,,,520,,,,,,,,520",",,,,520,520,520,520,520,520,,,,520,520,,,,,,,520,,,520,526,526,526,526","526,520,520,,526,526,,,,526,,526,526,526,526,526,526,526,,,,,,526,526","526,526,526,526,526,,,526,,,,,,526,526,,526,526,526,526,526,526,526","526,,526,526,526,,526,526,,526,526,,,,,,,,,,,,,,,,,,,,,526,,,526,,,526",",526,,526,,,,526,,,,,,,,526,,,,,526,526,526,526,526,526,,,,526,526,",",,,,526,526,,,526,532,532,532,,532,526,526,,532,532,,,,532,,532,532","532,532,532,532,532,,,,,,532,532,532,532,532,532,532,,,532,,,,,,,532",",,532,532,532,532,532,532,532,,532,532,532,,532,532,,887,,887,887,887","887,887,,,,,,,,,887,,,,,,,532,,,532,,,532,,532,,,,,,,,887,,,,,,,887","887,887,887,532,532,532,532,532,532,,,,532,532,,,,,,,532,,,532,534,534","534,,534,532,532,,534,534,,,,534,887,534,534,534,534,534,534,534,,,",",,534,534,534,534,534,534,534,,,534,,,,,,,534,,,534,534,534,534,534","534,534,534,534,534,534,,534,534,,534,534,,,,,,,,,,,,,,,,,,,,,534,,","534,,,534,,534,,534,,,,534,,,,,,,,534,,,,,534,534,534,534,534,534,,",",534,534,,,,,,,534,,,534,,534,,,,534,534,537,537,537,,537,,,,537,537",",,,537,,537,537,537,537,537,537,537,,,,,,537,537,537,537,537,537,537",",,537,,,,,,,537,,,537,537,537,537,537,537,537,537,537,537,537,,537,537",",537,537,,,,,,,,,,,,,,,,,,,,,537,,,537,,,537,,537,,537,,,,537,,,,,,",",537,,,,,537,537,537,537,537,537,,,,537,537,,,,,,,537,,,537,,537,,,","537,537,543,543,543,,543,,,,543,543,,,,543,,543,543,543,543,543,543","543,,,,,,543,543,543,543,543,543,543,,,543,,,,,,,543,,,543,543,543,543","543,543,543,,543,543,543,,543,543,,889,,889,889,889,889,889,,,,,,,,","889,,,,,,,543,,,543,,,543,,543,,,,,,,,889,,,,,,,889,889,889,889,543","543,543,543,543,543,,,,543,543,,,,,,,543,,,543,546,546,546,,546,543","543,,546,546,,,,546,889,546,546,546,546,546,546,546,,,,,,546,546,546","546,546,546,546,,,546,,,,,,,546,,,546,546,546,546,546,546,546,,546,546","546,,546,546,,546,546,,,,,,,,,,,,,,,,,,,,,546,,,546,,,546,,546,,,,,","546,,,,,,,,546,,,,,546,546,546,546,546,546,,,,546,546,,,,,,,546,,,546","547,547,547,,547,546,546,,547,547,,,,547,,547,547,547,547,547,547,547",",,,,,547,547,547,547,547,547,547,,,547,,,,,,,547,,,547,547,547,547,547","547,547,,547,547,547,,547,547,,547,547,,,,,,,,,,,,,,,,,,,,,547,,,547",",,547,,547,,,,,,547,,,,,,,,547,,,,,547,547,547,547,547,547,,,,547,547",",,,,,,547,,,547,548,548,548,,548,547,547,,548,548,,,,548,,548,548,548","548,548,548,548,,,,,,548,548,548,548,548,548,548,,,548,,,,,,,548,,,548","548,548,548,548,548,548,,548,548,548,,548,548,,548,548,,,,,,,,,,,,,",",,,,,,,548,,,548,,,548,,548,,,,,,548,,,,,,,,548,,,,,548,548,548,548","548,548,,,,548,548,,,,,,,548,,,548,552,552,552,,552,548,548,,552,552",",,,552,,552,552,552,552,552,552,552,,,,,,552,552,552,552,552,552,552",",,552,,,,,,,552,,,552,552,552,552,552,552,552,,552,552,552,,552,552",",552,552,,,,,,,,,,,,,,,,,,,,,552,,,552,,,552,,552,,,,,,552,,,,,,,,552",",,,,552,552,552,552,552,552,,,,552,552,,,,,,,552,,,552,559,559,559,","559,552,552,,559,559,,,,559,,559,559,559,559,559,559,559,,,,,,559,559","559,559,559,559,559,,,559,,,,,,,559,,,559,559,559,559,559,559,559,559","559,559,559,,559,559,,559,559,,,,,,,,,,,,,,,,,,,,,559,,,559,,,559,,559",",559,,559,,559,,,,,,,,559,,,,,559,559,559,559,559,559,,,,559,559,,,",",,,559,,,559,,559,,,,559,559,562,562,562,,562,,,,562,562,,,,562,,562","562,562,562,562,562,562,,,,,,562,562,562,562,562,562,562,,,562,,,,,",",562,,,562,562,562,562,562,562,562,562,562,562,562,,562,562,,562,562",",,,,,,,,,,,,,,,,,,,,562,,,562,,,562,,562,,,,,,562,,,,,,,,562,,,,,562","562,562,562,562,562,,,,562,562,,,,,,,562,,,562,,562,,,,562,562,567,567","567,567,567,,,,567,567,,,,567,,567,567,567,567,567,567,567,,,,,,567","567,567,567,567,567,567,,,567,,,,,,567,567,,567,567,567,567,567,567","567,567,,567,567,567,,567,567,,567,567,,,,,,,,,,,,,,,,,,,,,567,,,567",",,567,,567,,567,,,,567,,,,,,,,567,,,,,567,567,567,567,567,567,,,,567","567,,,,,,,567,,,567,568,568,568,568,568,567,567,,568,568,,,,568,,568","568,568,568,568,568,568,,,,,,568,568,568,568,568,568,568,,,568,,,,,","568,568,,568,568,568,568,568,568,568,568,,568,568,568,,568,568,,568","568,,,,,,,,,,,,,,,,,,,,,568,,,568,,,568,,568,,568,,,,568,,,,,,,,568",",,,,568,568,568,568,568,568,,,,568,568,,,,,,,568,,,568,574,574,574,","574,568,568,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574","574,574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,,574","574,574,,574,574,,956,,956,956,956,956,956,,,,,,,,,956,,,,,,,574,,,574",",,574,,574,,,,,,,,956,956,,,,,,956,956,956,956,574,574,574,574,574,574",",,,574,574,,,,,,,574,,,574,595,595,595,595,595,574,574,,595,595,,,,595","956,595,595,595,595,595,595,595,,,,,,595,595,595,595,595,595,595,,,595",",,,,,595,595,,595,595,595,595,595,595,595,595,,595,595,595,,595,595",",595,595,,,,,,,,,,,,,,,,,,,,,595,,,595,,,595,,595,,595,,,,595,,,,,,",",595,,,,,595,595,595,595,595,595,,,,595,595,,,,,,,595,,,595,599,599","599,599,599,595,595,,599,599,,,,599,,599,599,599,599,599,599,599,,,",",,599,599,599,599,599,599,599,,,599,,,,,,599,599,,599,599,599,599,599","599,599,599,,599,599,599,,599,599,,599,599,,,,,,,,,,,,,,,,,,,,,599,",",599,,,599,,599,,599,,,,599,,,,,,,,599,,,,,599,599,599,599,599,599,",",,599,599,,,,,,,599,,,599,604,604,604,604,604,599,599,,604,604,,,,604",",604,604,604,604,604,604,604,,,,,,604,604,604,604,604,604,604,,,604",",,,,,604,604,,604,604,604,604,604,604,604,604,,604,604,604,,604,604",",604,604,,,,,,,,,,,,,,,,,,,,,604,,,604,,,604,,604,,604,,,,604,,,,,,",",604,,,,,604,604,604,604,604,604,,,,604,604,,,,,,,604,,,604,606,606","606,,606,604,604,,606,606,,,,606,,606,606,606,606,606,606,606,,,,,,606","606,606,606,606,606,606,,,606,,,,,,,606,,,606,606,606,606,606,606,606","606,606,606,606,,606,606,,606,606,,,,,,,,,,,,,,,,,,,,,606,,,606,,,606",",606,,606,,,,606,,,,,,,,606,,,,,606,606,606,606,606,606,,,,606,606,",",,,,,606,,,606,,606,,,,606,606,609,609,609,,609,,,,609,609,,,,609,,609","609,609,609,609,609,609,,,,,,609,609,609,609,609,609,609,,,609,,,,,",",609,,,609,609,609,609,609,609,609,609,609,609,609,,609,609,,609,609",",,,,,,,,,,,,,,,,,,,,609,,,609,,,609,,609,,609,,,,609,,,,,,,,609,,,,","609,609,609,609,609,609,,,,609,609,,,,,,,609,,,609,,609,,,,609,609,615","615,615,,615,,,,615,615,,,,615,,615,615,615,615,615,615,615,,,,,,615","615,615,615,615,615,615,,,615,,,,,,,615,,,615,615,615,615,615,615,615","615,615,615,615,,615,615,,615,615,,,,,,,,,,,,,,,,,,,,,615,,,615,,,615",",615,,615,,,,615,,,,,,,,615,,,,,615,615,615,615,615,615,,,,615,615,",",,,,,615,,,615,,615,,,,615,615,619,619,619,,619,,,,619,619,,,,619,,619","619,619,619,619,619,619,,,,,,619,619,619,619,619,619,619,,,619,,,,,",",619,,,619,619,619,619,619,619,619,,619,619,619,,619,619,,619,619,,",",,,,,,,,,,,,,,,,,,619,,,619,,,619,,619,,,,,,619,,,,,,,,619,,,,,619,619","619,619,619,619,,,,619,619,,,,,,,619,,,619,621,621,621,,621,619,619",",621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621,621,621,621,621","621,621,,,621,,,,,,,621,,,621,621,621,621,621,621,621,,621,621,621,","621,621,,621,621,,,,,,,,,,,,,,,,,,,,,621,,,621,,,621,,621,,,,,,621,",",,,,,,621,,,,,621,621,621,621,621,621,,,,621,621,,,,,,,621,,,621,649","649,649,,649,621,621,,649,649,,,,649,,649,649,649,649,649,649,649,,",",,,649,649,649,649,649,649,649,,,649,,,,,,,649,,,649,649,649,649,649","649,649,,649,649,649,,649,649,,649,649,,,,,,,,,,,,,,,,,,,,,649,,,649",",,649,,649,,649,,,,649,,,,,,,,649,,,,,649,649,649,649,649,649,,,,649","649,,,,,,,649,,,649,652,652,652,,652,649,649,,652,652,,,,652,,652,652","652,652,652,652,652,,,,,,652,652,652,652,652,652,652,,,652,,,,,,,652",",,652,652,652,652,652,652,652,,652,652,652,,652,652,,652,652,,,,,,,",",,,,,,,,,,,,,652,,,652,,,652,,652,,,,,,652,,,,,,,,652,,,,,652,652,652","652,652,652,,,,652,652,,,,,,,652,,,652,653,653,653,,653,652,652,,653","653,,,,653,,653,653,653,653,653,653,653,,,,,,653,653,653,653,653,653","653,,,653,,,,,,,653,,,653,653,653,653,653,653,653,,653,653,653,,653","653,,653,653,,,,,,,,,,,,,,,,,,,,,653,,,653,,,653,,653,,,,,,653,,,,,",",,653,,,,,653,653,653,653,653,653,,,,653,653,,,,,,,653,,,653,658,658","658,,658,653,653,,658,658,,,,658,,658,658,658,658,658,658,658,,,,,,658","658,658,658,658,658,658,,,658,,,,,,,658,,,658,658,658,658,658,658,658",",658,658,658,,658,658,,658,658,,,,,,,,,,,,,,,,,,,,,658,,,658,,,658,","658,,,,,,658,,,,,,,,658,,,,,658,658,658,658,658,658,,,,658,658,,,,,",",658,,,658,661,661,661,,661,658,658,,661,661,,,,661,,661,661,661,661","661,661,661,,,,,,661,661,661,661,661,661,661,,,661,,,,,,,661,,,661,661","661,661,661,661,661,,661,661,661,,661,661,,661,661,,,,,,,,,,,,,,,,,",",,,661,,,661,,,661,,661,,,,,,661,,,,,,,,661,,,,,661,661,661,661,661","661,,,,661,661,,,,,,,661,,,661,664,664,664,,664,661,661,,664,664,,,","664,,664,664,664,664,664,664,664,,,,,,664,664,664,664,664,664,664,,","664,,,,,,,664,,,664,664,664,664,664,664,664,,664,664,664,,664,664,,664","664,,,,,,,,,,,,,,,,,,,,,664,,,664,,,664,,664,,,,,,664,,,,,,,,664,,,",",664,664,664,664,664,664,,,,664,664,,,,,,,664,,,664,665,665,665,,665","664,664,,665,665,,,,665,,665,665,665,665,665,665,665,,,,,,665,665,665","665,665,665,665,,,665,,,,,,,665,,,665,665,665,665,665,665,665,,665,665","665,,665,665,,665,665,,,,,,,,,,,,,,,,,,,,,665,,,665,,,665,,665,,,,,","665,,,,,,,,665,,,,,665,665,665,665,665,665,,,,665,665,,,,,,,665,,,665","678,678,678,678,678,665,665,,678,678,,,,678,,678,678,678,678,678,678","678,,,,,,678,678,678,678,678,678,678,,,678,,,,,,678,678,,678,678,678","678,678,678,678,678,,678,678,678,,678,678,,678,678,,,,,,,,,,,,,,,,,",",,,678,,,678,,,678,,678,,678,,,,678,,,,,,,,678,,,,,678,678,678,678,678","678,,,,678,678,,,,,,,678,,,678,685,685,685,685,685,678,678,,685,685",",,,685,,685,685,685,685,685,685,685,,,,,,685,685,685,685,685,685,685",",,685,,,,,,685,685,,685,685,685,685,685,685,685,685,,685,685,685,,685","685,,685,685,,,,,,,,,,,,,,,,,,,,,685,,,685,,,685,,685,,685,,,,685,,",",,,,,685,,,,,685,685,685,685,685,685,,,,685,685,,,,,,,685,,,685,688","688,688,,688,685,685,,688,688,,,,688,,688,688,688,688,688,688,688,,",",,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688,688","688,688,688,688,688,688,,688,688,,688,688,,,,,,,,,,,,,,,,,,,,,688,,","688,,,688,,688,,688,,688,,688,,,,,,,,688,,,,,688,688,688,688,688,688",",,,688,688,,,,,,,688,,,688,,688,,,,688,688,689,689,689,,689,,,,689,689",",,,689,,689,689,689,689,689,689,689,,,,,,689,689,689,689,689,689,689",",,689,,,,,,,689,,,689,689,689,689,689,689,689,689,689,689,689,,689,689",",689,689,,,,,,,,,,,,,,,,,,,,,689,,,689,,,689,,689,,,,689,,689,,,,,,",",689,,,,,689,689,689,689,689,689,,,,689,689,,,,,,,689,,,689,,689,,,","689,689,690,690,690,690,690,,,,690,690,,,,690,,690,690,690,690,690,690","690,,,,,,690,690,690,690,690,690,690,,,690,,,,,,690,690,,690,690,690","690,690,690,690,690,,690,690,690,,690,690,,690,690,,,,,,,,,,,,,,,,,",",,,690,,,690,,,690,,690,,690,,,,690,,,,,,,,690,,,,,690,690,690,690,690","690,,,,690,690,,,,,,,690,,,690,691,691,691,691,691,690,690,,691,691",",,,691,,691,691,691,691,691,691,691,,,,,,691,691,691,691,691,691,691",",,691,,,,,,691,691,,691,691,691,691,691,691,691,691,,691,691,691,,691","691,,691,691,,,,,,,,,,,,,,,,,,,,,691,,,691,,,691,,691,,691,,,,691,,",",,,,,691,,,,,691,691,691,691,691,691,,,,691,691,,,,,,,691,,,691,696","696,696,,696,691,691,,696,696,,,,696,,696,696,696,696,696,696,696,,",",,,696,696,696,696,696,696,696,,,696,,,,,,,696,,,696,696,696,696,696","696,696,,696,696,696,,696,696,,696,696,,,,,,,,,,,,,,,,,,,,,696,,,696",",,696,,696,,,,,,696,,,,,,,,696,,,,,696,696,696,696,696,696,,,,696,696",",,,,,,696,,,696,699,699,699,,699,696,696,,699,699,,,,699,,699,699,699","699,699,699,699,,,,,,699,699,699,699,699,699,699,,,699,,,,,,,699,,,699","699,699,699,699,699,699,,699,699,699,,699,699,,699,699,,,,,,,,,,,,,",",,,,,,,699,,,699,,,699,,699,,,,,,699,,,,,,,,699,,,,,699,699,699,699","699,699,,,,699,699,,,,,,,699,,,699,702,702,702,,702,699,699,,702,702",",,,702,,702,702,702,702,702,702,702,,,,,,702,702,702,702,702,702,702",",,702,,,,,,,702,,,702,702,702,702,702,702,702,,702,702,702,,702,702",",987,,987,987,987,987,987,,,,,,,,,987,,,,,,,702,,,702,,,702,,702,,,",",,,,987,,,,,,,987,987,987,987,702,702,702,702,702,702,,,,702,702,,,",",,,702,,,702,715,715,715,,715,702,702,,715,715,,,,715,987,715,715,715","715,715,715,715,,,,,,715,715,715,715,715,715,715,,,715,,,,,,,715,,,715","715,715,715,715,715,715,,715,715,715,,715,715,,,,,,,,,,,,,,,,,,,,,,",",715,,,715,,,715,,715,,,,,,,,,,,,,,,,,,,715,715,715,715,715,715,,,,715","715,,,,,,,715,,,715,721,721,721,,721,715,715,,721,721,,,,721,,721,721","721,721,721,721,721,,,,,,721,721,721,721,721,721,721,,,721,,,,,,,721",",,721,721,721,721,721,721,721,,721,721,721,,721,721,,721,721,,,,,,,",",,,,,,,,,,,,,721,,,721,,,721,,721,,721,,,,721,,,,,,,,721,,,,,721,721","721,721,721,721,,,,721,721,,,,,,,721,,,721,760,760,760,,760,721,721",",760,760,,,,760,,760,760,760,760,760,760,760,,,,,,760,760,760,760,760","760,760,,,760,,,,,,,760,,,760,760,760,760,760,760,760,,760,760,760,","760,760,,760,760,,,,,,,,,,,,,,,,,,,,,760,,,760,,,760,,760,,760,,,,760",",,,,,,,760,,,,,760,760,760,760,760,760,,,,760,760,,,,,,,760,,,760,767","767,767,,767,760,760,,767,767,,,,767,,767,767,767,767,767,767,767,,",",,,767,767,767,767,767,767,767,,,767,,,,,,,767,,,767,767,767,767,767","767,767,,767,767,767,,767,767,,767,767,,,,,,,,,,,,,,,,,,,,,767,,,767",",,767,,767,,,,,,767,,,,,,,,767,,,,,767,767,767,767,767,767,,,,767,767",",,,,,,767,,,767,772,772,772,772,772,767,767,,772,772,,,,772,,772,772","772,772,772,772,772,,,,,,772,772,772,772,772,772,772,,,772,,,,,,772","772,,772,772,772,772,772,772,772,772,,772,772,772,,772,772,,772,772",",,,,,,,,,,,,,,,,,,,,772,,,772,,,772,,772,,772,,,,772,,,,,,,,772,,,,","772,772,772,772,772,772,,,,772,772,,,,,,,772,,,772,776,776,776,776,776","772,772,,776,776,,,,776,,776,776,776,776,776,776,776,,,,,,776,776,776","776,776,776,776,,,776,,,,,,776,776,,776,776,776,776,776,776,776,776",",776,776,776,,776,776,,776,776,,,,,,,,,,,,,,,,,,,,,776,,,776,,,776,","776,,776,,,,776,,,,,,,,776,,,,,776,776,776,776,776,776,,,,776,776,,",",,,,776,,,776,777,777,777,777,777,776,776,,777,777,,,,777,,777,777,777","777,777,777,777,,,,,,777,777,777,777,777,777,777,,,777,,,,,,777,777",",777,777,777,777,777,777,777,777,,777,777,777,,777,777,,777,777,,,,",",,,,,,,,,,,,,,,,777,,,777,,,777,,777,,777,,,,777,,,,,,,,777,,,,,777","777,777,777,777,777,,,,777,777,,,,,,,777,,,777,780,780,780,,780,777","777,,780,780,,,,780,,780,780,780,780,780,780,780,,,,,,780,780,780,780","780,780,780,,,780,,,,,,,780,,,780,780,780,780,780,780,780,,780,780,780",",780,780,,780,780,,,,,,,,,,,,,,,,,,,,,780,,,780,,,780,,780,,,,,,780",",,,,,,,780,,,,,780,780,780,780,780,780,,,,780,780,,,,,,,780,,,780,794","794,794,794,794,780,780,,794,794,,,,794,,794,794,794,794,794,794,794",",,,,,794,794,794,794,794,794,794,,,794,,,,,,794,794,,794,794,794,794","794,794,794,794,,794,794,794,,794,794,,794,794,,,,,,,,,,,,,,,,,,,,,794",",,794,,,794,,794,,794,,,,794,,,,,,,,794,,,,,794,794,794,794,794,794",",,,794,794,,,,,,,794,,,794,799,799,799,,799,794,794,,799,799,,,,799",",799,799,799,799,799,799,799,,,,,,799,799,799,799,799,799,799,,,799",",,,,,,799,,,799,799,799,799,799,799,799,,799,799,799,,799,799,,799,799",",,,,,,,,,,,,,,,,,,,,799,,,799,,,799,,799,,,,,,799,,,,,,,,799,,,,,799","799,799,799,799,799,,,,799,799,,,,,,,799,,,799,800,800,800,,800,799","799,,800,800,,,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800","800,800,800,,,800,,,,,,,800,,,800,800,800,800,800,800,800,,800,800,800",",800,800,,800,800,,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,,800,,,,,,800",",,,,,,,800,,,,,800,800,800,800,800,800,,,,800,800,,,,,,,800,,,800,801","801,801,,801,800,800,,801,801,,,,801,,801,801,801,801,801,801,801,,",",,,801,801,801,801,801,801,801,,,801,,,,,,,801,,,801,801,801,801,801","801,801,,801,801,801,,801,801,,801,801,,,,,,,,,,,,,,,,,,,,,801,,,801",",,801,,801,,,,,,801,,,,,,,,801,,,,,801,801,801,801,801,801,,,,801,801",",,,,,,801,,,801,813,813,813,,813,801,801,,813,813,,,,813,,813,813,813","813,813,813,813,,,,,,813,813,813,813,813,813,813,,,813,,,,,,,813,,,813","813,813,813,813,813,813,,813,813,813,,813,813,,813,813,,,,,,,,,,,,,",",,,,,,,813,,,813,,,813,,813,,,,,,813,,,,,,,,813,,,,,813,813,813,813","813,813,,,,813,813,,,,,,,813,,,813,814,814,814,,814,813,813,,814,814",",,,814,,814,814,814,814,814,814,814,,,,,,814,814,814,814,814,814,814",",,814,,,,,,,814,,,814,814,814,814,814,814,814,,814,814,814,,814,814",",814,814,,,,,,,,,,,,,,,,,,,,,814,,,814,,,814,,814,,,,,,814,,,,,,,,814",",,,,814,814,814,814,814,814,,,,814,814,,,,,,,814,,,814,815,815,815,","815,814,814,,815,815,,,,815,,815,815,815,815,815,815,815,,,,,,815,815","815,815,815,815,815,,,815,,,,,,,815,,,815,815,815,815,815,815,815,,815","815,815,,815,815,,815,815,,,,,,,,,,,,,,,,,,,,,815,,,815,,,815,,815,",",,,,815,,,,,,,,815,,,,,815,815,815,815,815,815,,,,815,815,,,,,,,815",",,815,838,838,838,838,838,815,815,,838,838,,,,838,,838,838,838,838,838","838,838,,,,,,838,838,838,838,838,838,838,,,838,,,,,,838,838,,838,838","838,838,838,838,838,838,,838,838,838,,838,838,,838,838,,,,,,,,,,,,,",",,,,,,,838,,,838,,,838,,838,,838,,,,838,,,,,,,,838,,,,,838,838,838,838","838,838,,,,838,838,,,,,,,838,,,838,865,865,865,,865,838,838,,865,865",",,,865,,865,865,865,865,865,865,865,,,,,,865,865,865,865,865,865,865",",,865,,,,,,,865,,,865,865,865,865,865,865,865,,865,865,865,,865,865",",865,865,,,,,,,,,,,,,,,,,,,,,865,,,865,,,865,,865,,,,,,865,,,,,,,,865",",,,,865,865,865,865,865,865,,,,865,865,,,,,,,865,,,865,867,867,867,867","867,865,865,,867,867,,,,867,,867,867,867,867,867,867,867,,,,,,867,867","867,867,867,867,867,,,867,,,,,,867,867,,867,867,867,867,867,867,867","867,,867,867,867,,867,867,,867,867,,,,,,,,,,,,,,,,,,,,,867,,,867,,,867",",867,,867,,,,867,,,,,,,,867,,,,,867,867,867,867,867,867,,,,867,867,",",,,,,867,,,867,868,868,868,868,868,867,867,,868,868,,,,868,,868,868","868,868,868,868,868,,,,,,868,868,868,868,868,868,868,,,868,,,,,,868","868,,868,868,868,868,868,868,868,868,,868,868,868,,868,868,,868,868",",,,,,,,,,,,,,,,,,,,,868,,,868,,,868,,868,,868,,,,868,,,,,,,,868,,,,","868,868,868,868,868,868,,,,868,868,,,,,,,868,,,868,893,893,893,,893","868,868,,893,893,,,,893,,893,893,893,893,893,893,893,,,,,,893,893,893","893,893,893,893,,,893,,,,,,,893,,,893,893,893,893,893,893,893,,893,893","893,,893,893,,893,893,,,,,,,,,,,,,,,,,,,,,893,,,893,,,893,,893,,,,,","893,,,,,,,,893,,,,,893,893,893,893,893,893,,,,893,893,,,,,,,893,,,893","907,907,907,,907,893,893,,907,907,,,,907,,907,907,907,907,907,907,907",",,,,,907,907,907,907,907,907,907,,,907,,,,,,,907,,,907,907,907,907,907","907,907,,907,907,907,,907,907,,907,907,,,,,,,,,,,,,,,,,,,,,907,,,907",",,907,,907,,,,,,907,,,,,,,,907,,,,,907,907,907,907,907,907,,,,907,907",",,,,,,907,,,907,908,908,908,,908,907,907,,908,908,,,,908,,908,908,908","908,908,908,908,,,,,,908,908,908,908,908,908,908,,,908,,,,,,,908,,,908","908,908,908,908,908,908,,908,908,908,,908,908,,908,908,,,,,,,,,,,,,",",,,,,,,908,,,908,,,908,,908,,,,,,908,,,,,,,,908,,,,,908,908,908,908","908,908,,,,908,908,,,,,,,908,,,908,909,909,909,,909,908,908,,909,909",",,,909,,909,909,909,909,909,909,909,,,,,,909,909,909,909,909,909,909",",,909,,,,,,,909,,,909,909,909,909,909,909,909,,909,909,909,,909,909",",909,909,,,,,,,,,,,,,,,,,,,,,909,,,909,,,909,,909,,,,,,909,,,,,,,,909",",,,,909,909,909,909,909,909,,,,909,909,,,,,,,909,,,909,915,915,915,","915,909,909,,915,915,,,,915,,915,915,915,915,915,915,915,,,,,,915,915","915,915,915,915,915,,,915,,,,,,,915,,,915,915,915,915,915,915,915,915","915,915,915,,915,915,,915,915,,,,,,,,,,,,,,,,,,,,,915,,,915,,,915,,915",",,,915,,915,,,,,,,,915,,,,,915,915,915,915,915,915,,,,915,915,,,,,,","915,,,915,,915,,,,915,915,919,919,919,919,919,,,,919,919,,,,919,,919","919,919,919,919,919,919,,,,,,919,919,919,919,919,919,919,,,919,,,,,","919,919,,919,919,919,919,919,919,919,919,,919,919,919,,919,919,,919","919,,,,,,,,,,,,,,,,,,,,,919,,,919,,,919,,919,,919,,,,919,,,,,,,,919",",,,,919,919,919,919,919,919,,,,919,919,,,,,,,919,,,919,923,923,923,","923,919,919,,923,923,,,,923,,923,923,923,923,923,923,923,,,,,,923,923","923,923,923,923,923,,,923,,,,,,,923,,,923,923,923,923,923,923,923,,923","923,923,,923,923,,,,,,,,,,,,,,,,,,,,,,,,923,,,923,,,923,,923,,,,,,,",",,,,,,,,,,,923,923,923,923,923,923,,,,923,923,,,,,,,923,,,923,938,938","938,,938,923,923,,938,938,,,,938,,938,938,938,938,938,938,938,,,,,,938","938,938,938,938,938,938,,,938,,,,,,,938,,,938,938,938,938,938,938,938",",938,938,938,,938,938,,938,938,,,,,,,,,,,,,,,,,,,,,938,,,938,,,938,","938,,938,,,,938,,,,,,,,938,,,,,938,938,938,938,938,938,,,,938,938,,",",,,,938,,,938,939,939,939,939,939,938,938,,939,939,,,,939,,939,939,939","939,939,939,939,,,,,,939,939,939,939,939,939,939,,,939,,,,,,939,939",",939,939,939,939,939,939,939,939,,939,939,939,,939,939,,939,939,,,,",",,,,,,,,,,,,,,,,939,,,939,,,939,,939,,939,,,,939,,,,,,,,939,,,,,939","939,939,939,939,939,,,,939,939,,,,,,,939,,,939,942,942,942,942,942,939","939,,942,942,,,,942,,942,942,942,942,942,942,942,,,,,,942,942,942,942","942,942,942,,,942,,,,,,942,942,,942,942,942,942,942,942,942,942,,942","942,942,,942,942,,942,942,,,,,,,,,,,,,,,,,,,,,942,,,942,,,942,,942,","942,,,,942,,,,,,,,942,,,,,942,942,942,942,942,942,,,,942,942,,,,,,,942",",,942,965,965,965,965,965,942,942,,965,965,,,,965,,965,965,965,965,965","965,965,,,,,,965,965,965,965,965,965,965,,,965,,,,,,965,965,,965,965","965,965,965,965,965,965,,965,965,965,,965,965,,965,965,,,,,,,,,,,,,",",,,,,,,965,,,965,,,965,,965,,965,,,,965,,,,,,,,965,,,,,965,965,965,965","965,965,,,,965,965,,,,,,,965,,,965,978,978,978,978,978,965,965,,978","978,,,,978,,978,978,978,978,978,978,978,,,,,,978,978,978,978,978,978","978,,,978,,,,,,978,978,,978,978,978,978,978,978,978,978,,978,978,978",",978,978,,978,978,,,,,,,,,,,,,,,,,,,,,978,,,978,,,978,,978,,978,,,,978",",,,,,,,978,,,,,978,978,978,978,978,978,,,,978,978,,,,,,,978,,,978,983","983,983,983,983,978,978,,983,983,,,,983,,983,983,983,983,983,983,983",",,,,,983,983,983,983,983,983,983,,,983,,,,,,983,983,,983,983,983,983","983,983,983,983,,983,983,983,,983,983,,983,983,,,,,,,,,,,,,,,,,,,,,983",",,983,,,983,,983,,983,,,,983,,,,,,,,983,,,,,983,983,983,983,983,983",",,,983,983,,,,,,,983,,,983,996,996,996,996,996,983,983,,996,996,,,,996",",996,996,996,996,996,996,996,,,,,,996,996,996,996,996,996,996,,,996",",,,,,996,996,,996,996,996,996,996,996,996,996,,996,996,996,,996,996",",996,996,,,,,,,,,,,,,,,,,,,,,996,,,996,,,996,,996,,996,,,,996,,,,,,",",996,,,,,996,996,996,996,996,996,,,,996,996,,,,,,,996,,,996,1000,1000","1000,,1000,996,996,,1000,1000,,,,1000,,1000,1000,1000,1000,1000,1000","1000,,,,,,1000,1000,1000,1000,1000,1000,1000,,,1000,,,,,,,1000,,,1000","1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,,1000,1000,,1000,1000",",,,,,,,,,,,,,,,,,,,,1000,,,1000,,,1000,,1000,,1000,,,,1000,,,,,,,,1000",",,,444,1000,1000,1000,1000,1000,1000,444,444,444,1000,1000,,444,444",",444,,1000,,,1000,,1000,,444,,1000,1000,,,,,,,,444,444,,444,444,444","444,444,,,,,,,,,,,,,,,,,,,,,,444,444,444,444,444,444,444,444,444,444","444,444,444,444,444,,,444,444,444,,444,,,,444,,,,,,444,,444,,444,444","444,444,444,444,444,,444,444,444,,,,,,,,,,,,,444,444,,444,,444,,446","444,,444,,,444,446,446,446,,,,446,446,,446,,,,,,,,,,,,,,,,,,,,446,446",",446,446,446,446,446,,,,,,,,,,,,,,,,,,,,,,446,446,446,446,446,446,446","446,446,446,446,446,446,446,446,,,446,446,446,,446,,,,446,,,,,,446,","446,,446,446,446,446,446,446,446,,446,,446,,,,,,,,,,,,,446,446,,446",",446,,668,446,,446,,,446,668,668,668,,,668,668,668,,668,,,,,,,,,668","668,668,,,,,,,,,668,668,,668,668,668,668,668,,,,,,,,,,,,,,,,,,,,,,668","668,668,668,668,668,668,668,668,668,668,668,668,668,668,,,668,668,668",",668,668,,,668,,668,,668,,668,,668,,668,668,668,668,668,668,668,,668","668,668,,,,,,,,,,,,,668,668,668,668,,668,,669,668,,668,,,668,669,669","669,,,669,669,669,,669,,,,,,,,,,669,669,,,,,,,,,669,669,,669,669,669","669,669,,,,,,,,,,,,,,,,,,,,,,669,669,669,669,669,669,669,669,669,669","669,669,669,669,669,,,669,669,669,,669,669,,,669,,669,,669,,669,,669",",669,669,669,669,669,669,669,,669,,669,,,,,,,,,,,,,669,669,669,669,","669,,25,669,,669,,,669,25,25,25,,,25,25,25,,25,,,,,,,,,25,25,25,,,,",",,,,25,25,,25,25,25,25,25,,,,,,,,,,,,,,,,,,,,,,25,25,25,25,25,25,25","25,25,25,25,25,25,25,25,,,25,25,25,,,25,,25,25,,25,,25,,25,,25,,25,25","25,25,25,25,25,,25,25,25,,,,,,,,,,,,,25,25,25,25,26,25,,,25,,25,26,26","26,,,26,26,26,,26,,,,,,,,,,26,26,,,,,,,,,26,26,,26,26,26,26,26,,,,,",",,,,,,,,,,,,,,,,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,,,26,26","26,,,26,,26,26,,26,,26,,26,,26,,26,26,26,26,26,26,26,,26,,26,,,,,,,",",,,,,26,26,26,26,51,26,,,26,,26,51,51,51,,,51,51,51,,51,,,,,,,,,,51","51,51,,,,,,,,51,51,,51,51,51,51,51,,,,,,,,,,,,,,,,,,,,,,51,51,51,51","51,51,51,51,51,51,51,51,51,51,51,,,51,51,51,,,51,,,51,,51,,51,,51,,51",",51,51,51,51,51,51,51,,51,,51,,,,,,,,,,,,,51,51,51,51,440,51,,51,51",",51,440,440,440,,,440,440,440,,440,,,,,,,,,440,440,440,,,,,,,,,440,440",",440,440,440,440,440,,,,,,,,,,,,,,,,,,,,,,440,440,440,440,440,440,440","440,440,440,440,440,440,440,440,,,440,440,440,,,440,,440,440,,440,,440",",440,,440,,440,440,440,440,440,440,440,,440,440,440,,,,,,,,,,,,,440","440,440,440,450,440,,,440,,440,450,450,450,,,450,450,450,,450,,,,,,",",,450,450,450,,,,,,,,,450,450,,450,450,450,450,450,,,,,,,,,,,,,,,,,",",,,,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,,,450","450,450,,,450,,450,450,,450,,450,,450,,450,,450,450,450,450,450,450","450,,450,450,450,,,,,,,,,,,,,450,450,450,450,500,450,,,450,,450,500","500,500,,,500,500,500,,500,,,,,,,,,,500,,,,,,,,,,500,500,,500,500,500","500,500,,,,,,,,,,,,501,,,,,,,501,501,501,,,501,501,501,,501,,,,,500","500,,,,501,,,500,,,,,500,500,501,501,,501,501,501,501,501,,,,,,,,,,",",500,,,,,,,,,,,,,500,,500,,,500,,,501,501,,502,,,,,501,,502,502,502","501,501,502,502,502,,502,,,,,,,,,,502,,,,,501,,,,,502,502,,502,502,502","502,502,501,,501,,,501,202,202,,,202,,,,,,,,,202,202,202,202,202,202","202,202,202,,,202,202,502,502,,,202,202,202,202,502,,,,,502,502,,,,","202,202,,202,202,202,202,202,202,202,202,202,202,202,,502,202,,,,,,",",,,,,502,,502,,,502,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7",",,,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,,7,,,,,,,,,7,7,7","7,7,7,7,7,7,,,7,7,,,,,7,7,7,7,,,,,,,,,,,,7,7,,7,7,7,7,7,7,7,7,7,7,7",",,7,7,,,,,,,,,,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,,","8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,,8,,,,,,,,,8,8,8,8,8","8,8,8,8,,,8,8,,,,,8,8,8,8,,,,,,,,,,,,8,8,,8,8,8,8,8,8,8,8,8,8,8,,,8","8,,,,,,,,,,8,423,423,423,423,423,423,423,423,423,423,423,423,423,423","423,423,423,423,423,423,423,423,423,423,,,,423,423,423,423,423,423,423","423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,,,423",",,,,,,,,423,423,423,423,423,423,423,423,423,,,423,423,,,,,423,423,423","423,,,,,,,,,,,,423,423,,423,423,423,423,423,423,423,423,423,423,423",",,423,423,,,,,,,,,,423,427,427,427,427,427,427,427,427,427,427,427,427","427,427,427,427,427,427,427,427,427,427,427,427,,,,427,427,427,427,427","427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427","427,,,427,,,,,,,,,427,427,427,427,427,427,427,427,427,,,427,427,,,,","427,427,427,427,,,,,,,,,,,,427,427,,427,427,427,427,427,427,427,427","427,427,427,,,427,427,,,,,,,,,,427,66,66,66,66,66,66,66,66,66,66,66","66,66,66,66,66,66,66,66,66,66,66,66,66,,,,66,66,66,66,66,66,66,66,66","66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,,66,,,,,,,66,66,66","66,66,66,66,66,66,,,66,66,,,,,66,66,66,66,,,,,,66,,,,,,66,66,,66,66","66,66,66,66,66,66,66,66,66,,,66,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,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,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,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,791,791,791,791,791,791,791,791,791,791","791,791,791,791,791,791,791,791,791,791,791,791,791,791,,,,791,791,791","791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791","791,791,791,,,791,,,,,,,,,791,791,791,791,791,791,791,791,791,,,791","791,,,,,791,791,791,791,,,,,,,,,,,,791,791,,791,791,791,791,791,791","791,791,791,791,791,201,201,791,,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,203,203,201,,203,,,,,,,,,203","203,203,203,203,203,203,203,203,,,203,203,,,,,203,203,203,203,,,,,,",",,,,,203,203,,203,203,203,203,203,203,203,203,203,203,203,249,249,203",",249,,,,,,,,,249,249,249,249,249,249,249,249,249,,,249,249,,,,,249,249","249,249,,,,,,,,,,,,249,249,,249,249,249,249,249,249,249,249,249,249","249,250,250,249,,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,251,251,250,,251,,,,,,,,,251,251,251,251,251,251","251,251,251,,,251,251,,,,,251,251,251,251,,,,,,,,,,,,251,251,,251,251","251,251,251,251,251,251,251,251,251,463,463,251,,463,,,,,,,,,463,463","463,463,463,463,463,463,463,,,463,463,,,,,463,463,463,463,,,,,,463,",",,,,463,463,,463,463,463,463,463,463,463,463,463,463,463,464,464,463",",464,,,,,,,,,464,464,464,464,464,464,464,464,464,,,464,464,,,,,464,464","464,464,,,,,,,,,,,,464,464,,464,464,464,464,464,464,464,464,464,464","464,535,535,464,,535,,,,,,,,,535,535,535,535,535,535,535,535,535,,,535","535,,,,,535,535,535,535,,,,,,535,,,,,,535,535,,535,535,535,535,535,535","535,535,535,535,535,536,536,535,,536,,,,,,,,,536,536,536,536,536,536","536,536,536,,,536,536,,,,,536,536,536,536,,,,,,,,,,,,536,536,,536,536","536,536,536,536,536,536,536,536,536,538,538,536,,538,,,,,,,,,538,538","538,538,538,538,538,538,538,,,538,538,,,,,538,538,538,538,,,,,,,,,,",",538,538,,538,538,538,538,538,538,538,538,538,538,538,549,549,538,,549",",,,,,,,,549,549,549,549,549,549,549,549,549,,,549,549,,,,,549,549,549","549,,,,,,549,,,,,,549,549,,549,549,549,549,549,549,549,549,549,549,549","550,550,549,,550,,,,,,,,,550,550,550,550,550,550,550,550,550,,,550,550",",,,,550,550,550,550,,,,,,,,,,,,550,550,,550,550,550,550,550,550,550","550,550,550,550,607,607,550,,607,,,,,,,,,607,607,607,607,607,607,607","607,607,,,607,607,,,,,607,607,607,607,,,,,,607,,,,,,607,607,,607,607","607,607,607,607,607,607,607,607,607,608,608,607,,608,,,,,,,,,608,608","608,608,608,608,608,608,608,,,608,608,,,,,608,608,608,608,,,,,,,,,,",",608,608,,608,608,608,608,608,608,608,608,608,608,608,614,614,608,,614",",,,,,,,,614,614,614,614,614,614,614,614,614,,,614,614,,,,,614,614,614","614,,,,,,,,,,,,614,614,,614,614,614,614,614,614,614,614,614,614,614","616,616,614,,616,,,,,,,,,616,616,616,616,616,616,616,616,616,,,616,616",",,,,616,616,616,616,,,,,,616,,,,,,616,616,,616,616,616,616,616,616,616","616,616,616,616,742,742,616,,742,,,,,,,,,742,742,742,742,742,742,742","742,742,,,742,742,,,,,742,742,742,742,,,,,,,,,,,,742,742,,742,742,742","742,742,742,742,742,742,742,742,1001,1001,742,,1001,,,,,,,,,1001,1001","1001,1001,1001,1001,1001,1001,1001,,,1001,1001,,,,,1001,1001,1001,1001",",,,,,1001,,,,,,1001,1001,,1001,1001,1001,1001,1001,1001,1001,1001,1001","1001,1001,1002,1002,1001,,1002,,,,,,,,,1002,1002,1002,1002,1002,1002","1002,1002,1002,,,1002,1002,,,,,1002,1002,1002,1002,,,,,,,,,,,,1002,1002",",1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,,,1002"];racc_action_check=arr=Opal.get("Array").$new(25645,nil);idx=0;($a=($c=clist).$each,$a.$$p=(TMP_3=function(str){var self=TMP_3.$$s||this,$d,$e,TMP_4;if(str==null)str=nil;return($d=($e=str.$split(",",-1)).$each,$d.$$p=(TMP_4=function(i){var self=TMP_4.$$s||this,$f;if(i==null)i=nil;if(($f=i["$empty?"]())!==nil&&$f!=null&&(!$f.$$is_boolean||$f==true)){}else{arr["$[]="](idx,i.$to_i())}return idx=$rb_plus(idx,1)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4),$d).call($e)},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$a).call($c);racc_action_pointer=[-2,14,nil,-46,nil,790,-84,23598,23719,-49,nil,-58,31,630,244,2,310,nil,129,260,1860,130,nil,354,-19,22702,22829,391,529,667,nil,805,936,1067,nil,72,301,148,441,1198,1329,1460,92,714,nil,nil,nil,nil,nil,nil,nil,22956,nil,1591,1722,1860,-15,949,1998,2129,nil,nil,2260,2391,2522,nil,24082,nil,nil,nil,nil,nil,-15,nil,nil,nil,nil,nil,100,132,24192,nil,nil,nil,493,2653,nil,nil,2791,nil,nil,nil,nil,nil,nil,nil,nil,nil,273,nil,2929,nil,nil,nil,3060,3191,3322,3453,3584,3715,nil,513,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,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,24302,181,nil,3846,3977,4108,4239,4377,24471,23471,24530,4515,4646,4777,4908,nil,831,-63,261,-51,201,293,5039,5170,nil,nil,5301,301,5432,5563,5694,5825,5956,6087,6218,6349,6480,6611,6742,6873,7004,7135,7266,7397,7528,7659,7790,7921,8052,8183,8314,8445,8576,nil,nil,nil,24589,24648,24707,323,8707,8845,nil,nil,nil,nil,nil,nil,nil,8983,nil,2653,nil,302,306,nil,9121,366,9252,nil,nil,9383,9514,nil,nil,146,970,395,9645,438,465,431,9776,9907,17,899,519,39,nil,502,483,-14,nil,nil,nil,521,515,495,10038,nil,430,575,595,931,nil,597,nil,10169,nil,10300,582,543,nil,558,-89,-47,591,581,114,606,nil,nil,-21,1080,nil,nil,nil,569,575,600,603,nil,607,622,nil,nil,nil,700,nil,10431,nil,nil,nil,nil,nil,nil,nil,821,nil,nil,nil,717,nil,nil,718,602,-7,0,10562,10693,349,350,645,-2,1030,722,0,753,nil,nil,391,724,nil,1064,nil,68,nil,nil,10824,148,307,323,450,532,575,580,588,nil,626,nil,10955,nil,285,nil,391,nil,419,666,529,nil,667,-33,nil,556,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,682,23840,nil,nil,nil,23961,683,nil,668,nil,11086,669,nil,2791,705,708,568,623,23083,nil,nil,nil,22182,713,22312,nil,11217,11355,23210,nil,nil,nil,3191,nil,667,nil,nil,391,nil,nil,nil,24766,24825,11493,11631,98,11769,11900,12031,44,nil,4646,4777,260,418,739,748,749,753,2516,2929,1461,4908,1591,1998,2129,2260,5039,5170,5301,5432,5563,669,829,5694,5825,12162,-35,23337,23392,23471,-34,nil,696,nil,nil,695,715,nil,-7,166,752,nil,nil,12293,nil,12431,nil,12569,nil,167,nil,nil,nil,12700,754,720,nil,nil,722,12831,761,12962,24884,24943,13100,25002,170,771,nil,nil,13238,738,nil,13369,13500,13631,25061,25120,3322,13762,860,861,749,795,nil,nil,13893,nil,nil,14031,nil,nil,nil,nil,14169,14300,796,nil,2404,nil,nil,14431,471,nil,nil,582,2535,nil,826,nil,nil,1161,838,nil,805,nil,966,nil,771,686,nil,nil,14562,894,nil,nil,14693,203,204,894,902,14824,nil,14955,25179,25238,15093,16,nil,1224,nil,25297,15231,25356,nil,nil,15369,585,15500,nil,9789,nil,nil,nil,31,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,244,nil,nil,nil,786,nil,nil,nil,nil,nil,802,15631,649,202,15762,15893,839,nil,nil,nil,16024,841,nil,16155,842,nil,16286,16417,283,297,22442,22572,849,853,529,nil,1722,nil,10051,nil,16548,nil,nil,nil,nil,nil,nil,16679,nil,858,16810,16948,17086,17217,nil,823,nil,863,17348,nil,nil,17479,1e3,-25,17610,826,nil,869,207,229,874,252,260,883,881,888,852,17741,3453,914,915,66,968,17872,nil,901,nil,292,nil,885,989,nil,nil,nil,874,880,1292,891,nil,nil,897,899,nil,900,25415,nil,nil,938,1097,907,1214,740,nil,1020,nil,nil,nil,nil,nil,1026,nil,1027,18003,963,29,40,80,121,964,18134,1722,nil,970,968,18265,609,nil,212,18396,18527,10444,623,18658,nil,937,940,nil,941,946,950,nil,943,nil,24412,990,831,18789,nil,nil,nil,955,18920,19051,19182,nil,3584,nil,3715,nil,nil,3846,nil,3977,nil,4108,19313,19444,19575,299,385,nil,963,986,970,1085,985,nil,977,994,1099,nil,nil,nil,983,232,nil,nil,nil,1102,nil,19706,985,1026,nil,nil,nil,nil,nil,nil,1219,nil,1350,nil,nil,10837,nil,1481,nil,nil,1033,nil,nil,691,1345,1e3,1120,nil,19837,1122,19968,20099,nil,nil,45,50,1355,229,nil,1128,nil,nil,1129,1130,1019,nil,nil,558,nil,nil,12844,nil,13251,nil,1612,nil,20230,nil,nil,nil,nil,nil,nil,nil,1033,1018,nil,4239,nil,4377,20361,20492,20623,849,nil,1040,nil,nil,20754,nil,nil,nil,20892,nil,nil,72,21023,nil,1028,1030,1031,1033,1036,1581,1038,1607,nil,76,nil,1156,1157,21154,21285,nil,nil,21416,nil,nil,1077,nil,1043,nil,1045,1046,1047,1048,nil,1060,nil,14444,nil,4515,419,nil,nil,nil,nil,nil,21547,80,1423,1133,84,nil,nil,2019,nil,nil,nil,1988,1064,21678,nil,nil,nil,527,21809,1182,nil,nil,17623,nil,2150,nil,2281,nil,2950,nil,nil,21940,nil,1226,1187,22071,25474,25533,88,1072,1077,743,nil,nil,nil,1198,nil,1084,1085,1086,1096,1214,nil,nil,1132,96,110,176,211,nil,nil,nil,3081,nil,nil,nil,nil,nil,129,1099,nil];racc_action_default=[-3,-590,-1,-578,-4,-6,-590,-590,-590,-590,-25,-590,-590,-590,-278,-590,-37,-40,-590,-590,-45,-47,-48,-49,-259,-259,-259,-293,-331,-332,-67,-10,-71,-79,-81,-590,-476,-590,-590,-590,-590,-590,-580,-237,-271,-272,-273,-274,-275,-276,-277,-568,-280,-284,-589,-558,-301,-589,-590,-590,-306,-309,-578,-590,-590,-323,-590,-333,-334,-419,-420,-421,-422,-423,-589,-426,-589,-589,-589,-589,-589,-453,-459,-460,-590,-465,-466,-467,-468,-469,-470,-471,-472,-473,-474,-475,-478,-479,-590,-2,-579,-585,-586,-587,-590,-590,-590,-590,-590,-3,-13,-590,-108,-109,-110,-111,-112,-113,-114,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128,-129,-130,-131,-132,-133,-134,-135,-136,-137,-138,-139,-140,-141,-142,-143,-144,-145,-146,-147,-148,-149,-150,-151,-152,-153,-154,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-590,-18,-115,-10,-590,-590,-589,-589,-590,-590,-590,-590,-590,-590,-590,-43,-590,-476,-590,-278,-590,-590,-10,-590,-44,-227,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-590,-234,-388,-390,-590,-590,-590,-54,-589,-590,-300,-394,-402,-404,-62,-400,-63,-590,-64,-238,-254,-263,-263,-258,-590,-264,-590,-589,-560,-590,-590,-65,-66,-578,-11,-67,-10,-590,-590,-72,-75,-10,-476,-590,-590,-278,-293,-296,-580,-590,-331,-332,-335,-401,-590,-77,-590,-83,-288,-461,-462,-590,-212,-213,-228,-590,-581,-10,-282,-580,-239,-580,-582,-582,-590,-590,-582,-590,-302,-303,-590,-590,-352,-353,-360,-589,-520,-555,-555,-370,-589,-589,-387,-485,-486,-488,-489,-493,-494,-519,-521,-522,-523,-524,-525,-590,-542,-547,-548,-550,-551,-552,-590,-46,-590,-590,-590,-590,-578,-590,-579,-476,-590,-590,-278,-590,-527,-528,-104,-590,-106,-590,-278,-590,-320,-476,-590,-108,-109,-146,-147,-163,-168,-175,-178,-326,-590,-556,-590,-424,-590,-439,-590,-441,-590,-590,-590,-431,-590,-590,-437,-590,-452,-454,-455,-456,-457,-463,-464,1036,-5,-588,-19,-20,-21,-22,-23,-590,-590,-15,-16,-17,-590,-590,-26,-35,-36,-590,-590,-27,-193,-590,-590,-569,-570,-259,-397,-571,-572,-569,-259,-570,-399,-574,-575,-259,-569,-570,-33,-201,-34,-590,-38,-39,-191,-264,-41,-42,-590,-590,-589,-589,-288,-590,-590,-590,-590,-299,-202,-203,-204,-205,-206,-207,-208,-209,-214,-215,-216,-217,-218,-219,-220,-221,-222,-223,-224,-225,-226,-229,-230,-231,-232,-590,-589,-259,-259,-259,-589,-55,-580,-249,-250,-263,-263,-260,-589,-589,-590,-295,-255,-590,-256,-590,-261,-590,-265,-590,-563,-565,-9,-579,-590,-68,-286,-84,-73,-590,-590,-589,-590,-590,-589,-590,-288,-590,-461,-462,-590,-80,-85,-590,-590,-590,-590,-590,-233,-590,-411,-590,-580,-590,-240,-241,-584,-583,-243,-584,-291,-292,-559,-349,-10,-10,-590,-351,-590,-372,-383,-590,-590,-368,-369,-590,-378,-380,-590,-385,-487,-492,-590,-520,-590,-529,-590,-531,-533,-540,-549,-553,-10,-336,-337,-338,-10,-590,-590,-590,-590,-10,-406,-589,-590,-590,-589,-288,-315,-104,-105,-590,-589,-590,-318,-480,-590,-590,-590,-324,-518,-328,-576,-577,-580,-425,-440,-443,-444,-446,-427,-442,-428,-429,-430,-590,-433,-435,-436,-590,-458,-7,-14,-116,-24,-270,-590,-289,-290,-590,-590,-58,-247,-248,-395,-590,-60,-398,-590,-56,-396,-590,-590,-569,-570,-569,-570,-590,-590,-191,-298,-590,-363,-580,-365,-10,-50,-391,-51,-392,-52,-393,-10,-245,-590,-251,-253,-10,-10,-294,-263,-262,-266,-590,-561,-562,-590,-12,-68,-590,-76,-82,-590,-569,-570,-589,-573,-287,-590,-590,-589,-78,-590,-200,-210,-211,-590,-589,-589,-281,-590,-285,-582,-244,-590,-590,-350,-361,-371,-589,-589,-362,-555,-495,-554,-589,-589,-543,-589,-590,-288,-526,-590,-590,-538,-590,-589,-339,-589,-307,-340,-341,-342,-310,-590,-313,-590,-590,-590,-569,-570,-573,-287,-590,-590,-104,-107,-573,-590,-10,-590,-482,-590,-10,-10,-518,-590,-491,-496,-555,-555,-501,-503,-503,-503,-517,-520,-545,-590,-590,-590,-10,-432,-434,-438,-268,-590,-590,-590,-30,-196,-31,-197,-59,-32,-198,-61,-199,-57,-192,-590,-590,-590,-290,-289,-235,-343,-590,-580,-590,-590,-246,-263,-590,-590,-257,-267,-564,-74,-289,-290,-86,-297,-589,-358,-10,-412,-589,-413,-414,-283,-242,-354,-355,-590,-381,-590,-384,-367,-590,-375,-590,-377,-386,-287,-530,-532,-536,-590,-541,-590,-356,-590,-590,-10,-10,-312,-314,-590,-289,-96,-590,-289,-590,-481,-321,-590,-590,-580,-484,-490,-590,-499,-500,-590,-510,-590,-513,-590,-515,-590,-329,-557,-445,-448,-449,-450,-451,-590,-269,-28,-194,-29,-195,-590,-590,-590,-590,-364,-590,-389,-53,-252,-403,-405,-8,-10,-418,-359,-590,-590,-416,-589,-589,-589,-589,-534,-590,-539,-590,-304,-590,-305,-590,-590,-590,-10,-316,-319,-10,-325,-327,-590,-497,-555,-502,-503,-503,-503,-503,-546,-503,-544,-518,-447,-236,-580,-345,-347,-348,-366,-417,-10,-476,-590,-590,-278,-415,-382,-590,-373,-376,-379,-590,-537,-10,-308,-311,-266,-589,-10,-590,-483,-498,-590,-506,-590,-508,-590,-511,-590,-514,-516,-10,-344,-590,-411,-589,-590,-590,-288,-589,-535,-589,-407,-408,-409,-590,-322,-503,-503,-503,-503,-590,-346,-410,-590,-569,-570,-573,-287,-374,-357,-317,-590,-504,-507,-509,-512,-330,-289,-503,-505];clist=["13,390,5,265,265,265,603,115,115,256,260,554,504,327,720,408,310,544","209,209,319,12,284,337,297,297,378,209,209,209,316,13,288,288,100,359","360,458,103,363,863,431,517,440,445,450,777,576,577,455,730,300,12,209","209,297,297,99,209,209,740,280,209,367,376,836,115,752,756,266,266,266","110,195,395,595,599,788,613,2,115,417,418,419,420,118,118,587,859,953","217,500,501,502,558,561,866,103,565,282,13,960,5,962,209,209,209,209","13,13,421,5,663,629,14,820,364,1,862,639,415,12,918,697,267,267,267","194,408,12,12,397,399,372,423,406,678,263,276,277,685,498,694,909,694","14,290,290,690,691,505,686,321,573,392,320,323,324,580,582,370,617,680","682,684,436,437,697,391,624,312,555,314,361,867,316,316,369,377,362","868,767,983,772,621,726,942,953,422,1017,381,962,776,115,623,791,13","209,209,209,209,956,449,959,209,209,209,209,325,566,738,248,499,511","14,13,209,12,888,890,892,512,14,14,1007,760,840,922,394,265,265,931","788,401,638,404,12,896,265,433,629,793,794,881,757,946,736,433,703,949",",588,,209,209,,,,15,714,912,,209,252,259,261,,540,429,434,,,522,,859","453,457,297,,256,,13,569,260,517,288,13,,556,15,557,545,337,297,697","508,266,1025,,,977,288,12,531,266,440,445,12,,526,14,280,13,103,694","694,280,,769,,945,371,,,,,745,1008,,14,740,730,525,12,297,,,,600,601",",940,584,622,,,1005,,,527,509,267,732,,533,,796,322,15,267,739,209,209","507,510,,15,15,740,,,,513,297,,663,,708,,996,713,376,988,990,992,994",",995,,,,708,,209,,14,,,103,290,14,,,,787,,,,,,788,,,618,806,290,,602","831,809,,283,811,115,,656,14,115,,,660,670,671,,,656,,,,,,316,316,,","1028,1029,1030,1031,708,851,,,,15,,377,,708,,1018,,,456,449,209,209","1035,828,,,876,,15,740,879,880,,,687,,,,,,656,656,656,645,,588,,646","747,,377,458,885,886,430,705,118,844,712,,118,,460,,,316,,,316,,,,,",",697,,545,,297,,13,,700,723,,,288,545,209,297,449,209,,15,,694,,288","15,,,12,,,449,,209,,,848,850,,,787,,853,855,,856,841,297,13,13,,15,519","761,521,734,766,523,524,,,,771,316,,,316,428,939,12,12,,316,,,,13,773",",,13,828,792,,,13,283,209,,449,209,,,,693,449,209,12,,,209,12,209,,","1009,12,,,,,,,821,926,,753,753,,965,,14,984,337,,,,290,588,,588,978",",209,209,,774,725,290,209,,,,986,,209,,,,950,,951,283,,,,,283,,13,654",",14,14,,659,13,,,377,662,13,13,545,656,297,1016,660,,656,12,,,288,,","834,12,297,,14,,12,12,14,,288,,,14,,,,,802,804,,894,,,807,,,,,648,457",",787,,679,681,683,449,,874,,,,971,973,974,975,,,,,,,,,,929,588,433,",",,209,1012,,,,13,,,,13,13,,,,,,,15,825,,,,,,115,14,12,13,,,12,12,14","209,209,871,,14,14,,,877,,878,,,,882,12,290,36,695,,322,,698,,,15,15","1024,,290,,588,,588,,,,,13,,,,934,708,,,,,36,287,287,,,15,,,,15,,12",",695,15,,322,209,,13,13,,,903,905,,,,,588,,,366,380,,380,,,14,735,12","12,14,14,733,,,,,,,,,,741,,,,,900,14,753,780,,,,,297,,36,,13,,,456,967",",36,36,,,,,,,997,,783,15,,,13,12,,13,15,785,,,,15,15,,798,14,,,,,727","728,,12,,,12,,13,1019,,,,,,,,,,316,,13,,,14,14,13,,749,12,,,751,695","322,,,759,,13,,829,12,209,830,449,,12,,,,,,,,,36,,,,12,,,208,,,839,",",,,,,15,,36,14,15,15,,969,,,,,,,,,,,,,,,15,14,,313,14,,,,358,358,460",",358,780,,,822,,,,,,,823,,,,14,826,827,883,,,737,,,737,,783,,14,,,,15","14,36,785,,902,287,36,,,358,358,358,358,14,,,,,,,,287,,,,,,,15,15,315",",36,328,,,784,,,,,,,,,,,,,,396,,398,398,402,405,398,,,,,,380,,,,,,,",",925,,,780,,927,780,928,780,15,780,,,970,,,901,,,,,,,,,,,955,947,15","380,783,15,783,,783,,,,,461,462,952,,954,,,,,322,471,,,,,15,218,,,,921",",,,264,264,264,,15,,,,981,15,,780,307,308,309,,,,,,,,15,,,936,937,264","264,,,,,,,,783,,,,315,315,780,,780,785,780,,780,,,,,,,,784,,,,,1004",",,,,,783,,783,,783,,783,,,1013,964,1014,,1015,,780,,,,,,,,,,,,506,,","982,,,,,,,,,,783,,,,36,,396,,,1034,287,,,,,,999,,,,,287,,,358,358,,",",1006,,,,,1010,,,,,,,,,,,36,36,,,,,,380,,,737,627,,784,,784,,784,264","435,264,264,,,,454,459,,36,,,,36,,,,,36,,,218,,473,474,475,476,477,478","479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495","496,497,,,,,,,,264,264,,,,,,,784,264,,,,,,,264,,264,,,264,264,,,,,,",",,,,,,,,36,,784,,784,,784,36,784,,,,36,36,,,,,655,,551,,,,287,,,,655",",,,,,,,,287,,,,,784,315,315,,,,,,,,,,,,,,,719,,,,,,,,,,,,,,,,,,675,655","655,655,675,,,,,,,,675,675,,,,36,,,,36,36,,,,,,,,,,,,,315,,,315,36,",",,,,,,,,358,,775,,,,,,,,,,,,,,264,,,,,,,,,,,,,,,,,,36,,,,,,,,,,,,,,","264,264,,454,672,435,,,,315,,,315,,36,36,,,315,,,,,,,,,,,,,,,674,,,",",,,,,,,,,,,,,,264,,264,,264,,,,,,,,,,,36,,,264,966,,264,,,,,,,,,716","717,718,,,36,,,36,,,,,264,,,264,,358,,,,,,,,,,,,655,36,,,,655,,,,,,","837,842,36,,,,,36,,,,,,,,,,,264,,36,264,,,,,,264,,837,,837,,,,,,,,,",",,,,,,,294,294,,,,,,294,294,294,,,,264,,,803,805,,,,,808,294,,810,358",",672,812,,294,294,,,,,,,,,,,,,,,,,,,,264,264,,,,,,,264,,,264,,,,,920",",,,924,,,,,,,,,,,,,264,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,264,,,",",,,,,,,,,,,,,,,,264,,,,,,,,,,,,,,,,,,,264,904,906,,,,,,,,,,,,803,805","808,,,,,,,,294,,294,294,294,294,294,294,294,294,294,294,294,294,294","294,294,294,294,294,294,294,294,294,294,294,294,837,,,,,,,,,,,,,,,,",",315,,,,,294,837,294,,,294,294,,,,,,,,,,294,,,,264,,,,,,,,,,,,294,,906","904,958,,,,,294,264,,,,,,,,,,,,,,,,,,,,,,,264,,,,,,,,294,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,294,,,,,,,,,,,,,,,264,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,294,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,294,294,294,",",,,,,,,,,,,,,,,,,,,,,,,,,,294,,,,,,,,,,,,,,,,,,294,,294,,294,,,,,,,",",,,,294,,,,,,,,,,,294,,,294,294,294,,,,,,,,,,,294,,,294,,,,,,,,,,,,294",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,294,,,,,,,,,,,,294,,,,294,,,,,,,,,,,,,,,,,,,,,,,294,294,,,,,,","294,,,294,,,294,,,,,,,,,,,,,294,,,,,,294,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,294,,,,,,,,,,,,,,,,,,,,294,,,,,,,,,,,,,,,,,,,294,,,,,,,,",",,,,,294,294,294,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,294,,,,,,,,,,,,,,294,294,294,,,,,,294,,,,",",,,294,,,,,,,,,,,,,,,294"];racc_goto_table=arr=Opal.get("Array").$new(2748,nil);idx=0;($a=($d=clist).$each,$a.$$p=(TMP_5=function(str){var self=TMP_5.$$s||this,$e,$f,TMP_6;if(str==null)str=nil;return($e=($f=str.$split(",",-1)).$each,$e.$$p=(TMP_6=function(i){var self=TMP_6.$$s||this,$g;if(i==null)i=nil;if(($g=i["$empty?"]())!==nil&&$g!=null&&(!$g.$$is_boolean||$g==true)){}else{arr["$[]="](idx,i.$to_i())}return idx=$rb_plus(idx,1)},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6),$e).call($f)},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5),$a).call($d);clist=["21,48,7,30,30,30,81,49,49,61,61,8,35,111,10,48,52,44,21,21,22,20,42","114,53,53,47,21,21,21,30,21,21,21,6,16,16,17,84,16,79,25,65,33,33,33","85,117,117,25,113,43,20,21,21,53,53,4,21,21,155,39,21,21,21,11,49,80","80,57,57,57,14,14,135,78,78,151,46,2,49,16,16,16,16,51,51,156,157,159","19,33,33,33,58,58,11,84,58,40,21,107,7,108,21,21,21,21,21,21,7,7,64","139,23,105,4,1,158,139,5,20,12,162,59,59,59,15,48,20,20,136,136,18,28","136,36,38,38,38,36,54,60,55,60,23,23,23,36,36,62,63,59,119,73,74,75","77,119,119,82,83,64,64,64,22,22,162,86,87,88,89,90,91,92,30,30,23,23","93,94,95,96,97,98,60,99,159,2,107,100,108,101,49,102,103,21,21,21,21","21,104,49,106,21,21,21,21,109,110,112,122,123,125,23,21,21,20,152,152","152,126,23,23,127,128,129,130,134,30,30,158,151,137,138,140,20,141,30","57,139,142,143,145,81,148,149,57,44,153,,154,,21,21,,,,24,44,105,,21","34,34,34,,52,19,19,,,135,,157,19,19,53,,61,,21,111,61,65,21,21,,52,24","52,42,114,53,162,57,57,79,,,158,21,20,43,57,33,33,20,,6,23,39,21,84","60,60,39,,46,,105,24,,,,,156,11,,23,155,113,4,20,53,,,,16,16,,80,21","47,,,158,,,40,59,59,121,,40,,139,26,24,59,121,21,21,38,38,,24,24,155",",,,38,53,,64,,33,,85,33,21,152,152,152,152,,152,,,,33,,21,,23,,,84,23","23,,,,121,,,,,,151,,,84,35,23,,4,44,35,,9,35,49,,61,23,49,,,61,22,22",",,61,,,,,,30,30,,,152,152,152,152,33,117,,,,24,,23,,33,,10,,,24,49,21","21,152,65,,,8,,24,155,8,8,,,52,,,,,,61,61,61,14,,154,,14,154,,23,17","117,117,26,22,51,58,22,,51,,26,,,30,,,30,,,,,,,162,,42,,53,,21,,7,52",",,21,42,21,53,49,21,,24,,60,,21,24,,,20,,,49,,21,,,119,119,,,121,,119","119,,119,25,53,21,21,,24,26,22,26,21,22,26,26,,,,22,30,,,30,9,78,20","20,,30,,,,21,16,,,21,65,52,,,21,9,21,,49,21,,,,59,49,21,20,,,21,20,21",",,81,20,,,,,,,111,121,,84,84,,78,,23,8,114,,,,23,154,,154,78,,21,21",",84,59,23,21,,,,117,,21,,,,121,,121,9,,,,,9,,21,34,,23,23,,34,21,,,23","34,21,21,42,61,53,8,61,,61,20,,,21,,,42,20,53,,23,,20,20,23,,21,,,23",",,,,19,19,,48,,,19,,,,,26,19,,121,,34,34,34,49,,16,,,,119,119,119,119",",,,,,,,,,154,154,57,,,,21,121,,,,21,,,,21,21,,,,,,,24,59,,,,,,49,23","20,21,,,20,20,23,21,21,57,,23,23,,,84,,84,,,,84,20,23,45,26,,26,,26",",,24,24,119,,23,,154,,154,,,,,21,,,,16,33,,,,,45,45,45,,,24,,,,24,,20",",26,24,,26,21,,21,21,,,19,19,,,,,154,,,45,45,,45,,,23,116,20,20,23,23","120,,,,,,,,,,120,,,,,23,23,84,147,,,,,53,,45,,21,,,24,21,,45,45,,,,",",,52,,116,24,,,21,20,,21,24,120,,,,24,24,,26,23,,,,,9,9,,20,,,20,,21","22,,,,,,,,,,30,,21,,,23,23,21,,9,20,,,9,26,26,,,9,,21,,26,20,21,26,49",",20,,,,,,,,,45,,,,20,,,27,,,26,,,,,,,24,,45,23,24,24,,23,,,,,,,,,,,",",,,24,23,,27,23,,,,27,27,26,,27,147,,,9,,,,,,,9,,,,23,9,9,26,,,118,",",118,,116,,23,,,,24,23,45,120,,26,45,45,,,27,27,27,27,23,,,,,,,,45,",",,,,,24,24,56,,45,56,,,118,,,,,,,,,,,,,,56,,56,56,56,56,56,,,,,,45,",",,,,,,,120,,,147,,120,147,120,147,24,147,,,24,,,9,,,,,,,,,,,26,116,24","45,116,24,116,,116,,,,,27,27,120,,120,,,,,26,27,,,,,24,29,,,,9,,,,29","29,29,,24,,,,26,24,,147,29,29,29,,,,,,,,24,,,9,9,29,29,,,,,,,,116,,",",56,56,147,,147,120,147,,147,,,,,,,,118,,,,,120,,,,,,116,,116,,116,","116,,,120,9,120,,120,,147,,,,,,,,,,,,56,,,9,,,,,,,,,,116,,,,45,,56,",",120,45,,,,,,9,,,,,45,,,27,27,,,,9,,,,,9,,,,,,,,,,,45,45,,,,,,45,,,118","27,,118,,118,,118,29,29,29,29,,,,29,29,,45,,,,45,,,,,45,,,29,,29,29","29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29",",,,,,,,29,29,,,,,,,118,29,,,,,,,29,,29,,,29,29,,,,,,,,,,,,,,,45,,118",",118,,118,45,118,,,,45,45,,,,,56,,29,,,,45,,,,56,,,,,,,,,45,,,,,118","56,56,,,,,,,,,,,,,,,27,,,,,,,,,,,,,,,,,,56,56,56,56,56,,,,,,,,56,56",",,,45,,,,45,45,,,,,,,,,,,,,56,,,56,45,,,,,,,,,,27,,27,,,,,,,,,,,,,,29",",,,,,,,,,,,,,,,,,45,,,,,,,,,,,,,,,29,29,,29,29,29,,,,56,,,56,,45,45",",,56,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,29,,29,,29,,,,,,,,,,,45,,,29","45,,29,,,,,,,,,29,29,29,,,45,,,45,,,,,29,,,29,,27,,,,,,,,,,,,56,45,",",,56,,,,,,,56,56,45,,,,,45,,,,,,,,,,,29,,45,29,,,,,,29,,56,,56,,,,,",",,,,,,,,,,,37,37,,,,,,37,37,37,,,,29,,,29,29,,,,,29,37,,29,27,,29,29",",37,37,,,,,,,,,,,,,,,,,,,,29,29,,,,,,,29,,,29,,,,,56,,,,56,,,,,,,,,",",,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,29",",,,,,,,,,,,,,,,,,,29,29,29,,,,,,,,,,,,29,29,29,,,,,,,,37,,37,37,37,37","37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,56,,",",,,,,,,,,,,,,,,56,,,,,37,56,37,,,37,37,,,,,,,,,,37,,,,29,,,,,,,,,,,","37,,29,29,29,,,,,37,29,,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,37,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,,,,,,",",,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,37,,37,,37,,,,,,,,,,,,37,,",",,,,,,,,37,,,37,37,37,,,,,,,,,,,37,,,37,,,,,,,,,,,,37,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,",",,,,,,37,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,37,,,37,,,37,,,,,,",",,,,,,37,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,",",,,,,,,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,37,37,37,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,",",,,,,,,,,,,,37,37,37,,,,,,37,,,,,,,,37,,,,,,,,,,,,,,,37"];racc_goto_check=arr=Opal.get("Array").$new(2748,nil);idx=0;($a=($e=clist).$each,$a.$$p=(TMP_7=function(str){var self=TMP_7.$$s||this,$f,$g,TMP_8;if(str==null)str=nil;return($f=($g=str.$split(",",-1)).$each,$f.$$p=(TMP_8=function(i){var self=TMP_8.$$s||this,$h;if(i==null)i=nil;if(($h=i["$empty?"]())!==nil&&$h!=null&&(!$h.$$is_boolean||$h==true)){}else{arr["$[]="](idx,i.$to_i())}return idx=$rb_plus(idx,1)},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8),$f).call($g)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$a).call($e);racc_goto_pointer=[nil,117,79,nil,54,20,31,2,-301,390,-539,-655,-714,nil,65,119,-23,-168,70,71,21,0,-34,114,258,-156,302,1002,24,1205,-24,nil,nil,-158,239,-240,-363,1809,110,30,68,nil,-10,18,-284,817,-296,-38,-65,0,nil,78,-26,-8,-105,-675,1073,42,-223,97,-374,-15,-103,-354,-338,-225,nil,nil,nil,nil,nil,nil,nil,88,100,100,nil,100,-284,-709,-533,-358,97,-217,35,-577,102,-222,118,-142,119,113,-578,118,-576,-430,-758,-434,-195,-692,125,-430,-196,-429,-693,-561,-707,-809,-807,151,-116,-44,-369,-521,-34,nil,312,-285,510,-177,321,-219,190,-35,nil,-44,-37,-758,-380,-495,-613,nil,nil,nil,156,0,55,155,-167,-282,156,-556,-390,-390,nil,-535,nil,287,-639,-329,nil,-546,-567,-638,-99,-519,-263,-658,-630,-800,nil,nil,-395];racc_goto_default=[nil,nil,nil,3,nil,4,365,279,nil,553,nil,864,nil,278,nil,nil,nil,10,11,17,214,306,nil,212,213,nil,270,16,nil,20,21,22,23,711,nil,nil,nil,24,nil,30,nil,32,35,34,nil,210,375,nil,117,443,116,70,819,43,nil,nil,572,317,nil,318,268,441,nil,nil,657,515,254,44,45,46,47,48,49,50,nil,255,56,nil,nil,nil,nil,nil,nil,nil,596,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,344,nil,nil,nil,330,329,731,332,333,nil,334,nil,335,336,nil,nil,447,nil,nil,nil,nil,nil,nil,69,71,72,73,nil,nil,nil,nil,634,nil,nil,nil,nil,407,779,340,342,781,343,782,948,nil,786,349,351,nil,590,591,790,354,357,273];racc_reduce_table=[0,0,"racc_error",1,141,"_reduce_none",2,142,"_reduce_2",0,143,"_reduce_3",1,143,"_reduce_4",3,143,"_reduce_5",1,145,"_reduce_none",4,145,"_reduce_7",4,148,"_reduce_8",2,149,"_reduce_9",0,153,"_reduce_10",1,153,"_reduce_11",3,153,"_reduce_12",0,168,"_reduce_13",4,147,"_reduce_14",3,147,"_reduce_15",3,147,"_reduce_none",3,147,"_reduce_17",2,147,"_reduce_18",3,147,"_reduce_19",3,147,"_reduce_20",3,147,"_reduce_21",3,147,"_reduce_22",3,147,"_reduce_23",4,147,"_reduce_none",1,147,"_reduce_none",3,147,"_reduce_26",3,147,"_reduce_27",6,147,"_reduce_none",6,147,"_reduce_none",5,147,"_reduce_30",5,147,"_reduce_none",5,147,"_reduce_none",3,147,"_reduce_none",3,147,"_reduce_34",3,147,"_reduce_35",3,147,"_reduce_36",1,147,"_reduce_none",3,157,"_reduce_38",3,157,"_reduce_39",1,167,"_reduce_none",3,167,"_reduce_41",3,167,"_reduce_42",2,167,"_reduce_43",2,167,"_reduce_44",1,167,"_reduce_none",1,156,"_reduce_none",1,159,"_reduce_none",1,159,"_reduce_none",1,171,"_reduce_none",4,171,"_reduce_none",4,171,"_reduce_none",4,171,"_reduce_none",4,175,"_reduce_53",2,170,"_reduce_54",3,170,"_reduce_55",4,170,"_reduce_56",5,170,"_reduce_57",4,170,"_reduce_58",5,170,"_reduce_59",4,170,"_reduce_60",5,170,"_reduce_61",2,170,"_reduce_62",2,170,"_reduce_63",2,170,"_reduce_64",2,170,"_reduce_65",2,170,"_reduce_66",1,158,"_reduce_67",3,158,"_reduce_68",1,180,"_reduce_69",3,180,"_reduce_70",1,179,"_reduce_71",2,179,"_reduce_72",3,179,"_reduce_73",5,179,"_reduce_74",2,179,"_reduce_75",4,179,"_reduce_76",2,179,"_reduce_77",4,179,"_reduce_78",1,179,"_reduce_79",3,179,"_reduce_80",1,182,"_reduce_81",3,182,"_reduce_82",2,181,"_reduce_83",3,181,"_reduce_84",1,184,"_reduce_85",3,184,"_reduce_86",1,183,"_reduce_87",4,183,"_reduce_88",3,183,"_reduce_89",3,183,"_reduce_none",3,183,"_reduce_none",3,183,"_reduce_none",2,183,"_reduce_none",1,183,"_reduce_none",1,164,"_reduce_95",4,164,"_reduce_96",4,164,"_reduce_97",3,164,"_reduce_98",3,164,"_reduce_99",3,164,"_reduce_100",3,164,"_reduce_101",2,164,"_reduce_102",1,164,"_reduce_none",1,186,"_reduce_none",2,187,"_reduce_105",1,187,"_reduce_106",3,187,"_reduce_107",1,188,"_reduce_none",1,188,"_reduce_none",1,188,"_reduce_none",1,188,"_reduce_111",1,188,"_reduce_112",1,154,"_reduce_113",1,154,"_reduce_none",1,155,"_reduce_115",3,155,"_reduce_116",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,189,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",1,190,"_reduce_none",3,169,"_reduce_191",5,169,"_reduce_192",3,169,"_reduce_193",6,169,"_reduce_194",6,169,"_reduce_195",5,169,"_reduce_196",5,169,"_reduce_none",5,169,"_reduce_none",5,169,"_reduce_none",4,169,"_reduce_none",3,169,"_reduce_none",3,169,"_reduce_202",3,169,"_reduce_203",3,169,"_reduce_204",3,169,"_reduce_205",3,169,"_reduce_206",3,169,"_reduce_207",3,169,"_reduce_208",3,169,"_reduce_209",4,169,"_reduce_210",4,169,"_reduce_211",2,169,"_reduce_212",2,169,"_reduce_213",3,169,"_reduce_214",3,169,"_reduce_215",3,169,"_reduce_216",3,169,"_reduce_217",3,169,"_reduce_218",3,169,"_reduce_219",3,169,"_reduce_220",3,169,"_reduce_221",3,169,"_reduce_222",3,169,"_reduce_223",3,169,"_reduce_224",3,169,"_reduce_225",3,169,"_reduce_226",2,169,"_reduce_227",2,169,"_reduce_228",3,169,"_reduce_229",3,169,"_reduce_230",3,169,"_reduce_231",3,169,"_reduce_232",3,169,"_reduce_233",0,194,"_reduce_234",0,195,"_reduce_235",7,169,"_reduce_236",1,169,"_reduce_none",1,166,"_reduce_none",1,162,"_reduce_239",2,162,"_reduce_240",2,162,"_reduce_241",4,162,"_reduce_242",2,162,"_reduce_243",3,162,"_reduce_244",3,201,"_reduce_245",2,203,"_reduce_none",1,204,"_reduce_247",1,204,"_reduce_none",1,202,"_reduce_249",1,202,"_reduce_none",2,202,"_reduce_251",4,202,"_reduce_252",2,202,"_reduce_253",1,178,"_reduce_254",2,178,"_reduce_255",2,178,"_reduce_256",4,178,"_reduce_257",1,178,"_reduce_258",0,206,"_reduce_259",2,174,"_reduce_260",2,200,"_reduce_261",2,205,"_reduce_262",0,205,"_reduce_263",1,197,"_reduce_264",2,197,"_reduce_265",3,197,"_reduce_266",4,197,"_reduce_267",3,165,"_reduce_268",4,165,"_reduce_269",2,165,"_reduce_270",1,193,"_reduce_none",1,193,"_reduce_none",1,193,"_reduce_none",1,193,"_reduce_none",1,193,"_reduce_none",1,193,"_reduce_none",1,193,"_reduce_none",1,193,"_reduce_none",1,193,"_reduce_none",0,228,"_reduce_280",4,193,"_reduce_281",0,229,"_reduce_282",5,193,"_reduce_283",0,230,"_reduce_284",4,193,"_reduce_285",3,193,"_reduce_286",3,193,"_reduce_287",2,193,"_reduce_288",4,193,"_reduce_289",4,193,"_reduce_290",3,193,"_reduce_291",3,193,"_reduce_292",1,193,"_reduce_293",4,193,"_reduce_294",3,193,"_reduce_295",1,193,"_reduce_296",5,193,"_reduce_297",4,193,"_reduce_298",3,193,"_reduce_299",2,193,"_reduce_300",1,193,"_reduce_none",2,193,"_reduce_302",2,193,"_reduce_303",6,193,"_reduce_304",6,193,"_reduce_305",0,231,"_reduce_306",0,232,"_reduce_307",7,193,"_reduce_308",0,233,"_reduce_309",0,234,"_reduce_310",7,193,"_reduce_311",5,193,"_reduce_312",4,193,"_reduce_313",5,193,"_reduce_314",0,235,"_reduce_315",0,236,"_reduce_316",9,193,"_reduce_317",0,237,"_reduce_318",6,193,"_reduce_319",0,238,"_reduce_320",0,239,"_reduce_321",8,193,"_reduce_322",0,240,"_reduce_323",0,241,"_reduce_324",6,193,"_reduce_325",0,242,"_reduce_326",6,193,"_reduce_327",0,243,"_reduce_328",0,244,"_reduce_329",9,193,"_reduce_330",1,193,"_reduce_331",1,193,"_reduce_332",1,193,"_reduce_333",1,193,"_reduce_none",1,161,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",1,218,"_reduce_none",2,218,"_reduce_none",1,220,"_reduce_none",1,220,"_reduce_none",1,220,"_reduce_none",1,245,"_reduce_343",4,245,"_reduce_344",1,246,"_reduce_345",3,246,"_reduce_346",1,247,"_reduce_347",1,247,"_reduce_none",2,217,"_reduce_349",3,249,"_reduce_350",2,249,"_reduce_351",1,249,"_reduce_352",1,249,"_reduce_none",3,250,"_reduce_354",3,250,"_reduce_355",1,219,"_reduce_356",5,219,"_reduce_357",1,151,"_reduce_none",2,151,"_reduce_359",1,252,"_reduce_360",3,252,"_reduce_361",3,253,"_reduce_362",1,176,"_reduce_none",3,176,"_reduce_364",1,176,"_reduce_365",4,176,"_reduce_366",4,254,"_reduce_367",2,254,"_reduce_368",2,254,"_reduce_369",1,254,"_reduce_370",2,259,"_reduce_371",1,259,"_reduce_372",6,251,"_reduce_373",8,251,"_reduce_374",4,251,"_reduce_375",6,251,"_reduce_376",4,251,"_reduce_377",2,251,"_reduce_378",6,251,"_reduce_379",2,251,"_reduce_380",4,251,"_reduce_381",6,251,"_reduce_382",2,251,"_reduce_383",4,251,"_reduce_384",2,251,"_reduce_385",4,251,"_reduce_386",1,251,"_reduce_387",0,263,"_reduce_388",5,262,"_reduce_389",2,172,"_reduce_390",4,172,"_reduce_none",4,172,"_reduce_none",4,172,"_reduce_none",2,216,"_reduce_394",4,216,"_reduce_395",4,216,"_reduce_396",3,216,"_reduce_397",4,216,"_reduce_398",3,216,"_reduce_399",2,216,"_reduce_400",1,216,"_reduce_401",0,265,"_reduce_402",5,215,"_reduce_403",0,266,"_reduce_404",5,215,"_reduce_405",0,268,"_reduce_406",6,221,"_reduce_407",1,267,"_reduce_408",1,267,"_reduce_none",6,150,"_reduce_410",0,150,"_reduce_411",1,269,"_reduce_412",1,269,"_reduce_none",1,269,"_reduce_none",2,270,"_reduce_415",1,270,"_reduce_416",2,152,"_reduce_417",1,152,"_reduce_none",1,207,"_reduce_none",1,207,"_reduce_none",1,207,"_reduce_none",1,208,"_reduce_422",1,273,"_reduce_none",2,273,"_reduce_424",3,274,"_reduce_425",1,274,"_reduce_426",3,209,"_reduce_427",3,210,"_reduce_428",3,211,"_reduce_429",3,211,"_reduce_430",1,277,"_reduce_431",3,277,"_reduce_432",1,278,"_reduce_433",2,278,"_reduce_434",3,212,"_reduce_435",3,212,"_reduce_436",1,280,"_reduce_437",3,280,"_reduce_438",1,275,"_reduce_439",2,275,"_reduce_440",1,276,"_reduce_441",2,276,"_reduce_442",1,279,"_reduce_443",0,282,"_reduce_444",3,279,"_reduce_445",0,283,"_reduce_446",4,279,"_reduce_447",1,281,"_reduce_448",1,281,"_reduce_449",1,281,"_reduce_450",1,281,"_reduce_none",2,191,"_reduce_452",1,191,"_reduce_453",1,284,"_reduce_none",1,284,"_reduce_none",1,284,"_reduce_none",1,284,"_reduce_none",3,272,"_reduce_458",1,271,"_reduce_459",1,271,"_reduce_460",2,271,"_reduce_461",2,271,"_reduce_462",2,271,"_reduce_463",2,271,"_reduce_464",1,185,"_reduce_465",1,185,"_reduce_466",1,185,"_reduce_467",1,185,"_reduce_468",1,185,"_reduce_469",1,185,"_reduce_470",1,185,"_reduce_471",1,185,"_reduce_472",1,185,"_reduce_473",1,185,"_reduce_474",1,185,"_reduce_475",1,213,"_reduce_476",1,160,"_reduce_477",1,163,"_reduce_478",1,163,"_reduce_none",1,223,"_reduce_480",3,223,"_reduce_481",2,223,"_reduce_482",4,225,"_reduce_483",2,225,"_reduce_484",1,286,"_reduce_none",1,286,"_reduce_none",2,256,"_reduce_487",1,256,"_reduce_488",1,287,"_reduce_489",2,288,"_reduce_490",1,288,"_reduce_491",2,289,"_reduce_492",1,289,"_reduce_493",1,255,"_reduce_494",3,255,"_reduce_495",1,290,"_reduce_496",3,290,"_reduce_497",4,291,"_reduce_498",2,291,"_reduce_499",2,291,"_reduce_500",1,291,"_reduce_501",2,292,"_reduce_502",0,292,"_reduce_503",6,285,"_reduce_504",8,285,"_reduce_505",4,285,"_reduce_506",6,285,"_reduce_507",4,285,"_reduce_508",6,285,"_reduce_509",2,285,"_reduce_510",4,285,"_reduce_511",6,285,"_reduce_512",2,285,"_reduce_513",4,285,"_reduce_514",2,285,"_reduce_515",4,285,"_reduce_516",1,285,"_reduce_517",0,285,"_reduce_518",1,294,"_reduce_none",1,294,"_reduce_520",1,248,"_reduce_521",1,248,"_reduce_522",1,248,"_reduce_523",1,248,"_reduce_524",1,295,"_reduce_525",3,295,"_reduce_526",1,222,"_reduce_none",1,222,"_reduce_none",1,297,"_reduce_529",3,297,"_reduce_530",1,298,"_reduce_531",3,298,"_reduce_532",1,296,"_reduce_none",4,296,"_reduce_534",6,296,"_reduce_535",3,296,"_reduce_536",5,296,"_reduce_537",2,296,"_reduce_538",4,296,"_reduce_539",1,296,"_reduce_540",3,296,"_reduce_541",1,260,"_reduce_542",3,260,"_reduce_543",3,299,"_reduce_544",1,293,"_reduce_545",3,293,"_reduce_546",1,300,"_reduce_none",1,300,"_reduce_none",2,261,"_reduce_549",1,261,"_reduce_550",1,301,"_reduce_none",1,301,"_reduce_none",2,258,"_reduce_553",2,257,"_reduce_554",0,257,"_reduce_555",1,226,"_reduce_556",4,226,"_reduce_557",0,214,"_reduce_558",2,214,"_reduce_559",1,199,"_reduce_560",3,199,"_reduce_561",3,302,"_reduce_562",2,302,"_reduce_563",4,302,"_reduce_564",2,302,"_reduce_565",1,177,"_reduce_none",1,177,"_reduce_none",1,177,"_reduce_none",1,173,"_reduce_none",1,173,"_reduce_none",1,173,"_reduce_none",1,173,"_reduce_none",1,264,"_reduce_none",1,264,"_reduce_none",1,264,"_reduce_none",1,227,"_reduce_none",1,227,"_reduce_none",0,144,"_reduce_none",1,144,"_reduce_none",0,192,"_reduce_none",1,192,"_reduce_none",0,198,"_reduce_none",1,198,"_reduce_none",1,198,"_reduce_none",1,224,"_reduce_none",1,224,"_reduce_none",1,146,"_reduce_none",2,146,"_reduce_none",0,196,"_reduce_589"];racc_reduce_n=590;racc_shift_n=1036;racc_token_table=$hash(false,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"tIDENTIFIER",50,"tFID",51,"tGVAR",52,"tIVAR",53,"tCONSTANT",54,"tLABEL",55,"tCVAR",56,"tNTH_REF",57,"tBACK_REF",58,"tSTRING_CONTENT",59,"tINTEGER",60,"tFLOAT",61,"tREGEXP_END",62,"tUPLUS",63,"tUMINUS",64,"tPOW",65,"tCMP",66,"tEQ",67,"tEQQ",68,"tNEQ",69,"tGEQ",70,"tLEQ",71,"tANDOP",72,"tOROP",73,"tMATCH",74,"tNMATCH",75,"tJSDOT",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tRBRACK",92,"tLBRACE",93,"tLBRACE_ARG",94,"tSTAR",95,"tSTAR2",96,"tAMPER",97,"tAMPER2",98,"tTILDE",99,"tPERCENT",100,"tDIVIDE",101,"tPLUS",102,"tMINUS",103,"tLT",104,"tGT",105,"tPIPE",106,"tBANG",107,"tCARET",108,"tLCURLY",109,"tRCURLY",110,"tBACK_REF2",111,"tSYMBEG",112,"tSTRING_BEG",113,"tXSTRING_BEG",114,"tREGEXP_BEG",115,"tWORDS_BEG",116,"tAWORDS_BEG",117,"tSTRING_DBEG",118,"tSTRING_DVAR",119,"tSTRING_END",120,"tSTRING",121,"tSYMBOL",122,"tNL",123,"tEH",124,"tCOLON",125,"tCOMMA",126,"tSPACE",127,"tSEMI",128,"tLAMBDA",129,"tLAMBEG",130,"tLBRACK2",131,"tLBRACK",132,"tJSLBRACK",133,"tDSTAR",134,"tLABEL_END",135,"tEQL",136,"tLOWEST",137,"-@NUM",138,"+@NUM",139);racc_nt_base=140;racc_use_result_var=true;Opal.cdecl($scope,"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,racc_nt_base,racc_reduce_table,racc_token_table,racc_shift_n,racc_reduce_n,racc_use_result_var]);Opal.cdecl($scope,"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tREGEXP_END","tUPLUS","tUMINUS","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tJSDOT","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tWORDS_BEG","tAWORDS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tLBRACK2","tLBRACK","tJSLBRACK","tDSTAR","tLABEL_END","tEQL","tLOWEST",'"-@NUM"','"+@NUM"',"$start","program","top_compstmt","top_stmts","opt_terms","top_stmt","terms","stmt","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","var_lhs","primary_value","aref_args","backref","lhs","mrhs","arg_value","expr","@1","arg","command","block_command","block_call","operation2","command_args","cmd_brace_block","opt_block_var","operation","call_args","mlhs_basic","mlhs_entry","mlhs_head","mlhs_item","mlhs_node","mlhs_post","variable","cname","cpath","fname","op","reswords","symbol","opt_nl","primary","@2","@3","none","args","trailer","assocs","block_arg","paren_args","opt_call_args","rparen","opt_paren_args","opt_block_arg","@4","literal","strings","xstring","regexp","words","awords","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","do","case_body","for_var","superclass","term","f_arglist","singleton","dot_or_colon","@5","@6","@7","@8","@9","@10","@11","@12","@13","@14","@15","@16","@17","@18","@19","@20","@21","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","block_param","f_block_optarg","f_block_opt","block_args_tail","f_block_kwarg","f_kwrest","opt_f_block_arg","f_block_arg","opt_block_args_tail","f_arg","f_rest_arg","do_block","@22","operation3","@23","@24","cases","@25","exc_list","exc_var","numeric","dsym","string","string1","string_contents","xstring_contents","word_list","word","string_content","qword_list","string_dvar","@26","@27","sym","f_args","kwrest_mark","f_label","f_kw","f_block_kw","f_kwarg","args_tail","opt_args_tail","f_optarg","f_norm_arg","f_arg_item","f_margs","f_marg","f_marg_list","f_opt","restarg_mark","blkarg_mark","assoc"]);Opal.cdecl($scope,"Racc_debug_parser",false);Opal.defn(self,"$_reduce_2",TMP_9=function $$_reduce_2(val,_values,result){var self=this;result=self.$new_compstmt(val["$[]"](0));return result},TMP_9.$$arity=3);Opal.defn(self,"$_reduce_3",TMP_10=function $$_reduce_3(val,_values,result){var self=this;result=self.$new_block();return result},TMP_10.$$arity=3);Opal.defn(self,"$_reduce_4",TMP_11=function $$_reduce_4(val,_values,result){var self=this;result=self.$new_block(val["$[]"](0));return result},TMP_11.$$arity=3);Opal.defn(self,"$_reduce_5",TMP_12=function $$_reduce_5(val,_values,result){var self=this;val["$[]"](0)["$<<"](val["$[]"](2));result=val["$[]"](0);return result},TMP_12.$$arity=3);Opal.defn(self,"$_reduce_7",TMP_13=function $$_reduce_7(val,_values,result){var self=this;result=val["$[]"](2);return result},TMP_13.$$arity=3);Opal.defn(self,"$_reduce_8",TMP_14=function $$_reduce_8(val,_values,result){var self=this;result=self.$new_body(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3));return result},TMP_14.$$arity=3);Opal.defn(self,"$_reduce_9",TMP_15=function $$_reduce_9(val,_values,result){var self=this;result=self.$new_compstmt(val["$[]"](0));return result},TMP_15.$$arity=3);Opal.defn(self,"$_reduce_10",TMP_16=function $$_reduce_10(val,_values,result){var self=this;result=self.$new_block();return result},TMP_16.$$arity=3);Opal.defn(self,"$_reduce_11",TMP_17=function $$_reduce_11(val,_values,result){var self=this;result=self.$new_block(val["$[]"](0));return result},TMP_17.$$arity=3);Opal.defn(self,"$_reduce_12",TMP_18=function $$_reduce_12(val,_values,result){var self=this;val["$[]"](0)["$<<"](val["$[]"](2));result=val["$[]"](0);return result},TMP_18.$$arity=3);Opal.defn(self,"$_reduce_13",TMP_19=function $$_reduce_13(val,_values,result){var $a,$b,self=this;$a=["expr_fname"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_19.$$arity=3);Opal.defn(self,"$_reduce_14",TMP_20=function $$_reduce_14(val,_values,result){var self=this;result=self.$new_alias(val["$[]"](0),val["$[]"](1),val["$[]"](3));return result},TMP_20.$$arity=3);Opal.defn(self,"$_reduce_15",TMP_21=function $$_reduce_15(val,_values,result){var self=this;result=self.$s("valias",self.$value(val["$[]"](1)).$to_sym(),self.$value(val["$[]"](2)).$to_sym());return result},TMP_21.$$arity=3);Opal.defn(self,"$_reduce_17",TMP_22=function $$_reduce_17(val,_values,result){var self=this;result=self.$s("valias",self.$value(val["$[]"](1)).$to_sym(),self.$value(val["$[]"](2)).$to_sym());return result},TMP_22.$$arity=3);Opal.defn(self,"$_reduce_18",TMP_23=function $$_reduce_18(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_23.$$arity=3);Opal.defn(self,"$_reduce_19",TMP_24=function $$_reduce_19(val,_values,result){var self=this;result=self.$new_if(val["$[]"](1),val["$[]"](2),val["$[]"](0),nil);return result},TMP_24.$$arity=3);Opal.defn(self,"$_reduce_20",TMP_25=function $$_reduce_20(val,_values,result){var self=this;result=self.$new_if(val["$[]"](1),val["$[]"](2),nil,val["$[]"](0));return result},TMP_25.$$arity=3);Opal.defn(self,"$_reduce_21",TMP_26=function $$_reduce_21(val,_values,result){var self=this;result=self.$new_while(val["$[]"](1),val["$[]"](2),val["$[]"](0));return result},TMP_26.$$arity=3);Opal.defn(self,"$_reduce_22",TMP_27=function $$_reduce_22(val,_values,result){var self=this;result=self.$new_until(val["$[]"](1),val["$[]"](2),val["$[]"](0));return result},TMP_27.$$arity=3);Opal.defn(self,"$_reduce_23",TMP_28=function $$_reduce_23(val,_values,result){var self=this;result=self.$new_rescue_mod(val["$[]"](1),val["$[]"](0),val["$[]"](2));return result},TMP_28.$$arity=3);Opal.defn(self,"$_reduce_26",TMP_29=function $$_reduce_26(val,_values,result){var self=this;result=self.$s("masgn",val["$[]"](0),self.$s("to_ary",val["$[]"](2)));return result},TMP_29.$$arity=3);Opal.defn(self,"$_reduce_27",TMP_30=function $$_reduce_27(val,_values,result){var self=this;result=self.$new_op_asgn(val["$[]"](1),val["$[]"](0),val["$[]"](2));return result},TMP_30.$$arity=3);Opal.defn(self,"$_reduce_30",TMP_31=function $$_reduce_30(val,_values,result){var self=this;result=self.$s("op_asgn2",val["$[]"](0),self.$op_to_setter(val["$[]"](2)),self.$value(val["$[]"](3)).$to_sym(),val["$[]"](4));return result},TMP_31.$$arity=3);Opal.defn(self,"$_reduce_34",TMP_32=function $$_reduce_34(val,_values,result){var self=this;result=self.$new_assign(val["$[]"](0),val["$[]"](1),self.$s("svalue",val["$[]"](2)));return result},TMP_32.$$arity=3);Opal.defn(self,"$_reduce_35",TMP_33=function $$_reduce_35(val,_values,result){var self=this;result=self.$s("masgn",val["$[]"](0),self.$s("to_ary",val["$[]"](2)));return result},TMP_33.$$arity=3);Opal.defn(self,"$_reduce_36",TMP_34=function $$_reduce_36(val,_values,result){var self=this;result=self.$s("masgn",val["$[]"](0),val["$[]"](2));return result},TMP_34.$$arity=3);Opal.defn(self,"$_reduce_38",TMP_35=function $$_reduce_38(val,_values,result){var self=this;result=self.$new_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_35.$$arity=3);Opal.defn(self,"$_reduce_39",TMP_36=function $$_reduce_39(val,_values,result){var self=this;result=self.$new_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_36.$$arity=3);Opal.defn(self,"$_reduce_41",TMP_37=function $$_reduce_41(val,_values,result){var self=this;result=self.$s("and",val["$[]"](0),val["$[]"](2));return result},TMP_37.$$arity=3);Opal.defn(self,"$_reduce_42",TMP_38=function $$_reduce_42(val,_values,result){var self=this;result=self.$s("or",val["$[]"](0),val["$[]"](2));return result},TMP_38.$$arity=3);Opal.defn(self,"$_reduce_43",TMP_39=function $$_reduce_43(val,_values,result){var self=this;result=self.$new_unary_call(["!",[]],val["$[]"](1));return result},TMP_39.$$arity=3);Opal.defn(self,"$_reduce_44",TMP_40=function $$_reduce_44(val,_values,result){var self=this;result=self.$new_unary_call(val["$[]"](0),val["$[]"](1));return result},TMP_40.$$arity=3);Opal.defn(self,"$_reduce_53",TMP_41=function $$_reduce_53(val,_values,result){var self=this;result=self.$new_iter(val["$[]"](1),val["$[]"](2));return result},TMP_41.$$arity=3);Opal.defn(self,"$_reduce_54",TMP_42=function $$_reduce_54(val,_values,result){var self=this;result=self.$new_call(nil,val["$[]"](0),val["$[]"](1));return result},TMP_42.$$arity=3);Opal.defn(self,"$_reduce_55",TMP_43=function $$_reduce_55(val,_values,result){var self=this;result=self.$new_call(nil,val["$[]"](0),val["$[]"](1))["$<<"](val["$[]"](2));return result},TMP_43.$$arity=3);Opal.defn(self,"$_reduce_56",TMP_44=function $$_reduce_56(val,_values,result){var self=this;result=self.$new_js_call(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},TMP_44.$$arity=3);Opal.defn(self,"$_reduce_57",TMP_45=function $$_reduce_57(val,_values,result){var self=this;result=self.$new_js_call(val["$[]"](0),val["$[]"](2),val["$[]"](3))["$<<"](val["$[]"](4));return result},TMP_45.$$arity=3);Opal.defn(self,"$_reduce_58",TMP_46=function $$_reduce_58(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},TMP_46.$$arity=3);Opal.defn(self,"$_reduce_59",TMP_47=function $$_reduce_59(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2),val["$[]"](3))["$<<"](val["$[]"](4));return result},TMP_47.$$arity=3);Opal.defn(self,"$_reduce_60",TMP_48=function $$_reduce_60(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},TMP_48.$$arity=3);Opal.defn(self,"$_reduce_61",TMP_49=function $$_reduce_61(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2),val["$[]"](3))["$<<"](val["$[]"](4));return result},TMP_49.$$arity=3);Opal.defn(self,"$_reduce_62",TMP_50=function $$_reduce_62(val,_values,result){var self=this;result=self.$new_super(val["$[]"](0),val["$[]"](1));return result},TMP_50.$$arity=3);Opal.defn(self,"$_reduce_63",TMP_51=function $$_reduce_63(val,_values,result){var self=this;result=self.$new_yield(val["$[]"](1));return result},TMP_51.$$arity=3);Opal.defn(self,"$_reduce_64",TMP_52=function $$_reduce_64(val,_values,result){var self=this;result=self.$new_return(val["$[]"](0),val["$[]"](1));return result},TMP_52.$$arity=3);Opal.defn(self,"$_reduce_65",TMP_53=function $$_reduce_65(val,_values,result){var self=this;result=self.$new_break(val["$[]"](0),val["$[]"](1));return result},TMP_53.$$arity=3);Opal.defn(self,"$_reduce_66",TMP_54=function $$_reduce_66(val,_values,result){var self=this;result=self.$new_next(val["$[]"](0),val["$[]"](1));return result},TMP_54.$$arity=3);Opal.defn(self,"$_reduce_67",TMP_55=function $$_reduce_67(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_55.$$arity=3);Opal.defn(self,"$_reduce_68",TMP_56=function $$_reduce_68(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_56.$$arity=3);Opal.defn(self,"$_reduce_69",TMP_57=function $$_reduce_69(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_57.$$arity=3);Opal.defn(self,"$_reduce_70",TMP_58=function $$_reduce_70(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_58.$$arity=3);Opal.defn(self,"$_reduce_71",TMP_59=function $$_reduce_71(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_59.$$arity=3);Opal.defn(self,"$_reduce_72",TMP_60=function $$_reduce_72(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},TMP_60.$$arity=3);Opal.defn(self,"$_reduce_73",TMP_61=function $$_reduce_73(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.$s("splat",val["$[]"](2)));return result},TMP_61.$$arity=3);Opal.defn(self,"$_reduce_74",TMP_62=function $$_reduce_74(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.$s("splat",val["$[]"](2))).$concat(val["$[]"](4).$children());return result},TMP_62.$$arity=3);Opal.defn(self,"$_reduce_75",TMP_63=function $$_reduce_75(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.$s("splat"));return result},TMP_63.$$arity=3);Opal.defn(self,"$_reduce_76",TMP_64=function $$_reduce_76(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.$s("splat")).$concat(val["$[]"](3).$children());return result},TMP_64.$$arity=3);Opal.defn(self,"$_reduce_77",TMP_65=function $$_reduce_77(val,_values,result){var self=this;result=self.$s("array",self.$s("splat",val["$[]"](1)));return result},TMP_65.$$arity=3);Opal.defn(self,"$_reduce_78",TMP_66=function $$_reduce_78(val,_values,result){var self=this;result=self.$s("array",self.$s("splat",val["$[]"](1))).$concat(val["$[]"](3).$children());return result},TMP_66.$$arity=3);Opal.defn(self,"$_reduce_79",TMP_67=function $$_reduce_79(val,_values,result){var self=this;result=self.$s("array",self.$s("splat"));return result},TMP_67.$$arity=3);Opal.defn(self,"$_reduce_80",TMP_68=function $$_reduce_80(val,_values,result){var self=this;result=self.$s("array",self.$s("splat")).$concat(val["$[]"](2).$children());return result},TMP_68.$$arity=3);Opal.defn(self,"$_reduce_81",TMP_69=function $$_reduce_81(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_69.$$arity=3);Opal.defn(self,"$_reduce_82",TMP_70=function $$_reduce_82(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_70.$$arity=3);Opal.defn(self,"$_reduce_83",TMP_71=function $$_reduce_83(val,_values,result){var self=this;result=self.$s("array",val["$[]"](0));return result},TMP_71.$$arity=3);Opal.defn(self,"$_reduce_84",TMP_72=function $$_reduce_84(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](1));return result},TMP_72.$$arity=3);Opal.defn(self,"$_reduce_85",TMP_73=function $$_reduce_85(val,_values,result){var self=this;result=self.$s("array",val["$[]"](0));return result},TMP_73.$$arity=3);Opal.defn(self,"$_reduce_86",TMP_74=function $$_reduce_86(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},TMP_74.$$arity=3);Opal.defn(self,"$_reduce_87",TMP_75=function $$_reduce_87(val,_values,result){var self=this;result=self.$new_assignable(val["$[]"](0));return result},TMP_75.$$arity=3);Opal.defn(self,"$_reduce_88",TMP_76=function $$_reduce_88(val,_values,result){var $a,self=this,args=nil;args=function(){if(($a=val["$[]"](2))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return val["$[]"](2)}else{return[]}return nil}();result=self.$s("attrasgn",val["$[]"](0),"[]=",($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(args))));return result},TMP_76.$$arity=3);Opal.defn(self,"$_reduce_89",TMP_77=function $$_reduce_89(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2),[]);return result},TMP_77.$$arity=3);Opal.defn(self,"$_reduce_95",TMP_78=function $$_reduce_95(val,_values,result){var self=this;result=self.$new_assignable(val["$[]"](0));return result},TMP_78.$$arity=3);Opal.defn(self,"$_reduce_96",TMP_79=function $$_reduce_96(val,_values,result){var self=this;result=self.$new_js_attrasgn(val["$[]"](0),val["$[]"](2));return result},TMP_79.$$arity=3);Opal.defn(self,"$_reduce_97",TMP_80=function $$_reduce_97(val,_values,result){var self=this;result=self.$new_attrasgn(val["$[]"](0),"[]=",val["$[]"](2));return result},TMP_80.$$arity=3);Opal.defn(self,"$_reduce_98",TMP_81=function $$_reduce_98(val,_values,result){var self=this;result=self.$new_attrasgn(val["$[]"](0),self.$op_to_setter(val["$[]"](2)));return result},TMP_81.$$arity=3);Opal.defn(self,"$_reduce_99",TMP_82=function $$_reduce_99(val,_values,result){var self=this;result=self.$new_attrasgn(val["$[]"](0),self.$op_to_setter(val["$[]"](2)));return result},TMP_82.$$arity=3);Opal.defn(self,"$_reduce_100",TMP_83=function $$_reduce_100(val,_values,result){var self=this;result=self.$new_attrasgn(val["$[]"](0),self.$op_to_setter(val["$[]"](2)));return result},TMP_83.$$arity=3);Opal.defn(self,"$_reduce_101",TMP_84=function $$_reduce_101(val,_values,result){var self=this;result=self.$new_colon2(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_84.$$arity=3);Opal.defn(self,"$_reduce_102",TMP_85=function $$_reduce_102(val,_values,result){var self=this;result=self.$new_colon3(val["$[]"](0),val["$[]"](1));return result},TMP_85.$$arity=3);Opal.defn(self,"$_reduce_105",TMP_86=function $$_reduce_105(val,_values,result){var self=this;result=self.$new_colon3(val["$[]"](0),val["$[]"](1));return result},TMP_86.$$arity=3);Opal.defn(self,"$_reduce_106",TMP_87=function $$_reduce_106(val,_values,result){var self=this;result=self.$new_const(val["$[]"](0));return result},TMP_87.$$arity=3);Opal.defn(self,"$_reduce_107",TMP_88=function $$_reduce_107(val,_values,result){var self=this;result=self.$new_colon2(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_88.$$arity=3);Opal.defn(self,"$_reduce_111",TMP_89=function $$_reduce_111(val,_values,result){var $a,$b,self=this;$a=["expr_end"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];result=val["$[]"](0);return result},TMP_89.$$arity=3);Opal.defn(self,"$_reduce_112",TMP_90=function $$_reduce_112(val,_values,result){var $a,$b,self=this;$a=["expr_end"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];result=val["$[]"](0);return result},TMP_90.$$arity=3);Opal.defn(self,"$_reduce_113",TMP_91=function $$_reduce_113(val,_values,result){var self=this;result=self.$new_sym(val["$[]"](0));return result},TMP_91.$$arity=3);Opal.defn(self,"$_reduce_115",TMP_92=function $$_reduce_115(val,_values,result){var self=this;result=self.$s("undef",val["$[]"](0));return result},TMP_92.$$arity=3);Opal.defn(self,"$_reduce_116",TMP_93=function $$_reduce_116(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},TMP_93.$$arity=3);Opal.defn(self,"$_reduce_191",TMP_94=function $$_reduce_191(val,_values,result){var self=this;result=self.$new_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_94.$$arity=3);Opal.defn(self,"$_reduce_192",TMP_95=function $$_reduce_192(val,_values,result){var self=this;result=self.$new_assign(val["$[]"](0),val["$[]"](1),self.$s("rescue_mod",val["$[]"](2),val["$[]"](4)));return result},TMP_95.$$arity=3);Opal.defn(self,"$_reduce_193",TMP_96=function $$_reduce_193(val,_values,result){var self=this;result=self.$new_op_asgn(val["$[]"](1),val["$[]"](0),val["$[]"](2));return result},TMP_96.$$arity=3);Opal.defn(self,"$_reduce_194",TMP_97=function $$_reduce_194(val,_values,result){var self=this;result=self.$new_op_asgn1(val["$[]"](0),val["$[]"](2),val["$[]"](4),val["$[]"](5));return result},TMP_97.$$arity=3);Opal.defn(self,"$_reduce_195",TMP_98=function $$_reduce_195(val,_values,result){var self=this;self.$raise(".JS[...] "+val["$[]"](4)+" is not supported");return result},TMP_98.$$arity=3);Opal.defn(self,"$_reduce_196",TMP_99=function $$_reduce_196(val,_values,result){var self=this;result=self.$s("op_asgn2",val["$[]"](0),self.$op_to_setter(val["$[]"](2)),self.$value(val["$[]"](3)).$to_sym(),val["$[]"](4));return result},TMP_99.$$arity=3);Opal.defn(self,"$_reduce_202",TMP_100=function $$_reduce_202(val,_values,result){var self=this;result=self.$new_irange(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_100.$$arity=3);Opal.defn(self,"$_reduce_203",TMP_101=function $$_reduce_203(val,_values,result){var self=this;result=self.$new_erange(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_101.$$arity=3);Opal.defn(self,"$_reduce_204",TMP_102=function $$_reduce_204(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_102.$$arity=3);Opal.defn(self,"$_reduce_205",TMP_103=function $$_reduce_205(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_103.$$arity=3);Opal.defn(self,"$_reduce_206",TMP_104=function $$_reduce_206(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_104.$$arity=3);Opal.defn(self,"$_reduce_207",TMP_105=function $$_reduce_207(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_105.$$arity=3);Opal.defn(self,"$_reduce_208",TMP_106=function $$_reduce_208(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_106.$$arity=3);Opal.defn(self,"$_reduce_209",TMP_107=function $$_reduce_209(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_107.$$arity=3);Opal.defn(self,"$_reduce_210",TMP_108=function $$_reduce_210(val,_values,result){var self=this;result=self.$new_call(self.$new_binary_call(self.$new_int(val["$[]"](1)),val["$[]"](2),val["$[]"](3)),["-@",[]],[]);return result},TMP_108.$$arity=3);Opal.defn(self,"$_reduce_211",TMP_109=function $$_reduce_211(val,_values,result){var self=this;result=self.$new_call(self.$new_binary_call(self.$new_float(val["$[]"](1)),val["$[]"](2),val["$[]"](3)),["-@",[]],[]);return result},TMP_109.$$arity=3);Opal.defn(self,"$_reduce_212",TMP_110=function $$_reduce_212(val,_values,result){var $a,self=this;result=self.$new_call(val["$[]"](1),["+@",[]],[]);if(($a=["int","float"]["$include?"](val["$[]"](1).$type()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result=val["$[]"](1)}return result},TMP_110.$$arity=3);Opal.defn(self,"$_reduce_213",TMP_111=function $$_reduce_213(val,_values,result){var self=this;result=self.$new_call(val["$[]"](1),["-@",[]],[]);if(val["$[]"](1).$type()["$=="]("int")){val["$[]"](1)["$[]="](1,val["$[]"](1)["$[]"](1)["$-@"]());result=val["$[]"](1)}else if(val["$[]"](1).$type()["$=="]("float")){val["$[]"](1)["$[]="](1,val["$[]"](1)["$[]"](1).$to_f()["$-@"]());result=val["$[]"](1)}return result},TMP_111.$$arity=3);Opal.defn(self,"$_reduce_214",TMP_112=function $$_reduce_214(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_112.$$arity=3);Opal.defn(self,"$_reduce_215",TMP_113=function $$_reduce_215(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_113.$$arity=3);Opal.defn(self,"$_reduce_216",TMP_114=function $$_reduce_216(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_114.$$arity=3);Opal.defn(self,"$_reduce_217",TMP_115=function $$_reduce_217(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_115.$$arity=3);Opal.defn(self,"$_reduce_218",TMP_116=function $$_reduce_218(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_116.$$arity=3);Opal.defn(self,"$_reduce_219",TMP_117=function $$_reduce_219(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_117.$$arity=3);Opal.defn(self,"$_reduce_220",TMP_118=function $$_reduce_220(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_118.$$arity=3);Opal.defn(self,"$_reduce_221",TMP_119=function $$_reduce_221(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_119.$$arity=3);Opal.defn(self,"$_reduce_222",TMP_120=function $$_reduce_222(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_120.$$arity=3);Opal.defn(self,"$_reduce_223",TMP_121=function $$_reduce_223(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_121.$$arity=3);Opal.defn(self,"$_reduce_224",TMP_122=function $$_reduce_224(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_122.$$arity=3);Opal.defn(self,"$_reduce_225",TMP_123=function $$_reduce_225(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_123.$$arity=3);Opal.defn(self,"$_reduce_226",TMP_124=function $$_reduce_226(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_124.$$arity=3);Opal.defn(self,"$_reduce_227",TMP_125=function $$_reduce_227(val,_values,result){var self=this;result=self.$new_unary_call(val["$[]"](0),val["$[]"](1));return result},TMP_125.$$arity=3);Opal.defn(self,"$_reduce_228",TMP_126=function $$_reduce_228(val,_values,result){var self=this;result=self.$new_unary_call(val["$[]"](0),val["$[]"](1));return result},TMP_126.$$arity=3);Opal.defn(self,"$_reduce_229",TMP_127=function $$_reduce_229(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_127.$$arity=3);Opal.defn(self,"$_reduce_230",TMP_128=function $$_reduce_230(val,_values,result){var self=this;result=self.$new_binary_call(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_128.$$arity=3);Opal.defn(self,"$_reduce_231",TMP_129=function $$_reduce_231(val,_values,result){var self=this;result=self.$new_and(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_129.$$arity=3);Opal.defn(self,"$_reduce_232",TMP_130=function $$_reduce_232(val,_values,result){var self=this;result=self.$new_or(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_130.$$arity=3);Opal.defn(self,"$_reduce_233",TMP_131=function $$_reduce_233(val,_values,result){var self=this;result=self.$s("defined",val["$[]"](2));return result},TMP_131.$$arity=3);Opal.defn(self,"$_reduce_234",TMP_132=function $$_reduce_234(val,_values,result){var self=this;self.$lexer().$cond_push(1);return result},TMP_132.$$arity=3);Opal.defn(self,"$_reduce_235",TMP_133=function $$_reduce_235(val,_values,result){var self=this;self.$lexer().$cond_pop();return result},TMP_133.$$arity=3);Opal.defn(self,"$_reduce_236",TMP_134=function $$_reduce_236(val,_values,result){var self=this;result=self.$new_if(val["$[]"](1),val["$[]"](0),val["$[]"](3),val["$[]"](6));return result},TMP_134.$$arity=3);Opal.defn(self,"$_reduce_239",TMP_135=function $$_reduce_239(val,_values,result){var self=this;result=nil;return result},TMP_135.$$arity=3);Opal.defn(self,"$_reduce_240",TMP_136=function $$_reduce_240(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_136.$$arity=3);Opal.defn(self,"$_reduce_241",TMP_137=function $$_reduce_241(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_137.$$arity=3);Opal.defn(self,"$_reduce_242",TMP_138=function $$_reduce_242(val,_values,result){var $a,self=this;val["$[]"](0)["$<<"](($a=self).$s.apply($a,["hash"].concat(Opal.to_a(val["$[]"](2)))));result=val["$[]"](0);return result},TMP_138.$$arity=3);Opal.defn(self,"$_reduce_243",TMP_139=function $$_reduce_243(val,_values,result){var $a,self=this;result=[($a=self).$s.apply($a,["hash"].concat(Opal.to_a(val["$[]"](0))))];return result},TMP_139.$$arity=3);Opal.defn(self,"$_reduce_244",TMP_140=function $$_reduce_244(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},TMP_140.$$arity=3);Opal.defn(self,"$_reduce_245",TMP_141=function $$_reduce_245(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_141.$$arity=3);Opal.defn(self,"$_reduce_247",TMP_142=function $$_reduce_247(val,_values,result){var self=this;result=[];return result},TMP_142.$$arity=3);Opal.defn(self,"$_reduce_249",TMP_143=function $$_reduce_249(val,_values,result){var self=this;result=[];return result},TMP_143.$$arity=3);Opal.defn(self,"$_reduce_251",TMP_144=function $$_reduce_251(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_144.$$arity=3);Opal.defn(self,"$_reduce_252",TMP_145=function $$_reduce_252(val,_values,result){var self=this;result=val["$[]"](0);result["$<<"](self.$new_hash(nil,val["$[]"](2),nil));return result},TMP_145.$$arity=3);Opal.defn(self,"$_reduce_253",TMP_146=function $$_reduce_253(val,_values,result){var self=this;result=[self.$new_hash(nil,val["$[]"](0),nil)];return result},TMP_146.$$arity=3);Opal.defn(self,"$_reduce_254",TMP_147=function $$_reduce_254(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_147.$$arity=3);Opal.defn(self,"$_reduce_255",TMP_148=function $$_reduce_255(val,_values,result){var self=this;result=val["$[]"](0);self.$add_block_pass(val["$[]"](0),val["$[]"](1));return result},TMP_148.$$arity=3);Opal.defn(self,"$_reduce_256",TMP_149=function $$_reduce_256(val,_values,result){var self=this;result=[self.$new_hash(nil,val["$[]"](0),nil)];self.$add_block_pass(result,val["$[]"](1));return result},TMP_149.$$arity=3);Opal.defn(self,"$_reduce_257",TMP_150=function $$_reduce_257(val,_values,result){var $a,self=this;result=val["$[]"](0);result["$<<"](self.$new_hash(nil,val["$[]"](2),nil));if(($a=val["$[]"](3))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result["$<<"](val["$[]"](3))}return result},TMP_150.$$arity=3);Opal.defn(self,"$_reduce_258",TMP_151=function $$_reduce_258(val,_values,result){var self=this;result=[];self.$add_block_pass(result,val["$[]"](0));return result},TMP_151.$$arity=3);Opal.defn(self,"$_reduce_259",TMP_152=function $$_reduce_259(val,_values,result){var self=this;self.$lexer().$cmdarg_push(1);return result},TMP_152.$$arity=3);Opal.defn(self,"$_reduce_260",TMP_153=function $$_reduce_260(val,_values,result){var self=this;self.$lexer().$cmdarg_pop();result=val["$[]"](1);return result},TMP_153.$$arity=3);Opal.defn(self,"$_reduce_261",TMP_154=function $$_reduce_261(val,_values,result){var self=this;result=self.$new_block_pass(val["$[]"](0),val["$[]"](1));return result},TMP_154.$$arity=3);Opal.defn(self,"$_reduce_262",TMP_155=function $$_reduce_262(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_155.$$arity=3);Opal.defn(self,"$_reduce_263",TMP_156=function $$_reduce_263(val,_values,result){var self=this;result=nil;return result},TMP_156.$$arity=3);Opal.defn(self,"$_reduce_264",TMP_157=function $$_reduce_264(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_157.$$arity=3);Opal.defn(self,"$_reduce_265",TMP_158=function $$_reduce_265(val,_values,result){var self=this;result=[self.$new_splat(val["$[]"](0),val["$[]"](1))];return result},TMP_158.$$arity=3);Opal.defn(self,"$_reduce_266",TMP_159=function $$_reduce_266(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},TMP_159.$$arity=3);Opal.defn(self,"$_reduce_267",TMP_160=function $$_reduce_267(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.$new_splat(val["$[]"](2),val["$[]"](3)));return result},TMP_160.$$arity=3);Opal.defn(self,"$_reduce_268",TMP_161=function $$_reduce_268(val,_values,result){var $a,self=this;val["$[]"](0)["$<<"](val["$[]"](2));result=($a=self).$s.apply($a,["array"].concat(Opal.to_a(val["$[]"](0))));return result},TMP_161.$$arity=3);Opal.defn(self,"$_reduce_269",TMP_162=function $$_reduce_269(val,_values,result){var $a,self=this;val["$[]"](0)["$<<"](self.$s("splat",val["$[]"](3)));result=($a=self).$s.apply($a,["array"].concat(Opal.to_a(val["$[]"](0))));return result},TMP_162.$$arity=3);Opal.defn(self,"$_reduce_270",TMP_163=function $$_reduce_270(val,_values,result){var self=this;result=self.$s("splat",val["$[]"](1));return result},TMP_163.$$arity=3);Opal.defn(self,"$_reduce_280",TMP_164=function $$_reduce_280(val,_values,result){var self=this;result=self.$lexer().$line();return result},TMP_164.$$arity=3);Opal.defn(self,"$_reduce_281",TMP_165=function $$_reduce_281(val,_values,result){var self=this;result=self.$s("begin",val["$[]"](2));return result},TMP_165.$$arity=3);Opal.defn(self,"$_reduce_282",TMP_166=function $$_reduce_282(val,_values,result){var $a,$b,self=this;$a=["expr_endarg"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_166.$$arity=3);Opal.defn(self,"$_reduce_283",TMP_167=function $$_reduce_283(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_167.$$arity=3);Opal.defn(self,"$_reduce_284",TMP_168=function $$_reduce_284(val,_values,result){var $a,$b,self=this;$a=["expr_endarg"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_168.$$arity=3);Opal.defn(self,"$_reduce_285",TMP_169=function $$_reduce_285(val,_values,result){var self=this;result=self.$new_nil(val["$[]"](0));return result},TMP_169.$$arity=3);Opal.defn(self,"$_reduce_286",TMP_170=function $$_reduce_286(val,_values,result){var self=this;result=self.$new_paren(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_170.$$arity=3);Opal.defn(self,"$_reduce_287",TMP_171=function $$_reduce_287(val,_values,result){var self=this;result=self.$new_colon2(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_171.$$arity=3);Opal.defn(self,"$_reduce_288",TMP_172=function $$_reduce_288(val,_values,result){var self=this;result=self.$new_colon3(val["$[]"](0),val["$[]"](1));return result},TMP_172.$$arity=3);Opal.defn(self,"$_reduce_289",TMP_173=function $$_reduce_289(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),["[]",[]],val["$[]"](2));return result},TMP_173.$$arity=3);Opal.defn(self,"$_reduce_290",TMP_174=function $$_reduce_290(val,_values,result){var self=this;result=self.$new_js_call(val["$[]"](0),["[]",[]],val["$[]"](2));return result},TMP_174.$$arity=3);Opal.defn(self,"$_reduce_291",TMP_175=function $$_reduce_291(val,_values,result){var self=this;result=self.$new_array(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_175.$$arity=3);Opal.defn(self,"$_reduce_292",TMP_176=function $$_reduce_292(val,_values,result){var self=this;result=self.$new_hash(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_176.$$arity=3);Opal.defn(self,"$_reduce_293",TMP_177=function $$_reduce_293(val,_values,result){var self=this;result=self.$new_return(val["$[]"](0));return result},TMP_177.$$arity=3);Opal.defn(self,"$_reduce_294",TMP_178=function $$_reduce_294(val,_values,result){var self=this;result=self.$new_yield(val["$[]"](2));return result},TMP_178.$$arity=3);Opal.defn(self,"$_reduce_295",TMP_179=function $$_reduce_295(val,_values,result){var self=this;result=self.$s("yield");return result},TMP_179.$$arity=3);Opal.defn(self,"$_reduce_296",TMP_180=function $$_reduce_296(val,_values,result){var self=this;result=self.$s("yield");return result},TMP_180.$$arity=3);Opal.defn(self,"$_reduce_297",TMP_181=function $$_reduce_297(val,_values,result){var self=this;result=self.$s("defined",val["$[]"](3));return result},TMP_181.$$arity=3);Opal.defn(self,"$_reduce_298",TMP_182=function $$_reduce_298(val,_values,result){var self=this;result=self.$new_unary_call(["!",[]],val["$[]"](2));return result},TMP_182.$$arity=3);Opal.defn(self,"$_reduce_299",TMP_183=function $$_reduce_299(val,_values,result){var self=this;result=self.$new_unary_call(["!",[]],self.$new_nil(val["$[]"](0)));return result},TMP_183.$$arity=3);Opal.defn(self,"$_reduce_300",TMP_184=function $$_reduce_300(val,_values,result){var self=this;result=self.$new_call(nil,val["$[]"](0),[]);result["$<<"](val["$[]"](1));return result},TMP_184.$$arity=3);Opal.defn(self,"$_reduce_302",TMP_185=function $$_reduce_302(val,_values,result){var self=this;result=self.$new_method_call_with_block(val["$[]"](0),val["$[]"](1));return result},TMP_185.$$arity=3);Opal.defn(self,"$_reduce_303",TMP_186=function $$_reduce_303(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_186.$$arity=3);Opal.defn(self,"$_reduce_304",TMP_187=function $$_reduce_304(val,_values,result){var self=this;result=self.$new_if(val["$[]"](0),val["$[]"](1),val["$[]"](3),val["$[]"](4));return result},TMP_187.$$arity=3);Opal.defn(self,"$_reduce_305",TMP_188=function $$_reduce_305(val,_values,result){var self=this;result=self.$new_if(val["$[]"](0),val["$[]"](1),val["$[]"](4),val["$[]"](3));return result},TMP_188.$$arity=3);Opal.defn(self,"$_reduce_306",TMP_189=function $$_reduce_306(val,_values,result){var self=this;self.$lexer().$cond_push(1);result=self.$lexer().$line();return result},TMP_189.$$arity=3);Opal.defn(self,"$_reduce_307",TMP_190=function $$_reduce_307(val,_values,result){var self=this;self.$lexer().$cond_pop();return result},TMP_190.$$arity=3);Opal.defn(self,"$_reduce_308",TMP_191=function $$_reduce_308(val,_values,result){var self=this;result=self.$s("while",val["$[]"](2),val["$[]"](5));return result},TMP_191.$$arity=3);Opal.defn(self,"$_reduce_309",TMP_192=function $$_reduce_309(val,_values,result){var self=this;self.$lexer().$cond_push(1);result=self.$lexer().$line();return result},TMP_192.$$arity=3);Opal.defn(self,"$_reduce_310",TMP_193=function $$_reduce_310(val,_values,result){var self=this;self.$lexer().$cond_pop();return result},TMP_193.$$arity=3);Opal.defn(self,"$_reduce_311",TMP_194=function $$_reduce_311(val,_values,result){var self=this;result=self.$s("until",val["$[]"](2),val["$[]"](5));return result},TMP_194.$$arity=3);Opal.defn(self,"$_reduce_312",TMP_195=function $$_reduce_312(val,_values,result){var $a,self=this;result=($a=self).$s.apply($a,["case",val["$[]"](1)].concat(Opal.to_a(val["$[]"](3))));return result},TMP_195.$$arity=3);Opal.defn(self,"$_reduce_313",TMP_196=function $$_reduce_313(val,_values,result){var $a,self=this;result=($a=self).$s.apply($a,["case",nil].concat(Opal.to_a(val["$[]"](2))));return result},TMP_196.$$arity=3);Opal.defn(self,"$_reduce_314",TMP_197=function $$_reduce_314(val,_values,result){var self=this;result=self.$s("case",nil,val["$[]"](3));return result},TMP_197.$$arity=3);Opal.defn(self,"$_reduce_315",TMP_198=function $$_reduce_315(val,_values,result){var self=this;self.$lexer().$cond_push(1);result=self.$lexer().$line();return result},TMP_198.$$arity=3);Opal.defn(self,"$_reduce_316",TMP_199=function $$_reduce_316(val,_values,result){var self=this;self.$lexer().$cond_pop();return result},TMP_199.$$arity=3);Opal.defn(self,"$_reduce_317",TMP_200=function $$_reduce_317(val,_values,result){var self=this;result=self.$s("for",val["$[]"](4),val["$[]"](1),val["$[]"](7));return result},TMP_200.$$arity=3);Opal.defn(self,"$_reduce_318",TMP_201=function $$_reduce_318(val,_values,result){var self=this;return result},TMP_201.$$arity=3);Opal.defn(self,"$_reduce_319",TMP_202=function $$_reduce_319(val,_values,result){var self=this;result=self.$new_class(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5));return result},TMP_202.$$arity=3);Opal.defn(self,"$_reduce_320",TMP_203=function $$_reduce_320(val,_values,result){var self=this;result=self.$lexer().$line();return result},TMP_203.$$arity=3);Opal.defn(self,"$_reduce_321",TMP_204=function $$_reduce_321(val,_values,result){var self=this;return result},TMP_204.$$arity=3);Opal.defn(self,"$_reduce_322",TMP_205=function $$_reduce_322(val,_values,result){var self=this;result=self.$new_sclass(val["$[]"](0),val["$[]"](3),val["$[]"](6),val["$[]"](7));return result},TMP_205.$$arity=3);Opal.defn(self,"$_reduce_323",TMP_206=function $$_reduce_323(val,_values,result){var self=this;result=self.$lexer().$line();return result},TMP_206.$$arity=3);Opal.defn(self,"$_reduce_324",TMP_207=function $$_reduce_324(val,_values,result){var self=this;return result},TMP_207.$$arity=3);Opal.defn(self,"$_reduce_325",TMP_208=function $$_reduce_325(val,_values,result){var self=this;result=self.$new_module(val["$[]"](0),val["$[]"](2),val["$[]"](4),val["$[]"](5));return result},TMP_208.$$arity=3);Opal.defn(self,"$_reduce_326",TMP_209=function $$_reduce_326(val,_values,result){var self=this;self.$push_scope();return result},TMP_209.$$arity=3);Opal.defn(self,"$_reduce_327",TMP_210=function $$_reduce_327(val,_values,result){var self=this;result=self.$new_def(val["$[]"](0),nil,val["$[]"](1),val["$[]"](3),val["$[]"](4),val["$[]"](5));self.$pop_scope();return result},TMP_210.$$arity=3);Opal.defn(self,"$_reduce_328",TMP_211=function $$_reduce_328(val,_values,result){var $a,$b,self=this;$a=["expr_fname"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_211.$$arity=3);Opal.defn(self,"$_reduce_329",TMP_212=function $$_reduce_329(val,_values,result){var $a,$b,self=this;self.$push_scope();$a=["expr_endfn"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_212.$$arity=3);Opal.defn(self,"$_reduce_330",TMP_213=function $$_reduce_330(val,_values,result){var self=this;result=self.$new_def(val["$[]"](0),val["$[]"](1),val["$[]"](4),val["$[]"](6),val["$[]"](7),val["$[]"](8));self.$pop_scope();return result},TMP_213.$$arity=3);Opal.defn(self,"$_reduce_331",TMP_214=function $$_reduce_331(val,_values,result){var self=this;result=self.$new_break(val["$[]"](0));return result},TMP_214.$$arity=3);Opal.defn(self,"$_reduce_332",TMP_215=function $$_reduce_332(val,_values,result){var self=this;result=self.$s("next");return result},TMP_215.$$arity=3);Opal.defn(self,"$_reduce_333",TMP_216=function $$_reduce_333(val,_values,result){var self=this;result=self.$s("redo");return result},TMP_216.$$arity=3);Opal.defn(self,"$_reduce_343",TMP_217=function $$_reduce_343(val,_values,result){var self=this;result=[];return result},TMP_217.$$arity=3);Opal.defn(self,"$_reduce_344",TMP_218=function $$_reduce_344(val,_values,result){var self=this;result=val["$[]"](2);return result},TMP_218.$$arity=3);Opal.defn(self,"$_reduce_345",TMP_219=function $$_reduce_345(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_219.$$arity=3);Opal.defn(self,"$_reduce_346",TMP_220=function $$_reduce_346(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](val["$[]"](2));return result},TMP_220.$$arity=3);Opal.defn(self,"$_reduce_347",TMP_221=function $$_reduce_347(val,_values,result){var self=this;result=self.$new_shadowarg(val["$[]"](0));return result},TMP_221.$$arity=3);Opal.defn(self,"$_reduce_349",TMP_222=function $$_reduce_349(val,_values,result){var self=this;result=self.$new_call(nil,["lambda",[]],[]);result["$<<"](self.$new_iter(val["$[]"](0),val["$[]"](1)));return result},TMP_222.$$arity=3);Opal.defn(self,"$_reduce_350",TMP_223=function $$_reduce_350(val,_values,result){var $a,self=this;result=($a=self).$new_block_args.apply($a,Opal.to_a(val["$[]"](1)));return result},TMP_223.$$arity=3);Opal.defn(self,"$_reduce_351",TMP_224=function $$_reduce_351(val,_values,result){var self=this;result=nil;return result},TMP_224.$$arity=3);Opal.defn(self,"$_reduce_352",TMP_225=function $$_reduce_352(val,_values,result){var $a,self=this;result=($a=self).$new_block_args.apply($a,Opal.to_a(val["$[]"](0)));return result},TMP_225.$$arity=3);Opal.defn(self,"$_reduce_354",TMP_226=function $$_reduce_354(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_226.$$arity=3);Opal.defn(self,"$_reduce_355",TMP_227=function $$_reduce_355(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_227.$$arity=3);Opal.defn(self,"$_reduce_356",TMP_228=function $$_reduce_356(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_228.$$arity=3);Opal.defn(self,"$_reduce_357",TMP_229=function $$_reduce_357(val,_values,result){var self=this;result=self.$new_if(val["$[]"](0),val["$[]"](1),val["$[]"](3),val["$[]"](4));return result},TMP_229.$$arity=3);Opal.defn(self,"$_reduce_359",TMP_230=function $$_reduce_359(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_230.$$arity=3);Opal.defn(self,"$_reduce_360",TMP_231=function $$_reduce_360(val,_values,result){var self=this;result=self.$s("block",val["$[]"](0));return result},TMP_231.$$arity=3);Opal.defn(self,"$_reduce_361",TMP_232=function $$_reduce_361(val,_values,result){var self=this;val["$[]"](0)["$<<"](val["$[]"](2));result=val["$[]"](0);return result},TMP_232.$$arity=3);Opal.defn(self,"$_reduce_362",TMP_233=function $$_reduce_362(val,_values,result){var self=this;result=self.$new_assign(self.$new_assignable(self.$new_ident(val["$[]"](0))),val["$[]"](1),val["$[]"](2));return result},TMP_233.$$arity=3);Opal.defn(self,"$_reduce_364",TMP_234=function $$_reduce_364(val,_values,result){var self=this;result=self.$new_block_args(nil,[val["$[]"](1)]);return result},TMP_234.$$arity=3);Opal.defn(self,"$_reduce_365",TMP_235=function $$_reduce_365(val,_values,result){var self=this;result=nil;return result},TMP_235.$$arity=3);Opal.defn(self,"$_reduce_366",TMP_236=function $$_reduce_366(val,_values,result){var $a,self=this;val["$[]"](1)["$<<"](val["$[]"](2));result=($a=self).$new_block_args.apply($a,Opal.to_a(val["$[]"](1)));return result},TMP_236.$$arity=3);Opal.defn(self,"$_reduce_367",TMP_237=function $$_reduce_367(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](2),val["$[]"](3)];return result},TMP_237.$$arity=3);Opal.defn(self,"$_reduce_368",TMP_238=function $$_reduce_368(val,_values,result){var self=this;result=[val["$[]"](0),nil,val["$[]"](1)];return result},TMP_238.$$arity=3);Opal.defn(self,"$_reduce_369",TMP_239=function $$_reduce_369(val,_values,result){var self=this;result=[nil,val["$[]"](0),val["$[]"](1)];return result},TMP_239.$$arity=3);Opal.defn(self,"$_reduce_370",TMP_240=function $$_reduce_370(val,_values,result){var self=this;result=[nil,nil,val["$[]"](0)];return result},TMP_240.$$arity=3);Opal.defn(self,"$_reduce_371",TMP_241=function $$_reduce_371(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_241.$$arity=3);Opal.defn(self,"$_reduce_372",TMP_242=function $$_reduce_372(val,_values,result){var self=this;nil;return result},TMP_242.$$arity=3);Opal.defn(self,"$_reduce_373",TMP_243=function $$_reduce_373(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](2));restarg=self.$new_restarg(val["$[]"](4));result=[$rb_plus($rb_plus(val["$[]"](0),optarg),restarg),val["$[]"](5)];return result},TMP_243.$$arity=3);Opal.defn(self,"$_reduce_374",TMP_244=function $$_reduce_374(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](2));restarg=self.$new_restarg(val["$[]"](4));result=[$rb_plus($rb_plus($rb_plus(val["$[]"](0),optarg),restarg),val["$[]"](6)),val["$[]"](7)];return result},TMP_244.$$arity=3);Opal.defn(self,"$_reduce_375",TMP_245=function $$_reduce_375(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](2));result=[$rb_plus(val["$[]"](0),optarg),val["$[]"](3)];return result},TMP_245.$$arity=3);Opal.defn(self,"$_reduce_376",TMP_246=function $$_reduce_376(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](2));result=[$rb_plus($rb_plus(val["$[]"](0),optarg),val["$[]"](4)),val["$[]"](5)];return result},TMP_246.$$arity=3);Opal.defn(self,"$_reduce_377",TMP_247=function $$_reduce_377(val,_values,result){var self=this,restarg=nil;restarg=self.$new_restarg(val["$[]"](2));result=[$rb_plus(val["$[]"](0),restarg),val["$[]"](3)];return result},TMP_247.$$arity=3);Opal.defn(self,"$_reduce_378",TMP_248=function $$_reduce_378(val,_values,result){var self=this;val["$[]"](0)["$<<"](nil);result=[val["$[]"](0),nil];return result},TMP_248.$$arity=3);Opal.defn(self,"$_reduce_379",TMP_249=function $$_reduce_379(val,_values,result){var self=this,restarg=nil;restarg=self.$new_restarg(val["$[]"](2));result=[$rb_plus($rb_plus(val["$[]"](0),restarg),val["$[]"](4)),val["$[]"](5)];return result},TMP_249.$$arity=3);Opal.defn(self,"$_reduce_380",TMP_250=function $$_reduce_380(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](1)];return result},TMP_250.$$arity=3);Opal.defn(self,"$_reduce_381",TMP_251=function $$_reduce_381(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](0));restarg=self.$new_restarg(val["$[]"](2));result=[$rb_plus(optarg,restarg),val["$[]"](3)];return result},TMP_251.$$arity=3);Opal.defn(self,"$_reduce_382",TMP_252=function $$_reduce_382(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](0));restarg=self.$new_restarg(val["$[]"](2));result=[$rb_plus($rb_plus(optarg,restarg),val["$[]"](4)),val["$[]"](5)];return result},TMP_252.$$arity=3);Opal.defn(self,"$_reduce_383",TMP_253=function $$_reduce_383(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](0));result=[optarg,val["$[]"](1)];return result},TMP_253.$$arity=3);Opal.defn(self,"$_reduce_384",TMP_254=function $$_reduce_384(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](0));result=[$rb_plus(optarg,val["$[]"](2)),val["$[]"](3)];return result},TMP_254.$$arity=3);Opal.defn(self,"$_reduce_385",TMP_255=function $$_reduce_385(val,_values,result){var self=this,restarg=nil;restarg=self.$new_restarg(val["$[]"](0));result=[restarg,val["$[]"](1)];return result},TMP_255.$$arity=3);Opal.defn(self,"$_reduce_386",TMP_256=function $$_reduce_386(val,_values,result){var self=this,restarg=nil;restarg=self.$new_restarg(val["$[]"](0));result=[$rb_plus(restarg,val["$[]"](2)),val["$[]"](3)];return result},TMP_256.$$arity=3);Opal.defn(self,"$_reduce_387",TMP_257=function $$_reduce_387(val,_values,result){var self=this;result=[nil,val["$[]"](0)];return result},TMP_257.$$arity=3);Opal.defn(self,"$_reduce_388",TMP_258=function $$_reduce_388(val,_values,result){var self=this;self.$push_scope("block");result=self.$lexer().$line();return result},TMP_258.$$arity=3);Opal.defn(self,"$_reduce_389",TMP_259=function $$_reduce_389(val,_values,result){var self=this;result=self.$new_iter(val["$[]"](2),val["$[]"](3));self.$pop_scope();return result},TMP_259.$$arity=3);Opal.defn(self,"$_reduce_390",TMP_260=function $$_reduce_390(val,_values,result){var self=this;val["$[]"](0)["$<<"](val["$[]"](1));result=val["$[]"](0);return result},TMP_260.$$arity=3);Opal.defn(self,"$_reduce_394",TMP_261=function $$_reduce_394(val,_values,result){var self=this;result=self.$new_call(nil,val["$[]"](0),val["$[]"](1));return result},TMP_261.$$arity=3);Opal.defn(self,"$_reduce_395",TMP_262=function $$_reduce_395(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},TMP_262.$$arity=3);Opal.defn(self,"$_reduce_396",TMP_263=function $$_reduce_396(val,_values,result){var self=this;result=self.$new_js_call(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},TMP_263.$$arity=3);Opal.defn(self,"$_reduce_397",TMP_264=function $$_reduce_397(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),["call",[]],val["$[]"](2));return result},TMP_264.$$arity=3);Opal.defn(self,"$_reduce_398",TMP_265=function $$_reduce_398(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},TMP_265.$$arity=3);Opal.defn(self,"$_reduce_399",TMP_266=function $$_reduce_399(val,_values,result){var self=this;result=self.$new_call(val["$[]"](0),val["$[]"](2));return result},TMP_266.$$arity=3);Opal.defn(self,"$_reduce_400",TMP_267=function $$_reduce_400(val,_values,result){var self=this;result=self.$new_super(val["$[]"](0),val["$[]"](1));return result},TMP_267.$$arity=3);Opal.defn(self,"$_reduce_401",TMP_268=function $$_reduce_401(val,_values,result){var self=this;result=self.$new_super(val["$[]"](0),nil);return result},TMP_268.$$arity=3);Opal.defn(self,"$_reduce_402",TMP_269=function $$_reduce_402(val,_values,result){var self=this;self.$push_scope("block");result=self.$lexer().$line();return result},TMP_269.$$arity=3);Opal.defn(self,"$_reduce_403",TMP_270=function $$_reduce_403(val,_values,result){var self=this;result=self.$new_iter(val["$[]"](2),val["$[]"](3));self.$pop_scope();return result},TMP_270.$$arity=3);Opal.defn(self,"$_reduce_404",TMP_271=function $$_reduce_404(val,_values,result){var self=this;self.$push_scope("block");result=self.$lexer().$line();return result},TMP_271.$$arity=3);Opal.defn(self,"$_reduce_405",TMP_272=function $$_reduce_405(val,_values,result){var self=this;result=self.$new_iter(val["$[]"](2),val["$[]"](3));self.$pop_scope();return result},TMP_272.$$arity=3);Opal.defn(self,"$_reduce_406",TMP_273=function $$_reduce_406(val,_values,result){var self=this;result=self.$lexer().$line();return result},TMP_273.$$arity=3);Opal.defn(self,"$_reduce_407",TMP_274=function $$_reduce_407(val,_values,result){var $a,$b,self=this,part=nil;part=self.$s("when",($a=self).$s.apply($a,["array"].concat(Opal.to_a(val["$[]"](2)))),val["$[]"](4));result=[part];if(($b=val["$[]"](5))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){($b=result).$push.apply($b,Opal.to_a(val["$[]"](5)))}return result},TMP_274.$$arity=3);Opal.defn(self,"$_reduce_408",TMP_275=function $$_reduce_408(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_275.$$arity=3);Opal.defn(self,"$_reduce_410",TMP_276=function $$_reduce_410(val,_values,result){var $a,self=this,exc=nil;exc=($a=val["$[]"](1))!==false&&$a!==nil&&$a!=null?$a:self.$s("array");if(($a=val["$[]"](2))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){exc["$<<"](self.$new_assign(val["$[]"](2),val["$[]"](2),self.$s("gvar","$!".$intern())))}result=[self.$s("resbody",exc,val["$[]"](4))];if(($a=val["$[]"](5))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result.$concat(val["$[]"](5))}return result},TMP_276.$$arity=3);Opal.defn(self,"$_reduce_411",TMP_277=function $$_reduce_411(val,_values,result){var self=this;result=nil;return result},TMP_277.$$arity=3);Opal.defn(self,"$_reduce_412",TMP_278=function $$_reduce_412(val,_values,result){var self=this;result=self.$s("array",val["$[]"](0));return result},TMP_278.$$arity=3);Opal.defn(self,"$_reduce_415",TMP_279=function $$_reduce_415(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_279.$$arity=3);Opal.defn(self,"$_reduce_416",TMP_280=function $$_reduce_416(val,_values,result){var self=this;result=nil;return result},TMP_280.$$arity=3);Opal.defn(self,"$_reduce_417",TMP_281=function $$_reduce_417(val,_values,result){var $a,self=this;result=function(){if(($a=val["$[]"](1)["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$s("nil")}else{return val["$[]"](1)}return nil}();return result},TMP_281.$$arity=3);Opal.defn(self,"$_reduce_422",TMP_282=function $$_reduce_422(val,_values,result){var self=this;result=self.$new_str(val["$[]"](0));return result},TMP_282.$$arity=3);Opal.defn(self,"$_reduce_424",TMP_283=function $$_reduce_424(val,_values,result){var self=this;result=self.$str_append(val["$[]"](0),val["$[]"](1));return result},TMP_283.$$arity=3);Opal.defn(self,"$_reduce_425",TMP_284=function $$_reduce_425(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_284.$$arity=3);Opal.defn(self,"$_reduce_426",TMP_285=function $$_reduce_426(val,_values,result){var self=this;result=self.$s("str",self.$value(val["$[]"](0)));return result},TMP_285.$$arity=3);Opal.defn(self,"$_reduce_427",TMP_286=function $$_reduce_427(val,_values,result){var self=this;result=self.$new_xstr(val["$[]"](0),val["$[]"](1),val["$[]"](2));return result},TMP_286.$$arity=3);Opal.defn(self,"$_reduce_428",TMP_287=function $$_reduce_428(val,_values,result){var self=this;result=self.$new_regexp(val["$[]"](1),val["$[]"](2));return result},TMP_287.$$arity=3);Opal.defn(self,"$_reduce_429",TMP_288=function $$_reduce_429(val,_values,result){var self=this;result=self.$s("array");return result},TMP_288.$$arity=3);Opal.defn(self,"$_reduce_430",TMP_289=function $$_reduce_430(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_289.$$arity=3);Opal.defn(self,"$_reduce_431",TMP_290=function $$_reduce_431(val,_values,result){var self=this;result=self.$s("array");return result},TMP_290.$$arity=3);Opal.defn(self,"$_reduce_432",TMP_291=function $$_reduce_432(val,_values,result){var self=this,part=nil;part=val["$[]"](1);if(part.$type()["$=="]("evstr")){part=self.$s("dstr","",val["$[]"](1))}result=val["$[]"](0)["$<<"](part);return result},TMP_291.$$arity=3);Opal.defn(self,"$_reduce_433",TMP_292=function $$_reduce_433(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_292.$$arity=3);Opal.defn(self,"$_reduce_434",TMP_293=function $$_reduce_434(val,_values,result){var self=this;result=val["$[]"](0).$concat([val["$[]"](1)]);return result},TMP_293.$$arity=3);Opal.defn(self,"$_reduce_435",TMP_294=function $$_reduce_435(val,_values,result){var self=this;result=self.$s("array");return result},TMP_294.$$arity=3);Opal.defn(self,"$_reduce_436",TMP_295=function $$_reduce_436(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_295.$$arity=3);Opal.defn(self,"$_reduce_437",TMP_296=function $$_reduce_437(val,_values,result){var self=this;result=self.$s("array");return result},TMP_296.$$arity=3);Opal.defn(self,"$_reduce_438",TMP_297=function $$_reduce_438(val,_values,result){var self=this;result=val["$[]"](0)["$<<"](self.$s("str",self.$value(val["$[]"](1))));return result},TMP_297.$$arity=3);Opal.defn(self,"$_reduce_439",TMP_298=function $$_reduce_439(val,_values,result){var self=this;result=nil;return result},TMP_298.$$arity=3);Opal.defn(self,"$_reduce_440",TMP_299=function $$_reduce_440(val,_values,result){var self=this;result=self.$str_append(val["$[]"](0),val["$[]"](1));return result},TMP_299.$$arity=3);Opal.defn(self,"$_reduce_441",TMP_300=function $$_reduce_441(val,_values,result){var self=this;result=nil;return result},TMP_300.$$arity=3);Opal.defn(self,"$_reduce_442",TMP_301=function $$_reduce_442(val,_values,result){var self=this;result=self.$str_append(val["$[]"](0),val["$[]"](1));return result},TMP_301.$$arity=3);Opal.defn(self,"$_reduce_443",TMP_302=function $$_reduce_443(val,_values,result){var self=this;result=self.$new_str_content(val["$[]"](0));return result},TMP_302.$$arity=3);Opal.defn(self,"$_reduce_444",TMP_303=function $$_reduce_444(val,_values,result){var $a,$b,self=this;result=self.$lexer().$strterm();$a=[nil],$b=self.$lexer(),$b["$strterm="].apply($b,$a),$a[$a.length-1];return result},TMP_303.$$arity=3);Opal.defn(self,"$_reduce_445",TMP_304=function $$_reduce_445(val,_values,result){var $a,$b,self=this;$a=[val["$[]"](1)],$b=self.$lexer(),$b["$strterm="].apply($b,$a),$a[$a.length-1];result=self.$new_evstr(val["$[]"](2));return result},TMP_304.$$arity=3);Opal.defn(self,"$_reduce_446",TMP_305=function $$_reduce_446(val,_values,result){var $a,$b,self=this;self.$lexer().$cond_push(0);self.$lexer().$cmdarg_push(0);result=self.$lexer().$strterm();$a=[nil],$b=self.$lexer(),$b["$strterm="].apply($b,$a),$a[$a.length-1];$a=["expr_beg"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_305.$$arity=3);Opal.defn(self,"$_reduce_447",TMP_306=function $$_reduce_447(val,_values,result){var $a,$b,self=this;$a=[val["$[]"](1)],$b=self.$lexer(),$b["$strterm="].apply($b,$a),$a[$a.length-1];self.$lexer().$cond_lexpop();self.$lexer().$cmdarg_lexpop();result=self.$new_evstr(val["$[]"](2));return result},TMP_306.$$arity=3);Opal.defn(self,"$_reduce_448",TMP_307=function $$_reduce_448(val,_values,result){var self=this;result=self.$new_gvar(val["$[]"](0));return result},TMP_307.$$arity=3);Opal.defn(self,"$_reduce_449",TMP_308=function $$_reduce_449(val,_values,result){var self=this;result=self.$new_ivar(val["$[]"](0));return result},TMP_308.$$arity=3);Opal.defn(self,"$_reduce_450",TMP_309=function $$_reduce_450(val,_values,result){var self=this;result=self.$new_cvar(val["$[]"](0));return result},TMP_309.$$arity=3);Opal.defn(self,"$_reduce_452",TMP_310=function $$_reduce_452(val,_values,result){var $a,$b,self=this;result=self.$new_sym(val["$[]"](1));$a=["expr_end"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_310.$$arity=3);Opal.defn(self,"$_reduce_453",TMP_311=function $$_reduce_453(val,_values,result){var self=this;result=self.$new_sym(val["$[]"](0));return result},TMP_311.$$arity=3);Opal.defn(self,"$_reduce_458",TMP_312=function $$_reduce_458(val,_values,result){var self=this;result=self.$new_dsym(val["$[]"](1));return result},TMP_312.$$arity=3);Opal.defn(self,"$_reduce_459",TMP_313=function $$_reduce_459(val,_values,result){var self=this;result=self.$new_int(val["$[]"](0));return result},TMP_313.$$arity=3);Opal.defn(self,"$_reduce_460",TMP_314=function $$_reduce_460(val,_values,result){var self=this;result=self.$new_float(val["$[]"](0));return result},TMP_314.$$arity=3);Opal.defn(self,"$_reduce_461",TMP_315=function $$_reduce_461(val,_values,result){var self=this;result=self.$negate_num(self.$new_int(val["$[]"](1)));return result},TMP_315.$$arity=3);Opal.defn(self,"$_reduce_462",TMP_316=function $$_reduce_462(val,_values,result){var self=this;result=self.$negate_num(self.$new_float(val["$[]"](1)));return result},TMP_316.$$arity=3);Opal.defn(self,"$_reduce_463",TMP_317=function $$_reduce_463(val,_values,result){var self=this;result=self.$new_int(val["$[]"](1));return result},TMP_317.$$arity=3);Opal.defn(self,"$_reduce_464",TMP_318=function $$_reduce_464(val,_values,result){var self=this;result=self.$new_float(val["$[]"](1));return result},TMP_318.$$arity=3);Opal.defn(self,"$_reduce_465",TMP_319=function $$_reduce_465(val,_values,result){var self=this;result=self.$new_ident(val["$[]"](0));return result},TMP_319.$$arity=3);Opal.defn(self,"$_reduce_466",TMP_320=function $$_reduce_466(val,_values,result){var self=this;result=self.$new_ivar(val["$[]"](0));return result},TMP_320.$$arity=3);Opal.defn(self,"$_reduce_467",TMP_321=function $$_reduce_467(val,_values,result){var self=this;result=self.$new_gvar(val["$[]"](0));return result},TMP_321.$$arity=3);Opal.defn(self,"$_reduce_468",TMP_322=function $$_reduce_468(val,_values,result){var self=this;result=self.$new_const(val["$[]"](0));return result},TMP_322.$$arity=3);Opal.defn(self,"$_reduce_469",TMP_323=function $$_reduce_469(val,_values,result){var self=this;result=self.$new_cvar(val["$[]"](0));return result},TMP_323.$$arity=3);Opal.defn(self,"$_reduce_470",TMP_324=function $$_reduce_470(val,_values,result){var self=this;result=self.$new_nil(val["$[]"](0));return result},TMP_324.$$arity=3);Opal.defn(self,"$_reduce_471",TMP_325=function $$_reduce_471(val,_values,result){var self=this;result=self.$new_self(val["$[]"](0));return result},TMP_325.$$arity=3);Opal.defn(self,"$_reduce_472",TMP_326=function $$_reduce_472(val,_values,result){var self=this;result=self.$new_true(val["$[]"](0));return result},TMP_326.$$arity=3);Opal.defn(self,"$_reduce_473",TMP_327=function $$_reduce_473(val,_values,result){var self=this;result=self.$new_false(val["$[]"](0));return result},TMP_327.$$arity=3);Opal.defn(self,"$_reduce_474",TMP_328=function $$_reduce_474(val,_values,result){var self=this;result=self.$new___FILE__(val["$[]"](0));return result},TMP_328.$$arity=3);Opal.defn(self,"$_reduce_475",TMP_329=function $$_reduce_475(val,_values,result){var self=this;result=self.$new___LINE__(val["$[]"](0));return result},TMP_329.$$arity=3);Opal.defn(self,"$_reduce_476",TMP_330=function $$_reduce_476(val,_values,result){var self=this;result=self.$new_var_ref(val["$[]"](0));return result},TMP_330.$$arity=3);Opal.defn(self,"$_reduce_477",TMP_331=function $$_reduce_477(val,_values,result){var self=this;result=self.$new_assignable(val["$[]"](0));return result},TMP_331.$$arity=3);Opal.defn(self,"$_reduce_478",TMP_332=function $$_reduce_478(val,_values,result){var self=this;result=self.$s("nth_ref",self.$value(val["$[]"](0)));return result},TMP_332.$$arity=3);Opal.defn(self,"$_reduce_480",TMP_333=function $$_reduce_480(val,_values,result){var self=this;result=nil;return result},TMP_333.$$arity=3);Opal.defn(self,"$_reduce_481",TMP_334=function $$_reduce_481(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_334.$$arity=3);Opal.defn(self,"$_reduce_482",TMP_335=function $$_reduce_482(val,_values,result){var self=this;result=nil;return result},TMP_335.$$arity=3);Opal.defn(self,"$_reduce_483",TMP_336=function $$_reduce_483(val,_values,result){var $a,$b,self=this;result=val["$[]"](1);$a=["expr_beg"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_336.$$arity=3);Opal.defn(self,"$_reduce_484",TMP_337=function $$_reduce_484(val,_values,result){var $a,$b,self=this;result=val["$[]"](0);$a=["expr_beg"],$b=self.$lexer(),$b["$lex_state="].apply($b,$a),$a[$a.length-1];return result},TMP_337.$$arity=3);Opal.defn(self,"$_reduce_487",TMP_338=function $$_reduce_487(val,_values,result){var self=this;result=self.$new_kwrestarg(val["$[]"](1));return result},TMP_338.$$arity=3);Opal.defn(self,"$_reduce_488",TMP_339=function $$_reduce_488(val,_values,result){var self=this;result=self.$new_kwrestarg();return result},TMP_339.$$arity=3);Opal.defn(self,"$_reduce_489",TMP_340=function $$_reduce_489(val,_values,result){var self=this;result=self.$new_sym(val["$[]"](0));return result},TMP_340.$$arity=3);Opal.defn(self,"$_reduce_490",TMP_341=function $$_reduce_490(val,_values,result){var self=this;result=self.$new_kwoptarg(val["$[]"](0),val["$[]"](1));return result},TMP_341.$$arity=3);Opal.defn(self,"$_reduce_491",TMP_342=function $$_reduce_491(val,_values,result){var self=this;result=self.$new_kwarg(val["$[]"](0));return result},TMP_342.$$arity=3);Opal.defn(self,"$_reduce_492",TMP_343=function $$_reduce_492(val,_values,result){var self=this;result=self.$new_kwoptarg(val["$[]"](0),val["$[]"](1));return result},TMP_343.$$arity=3);Opal.defn(self,"$_reduce_493",TMP_344=function $$_reduce_493(val,_values,result){var self=this;result=self.$new_kwarg(val["$[]"](0));return result},TMP_344.$$arity=3);Opal.defn(self,"$_reduce_494",TMP_345=function $$_reduce_494(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_345.$$arity=3);Opal.defn(self,"$_reduce_495",TMP_346=function $$_reduce_495(val,_values,result){var self=this;result=val["$[]"](0);result["$<<"](val["$[]"](2));return result},TMP_346.$$arity=3);Opal.defn(self,"$_reduce_496",TMP_347=function $$_reduce_496(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_347.$$arity=3);Opal.defn(self,"$_reduce_497",TMP_348=function $$_reduce_497(val,_values,result){var self=this;result=val["$[]"](0);result["$<<"](val["$[]"](2));return result},TMP_348.$$arity=3);Opal.defn(self,"$_reduce_498",TMP_349=function $$_reduce_498(val,_values,result){var self=this;result=self.$new_args_tail(val["$[]"](0),val["$[]"](2),val["$[]"](3));return result},TMP_349.$$arity=3);Opal.defn(self,"$_reduce_499",TMP_350=function $$_reduce_499(val,_values,result){var self=this;result=self.$new_args_tail(val["$[]"](0),nil,val["$[]"](1));return result},TMP_350.$$arity=3);Opal.defn(self,"$_reduce_500",TMP_351=function $$_reduce_500(val,_values,result){var self=this;result=self.$new_args_tail(nil,val["$[]"](0),val["$[]"](1));return result},TMP_351.$$arity=3);Opal.defn(self,"$_reduce_501",TMP_352=function $$_reduce_501(val,_values,result){var self=this;result=self.$new_args_tail(nil,nil,val["$[]"](0));return result},TMP_352.$$arity=3);Opal.defn(self,"$_reduce_502",TMP_353=function $$_reduce_502(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_353.$$arity=3);Opal.defn(self,"$_reduce_503",TMP_354=function $$_reduce_503(val,_values,result){var self=this;result=self.$new_args_tail(nil,nil,nil);return result},TMP_354.$$arity=3);Opal.defn(self,"$_reduce_504",TMP_355=function $$_reduce_504(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](2));restarg=self.$new_restarg(val["$[]"](4));result=self.$new_args($rb_plus($rb_plus(val["$[]"](0),optarg),restarg),val["$[]"](5));return result},TMP_355.$$arity=3);Opal.defn(self,"$_reduce_505",TMP_356=function $$_reduce_505(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](2));restarg=self.$new_restarg(val["$[]"](4));result=self.$new_args($rb_plus($rb_plus($rb_plus(val["$[]"](0),optarg),restarg),val["$[]"](6)),val["$[]"](7));return result},TMP_356.$$arity=3);Opal.defn(self,"$_reduce_506",TMP_357=function $$_reduce_506(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](2));result=self.$new_args($rb_plus(val["$[]"](0),optarg),val["$[]"](3));return result},TMP_357.$$arity=3);Opal.defn(self,"$_reduce_507",TMP_358=function $$_reduce_507(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](2));result=self.$new_args($rb_plus($rb_plus(val["$[]"](0),optarg),val["$[]"](4)),val["$[]"](5));return result},TMP_358.$$arity=3);Opal.defn(self,"$_reduce_508",TMP_359=function $$_reduce_508(val,_values,result){var self=this,restarg=nil;restarg=self.$new_restarg(val["$[]"](2));result=self.$new_args($rb_plus(val["$[]"](0),restarg),val["$[]"](3));return result},TMP_359.$$arity=3);Opal.defn(self,"$_reduce_509",TMP_360=function $$_reduce_509(val,_values,result){var self=this,restarg=nil;restarg=self.$new_restarg(val["$[]"](2));result=self.$new_args($rb_plus($rb_plus(val["$[]"](0),restarg),val["$[]"](4)),val["$[]"](5));return result},TMP_360.$$arity=3);Opal.defn(self,"$_reduce_510",TMP_361=function $$_reduce_510(val,_values,result){var self=this;result=self.$new_args(val["$[]"](0),val["$[]"](1));return result},TMP_361.$$arity=3);Opal.defn(self,"$_reduce_511",TMP_362=function $$_reduce_511(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](0));restarg=self.$new_restarg(val["$[]"](2));result=self.$new_args($rb_plus(optarg,restarg),val["$[]"](3));return result},TMP_362.$$arity=3);Opal.defn(self,"$_reduce_512",TMP_363=function $$_reduce_512(val,_values,result){var self=this,optarg=nil,restarg=nil;optarg=self.$new_optarg(val["$[]"](0));restarg=self.$new_restarg(val["$[]"](2));result=self.$new_args($rb_plus($rb_plus(optarg,restarg),val["$[]"](4)),val["$[]"](5));return result},TMP_363.$$arity=3);Opal.defn(self,"$_reduce_513",TMP_364=function $$_reduce_513(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](0));result=self.$new_args(optarg,val["$[]"](1));return result},TMP_364.$$arity=3);Opal.defn(self,"$_reduce_514",TMP_365=function $$_reduce_514(val,_values,result){var self=this,optarg=nil;optarg=self.$new_optarg(val["$[]"](0));result=self.$new_args($rb_plus(optarg,val["$[]"](2)),val["$[]"](3));return result},TMP_365.$$arity=3);Opal.defn(self,"$_reduce_515",TMP_366=function $$_reduce_515(val,_values,result){var self=this,optarg=nil;optarg=self.$new_restarg(val["$[]"](0));result=self.$new_args(optarg,val["$[]"](1));return result},TMP_366.$$arity=3);Opal.defn(self,"$_reduce_516",TMP_367=function $$_reduce_516(val,_values,result){var self=this,restarg=nil;restarg=self.$new_restarg(val["$[]"](0));result=self.$new_args($rb_plus(restarg,val["$[]"](2)),val["$[]"](3));return result},TMP_367.$$arity=3);Opal.defn(self,"$_reduce_517",TMP_368=function $$_reduce_517(val,_values,result){var self=this;result=self.$new_args(nil,val["$[]"](0));return result},TMP_368.$$arity=3);Opal.defn(self,"$_reduce_518",TMP_369=function $$_reduce_518(val,_values,result){var self=this;result=self.$new_args(nil,nil);return result},TMP_369.$$arity=3);Opal.defn(self,"$_reduce_520",TMP_370=function $$_reduce_520(val,_values,result){var self=this;result=self.$value(val["$[]"](0)).$to_sym();self.$scope().$add_local(result);return result},TMP_370.$$arity=3);Opal.defn(self,"$_reduce_521",TMP_371=function $$_reduce_521(val,_values,result){var self=this;self.$raise("formal argument cannot be a constant");return result},TMP_371.$$arity=3);Opal.defn(self,"$_reduce_522",TMP_372=function $$_reduce_522(val,_values,result){var self=this;self.$raise("formal argument cannot be an instance variable");return result},TMP_372.$$arity=3);Opal.defn(self,"$_reduce_523",TMP_373=function $$_reduce_523(val,_values,result){var self=this;self.$raise("formal argument cannot be a class variable");return result},TMP_373.$$arity=3);Opal.defn(self,"$_reduce_524",TMP_374=function $$_reduce_524(val,_values,result){var self=this;self.$raise("formal argument cannot be a global variable");return result},TMP_374.$$arity=3);Opal.defn(self,"$_reduce_525",TMP_375=function $$_reduce_525(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_375.$$arity=3);Opal.defn(self,"$_reduce_526",TMP_376=function $$_reduce_526(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_376.$$arity=3);Opal.defn(self,"$_reduce_529",TMP_377=function $$_reduce_529(val,_values,result){var self=this;result=self.$s("arg",val["$[]"](0));return result},TMP_377.$$arity=3);Opal.defn(self,"$_reduce_530",TMP_378=function $$_reduce_530(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_378.$$arity=3);Opal.defn(self,"$_reduce_531",TMP_379=function $$_reduce_531(val,_values,result){var self=this;result=self.$s("mlhs",val["$[]"](0));return result},TMP_379.$$arity=3);Opal.defn(self,"$_reduce_532",TMP_380=function $$_reduce_532(val,_values,result){var self=this;val["$[]"](0)["$<<"](val["$[]"](2));result=val["$[]"](0);return result},TMP_380.$$arity=3);Opal.defn(self,"$_reduce_534",TMP_381=function $$_reduce_534(val,_values,result){var self=this;result=val["$[]"](0).$push(self.$s("restarg",val["$[]"](3)));return result},TMP_381.$$arity=3);Opal.defn(self,"$_reduce_535",TMP_382=function $$_reduce_535(val,_values,result){var self=this;result=val["$[]"](0).$push(self.$s("restarg",val["$[]"](3))).$concat(val["$[]"](5)["$[]"]($range(1,-1,false)));return result},TMP_382.$$arity=3);Opal.defn(self,"$_reduce_536",TMP_383=function $$_reduce_536(val,_values,result){var self=this;result=val["$[]"](0).$push(self.$s("restarg"));return result},TMP_383.$$arity=3);Opal.defn(self,"$_reduce_537",TMP_384=function $$_reduce_537(val,_values,result){var self=this;result=val["$[]"](0).$push(self.$s("restarg")).$concat(val["$[]"](4)["$[]"]($range(1,-1,false)));return result},TMP_384.$$arity=3);Opal.defn(self,"$_reduce_538",TMP_385=function $$_reduce_538(val,_values,result){var self=this;result=self.$s("mlhs",self.$s("restarg",val["$[]"](1)));return result},TMP_385.$$arity=3);Opal.defn(self,"$_reduce_539",TMP_386=function $$_reduce_539(val,_values,result){var self=this;val["$[]"](3).$insert(1,self.$s("restarg",val["$[]"](1)));result=val["$[]"](3);return result},TMP_386.$$arity=3);Opal.defn(self,"$_reduce_540",TMP_387=function $$_reduce_540(val,_values,result){var self=this;result=self.$s("mlhs",self.$s("restarg"));return result},TMP_387.$$arity=3);Opal.defn(self,"$_reduce_541",TMP_388=function $$_reduce_541(val,_values,result){var self=this;val["$[]"](2).$insert(1,self.$s("restarg"));result=val["$[]"](2);return result},TMP_388.$$arity=3);Opal.defn(self,"$_reduce_542",TMP_389=function $$_reduce_542(val,_values,result){var self=this;result=[val["$[]"](0)];return result},TMP_389.$$arity=3);Opal.defn(self,"$_reduce_543",TMP_390=function $$_reduce_543(val,_values,result){var self=this;val["$[]"](0)["$<<"](val["$[]"](2));result=val["$[]"](0);return result},TMP_390.$$arity=3);Opal.defn(self,"$_reduce_544",TMP_391=function $$_reduce_544(val,_values,result){var self=this;result=self.$new_assign(self.$new_assignable(self.$new_ident(val["$[]"](0))),val["$[]"](1),val["$[]"](2));return result},TMP_391.$$arity=3);Opal.defn(self,"$_reduce_545",TMP_392=function $$_reduce_545(val,_values,result){var self=this;result=self.$s("block",val["$[]"](0));return result},TMP_392.$$arity=3);Opal.defn(self,"$_reduce_546",TMP_393=function $$_reduce_546(val,_values,result){var self=this;result=val["$[]"](0);val["$[]"](0)["$<<"](val["$[]"](2));return result},TMP_393.$$arity=3);Opal.defn(self,"$_reduce_549",TMP_394=function $$_reduce_549(val,_values,result){var self=this;result=("*"+self.$value(val["$[]"](1))).$to_sym();return result},TMP_394.$$arity=3);Opal.defn(self,"$_reduce_550",TMP_395=function $$_reduce_550(val,_values,result){var self=this;result="*";return result},TMP_395.$$arity=3);Opal.defn(self,"$_reduce_553",TMP_396=function $$_reduce_553(val,_values,result){var self=this;result=("&"+self.$value(val["$[]"](1))).$to_sym();return result},TMP_396.$$arity=3);Opal.defn(self,"$_reduce_554",TMP_397=function $$_reduce_554(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_397.$$arity=3);Opal.defn(self,"$_reduce_555",TMP_398=function $$_reduce_555(val,_values,result){var self=this;result=nil;return result},TMP_398.$$arity=3);Opal.defn(self,"$_reduce_556",TMP_399=function $$_reduce_556(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_399.$$arity=3);Opal.defn(self,"$_reduce_557",TMP_400=function $$_reduce_557(val,_values,result){var self=this;result=val["$[]"](1);return result},TMP_400.$$arity=3);Opal.defn(self,"$_reduce_558",TMP_401=function $$_reduce_558(val,_values,result){var self=this;result=[];return result},TMP_401.$$arity=3);Opal.defn(self,"$_reduce_559",TMP_402=function $$_reduce_559(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_402.$$arity=3);Opal.defn(self,"$_reduce_560",TMP_403=function $$_reduce_560(val,_values,result){var self=this;result=val["$[]"](0);return result},TMP_403.$$arity=3);Opal.defn(self,"$_reduce_561",TMP_404=function $$_reduce_561(val,_values,result){var self=this;result=val["$[]"](0).$concat(val["$[]"](2));return result},TMP_404.$$arity=3);Opal.defn(self,"$_reduce_562",TMP_405=function $$_reduce_562(val,_values,result){var self=this;result=[val["$[]"](0),val["$[]"](2)];return result},TMP_405.$$arity=3);Opal.defn(self,"$_reduce_563",TMP_406=function $$_reduce_563(val,_values,result){var self=this;result=[self.$new_sym(val["$[]"](0)),val["$[]"](1)];return result},TMP_406.$$arity=3);Opal.defn(self,"$_reduce_564",TMP_407=function $$_reduce_564(val,_values,result){var self=this;result=[self.$s("sym",self.$source(val["$[]"](1)).$to_sym()),val["$[]"](3)];return result},TMP_407.$$arity=3);Opal.defn(self,"$_reduce_565",TMP_408=function $$_reduce_565(val,_values,result){var self=this;result=[self.$new_kwsplat(val["$[]"](1))];return result},TMP_408.$$arity=3);Opal.defn(self,"$_reduce_589",TMP_409=function $$_reduce_589(val,_values,result){var self=this;result=nil;return result},TMP_409.$$arity=3);return(Opal.defn(self,"$_reduce_none",TMP_410=function $$_reduce_none(val,_values,result){var self=this;return val["$[]"](0)},TMP_410.$$arity=3),nil)&&"_reduce_none"})($scope.base,$scope.get("Racc").$$scope.get("Parser"))}($scope.base)};Opal.modules["opal/parser/parser_scope"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$attr_reader","$attr_accessor","$==","$<<","$include?","$has_local?"]);return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ParserScope(){}var self=$ParserScope=$klass($base,$super,"ParserScope",$ParserScope);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3;def.locals=def.parent=def.block=nil;self.$attr_reader("locals");self.$attr_accessor("parent");Opal.defn(self,"$initialize",TMP_1=function $$initialize(type){var self=this;self.block=type["$=="]("block");self.locals=[];return self.parent=nil},TMP_1.$$arity=1);Opal.defn(self,"$add_local",TMP_2=function $$add_local(local){var self=this;return self.locals["$<<"](local)},TMP_2.$$arity=1);return(Opal.defn(self,"$has_local?",TMP_3=function(local){var $a,$b,self=this;if(($a=self.locals["$include?"](local))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=self.parent,$b!==false&&$b!==nil&&$b!=null?self.block:$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.parent["$has_local?"](local)}return false},TMP_3.$$arity=1),nil)&&"has_local?"})($scope.base,null)}($scope.base)};Opal.modules["opal/parser"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$attr_reader","$!","$[]","$new","$parser=","$parse_to_sexp","$join","$message","$line","$lexer","$column","$split","$-","$+","$*","$>","$raise","$class","$backtrace","$push_scope","$do_parse","$pop_scope","$next_token","$last","$parent=","$<<","$pop","$inspect","$value","$token_to_str","$s","$source=","$s0","$source","$s1","$file","$to_sym","$nil?","$==","$length","$size","$type","$each","$!=","$empty?","$add_local","$scope","$map","$is_a?","$to_s","$children","$===","$new_splat","$[]=","$meta","$concat","$new_call","$array","$-@","$new_gettable","$type=","$has_local?"]);self.$require("opal/parser/sexp");self.$require("opal/parser/lexer");self.$require("opal/parser/grammar");self.$require("opal/parser/parser_scope");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Parser(){}var self=$Parser=$klass($base,$super,"Parser",$Parser);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40,TMP_41,TMP_42,TMP_43,TMP_44,TMP_45,TMP_46,TMP_47,TMP_48,TMP_49,TMP_50,TMP_52,TMP_53,TMP_56,TMP_57,TMP_58,TMP_59,TMP_60,TMP_61,TMP_62,TMP_65,TMP_66,TMP_67,TMP_68,TMP_69,TMP_70,TMP_71,TMP_72,TMP_73,TMP_74,TMP_75,TMP_76,TMP_77,TMP_78,TMP_79,TMP_80,TMP_81,TMP_82,TMP_83,TMP_84,TMP_85,TMP_86,TMP_87,TMP_88,TMP_89,TMP_90,TMP_91,TMP_92,TMP_93,TMP_94,TMP_95;def.lexer=def.file=def.scopes=nil;self.$attr_reader("lexer","file","scope");Opal.defn(self,"$parse",TMP_1=function $$parse(source,file){var $a,$b,self=this,error=nil,message=nil;if(file==null){file="(string)"}try{if(($a=$scope.get("ENV")["$[]"]("RACC_DEBUG")["$!"]()["$!"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.yydebug=true}self.file=file;self.scopes=[];self.lexer=$scope.get("Lexer").$new(source,file);$a=[self],$b=self.lexer,$b["$parser="].apply($b,$a),$a[$a.length-1];return self.$parse_to_sexp()}catch($err){if(Opal.rescue($err,[$scope.get("StandardError")])){error=$err;try{message=[nil,error.$message(),"Source: "+self.file+":"+self.$lexer().$line()+":"+self.$lexer().$column(),source.$split("\n")["$[]"]($rb_minus(self.$lexer().$line(),1)),$rb_plus($rb_times("~",function(){if(($a=$rb_gt($rb_minus(self.$lexer().$column(),1),0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_minus(self.$lexer().$column(),1)}else{return 0}return nil}()),"^")].$join("\n");return self.$raise(error.$class(),message,error.$backtrace())}finally{Opal.pop_exception()}}else{throw $err}}},TMP_1.$$arity=-2);Opal.defn(self,"$parse_to_sexp",TMP_2=function $$parse_to_sexp(){var self=this,result=nil;self.$push_scope();result=self.$do_parse();self.$pop_scope();return result},TMP_2.$$arity=0);Opal.defn(self,"$next_token",TMP_3=function $$next_token(){var self=this;return self.lexer.$next_token()},TMP_3.$$arity=0);Opal.defn(self,"$s",TMP_4=function $$s($a_rest){var self=this,parts;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}parts=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){parts[$arg_idx-0]=arguments[$arg_idx]}return $scope.get("Sexp").$new(parts)},TMP_4.$$arity=-1);Opal.defn(self,"$push_scope",TMP_5=function $$push_scope(type){var $a,$b,self=this,top=nil,scope=nil;if(type==null){type=nil}top=self.scopes.$last();scope=$scope.get("ParserScope").$new(type);$a=[top],$b=scope,$b["$parent="].apply($b,$a),$a[$a.length-1];self.scopes["$<<"](scope);return self.scope=scope},TMP_5.$$arity=-1);Opal.defn(self,"$pop_scope",TMP_6=function $$pop_scope(){var self=this;self.scopes.$pop();return self.scope=self.scopes.$last()},TMP_6.$$arity=0);Opal.defn(self,"$on_error",TMP_7=function $$on_error(t,val,vstack){var $a,self=this;return self.$raise("parse error on value "+self.$value(val).$inspect()+" ("+(($a=self.$token_to_str(t))!==false&&$a!==nil&&$a!=null?$a:"?")+") :"+self.file+":"+self.$lexer().$line())},TMP_7.$$arity=3);Opal.defn(self,"$value",TMP_8=function $$value(tok){var self=this;return tok["$[]"](0)},TMP_8.$$arity=1);Opal.defn(self,"$source",TMP_9=function $$source(tok){var self=this;if(tok!==false&&tok!==nil&&tok!=null){return tok["$[]"](1)}else{return nil}},TMP_9.$$arity=1);Opal.defn(self,"$s0",TMP_10=function $$s0(type,source){var $a,$b,self=this,sexp=nil;sexp=self.$s(type);$a=[source],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_10.$$arity=2);Opal.defn(self,"$s1",TMP_11=function $$s1(type,first,source){var $a,$b,self=this,sexp=nil;sexp=self.$s(type,first);$a=[source],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_11.$$arity=3);Opal.defn(self,"$new_nil",TMP_12=function $$new_nil(tok){var self=this;return self.$s0("nil",self.$source(tok))},TMP_12.$$arity=1);Opal.defn(self,"$new_self",TMP_13=function $$new_self(tok){var self=this;return self.$s0("self",self.$source(tok))},TMP_13.$$arity=1);Opal.defn(self,"$new_true",TMP_14=function $$new_true(tok){var self=this;return self.$s0("true",self.$source(tok))},TMP_14.$$arity=1);Opal.defn(self,"$new_false",TMP_15=function $$new_false(tok){var self=this;return self.$s0("false",self.$source(tok))},TMP_15.$$arity=1);Opal.defn(self,"$new___FILE__",TMP_16=function $$new___FILE__(tok){var self=this;return self.$s1("str",self.$file(),self.$source(tok))},TMP_16.$$arity=1);Opal.defn(self,"$new___LINE__",TMP_17=function $$new___LINE__(tok){var self=this;return self.$s1("int",self.$lexer().$line(),self.$source(tok))},TMP_17.$$arity=1);Opal.defn(self,"$new_ident",TMP_18=function $$new_ident(tok){var self=this;return self.$s1("identifier",self.$value(tok).$to_sym(),self.$source(tok))},TMP_18.$$arity=1);Opal.defn(self,"$new_int",TMP_19=function $$new_int(tok){var self=this;return self.$s1("int",self.$value(tok),self.$source(tok))},TMP_19.$$arity=1);Opal.defn(self,"$new_float",TMP_20=function $$new_float(tok){var self=this;return self.$s1("float",self.$value(tok),self.$source(tok))},TMP_20.$$arity=1);Opal.defn(self,"$new_ivar",TMP_21=function $$new_ivar(tok){var self=this;return self.$s1("ivar",self.$value(tok).$to_sym(),self.$source(tok))},TMP_21.$$arity=1);Opal.defn(self,"$new_gvar",TMP_22=function $$new_gvar(tok){var self=this;return self.$s1("gvar",self.$value(tok).$to_sym(),self.$source(tok))},TMP_22.$$arity=1);Opal.defn(self,"$new_cvar",TMP_23=function $$new_cvar(tok){var self=this;return self.$s1("cvar",self.$value(tok).$to_sym(),self.$source(tok))},TMP_23.$$arity=1);Opal.defn(self,"$new_const",TMP_24=function $$new_const(tok){var self=this;return self.$s1("const",self.$value(tok).$to_sym(),self.$source(tok))},TMP_24.$$arity=1);Opal.defn(self,"$new_colon2",TMP_25=function $$new_colon2(lhs,tok,name){var $a,$b,self=this,sexp=nil;sexp=self.$s("colon2",lhs,self.$value(name).$to_sym());$a=[self.$source(tok)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_25.$$arity=3);Opal.defn(self,"$new_colon3",TMP_26=function $$new_colon3(tok,name){var self=this;return self.$s1("colon3",self.$value(name).$to_sym(),self.$source(name))},TMP_26.$$arity=2);Opal.defn(self,"$new_sym",TMP_27=function $$new_sym(tok){var self=this;return self.$s1("sym",self.$value(tok).$to_sym(),self.$source(tok))},TMP_27.$$arity=1);Opal.defn(self,"$new_alias",TMP_28=function $$new_alias(kw,new$,old){var $a,$b,self=this,sexp=nil;sexp=self.$s("alias",new$,old);$a=[self.$source(kw)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_28.$$arity=3);Opal.defn(self,"$new_break",TMP_29=function $$new_break(kw,args){var $a,self=this,sexp=nil;if(args==null){args=nil}if(($a=args["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sexp=self.$s("break")}else if(args.$length()["$=="](1)){sexp=self.$s("break",args["$[]"](0))}else{sexp=self.$s("break",($a=self).$s.apply($a,["array"].concat(Opal.to_a(args))))}return sexp},TMP_29.$$arity=-2);Opal.defn(self,"$new_return",TMP_30=function $$new_return(kw,args){var $a,self=this,sexp=nil;if(args==null){args=nil}if(($a=args["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sexp=self.$s("return")}else if(args.$length()["$=="](1)){sexp=self.$s("return",args["$[]"](0))}else{sexp=self.$s("return",($a=self).$s.apply($a,["array"].concat(Opal.to_a(args))))}return sexp},TMP_30.$$arity=-2);Opal.defn(self,"$new_next",TMP_31=function $$new_next(kw,args){var $a,self=this,sexp=nil;if(args==null){args=[]}if(args.$length()["$=="](1)){sexp=self.$s("next",args["$[]"](0))}else{sexp=self.$s("next",($a=self).$s.apply($a,["array"].concat(Opal.to_a(args))))}return sexp},TMP_31.$$arity=-2);Opal.defn(self,"$new_block",TMP_32=function $$new_block(stmt){var self=this,sexp=nil;if(stmt==null){stmt=nil}sexp=self.$s("block");if(stmt!==false&&stmt!==nil&&stmt!=null){sexp["$<<"](stmt)}return sexp},TMP_32.$$arity=-1);Opal.defn(self,"$new_compstmt",TMP_33=function $$new_compstmt(block){var $a,$b,$c,self=this,comp=nil,result=nil;comp=function(){if(block.$size()["$=="](1)){return nil}else if(block.$size()["$=="](2)){return block["$[]"](1)}else{return block}return nil}();if(($a=($b=($c=comp!==false&&comp!==nil&&comp!=null)?comp.$type()["$=="]("begin"):comp,$b!==false&&$b!==nil&&$b!=null?comp.$size()["$=="](2):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result=comp["$[]"](1)}else{result=comp}return result},TMP_33.$$arity=1);Opal.defn(self,"$new_body",TMP_35=function $$new_body(compstmt,res,els,ens){var $a,$b,TMP_34,self=this,s=nil;s=($a=compstmt)!==false&&$a!==nil&&$a!=null?$a:self.$s("block");if(res!==false&&res!==nil&&res!=null){s=self.$s("rescue",s);($a=($b=res).$each,$a.$$p=(TMP_34=function(r){var self=TMP_34.$$s||this;if(r==null)r=nil;return s["$<<"](r)},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34),$a).call($b);if(els!==false&&els!==nil&&els!=null){s["$<<"](els)}}if(ens!==false&&ens!==nil&&ens!=null){return self.$s("ensure",s,ens)}else{return s}},TMP_35.$$arity=4);Opal.defn(self,"$new_def",TMP_36=function $$new_def(kw,recv,name,args,body,end_tok){var $a,$b,self=this,sexp=nil;if(($a=body.$type()["$!="]("block"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){body=self.$s("block",body)}if(body.$size()["$=="](1)){body["$<<"](self.$s("nil"))}sexp=self.$s("def",recv,self.$value(name).$to_sym(),args,body);$a=[self.$source(kw)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_36.$$arity=6);Opal.defn(self,"$new_class",TMP_37=function $$new_class(start,path,sup,body,endt){var $a,$b,self=this,sexp=nil;sexp=self.$s("class",path,sup,body);$a=[self.$source(start)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_37.$$arity=5);Opal.defn(self,"$new_sclass",TMP_38=function $$new_sclass(kw,expr,body,end_tok){var $a,$b,self=this,sexp=nil;sexp=self.$s("sclass",expr,body);$a=[self.$source(kw)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_38.$$arity=4);Opal.defn(self,"$new_module",TMP_39=function $$new_module(kw,path,body,end_tok){var $a,$b,self=this,sexp=nil;sexp=self.$s("module",path,body);$a=[self.$source(kw)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_39.$$arity=4);Opal.defn(self,"$new_iter",TMP_40=function $$new_iter(args,body){var $a,self=this,s=nil;($a=args)!==false&&$a!==nil&&$a!=null?$a:args=nil;s=self.$s("iter",args);if(body!==false&&body!==nil&&body!=null){s["$<<"](body)}return s},TMP_40.$$arity=2);Opal.defn(self,"$new_if",TMP_41=function $$new_if(if_tok,expr,stmt,tail){var $a,$b,self=this,sexp=nil;sexp=self.$s("if",expr,stmt,tail);$a=[self.$source(if_tok)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_41.$$arity=4);Opal.defn(self,"$new_while",TMP_42=function $$new_while(kw,test,body){var $a,$b,self=this,sexp=nil;sexp=self.$s("while",test,body);$a=[self.$source(kw)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_42.$$arity=3);Opal.defn(self,"$new_until",TMP_43=function $$new_until(kw,test,body){var $a,$b,self=this,sexp=nil;sexp=self.$s("until",test,body);$a=[self.$source(kw)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_43.$$arity=3);Opal.defn(self,"$new_rescue_mod",TMP_44=function $$new_rescue_mod(kw,expr,resc){var $a,$b,self=this,sexp=nil;sexp=self.$s("rescue_mod",expr,resc);$a=[self.$source(kw)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_44.$$arity=3);Opal.defn(self,"$new_array",TMP_45=function $$new_array(start,args,finish){var $a,$b,$c,self=this,sexp=nil;($a=args)!==false&&$a!==nil&&$a!=null?$a:args=[];sexp=($a=self).$s.apply($a,["array"].concat(Opal.to_a(args)));$b=[self.$source(start)],$c=sexp,$c["$source="].apply($c,$b),$b[$b.length-1];return sexp},TMP_45.$$arity=3);Opal.defn(self,"$new_hash",TMP_46=function $$new_hash(open,assocs,close){var $a,$b,$c,self=this,sexp=nil;sexp=($a=self).$s.apply($a,["hash"].concat(Opal.to_a(assocs)));$b=[self.$source(open)],$c=sexp,$c["$source="].apply($c,$b),$b[$b.length-1];return sexp},TMP_46.$$arity=3);Opal.defn(self,"$new_not",TMP_47=function $$new_not(kw,expr){var self=this;return self.$s1("not",expr,self.$source(kw))},TMP_47.$$arity=2);Opal.defn(self,"$new_paren",TMP_48=function $$new_paren(open,expr,close){var $a,$b,self=this;if(($a=($b=expr["$nil?"]())!==false&&$b!==nil&&$b!=null?$b:expr["$=="](["block"]))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$s1("paren",self.$s0("nil",self.$source(open)),self.$source(open))}else{return self.$s1("paren",expr,self.$source(open))}},TMP_48.$$arity=3);Opal.defn(self,"$new_args_tail",TMP_49=function $$new_args_tail(kwarg,kwrest,block){var self=this;return[kwarg,kwrest,block]},TMP_49.$$arity=3);Opal.defn(self,"$new_restarg",TMP_50=function $$new_restarg(rest){var $a,self=this,restname=nil;restname=rest["$[]"]($range(1,-1,false));if(($a=restname["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[self.$s("restarg")]}else{self.$scope().$add_local(restname.$to_sym());return[self.$s("restarg",restname.$to_sym())]}},TMP_50.$$arity=1);Opal.defn(self,"$new_optarg",TMP_52=function $$new_optarg(opt){var $a,$b,TMP_51,self=this;if(opt!==false&&opt!==nil&&opt!=null){return($a=($b=opt["$[]"]($range(1,-1,false))).$map,$a.$$p=(TMP_51=function(_opt){var self=TMP_51.$$s||this;if(_opt==null)_opt=nil;return self.$s("optarg",_opt["$[]"](1),_opt["$[]"](2))},TMP_51.$$s=self,TMP_51.$$arity=1,TMP_51),$a).call($b)}else{return nil}},TMP_52.$$arity=1);Opal.defn(self,"$new_shadowarg",TMP_53=function $$new_shadowarg(shadowarg){var self=this,shadowname=nil;if(shadowarg!==false&&shadowarg!==nil&&shadowarg!=null){shadowname=self.$value(shadowarg).$to_sym();self.$scope().$add_local(shadowname);return self.$s("shadowarg",shadowname)}else{return nil}},TMP_53.$$arity=1);Opal.defn(self,"$new_args",TMP_56=function $$new_args(norm,tail){var $a,$b,TMP_54,$c,TMP_55,$d,self=this,res=nil,blockname=nil;res=self.$s("args");if(norm!==false&&norm!==nil&&norm!=null){($a=($b=norm).$each,$a.$$p=(TMP_54=function(arg){var self=TMP_54.$$s||this,$c;if(arg==null)arg=nil;if(($c=arg["$is_a?"]($scope.get("Sexp")))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return res["$<<"](arg)}else{self.$scope().$add_local(arg);return res["$<<"](self.$s("arg",arg))}},TMP_54.$$s=self,TMP_54.$$arity=1,TMP_54),$a).call($b)}if(($a=($c=tail!==false&&tail!==nil&&tail!=null)?tail["$[]"](0):tail)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){($a=($c=tail["$[]"](0)).$each,$a.$$p=(TMP_55=function(kwarg){var self=TMP_55.$$s||this;if(kwarg==null)kwarg=nil;return res["$<<"](kwarg)},TMP_55.$$s=self,TMP_55.$$arity=1,TMP_55),$a).call($c)}if(($a=($d=tail!==false&&tail!==nil&&tail!=null)?tail["$[]"](1):tail)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){res["$<<"](tail["$[]"](1))}if(($a=($d=tail!==false&&tail!==nil&&tail!=null)?tail["$[]"](2):tail)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){blockname=tail["$[]"](2).$to_s()["$[]"]($range(1,-1,false)).$to_sym();self.$scope().$add_local(blockname);res["$<<"](self.$s("blockarg",blockname))}return res},TMP_56.$$arity=2);Opal.defn(self,"$new_kwarg",TMP_57=function $$new_kwarg(name){var self=this;self.$scope().$add_local(name["$[]"](1));return self.$s("kwarg",name["$[]"](1))},TMP_57.$$arity=1);Opal.defn(self,"$new_kwoptarg",TMP_58=function $$new_kwoptarg(name,val){var self=this;self.$scope().$add_local(name["$[]"](1));return self.$s("kwoptarg",name["$[]"](1),val)},TMP_58.$$arity=2);Opal.defn(self,"$new_kwrestarg",TMP_59=function $$new_kwrestarg(name){var self=this,result=nil;if(name==null){name=nil}result=self.$s("kwrestarg");if(name!==false&&name!==nil&&name!=null){self.$scope().$add_local(name["$[]"](0).$to_sym());result["$<<"](name["$[]"](0).$to_sym())}return result},TMP_59.$$arity=-1);Opal.defn(self,"$new_kwsplat",TMP_60=function $$new_kwsplat(hash){var self=this;return self.$s("kwsplat",hash)},TMP_60.$$arity=1);Opal.defn(self,"$new_method_call_with_block",TMP_61=function $$new_method_call_with_block(method_call,block_arg){var $a,$b,self=this,receiver=nil,method_name=nil,call_args=nil,last_arg=nil;$a=Opal.to_a(method_call.$children()),receiver=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],call_args=$a[2]==null?nil:$a[2],$a;if(($a=($b=call_args!==false&&call_args!==nil&&call_args!=null)?block_arg:call_args)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){last_arg=call_args.$last();if(($a=($b=$scope.get("Sexp")["$==="](last_arg),$b!==false&&$b!==nil&&$b!=null?last_arg.$type()["$=="]("block_pass"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise("both block argument and literal block are passed")}}return method_call["$<<"](block_arg)},TMP_61.$$arity=2);Opal.defn(self,"$new_block_arg_splat",TMP_62=function $$new_block_arg_splat(rest){var self=this,r=nil;if(rest!==false&&rest!==nil&&rest!=null){r=rest.$to_s()["$[]"]($range(1,-1,false)).$to_sym();self.$scope().$add_local(r);return self.$new_splat(nil,self.$s("lasgn",r))}else{return nil}},TMP_62.$$arity=1);Opal.defn(self,"$new_block_args",TMP_65=function $$new_block_args(norm,tail,shadow_args){var $a,$b,TMP_63,$c,TMP_64,$d,self=this,res=nil,block=nil;if(shadow_args==null){shadow_args=nil}res=self.$s("args");if(norm!==false&&norm!==nil&&norm!=null){($a=($b=norm).$each,$a.$$p=(TMP_63=function(arg){var self=TMP_63.$$s||this,$c;if(arg==null)arg=nil;if(($c=arg["$is_a?"]($scope.get("Symbol")))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$scope().$add_local(arg);return res["$<<"](self.$s("arg",arg))}else if(($c=arg["$is_a?"]($scope.get("Sexp")))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return res["$<<"](arg)}else if(($c=arg["$nil?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return res.$meta()["$[]="]("has_trailing_comma",true)}else{return nil}},TMP_63.$$s=self,TMP_63.$$arity=1,TMP_63),$a).call($b)}if(($a=($c=tail!==false&&tail!==nil&&tail!=null)?tail["$[]"](0):tail)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){($a=($c=tail["$[]"](0)).$each,$a.$$p=(TMP_64=function(kwarg){var self=TMP_64.$$s||this;if(kwarg==null)kwarg=nil;return res["$<<"](kwarg)},TMP_64.$$s=self,TMP_64.$$arity=1,TMP_64),$a).call($c)}if(($a=($d=tail!==false&&tail!==nil&&tail!=null)?tail["$[]"](1):tail)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){res["$<<"](tail["$[]"](1))}if(($a=($d=tail!==false&&tail!==nil&&tail!=null)?tail["$[]"](2):tail)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block=tail["$[]"](2).$to_s()["$[]"]($range(1,-1,false)).$to_sym();res["$<<"](self.$s("block_pass",self.$s("lasgn",block)));self.$scope().$add_local(block)}if(shadow_args!==false&&shadow_args!==nil&&shadow_args!=null){res.$concat(shadow_args)}return self.$s("masgn",res)},TMP_65.$$arity=-3);Opal.defn(self,"$new_call",TMP_66=function $$new_call(recv,meth,args){var $a,$b,$c,self=this,sexp=nil;if(args==null){args=nil}($a=args)!==false&&$a!==nil&&$a!=null?$a:args=[];sexp=self.$s("call",recv,self.$value(meth).$to_sym(),($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(args))));$b=[self.$source(meth)],$c=sexp,$c["$source="].apply($c,$b),$b[$b.length-1];return sexp},TMP_66.$$arity=-3);Opal.defn(self,"$new_js_call",TMP_67=function $$new_js_call(recv,meth,args){var $a,$b,$c,self=this,sexp=nil;if(args==null){args=nil}if(args!==false&&args!==nil&&args!=null){sexp=self.$s("jscall",recv,self.$value(meth).$to_sym(),($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(args))));$b=[self.$source(meth)],$c=sexp,$c["$source="].apply($c,$b),$b[$b.length-1]}else{sexp=self.$s("jscall",recv,self.$value(meth).$to_sym(),nil);$b=[self.$source(meth)],$c=sexp,$c["$source="].apply($c,$b),$b[$b.length-1]}return sexp},TMP_67.$$arity=-3);Opal.defn(self,"$new_binary_call",TMP_68=function $$new_binary_call(recv,meth,arg){var self=this;return self.$new_call(recv,meth,[arg])},TMP_68.$$arity=3);Opal.defn(self,"$new_unary_call",TMP_69=function $$new_unary_call(op,recv){var self=this;return self.$new_call(recv,op,[])},TMP_69.$$arity=2);Opal.defn(self,"$new_and",TMP_70=function $$new_and(lhs,tok,rhs){var $a,$b,self=this,sexp=nil;sexp=self.$s("and",lhs,rhs);$a=[self.$source(tok)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_70.$$arity=3);Opal.defn(self,"$new_or",TMP_71=function $$new_or(lhs,tok,rhs){var $a,$b,self=this,sexp=nil;sexp=self.$s("or",lhs,rhs);$a=[self.$source(tok)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_71.$$arity=3);Opal.defn(self,"$new_irange",TMP_72=function $$new_irange(beg,op,finish){var $a,$b,self=this,sexp=nil;sexp=self.$s("irange",beg,finish);$a=[self.$source(op)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_72.$$arity=3);Opal.defn(self,"$new_erange",TMP_73=function $$new_erange(beg,op,finish){var $a,$b,self=this,sexp=nil;sexp=self.$s("erange",beg,finish);$a=[self.$source(op)],$b=sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return sexp},TMP_73.$$arity=3);Opal.defn(self,"$negate_num",TMP_74=function $$negate_num(sexp){var self=this;sexp.$array()["$[]="](1,sexp.$array()["$[]"](1)["$-@"]());return sexp},TMP_74.$$arity=1);Opal.defn(self,"$add_block_pass",TMP_75=function $$add_block_pass(arglist,block){var self=this;if(block!==false&&block!==nil&&block!=null){arglist["$<<"](block)}return arglist},TMP_75.$$arity=2);Opal.defn(self,"$new_block_pass",TMP_76=function $$new_block_pass(amper_tok,val){var self=this;return self.$s1("block_pass",val,self.$source(amper_tok))},TMP_76.$$arity=2);Opal.defn(self,"$new_splat",TMP_77=function $$new_splat(tok,value){var self=this;return self.$s1("splat",value,self.$source(tok))},TMP_77.$$arity=2);Opal.defn(self,"$new_op_asgn",TMP_78=function $$new_op_asgn(op,lhs,rhs){var self=this,$case=nil,result=nil;$case=self.$value(op).$to_sym();if("||"["$==="]($case)){result=self.$s("op_asgn_or",self.$new_gettable(lhs));result["$<<"](lhs["$<<"](rhs))}else if("&&"["$==="]($case)){result=self.$s("op_asgn_and",self.$new_gettable(lhs));result["$<<"](lhs["$<<"](rhs))}else{result=lhs;result["$<<"](self.$new_call(self.$new_gettable(lhs),op,[rhs]))}return result},TMP_78.$$arity=3);Opal.defn(self,"$new_op_asgn1",TMP_79=function $$new_op_asgn1(lhs,args,op,rhs){var $a,$b,$c,self=this,arglist=nil,sexp=nil;arglist=($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(args)));sexp=self.$s("op_asgn1",lhs,arglist,self.$value(op),rhs);$b=[self.$source(op)],$c=sexp,$c["$source="].apply($c,$b),$b[$b.length-1];return sexp},TMP_79.$$arity=4);Opal.defn(self,"$op_to_setter",TMP_80=function $$op_to_setter(op){var self=this;return(""+self.$value(op)+"=").$to_sym()},TMP_80.$$arity=1);Opal.defn(self,"$new_attrasgn",TMP_81=function $$new_attrasgn(recv,op,args){var $a,self=this,arglist=nil,sexp=nil;if(args==null){args=[]}arglist=($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(args)));sexp=self.$s("attrasgn",recv,op,arglist);return sexp},TMP_81.$$arity=-3);Opal.defn(self,"$new_js_attrasgn",TMP_82=function $$new_js_attrasgn(recv,args){var $a,self=this,arglist=nil,sexp=nil;arglist=($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(args)));sexp=self.$s("jsattrasgn",recv,nil,arglist);return sexp},TMP_82.$$arity=2);Opal.defn(self,"$new_assign",TMP_83=function $$new_assign(lhs,tok,rhs){var $a,$b,self=this,$case=nil;return function(){$case=lhs.$type();if("iasgn"["$==="]($case)||"cdecl"["$==="]($case)||"lasgn"["$==="]($case)||"gasgn"["$==="]($case)||"cvdecl"["$==="]($case)||"nth_ref"["$==="]($case)){lhs["$<<"](rhs);return lhs}else if("call"["$==="]($case)||"attrasgn"["$==="]($case)||"jsattrasgn"["$==="]($case)){lhs.$last()["$<<"](rhs);return lhs}else if("colon2"["$==="]($case)){lhs["$<<"](rhs);$a=["casgn"],$b=lhs,$b["$type="].apply($b,$a),$a[$a.length-1];return lhs}else if("colon3"["$==="]($case)){lhs["$<<"](rhs);$a=["casgn3"],$b=lhs,$b["$type="].apply($b,$a),$a[$a.length-1];return lhs}else{return self.$raise("Bad lhs for new_assign: "+lhs.$type())}}()},TMP_83.$$arity=3);Opal.defn(self,"$new_assignable",TMP_84=function $$new_assignable(ref){var $a,$b,self=this,$case=nil;$case=ref.$type();if("ivar"["$==="]($case)){$a=["iasgn"],$b=ref,$b["$type="].apply($b,$a),$a[$a.length-1]}else if("const"["$==="]($case)){$a=["cdecl"],$b=ref,$b["$type="].apply($b,$a),$a[$a.length-1]}else if("identifier"["$==="]($case)){if(($a=self.$scope()["$has_local?"](ref["$[]"](1)))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$scope().$add_local(ref["$[]"](1))}$a=["lasgn"],$b=ref,$b["$type="].apply($b,$a),$a[$a.length-1]}else if("gvar"["$==="]($case)){$a=["gasgn"],$b=ref,$b["$type="].apply($b,$a),$a[$a.length-1]}else if("cvar"["$==="]($case)){$a=["cvdecl"],$b=ref,$b["$type="].apply($b,$a),$a[$a.length-1]}else{self.$raise($scope.get("SyntaxError"),"Bad new_assignable type: "+ref.$type())}return ref},TMP_84.$$arity=1);Opal.defn(self,"$new_gettable",TMP_85=function $$new_gettable(ref){var $a,$b,self=this,res=nil,$case=nil;res=function(){$case=ref.$type();if("lasgn"["$==="]($case)){return self.$s("lvar",ref["$[]"](1))}else if("iasgn"["$==="]($case)){return self.$s("ivar",ref["$[]"](1))}else if("gasgn"["$==="]($case)){return self.$s("gvar",ref["$[]"](1))}else if("cvdecl"["$==="]($case)){return self.$s("cvar",ref["$[]"](1))}else if("cdecl"["$==="]($case)){return self.$s("const",ref["$[]"](1))}else{return self.$raise("Bad new_gettable ref: "+ref.$type())}}();$a=[ref.$source()],$b=res,$b["$source="].apply($b,$a),$a[$a.length-1];return res},TMP_85.$$arity=1);Opal.defn(self,"$new_var_ref",TMP_86=function $$new_var_ref(ref){var $a,$b,self=this,$case=nil,result=nil;return function(){$case=ref.$type();if("self"["$==="]($case)||"nil"["$==="]($case)||"true"["$==="]($case)||"false"["$==="]($case)||"line"["$==="]($case)||"file"["$==="]($case)){return ref}else if("const"["$==="]($case)){return ref}else if("ivar"["$==="]($case)||"gvar"["$==="]($case)||"cvar"["$==="]($case)){return ref}else if("int"["$==="]($case)){return ref}else if("str"["$==="]($case)){return ref}else if("identifier"["$==="]($case)){result=function(){if(($a=self.$scope()["$has_local?"](ref["$[]"](1)))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$s("lvar",ref["$[]"](1))}else{return self.$s("call",nil,ref["$[]"](1),self.$s("arglist"))}return nil}();$a=[ref.$source()],$b=result,$b["$source="].apply($b,$a),$a[$a.length-1];return result}else{return self.$raise("Bad var_ref type: "+ref.$type())}}()},TMP_86.$$arity=1);Opal.defn(self,"$new_super",TMP_87=function $$new_super(kw,args){var $a,$b,$c,self=this,sexp=nil;if(($a=args["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sexp=self.$s("super",nil)}else{sexp=self.$s("super",($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(args))))}$b=[self.$source(kw)],$c=sexp,$c["$source="].apply($c,$b),$b[$b.length-1];return sexp},TMP_87.$$arity=2);Opal.defn(self,"$new_yield",TMP_88=function $$new_yield(args){var $a,self=this;($a=args)!==false&&$a!==nil&&$a!=null?$a:args=[];return($a=self).$s.apply($a,["yield"].concat(Opal.to_a(args)))},TMP_88.$$arity=1);Opal.defn(self,"$new_xstr",TMP_89=function $$new_xstr(start_t,str,end_t){var $a,$b,self=this,$case=nil;if(str!==false&&str!==nil&&str!=null){}else{return self.$s("xstr","")}$case=str.$type();if("str"["$==="]($case)){$a=["xstr"],$b=str,$b["$type="].apply($b,$a),$a[$a.length-1]}else if("dstr"["$==="]($case)){$a=["dxstr"],$b=str,$b["$type="].apply($b,$a),$a[$a.length-1]}else if("evstr"["$==="]($case)){str=self.$s("dxstr","",str)}$a=[self.$source(start_t)],$b=str,$b["$source="].apply($b,$a),$a[$a.length-1];return str},TMP_89.$$arity=3);Opal.defn(self,"$new_dsym",TMP_90=function $$new_dsym(str){var $a,$b,self=this,$case=nil;if(str!==false&&str!==nil&&str!=null){}else{return self.$s("sym","")}$case=str.$type();if("str"["$==="]($case)){$a=["sym"],$b=str,$b["$type="].apply($b,$a),$a[$a.length-1];str["$[]="](1,str["$[]"](1).$to_sym())}else if("dstr"["$==="]($case)){$a=["dsym"],$b=str,$b["$type="].apply($b,$a),$a[$a.length-1]}else if("evstr"["$==="]($case)){str=self.$s("dsym",str)}return str},TMP_90.$$arity=1);Opal.defn(self,"$new_evstr",TMP_91=function $$new_evstr(str){var self=this;return self.$s("evstr",str)},TMP_91.$$arity=1);Opal.defn(self,"$new_str",TMP_92=function $$new_str(str){var $a,$b,$c,self=this;if(str!==false&&str!==nil&&str!=null){}else{return self.$s("str","")}if(($a=($b=($c=str.$size()["$=="](3))?str["$[]"](1)["$=="](""):str.$size()["$=="](3),$b!==false&&$b!==nil&&$b!=null?str.$type()["$=="]("str"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return str["$[]"](2)}else if(($a=($b=str.$type()["$=="]("str"))?$rb_gt(str.$size(),3):str.$type()["$=="]("str"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=["dstr"],$b=str,$b["$type="].apply($b,$a),$a[$a.length-1];return str}else if(str.$type()["$=="]("evstr")){return self.$s("dstr","",str)}else{return str}},TMP_92.$$arity=1);Opal.defn(self,"$new_regexp",TMP_93=function $$new_regexp(reg,ending){var $a,$b,self=this,$case=nil;if(reg!==false&&reg!==nil&&reg!=null){}else{return self.$s("regexp","")}return function(){$case=reg.$type();if("str"["$==="]($case)){return self.$s("regexp",reg["$[]"](1),self.$value(ending))}else if("evstr"["$==="]($case)){return self.$s("dregx","",reg)}else if("dstr"["$==="]($case)){$a=["dregx"],$b=reg,$b["$type="].apply($b,$a),$a[$a.length-1];return reg}else{return nil}}()},TMP_93.$$arity=2);Opal.defn(self,"$str_append",TMP_94=function $$str_append(str,str2){var self=this;if(str!==false&&str!==nil&&str!=null){}else{return str2}if(str2!==false&&str2!==nil&&str2!=null){}else{return str}if(str.$type()["$=="]("evstr")){str=self.$s("dstr","",str)}else if(str.$type()["$=="]("str")){str=self.$s("dstr",str["$[]"](1))}str["$<<"](str2);return str},TMP_94.$$arity=2);return(Opal.defn(self,"$new_str_content",TMP_95=function $$new_str_content(tok){var self=this;return self.$s1("str",self.$value(tok),self.$source(tok))},TMP_95.$$arity=1),nil)&&"new_str_content"})($scope.base,$scope.get("Racc").$$scope.get("Parser"))}($scope.base)};Opal.modules["opal/fragment"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$attr_reader","$to_s","$inspect","$def?","$find_parent_def","$mid","$line","$column"]);return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Fragment(){}var self=$Fragment=$klass($base,$super,"Fragment",$Fragment);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5;def.code=def.scope=def.sexp=nil;self.$attr_reader("code");Opal.defn(self,"$initialize",TMP_1=function $$initialize(code,scope,sexp){var self=this;if(sexp==null){sexp=nil}self.code=code.$to_s();self.sexp=sexp;return self.scope=scope},TMP_1.$$arity=-3);Opal.defn(self,"$inspect",TMP_2=function $$inspect(){var self=this;return"f("+self.code.$inspect()+")"},TMP_2.$$arity=0);Opal.defn(self,"$source_map_name",TMP_3=function $$source_map_name(){var $a,self=this,def_node=nil;if(($a=self.scope)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return nil}def_node=function(){if(($a=self.scope["$def?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.scope}else{return self.scope.$find_parent_def()}return nil}();return($a=def_node!==false&&def_node!==nil&&def_node!=null)?def_node.$mid():def_node},TMP_3.$$arity=0);Opal.defn(self,"$line",TMP_4=function $$line(){var $a,self=this;if(($a=self.sexp)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.sexp.$line()}else{return nil}},TMP_4.$$arity=0);return(Opal.defn(self,"$column",TMP_5=function $$column(){var $a,self=this;if(($a=self.sexp)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.sexp.$column()}else{return nil}},TMP_5.$$arity=0),nil)&&"column"})($scope.base,null)}($scope.base)};Opal.modules["opal/nodes/helpers"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$require","$valid_name?","$inspect","$=~","$!","$to_s","$valid_ivar_name?","$to_sym","$+","$indent","$to_proc","$compiler","$parser_indent","$push","$current_indent","$js_truthy_optimize","$with_temp","$fragment","$expr","$==","$type","$[]","$uses_block!","$scope","$block_name","$handlers","$include?","$truthy_optimize?","$dup"]);self.$require("opal/regexp_anchors");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Helpers,self=$Helpers=$module($base,"Helpers");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_13,TMP_15,TMP_16;Opal.cdecl($scope,"ES51_RESERVED_WORD",new RegExp(""+$scope.get("REGEXP_START")+"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)"+$scope.get("REGEXP_END")));Opal.cdecl($scope,"ES3_RESERVED_WORD_EXCLUSIVE",new RegExp(""+$scope.get("REGEXP_START")+"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)"+$scope.get("REGEXP_END")));Opal.cdecl($scope,"PROTO_SPECIAL_PROPS",new RegExp(""+$scope.get("REGEXP_START")+"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)"+$scope.get("REGEXP_END")));Opal.cdecl($scope,"PROTO_SPECIAL_METHODS",new RegExp(""+$scope.get("REGEXP_START")+"(?:hasOwnProperty|valueOf)"+$scope.get("REGEXP_END")));Opal.cdecl($scope,"IMMUTABLE_PROPS",new RegExp(""+$scope.get("REGEXP_START")+"(?:NaN|Infinity|undefined)"+$scope.get("REGEXP_END")));Opal.cdecl($scope,"BASIC_IDENTIFIER_RULES",new RegExp(""+$scope.get("REGEXP_START")+"[$_a-z][$_a-z\\d]*"+$scope.get("REGEXP_END")));Opal.cdecl($scope,"RESERVED_FUNCTION_NAMES",new RegExp(""+$scope.get("REGEXP_START")+"(?:Array)"+$scope.get("REGEXP_END")));Opal.defn(self,"$property",TMP_1=function $$property(name){var $a,self=this;if(($a=self["$valid_name?"](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"."+name}else{return"["+name.$inspect()+"]"}},TMP_1.$$arity=1);Opal.defn(self,"$valid_name?",TMP_2=function(name){var $a,$b,$c,self=this;return $a=$scope.get("BASIC_IDENTIFIER_RULES")["$=~"](name),$a!==false&&$a!==nil&&$a!=null?(($b=($c=$scope.get("ES51_RESERVED_WORD")["$=~"](name))!==false&&$c!==nil&&$c!=null?$c:$scope.get("ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))!==false&&$b!==nil&&$b!=null?$b:$scope.get("IMMUTABLE_PROPS")["$=~"](name))["$!"]():$a},TMP_2.$$arity=1);Opal.defn(self,"$variable",TMP_3=function $$variable(name){var $a,self=this;if(($a=self["$valid_name?"](name.$to_s()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return name}else{return""+name+"$"}},TMP_3.$$arity=1);Opal.defn(self,"$valid_ivar_name?",TMP_4=function(name){var $a,self=this;return(($a=$scope.get("PROTO_SPECIAL_PROPS")["$=~"](name))!==false&&$a!==nil&&$a!=null?$a:$scope.get("PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()},TMP_4.$$arity=1);Opal.defn(self,"$ivar",TMP_5=function $$ivar(name){var $a,self=this;if(($a=self["$valid_ivar_name?"](name.$to_s()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return name}else{return""+name+"$"}},TMP_5.$$arity=1);Opal.defn(self,"$lvar_to_js",TMP_6=function $$lvar_to_js(var$){var $a,self=this,var$=nil;if(($a=self["$valid_name?"](var$.$to_s()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{var$=""+var$+"$"}return var$.$to_sym()},TMP_6.$$arity=1);Opal.defn(self,"$mid_to_jsid",TMP_7=function $$mid_to_jsid(mid){var $a,self=this;if(($a=/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[/["$=~"](mid.$to_s()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"['$"+mid+"']"}else{return $rb_plus(".$",mid)}},TMP_7.$$arity=1);Opal.defn(self,"$indent",TMP_8=function $$indent(){var $a,$b,self=this,$iter=TMP_8.$$p,block=$iter||nil;TMP_8.$$p=null;return($a=($b=self.$compiler()).$indent,$a.$$p=block.$to_proc(),$a).call($b)},TMP_8.$$arity=0);Opal.defn(self,"$current_indent",TMP_9=function $$current_indent(){var self=this;return self.$compiler().$parser_indent()},TMP_9.$$arity=0);Opal.defn(self,"$line",TMP_10=function $$line($a_rest){var $b,self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}self.$push("\n"+self.$current_indent());return($b=self).$push.apply($b,Opal.to_a(strs))},TMP_10.$$arity=-1);Opal.defn(self,"$empty_line",TMP_11=function $$empty_line(){var self=this;return self.$push("\n")},TMP_11.$$arity=0);Opal.defn(self,"$js_truthy",TMP_13=function $$js_truthy(sexp){var $a,$b,TMP_12,self=this,optimize=nil;if(($a=optimize=self.$js_truthy_optimize(sexp))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return optimize}return($a=($b=self).$with_temp,$a.$$p=(TMP_12=function(tmp){var self=TMP_12.$$s||this;if(tmp==null)tmp=nil;return[self.$fragment("(("+tmp+" = "),self.$expr(sexp),self.$fragment(") !== nil && "+tmp+" != null && (!"+tmp+".$$is_boolean || "+tmp+" == true))")]},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12),$a).call($b)},TMP_13.$$arity=1);Opal.defn(self,"$js_falsy",TMP_15=function $$js_falsy(sexp){var $a,$b,TMP_14,self=this,mid=nil;if(sexp.$type()["$=="]("call")){mid=sexp["$[]"](2);if(mid["$=="]("block_given?")){self.$scope()["$uses_block!"]();return""+self.$scope().$block_name()+" === nil"}}return($a=($b=self).$with_temp,$a.$$p=(TMP_14=function(tmp){var self=TMP_14.$$s||this;if(tmp==null)tmp=nil;return[self.$fragment("(("+tmp+" = "),self.$expr(sexp),self.$fragment(") === nil || "+tmp+" == null || ("+tmp+".$$is_boolean && "+tmp+" == false))")]},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$a).call($b)},TMP_15.$$arity=1);Opal.defn(self,"$js_truthy_optimize",TMP_16=function $$js_truthy_optimize(sexp){var $a,$b,$c,self=this,mid=nil,receiver_handler_class=nil,receiver=nil,allow_optimization_on_type=nil;if(sexp.$type()["$=="]("call")){mid=sexp["$[]"](2);receiver_handler_class=($a=receiver=sexp["$[]"](1),$a!==false&&$a!==nil&&$a!=null?self.$compiler().$handlers()["$[]"](receiver.$type()):$a);allow_optimization_on_type=($a=($b=$scope.get("Compiler").$$scope.get("COMPARE")["$include?"](mid.$to_s()),$b!==false&&$b!==nil&&$b!=null?receiver_handler_class:$b),$a!==false&&$a!==nil&&$a!=null?receiver_handler_class["$truthy_optimize?"]():$a);if(($a=($b=($c=allow_optimization_on_type)!==false&&$c!==nil&&$c!=null?$c:mid["$=="]("block_given?"))!==false&&$b!==nil&&$b!=null?$b:mid["$=="]("=="))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$expr(sexp)}else{return nil}}else if(($a=["lvar","self"]["$include?"](sexp.$type()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return[self.$expr(sexp.$dup()),self.$fragment(" !== false && "),self.$expr(sexp.$dup()),self.$fragment(" !== nil && "),self.$expr(sexp.$dup()),self.$fragment(" != null")]}else{return nil}},TMP_16.$$arity=1)})($scope.base)})($scope.base)}($scope.base)};Opal.modules["opal/nodes/base"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$range=Opal.range;Opal.add_stubs(["$require","$include","$each","$[]=","$handlers","$each_with_index","$define_method","$[]","$+","$attr_reader","$type","$compile","$raise","$is_a?","$fragment","$<<","$unshift","$reverse","$push","$new","$scope","$error","$s","$==","$process","$expr","$add_scope_local","$to_sym","$add_scope_ivar","$add_scope_gvar","$add_scope_temp","$helper","$with_temp","$to_proc","$in_while?","$instance_variable_get","$has_rescue_else?","$in_ensure","$in_ensure?"]);self.$require("opal/nodes/helpers");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $Base(){}var self=$Base=$klass($base,$super,"Base",$Base);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_13,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39;def.sexp=def.fragments=def.compiler=def.level=nil;self.$include($scope.get("Helpers"));Opal.defs(self,"$handlers",TMP_1=function $$handlers(){var $a,self=this;if(self.handlers==null)self.handlers=nil;return($a=self.handlers)!==false&&$a!==nil&&$a!=null?$a:self.handlers=$hash2([],{})},TMP_1.$$arity=0);Opal.defs(self,"$handle",TMP_3=function $$handle($a_rest){var $b,$c,TMP_2,self=this,types;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}types=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){types[$arg_idx-0]=arguments[$arg_idx]}return($b=($c=types).$each,$b.$$p=(TMP_2=function(type){var self=TMP_2.$$s||this;if(type==null)type=nil;return $scope.get("Base").$handlers()["$[]="](type,self)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$b).call($c)},TMP_3.$$arity=-1);Opal.defs(self,"$children",TMP_6=function $$children($a_rest){var $b,$c,TMP_4,self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}return($b=($c=names).$each_with_index,$b.$$p=(TMP_4=function(name,idx){var self=TMP_4.$$s||this,$a,$d,TMP_5;if(name==null)name=nil;if(idx==null)idx=nil;return($a=($d=self).$define_method,$a.$$p=(TMP_5=function(){var self=TMP_5.$$s||this;if(self.sexp==null)self.sexp=nil;return self.sexp["$[]"]($rb_plus(idx,1))},TMP_5.$$s=self,TMP_5.$$arity=0,TMP_5),$a).call($d,name)},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4),$b).call($c)},TMP_6.$$arity=-1);Opal.defs(self,"$truthy_optimize?",TMP_7=function(){var self=this;return false},TMP_7.$$arity=0);self.$attr_reader("compiler","type");Opal.defn(self,"$initialize",TMP_8=function $$initialize(sexp,level,compiler){var self=this;self.sexp=sexp;self.type=sexp.$type();self.level=level;return self.compiler=compiler},TMP_8.$$arity=3);Opal.defn(self,"$children",TMP_9=function $$children(){var self=this;return self.sexp["$[]"]($range(1,-1,false))},TMP_9.$$arity=0);Opal.defn(self,"$compile_to_fragments",TMP_10=function $$compile_to_fragments(){var $a,$b,self=this;if(($a=($b=self["fragments"],$b!=null&&$b!==nil)?"instance-variable":nil)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.fragments}self.fragments=[];self.$compile();return self.fragments},TMP_10.$$arity=0);Opal.defn(self,"$compile",TMP_11=function $$compile(){var self=this;return self.$raise("Not Implemented")},TMP_11.$$arity=0);Opal.defn(self,"$push",TMP_13=function $$push($a_rest){var $b,$c,TMP_12,self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return($b=($c=strs).$each,$b.$$p=(TMP_12=function(str){var self=TMP_12.$$s||this,$a;if(self.fragments==null)self.fragments=nil;if(str==null)str=nil;if(($a=str["$is_a?"]($scope.get("String")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){str=self.$fragment(str)}return self.fragments["$<<"](str)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12),$b).call($c)},TMP_13.$$arity=-1);Opal.defn(self,"$unshift",TMP_15=function $$unshift($a_rest){var $b,$c,TMP_14,self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return($b=($c=strs.$reverse()).$each,$b.$$p=(TMP_14=function(str){var self=TMP_14.$$s||this,$a;if(self.fragments==null)self.fragments=nil;if(str==null)str=nil;if(($a=str["$is_a?"]($scope.get("String")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){str=self.$fragment(str)}return self.fragments.$unshift(str)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$b).call($c)},TMP_15.$$arity=-1);Opal.defn(self,"$wrap",TMP_16=function $$wrap(pre,post){var self=this;self.$unshift(pre);return self.$push(post)},TMP_16.$$arity=2);Opal.defn(self,"$fragment",TMP_17=function $$fragment(str){var self=this;return $scope.get("Opal").$$scope.get("Fragment").$new(str,self.$scope(),self.sexp)},TMP_17.$$arity=1);Opal.defn(self,"$error",TMP_18=function $$error(msg){var self=this;return self.compiler.$error(msg)},TMP_18.$$arity=1);Opal.defn(self,"$scope",TMP_19=function $$scope(){var self=this;return self.compiler.$scope()},TMP_19.$$arity=0);Opal.defn(self,"$s",TMP_20=function $$s($a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return($b=self.compiler).$s.apply($b,Opal.to_a(args))},TMP_20.$$arity=-1);Opal.defn(self,"$expr?",TMP_21=function(){var self=this;return self.level["$=="]("expr")},TMP_21.$$arity=0);Opal.defn(self,"$recv?",TMP_22=function(){var self=this;return self.level["$=="]("recv")},TMP_22.$$arity=0);Opal.defn(self,"$stmt?",TMP_23=function(){var self=this;return self.level["$=="]("stmt")},TMP_23.$$arity=0);Opal.defn(self,"$process",TMP_24=function $$process(sexp,level){var self=this;if(level==null){level="expr"}return self.compiler.$process(sexp,level)},TMP_24.$$arity=-2);Opal.defn(self,"$expr",TMP_25=function $$expr(sexp){var self=this;return self.compiler.$process(sexp,"expr")},TMP_25.$$arity=1);Opal.defn(self,"$recv",TMP_26=function $$recv(sexp){var self=this;return self.compiler.$process(sexp,"recv")},TMP_26.$$arity=1);Opal.defn(self,"$stmt",TMP_27=function $$stmt(sexp){var self=this;return self.compiler.$process(sexp,"stmt")},TMP_27.$$arity=1);Opal.defn(self,"$expr_or_nil",TMP_28=function $$expr_or_nil(sexp){var self=this;if(sexp!==false&&sexp!==nil&&sexp!=null){return self.$expr(sexp)}else{return"nil"}},TMP_28.$$arity=1);Opal.defn(self,"$add_local",TMP_29=function $$add_local(name){var self=this;return self.$scope().$add_scope_local(name.$to_sym())},TMP_29.$$arity=1);Opal.defn(self,"$add_ivar",TMP_30=function $$add_ivar(name){var self=this;return self.$scope().$add_scope_ivar(name)},TMP_30.$$arity=1);Opal.defn(self,"$add_gvar",TMP_31=function $$add_gvar(name){var self=this;return self.$scope().$add_scope_gvar(name)},TMP_31.$$arity=1);Opal.defn(self,"$add_temp",TMP_32=function $$add_temp(temp){var self=this;return self.$scope().$add_scope_temp(temp)},TMP_32.$$arity=1);Opal.defn(self,"$helper",TMP_33=function $$helper(name){var self=this;return self.compiler.$helper(name)},TMP_33.$$arity=1);Opal.defn(self,"$with_temp",TMP_34=function $$with_temp(){var $a,$b,self=this,$iter=TMP_34.$$p,block=$iter||nil;TMP_34.$$p=null;return($a=($b=self.compiler).$with_temp,$a.$$p=block.$to_proc(),$a).call($b)},TMP_34.$$arity=0);Opal.defn(self,"$in_while?",TMP_35=function(){var self=this;return self.compiler["$in_while?"]()},TMP_35.$$arity=0);Opal.defn(self,"$while_loop",TMP_36=function $$while_loop(){var self=this;return self.compiler.$instance_variable_get("@while_loop")},TMP_36.$$arity=0);Opal.defn(self,"$has_rescue_else?",TMP_37=function(){var self=this;return self.$scope()["$has_rescue_else?"]()},TMP_37.$$arity=0);Opal.defn(self,"$in_ensure",TMP_38=function $$in_ensure(){var $a,$b,self=this,$iter=TMP_38.$$p,block=$iter||nil;TMP_38.$$p=null;return($a=($b=self.$scope()).$in_ensure,$a.$$p=block.$to_proc(),$a).call($b)},TMP_38.$$arity=0);return(Opal.defn(self,"$in_ensure?",TMP_39=function(){var self=this;return self.$scope()["$in_ensure?"]()},TMP_39.$$arity=0),nil)&&"in_ensure?"})($scope.base,null)})($scope.base)}($scope.base)};Opal.modules["opal/nodes/literal"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$gvars=Opal.gvars;Opal.add_stubs(["$require","$handle","$push","$to_s","$type","$children","$value","$recv?","$wrap","$join","$keys","$gsub","$even?","$length","$+","$chop","$[]","$translate_escape_chars","$inspect","$===","$new","$flags","$each_line","$==","$s","$source=","$line","$include","$stmt?","$!","$include?","$compile_split_lines","$needs_semicolon?","$each_with_index","$expr","$raise","$last","$each","$requires_semicolon","$helper","$start","$finish"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ValueNode(){}var self=$ValueNode=$klass($base,$super,"ValueNode",$ValueNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2;self.$handle("true","false","self","nil");Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this;return self.$push(self.$type().$to_s())},TMP_1.$$arity=0);return(Opal.defs(self,"$truthy_optimize?",TMP_2=function(){var self=this;return true},TMP_2.$$arity=0),nil)&&"truthy_optimize?"})($scope.base,$scope.get("Base"));(function($base,$super){function $NumericNode(){}var self=$NumericNode=$klass($base,$super,"NumericNode",$NumericNode);var def=self.$$proto,$scope=self.$$scope,TMP_3,TMP_4;self.$handle("int","float");self.$children("value");Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,self=this;self.$push(self.$value().$to_s());if(($a=self["$recv?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(",")")}else{return nil}},TMP_3.$$arity=0);return(Opal.defs(self,"$truthy_optimize?",TMP_4=function(){var self=this;return true},TMP_4.$$arity=0),nil)&&"truthy_optimize?"})($scope.base,$scope.get("Base"));(function($base,$super){function $StringNode(){}var self=$StringNode=$klass($base,$super,"StringNode",$StringNode);var def=self.$$proto,$scope=self.$$scope,TMP_6,TMP_7;self.$handle("str");self.$children("value");Opal.cdecl($scope,"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}));Opal.cdecl($scope,"ESCAPE_REGEX",new RegExp("(\\\\+)(["+$scope.get("ESCAPE_CHARS").$keys().$join("")+"])"));Opal.defn(self,"$translate_escape_chars",TMP_6=function $$translate_escape_chars(inspect_string){var $a,$b,TMP_5,self=this;return($a=($b=inspect_string).$gsub,$a.$$p=(TMP_5=function(original){var self=TMP_5.$$s||this,$c,$d;if(original==null)original=nil;if(($c=(($d=$gvars["~"])===nil?nil:$d["$[]"](1)).$length()["$even?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return original}else{return $rb_plus((($c=$gvars["~"])===nil?nil:$c["$[]"](1)).$chop(),$scope.get("ESCAPE_CHARS")["$[]"](($c=$gvars["~"])===nil?nil:$c["$[]"](2)))}},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5),$a).call($b,$scope.get("ESCAPE_REGEX"))},TMP_6.$$arity=1);return(Opal.defn(self,"$compile",TMP_7=function $$compile(){var self=this;return self.$push(self.$translate_escape_chars(self.$value().$inspect()))},TMP_7.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $SymbolNode(){}var self=$SymbolNode=$klass($base,$super,"SymbolNode",$SymbolNode);var def=self.$$proto,$scope=self.$$scope,TMP_8;self.$handle("sym");self.$children("value");return(Opal.defn(self,"$compile",TMP_8=function $$compile(){var self=this;return self.$push(self.$value().$to_s().$inspect())},TMP_8.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $RegexpNode(){}var self=$RegexpNode=$klass($base,$super,"RegexpNode",$RegexpNode);var def=self.$$proto,$scope=self.$$scope,TMP_9;self.$handle("regexp");self.$children("value","flags");return(Opal.defn(self,"$compile",TMP_9=function $$compile(){var self=this,$case=nil,message=nil;return function(){$case=self.$value();if(""["$==="]($case)){return self.$push("/(?:)/")}else if(/\?<\w+\>/["$==="]($case)){message="named captures are not supported in javascript: "+self.$value().$inspect();return self.$push("self.$raise(new SyntaxError('"+message+"'))")}else{return self.$push(""+$scope.get("Regexp").$new(self.$value()).$inspect()+self.$flags())}}()},TMP_9.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base){var $XStringLineSplitter,self=$XStringLineSplitter=$module($base,"XStringLineSplitter");var def=self.$$proto,$scope=self.$$scope,TMP_11;Opal.defn(self,"$compile_split_lines",TMP_11=function $$compile_split_lines(value,sexp){var $a,$b,TMP_10,self=this,idx=nil;idx=0;return($a=($b=value).$each_line,$a.$$p=(TMP_10=function(line){var self=TMP_10.$$s||this,$c,$d,line_sexp=nil,frag=nil;if(line==null)line=nil;if(idx["$=="](0)){self.$push(line)}else{line_sexp=self.$s();$c=[[$rb_plus(sexp.$line(),idx),0]],$d=line_sexp,$d["$source="].apply($d,$c),$c[$c.length-1];frag=$scope.get("Fragment").$new(line,line_sexp);self.$push(frag)}return idx=$rb_plus(idx,1)},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10),$a).call($b)},TMP_11.$$arity=2)})($scope.base);(function($base,$super){function $XStringNode(){}var self=$XStringNode=$klass($base,$super,"XStringNode",$XStringNode);var def=self.$$proto,$scope=self.$$scope,TMP_12,TMP_13,TMP_14;def.sexp=nil;self.$include($scope.get("XStringLineSplitter"));self.$handle("xstr");self.$children("value");Opal.defn(self,"$needs_semicolon?",TMP_12=function(){var $a,self=this;return $a=self["$stmt?"](),$a!==false&&$a!==nil&&$a!=null?self.$value().$to_s()["$include?"](";")["$!"]():$a},TMP_12.$$arity=0);Opal.defn(self,"$compile",TMP_13=function $$compile(){var $a,self=this;self.$compile_split_lines(self.$value().$to_s(),self.sexp);if(($a=self["$needs_semicolon?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(";")}if(($a=self["$recv?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(",")")}else{return nil}},TMP_13.$$arity=0);return(Opal.defn(self,"$start_line",TMP_14=function $$start_line(){var self=this;return self.sexp.$line()},TMP_14.$$arity=0),nil)&&"start_line"})($scope.base,$scope.get("Base"));(function($base,$super){function $DynamicStringNode(){}var self=$DynamicStringNode=$klass($base,$super,"DynamicStringNode",$DynamicStringNode);var def=self.$$proto,$scope=self.$$scope,TMP_16;self.$handle("dstr");return(Opal.defn(self,"$compile",TMP_16=function $$compile(){var $a,$b,TMP_15,self=this;return($a=($b=self.$children()).$each_with_index,$a.$$p=(TMP_15=function(part,idx){var self=TMP_15.$$s||this,$c;if(part==null)part=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" + ")}if(($c=$scope.get("String")["$==="](part))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$push(part.$inspect())}else if(part.$type()["$=="]("evstr")){self.$push("(");self.$push(function(){if(($c=part["$[]"](1))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.$expr(part["$[]"](1))}else{return'""'}return nil}());self.$push(")")}else if(part.$type()["$=="]("str")){self.$push(part["$[]"](1).$inspect())}else if(part.$type()["$=="]("dstr")){self.$push("(");self.$push(self.$expr(part));self.$push(")")}else{self.$raise("Bad dstr part "+part.$inspect())}if(($c=self["$recv?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.$wrap("(",")")}else{return nil}},TMP_15.$$s=self,TMP_15.$$arity=2,TMP_15),$a).call($b)},TMP_16.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $DynamicSymbolNode(){}var self=$DynamicSymbolNode=$klass($base,$super,"DynamicSymbolNode",$DynamicSymbolNode);var def=self.$$proto,$scope=self.$$scope,TMP_18;self.$handle("dsym");return(Opal.defn(self,"$compile",TMP_18=function $$compile(){var $a,$b,TMP_17,self=this;($a=($b=self.$children()).$each_with_index,$a.$$p=(TMP_17=function(part,idx){var self=TMP_17.$$s||this,$c;if(part==null)part=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" + ")}if(($c=$scope.get("String")["$==="](part))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.$push(part.$inspect())}else if(part.$type()["$=="]("evstr")){return self.$push(self.$expr(self.$s("call",part.$last(),"to_s",self.$s("arglist"))))}else if(part.$type()["$=="]("str")){return self.$push(part.$last().$inspect())}else{return self.$raise("Bad dsym part")}},TMP_17.$$s=self,TMP_17.$$arity=2,TMP_17),$a).call($b);return self.$wrap("(",")")},TMP_18.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $DynamicXStringNode(){}var self=$DynamicXStringNode=$klass($base,$super,"DynamicXStringNode",$DynamicXStringNode);var def=self.$$proto,$scope=self.$$scope,TMP_19,TMP_21;self.$include($scope.get("XStringLineSplitter"));self.$handle("dxstr");Opal.defn(self,"$requires_semicolon",TMP_19=function $$requires_semicolon(code){var $a,self=this;return $a=self["$stmt?"](),$a!==false&&$a!==nil&&$a!=null?code["$include?"](";")["$!"]():$a},TMP_19.$$arity=1);return(Opal.defn(self,"$compile",TMP_21=function $$compile(){var $a,$b,TMP_20,self=this,needs_semicolon=nil;needs_semicolon=false;($a=($b=self.$children()).$each,$a.$$p=(TMP_20=function(part){var self=TMP_20.$$s||this,$c;if(self.sexp==null)self.sexp=nil;if(part==null)part=nil;if(($c=$scope.get("String")["$==="](part))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$compile_split_lines(part.$to_s(),self.sexp);if(($c=self.$requires_semicolon(part.$to_s()))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return needs_semicolon=true}else{return nil}}else if(part.$type()["$=="]("evstr")){return self.$push(self.$expr(part["$[]"](1)))}else if(part.$type()["$=="]("str")){self.$compile_split_lines(part.$last().$to_s(),part);if(($c=self.$requires_semicolon(part.$last().$to_s()))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return needs_semicolon=true}else{return nil}}else{return self.$raise("Bad dxstr part")}},TMP_20.$$s=self,TMP_20.$$arity=1,TMP_20),$a).call($b);if(needs_semicolon!==false&&needs_semicolon!==nil&&needs_semicolon!=null){self.$push(";")}if(($a=self["$recv?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(",")")}else{return nil}},TMP_21.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $DynamicRegexpNode(){}var self=$DynamicRegexpNode=$klass($base,$super,"DynamicRegexpNode",$DynamicRegexpNode);var def=self.$$proto,$scope=self.$$scope,TMP_23;self.$handle("dregx");return(Opal.defn(self,"$compile",TMP_23=function $$compile(){var $a,$b,TMP_22,self=this;($a=($b=self.$children()).$each_with_index,$a.$$p=(TMP_22=function(part,idx){var self=TMP_22.$$s||this,$c;if(part==null)part=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" + ")}if(($c=$scope.get("String")["$==="](part))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.$push(part.$inspect())}else if(part.$type()["$=="]("str")){return self.$push(part["$[]"](1).$inspect())}else{return self.$push(self.$expr(part["$[]"](1)))}},TMP_22.$$s=self,TMP_22.$$arity=2,TMP_22),$a).call($b);return self.$wrap("(new RegExp(","))")},TMP_23.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $InclusiveRangeNode(){}var self=$InclusiveRangeNode=$klass($base,$super,"InclusiveRangeNode",$InclusiveRangeNode);var def=self.$$proto,$scope=self.$$scope,TMP_24;self.$handle("irange");self.$children("start","finish");return(Opal.defn(self,"$compile",TMP_24=function $$compile(){var self=this;self.$helper("range");return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", false)")},TMP_24.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ExclusiveRangeNode(){}var self=$ExclusiveRangeNode=$klass($base,$super,"ExclusiveRangeNode",$ExclusiveRangeNode);var def=self.$$proto,$scope=self.$$scope,TMP_25;self.$handle("erange");self.$children("start","finish");return(Opal.defn(self,"$compile",TMP_25=function $$compile(){var self=this;self.$helper("range");return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", true)")},TMP_25.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$irb?","$compiler","$top?","$scope","$using_irb?","$push","$variable","$to_s","$var_name","$with_temp","$property","$wrap","$add_local","$expr","$value","$recv?","$[]","$name","$ivar","$add_ivar","$helper","$==","$handle_global_match","$handle_post_match","$handle_pre_match","$add_gvar","$index"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $LocalVariableNode(){}var self=$LocalVariableNode=$klass($base,$super,"LocalVariableNode",$LocalVariableNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3;self.$handle("lvar");self.$children("var_name");Opal.defn(self,"$using_irb?",TMP_1=function(){var $a,self=this;return $a=self.$compiler()["$irb?"](),$a!==false&&$a!==nil&&$a!=null?self.$scope()["$top?"]():$a},TMP_1.$$arity=0);return(Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,$b,TMP_2,self=this;if(($a=self["$using_irb?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return self.$push(self.$variable(self.$var_name().$to_s()))}return($a=($b=self).$with_temp,$a.$$p=(TMP_2=function(tmp){var self=TMP_2.$$s||this;if(tmp==null)tmp=nil;self.$push(self.$property(self.$var_name().$to_s()));return self.$wrap("(("+tmp+" = Opal.irb_vars",") == null ? nil : "+tmp+")")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b)},TMP_3.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $LocalAssignNode(){}var self=$LocalAssignNode=$klass($base,$super,"LocalAssignNode",$LocalAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_4,TMP_5;self.$handle("lasgn");self.$children("var_name","value");Opal.defn(self,"$using_irb?",TMP_4=function(){var $a,self=this;return $a=self.$compiler()["$irb?"](),$a!==false&&$a!==nil&&$a!=null?self.$scope()["$top?"]():$a},TMP_4.$$arity=0);return(Opal.defn(self,"$compile",TMP_5=function $$compile(){var $a,self=this;if(($a=self["$using_irb?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push("Opal.irb_vars"+self.$property(self.$var_name().$to_s())+" = ")}else{self.$add_local(self.$variable(self.$var_name().$to_s()));self.$push(""+self.$variable(self.$var_name().$to_s())+" = ")}self.$push(self.$expr(self.$value()));if(($a=self["$recv?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(",")")}else{return nil}},TMP_5.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $InstanceVariableNode(){}var self=$InstanceVariableNode=$klass($base,$super,"InstanceVariableNode",$InstanceVariableNode);var def=self.$$proto,$scope=self.$$scope,TMP_6,TMP_7;self.$handle("ivar");self.$children("name");Opal.defn(self,"$var_name",TMP_6=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_6.$$arity=0);return(Opal.defn(self,"$compile",TMP_7=function $$compile(){var self=this,name=nil;name=self.$property(self.$ivar(self.$var_name()));self.$add_ivar(name);return self.$push("self"+name)},TMP_7.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $InstanceAssignNode(){}var self=$InstanceAssignNode=$klass($base,$super,"InstanceAssignNode",$InstanceAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_8,TMP_9;self.$handle("iasgn");self.$children("name","value");Opal.defn(self,"$var_name",TMP_8=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_8.$$arity=0);return(Opal.defn(self,"$compile",TMP_9=function $$compile(){var self=this,name=nil;name=self.$property(self.$ivar(self.$var_name()));self.$push("self"+name+" = ");return self.$push(self.$expr(self.$value()))},TMP_9.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $GlobalVariableNode(){}var self=$GlobalVariableNode=$klass($base,$super,"GlobalVariableNode",$GlobalVariableNode);var def=self.$$proto,$scope=self.$$scope,TMP_10,TMP_11,TMP_13,TMP_15,TMP_17;self.$handle("gvar");self.$children("name");Opal.defn(self,"$var_name",TMP_10=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_10.$$arity=0);Opal.defn(self,"$compile",TMP_11=function $$compile(){var self=this,name=nil;self.$helper("gvars");if(self.$var_name()["$=="]("&")){return self.$handle_global_match()}else if(self.$var_name()["$=="]("'")){return self.$handle_post_match()}else if(self.$var_name()["$=="]("`")){return self.$handle_pre_match()}name=self.$property(self.$var_name());self.$add_gvar(name);return self.$push("$gvars"+name)},TMP_11.$$arity=0);Opal.defn(self,"$handle_global_match",TMP_13=function $$handle_global_match(){var $a,$b,TMP_12,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_12=function(tmp){var self=TMP_12.$$s||this;if(tmp==null)tmp=nil;return self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12),$a).call($b)},TMP_13.$$arity=0);Opal.defn(self,"$handle_pre_match",TMP_15=function $$handle_pre_match(){var $a,$b,TMP_14,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_14=function(tmp){var self=TMP_14.$$s||this;if(tmp==null)tmp=nil;return self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$a).call($b)},TMP_15.$$arity=0);return(Opal.defn(self,"$handle_post_match",TMP_17=function $$handle_post_match(){var $a,$b,TMP_16,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_16=function(tmp){var self=TMP_16.$$s||this;if(tmp==null)tmp=nil;return self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16),$a).call($b)},TMP_17.$$arity=0),nil)&&"handle_post_match"})($scope.base,$scope.get("Base"));(function($base,$super){function $GlobalAssignNode(){}var self=$GlobalAssignNode=$klass($base,$super,"GlobalAssignNode",$GlobalAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_18,TMP_19;self.$handle("gasgn");self.$children("name","value");Opal.defn(self,"$var_name",TMP_18=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_18.$$arity=0);return(Opal.defn(self,"$compile",TMP_19=function $$compile(){var self=this,name=nil;self.$helper("gvars");name=self.$property(self.$var_name());self.$push("$gvars"+name+" = ");return self.$push(self.$expr(self.$value()))},TMP_19.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $BackrefNode(){}var self=$BackrefNode=$klass($base,$super,"BackrefNode",$BackrefNode);var def=self.$$proto,$scope=self.$$scope,TMP_21;self.$handle("nth_ref");self.$children("index");return(Opal.defn(self,"$compile",TMP_21=function $$compile(){var $a,$b,TMP_20,self=this;self.$helper("gvars");return($a=($b=self).$with_temp,$a.$$p=(TMP_20=function(tmp){var self=TMP_20.$$s||this;if(tmp==null)tmp=nil;return self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")},TMP_20.$$s=self,TMP_20.$$arity=1,TMP_20),$a).call($b)},TMP_21.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ClassVariableNode(){}var self=$ClassVariableNode=$klass($base,$super,"ClassVariableNode",$ClassVariableNode);var def=self.$$proto,$scope=self.$$scope,TMP_23;self.$handle("cvar");self.$children("name");return(Opal.defn(self,"$compile",TMP_23=function $$compile(){var $a,$b,TMP_22,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_22=function(tmp){var self=TMP_22.$$s||this;if(tmp==null)tmp=nil;return self.$push("(("+tmp+" = Opal.cvars['"+self.$name()+"']) == null ? nil : "+tmp+")")},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22),$a).call($b)},TMP_23.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ClassVarAssignNode(){}var self=$ClassVarAssignNode=$klass($base,$super,"ClassVarAssignNode",$ClassVarAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_24;self.$handle("casgn");self.$children("name","value");return(Opal.defn(self,"$compile",TMP_24=function $$compile(){var self=this;self.$push("(Opal.cvars['"+self.$name()+"'] = ");self.$push(self.$expr(self.$value()));return self.$push(")")},TMP_24.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ClassVarDeclNode(){}var self=$ClassVarDeclNode=$klass($base,$super,"ClassVarDeclNode",$ClassVarDeclNode);var def=self.$$proto,$scope=self.$$scope,TMP_25;self.$handle("cvdecl");self.$children("name","value");return(Opal.defn(self,"$compile",TMP_25=function $$compile(){var self=this;self.$push("(Opal.cvars['"+self.$name()+"'] = ");self.$push(self.$expr(self.$value()));return self.$push(")")},TMP_25.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$==","$name","$eof_content","$compiler","$push","$expr","$base","$wrap","$value"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ConstNode(){}var self=$ConstNode=$klass($base,$super,"ConstNode",$ConstNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;self.$handle("const");self.$children("name");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var $a,$b,self=this;if(($a=($b=self.$name()["$=="]("DATA"))?self.$compiler().$eof_content():self.$name()["$=="]("DATA"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("$__END__")}else{return self.$push("$scope.get('"+self.$name()+"')")}},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ConstDeclarationNode(){}var self=$ConstDeclarationNode=$klass($base,$super,"ConstDeclarationNode",$ConstDeclarationNode);var def=self.$$proto,$scope=self.$$scope,TMP_2;self.$handle("cdecl");self.$children("name","base");return(Opal.defn(self,"$compile",TMP_2=function $$compile(){var self=this;self.$push(self.$expr(self.$base()));return self.$wrap("Opal.cdecl($scope, '"+self.$name()+"', ",")")},TMP_2.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ConstAssignNode(){}var self=$ConstAssignNode=$klass($base,$super,"ConstAssignNode",$ConstAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_3;self.$handle("casgn");self.$children("base","name","value");return(Opal.defn(self,"$compile",TMP_3=function $$compile(){var self=this;self.$push("Opal.casgn(");self.$push(self.$expr(self.$base()));self.$push(", '"+self.$name()+"', ");self.$push(self.$expr(self.$value()));return self.$push(")")},TMP_3.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ConstGetNode(){}var self=$ConstGetNode=$klass($base,$super,"ConstGetNode",$ConstGetNode);var def=self.$$proto,$scope=self.$$scope,TMP_4;self.$handle("colon2");self.$children("base","name");return(Opal.defn(self,"$compile",TMP_4=function $$compile(){var self=this;self.$push("((");self.$push(self.$expr(self.$base()));return self.$push(").$$scope.get('"+self.$name()+"'))")},TMP_4.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $TopConstNode(){}var self=$TopConstNode=$klass($base,$super,"TopConstNode",$TopConstNode);var def=self.$$proto,$scope=self.$$scope,TMP_5;self.$handle("colon3");self.$children("name");return(Opal.defn(self,"$compile",TMP_5=function $$compile(){var self=this;return self.$push("Opal.get('"+self.$name()+"')")},TMP_5.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $TopConstAssignNode(){}var self=$TopConstAssignNode=$klass($base,$super,"TopConstAssignNode",$TopConstAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_6;self.$handle("casgn3");self.$children("name","value");return(Opal.defn(self,"$compile",TMP_6=function $$compile(){var self=this;self.$push("Opal.casgn(Opal.Object, '"+self.$name()+"', ");self.$push(self.$expr(self.$value()));return self.$push(")")},TMP_6.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["pathname"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$range=Opal.range,$module=Opal.module;Opal.add_stubs(["$require","$include","$quote","$===","$to_s","$path","$respond_to?","$to_path","$is_a?","$nil?","$raise","$class","$==","$attr_reader","$!","$relative?","$chop_basename","$basename","$=~","$new","$source","$[]","$rindex","$sub","$absolute?","$expand_path","$plus","$unshift","$length","$!=","$empty?","$first","$shift","$+","$join","$dirname","$pop","$reverse_each","$directory?","$extname","$<=>","$nonzero?","$proc","$casecmp","$cleanpath","$inspect","$include?","$fill","$map","$entries"]);self.$require("corelib/comparable");(function($base,$super){function $Pathname(){}var self=$Pathname=$klass($base,$super,"Pathname",$Pathname);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,$a,$b,TMP_23,$c,TMP_24,TMP_25,TMP_27;def.path=nil;self.$include($scope.get("Comparable"));Opal.cdecl($scope,"SEPARATOR_PAT",new RegExp(""+$scope.get("Regexp").$quote($scope.get("File").$$scope.get("SEPARATOR"))));Opal.defn(self,"$initialize",TMP_1=function $$initialize(path){var $a,self=this;if(($a=$scope.get("Pathname")["$==="](path))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.path=path.$path().$to_s()}else if(($a=path["$respond_to?"]("to_path"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.path=path.$to_path()}else if(($a=path["$is_a?"]($scope.get("String")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.path=path}else if(($a=path["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("TypeError"),"no implicit conversion of nil into String")}else{self.$raise($scope.get("TypeError"),"no implicit conversion of "+path.$class()+" into String")}if(self.path["$=="]("\0")){return self.$raise($scope.get("ArgumentError"))}else{return nil}},TMP_1.$$arity=1);self.$attr_reader("path");Opal.defn(self,"$==",TMP_2=function(other){var self=this;return other.$path()["$=="](self.path)},TMP_2.$$arity=1);Opal.defn(self,"$absolute?",TMP_3=function(){var self=this;return self["$relative?"]()["$!"]()},TMP_3.$$arity=0);Opal.defn(self,"$relative?",TMP_4=function(){var $a,$b,$c,self=this,path=nil,r=nil;path=self.path;while(($b=r=self.$chop_basename(path))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$c=r,$b=Opal.to_ary($c),path=$b[0]==null?nil:$b[0],$c}return path["$=="]("")},TMP_4.$$arity=0);Opal.defn(self,"$chop_basename",TMP_5=function $$chop_basename(path){var $a,self=this,base=nil;base=$scope.get("File").$basename(path);if(($a=$scope.get("Regexp").$new("^"+$scope.get("Pathname").$$scope.get("SEPARATOR_PAT").$source()+"?$")["$=~"](base))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return[path["$[]"](0,path.$rindex(base)),base]}},TMP_5.$$arity=1);Opal.defn(self,"$root?",TMP_6=function(){var self=this;return self.path["$=="]("/")},TMP_6.$$arity=0);Opal.defn(self,"$parent",TMP_7=function $$parent(){var $a,self=this,new_path=nil;new_path=self.path.$sub(/\/([^\/]+\/?$)/,"");if(new_path["$=="]("")){new_path=function(){if(($a=self["$absolute?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"/"}else{return"."}return nil}()}return $scope.get("Pathname").$new(new_path)},TMP_7.$$arity=0);Opal.defn(self,"$sub",TMP_8=function $$sub($a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $scope.get("Pathname").$new(($b=self.path).$sub.apply($b,Opal.to_a(args)))},TMP_8.$$arity=-1);Opal.defn(self,"$cleanpath",TMP_9=function $$cleanpath(){var self=this;return Opal.normalize(self.path)},TMP_9.$$arity=0);Opal.defn(self,"$to_path",TMP_10=function $$to_path(){var self=this;return self.path},TMP_10.$$arity=0);Opal.defn(self,"$hash",TMP_11=function $$hash(){var self=this;return self.path},TMP_11.$$arity=0);Opal.defn(self,"$expand_path",TMP_12=function $$expand_path(){var self=this;return $scope.get("File").$expand_path(self.path)},TMP_12.$$arity=0);Opal.defn(self,"$+",TMP_13=function(other){var $a,self=this;if(($a=$scope.get("Pathname")["$==="](other))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{other=$scope.get("Pathname").$new(other)}return $scope.get("Pathname").$new(self.$plus(self.path,other.$to_s()))},TMP_13.$$arity=1);Opal.defn(self,"$plus",TMP_14=function $$plus(path1,path2){var $a,$b,$c,$d,self=this,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,r1=nil,basename1=nil,suffix2=nil;prefix2=path2;index_list2=[];basename_list2=[];while(($b=r2=self.$chop_basename(prefix2))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$c=r2,$b=Opal.to_ary($c),prefix2=$b[0]==null?nil:$b[0],basename2=$b[1]==null?nil:$b[1],$c;index_list2.$unshift(prefix2.$length());basename_list2.$unshift(basename2)}if(($a=prefix2["$!="](""))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return path2}prefix1=path1;while(($b=true)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){while(($c=($d=basename_list2["$empty?"]()["$!"](),$d!==false&&$d!==nil&&$d!=null?basename_list2.$first()["$=="]("."):$d))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){index_list2.$shift();basename_list2.$shift()}if(($b=r1=self.$chop_basename(prefix1))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{break}$c=r1,$b=Opal.to_ary($c),prefix1=$b[0]==null?nil:$b[0],basename1=$b[1]==null?nil:$b[1],$c;if(basename1["$=="](".")){continue}if(($b=($c=($d=basename1["$=="](".."))!==false&&$d!==nil&&$d!=null?$d:basename_list2["$empty?"]())!==false&&$c!==nil&&$c!=null?$c:basename_list2.$first()["$!="](".."))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift();basename_list2.$shift()}r1=self.$chop_basename(prefix1);if(($a=($b=r1["$!"](),$b!==false&&$b!==nil&&$b!=null?new RegExp(""+$scope.get("SEPARATOR_PAT"))["$=~"]($scope.get("File").$basename(prefix1)):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){while(($b=($c=basename_list2["$empty?"]()["$!"](),$c!==false&&$c!==nil&&$c!=null?basename_list2.$first()["$=="](".."):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){index_list2.$shift();basename_list2.$shift()}}if(($a=basename_list2["$empty?"]()["$!"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){suffix2=path2["$[]"]($range(index_list2.$first(),-1,false));if(r1!==false&&r1!==nil&&r1!=null){return $scope.get("File").$join(prefix1,suffix2)}else{return $rb_plus(prefix1,suffix2)}}else if(r1!==false&&r1!==nil&&r1!=null){return prefix1}else{return $scope.get("File").$dirname(prefix1)}},TMP_14.$$arity=2);Opal.defn(self,"$join",TMP_16=function $$join($a_rest){try{var $b,$c,TMP_15,self=this,args,result=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(($b=args["$empty?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self}result=args.$pop();if(($b=$scope.get("Pathname")["$==="](result))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{result=$scope.get("Pathname").$new(result)}if(($b=result["$absolute?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return result}($b=($c=args).$reverse_each,$b.$$p=(TMP_15=function(arg){var self=TMP_15.$$s||this,$a;if(arg==null)arg=nil;if(($a=$scope.get("Pathname")["$==="](arg))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{arg=$scope.get("Pathname").$new(arg)}result=$rb_plus(arg,result);if(($a=result["$absolute?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){Opal.ret(result)}else{return nil}},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15),$b).call($c);return $rb_plus(self,result)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_16.$$arity=-1);Opal.defn(self,"$split",TMP_17=function $$split(){var self=this;return[self.$dirname(),self.$basename()]},TMP_17.$$arity=0);Opal.defn(self,"$dirname",TMP_18=function $$dirname(){var self=this;return $scope.get("Pathname").$new($scope.get("File").$dirname(self.path))},TMP_18.$$arity=0);Opal.defn(self,"$basename",TMP_19=function $$basename(){var self=this;return $scope.get("Pathname").$new($scope.get("File").$basename(self.path))},TMP_19.$$arity=0);Opal.defn(self,"$directory?",TMP_20=function(){var self=this;return $scope.get("File")["$directory?"](self.path)},TMP_20.$$arity=0);Opal.defn(self,"$extname",TMP_21=function $$extname(){var self=this;return $scope.get("File").$extname(self.path)},TMP_21.$$arity=0);Opal.defn(self,"$<=>",TMP_22=function(other){var self=this;return self.$path()["$<=>"](other.$path())},TMP_22.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.alias(self,"to_str","to_path");Opal.alias(self,"to_s","to_path");Opal.cdecl($scope,"SAME_PATHS",function(){if(($a=$scope.get("File").$$scope.get("FNM_SYSCASE")["$nonzero?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=self).$proc,$a.$$p=(TMP_23=function(a,b){var self=TMP_23.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a.$casecmp(b)["$=="](0)},TMP_23.$$s=self,TMP_23.$$arity=2,TMP_23),$a).call($b)}else{return($a=($c=self).$proc,$a.$$p=(TMP_24=function(a,b){var self=TMP_24.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$=="](b)},TMP_24.$$s=self,TMP_24.$$arity=2,TMP_24),$a).call($c)}return nil}());Opal.defn(self,"$relative_path_from",TMP_25=function $$relative_path_from(base_directory){var $a,$b,$c,$d,self=this,dest_directory=nil,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,relpath_names=nil;dest_directory=self.$cleanpath().$to_s();base_directory=base_directory.$cleanpath().$to_s();dest_prefix=dest_directory;dest_names=[];while(($b=r=self.$chop_basename(dest_prefix))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$c=r,$b=Opal.to_ary($c),dest_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if(($b=basename["$!="]("."))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){dest_names.$unshift(basename)}}base_prefix=base_directory;base_names=[];while(($b=r=self.$chop_basename(base_prefix))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){$c=r,$b=Opal.to_ary($c),base_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if(($b=basename["$!="]("."))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){base_names.$unshift(basename)}}if(($a=$scope.get("SAME_PATHS")["$[]"](dest_prefix,base_prefix))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect())}while(($b=($c=($d=dest_names["$empty?"]()["$!"](),$d!==false&&$d!==nil&&$d!=null?base_names["$empty?"]()["$!"]():$d),$c!==false&&$c!==nil&&$c!=null?$scope.get("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){dest_names.$shift();base_names.$shift()}if(($a=base_names["$include?"](".."))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"base_directory has ..: "+base_directory.$inspect())}base_names.$fill("..");relpath_names=$rb_plus(base_names,dest_names);if(($a=relpath_names["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $scope.get("Pathname").$new(".")}else{return $scope.get("Pathname").$new(($a=$scope.get("File")).$join.apply($a,Opal.to_a(relpath_names)))}},TMP_25.$$arity=1);return(Opal.defn(self,"$entries",TMP_27=function $$entries(){var $a,$b,TMP_26,self=this;return($a=($b=$scope.get("Dir").$entries(self.path)).$map,$a.$$p=(TMP_26=function(f){var self=TMP_26.$$s||this;if(f==null)f=nil;return self.$class().$new(f)},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26),$a).call($b)},TMP_27.$$arity=0),nil)&&"entries"})($scope.base,null);return function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_28;Opal.defn(self,"$Pathname",TMP_28=function $$Pathname(path){var self=this;return $scope.get("Pathname").$new(path)},TMP_28.$$arity=1)}($scope.base)};Opal.modules["opal/nodes/runtime_helpers"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$new","$children","$==","$include?","$to_sym","$<<","$define_method","$to_proc","$meth","$__send__","$raise","$helper","$[]","$arglist","$js_truthy","$js_falsy"]);self.$require("set");self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $RuntimeHelpers(){}var self=$RuntimeHelpers=$klass($base,$super,"RuntimeHelpers",$RuntimeHelpers);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,$a,$b,TMP_4,$c,TMP_5;Opal.cdecl($scope,"HELPERS",$scope.get("Set").$new());self.$children("recvr","meth","arglist");Opal.defs(self,"$compatible?",TMP_1=function(recvr,meth,arglist){var $a,self=this;return($a=recvr["$=="](["const","Opal"]))?$scope.get("HELPERS")["$include?"](meth.$to_sym()):recvr["$=="](["const","Opal"])},TMP_1.$$arity=3);Opal.defs(self,"$helper",TMP_2=function $$helper(name){var $a,$b,self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;$scope.get("HELPERS")["$<<"](name);return($a=($b=self).$define_method,$a.$$p=block.$to_proc(),$a).call($b,"compile_"+name)},TMP_2.$$arity=1);Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,self=this;if(($a=$scope.get("HELPERS")["$include?"](self.$meth().$to_sym()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$__send__("compile_"+self.$meth())}else{return self.$raise("Helper not supported: "+self.$meth())}},TMP_3.$$arity=0);($a=($b=self).$helper,$a.$$p=(TMP_4=function(){var self=TMP_4.$$s||this,$c,sexp=nil;if(($c=sexp=self.$arglist()["$[]"](1))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{self.$raise("truthy? requires an object")}return self.$js_truthy(sexp)},TMP_4.$$s=self,TMP_4.$$arity=0,TMP_4),$a).call($b,"truthy?");return($a=($c=self).$helper,$a.$$p=(TMP_5=function(){var self=TMP_5.$$s||this,$d,sexp=nil;if(($d=sexp=self.$arglist()["$[]"](1))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){}else{self.$raise("falsy? requires an object")}return self.$js_falsy(sexp)},TMP_5.$$s=self,TMP_5.$$arity=0,TMP_5),$a).call($c,"falsy?")})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/call"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$[]=","$define_method","$to_proc","$handle_special","$compile_default?","$record_method?","$<<","$method_calls","$compiler","$to_sym","$meth","$using_irb?","$compile_irb_var","$default_compile","$private","$block_being_passed","$new_temp","$scope","$splat?","$has_break?","$expr","$add_method","$add_block","$add_invocation","$unshift","$line","$queue_temp","$!=","$receiver_fragment","$arguments_fragment","$redefine_this?","$arguments_array?","$push","$apply_call_target","$any?","$method_jsid","$==","$first","$arguments_without_block","$recvr","$s","$recv","$recv_sexp","$arguments_sexp","$[]","$arglist","$===","$last","$type","$pop","$iter","$mid_to_jsid","$to_s","$=~","$with_temp","$variable","$intern","$+","$irb?","$top?","$nil?","$include?","$__send__","$compatible?","$compile","$new","$each","$add_special","$inline_operators?","$operator_helpers","$fragment","$compile_default!","$resolve","$requires","$file","$dirname","$cleanpath","$join","$Pathname","$inspect","$process","$class_scope?","$required_trees","$handle_block_given_call","$def?","$mid","$arity_check?","$handle_part","$map","$expand_path","$split","$dynamic_require_severity","$error","$warning","$inject"]);self.$require("set");self.$require("pathname");self.$require("opal/nodes/base");self.$require("opal/nodes/runtime_helpers");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $CallNode(){}var self=$CallNode=$klass($base,$super,"CallNode",$CallNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_23,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,$a,$b,TMP_31,$c,TMP_33,$d,TMP_34,$e,TMP_35,$f,TMP_36,$g,TMP_37,$h,TMP_38,$i,TMP_39,$j,TMP_40,$k,TMP_41;def.arguments_without_block=def.block_being_passed=def.assignment=def.compiler=def.sexp=def.level=def.compile_default=nil;self.$handle("call");self.$children("recvr","meth","arglist","iter");Opal.cdecl($scope,"SPECIALS",$hash2([],{}));Opal.cdecl($scope,"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}));Opal.defs(self,"$add_special",TMP_1=function $$add_special(name,options){var $a,$b,self=this,$iter=TMP_1.$$p,handler=$iter||nil;if(options==null){options=$hash2([],{})}TMP_1.$$p=null;$scope.get("SPECIALS")["$[]="](name,options);return($a=($b=self).$define_method,$a.$$p=handler.$to_proc(),$a).call($b,"handle_"+name)},TMP_1.$$arity=-2);Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,self=this;self.$handle_special();if(($a=self["$compile_default?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return nil}if(($a=self["$record_method?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym())}if(($a=self["$using_irb?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compile_irb_var()}return self.$default_compile()},TMP_2.$$arity=0);self.$private();Opal.defn(self,"$default_compile",TMP_4=function $$default_compile(){var $a,$b,TMP_3,self=this,block_temp=nil,temporary_receiver=nil,has_break=nil;if(($a=self.$block_being_passed())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block_temp=self.$scope().$new_temp()}if(($a=($b=self["$splat?"]())!==false&&$b!==nil&&$b!=null?$b:block_temp)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){temporary_receiver=self.$scope().$new_temp()}if(($a=self.$block_being_passed())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){has_break=($a=($b=self.$compiler())["$has_break?"],$a.$$p=(TMP_3=function(){var self=TMP_3.$$s||this;if(self.block_being_passed==null)self.block_being_passed=nil;return self.block_being_passed=self.$expr(self.block_being_passed)},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3),$a).call($b)}self.$add_method(temporary_receiver);if(block_temp!==false&&block_temp!==nil&&block_temp!=null){self.$add_block(block_temp)}self.$add_invocation(temporary_receiver);if(has_break!==false&&has_break!==nil&&has_break!=null){self.$unshift("return ");self.$unshift("(function(){var $brk = Opal.new_brk(); try {");self.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")}if(block_temp!==false&&block_temp!==nil&&block_temp!=null){return self.$scope().$queue_temp(block_temp)}else{return nil}},TMP_4.$$arity=0);Opal.defn(self,"$redefine_this?",TMP_5=function(temporary_receiver){var self=this;return temporary_receiver["$!="](nil)},TMP_5.$$arity=1);Opal.defn(self,"$apply_call_target",TMP_6=function $$apply_call_target(temporary_receiver){var $a,self=this;return($a=temporary_receiver)!==false&&$a!==nil&&$a!=null?$a:self.$receiver_fragment()},TMP_6.$$arity=1);Opal.defn(self,"$arguments_array?",TMP_7=function(){var self=this;return self["$splat?"]()},TMP_7.$$arity=0);Opal.defn(self,"$add_invocation",TMP_8=function $$add_invocation(temporary_receiver){var $a,$b,self=this,args=nil;args=self.$arguments_fragment();if(($a=($b=self["$redefine_this?"](temporary_receiver))!==false&&$b!==nil&&$b!=null?$b:self["$arguments_array?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=self["$arguments_array?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(".apply(")}else{self.$push(".call(")}self.$push(self.$apply_call_target(temporary_receiver));if(($a=args["$any?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(", ",args)}return self.$push(")")}else{return self.$push("(",args,")")}},TMP_8.$$arity=1);Opal.defn(self,"$add_method",TMP_9=function $$add_method(temporary_receiver){var self=this;if(temporary_receiver!==false&&temporary_receiver!==nil&&temporary_receiver!=null){return self.$push("("+temporary_receiver+" = ",self.$receiver_fragment(),")"+self.$method_jsid())}else{return self.$push(self.$receiver_fragment(),self.$method_jsid())}},TMP_9.$$arity=1);Opal.defn(self,"$add_block",TMP_10=function $$add_block(block_temp){var self=this;self.$unshift("("+block_temp+" = ");return self.$push(", "+block_temp+".$$p = ",self.$block_being_passed(),", "+block_temp+")")},TMP_10.$$arity=1);Opal.defn(self,"$splat?",TMP_12=function(){var $a,$b,TMP_11,self=this;return($a=($b=self.$arguments_without_block())["$any?"],$a.$$p=(TMP_11=function(a){var self=TMP_11.$$s||this;if(a==null)a=nil;return a.$first()["$=="]("splat")},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11),$a).call($b)},TMP_12.$$arity=0);Opal.defn(self,"$recv_sexp",TMP_13=function $$recv_sexp(){var $a,self=this;return($a=self.$recvr())!==false&&$a!==nil&&$a!=null?$a:self.$s("self")},TMP_13.$$arity=0);Opal.defn(self,"$receiver_fragment",TMP_14=function $$receiver_fragment(){var self=this;return self.$recv(self.$recv_sexp())},TMP_14.$$arity=0);Opal.defn(self,"$arguments_fragment",TMP_15=function $$arguments_fragment(){var self=this;return self.$expr(self.$arguments_sexp())},TMP_15.$$arity=0);Opal.defn(self,"$arguments_sexp",TMP_16=function $$arguments_sexp(){var $a,self=this,only_args=nil;only_args=self.$arguments_without_block();return($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(only_args)))},TMP_16.$$arity=0);Opal.defn(self,"$arguments_without_block",TMP_17=function $$arguments_without_block(){var $a,self=this;return($a=self.arguments_without_block)!==false&&$a!==nil&&$a!=null?$a:self.arguments_without_block=self.$arglist()["$[]"]($range(1,-1,false))},TMP_17.$$arity=0);Opal.defn(self,"$block_being_passed",TMP_18=function $$block_being_passed(){var $a,$b,$c,self=this,args=nil;return($a=self.block_being_passed)!==false&&$a!==nil&&$a!=null?$a:self.block_being_passed=function(){args=self.$arguments_without_block();if(($b=($c=$scope.get("Sexp")["$==="](args.$last()),$c!==false&&$c!==nil&&$c!=null?args.$last().$type()["$=="]("block_pass"):$c))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return args.$pop()}else{return self.$iter()}}()},TMP_18.$$arity=0);Opal.defn(self,"$method_jsid",TMP_19=function $$method_jsid(){var self=this;return self.$mid_to_jsid(self.$meth().$to_s())},TMP_19.$$arity=0);Opal.defn(self,"$record_method?",TMP_20=function(){var self=this;return true},TMP_20.$$arity=0);Opal.defn(self,"$attr_assignment?",TMP_21=function(){var $a,self=this;return($a=self.assignment)!==false&&$a!==nil&&$a!=null?$a:self.assignment=self.$meth().$to_s()["$=~"](new RegExp(""+$scope.get("REGEXP_START")+"[\\da-z]+\\="+$scope.get("REGEXP_END")))},TMP_21.$$arity=0);Opal.defn(self,"$compile_irb_var",TMP_23=function $$compile_irb_var(){var $a,$b,TMP_22,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_22=function(tmp){var self=TMP_22.$$s||this,lvar=nil,call=nil;if(tmp==null)tmp=nil;lvar=self.$variable(self.$meth());call=self.$s("call",self.$s("self"),self.$meth().$intern(),self.$s("arglist"));return self.$push("(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call)," : "+tmp+")")},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22),$a).call($b)},TMP_23.$$arity=0);Opal.defn(self,"$compile_assignment",TMP_26=function $$compile_assignment(){var $a,$b,TMP_24,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_24=function(args_tmp){var self=TMP_24.$$s||this,$c,$d,TMP_25;if(args_tmp==null)args_tmp=nil;return($c=($d=self).$with_temp,$c.$$p=(TMP_25=function(recv_tmp){var self=TMP_25.$$s||this,args=nil,mid=nil;if(recv_tmp==null)recv_tmp=nil;args=self.$expr(self.$arglist());mid=self.$mid_to_jsid(self.$meth().$to_s());return self.$push("(("+args_tmp+" = [",args,$rb_plus("]), ",""+recv_tmp+" = "),self.$recv(self.$recv_sexp()),", ",recv_tmp,mid,$rb_plus(".apply("+recv_tmp+", "+args_tmp+"), ",""+args_tmp+"["+args_tmp+".length-1])"))},TMP_25.$$s=self,TMP_25.$$arity=1,TMP_25),$c).call($d)},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24),$a).call($b)},TMP_26.$$arity=0);Opal.defn(self,"$using_irb?",TMP_27=function(){var $a,$b,$c,$d,self=this;return $a=($b=($c=($d=self.compiler["$irb?"](),$d!==false&&$d!==nil&&$d!=null?self.$scope()["$top?"]():$d),$c!==false&&$c!==nil&&$c!=null?self.$arglist()["$=="](self.$s("arglist")):$c),$b!==false&&$b!==nil&&$b!=null?self.$recvr()["$nil?"]():$b),$a!==false&&$a!==nil&&$a!=null?self.$iter()["$nil?"]():$a},TMP_27.$$arity=0);Opal.defn(self,"$handle_special",TMP_28=function $$handle_special(){var $a,self=this;self.compile_default=true;if(($a=$scope.get("SPECIALS")["$include?"](self.$meth()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.compile_default=false;return self.$__send__("handle_"+self.$meth())}else if(($a=$scope.get("RuntimeHelpers")["$compatible?"](self.$recvr(),self.$meth(),self.$arglist()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.compile_default=false;return self.$push($scope.get("RuntimeHelpers").$new(self.sexp,self.level,self.compiler).$compile())}else{return nil}},TMP_28.$$arity=0);Opal.defn(self,"$compile_default!",TMP_29=function(){var self=this;return self.compile_default=true},TMP_29.$$arity=0);Opal.defn(self,"$compile_default?",TMP_30=function(){var self=this;return self.compile_default},TMP_30.$$arity=0);($a=($b=$scope.get("OPERATORS")).$each,$a.$$p=(TMP_31=function(operator,name){var self=TMP_31.$$s||this,$c,$d,TMP_32;if(operator==null)operator=nil;if(name==null)name=nil;return($c=($d=self).$add_special,$c.$$p=(TMP_32=function(){var self=TMP_32.$$s||this,$e,lhs=nil,rhs=nil;if(($e=self.$compiler()["$inline_operators?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){if(($e=self["$record_method?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){self.$compiler().$method_calls()["$<<"](operator.$to_sym())}self.$compiler().$operator_helpers()["$<<"](operator.$to_sym());$e=[self.$expr(self.$recvr()),self.$expr(self.$arglist()["$[]"](1))],lhs=$e[0],rhs=$e[1],$e;self.$push(self.$fragment("$rb_"+name+"("));self.$push(lhs);self.$push(self.$fragment(", "));self.$push(rhs);return self.$push(self.$fragment(")"))}else{return self["$compile_default!"]()}},TMP_32.$$s=self,TMP_32.$$arity=0,TMP_32),$c).call($d,operator.$to_sym())},TMP_31.$$s=self,TMP_31.$$arity=2,TMP_31),$a).call($b);($a=($c=self).$add_special,$a.$$p=(TMP_33=function(){var self=TMP_33.$$s||this,$d,str=nil;self["$compile_default!"]();str=$scope.get("DependencyResolver").$new(self.$compiler(),self.$arglist()["$[]"](1)).$resolve();if(($d=str["$nil?"]())!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){}else{self.$compiler().$requires()["$<<"](str)}return self.$push(self.$fragment(""))},TMP_33.$$s=self,TMP_33.$$arity=0,TMP_33),$a).call($c,"require");($a=($d=self).$add_special,$a.$$p=(TMP_34=function(){var self=TMP_34.$$s||this,arg=nil,file=nil,dir=nil;arg=self.$arglist()["$[]"](1);file=self.$compiler().$file();if(arg["$[]"](0)["$=="]("str")){dir=$scope.get("File").$dirname(file);self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg["$[]"](1)).$cleanpath().$to_s())}self.$push(self.$fragment("self.$require("+file.$inspect()+"+ '/../' + "));self.$push(self.$process(self.$arglist()));return self.$push(self.$fragment(")"))},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34),$a).call($d,"require_relative");($a=($e=self).$add_special,$a.$$p=(TMP_35=function(){var self=TMP_35.$$s||this,$f,str=nil;if(($f=self.$scope()["$class_scope?"]())!==nil&&$f!=null&&(!$f.$$is_boolean||$f==true)){self["$compile_default!"]();str=$scope.get("DependencyResolver").$new(self.$compiler(),self.$arglist()["$[]"](2)).$resolve();if(($f=str["$nil?"]())!==nil&&$f!=null&&(!$f.$$is_boolean||$f==true)){}else{self.$compiler().$requires()["$<<"](str)}return self.$push(self.$fragment(""))}else{return nil}},TMP_35.$$s=self,TMP_35.$$arity=0,TMP_35),$a).call($e,"autoload");($a=($f=self).$add_special,$a.$$p=(TMP_36=function(){var self=TMP_36.$$s||this,arg=nil,relative_path=nil,dir=nil,full_path=nil;arg=self.$arglist()["$[]"](1);if(arg["$[]"](0)["$=="]("str")){relative_path=arg["$[]"](1);self.$compiler().$required_trees()["$<<"](relative_path);dir=$scope.get("File").$dirname(self.$compiler().$file());full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s();arg["$[]="](1,full_path)}self["$compile_default!"]();return self.$push(self.$fragment(""))},TMP_36.$$s=self,TMP_36.$$arity=0,TMP_36),$a).call($f,"require_tree");($a=($g=self).$add_special,$a.$$p=(TMP_37=function(){var self=TMP_37.$$s||this;if(self.sexp==null)self.sexp=nil;return self.$push(self.$compiler().$handle_block_given_call(self.sexp))},TMP_37.$$s=self,TMP_37.$$arity=0,TMP_37),$a).call($g,"block_given?");($a=($h=self).$add_special,$a.$$p=(TMP_38=function(){var self=TMP_38.$$s||this,$i;if(($i=self.$scope()["$def?"]())!==nil&&$i!=null&&(!$i.$$is_boolean||$i==true)){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},TMP_38.$$s=self,TMP_38.$$arity=0,TMP_38),$a).call($h,"__callee__");($a=($i=self).$add_special,$a.$$p=(TMP_39=function(){var self=TMP_39.$$s||this,$j;if(($j=self.$scope()["$def?"]())!==nil&&$j!=null&&(!$j.$$is_boolean||$j==true)){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},TMP_39.$$s=self,TMP_39.$$arity=0,TMP_39),$a).call($i,"__method__");($a=($j=self).$add_special,$a.$$p=(TMP_40=function(){var self=TMP_40.$$s||this;return self.$push(self.$fragment("debugger"))},TMP_40.$$s=self,TMP_40.$$arity=0,TMP_40),$a).call($j,"debugger");($a=($k=self).$add_special,$a.$$p=(TMP_41=function(){var self=TMP_41.$$s||this;return self.$push(self.$fragment("Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))},TMP_41.$$s=self,TMP_41.$$arity=0,TMP_41),$a).call($k,"__OPAL_COMPILER_CONFIG__");return function($base,$super){function $DependencyResolver(){}var self=$DependencyResolver=$klass($base,$super,"DependencyResolver",$DependencyResolver);var def=self.$$proto,$scope=self.$$scope,TMP_42,TMP_43,TMP_45,TMP_47;def.sexp=def.compiler=nil;Opal.defn(self,"$initialize",TMP_42=function $$initialize(compiler,sexp){var self=this;self.compiler=compiler;return self.sexp=sexp},TMP_42.$$arity=2);Opal.defn(self,"$resolve",TMP_43=function $$resolve(){var self=this;return self.$handle_part(self.sexp)},TMP_43.$$arity=0);Opal.defn(self,"$handle_part",TMP_45=function $$handle_part(sexp){var $a,$b,TMP_44,self=this,type=nil,_=nil,recv=nil,meth=nil,args=nil,parts=nil,msg=nil,$case=nil;type=sexp.$type();if(type["$=="]("str")){return sexp["$[]"](1)}else if(type["$=="]("call")){$b=sexp,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],recv=$a[1]==null?nil:$a[1],meth=$a[2]==null?nil:$a[2],args=$a[3]==null?nil:$a[3],$b;parts=($a=($b=args["$[]"]($range(1,-1,false))).$map,$a.$$p=(TMP_44=function(s){var self=TMP_44.$$s||this;if(s==null)s=nil;return self.$handle_part(s)},TMP_44.$$s=self,TMP_44.$$arity=1,TMP_44),$a).call($b);if(recv["$=="](["const","File"])){if(meth["$=="]("expand_path")){return($a=self).$expand_path.apply($a,Opal.to_a(parts))}else if(meth["$=="]("join")){return self.$expand_path(parts.$join("/"))}else if(meth["$=="]("dirname")){return self.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,true)).$join("/"))}}}msg="Cannot handle dynamic require";return function(){$case=self.compiler.$dynamic_require_severity();if("error"["$==="]($case)){return self.compiler.$error(msg,self.sexp.$line())}else if("warning"["$==="]($case)){return self.compiler.$warning(msg,self.sexp.$line())}else{return nil}}()},TMP_45.$$arity=1);return(Opal.defn(self,"$expand_path",TMP_47=function $$expand_path(path,base){var $a,$b,TMP_46,self=this;if(base==null){base=""}return($a=($b=(""+base+"/"+path).$split("/")).$inject,$a.$$p=(TMP_46=function(p,part){var self=TMP_46.$$s||this;if(p==null)p=nil;if(part==null)part=nil;if(part["$=="]("")){}else if(part["$=="]("..")){p.$pop()}else{p["$<<"](part)}return p},TMP_46.$$s=self,TMP_46.$$arity=2,TMP_46),$a).call($b,[]).$join("/")},TMP_47.$$arity=-2),nil)&&"expand_path"}($scope.base,null)})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/call_special"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$!~","$to_s","$meth","$with_temp","$expr","$arglist","$mid_to_jsid","$push","$+","$recv","$recv_sexp","$[]","$==","$any?","$first","$===","$last","$type","$pop","$iter","$new_temp","$scope","$s","$unshift","$queue_temp","$lhs","$rhs","$process","$recvr","$args","$op","$compile_or","$compile_and","$compile_operator","$to_sym","$first_arg","$mid"]);self.$require("opal/nodes/base");self.$require("opal/nodes/call");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $AttrAssignNode(){}var self=$AttrAssignNode=$klass($base,$super,"AttrAssignNode",$AttrAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;self.$handle("attrasgn");self.$children("recvr","meth","arglist");return(Opal.defn(self,"$default_compile",TMP_1=function $$default_compile(){var $a,$b,$c,TMP_2,self=this,$iter=TMP_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_1.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(($a=self.$meth().$to_s()["$!~"](new RegExp(""+$scope.get("REGEXP_START")+"\\w+="+$scope.get("REGEXP_END"))))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=self,Opal.find_super_dispatcher(self,"default_compile",TMP_1,false)),$a.$$p=$iter,$a).apply($b,$zuper)}return($a=($c=self).$with_temp,$a.$$p=(TMP_2=function(args_tmp){var self=TMP_2.$$s||this,$d,$e,TMP_3;if(args_tmp==null)args_tmp=nil;return($d=($e=self).$with_temp,$d.$$p=(TMP_3=function(recv_tmp){var self=TMP_3.$$s||this,args=nil,mid=nil;if(recv_tmp==null)recv_tmp=nil;args=self.$expr(self.$arglist());mid=self.$mid_to_jsid(self.$meth().$to_s());return self.$push("(("+args_tmp+" = [",args,$rb_plus("]), ",""+recv_tmp+" = "),self.$recv(self.$recv_sexp()),", ",recv_tmp,mid,$rb_plus(".apply("+recv_tmp+", "+args_tmp+"), ",""+args_tmp+"["+args_tmp+".length-1])"))},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$d).call($e)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($c)},TMP_1.$$arity=0),nil)&&"default_compile"})($scope.base,$scope.get("CallNode"));(function($base,$super){function $JsAttrAssignNode(){}var self=$JsAttrAssignNode=$klass($base,$super,"JsAttrAssignNode",$JsAttrAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_4,TMP_5;self.$handle("jsattrasgn");Opal.defn(self,"$record_method?",TMP_4=function(){var self=this;return false},TMP_4.$$arity=0);return(Opal.defn(self,"$default_compile",TMP_5=function $$default_compile(){var self=this;return self.$push(self.$recv(self.$recv_sexp()),"[",self.$expr(self.$arglist()["$[]"](1)),"]","=",self.$expr(self.$arglist()["$[]"](2)))},TMP_5.$$arity=0),nil)&&"default_compile"})($scope.base,$scope.get("CallNode"));(function($base,$super){function $JsCallNode(){}var self=$JsCallNode=$klass($base,$super,"JsCallNode",$JsCallNode);var def=self.$$proto,$scope=self.$$scope,TMP_6,TMP_8;self.$handle("jscall");Opal.defn(self,"$record_method?",TMP_6=function(){var self=this;return false},TMP_6.$$arity=0);return(Opal.defn(self,"$default_compile",TMP_8=function $$default_compile(){var $a,$b,TMP_7,$c,self=this,mid=nil,splat=nil,block=nil,blktmp=nil,tmprecv=nil,recv_code=nil,call_recv=nil,args=nil;if(self.$meth()["$=="]("[]")){return self.$push(self.$recv(self.$recv_sexp()),"[",self.$expr(self.$arglist()),"]")}else{mid="."+self.$meth();splat=($a=($b=self.$arglist()["$[]"]($range(1,-1,false)))["$any?"],$a.$$p=(TMP_7=function(a){var self=TMP_7.$$s||this;if(a==null)a=nil;return a.$first()["$=="]("splat")},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$a).call($b);if(($a=($c=$scope.get("Sexp")["$==="](self.$arglist().$last()),$c!==false&&$c!==nil&&$c!=null?self.$arglist().$last().$type()["$=="]("block_pass"):$c))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block=self.$arglist().$pop()}else if(($a=self.$iter())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block=self.$iter()}if(block!==false&&block!==nil&&block!=null){blktmp=self.$scope().$new_temp()}if(splat!==false&&splat!==nil&&splat!=null){tmprecv=self.$scope().$new_temp()}if(block!==false&&block!==nil&&block!=null){block=self.$expr(block)}recv_code=self.$recv(self.$recv_sexp());call_recv=self.$s("js_tmp",($a=blktmp)!==false&&$a!==nil&&$a!=null?$a:recv_code);if(blktmp!==false&&blktmp!==nil&&blktmp!=null){self.$arglist().$push(call_recv)}args=self.$expr(self.$arglist());if(tmprecv!==false&&tmprecv!==nil&&tmprecv!=null){self.$push("("+tmprecv+" = ",recv_code,")"+mid)}else{self.$push(recv_code,mid)}if(blktmp!==false&&blktmp!==nil&&blktmp!=null){self.$unshift("("+blktmp+" = ",block,", ");self.$push(")")}if(splat!==false&&splat!==nil&&splat!=null){self.$push(".apply(",tmprecv,", ",args,")")}else{self.$push("(",args,")")}if(blktmp!==false&&blktmp!==nil&&blktmp!=null){return self.$scope().$queue_temp(blktmp)}else{return nil}}},TMP_8.$$arity=0),nil)&&"default_compile"})($scope.base,$scope.get("CallNode"));(function($base,$super){function $Match3Node(){}var self=$Match3Node=$klass($base,$super,"Match3Node",$Match3Node);var def=self.$$proto,$scope=self.$$scope,TMP_9;def.level=nil;self.$handle("match3");self.$children("lhs","rhs");return(Opal.defn(self,"$compile",TMP_9=function $$compile(){var self=this,sexp=nil;sexp=self.$s("call",self.$lhs(),"=~",self.$s("arglist",self.$rhs()));return self.$push(self.$process(sexp,self.level))},TMP_9.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $OpAsgnOrNode(){}var self=$OpAsgnOrNode=$klass($base,$super,"OpAsgnOrNode",$OpAsgnOrNode);var def=self.$$proto,$scope=self.$$scope,TMP_10;self.$handle("op_asgn_or");self.$children("recvr","rhs");return(Opal.defn(self,"$compile",TMP_10=function $$compile(){var self=this,sexp=nil;sexp=self.$s("or",self.$recvr(),self.$rhs());return self.$push(self.$expr(sexp))},TMP_10.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $OpAsgnAndNode(){}var self=$OpAsgnAndNode=$klass($base,$super,"OpAsgnAndNode",$OpAsgnAndNode);var def=self.$$proto,$scope=self.$$scope,TMP_11;self.$handle("op_asgn_and");self.$children("recvr","rhs");return(Opal.defn(self,"$compile",TMP_11=function $$compile(){var self=this,sexp=nil;sexp=self.$s("and",self.$recvr(),self.$rhs());return self.$push(self.$expr(sexp))},TMP_11.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $OpAsgn1Node(){}var self=$OpAsgn1Node=$klass($base,$super,"OpAsgn1Node",$OpAsgn1Node);var def=self.$$proto,$scope=self.$$scope,TMP_12,TMP_13,TMP_16,TMP_19,TMP_22;self.$handle("op_asgn1");self.$children("lhs","args","op","rhs");Opal.defn(self,"$first_arg",TMP_12=function $$first_arg(){var self=this;return self.$args()["$[]"](1)},TMP_12.$$arity=0);Opal.defn(self,"$compile",TMP_13=function $$compile(){var self=this,$case=nil;return function(){$case=self.$op().$to_s();if("||"["$==="]($case)){return self.$compile_or()}else if("&&"["$==="]($case)){return self.$compile_and()}else{return self.$compile_operator()}}()},TMP_13.$$arity=0);Opal.defn(self,"$compile_operator",TMP_16=function $$compile_operator(){var $a,$b,TMP_14,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_14=function(a){var self=TMP_14.$$s||this,$c,$d,TMP_15;if(a==null)a=nil;return($c=($d=self).$with_temp,$c.$$p=(TMP_15=function(r){var self=TMP_15.$$s||this,cur=nil,rhs=nil,call=nil;if(r==null)r=nil;cur=self.$s("call",self.$s("js_tmp",r),"[]",self.$s("arglist",self.$s("js_tmp",a)));rhs=self.$s("call",cur,self.$op().$to_sym(),self.$s("arglist",self.$rhs()));call=self.$s("call",self.$s("js_tmp",r),"[]=",self.$s("arglist",self.$s("js_tmp",a),rhs));self.$push("("+a+" = ",self.$expr(self.$first_arg()),", "+r+" = ",self.$expr(self.$lhs()));return self.$push(", ",self.$expr(call),")")},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15),$c).call($d)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$a).call($b)},TMP_16.$$arity=0);Opal.defn(self,"$compile_or",TMP_19=function $$compile_or(){var $a,$b,TMP_17,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_17=function(a){var self=TMP_17.$$s||this,$c,$d,TMP_18;if(a==null)a=nil;return($c=($d=self).$with_temp,$c.$$p=(TMP_18=function(r){var self=TMP_18.$$s||this,aref=nil,aset=nil,orop=nil;if(r==null)r=nil;aref=self.$s("call",self.$s("js_tmp",r),"[]",self.$s("arglist",self.$s("js_tmp",a)));aset=self.$s("call",self.$s("js_tmp",r),"[]=",self.$s("arglist",self.$s("js_tmp",a),self.$rhs()));orop=self.$s("or",aref,aset);self.$push("("+a+" = ",self.$expr(self.$first_arg()),", "+r+" = ",self.$expr(self.$lhs()));return self.$push(", ",self.$expr(orop),")")},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18),$c).call($d)},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17),$a).call($b)},TMP_19.$$arity=0);return(Opal.defn(self,"$compile_and",TMP_22=function $$compile_and(){var $a,$b,TMP_20,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_20=function(a){var self=TMP_20.$$s||this,$c,$d,TMP_21;if(a==null)a=nil;return($c=($d=self).$with_temp,$c.$$p=(TMP_21=function(r){var self=TMP_21.$$s||this,aref=nil,aset=nil,andop=nil;if(r==null)r=nil;aref=self.$s("call",self.$s("js_tmp",r),"[]",self.$s("arglist",self.$s("js_tmp",a)));aset=self.$s("call",self.$s("js_tmp",r),"[]=",self.$s("arglist",self.$s("js_tmp",a),self.$rhs()));andop=self.$s("and",aref,aset);self.$push("("+a+" = ",self.$expr(self.$first_arg()),", "+r+" = ",self.$expr(self.$lhs()));return self.$push(", ",self.$expr(andop),")")},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21),$c).call($d)},TMP_20.$$s=self,TMP_20.$$arity=1,TMP_20),$a).call($b)},TMP_22.$$arity=0),nil)&&"compile_and"})($scope.base,$scope.get("Base"));(function($base,$super){function $OpAsgn2Node(){}var self=$OpAsgn2Node=$klass($base,$super,"OpAsgn2Node",$OpAsgn2Node);var def=self.$$proto,$scope=self.$$scope,TMP_23,TMP_24,TMP_26,TMP_28,TMP_30;self.$handle("op_asgn2");self.$children("lhs","mid","op","rhs");Opal.defn(self,"$meth",TMP_23=function $$meth(){var self=this;return self.$mid().$to_s()["$[]"]($range(0,-2,false))},TMP_23.$$arity=0);Opal.defn(self,"$compile",TMP_24=function $$compile(){var self=this,$case=nil;return function(){$case=self.$op().$to_s();if("||"["$==="]($case)){return self.$compile_or()}else if("&&"["$==="]($case)){return self.$compile_and()}else{return self.$compile_operator()}}()},TMP_24.$$arity=0);Opal.defn(self,"$compile_or",TMP_26=function $$compile_or(){var $a,$b,TMP_25,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_25=function(tmp){var self=TMP_25.$$s||this,getr=nil,asgn=nil,orop=nil;if(tmp==null)tmp=nil;getr=self.$s("call",self.$s("js_tmp",tmp),self.$meth(),self.$s("arglist"));asgn=self.$s("call",self.$s("js_tmp",tmp),self.$mid(),self.$s("arglist",self.$rhs()));orop=self.$s("or",getr,asgn);return self.$push("("+tmp+" = ",self.$expr(self.$lhs()),", ",self.$expr(orop),")")},TMP_25.$$s=self,TMP_25.$$arity=1,TMP_25),$a).call($b)},TMP_26.$$arity=0);Opal.defn(self,"$compile_and",TMP_28=function $$compile_and(){var $a,$b,TMP_27,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_27=function(tmp){var self=TMP_27.$$s||this,getr=nil,asgn=nil,andop=nil;if(tmp==null)tmp=nil;getr=self.$s("call",self.$s("js_tmp",tmp),self.$meth(),self.$s("arglist"));asgn=self.$s("call",self.$s("js_tmp",tmp),self.$mid(),self.$s("arglist",self.$rhs()));andop=self.$s("and",getr,asgn);return self.$push("("+tmp+" = ",self.$expr(self.$lhs()),", ",self.$expr(andop),")")},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27),$a).call($b)},TMP_28.$$arity=0);return(Opal.defn(self,"$compile_operator",TMP_30=function $$compile_operator(){var $a,$b,TMP_29,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_29=function(tmp){var self=TMP_29.$$s||this,getr=nil,oper=nil,asgn=nil;if(tmp==null)tmp=nil;getr=self.$s("call",self.$s("js_tmp",tmp),self.$meth(),self.$s("arglist"));oper=self.$s("call",getr,self.$op(),self.$s("arglist",self.$rhs()));asgn=self.$s("call",self.$s("js_tmp",tmp),self.$mid(),self.$s("arglist",oper));return self.$push("("+tmp+" = ",self.$expr(self.$lhs()),", ",self.$expr(asgn),")")},TMP_29.$$s=self,TMP_29.$$arity=1,TMP_29),$a).call($b)},TMP_30.$$arity=0),nil)&&"compile_operator"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/scope"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$require","$attr_accessor","$attr_reader","$indent","$scope","$compiler","$scope=","$call","$==","$!","$class?","$dup","$push","$map","$ivars","$gvars","$parser_indent","$empty?","$join","$+","$proto","$%","$fragment","$def_in_class?","$add_proto_ivar","$include?","$<<","$has_local?","$has_temp?","$pop","$next_temp","$succ","$uses_block!","$identify!","$unique_temp","$add_scope_temp","$parent","$def?","$type","$mid","$rescue_else_sexp"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ScopeNode(){}var self=$ScopeNode=$klass($base,$super,"ScopeNode",$ScopeNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,TMP_36,TMP_37,TMP_38,TMP_39,TMP_40;def.type=def.defs=def.parent=def.temps=def.locals=def.compiler=def.proto_ivars=def.ivars=def.gvars=def.args=def.queue=def.unique=def.while_stack=def.identity=def.uses_block=def.in_ensure=nil;self.$attr_accessor("parent");self.$attr_accessor("name");self.$attr_accessor("block_name");self.$attr_reader("scope_name");self.$attr_reader("locals");self.$attr_reader("ivars");self.$attr_reader("gvars");self.$attr_accessor("mid");self.$attr_accessor("defs");self.$attr_reader("methods");self.$attr_accessor("uses_super");self.$attr_accessor("uses_zuper");self.$attr_accessor("catch_return","has_break");self.$attr_accessor("rescue_else_sexp");Opal.defn(self,"$initialize",TMP_1=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_1.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}($b=($c=self,Opal.find_super_dispatcher(self,"initialize",TMP_1,false)),$b.$$p=$iter,$b).apply($c,$zuper);self.locals=[];self.temps=[];self.args=[];self.ivars=[];self.gvars=[];self.parent=nil;self.queue=[];self.unique="a";self.while_stack=[];self.identity=nil;self.defs=nil;self.methods=[];self.uses_block=false;return self.proto_ivars=[]},TMP_1.$$arity=-1);Opal.defn(self,"$in_scope",TMP_2=function $$in_scope(){var $a,$b,TMP_3,self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;return($a=($b=self).$indent,$a.$$p=(TMP_3=function(){var self=TMP_3.$$s||this,$c,$d;if(self.parent==null)self.parent=nil;self.parent=self.$compiler().$scope();$c=[self],$d=self.$compiler(),$d["$scope="].apply($d,$c),$c[$c.length-1];block.$call(self);return $c=[self.parent],$d=self.$compiler(),$d["$scope="].apply($d,$c),$c[$c.length-1]},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3),$a).call($b)},TMP_2.$$arity=0);Opal.defn(self,"$class_scope?",TMP_4=function(){var $a,self=this;return($a=self.type["$=="]("class"))!==false&&$a!==nil&&$a!=null?$a:self.type["$=="]("module")},TMP_4.$$arity=0);Opal.defn(self,"$class?",TMP_5=function(){var self=this;return self.type["$=="]("class")},TMP_5.$$arity=0);Opal.defn(self,"$module?",TMP_6=function(){var self=this;return self.type["$=="]("module")},TMP_6.$$arity=0);Opal.defn(self,"$sclass?",TMP_7=function(){var self=this;return self.type["$=="]("sclass")},TMP_7.$$arity=0);Opal.defn(self,"$top?",TMP_8=function(){var self=this;return self.type["$=="]("top")},TMP_8.$$arity=0);Opal.defn(self,"$iter?",TMP_9=function(){var self=this;return self.type["$=="]("iter")},TMP_9.$$arity=0);Opal.defn(self,"$def?",TMP_10=function(){var self=this;return self.type["$=="]("def")},TMP_10.$$arity=0);Opal.defn(self,"$def_in_class?",TMP_11=function(){var $a,$b,$c,self=this;return $a=($b=($c=self.defs["$!"](),$c!==false&&$c!==nil&&$c!=null?self.type["$=="]("def"):$c),$b!==false&&$b!==nil&&$b!=null?self.parent:$b),$a!==false&&$a!==nil&&$a!=null?self.parent["$class?"]():$a},TMP_11.$$arity=0);Opal.defn(self,"$proto",TMP_12=function $$proto(){var self=this;return"def"},TMP_12.$$arity=0);Opal.defn(self,"$to_vars",TMP_17=function $$to_vars(){var $a,$b,$c,TMP_13,$d,TMP_14,$e,TMP_15,$f,TMP_16,self=this,vars=nil,iv=nil,gv=nil,indent=nil,str=nil,pvars=nil,result=nil;vars=self.temps.$dup();($a=vars).$push.apply($a,Opal.to_a(($b=($c=self.locals).$map,$b.$$p=(TMP_13=function(l){var self=TMP_13.$$s||this;if(l==null)l=nil;return""+l+" = nil"},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13),$b).call($c)));iv=($b=($d=self.$ivars()).$map,$b.$$p=(TMP_14=function(ivar){var self=TMP_14.$$s||this;if(ivar==null)ivar=nil;return"if (self"+ivar+" == null) self"+ivar+" = nil;\n"},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$b).call($d);gv=($b=($e=self.$gvars()).$map,$b.$$p=(TMP_15=function(gvar){var self=TMP_15.$$s||this;if(gvar==null)gvar=nil;return"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15),$b).call($e);indent=self.compiler.$parser_indent();str=function(){if(($b=vars["$empty?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return""}else{return"var "+vars.$join(", ")+";\n"}return nil}();if(($b=self.$ivars()["$empty?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{str=$rb_plus(str,""+indent+iv.$join(indent))}if(($b=self.$gvars()["$empty?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{str=$rb_plus(str,""+indent+gv.$join(indent))}if(($b=($f=self["$class?"](),$f!==false&&$f!==nil&&$f!=null?self.proto_ivars["$empty?"]()["$!"]():$f))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){pvars=($b=($f=self.proto_ivars).$map,$b.$$p=(TMP_16=function(i){var self=TMP_16.$$s||this;if(i==null)i=nil;return""+self.$proto()+i},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16),$b).call($f).$join(" = ");result="%s\n%s%s = nil;"["$%"]([str,indent,pvars])}else{result=str}return self.$fragment(result)},TMP_17.$$arity=0);Opal.defn(self,"$add_scope_ivar",TMP_18=function $$add_scope_ivar(ivar){var $a,self=this;if(($a=self["$def_in_class?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.parent.$add_proto_ivar(ivar)}else if(($a=self.ivars["$include?"](ivar))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.ivars["$<<"](ivar)}},TMP_18.$$arity=1);Opal.defn(self,"$add_scope_gvar",TMP_19=function $$add_scope_gvar(gvar){var $a,self=this;if(($a=self.gvars["$include?"](gvar))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.gvars["$<<"](gvar)}},TMP_19.$$arity=1);Opal.defn(self,"$add_proto_ivar",TMP_20=function $$add_proto_ivar(ivar){var $a,self=this;if(($a=self.proto_ivars["$include?"](ivar))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.proto_ivars["$<<"](ivar)}},TMP_20.$$arity=1);Opal.defn(self,"$add_arg",TMP_21=function $$add_arg(arg){var $a,self=this;if(($a=self.args["$include?"](arg))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.args["$<<"](arg)}return arg},TMP_21.$$arity=1);Opal.defn(self,"$add_scope_local",TMP_22=function $$add_scope_local(local){var $a,self=this;if(($a=self["$has_local?"](local))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}return self.locals["$<<"](local)},TMP_22.$$arity=1);Opal.defn(self,"$has_local?",TMP_23=function(local){var $a,$b,$c,self=this;if(($a=($b=($c=self.locals["$include?"](local))!==false&&$c!==nil&&$c!=null?$c:self.args["$include?"](local))!==false&&$b!==nil&&$b!=null?$b:self.temps["$include?"](local))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=self.parent,$b!==false&&$b!==nil&&$b!=null?self.type["$=="]("iter"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.parent["$has_local?"](local)}return false},TMP_23.$$arity=1);Opal.defn(self,"$add_scope_temp",TMP_24=function $$add_scope_temp(tmp){var $a,self=this;if(($a=self["$has_temp?"](tmp))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}return self.temps.$push(tmp)},TMP_24.$$arity=1);Opal.defn(self,"$has_temp?",TMP_25=function(tmp){var self=this;return self.temps["$include?"](tmp)},TMP_25.$$arity=1);Opal.defn(self,"$new_temp",TMP_26=function $$new_temp(){var $a,self=this,tmp=nil;if(($a=self.queue["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return self.queue.$pop()}tmp=self.$next_temp();self.temps["$<<"](tmp);return tmp},TMP_26.$$arity=0);Opal.defn(self,"$next_temp",TMP_27=function $$next_temp(){var $a,$b,self=this,tmp=nil;while(($b=true)!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){tmp="$"+self.unique;self.unique=self.unique.$succ();if(($b=self["$has_local?"](tmp))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){}else{break}}return tmp},TMP_27.$$arity=0);Opal.defn(self,"$queue_temp",TMP_28=function $$queue_temp(name){var self=this;return self.queue["$<<"](name)},TMP_28.$$arity=1);Opal.defn(self,"$push_while",TMP_29=function $$push_while(){var self=this,info=nil;info=$hash2([],{});self.while_stack.$push(info);return info},TMP_29.$$arity=0);Opal.defn(self,"$pop_while",TMP_30=function $$pop_while(){var self=this;return self.while_stack.$pop()},TMP_30.$$arity=0);Opal.defn(self,"$in_while?",TMP_31=function(){var self=this;return self.while_stack["$empty?"]()["$!"]()},TMP_31.$$arity=0);Opal.defn(self,"$uses_block!",TMP_32=function(){var $a,$b,self=this;if(($a=($b=self.type["$=="]("iter"))?self.parent:self.type["$=="]("iter"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.parent["$uses_block!"]()}else{self.uses_block=true;return self["$identify!"]()}},TMP_32.$$arity=0);Opal.defn(self,"$identify!",TMP_33=function(){var $a,self=this;if(($a=self.identity)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.identity}self.identity=self.compiler.$unique_temp();if(($a=self.parent)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.parent.$add_scope_temp(self.identity)}return self.identity},TMP_33.$$arity=0);Opal.defn(self,"$identity",TMP_34=function $$identity(){var self=this;return self.identity},TMP_34.$$arity=0);Opal.defn(self,"$find_parent_def",TMP_35=function $$find_parent_def(){var $a,$b,self=this,scope=nil;scope=self;while(($b=scope=scope.$parent())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){if(($b=scope["$def?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return scope}}return nil},TMP_35.$$arity=0);Opal.defn(self,"$get_super_chain",TMP_36=function $$get_super_chain(){var $a,$b,self=this,chain=nil,scope=nil,defn=nil,mid=nil;$a=[[],self,"null","null"],chain=$a[0],scope=$a[1],defn=$a[2],mid=$a[3],$a;while(scope!==false&&scope!==nil&&scope!=null){if(scope.$type()["$=="]("iter")){chain["$<<"](scope["$identify!"]());if(($b=scope.$parent())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){scope=scope.$parent()}}else if(scope.$type()["$=="]("def")){defn=scope["$identify!"]();mid="'"+scope.$mid()+"'";break}else{break}}return[chain,defn,mid]},TMP_36.$$arity=0);Opal.defn(self,"$uses_block?",TMP_37=function(){var self=this;return self.uses_block},TMP_37.$$arity=0);Opal.defn(self,"$has_rescue_else?",TMP_38=function(){var self=this;return self.$rescue_else_sexp()["$!"]()["$!"]()},TMP_38.$$arity=0);Opal.defn(self,"$in_ensure",TMP_39=function $$in_ensure(){var self=this,$iter=TMP_39.$$p,$yield=$iter||nil,result=nil;TMP_39.$$p=null;if($yield!==nil){}else{return nil}self.in_ensure=true;result=Opal.yieldX($yield,[]);return self.in_ensure=false},TMP_39.$$arity=0);return(Opal.defn(self,"$in_ensure?",TMP_40=function(){var self=this;return self.in_ensure["$!"]()["$!"]()},TMP_40.$$arity=0),nil)&&"in_ensure?"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/module"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$add_temp","$proto","$stmt","$body","$s","$empty_line","$to_vars","$==","$type","$cid","$to_s","$[]","$expr","$raise"]);self.$require("opal/nodes/scope");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ModuleNode(){}var self=$ModuleNode=$klass($base,$super,"ModuleNode",$ModuleNode);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_3;self.$handle("module");self.$children("cid","body");Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("module");self.$push("(function($base) {");self.$line(" var $"+name+", self = $"+name+" = $module($base, '"+name+"');");($a=($b=self).$in_scope,$a.$$p=(TMP_1=function(){var self=TMP_1.$$s||this,$c,$d,body_code=nil;$c=[name],$d=self.$scope(),$d["$name="].apply($d,$c),$c[$c.length-1];self.$add_temp(""+self.$scope().$proto()+" = self.$$proto");self.$add_temp("$scope = self.$$scope");body_code=self.$stmt(($c=self.$body())!==false&&$c!==nil&&$c!=null?$c:self.$s("nil"));self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$a).call($b);return self.$line("})(",base,")")},TMP_2.$$arity=0);return(Opal.defn(self,"$name_and_base",TMP_3=function $$name_and_base(){var self=this;if(self.$cid().$type()["$=="]("const")){return[self.$cid()["$[]"](1).$to_s(),"$scope.base"]}else if(self.$cid().$type()["$=="]("colon2")){return[self.$cid()["$[]"](2).$to_s(),self.$expr(self.$cid()["$[]"](1))]}else if(self.$cid().$type()["$=="]("colon3")){return[self.$cid()["$[]"](1).$to_s(),"Opal.Object"]}else{return self.$raise("Bad receiver in module")}},TMP_3.$$arity=0),nil)&&"name_and_base"})($scope.base,$scope.get("ScopeNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/class"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$add_temp","$proto","$body_code","$empty_line","$to_vars","$super_code","$sup","$expr","$stmt","$returns","$compiler","$body","$s"]);self.$require("opal/nodes/module");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ClassNode(){}var self=$ClassNode=$klass($base,$super,"ClassNode",$ClassNode);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_3,TMP_4;self.$handle("class");self.$children("cid","sup","body");Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("klass");self.$push("(function($base, $super) {");self.$line(" function $"+name+"(){};");self.$line(" var self = $"+name+" = $klass($base, $super, '"+name+"', $"+name+");");($a=($b=self).$in_scope,$a.$$p=(TMP_1=function(){var self=TMP_1.$$s||this,$c,$d,body_code=nil;$c=[name],$d=self.$scope(),$d["$name="].apply($d,$c),$c[$c.length-1];self.$add_temp(""+self.$scope().$proto()+" = self.$$proto");self.$add_temp("$scope = self.$$scope");body_code=self.$body_code();self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$a).call($b);return self.$line("})(",base,", ",self.$super_code(),")")},TMP_2.$$arity=0);Opal.defn(self,"$super_code",TMP_3=function $$super_code(){var $a,self=this;if(($a=self.$sup())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$expr(self.$sup())}else{return"null"}},TMP_3.$$arity=0);return(Opal.defn(self,"$body_code",TMP_4=function $$body_code(){var $a,self=this;return self.$stmt(self.$compiler().$returns(($a=self.$body())!==false&&$a!==nil&&$a!=null?$a:self.$s("nil")))},TMP_4.$$arity=0),nil)&&"body_code"})($scope.base,$scope.get("ModuleNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$push","$in_scope","$add_temp","$stmt","$returns","$compiler","$body","$line","$to_vars","$scope","$recv","$object"]);self.$require("opal/nodes/scope");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $SingletonClassNode(){}var self=$SingletonClassNode=$klass($base,$super,"SingletonClassNode",$SingletonClassNode);var def=self.$$proto,$scope=self.$$scope,TMP_2;self.$handle("sclass");self.$children("object","body");return(Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this;self.$push("(function(self) {");($a=($b=self).$in_scope,$a.$$p=(TMP_1=function(){var self=TMP_1.$$s||this,body_stmt=nil;self.$add_temp("$scope = self.$$scope");self.$add_temp("def = self.$$proto");body_stmt=self.$stmt(self.$compiler().$returns(self.$body()));self.$line(self.$scope().$to_vars());return self.$line(body_stmt)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$a).call($b);return self.$line("})(Opal.get_singleton_class(",self.$recv(self.$object()),"))")},TMP_2.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("ScopeNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/inline_args"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$push","$join","$arg_names","$inject","$type","$===","$<<","$add_arg","$next_temp","$scope","$[]=","$mlhs_mapping","$to_s","$variable","$[]","$!","$meta","$!=","$+","$raise","$inspect","$children","$to_sym"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $InlineArgs(){}var self=$InlineArgs=$klass($base,$super,"InlineArgs",$InlineArgs);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3,TMP_4;self.$handle("inline_args");Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this;return self.$push(self.$arg_names().$join(", "))},TMP_1.$$arity=0);Opal.defn(self,"$arg_names",TMP_3=function $$arg_names(){var $a,$b,TMP_2,self=this,done_kwargs=nil;done_kwargs=false;return($a=($b=self.$children()).$inject,$a.$$p=(TMP_2=function(result,child){var self=TMP_2.$$s||this,$c,$d,$case=nil,tmp=nil,arg_name=nil,tmp_arg_name=nil;if(result==null)result=nil;if(child==null)child=nil;$case=child.$type();if("kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){if(done_kwargs!==false&&done_kwargs!==nil&&done_kwargs!=null){}else{done_kwargs=true;result["$<<"]("$kwargs")}self.$add_arg(child)}else if("mlhs"["$==="]($case)){tmp=self.$scope().$next_temp();result["$<<"](tmp);self.$scope().$mlhs_mapping()["$[]="](child,tmp)}else if("arg"["$==="]($case)||"optarg"["$==="]($case)){arg_name=self.$variable(child["$[]"](1)).$to_s();if(($c=($d=child.$meta()["$[]"]("inline")["$!"](),$d!==false&&$d!==nil&&$d!=null?arg_name["$[]"](0)["$!="]("$"):$d))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){arg_name="$"+arg_name}result["$<<"](arg_name);self.$add_arg(child)}else if("restarg"["$==="]($case)){tmp_arg_name=$rb_plus(self.$scope().$next_temp(),"_rest");result["$<<"](tmp_arg_name);self.$add_arg(child)}else{self.$raise("Unknown argument type "+child.$inspect())}return result},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2),$a).call($b,[])},TMP_3.$$arity=0);return(Opal.defn(self,"$add_arg",TMP_4=function $$add_arg(arg){var $a,self=this,arg_name=nil;if(($a=arg["$[]"](1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){arg_name=self.$variable(arg["$[]"](1).$to_sym());return self.$scope().$add_arg(arg_name)}else{return nil}},TMP_4.$$arity=1),nil)&&"add_arg"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/normarg"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$to_sym","$[]","$variable","$meta","$add_temp","$line","$working_arguments","$scope","$in_mlhs?"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $NormargNode(){}var self=$NormargNode=$klass($base,$super,"NormargNode",$NormargNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.sexp=nil;self.$handle("arg");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var $a,self=this,arg_name=nil,var_name=nil;arg_name=self.sexp["$[]"](1).$to_sym();var_name=self.$variable(arg_name);if(($a=self.sexp.$meta()["$[]"]("post"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$add_temp(var_name);self.$line(""+var_name+" = "+self.$scope().$working_arguments()+".splice(0,1)[0];")}if(($a=self.$scope()["$in_mlhs?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$line("if ("+var_name+" == null) {");self.$line(" "+var_name+" = nil;");return self.$line("}")}else{return nil}},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/optarg"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$to_sym","$[]","$variable","$==","$line","$expr","$push"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $OptargNode(){}var self=$OptargNode=$klass($base,$super,"OptargNode",$OptargNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.sexp=nil;self.$handle("optarg");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this,optarg_name=nil,default_value=nil,var_name=nil;optarg_name=self.sexp["$[]"](1).$to_sym();default_value=self.sexp["$[]"](2);var_name=self.$variable(optarg_name);if(default_value["$[]"](2)["$=="]("undefined")){return nil}self.$line("if ("+var_name+" == null) {");self.$line(" "+var_name+" = ",self.$expr(default_value));self.$push(";");return self.$line("}")},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/mlhsarg"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$s","$children","$[]","$meta","$mlhs_name","$[]=","$with_inline_args","$push","$process","$scope","$mlhs_mapping","$line","$in_mlhs","$each","$type","$===","$<<","$join","$to_s","$take_while","$!="]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $MlhsArgNode(){}var self=$MlhsArgNode=$klass($base,$super,"MlhsArgNode",$MlhsArgNode);var def=self.$$proto,$scope=self.$$scope,TMP_4,TMP_6,TMP_8;def.sexp=def.mlhs_name=def.inline_args=nil;self.$handle("mlhs");Opal.defn(self,"$compile",TMP_4=function $$compile(){var $a,$b,$c,TMP_1,$d,TMP_2,self=this,args_sexp=nil,mlhs_sexp=nil,var_name=nil;args_sexp=($a=self).$s.apply($a,["post_args"].concat(Opal.to_a(self.$children())));if(($b=self.sexp.$meta()["$[]"]("post"))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){mlhs_sexp=self.$s("arg",self.$mlhs_name());mlhs_sexp.$meta()["$[]="]("post",true);($b=($c=self.$scope()).$with_inline_args,$b.$$p=(TMP_1=function(){var self=TMP_1.$$s||this;return self.$push(self.$process(mlhs_sexp))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$b).call($c,[]);var_name=args_sexp.$meta()["$[]="]("js_source",self.$mlhs_name())}else{var_name=args_sexp.$meta()["$[]="]("js_source",self.$scope().$mlhs_mapping()["$[]"](self.sexp))}self.$line("if ("+var_name+" == null) {");self.$line(" "+var_name+" = nil;");self.$line("}");self.$line(""+var_name+" = Opal.to_ary("+var_name+");");return($b=($d=self.$scope()).$with_inline_args,$b.$$p=(TMP_2=function(){var self=TMP_2.$$s||this,$e,$f,TMP_3;return($e=($f=self.$scope()).$in_mlhs,$e.$$p=(TMP_3=function(){var self=TMP_3.$$s||this;return self.$push(self.$process(args_sexp))},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3),$e).call($f)},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2),$b).call($d,[])},TMP_4.$$arity=0);Opal.defn(self,"$mlhs_name",TMP_6=function $$mlhs_name(){var $a,$b,$c,TMP_5,self=this,result=nil;return($a=self.mlhs_name)!==false&&$a!==nil&&$a!=null?$a:self.mlhs_name=function(){if(($b=self.sexp.$meta()["$[]"]("post"))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){result=["$mlhs_of"];($b=($c=self.$children()).$each,$b.$$p=(TMP_5=function(child){var self=TMP_5.$$s||this,$case=nil;if(child==null)child=nil;return function(){$case=child.$type();if("arg"["$==="]($case)){return result["$<<"](child["$[]"](1))}else if("mlhs"["$==="]($case)){return result["$<<"]("mlhs")}else{return nil}}()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5),$b).call($c);return result.$join("_")}else{return self.sexp["$[]"](1).$to_s()}return nil}()},TMP_6.$$arity=0);return(Opal.defn(self,"$inline_args",TMP_8=function $$inline_args(){var $a,$b,$c,TMP_7,self=this;return($a=self.inline_args)!==false&&$a!==nil&&$a!=null?$a:self.inline_args=($b=($c=self.$children()).$take_while,$b.$$p=(TMP_7=function(arg){var self=TMP_7.$$s||this,$d;if(arg==null)arg=nil;return $d=arg.$type()["$!="]("restarg"),$d!==false&&$d!==nil&&$d!=null?arg.$type()["$!="]("optarg"):$d},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$b).call($c)},TMP_8.$$arity=0),nil)&&"inline_args"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/restarg"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$[]","$variable","$to_sym","$add_temp","$meta","$line","$working_arguments","$scope"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $RestargNode(){}var self=$RestargNode=$klass($base,$super,"RestargNode",$RestargNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.sexp=nil;self.$handle("restarg");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var $a,self=this,restarg_name=nil,var_name=nil,offset=nil;restarg_name=self.sexp["$[]"](1);if(restarg_name!==false&&restarg_name!==nil&&restarg_name!=null){}else{return nil}var_name=self.$variable(restarg_name.$to_sym());self.$add_temp(var_name);if(($a=self.sexp.$meta()["$[]"]("post"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$line(""+var_name+" = "+self.$scope().$working_arguments()+";")}else{offset=self.sexp.$meta()["$[]"]("offset");self.$line("var $args_len = arguments.length, $rest_len = $args_len - "+offset+";");self.$line("if ($rest_len < 0) { $rest_len = 0; }");self.$line(""+var_name+" = new Array($rest_len);");self.$line("for (var $arg_idx = "+offset+"; $arg_idx < $args_len; $arg_idx++) {");self.$line(" "+var_name+"[$arg_idx - "+offset+"] = arguments[$arg_idx];");return self.$line("}")}},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/initialize_kwargs"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$kwargs_initialized","$scope","$helper","$line","$kwargs_initialized="]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $InitializeKwargsNode(){}var self=$InitializeKwargsNode=$klass($base,$super,"InitializeKwargsNode",$InitializeKwargsNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;return(Opal.defn(self,"$initialize_kw_args_if_needed",TMP_1=function $$initialize_kw_args_if_needed(){var $a,$b,self=this;if(($a=self.$scope().$kwargs_initialized())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}self.$helper("hash2");self.$line("if ($kwargs == null || !$kwargs.$$is_hash) {");self.$line(" if ($kwargs == null) {");self.$line(" $kwargs = $hash2([], {});");self.$line(" } else {");self.$line(" throw Opal.ArgumentError.$new('expected kwargs');");self.$line(" }");self.$line("}");return $a=[true],$b=self.$scope(),$b["$kwargs_initialized="].apply($b,$a),$a[$a.length-1]},TMP_1.$$arity=0),nil)&&"initialize_kw_args_if_needed"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/kwarg"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$initialize_kw_args_if_needed","$to_sym","$[]","$variable","$add_temp","$line","$<<","$used_kwargs","$scope"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $KwargNode(){}var self=$KwargNode=$klass($base,$super,"KwargNode",$KwargNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.sexp=nil;self.$handle("kwarg");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this,kwarg_name=nil,var_name=nil;self.$initialize_kw_args_if_needed();kwarg_name=self.sexp["$[]"](1).$to_sym();var_name=self.$variable(kwarg_name);self.$add_temp(var_name);self.$line("if (!$kwargs.$$smap.hasOwnProperty('"+kwarg_name+"')) {");self.$line(" throw Opal.ArgumentError.$new('missing keyword: "+kwarg_name+"');");self.$line("}");self.$line(""+var_name+" = $kwargs.$$smap['"+kwarg_name+"'];");return self.$scope().$used_kwargs()["$<<"](kwarg_name)},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("InitializeKwargsNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/kwoptarg"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$initialize_kw_args_if_needed","$to_sym","$[]","$variable","$add_temp","$line","$expr","$<<","$used_kwargs","$scope"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $KwoptArgNode(){}var self=$KwoptArgNode=$klass($base,$super,"KwoptArgNode",$KwoptArgNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.sexp=nil;self.$handle("kwoptarg");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this,kwoptarg_name=nil,default_value=nil,var_name=nil;self.$initialize_kw_args_if_needed();kwoptarg_name=self.sexp["$[]"](1).$to_sym();default_value=self.sexp["$[]"](2);var_name=self.$variable(kwoptarg_name);self.$add_temp(var_name);self.$line("if (("+var_name+" = $kwargs.$$smap['"+kwoptarg_name+"']) == null) {");self.$line(" "+var_name+" = ",self.$expr(default_value));self.$line("}");return self.$scope().$used_kwargs()["$<<"](kwoptarg_name)},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("InitializeKwargsNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/kwrestarg"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$initialize_kw_args_if_needed","$[]","$used_kwargs","$variable","$to_sym","$add_temp","$line","$map","$scope","$join"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $KwrestArgNode(){}var self=$KwrestArgNode=$klass($base,$super,"KwrestArgNode",$KwrestArgNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3;def.sexp=nil;self.$handle("kwrestarg");Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this,kwrestarg_name=nil,extract_code=nil,var_name=nil;self.$initialize_kw_args_if_needed();kwrestarg_name=self.sexp["$[]"](1);extract_code="Opal.kwrestargs($kwargs, "+self.$used_kwargs()+");";if(kwrestarg_name!==false&&kwrestarg_name!==nil&&kwrestarg_name!=null){var_name=self.$variable(kwrestarg_name.$to_sym());self.$add_temp(var_name);return self.$line(""+var_name+" = "+extract_code)}else{return nil}},TMP_1.$$arity=0);return(Opal.defn(self,"$used_kwargs",TMP_3=function $$used_kwargs(){var $a,$b,TMP_2,self=this,args=nil;args=($a=($b=self.$scope().$used_kwargs()).$map,$a.$$p=(TMP_2=function(arg_name){var self=TMP_2.$$s||this;if(arg_name==null)arg_name=nil;return"'"+arg_name+"': true"},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b);return"{"+args.$join(",")+"}"},TMP_3.$$arity=0),nil)&&"used_kwargs"})($scope.base,$scope.get("InitializeKwargsNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/post_kwargs"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$empty?","$children","$initialize_kw_args","$each","$push","$process","$line","$working_arguments","$scope"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $PostKwargsNode(){}var self=$PostKwargsNode=$klass($base,$super,"PostKwargsNode",$PostKwargsNode);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_3;self.$handle("post_kwargs");Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this;if(($a=self.$children()["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}self.$initialize_kw_args();return($a=($b=self.$children()).$each,$a.$$p=(TMP_1=function(arg){var self=TMP_1.$$s||this;if(arg==null)arg=nil;return self.$push(self.$process(arg))},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b)},TMP_2.$$arity=0);return(Opal.defn(self,"$initialize_kw_args",TMP_3=function $$initialize_kw_args(){var self=this;return self.$line("$kwargs = Opal.extract_kwargs("+self.$scope().$working_arguments()+");")},TMP_3.$$arity=0),nil)&&"initialize_kw_args"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/args/post_args"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$attr_reader","$each","$[]=","$meta","$type","$===","$<<","$children","$empty?","$working_arguments","$scope","$[]","$working_arguments=","$add_temp","$line","$size","$inline_args","$extract_arguments","$push","$process","$kwargs_sexp","$compile_required_arg","$required_left_args","$compile_optarg","$optargs","$compile_restarg","$required_right_args","$variable","$to_sym","$indent","$restarg","$extract_restarg","$extract_blank_restarg","$s","$kwargs"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $PostArgsNode(){}var self=$PostArgsNode=$klass($base,$super,"PostArgsNode",$PostArgsNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3,TMP_7,TMP_9,TMP_10,TMP_13,TMP_14,TMP_15,TMP_16;def.sexp=nil;self.$handle("post_args");self.$attr_reader("kwargs");self.$attr_reader("required_left_args");self.$attr_reader("optargs");self.$attr_reader("restarg");self.$attr_reader("required_right_args");Opal.defn(self,"$initialize",TMP_1=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_1.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}($b=($c=self,Opal.find_super_dispatcher(self,"initialize",TMP_1,false)),$b.$$p=$iter,$b).apply($c,$zuper);self.kwargs=[];self.required_left_args=[];self.optargs=[];self.restarg=nil;return self.required_right_args=[]},TMP_1.$$arity=-1);Opal.defn(self,"$extract_arguments",TMP_3=function $$extract_arguments(){var $a,$b,TMP_2,self=this,found_opt_or_rest=nil;found_opt_or_rest=false;return($a=($b=self.$children()).$each,$a.$$p=(TMP_2=function(arg){var self=TMP_2.$$s||this,$case=nil;if(self.kwargs==null)self.kwargs=nil;if(self.optargs==null)self.optargs=nil;if(self.required_right_args==null)self.required_right_args=nil;if(self.required_left_args==null)self.required_left_args=nil;if(arg==null)arg=nil;arg.$meta()["$[]="]("post",true);return function(){$case=arg.$type();if("kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){return self.kwargs["$<<"](arg)}else if("restarg"["$==="]($case)){self.restarg=arg;return found_opt_or_rest=true}else if("optarg"["$==="]($case)){self.optargs["$<<"](arg);return found_opt_or_rest=true}else if("arg"["$==="]($case)||"mlhs"["$==="]($case)){if(found_opt_or_rest!==false&&found_opt_or_rest!==nil&&found_opt_or_rest!=null){return self.required_right_args["$<<"](arg)}else{return self.required_left_args["$<<"](arg)}}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b)},TMP_3.$$arity=0);Opal.defn(self,"$compile",TMP_7=function $$compile(){var $a,$b,TMP_4,$c,TMP_5,$d,TMP_6,$e,self=this,old_working_arguments=nil,js_source=nil;if(($a=self.$children()["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}old_working_arguments=self.$scope().$working_arguments();if(($a=self.sexp.$meta()["$[]"]("js_source"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){js_source=self.sexp.$meta()["$[]"]("js_source");$a=[""+js_source+"_args"],$b=self.$scope(),$b["$working_arguments="].apply($b,$a),$a[$a.length-1]}else{js_source="arguments";$a=["$post_args"],$b=self.$scope(),$b["$working_arguments="].apply($b,$a),$a[$a.length-1]}self.$add_temp(""+self.$scope().$working_arguments());self.$line(""+self.$scope().$working_arguments()+" = Opal.slice.call("+js_source+", "+self.$scope().$inline_args().$size()+", "+js_source+".length);");self.$extract_arguments();self.$push(self.$process(self.$kwargs_sexp()));($a=($b=self.$required_left_args()).$each,$a.$$p=(TMP_4=function(arg){var self=TMP_4.$$s||this;if(arg==null)arg=nil;return self.$compile_required_arg(arg)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4),$a).call($b);($a=($c=self.$optargs()).$each,$a.$$p=(TMP_5=function(optarg){var self=TMP_5.$$s||this;if(optarg==null)optarg=nil;return self.$compile_optarg(optarg)},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5),$a).call($c);self.$compile_restarg();($a=($d=self.$required_right_args()).$each,$a.$$p=(TMP_6=function(arg){var self=TMP_6.$$s||this;if(arg==null)arg=nil;return self.$compile_required_arg(arg)},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6),$a).call($d);return $a=[old_working_arguments],$e=self.$scope(),$e["$working_arguments="].apply($e,$a),$a[$a.length-1]},TMP_7.$$arity=0);Opal.defn(self,"$compile_optarg",TMP_9=function $$compile_optarg(optarg){var $a,$b,TMP_8,self=this,var_name=nil;var_name=self.$variable(optarg["$[]"](1).$to_sym());self.$add_temp(var_name);self.$line("if ("+self.$required_right_args().$size()+" < "+self.$scope().$working_arguments()+".length) {");($a=($b=self).$indent,$a.$$p=(TMP_8=function(){var self=TMP_8.$$s||this;return self.$line(""+var_name+" = "+self.$scope().$working_arguments()+".splice(0,1)[0];")},TMP_8.$$s=self,TMP_8.$$arity=0,TMP_8),$a).call($b);self.$line("}");return self.$push(self.$process(optarg))},TMP_9.$$arity=1);Opal.defn(self,"$compile_required_arg",TMP_10=function $$compile_required_arg(arg){var self=this;return self.$push(self.$process(arg))},TMP_10.$$arity=1);Opal.defn(self,"$compile_restarg",TMP_13=function $$compile_restarg(){var $a,$b,TMP_11,$c,TMP_12,self=this;if(($a=self.$restarg())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{return nil}self.$line("if ("+self.$required_right_args().$size()+" < "+self.$scope().$working_arguments()+".length) {");($a=($b=self).$indent,$a.$$p=(TMP_11=function(){var self=TMP_11.$$s||this;return self.$extract_restarg()},TMP_11.$$s=self,TMP_11.$$arity=0,TMP_11),$a).call($b);self.$line("} else {");($a=($c=self).$indent,$a.$$p=(TMP_12=function(){var self=TMP_12.$$s||this;return self.$extract_blank_restarg()},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12),$a).call($c);return self.$line("}")},TMP_13.$$arity=0);Opal.defn(self,"$extract_restarg",TMP_14=function $$extract_restarg(){var $a,self=this,extract_code=nil,var_name=nil;extract_code=""+self.$scope().$working_arguments()+".splice(0, "+self.$scope().$working_arguments()+".length - "+self.$required_right_args().$size()+");";if(($a=self.$restarg()["$[]"](1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){var_name=self.$variable(self.$restarg()["$[]"](1).$to_sym());self.$add_temp(var_name);return self.$line(""+var_name+" = "+extract_code)}else{return self.$line(extract_code)}},TMP_14.$$arity=0);Opal.defn(self,"$extract_blank_restarg",TMP_15=function $$extract_blank_restarg(){var $a,self=this,var_name=nil;if(($a=self.$restarg()["$[]"](1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){var_name=self.$variable(self.$restarg()["$[]"](1).$to_sym());self.$add_temp(var_name);return self.$line(""+var_name+" = [];")}else{return nil}},TMP_15.$$arity=0);return(Opal.defn(self,"$kwargs_sexp",TMP_16=function $$kwargs_sexp(){var $a,self=this;return($a=self).$s.apply($a,["post_kwargs"].concat(Opal.to_a(self.$kwargs())))},TMP_16.$$arity=0),nil)&&"kwargs_sexp"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/node_with_args"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<rhs:lhs["$<"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$range=Opal.range;Opal.add_stubs(["$require","$attr_accessor","$attr_writer","$attr_reader","$[]","$args","$each_with_index","$==","$-","$length","$type","$===","$<<","$any?","$!=","$each","$[]=","$meta","$inline_args","$optimize_args!","$select","$first","$find","$include?","$s","$post_args","$push","$process","$post_args_sexp","$uses_block?","$scope","$identity","$block_name","$add_temp","$line","$inline_args=","$pop","$keyword_args","$all?","$rest_arg","$opt_args","$has_only_optional_kwargs?","$negative_arity","$positive_arity","$children","$size","$has_required_kwargs?","$+","$-@","$map","$build_parameter","$block_arg","$join","$!","$empty?","$<","$>"]);self.$require("opal/nodes/scope");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $NodeWithArgs(){}var self=$NodeWithArgs=$klass($base,$super,"NodeWithArgs",$NodeWithArgs);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_5,TMP_7,TMP_9,TMP_11,TMP_12,TMP_13,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_23,TMP_25,TMP_26,TMP_28,TMP_29,TMP_30,TMP_32,TMP_33;def.opt_args=def.rest_arg=def.keyword_args=def.in_mlhs=def.arity_checks=nil;self.$attr_accessor("mlhs_args");self.$attr_accessor("used_kwargs");self.$attr_accessor("mlhs_mapping");self.$attr_accessor("working_arguments");self.$attr_writer("inline_args");self.$attr_accessor("kwargs_initialized");self.$attr_reader("inline_args","post_args");Opal.defn(self,"$initialize",TMP_1=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_1.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}($b=($c=self,Opal.find_super_dispatcher(self,"initialize",TMP_1,false)),$b.$$p=$iter,$b).apply($c,$zuper);self.mlhs_args=$hash2([],{});self.used_kwargs=[];self.mlhs_mapping=$hash2([],{});self.working_arguments=nil;self.in_mlhs=false;self.kwargs_initialized=false;self.inline_args=[];self.post_args=[];return self.post_args_started=false},TMP_1.$$arity=-1);Opal.defn(self,"$split_args",TMP_5=function $$split_args(){var $a,$b,TMP_2,$c,TMP_4,self=this,args=nil;args=self.$args()["$[]"]($range(1,-1,false));($a=($b=args).$each_with_index,$a.$$p=(TMP_2=function(arg,idx){var self=TMP_2.$$s||this,$c,$d,$e,TMP_3,last_argument=nil,$case=nil;if(self.post_args_started==null)self.post_args_started=nil;if(self.post_args==null)self.post_args=nil;if(self.inline_args==null)self.inline_args=nil;if(arg==null)arg=nil;if(idx==null)idx=nil;last_argument=idx["$=="]($rb_minus(args.$length(),1));return function(){$case=arg.$type();if("arg"["$==="]($case)||"mlhs"["$==="]($case)||"kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){if(($c=self.post_args_started)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.post_args["$<<"](arg)}else{return self.inline_args["$<<"](arg)}}else if("restarg"["$==="]($case)){self.post_args_started=true;return self.post_args["$<<"](arg)}else if("optarg"["$==="]($case)){if(($c=($d=($e=args["$[]"](idx,args.$length()))["$any?"],$d.$$p=(TMP_3=function(next_arg){var self=TMP_3.$$s||this,$f;if(next_arg==null)next_arg=nil;return $f=next_arg.$type()["$!="]("optarg"),$f!==false&&$f!==nil&&$f!=null?next_arg.$type()["$!="]("restarg"):$f},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$d).call($e))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.post_args_started=true}if(($c=self.post_args_started)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.post_args["$<<"](arg)}else{return self.inline_args["$<<"](arg)}}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2),$a).call($b);($a=($c=self.$inline_args()).$each,$a.$$p=(TMP_4=function(inline_arg){var self=TMP_4.$$s||this;if(inline_arg==null)inline_arg=nil;return inline_arg.$meta()["$[]="]("inline",true)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4),$a).call($c);return self["$optimize_args!"]()},TMP_5.$$arity=0);Opal.defn(self,"$opt_args",TMP_7=function $$opt_args(){var $a,$b,$c,TMP_6,self=this;return($a=self.opt_args)!==false&&$a!==nil&&$a!=null?$a:self.opt_args=($b=($c=self.$args()["$[]"]($range(1,-1,false))).$select,$b.$$p=(TMP_6=function(arg){var self=TMP_6.$$s||this;if(arg==null)arg=nil;return arg.$first()["$=="]("optarg")},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6),$b).call($c)},TMP_7.$$arity=0);Opal.defn(self,"$rest_arg",TMP_9=function $$rest_arg(){var $a,$b,$c,TMP_8,self=this;return($a=self.rest_arg)!==false&&$a!==nil&&$a!=null?$a:self.rest_arg=($b=($c=self.$args()["$[]"]($range(1,-1,false))).$find,$b.$$p=(TMP_8=function(arg){var self=TMP_8.$$s||this;if(arg==null)arg=nil;return arg.$first()["$=="]("restarg")},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8),$b).call($c)},TMP_9.$$arity=0);Opal.defn(self,"$keyword_args",TMP_11=function $$keyword_args(){var $a,$b,$c,TMP_10,self=this;return($a=self.keyword_args)!==false&&$a!==nil&&$a!=null?$a:self.keyword_args=($b=($c=self.$args()["$[]"]($range(1,-1,false))).$select,$b.$$p=(TMP_10=function(arg){var self=TMP_10.$$s||this;if(arg==null)arg=nil;return["kwarg","kwoptarg","kwrestarg"]["$include?"](arg.$first())},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10),$b).call($c)},TMP_11.$$arity=0);Opal.defn(self,"$inline_args_sexp",TMP_12=function $$inline_args_sexp(){var $a,self=this;return($a=self).$s.apply($a,["inline_args"].concat(Opal.to_a(self.$args()["$[]"]($range(1,-1,false)))))},TMP_12.$$arity=0);Opal.defn(self,"$post_args_sexp",TMP_13=function $$post_args_sexp(){var $a,self=this;return($a=self).$s.apply($a,["post_args"].concat(Opal.to_a(self.$post_args())))},TMP_13.$$arity=0);Opal.defn(self,"$compile_inline_args",TMP_15=function $$compile_inline_args(){var $a,$b,TMP_14,self=this;return($a=($b=self.$inline_args()).$each,$a.$$p=(TMP_14=function(inline_arg){var self=TMP_14.$$s||this;if(inline_arg==null)inline_arg=nil;return self.$push(self.$process(inline_arg))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14),$a).call($b)},TMP_15.$$arity=0);Opal.defn(self,"$compile_post_args",TMP_16=function $$compile_post_args(){var self=this;return self.$push(self.$process(self.$post_args_sexp()))},TMP_16.$$arity=0);Opal.defn(self,"$compile_block_arg",TMP_17=function $$compile_block_arg(){var $a,self=this,scope_name=nil,yielder=nil;if(($a=self.$scope()["$uses_block?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){scope_name=self.$scope().$identity();yielder=self.$scope().$block_name();self.$add_temp("$iter = "+scope_name+".$$p");self.$add_temp(""+yielder+" = $iter || nil");return self.$line(""+scope_name+".$$p = null;")}else{return nil}},TMP_17.$$arity=0);Opal.defn(self,"$with_inline_args",TMP_18=function $$with_inline_args(args){var $a,$b,self=this,$iter=TMP_18.$$p,$yield=$iter||nil,old_inline_args=nil;TMP_18.$$p=null;old_inline_args=self.$inline_args();$a=[args],$b=self,$b["$inline_args="].apply($b,$a),$a[$a.length-1];Opal.yieldX($yield,[]);return $a=[old_inline_args],$b=self,$b["$inline_args="].apply($b,$a),$a[$a.length-1]},TMP_18.$$arity=1);Opal.defn(self,"$in_mlhs",TMP_19=function $$in_mlhs(){var self=this,$iter=TMP_19.$$p,$yield=$iter||nil,old_mlhs=nil;TMP_19.$$p=null;old_mlhs=self.in_mlhs;self.in_mlhs=true;Opal.yieldX($yield,[]);return self.in_mlhs=old_mlhs},TMP_19.$$arity=0);Opal.defn(self,"$in_mlhs?",TMP_20=function(){var self=this;return self.in_mlhs},TMP_20.$$arity=0);Opal.defn(self,"$optimize_args!",TMP_21=function(){var $a,$b,self=this,rest_arg=nil;if(($a=($b=self.$post_args().$length()["$=="](1))?self.$post_args().$first().$type()["$=="]("restarg"):self.$post_args().$length()["$=="](1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){rest_arg=self.$post_args().$pop();rest_arg.$meta()["$[]="]("offset",self.$inline_args().$length());return self.$inline_args()["$<<"](rest_arg)}else{return nil}},TMP_21.$$arity=0);Opal.defn(self,"$has_only_optional_kwargs?",TMP_23=function(){var $a,$b,$c,TMP_22,self=this;return $a=self.$keyword_args()["$any?"](),$a!==false&&$a!==nil&&$a!=null?($b=($c=self.$keyword_args())["$all?"],$b.$$p=(TMP_22=function(arg){var self=TMP_22.$$s||this;if(arg==null)arg=nil;return["kwoptarg","kwrestarg"]["$include?"](arg.$type())},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22),$b).call($c):$a},TMP_23.$$arity=0);Opal.defn(self,"$has_required_kwargs?",TMP_25=function(){var $a,$b,TMP_24,self=this;return($a=($b=self.$keyword_args())["$any?"],$a.$$p=(TMP_24=function(arg){var self=TMP_24.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("kwarg")},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24),$a).call($b)},TMP_25.$$arity=0);Opal.defn(self,"$arity",TMP_26=function $$arity(){var $a,$b,$c,self=this;if(($a=($b=($c=self.$rest_arg())!==false&&$c!==nil&&$c!=null?$c:self.$opt_args()["$any?"]())!==false&&$b!==nil&&$b!=null?$b:self["$has_only_optional_kwargs?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$negative_arity()}else{return self.$positive_arity()}},TMP_26.$$arity=0);Opal.defn(self,"$negative_arity",TMP_28=function $$negative_arity(){var $a,$b,TMP_27,self=this,required_plain_args=nil,result=nil;required_plain_args=($a=($b=self.$args().$children()).$select,$a.$$p=(TMP_27=function(arg){var self=TMP_27.$$s||this;if(arg==null)arg=nil;return["arg","mlhs"]["$include?"](arg.$type())},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27),$a).call($b);result=required_plain_args.$size();if(($a=self["$has_required_kwargs?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result=$rb_plus(result,1)}result=$rb_minus(result["$-@"](),1);return result},TMP_28.$$arity=0);Opal.defn(self,"$positive_arity",TMP_29=function $$positive_arity(){var $a,self=this,result=nil;result=$rb_minus(self.$args().$size(),1);result=$rb_minus(result,self.$keyword_args().$size());if(($a=self.$keyword_args()["$any?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){result=$rb_plus(result,1)}return result},TMP_29.$$arity=0);Opal.defn(self,"$build_parameter",TMP_30=function $$build_parameter(parameter_type,parameter_name){var self=this;if(parameter_name!==false&&parameter_name!==nil&&parameter_name!=null){return"['"+parameter_type+"', '"+parameter_name+"']"}else{return"['"+parameter_type+"']"}},TMP_30.$$arity=2);Opal.cdecl($scope,"SEXP_TO_PARAMETERS",$hash2(["arg","mlhs","optarg","restarg","kwarg","kwoptarg","kwrestarg"],{arg:"req",mlhs:"req",optarg:"opt",restarg:"rest",kwarg:"keyreq",kwoptarg:"key",kwrestarg:"keyrest"}));Opal.defn(self,"$parameters_code",TMP_32=function $$parameters_code(){var $a,$b,TMP_31,self=this,stringified_parameters=nil;stringified_parameters=($a=($b=self.$args().$children()).$map,$a.$$p=(TMP_31=function(arg){var self=TMP_31.$$s||this,value=nil;if(arg==null)arg=nil;value=function(){if(arg.$type()["$=="]("mlhs")){return nil}else{return arg["$[]"](1)}return nil}();return self.$build_parameter($scope.get("SEXP_TO_PARAMETERS")["$[]"](arg.$type()),value)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31),$a).call($b);if(($a=self.$block_arg())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){stringified_parameters["$<<"]("['block', '"+self.$block_arg()+"']")}return"["+stringified_parameters.$join(", ")+"]"},TMP_32.$$arity=0);return(Opal.defn(self,"$arity_checks",TMP_33=function $$arity_checks(){var $a,$b,$c,self=this,arity=nil,aritycode=nil,min_arity=nil,max_arity=nil;if(($a=self.arity_checks)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.arity_checks}arity=$rb_minus(self.$args().$size(),1);arity=$rb_minus(arity,self.$opt_args().$size());if(($a=self.$rest_arg())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){arity=$rb_minus(arity,1)}arity=$rb_minus(arity,self.$keyword_args().$size());if(($a=($b=($c=self.$opt_args()["$empty?"]()["$!"]())!==false&&$c!==nil&&$c!=null?$c:self.$keyword_args()["$empty?"]()["$!"]())!==false&&$b!==nil&&$b!=null?$b:self.$rest_arg())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){arity=$rb_minus(arity["$-@"](),1)}aritycode="var $arity = arguments.length;";self.arity_checks=[];if(($a=$rb_lt(arity,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){min_arity=$rb_plus(arity,1)["$-@"]();max_arity=$rb_minus(self.$args().$size(),1);if(($a=$rb_gt(min_arity,0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.arity_checks["$<<"]("$arity < "+min_arity)}if(($a=($b=max_arity!==false&&max_arity!==nil&&max_arity!=null)?self.$rest_arg()["$!"]():max_arity)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.arity_checks["$<<"]("$arity > "+max_arity)}}else{self.arity_checks["$<<"]("$arity !== "+arity)}return self.arity_checks},TMP_33.$$arity=0),nil)&&"arity_checks"})($scope.base,$scope.get("ScopeNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/iter"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$attr_accessor","$extract_block_arg","$extract_shadow_args","$split_args","$in_scope","$process","$inline_args_sexp","$identify!","$scope","$add_temp","$compile_block_arg","$compile_shadow_args","$compile_inline_args","$compile_post_args","$compile_norm_args","$arity_check?","$compiler","$compile_arity_check","$stmt","$body","$to_vars","$line","$unshift","$push","$has_break?","$arity","$parameters_code","$has_top_level_mlhs_arg?","$has_trailing_comma_in_args?","$select","$==","$type","$[]","$args","$each","$variable","$norm_args","$block_arg","$to_s","$block_name=","$is_a?","$last","$block_arg=","$to_sym","$pop","$add_local","$shadow_args","$each_with_index","$<<","$delete","$===","$args_sexp","$nil?","$s","$delete_at","$returns","$body_sexp","$keys","$mlhs_mapping","$any?","$meta","$>","$size","$arity_checks","$!","$top?","$def?","$class_scope?","$parent","$mid","$class?","$name","$module?","$identity","$join"]);self.$require("opal/nodes/node_with_args");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $IterNode(){}var self=$IterNode=$klass($base,$super,"IterNode",$IterNode);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_4,TMP_6,TMP_7,TMP_8,TMP_10,TMP_12,TMP_14,TMP_15,TMP_16,TMP_18,TMP_19,TMP_20;def.norm_args=nil;self.$handle("iter");self.$children("args_sexp","body_sexp");self.$attr_accessor("block_arg","shadow_args");Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this,inline_params=nil,to_vars=nil,identity=nil,body_code=nil;inline_params=nil;self.$extract_block_arg();self.$extract_shadow_args();self.$split_args();to_vars=identity=body_code=nil;($a=($b=self).$in_scope,$a.$$p=(TMP_1=function(){var self=TMP_1.$$s||this,$c;inline_params=self.$process(self.$inline_args_sexp());identity=self.$scope()["$identify!"]();self.$add_temp("self = "+identity+".$$s || this");self.$compile_block_arg();self.$compile_shadow_args();self.$compile_inline_args();self.$compile_post_args();self.$compile_norm_args();if(($c=self.$compiler()["$arity_check?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$compile_arity_check()}body_code=self.$stmt(self.$body());return to_vars=self.$scope().$to_vars()},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$a).call($b);self.$line(body_code);self.$unshift(to_vars);self.$unshift("("+identity+" = function(",inline_params,"){");self.$push("}, "+identity+".$$s = self,");if(($a=self.$compiler()["$has_break?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(" "+identity+".$$brk = $brk,")}self.$push(" "+identity+".$$arity = "+self.$arity()+",");if(($a=self.$compiler()["$arity_check?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(" "+identity+".$$parameters = "+self.$parameters_code()+",")}if(($a=self["$has_top_level_mlhs_arg?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(" "+identity+".$$has_top_level_mlhs_arg = true,")}if(($a=self["$has_trailing_comma_in_args?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(" "+identity+".$$has_trailing_comma_in_args = true,")}return self.$push(" "+identity+")")},TMP_2.$$arity=0);Opal.defn(self,"$norm_args",TMP_4=function $$norm_args(){var $a,$b,$c,TMP_3,self=this;return($a=self.norm_args)!==false&&$a!==nil&&$a!=null?$a:self.norm_args=($b=($c=self.$args()["$[]"]($range(1,-1,false))).$select,$b.$$p=(TMP_3=function(arg){var self=TMP_3.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("arg")},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$b).call($c)},TMP_4.$$arity=0);Opal.defn(self,"$compile_norm_args",TMP_6=function $$compile_norm_args(){var $a,$b,TMP_5,self=this;return($a=($b=self.$norm_args()).$each,$a.$$p=(TMP_5=function(arg){var self=TMP_5.$$s||this;if(arg==null)arg=nil;arg=self.$variable(arg["$[]"](1));return self.$push("if ("+arg+" == null) "+arg+" = nil;")},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5),$a).call($b)},TMP_6.$$arity=0);Opal.defn(self,"$compile_block_arg",TMP_7=function $$compile_block_arg(){var $a,$b,self=this,block_arg=nil,scope_name=nil;if(($a=self.$block_arg())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block_arg=self.$variable(self.$block_arg().$to_s());$a=[block_arg],$b=self.$scope(),$b["$block_name="].apply($b,$a),$a[$a.length-1];self.$scope().$add_temp(block_arg);scope_name=self.$scope()["$identify!"]();return self.$line(""+block_arg+" = "+scope_name+".$$p || nil, "+scope_name+".$$p = null;")}else{return nil}},TMP_7.$$arity=0);Opal.defn(self,"$extract_block_arg",TMP_8=function $$extract_block_arg(){var $a,$b,$c,self=this;if(($a=($b=($c=self.$args()["$is_a?"]($scope.get("Sexp")),$c!==false&&$c!==nil&&$c!=null?self.$args().$last()["$is_a?"]($scope.get("Sexp")):$c),$b!==false&&$b!==nil&&$b!=null?self.$args().$last().$type()["$=="]("block_pass"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $a=[self.$args().$pop()["$[]"](1)["$[]"](1).$to_sym()],$b=self,$b["$block_arg="].apply($b,$a),$a[$a.length-1]}else{return nil}},TMP_8.$$arity=0);Opal.defn(self,"$compile_shadow_args",TMP_10=function $$compile_shadow_args(){var $a,$b,TMP_9,self=this;return($a=($b=self.$shadow_args()).$each,$a.$$p=(TMP_9=function(shadow_arg){var self=TMP_9.$$s||this;if(shadow_arg==null)shadow_arg=nil;return self.$scope().$add_local(shadow_arg.$last())},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9),$a).call($b)},TMP_10.$$arity=0);Opal.defn(self,"$extract_shadow_args",TMP_12=function $$extract_shadow_args(){var $a,$b,TMP_11,self=this;if(($a=self.$args()["$is_a?"]($scope.get("Sexp")))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.shadow_args=[];return($a=($b=self.$args().$children()).$each_with_index,$a.$$p=(TMP_11=function(arg,idx){var self=TMP_11.$$s||this;if(self.shadow_args==null)self.shadow_args=nil;if(arg==null)arg=nil;if(idx==null)idx=nil;if(arg.$type()["$=="]("shadowarg")){return self.shadow_args["$<<"](self.$args().$delete(arg))}else{return nil}},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11),$a).call($b)}else{return nil}},TMP_12.$$arity=0);Opal.defn(self,"$args",TMP_14=function $$args(){var $a,$b,$c,TMP_13,self=this,sexp=nil,caught_blank_argument=nil;sexp=function(){if(($a=($b=$scope.get("Fixnum")["$==="](self.$args_sexp()))!==false&&$b!==nil&&$b!=null?$b:self.$args_sexp()["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$s("args")}else if(($a=($b=self.$args_sexp()["$is_a?"]($scope.get("Sexp")),$b!==false&&$b!==nil&&$b!=null?self.$args_sexp().$type()["$=="]("lasgn"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$s("args",($a=self).$s.apply($a,["arg"].concat(Opal.to_a(self.$args_sexp()["$[]"](1)))))}else{return self.$args_sexp()["$[]"](1)}return nil}();caught_blank_argument=false;($b=($c=sexp).$each_with_index,$b.$$p=(TMP_13=function(part,idx){var self=TMP_13.$$s||this,$d,$e;if(part==null)part=nil;if(idx==null)idx=nil;if(($d=($e=part["$is_a?"]($scope.get("Sexp")),$e!==false&&$e!==nil&&$e!=null?part.$last()["$=="]("_"):$e))!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){if(caught_blank_argument!==false&&caught_blank_argument!==nil&&caught_blank_argument!=null){sexp.$delete_at(idx)}return caught_blank_argument=true}else{return nil}},TMP_13.$$s=self,TMP_13.$$arity=2,TMP_13),$b).call($c);return sexp},TMP_14.$$arity=0);Opal.defn(self,"$body",TMP_15=function $$body(){var $a,self=this;return self.$compiler().$returns(($a=self.$body_sexp())!==false&&$a!==nil&&$a!=null?$a:self.$s("nil"))},TMP_15.$$arity=0);Opal.defn(self,"$mlhs_args",TMP_16=function $$mlhs_args(){var self=this;return self.$scope().$mlhs_mapping().$keys()},TMP_16.$$arity=0);Opal.defn(self,"$has_top_level_mlhs_arg?",TMP_18=function(){var $a,$b,TMP_17,self=this;return($a=($b=self.$args().$children())["$any?"],$a.$$p=(TMP_17=function(arg){var self=TMP_17.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("mlhs")},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17),$a).call($b)},TMP_18.$$arity=0);Opal.defn(self,"$has_trailing_comma_in_args?",TMP_19=function(){var self=this;return self.$args().$meta()["$[]"]("has_trailing_comma")},TMP_19.$$arity=0);return(Opal.defn(self,"$compile_arity_check",TMP_20=function $$compile_arity_check(){var $a,$b,$c,$d,self=this,parent_scope=nil,context=nil,identity=nil;if(($a=$rb_gt(self.$arity_checks().$size(),0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){parent_scope=self.$scope();while(($b=(($c=($d=parent_scope["$top?"]())!==false&&$d!==nil&&$d!=null?$d:parent_scope["$def?"]())!==false&&$c!==nil&&$c!=null?$c:parent_scope["$class_scope?"]())["$!"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){parent_scope=parent_scope.$parent()}context=function(){if(($a=parent_scope["$top?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"'<main>'"}else if(($a=parent_scope["$def?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"'"+parent_scope.$mid()+"'"}else if(($a=parent_scope["$class?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"'<class:"+parent_scope.$name()+">'"}else if(($a=parent_scope["$module?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"'<module:"+parent_scope.$name()+">'"}else{return nil}return nil}();identity=self.$scope().$identity();self.$line("if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {");self.$line(" var $arity = arguments.length;");self.$line(" if ("+self.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+self.$arity()+", "+context+"); }");return self.$line("}")}else{return nil}},TMP_20.$$arity=0),nil)&&"compile_arity_check"})($scope.base,$scope.get("NodeWithArgs"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/def"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$attr_accessor","$is_a?","$last","$args","$==","$type","$[]","$pop","$extract_block_arg","$split_args","$block_arg","$to_sym","$variable","$in_scope","$mid=","$mid","$scope","$recvr","$defs=","$uses_block!","$add_arg","$block_name=","$process","$inline_args_sexp","$stmt","$returns","$compiler","$stmts","$add_temp","$compile_inline_args","$compile_post_args","$identify!","$identity","$compile_block_arg","$arity_check?","$compile_arity_check","$uses_zuper","$add_local","$line","$unshift","$current_indent","$to_vars","$catch_return","$push","$valid_name?","$arity","$parameters_code","$recv","$iter?","$module?","$class?","$sclass?","$defs","$eval?","$top?","$def?","$raise","$expr?","$wrap","$>","$size","$arity_checks","$inspect","$to_s","$join"]);self.$require("opal/nodes/node_with_args");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $DefNode(){}var self=$DefNode=$klass($base,$super,"DefNode",$DefNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3,TMP_4;self.$handle("def");self.$children("recvr","mid","args","stmts");self.$attr_accessor("block_arg");Opal.defn(self,"$extract_block_arg",TMP_1=function $$extract_block_arg(){var $a,$b,self=this;if(($a=($b=self.$args().$last()["$is_a?"]($scope.get("Sexp")),$b!==false&&$b!==nil&&$b!=null?self.$args().$last().$type()["$=="]("blockarg"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.block_arg=self.$args().$pop()["$[]"](1)}else{return nil}},TMP_1.$$arity=0);Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,$b,TMP_2,$c,self=this,inline_params=nil,scope_name=nil,block_name=nil,function_name=nil;self.$extract_block_arg();self.$split_args();inline_params=nil;scope_name=nil;if(($a=self.$block_arg())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){block_name=self.$variable(self.$block_arg()).$to_sym()}($a=($b=self).$in_scope,$a.$$p=(TMP_2=function(){var self=TMP_2.$$s||this,$c,$d,$e,stmt_code=nil;$c=[self.$mid()],$d=self.$scope(),$d["$mid="].apply($d,$c),$c[$c.length-1];if(($c=self.$recvr())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){$c=[true],$d=self.$scope(),$d["$defs="].apply($d,$c),$c[$c.length-1]}if(block_name!==false&&block_name!==nil&&block_name!=null){self.$scope()["$uses_block!"]();self.$scope().$add_arg(block_name)}$c=[($e=block_name)!==false&&$e!==nil&&$e!=null?$e:"$yield"],$d=self.$scope(),$d["$block_name="].apply($d,$c),$c[$c.length-1];inline_params=self.$process(self.$inline_args_sexp());stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts()));self.$add_temp("self = this");self.$compile_inline_args();self.$compile_post_args();self.$scope()["$identify!"]();scope_name=self.$scope().$identity();self.$compile_block_arg();if(($c=self.$compiler()["$arity_check?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$compile_arity_check()}if(($c=self.$scope().$uses_zuper())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$add_local("$zuper");self.$add_local("$zuper_index");self.$add_local("$zuper_length");self.$line("$zuper = [];");self.$line();self.$line("for($zuper_index = 0; $zuper_index < arguments.length; $zuper_index++) {");self.$line(" $zuper[$zuper_index] = arguments[$zuper_index];");self.$line("}")}self.$unshift("\n"+self.$current_indent(),self.$scope().$to_vars());self.$line(stmt_code);if(($c=self.$scope().$catch_return())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$unshift("try {\n");self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }");return self.$push(" throw $returner; }")}else{return nil}},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2),$a).call($b);function_name=function(){if(($a=self["$valid_name?"](self.$mid()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return" $$"+self.$mid()}else{return""}return nil}();self.$unshift(") {");self.$unshift(inline_params);self.$unshift("function"+function_name+"(");if(scope_name!==false&&scope_name!==nil&&scope_name!=null){self.$unshift(""+scope_name+" = ")}self.$line("}");self.$push(", "+scope_name+".$$arity = "+self.$arity());if(($a=self.$compiler()["$arity_check?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(", "+scope_name+".$$parameters = "+self.$parameters_code())}if(($a=self.$recvr())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.defs(",self.$recv(self.$recvr()),", '$"+self.$mid()+"', ")}else if(($a=self.$scope()["$iter?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.def(self, '$"+self.$mid()+"', ")}else if(($a=($c=self.$scope()["$module?"]())!==false&&$c!==nil&&$c!=null?$c:self.$scope()["$class?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.defn(self, '$"+self.$mid()+"', ")}else if(($a=($c=self.$scope()["$sclass?"](),$c!==false&&$c!==nil&&$c!=null?self.$scope().$defs():$c))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.defs(self, '$"+self.$mid()+"', ")}else if(($a=self.$scope()["$sclass?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.defn(self, '$"+self.$mid()+"', ")}else if(($a=self.$compiler()["$eval?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.def(self, '$"+self.$mid()+"', ")}else if(($a=self.$scope()["$top?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.defn(Opal.Object, '$"+self.$mid()+"', ")}else if(($a=self.$scope()["$def?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$unshift("Opal.def(self, '$"+self.$mid()+"', ")}else{self.$raise("Unsupported use of `def`; please file a bug at https://github.com/opal/opal/issues/new reporting this message.")}self.$push(")");if(($a=self["$expr?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(",", nil) && '"+self.$mid()+"'")}else{return nil}},TMP_3.$$arity=0);return(Opal.defn(self,"$compile_arity_check",TMP_4=function $$compile_arity_check(){var $a,self=this,meth=nil;if(($a=$rb_gt(self.$arity_checks().$size(),0))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){meth=self.$scope().$mid().$to_s().$inspect();self.$line("var $arity = arguments.length;");return self.$push(" if ("+self.$arity_checks().$join(" || ")+") { Opal.ac($arity, "+self.$arity()+", this, "+meth+"); }")}else{return nil}},TMP_4.$$arity=0),nil)&&"compile_arity_check"})($scope.base,$scope.get("NodeWithArgs"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$truthy","$falsy","$skip_check_present?","$skip_check_present_not?","$push","$js_truthy","$test","$indent","$line","$stmt","$==","$type","$needs_wrapper?","$wrap","$returns","$compiler","$true_body","$s","$false_body","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $IfNode(){}var self=$IfNode=$klass($base,$super,"IfNode",$IfNode);var def=self.$$proto,$scope=self.$$scope,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8;self.$handle("if");self.$children("test","true_body","false_body");Opal.cdecl($scope,"RUBY_ENGINE_CHECK",["call",["const","RUBY_ENGINE"],"==",["arglist",["str","opal"]]]);Opal.cdecl($scope,"RUBY_ENGINE_CHECK_NOT",["call",["const","RUBY_ENGINE"],"!=",["arglist",["str","opal"]]]);Opal.cdecl($scope,"RUBY_PLATFORM_CHECK",["call",["const","RUBY_PLATFORM"],"==",["arglist",["str","opal"]]]);Opal.cdecl($scope,"RUBY_PLATFORM_CHECK_NOT",["call",["const","RUBY_PLATFORM"],"!=",["arglist",["str","opal"]]]);Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,$b,TMP_1,$c,TMP_2,self=this,truthy=nil,falsy=nil;$a=[self.$truthy(),self.$falsy()],truthy=$a[0],falsy=$a[1],$a;if(($a=self["$skip_check_present?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){falsy=nil}if(($a=self["$skip_check_present_not?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){truthy=nil}self.$push("if (",self.$js_truthy(self.$test()),") {");if(truthy!==false&&truthy!==nil&&truthy!=null){($a=($b=self).$indent,$a.$$p=(TMP_1=function(){var self=TMP_1.$$s||this;return self.$line(self.$stmt(truthy))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$a).call($b)}if(falsy!==false&&falsy!==nil&&falsy!=null){if(falsy.$type()["$=="]("if")){self.$line("} else ",self.$stmt(falsy))}else{($a=($c=self).$indent,$a.$$p=(TMP_2=function(){var self=TMP_2.$$s||this;self.$line("} else {");return self.$line(self.$stmt(falsy))},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2),$a).call($c);self.$line("}")}}else{self.$push("}")}if(($a=self["$needs_wrapper?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},TMP_3.$$arity=0);Opal.defn(self,"$skip_check_present?",TMP_4=function(){var $a,self=this;return($a=self.$test()["$=="]($scope.get("RUBY_ENGINE_CHECK")))!==false&&$a!==nil&&$a!=null?$a:self.$test()["$=="]($scope.get("RUBY_PLATFORM_CHECK"))},TMP_4.$$arity=0);Opal.defn(self,"$skip_check_present_not?",TMP_5=function(){var $a,self=this;return($a=self.$test()["$=="]($scope.get("RUBY_ENGINE_CHECK_NOT")))!==false&&$a!==nil&&$a!=null?$a:self.$test()["$=="]($scope.get("RUBY_PLATFORM_CHECK_NOT"))},TMP_5.$$arity=0);Opal.defn(self,"$truthy",TMP_6=function $$truthy(){var $a,self=this;if(($a=self["$needs_wrapper?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compiler().$returns(($a=self.$true_body())!==false&&$a!==nil&&$a!=null?$a:self.$s("nil"))}else{return self.$true_body()}},TMP_6.$$arity=0);Opal.defn(self,"$falsy",TMP_7=function $$falsy(){var $a,self=this;if(($a=self["$needs_wrapper?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compiler().$returns(($a=self.$false_body())!==false&&$a!==nil&&$a!=null?$a:self.$s("nil"))}else{return self.$false_body()}},TMP_7.$$arity=0);return(Opal.defn(self,"$needs_wrapper?",TMP_8=function(){var $a,self=this;return($a=self["$expr?"]())!==false&&$a!==nil&&$a!=null?$a:self["$recv?"]()},TMP_8.$$arity=0),nil)&&"needs_wrapper?"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/logic"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$in_while?","$push","$expr_or_nil","$value","$wrap","$compile_while","$iter?","$scope","$compile_iter","$error","$[]","$while_loop","$stmt?","$has_break!","$compiler","$line","$break_val","$nil?","$expr","$s","$>","$size","$[]=","$identity","$with_temp","$==","$empty_splat?","$type","$recv","$rhs","$compile_if","$compile_ternary","$raise","$lhs","$indent","$js_truthy_optimize","$find_parent_def","$expr?","$def?","$return_in_iter?","$return_expr_in_def?","$scope_to_catch_return","$catch_return=","$return_val","$to_s"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $NextNode(){}var self=$NextNode=$klass($base,$super,"NextNode",$NextNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;self.$handle("next");self.$children("value");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var $a,self=this;if(($a=self["$in_while?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("continue;")}self.$push(self.$expr_or_nil(self.$value()));return self.$wrap("return ",";")},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $BreakNode(){}var self=$BreakNode=$klass($base,$super,"BreakNode",$BreakNode);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_3,TMP_4,TMP_5;self.$handle("break");self.$children("value");Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,self=this;if(($a=self["$in_while?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compile_while()}else if(($a=self.$scope()["$iter?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compile_iter()}else{return self.$error("void value expression: cannot use break outside of iter/while")}},TMP_2.$$arity=0);Opal.defn(self,"$compile_while",TMP_3=function $$compile_while(){var $a,self=this;if(($a=self.$while_loop()["$[]"]("closure"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("return ",self.$expr_or_nil(self.$value()))}else{return self.$push("break;")}},TMP_3.$$arity=0);Opal.defn(self,"$compile_iter",TMP_4=function $$compile_iter(){var $a,self=this;if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$error("break must be used as a statement")}self.$compiler()["$has_break!"]();return self.$line("Opal.brk(",self.$break_val(),", $brk)")},TMP_4.$$arity=0);return(Opal.defn(self,"$break_val",TMP_5=function $$break_val(){var $a,self=this;if(($a=self.$value()["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$expr(self.$s("nil"))}else if(($a=$rb_gt(self.$children().$size(),1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$expr(($a=self).$s.apply($a,["array"].concat(Opal.to_a(self.$children()))))}else{return self.$expr(self.$value())}},TMP_5.$$arity=0),nil)&&"break_val"})($scope.base,$scope.get("Base"));(function($base,$super){function $RedoNode(){}var self=$RedoNode=$klass($base,$super,"RedoNode",$RedoNode);var def=self.$$proto,$scope=self.$$scope,TMP_6,TMP_7,TMP_8;self.$handle("redo");Opal.defn(self,"$compile",TMP_6=function $$compile(){var $a,self=this;if(($a=self["$in_while?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compile_while()}else if(($a=self.$scope()["$iter?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compile_iter()}else{return self.$push("REDO()")}},TMP_6.$$arity=0);Opal.defn(self,"$compile_while",TMP_7=function $$compile_while(){var self=this;self.$while_loop()["$[]="]("use_redo",true);return self.$push(""+self.$while_loop()["$[]"]("redo_var")+" = true")},TMP_7.$$arity=0);return(Opal.defn(self,"$compile_iter",TMP_8=function $$compile_iter(){var self=this;return self.$push("return "+self.$scope().$identity()+".apply(null, $slice.call(arguments))")},TMP_8.$$arity=0),nil)&&"compile_iter"})($scope.base,$scope.get("Base"));(function($base,$super){function $NotNode(){}var self=$NotNode=$klass($base,$super,"NotNode",$NotNode);var def=self.$$proto,$scope=self.$$scope,TMP_10;self.$handle("not");self.$children("value");return(Opal.defn(self,"$compile",TMP_10=function $$compile(){var $a,$b,TMP_9,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_9=function(tmp){var self=TMP_9.$$s||this;if(tmp==null)tmp=nil;self.$push(self.$expr(self.$value()));return self.$wrap("("+tmp+" = ",", ("+tmp+" === nil || "+tmp+" === false || "+tmp+" == null))")},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9),$a).call($b)},TMP_10.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $SplatNode(){}var self=$SplatNode=$klass($base,$super,"SplatNode",$SplatNode);var def=self.$$proto,$scope=self.$$scope,TMP_11,TMP_12;self.$handle("splat");self.$children("value");Opal.defn(self,"$empty_splat?",TMP_11=function(){var $a,self=this;return($a=self.$value()["$=="](["nil"]))!==false&&$a!==nil&&$a!=null?$a:self.$value()["$=="](["paren",["nil"]])},TMP_11.$$arity=0);return(Opal.defn(self,"$compile",TMP_12=function $$compile(){var $a,self=this;if(($a=self["$empty_splat?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("[]")}else if(self.$value().$type()["$=="]("sym")){return self.$push("[",self.$expr(self.$value()),"]")}else{return self.$push("Opal.to_a(",self.$recv(self.$value()),")")}},TMP_12.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $BinaryOp(){}var self=$BinaryOp=$klass($base,$super,"BinaryOp",$BinaryOp);var def=self.$$proto,$scope=self.$$scope,TMP_13,TMP_14,TMP_15;Opal.defn(self,"$compile",TMP_13=function $$compile(){var self=this;if(self.$rhs().$type()["$=="]("break")){return self.$compile_if()}else{return self.$compile_ternary()}},TMP_13.$$arity=0);Opal.defn(self,"$compile_ternary",TMP_14=function $$compile_ternary(){var self=this;return self.$raise($scope.get("NotImplementedError"))},TMP_14.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_15=function $$compile_if(){var self=this;return self.$raise($scope.get("NotImplementedError"))},TMP_15.$$arity=0),nil)&&"compile_if"})($scope.base,$scope.get("Base"));(function($base,$super){function $OrNode(){}var self=$OrNode=$klass($base,$super,"OrNode",$OrNode);var def=self.$$proto,$scope=self.$$scope,TMP_17,TMP_21;self.$handle("or");self.$children("lhs","rhs");Opal.defn(self,"$compile_ternary",TMP_17=function $$compile_ternary(){var $a,$b,TMP_16,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_16=function(tmp){var self=TMP_16.$$s||this;if(tmp==null)tmp=nil;self.$push("((("+tmp+" = ");self.$push(self.$expr(self.$lhs()));self.$push(") !== false && "+tmp+" !== nil && "+tmp+" != null) ? "+tmp+" : ");self.$push(self.$expr(self.$rhs()));return self.$push(")")},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16),$a).call($b)},TMP_17.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_21=function $$compile_if(){var $a,$b,TMP_18,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_18=function(tmp){var self=TMP_18.$$s||this,$c,$d,TMP_19,$e,TMP_20;if(tmp==null)tmp=nil;self.$push("if ("+tmp+" = ",self.$expr(self.$lhs()),", "+tmp+" !== false && "+tmp+" !== nil && "+tmp+" != null) {");($c=($d=self).$indent,$c.$$p=(TMP_19=function(){var self=TMP_19.$$s||this;return self.$line(tmp)},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19),$c).call($d);self.$line("} else {");($c=($e=self).$indent,$c.$$p=(TMP_20=function(){var self=TMP_20.$$s||this;return self.$line(self.$expr(self.$rhs()))},TMP_20.$$s=self,TMP_20.$$arity=0,TMP_20),$c).call($e);return self.$line("}")},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18),$a).call($b)},TMP_21.$$arity=0),nil)&&"compile_if"})($scope.base,$scope.get("BinaryOp"));(function($base,$super){function $AndNode(){}var self=$AndNode=$klass($base,$super,"AndNode",$AndNode);var def=self.$$proto,$scope=self.$$scope,TMP_23,TMP_27;self.$handle("and");self.$children("lhs","rhs");Opal.defn(self,"$compile_ternary",TMP_23=function $$compile_ternary(){var $a,$b,TMP_22,self=this,truthy_opt=nil;truthy_opt=nil;return($a=($b=self).$with_temp,$a.$$p=(TMP_22=function(tmp){var self=TMP_22.$$s||this,$c;if(tmp==null)tmp=nil;if(($c=truthy_opt=self.$js_truthy_optimize(self.$lhs()))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$push("(("+tmp+" = ",truthy_opt);self.$push(") ? ");self.$push(self.$expr(self.$rhs()));return self.$push(" : ",self.$expr(self.$lhs()),")")}else{self.$push("("+tmp+" = ");self.$push(self.$expr(self.$lhs()));self.$push(", "+tmp+" !== false && "+tmp+" !== nil && "+tmp+" != null ?");self.$push(self.$expr(self.$rhs()));return self.$push(" : "+tmp+")")}},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22),$a).call($b)},TMP_23.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_27=function $$compile_if(){var $a,$b,TMP_24,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_24=function(tmp){var self=TMP_24.$$s||this,$c,$d,TMP_25,$e,TMP_26,truthy_opt=nil;if(tmp==null)tmp=nil;if(($c=truthy_opt=self.$js_truthy_optimize(self.$lhs()))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$push("if ("+tmp+" = ",truthy_opt,") {")}else{self.$push("if ("+tmp+" = ",self.$expr(self.$lhs()),", "+tmp+" !== false && "+tmp+" !== nil && "+tmp+" != null) {")}($c=($d=self).$indent,$c.$$p=(TMP_25=function(){var self=TMP_25.$$s||this;return self.$line(self.$expr(self.$rhs()))},TMP_25.$$s=self,TMP_25.$$arity=0,TMP_25),$c).call($d);self.$line("} else {");($c=($e=self).$indent,$c.$$p=(TMP_26=function(){var self=TMP_26.$$s||this;return self.$line(self.$expr(self.$lhs()))},TMP_26.$$s=self,TMP_26.$$arity=0,TMP_26),$c).call($e);return self.$line("}")},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24),$a).call($b)},TMP_27.$$arity=0),nil)&&"compile_if"})($scope.base,$scope.get("BinaryOp"));(function($base,$super){function $ReturnNode(){}var self=$ReturnNode=$klass($base,$super,"ReturnNode",$ReturnNode);var def=self.$$proto,$scope=self.$$scope,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32;self.$handle("return");self.$children("value");Opal.defn(self,"$return_val",TMP_28=function $$return_val(){var $a,self=this;if(($a=self.$value()["$nil?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$expr(self.$s("nil"))}else if(($a=$rb_gt(self.$children().$size(),1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$expr(($a=self).$s.apply($a,["array"].concat(Opal.to_a(self.$children()))))}else{return self.$expr(self.$value())}},TMP_28.$$arity=0);Opal.defn(self,"$return_in_iter?",TMP_29=function(){var $a,$b,self=this,parent_def=nil;if(($a=($b=self.$scope()["$iter?"](),$b!==false&&$b!==nil&&$b!=null?parent_def=self.$scope().$find_parent_def():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return parent_def}else{return nil}},TMP_29.$$arity=0);Opal.defn(self,"$return_expr_in_def?",TMP_30=function(){var $a,$b,self=this;if(($a=($b=self["$expr?"](),$b!==false&&$b!==nil&&$b!=null?self.$scope()["$def?"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$scope()}else{return nil}},TMP_30.$$arity=0);Opal.defn(self,"$scope_to_catch_return",TMP_31=function $$scope_to_catch_return(){var $a,self=this;return($a=self["$return_in_iter?"]())!==false&&$a!==nil&&$a!=null?$a:self["$return_expr_in_def?"]()},TMP_31.$$arity=0);return(Opal.defn(self,"$compile",TMP_32=function $$compile(){var $a,$b,self=this,def_scope=nil;if(($a=def_scope=self.$scope_to_catch_return())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[true],$b=def_scope,$b["$catch_return="].apply($b,$a),$a[$a.length-1];return self.$push("Opal.ret(",self.$return_val(),")")}else if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("return ",self.$return_val())}else{return self.$raise($scope.get("SyntaxError"),"void value expression: cannot return as an expression")}},TMP_32.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $JSReturnNode(){}var self=$JSReturnNode=$klass($base,$super,"JSReturnNode",$JSReturnNode);var def=self.$$proto,$scope=self.$$scope,TMP_33;self.$handle("js_return");self.$children("value");return(Opal.defn(self,"$compile",TMP_33=function $$compile(){var self=this;self.$push("return ");return self.$push(self.$expr(self.$value()))},TMP_33.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $JSTempNode(){}var self=$JSTempNode=$klass($base,$super,"JSTempNode",$JSTempNode);var def=self.$$proto,$scope=self.$$scope,TMP_34;self.$handle("js_tmp");self.$children("value");return(Opal.defn(self,"$compile",TMP_34=function $$compile(){var self=this;return self.$push(self.$value().$to_s())},TMP_34.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $BlockPassNode(){}var self=$BlockPassNode=$klass($base,$super,"BlockPassNode",$BlockPassNode);var def=self.$$proto,$scope=self.$$scope,TMP_35;self.$handle("block_pass");self.$children("value");return(Opal.defn(self,"$compile",TMP_35=function $$compile(){var self=this;return self.$push(self.$expr(self.$s("call",self.$value(),"to_proc",self.$s("arglist"))))},TMP_35.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/definitions"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$push","$process","$value","$each","$[]","$==","$<<","$expr","$s","$to_s","$>","$length","$!=","$first","$line","$mid_to_jsid","$new_name","$old_name","$class?","$scope","$module?","$methods","$!","$stmt?","$type","$body","$stmt","$returns","$compiler","$wrap","$each_with_index","$empty?","$stmt_join","$find_inline_yield","$child_is_expr?","$class_scope?","$current_indent","$raw_expression?","$include?","$===","$[]=","$+","$has_temp?","$add_temp"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $SvalueNode(){}var self=$SvalueNode=$klass($base,$super,"SvalueNode",$SvalueNode);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.level=nil;self.$handle("svalue");self.$children("value");return(Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this;return self.$push(self.$process(self.$value(),self.level))},TMP_1.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $UndefNode(){}var self=$UndefNode=$klass($base,$super,"UndefNode",$UndefNode);var def=self.$$proto,$scope=self.$$scope,TMP_3;self.$handle("undef");return(Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,$b,TMP_2,self=this;return($a=($b=self.$children()).$each,$a.$$p=(TMP_2=function(child){var self=TMP_2.$$s||this,$c,$d,value=nil,statements=nil;if(child==null)child=nil;value=child["$[]"](1);statements=[];if(child["$[]"](0)["$=="]("js_return")){value=value["$[]"](1);statements["$<<"](self.$expr(self.$s("js_return")))}statements["$<<"]("Opal.udef(self, '$"+value.$to_s()+"');");if(($c=($d=$rb_gt(self.$children().$length(),1),$d!==false&&$d!==nil&&$d!=null?child["$!="](self.$children().$first()):$d))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return($c=self).$line.apply($c,Opal.to_a(statements))}else{return($d=self).$push.apply($d,Opal.to_a(statements))}},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b)},TMP_3.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $AliasNode(){}var self=$AliasNode=$klass($base,$super,"AliasNode",$AliasNode);var def=self.$$proto,$scope=self.$$scope,TMP_4,TMP_5,TMP_6;self.$handle("alias");self.$children("new_name","old_name");Opal.defn(self,"$new_mid",TMP_4=function $$new_mid(){var self=this;return self.$mid_to_jsid(self.$new_name()["$[]"](1).$to_s())},TMP_4.$$arity=0);Opal.defn(self,"$old_mid",TMP_5=function $$old_mid(){var self=this;return self.$mid_to_jsid(self.$old_name()["$[]"](1).$to_s())},TMP_5.$$arity=0);return(Opal.defn(self,"$compile",TMP_6=function $$compile(){var $a,$b,self=this;if(($a=($b=self.$scope()["$class?"]())!==false&&$b!==nil&&$b!=null?$b:self.$scope()["$module?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$scope().$methods()["$<<"]("$"+self.$new_name()["$[]"](1))}return self.$push("Opal.alias(self, '"+self.$new_name()["$[]"](1)+"', '"+self.$old_name()["$[]"](1)+"')")},TMP_6.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $BeginNode(){}var self=$BeginNode=$klass($base,$super,"BeginNode",$BeginNode);var def=self.$$proto,$scope=self.$$scope,TMP_7;def.level=nil;self.$handle("begin");self.$children("body");return(Opal.defn(self,"$compile",TMP_7=function $$compile(){var $a,$b,self=this;if(($a=($b=self["$stmt?"]()["$!"](),$b!==false&&$b!==nil&&$b!=null?self.$body().$type()["$=="]("block"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(self.$stmt(self.$compiler().$returns(self.$body())));return self.$wrap("(function() {","})()")}else{return self.$push(self.$process(self.$body(),self.level))}},TMP_7.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $ParenNode(){}var self=$ParenNode=$klass($base,$super,"ParenNode",$ParenNode);var def=self.$$proto,$scope=self.$$scope,TMP_9;def.level=nil;self.$handle("paren");self.$children("body");return(Opal.defn(self,"$compile",TMP_9=function $$compile(){var $a,$b,TMP_8,self=this;if(self.$body().$type()["$=="]("block")){($a=($b=self.$body().$children()).$each_with_index,$a.$$p=(TMP_8=function(child,idx){var self=TMP_8.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(self.$expr(child))},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8),$a).call($b);return self.$wrap("(",")")}else{self.$push(self.$process(self.$body(),self.level));if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.$wrap("(",")")}}},TMP_9.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $BlockNode(){}var self=$BlockNode=$klass($base,$super,"BlockNode",$BlockNode);var def=self.$$proto,$scope=self.$$scope,TMP_11,TMP_12,TMP_13,TMP_14,TMP_17;def.level=nil;self.$handle("block");Opal.defn(self,"$compile",TMP_11=function $$compile(){var $a,$b,TMP_10,self=this;if(($a=self.$children()["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("nil")}return($a=($b=self.$children()).$each_with_index,$a.$$p=(TMP_10=function(child,idx){var self=TMP_10.$$s||this,$c,yasgn=nil;if(self.level==null)self.level=nil;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(self.$stmt_join())}if(($c=yasgn=self.$find_inline_yield(child))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$push(self.$compiler().$process(yasgn,self.level));self.$push(";")}self.$push(self.$compiler().$process(child,self.level));if(($c=self["$child_is_expr?"](child))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.$push(";")}else{return nil}},TMP_10.$$s=self,TMP_10.$$arity=2,TMP_10),$a).call($b)},TMP_11.$$arity=0);Opal.defn(self,"$stmt_join",TMP_12=function $$stmt_join(){var $a,self=this;if(($a=self.$scope()["$class_scope?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"\n\n"+self.$current_indent()}else{return"\n"+self.$current_indent()}},TMP_12.$$arity=0);Opal.defn(self,"$child_is_expr?",TMP_13=function(child){var $a,self=this;return $a=self["$raw_expression?"](child),$a!==false&&$a!==nil&&$a!=null?["stmt","stmt_closure"]["$include?"](self.level):$a},TMP_13.$$arity=1);Opal.defn(self,"$raw_expression?",TMP_14=function(child){var self=this;return["xstr","dxstr"]["$include?"](child.$type())["$!"]()},TMP_14.$$arity=1);return(Opal.defn(self,"$find_inline_yield",TMP_17=function $$find_inline_yield(stmt){var $a,$b,TMP_15,$c,TMP_16,self=this,found=nil,$case=nil,arglist=nil;found=nil;$case=stmt.$first();if("js_return"["$==="]($case)){if(($a=found=self.$find_inline_yield(stmt["$[]"](1)))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){found=found["$[]"](2)}}else if("array"["$==="]($case)){($a=($b=stmt["$[]"]($range(1,-1,false))).$each_with_index,$a.$$p=(TMP_15=function(el,idx){var self=TMP_15.$$s||this;if(el==null)el=nil;if(idx==null)idx=nil;if(el.$first()["$=="]("yield")){found=el;return stmt["$[]="]($rb_plus(idx,1),self.$s("js_tmp","$yielded"))}else{return nil}},TMP_15.$$s=self,TMP_15.$$arity=2,TMP_15),$a).call($b)}else if("call"["$==="]($case)){arglist=stmt["$[]"](3);($a=($c=arglist["$[]"]($range(1,-1,false))).$each_with_index,$a.$$p=(TMP_16=function(el,idx){var self=TMP_16.$$s||this;if(el==null)el=nil;if(idx==null)idx=nil;if(el.$first()["$=="]("yield")){found=el;return arglist["$[]="]($rb_plus(idx,1),self.$s("js_tmp","$yielded"))}else{return nil}},TMP_16.$$s=self,TMP_16.$$arity=2,TMP_16),$a).call($c)}if(found!==false&&found!==nil&&found!=null){if(($a=self.$scope()["$has_temp?"]("$yielded"))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{self.$scope().$add_temp("$yielded")}return self.$s("yasgn","$yielded",found)}else{return nil}},TMP_17.$$arity=1),nil)&&"find_inline_yield"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$find_yielding_scope","$uses_block!","$block_name","$yields_single_arg?","$push","$expr","$first","$wrap","$s","$uses_splat?","$scope","$def?","$parent","$!","$==","$size","$any?","$type","$handle","$compile_call","$children","$[]","$yield_args","$var_name"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $BaseYieldNode(){}var self=$BaseYieldNode=$klass($base,$super,"BaseYieldNode",$BaseYieldNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_5;Opal.defn(self,"$compile_call",TMP_1=function $$compile_call(children,level){var $a,$b,self=this,yielding_scope=nil,block_name=nil;yielding_scope=self.$find_yielding_scope();yielding_scope["$uses_block!"]();block_name=($a=yielding_scope.$block_name())!==false&&$a!==nil&&$a!=null?$a:"$yield";if(($a=self["$yields_single_arg?"](children))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(self.$expr(children.$first()));return self.$wrap("Opal.yield1("+block_name+", ",")")}else{self.$push(self.$expr(($a=self).$s.apply($a,["arglist"].concat(Opal.to_a(children)))));if(($b=self["$uses_splat?"](children))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$wrap("Opal.yieldX("+block_name+", ",")")}else{return self.$wrap("Opal.yieldX("+block_name+", [","])")}}},TMP_1.$$arity=2);Opal.defn(self,"$find_yielding_scope",TMP_2=function $$find_yielding_scope(){var $a,$b,$c,self=this,working=nil;working=self.$scope();while(working!==false&&working!==nil&&working!=null){if(($b=($c=working.$block_name())!==false&&$c!==nil&&$c!=null?$c:working["$def?"]())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){break}working=working.$parent()}return working},TMP_2.$$arity=0);Opal.defn(self,"$yields_single_arg?",TMP_3=function(children){var $a,self=this;return $a=self["$uses_splat?"](children)["$!"](),$a!==false&&$a!==nil&&$a!=null?children.$size()["$=="](1):$a},TMP_3.$$arity=1);return(Opal.defn(self,"$uses_splat?",TMP_5=function(children){var $a,$b,TMP_4,self=this;return($a=($b=children)["$any?"],$a.$$p=(TMP_4=function(child){var self=TMP_4.$$s||this;if(child==null)child=nil;return child.$type()["$=="]("splat")},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4),$a).call($b)},TMP_5.$$arity=1),nil)&&"uses_splat?"})($scope.base,$scope.get("Base"));(function($base,$super){function $YieldNode(){}var self=$YieldNode=$klass($base,$super,"YieldNode",$YieldNode);var def=self.$$proto,$scope=self.$$scope,TMP_6;def.level=nil;self.$handle("yield");return(Opal.defn(self,"$compile",TMP_6=function $$compile(){var self=this;return self.$compile_call(self.$children(),self.level)},TMP_6.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("BaseYieldNode"));(function($base,$super){function $YasgnNode(){}var self=$YasgnNode=$klass($base,$super,"YasgnNode",$YasgnNode);var def=self.$$proto,$scope=self.$$scope,TMP_7;self.$handle("yasgn");self.$children("var_name","yield_args");return(Opal.defn(self,"$compile",TMP_7=function $$compile(){var $a,self=this;self.$compile_call(($a=self).$s.apply($a,Opal.to_a(self.$yield_args()["$[]"]($range(1,-1,false)))),"stmt");return self.$wrap("("+self.$var_name()+" = ",")")},TMP_7.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("BaseYieldNode"));(function($base,$super){function $ReturnableYieldNode(){}var self=$ReturnableYieldNode=$klass($base,$super,"ReturnableYieldNode",$ReturnableYieldNode);var def=self.$$proto,$scope=self.$$scope,TMP_8;def.level=nil;self.$handle("returnable_yield");return(Opal.defn(self,"$compile",TMP_8=function $$compile(){var self=this;self.$compile_call(self.$children(),self.level);return self.$wrap("return ",";")},TMP_8.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("BaseYieldNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/rescue"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$stmt?","$lhs","$returns","$compiler","$rhs","$line","$expr","$body","$indent","$new","$rescue_val","$wrap","$push","$in_ensure","$process","$body_sexp","$has_rescue_else?","$unshift","$rescue_else_sexp","$scope","$ensr_sexp","$wrap_in_closure?","$begn","$==","$type","$s","$ensr","$recv?","$expr?","$rescue_else_sexp=","$detect","$!=","$[]","$handle_rescue_else_manually?","$body_code","$each_with_index","$!","$in_ensure?","$empty?","$rescue_exprs","$rescue_variable","$[]=","$rescue_body","$===","$include?","$rescue_variable?","$last","$args","$dup","$pop"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $RescueModNode(){}var self=$RescueModNode=$klass($base,$super,"RescueModNode",$RescueModNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_4;self.$handle("rescue_mod");self.$children("lhs","rhs");Opal.defn(self,"$body",TMP_1=function $$body(){var $a,self=this;if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$lhs()}else{return self.$compiler().$returns(self.$lhs())}},TMP_1.$$arity=0);Opal.defn(self,"$rescue_val",TMP_2=function $$rescue_val(){var $a,self=this;if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$rhs()}else{return self.$compiler().$returns(self.$rhs())}},TMP_2.$$arity=0);return(Opal.defn(self,"$compile",TMP_4=function $$compile(){var $a,$b,TMP_3,self=this;self.$line("try {",self.$expr(self.$body())," } catch ($err) { ");($a=($b=self).$indent,$a.$$p=(TMP_3=function(){var self=TMP_3.$$s||this;self.$line("if (Opal.rescue($err, [",self.$expr($scope.get("Sexp").$new(["const","StandardError"])),"])) {");self.$line(self.$expr(self.$rescue_val()));return self.$line("} else { throw $err; } }")},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3),$a).call($b);if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.$wrap("(function() {","})()")}},TMP_4.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"));(function($base,$super){function $EnsureNode(){}var self=$EnsureNode=$klass($base,$super,"EnsureNode",$EnsureNode);var def=self.$$proto,$scope=self.$$scope,TMP_9,TMP_10,TMP_11,TMP_12;self.$handle("ensure");self.$children("begn","ensr");Opal.defn(self,"$compile",TMP_9=function $$compile(){var $a,$b,TMP_5,$c,TMP_6,self=this;self.$push("try {");($a=($b=self).$in_ensure,$a.$$p=(TMP_5=function(){var self=TMP_5.$$s||this;if(self.level==null)self.level=nil;return self.$line(self.$compiler().$process(self.$body_sexp(),self.level))},TMP_5.$$s=self,TMP_5.$$arity=0,TMP_5),$a).call($b);self.$line("} finally {");($a=($c=self).$indent,$a.$$p=(TMP_6=function(){var self=TMP_6.$$s||this,$d,$e,TMP_7;if(self.level==null)self.level=nil;if(($d=self["$has_rescue_else?"]())!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){self.$unshift("var $no_errors = true; ");self.$line("var $rescue_else_result;");self.$line("if ($no_errors) { ");($d=($e=self).$indent,$d.$$p=(TMP_7=function(){var self=TMP_7.$$s||this,$f,$g,TMP_8;self.$line("$rescue_else_result = (function() {");($f=($g=self).$indent,$f.$$p=(TMP_8=function(){var self=TMP_8.$$s||this;if(self.level==null)self.level=nil;return self.$line(self.$compiler().$process(self.$compiler().$returns(self.$scope().$rescue_else_sexp()),self.level))},TMP_8.$$s=self,TMP_8.$$arity=0,TMP_8),$f).call($g);return self.$line("})();")},TMP_7.$$s=self,TMP_7.$$arity=0,TMP_7),$d).call($e);self.$line("}");self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level));return self.$line("if ($no_errors) { return $rescue_else_result; }")}else{return self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6),$a).call($c);self.$line("}");if(($a=self["$wrap_in_closure?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(function() { ","; })()")}else{return nil}},TMP_9.$$arity=0);Opal.defn(self,"$body_sexp",TMP_10=function $$body_sexp(){var $a,self=this,sexp=nil;if(($a=self["$wrap_in_closure?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sexp=self.$compiler().$returns(self.$begn());if(sexp.$type()["$=="]("rescue")){return self.$s("js_return",sexp)}else{return sexp}}else{return sexp=self.$begn()}},TMP_10.$$arity=0);Opal.defn(self,"$ensr_sexp",TMP_11=function $$ensr_sexp(){var $a,self=this;return($a=self.$ensr())!==false&&$a!==nil&&$a!=null?$a:self.$s("nil")},TMP_11.$$arity=0);return(Opal.defn(self,"$wrap_in_closure?",TMP_12=function(){var $a,$b,self=this;return($a=($b=self["$recv?"]())!==false&&$b!==nil&&$b!=null?$b:self["$expr?"]())!==false&&$a!==nil&&$a!=null?$a:self["$has_rescue_else?"]()},TMP_12.$$arity=0),nil)&&"wrap_in_closure?"})($scope.base,$scope.get("Base"));(function($base,$super){function $RescueNode(){}var self=$RescueNode=$klass($base,$super,"RescueNode",$RescueNode);var def=self.$$proto,$scope=self.$$scope,TMP_20,TMP_21,TMP_22;self.$handle("rescue");self.$children("body");Opal.defn(self,"$compile",TMP_20=function $$compile(){var $a,$b,$c,$d,TMP_13,TMP_14,TMP_15,$e,TMP_17,$f,self=this,has_rescue_handlers=nil;$a=[($c=($d=self.$children()["$[]"]($range(1,-1,false))).$detect,$c.$$p=(TMP_13=function(sexp){var self=TMP_13.$$s||this;if(sexp==null)sexp=nil;return sexp.$type()["$!="]("resbody")},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13),$c).call($d)],$b=self.$scope(),$b["$rescue_else_sexp="].apply($b,$a),$a[$a.length-1];has_rescue_handlers=false;if(($a=self["$handle_rescue_else_manually?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$line("var $no_errors = true;")}self.$push("try {");($a=($b=self).$indent,$a.$$p=(TMP_14=function(){var self=TMP_14.$$s||this;if(self.level==null)self.level=nil;return self.$line(self.$process(self.$body_code(),self.level))},TMP_14.$$s=self,TMP_14.$$arity=0,TMP_14),$a).call($b);self.$line("} catch ($err) {");($a=($c=self).$indent,$a.$$p=(TMP_15=function(){var self=TMP_15.$$s||this,$e,$f,TMP_16;if(($e=self["$has_rescue_else?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){self.$line("$no_errors = false;")}($e=($f=self.$children()["$[]"]($range(1,-1,false))).$each_with_index,$e.$$p=(TMP_16=function(child,idx){var self=TMP_16.$$s||this;if(self.level==null)self.level=nil;if(child==null)child=nil;if(idx==null)idx=nil;if(child.$type()["$=="]("resbody")){has_rescue_handlers=true;if(idx["$=="](0)){}else{self.$push(" else ")}return self.$line(self.$process(child,self.level))}else{return nil}},TMP_16.$$s=self,TMP_16.$$arity=2,TMP_16),$e).call($f);return self.$push(" else { throw $err; }")},TMP_15.$$s=self,TMP_15.$$arity=0,TMP_15),$a).call($c);self.$line("}");if(($a=self["$handle_rescue_else_manually?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push("finally {");($a=($e=self).$indent,$a.$$p=(TMP_17=function(){var self=TMP_17.$$s||this,$f,$g,TMP_18;self.$line("if ($no_errors) { ");($f=($g=self).$indent,$f.$$p=(TMP_18=function(){var self=TMP_18.$$s||this,$h,$i,TMP_19;self.$line("return (function() {");($h=($i=self).$indent,$h.$$p=(TMP_19=function(){var self=TMP_19.$$s||this;if(self.level==null)self.level=nil;return self.$line(self.$compiler().$process(self.$compiler().$returns(self.$scope().$rescue_else_sexp()),self.level))},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19),$h).call($i);return self.$line("})();")},TMP_18.$$s=self,TMP_18.$$arity=0,TMP_18),$f).call($g);return self.$line("}")},TMP_17.$$s=self,TMP_17.$$arity=0,TMP_17),$a).call($e);self.$push("}")}if(($a=($f=self["$expr?"]())!==false&&$f!==nil&&$f!=null?$f:self["$recv?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(function() { ","})()")}else{return nil}},TMP_20.$$arity=0);Opal.defn(self,"$body_code",TMP_21=function $$body_code(){var $a,self=this,body_code=nil;body_code=function(){if(self.$body().$type()["$=="]("resbody")){return self.$s("nil")}else{return self.$body()}return nil}();if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{body_code=self.$compiler().$returns(body_code)}return body_code},TMP_21.$$arity=0);return(Opal.defn(self,"$handle_rescue_else_manually?",TMP_22=function(){var $a,self=this;return $a=self.$scope()["$in_ensure?"]()["$!"](),$a!==false&&$a!==nil&&$a!=null?self.$scope()["$has_rescue_else?"]():$a},TMP_22.$$arity=0),nil)&&"handle_rescue_else_manually?"})($scope.base,$scope.get("Base"));(function($base,$super){function $ResBodyNode(){}var self=$ResBodyNode=$klass($base,$super,"ResBodyNode",$ResBodyNode);var def=self.$$proto,$scope=self.$$scope,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30;self.$handle("resbody");self.$children("args","body");Opal.defn(self,"$compile",TMP_26=function $$compile(){var $a,$b,TMP_23,$c,TMP_24,self=this;self.$push("if (Opal.rescue($err, [");if(($a=self.$rescue_exprs()["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$push(self.$expr($scope.get("Sexp").$new(["const","StandardError"])))}else{($a=($b=self.$rescue_exprs()).$each_with_index,$a.$$p=(TMP_23=function(rexpr,idx){var self=TMP_23.$$s||this;if(rexpr==null)rexpr=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(self.$expr(rexpr))},TMP_23.$$s=self,TMP_23.$$arity=2,TMP_23),$a).call($b)}self.$push("])) {");($a=($c=self).$indent,$a.$$p=(TMP_24=function(){var self=TMP_24.$$s||this,$d,$e,TMP_25,variable=nil;if(($d=variable=self.$rescue_variable())!==nil&&$d!=null&&(!$d.$$is_boolean||$d==true)){variable["$[]="](2,self.$s("js_tmp","$err"));self.$push(self.$expr(variable),";")}self.$line("try {");($d=($e=self).$indent,$d.$$p=(TMP_25=function(){var self=TMP_25.$$s||this;if(self.level==null)self.level=nil;return self.$line(self.$process(self.$rescue_body(),self.level))},TMP_25.$$s=self,TMP_25.$$arity=0,TMP_25),$d).call($e);return self.$line("} finally { Opal.pop_exception() }")},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24),$a).call($c);return self.$line("}")},TMP_26.$$arity=0);Opal.defn(self,"$rescue_variable?",TMP_27=function(variable){var $a,self=this;return $a=$scope.get("Sexp")["$==="](variable),$a!==false&&$a!==nil&&$a!=null?["lasgn","iasgn"]["$include?"](variable.$type()):$a},TMP_27.$$arity=1);Opal.defn(self,"$rescue_variable",TMP_28=function $$rescue_variable(){var $a,self=this;if(($a=self["$rescue_variable?"](self.$args().$last()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$args().$last().$dup()}else{return nil}},TMP_28.$$arity=0);Opal.defn(self,"$rescue_exprs",TMP_29=function $$rescue_exprs(){var $a,self=this,exprs=nil;exprs=self.$args().$dup();if(($a=self["$rescue_variable?"](exprs.$last()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){exprs.$pop()}return exprs.$children()},TMP_29.$$arity=0);return(Opal.defn(self,"$rescue_body",TMP_30=function $$rescue_body(){var $a,self=this,body_code=nil;body_code=($a=self.$body())!==false&&$a!==nil&&$a!=null?$a:self.$s("nil");if(($a=self["$stmt?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{body_code=self.$compiler().$returns(body_code)}return body_code},TMP_30.$$arity=0),nil)&&"rescue_body"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/case"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$in_case","$condition","$[]=","$case_stmt","$add_local","$push","$expr","$each_with_index","$==","$type","$needs_closure?","$returns","$compiler","$stmt","$case_parts","$!","$wrap","$stmt?","$[]","$s","$js_truthy","$when_checks","$process","$body_code","$whens","$body"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $CaseNode(){}var self=$CaseNode=$klass($base,$super,"CaseNode",$CaseNode);var def=self.$$proto,$scope=self.$$scope,TMP_3,TMP_4,TMP_5,TMP_6;self.$handle("case");self.$children("condition");Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,$b,TMP_1,self=this,handled_else=nil;handled_else=false;return($a=($b=self.$compiler()).$in_case,$a.$$p=(TMP_1=function(){var self=TMP_1.$$s||this,$c,$d,TMP_2,$e;if(($c=self.$condition())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$case_stmt()["$[]="]("cond",true);self.$add_local("$case");self.$push("$case = ",self.$expr(self.$condition()),";")}($c=($d=self.$case_parts()).$each_with_index,$c.$$p=(TMP_2=function(wen,idx){var self=TMP_2.$$s||this,$e,$f;if(wen==null)wen=nil;if(idx==null)idx=nil;if(($e=($f=wen!==false&&wen!==nil&&wen!=null)?wen.$type()["$=="]("when"):wen)!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){if(($e=self["$needs_closure?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){self.$compiler().$returns(wen)}if(idx["$=="](0)){}else{self.$push("else ")}return self.$push(self.$stmt(wen))}else if(wen!==false&&wen!==nil&&wen!=null){handled_else=true;if(($e=self["$needs_closure?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){wen=self.$compiler().$returns(wen)}return self.$push("else {",self.$stmt(wen),"}")}else{return nil}},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2),$c).call($d);if(($c=($e=self["$needs_closure?"](),$e!==false&&$e!==nil&&$e!=null?handled_else["$!"]():$e))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$push("else { return nil }")}if(($c=self["$needs_closure?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return self.$wrap("(function() {","})()")}else{return nil}},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$a).call($b)},TMP_3.$$arity=0);Opal.defn(self,"$needs_closure?",TMP_4=function(){var self=this;return self["$stmt?"]()["$!"]()},TMP_4.$$arity=0);Opal.defn(self,"$case_parts",TMP_5=function $$case_parts(){var self=this;return self.$children()["$[]"]($range(1,-1,false))},TMP_5.$$arity=0);return(Opal.defn(self,"$case_stmt",TMP_6=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},TMP_6.$$arity=0),nil)&&"case_stmt"})($scope.base,$scope.get("Base"));(function($base,$super){function $WhenNode(){}var self=$WhenNode=$klass($base,$super,"WhenNode",$WhenNode);var def=self.$$proto,$scope=self.$$scope,TMP_8,TMP_9,TMP_10,TMP_11;def.level=nil;self.$handle("when");self.$children("whens","body");Opal.defn(self,"$compile",TMP_8=function $$compile(){var $a,$b,TMP_7,self=this;self.$push("if (");($a=($b=self.$when_checks()).$each_with_index,$a.$$p=(TMP_7=function(check,idx){var self=TMP_7.$$s||this,$c,call=nil;if(check==null)check=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" || ")}if(check.$type()["$=="]("splat")){self.$push("(function($splt) { for (var i = 0; i < $splt.length; i++) {");self.$push("if ($splt[i]['$===']($case)) { return true; }");return self.$push("} return false; })(",self.$expr(check["$[]"](1)),")")}else if(($c=self.$case_stmt()["$[]"]("cond"))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){call=self.$s("call",check,"===",self.$s("arglist",self.$s("js_tmp","$case")));return self.$push(self.$expr(call))}else{return self.$push(self.$js_truthy(check))}},TMP_7.$$s=self,TMP_7.$$arity=2,TMP_7),$a).call($b);return self.$push(") {",self.$process(self.$body_code(),self.level),"}")},TMP_8.$$arity=0);Opal.defn(self,"$when_checks",TMP_9=function $$when_checks(){var self=this;return self.$whens().$children()},TMP_9.$$arity=0);Opal.defn(self,"$case_stmt",TMP_10=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},TMP_10.$$arity=0);return(Opal.defn(self,"$body_code",TMP_11=function $$body_code(){var $a,self=this;return($a=self.$body())!==false&&$a!==nil&&$a!=null?$a:self.$s("nil")},TMP_11.$$arity=0),nil)&&"body_code"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/super"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$children","$def?","$scope","$uses_block!","$default_compile","$private","$s","$raw_iter","$arglist","$raise","$find_parent_def","$containing_def_scope","$to_s","$mid","$identify!","$defs","$name","$parent","$defined_check_param","$get_super_chain","$join","$map","$implicit_arguments_param","$super_method_invocation","$iter?","$super_block_invocation","$push","$receiver_fragment","$handle","$add_method","$method_missing?","$compiler","$wrap","$==","$uses_zuper=","$formal_block_parameter","$!","$iter","$[]","$<<","$===","$extract_block_arg","$block_arg"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $BaseSuperNode(){}var self=$BaseSuperNode=$klass($base,$super,"BaseSuperNode",$BaseSuperNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_12,TMP_13;def.iter=def.implicit_args=nil;self.$children("arglist","raw_iter");Opal.defn(self,"$compile",TMP_1=function $$compile(){var $a,self=this;if(($a=self.$scope()["$def?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$scope()["$uses_block!"]()}return self.$default_compile()},TMP_1.$$arity=0);self.$private();Opal.defn(self,"$recvr",TMP_2=function $$recvr(){var self=this;return self.$s("self")},TMP_2.$$arity=0);Opal.defn(self,"$iter",TMP_3=function $$iter(){var $a,$b,self=this;return($a=self.iter)!==false&&$a!==nil&&$a!=null?$a:self.iter=function(){if(($b=self.$raw_iter())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$raw_iter()}else if(($b=self.$arglist())!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return self.$s("js_tmp","null")}else{self.$scope()["$uses_block!"]();return self.$s("js_tmp","$iter")}return nil}()},TMP_3.$$arity=0);Opal.defn(self,"$method_jsid",TMP_4=function $$method_jsid(){var self=this;return self.$raise("Not implemented, see #add_method")},TMP_4.$$arity=0);Opal.defn(self,"$redefine_this?",TMP_5=function(temporary_receiver){var self=this;return true},TMP_5.$$arity=1);Opal.defn(self,"$arguments_array?",TMP_6=function(){var $a,$b,$c,self=this,$iter=TMP_6.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_6.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}return($a=($b=($c=self,Opal.find_super_dispatcher(self,"arguments_array?",TMP_6,false)),$b.$$p=$iter,$b).apply($c,$zuper))!==false&&$a!==nil&&$a!=null?$a:self.implicit_args},TMP_6.$$arity=0);Opal.defn(self,"$containing_def_scope",TMP_7=function $$containing_def_scope(){var $a,self=this;if(($a=self.$scope()["$def?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$scope()}return self.$scope().$find_parent_def()},TMP_7.$$arity=0);Opal.defn(self,"$defined_check_param",TMP_8=function $$defined_check_param(){var self=this;return"false"},TMP_8.$$arity=0);Opal.defn(self,"$implicit_arguments_param",TMP_9=function $$implicit_arguments_param(){var $a,self=this;if(($a=self.implicit_args)!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"true"}else{return"false"}},TMP_9.$$arity=0);Opal.defn(self,"$super_method_invocation",TMP_10=function $$super_method_invocation(){var $a,self=this,def_scope=nil,method_jsid=nil,current_func=nil,class_name=nil;def_scope=self.$containing_def_scope();method_jsid=def_scope.$mid().$to_s();current_func=def_scope["$identify!"]();if(($a=def_scope.$defs())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){class_name=function(){if(($a=def_scope.$parent().$name())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return"$"+def_scope.$parent().$name()}else{return"self.$$class.$$proto"}return nil}();return"Opal.find_super_dispatcher(self, '"+method_jsid+"', "+current_func+", "+self.$defined_check_param()+", "+class_name+")"}else{return"Opal.find_super_dispatcher(self, '"+method_jsid+"', "+current_func+", "+self.$defined_check_param()+")"}},TMP_10.$$arity=0);Opal.defn(self,"$super_block_invocation",TMP_12=function $$super_block_invocation(){var $a,$b,TMP_11,self=this,chain=nil,cur_defn=nil,mid=nil,trys=nil,implicit=nil;$b=self.$scope().$get_super_chain(),$a=Opal.to_ary($b),chain=$a[0]==null?nil:$a[0],cur_defn=$a[1]==null?nil:$a[1],mid=$a[2]==null?nil:$a[2],$b;trys=($a=($b=chain).$map,$a.$$p=(TMP_11=function(c){var self=TMP_11.$$s||this;if(c==null)c=nil;return""+c+".$$def"},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11),$a).call($b).$join(" || ");implicit=self.implicit_args.$to_s();return"Opal.find_iter_super_dispatcher(self, "+mid+", ("+trys+" || "+cur_defn+"), "+self.$defined_check_param()+", "+self.$implicit_arguments_param()+")"},TMP_12.$$arity=0);return(Opal.defn(self,"$add_method",TMP_13=function $$add_method(temporary_receiver){var $a,self=this,super_call=nil;super_call=function(){if(($a=self.$scope()["$def?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$super_method_invocation()}else if(($a=self.$scope()["$iter?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$super_block_invocation()}else{return self.$raise("unexpected compilation error")}return nil}();if(temporary_receiver!==false&&temporary_receiver!==nil&&temporary_receiver!=null){return self.$push("("+temporary_receiver+" = ",self.$receiver_fragment(),", ",super_call,")")}else{return self.$push(super_call)}},TMP_13.$$arity=1),nil)&&"add_method"})($scope.base,$scope.get("CallNode"));(function($base,$super){function $DefinedSuperNode(){}var self=$DefinedSuperNode=$klass($base,$super,"DefinedSuperNode",$DefinedSuperNode);var def=self.$$proto,$scope=self.$$scope,TMP_14,TMP_15;self.$handle("defined_super");Opal.defn(self,"$defined_check_param",TMP_14=function $$defined_check_param(){var self=this;return"true"},TMP_14.$$arity=0);return(Opal.defn(self,"$compile",TMP_15=function $$compile(){var $a,self=this;self.$add_method(nil);if(($a=self.$compiler()["$method_missing?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(!(",'.$$stub) ? "super" : nil)')}else{return self.$wrap("((",') != null ? "super" : nil)')}},TMP_15.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("BaseSuperNode"));(function($base,$super){function $SuperNode(){}var self=$SuperNode=$klass($base,$super,"SuperNode",$SuperNode);var def=self.$$proto,$scope=self.$$scope,TMP_16,TMP_17;def.arguments_without_block=nil;self.$handle("super");Opal.defn(self,"$compile",TMP_16=function $$compile(){var $a,$b,self=this,$iter=TMP_16.$$p,$yield=$iter||nil,block_arg=nil,expr=nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_16.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}if(self.$arglist()["$=="](nil)){self.implicit_args=true;if(($a=self.$containing_def_scope())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){$a=[true],$b=self.$containing_def_scope(),$b["$uses_zuper="].apply($b,$a),$a[$a.length-1];self.arguments_without_block=[self.$s("js_tmp","$zuper")];if(($a=($b=block_arg=self.$formal_block_parameter(),$b!==false&&$b!==nil&&$b!=null?self.$iter()["$!"]():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){expr=self.$s("block_pass",self.$s("lvar",block_arg["$[]"](1)));self.arguments_without_block["$<<"](expr)}}else{self.arguments_without_block=[]}}return($a=($b=self,Opal.find_super_dispatcher(self,"compile",TMP_16,false)),$a.$$p=$iter,$a).apply($b,$zuper)},TMP_16.$$arity=0);self.$private();return(Opal.defn(self,"$formal_block_parameter",TMP_17=function $$formal_block_parameter(){var self=this,$case=nil;return function(){$case=self.$containing_def_scope();if($scope.get("Opal").$$scope.get("Nodes").$$scope.get("IterNode")["$==="]($case)){return self.$containing_def_scope().$extract_block_arg()}else if($scope.get("Opal").$$scope.get("Nodes").$$scope.get("DefNode")["$==="]($case)){return self.$containing_def_scope().$block_arg()}else{return self.$raise("Don't know what to do with scope "+self.$containing_def_scope())}}()},TMP_17.$$arity=0),nil)&&"formal_block_parameter"})($scope.base,$scope.get("BaseSuperNode"))})($scope.base)}($scope.base)};Opal.modules["opal/version"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"VERSION","0.10.5")}($scope.base)};Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$push","$version_comment","$opening","$in_scope","$stmt","$stmts","$is_a?","$eval?","$compiler","$add_temp","$add_used_helpers","$add_used_operators","$line","$to_vars","$scope","$compile_method_stubs","$compile_irb_vars","$compile_end_construct","$closing","$requirable?","$to_s","$cleanpath","$Pathname","$file","$inspect","$returns","$body","$irb?","$to_a","$helpers","$each","$operator_helpers","$[]","$method_missing?","$method_calls","$join","$map","$empty?","$eof_content"]);self.$require("pathname");self.$require("opal/version");self.$require("opal/nodes/scope");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $TopNode(){}var self=$TopNode=$klass($base,$super,"TopNode",$TopNode);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_8,TMP_10,TMP_12,TMP_13,TMP_14;self.$handle("top");self.$children("body");Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this;self.$push(self.$version_comment());self.$opening();($a=($b=self).$in_scope,$a.$$p=(TMP_1=function(){var self=TMP_1.$$s||this,$c,body_code=nil;body_code=self.$stmt(self.$stmts());if(($c=body_code["$is_a?"]($scope.get("Array")))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{body_code=[body_code]}if(($c=self.$compiler()["$eval?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{self.$add_temp("self = Opal.top")}self.$add_temp(function(){if(($c=self.$compiler()["$eval?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return"$scope = (self.$$scope || self.$$class.$$scope)"}else{return"$scope = Opal"}return nil}());self.$add_temp("nil = Opal.nil");self.$add_used_helpers();self.$add_used_operators();self.$line(self.$scope().$to_vars());self.$compile_method_stubs();self.$compile_irb_vars();self.$compile_end_construct();return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1),$a).call($b);return self.$closing()},TMP_2.$$arity=0);Opal.defn(self,"$opening",TMP_3=function $$opening(){var $a,self=this,path=nil;if(($a=self.$compiler()["$requirable?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){path=self.$Pathname(self.$compiler().$file()).$cleanpath().$to_s();return self.$line("Opal.modules["+path.$inspect()+"] = function(Opal) {")}else if(($a=self.$compiler()["$eval?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$line("(function(Opal, self) {")}else{return self.$line("(function(Opal) {")}},TMP_3.$$arity=0);Opal.defn(self,"$closing",TMP_4=function $$closing(){var $a,self=this;if(($a=self.$compiler()["$requirable?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$line("};\n")}else if(($a=self.$compiler()["$eval?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$line("})(Opal, self)")}else{return self.$line("})(Opal);\n")}},TMP_4.$$arity=0);Opal.defn(self,"$stmts",TMP_5=function $$stmts(){var self=this;return self.$compiler().$returns(self.$body())},TMP_5.$$arity=0);Opal.defn(self,"$compile_irb_vars",TMP_6=function $$compile_irb_vars(){var $a,self=this;if(($a=self.$compiler()["$irb?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }")}else{return nil}},TMP_6.$$arity=0);Opal.defn(self,"$add_used_helpers",TMP_8=function $$add_used_helpers(){var $a,$b,TMP_7,self=this,helpers=nil;helpers=self.$compiler().$helpers().$to_a();return($a=($b=helpers.$to_a()).$each,$a.$$p=(TMP_7=function(h){var self=TMP_7.$$s||this;if(h==null)h=nil;return self.$add_temp("$"+h+" = Opal."+h)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$a).call($b)},TMP_8.$$arity=0);Opal.defn(self,"$add_used_operators",TMP_10=function $$add_used_operators(){var $a,$b,TMP_9,self=this,operators=nil;operators=self.$compiler().$operator_helpers().$to_a();return($a=($b=operators).$each,$a.$$p=(TMP_9=function(op){var self=TMP_9.$$s||this,name=nil;if(op==null)op=nil;name=$scope.get("Nodes").$$scope.get("CallNode").$$scope.get("OPERATORS")["$[]"](op);self.$line("function $rb_"+name+"(lhs, rhs) {");self.$line(" return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs "+op+" rhs : lhs['$"+op+"'](rhs);");return self.$line("}")},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9),$a).call($b)},TMP_10.$$arity=0);Opal.defn(self,"$compile_method_stubs",TMP_12=function $$compile_method_stubs(){var $a,$b,TMP_11,self=this,calls=nil,stubs=nil;if(($a=self.$compiler()["$method_missing?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){calls=self.$compiler().$method_calls();stubs=($a=($b=calls.$to_a()).$map,$a.$$p=(TMP_11=function(k){var self=TMP_11.$$s||this;if(k==null)k=nil;return"'$"+k+"'"},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11),$a).call($b).$join(", ");if(($a=stubs["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{return self.$line("Opal.add_stubs(["+stubs+"]);")}}else{return nil}},TMP_12.$$arity=0);Opal.defn(self,"$compile_end_construct",TMP_13=function $$compile_end_construct(){var $a,self=this,content=nil;if(($a=content=self.$compiler().$eof_content())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){self.$line("var $__END__ = Opal.Object.$new();");return self.$line("$__END__.$read = function() { return "+content.$inspect()+"; };")}else{return nil}},TMP_13.$$arity=0);return(Opal.defn(self,"$version_comment",TMP_14=function $$version_comment(){var self=this;return"/* Generated by Opal "+$scope.get("Opal").$$scope.get("VERSION")+" */"},TMP_14.$$arity=0),nil)&&"version_comment"})($scope.base,$scope.get("ScopeNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/while"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$with_temp","$js_truthy","$test","$in_while","$wrap_in_closure?","$[]=","$while_loop","$stmt","$body","$uses_redo?","$push","$while_open","$while_close","$line","$compiler","$wrap","$[]","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $WhileNode(){}var self=$WhileNode=$klass($base,$super,"WhileNode",$WhileNode);var def=self.$$proto,$scope=self.$$scope,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7;self.$handle("while");self.$children("test","body");Opal.defn(self,"$compile",TMP_3=function $$compile(){var $a,$b,TMP_1,self=this;($a=($b=self).$with_temp,$a.$$p=(TMP_1=function(redo_var){var self=TMP_1.$$s||this,$c,$d,TMP_2,test_code=nil;if(redo_var==null)redo_var=nil;test_code=self.$js_truthy(self.$test());return($c=($d=self.$compiler()).$in_while,$c.$$p=(TMP_2=function(){var self=TMP_2.$$s||this,$e,body_code=nil;if(($e=self["$wrap_in_closure?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){self.$while_loop()["$[]="]("closure",true)}self.$while_loop()["$[]="]("redo_var",redo_var);body_code=self.$stmt(self.$body());if(($e=self["$uses_redo?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){self.$push(""+redo_var+" = false; "+self.$while_open()+redo_var+" || ");self.$push(test_code);self.$push(self.$while_close())}else{self.$push(self.$while_open(),test_code,self.$while_close())}if(($e=self["$uses_redo?"]())!==nil&&$e!=null&&(!$e.$$is_boolean||$e==true)){self.$push(""+redo_var+" = false;")}return self.$line(body_code,"}")},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2),$c).call($d)},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b);if(($a=self["$wrap_in_closure?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},TMP_3.$$arity=0);Opal.defn(self,"$while_open",TMP_4=function $$while_open(){var self=this;return"while ("},TMP_4.$$arity=0);Opal.defn(self,"$while_close",TMP_5=function $$while_close(){var self=this;return") {"},TMP_5.$$arity=0);Opal.defn(self,"$uses_redo?",TMP_6=function(){var self=this;return self.$while_loop()["$[]"]("use_redo")},TMP_6.$$arity=0);return(Opal.defn(self,"$wrap_in_closure?",TMP_7=function(){var $a,self=this;return($a=self["$expr?"]())!==false&&$a!==nil&&$a!=null?$a:self["$recv?"]()},TMP_7.$$arity=0),nil)&&"wrap_in_closure?"})($scope.base,$scope.get("Base"));(function($base,$super){function $UntilNode(){}var self=$UntilNode=$klass($base,$super,"UntilNode",$UntilNode);var def=self.$$proto,$scope=self.$$scope,TMP_8,TMP_9;self.$handle("until");Opal.defn(self,"$while_open",TMP_8=function $$while_open(){var self=this;return"while (!("},TMP_8.$$arity=0);return(Opal.defn(self,"$while_close",TMP_9=function $$while_close(){var self=this;return")) {"},TMP_9.$$arity=0),nil)&&"while_close"})($scope.base,$scope.get("WhileNode"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/for"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$with_temp","$==","$type","$args_sexp","$s","$<<","$body_sexp","$first","$insert","$each","$[]","$===","$add_local","$value","$push","$expr"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ForNode(){}var self=$ForNode=$klass($base,$super,"ForNode",$ForNode);var def=self.$$proto,$scope=self.$$scope,TMP_4;self.$handle("for");self.$children("value","args_sexp","body_sexp");return(Opal.defn(self,"$compile",TMP_4=function $$compile(){var $a,$b,TMP_1,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_1=function(loop_var){var self=TMP_1.$$s||this,$c,$d,TMP_2,assign=nil,iter=nil,sexp=nil;if(loop_var==null)loop_var=nil;if(self.$args_sexp().$type()["$=="]("array")){assign=self.$s("masgn",self.$args_sexp());assign["$<<"](self.$s("to_ary",self.$s("js_tmp",loop_var)))}else{assign=self.$args_sexp()["$<<"](self.$s("js_tmp",loop_var))}if(($c=self.$body_sexp())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){if(self.$body_sexp().$first()["$=="]("block")){self.$body_sexp().$insert(1,assign);assign=self.$body_sexp()}else{assign=self.$s("block",assign,self.$body_sexp())}}($c=($d=assign.$children()).$each,$c.$$p=(TMP_2=function(sexp){var self=TMP_2.$$s||this,$e,$f,TMP_3,$case=nil;if(sexp==null)sexp=nil;return function(){$case=sexp["$[]"](0);if("lasgn"["$==="]($case)){return self.$add_local(sexp["$[]"](1))}else if("masgn"["$==="]($case)){if(sexp["$[]"](1)["$[]"](0)["$=="]("array")){return($e=($f=sexp["$[]"](1)["$[]"](1)).$each,$e.$$p=(TMP_3=function(sexp){var self=TMP_3.$$s||this;if(sexp==null)sexp=nil;if(sexp["$[]"](0)["$=="]("lasgn")){return self.$add_local(sexp["$[]"](1))}else{return nil}},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3),$e).call($f)}else{return nil}}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$c).call($d);iter=self.$s("iter",self.$s("lasgn",loop_var),assign);sexp=self.$s("call",self.$value(),"each",self.$s("arglist"),iter);return self.$push(self.$expr(sexp))},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b)},TMP_4.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/hash"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$require","$handle","$attr_accessor","$each","$==","$type","$has_kwsplat=","$<<","$values","$keys","$children","$all?","$include?","$extract_kv_pairs_and_kwsplats","$has_kwsplat","$compile_merge","$simple_keys?","$compile_hash2","$compile_hash","$helper","$empty?","$expr","$s","$each_with_index","$push","$wrap","$times","$inspect","$to_s","$[]","$[]=","$size","$join","$value"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $HashNode(){}var self=$HashNode=$klass($base,$super,"HashNode",$HashNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3,TMP_5,TMP_6,TMP_9,TMP_11,TMP_14;self.$handle("hash");self.$attr_accessor("has_kwsplat","keys","values");Opal.defn(self,"$initialize",TMP_1=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_index=nil,$zuper_length=nil;TMP_1.$$p=null;$zuper=[];for($zuper_index=0;$zuper_index<arguments.length;$zuper_index++){$zuper[$zuper_index]=arguments[$zuper_index]}($b=($c=self,Opal.find_super_dispatcher(self,"initialize",TMP_1,false)),$b.$$p=$iter,$b).apply($c,$zuper);self.has_kwsplat=false;self.keys=[];return self.values=[]},TMP_1.$$arity=-1);Opal.defn(self,"$extract_kv_pairs_and_kwsplats",TMP_3=function $$extract_kv_pairs_and_kwsplats(){var $a,$b,TMP_2,self=this,found_key=nil;found_key=false;($a=($b=self.$children()).$each,$a.$$p=(TMP_2=function(obj){var self=TMP_2.$$s||this,$c,$d;if(obj==null)obj=nil;if(obj.$type()["$=="]("kwsplat")){return $c=[true],$d=self,$d["$has_kwsplat="].apply($d,$c),$c[$c.length-1]}else if(found_key!==false&&found_key!==nil&&found_key!=null){self.$values()["$<<"](obj);return found_key=false}else{self.$keys()["$<<"](obj);return found_key=true}},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b);return[self.$keys(),self.$values()]},TMP_3.$$arity=0);Opal.defn(self,"$simple_keys?",TMP_5=function(){var $a,$b,TMP_4,self=this;return($a=($b=self.$keys())["$all?"],$a.$$p=(TMP_4=function(key){var self=TMP_4.$$s||this;if(key==null)key=nil;return["sym","str"]["$include?"](key.$type())},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4),$a).call($b)},TMP_5.$$arity=0);Opal.defn(self,"$compile",TMP_6=function $$compile(){var $a,self=this;self.$extract_kv_pairs_and_kwsplats();if(($a=self.$has_kwsplat())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compile_merge()}else if(($a=self["$simple_keys?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$compile_hash2()}else{return self.$compile_hash()}},TMP_6.$$arity=0);Opal.defn(self,"$compile_merge",TMP_9=function $$compile_merge(){var $a,$b,TMP_7,$c,$d,TMP_8,self=this,result=nil,seq=nil;self.$helper("hash");$a=[[],[]],result=$a[0],seq=$a[1],$a;($a=($b=self.$children()).$each,$a.$$p=(TMP_7=function(child){var self=TMP_7.$$s||this,$c;if(child==null)child=nil;if(child.$type()["$=="]("kwsplat")){if(($c=seq["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{result["$<<"](self.$expr(($c=self).$s.apply($c,["hash"].concat(Opal.to_a(seq)))))}result["$<<"](self.$expr(child));return seq=[]}else{return seq["$<<"](child)}},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7),$a).call($b);if(($a=seq["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{result["$<<"](self.$expr(($a=self).$s.apply($a,["hash"].concat(Opal.to_a(seq)))))}return($c=($d=result).$each_with_index,$c.$$p=(TMP_8=function(fragment,idx){var self=TMP_8.$$s||this;if(fragment==null)fragment=nil;if(idx==null)idx=nil;if(idx["$=="](0)){return self.$push(fragment)}else{return self.$push(".$merge(",fragment,")")}},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8),$c).call($d)},TMP_9.$$arity=0);Opal.defn(self,"$compile_hash",TMP_11=function $$compile_hash(){var $a,$b,TMP_10,self=this;self.$helper("hash");($a=($b=self.$children()).$each_with_index,$a.$$p=(TMP_10=function(child,idx){var self=TMP_10.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(self.$expr(child))},TMP_10.$$s=self,TMP_10.$$arity=2,TMP_10),$a).call($b);return self.$wrap("$hash(",")")},TMP_11.$$arity=0);return(Opal.defn(self,"$compile_hash2",TMP_14=function $$compile_hash2(){var $a,$b,TMP_12,$c,TMP_13,self=this,hash_obj=nil,hash_keys=nil;$a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],$a;self.$helper("hash2");($a=($b=self.$keys().$size()).$times,$a.$$p=(TMP_12=function(idx){var self=TMP_12.$$s||this,$c,key=nil;if(idx==null)idx=nil;key=self.$keys()["$[]"](idx)["$[]"](1).$to_s().$inspect();if(($c=hash_obj["$include?"](key))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{hash_keys["$<<"](key)}return hash_obj["$[]="](key,self.$expr(self.$values()["$[]"](idx)))},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12),$a).call($b);($a=($c=hash_keys).$each_with_index,$a.$$p=(TMP_13=function(key,idx){var self=TMP_13.$$s||this;if(key==null)key=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}self.$push(""+key+": ");return self.$push(hash_obj["$[]"](key))},TMP_13.$$s=self,TMP_13.$$arity=2,TMP_13),$a).call($c);return self.$wrap("$hash2(["+hash_keys.$join(", ")+"], {","})")},TMP_14.$$arity=0),nil)&&"compile_hash2"})($scope.base,$scope.get("Base"));(function($base,$super){function $KwSplatNode(){}var self=$KwSplatNode=$klass($base,$super,"KwSplatNode",$KwSplatNode);var def=self.$$proto,$scope=self.$$scope,TMP_15;self.$handle("kwsplat");self.$children("value");return(Opal.defn(self,"$compile",TMP_15=function $$compile(){var self=this;return self.$push("Opal.to_hash(",self.$expr(self.$value()),")")},TMP_15.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$empty?","$children","$push","$each","$==","$type","$expr","$<<","$fragment"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ArrayNode(){}var self=$ArrayNode=$klass($base,$super,"ArrayNode",$ArrayNode);var def=self.$$proto,$scope=self.$$scope,TMP_2;self.$handle("array");return(Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this,code=nil,work=nil,join=nil;if(($a=self.$children()["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("[]")}$a=[[],[]],code=$a[0],work=$a[1],$a;($a=($b=self.$children()).$each,$a.$$p=(TMP_1=function(child){var self=TMP_1.$$s||this,$c,splat=nil,part=nil;if(child==null)child=nil;splat=child.$type()["$=="]("splat");part=self.$expr(child);if(splat!==false&&splat!==nil&&splat!=null){if(($c=work["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){if(($c=code["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")"))}else{code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}}else{if(($c=code["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}return work=[]}else{if(($c=work["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](part)}},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b);if(($a=work["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{join=[self.$fragment("["),work,self.$fragment("]")];if(($a=code["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){code=join}else{code.$push([self.$fragment(".concat("),join,self.$fragment(")")])}}return self.$push(code)},TMP_2.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$type","$value","$===","$push","$inspect","$to_s","$expr","$s","$[]","$respond_to?","$__send__","$mid_to_jsid","$with_temp","$handle_block_given_call","$compiler","$wrap","$include?"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $DefinedNode(){}var self=$DefinedNode=$klass($base,$super,"DefinedNode",$DefinedNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_14,TMP_16;def.sexp=nil;self.$handle("defined");self.$children("value");Opal.defn(self,"$compile",TMP_1=function $$compile(){var $a,self=this,type=nil,$case=nil;type=self.$value().$type();return function(){$case=type;if("self"["$==="]($case)||"nil"["$==="]($case)||"false"["$==="]($case)||"true"["$==="]($case)){return self.$push(type.$to_s().$inspect())}else if("lasgn"["$==="]($case)||"iasgn"["$==="]($case)||"gasgn"["$==="]($case)||"cvdecl"["$==="]($case)||"masgn"["$==="]($case)||"op_asgn_or"["$==="]($case)||"op_asgn_and"["$==="]($case)){return self.$push("'assignment'")}else if("paren"["$==="]($case)||"not"["$==="]($case)){return self.$push(self.$expr(self.$s("defined",self.$value()["$[]"](1))))}else if("lvar"["$==="]($case)){return self.$push("'local-variable'")}else{if(($a=self["$respond_to?"]("compile_"+type))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$__send__("compile_"+type)}else{return self.$push("'expression'")}}}()},TMP_1.$$arity=0);Opal.defn(self,"$compile_call",TMP_3=function $$compile_call(){var $a,$b,TMP_2,self=this,mid=nil,recv=nil;mid=self.$mid_to_jsid(self.$value()["$[]"](2).$to_s());recv=function(){if(($a=self.$value()["$[]"](1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$expr(self.$value()["$[]"](1))}else{return"self"}return nil}();return($a=($b=self).$with_temp,$a.$$p=(TMP_2=function(tmp){var self=TMP_2.$$s||this;if(tmp==null)tmp=nil;self.$push("((("+tmp+" = ",recv,""+mid+") && !"+tmp+".$$stub) || ",recv);return self.$push("['$respond_to_missing?']('"+self.$value()["$[]"](2).$to_s()+"') ? 'method' : nil)")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b)},TMP_3.$$arity=0);Opal.defn(self,"$compile_ivar",TMP_5=function $$compile_ivar(){var $a,$b,TMP_4,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_4=function(tmp){var self=TMP_4.$$s||this,name=nil;if(tmp==null)tmp=nil;name=self.$value()["$[]"](1).$to_s()["$[]"]($range(1,-1,false));self.$push("(("+tmp+" = self['"+name+"'], "+tmp+" != null && "+tmp+" !== nil) ? ");return self.$push("'instance-variable' : nil)")},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4),$a).call($b)},TMP_5.$$arity=0);Opal.defn(self,"$compile_super",TMP_6=function $$compile_super(){var self=this;return self.$push(self.$expr(self.$s("defined_super",self.$value())))},TMP_6.$$arity=0);Opal.defn(self,"$compile_yield",TMP_7=function $$compile_yield(){var self=this;self.$push(self.$compiler().$handle_block_given_call(self.sexp));return self.$wrap("((",') != null ? "yield" : nil)')},TMP_7.$$arity=0);Opal.defn(self,"$compile_xstr",TMP_8=function $$compile_xstr(){var self=this;self.$push(self.$expr(self.$value()));return self.$wrap("(typeof(",') !== "undefined")')},TMP_8.$$arity=0);Opal.alias(self,"compile_dxstr","compile_xstr");Opal.defn(self,"$compile_const",TMP_9=function $$compile_const(){var self=this;return self.$push("($scope."+self.$value()["$[]"](1)+" != null)")},TMP_9.$$arity=0);Opal.defn(self,"$compile_colon2",TMP_10=function $$compile_colon2(){var self=this;self.$push("(function(){ try { return ((");self.$push(self.$expr(self.$value()));self.$push(") != null ? 'constant' : nil); } catch (err) { if (err.$$class");return self.$push(" === Opal.NameError) { return nil; } else { throw(err); }}; })()")},TMP_10.$$arity=0);Opal.defn(self,"$compile_colon3",TMP_11=function $$compile_colon3(){var self=this;return self.$push("(Opal.Object.$$scope."+self.$value()["$[]"](1)+" == null ? nil : 'constant')")},TMP_11.$$arity=0);Opal.defn(self,"$compile_cvar",TMP_12=function $$compile_cvar(){var self=this;return self.$push("(Opal.cvars['"+self.$value()["$[]"](1)+"'] != null ? 'class variable' : nil)")},TMP_12.$$arity=0);Opal.defn(self,"$compile_gvar",TMP_14=function $$compile_gvar(){var $a,$b,TMP_13,self=this,name=nil;name=self.$value()["$[]"](1).$to_s()["$[]"]($range(1,-1,false));if(($a=["~","!"]["$include?"](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$push("'global-variable'")}else if(($a=["`","'","+","&"]["$include?"](name))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return($a=($b=self).$with_temp,$a.$$p=(TMP_13=function(tmp){var self=TMP_13.$$s||this;if(tmp==null)tmp=nil;self.$push("(("+tmp+" = $gvars['~'], "+tmp+" != null && "+tmp+" !== nil) ? ");return self.$push("'global-variable' : nil)")},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13),$a).call($b)}else{return self.$push("($gvars["+name.$inspect()+"] != null ? 'global-variable' : nil)")}},TMP_14.$$arity=0);return(Opal.defn(self,"$compile_nth_ref",TMP_16=function $$compile_nth_ref(){var $a,$b,TMP_15,self=this;return($a=($b=self).$with_temp,$a.$$p=(TMP_15=function(tmp){var self=TMP_15.$$s||this;if(tmp==null)tmp=nil;self.$push("(("+tmp+" = $gvars['~'], "+tmp+" != null && "+tmp+" != nil) ? ");return self.$push("'global-variable' : nil)")},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15),$a).call($b)},TMP_16.$$arity=0),nil)&&"compile_nth_ref"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/masgn"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$new_temp","$scope","$==","$type","$rhs","$push","$expr","$compile_masgn","$lhs","$-","$size","$[]","$queue_temp","$raise","$take_while","$!=","$drop","$each_with_index","$compile_assignment","$empty?","$shift","$<<","$dup","$s","$!","$>=","$include?","$[]=","$to_sym","$last"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $MassAssignNode(){}var self=$MassAssignNode=$klass($base,$super,"MassAssignNode",$MassAssignNode);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_5,TMP_6;Opal.cdecl($scope,"SIMPLE_ASSIGNMENT",["lasgn","iasgn","lvar","gasgn","cdecl"]);self.$handle("masgn");self.$children("lhs","rhs");Opal.defn(self,"$compile",TMP_1=function $$compile(){var self=this,array=nil,retval=nil;array=self.$scope().$new_temp();if(self.$rhs().$type()["$=="]("array")){self.$push(""+array+" = ",self.$expr(self.$rhs()));self.$compile_masgn(self.$lhs().$children(),array,$rb_minus(self.$rhs().$size(),1));self.$push(", "+array)}else if(self.$rhs().$type()["$=="]("to_ary")){retval=self.$scope().$new_temp();self.$push(""+retval+" = ",self.$expr(self.$rhs()["$[]"](1)));self.$push(", "+array+" = Opal.to_ary("+retval+")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(", "+retval);self.$scope().$queue_temp(retval)}else if(self.$rhs().$type()["$=="]("splat")){self.$push(""+array+" = Opal.to_a(",self.$expr(self.$rhs()["$[]"](1)),")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(", "+array)}else{self.$raise("unsupported mlhs type")}return self.$scope().$queue_temp(array)},TMP_1.$$arity=0);Opal.defn(self,"$compile_masgn",TMP_5=function $$compile_masgn(lhs_items,array,len){var $a,$b,TMP_2,$c,TMP_3,$d,TMP_4,self=this,pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;if(len==null){len=nil}pre_splat=($a=($b=lhs_items).$take_while,$a.$$p=(TMP_2=function(child){var self=TMP_2.$$s||this;if(child==null)child=nil;return child.$type()["$!="]("splat")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$a).call($b);post_splat=lhs_items.$drop(pre_splat.$size());($a=($c=pre_splat).$each_with_index,$a.$$p=(TMP_3=function(child,idx){var self=TMP_3.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;return self.$compile_assignment(child,array,idx,len)},TMP_3.$$s=self,TMP_3.$$arity=2,TMP_3),$a).call($c);if(($a=post_splat["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}else{splat=post_splat.$shift();if(($a=post_splat["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=part=splat["$[]"](1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){part=part.$dup()["$<<"](self.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+")"));self.$push(", ");return self.$push(self.$expr(part))}else{return nil}}else{tmp=self.$scope().$new_temp();self.$push(", "+tmp+" = "+array+".length - "+post_splat.$size());self.$push(", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp);if(($a=part=splat["$[]"](1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){part=part.$dup()["$<<"](self.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")"));self.$push(", ");self.$push(self.$expr(part))}($a=($d=post_splat).$each_with_index,$a.$$p=(TMP_4=function(child,idx){var self=TMP_4.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){return self.$compile_assignment(child,array,tmp)}else{return self.$compile_assignment(child,array,""+tmp+" + "+idx)}},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4),$a).call($d);return self.$scope().$queue_temp(tmp)}}},TMP_5.$$arity=-3);return(Opal.defn(self,"$compile_assignment",TMP_6=function $$compile_assignment(child,array,idx,len){var $a,$b,self=this,assign=nil,part=nil,tmp=nil;if(len==null){len=nil}if(($a=($b=len["$!"]())!==false&&$b!==nil&&$b!=null?$b:$rb_ge(idx,len))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){assign=self.$s("js_tmp","("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])")}else{assign=self.$s("js_tmp",""+array+"["+idx+"]")}part=child.$dup();if(($a=$scope.get("SIMPLE_ASSIGNMENT")["$include?"](child.$type()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){part["$<<"](assign)}else if(child.$type()["$=="]("call")){part["$[]="](2,(""+part["$[]"](2)+"=").$to_sym());part.$last()["$<<"](assign)}else if(child.$type()["$=="]("attrasgn")){part.$last()["$<<"](assign)}else if(child.$type()["$=="]("array")){tmp=self.$scope().$new_temp();self.$push(", ("+tmp+" = Opal.to_ary("+assign["$[]"](1)+")");self.$compile_masgn(child.$children(),tmp);self.$push(")");self.$scope().$queue_temp(tmp);return nil}else{self.$raise("Bad child node in masgn LHS: "+child+". LHS: "+self.$lhs())}self.$push(", ");return self.$push(self.$expr(part))},TMP_6.$$arity=-4),nil)&&"compile_assignment"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$each","$==","$first","$expr","$empty?","$<<","$fragment","$children","$push"]);self.$require("opal/nodes/base");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $ArglistNode(){}var self=$ArglistNode=$klass($base,$super,"ArglistNode",$ArglistNode);var def=self.$$proto,$scope=self.$$scope,TMP_2;self.$handle("arglist");return(Opal.defn(self,"$compile",TMP_2=function $$compile(){var $a,$b,TMP_1,self=this,code=nil,work=nil,join=nil;$a=[[],[]],code=$a[0],work=$a[1],$a;($a=($b=self.$children()).$each,$a.$$p=(TMP_1=function(current){var self=TMP_1.$$s||this,$c,splat=nil,arg=nil;if(current==null)current=nil;splat=current.$first()["$=="]("splat");arg=self.$expr(current);if(splat!==false&&splat!==nil&&splat!=null){if(($c=work["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){if(($c=code["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){code["$<<"](arg)}else{code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}}else{if(($c=code["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}return work=[]}else{if(($c=work["$empty?"]())!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](arg)}},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1),$a).call($b);if(($a=work["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{join=work;if(($a=code["$empty?"]())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){code=join}else{code["$<<"](self.$fragment(".concat("))["$<<"](join)["$<<"](self.$fragment(")"))}}return($a=self).$push.apply($a,Opal.to_a(code))},TMP_2.$$arity=0),nil)&&"compile"})($scope.base,$scope.get("Base"))})($scope.base)}($scope.base)};Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/nodes/base");self.$require("opal/nodes/literal");self.$require("opal/nodes/variables");self.$require("opal/nodes/constants");self.$require("opal/nodes/call");self.$require("opal/nodes/call_special");self.$require("opal/nodes/module");self.$require("opal/nodes/class");self.$require("opal/nodes/singleton_class");self.$require("opal/nodes/inline_args");self.$require("opal/nodes/args/normarg");self.$require("opal/nodes/args/optarg");self.$require("opal/nodes/args/mlhsarg");self.$require("opal/nodes/args/restarg");self.$require("opal/nodes/args/kwarg");self.$require("opal/nodes/args/kwoptarg");self.$require("opal/nodes/args/kwrestarg");self.$require("opal/nodes/args/post_kwargs");self.$require("opal/nodes/args/post_args");self.$require("opal/nodes/iter");self.$require("opal/nodes/def");self.$require("opal/nodes/if");self.$require("opal/nodes/logic");self.$require("opal/nodes/definitions");self.$require("opal/nodes/yield");self.$require("opal/nodes/rescue");self.$require("opal/nodes/case");self.$require("opal/nodes/super");self.$require("opal/nodes/top");self.$require("opal/nodes/while");self.$require("opal/nodes/for");self.$require("opal/nodes/hash");self.$require("opal/nodes/array");self.$require("opal/nodes/defined");self.$require("opal/nodes/masgn");return self.$require("opal/nodes/arglist")};Opal.modules["opal/compiler"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2,$klass=Opal.klass;Opal.add_stubs(["$require","$compile","$new","$[]","$define_method","$fetch","$!","$include?","$raise","$+","$inspect","$compiler_option","$attr_reader","$attr_accessor","$parse","$file","$message","$backtrace","$s","$eof_content","$lexer","$flatten","$process","$join","$map","$to_proc","$class","$warn","$<<","$helpers","$new_temp","$queue_temp","$push_while","$pop_while","$==","$in_while?","$fragment","$scope","$handlers","$type","$compile_to_fragments","$returns","$===","$pop","$[]=","$>","$length","$=~","$source=","$source","$uses_block!","$block_name","$find_parent_def"]);self.$require("set");self.$require("opal/parser");self.$require("opal/fragment");self.$require("opal/nodes");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope,TMP_1;Opal.defs(self,"$compile",TMP_1=function $$compile(source,options){var self=this;if(options==null){options=$hash2([],{})}return $scope.get("Compiler").$new(source,options).$compile()},TMP_1.$$arity=-2);(function($base,$super){function $Compiler(){}var self=$Compiler=$klass($base,$super,"Compiler",$Compiler);var def=self.$$proto,$scope=self.$$scope,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32;def.parser=def.source=def.sexp=def.fragments=def.helpers=def.operator_helpers=def.method_calls=def.indent=def.unique=def.scope=def.in_ensure=def.break_detected=def.case_stmt=def.handlers=def.requires=def.required_trees=nil;Opal.cdecl($scope,"INDENT"," ");Opal.cdecl($scope,"COMPARE",["<",">","<=",">="]);Opal.defs(self,"$compiler_option",TMP_4=function $$compiler_option(name,default_value,options){var $a,$b,TMP_2,$c,self=this,mid=nil,valid_values=nil;if(options==null){options=$hash2([],{})}mid=options["$[]"]("as");valid_values=options["$[]"]("valid_values");return($a=($b=self).$define_method,$a.$$p=(TMP_2=function(){var self=TMP_2.$$s||this,$c,$d,TMP_3,$e,value=nil;if(self.options==null)self.options=nil;value=($c=($d=self.options).$fetch,$c.$$p=(TMP_3=function(){var self=TMP_3.$$s||this;return default_value},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3),$c).call($d,name);if(($c=($e=valid_values!==false&&valid_values!==nil&&valid_values!=null)?valid_values["$include?"](value)["$!"]():valid_values)!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){self.$raise($scope.get("ArgumentError"),$rb_plus("invalid value "+value.$inspect()+" for option "+name.$inspect()+" ","(valid values: "+valid_values.$inspect()+")"))}return value},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2),$a).call($b,($c=mid)!==false&&$c!==nil&&$c!=null?$c:name)},TMP_4.$$arity=-3);self.$compiler_option("file","(file)");self.$compiler_option("method_missing",true,$hash2(["as"],{as:"method_missing?"}));self.$compiler_option("arity_check",false,$hash2(["as"],{as:"arity_check?"}));self.$compiler_option("freezing",true,$hash2(["as"],{as:"freezing?"}));self.$compiler_option("tainting",true,$hash2(["as"],{as:"tainting?"}));self.$compiler_option("irb",false,$hash2(["as"],{as:"irb?"}));self.$compiler_option("dynamic_require_severity","warning",$hash2(["valid_values"],{valid_values:["error","warning","ignore"]}));self.$compiler_option("requirable",false,$hash2(["as"],{as:"requirable?"}));self.$compiler_option("inline_operators",true,$hash2(["as"],{as:"inline_operators?"}));self.$compiler_option("eval",false,$hash2(["as"],{as:"eval?"}));self.$attr_reader("result");self.$attr_reader("fragments");self.$attr_accessor("scope");self.$attr_reader("case_stmt");self.$attr_reader("eof_content");Opal.defn(self,"$initialize",TMP_5=function $$initialize(source,options){var self=this;if(options==null){options=$hash2([],{})}self.source=source;self.indent="";self.unique=0;return self.options=options},TMP_5.$$arity=-2);Opal.defn(self,"$compile",TMP_6=function $$compile(){var $a,$b,self=this,parsed=nil,error=nil,message=nil;try{self.parser=$scope.get("Parser").$new();parsed=function(){try{return self.parser.$parse(self.source,self.$file())}catch($err){if(Opal.rescue($err,[$scope.get("StandardError")])){error=$err;try{return self.$raise($scope.get("SyntaxError"),error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}else{throw $err}}}();self.sexp=self.$s("top",($a=parsed)!==false&&$a!==nil&&$a!=null?$a:self.$s("nil"));self.eof_content=self.parser.$lexer().$eof_content();self.fragments=self.$process(self.sexp).$flatten();return self.result=($a=($b=self.fragments).$map,$a.$$p="code".$to_proc(),$a).call($b).$join("")}catch($err){if(Opal.rescue($err,[$scope.get("Exception")])){error=$err;try{message="An error occurred while compiling: "+self.$file()+"\n"+error.$message();return self.$raise(error.$class(),message,error.$backtrace())}finally{Opal.pop_exception()}}else{throw $err}}},TMP_6.$$arity=0);Opal.defn(self,"$source_map",TMP_7=function $$source_map(source_file){var $a,self=this;if(source_file==null){source_file=nil}return $scope.get("Opal").$$scope.get("SourceMap").$new(self.fragments,($a=source_file)!==false&&$a!==nil&&$a!=null?$a:self.$file())},TMP_7.$$arity=-1);Opal.defn(self,"$helpers",TMP_8=function $$helpers(){var $a,self=this;return($a=self.helpers)!==false&&$a!==nil&&$a!=null?$a:self.helpers=$scope.get("Set").$new(["breaker","slice"])},TMP_8.$$arity=0);Opal.defn(self,"$operator_helpers",TMP_9=function $$operator_helpers(){var $a,self=this;return($a=self.operator_helpers)!==false&&$a!==nil&&$a!=null?$a:self.operator_helpers=$scope.get("Set").$new()},TMP_9.$$arity=0);Opal.defn(self,"$method_calls",TMP_10=function $$method_calls(){var $a,self=this;return($a=self.method_calls)!==false&&$a!==nil&&$a!=null?$a:self.method_calls=$scope.get("Set").$new()},TMP_10.$$arity=0);Opal.defn(self,"$error",TMP_11=function $$error(msg,line){var self=this;if(line==null){line=nil}return self.$raise($scope.get("SyntaxError"),""+msg+" :"+self.$file()+":"+line)},TMP_11.$$arity=-2);Opal.defn(self,"$warning",TMP_12=function $$warning(msg,line){var self=this;if(line==null){line=nil}return self.$warn("WARNING: "+msg+" -- "+self.$file()+":"+line)},TMP_12.$$arity=-2);Opal.defn(self,"$parser_indent",TMP_13=function $$parser_indent(){var self=this;return self.indent},TMP_13.$$arity=0);Opal.defn(self,"$s",TMP_14=function $$s($a_rest){var self=this,parts;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}parts=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){parts[$arg_idx-0]=arguments[$arg_idx]}return $scope.get("Sexp").$new(parts)},TMP_14.$$arity=-1);Opal.defn(self,"$fragment",TMP_15=function $$fragment(str,scope,sexp){var self=this;if(sexp==null){sexp=nil}return $scope.get("Fragment").$new(str,scope,sexp)},TMP_15.$$arity=-3);Opal.defn(self,"$unique_temp",TMP_16=function $$unique_temp(){var self=this;return"TMP_"+(self.unique=$rb_plus(self.unique,1))},TMP_16.$$arity=0);Opal.defn(self,"$helper",TMP_17=function $$helper(name){var self=this;return self.$helpers()["$<<"](name)},TMP_17.$$arity=1);Opal.defn(self,"$indent",TMP_18=function $$indent(){var self=this,$iter=TMP_18.$$p,block=$iter||nil,indent=nil,res=nil;TMP_18.$$p=null;indent=self.indent;self.indent=$rb_plus(self.indent,$scope.get("INDENT"));self.space="\n"+self.indent;res=Opal.yieldX(block,[]);self.indent=indent;self.space="\n"+self.indent;return res},TMP_18.$$arity=0);Opal.defn(self,"$with_temp",TMP_19=function $$with_temp(){var self=this,$iter=TMP_19.$$p,block=$iter||nil,tmp=nil,res=nil;TMP_19.$$p=null;tmp=self.scope.$new_temp();res=Opal.yield1(block,tmp);self.scope.$queue_temp(tmp);return res},TMP_19.$$arity=0);Opal.defn(self,"$in_while",TMP_20=function $$in_while(){var self=this,$iter=TMP_20.$$p,$yield=$iter||nil,result=nil;TMP_20.$$p=null;if($yield!==nil){}else{return nil}self.while_loop=self.scope.$push_while();result=Opal.yieldX($yield,[]);self.scope.$pop_while();return result},TMP_20.$$arity=0);Opal.defn(self,"$in_ensure",TMP_21=function $$in_ensure(){var self=this,$iter=TMP_21.$$p,$yield=$iter||nil,result=nil;TMP_21.$$p=null;if($yield!==nil){}else{return nil}self.in_ensure=true;result=Opal.yieldX($yield,[]);self.in_ensure=false;return result},TMP_21.$$arity=0);Opal.defn(self,"$in_ensure?",TMP_22=function(){var self=this;return self.in_ensure},TMP_22.$$arity=0);Opal.defn(self,"$has_break?",TMP_23=function(){var self=this,$iter=TMP_23.$$p,$yield=$iter||nil,result=nil,detected=nil;TMP_23.$$p=null;if($yield!==nil){}else{return self.break_detected}self.break_detected=false;result=Opal.yieldX($yield,[]);detected=self.break_detected;self.break_detected=nil;return detected},TMP_23.$$arity=0);Opal.defn(self,"$has_break!",TMP_24=function(){var self=this;if(self.break_detected["$=="](false)){return self.break_detected=true}else{return nil}},TMP_24.$$arity=0);Opal.defn(self,"$in_case",TMP_25=function $$in_case(){var self=this,$iter=TMP_25.$$p,$yield=$iter||nil,old=nil;TMP_25.$$p=null;if($yield!==nil){}else{return nil}old=self.case_stmt;self.case_stmt=$hash2([],{});Opal.yieldX($yield,[]);return self.case_stmt=old},TMP_25.$$arity=0);Opal.defn(self,"$in_while?",TMP_26=function(){var self=this;return self.scope["$in_while?"]()},TMP_26.$$arity=0);Opal.defn(self,"$process",TMP_27=function $$process(sexp,level){var $a,self=this,handler=nil;if(level==null){level="expr"}if(sexp["$=="](nil)){return self.$fragment("",self.$scope())}if(($a=handler=self.$handlers()["$[]"](sexp.$type()))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return handler.$new(sexp,level,self).$compile_to_fragments()}else{return self.$raise("Unsupported sexp: "+sexp.$type())}},TMP_27.$$arity=-2);Opal.defn(self,"$handlers",TMP_28=function $$handlers(){var $a,self=this;return($a=self.handlers)!==false&&$a!==nil&&$a!=null?$a:self.handlers=$scope.get("Opal").$$scope.get("Nodes").$$scope.get("Base").$handlers()},TMP_28.$$arity=0);Opal.defn(self,"$requires",TMP_29=function $$requires(){var $a,self=this;return($a=self.requires)!==false&&$a!==nil&&$a!=null?$a:self.requires=[]},TMP_29.$$arity=0);Opal.defn(self,"$required_trees",TMP_30=function $$required_trees(){var $a,self=this;return($a=self.required_trees)!==false&&$a!==nil&&$a!=null?$a:self.required_trees=[]},TMP_30.$$arity=0);Opal.defn(self,"$returns",TMP_31=function $$returns(sexp){var $a,$b,self=this,$case=nil,last=nil,return_sexp=nil;if(sexp!==false&&sexp!==nil&&sexp!=null){}else{return self.$returns(self.$s("nil"))}return function(){$case=sexp.$type();if("undef"["$==="]($case)){last=sexp.$pop();return sexp["$<<"](self.$returns(last))}else if("break"["$==="]($case)||"next"["$==="]($case)||"redo"["$==="]($case)){return sexp}else if("yield"["$==="]($case)){sexp["$[]="](0,"returnable_yield");return sexp}else if("scope"["$==="]($case)){sexp["$[]="](1,self.$returns(sexp["$[]"](1)));return sexp}else if("block"["$==="]($case)){if(($a=$rb_gt(sexp.$length(),1))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sexp["$[]="](-1,self.$returns(sexp["$[]"](-1)))}else{sexp["$<<"](self.$returns(self.$s("nil")))}return sexp}else if("when"["$==="]($case)){sexp["$[]="](2,self.$returns(sexp["$[]"](2)));return sexp}else if("rescue"["$==="]($case)){sexp["$[]="](1,self.$returns(sexp["$[]"](1)));if(($a=($b=sexp["$[]"](2),$b!==false&&$b!==nil&&$b!=null?sexp["$[]"](2)["$[]"](0)["$=="]("resbody"):$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){if(($a=sexp["$[]"](2)["$[]"](2))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){sexp["$[]"](2)["$[]="](2,self.$returns(sexp["$[]"](2)["$[]"](2)))}else{sexp["$[]"](2)["$[]="](2,self.$returns(self.$s("nil")))}}return sexp}else if("ensure"["$==="]($case)){sexp["$[]="](1,self.$returns(sexp["$[]"](1)));return sexp}else if("begin"["$==="]($case)){sexp["$[]="](1,self.$returns(sexp["$[]"](1)));return sexp}else if("rescue_mod"["$==="]($case)){sexp["$[]="](1,self.$returns(sexp["$[]"](1)));sexp["$[]="](2,self.$returns(sexp["$[]"](2)));return sexp}else if("while"["$==="]($case)){return sexp}else if("return"["$==="]($case)||"js_return"["$==="]($case)){return sexp}else if("xstr"["$==="]($case)){if(($a=/return|;/["$=~"](sexp["$[]"](1)))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{sexp["$[]="](1,"return "+sexp["$[]"](1)+";")}return sexp}else if("dxstr"["$==="]($case)){if(($a=/return|;|\n/["$=~"](sexp["$[]"](1)))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){}else{sexp["$[]="](1,"return "+sexp["$[]"](1))}return sexp}else if("if"["$==="]($case)){sexp["$[]="](2,self.$returns(($a=sexp["$[]"](2))!==false&&$a!==nil&&$a!=null?$a:self.$s("nil")));sexp["$[]="](3,self.$returns(($a=sexp["$[]"](3))!==false&&$a!==nil&&$a!=null?$a:self.$s("nil")));return sexp}else{return_sexp=self.$s("js_return",sexp);$a=[sexp.$source()],$b=return_sexp,$b["$source="].apply($b,$a),$a[$a.length-1];return return_sexp}}()},TMP_31.$$arity=1);return(Opal.defn(self,"$handle_block_given_call",TMP_32=function $$handle_block_given_call(sexp){var $a,$b,self=this,scope=nil;self.scope["$uses_block!"]();if(($a=self.scope.$block_name())!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$fragment("("+self.scope.$block_name()+" !== nil)",self.$scope(),sexp)}else if(($a=($b=scope=self.scope.$find_parent_def(),$b!==false&&$b!==nil&&$b!=null?scope.$block_name():$b))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return self.$fragment("("+scope.$block_name()+" !== nil)",scope,sexp)}else{return self.$fragment("false",scope,sexp)}},TMP_32.$$arity=1),nil)&&"handle_block_given_call"})($scope.base,null)}($scope.base)};Opal.modules["opal/erb"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$require","$compile","$new","$fix_quotes","$find_contents","$find_code","$wrap_compiled","$require_erb","$prepared_source","$gsub","$+","$=~","$sub"]);self.$require("opal/compiler");return function($base){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;(function($base){var $ERB,self=$ERB=$module($base,"ERB");var def=self.$$proto,$scope=self.$$scope,TMP_1;Opal.defs(self,"$compile",TMP_1=function $$compile(source,file_name){var self=this;if(file_name==null){file_name="(erb)"}return $scope.get("Compiler").$new(source,file_name).$compile()},TMP_1.$$arity=-2);(function($base,$super){function $Compiler(){}var self=$Compiler=$klass($base,$super,"Compiler",$Compiler);var def=self.$$proto,$scope=self.$$scope,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_8,TMP_10,TMP_11;def.prepared_source=def.source=def.file_name=nil;Opal.cdecl($scope,"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/);Opal.defn(self,"$initialize",TMP_2=function $$initialize(source,file_name){var $a,self=this;if(file_name==null){file_name="(erb)"}return $a=[source,file_name,source],self.source=$a[0],self.file_name=$a[1],self.result=$a[2],$a},TMP_2.$$arity=-2);Opal.defn(self,"$prepared_source",TMP_3=function $$prepared_source(){var $a,self=this,source=nil;return($a=self.prepared_source)!==false&&$a!==nil&&$a!=null?$a:self.prepared_source=function(){source=self.source;source=self.$fix_quotes(source);source=self.$find_contents(source);source=self.$find_code(source);source=self.$wrap_compiled(source);source=self.$require_erb(source);return source}()},TMP_3.$$arity=0);Opal.defn(self,"$compile",TMP_4=function $$compile(){var self=this;return $scope.get("Opal").$compile(self.$prepared_source())},TMP_4.$$arity=0);Opal.defn(self,"$fix_quotes",TMP_5=function $$fix_quotes(result){var self=this;return result.$gsub('"','\\"')},TMP_5.$$arity=1);Opal.defn(self,"$require_erb",TMP_6=function $$require_erb(result){var self=this;return $rb_plus('require "erb";',result)},TMP_6.$$arity=1);Opal.defn(self,"$find_contents",TMP_8=function $$find_contents(result){var $a,$b,TMP_7,self=this;return($a=($b=result).$gsub,$a.$$p=(TMP_7=function(){var self=TMP_7.$$s||this,$c,inner=nil;inner=(($c=$gvars["~"])===nil?nil:$c["$[]"](1)).$gsub(/\\'/,"'").$gsub(/\\"/,'"');if(($c=inner["$=~"]($scope.get("BLOCK_EXPR")))!==nil&&$c!=null&&(!$c.$$is_boolean||$c==true)){return'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("'}else{return'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}},TMP_7.$$s=self,TMP_7.$$arity=0,TMP_7),$a).call($b,/<%=([\s\S]+?)%>/)},TMP_8.$$arity=1);Opal.defn(self,"$find_code",TMP_10=function $$find_code(result){var $a,$b,TMP_9,self=this;return($a=($b=result).$gsub,$a.$$p=(TMP_9=function(){var self=TMP_9.$$s||this,$c,inner=nil;inner=(($c=$gvars["~"])===nil?nil:$c["$[]"](1)).$gsub(/\\"/,'"');return'")\n'+inner+'\noutput_buffer.append("'},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9),$a).call($b,/<%([\s\S]+?)%>/)},TMP_10.$$arity=1);return(Opal.defn(self,"$wrap_compiled",TMP_11=function $$wrap_compiled(result){var self=this,path=nil;path=self.file_name.$sub(new RegExp("\\.opalerb"+$scope.get("REGEXP_END")),"");return result="Template.new('"+path+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'},TMP_11.$$arity=1),nil)&&"wrap_compiled"})($scope.base,null)})($scope.base)}($scope.base)};Opal.modules["opal-parser"]=function(Opal){var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2;Opal.add_stubs(["$require","$coerce_to!","$merge","$compile","$eval"]);self.$require("opal/compiler");self.$require("opal/erb");self.$require("opal/version");(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2;Opal.defn(self,"$eval",TMP_1=function(str){var self=this,default_eval_options=nil,compiling_options=nil,code=nil;str=$scope.get("Opal")["$coerce_to!"](str,$scope.get("String"),"to_str");default_eval_options=$hash2(["file","eval"],{file:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);code=$scope.get("Opal").$compile(str,compiling_options);return function(self){return eval(code)}(self)},TMP_1.$$arity=1);Opal.defn(self,"$require_remote",TMP_2=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},TMP_2.$$arity=1)})($scope.base);Opal.compile=function(str,options){if(options){options=Opal.hash(options)}return Opal.Opal.$compile(str,options)};Opal["eval"]=function(str,options){return eval(Opal.compile(str,options))};function run_ruby_scripts(){var tag,tags=document.getElementsByTagName("script");for(var i=0,len=tags.length;i<len;i++){tag=tags[i];if(tag.type==="text/ruby"){if(tag.src)Opal.Kernel.$require_remote(tag.src);if(tag.innerHTML)Opal.Kernel.$eval(tag.innerHTML)}}}if(typeof document!=="undefined"){if(window.addEventListener){window.addEventListener("DOMContentLoaded",run_ruby_scripts,false)}else{window.attachEvent("onload",run_ruby_scripts)}}};Opal.modules["pp"]=function(Opal){function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$inspect","$each","$pp","$<=","$size","$first","$module_function","$p","$args","$===","$+","$<<"]);(function($base){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_3;Opal.defn(self,"$pretty_inspect",TMP_1=function $$pretty_inspect(){var self=this;return self.$inspect()},TMP_1.$$arity=0);Opal.defn(self,"$pp",TMP_3=function $$pp($a_rest){var $b,$c,TMP_2,self=this,objs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objs[$arg_idx-0]=arguments[$arg_idx]}($b=($c=objs).$each,$b.$$p=(TMP_2=function(obj){var self=TMP_2.$$s||this;if(obj==null)obj=nil;return $scope.get("PP").$pp(obj)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2),$b).call($c);if(($b=$rb_le(objs.$size(),1))!==nil&&$b!=null&&(!$b.$$is_boolean||$b==true)){return objs.$first()}else{return objs}},TMP_3.$$arity=-1);self.$module_function("pp")})($scope.base);return function($base,$super){function $PP(){}var self=$PP=$klass($base,$super,"PP",$PP);var def=self.$$proto,$scope=self.$$scope;return function(self){var $scope=self.$$scope,def=self.$$proto,$a,TMP_4,TMP_5;if(($a=typeof console==="undefined"||typeof console.log==="undefined")!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){Opal.defn(self,"$pp",TMP_4=function $$pp(obj,out,width){var $a,self=this;if($gvars.stdout==null)$gvars.stdout=nil;if(out==null){out=$gvars.stdout}if(width==null){width=79}return($a=self).$p.apply($a,Opal.to_a(self.$args()))},TMP_4.$$arity=-2)}else{Opal.defn(self,"$pp",TMP_5=function $$pp(obj,out,width){var $a,self=this;if($gvars.stdout==null)$gvars.stdout=nil;if(out==null){out=$gvars.stdout}if(width==null){width=79}if(($a=$scope.get("String")["$==="](out))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return $rb_plus($rb_plus(out,obj.$inspect()),"\n")}else{return out["$<<"]($rb_plus(obj.$inspect(),"\n"))}},TMP_5.$$arity=-2)}return Opal.alias(self,"singleline_pp","pp")}(Opal.get_singleton_class(self))}($scope.base,null)};(function(Opal){function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var TMP_1,TMP_2,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$module=Opal.module;Opal.add_stubs(["$require","$eval","$include","$new","$[]=","$join","$sort","$keys","$>=","$[]","$inspect","$+"]);self.$require("opal");self.$require("console");Opal.defn(Opal.Object,"$console",TMP_1=function $$console(){var self=this;if($gvars.console==null)$gvars.console=nil;return $gvars.console},TMP_1.$$arity=0);self.$require("dxopal/constants/colors");self.$require("dxopal/font");self.$require("dxopal/input");self.$require("dxopal/input/key_codes");self.$require("dxopal/image");self.$require("dxopal/sound");self.$require("dxopal/sound_effect");self.$require("dxopal/sprite");self.$require("dxopal/window");self.$require("dxopal/version");self.$require("opal-parser");Opal.defn(Opal.Object,"$require_remote",TMP_2=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.overrideMimeType("text/plain");r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},TMP_2.$$arity=1);self.$require("pp");(function($base){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$scope=self.$$scope,$a,$b,TMP_3,TMP_4;self.$include($scope.get("DXOpal").$$scope.get("Constants").$$scope.get("Colors"));self.$include($scope.get("DXOpal").$$scope.get("Input").$$scope.get("KeyCodes"));self.$include($scope.get("DXOpal").$$scope.get("Input").$$scope.get("MouseCodes"));self.$include($scope.get("DXOpal").$$scope.get("SoundEffect").$$scope.get("WaveTypes"));Opal.cdecl($scope,"P_CT",($a=($b=$scope.get("Hash")).$new,$a.$$p=(TMP_3=function(h,k){var self=TMP_3.$$s||this;if(h==null)h=nil;if(k==null)k=nil;return h["$[]="](k,0)},TMP_3.$$s=self,TMP_3.$$arity=2,TMP_3),$a).call($b));Opal.defn(self,"$p_",TMP_4=function $$p_(hash,n){var $a,$b,self=this,key=nil;if(n==null){n=10}key=hash.$keys().$sort().$join();if(($a=$rb_ge($scope.get("P_CT")["$[]"](key),n))!==nil&&$a!=null&&(!$a.$$is_boolean||$a==true)){return nil}console.log(hash.$inspect());return $a=key,$b=$scope.get("P_CT"),$b["$[]="]($a,$rb_plus($b["$[]"]($a),1))},TMP_4.$$arity=-2)})($scope.base);return self.$include($scope.get("DXOpal"))})(Opal);(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Matter=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var Body={};module.exports=Body;var Vertices=require("../geometry/Vertices");var Vector=require("../geometry/Vector");var Sleeping=require("../core/Sleeping");var Render=require("../render/Render");var Common=require("../core/Common");var Bounds=require("../geometry/Bounds");var Axes=require("../geometry/Axes");(function(){Body._inertiaScale=4;Body._nextCollidingGroupId=1;Body._nextNonCollidingGroupId=-1;Body._nextCategory=1;Body.create=function(options){var defaults={id:Common.nextId(),type:"body",label:"Body",parts:[],angle:0,vertices:Vertices.fromPath("L 0 0 L 40 0 L 40 40 L 0 40"),position:{x:0,y:0},force:{x:0,y:0},torque:0,positionImpulse:{x:0,y:0},constraintImpulse:{x:0,y:0,angle:0},totalContacts:0,speed:0,angularSpeed:0,velocity:{x:0,y:0},angularVelocity:0,isSensor:false,isStatic:false,isSleeping:false,motion:0,sleepThreshold:60,density:.001,restitution:0,friction:.1,frictionStatic:.5,frictionAir:.01,collisionFilter:{category:1,mask:4294967295,group:0},slop:.05,timeScale:1,render:{visible:true,opacity:1,sprite:{xScale:1,yScale:1,xOffset:0,yOffset:0},lineWidth:1.5}};var body=Common.extend(defaults,options);_initProperties(body,options);return body};Body.nextGroup=function(isNonColliding){if(isNonColliding)return Body._nextNonCollidingGroupId--;return Body._nextCollidingGroupId++};Body.nextCategory=function(){Body._nextCategory=Body._nextCategory<<1;return Body._nextCategory};var _initProperties=function(body,options){Body.set(body,{bounds:body.bounds||Bounds.create(body.vertices),positionPrev:body.positionPrev||Vector.clone(body.position),anglePrev:body.anglePrev||body.angle,vertices:body.vertices,parts:body.parts||[body],isStatic:body.isStatic,isSleeping:body.isSleeping,parent:body.parent||body});Vertices.rotate(body.vertices,body.angle,body.position);Axes.rotate(body.axes,body.angle);Bounds.update(body.bounds,body.vertices,body.velocity);Body.set(body,{axes:options.axes||body.axes,area:options.area||body.area,mass:options.mass||body.mass,inertia:options.inertia||body.inertia});var defaultFillStyle=body.isStatic?"#eeeeee":Common.choose(["#556270","#4ECDC4","#C7F464","#FF6B6B","#C44D58"]),defaultStrokeStyle=Common.shadeColor(defaultFillStyle,-20);body.render.fillStyle=body.render.fillStyle||defaultFillStyle;body.render.strokeStyle=body.render.strokeStyle||defaultStrokeStyle;body.render.sprite.xOffset+=-(body.bounds.min.x-body.position.x)/(body.bounds.max.x-body.bounds.min.x);body.render.sprite.yOffset+=-(body.bounds.min.y-body.position.y)/(body.bounds.max.y-body.bounds.min.y)};Body.set=function(body,settings,value){var property;if(typeof settings==="string"){property=settings;settings={};settings[property]=value}for(property in settings){value=settings[property];if(!settings.hasOwnProperty(property))continue;switch(property){case"isStatic":Body.setStatic(body,value);break;case"isSleeping":Sleeping.set(body,value);break;case"mass":Body.setMass(body,value);break;case"density":Body.setDensity(body,value);break;case"inertia":Body.setInertia(body,value);break;case"vertices":Body.setVertices(body,value);break;case"position":Body.setPosition(body,value);break;case"angle":Body.setAngle(body,value);break;case"velocity":Body.setVelocity(body,value);break;case"angularVelocity":Body.setAngularVelocity(body,value);break;case"parts":Body.setParts(body,value);break;default:body[property]=value}}};Body.setStatic=function(body,isStatic){for(var i=0;i<body.parts.length;i++){var part=body.parts[i];part.isStatic=isStatic;if(isStatic){part.restitution=0;part.friction=1;part.mass=part.inertia=part.density=Infinity;part.inverseMass=part.inverseInertia=0;part.positionPrev.x=part.position.x;part.positionPrev.y=part.position.y;part.anglePrev=part.angle;part.angularVelocity=0;part.speed=0;part.angularSpeed=0;part.motion=0}}};Body.setMass=function(body,mass){body.mass=mass;body.inverseMass=1/body.mass;body.density=body.mass/body.area};Body.setDensity=function(body,density){Body.setMass(body,density*body.area);body.density=density};Body.setInertia=function(body,inertia){body.inertia=inertia;body.inverseInertia=1/body.inertia};Body.setVertices=function(body,vertices){if(vertices[0].body===body){body.vertices=vertices}else{body.vertices=Vertices.create(vertices,body)}body.axes=Axes.fromVertices(body.vertices);body.area=Vertices.area(body.vertices);Body.setMass(body,body.density*body.area);var centre=Vertices.centre(body.vertices);Vertices.translate(body.vertices,centre,-1);Body.setInertia(body,Body._inertiaScale*Vertices.inertia(body.vertices,body.mass));Vertices.translate(body.vertices,body.position);Bounds.update(body.bounds,body.vertices,body.velocity)};Body.setParts=function(body,parts,autoHull){var i;parts=parts.slice(0);body.parts.length=0;body.parts.push(body);body.parent=body;for(i=0;i<parts.length;i++){var part=parts[i];if(part!==body){part.parent=body;body.parts.push(part)}}if(body.parts.length===1)return;autoHull=typeof autoHull!=="undefined"?autoHull:true;if(autoHull){var vertices=[];for(i=0;i<parts.length;i++){vertices=vertices.concat(parts[i].vertices)}Vertices.clockwiseSort(vertices);var hull=Vertices.hull(vertices),hullCentre=Vertices.centre(hull);Body.setVertices(body,hull);Vertices.translate(body.vertices,hullCentre)}var total=_totalProperties(body);body.area=total.area;body.parent=body;body.position.x=total.centre.x;body.position.y=total.centre.y;body.positionPrev.x=total.centre.x;body.positionPrev.y=total.centre.y;Body.setMass(body,total.mass);Body.setInertia(body,total.inertia);Body.setPosition(body,total.centre)};Body.setPosition=function(body,position){var delta=Vector.sub(position,body.position);body.positionPrev.x+=delta.x;body.positionPrev.y+=delta.y;for(var i=0;i<body.parts.length;i++){var part=body.parts[i];part.position.x+=delta.x;part.position.y+=delta.y;Vertices.translate(part.vertices,delta);Bounds.update(part.bounds,part.vertices,body.velocity)}};Body.setAngle=function(body,angle){var delta=angle-body.angle;body.anglePrev+=delta;for(var i=0;i<body.parts.length;i++){var part=body.parts[i];part.angle+=delta;Vertices.rotate(part.vertices,delta,body.position);Axes.rotate(part.axes,delta);Bounds.update(part.bounds,part.vertices,body.velocity);if(i>0){Vector.rotateAbout(part.position,delta,body.position,part.position)}}};Body.setVelocity=function(body,velocity){body.positionPrev.x=body.position.x-velocity.x;body.positionPrev.y=body.position.y-velocity.y;body.velocity.x=velocity.x;body.velocity.y=velocity.y;body.speed=Vector.magnitude(body.velocity)};Body.setAngularVelocity=function(body,velocity){body.anglePrev=body.angle-velocity;body.angularVelocity=velocity;body.angularSpeed=Math.abs(body.angularVelocity)};Body.translate=function(body,translation){Body.setPosition(body,Vector.add(body.position,translation))};Body.rotate=function(body,rotation){Body.setAngle(body,body.angle+rotation)};Body.scale=function(body,scaleX,scaleY,point){for(var i=0;i<body.parts.length;i++){var part=body.parts[i];Vertices.scale(part.vertices,scaleX,scaleY,body.position);part.axes=Axes.fromVertices(part.vertices);if(!body.isStatic){part.area=Vertices.area(part.vertices);Body.setMass(part,body.density*part.area);Vertices.translate(part.vertices,{x:-part.position.x,y:-part.position.y});Body.setInertia(part,Vertices.inertia(part.vertices,part.mass));Vertices.translate(part.vertices,{x:part.position.x,y:part.position.y})}Bounds.update(part.bounds,part.vertices,body.velocity)}if(body.circleRadius){if(scaleX===scaleY){body.circleRadius*=scaleX}else{body.circleRadius=null}}if(!body.isStatic){var total=_totalProperties(body);body.area=total.area;Body.setMass(body,total.mass);Body.setInertia(body,total.inertia)}};Body.update=function(body,deltaTime,timeScale,correction){var deltaTimeSquared=Math.pow(deltaTime*timeScale*body.timeScale,2);var frictionAir=1-body.frictionAir*timeScale*body.timeScale,velocityPrevX=body.position.x-body.positionPrev.x,velocityPrevY=body.position.y-body.positionPrev.y;body.velocity.x=velocityPrevX*frictionAir*correction+body.force.x/body.mass*deltaTimeSquared;body.velocity.y=velocityPrevY*frictionAir*correction+body.force.y/body.mass*deltaTimeSquared;body.positionPrev.x=body.position.x;body.positionPrev.y=body.position.y;body.position.x+=body.velocity.x;body.position.y+=body.velocity.y;body.angularVelocity=(body.angle-body.anglePrev)*frictionAir*correction+body.torque/body.inertia*deltaTimeSquared;body.anglePrev=body.angle;body.angle+=body.angularVelocity;body.speed=Vector.magnitude(body.velocity);body.angularSpeed=Math.abs(body.angularVelocity);for(var i=0;i<body.parts.length;i++){var part=body.parts[i];Vertices.translate(part.vertices,body.velocity);if(i>0){part.position.x+=body.velocity.x;part.position.y+=body.velocity.y}if(body.angularVelocity!==0){Vertices.rotate(part.vertices,body.angularVelocity,body.position);Axes.rotate(part.axes,body.angularVelocity);if(i>0){Vector.rotateAbout(part.position,body.angularVelocity,body.position,part.position)}}Bounds.update(part.bounds,part.vertices,body.velocity)}};Body.applyForce=function(body,position,force){body.force.x+=force.x;body.force.y+=force.y;var offset={x:position.x-body.position.x,y:position.y-body.position.y};body.torque+=offset.x*force.y-offset.y*force.x};var _totalProperties=function(body){var properties={mass:0,area:0,inertia:0,centre:{x:0,y:0}};for(var i=body.parts.length===1?0:1;i<body.parts.length;i++){var part=body.parts[i];properties.mass+=part.mass;properties.area+=part.area;properties.inertia+=part.inertia;properties.centre=Vector.add(properties.centre,Vector.mult(part.position,part.mass!==Infinity?part.mass:1))}properties.centre=Vector.div(properties.centre,properties.mass!==Infinity?properties.mass:body.parts.length);return properties}})()},{"../core/Common":14,"../core/Sleeping":20,"../geometry/Axes":23,"../geometry/Bounds":24,"../geometry/Vector":26,"../geometry/Vertices":27,"../render/Render":29}],2:[function(require,module,exports){var Composite={};module.exports=Composite;var Events=require("../core/Events");var Common=require("../core/Common");var Body=require("./Body");(function(){Composite.create=function(options){return Common.extend({id:Common.nextId(),type:"composite",parent:null,isModified:false,bodies:[],constraints:[],composites:[],label:"Composite"},options)};Composite.setModified=function(composite,isModified,updateParents,updateChildren){composite.isModified=isModified;if(updateParents&&composite.parent){Composite.setModified(composite.parent,isModified,updateParents,updateChildren)}if(updateChildren){for(var i=0;i<composite.composites.length;i++){var childComposite=composite.composites[i];Composite.setModified(childComposite,isModified,updateParents,updateChildren)}}};Composite.add=function(composite,object){var objects=[].concat(object);Events.trigger(composite,"beforeAdd",{object:object});for(var i=0;i<objects.length;i++){var obj=objects[i];switch(obj.type){case"body":if(obj.parent!==obj){Common.log("Composite.add: skipped adding a compound body part (you must add its parent instead)","warn");break}Composite.addBody(composite,obj);break;case"constraint":Composite.addConstraint(composite,obj);break;case"composite":Composite.addComposite(composite,obj);break;case"mouseConstraint":Composite.addConstraint(composite,obj.constraint);break}}Events.trigger(composite,"afterAdd",{object:object});return composite};Composite.remove=function(composite,object,deep){var objects=[].concat(object);Events.trigger(composite,"beforeRemove",{object:object});for(var i=0;i<objects.length;i++){var obj=objects[i];switch(obj.type){case"body":Composite.removeBody(composite,obj,deep);break;case"constraint":Composite.removeConstraint(composite,obj,deep);break;case"composite":Composite.removeComposite(composite,obj,deep);break;case"mouseConstraint":Composite.removeConstraint(composite,obj.constraint);break}}Events.trigger(composite,"afterRemove",{object:object});return composite};Composite.addComposite=function(compositeA,compositeB){compositeA.composites.push(compositeB);compositeB.parent=compositeA;Composite.setModified(compositeA,true,true,false);return compositeA};Composite.removeComposite=function(compositeA,compositeB,deep){var position=Common.indexOf(compositeA.composites,compositeB);if(position!==-1){Composite.removeCompositeAt(compositeA,position);Composite.setModified(compositeA,true,true,false)}if(deep){for(var i=0;i<compositeA.composites.length;i++){Composite.removeComposite(compositeA.composites[i],compositeB,true)}}return compositeA};Composite.removeCompositeAt=function(composite,position){composite.composites.splice(position,1);Composite.setModified(composite,true,true,false);return composite};Composite.addBody=function(composite,body){composite.bodies.push(body);Composite.setModified(composite,true,true,false);return composite};Composite.removeBody=function(composite,body,deep){var position=Common.indexOf(composite.bodies,body);if(position!==-1){Composite.removeBodyAt(composite,position);Composite.setModified(composite,true,true,false)}if(deep){for(var i=0;i<composite.composites.length;i++){Composite.removeBody(composite.composites[i],body,true)}}return composite};Composite.removeBodyAt=function(composite,position){composite.bodies.splice(position,1);Composite.setModified(composite,true,true,false);return composite};Composite.addConstraint=function(composite,constraint){composite.constraints.push(constraint);Composite.setModified(composite,true,true,false);return composite};Composite.removeConstraint=function(composite,constraint,deep){var position=Common.indexOf(composite.constraints,constraint);if(position!==-1){Composite.removeConstraintAt(composite,position)}if(deep){for(var i=0;i<composite.composites.length;i++){Composite.removeConstraint(composite.composites[i],constraint,true)}}return composite};Composite.removeConstraintAt=function(composite,position){composite.constraints.splice(position,1);Composite.setModified(composite,true,true,false);return composite};Composite.clear=function(composite,keepStatic,deep){if(deep){for(var i=0;i<composite.composites.length;i++){Composite.clear(composite.composites[i],keepStatic,true)}}if(keepStatic){composite.bodies=composite.bodies.filter(function(body){return body.isStatic})}else{composite.bodies.length=0}composite.constraints.length=0;composite.composites.length=0;Composite.setModified(composite,true,true,false);return composite};Composite.allBodies=function(composite){var bodies=[].concat(composite.bodies);for(var i=0;i<composite.composites.length;i++)bodies=bodies.concat(Composite.allBodies(composite.composites[i]));return bodies};Composite.allConstraints=function(composite){var constraints=[].concat(composite.constraints);for(var i=0;i<composite.composites.length;i++)constraints=constraints.concat(Composite.allConstraints(composite.composites[i]));return constraints};Composite.allComposites=function(composite){var composites=[].concat(composite.composites);for(var i=0;i<composite.composites.length;i++)composites=composites.concat(Composite.allComposites(composite.composites[i]));return composites};Composite.get=function(composite,id,type){var objects,object;switch(type){case"body":objects=Composite.allBodies(composite);break;case"constraint":objects=Composite.allConstraints(composite);break;case"composite":objects=Composite.allComposites(composite).concat(composite);break}if(!objects)return null;object=objects.filter(function(object){return object.id.toString()===id.toString()});return object.length===0?null:object[0]};Composite.move=function(compositeA,objects,compositeB){Composite.remove(compositeA,objects);Composite.add(compositeB,objects);return compositeA};Composite.rebase=function(composite){var objects=Composite.allBodies(composite).concat(Composite.allConstraints(composite)).concat(Composite.allComposites(composite));for(var i=0;i<objects.length;i++){objects[i].id=Common.nextId()}Composite.setModified(composite,true,true,false);return composite};Composite.translate=function(composite,translation,recursive){var bodies=recursive?Composite.allBodies(composite):composite.bodies;for(var i=0;i<bodies.length;i++){Body.translate(bodies[i],translation)}Composite.setModified(composite,true,true,false);return composite};Composite.rotate=function(composite,rotation,point,recursive){var cos=Math.cos(rotation),sin=Math.sin(rotation),bodies=recursive?Composite.allBodies(composite):composite.bodies;for(var i=0;i<bodies.length;i++){var body=bodies[i],dx=body.position.x-point.x,dy=body.position.y-point.y;Body.setPosition(body,{x:point.x+(dx*cos-dy*sin),y:point.y+(dx*sin+dy*cos)});Body.rotate(body,rotation)}Composite.setModified(composite,true,true,false);return composite};Composite.scale=function(composite,scaleX,scaleY,point,recursive){var bodies=recursive?Composite.allBodies(composite):composite.bodies;for(var i=0;i<bodies.length;i++){var body=bodies[i],dx=body.position.x-point.x,dy=body.position.y-point.y;Body.setPosition(body,{x:point.x+dx*scaleX,y:point.y+dy*scaleY});Body.scale(body,scaleX,scaleY)}Composite.setModified(composite,true,true,false);return composite}})()},{"../core/Common":14,"../core/Events":16,"./Body":1}],3:[function(require,module,exports){var World={};module.exports=World;var Composite=require("./Composite");var Constraint=require("../constraint/Constraint");var Common=require("../core/Common");(function(){World.create=function(options){var composite=Composite.create();var defaults={label:"World",gravity:{x:0,y:1,scale:.001},bounds:{min:{x:-Infinity,y:-Infinity},max:{x:Infinity,y:Infinity}}};return Common.extend(composite,defaults,options)}})()},{"../constraint/Constraint":12,"../core/Common":14,"./Composite":2}],4:[function(require,module,exports){var Contact={};module.exports=Contact;(function(){Contact.create=function(vertex){return{id:Contact.id(vertex),vertex:vertex,normalImpulse:0,tangentImpulse:0}};Contact.id=function(vertex){return vertex.body.id+"_"+vertex.index}})()},{}],5:[function(require,module,exports){var Detector={};module.exports=Detector;var SAT=require("./SAT");var Pair=require("./Pair");var Bounds=require("../geometry/Bounds");(function(){Detector.collisions=function(broadphasePairs,engine){var collisions=[],pairsTable=engine.pairs.table;for(var i=0;i<broadphasePairs.length;i++){var bodyA=broadphasePairs[i][0],bodyB=broadphasePairs[i][1];if((bodyA.isStatic||bodyA.isSleeping)&&(bodyB.isStatic||bodyB.isSleeping))continue;if(!Detector.canCollide(bodyA.collisionFilter,bodyB.collisionFilter))continue;if(Bounds.overlaps(bodyA.bounds,bodyB.bounds)){for(var j=bodyA.parts.length>1?1:0;j<bodyA.parts.length;j++){var partA=bodyA.parts[j];for(var k=bodyB.parts.length>1?1:0;k<bodyB.parts.length;k++){var partB=bodyB.parts[k];if(partA===bodyA&&partB===bodyB||Bounds.overlaps(partA.bounds,partB.bounds)){var pairId=Pair.id(partA,partB),pair=pairsTable[pairId],previousCollision;if(pair&&pair.isActive){previousCollision=pair.collision}else{previousCollision=null}var collision=SAT.collides(partA,partB,previousCollision);if(collision.collided){collisions.push(collision)}}}}}}return collisions};Detector.canCollide=function(filterA,filterB){if(filterA.group===filterB.group&&filterA.group!==0)return filterA.group>0;return(filterA.mask&filterB.category)!==0&&(filterB.mask&filterA.category)!==0}})()},{"../geometry/Bounds":24,"./Pair":7,"./SAT":11}],6:[function(require,module,exports){var Grid={};module.exports=Grid;var Pair=require("./Pair");var Detector=require("./Detector");var Common=require("../core/Common");(function(){Grid.create=function(options){var defaults={controller:Grid,detector:Detector.collisions,buckets:{},pairs:{},pairsList:[],bucketWidth:48,bucketHeight:48};return Common.extend(defaults,options)};Grid.update=function(grid,bodies,engine,forceUpdate){var i,col,row,world=engine.world,buckets=grid.buckets,bucket,bucketId,gridChanged=false;for(i=0;i<bodies.length;i++){var body=bodies[i];if(body.isSleeping&&!forceUpdate)continue;if(body.bounds.max.x<world.bounds.min.x||body.bounds.min.x>world.bounds.max.x||body.bounds.max.y<world.bounds.min.y||body.bounds.min.y>world.bounds.max.y)continue;var newRegion=_getRegion(grid,body);if(!body.region||newRegion.id!==body.region.id||forceUpdate){if(!body.region||forceUpdate)body.region=newRegion;var union=_regionUnion(newRegion,body.region);for(col=union.startCol;col<=union.endCol;col++){for(row=union.startRow;row<=union.endRow;row++){bucketId=_getBucketId(col,row);bucket=buckets[bucketId];var isInsideNewRegion=col>=newRegion.startCol&&col<=newRegion.endCol&&row>=newRegion.startRow&&row<=newRegion.endRow;var isInsideOldRegion=col>=body.region.startCol&&col<=body.region.endCol&&row>=body.region.startRow&&row<=body.region.endRow;if(!isInsideNewRegion&&isInsideOldRegion){if(isInsideOldRegion){if(bucket)_bucketRemoveBody(grid,bucket,body)}}if(body.region===newRegion||isInsideNewRegion&&!isInsideOldRegion||forceUpdate){if(!bucket)bucket=_createBucket(buckets,bucketId);_bucketAddBody(grid,bucket,body)}}}body.region=newRegion;gridChanged=true}}if(gridChanged)grid.pairsList=_createActivePairsList(grid)};Grid.clear=function(grid){grid.buckets={};grid.pairs={};grid.pairsList=[]};var _regionUnion=function(regionA,regionB){var startCol=Math.min(regionA.startCol,regionB.startCol),endCol=Math.max(regionA.endCol,regionB.endCol),startRow=Math.min(regionA.startRow,regionB.startRow),endRow=Math.max(regionA.endRow,regionB.endRow);return _createRegion(startCol,endCol,startRow,endRow)};var _getRegion=function(grid,body){var bounds=body.bounds,startCol=Math.floor(bounds.min.x/grid.bucketWidth),endCol=Math.floor(bounds.max.x/grid.bucketWidth),startRow=Math.floor(bounds.min.y/grid.bucketHeight),endRow=Math.floor(bounds.max.y/grid.bucketHeight);return _createRegion(startCol,endCol,startRow,endRow)};var _createRegion=function(startCol,endCol,startRow,endRow){return{id:startCol+","+endCol+","+startRow+","+endRow,startCol:startCol,endCol:endCol,startRow:startRow,endRow:endRow}};var _getBucketId=function(column,row){return column+","+row};var _createBucket=function(buckets,bucketId){var bucket=buckets[bucketId]=[];return bucket};var _bucketAddBody=function(grid,bucket,body){for(var i=0;i<bucket.length;i++){var bodyB=bucket[i];if(body.id===bodyB.id||body.isStatic&&bodyB.isStatic)continue;var pairId=Pair.id(body,bodyB),pair=grid.pairs[pairId];if(pair){pair[2]+=1}else{grid.pairs[pairId]=[body,bodyB,1]}}bucket.push(body)};var _bucketRemoveBody=function(grid,bucket,body){bucket.splice(Common.indexOf(bucket,body),1);for(var i=0;i<bucket.length;i++){var bodyB=bucket[i],pairId=Pair.id(body,bodyB),pair=grid.pairs[pairId];if(pair)pair[2]-=1}};var _createActivePairsList=function(grid){var pairKeys,pair,pairs=[];pairKeys=Common.keys(grid.pairs);for(var k=0;k<pairKeys.length;k++){pair=grid.pairs[pairKeys[k]];if(pair[2]>0){pairs.push(pair)}else{delete grid.pairs[pairKeys[k]]}}return pairs}})()},{"../core/Common":14,"./Detector":5,"./Pair":7}],7:[function(require,module,exports){var Pair={};module.exports=Pair;var Contact=require("./Contact");(function(){Pair.create=function(collision,timestamp){var bodyA=collision.bodyA,bodyB=collision.bodyB,parentA=collision.parentA,parentB=collision.parentB;var pair={id:Pair.id(bodyA,bodyB),bodyA:bodyA,bodyB:bodyB,contacts:{},activeContacts:[],separation:0,isActive:true,isSensor:bodyA.isSensor||bodyB.isSensor,timeCreated:timestamp,timeUpdated:timestamp,inverseMass:parentA.inverseMass+parentB.inverseMass,friction:Math.min(parentA.friction,parentB.friction),frictionStatic:Math.max(parentA.frictionStatic,parentB.frictionStatic),restitution:Math.max(parentA.restitution,parentB.restitution),slop:Math.max(parentA.slop,parentB.slop)};Pair.update(pair,collision,timestamp);return pair};Pair.update=function(pair,collision,timestamp){var contacts=pair.contacts,supports=collision.supports,activeContacts=pair.activeContacts,parentA=collision.parentA,parentB=collision.parentB;pair.collision=collision;pair.inverseMass=parentA.inverseMass+parentB.inverseMass;pair.friction=Math.min(parentA.friction,parentB.friction);pair.frictionStatic=Math.max(parentA.frictionStatic,parentB.frictionStatic);pair.restitution=Math.max(parentA.restitution,parentB.restitution);pair.slop=Math.max(parentA.slop,parentB.slop);activeContacts.length=0;if(collision.collided){for(var i=0;i<supports.length;i++){var support=supports[i],contactId=Contact.id(support),contact=contacts[contactId];if(contact){activeContacts.push(contact)}else{activeContacts.push(contacts[contactId]=Contact.create(support))}}pair.separation=collision.depth;Pair.setActive(pair,true,timestamp)}else{if(pair.isActive===true)Pair.setActive(pair,false,timestamp)}};Pair.setActive=function(pair,isActive,timestamp){if(isActive){pair.isActive=true;pair.timeUpdated=timestamp}else{pair.isActive=false;pair.activeContacts.length=0}};Pair.id=function(bodyA,bodyB){if(bodyA.id<bodyB.id){return bodyA.id+"_"+bodyB.id}else{return bodyB.id+"_"+bodyA.id}}})()},{"./Contact":4}],8:[function(require,module,exports){var Pairs={};module.exports=Pairs;var Pair=require("./Pair");var Common=require("../core/Common");(function(){var _pairMaxIdleLife=1e3;Pairs.create=function(options){return Common.extend({table:{},list:[],collisionStart:[],collisionActive:[],collisionEnd:[]},options)};Pairs.update=function(pairs,collisions,timestamp){var pairsList=pairs.list,pairsTable=pairs.table,collisionStart=pairs.collisionStart,collisionEnd=pairs.collisionEnd,collisionActive=pairs.collisionActive,activePairIds=[],collision,pairId,pair,i;collisionStart.length=0;collisionEnd.length=0;collisionActive.length=0;for(i=0;i<collisions.length;i++){collision=collisions[i];if(collision.collided){pairId=Pair.id(collision.bodyA,collision.bodyB);activePairIds.push(pairId);pair=pairsTable[pairId];if(pair){if(pair.isActive){collisionActive.push(pair)}else{collisionStart.push(pair)}Pair.update(pair,collision,timestamp)}else{pair=Pair.create(collision,timestamp);pairsTable[pairId]=pair;collisionStart.push(pair);pairsList.push(pair)}}}for(i=0;i<pairsList.length;i++){pair=pairsList[i];if(pair.isActive&&Common.indexOf(activePairIds,pair.id)===-1){Pair.setActive(pair,false,timestamp);collisionEnd.push(pair)}}};Pairs.removeOld=function(pairs,timestamp){var pairsList=pairs.list,pairsTable=pairs.table,indexesToRemove=[],pair,collision,pairIndex,i;for(i=0;i<pairsList.length;i++){pair=pairsList[i];collision=pair.collision;if(collision.bodyA.isSleeping||collision.bodyB.isSleeping){pair.timeUpdated=timestamp;continue}if(timestamp-pair.timeUpdated>_pairMaxIdleLife){indexesToRemove.push(i)}}for(i=0;i<indexesToRemove.length;i++){pairIndex=indexesToRemove[i]-i;pair=pairsList[pairIndex];delete pairsTable[pair.id];pairsList.splice(pairIndex,1)}};Pairs.clear=function(pairs){pairs.table={};pairs.list.length=0;pairs.collisionStart.length=0;pairs.collisionActive.length=0;pairs.collisionEnd.length=0;return pairs}})()},{"../core/Common":14,"./Pair":7}],9:[function(require,module,exports){var Query={};module.exports=Query;var Vector=require("../geometry/Vector");var SAT=require("./SAT");var Bounds=require("../geometry/Bounds");var Bodies=require("../factory/Bodies");var Vertices=require("../geometry/Vertices");(function(){Query.ray=function(bodies,startPoint,endPoint,rayWidth){rayWidth=rayWidth||1e-100;var rayAngle=Vector.angle(startPoint,endPoint),rayLength=Vector.magnitude(Vector.sub(startPoint,endPoint)),rayX=(endPoint.x+startPoint.x)*.5,rayY=(endPoint.y+startPoint.y)*.5,ray=Bodies.rectangle(rayX,rayY,rayLength,rayWidth,{angle:rayAngle}),collisions=[];for(var i=0;i<bodies.length;i++){var bodyA=bodies[i];if(Bounds.overlaps(bodyA.bounds,ray.bounds)){for(var j=bodyA.parts.length===1?0:1;j<bodyA.parts.length;j++){var part=bodyA.parts[j];if(Bounds.overlaps(part.bounds,ray.bounds)){var collision=SAT.collides(part,ray);if(collision.collided){collision.body=collision.bodyA=collision.bodyB=bodyA;collisions.push(collision);break}}}}}return collisions};Query.region=function(bodies,bounds,outside){var result=[];for(var i=0;i<bodies.length;i++){var body=bodies[i],overlaps=Bounds.overlaps(body.bounds,bounds);if(overlaps&&!outside||!overlaps&&outside)result.push(body)}return result};Query.point=function(bodies,point){var result=[];for(var i=0;i<bodies.length;i++){var body=bodies[i];if(Bounds.contains(body.bounds,point)){for(var j=body.parts.length===1?0:1;j<body.parts.length;j++){var part=body.parts[j];if(Bounds.contains(part.bounds,point)&&Vertices.contains(part.vertices,point)){result.push(body);break}}}}return result}})()},{"../factory/Bodies":21,"../geometry/Bounds":24,"../geometry/Vector":26,"../geometry/Vertices":27,"./SAT":11}],10:[function(require,module,exports){var Resolver={};module.exports=Resolver;var Vertices=require("../geometry/Vertices");var Vector=require("../geometry/Vector");var Common=require("../core/Common");var Bounds=require("../geometry/Bounds");(function(){Resolver._restingThresh=4;Resolver._restingThreshTangent=6;Resolver._positionDampen=.9;Resolver._positionWarming=.8;Resolver._frictionNormalMultiplier=5;Resolver.preSolvePosition=function(pairs){var i,pair,activeCount;for(i=0;i<pairs.length;i++){pair=pairs[i];if(!pair.isActive)continue;activeCount=pair.activeContacts.length;pair.collision.parentA.totalContacts+=activeCount;pair.collision.parentB.totalContacts+=activeCount}};Resolver.solvePosition=function(pairs,timeScale){var i,pair,collision,bodyA,bodyB,normal,bodyBtoA,contactShare,positionImpulse,contactCount={},tempA=Vector._temp[0],tempB=Vector._temp[1],tempC=Vector._temp[2],tempD=Vector._temp[3];for(i=0;i<pairs.length;i++){pair=pairs[i];if(!pair.isActive||pair.isSensor)continue;collision=pair.collision;bodyA=collision.parentA;bodyB=collision.parentB;normal=collision.normal;bodyBtoA=Vector.sub(Vector.add(bodyB.positionImpulse,bodyB.position,tempA),Vector.add(bodyA.positionImpulse,Vector.sub(bodyB.position,collision.penetration,tempB),tempC),tempD);pair.separation=Vector.dot(normal,bodyBtoA)}for(i=0;i<pairs.length;i++){pair=pairs[i];if(!pair.isActive||pair.isSensor||pair.separation<0)continue;collision=pair.collision;bodyA=collision.parentA;bodyB=collision.parentB;normal=collision.normal;positionImpulse=(pair.separation-pair.slop)*timeScale;if(bodyA.isStatic||bodyB.isStatic)positionImpulse*=2;if(!(bodyA.isStatic||bodyA.isSleeping)){contactShare=Resolver._positionDampen/bodyA.totalContacts;bodyA.positionImpulse.x+=normal.x*positionImpulse*contactShare;bodyA.positionImpulse.y+=normal.y*positionImpulse*contactShare}if(!(bodyB.isStatic||bodyB.isSleeping)){contactShare=Resolver._positionDampen/bodyB.totalContacts;bodyB.positionImpulse.x-=normal.x*positionImpulse*contactShare;bodyB.positionImpulse.y-=normal.y*positionImpulse*contactShare}}};Resolver.postSolvePosition=function(bodies){for(var i=0;i<bodies.length;i++){var body=bodies[i];body.totalContacts=0;if(body.positionImpulse.x!==0||body.positionImpulse.y!==0){for(var j=0;j<body.parts.length;j++){var part=body.parts[j];Vertices.translate(part.vertices,body.positionImpulse);Bounds.update(part.bounds,part.vertices,body.velocity);part.position.x+=body.positionImpulse.x;part.position.y+=body.positionImpulse.y}body.positionPrev.x+=body.positionImpulse.x;body.positionPrev.y+=body.positionImpulse.y;if(Vector.dot(body.positionImpulse,body.velocity)<0){body.positionImpulse.x=0;body.positionImpulse.y=0}else{body.positionImpulse.x*=Resolver._positionWarming;body.positionImpulse.y*=Resolver._positionWarming}}}};Resolver.preSolveVelocity=function(pairs){var i,j,pair,contacts,collision,bodyA,bodyB,normal,tangent,contact,contactVertex,normalImpulse,tangentImpulse,offset,impulse=Vector._temp[0],tempA=Vector._temp[1];for(i=0;i<pairs.length;i++){pair=pairs[i];if(!pair.isActive||pair.isSensor)continue;contacts=pair.activeContacts;collision=pair.collision;bodyA=collision.parentA;bodyB=collision.parentB;normal=collision.normal;tangent=collision.tangent;for(j=0;j<contacts.length;j++){contact=contacts[j];contactVertex=contact.vertex;normalImpulse=contact.normalImpulse;tangentImpulse=contact.tangentImpulse;if(normalImpulse!==0||tangentImpulse!==0){impulse.x=normal.x*normalImpulse+tangent.x*tangentImpulse;impulse.y=normal.y*normalImpulse+tangent.y*tangentImpulse;if(!(bodyA.isStatic||bodyA.isSleeping)){offset=Vector.sub(contactVertex,bodyA.position,tempA);bodyA.positionPrev.x+=impulse.x*bodyA.inverseMass;bodyA.positionPrev.y+=impulse.y*bodyA.inverseMass;bodyA.anglePrev+=Vector.cross(offset,impulse)*bodyA.inverseInertia}if(!(bodyB.isStatic||bodyB.isSleeping)){offset=Vector.sub(contactVertex,bodyB.position,tempA);bodyB.positionPrev.x-=impulse.x*bodyB.inverseMass;bodyB.positionPrev.y-=impulse.y*bodyB.inverseMass;bodyB.anglePrev-=Vector.cross(offset,impulse)*bodyB.inverseInertia}}}}};Resolver.solveVelocity=function(pairs,timeScale){var timeScaleSquared=timeScale*timeScale,impulse=Vector._temp[0],tempA=Vector._temp[1],tempB=Vector._temp[2],tempC=Vector._temp[3],tempD=Vector._temp[4],tempE=Vector._temp[5];for(var i=0;i<pairs.length;i++){var pair=pairs[i];if(!pair.isActive||pair.isSensor)continue;var collision=pair.collision,bodyA=collision.parentA,bodyB=collision.parentB,normal=collision.normal,tangent=collision.tangent,contacts=pair.activeContacts,contactShare=1/contacts.length;bodyA.velocity.x=bodyA.position.x-bodyA.positionPrev.x;bodyA.velocity.y=bodyA.position.y-bodyA.positionPrev.y;bodyB.velocity.x=bodyB.position.x-bodyB.positionPrev.x;bodyB.velocity.y=bodyB.position.y-bodyB.positionPrev.y;bodyA.angularVelocity=bodyA.angle-bodyA.anglePrev;bodyB.angularVelocity=bodyB.angle-bodyB.anglePrev;for(var j=0;j<contacts.length;j++){var contact=contacts[j],contactVertex=contact.vertex,offsetA=Vector.sub(contactVertex,bodyA.position,tempA),offsetB=Vector.sub(contactVertex,bodyB.position,tempB),velocityPointA=Vector.add(bodyA.velocity,Vector.mult(Vector.perp(offsetA),bodyA.angularVelocity),tempC),velocityPointB=Vector.add(bodyB.velocity,Vector.mult(Vector.perp(offsetB),bodyB.angularVelocity),tempD),relativeVelocity=Vector.sub(velocityPointA,velocityPointB,tempE),normalVelocity=Vector.dot(normal,relativeVelocity);var tangentVelocity=Vector.dot(tangent,relativeVelocity),tangentSpeed=Math.abs(tangentVelocity),tangentVelocityDirection=Common.sign(tangentVelocity);var normalImpulse=(1+pair.restitution)*normalVelocity,normalForce=Common.clamp(pair.separation+normalVelocity,0,1)*Resolver._frictionNormalMultiplier;var tangentImpulse=tangentVelocity,maxFriction=Infinity;if(tangentSpeed>pair.friction*pair.frictionStatic*normalForce*timeScaleSquared){maxFriction=tangentSpeed;tangentImpulse=Common.clamp(pair.friction*tangentVelocityDirection*timeScaleSquared,-maxFriction,maxFriction)}var oAcN=Vector.cross(offsetA,normal),oBcN=Vector.cross(offsetB,normal),share=contactShare/(bodyA.inverseMass+bodyB.inverseMass+bodyA.inverseInertia*oAcN*oAcN+bodyB.inverseInertia*oBcN*oBcN);normalImpulse*=share;tangentImpulse*=share;if(normalVelocity<0&&normalVelocity*normalVelocity>Resolver._restingThresh*timeScaleSquared){contact.normalImpulse=0}else{var contactNormalImpulse=contact.normalImpulse;contact.normalImpulse=Math.min(contact.normalImpulse+normalImpulse,0);normalImpulse=contact.normalImpulse-contactNormalImpulse}if(tangentVelocity*tangentVelocity>Resolver._restingThreshTangent*timeScaleSquared){contact.tangentImpulse=0}else{var contactTangentImpulse=contact.tangentImpulse;contact.tangentImpulse=Common.clamp(contact.tangentImpulse+tangentImpulse,-maxFriction,maxFriction);tangentImpulse=contact.tangentImpulse-contactTangentImpulse}impulse.x=normal.x*normalImpulse+tangent.x*tangentImpulse;impulse.y=normal.y*normalImpulse+tangent.y*tangentImpulse;if(!(bodyA.isStatic||bodyA.isSleeping)){bodyA.positionPrev.x+=impulse.x*bodyA.inverseMass;bodyA.positionPrev.y+=impulse.y*bodyA.inverseMass;bodyA.anglePrev+=Vector.cross(offsetA,impulse)*bodyA.inverseInertia}if(!(bodyB.isStatic||bodyB.isSleeping)){bodyB.positionPrev.x-=impulse.x*bodyB.inverseMass;bodyB.positionPrev.y-=impulse.y*bodyB.inverseMass;bodyB.anglePrev-=Vector.cross(offsetB,impulse)*bodyB.inverseInertia}}}}})()},{"../core/Common":14,"../geometry/Bounds":24,"../geometry/Vector":26,"../geometry/Vertices":27}],11:[function(require,module,exports){var SAT={};module.exports=SAT;var Vertices=require("../geometry/Vertices");var Vector=require("../geometry/Vector");(function(){SAT.collides=function(bodyA,bodyB,previousCollision){var overlapAB,overlapBA,minOverlap,collision,prevCol=previousCollision,canReusePrevCol=false;if(prevCol){var parentA=bodyA.parent,parentB=bodyB.parent,motion=parentA.speed*parentA.speed+parentA.angularSpeed*parentA.angularSpeed+parentB.speed*parentB.speed+parentB.angularSpeed*parentB.angularSpeed;canReusePrevCol=prevCol&&prevCol.collided&&motion<.2;collision=prevCol}else{collision={collided:false,bodyA:bodyA,bodyB:bodyB}}if(prevCol&&canReusePrevCol){var axisBodyA=collision.axisBody,axisBodyB=axisBodyA===bodyA?bodyB:bodyA,axes=[axisBodyA.axes[prevCol.axisNumber]];minOverlap=_overlapAxes(axisBodyA.vertices,axisBodyB.vertices,axes);collision.reused=true;if(minOverlap.overlap<=0){collision.collided=false;return collision}}else{overlapAB=_overlapAxes(bodyA.vertices,bodyB.vertices,bodyA.axes);if(overlapAB.overlap<=0){collision.collided=false;return collision}overlapBA=_overlapAxes(bodyB.vertices,bodyA.vertices,bodyB.axes);if(overlapBA.overlap<=0){collision.collided=false;return collision}if(overlapAB.overlap<overlapBA.overlap){minOverlap=overlapAB;collision.axisBody=bodyA}else{minOverlap=overlapBA;collision.axisBody=bodyB}collision.axisNumber=minOverlap.axisNumber}collision.bodyA=bodyA.id<bodyB.id?bodyA:bodyB;collision.bodyB=bodyA.id<bodyB.id?bodyB:bodyA;collision.collided=true;collision.normal=minOverlap.axis;collision.depth=minOverlap.overlap;collision.parentA=collision.bodyA.parent;collision.parentB=collision.bodyB.parent;bodyA=collision.bodyA;bodyB=collision.bodyB;if(Vector.dot(collision.normal,Vector.sub(bodyB.position,bodyA.position))>0)collision.normal=Vector.neg(collision.normal);collision.tangent=Vector.perp(collision.normal);collision.penetration={x:collision.normal.x*collision.depth,y:collision.normal.y*collision.depth};var verticesB=_findSupports(bodyA,bodyB,collision.normal),supports=collision.supports||[];supports.length=0;if(Vertices.contains(bodyA.vertices,verticesB[0]))supports.push(verticesB[0]);if(Vertices.contains(bodyA.vertices,verticesB[1]))supports.push(verticesB[1]);if(supports.length<2){var verticesA=_findSupports(bodyB,bodyA,Vector.neg(collision.normal));if(Vertices.contains(bodyB.vertices,verticesA[0]))supports.push(verticesA[0]);if(supports.length<2&&Vertices.contains(bodyB.vertices,verticesA[1]))supports.push(verticesA[1])}if(supports.length<1)supports=[verticesB[0]];collision.supports=supports;return collision};var _overlapAxes=function(verticesA,verticesB,axes){var projectionA=Vector._temp[0],projectionB=Vector._temp[1],result={overlap:Number.MAX_VALUE},overlap,axis;for(var i=0;i<axes.length;i++){axis=axes[i];_projectToAxis(projectionA,verticesA,axis);_projectToAxis(projectionB,verticesB,axis);overlap=Math.min(projectionA.max-projectionB.min,projectionB.max-projectionA.min);if(overlap<=0){result.overlap=overlap;return result}if(overlap<result.overlap){result.overlap=overlap;result.axis=axis;result.axisNumber=i}}return result};var _projectToAxis=function(projection,vertices,axis){var min=Vector.dot(vertices[0],axis),max=min;for(var i=1;i<vertices.length;i+=1){var dot=Vector.dot(vertices[i],axis);if(dot>max){max=dot}else if(dot<min){min=dot}}projection.min=min;projection.max=max};var _findSupports=function(bodyA,bodyB,normal){var nearestDistance=Number.MAX_VALUE,vertexToBody=Vector._temp[0],vertices=bodyB.vertices,bodyAPosition=bodyA.position,distance,vertex,vertexA,vertexB;for(var i=0;i<vertices.length;i++){vertex=vertices[i];vertexToBody.x=vertex.x-bodyAPosition.x;vertexToBody.y=vertex.y-bodyAPosition.y;distance=-Vector.dot(normal,vertexToBody);if(distance<nearestDistance){nearestDistance=distance;vertexA=vertex}}var prevIndex=vertexA.index-1>=0?vertexA.index-1:vertices.length-1;vertex=vertices[prevIndex];vertexToBody.x=vertex.x-bodyAPosition.x;vertexToBody.y=vertex.y-bodyAPosition.y;nearestDistance=-Vector.dot(normal,vertexToBody);vertexB=vertex;var nextIndex=(vertexA.index+1)%vertices.length;vertex=vertices[nextIndex];vertexToBody.x=vertex.x-bodyAPosition.x;vertexToBody.y=vertex.y-bodyAPosition.y;distance=-Vector.dot(normal,vertexToBody);if(distance<nearestDistance){vertexB=vertex}return[vertexA,vertexB]}})()},{"../geometry/Vector":26,"../geometry/Vertices":27}],12:[function(require,module,exports){var Constraint={};module.exports=Constraint;var Vertices=require("../geometry/Vertices");var Vector=require("../geometry/Vector");var Sleeping=require("../core/Sleeping");var Bounds=require("../geometry/Bounds");var Axes=require("../geometry/Axes");var Common=require("../core/Common");(function(){var _minLength=1e-6,_minDifference=.001;Constraint.create=function(options){var constraint=options;if(constraint.bodyA&&!constraint.pointA)constraint.pointA={x:0,y:0};if(constraint.bodyB&&!constraint.pointB)constraint.pointB={x:0,y:0};var initialPointA=constraint.bodyA?Vector.add(constraint.bodyA.position,constraint.pointA):constraint.pointA,initialPointB=constraint.bodyB?Vector.add(constraint.bodyB.position,constraint.pointB):constraint.pointB,length=Vector.magnitude(Vector.sub(initialPointA,initialPointB));constraint.length=constraint.length||length||_minLength;var render={visible:true,lineWidth:2,strokeStyle:"#666"};constraint.render=Common.extend(render,constraint.render);constraint.id=constraint.id||Common.nextId();constraint.label=constraint.label||"Constraint";constraint.type="constraint";constraint.stiffness=constraint.stiffness||1;constraint.angularStiffness=constraint.angularStiffness||0;constraint.angleA=constraint.bodyA?constraint.bodyA.angle:constraint.angleA;constraint.angleB=constraint.bodyB?constraint.bodyB.angle:constraint.angleB;return constraint};Constraint.solveAll=function(constraints,timeScale){for(var i=0;i<constraints.length;i++){Constraint.solve(constraints[i],timeScale)}};Constraint.solve=function(constraint,timeScale){var bodyA=constraint.bodyA,bodyB=constraint.bodyB,pointA=constraint.pointA,pointB=constraint.pointB;if(bodyA&&!bodyA.isStatic){constraint.pointA=Vector.rotate(pointA,bodyA.angle-constraint.angleA);constraint.angleA=bodyA.angle}if(bodyB&&!bodyB.isStatic){constraint.pointB=Vector.rotate(pointB,bodyB.angle-constraint.angleB);constraint.angleB=bodyB.angle}var pointAWorld=pointA,pointBWorld=pointB;if(bodyA)pointAWorld=Vector.add(bodyA.position,pointA);if(bodyB)pointBWorld=Vector.add(bodyB.position,pointB);if(!pointAWorld||!pointBWorld)return;var delta=Vector.sub(pointAWorld,pointBWorld),currentLength=Vector.magnitude(delta);if(currentLength===0)currentLength=_minLength;var difference=(currentLength-constraint.length)/currentLength,normal=Vector.div(delta,currentLength),force=Vector.mult(delta,difference*.5*constraint.stiffness*timeScale*timeScale);if(Math.abs(1-currentLength/constraint.length)<_minDifference*timeScale)return;var velocityPointA,velocityPointB,offsetA,offsetB,oAn,oBn,bodyADenom,bodyBDenom;if(bodyA&&!bodyA.isStatic){offsetA={x:pointAWorld.x-bodyA.position.x+force.x,y:pointAWorld.y-bodyA.position.y+force.y};bodyA.velocity.x=bodyA.position.x-bodyA.positionPrev.x;bodyA.velocity.y=bodyA.position.y-bodyA.positionPrev.y;bodyA.angularVelocity=bodyA.angle-bodyA.anglePrev;velocityPointA=Vector.add(bodyA.velocity,Vector.mult(Vector.perp(offsetA),bodyA.angularVelocity));oAn=Vector.dot(offsetA,normal);bodyADenom=bodyA.inverseMass+bodyA.inverseInertia*oAn*oAn}else{velocityPointA={x:0,y:0};bodyADenom=bodyA?bodyA.inverseMass:0}if(bodyB&&!bodyB.isStatic){offsetB={x:pointBWorld.x-bodyB.position.x-force.x,y:pointBWorld.y-bodyB.position.y-force.y};bodyB.velocity.x=bodyB.position.x-bodyB.positionPrev.x;bodyB.velocity.y=bodyB.position.y-bodyB.positionPrev.y;bodyB.angularVelocity=bodyB.angle-bodyB.anglePrev;velocityPointB=Vector.add(bodyB.velocity,Vector.mult(Vector.perp(offsetB),bodyB.angularVelocity));oBn=Vector.dot(offsetB,normal);bodyBDenom=bodyB.inverseMass+bodyB.inverseInertia*oBn*oBn}else{velocityPointB={x:0,y:0};bodyBDenom=bodyB?bodyB.inverseMass:0}var relativeVelocity=Vector.sub(velocityPointB,velocityPointA),normalImpulse=Vector.dot(normal,relativeVelocity)/(bodyADenom+bodyBDenom);if(normalImpulse>0)normalImpulse=0;var normalVelocity={x:normal.x*normalImpulse,y:normal.y*normalImpulse};var torque;if(bodyA&&!bodyA.isStatic){torque=Vector.cross(offsetA,normalVelocity)*bodyA.inverseInertia*(1-constraint.angularStiffness);bodyA.constraintImpulse.x-=force.x;bodyA.constraintImpulse.y-=force.y;bodyA.constraintImpulse.angle+=torque;bodyA.position.x-=force.x;bodyA.position.y-=force.y;bodyA.angle+=torque}if(bodyB&&!bodyB.isStatic){torque=Vector.cross(offsetB,normalVelocity)*bodyB.inverseInertia*(1-constraint.angularStiffness);bodyB.constraintImpulse.x+=force.x;bodyB.constraintImpulse.y+=force.y;bodyB.constraintImpulse.angle-=torque;bodyB.position.x+=force.x;bodyB.position.y+=force.y;bodyB.angle-=torque}};Constraint.postSolveAll=function(bodies){for(var i=0;i<bodies.length;i++){var body=bodies[i],impulse=body.constraintImpulse;if(impulse.x===0&&impulse.y===0&&impulse.angle===0){continue}Sleeping.set(body,false);for(var j=0;j<body.parts.length;j++){var part=body.parts[j];Vertices.translate(part.vertices,impulse);if(j>0){part.position.x+=impulse.x;part.position.y+=impulse.y}if(impulse.angle!==0){Vertices.rotate(part.vertices,impulse.angle,body.position);Axes.rotate(part.axes,impulse.angle);if(j>0){Vector.rotateAbout(part.position,impulse.angle,body.position,part.position)}}Bounds.update(part.bounds,part.vertices,body.velocity)}impulse.angle=0;impulse.x=0;impulse.y=0}}})()},{"../core/Common":14,"../core/Sleeping":20,"../geometry/Axes":23,"../geometry/Bounds":24,"../geometry/Vector":26,"../geometry/Vertices":27}],13:[function(require,module,exports){var MouseConstraint={};module.exports=MouseConstraint;var Vertices=require("../geometry/Vertices");var Sleeping=require("../core/Sleeping");var Mouse=require("../core/Mouse");var Events=require("../core/Events");var Detector=require("../collision/Detector");var Constraint=require("./Constraint");var Composite=require("../body/Composite");var Common=require("../core/Common");var Bounds=require("../geometry/Bounds");(function(){MouseConstraint.create=function(engine,options){var mouse=(engine?engine.mouse:null)||(options?options.mouse:null);if(!mouse){if(engine&&engine.render&&engine.render.canvas){mouse=Mouse.create(engine.render.canvas)}else if(options&&options.element){mouse=Mouse.create(options.element)}else{mouse=Mouse.create();Common.log("MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected","warn")}}var constraint=Constraint.create({label:"Mouse Constraint",pointA:mouse.position,pointB:{x:0,y:0},length:.01,stiffness:.1,angularStiffness:1,render:{strokeStyle:"#90EE90",lineWidth:3}});var defaults={type:"mouseConstraint",mouse:mouse,element:null,body:null,constraint:constraint,collisionFilter:{category:1,mask:4294967295,group:0}};var mouseConstraint=Common.extend(defaults,options);Events.on(engine,"tick",function(){var allBodies=Composite.allBodies(engine.world);MouseConstraint.update(mouseConstraint,allBodies);_triggerEvents(mouseConstraint)});return mouseConstraint};MouseConstraint.update=function(mouseConstraint,bodies){var mouse=mouseConstraint.mouse,constraint=mouseConstraint.constraint,body=mouseConstraint.body;if(mouse.button===0){if(!constraint.bodyB){for(var i=0;i<bodies.length;i++){body=bodies[i];if(Bounds.contains(body.bounds,mouse.position)&&Detector.canCollide(body.collisionFilter,mouseConstraint.collisionFilter)){for(var j=body.parts.length>1?1:0;j<body.parts.length;j++){var part=body.parts[j];if(Vertices.contains(part.vertices,mouse.position)){constraint.pointA=mouse.position;constraint.bodyB=mouseConstraint.body=body;constraint.pointB={x:mouse.position.x-body.position.x,y:mouse.position.y-body.position.y};constraint.angleB=body.angle;Sleeping.set(body,false);Events.trigger(mouseConstraint,"startdrag",{mouse:mouse,body:body});break}}}}}else{Sleeping.set(constraint.bodyB,false);constraint.pointA=mouse.position}}else{constraint.bodyB=mouseConstraint.body=null;constraint.pointB=null;if(body)Events.trigger(mouseConstraint,"enddrag",{mouse:mouse,body:body})}};var _triggerEvents=function(mouseConstraint){var mouse=mouseConstraint.mouse,mouseEvents=mouse.sourceEvents;if(mouseEvents.mousemove)Events.trigger(mouseConstraint,"mousemove",{mouse:mouse});if(mouseEvents.mousedown)Events.trigger(mouseConstraint,"mousedown",{mouse:mouse});if(mouseEvents.mouseup)Events.trigger(mouseConstraint,"mouseup",{mouse:mouse});Mouse.clearSourceEvents(mouse)}})()},{"../body/Composite":2,"../collision/Detector":5,"../core/Common":14,"../core/Events":16,"../core/Mouse":18,"../core/Sleeping":20,"../geometry/Bounds":24,"../geometry/Vertices":27,"./Constraint":12}],14:[function(require,module,exports){var Common={};module.exports=Common;(function(){Common._nextId=0;Common._seed=0;Common.extend=function(obj,deep){var argsStart,args,deepClone;if(typeof deep==="boolean"){argsStart=2;deepClone=deep}else{argsStart=1;deepClone=true}args=Array.prototype.slice.call(arguments,argsStart);for(var i=0;i<args.length;i++){var source=args[i];if(source){for(var prop in source){if(deepClone&&source[prop]&&source[prop].constructor===Object){if(!obj[prop]||obj[prop].constructor===Object){obj[prop]=obj[prop]||{};Common.extend(obj[prop],deepClone,source[prop])}else{obj[prop]=source[prop]}}else{obj[prop]=source[prop]}}}}return obj};Common.clone=function(obj,deep){return Common.extend({},deep,obj)};Common.keys=function(obj){if(Object.keys)return Object.keys(obj);var keys=[];for(var key in obj)keys.push(key);return keys};Common.values=function(obj){var values=[];if(Object.keys){var keys=Object.keys(obj);for(var i=0;i<keys.length;i++){values.push(obj[keys[i]])}return values}for(var key in obj)values.push(obj[key]);return values};Common.shadeColor=function(color,percent){var colorInteger=parseInt(color.slice(1),16),amount=Math.round(2.55*percent),R=(colorInteger>>16)+amount,B=(colorInteger>>8&255)+amount,G=(colorInteger&255)+amount;return"#"+(16777216+(R<255?R<1?0:R:255)*65536+(B<255?B<1?0:B:255)*256+(G<255?G<1?0:G:255)).toString(16).slice(1)};Common.shuffle=function(array){for(var i=array.length-1;i>0;i--){var j=Math.floor(Common.random()*(i+1));var temp=array[i];array[i]=array[j];array[j]=temp}return array};Common.choose=function(choices){return choices[Math.floor(Common.random()*choices.length)]};Common.isElement=function(obj){try{return obj instanceof HTMLElement}catch(e){return typeof obj==="object"&&obj.nodeType===1&&typeof obj.style==="object"&&typeof obj.ownerDocument==="object"}};Common.isArray=function(obj){return Object.prototype.toString.call(obj)==="[object Array]"};Common.clamp=function(value,min,max){if(value<min)return min;if(value>max)return max;return value};Common.sign=function(value){return value<0?-1:1};Common.now=function(){var performance=window.performance||{};performance.now=function(){return performance.now||performance.webkitNow||performance.msNow||performance.oNow||performance.mozNow||function(){return+new Date}}();return performance.now()};Common.random=function(min,max){min=typeof min!=="undefined"?min:0;max=typeof max!=="undefined"?max:1;return min+_seededRandom()*(max-min)};Common.colorToNumber=function(colorString){colorString=colorString.replace("#","");if(colorString.length==3){colorString=colorString.charAt(0)+colorString.charAt(0)+colorString.charAt(1)+colorString.charAt(1)+colorString.charAt(2)+colorString.charAt(2)}return parseInt(colorString,16)};Common.log=function(message,type){if(!console||!console.log||!console.warn)return;switch(type){case"warn":console.warn("Matter.js:",message);break;case"error":console.log("Matter.js:",message);break}};Common.nextId=function(){return Common._nextId++};Common.indexOf=function(haystack,needle){if(haystack.indexOf)return haystack.indexOf(needle);for(var i=0;i<haystack.length;i++){if(haystack[i]===needle)return i}return-1};var _seededRandom=function(){Common._seed=(Common._seed*9301+49297)%233280;return Common._seed/233280}})()},{}],15:[function(require,module,exports){var Engine={};module.exports=Engine;var World=require("../body/World");var Sleeping=require("./Sleeping");var Resolver=require("../collision/Resolver");var Render=require("../render/Render");var Pairs=require("../collision/Pairs");var Metrics=require("./Metrics");var Grid=require("../collision/Grid");var Events=require("./Events");var Composite=require("../body/Composite");var Constraint=require("../constraint/Constraint");var Common=require("./Common");var Body=require("../body/Body");(function(){Engine.create=function(element,options){options=Common.isElement(element)?options:element;element=Common.isElement(element)?element:null;options=options||{};if(element||options.render){Common.log("Engine.create: engine.render is deprecated (see docs)","warn")}var defaults={positionIterations:6,velocityIterations:4,constraintIterations:2,enableSleeping:false,events:[],timing:{timestamp:0,timeScale:1},broadphase:{controller:Grid}};var engine=Common.extend(defaults,options);if(element||engine.render){var renderDefaults={element:element,controller:Render};engine.render=Common.extend(renderDefaults,engine.render)}if(engine.render&&engine.render.controller){engine.render=engine.render.controller.create(engine.render)}if(engine.render){engine.render.engine=engine}engine.world=options.world||World.create(engine.world);engine.pairs=Pairs.create();engine.broadphase=engine.broadphase.controller.create(engine.broadphase);engine.metrics=engine.metrics||{extended:false};return engine};Engine.update=function(engine,delta,correction){delta=delta||1e3/60;correction=correction||1;var world=engine.world,timing=engine.timing,broadphase=engine.broadphase,broadphasePairs=[],i;timing.timestamp+=delta*timing.timeScale;var event={timestamp:timing.timestamp};Events.trigger(engine,"beforeUpdate",event);var allBodies=Composite.allBodies(world),allConstraints=Composite.allConstraints(world);if(engine.enableSleeping)Sleeping.update(allBodies,timing.timeScale);_bodiesApplyGravity(allBodies,world.gravity);_bodiesUpdate(allBodies,delta,timing.timeScale,correction,world.bounds);for(i=0;i<engine.constraintIterations;i++){Constraint.solveAll(allConstraints,timing.timeScale)}Constraint.postSolveAll(allBodies);if(broadphase.controller){if(world.isModified)broadphase.controller.clear(broadphase);broadphase.controller.update(broadphase,allBodies,engine,world.isModified);broadphasePairs=broadphase.pairsList}else{broadphasePairs=allBodies}if(world.isModified){Composite.setModified(world,false,false,true)}var collisions=broadphase.detector(broadphasePairs,engine);var pairs=engine.pairs,timestamp=timing.timestamp;Pairs.update(pairs,collisions,timestamp);Pairs.removeOld(pairs,timestamp);if(engine.enableSleeping)Sleeping.afterCollisions(pairs.list,timing.timeScale);if(pairs.collisionStart.length>0)Events.trigger(engine,"collisionStart",{pairs:pairs.collisionStart});Resolver.preSolvePosition(pairs.list);for(i=0;i<engine.positionIterations;i++){Resolver.solvePosition(pairs.list,timing.timeScale)}Resolver.postSolvePosition(allBodies);Resolver.preSolveVelocity(pairs.list);for(i=0;i<engine.velocityIterations;i++){Resolver.solveVelocity(pairs.list,timing.timeScale)}if(pairs.collisionActive.length>0)Events.trigger(engine,"collisionActive",{pairs:pairs.collisionActive});if(pairs.collisionEnd.length>0)Events.trigger(engine,"collisionEnd",{pairs:pairs.collisionEnd});_bodiesClearForces(allBodies);Events.trigger(engine,"afterUpdate",event);return engine};Engine.merge=function(engineA,engineB){Common.extend(engineA,engineB);if(engineB.world){engineA.world=engineB.world;Engine.clear(engineA);var bodies=Composite.allBodies(engineA.world);for(var i=0;i<bodies.length;i++){var body=bodies[i];Sleeping.set(body,false);body.id=Common.nextId()}}};Engine.clear=function(engine){var world=engine.world;Pairs.clear(engine.pairs);var broadphase=engine.broadphase;if(broadphase.controller){var bodies=Composite.allBodies(world);broadphase.controller.clear(broadphase);broadphase.controller.update(broadphase,bodies,engine,true)}};var _bodiesClearForces=function(bodies){for(var i=0;i<bodies.length;i++){var body=bodies[i];body.force.x=0;body.force.y=0;body.torque=0}};var _bodiesApplyGravity=function(bodies,gravity){var gravityScale=typeof gravity.scale!=="undefined"?gravity.scale:.001;if(gravity.x===0&&gravity.y===0||gravityScale===0){return}for(var i=0;i<bodies.length;i++){var body=bodies[i];if(body.isStatic||body.isSleeping)continue;body.force.y+=body.mass*gravity.y*gravityScale;body.force.x+=body.mass*gravity.x*gravityScale}};var _bodiesUpdate=function(bodies,deltaTime,timeScale,correction,worldBounds){for(var i=0;i<bodies.length;i++){var body=bodies[i];if(body.isStatic||body.isSleeping)continue;Body.update(body,deltaTime,timeScale,correction)}}})()},{"../body/Body":1,"../body/Composite":2,"../body/World":3,"../collision/Grid":6,"../collision/Pairs":8,"../collision/Resolver":10,"../constraint/Constraint":12,"../render/Render":29,"./Common":14,"./Events":16,"./Metrics":17,"./Sleeping":20}],16:[function(require,module,exports){var Events={};module.exports=Events;var Common=require("./Common");(function(){Events.on=function(object,eventNames,callback){var names=eventNames.split(" "),name;for(var i=0;i<names.length;i++){name=names[i];object.events=object.events||{};object.events[name]=object.events[name]||[];object.events[name].push(callback)}return callback};Events.off=function(object,eventNames,callback){if(!eventNames){object.events={};return}if(typeof eventNames==="function"){callback=eventNames;eventNames=Common.keys(object.events).join(" ")}var names=eventNames.split(" ");for(var i=0;i<names.length;i++){var callbacks=object.events[names[i]],newCallbacks=[];if(callback&&callbacks){for(var j=0;j<callbacks.length;j++){if(callbacks[j]!==callback)newCallbacks.push(callbacks[j])}}object.events[names[i]]=newCallbacks}};Events.trigger=function(object,eventNames,event){var names,name,callbacks,eventClone;if(object.events){if(!event)event={};names=eventNames.split(" ");for(var i=0;i<names.length;i++){name=names[i];callbacks=object.events[name];if(callbacks){eventClone=Common.clone(event,false);eventClone.name=name;eventClone.source=object;for(var j=0;j<callbacks.length;j++){callbacks[j].apply(object,[eventClone])}}}}}})()},{"./Common":14}],17:[function(require,module,exports){},{"../body/Composite":2,"./Common":14}],18:[function(require,module,exports){var Mouse={};module.exports=Mouse;var Common=require("../core/Common");(function(){Mouse.create=function(element){var mouse={};if(!element){Common.log("Mouse.create: element was undefined, defaulting to document.body","warn")}mouse.element=element||document.body;mouse.absolute={x:0,y:0};mouse.position={x:0,y:0};mouse.mousedownPosition={x:0,y:0};mouse.mouseupPosition={x:0,y:0};mouse.offset={x:0,y:0};mouse.scale={x:1,y:1};mouse.wheelDelta=0;mouse.button=-1;mouse.pixelRatio=mouse.element.getAttribute("data-pixel-ratio")||1;mouse.sourceEvents={mousemove:null,mousedown:null,mouseup:null,mousewheel:null};mouse.mousemove=function(event){var position=_getRelativeMousePosition(event,mouse.element,mouse.pixelRatio),touches=event.changedTouches;if(touches){mouse.button=0;event.preventDefault()}mouse.absolute.x=position.x;mouse.absolute.y=position.y;mouse.position.x=mouse.absolute.x*mouse.scale.x+mouse.offset.x;mouse.position.y=mouse.absolute.y*mouse.scale.y+mouse.offset.y;mouse.sourceEvents.mousemove=event};mouse.mousedown=function(event){var position=_getRelativeMousePosition(event,mouse.element,mouse.pixelRatio),touches=event.changedTouches;if(touches){mouse.button=0;event.preventDefault()}else{mouse.button=event.button}mouse.absolute.x=position.x;mouse.absolute.y=position.y;mouse.position.x=mouse.absolute.x*mouse.scale.x+mouse.offset.x;mouse.position.y=mouse.absolute.y*mouse.scale.y+mouse.offset.y;mouse.mousedownPosition.x=mouse.position.x;mouse.mousedownPosition.y=mouse.position.y;mouse.sourceEvents.mousedown=event};mouse.mouseup=function(event){var position=_getRelativeMousePosition(event,mouse.element,mouse.pixelRatio),touches=event.changedTouches;if(touches){event.preventDefault()}mouse.button=-1;mouse.absolute.x=position.x;mouse.absolute.y=position.y;mouse.position.x=mouse.absolute.x*mouse.scale.x+mouse.offset.x;mouse.position.y=mouse.absolute.y*mouse.scale.y+mouse.offset.y;mouse.mouseupPosition.x=mouse.position.x;mouse.mouseupPosition.y=mouse.position.y;mouse.sourceEvents.mouseup=event};mouse.mousewheel=function(event){mouse.wheelDelta=Math.max(-1,Math.min(1,event.wheelDelta||-event.detail));event.preventDefault()};Mouse.setElement(mouse,mouse.element);return mouse};Mouse.setElement=function(mouse,element){mouse.element=element;element.addEventListener("mousemove",mouse.mousemove);element.addEventListener("mousedown",mouse.mousedown);element.addEventListener("mouseup",mouse.mouseup);element.addEventListener("mousewheel",mouse.mousewheel);element.addEventListener("DOMMouseScroll",mouse.mousewheel);element.addEventListener("touchmove",mouse.mousemove);element.addEventListener("touchstart",mouse.mousedown);element.addEventListener("touchend",mouse.mouseup)};Mouse.clearSourceEvents=function(mouse){mouse.sourceEvents.mousemove=null;mouse.sourceEvents.mousedown=null;mouse.sourceEvents.mouseup=null;mouse.sourceEvents.mousewheel=null;mouse.wheelDelta=0};Mouse.setOffset=function(mouse,offset){mouse.offset.x=offset.x;mouse.offset.y=offset.y;mouse.position.x=mouse.absolute.x*mouse.scale.x+mouse.offset.x;mouse.position.y=mouse.absolute.y*mouse.scale.y+mouse.offset.y};Mouse.setScale=function(mouse,scale){mouse.scale.x=scale.x;mouse.scale.y=scale.y;mouse.position.x=mouse.absolute.x*mouse.scale.x+mouse.offset.x;mouse.position.y=mouse.absolute.y*mouse.scale.y+mouse.offset.y};var _getRelativeMousePosition=function(event,element,pixelRatio){var elementBounds=element.getBoundingClientRect(),rootNode=document.documentElement||document.body.parentNode||document.body,scrollX=window.pageXOffset!==undefined?window.pageXOffset:rootNode.scrollLeft,scrollY=window.pageYOffset!==undefined?window.pageYOffset:rootNode.scrollTop,touches=event.changedTouches,x,y;if(touches){x=touches[0].pageX-elementBounds.left-scrollX;y=touches[0].pageY-elementBounds.top-scrollY}else{x=event.pageX-elementBounds.left-scrollX;y=event.pageY-elementBounds.top-scrollY}return{x:x/(element.clientWidth/element.width*pixelRatio),y:y/(element.clientHeight/element.height*pixelRatio)}}})()},{"../core/Common":14}],19:[function(require,module,exports){var Runner={};module.exports=Runner;var Events=require("./Events");var Engine=require("./Engine");var Common=require("./Common");(function(){var _requestAnimationFrame,_cancelAnimationFrame;if(typeof window!=="undefined"){_requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(function(){callback(Common.now())},1e3/60)};_cancelAnimationFrame=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame}Runner.create=function(options){var defaults={fps:60,correction:1,deltaSampleSize:60,counterTimestamp:0,frameCounter:0,deltaHistory:[],timePrev:null,timeScalePrev:1,frameRequestId:null,isFixed:false,enabled:true};var runner=Common.extend(defaults,options);runner.delta=runner.delta||1e3/runner.fps;runner.deltaMin=runner.deltaMin||1e3/runner.fps;runner.deltaMax=runner.deltaMax||1e3/(runner.fps*.5);runner.fps=1e3/runner.delta;return runner};Runner.run=function(runner,engine){if(typeof runner.positionIterations!=="undefined"){engine=runner;runner=Runner.create()}(function render(time){runner.frameRequestId=_requestAnimationFrame(render);if(time&&runner.enabled){Runner.tick(runner,engine,time)}})();return runner};Runner.tick=function(runner,engine,time){var timing=engine.timing,correction=1,delta;var event={timestamp:timing.timestamp};Events.trigger(runner,"beforeTick",event);Events.trigger(engine,"beforeTick",event);if(runner.isFixed){delta=runner.delta}else{delta=time-runner.timePrev||runner.delta;runner.timePrev=time;runner.deltaHistory.push(delta);runner.deltaHistory=runner.deltaHistory.slice(-runner.deltaSampleSize);delta=Math.min.apply(null,runner.deltaHistory);delta=delta<runner.deltaMin?runner.deltaMin:delta;delta=delta>runner.deltaMax?runner.deltaMax:delta;correction=delta/runner.delta;runner.delta=delta}if(runner.timeScalePrev!==0)correction*=timing.timeScale/runner.timeScalePrev;if(timing.timeScale===0)correction=0;runner.timeScalePrev=timing.timeScale;runner.correction=correction;runner.frameCounter+=1;if(time-runner.counterTimestamp>=1e3){runner.fps=runner.frameCounter*((time-runner.counterTimestamp)/1e3);runner.counterTimestamp=time;runner.frameCounter=0}Events.trigger(runner,"tick",event);Events.trigger(engine,"tick",event);if(engine.world.isModified&&engine.render&&engine.render.controller&&engine.render.controller.clear){engine.render.controller.clear(engine.render)}Events.trigger(runner,"beforeUpdate",event);Engine.update(engine,delta,correction);Events.trigger(runner,"afterUpdate",event);if(engine.render&&engine.render.controller){Events.trigger(runner,"beforeRender",event);Events.trigger(engine,"beforeRender",event);engine.render.controller.world(engine.render);Events.trigger(runner,"afterRender",event);Events.trigger(engine,"afterRender",event)}Events.trigger(runner,"afterTick",event);Events.trigger(engine,"afterTick",event)};Runner.stop=function(runner){_cancelAnimationFrame(runner.frameRequestId)};Runner.start=function(runner,engine){Runner.run(runner,engine)}})()},{"./Common":14,"./Engine":15,"./Events":16}],20:[function(require,module,exports){var Sleeping={};module.exports=Sleeping;var Events=require("./Events");(function(){Sleeping._motionWakeThreshold=.18;Sleeping._motionSleepThreshold=.08;Sleeping._minBias=.9;Sleeping.update=function(bodies,timeScale){var timeFactor=timeScale*timeScale*timeScale;for(var i=0;i<bodies.length;i++){var body=bodies[i],motion=body.speed*body.speed+body.angularSpeed*body.angularSpeed;if(body.force.x!==0||body.force.y!==0){Sleeping.set(body,false);continue}var minMotion=Math.min(body.motion,motion),maxMotion=Math.max(body.motion,motion);body.motion=Sleeping._minBias*minMotion+(1-Sleeping._minBias)*maxMotion;if(body.sleepThreshold>0&&body.motion<Sleeping._motionSleepThreshold*timeFactor){body.sleepCounter+=1;if(body.sleepCounter>=body.sleepThreshold)Sleeping.set(body,true)}else if(body.sleepCounter>0){body.sleepCounter-=1}}};Sleeping.afterCollisions=function(pairs,timeScale){var timeFactor=timeScale*timeScale*timeScale;for(var i=0;i<pairs.length;i++){var pair=pairs[i];if(!pair.isActive)continue;var collision=pair.collision,bodyA=collision.bodyA.parent,bodyB=collision.bodyB.parent;if(bodyA.isSleeping&&bodyB.isSleeping||bodyA.isStatic||bodyB.isStatic)continue;if(bodyA.isSleeping||bodyB.isSleeping){var sleepingBody=bodyA.isSleeping&&!bodyA.isStatic?bodyA:bodyB,movingBody=sleepingBody===bodyA?bodyB:bodyA;if(!sleepingBody.isStatic&&movingBody.motion>Sleeping._motionWakeThreshold*timeFactor){Sleeping.set(sleepingBody,false)}}}};Sleeping.set=function(body,isSleeping){var wasSleeping=body.isSleeping;if(isSleeping){body.isSleeping=true;body.sleepCounter=body.sleepThreshold;body.positionImpulse.x=0;body.positionImpulse.y=0;body.positionPrev.x=body.position.x;body.positionPrev.y=body.position.y;body.anglePrev=body.angle;body.speed=0;body.angularSpeed=0;body.motion=0;if(!wasSleeping){Events.trigger(body,"sleepStart")}}else{body.isSleeping=false;body.sleepCounter=0;if(wasSleeping){Events.trigger(body,"sleepEnd")}}}})()},{"./Events":16}],21:[function(require,module,exports){var Bodies={};module.exports=Bodies;var Vertices=require("../geometry/Vertices");var Common=require("../core/Common");var Body=require("../body/Body");var Bounds=require("../geometry/Bounds");var Vector=require("../geometry/Vector");(function(){Bodies.rectangle=function(x,y,width,height,options){options=options||{};var rectangle={label:"Rectangle Body",position:{x:x,y:y},vertices:Vertices.fromPath("L 0 0 L "+width+" 0 L "+width+" "+height+" L 0 "+height)};if(options.chamfer){var chamfer=options.chamfer;rectangle.vertices=Vertices.chamfer(rectangle.vertices,chamfer.radius,chamfer.quality,chamfer.qualityMin,chamfer.qualityMax);delete options.chamfer}return Body.create(Common.extend({},rectangle,options))};Bodies.trapezoid=function(x,y,width,height,slope,options){options=options||{};slope*=.5;var roof=(1-slope*2)*width;var x1=width*slope,x2=x1+roof,x3=x2+x1,verticesPath;if(slope<.5){verticesPath="L 0 0 L "+x1+" "+-height+" L "+x2+" "+-height+" L "+x3+" 0"}else{verticesPath="L 0 0 L "+x2+" "+-height+" L "+x3+" 0"}var trapezoid={label:"Trapezoid Body",position:{x:x,y:y},vertices:Vertices.fromPath(verticesPath)};if(options.chamfer){var chamfer=options.chamfer;trapezoid.vertices=Vertices.chamfer(trapezoid.vertices,chamfer.radius,chamfer.quality,chamfer.qualityMin,chamfer.qualityMax);delete options.chamfer}return Body.create(Common.extend({},trapezoid,options))};Bodies.circle=function(x,y,radius,options,maxSides){options=options||{};var circle={label:"Circle Body",circleRadius:radius};maxSides=maxSides||25;var sides=Math.ceil(Math.max(10,Math.min(maxSides,radius)));if(sides%2===1)sides+=1;return Bodies.polygon(x,y,sides,radius,Common.extend({},circle,options))};Bodies.polygon=function(x,y,sides,radius,options){options=options||{};if(sides<3)return Bodies.circle(x,y,radius,options);var theta=2*Math.PI/sides,path="",offset=theta*.5;for(var i=0;i<sides;i+=1){var angle=offset+i*theta,xx=Math.cos(angle)*radius,yy=Math.sin(angle)*radius;path+="L "+xx.toFixed(3)+" "+yy.toFixed(3)+" "}var polygon={label:"Polygon Body",position:{x:x,y:y},vertices:Vertices.fromPath(path)};if(options.chamfer){var chamfer=options.chamfer;polygon.vertices=Vertices.chamfer(polygon.vertices,chamfer.radius,chamfer.quality,chamfer.qualityMin,chamfer.qualityMax);delete options.chamfer}return Body.create(Common.extend({},polygon,options))};Bodies.fromVertices=function(x,y,vertexSets,options,flagInternal,removeCollinear,minimumArea){var body,parts,isConvex,vertices,i,j,k,v,z;options=options||{};parts=[];flagInternal=typeof flagInternal!=="undefined"?flagInternal:false;removeCollinear=typeof removeCollinear!=="undefined"?removeCollinear:.01;minimumArea=typeof minimumArea!=="undefined"?minimumArea:10;if(!window.decomp){Common.log("Bodies.fromVertices: poly-decomp.js required. Could not decompose vertices. Fallback to convex hull.","warn")}if(!Common.isArray(vertexSets[0])){vertexSets=[vertexSets]}for(v=0;v<vertexSets.length;v+=1){vertices=vertexSets[v];isConvex=Vertices.isConvex(vertices);if(isConvex||!window.decomp){if(isConvex){vertices=Vertices.clockwiseSort(vertices)}else{vertices=Vertices.hull(vertices)}parts.push({position:{x:x,y:y},vertices:vertices})}else{var concave=new decomp.Polygon;for(i=0;i<vertices.length;i++){concave.vertices.push([vertices[i].x,vertices[i].y])}concave.makeCCW();if(removeCollinear!==false)concave.removeCollinearPoints(removeCollinear);var decomposed=concave.quickDecomp();for(i=0;i<decomposed.length;i++){var chunk=decomposed[i],chunkVertices=[];for(j=0;j<chunk.vertices.length;j++){chunkVertices.push({x:chunk.vertices[j][0],y:chunk.vertices[j][1]})}if(minimumArea>0&&Vertices.area(chunkVertices)<minimumArea)continue;parts.push({position:Vertices.centre(chunkVertices),vertices:chunkVertices})}}}for(i=0;i<parts.length;i++){parts[i]=Body.create(Common.extend(parts[i],options))}if(flagInternal){var coincident_max_dist=5;for(i=0;i<parts.length;i++){var partA=parts[i];for(j=i+1;j<parts.length;j++){var partB=parts[j];if(Bounds.overlaps(partA.bounds,partB.bounds)){var pav=partA.vertices,pbv=partB.vertices;for(k=0;k<partA.vertices.length;k++){for(z=0;z<partB.vertices.length;z++){var da=Vector.magnitudeSquared(Vector.sub(pav[(k+1)%pav.length],pbv[z])),db=Vector.magnitudeSquared(Vector.sub(pav[k],pbv[(z+1)%pbv.length]));if(da<coincident_max_dist&&db<coincident_max_dist){pav[k].isInternal=true;pbv[z].isInternal=true}}}}}}}if(parts.length>1){body=Body.create(Common.extend({parts:parts.slice(0)},options));Body.setPosition(body,{x:x,y:y});return body}else{return parts[0]}}})()},{"../body/Body":1,"../core/Common":14,"../geometry/Bounds":24,"../geometry/Vector":26,"../geometry/Vertices":27}],22:[function(require,module,exports){var Composites={};module.exports=Composites;var Composite=require("../body/Composite");var Constraint=require("../constraint/Constraint");var Common=require("../core/Common");var Body=require("../body/Body");var Bodies=require("./Bodies");(function(){Composites.stack=function(xx,yy,columns,rows,columnGap,rowGap,callback){var stack=Composite.create({label:"Stack"}),x=xx,y=yy,lastBody,i=0;for(var row=0;row<rows;row++){var maxHeight=0;for(var column=0;column<columns;column++){var body=callback(x,y,column,row,lastBody,i);if(body){var bodyHeight=body.bounds.max.y-body.bounds.min.y,bodyWidth=body.bounds.max.x-body.bounds.min.x;if(bodyHeight>maxHeight)maxHeight=bodyHeight;Body.translate(body,{x:bodyWidth*.5,y:bodyHeight*.5});x=body.bounds.max.x+columnGap;Composite.addBody(stack,body);lastBody=body;i+=1}else{x+=columnGap}}y+=maxHeight+rowGap;x=xx}return stack};Composites.chain=function(composite,xOffsetA,yOffsetA,xOffsetB,yOffsetB,options){var bodies=composite.bodies;for(var i=1;i<bodies.length;i++){var bodyA=bodies[i-1],bodyB=bodies[i],bodyAHeight=bodyA.bounds.max.y-bodyA.bounds.min.y,bodyAWidth=bodyA.bounds.max.x-bodyA.bounds.min.x,bodyBHeight=bodyB.bounds.max.y-bodyB.bounds.min.y,bodyBWidth=bodyB.bounds.max.x-bodyB.bounds.min.x;var defaults={bodyA:bodyA,pointA:{x:bodyAWidth*xOffsetA,y:bodyAHeight*yOffsetA},bodyB:bodyB,pointB:{x:bodyBWidth*xOffsetB,y:bodyBHeight*yOffsetB}};var constraint=Common.extend(defaults,options);Composite.addConstraint(composite,Constraint.create(constraint))}composite.label+=" Chain";return composite};Composites.mesh=function(composite,columns,rows,crossBrace,options){var bodies=composite.bodies,row,col,bodyA,bodyB,bodyC;for(row=0;row<rows;row++){for(col=1;col<columns;col++){bodyA=bodies[col-1+row*columns];bodyB=bodies[col+row*columns];Composite.addConstraint(composite,Constraint.create(Common.extend({bodyA:bodyA,bodyB:bodyB},options)))}if(row>0){for(col=0;col<columns;col++){bodyA=bodies[col+(row-1)*columns];bodyB=bodies[col+row*columns];Composite.addConstraint(composite,Constraint.create(Common.extend({bodyA:bodyA,bodyB:bodyB},options)));if(crossBrace&&col>0){bodyC=bodies[col-1+(row-1)*columns];Composite.addConstraint(composite,Constraint.create(Common.extend({bodyA:bodyC,bodyB:bodyB},options)))}if(crossBrace&&col<columns-1){bodyC=bodies[col+1+(row-1)*columns];Composite.addConstraint(composite,Constraint.create(Common.extend({bodyA:bodyC,bodyB:bodyB},options)))}}}}composite.label+=" Mesh";return composite};Composites.pyramid=function(xx,yy,columns,rows,columnGap,rowGap,callback){return Composites.stack(xx,yy,columns,rows,columnGap,rowGap,function(x,y,column,row,lastBody,i){var actualRows=Math.min(rows,Math.ceil(columns/2)),lastBodyWidth=lastBody?lastBody.bounds.max.x-lastBody.bounds.min.x:0;if(row>actualRows)return;row=actualRows-row;var start=row,end=columns-1-row;if(column<start||column>end)return;if(i===1){Body.translate(lastBody,{x:(column+(columns%2===1?1:-1))*lastBodyWidth,y:0})}var xOffset=lastBody?column*lastBodyWidth:0;return callback(xx+xOffset+column*columnGap,y,column,row,lastBody,i)})};Composites.newtonsCradle=function(xx,yy,number,size,length){var newtonsCradle=Composite.create({label:"Newtons Cradle"});for(var i=0;i<number;i++){var separation=1.9,circle=Bodies.circle(xx+i*(size*separation),yy+length,size,{inertia:Infinity,restitution:1,friction:0,frictionAir:1e-4,slop:1}),constraint=Constraint.create({pointA:{x:xx+i*(size*separation),y:yy},bodyB:circle});Composite.addBody(newtonsCradle,circle);Composite.addConstraint(newtonsCradle,constraint)}return newtonsCradle};Composites.car=function(xx,yy,width,height,wheelSize){var group=Body.nextGroup(true),wheelBase=-20,wheelAOffset=-width*.5+wheelBase,wheelBOffset=width*.5-wheelBase,wheelYOffset=0;var car=Composite.create({label:"Car"}),body=Bodies.trapezoid(xx,yy,width,height,.3,{collisionFilter:{group:group},friction:.01,chamfer:{radius:10}});var wheelA=Bodies.circle(xx+wheelAOffset,yy+wheelYOffset,wheelSize,{collisionFilter:{group:group},friction:.8,density:.01});var wheelB=Bodies.circle(xx+wheelBOffset,yy+wheelYOffset,wheelSize,{collisionFilter:{group:group},friction:.8,density:.01});var axelA=Constraint.create({bodyA:body,pointA:{x:wheelAOffset,y:wheelYOffset},bodyB:wheelA,stiffness:.2});var axelB=Constraint.create({bodyA:body,pointA:{x:wheelBOffset,y:wheelYOffset},bodyB:wheelB,stiffness:.2});Composite.addBody(car,body);Composite.addBody(car,wheelA);Composite.addBody(car,wheelB);Composite.addConstraint(car,axelA);Composite.addConstraint(car,axelB);return car};Composites.softBody=function(xx,yy,columns,rows,columnGap,rowGap,crossBrace,particleRadius,particleOptions,constraintOptions){particleOptions=Common.extend({inertia:Infinity},particleOptions);constraintOptions=Common.extend({stiffness:.4},constraintOptions);var softBody=Composites.stack(xx,yy,columns,rows,columnGap,rowGap,function(x,y){return Bodies.circle(x,y,particleRadius,particleOptions)});Composites.mesh(softBody,columns,rows,crossBrace,constraintOptions);softBody.label="Soft Body";return softBody}})()},{"../body/Body":1,"../body/Composite":2,"../constraint/Constraint":12,"../core/Common":14,"./Bodies":21}],23:[function(require,module,exports){var Axes={};module.exports=Axes;var Vector=require("../geometry/Vector");var Common=require("../core/Common");(function(){Axes.fromVertices=function(vertices){var axes={};for(var i=0;i<vertices.length;i++){var j=(i+1)%vertices.length,normal=Vector.normalise({x:vertices[j].y-vertices[i].y,y:vertices[i].x-vertices[j].x}),gradient=normal.y===0?Infinity:normal.x/normal.y;gradient=gradient.toFixed(3).toString();axes[gradient]=normal}return Common.values(axes)};Axes.rotate=function(axes,angle){if(angle===0)return;var cos=Math.cos(angle),sin=Math.sin(angle);for(var i=0;i<axes.length;i++){var axis=axes[i],xx;xx=axis.x*cos-axis.y*sin;axis.y=axis.x*sin+axis.y*cos;axis.x=xx}}})()},{"../core/Common":14,"../geometry/Vector":26}],24:[function(require,module,exports){var Bounds={};module.exports=Bounds;(function(){Bounds.create=function(vertices){var bounds={min:{x:0,y:0},max:{x:0,y:0}};if(vertices)Bounds.update(bounds,vertices);return bounds};Bounds.update=function(bounds,vertices,velocity){bounds.min.x=Infinity;bounds.max.x=-Infinity;bounds.min.y=Infinity;bounds.max.y=-Infinity;for(var i=0;i<vertices.length;i++){var vertex=vertices[i];if(vertex.x>bounds.max.x)bounds.max.x=vertex.x;if(vertex.x<bounds.min.x)bounds.min.x=vertex.x;if(vertex.y>bounds.max.y)bounds.max.y=vertex.y;if(vertex.y<bounds.min.y)bounds.min.y=vertex.y}if(velocity){if(velocity.x>0){bounds.max.x+=velocity.x}else{bounds.min.x+=velocity.x}if(velocity.y>0){bounds.max.y+=velocity.y}else{bounds.min.y+=velocity.y}}};Bounds.contains=function(bounds,point){return point.x>=bounds.min.x&&point.x<=bounds.max.x&&point.y>=bounds.min.y&&point.y<=bounds.max.y};Bounds.overlaps=function(boundsA,boundsB){return boundsA.min.x<=boundsB.max.x&&boundsA.max.x>=boundsB.min.x&&boundsA.max.y>=boundsB.min.y&&boundsA.min.y<=boundsB.max.y};Bounds.translate=function(bounds,vector){bounds.min.x+=vector.x;bounds.max.x+=vector.x;bounds.min.y+=vector.y;bounds.max.y+=vector.y};Bounds.shift=function(bounds,position){var deltaX=bounds.max.x-bounds.min.x,deltaY=bounds.max.y-bounds.min.y;bounds.min.x=position.x;bounds.max.x=position.x+deltaX;bounds.min.y=position.y;bounds.max.y=position.y+deltaY}})()},{}],25:[function(require,module,exports){var Svg={};module.exports=Svg;var Bounds=require("../geometry/Bounds");(function(){Svg.pathToVertices=function(path,sampleLength){var i,il,total,point,segment,segments,segmentsQueue,lastSegment,lastPoint,segmentIndex,points=[],lx,ly,length=0,x=0,y=0;sampleLength=sampleLength||15;var addPoint=function(px,py,pathSegType){var isRelative=pathSegType%2===1&&pathSegType>1;if(!lastPoint||px!=lastPoint.x||py!=lastPoint.y){if(lastPoint&&isRelative){lx=lastPoint.x;ly=lastPoint.y}else{lx=0;ly=0}var point={x:lx+px,y:ly+py};if(isRelative||!lastPoint){lastPoint=point}points.push(point);x=lx+px;y=ly+py}};var addSegmentPoint=function(segment){var segType=segment.pathSegTypeAsLetter.toUpperCase();if(segType==="Z")return;switch(segType){case"M":case"L":case"T":case"C":case"S":case"Q":x=segment.x;y=segment.y;break;case"H":x=segment.x;break;case"V":y=segment.y;break}addPoint(x,y,segment.pathSegType)};_svgPathToAbsolute(path);total=path.getTotalLength();segments=[];for(i=0;i<path.pathSegList.numberOfItems;i+=1)segments.push(path.pathSegList.getItem(i));segmentsQueue=segments.concat();while(length<total){segmentIndex=path.getPathSegAtLength(length);segment=segments[segmentIndex];if(segment!=lastSegment){while(segmentsQueue.length&&segmentsQueue[0]!=segment)addSegmentPoint(segmentsQueue.shift());lastSegment=segment}switch(segment.pathSegTypeAsLetter.toUpperCase()){case"C":case"T":case"S":case"Q":case"A":point=path.getPointAtLength(length);addPoint(point.x,point.y,0);break}length+=sampleLength}for(i=0,il=segmentsQueue.length;i<il;++i)addSegmentPoint(segmentsQueue[i]);return points};var _svgPathToAbsolute=function(path){var x0,y0,x1,y1,x2,y2,segs=path.pathSegList,x=0,y=0,len=segs.numberOfItems;for(var i=0;i<len;++i){var seg=segs.getItem(i),segType=seg.pathSegTypeAsLetter;if(/[MLHVCSQTA]/.test(segType)){if("x"in seg)x=seg.x;if("y"in seg)y=seg.y}else{if("x1"in seg)x1=x+seg.x1;if("x2"in seg)x2=x+seg.x2;if("y1"in seg)y1=y+seg.y1;if("y2"in seg)y2=y+seg.y2;if("x"in seg)x+=seg.x;if("y"in seg)y+=seg.y;switch(segType){case"m":segs.replaceItem(path.createSVGPathSegMovetoAbs(x,y),i);break;case"l":segs.replaceItem(path.createSVGPathSegLinetoAbs(x,y),i);break;case"h":segs.replaceItem(path.createSVGPathSegLinetoHorizontalAbs(x),i);break;case"v":segs.replaceItem(path.createSVGPathSegLinetoVerticalAbs(y),i);break;case"c":segs.replaceItem(path.createSVGPathSegCurvetoCubicAbs(x,y,x1,y1,x2,y2),i);break;case"s":segs.replaceItem(path.createSVGPathSegCurvetoCubicSmoothAbs(x,y,x2,y2),i);break;case"q":segs.replaceItem(path.createSVGPathSegCurvetoQuadraticAbs(x,y,x1,y1),i);break;case"t":segs.replaceItem(path.createSVGPathSegCurvetoQuadraticSmoothAbs(x,y),i);break;case"a":segs.replaceItem(path.createSVGPathSegArcAbs(x,y,seg.r1,seg.r2,seg.angle,seg.largeArcFlag,seg.sweepFlag),i);break;case"z":case"Z":x=x0;y=y0;break}}if(segType=="M"||segType=="m"){x0=x;y0=y}}}})()},{"../geometry/Bounds":24}],26:[function(require,module,exports){var Vector={};module.exports=Vector;(function(){Vector.create=function(x,y){return{x:x||0,y:y||0}};Vector.clone=function(vector){return{x:vector.x,y:vector.y}};Vector.magnitude=function(vector){return Math.sqrt(vector.x*vector.x+vector.y*vector.y)};Vector.magnitudeSquared=function(vector){return vector.x*vector.x+vector.y*vector.y};Vector.rotate=function(vector,angle){var cos=Math.cos(angle),sin=Math.sin(angle);return{x:vector.x*cos-vector.y*sin,y:vector.x*sin+vector.y*cos}};Vector.rotateAbout=function(vector,angle,point,output){var cos=Math.cos(angle),sin=Math.sin(angle);if(!output)output={};var x=point.x+((vector.x-point.x)*cos-(vector.y-point.y)*sin);output.y=point.y+((vector.x-point.x)*sin+(vector.y-point.y)*cos);output.x=x;return output};Vector.normalise=function(vector){var magnitude=Vector.magnitude(vector);if(magnitude===0)return{x:0,y:0};return{x:vector.x/magnitude,y:vector.y/magnitude}};Vector.dot=function(vectorA,vectorB){return vectorA.x*vectorB.x+vectorA.y*vectorB.y};Vector.cross=function(vectorA,vectorB){return vectorA.x*vectorB.y-vectorA.y*vectorB.x};Vector.cross3=function(vectorA,vectorB,vectorC){return(vectorB.x-vectorA.x)*(vectorC.y-vectorA.y)-(vectorB.y-vectorA.y)*(vectorC.x-vectorA.x)};Vector.add=function(vectorA,vectorB,output){if(!output)output={};output.x=vectorA.x+vectorB.x;output.y=vectorA.y+vectorB.y;return output};Vector.sub=function(vectorA,vectorB,output){if(!output)output={};output.x=vectorA.x-vectorB.x;output.y=vectorA.y-vectorB.y;return output};Vector.mult=function(vector,scalar){return{x:vector.x*scalar,y:vector.y*scalar}};Vector.div=function(vector,scalar){return{x:vector.x/scalar,y:vector.y/scalar}};Vector.perp=function(vector,negate){negate=negate===true?-1:1;return{x:negate*-vector.y,y:negate*vector.x}};Vector.neg=function(vector){return{x:-vector.x,y:-vector.y}};Vector.angle=function(vectorA,vectorB){return Math.atan2(vectorB.y-vectorA.y,vectorB.x-vectorA.x)};Vector._temp=[Vector.create(),Vector.create(),Vector.create(),Vector.create(),Vector.create(),Vector.create()]})()},{}],27:[function(require,module,exports){var Vertices={};module.exports=Vertices;var Vector=require("../geometry/Vector");var Common=require("../core/Common");(function(){Vertices.create=function(points,body){var vertices=[];for(var i=0;i<points.length;i++){var point=points[i],vertex={x:point.x,y:point.y,index:i,body:body,isInternal:false};vertices.push(vertex)}return vertices};Vertices.fromPath=function(path,body){var pathPattern=/L?\s*([\-\d\.e]+)[\s,]*([\-\d\.e]+)*/gi,points=[];path.replace(pathPattern,function(match,x,y){points.push({x:parseFloat(x),y:parseFloat(y)})});return Vertices.create(points,body)};Vertices.centre=function(vertices){var area=Vertices.area(vertices,true),centre={x:0,y:0},cross,temp,j;for(var i=0;i<vertices.length;i++){j=(i+1)%vertices.length;cross=Vector.cross(vertices[i],vertices[j]);temp=Vector.mult(Vector.add(vertices[i],vertices[j]),cross);centre=Vector.add(centre,temp)}return Vector.div(centre,6*area)};Vertices.mean=function(vertices){var average={x:0,y:0};for(var i=0;i<vertices.length;i++){average.x+=vertices[i].x;average.y+=vertices[i].y}return Vector.div(average,vertices.length)};Vertices.area=function(vertices,signed){var area=0,j=vertices.length-1;for(var i=0;i<vertices.length;i++){area+=(vertices[j].x-vertices[i].x)*(vertices[j].y+vertices[i].y);j=i}if(signed)return area/2;return Math.abs(area)/2};Vertices.inertia=function(vertices,mass){var numerator=0,denominator=0,v=vertices,cross,j;for(var n=0;n<v.length;n++){j=(n+1)%v.length;cross=Math.abs(Vector.cross(v[j],v[n]));numerator+=cross*(Vector.dot(v[j],v[j])+Vector.dot(v[j],v[n])+Vector.dot(v[n],v[n]));denominator+=cross}return mass/6*(numerator/denominator)};Vertices.translate=function(vertices,vector,scalar){var i;if(scalar){for(i=0;i<vertices.length;i++){vertices[i].x+=vector.x*scalar;vertices[i].y+=vector.y*scalar}}else{for(i=0;i<vertices.length;i++){vertices[i].x+=vector.x;vertices[i].y+=vector.y}}return vertices};Vertices.rotate=function(vertices,angle,point){if(angle===0)return;var cos=Math.cos(angle),sin=Math.sin(angle);for(var i=0;i<vertices.length;i++){var vertice=vertices[i],dx=vertice.x-point.x,dy=vertice.y-point.y;vertice.x=point.x+(dx*cos-dy*sin);vertice.y=point.y+(dx*sin+dy*cos)}return vertices};Vertices.contains=function(vertices,point){for(var i=0;i<vertices.length;i++){var vertice=vertices[i],nextVertice=vertices[(i+1)%vertices.length];if((point.x-vertice.x)*(nextVertice.y-vertice.y)+(point.y-vertice.y)*(vertice.x-nextVertice.x)>0){return false}}return true};Vertices.scale=function(vertices,scaleX,scaleY,point){if(scaleX===1&&scaleY===1)return vertices;point=point||Vertices.centre(vertices);var vertex,delta;for(var i=0;i<vertices.length;i++){vertex=vertices[i];delta=Vector.sub(vertex,point);vertices[i].x=point.x+delta.x*scaleX;vertices[i].y=point.y+delta.y*scaleY}return vertices};Vertices.chamfer=function(vertices,radius,quality,qualityMin,qualityMax){radius=radius||[8];if(!radius.length)radius=[radius];quality=typeof quality!=="undefined"?quality:-1;qualityMin=qualityMin||2;qualityMax=qualityMax||14;var newVertices=[];for(var i=0;i<vertices.length;i++){var prevVertex=vertices[i-1>=0?i-1:vertices.length-1],vertex=vertices[i],nextVertex=vertices[(i+1)%vertices.length],currentRadius=radius[i<radius.length?i:radius.length-1];if(currentRadius===0){newVertices.push(vertex);continue}var prevNormal=Vector.normalise({x:vertex.y-prevVertex.y,y:prevVertex.x-vertex.x});var nextNormal=Vector.normalise({x:nextVertex.y-vertex.y,y:vertex.x-nextVertex.x});var diagonalRadius=Math.sqrt(2*Math.pow(currentRadius,2)),radiusVector=Vector.mult(Common.clone(prevNormal),currentRadius),midNormal=Vector.normalise(Vector.mult(Vector.add(prevNormal,nextNormal),.5)),scaledVertex=Vector.sub(vertex,Vector.mult(midNormal,diagonalRadius));var precision=quality;if(quality===-1){precision=Math.pow(currentRadius,.32)*1.75}precision=Common.clamp(precision,qualityMin,qualityMax);if(precision%2===1)precision+=1;var alpha=Math.acos(Vector.dot(prevNormal,nextNormal)),theta=alpha/precision;for(var j=0;j<precision;j++){newVertices.push(Vector.add(Vector.rotate(radiusVector,theta*j),scaledVertex))}}return newVertices};Vertices.clockwiseSort=function(vertices){var centre=Vertices.mean(vertices);vertices.sort(function(vertexA,vertexB){return Vector.angle(centre,vertexA)-Vector.angle(centre,vertexB)});return vertices};Vertices.isConvex=function(vertices){var flag=0,n=vertices.length,i,j,k,z;if(n<3)return null;for(i=0;i<n;i++){j=(i+1)%n;k=(i+2)%n;z=(vertices[j].x-vertices[i].x)*(vertices[k].y-vertices[j].y);z-=(vertices[j].y-vertices[i].y)*(vertices[k].x-vertices[j].x);if(z<0){flag|=1}else if(z>0){flag|=2}if(flag===3){return false}}if(flag!==0){return true}else{return null}};Vertices.hull=function(vertices){var upper=[],lower=[],vertex,i;vertices=vertices.slice(0);vertices.sort(function(vertexA,vertexB){var dx=vertexA.x-vertexB.x;return dx!==0?dx:vertexA.y-vertexB.y});for(i=0;i<vertices.length;i++){vertex=vertices[i];while(lower.length>=2&&Vector.cross3(lower[lower.length-2],lower[lower.length-1],vertex)<=0){lower.pop()}lower.push(vertex)}for(i=vertices.length-1;i>=0;i--){vertex=vertices[i];while(upper.length>=2&&Vector.cross3(upper[upper.length-2],upper[upper.length-1],vertex)<=0){upper.pop()}upper.push(vertex)}upper.pop();lower.pop();return upper.concat(lower)}})()},{"../core/Common":14,"../geometry/Vector":26}],28:[function(require,module,exports){var Matter=module.exports={};Matter.version="master";Matter.Body=require("../body/Body");Matter.Composite=require("../body/Composite");Matter.World=require("../body/World");Matter.Contact=require("../collision/Contact");Matter.Detector=require("../collision/Detector");Matter.Grid=require("../collision/Grid");Matter.Pairs=require("../collision/Pairs");Matter.Pair=require("../collision/Pair");Matter.Query=require("../collision/Query");Matter.Resolver=require("../collision/Resolver");Matter.SAT=require("../collision/SAT");Matter.Constraint=require("../constraint/Constraint");Matter.MouseConstraint=require("../constraint/MouseConstraint");Matter.Common=require("../core/Common");Matter.Engine=require("../core/Engine");Matter.Events=require("../core/Events");Matter.Mouse=require("../core/Mouse");Matter.Runner=require("../core/Runner");Matter.Sleeping=require("../core/Sleeping");Matter.Bodies=require("../factory/Bodies");Matter.Composites=require("../factory/Composites");Matter.Axes=require("../geometry/Axes");Matter.Bounds=require("../geometry/Bounds");Matter.Svg=require("../geometry/Svg");Matter.Vector=require("../geometry/Vector");Matter.Vertices=require("../geometry/Vertices");Matter.Render=require("../render/Render");Matter.RenderPixi=require("../render/RenderPixi");Matter.World.add=Matter.Composite.add;Matter.World.remove=Matter.Composite.remove;Matter.World.addComposite=Matter.Composite.addComposite;Matter.World.addBody=Matter.Composite.addBody;Matter.World.addConstraint=Matter.Composite.addConstraint;Matter.World.clear=Matter.Composite.clear;Matter.Engine.run=Matter.Runner.run},{"../body/Body":1,"../body/Composite":2,"../body/World":3,"../collision/Contact":4,"../collision/Detector":5,"../collision/Grid":6,"../collision/Pair":7,"../collision/Pairs":8,"../collision/Query":9,"../collision/Resolver":10,"../collision/SAT":11,"../constraint/Constraint":12,"../constraint/MouseConstraint":13,"../core/Common":14,"../core/Engine":15,"../core/Events":16,"../core/Metrics":17,"../core/Mouse":18,"../core/Runner":19,"../core/Sleeping":20,"../factory/Bodies":21,"../factory/Composites":22,"../geometry/Axes":23,"../geometry/Bounds":24,"../geometry/Svg":25,"../geometry/Vector":26,"../geometry/Vertices":27,"../render/Render":29,"../render/RenderPixi":30}],29:[function(require,module,exports){var Render={};module.exports=Render;var Common=require("../core/Common");var Composite=require("../body/Composite");var Bounds=require("../geometry/Bounds");var Events=require("../core/Events");var Grid=require("../collision/Grid");var Vector=require("../geometry/Vector");(function(){var _requestAnimationFrame,_cancelAnimationFrame;if(typeof window!=="undefined"){_requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(function(){callback(Common.now())},1e3/60)};_cancelAnimationFrame=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame}Render.create=function(options){var defaults={controller:Render,engine:null,element:null,canvas:null,mouse:null,frameRequestId:null,options:{width:800,height:600,pixelRatio:1,background:"#fafafa",wireframeBackground:"#222",hasBounds:!!options.bounds,enabled:true,wireframes:true,showSleeping:true,showDebug:false,showBroadphase:false,showBounds:false,showVelocity:false,showCollisions:false,showSeparations:false,showAxes:false,showPositions:false,showAngleIndicator:false,showIds:false,showShadows:false,showVertexNumbers:false,showConvexHulls:false,showInternalEdges:false,showMousePosition:false}};var render=Common.extend(defaults,options);if(render.canvas){render.canvas.width=render.options.width||render.canvas.width;render.canvas.height=render.options.height||render.canvas.height}render.mouse=options.mouse;render.engine=options.engine;render.canvas=render.canvas||_createCanvas(render.options.width,render.options.height);render.context=render.canvas.getContext("2d");render.textures={};render.bounds=render.bounds||{min:{x:0,y:0},max:{x:render.canvas.width,y:render.canvas.height}};if(render.options.pixelRatio!==1){Render.setPixelRatio(render,render.options.pixelRatio)}if(Common.isElement(render.element)){render.element.appendChild(render.canvas)}else{Common.log("Render.create: options.element was undefined, render.canvas was created but not appended","warn")}return render};Render.run=function(render){(function loop(time){render.frameRequestId=_requestAnimationFrame(loop);Render.world(render)})()};Render.stop=function(render){_cancelAnimationFrame(render.frameRequestId)};Render.setPixelRatio=function(render,pixelRatio){var options=render.options,canvas=render.canvas;if(pixelRatio==="auto"){pixelRatio=_getPixelRatio(canvas)}options.pixelRatio=pixelRatio;canvas.setAttribute("data-pixel-ratio",pixelRatio);canvas.width=options.width*pixelRatio;canvas.height=options.height*pixelRatio;canvas.style.width=options.width+"px";canvas.style.height=options.height+"px";render.context.scale(pixelRatio,pixelRatio)};Render.world=function(render){var engine=render.engine,world=engine.world,canvas=render.canvas,context=render.context,options=render.options,allBodies=Composite.allBodies(world),allConstraints=Composite.allConstraints(world),background=options.wireframes?options.wireframeBackground:options.background,bodies=[],constraints=[],i;var event={timestamp:engine.timing.timestamp};Events.trigger(render,"beforeRender",event);if(render.currentBackground!==background)_applyBackground(render,background);context.globalCompositeOperation="source-in";context.fillStyle="transparent";context.fillRect(0,0,canvas.width,canvas.height);context.globalCompositeOperation="source-over";if(options.hasBounds){var boundsWidth=render.bounds.max.x-render.bounds.min.x,boundsHeight=render.bounds.max.y-render.bounds.min.y,boundsScaleX=boundsWidth/options.width,boundsScaleY=boundsHeight/options.height;for(i=0;i<allBodies.length;i++){var body=allBodies[i];if(Bounds.overlaps(body.bounds,render.bounds))bodies.push(body)}for(i=0;i<allConstraints.length;i++){var constraint=allConstraints[i],bodyA=constraint.bodyA,bodyB=constraint.bodyB,pointAWorld=constraint.pointA,pointBWorld=constraint.pointB;if(bodyA)pointAWorld=Vector.add(bodyA.position,constraint.pointA);if(bodyB)pointBWorld=Vector.add(bodyB.position,constraint.pointB);if(!pointAWorld||!pointBWorld)continue;if(Bounds.contains(render.bounds,pointAWorld)||Bounds.contains(render.bounds,pointBWorld))constraints.push(constraint)}context.scale(1/boundsScaleX,1/boundsScaleY);context.translate(-render.bounds.min.x,-render.bounds.min.y)}else{constraints=allConstraints;bodies=allBodies}if(!options.wireframes||engine.enableSleeping&&options.showSleeping){Render.bodies(render,bodies,context)}else{if(options.showConvexHulls)Render.bodyConvexHulls(render,bodies,context);Render.bodyWireframes(render,bodies,context)}if(options.showBounds)Render.bodyBounds(render,bodies,context);if(options.showAxes||options.showAngleIndicator)Render.bodyAxes(render,bodies,context);if(options.showPositions)Render.bodyPositions(render,bodies,context);if(options.showVelocity)Render.bodyVelocity(render,bodies,context);if(options.showIds)Render.bodyIds(render,bodies,context);if(options.showSeparations)Render.separations(render,engine.pairs.list,context);if(options.showCollisions)Render.collisions(render,engine.pairs.list,context);if(options.showVertexNumbers)Render.vertexNumbers(render,bodies,context);if(options.showMousePosition)Render.mousePosition(render,render.mouse,context);Render.constraints(constraints,context);if(options.showBroadphase&&engine.broadphase.controller===Grid)Render.grid(render,engine.broadphase,context);if(options.showDebug)Render.debug(render,context);if(options.hasBounds){context.setTransform(options.pixelRatio,0,0,options.pixelRatio,0,0)}Events.trigger(render,"afterRender",event)};Render.debug=function(render,context){var c=context,engine=render.engine,world=engine.world,metrics=engine.metrics,options=render.options,bodies=Composite.allBodies(world),space=" ";if(engine.timing.timestamp-(render.debugTimestamp||0)>=500){var text="";if(metrics.timing){text+="fps: "+Math.round(metrics.timing.fps)+space}render.debugString=text;render.debugTimestamp=engine.timing.timestamp}if(render.debugString){c.font="12px Arial";if(options.wireframes){c.fillStyle="rgba(255,255,255,0.5)"}else{c.fillStyle="rgba(0,0,0,0.5)"}var split=render.debugString.split("\n");for(var i=0;i<split.length;i++){c.fillText(split[i],50,50+i*18)}}};Render.constraints=function(constraints,context){var c=context;for(var i=0;i<constraints.length;i++){var constraint=constraints[i];if(!constraint.render.visible||!constraint.pointA||!constraint.pointB)continue;var bodyA=constraint.bodyA,bodyB=constraint.bodyB;if(bodyA){c.beginPath();c.moveTo(bodyA.position.x+constraint.pointA.x,bodyA.position.y+constraint.pointA.y)}else{c.beginPath();c.moveTo(constraint.pointA.x,constraint.pointA.y)}if(bodyB){c.lineTo(bodyB.position.x+constraint.pointB.x,bodyB.position.y+constraint.pointB.y)}else{c.lineTo(constraint.pointB.x,constraint.pointB.y)}c.lineWidth=constraint.render.lineWidth;c.strokeStyle=constraint.render.strokeStyle;c.stroke()}};Render.bodyShadows=function(render,bodies,context){var c=context,engine=render.engine;for(var i=0;i<bodies.length;i++){var body=bodies[i];if(!body.render.visible)continue;if(body.circleRadius){c.beginPath();c.arc(body.position.x,body.position.y,body.circleRadius,0,2*Math.PI);c.closePath()}else{c.beginPath();c.moveTo(body.vertices[0].x,body.vertices[0].y);for(var j=1;j<body.vertices.length;j++){c.lineTo(body.vertices[j].x,body.vertices[j].y)}c.closePath()}var distanceX=body.position.x-render.options.width*.5,distanceY=body.position.y-render.options.height*.2,distance=Math.abs(distanceX)+Math.abs(distanceY);c.shadowColor="rgba(0,0,0,0.15)";c.shadowOffsetX=.05*distanceX;c.shadowOffsetY=.05*distanceY;c.shadowBlur=1+12*Math.min(1,distance/1e3);c.fill();c.shadowColor=null;c.shadowOffsetX=null;c.shadowOffsetY=null;c.shadowBlur=null}};Render.bodies=function(render,bodies,context){var c=context,engine=render.engine,options=render.options,showInternalEdges=options.showInternalEdges||!options.wireframes,body,part,i,k;for(i=0;i<bodies.length;i++){body=bodies[i];if(!body.render.visible)continue;for(k=body.parts.length>1?1:0;k<body.parts.length;k++){part=body.parts[k];if(!part.render.visible)continue;if(options.showSleeping&&body.isSleeping){c.globalAlpha=.5*part.render.opacity}else if(part.render.opacity!==1){c.globalAlpha=part.render.opacity}if(part.render.sprite&&part.render.sprite.texture&&!options.wireframes){var sprite=part.render.sprite,texture=_getTexture(render,sprite.texture);c.translate(part.position.x,part.position.y);c.rotate(part.angle);c.drawImage(texture,texture.width*-sprite.xOffset*sprite.xScale,texture.height*-sprite.yOffset*sprite.yScale,texture.width*sprite.xScale,texture.height*sprite.yScale);c.rotate(-part.angle);c.translate(-part.position.x,-part.position.y)}else{if(part.circleRadius){c.beginPath();c.arc(part.position.x,part.position.y,part.circleRadius,0,2*Math.PI)}else{c.beginPath();c.moveTo(part.vertices[0].x,part.vertices[0].y);for(var j=1;j<part.vertices.length;j++){if(!part.vertices[j-1].isInternal||showInternalEdges){c.lineTo(part.vertices[j].x,part.vertices[j].y)}else{c.moveTo(part.vertices[j].x,part.vertices[j].y)}if(part.vertices[j].isInternal&&!showInternalEdges){c.moveTo(part.vertices[(j+1)%part.vertices.length].x,part.vertices[(j+1)%part.vertices.length].y)}}c.lineTo(part.vertices[0].x,part.vertices[0].y);c.closePath()}if(!options.wireframes){c.fillStyle=part.render.fillStyle;c.lineWidth=part.render.lineWidth;c.strokeStyle=part.render.strokeStyle;c.fill()}else{c.lineWidth=1;c.strokeStyle="#bbb"}c.stroke()}c.globalAlpha=1}}};Render.bodyWireframes=function(render,bodies,context){var c=context,showInternalEdges=render.options.showInternalEdges,body,part,i,j,k;c.beginPath();for(i=0;i<bodies.length;i++){body=bodies[i];if(!body.render.visible)continue;for(k=body.parts.length>1?1:0;k<body.parts.length;k++){part=body.parts[k];c.moveTo(part.vertices[0].x,part.vertices[0].y);for(j=1;j<part.vertices.length;j++){if(!part.vertices[j-1].isInternal||showInternalEdges){c.lineTo(part.vertices[j].x,part.vertices[j].y)}else{c.moveTo(part.vertices[j].x,part.vertices[j].y)}if(part.vertices[j].isInternal&&!showInternalEdges){c.moveTo(part.vertices[(j+1)%part.vertices.length].x,part.vertices[(j+1)%part.vertices.length].y)}}c.lineTo(part.vertices[0].x,part.vertices[0].y)}}c.lineWidth=1;c.strokeStyle="#bbb";c.stroke()};Render.bodyConvexHulls=function(render,bodies,context){var c=context,body,part,i,j,k;c.beginPath();for(i=0;i<bodies.length;i++){body=bodies[i];if(!body.render.visible||body.parts.length===1)continue;c.moveTo(body.vertices[0].x,body.vertices[0].y);for(j=1;j<body.vertices.length;j++){c.lineTo(body.vertices[j].x,body.vertices[j].y)}c.lineTo(body.vertices[0].x,body.vertices[0].y)}c.lineWidth=1;c.strokeStyle="rgba(255,255,255,0.2)";c.stroke()};Render.vertexNumbers=function(render,bodies,context){var c=context,i,j,k;for(i=0;i<bodies.length;i++){var parts=bodies[i].parts;for(k=parts.length>1?1:0;k<parts.length;k++){var part=parts[k];for(j=0;j<part.vertices.length;j++){c.fillStyle="rgba(255,255,255,0.2)";c.fillText(i+"_"+j,part.position.x+(part.vertices[j].x-part.position.x)*.8,part.position.y+(part.vertices[j].y-part.position.y)*.8)}}}};Render.mousePosition=function(render,mouse,context){var c=context;c.fillStyle="rgba(255,255,255,0.8)";c.fillText(mouse.position.x+" "+mouse.position.y,mouse.position.x+5,mouse.position.y-5)};Render.bodyBounds=function(render,bodies,context){var c=context,engine=render.engine,options=render.options;c.beginPath();for(var i=0;i<bodies.length;i++){var body=bodies[i];if(body.render.visible){var parts=bodies[i].parts;for(var j=parts.length>1?1:0;j<parts.length;j++){var part=parts[j];c.rect(part.bounds.min.x,part.bounds.min.y,part.bounds.max.x-part.bounds.min.x,part.bounds.max.y-part.bounds.min.y)}}}if(options.wireframes){c.strokeStyle="rgba(255,255,255,0.08)"}else{c.strokeStyle="rgba(0,0,0,0.1)"}c.lineWidth=1;c.stroke()};Render.bodyAxes=function(render,bodies,context){var c=context,engine=render.engine,options=render.options,part,i,j,k;c.beginPath();for(i=0;i<bodies.length;i++){var body=bodies[i],parts=body.parts;if(!body.render.visible)continue;if(options.showAxes){for(j=parts.length>1?1:0;j<parts.length;j++){part=parts[j];for(k=0;k<part.axes.length;k++){var axis=part.axes[k];c.moveTo(part.position.x,part.position.y);c.lineTo(part.position.x+axis.x*20,part.position.y+axis.y*20)}}}else{for(j=parts.length>1?1:0;j<parts.length;j++){part=parts[j];for(k=0;k<part.axes.length;k++){c.moveTo(part.position.x,part.position.y);c.lineTo((part.vertices[0].x+part.vertices[part.vertices.length-1].x)/2,(part.vertices[0].y+part.vertices[part.vertices.length-1].y)/2)}}}}if(options.wireframes){c.strokeStyle="indianred"}else{c.strokeStyle="rgba(0,0,0,0.8)";c.globalCompositeOperation="overlay"}c.lineWidth=1;c.stroke();c.globalCompositeOperation="source-over"};Render.bodyPositions=function(render,bodies,context){var c=context,engine=render.engine,options=render.options,body,part,i,k;c.beginPath();for(i=0;i<bodies.length;i++){body=bodies[i];if(!body.render.visible)continue;for(k=0;k<body.parts.length;k++){part=body.parts[k];c.arc(part.position.x,part.position.y,3,0,2*Math.PI,false);c.closePath()}}if(options.wireframes){c.fillStyle="indianred"}else{c.fillStyle="rgba(0,0,0,0.5)"}c.fill();c.beginPath();for(i=0;i<bodies.length;i++){body=bodies[i];if(body.render.visible){c.arc(body.positionPrev.x,body.positionPrev.y,2,0,2*Math.PI,false);c.closePath()}}c.fillStyle="rgba(255,165,0,0.8)";c.fill()};Render.bodyVelocity=function(render,bodies,context){var c=context;c.beginPath();for(var i=0;i<bodies.length;i++){var body=bodies[i];if(!body.render.visible)continue;c.moveTo(body.position.x,body.position.y);c.lineTo(body.position.x+(body.position.x-body.positionPrev.x)*2,body.position.y+(body.position.y-body.positionPrev.y)*2)}c.lineWidth=3;c.strokeStyle="cornflowerblue";c.stroke()};Render.bodyIds=function(render,bodies,context){var c=context,i,j;for(i=0;i<bodies.length;i++){if(!bodies[i].render.visible)continue;var parts=bodies[i].parts;for(j=parts.length>1?1:0;j<parts.length;j++){var part=parts[j];c.font="12px Arial";c.fillStyle="rgba(255,255,255,0.5)";c.fillText(part.id,part.position.x+10,part.position.y-10)}}};Render.collisions=function(render,pairs,context){var c=context,options=render.options,pair,collision,corrected,bodyA,bodyB,i,j;c.beginPath();for(i=0;i<pairs.length;i++){pair=pairs[i];if(!pair.isActive)continue;collision=pair.collision;for(j=0;j<pair.activeContacts.length;j++){var contact=pair.activeContacts[j],vertex=contact.vertex;c.rect(vertex.x-1.5,vertex.y-1.5,3.5,3.5)}}if(options.wireframes){c.fillStyle="rgba(255,255,255,0.7)"}else{c.fillStyle="orange"}c.fill();c.beginPath();for(i=0;i<pairs.length;i++){pair=pairs[i];if(!pair.isActive)continue;collision=pair.collision;if(pair.activeContacts.length>0){var normalPosX=pair.activeContacts[0].vertex.x,normalPosY=pair.activeContacts[0].vertex.y;if(pair.activeContacts.length===2){normalPosX=(pair.activeContacts[0].vertex.x+pair.activeContacts[1].vertex.x)/2;normalPosY=(pair.activeContacts[0].vertex.y+pair.activeContacts[1].vertex.y)/2}if(collision.bodyB===collision.supports[0].body||collision.bodyA.isStatic===true){c.moveTo(normalPosX-collision.normal.x*8,normalPosY-collision.normal.y*8)}else{c.moveTo(normalPosX+collision.normal.x*8,normalPosY+collision.normal.y*8)}c.lineTo(normalPosX,normalPosY)}}if(options.wireframes){c.strokeStyle="rgba(255,165,0,0.7)"}else{c.strokeStyle="orange"}c.lineWidth=1;c.stroke()};Render.separations=function(render,pairs,context){var c=context,options=render.options,pair,collision,corrected,bodyA,bodyB,i,j;c.beginPath();for(i=0;i<pairs.length;i++){pair=pairs[i];if(!pair.isActive)continue;collision=pair.collision;bodyA=collision.bodyA;bodyB=collision.bodyB;var k=1;if(!bodyB.isStatic&&!bodyA.isStatic)k=.5;if(bodyB.isStatic)k=0;c.moveTo(bodyB.position.x,bodyB.position.y);c.lineTo(bodyB.position.x-collision.penetration.x*k,bodyB.position.y-collision.penetration.y*k);k=1;if(!bodyB.isStatic&&!bodyA.isStatic)k=.5;if(bodyA.isStatic)k=0;c.moveTo(bodyA.position.x,bodyA.position.y);c.lineTo(bodyA.position.x+collision.penetration.x*k,bodyA.position.y+collision.penetration.y*k)}if(options.wireframes){c.strokeStyle="rgba(255,165,0,0.5)"}else{c.strokeStyle="orange"}c.stroke()};Render.grid=function(render,grid,context){var c=context,options=render.options;if(options.wireframes){c.strokeStyle="rgba(255,180,0,0.1)"}else{c.strokeStyle="rgba(255,180,0,0.5)"}c.beginPath();var bucketKeys=Common.keys(grid.buckets);for(var i=0;i<bucketKeys.length;i++){var bucketId=bucketKeys[i];if(grid.buckets[bucketId].length<2)continue;var region=bucketId.split(",");c.rect(.5+parseInt(region[0],10)*grid.bucketWidth,.5+parseInt(region[1],10)*grid.bucketHeight,grid.bucketWidth,grid.bucketHeight)}c.lineWidth=1;c.stroke()};Render.inspector=function(inspector,context){var engine=inspector.engine,selected=inspector.selected,render=inspector.render,options=render.options,bounds;if(options.hasBounds){var boundsWidth=render.bounds.max.x-render.bounds.min.x,boundsHeight=render.bounds.max.y-render.bounds.min.y,boundsScaleX=boundsWidth/render.options.width,boundsScaleY=boundsHeight/render.options.height;context.scale(1/boundsScaleX,1/boundsScaleY);context.translate(-render.bounds.min.x,-render.bounds.min.y)}for(var i=0;i<selected.length;i++){var item=selected[i].data;context.translate(.5,.5);context.lineWidth=1;context.strokeStyle="rgba(255,165,0,0.9)";context.setLineDash([1,2]);switch(item.type){case"body":bounds=item.bounds;context.beginPath();context.rect(Math.floor(bounds.min.x-3),Math.floor(bounds.min.y-3),Math.floor(bounds.max.x-bounds.min.x+6),Math.floor(bounds.max.y-bounds.min.y+6));context.closePath();context.stroke();break;case"constraint":var point=item.pointA;if(item.bodyA)point=item.pointB;context.beginPath();context.arc(point.x,point.y,10,0,2*Math.PI);context.closePath();context.stroke();break}context.setLineDash([]);context.translate(-.5,-.5)}if(inspector.selectStart!==null){context.translate(.5,.5);context.lineWidth=1;context.strokeStyle="rgba(255,165,0,0.6)";context.fillStyle="rgba(255,165,0,0.1)";bounds=inspector.selectBounds;context.beginPath();context.rect(Math.floor(bounds.min.x),Math.floor(bounds.min.y),Math.floor(bounds.max.x-bounds.min.x),Math.floor(bounds.max.y-bounds.min.y));context.closePath();context.stroke();context.fill();context.translate(-.5,-.5)}if(options.hasBounds)context.setTransform(1,0,0,1,0,0)};var _createCanvas=function(width,height){var canvas=document.createElement("canvas");canvas.width=width;canvas.height=height;canvas.oncontextmenu=function(){return false};canvas.onselectstart=function(){return false};return canvas};var _getPixelRatio=function(canvas){var context=canvas.getContext("2d"),devicePixelRatio=window.devicePixelRatio||1,backingStorePixelRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;return devicePixelRatio/backingStorePixelRatio};var _getTexture=function(render,imagePath){var image=render.textures[imagePath];if(image)return image;image=render.textures[imagePath]=new Image;image.src=imagePath;return image};var _applyBackground=function(render,background){var cssBackground=background;if(/(jpg|gif|png)$/.test(background))cssBackground="url("+background+")";render.canvas.style.background=cssBackground;render.canvas.style.backgroundSize="contain";render.currentBackground=background}})()},{"../body/Composite":2,"../collision/Grid":6,"../core/Common":14,"../core/Events":16,"../geometry/Bounds":24,"../geometry/Vector":26}],30:[function(require,module,exports){var RenderPixi={};module.exports=RenderPixi;var Composite=require("../body/Composite");var Common=require("../core/Common");(function(){var _requestAnimationFrame,_cancelAnimationFrame;if(typeof window!=="undefined"){_requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(function(){callback(Common.now())},1e3/60)};_cancelAnimationFrame=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame}RenderPixi.create=function(options){Common.log("RenderPixi.create: Matter.RenderPixi is deprecated (see docs)","warn");var defaults={controller:RenderPixi,engine:null,element:null,frameRequestId:null,canvas:null,renderer:null,container:null,spriteContainer:null,pixiOptions:null,options:{width:800,height:600,background:"#fafafa",wireframeBackground:"#222",hasBounds:false,enabled:true,wireframes:true,showSleeping:true,showDebug:false,showBroadphase:false,showBounds:false,showVelocity:false,showCollisions:false,showAxes:false,showPositions:false,showAngleIndicator:false,showIds:false,showShadows:false}};var render=Common.extend(defaults,options),transparent=!render.options.wireframes&&render.options.background==="transparent";render.pixiOptions=render.pixiOptions||{view:render.canvas,transparent:transparent,antialias:true,backgroundColor:options.background};render.mouse=options.mouse;render.engine=options.engine;render.renderer=render.renderer||new PIXI.WebGLRenderer(render.options.width,render.options.height,render.pixiOptions);render.container=render.container||new PIXI.Container;render.spriteContainer=render.spriteContainer||new PIXI.Container;render.canvas=render.canvas||render.renderer.view;render.bounds=render.bounds||{min:{x:0,y:0},max:{x:render.options.width,y:render.options.height}};render.textures={};render.sprites={};render.primitives={};render.container.addChild(render.spriteContainer);if(Common.isElement(render.element)){render.element.appendChild(render.canvas)}else{Common.log('No "render.element" passed, "render.canvas" was not inserted into document.',"warn")}render.canvas.oncontextmenu=function(){return false};render.canvas.onselectstart=function(){return false};return render};RenderPixi.run=function(render){(function loop(time){render.frameRequestId=_requestAnimationFrame(loop);RenderPixi.world(render)})()};RenderPixi.stop=function(render){_cancelAnimationFrame(render.frameRequestId)};RenderPixi.clear=function(render){var container=render.container,spriteContainer=render.spriteContainer;while(container.children[0]){container.removeChild(container.children[0])}while(spriteContainer.children[0]){spriteContainer.removeChild(spriteContainer.children[0])}var bgSprite=render.sprites["bg-0"];render.textures={};render.sprites={};render.primitives={};render.sprites["bg-0"]=bgSprite;if(bgSprite)container.addChildAt(bgSprite,0);render.container.addChild(render.spriteContainer);render.currentBackground=null;container.scale.set(1,1);container.position.set(0,0)};RenderPixi.setBackground=function(render,background){if(render.currentBackground!==background){var isColor=background.indexOf&&background.indexOf("#")!==-1,bgSprite=render.sprites["bg-0"];if(isColor){var color=Common.colorToNumber(background);render.renderer.backgroundColor=color;if(bgSprite)render.container.removeChild(bgSprite)}else{if(!bgSprite){var texture=_getTexture(render,background);bgSprite=render.sprites["bg-0"]=new PIXI.Sprite(texture);bgSprite.position.x=0;bgSprite.position.y=0;render.container.addChildAt(bgSprite,0)}}render.currentBackground=background}};RenderPixi.world=function(render){var engine=render.engine,world=engine.world,renderer=render.renderer,container=render.container,options=render.options,bodies=Composite.allBodies(world),allConstraints=Composite.allConstraints(world),constraints=[],i;if(options.wireframes){RenderPixi.setBackground(render,options.wireframeBackground)}else{RenderPixi.setBackground(render,options.background)}var boundsWidth=render.bounds.max.x-render.bounds.min.x,boundsHeight=render.bounds.max.y-render.bounds.min.y,boundsScaleX=boundsWidth/render.options.width,boundsScaleY=boundsHeight/render.options.height;if(options.hasBounds){for(i=0;i<bodies.length;i++){var body=bodies[i];body.render.sprite.visible=Bounds.overlaps(body.bounds,render.bounds)}for(i=0;i<allConstraints.length;i++){var constraint=allConstraints[i],bodyA=constraint.bodyA,bodyB=constraint.bodyB,pointAWorld=constraint.pointA,pointBWorld=constraint.pointB;if(bodyA)pointAWorld=Vector.add(bodyA.position,constraint.pointA);if(bodyB)pointBWorld=Vector.add(bodyB.position,constraint.pointB);if(!pointAWorld||!pointBWorld)continue;if(Bounds.contains(render.bounds,pointAWorld)||Bounds.contains(render.bounds,pointBWorld))constraints.push(constraint)}container.scale.set(1/boundsScaleX,1/boundsScaleY);container.position.set(-render.bounds.min.x*(1/boundsScaleX),-render.bounds.min.y*(1/boundsScaleY))}else{constraints=allConstraints}for(i=0;i<bodies.length;i++)RenderPixi.body(render,bodies[i]);for(i=0;i<constraints.length;i++)RenderPixi.constraint(render,constraints[i]);renderer.render(container)};RenderPixi.constraint=function(render,constraint){var engine=render.engine,bodyA=constraint.bodyA,bodyB=constraint.bodyB,pointA=constraint.pointA,pointB=constraint.pointB,container=render.container,constraintRender=constraint.render,primitiveId="c-"+constraint.id,primitive=render.primitives[primitiveId];if(!primitive)primitive=render.primitives[primitiveId]=new PIXI.Graphics;if(!constraintRender.visible||!constraint.pointA||!constraint.pointB){primitive.clear();return}if(Common.indexOf(container.children,primitive)===-1)container.addChild(primitive);primitive.clear();primitive.beginFill(0,0);primitive.lineStyle(constraintRender.lineWidth,Common.colorToNumber(constraintRender.strokeStyle),1);if(bodyA){primitive.moveTo(bodyA.position.x+pointA.x,bodyA.position.y+pointA.y)}else{primitive.moveTo(pointA.x,pointA.y)}if(bodyB){primitive.lineTo(bodyB.position.x+pointB.x,bodyB.position.y+pointB.y)}else{primitive.lineTo(pointB.x,pointB.y)}primitive.endFill()};RenderPixi.body=function(render,body){var engine=render.engine,bodyRender=body.render;if(!bodyRender.visible)return;if(bodyRender.sprite&&bodyRender.sprite.texture){var spriteId="b-"+body.id,sprite=render.sprites[spriteId],spriteContainer=render.spriteContainer;if(!sprite)sprite=render.sprites[spriteId]=_createBodySprite(render,body);if(Common.indexOf(spriteContainer.children,sprite)===-1)spriteContainer.addChild(sprite);sprite.position.x=body.position.x;sprite.position.y=body.position.y;sprite.rotation=body.angle;sprite.scale.x=bodyRender.sprite.xScale||1;sprite.scale.y=bodyRender.sprite.yScale||1}else{var primitiveId="b-"+body.id,primitive=render.primitives[primitiveId],container=render.container;if(!primitive){primitive=render.primitives[primitiveId]=_createBodyPrimitive(render,body);primitive.initialAngle=body.angle}if(Common.indexOf(container.children,primitive)===-1)container.addChild(primitive);primitive.position.x=body.position.x;primitive.position.y=body.position.y;primitive.rotation=body.angle-primitive.initialAngle}};var _createBodySprite=function(render,body){var bodyRender=body.render,texturePath=bodyRender.sprite.texture,texture=_getTexture(render,texturePath),sprite=new PIXI.Sprite(texture);sprite.anchor.x=body.render.sprite.xOffset;sprite.anchor.y=body.render.sprite.yOffset;return sprite};var _createBodyPrimitive=function(render,body){var bodyRender=body.render,options=render.options,primitive=new PIXI.Graphics,fillStyle=Common.colorToNumber(bodyRender.fillStyle),strokeStyle=Common.colorToNumber(bodyRender.strokeStyle),strokeStyleIndicator=Common.colorToNumber(bodyRender.strokeStyle),strokeStyleWireframe=Common.colorToNumber("#bbb"),strokeStyleWireframeIndicator=Common.colorToNumber("#CD5C5C"),part;primitive.clear();for(var k=body.parts.length>1?1:0;k<body.parts.length;k++){part=body.parts[k];if(!options.wireframes){primitive.beginFill(fillStyle,1);primitive.lineStyle(bodyRender.lineWidth,strokeStyle,1)}else{primitive.beginFill(0,0);primitive.lineStyle(1,strokeStyleWireframe,1)}primitive.moveTo(part.vertices[0].x-body.position.x,part.vertices[0].y-body.position.y);for(var j=1;j<part.vertices.length;j++){primitive.lineTo(part.vertices[j].x-body.position.x,part.vertices[j].y-body.position.y)}primitive.lineTo(part.vertices[0].x-body.position.x,part.vertices[0].y-body.position.y);primitive.endFill();if(options.showAngleIndicator||options.showAxes){primitive.beginFill(0,0);if(options.wireframes){primitive.lineStyle(1,strokeStyleWireframeIndicator,1)}else{primitive.lineStyle(1,strokeStyleIndicator)}primitive.moveTo(part.position.x-body.position.x,part.position.y-body.position.y);primitive.lineTo((part.vertices[0].x+part.vertices[part.vertices.length-1].x)/2-body.position.x,(part.vertices[0].y+part.vertices[part.vertices.length-1].y)/2-body.position.y);primitive.endFill()}}return primitive};var _getTexture=function(render,imagePath){var texture=render.textures[imagePath];if(!texture)texture=render.textures[imagePath]=PIXI.Texture.fromImage(imagePath);return texture}})()},{"../body/Composite":2,"../core/Common":14}]},{},[28])(28)});
data/config.ru ADDED
@@ -0,0 +1,39 @@
1
+ # config.ru for local development
2
+ require 'tempfile'
3
+ require 'opal'
4
+
5
+ opal_server = Opal::Server.new{|s|
6
+ # Let javascript_include_tag to serve compiled version of opal/dxopal.rb
7
+ s.append_path 'opal'
8
+ s.main = 'dxopal.rb'
9
+ # Serve static files
10
+ s.public_root = __dir__
11
+ # Just serve static ./index.html
12
+ s.use_index = false
13
+ }
14
+
15
+ DEMO_DIRS = Dir["examples/*"].reject{|x| x =~ /_vendor|top_page/}.map{|x| "/#{x}"}
16
+ DEMO_DIRS << "" # top page
17
+ DEMO_DIRS << "/starter-kit"
18
+ DEMO_DIRS.each do |path|
19
+ # Compile dxopal.js dynamically to avoid manual recompiling
20
+ map "#{path}/index.html" do
21
+ index = Opal::Server::Index.new(nil, opal_server)
22
+ run lambda{|env|
23
+ s = File.read(".#{path}/index.html")
24
+ .gsub(%r{<script (.*)dxopal(.min)?.js"></script>}){
25
+ index.javascript_include_tag(opal_server.main) +
26
+ "<script type='text/javascript' src='/vendor/matter.js'></script>"
27
+ }
28
+ [200, {}, [s]]
29
+ }
30
+ end
31
+ end
32
+
33
+ run lambda{|env|
34
+ if env["PATH_INFO"] == '/'
35
+ [301, {"Location" => '/index.html'}, [""]]
36
+ else
37
+ opal_server.call(env)
38
+ end
39
+ }
@@ -0,0 +1,129 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: DXOpal
8
+
9
+ &mdash; Documentation by YARD 0.9.9
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "DXOpal";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index (D)</a> &raquo;
40
+
41
+
42
+ <span class="title">DXOpal</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: DXOpal
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>opal/dxopal/font.rb<span class="defines">,<br />
82
+ opal/dxopal/image.rb,<br /> opal/dxopal/input.rb,<br /> opal/dxopal/remote_resource.rb,<br /> opal/dxopal/sound.rb,<br /> opal/dxopal/sound_effect.rb,<br /> opal/dxopal/sprite.rb,<br /> opal/dxopal/version.rb,<br /> opal/dxopal/window.rb</span>
83
+ </dd>
84
+ </dl>
85
+
86
+ </div>
87
+
88
+ <h2>Defined Under Namespace</h2>
89
+ <p class="children">
90
+
91
+
92
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="DXOpal/Input.html" title="DXOpal::Input (module)">Input</a></span>, <span class='object_link'><a href="DXOpal/Window.html" title="DXOpal::Window (module)">Window</a></span>
93
+
94
+
95
+
96
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="DXOpal/Font.html" title="DXOpal::Font (class)">Font</a></span>, <span class='object_link'><a href="DXOpal/Image.html" title="DXOpal::Image (class)">Image</a></span>, <span class='object_link'><a href="DXOpal/RemoteResource.html" title="DXOpal::RemoteResource (class)">RemoteResource</a></span>, <span class='object_link'><a href="DXOpal/Sound.html" title="DXOpal::Sound (class)">Sound</a></span>, <span class='object_link'><a href="DXOpal/SoundEffect.html" title="DXOpal::SoundEffect (class)">SoundEffect</a></span>, <span class='object_link'><a href="DXOpal/Sprite.html" title="DXOpal::Sprite (class)">Sprite</a></span>
97
+
98
+
99
+ </p>
100
+
101
+ <h2>Constant Summary</h2>
102
+ <dl class="constants">
103
+
104
+ <dt id="VERSION-constant" class="">VERSION =
105
+
106
+ </dt>
107
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.4.0.pre1</span><span class='tstring_end'>&quot;</span></span></pre></dd>
108
+
109
+ </dl>
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+ </div>
120
+
121
+ <div id="footer">
122
+ Generated on Tue Oct 17 13:56:27 2017 by
123
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
124
+ 0.9.9 (ruby-2.4.2).
125
+ </div>
126
+
127
+ </div>
128
+ </body>
129
+ </html>
@@ -0,0 +1,485 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: DXOpal::Font
8
+
9
+ &mdash; Documentation by YARD 0.9.9
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "DXOpal::Font";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../_index.html">Index (F)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../DXOpal.html" title="DXOpal (module)">DXOpal</a></span></span>
41
+ &raquo;
42
+ <span class="title">Font</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: DXOpal::Font
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">DXOpal::Font</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>opal/dxopal/font.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+ <h2>
111
+ Class Method Summary
112
+ <small><a href="#" class="summary_toggle">collapse</a></small>
113
+ </h2>
114
+
115
+ <ul class="summary">
116
+
117
+ <li class="public ">
118
+ <span class="summary_signature">
119
+
120
+ <a href="#default-class_method" title="default (class method)">.<strong>default</strong> &#x21d2; Object </a>
121
+
122
+
123
+
124
+ </span>
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+ <span class="summary_desc"><div class='inline'></div></span>
135
+
136
+ </li>
137
+
138
+
139
+ <li class="public ">
140
+ <span class="summary_signature">
141
+
142
+ <a href="#default=-class_method" title="default= (class method)">.<strong>default=</strong>(f) &#x21d2; Object </a>
143
+
144
+
145
+
146
+ </span>
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+ <span class="summary_desc"><div class='inline'></div></span>
157
+
158
+ </li>
159
+
160
+
161
+ </ul>
162
+
163
+ <h2>
164
+ Instance Method Summary
165
+ <small><a href="#" class="summary_toggle">collapse</a></small>
166
+ </h2>
167
+
168
+ <ul class="summary">
169
+
170
+ <li class="public ">
171
+ <span class="summary_signature">
172
+
173
+ <a href="#_spec_str-instance_method" title="#_spec_str (instance method)">#<strong>_spec_str</strong> &#x21d2; Object </a>
174
+
175
+
176
+
177
+ </span>
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ <span class="summary_desc"><div class='inline'>
188
+ <p>Return a string like “48px serif”.</p>
189
+ </div></span>
190
+
191
+ </li>
192
+
193
+
194
+ <li class="public ">
195
+ <span class="summary_signature">
196
+
197
+ <a href="#fontname-instance_method" title="#fontname (instance method)">#<strong>fontname</strong> &#x21d2; Object </a>
198
+
199
+
200
+
201
+ </span>
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+ <span class="summary_desc"><div class='inline'></div></span>
212
+
213
+ </li>
214
+
215
+
216
+ <li class="public ">
217
+ <span class="summary_signature">
218
+
219
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(size, fontname = nil, option = {}) &#x21d2; Font </a>
220
+
221
+
222
+
223
+ </span>
224
+
225
+
226
+ <span class="note title constructor">constructor</span>
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+ <span class="summary_desc"><div class='inline'>
236
+ <p>A new instance of Font.</p>
237
+ </div></span>
238
+
239
+ </li>
240
+
241
+
242
+ <li class="public ">
243
+ <span class="summary_signature">
244
+
245
+ <a href="#size-instance_method" title="#size (instance method)">#<strong>size</strong> &#x21d2; Object </a>
246
+
247
+
248
+
249
+ </span>
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+ <span class="summary_desc"><div class='inline'></div></span>
260
+
261
+ </li>
262
+
263
+
264
+ </ul>
265
+
266
+
267
+ <div id="constructor_details" class="method_details_list">
268
+ <h2>Constructor Details</h2>
269
+
270
+ <div class="method_details first">
271
+ <h3 class="signature first" id="initialize-instance_method">
272
+
273
+ #<strong>initialize</strong>(size, fontname = nil, option = {}) &#x21d2; <tt><span class='object_link'><a href="" title="DXOpal::Font (class)">Font</a></span></tt>
274
+
275
+
276
+
277
+
278
+
279
+ </h3><div class="docstring">
280
+ <div class="discussion">
281
+
282
+ <p>Returns a new instance of Font</p>
283
+
284
+
285
+ </div>
286
+ </div>
287
+ <div class="tags">
288
+
289
+
290
+ </div><table class="source_code">
291
+ <tr>
292
+ <td>
293
+ <pre class="lines">
294
+
295
+
296
+ 6
297
+ 7
298
+ 8
299
+ 9
300
+ 10</pre>
301
+ </td>
302
+ <td>
303
+ <pre class="code"><span class="info file"># File 'opal/dxopal/font.rb', line 6</span>
304
+
305
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span> <span class='id identifier rubyid_fontname'>fontname</span><span class='op'>=</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_option'>option</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
306
+ <span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_size'>size</span>
307
+ <span class='ivar'>@orig_fontname</span> <span class='op'>=</span> <span class='id identifier rubyid_fontname'>fontname</span>
308
+ <span class='ivar'>@fontname</span> <span class='op'>=</span> <span class='id identifier rubyid_fontname'>fontname</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>sans-serif</span><span class='tstring_end'>&quot;</span></span>
309
+ <span class='kw'>end</span></pre>
310
+ </td>
311
+ </tr>
312
+ </table>
313
+ </div>
314
+
315
+ </div>
316
+
317
+
318
+ <div id="class_method_details" class="method_details_list">
319
+ <h2>Class Method Details</h2>
320
+
321
+
322
+ <div class="method_details first">
323
+ <h3 class="signature first" id="default-class_method">
324
+
325
+ .<strong>default</strong> &#x21d2; <tt>Object</tt>
326
+
327
+
328
+
329
+
330
+
331
+ </h3><table class="source_code">
332
+ <tr>
333
+ <td>
334
+ <pre class="lines">
335
+
336
+
337
+ 3</pre>
338
+ </td>
339
+ <td>
340
+ <pre class="code"><span class="info file"># File 'opal/dxopal/font.rb', line 3</span>
341
+
342
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='semicolon'>;</span> <span class='cvar'>@@default</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="" title="DXOpal::Font (class)">Font</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="DXOpal::Font#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='int'>24</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
343
+ </td>
344
+ </tr>
345
+ </table>
346
+ </div>
347
+
348
+ <div class="method_details ">
349
+ <h3 class="signature " id="default=-class_method">
350
+
351
+ .<strong>default=</strong>(f) &#x21d2; <tt>Object</tt>
352
+
353
+
354
+
355
+
356
+
357
+ </h3><table class="source_code">
358
+ <tr>
359
+ <td>
360
+ <pre class="lines">
361
+
362
+
363
+ 4</pre>
364
+ </td>
365
+ <td>
366
+ <pre class="code"><span class="info file"># File 'opal/dxopal/font.rb', line 4</span>
367
+
368
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default='>default=</span><span class='lparen'>(</span><span class='id identifier rubyid_f'>f</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='cvar'>@@default</span> <span class='op'>=</span> <span class='id identifier rubyid_f'>f</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
369
+ </td>
370
+ </tr>
371
+ </table>
372
+ </div>
373
+
374
+ </div>
375
+
376
+ <div id="instance_method_details" class="method_details_list">
377
+ <h2>Instance Method Details</h2>
378
+
379
+
380
+ <div class="method_details first">
381
+ <h3 class="signature first" id="_spec_str-instance_method">
382
+
383
+ #<strong>_spec_str</strong> &#x21d2; <tt>Object</tt>
384
+
385
+
386
+
387
+
388
+
389
+ </h3><div class="docstring">
390
+ <div class="discussion">
391
+
392
+ <p>Return a string like “48px serif”</p>
393
+
394
+
395
+ </div>
396
+ </div>
397
+ <div class="tags">
398
+
399
+
400
+ </div><table class="source_code">
401
+ <tr>
402
+ <td>
403
+ <pre class="lines">
404
+
405
+
406
+ 16
407
+ 17
408
+ 18</pre>
409
+ </td>
410
+ <td>
411
+ <pre class="code"><span class="info file"># File 'opal/dxopal/font.rb', line 16</span>
412
+
413
+ <span class='kw'>def</span> <span class='id identifier rubyid__spec_str'>_spec_str</span>
414
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='ivar'>@size</span><span class='embexpr_end'>}</span><span class='tstring_content'>px </span><span class='embexpr_beg'>#{</span><span class='ivar'>@fontname</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
415
+ <span class='kw'>end</span></pre>
416
+ </td>
417
+ </tr>
418
+ </table>
419
+ </div>
420
+
421
+ <div class="method_details ">
422
+ <h3 class="signature " id="fontname-instance_method">
423
+
424
+ #<strong>fontname</strong> &#x21d2; <tt>Object</tt>
425
+
426
+
427
+
428
+
429
+
430
+ </h3><table class="source_code">
431
+ <tr>
432
+ <td>
433
+ <pre class="lines">
434
+
435
+
436
+ 13</pre>
437
+ </td>
438
+ <td>
439
+ <pre class="code"><span class="info file"># File 'opal/dxopal/font.rb', line 13</span>
440
+
441
+ <span class='kw'>def</span> <span class='id identifier rubyid_fontname'>fontname</span><span class='semicolon'>;</span> <span class='ivar'>@orig_fontname</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
442
+ </td>
443
+ </tr>
444
+ </table>
445
+ </div>
446
+
447
+ <div class="method_details ">
448
+ <h3 class="signature " id="size-instance_method">
449
+
450
+ #<strong>size</strong> &#x21d2; <tt>Object</tt>
451
+
452
+
453
+
454
+
455
+
456
+ </h3><table class="source_code">
457
+ <tr>
458
+ <td>
459
+ <pre class="lines">
460
+
461
+
462
+ 12</pre>
463
+ </td>
464
+ <td>
465
+ <pre class="code"><span class="info file"># File 'opal/dxopal/font.rb', line 12</span>
466
+
467
+ <span class='kw'>def</span> <span class='id identifier rubyid_size'>size</span><span class='semicolon'>;</span> <span class='ivar'>@size</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
468
+ </td>
469
+ </tr>
470
+ </table>
471
+ </div>
472
+
473
+ </div>
474
+
475
+ </div>
476
+
477
+ <div id="footer">
478
+ Generated on Tue Oct 17 13:56:27 2017 by
479
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
480
+ 0.9.9 (ruby-2.4.2).
481
+ </div>
482
+
483
+ </div>
484
+ </body>
485
+ </html>