text: /* Generated by Opal 0.11.99.dev */
  Opal.modules["nodejs/kernel"] = function(Opal) {
    var TMP_$$$eq_3, TMP_$$_4, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module;
  
    Opal.add_stubs(['$warn', '$to_str', '$new', '$to_s']);
    
    Opal.exit = process.exit;
    (function($base, $parent_nesting) {
      function $Kernel() {};
      var self = $Kernel = $module($base, 'Kernel', $Kernel);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_Kernel_caller_1, TMP_Kernel_node_require_2;
  
      
      Opal.const_set($nesting[0], 'NODE_REQUIRE', require);
      
      Opal.def(self, '$caller', TMP_Kernel_caller_1 = function $$caller($a) {
        var $post_args, args, self = this;
  
        
        
        $post_args = Opal.slice.call(arguments, 0, arguments.length);
        
        args = $post_args;;
        
        var stack;
        try {
          var err = Error("my error");
          throw err;
        } catch(e) {
          stack = e.stack;
        }
        return stack.$split("\n").slice(3);
      ;
      }, TMP_Kernel_caller_1.$$arity = -1);
      
      Opal.def(self, '$node_require', TMP_Kernel_node_require_2 = function $$node_require(path) {
        var self = this;
  
        
        self.$warn("[DEPRECATION] node_require is deprecated. Please use `require('module')` instead.");
        return $$($nesting, 'NODE_REQUIRE')(path.$to_str());
      }, TMP_Kernel_node_require_2.$$arity = 1);
    })($nesting[0], $nesting);
    Opal.const_set($nesting[0], 'ARGV', process.argv.slice(2));
    Opal.const_set($nesting[0], 'ENV', $$($nesting, 'Object').$new());
    Opal.defs($$($nesting, 'ENV'), '$[]=', TMP_$$$eq_3 = function(name, value) {
      var self = this;
  
      return process.env[name.$to_s()] = value.$to_s()
    }, TMP_$$$eq_3.$$arity = 2);
    return (Opal.defs($$($nesting, 'ENV'), '$[]', TMP_$$_4 = function(name) {
      var self = this;
  
      return process.env[name] || nil
    }, TMP_$$_4.$$arity = 1), nil) && '[]';
  };
  
  /* Generated by Opal 0.11.99.dev */
  Opal.modules["nodejs/file"] = function(Opal) {
    var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars;
  
    Opal.add_stubs(['$raise', '$warn', '$const_get', '$new', '$const_defined?', '$const_set', '$include', '$size', '$respond_to?', '$path', '$join', '$call', '$exist?', '$realpath', '$!=', '$close', '$to_str', '$pwd', '$delete', '$match?', '$sub', '$attr_reader', '$to_a', '$each_line', '$to_enum', '$read', '$chomp']);
    
    
    var warnings = {}, errno_code, errno_codes = [
      'EACCES',
      'EISDIR',
      'EMFILE',
      'ENOENT',
      'EPERM'
    ];
  
    function handle_unsupported_feature(message) {
      switch (Opal.config.unsupported_features_severity) {
      case 'error':
        $$($nesting, 'Kernel').$raise($$($nesting, 'NotImplementedError'), message)
        break;
      case 'warning':
        warn(message)
        break;
      default: // ignore
        // noop
      }
    }
    function warn(string) {
      if (warnings[string]) {
        return;
      }
      warnings[string] = true;
      self.$warn(string);
    }
    function executeIOAction(action) {
      try {
        return action();
      } catch (error) {
        if (errno_codes.indexOf(error.code) >= 0) {
          var error_class = $$($nesting, 'Errno').$const_get(error.code)
          throw (error_class).$new(error.message);
        }
        throw error;
      }
    }
  
    for(var i = 0, ii = errno_codes.length; i < ii; i++) {
      errno_code = errno_codes[i];
      if (!$$($nesting, 'Errno')['$const_defined?'](errno_code)) {
        $$($nesting, 'Errno').$const_set(errno_code, $$($nesting, 'Class').$new($$($nesting, 'SystemCallError')))
      }
    }
  ;
    (function($base, $super, $parent_nesting) {
      function $File(){};
      var self = $File = $klass($base, $super, 'File', $File);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_File_read_1, TMP_File_write_2, TMP_File_exist$q_3, TMP_File_realpath_4, TMP_File_join_5, TMP_File_directory$q_6, TMP_File_file$q_7, TMP_File_readable$q_8, TMP_File_size_9, TMP_File_open_10, TMP_File_stat_11, TMP_File_mtime_12, TMP_File_symlink$q_13, TMP_File_expand_path_14, TMP_File_initialize_15, TMP_File_read_16, TMP_File_readlines_17, TMP_File_each_line_18, TMP_File_write_19, TMP_File_flush_20, TMP_File_close_21, TMP_File_mtime_22;
      if (self.__fs__ == null) self.__fs__ = nil;
      if (self.__path__ == null) self.__path__ = nil;
  
      def.eof = def.path = def.fd = nil;
      
      self.$include($$$($$$('::', 'IO'), 'Writable'));
      self.$include($$$($$$('::', 'IO'), 'Readable'));
      self.__fs__ = require('fs');
      self.__path__ = require('path');
      var __fs__ = self.__fs__;
      var __path__ = self.__path__;
      if ($truthy(__path__.sep !== $$($nesting, 'Separator'))) {
        Opal.const_set($nesting[0], 'ALT_SEPARATOR', __path__.sep)};
      Opal.defs(self, '$read', TMP_File_read_1 = function $$read(path) {
        var self = this;
  
        return executeIOAction(function(){return __fs__.readFileSync(path).toString()})
      }, TMP_File_read_1.$$arity = 1);
      Opal.defs(self, '$write', TMP_File_write_2 = function $$write(path, data) {
        var self = this;
  
        
        executeIOAction(function(){return __fs__.writeFileSync(path, data)});
        return data.$size();
      }, TMP_File_write_2.$$arity = 2);
      Opal.defs(self, '$exist?', TMP_File_exist$q_3 = function(path) {
        var self = this;
  
        
        if ($truthy(path['$respond_to?']("path"))) {
          path = path.$path()};
        return executeIOAction(function(){return __fs__.existsSync(path)});
      }, TMP_File_exist$q_3.$$arity = 1);
      Opal.defs(self, '$realpath', TMP_File_realpath_4 = function $$realpath(pathname, dir_string, cache) {
        var $iter = TMP_File_realpath_4.$$p, block = $iter || nil, self = this;
  
        if ($iter) TMP_File_realpath_4.$$p = null;
        
        
        if ($iter) TMP_File_realpath_4.$$p = null;;
        
        if (dir_string == null) {
          dir_string = nil;
        };
        
        if (cache == null) {
          cache = nil;
        };
        if ($truthy(dir_string)) {
          pathname = self.$join(dir_string, pathname)};
        if ((block !== nil)) {
          
          __fs__.realpath(pathname, cache, function(error, realpath){
            if (error) Opal.IOError.$new(error.message)
            else block.$call(realpath)
          })
          
        } else {
          return executeIOAction(function(){return __fs__.realpathSync(pathname, cache)})
        };
      }, TMP_File_realpath_4.$$arity = -2);
      Opal.defs(self, '$join', TMP_File_join_5 = function $$join($a) {
        var $post_args, paths, self = this;
  
        
        
        $post_args = Opal.slice.call(arguments, 0, arguments.length);
        
        paths = $post_args;;
        return __path__.posix.join.apply(__path__, paths);
      }, TMP_File_join_5.$$arity = -1);
      Opal.defs(self, '$directory?', TMP_File_directory$q_6 = function(path) {
        var self = this, result = nil, realpath = nil;
  
        
        if ($truthy(self['$exist?'](path))) {
        } else {
          return false
        };
        result = executeIOAction(function(){return !!__fs__.lstatSync(path).isDirectory()});
        if ($truthy(result)) {
        } else {
          
          realpath = self.$realpath(path);
          if ($truthy(realpath['$!='](path))) {
            result = executeIOAction(function(){return !!__fs__.lstatSync(realpath).isDirectory()})};
        };
        return result;
      }, TMP_File_directory$q_6.$$arity = 1);
      Opal.defs(self, '$file?', TMP_File_file$q_7 = function(path) {
        var self = this, result = nil, realpath = nil;
  
        
        if ($truthy(self['$exist?'](path))) {
        } else {
          return false
        };
        result = executeIOAction(function(){return !!__fs__.lstatSync(path).isFile()});
        if ($truthy(result)) {
        } else {
          
          realpath = self.$realpath(path);
          if ($truthy(realpath['$!='](path))) {
            result = executeIOAction(function(){return !!__fs__.lstatSync(realpath).isFile()})};
        };
        return result;
      }, TMP_File_file$q_7.$$arity = 1);
      Opal.defs(self, '$readable?', TMP_File_readable$q_8 = function(path) {
        var self = this;
  
        
        if ($truthy(self['$exist?'](path))) {
        } else {
          return false
        };
        return "" + "\n" + "        try {\n" + "          __fs__.accessSync(path, __fs__.R_OK);\n" + "          return true;\n" + "        } catch (error) {\n" + "          return false;\n" + "        }\n" + "      ";
      }, TMP_File_readable$q_8.$$arity = 1);
      Opal.defs(self, '$size', TMP_File_size_9 = function $$size(path) {
        var self = this;
  
        return executeIOAction(function(){return __fs__.lstatSync(path).size});
      }, TMP_File_size_9.$$arity = 1);
      Opal.defs(self, '$open', TMP_File_open_10 = function $$open(path, mode) {
        var $iter = TMP_File_open_10.$$p, $yield = $iter || nil, self = this, file = nil;
  
        if ($iter) TMP_File_open_10.$$p = null;
        
        
        if (mode == null) {
          mode = "r";
        };
        file = self.$new(path, mode);
        if (($yield !== nil)) {
          
          return (function() { try {
          return Opal.yield1($yield, file);
          } finally {
            file.$close()
          }; })();
        } else {
          return file
        };
      }, TMP_File_open_10.$$arity = -2);
      Opal.defs(self, '$stat', TMP_File_stat_11 = function $$stat(path) {
        var self = this;
  
        
        if ($truthy(path['$respond_to?']("path"))) {
          path = path.$path()};
        return $$$($$($nesting, 'File'), 'Stat').$new(path);
      }, TMP_File_stat_11.$$arity = 1);
      Opal.defs(self, '$mtime', TMP_File_mtime_12 = function $$mtime(path) {
        var self = this;
  
        return executeIOAction(function(){return __fs__.statSync(path).mtime})
      }, TMP_File_mtime_12.$$arity = 1);
      Opal.defs(self, '$symlink?', TMP_File_symlink$q_13 = function(path) {
        var self = this;
  
        return executeIOAction(function(){return __fs__.lstatSync(path).isSymbolicLink()})
      }, TMP_File_symlink$q_13.$$arity = 1);
      Opal.defs(self, '$expand_path', TMP_File_expand_path_14 = function $$expand_path(path, basedir) {
        var $a, self = this;
  
        
        
        if (basedir == null) {
          basedir = nil;
        };
        path = path.$to_str();
        basedir = ($truthy($a = basedir) ? $a : $$($nesting, 'Dir').$pwd());
        return __path__.normalize(__path__.resolve(basedir.$to_str(), path)).split(__path__.sep).join(__path__.posix.sep);
      }, TMP_File_expand_path_14.$$arity = -2);
      
      Opal.def(self, '$initialize', TMP_File_initialize_15 = function $$initialize(path, flags) {
        var self = this, encoding_option_rx = nil;
  
        
        
        if (flags == null) {
          flags = "r";
        };
        flags = flags.$delete("b");
        encoding_option_rx = /:(.*)/;
        if ($truthy(encoding_option_rx['$match?'](flags))) {
          
          handle_unsupported_feature("Encoding option (:encoding) is unsupported by Node.js openSync method and will be removed.");
          flags = flags.$sub(encoding_option_rx, "");};
        self.path = path;
        self.flags = flags;
        return (self.fd = executeIOAction(function(){return __fs__.openSync(path, flags)}));
      }, TMP_File_initialize_15.$$arity = -2);
      self.$attr_reader("path");
      
      Opal.def(self, '$read', TMP_File_read_16 = function $$read() {
        var self = this, res = nil;
  
        if ($truthy(self.eof)) {
          return ""
        } else {
          
          res = executeIOAction(function(){return __fs__.readFileSync(self.path).toString()});
          self.eof = true;
          self.lineno = res.$size();
          return res;
        }
      }, TMP_File_read_16.$$arity = 0);
      
      Opal.def(self, '$readlines', TMP_File_readlines_17 = function $$readlines(separator) {
        var self = this;
        if ($gvars["/"] == null) $gvars["/"] = nil;
  
        
        
        if (separator == null) {
          separator = $gvars["/"];
        };
        return self.$each_line(separator).$to_a();
      }, TMP_File_readlines_17.$$arity = -1);
      
      Opal.def(self, '$each_line', TMP_File_each_line_18 = function $$each_line(separator) {
        var $iter = TMP_File_each_line_18.$$p, block = $iter || nil, self = this, lines = nil;
        if ($gvars["/"] == null) $gvars["/"] = nil;
  
        if ($iter) TMP_File_each_line_18.$$p = null;
        
        
        if ($iter) TMP_File_each_line_18.$$p = null;;
        
        if (separator == null) {
          separator = $gvars["/"];
        };
        if ($truthy(self.eof)) {
          return (function() {if ((block !== nil)) {
            return self
          } else {
            return [].$to_enum()
          }; return nil; })()};
        if ((block !== nil)) {
          
          lines = $$($nesting, 'File').$read(self.path);
          
          self.eof = false;
          self.lineno = 0;
          var chomped  = lines.$chomp(),
              trailing = lines.length != chomped.length,
              splitted = chomped.split(separator);
          for (var i = 0, length = splitted.length; i < length; i++) {
            self.lineno += 1;
            if (i < length - 1 || trailing) {
              Opal.yield1(block, splitted[i] + separator);
            }
            else {
              Opal.yield1(block, splitted[i]);
            }
          }
          self.eof = true;
        ;
          return self;
        } else {
          return self.$read().$each_line(separator)
        };
      }, TMP_File_each_line_18.$$arity = -1);
      
      Opal.def(self, '$write', TMP_File_write_19 = function $$write(string) {
        var self = this;
  
        return executeIOAction(function(){return __fs__.writeSync(self.fd, string)})
      }, TMP_File_write_19.$$arity = 1);
      
      Opal.def(self, '$flush', TMP_File_flush_20 = function $$flush() {
        var self = this;
  
        return executeIOAction(function(){return __fs__.fsyncSync(self.fd)})
      }, TMP_File_flush_20.$$arity = 0);
      
      Opal.def(self, '$close', TMP_File_close_21 = function $$close() {
        var self = this;
  
        return executeIOAction(function(){return __fs__.closeSync(self.fd)})
      }, TMP_File_close_21.$$arity = 0);
      return (Opal.def(self, '$mtime', TMP_File_mtime_22 = function $$mtime() {
        var self = this;
  
        return executeIOAction(function(){return __fs__.statSync(self.path).mtime})
      }, TMP_File_mtime_22.$$arity = 0), nil) && 'mtime';
    })($nesting[0], $$($nesting, 'IO'), $nesting);
    return (function($base, $super, $parent_nesting) {
      function $Stat(){};
      var self = $Stat = $klass($base, $super, 'Stat', $Stat);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_Stat_initialize_23, TMP_Stat_file$q_24, TMP_Stat_mtime_25;
      if (self.__fs__ == null) self.__fs__ = nil;
  
      def.path = nil;
      
      self.__fs__ = require('fs');
      var __fs__ = self.__fs__;
      
      Opal.def(self, '$initialize', TMP_Stat_initialize_23 = function $$initialize(path) {
        var self = this;
  
        return (self.path = path)
      }, TMP_Stat_initialize_23.$$arity = 1);
      
      Opal.def(self, '$file?', TMP_Stat_file$q_24 = function() {
        var self = this;
  
        return executeIOAction(function(){return __fs__.statSync(self.path).isFile()})
      }, TMP_Stat_file$q_24.$$arity = 0);
      return (Opal.def(self, '$mtime', TMP_Stat_mtime_25 = function $$mtime() {
        var self = this;
  
        return executeIOAction(function(){return __fs__.statSync(self.path).mtime})
      }, TMP_Stat_mtime_25.$$arity = 0), nil) && 'mtime';
    })($$($nesting, 'File'), null, $nesting);
  };
  
  /* Generated by Opal 0.11.99.dev */
  Opal.modules["nodejs/dir"] = function(Opal) {
    var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send;
  
    Opal.add_stubs(['$respond_to?', '$flat_map', '$to_path', '$coerce_to!']);
    return (function($base, $super, $parent_nesting) {
      function $Dir(){};
      var self = $Dir = $klass($base, $super, 'Dir', $Dir);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting);
      if (self.__glob__ == null) self.__glob__ = nil;
      if (self.__fs__ == null) self.__fs__ = nil;
      if (self.__path__ == null) self.__path__ = nil;
  
      
      self.__glob__ = require('glob');
      self.__fs__ = require('fs');
      self.__path__ = require('path');
      var __glob__ = self.__glob__;
      var __fs__ = self.__fs__;
      var __path__ = self.__path__;
      return (function(self, $parent_nesting) {
        var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_$$_1, TMP_pwd_2, TMP_mkdir_3, TMP_entries_4, TMP_glob_5;
  
        
        
        Opal.def(self, '$[]', TMP_$$_1 = function(glob) {
          var self = this;
  
          return __glob__.sync(glob)
        }, TMP_$$_1.$$arity = 1);
        
        Opal.def(self, '$pwd', TMP_pwd_2 = function $$pwd() {
          var self = this;
  
          return process.cwd().split(__path__.sep).join(__path__.posix.sep);
        }, TMP_pwd_2.$$arity = 0);
        
        Opal.def(self, '$mkdir', TMP_mkdir_3 = function $$mkdir(path) {
          var self = this;
  
          return __fs__.mkdirSync(path)
        }, TMP_mkdir_3.$$arity = 1);
        
        Opal.def(self, '$entries', TMP_entries_4 = function $$entries(dirname) {
          var self = this;
  
          
          var result = [];
          var entries = __fs__.readdirSync(dirname);
          for (var i = 0, ii = entries.length; i < ii; i++) {
            result.push(entries[i]);
          }
          return result;
        
        }, TMP_entries_4.$$arity = 1);
        
        Opal.def(self, '$glob', TMP_glob_5 = function $$glob(pattern) {
          var TMP_6, self = this;
  
          
          if ($truthy(pattern['$respond_to?']("each"))) {
          } else {
            pattern = [pattern]
          };
          return $send(pattern, 'flat_map', [], (TMP_6 = function(subpattern){var self = TMP_6.$$s || this;
  
          
            
            if (subpattern == null) {
              subpattern = nil;
            };
            if ($truthy(subpattern['$respond_to?']("to_path"))) {
              subpattern = subpattern.$to_path()};
            subpattern = $$($nesting, 'Opal')['$coerce_to!'](subpattern, $$($nesting, 'String'), "to_str");
            return __glob__.sync(subpattern);;}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6));
        }, TMP_glob_5.$$arity = 1);
        return Opal.alias(self, "getwd", "pwd");
      })(Opal.get_singleton_class(self), $nesting);
    })($nesting[0], null, $nesting)
  };
  
  /* Generated by Opal 0.11.99.dev */
  Opal.modules["nodejs/io"] = function(Opal) {
    function $rb_minus(lhs, rhs) {
      return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);
    }
    var TMP_5, TMP_6, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $lambda = Opal.lambda, $send = Opal.send, $writer = nil;
  
    Opal.add_stubs(['$attr_reader', '$write', '$read', '$write_proc=', '$-', '$tty=']);
    
    
    function executeIOAction(action) {
      try {
        return action();
      } catch (error) {
        if (error.code === 'EACCES' ||
            error.code === 'EISDIR' ||
            error.code === 'EMFILE' ||
            error.code === 'ENOENT' ||
            error.code === 'EPERM') {
          throw Opal.IOError.$new(error.message)
        }
        throw error;
      }
    }
  ;
    (function($base, $super, $parent_nesting) {
      function $IO(){};
      var self = $IO = $klass($base, $super, 'IO', $IO);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_IO_initialize_1, TMP_IO_write_2, TMP_IO_read_3, TMP_IO_binread_4;
      if (self.__fs__ == null) self.__fs__ = nil;
  
      
      self.__fs__ = require('fs');
      var __fs__ = self.__fs__;
      self.$attr_reader("eof");
      self.$attr_reader("lineno");
      
      Opal.def(self, '$initialize', TMP_IO_initialize_1 = function $$initialize() {
        var self = this;
  
        
        self.eof = false;
        return (self.lineno = 0);
      }, TMP_IO_initialize_1.$$arity = 0);
      Opal.defs(self, '$write', TMP_IO_write_2 = function $$write(path, data) {
        var self = this;
  
        return $$($nesting, 'File').$write(path, data)
      }, TMP_IO_write_2.$$arity = 2);
      Opal.defs(self, '$read', TMP_IO_read_3 = function $$read(path) {
        var self = this;
  
        return $$($nesting, 'File').$read(path)
      }, TMP_IO_read_3.$$arity = 1);
      return (Opal.defs(self, '$binread', TMP_IO_binread_4 = function $$binread(path) {
        var self = this;
  
        return executeIOAction(function(){return __fs__.readFileSync(path).toString('binary')})
      }, TMP_IO_binread_4.$$arity = 1), nil) && 'binread';
    })($nesting[0], null, $nesting);
    
    $writer = [$lambda((TMP_5 = function(string){var self = TMP_5.$$s || this;
  
    
      
      if (string == null) {
        string = nil;
      };
      return process.stdout.write(string);;}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5))];
    $send($$($nesting, 'STDOUT'), 'write_proc=', Opal.to_a($writer));
    $writer[$rb_minus($writer["length"], 1)];;
    
    $writer = [$lambda((TMP_6 = function(string){var self = TMP_6.$$s || this;
  
    
      
      if (string == null) {
        string = nil;
      };
      return process.stderr.write(string);;}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6))];
    $send($$($nesting, 'STDERR'), 'write_proc=', Opal.to_a($writer));
    $writer[$rb_minus($writer["length"], 1)];;
    
    $writer = [true];
    $send($$($nesting, 'STDOUT'), 'tty=', Opal.to_a($writer));
    $writer[$rb_minus($writer["length"], 1)];;
    
    $writer = [true];
    $send($$($nesting, 'STDERR'), 'tty=', Opal.to_a($writer));
    return $writer[$rb_minus($writer["length"], 1)];;
  };
  
  /* Generated by Opal 0.11.99.dev */
  Opal.modules["nodejs/open-uri"] = function(Opal) {
    var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module;
  
    return (function($base, $parent_nesting) {
      function $OpenURI() {};
      var self = $OpenURI = $module($base, 'OpenURI', $OpenURI);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_OpenURI_request_1;
      if (self.__xmlhttprequest__ == null) self.__xmlhttprequest__ = nil;
  
      
      self.__xmlhttprequest__ = require('xmlhttprequest');
      var __XMLHttpRequest__ = self.__xmlhttprequest__.XMLHttpRequest;
      Opal.defs(self, '$request', TMP_OpenURI_request_1 = function $$request(uri) {
        var self = this;
  
        
        var xhr = new __XMLHttpRequest__();
        xhr.open('GET', uri, false);
        xhr.send();
        return xhr;
      
      }, TMP_OpenURI_request_1.$$arity = 1);
    })($nesting[0], $nesting)
  };
  
  /* Generated by Opal 0.11.99.dev */
  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, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy;
  
    Opal.add_stubs(['$===', '$>', '$<', '$equal?', '$<=>', '$normalize', '$raise', '$class']);
    return (function($base, $parent_nesting) {
      function $Comparable() {};
      var self = $Comparable = $module($base, 'Comparable', $Comparable);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_Comparable_normalize_1, TMP_Comparable_$eq$eq_2, TMP_Comparable_$gt_3, TMP_Comparable_$gt$eq_4, TMP_Comparable_$lt_5, TMP_Comparable_$lt$eq_6, TMP_Comparable_between$q_7, TMP_Comparable_clamp_8;
  
      
      Opal.defs(self, '$normalize', TMP_Comparable_normalize_1 = function $$normalize(what) {
        var self = this;
  
        
        if ($truthy($$($nesting, 'Integer')['$==='](what))) {
          return what};
        if ($truthy($rb_gt(what, 0))) {
          return 1};
        if ($truthy($rb_lt(what, 0))) {
          return -1};
        return 0;
      }, TMP_Comparable_normalize_1.$$arity = 1);
      
      Opal.def(self, '$==', TMP_Comparable_$eq$eq_2 = function(other) {
        var self = this, cmp = nil;
  
        try {
          
          if ($truthy(self['$equal?'](other))) {
            return true};
          
        if (self["$<=>"] == Opal.Kernel["$<=>"]) {
          return false;
        }
  
        // check for infinite recursion
        if (self.$$comparable) {
          delete self.$$comparable;
          return false;
        }
      ;
          if ($truthy((cmp = self['$<=>'](other)))) {
          } else {
            return false
          };
          return $$($nesting, 'Comparable').$normalize(cmp) == 0;
        } catch ($err) {
          if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {
            try {
              return false
            } finally { Opal.pop_exception() }
          } else { throw $err; }
        }
      }, TMP_Comparable_$eq$eq_2.$$arity = 1);
      
      Opal.def(self, '$>', TMP_Comparable_$gt_3 = function(other) {
        var self = this, cmp = nil;
  
        
        if ($truthy((cmp = self['$<=>'](other)))) {
        } else {
          self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed")
        };
        return $$($nesting, 'Comparable').$normalize(cmp) > 0;
      }, TMP_Comparable_$gt_3.$$arity = 1);
      
      Opal.def(self, '$>=', TMP_Comparable_$gt$eq_4 = function(other) {
        var self = this, cmp = nil;
  
        
        if ($truthy((cmp = self['$<=>'](other)))) {
        } else {
          self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed")
        };
        return $$($nesting, 'Comparable').$normalize(cmp) >= 0;
      }, TMP_Comparable_$gt$eq_4.$$arity = 1);
      
      Opal.def(self, '$<', TMP_Comparable_$lt_5 = function(other) {
        var self = this, cmp = nil;
  
        
        if ($truthy((cmp = self['$<=>'](other)))) {
        } else {
          self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed")
        };
        return $$($nesting, 'Comparable').$normalize(cmp) < 0;
      }, TMP_Comparable_$lt_5.$$arity = 1);
      
      Opal.def(self, '$<=', TMP_Comparable_$lt$eq_6 = function(other) {
        var self = this, cmp = nil;
  
        
        if ($truthy((cmp = self['$<=>'](other)))) {
        } else {
          self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed")
        };
        return $$($nesting, 'Comparable').$normalize(cmp) <= 0;
      }, TMP_Comparable_$lt$eq_6.$$arity = 1);
      
      Opal.def(self, '$between?', TMP_Comparable_between$q_7 = function(min, max) {
        var self = this;
  
        
        if ($rb_lt(self, min)) {
          return false};
        if ($rb_gt(self, max)) {
          return false};
        return true;
      }, TMP_Comparable_between$q_7.$$arity = 2);
      
      Opal.def(self, '$clamp', TMP_Comparable_clamp_8 = function $$clamp(min, max) {
        var self = this, cmp = nil;
  
        
        cmp = min['$<=>'](max);
        if ($truthy(cmp)) {
        } else {
          self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (min.$class()) + " with " + (max.$class()) + " failed")
        };
        if ($truthy($rb_gt($$($nesting, 'Comparable').$normalize(cmp), 0))) {
          self.$raise($$($nesting, 'ArgumentError'), "min argument must be smaller than max argument")};
        if ($truthy($rb_lt($$($nesting, 'Comparable').$normalize(self['$<=>'](min)), 0))) {
          return min};
        if ($truthy($rb_gt($$($nesting, 'Comparable').$normalize(self['$<=>'](max)), 0))) {
          return max};
        return self;
      }, TMP_Comparable_clamp_8.$$arity = 2);
    })($nesting[0], $nesting)
  };
  
  /* Generated by Opal 0.11.99.dev */
  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, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $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, $parent_nesting) {
      function $Pathname(){};
      var self = $Pathname = $klass($base, $super, 'Pathname', $Pathname);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_Pathname_initialize_1, TMP_Pathname_$eq$eq_2, TMP_Pathname_absolute$q_3, TMP_Pathname_relative$q_4, TMP_Pathname_chop_basename_5, TMP_Pathname_root$q_6, TMP_Pathname_parent_7, TMP_Pathname_sub_8, TMP_Pathname_cleanpath_9, TMP_Pathname_to_path_10, TMP_Pathname_hash_11, TMP_Pathname_expand_path_12, TMP_Pathname_$_13, TMP_Pathname_plus_14, TMP_Pathname_join_15, TMP_Pathname_split_17, TMP_Pathname_dirname_18, TMP_Pathname_basename_19, TMP_Pathname_directory$q_20, TMP_Pathname_extname_21, TMP_Pathname_$lt$eq$gt_22, TMP_Pathname_23, TMP_Pathname_24, TMP_Pathname_relative_path_from_25, TMP_Pathname_entries_26;
  
      def.path = nil;
      
      self.$include($$($nesting, 'Comparable'));
      Opal.const_set($nesting[0], 'SEPARATOR_PAT', new RegExp($$($nesting, 'Regexp').$quote($$$($$($nesting, 'File'), 'SEPARATOR'))));
      
      Opal.def(self, '$initialize', TMP_Pathname_initialize_1 = function $$initialize(path) {
        var self = this;
  
        
        if ($truthy($$($nesting, 'Pathname')['$==='](path))) {
          self.path = path.$path().$to_s()
        } else if ($truthy(path['$respond_to?']("to_path"))) {
          self.path = path.$to_path()
        } else if ($truthy(path['$is_a?']($$($nesting, 'String')))) {
          self.path = path
        } else if ($truthy(path['$nil?']())) {
          self.$raise($$($nesting, 'TypeError'), "no implicit conversion of nil into String")
        } else {
          self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + (path.$class()) + " into String")
        };
        if (self.path['$==']("\u0000")) {
          return self.$raise($$($nesting, 'ArgumentError'))
        } else {
          return nil
        };
      }, TMP_Pathname_initialize_1.$$arity = 1);
      self.$attr_reader("path");
      
      Opal.def(self, '$==', TMP_Pathname_$eq$eq_2 = function(other) {
        var self = this;
  
        return other.$path()['$=='](self.path)
      }, TMP_Pathname_$eq$eq_2.$$arity = 1);
      
      Opal.def(self, '$absolute?', TMP_Pathname_absolute$q_3 = function() {
        var self = this;
  
        return self['$relative?']()['$!']()
      }, TMP_Pathname_absolute$q_3.$$arity = 0);
      
      Opal.def(self, '$relative?', TMP_Pathname_relative$q_4 = function() {
        var $a, $b, $c, self = this, path = nil, r = nil;
  
        
        path = self.path;
        while ($truthy((r = self.$chop_basename(path)))) {
          $c = r, $b = Opal.to_ary($c), (path = ($b[0] == null ? nil : $b[0])), $c
        };
        return path['$==']("");
      }, TMP_Pathname_relative$q_4.$$arity = 0);
      
      Opal.def(self, '$chop_basename', TMP_Pathname_chop_basename_5 = function $$chop_basename(path) {
        var self = this, base = nil;
  
        
        base = $$($nesting, 'File').$basename(path);
        if ($truthy($$($nesting, 'Regexp').$new("" + "^" + ($$$($$($nesting, 'Pathname'), 'SEPARATOR_PAT').$source()) + "?$")['$=~'](base))) {
          return nil
        } else {
          return [path['$[]'](0, path.$rindex(base)), base]
        };
      }, TMP_Pathname_chop_basename_5.$$arity = 1);
      
      Opal.def(self, '$root?', TMP_Pathname_root$q_6 = function() {
        var self = this;
  
        return self.path['$==']("/")
      }, TMP_Pathname_root$q_6.$$arity = 0);
      
      Opal.def(self, '$parent', TMP_Pathname_parent_7 = function $$parent() {
        var self = this, new_path = nil;
  
        
        new_path = self.path.$sub(/\/([^\/]+\/?$)/, "");
        if (new_path['$==']("")) {
          new_path = (function() {if ($truthy(self['$absolute?']())) {
            return "/"
          } else {
            return "."
          }; return nil; })()};
        return $$($nesting, 'Pathname').$new(new_path);
      }, TMP_Pathname_parent_7.$$arity = 0);
      
      Opal.def(self, '$sub', TMP_Pathname_sub_8 = function $$sub($a) {
        var $post_args, args, self = this;
  
        
        
        $post_args = Opal.slice.call(arguments, 0, arguments.length);
        
        args = $post_args;;
        return $$($nesting, 'Pathname').$new($send(self.path, 'sub', Opal.to_a(args)));
      }, TMP_Pathname_sub_8.$$arity = -1);
      
      Opal.def(self, '$cleanpath', TMP_Pathname_cleanpath_9 = function $$cleanpath() {
        var self = this;
  
        return Opal.normalize(self.path)
      }, TMP_Pathname_cleanpath_9.$$arity = 0);
      
      Opal.def(self, '$to_path', TMP_Pathname_to_path_10 = function $$to_path() {
        var self = this;
  
        return self.path
      }, TMP_Pathname_to_path_10.$$arity = 0);
      
      Opal.def(self, '$hash', TMP_Pathname_hash_11 = function $$hash() {
        var self = this;
  
        return self.path
      }, TMP_Pathname_hash_11.$$arity = 0);
      
      Opal.def(self, '$expand_path', TMP_Pathname_expand_path_12 = function $$expand_path() {
        var self = this;
  
        return $$($nesting, 'Pathname').$new($$($nesting, 'File').$expand_path(self.path))
      }, TMP_Pathname_expand_path_12.$$arity = 0);
      
      Opal.def(self, '$+', TMP_Pathname_$_13 = function(other) {
        var self = this;
  
        
        if ($truthy($$($nesting, 'Pathname')['$==='](other))) {
        } else {
          other = $$($nesting, 'Pathname').$new(other)
        };
        return $$($nesting, 'Pathname').$new(self.$plus(self.path, other.$to_s()));
      }, TMP_Pathname_$_13.$$arity = 1);
      
      Opal.def(self, '$plus', TMP_Pathname_plus_14 = function $$plus(path1, path2) {
        var $a, $b, $c, 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 ($truthy((r2 = self.$chop_basename(prefix2)))) {
          
          $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 ($truthy(prefix2['$!='](""))) {
          return path2};
        prefix1 = path1;
        while ($truthy(true)) {
          
          while ($truthy(($truthy($c = basename_list2['$empty?']()['$!']()) ? basename_list2.$first()['$=='](".") : $c))) {
            
            index_list2.$shift();
            basename_list2.$shift();
          };
          if ($truthy((r1 = self.$chop_basename(prefix1)))) {
          } 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 ($truthy(($truthy($b = ($truthy($c = basename1['$==']("..")) ? $c : basename_list2['$empty?']())) ? $b : basename_list2.$first()['$!=']("..")))) {
            
            prefix1 = $rb_plus(prefix1, basename1);
            break;;};
          index_list2.$shift();
          basename_list2.$shift();
        };
        r1 = self.$chop_basename(prefix1);
        if ($truthy(($truthy($a = r1['$!']()) ? new RegExp($$($nesting, 'SEPARATOR_PAT'))['$=~']($$($nesting, 'File').$basename(prefix1)) : $a))) {
          while ($truthy(($truthy($b = basename_list2['$empty?']()['$!']()) ? basename_list2.$first()['$==']("..") : $b))) {
            
            index_list2.$shift();
            basename_list2.$shift();
          }};
        if ($truthy(basename_list2['$empty?']()['$!']())) {
          
          suffix2 = path2['$[]'](Opal.Range.$new(index_list2.$first(), -1, false));
          if ($truthy(r1)) {
            return $$($nesting, 'File').$join(prefix1, suffix2)
          } else {
            return $rb_plus(prefix1, suffix2)
          };
        } else if ($truthy(r1)) {
          return prefix1
        } else {
          return $$($nesting, 'File').$dirname(prefix1)
        };
      }, TMP_Pathname_plus_14.$$arity = 2);
      
      Opal.def(self, '$join', TMP_Pathname_join_15 = function $$join($a) {try {
  
        var $post_args, args, TMP_16, self = this, result = nil;
  
        
        
        $post_args = Opal.slice.call(arguments, 0, arguments.length);
        
        args = $post_args;;
        if ($truthy(args['$empty?']())) {
          return self};
        result = args.$pop();
        if ($truthy($$($nesting, 'Pathname')['$==='](result))) {
        } else {
          result = $$($nesting, 'Pathname').$new(result)
        };
        if ($truthy(result['$absolute?']())) {
          return result};
        $send(args, 'reverse_each', [], (TMP_16 = function(arg){var self = TMP_16.$$s || this;
  
        
          
          if (arg == null) {
            arg = nil;
          };
          if ($truthy($$($nesting, 'Pathname')['$==='](arg))) {
          } else {
            arg = $$($nesting, 'Pathname').$new(arg)
          };
          result = $rb_plus(arg, result);
          if ($truthy(result['$absolute?']())) {
            Opal.ret(result)
          } else {
            return nil
          };}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16));
        return $rb_plus(self, result);
        } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }
      }, TMP_Pathname_join_15.$$arity = -1);
      
      Opal.def(self, '$split', TMP_Pathname_split_17 = function $$split() {
        var self = this;
  
        return [self.$dirname(), self.$basename()]
      }, TMP_Pathname_split_17.$$arity = 0);
      
      Opal.def(self, '$dirname', TMP_Pathname_dirname_18 = function $$dirname() {
        var self = this;
  
        return $$($nesting, 'Pathname').$new($$($nesting, 'File').$dirname(self.path))
      }, TMP_Pathname_dirname_18.$$arity = 0);
      
      Opal.def(self, '$basename', TMP_Pathname_basename_19 = function $$basename() {
        var self = this;
  
        return $$($nesting, 'Pathname').$new($$($nesting, 'File').$basename(self.path))
      }, TMP_Pathname_basename_19.$$arity = 0);
      
      Opal.def(self, '$directory?', TMP_Pathname_directory$q_20 = function() {
        var self = this;
  
        return $$($nesting, 'File')['$directory?'](self.path)
      }, TMP_Pathname_directory$q_20.$$arity = 0);
      
      Opal.def(self, '$extname', TMP_Pathname_extname_21 = function $$extname() {
        var self = this;
  
        return $$($nesting, 'File').$extname(self.path)
      }, TMP_Pathname_extname_21.$$arity = 0);
      
      Opal.def(self, '$<=>', TMP_Pathname_$lt$eq$gt_22 = function(other) {
        var self = this;
  
        return self.$path()['$<=>'](other.$path())
      }, TMP_Pathname_$lt$eq$gt_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.const_set($nesting[0], 'SAME_PATHS', (function() {if ($truthy($$$($$($nesting, 'File'), 'FNM_SYSCASE')['$nonzero?']())) {
        return $send(self, 'proc', [], (TMP_Pathname_23 = function(a, b){var self = TMP_Pathname_23.$$s || this;
  
        
          
          if (a == null) {
            a = nil;
          };
          
          if (b == null) {
            b = nil;
          };
          return a.$casecmp(b)['$=='](0);}, TMP_Pathname_23.$$s = self, TMP_Pathname_23.$$arity = 2, TMP_Pathname_23))
      } else {
        return $send(self, 'proc', [], (TMP_Pathname_24 = function(a, b){var self = TMP_Pathname_24.$$s || this;
  
        
          
          if (a == null) {
            a = nil;
          };
          
          if (b == null) {
            b = nil;
          };
          return a['$=='](b);}, TMP_Pathname_24.$$s = self, TMP_Pathname_24.$$arity = 2, TMP_Pathname_24))
      }; return nil; })());
      
      Opal.def(self, '$relative_path_from', TMP_Pathname_relative_path_from_25 = function $$relative_path_from(base_directory) {
        var $a, $b, $c, 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 ($truthy((r = self.$chop_basename(dest_prefix)))) {
          
          $c = r, $b = Opal.to_ary($c), (dest_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c;
          if ($truthy(basename['$!=']("."))) {
            dest_names.$unshift(basename)};
        };
        base_prefix = base_directory;
        base_names = [];
        while ($truthy((r = self.$chop_basename(base_prefix)))) {
          
          $c = r, $b = Opal.to_ary($c), (base_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c;
          if ($truthy(basename['$!=']("."))) {
            base_names.$unshift(basename)};
        };
        if ($truthy($$($nesting, 'SAME_PATHS')['$[]'](dest_prefix, base_prefix))) {
        } else {
          self.$raise($$($nesting, 'ArgumentError'), "" + "different prefix: " + (dest_prefix.$inspect()) + " and " + (base_directory.$inspect()))
        };
        while ($truthy(($truthy($b = ($truthy($c = dest_names['$empty?']()['$!']()) ? base_names['$empty?']()['$!']() : $c)) ? $$($nesting, 'SAME_PATHS')['$[]'](dest_names.$first(), base_names.$first()) : $b))) {
          
          dest_names.$shift();
          base_names.$shift();
        };
        if ($truthy(base_names['$include?'](".."))) {
          self.$raise($$($nesting, 'ArgumentError'), "" + "base_directory has ..: " + (base_directory.$inspect()))};
        base_names.$fill("..");
        relpath_names = $rb_plus(base_names, dest_names);
        if ($truthy(relpath_names['$empty?']())) {
          return $$($nesting, 'Pathname').$new(".")
        } else {
          return $$($nesting, 'Pathname').$new($send($$($nesting, 'File'), 'join', Opal.to_a(relpath_names)))
        };
      }, TMP_Pathname_relative_path_from_25.$$arity = 1);
      return (Opal.def(self, '$entries', TMP_Pathname_entries_26 = function $$entries() {
        var TMP_27, self = this;
  
        return $send($$($nesting, 'Dir').$entries(self.path), 'map', [], (TMP_27 = function(f){var self = TMP_27.$$s || this;
  
        
          
          if (f == null) {
            f = nil;
          };
          return self.$class().$new(f);}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27))
      }, TMP_Pathname_entries_26.$$arity = 0), nil) && 'entries';
    })($nesting[0], null, $nesting);
    return (function($base, $parent_nesting) {
      function $Kernel() {};
      var self = $Kernel = $module($base, 'Kernel', $Kernel);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_Kernel_Pathname_28;
  
      
      Opal.def(self, '$Pathname', TMP_Kernel_Pathname_28 = function $$Pathname(path) {
        var self = this;
  
        return $$($nesting, 'Pathname').$new(path)
      }, TMP_Kernel_Pathname_28.$$arity = 1)
    })($nesting[0], $nesting);
  };
  
  /* Generated by Opal 0.11.99.dev */
  Opal.modules["nodejs/pathname"] = function(Opal) {
    var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass;
  
    Opal.add_stubs(['$require', '$include', '$to_str', '$!', '$absolute?']);
    
    self.$require("pathname");
    return (function($base, $super, $parent_nesting) {
      function $Pathname(){};
      var self = $Pathname = $klass($base, $super, 'Pathname', $Pathname);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting), TMP_Pathname_absolute$q_1, TMP_Pathname_relative$q_2;
      if (self.__path__ == null) self.__path__ = nil;
  
      def.path = nil;
      
      self.$include($$($nesting, 'Comparable'));
      self.__path__ = require('path');
      var __path__ = self.__path__;
      
      Opal.def(self, '$absolute?', TMP_Pathname_absolute$q_1 = function() {
        var self = this;
  
        return __path__.isAbsolute(self.path.$to_str())
      }, TMP_Pathname_absolute$q_1.$$arity = 0);
      return (Opal.def(self, '$relative?', TMP_Pathname_relative$q_2 = function() {
        var self = this;
  
        return self['$absolute?']()['$!']()
      }, TMP_Pathname_relative$q_2.$$arity = 0), nil) && 'relative?';
    })($nesting[0], null, $nesting);
  };
  
  /* Generated by Opal 0.11.99.dev */
  Opal.modules["nodejs"] = function(Opal) {
    var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module;
  
    Opal.add_stubs(['$require']);
    
    (function($base, $parent_nesting) {
      function $NodeJS() {};
      var self = $NodeJS = $module($base, 'NodeJS', $NodeJS);
  
      var def = self.prototype, $nesting = [self].concat($parent_nesting);
  
      nil
    })($nesting[0], $nesting);
    self.$require("nodejs/kernel");
    self.$require("nodejs/file");
    self.$require("nodejs/dir");
    self.$require("nodejs/io");
    self.$require("nodejs/open-uri");
    return self.$require("nodejs/pathname");
  };
  