From: Kurt Stephens Date: 2008-02-01T16:11:11+09:00 Subject: Re: Gem install error on head This is a multi-part message in MIME format. --------------000501040508050407050506 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit The problem maybe related to open-uri.rb:385: def meta_add_field(name, value) # :nodoc: @meta[name.downcase] = value end @meta is not initialized, @meta should be initialized by callers to: def Meta.init(obj, src=nil) # :nodoc: obj.extend Meta obj.instance_eval { @base_uri = nil @meta = {} } if src obj.status = src.status obj.base_uri = src.base_uri src.meta.each {|name, value| obj.meta_add_field(name, value) } end end if anyone else wants to give it a try, I've attached a shell script that can recreate this error by building ruby directly from SVN trunk. Read the comments at the top, before running; your mileage may vary. Kurt Kurt Stephens wrote: > Luis Lavena wrote: >> On Jan 31, 2008 11:45 PM, Kurt Stephens wrote: >> >>> This has been happening for me for a *long* time. I can also recreate >>> this error; I thought it was just my environment. What's the best way >>> to get gem to produce a useful stack trace? >>> >>> >> >> gem install --debug gem_name >> >> > > Here's the new result with gem install --debug rake: > (Note: /home/stephens/local/ruby/trunk is the ruby config --prefix of a > clean install on Linux) > > + gem install --debug -y rake > Exception `NameError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/command_manager.rb:132 > - uninitialized constant Gem::Commands::InstallCommand > INFO: `gem install -y` is now default and will be removed > INFO: use --ignore-dependencies to install only the gems you list > Exception `Gem::LoadError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems.rb:385 - Could > not find RubyGem sources (> 0.0.1) > Exception `LoadError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/tmpdir.rb:14 - no such > file to load -- Win32API > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/open-uri.rb:411 - > undefined method `[]=' for nil:NilClass > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/delegate.rb:146 - > undefined method `[]=' for nil:NilClass > Exception `Gem::OperationNotSupportedError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_index.rb:366 > - No quick index found: undefined method `[]=' for nil:NilClass > Bulk updating Gem source index for: http://gems.rubyforge.org > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/open-uri.rb:411 - > undefined method `[]=' for nil:NilClass > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/delegate.rb:146 - > undefined method `[]=' for nil:NilClass > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/open-uri.rb:411 - > undefined method `[]=' for nil:NilClass > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/delegate.rb:146 - > undefined method `[]=' for nil:NilClass > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/open-uri.rb:411 - > undefined method `[]=' for nil:NilClass > Exception `NoMethodError' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/delegate.rb:146 - > undefined method `[]=' for nil:NilClass > Exception `Gem::RemoteSourceException' at > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_index.rb:354 > - Error fetching remote gem cache: undefined method `[]=' for nil:NilClass > ERROR: While executing gem ... (Gem::RemoteSourceException) > Error fetching remote gem cache: undefined method `[]=' for nil:NilClass > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_index.rb:354:in > `raise' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_index.rb:354:in > `fetch_bulk_index' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_index.rb:292:in > `update' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_info_cache_entry.rb:33:in > `refresh' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_info_cache.rb:135:in > `block in refresh' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_info_cache.rb:128:in > `each' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_info_cache.rb:128:in > `refresh' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_info_cache.rb:40:in > `cache' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/source_info_cache.rb:56:in > `search_with_source' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/dependency_installer.rb:110:in > `find_gems_with_sources' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/dependency_installer.rb:77:in > `initialize' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/commands/install_command.rb:69:in > `new' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/commands/install_command.rb:69:in > `block in execute' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/commands/install_command.rb:67:in > `each' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/commands/install_command.rb:67:in > `execute' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/command.rb:136:in > `invoke' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/command_manager.rb:104:in > `process_args' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/command_manager.rb:74:in > `run' > > /home/stephens/local/ruby/trunk/lib/ruby/1.9.0/rubygems/gem_runner.rb:39:in > `run' > /home/stephens/local/ruby/trunk/bin/gem:22:in `
' > INFO: `gem install -y` is now default and will be removed > INFO: use --ignore-dependencies to install only the gems you list > Bulk updating Gem source index for: http://gems.rubyforge.org > removing /tmp/open-uri20080201-15694-1ufzwvc-0...done > removing /tmp/open-uri20080201-15694-1n74qbf-0...done > removing /tmp/open-uri20080201-15694-1kb8qlc-0...done > removing /tmp/open-uri20080201-15694-iwkd4t-0...done > removing /tmp/open-uri20080201-15694-1j55r0r-0...done > > I'll do a bit more digging. > > http://kurtstephens.com > --------------000501040508050407050506 Content-Type: application/x-shellscript; name="build_ruby.sh" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="build_ruby.sh" IyEvYmluL2Jhc2gKCiMgU2NyaXB0IHRvIGJ1aWxkIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBy dWJ5IGludG8KIyB+L2xvY2FsL3J1YnkvVkVSU0lPTi4KIwojIFB1dCBydWJ5IHNvdXJjZSB0 YXJiYWxscyBpbiB+L2xvY2FsL2FyY2hpdmUvcnVieQojIFB1dCBydWJ5IHBhY2thZ2UgdGFy YmFsbHMgaW4gfi9sb2NhbC9hcmNoaXZlL3J1YnkgKGUuZy4gcnVieWdlbXMtKi50YXIuZ3op CiMKIwojIGUuZy46CiMKIyBCdWlsZHMgcnVieS0xLjguNCBmcm9tIHNvdXJjZXMsIGluc3Rh bGxzIHJ1YnlnZW1zIGFuZCBvdGhlciBwYWNrYWdlcy4KIwojICAgIC4vYnVpbGRfcnVieSBi dWlsZCBydWJ5IDEuOC40CiMKIyBQdWxscyBydWJ5IHRydW5rIGZyb20gc3ZuOgojCiMgICAg Li9idWlsZF9ydWJ5IHVucGFjayBydWJ5IHRydW5rIAojCiMgSW5zdGFsbHMgcnVieWdlbXMg ZnJvbSB0Z3o6CiMKIyAgICAuL2J1aWxkX3J1YnkgcGFja2FnZSBydWJ5IDEuOC40IGJ1aWxk IHJ1YnlnZW1zIDAuOS40CiMKIyBJbnN0YWxscyBhIGdlbToKIwojICAgIC4vYnVpbGRfcnVi eSBwYWNrYWdlIHJ1YnkgMS44LjQgYnVpbGQgZ2VtIHJjb3YKIwojIEluc3RhbGxzIHJ1Ynln ZW1zIGFuZCBvdGhlciBwYWNrYWdlcy4KIwojICAgIC4vYnVpbGRfcnVieSBwYWNrYWdlcyBy dWJ5IDEuOC40CiMKIyAtLSBodHRwOi8va3VydHN0ZXBoZW5zLmNvbSAyMDA3LzEwLzAxCiMK IyBDYXZlYXRzOgojCiMgKiBzZWUgcHJlcmVxdXNpdGUoKS4KIyAqIFRoZSAtLWVuYWJsZS1w dGhyZWFkIGlzIGR1YmlvdXMuCiMgKiBpdCdzIG1pc3NpbmcgbGRhcCBhbmQgcHJvYmFibHkg c29tZSBvdGhlciBydWJ5IC5zbyBsaWJyYXJpZXMvZ2VtcyB0aGF0IHdlIHVzZSBhdCBDTlUu CiMgKiBydWJ5X3BhY2thZ2VfZG9jcyBjYW4gdGFrZSAxNSBtaW51dGVzIHRvIGNvbXBsZXRl IGFuZCB1c2UgKmFsb3QqIG9mIG1lbW9yeS4KIyAqIHJ1YnkgdHJ1bmsgKDEuOSBha2EgWUFS VikgY2Fubm90IHlldCBwYXJzZSBydWJ5Z2VtcyAocnVieWdlbXMgaXMgdXNpbmcgc29tZSBv bGQgZGVwcmVjYXRlZCBzeW50YXggZm9yIEhhc2hlcykuCiMgKiBJdCBwcm9iYWJseSBuZWVk cyBzb21lIGNsZWFuLXVwLgojICogSXQgbWF5IG5vdCBnZW5lcmF0ZSBhIHJlbG9jYXRhYmxl IGJpbi9ydWJ5IChpLmUuIHlvdSBjYW5ub3QgZGVwbG95IHRoZSBiaW4vcnVieSBiaW5hcnkg dG8gL2V4cG9ydC93ZWIvY251YXBwL3BrZy9ydWJ5LzEuOC42L2Jpbi9ydWJ5LCBpdCB3aWxs IHByb2JhYmx5IHN0aWxsIHJlZmVyZW5jZSB0aGUgb3JpZ2luYWwgLi9jb25maWd1cmUgLS1w cmVmaXggcGF0aCkuCiMKCnJ1YnlfcHJlcmVxdXNpdGUoKSB7CiAgc3VkbyBhcHQtZ2V0IGlu c3RhbGwgYXV0b2NvbmYgYmlzb24gIyBsaWJwdGhyZWFkLWRldgogIHN1ZG8gYXB0LWdldCBp bnN0YWxsIGxpYm5jdXJzZXM1LWRldiBsaWJyZWFkbGluZS1kZXYgbGlicmVhZGxpbmUtZGJn CiAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGliei1kZXYKICBzdWRvIGFwdC1nZXQgaW5zdGFs bCBteXNxbC1jbGllbnQgbGlibXlzcWxjbGllbnQtZGV2IGxpYm15c3FsY2xpZW50MTVvZmYK ICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJwcS1kZXYKICBzdWRvIGFwdC1nZXQgaW5zdGFs bCBpbWFnZW1hZ2ljayBsaWJtYWdpY2s5LWRldiAjIGdyYXBoaWNzbWFnaWNrLWxpYm1hZ2lj ay1kZXYtY29tcGF0Cn0KZXhwb3J0IFBPU1RHUkVTX0lOQ0xVREU9L3Vzci9pbmNsdWRlL3Bv c3RncmVzcWwgIyBzZWUgcG9zdGdyZXMgZ2VtCgoKcnVieV91bnBhY2soKSB7CiAgKGNkICIk MS0kMiIgJiYgcm0gLXJmICopCiAgY2FzZSAiJDIiCiAgaW4KICAgdHJ1bmspCiAgICAgc3Zu IGNvIGh0dHA6Ly9zdm4ucnVieS1sYW5nLm9yZy9yZXBvcy9ydWJ5L3RydW5rICIkMS0kMiIK ICAgOzsKICAgKikKICAgICB0YXIgLXp4dmYgIiRMT0NBTF9BUkNISVZFL3J1YnkvJDEtJDIi Ki50YXIuZ3ogfHwgZXhpdCAxCiAgIDs7CiAgZXNhYwogIChjZCBydWJ5LSQyKSB8fCBleGl0 IDEKfQoKCnJ1YnlfdXBkYXRlKCkgewogIGNhc2UgIiQyIgogIGluCiAgICB0cnVuaykKICAg ICAgKAogICAgICAgIHNldCAtZQogICAgICAgIGNkICQxLSQyICYmIHN2biB1cGRhdGUgLgoJ cm0gLWYgLi9jb25maWd1cmUKICAgICAgKQogICAgOzsKICAgICopCiAgICAgIHJldHVybiAx CiAgICA7OwogIGVzYWMKfQoKCnJ1YnlfY29uZmlndXJlKCkgewogICgKICAgIHNldCAtZQoK ICAgIGNkICQxLSQyCiAKICAgIG1ha2UgZGlzdGNsZWFuIHx8IHRydWUKCiAgICBbIC1mIC4v Y29uZmlndXJlIF0gfHwgYXV0b2NvbmYKCiAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0kTE9D QUwvJDEvJDIgXAogICAgICAgIC0tZW5hYmxlLXB0aHJlYWQgXAogICAgICAgIC0tZW5hYmxl LXJlYWRsaW5lIFwKICAgICAgICAtLWVuYWJsZS16bGliCgogICAgKHRvdWNoIC1mIC4vbWlu aXJ1YnkgJiYgbWFrZSBjbGVhbikgfHwgdHJ1ZQogICkgfHwgZXhpdCAxCn0KCgpydWJ5X3Vu Y29uZmlndXJlKCkgewojIEZJWE1FCiAgZmFsc2UKfQoKCnJ1YnlfY29tcGlsZSgpIHsKICAo CiAgICBzZXQgLWUKICAgIGNkICQxLSQyIAogICAgdG91Y2ggLWYgLi9taW5pcnVieSAmJiBt YWtlIGNsZWFuCiAgICBtYWtlCiAgKSB8fCBleGl0IDEKfQoKCnJ1YnlfaW5zdGFsbCgpIHsK ICAoCiAgICBta2RpciAtcCAiJExPQ0FMLyQxLyQiMgogICAgY2QgIiRMT0NBTC8kMS8kMi8i ICYmIHJtIC1yZiAqCiAgKQogICgKICAgIHNldCAtZSAKICAgIGNkICIkMS0kMiIqCiAgICBt YWtlIGluc3RhbGwKICApIHx8IGV4aXQgMQp9CgoKd2l0aF9ydWJ5KCkgewogICgKICBydWJ5 X25hbWU9IiR7MTotcnVieX0iOyBzaGlmdAogIHJ1YnlfdmVyc2lvbj0iJHsxOi0kUlVCWV9W RVJTSU9OfSI7IHNoaWZ0CgogIFJVQllfTkFNRT0iJHtydWJ5X25hbWV9IgogIFJVQllfVkVS U0lPTj0iJHtydWJ5X3ZlcnNpb259IgoKICBydWJ5X2Jhc2U9IiRMT0NBTC8kcnVieV9uYW1l LyRydWJ5X3ZlcnNpb24iCiAgcnVieV9iaW49IiRydWJ5X2Jhc2UvYmluIgogIHJ1YnlfbGli PSIkcnVieV9iYXNlL2xpYiIKICBydWJ5X2RvY19kaXI9IiRydWJ5X2Jhc2Uvc2hhcmUvZG9j IiAKICBydWJ5PSIkcnVieV9iaW4vcnVieSIKICAKICBQQVRIPSIkcnVieV9iaW46JFBBVEgi CgogIHVuc2V0IFJVQllMSUIKICB1bnNldCBSVUJZTElCX1BSRUZJWAogIHVuc2V0IFJVQllQ QVRICiAgdW5zZXQgUlVCWVNIRUxMCiAgdW5zZXQgUlVCWU9QVAogICMgZXhwb3J0IFJVQllP UFQ9Jy1kIC13JwoKICB1bnNldCBHRU1fUEFUSAogIHVuc2V0IEdFTV9IT01FCgogIGdlbV9o b21lPSJgJHJ1YnkgLXIgcnVieWdlbXMgLWUgJ3B1dHMgR2VtLnBhdGhbMF0nIDI+L2Rldi9u dWxsYCIKICAKICAiJEAiCiAgKQp9CgoKcnVieV9idWlsZCgpIHsgIyBydWJ5IDx2ZXJzaW9u PiAuLi4KICBSVUJZX1ZFUlNJT049IiQyIgoKICBydWJ5X3VwZGF0ZSAiJEAiIHx8IHJ1Ynlf dW5wYWNrICIkQCIKICBydWJ5X2NvbmZpZ3VyZSAiJEAiCiAgcnVieV9jb21waWxlICIkQCIK ICBydWJ5X2luc3RhbGwgIiRAIgoKICB3aXRoX3J1YnkgIiQxIiAiJDIiIHJ1YnkgLWUgJ2V4 aXQoMCknIHx8IGV4aXQgMQoKICBydWJ5X3BhY2thZ2VzICIkQCIKfQoKCiMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKCgpydWJ5X3BhY2thZ2UoKSB7ICMgcnVieSA8cnVieS12ZXJzaW9uPiA8cGtnLWNt ZD4gPHBrZy1uYW1lPiAuLi4gCiAgc2hpZnQ7IHNoaWZ0CiAgY21kPSIkMSI7IHNoaWZ0CiAg d2l0aF9ydWJ5ICIkUlVCWV9OQU1FIiAiJFJVQllfVkVSU0lPTiIgInJ1YnlfcGFja2FnZV8k Y21kIiAiJEAiCn0KCgpydWJ5X3BhY2thZ2VfYnVpbGQoKSB7ICMgPHBrZy1uYW1lPiA8cGtn LXZlcnNpb24+IC4uLgogIHJ1YnlfcGFja2FnZV91bnBhY2sgIiRAIgogICNydWJ5X3BhY2th Z2VfY29uZmlndXJlICIkQCIKICAjcnVieV9wYWNrYWdlX2NvbXBpbGUgIiRAIgogIHJ1Ynlf cGFja2FnZV9pbnN0YWxsICIkQCIKfQoKCnJ1YnlfcGFja2FnZV91bnBhY2soKSB7ICMgPHBr Zy1uYW1lPiA8cGtnLXZlcnNpb24+IC4uLgogIGNhc2UgIiQxIgogIGluCiAgICBydWJ5Z2Vt cykKICAgICAgKAoJJHJ1YnkgLXIgcnVieWdlbXMgLWUgJ2V4aXQgMCcgJiYgcmV0dXJuIDAK CXRhciAtenh2ZiAiJExPQ0FMX0FSQ0hJVkUvcnVieS8kMS0kMiIqLnRnegogICAgICApIHx8 IGV4aXQgMQogICAgOzsKCiAgICBnZW0pCiAgICAgIAogICAgOzsKCiAgICAqKQogICAgICAj IE5PVEhJTkcKICAgIDs7CiAgZXNhYwp9CgoKcnVieV9wYWNrYWdlX2dlbV9zaGFyZSgpIHsK ICAjc2V0IC14CiAgYXJjaGl2ZV9nZW1zPSIkTE9DQUxfQVJDSElWRS9ydWJ5L2dlbXMiCgog IG1rZGlyIC1wICIkYXJjaGl2ZV9nZW1zIgoKICBsb2NhbCBleGVjPWVjaG8KICBleGVjPQoK ICBbIC1uICIkZ2VtX2hvbWUiIC1hIC1kICIkZ2VtX2hvbWUiIF0gfHwgcmV0dXJuIDEKICAK ICBmb3IgeCBpbiBjYWNoZSAjIHNvdXJjZV9jYWNoZQogIGRvCiAgICBsb2NhbCBnZW1zX3g9 IiRnZW1faG9tZS8keCIKICAgIGxvY2FsIGFyY2hpdmVfeD0iJGFyY2hpdmVfZ2Vtcy8keCIK CiAgICBpZiBbICEgLUwgIiRnZW1zX3giIF0KICAgIHRoZW4KICAgICAgaWYgWyAtZCAiJGdl bXNfeCIgXQogICAgICB0aGVuCiAgICAgICAgbWtkaXIgLXAgIiRhcmNoaXZlX3giCiAgICAg ICAgJGV4ZWMgbXYgIiRnZW1zX3giLyogIiRhcmNoaXZlX3giCgkkZXhlYyBybWRpciAiJGdl bXNfeCIKICAgICAgZWxzZQogICAgICAgIGlmIFsgLWYgIiRhcmNoaXZlX3giIF0KCXRoZW4g CgkgICRleGVjIG12ICIkZ2Vtc194IiAiJGdlbXNfeC5vbGQiCiAgICAgICAgZWxzZQoJICAk ZXhlYyBtdiAiJGdlbXNfeCIgIiRhcmNoaXZlX3giCiAgICAgICAgZmkKICAgICAgZmkKICAg ICAgJGV4ZWMgbG4gLXMgIiRhcmNoaXZlX3giICIkZ2Vtc194IgogICAgZmkKICBkb25lCiAg I3NldCAreAp9CgpydWJ5X3BhY2thZ2VfaW5zdGFsbCgpIHsgIyA8cGtnLW5hbWU+IDxwa2ct dmVyc2lvbj4gLi4uCiAgIyBzZXQgLXgKICBjYXNlICIkMSIKICBpbgogICAgcnVieWdlbXMp CiAgICAgICgKICAgICAgICBpZiBbIC16ICIkRk9SQ0UiIF0KICAgICAgICB0aGVuCgkgICRy dWJ5IC1yIHJ1YnlnZW1zIC1lICdleGl0IDAnICYmIHJldHVybiAwCiAgICAgICAgZmkKCWNk ICIkMS0kMiIqIHx8IGV4aXQgMQoJc2V0IC14CgljYXNlICIkMiIKICAgICAgICBpbgoJICAx LiopCgkgICBydWJ5X2xpYj0iJHJ1YnlfbGliL3J1YnkiCgkgIDs7CiAgICAgICAgZXNhYwoJ JHJ1Ynkgc2V0dXAucmIgYWxsIFwKICAgICAgICAgIC0tcHJlZml4PSIkcnVieV9iYXNlIiBc CiAgICAgICAgICAtLWxpYmRpcj0iJHJ1YnlfbGliIiBcCiAgICAgICAgICAtLXNpdGVydWJ5 PSIkcnVieV9saWIvc2l0ZV9ydWJ5IiBcCiAgICAgICAgICAtLXJ1Ynlwcm9nPSIkcnVieSIg XAogICAgICAgICAgLS1ydWJ5cGF0aD0nL3Vzci9iaW4vZW52IHJ1YnknCiAgICAgICkgfHwg ZXhpdCAxCiAgICA7OwoKICAgIGdlbSkKICAgICAgc2hpZnQKICAgICAgZWNobyAiKiBnZW0g aW5zdGFsbCAkKiIKCiAgICAgIGxvY2FsIG5hbWU9IiQxIgogICAgICBsb2NhbCB2ZXJzaW9u PSIkMiIKCiAgICAgIGxvY2FsIGdlbV92ZXJzaW9uPSIke3ZlcnNpb246KyAsICckdmVyc2lv bid9IgoKICAgICAgI3NldCAteAogICAgICAkcnVieSAtcnVieWdlbXMgLWUgImdlbSAnJG5h bWUnJGdlbV92ZXJzaW9uOyBleGl0IDAiIDI+L2Rldi9udWxsIDE+JjIgJiYgcmV0dXJuIDAg CiAgICAgICMgc2V0ICt4IDI+JjEgPi9kZXYvbnVsbCAKCiAgICAgIHJ1YnlfcGFja2FnZV9n ZW1fc2hhcmUKCiAgICAgIGdlbV92ZXJzaW9uPSIke3ZlcnNpb246KyAtLXZlcnNpb24gJHZl cnNpb259IgogICAgICBzZXQgLXgKICAgICAgZ2VtIGluc3RhbGwgLS1kZWJ1ZyAtLXZlcmJv c2UgLXkgIiRuYW1lIiAkZ2VtX3ZlcnNpb24gfHwgWyAtbiAiJENPTlRJTlVFIiBdIHx8IHJl dHVybiAxCiAgICAgIHNldCAreCAyPiYxID4vZGV2L251bGwgCgojICAgICAgeXVja3lfYmlu YXJ5PQojICAgICAgbmljZV9zb3VyY2U9CiMgICAgICBnZW0gaW5zdGFsbCAteSAiJEAiIHwK IyAgICAgICgKIyAgICAgIHdoaWxlIHJlYWQgeCAKIyAgICAgIGRvCiMJZWNobyAiJHgiCiMg ICAgICAgIGNhc2UgIiR4IgojICAgICAgICBpbgojCSAgKiJTZWxlY3Qgd2hpY2ggZ2VtIHRv IGluc3RhbGwgZm9yIHlvdXIgcGxhdGZvcm0iKikKIyAgICAgICAgICAgIHl1Y2t5X2JpbmFy eT0xCiMJICAgIGVjaG8gIioqKiBQcm9tcHRpbmcgZm9yIGJpbmFyeSIKIyAgICAgICAgICA7 OwojICAgICAgICAgICopCiMgICAgICAgICAgICBpZiBbIC1uICIkeXVja3lfYmluYXJ5IiBd CiMJICAgIHRoZW4KIwkgICAgICBjYXNlICIkeCIKIwkgICAgICBpbgojICAgICAgICAgICAg ICAgICpbMS05XS4qIiAocnVieSkiKikKIwkJICByZWFkIG5pY2Vfc291cmNlIHJlc3QgPCA8 KGVjaG8gIiR4IiB8IHRyICcuJyAnICcpCiMJCSAgZWNobyAiKioqIFBpY2tpbmcgJG5pY2Vf c291cmNlID0+ICR4IgojCQkgIGJyZWFrCiMgICAgICAgICAgICAgICAgOzsKIwkgICAgICBl c2FjCiMJICAgIGZpCiMgICAgICAgICAgOzsKIyAgICAgICAgZXNhYwojICAgICAgZG9uZQoj CiMgICAgICBpZiBbIC1uICIkeXVja3lfYmluYXJ5IiBdCiMgICAgICB0aGVuCiMJc2V0IC14 IAojICAgICAgICBlY2hvICIkbmljZV9zb3VyY2UiIHwgZ2VtIGluc3RhbGwgLXkgIiRAIgoj CXNldCAreAojICAgICAgZmkKIyAgICAgICkKICAgIDs7CgogICAgKikgCiAgICAgICMgTk9U SElORwogICAgOzsKICBlc2FjCn0KCgpydWJ5X3BhY2thZ2VfdW5pbnN0YWxsKCkgeyAjIDxw a2ctbmFtZT4gPHBrZy12ZXJzaW9uPiAuLi4KICBjYXNlICIkMSIKICBpbgogICAgZ2VtKQog ICAgICBzaGlmdAogICAgICBzZXQgLXgKICAgICAgZ2VtIHVuaW5zdGFsbCAiJEAiCiAgICAg IHNldCAreAogICAgOzsKCiAgICAqKSAKICAgICAgIyBOT1RISU5HCiAgICA7OwogIGVzYWMK fQoKCiMgQnVpbGRzIGFsbCBkb2N1bWVudGF0aW9uIGZyb20gLnJicwpydWJ5X3BhY2thZ2Vf ZG9jcygpIHsKICBybSAtcmYgIiRydWJ5X2RvY19kaXIiCgogIGxvY2FsIGRpcnM9ImBscyAt ZCAkcnVieV9saWIvcnVieS9bMS05XS5bMC05XSovICRydWJ5X2xpYi9ydWJ5L3NpdGVfcnVi eS8gJGdlbV9ob21lL2dlbXMvKi9saWJgIgogIGxvY2FsIGluY2w9ImBlY2hvICRkaXJzIHwg dHIgJyAnICcsJ2AiCgogIHNldCAteAoKICByZG9jIFwKICAgIC0tYWxsIFwKICAgIC0tc2hv dy1oYXNoIFwKICAgIC0taW5saW5lLXNvdXJjZSBcCiAgICAtLWxpbmUtbnVtYmVycyBcCiAg ICAtLXRpdGxlICIkcnVieSIgXAogICAgLW8gIiRydWJ5X2RvY19kaXIiIFwKICAgIC0taW5j bHVkZSAiJGluY2wiIFwKICAgIC0tZXhjbHVkZSAiL3RlbXBsYXRlcy8iIFwKICAgICAgJGRp cnMKCiAgc2V0ICt4Cn0KCgpydWJ5X3BhY2thZ2VzKCkgeyAjIHJ1YnkgPHJ1YnktdmVyc2lv bj4gPHBrZy1jbWQ+CiAgc2hpZnQ7IHNoaWZ0OwogIGxvY2FsIHJfcF9jbWQ9IiR7MTotYnVp bGR9IgoKICBzZXQgLWUKCiAgY2FzZSAiJFJVQllfVkVSU0lPTiIKICBpbgogICAgMS44LjYt cDExMSkKICAgICAgIyAwLjkuNS0xLjAuMSBpcyBidXN0ZWQ6IHNlZSBodHRwOi8vcnVieWZv cmdlLm9yZy90cmFja2VyL2luZGV4LnBocD9mdW5jPWRldGFpbCZhaWQ9MTY3MjAmZ3JvdXBf aWQ9MTI2JmF0aWQ9NTc1CiAgICAgIHJfcCBydWJ5Z2VtcyAwLjkuNAogICAgOzsKICAgICop CiAgICAgIHJfcCBydWJ5Z2VtcyAwLjkuNAogICAgOzsKICBlc2FjCgogIHJfcCBnZW0gcmFr ZQogIHJfcCBnZW0gcmNvdgogIHJfcCBnZW0gcnNwZWMKICByX3AgZ2VtIHJ1YnktZGVidWcK ICByX3AgZ2VtIHJ1YnktcHJvZgogIHJfcCBnZW0gcG9zdGdyZXMKICByX3AgZ2VtIG15c3Fs CiAgcl9wIGdlbSByYWlscyAxLjIuNiAjIEknbSBub3QgZnVsbHkgcmVhZHkgZm9yIDIuMCB5 ZXQuCiAgcl9wIGdlbSByYWlscwogIHJfcCBnZW0gUmVkQ2xvdGgKICByX3AgZ2VtIGZhc3R0 aHJlYWQKICByX3AgZ2VtIHJ1Ynlmb3JnZQogIHJfcCBnZW0gaG9lCiAgcl9wIGdlbSBocHJp Y290CiAgcl9wIGdlbSBaZW5UZXN0CiAgcl9wIGdlbSBtZW1jYWNoZS1jbGllbnQKICByX3Ag Z2VtIHJtYWdpY2sKICByX3AgZ2VtIHRyYW5zYWN0aW9uLXNpbXBsZQogIHJfcCBnZW0gbmV0 LXNzaAogIHJfcCBnZW0gbmV0LXNmdHAKICByX3AgZ2VtIHR6aW5mbwogIHJfcCBnZW0gZ2Vt X3BsdWdpbgogIHJfcCBnZW0gbmVlZGxlCiAgcl9wIGdlbSBpby1yZWFjdG9yCiAgcl9wIGdl bSBsb2c0cgogIHJfcCBnZW0gcnVieS11bml0cwogIHJfcCBnZW0gY3VycmVuY3kKICByX3Ag Z2VtIGNocm9uaWMKICByX3AgZ2VtIGNhcGlzdHJhbm8KICByX3AgZ2VtIHBheW1lbnQKCiAg c2V0ICtlCn0KCgpyX3AoKSB7ICMgPHBrZy1jbWQ+IDxwa2ctbmFtZT4gPHBrZy12ZXJzaW9u PiAuLi4KICBydWJ5X3BhY2thZ2UgIiRSVUJZX05BTUUiICIkUlVCWV9WRVJTSU9OIiAiJHJf cF9jbWQiICIkQCIKfQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgpMT0NBTD0iJHtMT0NBTDotJEhP TUUvbG9jYWx9IgpMT0NBTF9BUkNISVZFPSIke0xPQ0FMX0FSQ0hJVkU6LSRMT0NBTC9hcmNo aXZlfSIKCnJ1bigpIHsKICBsb2NhbCBjbWQgbmFtZSB2ZXIgYyBuIHYKCiAgY21kPSIkMSI7 IHNoaWZ0CiAgY21kPSIke2NtZDotcnVieV9idWlsZH0iCgogIG5hbWU9IiQxIjsgc2hpZnQK ICBuYW1lPSIke25hbWU6LXJ1Ynl9IgoKICB2ZXI9IiQxIjsgc2hpZnQKICB2ZXI9IiR7dmVy Oi0kUlVCWV9WRVJTSU9OfSIKICB2ZXI9IiR7dmVyOi0xLjguNCAxLjguNS1wMTIgMS44LjYt cDExMSB0cnVua30iCgogICMgc2V0IC14CgogIGZvciBjIGluICRjbWQKICBkbwogICAgZm9y IG4gaW4gJG5hbWUKICAgIGRvCiAgICAgIFJVQllfTkFNRT0iJG4iCiAgICAgIGZvciB2IGlu ICR2ZXIKICAgICAgZG8KCWNhc2UgIiR2IgogICAgICAgIGluCgkgIExBVEVTVHxsYXRlc3Qp CgkgICAgdj0iJChjZCAkTE9DQUxfQVJDSElWRS9ydWJ5ICYmIGxzIHJ1YnktWzAtOV0qLiou dGFyLmd6IHwgc2VkIC1lICdzL3J1YnktLy8nIC1lICdzLy50YXIuZ3okLy8nIHwgc29ydCB8 IHRhaWwgLTEpIgoJICA7OwoJZXNhYwoJUlVCWV9WRVJTSU9OPSIkdiIKICAgICAgICAiJHtu fV8ke2N9IiAkbiAkdiAiJEAiIHx8IGV4aXQgJD8KICAgICAgZG9uZQogICAgZG9uZQogIGRv bmUKfQoKcnVuICIkQCIKCgo= --------------000501040508050407050506--