# License of this script, not of the application it contains: # # Copyright Erik Veenstra # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License, # version 2, as published by the Free Software Foundation. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA. # Parts of this code are based on code from Thomas Hurst # . # Tar2RubyScript constants unless defined?(BLOCKSIZE) ShowContent = ARGV.include?("--tar2rubyscript-list") JustExtract = ARGV.include?("--tar2rubyscript-justextract") ToTar = ARGV.include?("--tar2rubyscript-totar") Preserve = ARGV.include?("--tar2rubyscript-preserve") end ARGV.concat [] ARGV.delete_if{|arg| arg =~ /^--tar2rubyscript-/} ARGV << "--tar2rubyscript-preserve" if Preserve # Tar constants unless defined?(BLOCKSIZE) BLOCKSIZE = 512 NAMELEN = 100 MODELEN = 8 UIDLEN = 8 GIDLEN = 8 CHKSUMLEN = 8 SIZELEN = 12 MAGICLEN = 8 MODTIMELEN = 12 UNAMELEN = 32 GNAMELEN = 32 DEVLEN = 8 TMAGIC = "ustar" GNU_TMAGIC = "ustar " SOLARIS_TMAGIC = "ustar\00000" MAGICS = [TMAGIC, GNU_TMAGIC, SOLARIS_TMAGIC] LF_OLDFILE = '\0' LF_FILE = '0' LF_LINK = '1' LF_SYMLINK = '2' LF_CHAR = '3' LF_BLOCK = '4' LF_DIR = '5' LF_FIFO = '6' LF_CONTIG = '7' GNUTYPE_DUMPDIR = 'D' GNUTYPE_LONGLINK = 'K' # Identifies the *next* file on the tape as having a long linkname. GNUTYPE_LONGNAME = 'L' # Identifies the *next* file on the tape as having a long name. GNUTYPE_MULTIVOL = 'M' # This is the continuation of a file that began on another volume. GNUTYPE_NAMES = 'N' # For storing filenames that do not fit into the main header. GNUTYPE_SPARSE = 'S' # This is for sparse files. GNUTYPE_VOLHDR = 'V' # This file is a tape/volume header. Ignore it on extraction. end class Dir def self.rm_rf(entry) File.chmod(0755, entry) if File.ftype(entry) == "directory" pdir = Dir.pwd Dir.chdir(entry) Dir.new(".").each do |e| Dir.rm_rf(e) if not [".", ".."].include?(e) end Dir.chdir(pdir) begin Dir.delete(entry) rescue => e $stderr.puts e.message end else begin File.delete(entry) rescue => e $stderr.puts e.message end end end end class Reader def initialize(filehandle) @fp = filehandle end def extract each do |entry| entry.extract end end def list each do |entry| entry.list end end def each @fp.rewind while entry = next_entry yield(entry) end end def next_entry buf = @fp.read(BLOCKSIZE) if buf.length < BLOCKSIZE or buf == "\000" * BLOCKSIZE entry = nil else entry = Entry.new(buf, @fp) end entry end end class Entry attr_reader(:header, :data) def initialize(header, fp) @header = Header.new(header) readdata = lambda do |header| padding = (BLOCKSIZE - (header.size % BLOCKSIZE)) % BLOCKSIZE @data = fp.read(header.size) if header.size > 0 dummy = fp.read(padding) if padding > 0 end readdata.call(@header) if @header.longname? gnuname = @data[0..-2] header = fp.read(BLOCKSIZE) @header = Header.new(header) @header.name = gnuname readdata.call(@header) end end def extract if not @header.name.empty? if @header.dir? begin Dir.mkdir(@header.name, @header.mode) rescue SystemCallError => e $stderr.puts "Couldn't create dir #{@header.name}: " + e.message end elsif @header.file? begin File.open(@header.name, "wb") do |fp| fp.write(@data) fp.chmod(@header.mode) end rescue => e $stderr.puts "Couldn't create file #{@header.name}: " + e.message end else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end #File.chown(@header.uid, @header.gid, @header.name) #File.utime(Time.now, @header.mtime, @header.name) end end def list if not @header.name.empty? if @header.dir? $stderr.puts "d %s" % [@header.name] elsif @header.file? $stderr.puts "f %s (%s)" % [@header.name, @header.size] else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end end end end class Header attr_reader(:name, :uid, :gid, :size, :mtime, :uname, :gname, :mode, :linkflag) attr_writer(:name) def initialize(header) fields = header.unpack('A100 A8 A8 A8 A12 A12 A8 A1 A100 A8 A32 A32 A8 A8') types = ['str', 'oct', 'oct', 'oct', 'oct', 'time', 'oct', 'str', 'str', 'str', 'str', 'str', 'oct', 'oct'] begin converted = [] while field = fields.shift type = types.shift case type when 'str' then converted.push(field) when 'oct' then converted.push(field.oct) when 'time' then converted.push(Time::at(field.oct)) end end @name, @mode, @uid, @gid, @size, @mtime, @chksum, @linkflag, @linkname, @magic, @uname, @gname, @devmajor, @devminor = converted @name.gsub!(/^\.\//, "") @raw = header rescue ArgumentError => e raise "Couldn't determine a real value for a field (#{field})" end raise "Magic header value #{@magic.inspect} is invalid." if not MAGICS.include?(@magic) @linkflag = LF_FILE if @linkflag == LF_OLDFILE or @linkflag == LF_CONTIG @linkflag = LF_DIR if @name[-1] == '/' and @linkflag == LF_FILE @linkname = @linkname[1,-1] if @linkname[0] == '/' @size = 0 if @size < 0 @name = @linkname + '/' + @name if @linkname.size > 0 end def file? @linkflag == LF_FILE end def dir? @linkflag == LF_DIR end def longname? @linkflag == GNUTYPE_LONGNAME end end class Content @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def list begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).list} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class TempSpace @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @olddir = Dir.pwd temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" @tempdir = "#{temp}/tar2rubyscript.d.#{Process.pid}.#{@@count}" @@tempspace = self @newdir = @tempdir @touchthread = Thread.new do loop do sleep 60*60 touch(@tempdir) touch(@tempfile) end end end def extract Dir.rm_rf(@tempdir) if File.exists?(@tempdir) Dir.mkdir(@tempdir) newlocation do # Create the temp environment. File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} # Eventually look for a subdirectory. entries = Dir.entries(".") entries.delete(".") entries.delete("..") if entries.length == 1 entry = entries.shift.dup if File.directory?(entry) @newdir = "#{@tempdir}/#{entry}" end end end # Remember all File objects. @ioobjects = [] ObjectSpace::each_object(File) do |obj| @ioobjects << obj end at_exit do @touchthread.kill # Close all File objects, opened in init.rb . ObjectSpace::each_object(File) do |obj| obj.close if (not obj.closed? and not @ioobjects.include?(obj)) end # Remove the temp environment. Dir.chdir(@olddir) Dir.rm_rf(@tempfile) Dir.rm_rf(@tempdir) end self end def cleanup @archive = nil self end def touch(entry) entry = entry.gsub!(/[\/\\]*$/, "") unless entry.nil? return unless File.exists?(entry) if File.directory?(entry) pdir = Dir.pwd begin Dir.chdir(entry) begin Dir.new(".").each do |e| touch(e) unless [".", ".."].include?(e) end ensure Dir.chdir(pdir) end rescue Errno::EACCES => error $stderr.puts error end else File.utime(Time.now, File.mtime(entry), entry) end end def oldlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@olddir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @olddir) if not file.nil? end res end def newlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@newdir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @newdir) if not file.nil? end res end def self.oldlocation(file="") if block_given? @@tempspace.oldlocation { yield } else @@tempspace.oldlocation(file) end end def self.newlocation(file="") if block_given? @@tempspace.newlocation { yield } else @@tempspace.newlocation(file) end end end class Extract @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def extract begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class MakeTar def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @tarfile = File.expand_path(__FILE__).gsub(/\.rbw?$/, "") + ".tar" end def extract File.open(@tarfile, "wb") {|f| f.write @archive} self end def cleanup @archive = nil self end end def oldlocation(file="") if block_given? TempSpace.oldlocation { yield } else TempSpace.oldlocation(file) end end def newlocation(file="") if block_given? TempSpace.newlocation { yield } else TempSpace.newlocation(file) end end if ShowContent Content.new.list.cleanup elsif JustExtract Extract.new.extract.cleanup elsif ToTar MakeTar.new.extract.cleanup else TempSpace.new.extract.cleanup $:.unshift(newlocation) $:.push(oldlocation) s = ENV["PATH"].dup if Dir.pwd[1..2] == ":/" # Hack ??? s << ";#{newlocation.gsub(/\//, "\\")}" s << ";#{oldlocation.gsub(/\//, "\\")}" else s << ":#{newlocation}" s << ":#{oldlocation}" end ENV["PATH"] = s TAR2RUBYSCRIPT = true unless defined?(TAR2RUBYSCRIPT) newlocation do if __FILE__ == $0 $0.replace(File.expand_path("./init.rb")) if File.file?("./init.rb") load File.expand_path("./init.rb") else $stderr.puts "%s doesn't contain an init.rb ." % __FILE__ end else if File.file?("./init.rb") load File.expand_path("./init.rb") end end end end # dG1wLmVhcjJydWJ5c2NyaXB0LmYuMTIxMjIudGFyLwAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDA3MDAAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDAw # ADEwMjUwMzIwNjE2ADAxNjIwMwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMjEyMi50 # YXIvaW5pdC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAw # MDE3NTAAMDAwMDAwMDE0MzQAMTAxNTIyMTQ2MTYAMDE3NTEyACAwAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl # cmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2 # L3J3ZCIKClJXRCA9IDw8RU9GCiAgPGFwcGxpY2F0aW9uPgoKICAgIDx3aW5k # b3cgbmFtZT0ibWFpbiIgdGl0bGU9IkZpcnN0IFBhZ2UiPgogICAgICA8cD5U # aGlzIGlzIHRoZSBmaXJzdCBwYWdlLjwvcD4KICAgICAgPGJ1dHRvbiBjYXB0 # aW9uPSJOZXh0IiBhY3Rpb249InNlY29uZCIvPgogICAgPC93aW5kb3c+Cgog # ICAgPHdpbmRvdyBuYW1lPSJzZWNvbmQiIHRpdGxlPSJTZWNvbmQgUGFnZSI+ # CiAgICAgIDx0YWJzPgogICAgICAgIDx0YWIgbmFtZT0ib25lIiBjYXB0aW9u # PSJGaXJzdCI+CiAgICAgICAgICAgPHA+VGhpcyBpcyB0aGUgZmlyc3QgdGFi # IG9uIHRoZSBzZWNvbmQgcGFnZS48L3A+CiAgICAgICAgPC90YWI+CiAgICAg # ICAgPHRhYiBuYW1lPSJ0d28iIGNhcHRpb249IlNlY29uZCI+CiAgICAgICAg # ICAgPHA+VGhpcyBpcyB0aGUgc2Vjb25kIHRhYiBvbiB0aGUgc2Vjb25kIHBh # Z2U8L3A+CiAgICAgICAgICAgPHA+JWNvdW50ZXIlPC9wPgogICAgICAgICAg # IDxidXR0b24gY2FwdGlvbj0iSW5jcmVhc2UiIGFjdGlvbj0iaW5jcmVhc2Ui # Lz4KICAgICAgICA8L3RhYj4KICAgICAgPC90YWJzPgogICAgPC93aW5kb3c+ # CgogIDwvYXBwbGljYXRpb24+CkVPRgoKY2xhc3MgVGVzdFRhYnMgPCBSV0Rp # YWxvZwogIGRlZiBtYWluCiAgICBAY291bnRlciA9IDEKICBlbmQKCiAgZGVm # IHNlY29uZAogICAgQHJ3ZF93aW5kb3cgPSAic2Vjb25kIgogIGVuZAoKICBk # ZWYgaW5jcmVhc2UKICAgIEBjb3VudGVyICs9IDEKICBlbmQKZW5kCgpUZXN0 # VGFicy5uZXcoUldEKS5zZXJ2ZQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4x # MjEyMi50YXIvdGFyMnJ1YnlzY3JpcHQuc2gAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAx # NzUwADAwMDE3NTAAMDAwMDAwMDAwMzQAMTAwNDEyNzI3NTEAMDIxNTUxACAw # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAA # MDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV2ZG8g # cnVieWxpYmNvcHkgLS1yd2QtZXhpdAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTIxMjIudGFyL2V2 # LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUw # ADAwMDAwMDAwMDAwADEwMjUwMzIwNjE2ADAxNjYyNwAgNQAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 # c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3Jp # cHQuZi4xMjEyMi50YXIvZXYvZnRvb2xzLnJiAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1 # NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDY1MTYAMTAyNTAzMjA2MTYAMDIw # NDc1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw # MDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AHJlcXVpcmUgImZ0b29scyIKCmNsYXNzIERpcgogIGRlZiBzZWxmLmNvcHko # ZnJvbSwgdG8pCiAgICBpZiBGaWxlLmRpcmVjdG9yeT8oZnJvbSkKICAgICAg # cGRpcgk9IERpci5wd2QKICAgICAgdG9kaXIJPSBGaWxlLmV4cGFuZF9wYXRo # KHRvKQoKICAgICAgRmlsZS5ta3BhdGgodG9kaXIpCgogICAgICBEaXIuY2hk # aXIoZnJvbSkKICAgICAgICBEaXIubmV3KCIuIikuZWFjaCBkbyB8ZXwKICAg # ICAgICAgIERpci5jb3B5KGUsIHRvZGlyKyIvIitlKQlpZiBub3QgWyIuIiwg # Ii4uIl0uaW5jbHVkZT8oZSkKICAgICAgICBlbmQKICAgICAgRGlyLmNoZGly # KHBkaXIpCiAgICBlbHNlCiAgICAgIHRvZGlyCT0gRmlsZS5kaXJuYW1lKEZp # bGUuZXhwYW5kX3BhdGgodG8pKQoKICAgICAgRmlsZS5ta3BhdGgodG9kaXIp # CgogICAgICBGaWxlLmNvcHkoZnJvbSwgdG8pCiAgICBlbmQKICBlbmQKCiAg # ZGVmIHNlbGYubW92ZShmcm9tLCB0bykKICAgIERpci5jb3B5KGZyb20sIHRv # KQogICAgRGlyLnJtX3JmKGZyb20pCiAgZW5kCgogIGRlZiBzZWxmLnJtX3Jm # KGVudHJ5KQogICAgRmlsZS5jaG1vZCgwNzU1LCBlbnRyeSkKCiAgICBpZiBG # aWxlLmZ0eXBlKGVudHJ5KSA9PSAiZGlyZWN0b3J5IgogICAgICBwZGlyCT0g # RGlyLnB3ZAoKICAgICAgRGlyLmNoZGlyKGVudHJ5KQogICAgICAgIERpci5u # ZXcoIi4iKS5lYWNoIGRvIHxlfAogICAgICAgICAgRGlyLnJtX3JmKGUpCWlm # IG5vdCBbIi4iLCAiLi4iXS5pbmNsdWRlPyhlKQogICAgICAgIGVuZAogICAg # ICBEaXIuY2hkaXIocGRpcikKCiAgICAgIGJlZ2luCiAgICAgICAgRGlyLmRl # bGV0ZShlbnRyeSkKICAgICAgcmVzY3VlID0+IGUKICAgICAgICAkc3RkZXJy # LnB1dHMgZS5tZXNzYWdlCiAgICAgIGVuZAogICAgZWxzZQogICAgICBiZWdp # bgogICAgICAgIEZpbGUuZGVsZXRlKGVudHJ5KQogICAgICByZXNjdWUgPT4g # ZQogICAgICAgICRzdGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAgZW5kCiAg # ICBlbmQKICBlbmQKCiAgZGVmIHNlbGYuZmluZChlbnRyeT1uaWwsIG1hc2s9 # bmlsKQogICAgZW50cnkJPSAiLiIJaWYgZW50cnkubmlsPwoKICAgIGVudHJ5 # CT0gZW50cnkuZ3N1YigvW1wvXFxdKiQvLCAiIikJdW5sZXNzIGVudHJ5Lm5p # bD8KCiAgICBtYXNrCT0gL14je21hc2t9JC9pCWlmIG1hc2sua2luZF9vZj8o # U3RyaW5nKQoKICAgIHJlcwk9IFtdCgogICAgaWYgRmlsZS5kaXJlY3Rvcnk/ # KGVudHJ5KQogICAgICBwZGlyCT0gRGlyLnB3ZAoKICAgICAgcmVzICs9IFsi # JXMvIiAlIGVudHJ5XQlpZiBtYXNrLm5pbD8gb3IgZW50cnkgPX4gbWFzawoK # ICAgICAgYmVnaW4KICAgICAgICBEaXIuY2hkaXIoZW50cnkpCgogICAgICAg # IGJlZ2luCiAgICAgICAgICBEaXIubmV3KCIuIikuZWFjaCBkbyB8ZXwKICAg # ICAgICAgICAgcmVzICs9IERpci5maW5kKGUsIG1hc2spLmNvbGxlY3R7fGV8 # IGVudHJ5KyIvIitlfQl1bmxlc3MgWyIuIiwgIi4uIl0uaW5jbHVkZT8oZSkK # ICAgICAgICAgIGVuZAogICAgICAgIGVuc3VyZQogICAgICAgICAgRGlyLmNo # ZGlyKHBkaXIpCiAgICAgICAgZW5kCiAgICAgIHJlc2N1ZSBFcnJubzo6RUFD # Q0VTID0+IGUKICAgICAgICAkc3RkZXJyLnB1dHMgZS5tZXNzYWdlCiAgICAg # IGVuZAogICAgZWxzZQogICAgICByZXMgKz0gW2VudHJ5XQlpZiBtYXNrLm5p # bD8gb3IgZW50cnkgPX4gbWFzawogICAgZW5kCgogICAgcmVzCiAgZW5kCmVu # ZAoKY2xhc3MgRmlsZQogIGRlZiBzZWxmLnJvbGxiYWNrdXAoZmlsZSwgbW9k # ZT1uaWwpCiAgICBiYWNrdXBmaWxlCT0gZmlsZSArICIuUkIuQkFDS1VQIgog # ICAgY29udHJvbGZpbGUJPSBmaWxlICsgIi5SQi5DT05UUk9MIgogICAgcmVz # CQk9IG5pbAoKICAgIEZpbGUudG91Y2goZmlsZSkgICAgdW5sZXNzIEZpbGUu # ZmlsZT8oZmlsZSkKCgkjIFJvbGxiYWNrCgogICAgaWYgRmlsZS5maWxlPyhi # YWNrdXBmaWxlKSBhbmQgRmlsZS5maWxlPyhjb250cm9sZmlsZSkKICAgICAg # JHN0ZGVyci5wdXRzICJSZXN0b3JpbmcgI3tmaWxlfS4uLiIKCiAgICAgIEZp # bGUuY29weShiYWNrdXBmaWxlLCBmaWxlKQkJCQkjIFJvbGxiYWNrIGZyb20g # cGhhc2UgMwogICAgZW5kCgoJIyBSZXNldAoKICAgIEZpbGUuZGVsZXRlKGJh # Y2t1cGZpbGUpCWlmIEZpbGUuZmlsZT8oYmFja3VwZmlsZSkJIyBSZXNldCBm # cm9tIHBoYXNlIDIgb3IgMwogICAgRmlsZS5kZWxldGUoY29udHJvbGZpbGUp # CWlmIEZpbGUuZmlsZT8oY29udHJvbGZpbGUpCSMgUmVzZXQgZnJvbSBwaGFz # ZSAzIG9yIDQKCgkjIEJhY2t1cAoKICAgIEZpbGUuY29weShmaWxlLCBiYWNr # dXBmaWxlKQkJCQkJIyBFbnRlciBwaGFzZSAyCiAgICBGaWxlLnRvdWNoKGNv # bnRyb2xmaWxlKQkJCQkJIyBFbnRlciBwaGFzZSAzCgoJIyBUaGUgcmVhbCB0 # aGluZwoKICAgIGlmIGJsb2NrX2dpdmVuPwogICAgICBpZiBtb2RlLm5pbD8K # ICAgICAgICByZXMJPSB5aWVsZAogICAgICBlbHNlCiAgICAgICAgRmlsZS5v # cGVuKGZpbGUsIG1vZGUpIGRvIHxmfAogICAgICAgICAgcmVzCT0geWllbGQo # ZikKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCgkjIENsZWFudXAK # CiAgICBGaWxlLmRlbGV0ZShiYWNrdXBmaWxlKQkJCQkJIyBFbnRlciBwaGFz # ZSA0CiAgICBGaWxlLmRlbGV0ZShjb250cm9sZmlsZSkJCQkJCSMgRW50ZXIg # cGhhc2UgNQoKCSMgUmV0dXJuLCBsaWtlIEZpbGUub3BlbgoKICAgIHJlcwk9 # IEZpbGUub3BlbihmaWxlLCAobW9kZSBvciAiciIpKQl1bmxlc3MgYmxvY2tf # Z2l2ZW4/CgogICAgcmVzCiAgZW5kCgogIGRlZiBzZWxmLnRvdWNoKGZpbGUp # CiAgICBpZiBGaWxlLmV4aXN0cz8oZmlsZSkKICAgICAgRmlsZS51dGltZShU # aW1lLm5vdywgRmlsZS5tdGltZShmaWxlKSwgZmlsZSkKICAgIGVsc2UKICAg # ICAgRmlsZS5vcGVuKGZpbGUsICJhIil7fGZ8fQogICAgZW5kCiAgZW5kCgog # IGRlZiBzZWxmLndoaWNoKGZpbGUpCiAgICByZXMJPSBuaWwKCiAgICBpZiB3 # aW5kb3dzPwogICAgICBmaWxlCT0gZmlsZS5nc3ViKC9cLmV4ZSQvaSwgIiIp # ICsgIi5leGUiCiAgICAgIHNlcAkJPSAiOyIKICAgIGVsc2UKICAgICAgc2Vw # CQk9ICI6IgogICAgZW5kCgogICAgY2F0Y2ggOnN0b3AgZG8KICAgICAgRU5W # WyJQQVRIIl0uc3BsaXQoLyN7c2VwfS8pLnJldmVyc2UuZWFjaCBkbyB8ZHwK # ICAgICAgICBpZiBGaWxlLmRpcmVjdG9yeT8oZCkKICAgICAgICAgIERpci5u # ZXcoZCkuZWFjaCBkbyB8ZXwKICAgICAgICAgICAgIGlmIGUuZG93bmNhc2Ug # PT0gZmlsZS5kb3duY2FzZQogICAgICAgICAgICAgICByZXMJPSBGaWxlLmV4 # cGFuZF9wYXRoKGUsIGQpCiAgICAgICAgICAgICAgIHRocm93IDpzdG9wCiAg # ICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAg # IGVuZAogICAgZW5kCgogICAgcmVzCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2Ny # aXB0LmYuMTIxMjIudGFyL2V2L3J3ZC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3 # NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMjAyNTE2ADEwMjUwMzIwNjE2ADAx # Nzc2MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw # MDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAByZXF1aXJlICJldi9ydWJ5IgpyZXF1aXJlICJldi94bWwiCnJlcXVpcmUg # ImV2L25ldCIKcmVxdWlyZSAiZXYvYnJvd3NlciIKcmVxdWlyZSAiZXYvdGhy # ZWFkIgpyZXF1aXJlICJtZDUiCnJlcXVpcmUgInJiY29uZmlnIgoKYmVnaW4K # ICByZXF1aXJlICJ3aW4zMm9sZSIKICByZXF1aXJlICJ3aW4zMi9yZWdpc3Ry # eSIKcmVzY3VlIExvYWRFcnJvcgogICQiLnB1c2ggIndpbjMyb2xlLnNvIgog # ICQiLnB1c2ggIndpbjMyL3JlZ2lzdHJ5LnJiIgplbmQKCiRyd2RfZXhpdAk9 # IEFSR1YuaW5jbHVkZT8oIi0tcndkLWV4aXQiKQkjIEhhY2sgPz8/CiRyd2Rf # ZXhpdAk9IHRydWUJaWYgZGVmaW5lZD8oUkVRVUlSRTJMSUIpCiRyd2RfZGVi # dWcJPSAoJHJ3ZF9kZWJ1ZyBvciAkREVCVUcgb3IgZmFsc2UpCiRyd2RfYm9y # ZGVyCT0gKCRyd2RfYm9yZGVyIG9yIDApCiRyd2RfZGlyCT0gRGlyLnB3ZAok # cndkX2ZpbGVzCT0gRmlsZS5leHBhbmRfcGF0aCgicndkX2ZpbGVzIiwgRGly # LnB3ZCkKJHJ3ZF9odG1sCT0ge30KCkFSR1YuZGVsZXRlX2lmIGRvIHxhcmd8 # CiAgYXJnID1+IC9eLS1yd2QtLwplbmQKClJXREVtcHR5bGluZQk9ICIuLi4i # CgojbW9kdWxlIFJXRAoKcmNmaWxlCT0gbmlsCnMJPSBFTlZbIkhPTUUiXQkJ # OyBzID0gRmlsZS5leHBhbmRfcGF0aCgiLnJ3ZHJjIiwgcykJdW5sZXNzIHMu # bmlsPwk7IHJjZmlsZSA9IHMJaWYgKG5vdCBzLm5pbD8gYW5kIHJjZmlsZS5u # aWw/IGFuZCBGaWxlLmZpbGU/KHMpKQpzCT0gRU5WWyJVU0VSUFJPRklMRSJd # CTsgcyA9IEZpbGUuZXhwYW5kX3BhdGgoInJ3ZC5jZmciLCBzKQl1bmxlc3Mg # cy5uaWw/CTsgcmNmaWxlID0gcwlpZiAobm90IHMubmlsPyBhbmQgcmNmaWxl # Lm5pbD8gYW5kIEZpbGUuZmlsZT8ocykpCnMJPSBFTlZbIndpbmRpciJdCQk7 # IHMgPSBGaWxlLmV4cGFuZF9wYXRoKCJyd2QuY2ZnIiwgcykJdW5sZXNzIHMu # bmlsPwk7IHJjZmlsZSA9IHMJaWYgKG5vdCBzLm5pbD8gYW5kIHJjZmlsZS5u # aWw/IGFuZCBGaWxlLmZpbGU/KHMpKQoKQUwJPSAiYWxpZ249J2xlZnQnIgpB # Qwk9ICJhbGlnbj0nY2VudGVyJyIKQVIJPSAiYWxpZ249J3JpZ2h0JyIKVkEJ # PSAidmFsaWduPSdtaWRkbGUnIgoKRm9ybWF0CT0gIlxuPCEtLSAlLTEwcyAl # LTEwcyAtLT5cdCIKCnVubGVzcyByY2ZpbGUubmlsPwogIHB1dHMgIlJlYWRp # bmcgI3tyY2ZpbGV9IC4uLiIKCiAgSGFzaC5maWxlKHJjZmlsZSkuZWFjaCBk # byB8aywgdnwKICAgIEVOVltrXQk9IHYJdW5sZXNzIEVOVi5pbmNsdWRlPyhr # KQogIGVuZAplbmQKCkVOVlsiUldEQlJPV1NFUiJdCT0gKEVOVlsiUldEQlJP # V1NFUiJdIG9yIGRlZmF1bHRicm93c2VyKSBvciBwdXRzICJObyBicm93c2Vy # IGZvdW5kLiIKRU5WWyJSV0RQT1JUUyJdCQk9IChFTlZbIlJXRFBPUlRTIl0g # b3IgIjc3MDEtNzcwOSIpCkVOVlsiUldEVEhFTUUiXQkJPSAoRU5WWyJSV0RU # SEVNRSJdIG9yICJERUZBVUxUIikKCiN0cmFwKCJJTlQiKQl7cHV0cyAiVGVy # bWluYXRpbmcuLi4iIDsgZXhpdH0KCiRTQUZFCT0gMgoKY2xhc3MgSUUKICBk # ZWYgaW5pdGlhbGl6ZSh1cmwpCiAgICBAaWUgPSBXSU4zMk9MRS5uZXcoIklu # dGVybmV0RXhwbG9yZXIuQXBwbGljYXRpb24iKQogICAgQGV2CT0gV0lOMzJP # TEVfRVZFTlQubmV3KEBpZSwgIkRXZWJCcm93c2VyRXZlbnRzMiIpCgogICAg # QGllLm5hdmlnYXRlKHVybCkKCiAgICBAaWUubWVudWJhcgkJPSBmYWxzZQog # ICAgQGllLnRvb2xiYXIJCT0gZmFsc2UKICAgIEBpZS5hZGRyZXNzYmFyCT0g # ZmFsc2UKICAgIEBpZS5zdGF0dXNiYXIJPSBmYWxzZQoKICAgIEBpZS52aXNp # YmxlCQk9IHRydWUKCiAgICBhdF9leGl0IGRvCiAgICAgIEBpZS52aXNpYmxl # CT0gZmFsc2UKICAgIGVuZAoKICAgIEBldi5vbl9ldmVudCgiT25RdWl0Iikg # ZG8KICAgICAgVGhyZWFkLm1haW4uZXhpdAogICAgZW5kCgogICAgVGhyZWFk # Lm5ldyBkbwogICAgICBsb29wIGRvCiAgICAgICAgV0lOMzJPTEVfRVZFTlQu # bWVzc2FnZV9sb29wCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKY2xh # c3MgQXJyYXkKICBkZWYgcndkX29wdGlvbnMoZW1wdHlsaW5lPW5pbCkKICAg # IGlmIGVtcHR5bGluZS5uaWw/CiAgICAgIGEJPSBzZWxmCiAgICBlbHNlCiAg # ICAgIGEJPSBbZW1wdHlsaW5lXS5jb25jYXQoc2VsZikKICAgIGVuZAoKICAg # IGEubnVtc29ydC5jb2xsZWN0e3xzfCAiPG9wdGlvbj4je3MudG9fcy50b19o # dG1sfTwvb3B0aW9uPiIgfS5qb2luKCJcbiIpCiAgZW5kCgogIGRlZiByd2Rf # bWV0aG9kKG1ldGhvZCkKICAgIHJlcwk9ICIiCgogICAgc2VsZi5lYWNoIGRv # IHxzfAogICAgICBzCQk9IHMuam9pbigiLyIpCWlmIHMua2luZF9vZj8oQXJy # YXkpCiAgICAgIHMyCT0gcy5kdXAKICAgICAgczJbMC4uMF0JPSBzMlswLi4w # XS51cGNhc2UKICAgICAgcmVzCT0gcmVzICsgIjxwIGFsaWduPSdsZWZ0Jz48 # YSBhY3Rpb249JyN7bWV0aG9kfS8je3MudG9faHRtbH0nPiN7czIudG9faHRt # bH08L2E+PC9wPiIKICAgIGVuZAoKICAgIHJldHVybiByZXMKICBlbmQKCiAg # ZGVmIHJ3ZF9yb3coa2V5PW5pbCwgdmFsdWU9bmlsLCBib2xkPWZhbHNlKQog # ICAgcmVzCT0gIiIKCiAgICByZXMJPSByZXMgKyAiPHJvdyB2YWxpZ249J3Rv # cCc+IgogICAgcmVzCT0gcmVzICsgIjxyYWRpbyBuYW1lPScje2tleS50b19o # dG1sfScgdmFsdWU9JyN7dmFsdWUudG9faHRtbH0nLz4iCXVubGVzcyBrZXku # bmlsPwogICAgcmVzCT0gcmVzICsgc2VsZi5jb2xsZWN0e3xzfCAiPHAgYWxp # Z249JyN7KHMua2luZF9vZj8oTnVtZXJpYykgb3IgcyA9fiAvXlxkK1wuXGQr # JC8pID8gInJpZ2h0IiA6ICJsZWZ0In0nPiN7IjxiPiIgaWYgYm9sZH0je3Mu # dG9fcy50b19odG1sfSN7IjwvYj4iIGlmIGJvbGR9PC9wPiJ9LmpvaW4oIiIp # CiAgICByZXMJPSByZXMgKyAiPC9yb3c+IgoKICAgIHJldHVybiByZXMKICBl # bmQKCiAgZGVmIHJ3ZF90YWJsZShoZWFkZXJzPW5pbCwgaGlnaGxpZ2h0cm93 # cz1bXSkKICAgIHJlcwk9ICIiCgogICAgaGlnaGxpZ2h0cm93cwk9IFtoaWdo # bGlnaHRyb3dzXS5mbGF0dGVuCgogICAgbgk9IC0xCgogICAgcmVzCT0gcmVz # ICsgIjx0YWJsZT4iCiAgICByZXMJPSByZXMgKyBoZWFkZXJzLnJ3ZF9yb3co # bmlsLCBuaWwsIHRydWUpCXVubGVzcyBoZWFkZXJzLm5pbD8KICAgIHJlcwk9 # IHJlcyArIHNlbGYuY29sbGVjdHt8YXwgYS5yd2Rfcm93KG5pbCwgbmlsLCBo # aWdobGlnaHRyb3dzLmluY2x1ZGU/KG4rPTEpKX0uam9pbigiIikKICAgIHJl # cwk9IHJlcyArICI8L3RhYmxlPiIKCiAgICByZXR1cm4gcmVzCiAgZW5kCgog # IGRlZiByd2RfaGVhZGVycyhlbXB0eWZpZWxkPWZhbHNlKQogICAgcmVzCT0g # IiIKCiAgICByZXMJPSByZXMgKyAiPHJvdz4iCiAgICByZXMJPSByZXMgKyAi # PHAvPiIJaWYgZW1wdHlmaWVsZAogICAgcmVzCT0gcmVzICsgc2VsZi5jb2xs # ZWN0e3xzfCAiPHAgYWxpZ249J2xlZnQnPjxiPiN7cy50b19odG1sfTwvYj48 # L3A+IiB9LmpvaW4oIiIpCiAgICByZXMJPSByZXMgKyAiPC9yb3c+IgoKICAg # IHJldHVybiByZXMKICBlbmQKCiAgZGVmIHJ3ZF9mb3JtKHByZWZpeCwgdmFs # dWVzPVtdLCB0d29wYXJ0cz0wLCBvcHRpb25zPXt9KQogICAgcmVzCT0gW10K # CiAgICByZXMgPDwgIjx0YWJsZT4iCiAgICBzZWxmLmVhY2hfaW5kZXggZG8g # fG58CiAgICAgIG5hbWUJPSAiI3twcmVmaXgudG9faHRtbH0je3NlbGZbbl0u # ZG93bmNhc2UudG9faHRtbH0iCgogICAgICByZXMgPDwgIjxyb3c+IgogICAg # ICByZXMgPDwgIjxwIGFsaWduPSdyaWdodCc+IgogICAgICByZXMgPDwgIiN7 # c2VsZltuXS50b19odG1sfToiCiAgICAgIHJlcyA8PCAiPC9wPiIKCiAgICAg # IGlmIG9wdGlvbnMua2V5cy5pbmNsdWRlPyhzZWxmW25dKQogICAgICAgIHJl # cyA8PCAiPHNlbGVjdCBuYW1lPScje25hbWV9Jz4iCiAgICAgICAgcmVzIDw8 # IG9wdGlvbnNbc2VsZltuXV0ucndkX29wdGlvbnMoUldERW1wdHlsaW5lKQog # ICAgICAgIHJlcyA8PCAiPC9zZWxlY3Q+IgogICAgICBlbHNlCiAgICAgICAg # cwk9ICIiCgogICAgICAgIHMgPDwgIjx0ZXh0IG5hbWU9JyN7bmFtZX0nIgog # ICAgICAgIHMgPDwgIiB2YWx1ZT0nI3t2YWx1ZXNbbl0udG9fcy50b19odG1s # fSciCWlmIG4gPCB2YWx1ZXMubGVuZ3RoCiAgICAgICAgcyA8PCAiLz4iCgog # ICAgICAgIHJlcyA8PCBzCiAgICAgIGVuZAoKICAgICAgcmVzIDw8ICI8L3Jv # dz4iCgogICAgICBpZiB0d29wYXJ0cyA+IDAgYW5kIG4gPT0gdHdvcGFydHMt # MQogICAgICAgIHJlcyA8PCAiPHJvdz48ZW1wdHkvPjwvcm93PiIKICAgICAg # ZW5kCiAgICBlbmQKICAgIHJlcyA8PCAiPC90YWJsZT4iCgogICAgcmV0dXJu # IHJlcy5qb2luKCJcbiIpCiAgZW5kCmVuZAoKY2xhc3MgSGFzaAogIGRlZiBy # d2RfdGFibGUoZmllbGQ9bmlsLCBqb2lud2l0aD1uaWwsIGhlYWRlcnM9bmls # KQogICAgcmVzCT0gW10KCiAgICByZXMgPDwgIjx0YWJsZT4iCiAgICByZXMg # PDwgaGVhZGVycy5yd2RfaGVhZGVycygobm90IGZpZWxkLm5pbD8pKQlpZiBu # b3QgaGVhZGVycy5uaWw/CiAgICBzZWxmLmtleXMubnVtc29ydC5lYWNoIGRv # IHxrZXl8CiAgICAgIGtleTIJPSBrZXkKICAgICAgdmFsdWUyCT0gc2VsZltr # ZXldCgogICAgICBrZXkyCT0ga2V5Mi5qb2luKGpvaW53aXRoKQlpZiBrZXky # LmtpbmRfb2Y/KEFycmF5KQogICAgICB2YWx1ZTIJPSBbdmFsdWUyXQkJaWYg # dmFsdWUyLmtpbmRfb2Y/KFN0cmluZykKCiAgICAgIHJlcyA8PCB2YWx1ZTIu # cndkX3JvdyhmaWVsZCwga2V5MikKICAgIGVuZAogICAgcmVzIDw8ICI8L3Rh # YmxlPiIKCiAgICByZXMuam9pbigiXG4iKQogIGVuZAplbmQKCmNsYXNzIEVW # VGFibGUKICBkZWYgcndkX3RhYmxlKGZpZWxkPW5pbCwgam9pbndpdGg9QHNl # cCkKICAgIHN1cGVyKGZpZWxkLCBqb2lud2l0aCwgQGhlYWRlcnMpCiAgZW5k # CgogIGRlZiByd2RfZm9ybShwcmVmaXg9IiIsIGtleT1uaWwsIHR3b3BhcnRz # PWZhbHNlKQogICAgdmFsdWVzCT0gc2VsZltrZXldCWlmIG5vdCBrZXkubmls # PwogICAgdmFsdWVzCT0gW10JCWlmIHZhbHVlcy5uaWw/CiAgICBvcHRpb25z # CT0ge30KCiAgICBpZiBGaWxlLmZpbGU/KG9sZGxvY2F0aW9uKCJjb25zdHJh # aW50cy50c3YiKSkKICAgICAgdGFibGUJPSBGaWxlLmJhc2VuYW1lKEBmaWxl # KS5nc3ViKC9cLnRzdiQvLCAiIikKCiAgICAgIFRTVkZpbGUubmV3KG9sZGxv # Y2F0aW9uKCJjb25zdHJhaW50cy50c3YiKSkuc3Vic2V0KFsiVGFibGUiLCAi # Q29uc3RyYWludCJdLCBbdGFibGUsICJrZXkiXSwgWyJDb2x1bW4iLCAiVmFs # dWUiXSkudmFsdWVzLmVhY2ggZG8gfGNvbHVtbiwgdGFibGUyfAogICAgICAg # IG9wdGlvbnNbY29sdW1uXQk9IFRTVkZpbGUubmV3KG9sZGxvY2F0aW9uKCIj # e3RhYmxlMn0udHN2IikpLmtleXMuY29sbGVjdHt8YXwgYS5qb2luKCJcdCIp # fQogICAgICBlbmQKICAgIGVuZAoKICAgIEBoZWFkZXJzLnJ3ZF9mb3JtKHBy # ZWZpeCwgdmFsdWVzLCB0d29wYXJ0cyA/IEBrZXkgOiAwLCBvcHRpb25zKQog # IGVuZAoKICBkZWYgcndkX21ldGFkYXRhCiAgICByZXMJPSBbXQoKICAgIHJl # cyA8PCAiPHRhYmxlPiIKICAgIHJlcyA8PCAiPHJvdz4iCiAgICByZXMgPDwg # IiAgPGVtcHR5Lz4iCiAgICByZXMgPDwgIiAgPHRleHQgbmFtZT0naGVhZGVy # X25ldycgdmFsdWU9JycvPiIKICAgIHJlcyA8PCAiPC9yb3c+IgogICAgQGhl # YWRlcnMuZWFjaF9pbmRleCBkbyB8bnwKICAgICAgcmVzIDw8ICI8cm93PiIK # ICAgICAgcmVzIDw8ICIgIDx0ZXh0IG5hbWU9J2hlYWRlcl8je259X29sZCcg # dmFsdWU9JyN7QGhlYWRlcnNbbl19Jy8+IgogICAgICByZXMgPDwgIiAgPHRl # eHQgbmFtZT0naGVhZGVyXyN7bn1fbmV3JyB2YWx1ZT0nJy8+IgogICAgICBy # ZXMgPDwgIjwvcm93PiIKICAgIGVuZAogICAgcmVzIDw8ICI8L3RhYmxlPiIK # CiAgICByZXR1cm4gcmVzLmpvaW4oIlxuIikKICBlbmQKZW5kCgpjbGFzcyBP # cGVuVGFnCiAgZGVmIHByZWNoaWxkcmVuKHJlcywgYmVmb3JlLCBhZnRlciwg # dmFyc2h0bWwsIHZhcnNzdHJpbmcsIHN3aXRjaGVzLCBoZWxwLCBvbmVvcm1v # cmVmaWVsZHMsIGZpcnN0YWN0aW9uLCB0YWJzLCB0YWIsIHBkYSkKICAgIGJl # Zgk9IGJlZm9yZVstMV0KICAgIHJlcyA8PCBGb3JtYXQgJSBbIkJlZm9yZSIs # IEBzdWJ0eXBlXQlpZiAoJHJ3ZF9kZWJ1ZyBhbmQgbm90IGJlZi5uaWw/KQog # ICAgcmVzIDw8IGJlZglpZiBub3QgYmVmLm5pbD8KCiAgICByZXMgPDwgRm9y # bWF0ICUgWyJQcmUiLCBAc3VidHlwZV0JaWYgJHJ3ZF9kZWJ1ZwoKICAgIGFs # aWduCT0gQUMKICAgIGFsaWduCT0gImFsaWduPScje0BhcmdzWyJhbGlnbiJd # fSciCWlmIEBhcmdzLmluY2x1ZGU/KCJhbGlnbiIpCgogICAgdmFsaWduCT0g # VkEKICAgIHZhbGlnbgk9ICJ2YWxpZ249JyN7QGFyZ3NbInZhbGlnbiJdfSci # CWlmIEBhcmdzLmluY2x1ZGU/KCJ2YWxpZ24iKQoKICAgIHZhbHVlMQk9ICIi # CiAgICB2YWx1ZTEJPSB2YXJzaHRtbFtAYXJnc1sibmFtZSJdXQlpZiB2YXJz # aHRtbC5pbmNsdWRlPyhAYXJnc1sibmFtZSJdKQogICAgdmFsdWUxCT0gQGFy # Z3NbInZhbHVlIl0JCWlmIEBhcmdzLmluY2x1ZGU/KCJ2YWx1ZSIpCgogICAg # dmFsdWUyCT0gIiIKICAgIHZhbHVlMgk9IHZhcnNzdHJpbmdbQGFyZ3NbIm5h # bWUiXV0JaWYgdmFyc3N0cmluZy5pbmNsdWRlPyhAYXJnc1sibmFtZSJdKQog # ICAgdmFsdWUyCT0gQGFyZ3NbInZhbHVlIl0JCWlmIEBhcmdzLmluY2x1ZGU/ # KCJ2YWx1ZSIpCgogICAgY2VsbHNwYWNpbmcJPSAzCiAgICBjZWxsc3BhY2lu # Zwk9IDAJaWYgcGRhCgogICAgY2FzZSBAc3VidHlwZQogICAgd2hlbiAiYXBw # bGljYXRpb24iCiAgICB3aGVuICJ3aW5kb3ciLCAiaGVscHdpbmRvdyIKICAg # ICAgYXJncwk9IEBhcmdzLmRlZXBfZHVwCgogICAgICBhcmdzWyJub2hlbHBi # dXR0b24iXQk9IChub3QgaGVscCkKCiAgICAgIHRlbXBsYXRlCT0gJHJ3ZF9o # dG1sXzEKICAgICAgdGVtcGxhdGUJPSAkcndkX2h0bWxfUERBXzEJaWYgcGRh # CgogICAgICByZXMgPDwgKHRlbXBsYXRlKHRlbXBsYXRlLCBhcmdzKSkKICAg # IHdoZW4gInAiCQl0aGVuIHJlcyA8PCAiPHAgI3thbGlnbn0+IgogICAgd2hl # biAicHJlIgkJdGhlbiByZXMgPDwgIjxwcmUgI3thbGlnbn0+IgogICAgd2hl # biAiYmlnIgkJdGhlbiByZXMgPDwgIjxwICN7YWxpZ259PjxiaWc+IgogICAg # d2hlbiAic21hbGwiCXRoZW4gcmVzIDw8ICI8cCAje2FsaWdufT48c21hbGw+ # IgogICAgd2hlbiAibGlzdCIJCXRoZW4gcmVzIDw8ICI8dWwgI3thbGlnbn0+ # IgogICAgd2hlbiAiaXRlbSIJCXRoZW4gcmVzIDw8ICI8bGkgI3thbGlnbn0+ # IgogICAgd2hlbiAiZW1wdHkiCXRoZW4gcmVzIDw8ICI8cD48YnI+IgogICAg # d2hlbiAiaW1hZ2UiCiAgICAgIHdpZHRoCT0gIndpZHRoPScje0BhcmdzWyJ3 # aWR0aCJdfSIJaWYgQGFyZ3MuaW5jbHVkZT8oIndpZHRoIikKICAgICAgaGVp # Z2h0CT0gImhlaWdodD0nI3tAYXJnc1siaGVpZ2h0Il19JyIJaWYgQGFyZ3Mu # aW5jbHVkZT8oImhlaWdodCIpCgogICAgICByZXMgPDwgIjxpbWcgc3JjPScj # e0BhcmdzWyJzcmMiXX0nIGFsdD0nI3tAYXJnc1siYWx0Il19JyAje3dpZHRo # fSAje2hlaWdodH0+IgogICAgd2hlbiAicHJvZ3Jlc3NiYXIiCiAgICAgIHdp # ZHRoCT0gMjAwCgogICAgICByZXMgPDwgIjx0YWJsZT4iCiAgICAgIHJlcyA8 # PCAiICA8dHI+IgogICAgICByZXMgPDwgIiAgICA8dGQgY29sc3Bhbj0nMic+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JyN7 # d2lkdGgrNX0nPjwvdGQ+IgogICAgICByZXMgPDwgIiAgPC90cj4iCiAgICAg # IHJlcyA8PCAiICA8dHI+IgogICAgICByZXMgPDwgIiAgICA8dGQgYmdjb2xv # cj0nI0RERERERCc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MTAnIHdpZHRoPScjeyh3aWR0aCpAYXJnc1sidmFsdWUiXS50b19mKS50b19p # fSc+PC90ZD4iCiAgICAgIHJlcyA8PCAiICAgIDx0ZCBiZ2NvbG9yPScjRUVF # RUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxMCcgd2lk # dGg9JyN7KHdpZHRoKigxLjAtQGFyZ3NbInZhbHVlIl0udG9fZikpLnRvX2l9 # Jz48L3RkPiIKICAgICAgcmVzIDw8ICIgIDwvdHI+IgogICAgICByZXMgPDwg # IjwvdGFibGU+IgogICAgd2hlbiAiYnIiCQl0aGVuIHJlcyA8PCAiPGJyPiIK # ICAgIHdoZW4gImhyIgkJdGhlbiByZXMgPDwgIjxocj4iCiAgICB3aGVuICJi # IgkJdGhlbiByZXMgPDwgIjxiPiIKICAgIHdoZW4gImkiCQl0aGVuIHJlcyA8 # PCAiPGk+IgogICAgd2hlbiAiYSIKICAgICAgaWYgQGFyZ3MuaW5jbHVkZT8o # ImhyZWYiKQogICAgICAgIHJlcyA8PCAiPGEgaHJlZj0nI3tAYXJnc1siaHJl # ZiJdfScgdGFyZ2V0PScje0BhcmdzWyJ0YXJnZXQiXSBvciAiX2JsYW5rIn0n # PiIKICAgICAgZWxzZQogICAgICAgIHJlcyA8PCAiPGEgaHJlZj0namF2YXNj # cmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwiI3tA # YXJnc1siYWN0aW9uIl19XCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7 # Jz4iCiAgICAgIGVuZAogICAgd2hlbiAidmVydGljYWwiCXRoZW4gcmVzIDw8 # ICI8dGFibGUgI3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNw # YWNpbmc9JyN7Y2VsbHNwYWNpbmd9JyBjZWxscGFkZGluZz0nMCc+IgogICAg # d2hlbiAiaG9yaXpvbnRhbCIJdGhlbiByZXMgPDwgIjx0YWJsZSAje0FDfSBi # b3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0nI3tjZWxsc3Bh # Y2luZ30nIGNlbGxwYWRkaW5nPScwJz48dHIgI3thbGlnbn0gI3t2YWxpZ259 # PiIKICAgIHdoZW4gInRhYmxlIgl0aGVuIHJlcyA8PCAiPHRhYmxlICN7QUN9 # IGJvcmRlcj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPScje2NlbGxz # cGFjaW5nfScgY2VsbHBhZGRpbmc9JzAnPiIKICAgIHdoZW4gInJvdyIJCXRo # ZW4gcmVzIDw8ICI8dHIgI3thbGlnbn0gI3t2YWxpZ259PiIKICAgIHdoZW4g # ImhpZGRlbiIJdGhlbiByZXMgPDwgIjxwICN7YWxpZ259PjxpbnB1dCBuYW1l # PScje0BhcmdzWyJuYW1lIl19JyB2YWx1ZT0nI3t2YWx1ZTF9JyB0eXBlPSdo # aWRkZW4nPiIKICAgIHdoZW4gInRleHQiCiAgICAgIG1heGxlbmd0aAk9ICIi # CiAgICAgIG1heGxlbmd0aAk9ICJtYXhsZW5ndGg9JyVzJyIgJSBAYXJnc1si # bWF4bGVuZ3RoIl0JaWYgQGFyZ3MuaW5jbHVkZT8oIm1heGxlbmd0aCIpCiAg # ICAgIHNpemUJPSAiIgogICAgICBzaXplCT0gInNpemU9JyVzJyIgJSBAYXJn # c1sic2l6ZSJdCQlpZiBAYXJncy5pbmNsdWRlPygic2l6ZSIpCiAgICAgIHNp # emUJPSAic2l6ZT0nJXMnIiAlIDEwCQkJaWYgcGRhCiAgICAgIHJlcyA8PCAi # PHAgI3thbGlnbn0+PGlucHV0IG5hbWU9JyN7QGFyZ3NbIm5hbWUiXX0nIHZh # bHVlPScje3ZhbHVlMX0nIHR5cGU9J3RleHQnICN7bWF4bGVuZ3RofSAje3Np # emV9PiIKICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hl # biAidGV4dGFyZWEiCiAgICAgIHJlcyA8PCAiPHAgI3thbGlnbn0+PHRleHRh # cmVhIG5hbWU9JyN7QGFyZ3NbIm5hbWUiXX0nIHJvd3M9JzI1JyBjb2xzPSc4 # MCc+I3t2YWx1ZTIuY3JsZn08L3RleHRhcmVhPiIKICAgICAgb25lb3Jtb3Jl # ZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAicGFzc3dvcmQiCiAgICAgIG1h # eGxlbmd0aAk9ICIiCiAgICAgIG1heGxlbmd0aAk9ICJtYXhsZW5ndGg9JyVz # JyIgJSBAYXJnc1sibWF4bGVuZ3RoIl0JaWYgQGFyZ3MuaW5jbHVkZT8oIm1h # eGxlbmd0aCIpCiAgICAgIHNpemUJPSAiIgogICAgICBzaXplCT0gInNpemU9 # JyVzJyIgJSAxMAkJCWlmIHBkYQogICAgICByZXMgPDwgIjxwICN7YWxpZ259 # PjxpbnB1dCBuYW1lPScje0BhcmdzWyJuYW1lIl19JyB2YWx1ZT0nI3t2YWx1 # ZTF9JyB0eXBlPSdwYXNzd29yZCcgI3ttYXhsZW5ndGh9ICN7c2l6ZX0+Igog # ICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJjaGVj # a2JveCIKICAgICAgaWYgdmFyc2h0bWxbQGFyZ3NbIm5hbWUiXV0gPT0gIm9u # IgogICAgICAgIHN3aXRjaGVzW0BhcmdzWyJuYW1lIl1dCT0gdHJ1ZQogICAg # ICAgIHJlcyA8PCAiPHAgI3thbGlnbn0+PGlucHV0IG5hbWU9JyN7QGFyZ3Nb # Im5hbWUiXX0nIGNoZWNrZWQ9J29uJyB0eXBlPSdjaGVja2JveCc+IgogICAg # ICBlbHNlCiAgICAgICAgc3dpdGNoZXNbQGFyZ3NbIm5hbWUiXV0JPSBmYWxz # ZQogICAgICAgIHJlcyA8PCAiPHAgI3thbGlnbn0+PGlucHV0IG5hbWU9JyN7 # QGFyZ3NbIm5hbWUiXX0nIHR5cGU9J2NoZWNrYm94Jz4iCiAgICAgIGVuZAog # ICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJyYWRp # byIKICAgICAgaWYgdmFyc2h0bWxbQGFyZ3NbIm5hbWUiXV0gPT0gdmFsdWUx # CSMgPz8/IDEgb3IgMj8KICAgICAgICByZXMgPDwgIjxwICN7YWxpZ259Pjxp # bnB1dCBuYW1lPScje0BhcmdzWyJuYW1lIl19JyBjaGVja2VkPSdvbicgdmFs # dWU9JyN7dmFsdWUxfScgdHlwZT0ncmFkaW8nPiIKICAgICAgZWxzZQogICAg # ICAgIHJlcyA8PCAiPHAgI3thbGlnbn0+PGlucHV0IG5hbWU9JyN7QGFyZ3Nb # Im5hbWUiXX0nIHZhbHVlPScje3ZhbHVlMX0nIHR5cGU9J3JhZGlvJz4iCiAg # ICAgIGVuZAogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3 # aGVuICJzZWxlY3QiCiAgICAgcmVzIDw8ICI8c2VsZWN0ICN7YWxpZ259IG5h # bWU9JyN7QGFyZ3NbIm5hbWUiXX0nIHdpZHRoPScje0BhcmdzWyJ3aWR0aCJd # fSBzaXplPScje0BhcmdzWyJzaXplIl19Jz4iCSMgPz8/IE1pc3NjaGllbiBu # b2cgaWV0cyBtZXQgJ211bHRpcGxlJz8KICAgICAgbmFtZQk9IEBhcmdzWyJu # YW1lIl0KICAgICAgJHNlbGVjdAk9IHZhcnNodG1sW25hbWVdCiAgICAgIG9u # ZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gIm9wdGlvbiIKICAg # ICAgaWYgJHNlbGVjdCA9PSBAY2hpbGRyZW5bMF0udGV4dAogICAgICAgIHJl # cyA8PCAiPG9wdGlvbiBzZWxlY3RlZD0ndHJ1ZSc+IgogICAgICBlbHNlCiAg # ICAgICAgcmVzIDw8ICI8b3B0aW9uPiIKICAgICAgZW5kCiAgICB3aGVuICJi # dXR0b24iCiAgICAgIHJlcyA8PCAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFs # dWU9JyN7QGFyZ3NbImNhcHRpb24iXX0nIG9uY2xpY2s9J2RvY3VtZW50LmJv # ZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCIje0BhcmdzWyJhY3Rpb24iXX1c # IjsnPiIKICAgICAgZmlyc3RhY3Rpb24JPDwgQGFyZ3NbImFjdGlvbiJdCWlm # IChmaXJzdGFjdGlvbi5lbXB0eT8gYW5kIEBhcmdzLmluY2x1ZGU/KCJhY3Rp # b24iKSkKICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hl # biAiYmFjayIKICAgICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2 # YWx1ZT0nQmFjaycgb25jbGljaz0nZG9jdW1lbnQuYm9keWZvcm0ucndkX2Fj # dGlvbi52YWx1ZT1cInJ3ZF9iYWNrXCI7Jz4iCiAgICAgIGZpcnN0YWN0aW9u # CTw8ICJyd2RfYmFjayIJaWYgZmlyc3RhY3Rpb24uZW1wdHk/CiAgICAgIG9u # ZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gImNhbmNlbCIKICAg # ICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ2FuY2Vs # JyBvbmNsaWNrPSdkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVl # PVwicndkX2NhbmNlbFwiOyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCAicndk # X2NhbmNlbCIJaWYgZmlyc3RhY3Rpb24uZW1wdHk/CiAgICAgIG9uZW9ybW9y # ZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gImhlbHAiCiAgICAgIHJlcyA8 # PCAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0hlbHAnIG9uY2xpY2s9 # J2RvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfaGVs # cFwiOyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCAicndkX2hlbHAiCWlmIGZp # cnN0YWN0aW9uLmVtcHR5PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRy # dWUiCiAgICB3aGVuICJxdWl0IgogICAgICByZXMgPDwgIjxpbnB1dCB0eXBl # PSdzdWJtaXQnIHZhbHVlPSdRdWl0JyBvbmNsaWNrPSdkb2N1bWVudC5ib2R5 # Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX3F1aXRcIjsnPiIKICAgICAg # Zmlyc3RhY3Rpb24JPDwgInJ3ZF9xdWl0IglpZiBmaXJzdGFjdGlvbi5lbXB0 # eT8KICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAi # Y2xvc2UiCiAgICAgIHJlcyA8PCAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFs # dWU9J0Nsb3NlJyBvbmNsaWNrPSd3aW5kb3cuY2xvc2UoKTsnPiIKICAgICAg # Zmlyc3RhY3Rpb24JPDwgInJ3ZF9xdWl0IglpZiBmaXJzdGFjdGlvbi5lbXB0 # eT8KICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAi # bWFpbiIKICAgICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1 # ZT0nTWFpbicgb25jbGljaz0nZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlv # bi52YWx1ZT1cInJ3ZF9tYWluXCI7Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8 # ICJyd2RfbWFpbiIJaWYgZmlyc3RhY3Rpb24uZW1wdHk/CiAgICAgIG9uZW9y # bW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gInJlc2V0IgogICAgICBy # ZXMgPDwgIjxpbnB1dCB0eXBlPSdyZXNldCcgIHZhbHVlPSdSZXNldCc+Igog # ICAgICBmaXJzdGFjdGlvbgk8PCAicndkX3F1aXQiCWlmIGZpcnN0YWN0aW9u # LmVtcHR5PwkjID8/PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUi # CiAgICB3aGVuICJjbG9zZXdpbmRvdyIKICAgICAgI3JlcyA8PCAiPHNjcmlw # dCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPlxuIgkjID8/PwogICAgICAjcmVz # IDw8ICI8IS0tXG4iCiAgICAgICNyZXMgPDwgIiAgd2luZG93LmNsb3NlKCk7 # XG4iCiAgICAgICNyZXMgPDwgIi8vLS0+XG4iCiAgICAgICNyZXMgPDwgIjwv # c2NyaXB0PiIKICAgIHdoZW4gInRhYnMiCiAgICAgIHJlcyA8PCAiPHRhYmxl # ICN7QUN9IGJvcmRlcj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPScw # JyBjZWxscGFkZGluZz0nMCc+IgogICAgICByZXMgPDwgIiAgPHRyICN7QUx9 # PiIKICAgICAgcmVzIDw8ICIgICAgPHRkICN7QUx9IGNsYXNzPSd0YWJzJz4i # CiAgICAgIHJlcyA8PCAiICAgICAgPHRhYmxlICN7QUx9IGJvcmRlcj0nI3sk # cndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCc+ # IgogICAgICByZXMgPDwgIiAgICAgICAgPHRyICN7QUx9PiIKICAgICAgI3Jl # cyA8PCAiICAgICAgICAgIDx0ZCBjbGFzcz0nbm90YWInPiZuYnNwOzwvdGQ+ # IgogICAgICB0YWJzLmVhY2ggZG8gfG9ianwKICAgICAgICBuYW1lCT0gb2Jq # LmFyZ3NbIm5hbWUiXQogICAgICAgIGNhcHRpb24JPSBvYmouYXJnc1siY2Fw # dGlvbiJdCgogICAgICAgIHJlcyA8PCAiPHRkICN7QUx9IGNsYXNzPSdub3Rh # Yic+Jm5ic3A7PC90ZD4iCXVubGVzcyBvYmogPT0gdGFic1swXQoKICAgICAg # ICBpZiBuYW1lID09IHRhYgogICAgICAgICAgcmVzIDw8ICI8dGQgI3tBQ30g # Y2xhc3M9J2FjdGl2ZXRhYic+PHR0PiZuYnNwOyN7Y2FwdGlvbn0mbmJzcDs8 # L3R0PjwvdGQ+IgogICAgICAgIGVsc2UKICAgICAgICAgIHJlcyA8PCAiPHRk # ICN7QUN9IGNsYXNzPSdwYXNzaXZldGFiJz48YSBocmVmPSdqYXZhc2NyaXB0 # OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfdGFi # XyN7bmFtZX1cIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPjx0dD4m # bmJzcDsje2NhcHRpb259Jm5ic3A7PC90dD48L2E+PC90ZD4iCiAgICAgICAg # ZW5kCiAgICAgIGVuZAogICAgICByZXMgPDwgIiAgICAgICAgICA8dGQgY2xh # c3M9J25vdGFiJyB3aWR0aD0nMTAwJSc+Jm5ic3A7PC90ZD4iCiAgICAgIHJl # cyA8PCAiICAgICAgICA8L3RyPiIKICAgICAgcmVzIDw8ICIgICAgICA8L3Rh # YmxlPiIKICAgICAgcmVzIDw8ICIgICAgPC90ZD4iCiAgICAgIHJlcyA8PCAi # ICA8L3RyPiIKICAgICAgcmVzIDw8ICIgIDx0ciAje2FsaWdufT4iCiAgICAg # IHJlcyA8PCAiICAgIDx0ZCAje2FsaWdufSBjbGFzcz0ndGFiYmxhZCc+Igog # ICAgd2hlbiAidGFiIgogICAgICByZXMgPDwgIjx0YWJsZSAje0FDfSBib3Jk # ZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0nMycgY2VsbHBhZGRp # bmc9JzAnPiIKICAgIHdoZW4gInBhbmVsIgogICAgICBsZXZlbAk9IChAYXJn # c1sibGV2ZWwiXSBvciAibm9ybWFsIikKICAgICAgcmVzIDw8ICI8dGFibGUg # I3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JzAn # IGNlbGxwYWRkaW5nPScwJz4iCiAgICAgIHJlcyA8PCAiICA8dHIgI3thbGln # bn0+IgogICAgICByZXMgPDwgIiAgICA8dGQgI3thbGlnbn0gY2xhc3M9J3Bh # bmVsMSc+IgkJaWYgbGV2ZWwgPT0gIm5vcm1hbCIKICAgICAgcmVzIDw8ICIg # ICAgPHRkICN7YWxpZ259IGNsYXNzPSdwYW5lbDFoaWdoJz4iCWlmIGxldmVs # ID09ICJoaWdoIgogICAgICByZXMgPDwgIiAgICA8dGQgI3thbGlnbn0gY2xh # c3M9J3BhbmVsMWxvdyc+IglpZiBsZXZlbCA9PSAibG93IgogICAgICByZXMg # PDwgIiAgICAgIDx0YWJsZSAje0FDfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9 # JyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPiIKICAgICAgcmVz # IDw8ICIgICAgICAgIDx0ciAje2FsaWdufT4iCiAgICAgIHJlcyA8PCAiICAg # ICAgICAgIDx0ZCAje2FsaWdufSBjbGFzcz0ncGFuZWwyJz4iCQlpZiBsZXZl # bCA9PSAibm9ybWFsIgogICAgICByZXMgPDwgIiAgICAgICAgICA8dGQgI3th # bGlnbn0gY2xhc3M9J3BhbmVsMmhpZ2gnPiIJaWYgbGV2ZWwgPT0gImhpZ2gi # CiAgICAgIHJlcyA8PCAiICAgICAgICAgIDx0ZCAje2FsaWdufSBjbGFzcz0n # cGFuZWwybG93Jz4iCWlmIGxldmVsID09ICJsb3ciCiAgICAgIHJlcyA8PCAi # ICAgICAgICAgICAgPHRhYmxlICN7QUN9IGJvcmRlcj0nI3skcndkX2JvcmRl # cn0nIGNlbGxzcGFjaW5nPSczJyBjZWxscGFkZGluZz0nMCc+IgogICAgZWxz # ZQogICAgICBwdXRzICI8I3tAc3VidHlwZX0+IgogICAgICByZXMgPDwgIiZs # dDsje0BzdWJ0eXBlfSZndDsiCiAgICBlbmQKCiAgICBiZWYJPSBuaWwKICAg # IGFmdAk9IG5pbAoKICAgIGNhc2UgQHN1YnR5cGUKICAgIHdoZW4gInZlcnRp # Y2FsIiwgIndpbmRvdyIsICJoZWxwd2luZG93IiwgInRhYiIsICJwYW5lbCIK # ICAgICAgcmVzIDw8IEZvcm1hdCAlIFsiQWZ0UHJlIiwgQHN1YnR5cGVdCWlm # ICRyd2RfZGVidWcKICAgICAgaWYgQGFyZ3MuaW5jbHVkZT8oInNwYWNpbmci # KQogICAgICAgIHMJPSAiPHRyPjx0ZD4mbmJzcDs8L3RkPjwvdHI+IiAqIChA # YXJnc1sic3BhY2luZyJdLnRvX2kpCiAgICAgIGVsc2UKICAgICAgICBzCT0g # IiIKICAgICAgZW5kCiAgICAgIGJlZgk9ICIje3N9PHRyICN7YWxpZ259ICN7 # dmFsaWdufT48dGQgI3thbGlnbn0+IgogICAgICBhZnQJPSAiPC90ZD48L3Ry # PiIKICAgIHdoZW4gImhvcml6b250YWwiLCAicm93IgogICAgICByZXMgPDwg # Rm9ybWF0ICUgWyJBZnRQcmUiLCBAc3VidHlwZV0JaWYgJHJ3ZF9kZWJ1Zwog # ICAgICBiZWYJPSAiPHRkICN7YWxpZ259PiIKICAgICAgYWZ0CT0gIjwvdGQ+ # IgogICAgZW5kCgogICAgYmVmb3JlLnB1c2goYmVmKQogICAgYWZ0ZXIucHVz # aChhZnQpCiAgZW5kCgogIGRlZiBwb3N0Y2hpbGRyZW4ocmVzLCBiZWZvcmUs # IGFmdGVyLCB2YXJzaHRtbCwgdmFyc3N0cmluZywgc3dpdGNoZXMsIGhlbHAs # IG9uZW9ybW9yZWZpZWxkcywgZmlyc3RhY3Rpb24sIHRhYnMsIHRhYiwgcGRh # KQogICAgY2FzZSBAc3VidHlwZQogICAgd2hlbiAidmVydGljYWwiLCAid2lu # ZG93IiwgImhlbHB3aW5kb3ciLCAidGFiIiwgInBhbmVsIgogICAgICByZXMg # PDwgRm9ybWF0ICUgWyJCZWZQb3N0IiwgQHN1YnR5cGVdCWlmICRyd2RfZGVi # dWcKICAgICAgaWYgQGFyZ3MuaW5jbHVkZT8oInNwYWNpbmciKQogICAgICAg # IHJlcyA8PCAiPHRyPjx0ZD4mbmJzcDs8L3RkPjwvdHI+IiAqIChAYXJnc1si # c3BhY2luZyJdLnRvX2kpCiAgICAgIGVuZAogICAgd2hlbiAiaG9yaXpvbnRh # bCIsICJyb3ciCiAgICAgIHJlcyA8PCBGb3JtYXQgJSBbIkJlZlBvc3QiLCBA # c3VidHlwZV0JaWYgJHJ3ZF9kZWJ1ZwogICAgZW5kCgogICAgcmVzIDw8IEZv # cm1hdCAlIFsiUG9zdCIsIEBzdWJ0eXBlXQkJaWYgJHJ3ZF9kZWJ1ZwoKICAg # IGNhc2UgQHN1YnR5cGUKICAgIHdoZW4gImFwcGxpY2F0aW9uIgogICAgd2hl # biAid2luZG93IiwgImhlbHB3aW5kb3ciCiAgICAgIGFyZ3MJPSBAYXJncy5k # ZWVwX2R1cAoKICAgICAgYXJnc1sibm9oZWxwYnV0dG9uIl0JPSAobm90IGhl # bHApCgogICAgICB0ZW1wbGF0ZQk9ICRyd2RfaHRtbF8yCiAgICAgIHRlbXBs # YXRlCT0gJHJ3ZF9odG1sX1BEQV8yCWlmIHBkYQoKICAgICAgcmVzIDw8ICh0 # ZW1wbGF0ZSh0ZW1wbGF0ZSwgYXJncykpCiAgICB3aGVuICJwIgkJdGhlbiBy # ZXMgPDwgIjwvcD4iCiAgICB3aGVuICJwcmUiCQl0aGVuIHJlcyA8PCAiPC9w # cmU+IgogICAgd2hlbiAiYmlnIgkJdGhlbiByZXMgPDwgIjwvYmlnPjwvcD4i # CiAgICB3aGVuICJzbWFsbCIJdGhlbiByZXMgPDwgIjwvc21hbGw+PC9wPiIK # ICAgIHdoZW4gImxpc3QiCQl0aGVuIHJlcyA8PCAiPC91bD4iCiAgICB3aGVu # ICJpdGVtIgkJdGhlbiByZXMgPDwgIjwvbGk+IgogICAgd2hlbiAiZW1wdHki # CXRoZW4gcmVzIDw8ICI8L3A+IgogICAgd2hlbiAiaW1hZ2UiCXRoZW4gcmVz # IDw8ICIiCiAgICB3aGVuICJwcm9ncmVzc2JhciIJdGhlbiByZXMgPDwgIiIK # ICAgIHdoZW4gImJyIgkJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gImhyIgkJ # dGhlbiByZXMgPDwgIiIKICAgIHdoZW4gImIiCQl0aGVuIHJlcyA8PCAiPC9i # PiIKICAgIHdoZW4gImkiCQl0aGVuIHJlcyA8PCAiPC9pPiIKICAgIHdoZW4g # ImEiCQl0aGVuIHJlcyA8PCAiPC9hPiIKICAgIHdoZW4gInZlcnRpY2FsIgl0 # aGVuIHJlcyA8PCAiPC90YWJsZT4iCiAgICB3aGVuICJob3Jpem9udGFsIgl0 # aGVuIHJlcyA8PCAiPC90cj48L3RhYmxlPiIKICAgIHdoZW4gInRhYmxlIgl0 # aGVuIHJlcyA8PCAiPC90YWJsZT4iCiAgICB3aGVuICJyb3ciCQl0aGVuIHJl # cyA8PCAiPC90cj4iCiAgICB3aGVuICJoaWRkZW4iCXRoZW4gcmVzIDw8ICI8 # L3A+IgogICAgd2hlbiAidGV4dCIJCXRoZW4gcmVzIDw8ICI8L3A+IgogICAg # d2hlbiAidGV4dGFyZWEiCXRoZW4gcmVzIDw8ICI8L3A+IgogICAgd2hlbiAi # cGFzc3dvcmQiCXRoZW4gcmVzIDw8ICI8L3A+IgogICAgd2hlbiAiY2hlY2ti # b3giCXRoZW4gcmVzIDw8ICI8L3A+IgogICAgd2hlbiAicmFkaW8iCXRoZW4g # cmVzIDw8ICI8L3A+IgogICAgd2hlbiAic2VsZWN0IgogICAgICByZXMgPDwg # Ijwvc2VsZWN0PiIKICAgICAgJHNlbGVjdAk9IG5pbAogICAgd2hlbiAib3B0 # aW9uIgl0aGVuIHJlcyA8PCAiPC9vcHRpb24+IgogICAgd2hlbiAiYnV0dG9u # Igl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiYmFjayIJCXRoZW4gcmVzIDw8 # ICIiCiAgICB3aGVuICJjYW5jZWwiCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVu # ICJoZWxwIgkJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gInF1aXQiCQl0aGVu # IHJlcyA8PCAiIgogICAgd2hlbiAiY2xvc2UiCXRoZW4gcmVzIDw8ICIiCiAg # ICB3aGVuICJtYWluIgkJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gInJlc2V0 # Igl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiY2xvc2V3aW5kb3ciCXRoZW4g # cmVzIDw8ICIiCiAgICB3aGVuICJ0YWJzIgogICAgICByZXMgPDwgIiAgICA8 # L3RkPiIKICAgICAgcmVzIDw8ICIgIDwvdHI+IgogICAgICByZXMgPDwgIjwv # dGFibGU+IgogICAgd2hlbiAidGFiIgogICAgICByZXMgPDwgIjwvdGFibGU+ # IgogICAgd2hlbiAicGFuZWwiCiAgICAgIHJlcyA8PCAiICAgICAgICAgICAg # PC90YWJsZT4iCiAgICAgIHJlcyA8PCAiICAgICAgICAgIDwvdGQ+IgogICAg # ICByZXMgPDwgIiAgICAgICAgPC90cj4iCiAgICAgIHJlcyA8PCAiICAgICAg # PC90YWJsZT4iCiAgICAgIHJlcyA8PCAiICAgIDwvdGQ+IgogICAgICByZXMg # PDwgIiAgPC90cj4iCiAgICAgIHJlcyA8PCAiPC90YWJsZT4iCiAgICBlbHNl # CiAgICAgIHB1dHMgIjwvI3tAc3VidHlwZX0+IgogICAgICByZXMgPDwgIiZs # dDsvI3tAc3VidHlwZX0mZ3Q7IgogICAgZW5kCgogICAgYmVmb3JlLnBvcAog # ICAgYWZ0ZXIucG9wCgogICAgYWZ0CT0gYWZ0ZXJbLTFdCiAgICByZXMgPDwg # Rm9ybWF0ICUgWyJBZnRlciIsIEBzdWJ0eXBlXQkJaWYgKCRyd2RfZGVidWcg # YW5kIG5vdCBhZnQubmlsPykKICAgIHJlcyA8PCBhZnQJaWYgbm90IGFmdC5u # aWw/CiAgZW5kCgogIGRlZiB0ZW1wbGF0ZShodG1sLCB2YXJzKQogICAgcmVz # CT0gW10KCiAgICBhCT0ge30KCiAgICB2YXJzLmVhY2ggZG8gfGssIHZ8CiAg # ICAgIGFbay51cGNhc2VdCT0gdgogICAgZW5kCgogICAgbG9nbwk9IG5pbAog # ICAgbG9nbwk9IEZpbGUuZXhwYW5kX3BhdGgodmFyc1sibG9nbyJdLCAkcndk # X2ZpbGVzKQkJaWYgdmFycy5pbmNsdWRlPygibG9nbyIpCiAgICBsb2dvCT0g # bmlsCQkJCQkJCXVubGVzcyBsb2dvLm5pbD8gb3IgRmlsZS5maWxlPyhsb2dv # KQoKICAgIHdhdGVybWFyawk9IG5pbAogICAgd2F0ZXJtYXJrCT0gRmlsZS5l # eHBhbmRfcGF0aCh2YXJzWyJ3YXRlcm1hcmsiXSwgJHJ3ZF9maWxlcykJaWYg # dmFycy5pbmNsdWRlPygid2F0ZXJtYXJrIikKICAgIHdhdGVybWFyawk9IG5p # bAkJCQkJCQl1bmxlc3Mgd2F0ZXJtYXJrLm5pbD8gb3IgRmlsZS5maWxlPyh3 # YXRlcm1hcmspCgogICAgYVsiTE9HTyJdCQk9ICIiCXVubGVzcyBub3QgbG9n # by5uaWw/CiAgICBhWyJXQVRFUk1BUksiXQk9ICIiCXVubGVzcyBub3Qgd2F0 # ZXJtYXJrLm5pbD8KCiAgICBhWyJIRUxQQlVUVE9OIl0JPSAobm90ICh2YXJz # WyJub2hlbHBidXR0b24iXSkpCiAgICBhWyJCQUNLQlVUVE9OUyJdCT0gKG5v # dCAodmFyc1sibm9iYWNrYnV0dG9ucyJdKSkKICAgIGFbIkJBQ0tCVVRUT05T # Il0JPSAobm90ICh2YXJzWyJub2JhY2tidXR0b25zIl0pKQogICAgYVsiQ0xP # U0VCVVRUT04iXQk9IChub3QgKHZhcnNbIm5vY2xvc2VidXR0b24iXSkpCgog # ICAgaWYgYS5pbmNsdWRlPygiV0lEVEgiKQogICAgICBhWyJXSURUSDEiXQk9 # ICJ3aWR0aD0nI3thWyJXSURUSCJdfSciCiAgICAgIGFbIldJRFRIMiJdCT0g # YVsiV0lEVEgiXQogICAgZWxzZQogICAgICBhWyJXSURUSDEiXQk9ICIgIgog # ICAgICBhWyJXSURUSDIiXQk9ICIxIgogICAgZW5kCgogICAgaHRtbC5zcGxp # dCgvXHIqXG4vKS5lYWNoIGRvIHxsaW5lfAogICAgICBpZiBsaW5lID1+IC8l # W0EtWjAtOV0rJS8KICAgICAgICBhLmVhY2ggZG8gfGssIHZ8CiAgICAgICAg # ICB2CT0gZmFsc2UJaWYgKHYua2luZF9vZj8oU3RyaW5nKSBhbmQgdi5lbXB0 # eT8pCgogICAgICAgICAgaWYgbGluZS5pbmNsdWRlPygiJSN7a30lIikKICAg # ICAgICAgICAgbGluZS5nc3ViISgiJSN7a30lIiwgIiN7dn0iKQlpZiB2CiAg # ICAgICAgICBlbmQKICAgICAgICBlbmQKCiAgICAgICAgbGluZQk9ICI8IS0t # ICN7bGluZS5zY2FuKC8lW0EtWjAtOV0rJS8pLmpvaW4oIiAiKX0gLS0+Iglp # ZiBsaW5lID1+IC8lW0EtWjAtOV0rJS8KICAgICAgZW5kCgogICAgICByZXMg # PDwgbGluZQogICAgZW5kCgogICAgcmVzLmpvaW4oIlxuIikKICBlbmQKZW5k # CgpjbGFzcyBUZXh0CiAgZGVmIHByZWNoaWxkcmVuKHJlcywgYmVmb3JlLCBh # ZnRlciwgdmFyc2h0bWwsIHZhcnNzdHJpbmcsIHN3aXRjaGVzLCBoZWxwLCBv # bmVvcm1vcmVmaWVsZHMsIGZpcnN0YWN0aW9uLCB0YWJzLCB0YWIsIHBkYSkK # ICAgIGlmIG5vdCBAdGV4dC5zY2FuKC9bXiBcdFxyXG5dLykuZW1wdHk/CiAg # ICAgIHJlcyA8PCBGb3JtYXQgJSBbIlRleHQiLCAiIl0JaWYgJHJ3ZF9kZWJ1 # ZwogICAgICByZXMgPDwgIiN7QHRleHR9IgogICAgZW5kCiAgZW5kCmVuZAoK # Y2xhc3MgUldEVHJlZSA8IFhNTAplbmQKCmNsYXNzIFJXRFdpbmRvdwogIEBA # d2luZG93cwk9IHt9CSMgS2luZCBvZiBjYWNoaW5nLgogIEBAaGVscHdpbmRv # d3MJPSB7fQkjIEtpbmQgb2YgY2FjaGluZy4KCiAgZGVmIGluaXRpYWxpemUo # cndkLCB3aW5kb3c9bmlsKQogICAgcndkCT0gcndkLmpvaW4oIlxuIikJaWYg # cndkLmtpbmRfb2Y/KEFycmF5KQoKICAgIGlmIEBAd2luZG93c1tyd2RdLm5p # bD8KICAgICAgQEB3aW5kb3dzW3J3ZF0JCT0ge30KICAgICAgQEBoZWxwd2lu # ZG93c1tyd2RdCT0ge30KCiAgICAgIHRyZWUJPSBYTUwubmV3KHJ3ZCkKCiAg # ICAgIHRyZWUucGFyc2UoT3BlblRhZywgIndpbmRvdyIpIGRvIHx0eXBlLCBv # Ymp8CiAgICAgICAgJHJ3ZF9hcHB2YXJzLmVhY2h7fGssIHZ8IG9iai5hcmdz # W2tdID0gdn0KICAgICAgICBAQHdpbmRvd3NbcndkXVtvYmouYXJnc1sibmFt # ZSJdXQk9IG9iai50b19oCiAgICAgIGVuZAoKICAgICAgdHJlZS5wYXJzZShP # cGVuVGFnLCAiaGVscHdpbmRvdyIpIGRvIHx0eXBlLCBvYmp8CiAgICAgICAg # JHJ3ZF9hcHB2YXJzLmVhY2h7fGssIHZ8IG9iai5hcmdzW2tdID0gdn0KICAg # ICAgICBAQGhlbHB3aW5kb3dzW3J3ZF1bb2JqLmFyZ3NbIm5hbWUiXV0JPSBv # YmoudG9faAogICAgICBlbmQKICAgIGVuZAoKICAgIEByd2QJPSAoQEB3aW5k # b3dzW3J3ZF1bd2luZG93XSBvciAiIikuZHVwCiAgICBAaGVscHJ3ZAk9IChA # QGhlbHB3aW5kb3dzW3J3ZF1bd2luZG93XSBvciAiIikuZHVwCiAgZW5kCgog # IGRlZiByZW5kZXIocGRhLCBhY3Rpb249bmlsLCB2YXJzPUhhc2gubmV3LCBz # d2l0Y2hlcz1IYXNoLm5ldywgaGVscD1mYWxzZSwgdGFiPSIiKQogICAgdmFy # c2h0bWwJCT0gSGFzaC5uZXcKICAgIHZhcnNzdHJpbmcJCT0gSGFzaC5uZXcK # ICAgIG9uZW9ybW9yZWZpZWxkcwk9ICIiCiAgICBmaXJzdGFjdGlvbgkJPSAi # IgogICAgaHRtbAkJPSBbXQoKICAgIHZhcnMJPSB2YXJzLmRlZXBfZHVwCgog # ICAgdmFycy5lYWNoIGRvIHxrZXksIHZhbHVlfAogICAgICBpZiBub3Qga2V5 # LmVtcHR5PwogICAgICAgIGlmIHZhbHVlLnJlc3BvbmRfdG8/ICJ0b19zIgog # ICAgICAgICAgQHJ3ZC5nc3ViISgvJSUje2tleX0lJS8sIHZhbHVlLnRvX3Mp # CiAgICAgICAgICBAcndkLmdzdWIhKC8lI3trZXl9JS8sIHZhbHVlLnRvX3Mu # dG9faHRtbCkKCiAgICAgICAgICBAaGVscHJ3ZC5nc3ViISgvJSUje2tleX0l # JS8sIHZhbHVlLnRvX3MpCiAgICAgICAgICBAaGVscHJ3ZC5nc3ViISgvJSN7 # a2V5fSUvLCB2YWx1ZS50b19zLnRvX2h0bWwpCgogICAgICAgICAgdmFyc2h0 # bWxba2V5XQkJPSB2YWx1ZS50b19zLnRvX2h0bWwKICAgICAgICAgIHZhcnNz # dHJpbmdba2V5XQk9IHZhbHVlLnRvX3MKICAgICAgICBlbmQKICAgICAgZW5k # CiAgICBlbmQKCiAgICB3aW5kb3dvYmplY3QJPSBSV0RUcmVlLm5ldyhAcndk # KS5jaGlsZHJlbi5kdXAuZGVsZXRlX2lme3xvYmp8IG9iai5zdWJ0eXBlICE9 # ICJ3aW5kb3cifVswXQogICAgaGVscG9iamVjdAkJPSBSV0RUcmVlLm5ldyhA # aGVscHJ3ZCkuY2hpbGRyZW4uZHVwLmRlbGV0ZV9pZnt8b2JqfCBvYmouc3Vi # dHlwZSAhPSAiaGVscHdpbmRvdyJ9WzBdCgogICAgdGFic29iagk9IHdpbmRv # d29iamVjdC5jaGlsZHJlbi5kdXAuZGVsZXRlX2lme3xvYmp8IG9iai5zdWJ0 # eXBlICE9ICJ0YWJzIn1bMF0KCiAgICBpZiBub3QgdGFic29iai5uaWw/CiAg # ICAgIHRhYnMJPSB0YWJzb2JqLmNoaWxkcmVuLmR1cC5kZWxldGVfaWZ7fG9i # anwgKG5vdCBvYmoua2luZF9vZj8oT3BlblRhZykpIG9yIChvYmouc3VidHlw # ZSAhPSAidGFiIil9CgogICAgICBpZiB0YWIuZW1wdHk/CiAgICAgICAgdGFi # CQkJPSB0YWJzWzBdLmFyZ3NbIm5hbWUiXQogICAgICBlbmQKCiAgICAgIHRh # YnNvYmouY2hpbGRyZW4uZGVsZXRlX2lme3xvYmp8IChvYmoua2luZF9vZj8o # T3BlblRhZykpIGFuZCAob2JqLnN1YnR5cGUgPT0gInRhYiIpIGFuZCBvYmou # YXJnc1sibmFtZSJdICE9IHRhYn0KICAgIGVuZAoKICAgIGlmIGhlbHAKICAg # ICAgaGVscG9iamVjdC5wYXJzZXRyZWUoInByZWNoaWxkcmVuIiwgInBvc3Rj # aGlsZHJlbiIsIGh0bWwsIFsiIl0sIFsiIl0sIHZhcnNodG1sLCB2YXJzc3Ry # aW5nLCBzd2l0Y2hlcywgZmFsc2UsIG9uZW9ybW9yZWZpZWxkcywgZmlyc3Rh # Y3Rpb24sIHRhYnMsIHRhYiwgcGRhKQogICAgZWxzZQogICAgICB3aW5kb3dv # YmplY3QucGFyc2V0cmVlKCJwcmVjaGlsZHJlbiIsICJwb3N0Y2hpbGRyZW4i # LCBodG1sLCBbIiJdLCBbIiJdLCB2YXJzaHRtbCwgdmFyc3N0cmluZywgc3dp # dGNoZXMsIChub3QgQGhlbHByd2QuZW1wdHk/KSwgb25lb3Jtb3JlZmllbGRz # LCBmaXJzdGFjdGlvbiwgdGFicywgdGFiLCBwZGEpCiAgICBlbmQKCiAgICBo # dG1sCT0gaHRtbC5qb2luKCIiKQkjID8/PwoKICAgIGh0bWwuZ3N1YiEoLyUl # KltbOmFsbnVtOl1fXC1dKyUlKi8sICIiKQlpZiBub3QgJHJ3ZF9kZWJ1Zwog # ICAgaHRtbC5nc3ViISgvJSUvLCAiJSIpCiAgICBodG1sLmdzdWIhKC9cblxu # Ki8sICJcbiIpCgogICAgaWYgb25lb3Jtb3JlZmllbGRzLmVtcHR5PwogICAg # ICBmb2N1cwk9ICIiCiAgICBlbHNlCiAgICAgIGZvY3VzCT0gImRvY3VtZW50 # LmJvZHlmb3JtLmVsZW1lbnRzWzBdLmZvY3VzKCk7IgogICAgZW5kCgogICAg # Zmlyc3RhY3Rpb24JPSBhY3Rpb24JaWYgd2luZG93b2JqZWN0LmFyZ3Mua2V5 # cy5pbmNsdWRlPygicmVmcmVzaCIpCXVubGVzcyBhY3Rpb24ubmlsPwoKICAg # IGh0bWwuZ3N1YiEoL1wkUldEX0ZJUlNUQUNUSU9OXCQvCSwgZmlyc3RhY3Rp # b24pCiAgICBodG1sLmdzdWIhKC9cJFJXRF9GT0NVU1wkLwkJLCBmb2N1cykK # CiAgICBodG1sCiAgZW5kCmVuZAoKY2xhc3MgUldETWVzc2FnZSA8IFJXRFdp # bmRvdwogIGRlZiBpbml0aWFsaXplKG1zZykKICAgIHN1cGVyKCI8d2luZG93 # IHRpdGxlPSdSV0QgTWVzc2FnZScgbm9iYWNrYnV0dG9ucyBub2Nsb3NlYnV0 # dG9uPjxwPiN7bXNnfTwvcD48YmFjay8+PC93aW5kb3c+IikKICBlbmQKZW5k # CgpjbGFzcyBSV0RFcnJvciA8IFJXRFdpbmRvdwogIGRlZiBpbml0aWFsaXpl # KG1zZykKICAgIHN1cGVyKCI8d2luZG93IHRpdGxlPSdSV0QgRXJyb3InIG5v # YmFja2J1dHRvbnMgbm9jbG9zZWJ1dHRvbj48cD48Yj5FcnJvcjo8L2I+ICN7 # bXNnfTwvcD48YmFjay8+PC93aW5kb3c+IikKICBlbmQKZW5kCgpjbGFzcyBS # V0RQcm9ncmVzc0JhciA8IFJXRFdpbmRvdwogIGRlZiBpbml0aWFsaXplKHJl # ZnJlc2gsIHByb2dyZXNzKQogICAgcwk9ICIiCiAgICBzIDw8ICI8d2luZG93 # IHRpdGxlPSdSV0QgUHJvZ3Jlc3MnIG5vYmFja2J1dHRvbnMgbm9jbG9zZWJ1 # dHRvbiByZWZyZXNoPScje3JlZnJlc2h9Jz4iCiAgICBpZiBwcm9ncmVzcy5s # ZW5ndGggPT0gMQogICAgICBwcm9ncmVzcy5lYWNoIGRvIHxjYXB0aW9uLCB2 # YWx1ZXwKICAgICAgICBzIDw8ICI8cD4je2NhcHRpb259PC9wPjxwcm9ncmVz # c2JhciB2YWx1ZT0nI3t2YWx1ZX0nLz48cD4jeygxMDAqdmFsdWUpLnRvX2l9 # JSU8L3A+IgogICAgICBlbmQKICAgIGVsc2UKICAgICAgcyA8PCAiPHRhYmxl # PiIKICAgICAgcHJvZ3Jlc3MuZWFjaCBkbyB8Y2FwdGlvbiwgdmFsdWV8CiAg # ICAgICAgcyA8PCAiPHJvdz48cCBhbGlnbj0nbGVmdCc+I3tjYXB0aW9ufTwv # cD48cHJvZ3Jlc3NiYXIgdmFsdWU9JyN7dmFsdWV9Jy8+PHAgYWxpZ249J3Jp # Z2h0Jz4jeygxMDAqdmFsdWUpLnRvX2l9JSU8L3A+PC9yb3c+IgogICAgICBl # bmQKICAgICAgcyA8PCAiPC90YWJsZT4iCiAgICBlbmQKICAgIHMgPDwgIjxj # YW5jZWwvPiIKICAgIHMgPDwgIjwvd2luZG93PiIKICAgIHN1cGVyKHMpCiAg # ZW5kCmVuZAoKY2xhc3MgUldERG9uZSA8IFJXRFdpbmRvdwogIGRlZiBpbml0 # aWFsaXplKGV4aXRicm93c2VyKQogICAgc3VwZXIoIjx3aW5kb3cgdGl0bGU9 # J1JXRCBNZXNzYWdlJyBub2JhY2tidXR0b25zIG5vY2xvc2VidXR0b24+PHA+ # RG9uZS48L3A+PGk+KFNvbWUgYnJvd3NlcnMgZG9uJ3QgY2xvc2UsPGJyPmJl # Y2F1c2Ugb2Ygc2VjdXJpdHkgcmVhc29ucy4pPC9pPjxob3Jpem9udGFsPjxj # bG9zZS8+I3tleGl0YnJvd3NlciA/ICIiIDogIjxidXR0b24gY2FwdGlvbj0n # QWdhaW4nLz4ifTwvaG9yaXpvbnRhbD4je2V4aXRicm93c2VyID8gIjxjbG9z # ZXdpbmRvdy8+IiA6ICIifTwvd2luZG93PiIpCiAgZW5kCmVuZAoKY2xhc3Mg # UldEaWFsb2cKICBkZWYgaW5pdGlhbGl6ZSh4bWwpCiAgICBAcndkX3htbAkJ # CT0geG1sCiAgICBAcndkX2V4aXRicm93c2VyCQk9IGZhbHNlCiAgICBAcndk # X2hpc3RvcnkJCT0gW10KICAgIEByd2RfaWdub3JlX3ZhcnMJCT0gW10KICAg # IEByd2RfY2FsbF9hZnRlcl9iYWNrCT0gW10KICAgIEByd2RfdGltZQkJCT0g # VGltZS5ub3cKCiAgICAkcndkX2FwcHZhcnMJPSB7fQlpZiAkcndkX2FwcHZh # cnMubmlsPwogICAgWE1MLm5ldyh4bWwpLnBhcnNlKE9wZW5UYWcsICJhcHBs # aWNhdGlvbiIpIGRvIHx0eXBlLCBvYmp8CiAgICAgIG9iai5hcmdzLmRlZXBf # ZHVwLmVhY2ggZG8gfGssIHZ8CiAgICAgICAgJHJ3ZF9hcHB2YXJzW2tdCT0g # dgogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgc2VsZi5maWxlKHJ3 # ZGZpbGUsICphcmdzKQogICAgbmV3KEZpbGUubmV3KHJ3ZGZpbGUpLnJlYWRs # aW5lcywgKmFyZ3MpCiAgZW5kCgogIGRlZiBzZXJ2ZShwb3J0PW5pbCwgYXV0 # aD1uaWwsIHJlYWxtPXNlbGYuY2xhc3MudG9fcykKICAgIGV4aXQJaWYgJHJ3 # ZF9leGl0CgogICAgcmFpc2UgIlJXRCBpcyBub3QgaW5pdGlhbGl6ZWQuIglp # ZiBAcndkX3htbC5uaWw/CgogICAgbG93LCBoaWdoCT0gRU5WWyJSV0RQT1JU # UyJdLnNwbGl0KC9bXlxkK10vKQogICAgaGlnaAk9IGxvdwlpZiBoaWdoLm5p # bD8KICAgIGxvdywgaGlnaAk9IGxvdy50b19pLCBoaWdoLnRvX2kKCiAgICBp # bwkJPSBuaWwKCiAgICBwb3J0LCBpbwk9IFRDUFNlcnZlci5mcmVlcG9ydChs # b3csIGhpZ2gsIChub3QgYXV0aC5uaWw/KSkJaWYgcG9ydC5uaWw/CiAgICBy # YWlzZSAiTm8gZnJlZSBUQ1AgcG9ydC4iCQkJCQkJaWYgcG9ydC5uaWw/Cgog # ICAgcG9ydAk9IHBvcnQudG9faQoKICAgIEByd2Rfc2VydmVyCT0gUldEU2Vy # dmVyLm5ldyhzZWxmLCBwb3J0LCBpbywgYXV0aCwgcmVhbG0pCgogICAgc2Vs # ZgogIGVuZAoKICBkZWYgcmVuZGVyKHJlcywgcGF0aCwgcG9zdCwgZG93bmxv # YWQsIGRvd25sb2FkZmlsZSwgcGRhLCBzZXNzaW9uaWQpCgkJIyBBdm9pZCBh # IHRpbWVvdXQuCgogICAgQHJ3ZF90aW1lCQk9IFRpbWUubm93CgoJCSMgSW5p # dGlhbGl6ZSBzb21lIHZhcnMuCgogICAgdmFycwkJPSBIYXNoLm5ldwlpZiB2 # YXJzLm5pbD8KICAgIEByd2Rfc3dpdGNoZXMJPSBIYXNoLm5ldwlpZiBAcndk # X3N3aXRjaGVzLm5pbD8KCiAgICBkb25lCQk9IGZhbHNlCiAgICBoZWxwCQk9 # IGZhbHNlCiAgICBiYWNrCQk9IGZhbHNlCiAgICB0YWIJCQk9ICIiCiAgICBA # cndkX21zZ3R5cGUJPSBuaWwJaWYgQHJ3ZF9wcm9ncmVzc190aHJlYWQubmls # PwogICAgQHJ3ZF9kb3dubG9hZAk9IG5pbAogICAgQHJ3ZF9kb3dubG9hZF9m # aWxlCT0gbmlsCgoJCSMgU3dpdGNoZXMgYXJlIHVzZWQgZm9yIGNoZWNrYm94 # ZXMuCgogICAgQHJ3ZF9zd2l0Y2hlcy5lYWNoIGRvIHxrZXksIHZhbHVlfAog # ICAgICB2YXJzW2tleV0JPSAib2ZmIgogICAgZW5kCgogICAgQHJ3ZF9zd2l0 # Y2hlcwk9IEhhc2gubmV3CgoJCSMgQ29weSB0aGUgdmFycyBmcm9tIHRoZSB3 # aW5kb3cgdG8gdmFycy4gdmFycyB3aWwgbGF0ZXIgb24gYmUgY29waWVkIHRv # IGluc3RhbmNlIHZhcmlhYmxlcy4KCiAgICBwb3N0LnNvcnQuZWFjaCBkbyB8 # a2V5LCB2YWx1ZXwKICAgICAgcHV0cyAiUG9zdDogI3trZXl9IC0+ICN7dmFs # dWUuZnJvbV9odG1sLmluc3BlY3R9IglpZiAkcndkX2RlYnVnCgogICAgICB2 # YXJzW2tleV0JPSB2YWx1ZS5mcm9tX2h0bWwKICAgIGVuZAoKCQkjIFN0YWNr # IGhhbmRsaW5nIGZvciByd2RfYWN0aW9uLCByd2Rfd2luZG93IGFuZCByd2Rf # dGFiLgoKICAgIEByd2RfYWN0aW9uCQkJPSB2YXJzWyJyd2RfYWN0aW9uIl0J # CWlmIHZhcnMuaW5jbHVkZT8oInJ3ZF9hY3Rpb24iKQogICAgQHJ3ZF9hY3Rp # b24sIEByd2RfYXJncwk9IEByd2RfYWN0aW9uLnNwbGl0KC9cLy8sIDIpCXVu # bGVzcyBAcndkX2FjdGlvbi5uaWw/CiAgICBAcndkX2FjdGlvbiwgcmVzdAkJ # PSBAcndkX2FjdGlvbi5zcGxpdCgvXD8vKQl1bmxlc3MgQHJ3ZF9hY3Rpb24u # bmlsPwoKICAgIEByd2RfcmVmcmVzaF9hY3Rpb24JCT0gKEByd2RfYWN0aW9u # IG9yIEByd2RfcmVmcmVzaF9hY3Rpb24gb3IgIm1haW4iKQoKICAgIHVubGVz # cyByZXN0Lm5pbD8KICAgICAgcmVzdC5lYWNoIGRvIHxzfAogICAgICAgIGss # IHYJPSBzLnNwbGl0KC89LywgMikKICAgICAgICB2YXJzW2tdCT0gdgogICAg # ICBlbmQKICAgIGVuZAoKICAgIGlmIEByd2RfYWN0aW9uID09ICJyd2RfY2Fu # Y2VsIgogICAgICBAcndkX3Byb2dyZXNzX3RocmVhZC5raWxsCQl1bmxlc3Mg # QHJ3ZF9wcm9ncmVzc190aHJlYWQubmlsPwogICAgICBAcndkX3Byb2dyZXNz # X3RocmVhZAk9IG5pbAogICAgICBAcndkX2FjdGlvbgkJPSAicndkX2JhY2si # CiAgICBlbmQKCiAgICBAcndkX2hpc3RvcnkJPSBbWyJtYWluIiwgW10sICJt # YWluIiwgIiJdXQlpZiBAcndkX2hpc3RvcnkuZW1wdHk/CgogICAgaWYgQHJ3 # ZF9hY3Rpb24gPX4gL15yd2RfdGFiXy8KICAgICAgQHJ3ZF90YWIJPSBAcndk # X2FjdGlvbi5zdWIoL15yd2RfdGFiXy8sICIiKQogICAgICBAcndkX2hpc3Rv # cnlbLTFdWzNdCT0gQHJ3ZF90YWIKICAgIGVsc2UKICAgICAgY2FzZSBAcndk # X2FjdGlvbgogICAgICB3aGVuICJyd2RfYmFjayIKICAgICAgICBAcndkX2hp # c3RvcnkucG9wCiAgICAgICAgQHJ3ZF9hY3Rpb24JCQk9IChAcndkX2hpc3Rv # cnlbLTFdIG9yIFtuaWwsIG5pbCwgbmlsXSlbMF0KICAgICAgICBAcndkX2Fy # Z3MJCQk9IChAcndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5pbCwgbmlsXSlb # MV0KICAgICAgICBAcndkX3dpbmRvdwkJCT0gKEByd2RfaGlzdG9yeVstMV0g # b3IgW25pbCwgbmlsLCBuaWxdKVsyXQogICAgICAgIEByd2RfdGFiCQkJPSAo # QHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0pWzNdCiAgICAg # ICAgYmFjawkJCQk9IHRydWUKICAgICAgd2hlbiAicndkX2hlbHAiCiAgICAg # ICAgaGVscAkJCQk9IHRydWUKICAgICAgd2hlbiAicndkX21haW4iCiAgICAg # ICAgQHJ3ZF9hY3Rpb24JCQk9IG5pbAogICAgICAgIEByd2Rfd2luZG93CQkJ # PSBuaWwKICAgICAgICBAcndkX3RhYgkJCT0gbmlsCiAgICAgICAgQHJ3ZF9o # aXN0b3J5CQkJPSBbXQogICAgICB3aGVuICJyd2RfcXVpdCIKICAgICAgICBk # b25lCQkJCT0gdHJ1ZQogICAgICBlbHNlCiAgICAgIGVuZAoKCQkjIEhpc3Rv # cnkgc3R1ZmYKCiAgICAgIEByd2RfaGlzdG9yeQk9IEByd2RfaGlzdG9yeVst # MTAwLi4tMV0JaWYgQHJ3ZF9oaXN0b3J5Lmxlbmd0aCA+PSAxMDAKICAgICAg # QHJ3ZF9hY3Rpb24JPSAibWFpbiIJCQlpZiBAcndkX2FjdGlvbi5uaWw/CiAg # ICAgIEByd2RfYWN0aW9uCT0gIm1haW4iCQkJaWYgQHJ3ZF9hY3Rpb24uZW1w # dHk/CiAgICAgIEByd2Rfd2luZG93CT0gIm1haW4iCQkJaWYgQHJ3ZF93aW5k # b3cubmlsPwogICAgICBAcndkX3dpbmRvdwk9ICJtYWluIgkJCWlmIEByd2Rf # d2luZG93LmVtcHR5PwogICAgICBAcndkX3RhYgkJPSAiIgkJCQlpZiBAcndk # X3RhYi5uaWw/CiAgICAgIEByd2RfYXJncwkJPSBbXQkJCQlpZiBAcndkX2Fy # Z3MubmlsPwogICAgICBAcndkX2FyZ3MJCT0gW10JCQkJaWYgQHJ3ZF9hY3Rp # b24gPT0gIm1haW4iCgogICAgICB2YXJzWyJyd2RfYWN0aW9uIl0JPSBAcndk # X2FjdGlvbgogICAgICB2YXJzWyJyd2Rfd2luZG93Il0JPSBAcndkX3dpbmRv # dwogICAgICB2YXJzWyJyd2RfdGFiIl0JCT0gQHJ3ZF90YWIKCgkJIyBDb3B5 # IHZhcnMgZnJvbSB3aW5kb3cgdG8gaW5zdGFuY2UuCgogICAgICB2YXJzLmVh # Y2ggZG8gfGssIHZ8CiAgICAgICAgaW5zdGFuY2VfZXZhbCAiQCN7a30JPSB2 # YXJzWycje2t9J10iCQlpZiAoKG5vdCBrLmVtcHR5PykgYW5kIGsuc2Nhbigv # XnJ3ZF8vKS5lbXB0eT8gYW5kIG5vdCBAcndkX2lnbm9yZV92YXJzLmluY2x1 # ZGU/KCJAI3trfSIpKQogICAgICBlbmQKCgkJIyBDYWxsYmFjay4KCiAgICAg # IGlmIChub3QgYmFjaykgb3IgQHJ3ZF9jYWxsX2FmdGVyX2JhY2suaW5jbHVk # ZT8oQHJ3ZF9hY3Rpb24pCiAgICAgICAgdW5sZXNzIEByd2RfYWN0aW9uID1+ # IC9ecndkXy8KICAgICAgICAgIHB1dHMgIk1ldGhvZDogI3tAcndkX2FjdGlv # bn0oI3tAcndkX2FyZ3Muam9pbigiLCAiKX0pIglpZiAkcndkX2RlYnVnCiAg # ICAgICAgICBpZiBtZXRob2RzLmluY2x1ZGU/KEByd2RfYWN0aW9uKQogICAg # ICAgICAgICBtZXRob2QoQHJ3ZF9hY3Rpb24pLmNhbGwoKkByd2RfYXJncykK # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHV0cyAiTWV0aG9kICclcycg # aXMgbm90IGRlZmluZWQuIiAlIEByd2RfYWN0aW9uCiAgICAgICAgICBlbmQK # ICAgICAgICBlbmQKCgkJIyBIaXN0b3J5IHN0dWZmCgogICAgICAgIEByd2Rf # aGlzdG9yeQk9IFtbIm1haW4iLCBbXSwgIm1haW4iLCAiIl1dCWlmIEByd2Rf # YWN0aW9uID09ICJtYWluIgogICAgICAgIEByd2RfaGlzdG9yeQk9IFtbIm1h # aW4iLCBbXSwgIm1haW4iLCAiIl1dCWlmIEByd2RfaGlzdG9yeS5lbXB0eT8K # CiAgICAgICAgYQkJPSBbQHJ3ZF9hY3Rpb24sIEByd2RfYXJncywgQHJ3ZF93 # aW5kb3csIEByd2RfdGFiXQoKICAgICAgICBAcndkX2hpc3RvcnkucHVzaCBh # CQkJCWlmIChAcndkX2hpc3RvcnlbLTFdICE9IGEgb3Igbm90IEByd2RfbXNn # dHlwZS5uaWw/KQoKICAgICAgICBpZiBAcndkX3dpbmRvdyA9PSAicndkX2Jh # Y2siCiAgICAgICAgICBAcndkX2hpc3RvcnkucG9wCiAgICAgICAgICBAcndk # X2hpc3RvcnkucG9wCiAgICAgICAgICBAcndkX2FjdGlvbgkJCT0gKEByd2Rf # aGlzdG9yeVstMV0gb3IgW25pbCwgbmlsLCBuaWxdKVswXQogICAgICAgICAg # QHJ3ZF9hcmdzCQkJPSAoQHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBuaWws # IG5pbF0pWzFdCiAgICAgICAgICBAcndkX3dpbmRvdwkJCT0gKEByd2RfaGlz # dG9yeVstMV0gb3IgW25pbCwgbmlsLCBuaWxdKVsyXQogICAgICAgICAgQHJ3 # ZF90YWIJCQk9IChAcndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5pbCwgbmls # XSlbM10KICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCgkJIyBDb3B5 # IHZhcnMgZnJvbSBpbnN0YW5jZSB0byB3aW5kb3cuCgogICAgaW5zdGFuY2Vf # dmFyaWFibGVzLmVhY2ggZG8gfGt8CiAgICAgIGsuc3ViISgvXkAvLCAiIikK # ICAgICAgaW5zdGFuY2VfZXZhbCAidmFyc1snI3trfSddID0gQCN7a30udG9f # cyIJaWYgKGsuc2NhbigvXnJ3ZF8vKS5lbXB0eT8gYW5kIG5vdCBAcndkX2ln # bm9yZV92YXJzLmluY2x1ZGU/KCJAI3trfSIpKQogICAgZW5kCgoJCSMganVz # dCBpZ25vcmUuCgogICAgdmFycy5zb3J0LmVhY2ggZG8gfGtleSwgdmFsdWV8 # CiAgICAgIHB1dHMgIlByZTogI3trZXl9IC0+ICN7dmFsdWUuaW5zcGVjdH0i # CWlmICRyd2RfZGVidWcKICAgIGVuZAoKCgkJIyBBbnN3ZXIgdG8gYnJvd3Nl # ci4KCiAgICBpZiBkb25lCiAgICAgIHJlcyA8PCBSV0REb25lLm5ldyhAcndk # X2V4aXRicm93c2VyKS5yZW5kZXIocGRhKQogICAgZWxzZQogICAgICBpZiBu # b3QgQHJ3ZF9kb3dubG9hZC5uaWw/CiAgICAgICAgcHV0cyAiRG93bmxvYWQ6 # ICN7QHJ3ZF93aW5kb3d9IgkJaWYgJHJ3ZF9kZWJ1ZwoKICAgICAgICBkb3du # bG9hZAk8PCBAcndkX2Rvd25sb2FkCiAgICAgICAgZG93bmxvYWRmaWxlCTw8 # IEByd2RfZG93bmxvYWRfZmlsZQogICAgICBlbHNlCiAgICAgICAgaWYgbm90 # IEByd2RfcHJvZ3Jlc3NfdGhyZWFkLm5pbD8KICAgICAgICAgIHJlcyA8PCBS # V0RQcm9ncmVzc0Jhci5uZXcoQHJ3ZF9wcm9ncmVzc19yZWZyZXNoLCBAcndk # X3Byb2dyZXNzX3Byb2dyZXNzKS5yZW5kZXIocGRhLCBAcndkX3JlZnJlc2hf # YWN0aW9uKQogICAgICAgIGVsc2UKICAgICAgICAgIGlmIG5vdCBAcndkX21z # Z3R5cGUubmlsPwogICAgICAgICAgICByZXMgPDwgUldETWVzc2FnZS5uZXco # QHJ3ZF9tc2cpLnJlbmRlcihwZGEpCWlmIEByd2RfbXNndHlwZSA9PSAibWVz # c2FnZSIKICAgICAgICAgICAgcmVzIDw8IFJXREVycm9yLm5ldyhAcndkX21z # ZykucmVuZGVyKHBkYSkJaWYgQHJ3ZF9tc2d0eXBlID09ICJlcnJvciIKICAg # ICAgICAgICAgcmVzIDw8IEByd2RfbXNnCQkJCWlmIEByd2RfbXNndHlwZSA9 # PSAidGV4dCIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHV0cyAiV2lu # ZG93OiAje0Byd2Rfd2luZG93fSIJCWlmICRyd2RfZGVidWcKICAgICAgICAg # ICAgcHV0cyAiVGFiOiAje0Byd2RfdGFifSIJCWlmICRyd2RfZGVidWcKCiAg # ICAgICAgICAgIHJlcyA8PCBSV0RXaW5kb3cubmV3KEByd2RfeG1sLCBAcndk # X3dpbmRvdykucmVuZGVyKHBkYSwgQHJ3ZF9yZWZyZXNoX2FjdGlvbiwgdmFy # cywgQHJ3ZF9zd2l0Y2hlcywgaGVscCwgQHJ3ZF90YWIpCiAgICAgICAgICBl # bmQKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXR1cm4g # ZG9uZQogIGVuZAoKICBkZWYgc2FtZXdpbmRvdz8KICAgIEByd2RfaGlzdG9y # eVstMV1bMl0gPT0gQHJ3ZF93aW5kb3cKICBlbmQKCiAgZGVmIG1lc3NhZ2Uo # bXNnLCAmYmxvY2spCiAgICBAcndkX21zZwkJPSBtc2cKICAgIEByd2RfbXNn # dHlwZQk9ICJtZXNzYWdlIgogIGVuZAoKICBkZWYgZXJyb3IobXNnLCAmYmxv # Y2spCiAgICBAcndkX21zZwkJPSBtc2cKICAgIEByd2RfbXNndHlwZQk9ICJl # cnJvciIKICBlbmQKCiAgZGVmIHRleHQobXNnKQogICAgQHJ3ZF9tc2cJCT0g # IjxodG1sPjxib2R5PjxwcmU+I3ttc2d9PC9wcmU+PC9ib2R5PjwvaHRtbD4i # CiAgICBAcndkX21zZ3R5cGUJPSAidGV4dCIKICBlbmQKCiAgZGVmIHByb2dy # ZXNzYmFyKHJlZnJlc2gsICpwcm9ncmVzcykKICAgIEByd2RfcHJvZ3Jlc3Nf # cmVmcmVzaAk9IChyZWZyZXNoIG9yIDEpCiAgICBAcndkX3Byb2dyZXNzX3By # b2dyZXNzCT0gW10KCiAgICB3aGlsZSBub3QgcHJvZ3Jlc3MuZW1wdHk/CiAg # ICAgIHMJPSAocHJvZ3Jlc3Muc2hpZnQgb3IgIiIpCiAgICAgIGlmIHMua2lu # ZF9vZj8oQXJyYXkpCiAgICAgICAgY2FwdGlvbiwgdmFsdWUJPSBzCiAgICAg # ICAgdmFsdWUJPSAodmFsdWUgb3IgMC4wKS50b19mCiAgICAgIGVsc2UKICAg # ICAgICBjYXB0aW9uCT0gcwogICAgICAgIHZhbHVlCT0gKHByb2dyZXNzLnNo # aWZ0IG9yIDAuMCkudG9fZgogICAgICBlbmQKCiAgICAgIEByd2RfcHJvZ3Jl # c3NfcHJvZ3Jlc3MgPDwgW2NhcHRpb24sIHZhbHVlXQogICAgZW5kCgogICAg # aWYgQHJ3ZF9wcm9ncmVzc190aHJlYWQubmlsPwogICAgICBAcndkX3Byb2dy # ZXNzX3Byb2dyZXNzLmVhY2ggZG8gfGF8CiAgICAgICAgYVsxXQk9IDAuMAog # ICAgICBlbmQKCiAgICAgIEByd2RfcHJvZ3Jlc3NfdGhyZWFkID0KICAgICAg # VGhyZWFkLm5ldyBkbwogICAgICAgIHlpZWxkCiAgICAgIGVuZAogICAgICBU # aHJlYWQucGFzcwogICAgZW5kCgogICAgQHJ3ZF9wcm9ncmVzc190aHJlYWQJ # PSBuaWwJdW5sZXNzIEByd2RfcHJvZ3Jlc3NfdGhyZWFkLmFsaXZlPwogIGVu # ZAoKICBkZWYgZG93bmxvYWQoZGF0YSwgZmlsZW5hbWU9IiIpCiAgICBAcndk # X2Rvd25sb2FkCT0gZGF0YQogICAgQHJ3ZF9kb3dubG9hZF9maWxlCT0gZmls # ZW5hbWUKICBlbmQKCiAgZGVmIGV4aXRicm93c2VyCiAgICBAcndkX2V4aXRi # cm93c2VyCT0gdHJ1ZQogIGVuZAoKICBkZWYgdGltZW91dCh0aW1lb3V0LCBp # bnRlcnZhbD0xKQogICAgQHJ3ZF90aW1lb3V0CT0gdGltZW91dAoKICAgIHVu # bGVzcyBAcndkX3RpbWVvdXRfdGhyZWFkCiAgICAgIEByd2RfdGltZW91dF90 # aHJlYWQgPQogICAgICBUaHJlYWQubmV3IGRvCiAgICAgICAgbG9vcCBkbwog # ICAgICAgICAgaWYgVGltZS5ub3cgLSBAcndkX3RpbWUgPiBAcndkX3RpbWVv # dXQKICAgICAgICAgICAgJHN0ZGVyci5wdXRzICJFeGl0aW5nIGR1ZSB0byB0 # aW1lb3V0ICgje0Byd2RfdGltZW91dH0gc2Vjb25kcykuIgogICAgICAgICAg # ICBleGl0IDEKICAgICAgICAgIGVuZAogICAgICAgICAgc2xlZXAgaW50ZXJ2 # YWwKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5kCgpj # bGFzcyBSV0RMb2dpbiA8IFJXRGlhbG9nCiAgZGVmIGluaXRpYWxpemUocmVh # bG0pCiAgICBzdXBlcigiPHdpbmRvdyBuYW1lPSdtYWluJyB0aXRsZT0nUldE # IExvZ2luIGZvciAje3JlYWxtfScgbm9iYWNrYnV0dG9ucyBub2Nsb3NlYnV0 # dG9uPjx0YWJsZT48cm93PjxwIGFsaWduPSdyaWdodCc+VXNlcm5hbWU6PC9w # Pjx0ZXh0IG5hbWU9J3J3ZF9hJy8+PC9yb3c+PHJvdz48cCBhbGlnbj0ncmln # aHQnPlBhc3N3b3JkOjwvcD48cGFzc3dvcmQgbmFtZT0ncndkX2InLz48L3Jv # dz48L3RhYmxlPjxidXR0b24gY2FwdGlvbj0nTG9naW4nLz48L3dpbmRvdz4i # KQogIGVuZAplbmQKCmNsYXNzIFJXRFRpbWVPdXQgPCBSV0RpYWxvZwogIGRl # ZiBpbml0aWFsaXplCiAgICBzdXBlcigiPHdpbmRvdyBuYW1lPSdtYWluJyB0 # aXRsZT0nUldEIEVycm9yJyBub2JhY2tidXR0b25zIG5vY2xvc2VidXR0b24+ # PHA+PGI+RXJyb3I6PC9iPiBTZXNzaW9uIGhhcyBleHBpcmVkLjwvcD48YnV0 # dG9uIGNhcHRpb249J05ldyBzZXNzaW9uJy8+PC93aW5kb3c+IikKICBlbmQK # ZW5kCgpjbGFzcyBTZXNzaW9uQ2xlYW51cAogIGRlZiBpbml0aWFsaXplKHNl # c3Npb25zLCBpbnRlcnZhbCwgdGltZW91dCkKICAgIGV2ZXJ5KGludGVydmFs # KSBkbwogICAgICBzZXNzaW9ucy5kZWxldGVfaWYgZG8gfGlkLCBzZXNzaW9u # fAogICAgICAgIHRpbWUJPSBUaW1lLm5vdy50b19pIC0gc2Vzc2lvbi5sYXN0 # YWNjZXNzLnRvX2kKCiAgICAgICAgcHV0cyAiU2Vzc2lvbiAlcyBkZWxldGVk # IiAlIGlkCWlmIHRpbWUgPiB0aW1lb3V0CgogICAgICAgIHRpbWUgPiB0aW1l # b3V0CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKY2xhc3MgU2Vzc2lv # bnMKICBkZWYgaW5pdGlhbGl6ZShyYWNrLCBjbGVhbnVwKQogICAgQHJhY2sJ # PSByYWNrLnRvX3MKICAgIEBjbGVhbnVwCT0gU2Vzc2lvbkNsZWFudXAubmV3 # KHNlbGYsIDM2MDAsIDI0KjM2MDApCWlmIGNsZWFudXAKICAgIEBzZXNzaW9u # cwk9IHt9CiAgZW5kCgogIGRlZiBbXShzZXNzaW9uaWQpCiAgICBAc2Vzc2lv # bnNbc2Vzc2lvbmlkXQogIGVuZAoKICBkZWYgW109KHNlc3Npb25pZCwgdmFs # dWUpCiAgICBAc2Vzc2lvbnNbc2Vzc2lvbmlkXQk9IHZhbHVlCiAgZW5kCgog # IGRlZiBkZWxldGUoc2Vzc2lvbmlkKQogICAgQHNlc3Npb25zLmRlbGV0ZShz # ZXNzaW9uaWQpCiAgZW5kCgogIGRlZiBkZWxldGVfaWYoJmJsb2NrKQogICAg # QHNlc3Npb25zLmRlbGV0ZV9pZnt8aywgdnwgYmxvY2suY2FsbChrLCB2KX0K # ICBlbmQKCiAgZGVmIGluY2x1ZGU/KHNlc3Npb25pZCkKICAgIEBzZXNzaW9u # cy5pbmNsdWRlPyhzZXNzaW9uaWQpCiAgZW5kCmVuZAoKY2xhc3MgUldEU2Vz # c2lvbiA8IEhhc2gKICBhdHRyX3JlYWRlciA6c2Vzc2lvbmlkCiAgYXR0cl9y # ZWFkZXIgOmxhc3RhY2Nlc3MKICBhdHRyX3JlYWRlciA6YXV0aGVudGljYXRl # ZAogIGF0dHJfd3JpdGVyIDphdXRoZW50aWNhdGVkCgogIGRlZiBpbml0aWFs # aXplKHNlc3Npb25pZD1uaWwpCiAgICBAc2Vzc2lvbmlkCQk9IHNlc3Npb25p # ZAogICAgQGxhc3RhY2Nlc3MJCT0gVGltZS5ub3cKICAgIEBhdXRoZW50aWNh # dGVkCT0gZmFsc2UKICBlbmQKCiAgZGVmIHRvdWNoCiAgICBAbGFzdGFjY2Vz # cwk9IFRpbWUubm93CiAgZW5kCgogIGRlZiByZW5kZXIocmVzLCBwYXRoLCBw # b3N0LCBkb3dubG9hZCwgZG93bmxvYWRmaWxlLCBwZGEpCiAgICBkb25lCT0g # c2VsZlsib2JqZWN0Il0ucmVuZGVyKHJlcywgcGF0aCwgcG9zdCwgZG93bmxv # YWQsIGRvd25sb2FkZmlsZSwgcGRhLCBAc2Vzc2lvbmlkKQoKICAgIHJlcy5n # c3ViISgvXCRSV0RfU0VTU0lPTlwkLywgZG9uZSA/ICIiIDogIiN7QHNlc3Np # b25pZH0iKQoKICAgIHJldHVybiBkb25lCiAgZW5kCmVuZAoKY2xhc3MgUldE # U2VydmVyCiAgZGVmIGluaXRpYWxpemUob2JqLCBwb3J0LCBpbywgYXV0aCwg # cmVhbG0pCiAgICBAb2JqZWN0CQk9IG9iagogICAgQGxvY2FsYnJvd3NpbmcJ # PSBmYWxzZQogICAgQGJyb3dzZXJzdGFydGVkCT0gZmFsc2UKICAgIEBzZXNz # aW9ucwkJPSBTZXNzaW9ucy5uZXcob2JqLmNsYXNzLCAobm90IGF1dGgubmls # PykpCgogICAgaWYgYXV0aC5uaWw/CiAgICAgIEBsb2NhbGJyb3dzaW5nCT0g # dHJ1ZQoKICAgICAgaWYgRU5WLmluY2x1ZGU/KCJSV0RCUk9XU0VSIikgYW5k # IG5vdCBFTlZbIlJXREJST1dTRVIiXS5uaWw/IGFuZCBub3QgRU5WWyJSV0RC # Uk9XU0VSIl0uZW1wdHk/CiAgICAgICAgQGJyb3dzZXJzdGFydGVkCT0gdHJ1 # ZQogICAgICAgIEBvYmplY3QuZXhpdGJyb3dzZXIKCgkjIFN0YXJ0IGJyb3dz # ZXIuCgogICAgICAgIEBicm93c2VydGhyZWFkCT0KICAgICAgICBUaHJlYWQu # bmV3IGRvCiAgICAgICAgICBwdXRzICJTdGFydGluZyB0aGUgYnJvd3Nlci4u # LiIKCiAgICAgICAgICAjaWYgRU5WWyJSV0RCUk9XU0VSIl0uZG93bmNhc2Ug # PX4gL2lleHBsb3JlLwkjID8/PwogICAgICAgICAgICAjQGllCT0gSUUubmV3 # KCJodHRwOi8vbG9jYWxob3N0OiN7cG9ydH0vIikKICAgICAgICAgICNlbHNl # CiAgICAgICAgICAgIGJyb3dzZXIJPSBFTlZbIlJXREJST1dTRVIiXS5kdXAK # ICAgICAgICAgICAgdXJsCQk9ICJodHRwOi8vbG9jYWxob3N0OiVzLyIgJSBb # cG9ydF0KCiAgICAgICAgICAgIHJlCQk9IC9bJCVdMVxiLwogICAgICAgICAg # ICBjb21tYW5kCT0gIiVzIFwiJXNcIiIgJSBbYnJvd3NlciwgdXJsXQogICAg # ICAgICAgICBjb21tYW5kCT0gYnJvd3Nlci5nc3ViKHJlLCB1cmwpCWlmIGJy # b3dzZXIgPX4gcmUKCiAgICAgICAgICAgIGNvbW1hbmQuZ3N1YiEoLyVwb3J0 # JS8sIHBvcnQudG9fcykKCiAgICAgICAgICAgIHN5c3RlbShjb21tYW5kKSBv # ciAkc3RkZXJyLnB1dHMgIlN0YXJ0aW5nIG9mIHRoZSBicm93c2VyIGZhaWxl # ZCwgb3IgdGhlIGJyb3dzZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5LlxuQ29t # bWFuZCA9PiAje2NvbW1hbmR9IgogICAgICAgICAgI2VuZAoKICAgICAgICAg # IHB1dHMgIlRoZSBicm93c2VyIGhhcyB0ZXJtaW5hdGVkLiIKICAgICAgICBl # bmQKICAgICAgZW5kCiAgICBlbmQKCgkjIFN0YXJ0IHNlcnZlci4KCiAgICBw # b3J0aW8JCT0gcG9ydAogICAgcG9ydGlvCQk9IFtwb3J0LCBpb10JdW5sZXNz # IGlvLm5pbD8KICAgIHRocmVhZGxpbWl0ZXIJPSBUaHJlYWRMaW1pdGVyLm5l # dygxKQoKICAgIEhUVFBTZXJ2ZXIuc2VydmUocG9ydGlvLCAobm90IGF1dGgu # bmlsPykpIGRvIHxyZXEsIHJlc3B8CiAgICAgIHRocmVhZGxpbWl0ZXIud2Fp # dCBkbwogICAgICAgIHZhcnMJPSB7fQogICAgICAgIHJlcS52YXJzLmVhY2gg # ZG8gfGssIHZ8CiAgICAgICAgICB2YXJzW2tdCT0gdi5qb2luKCJcdCIpCiAg # ICAgICAgZW5kCiAgICAgICAgcGFkCT0gKHJlcS5yZXF1ZXN0LnBhdGggb3Ig # Ii8iKQoKICAgICAgICBpZiBhdXRoLmtpbmRfb2Y/IFN0cmluZwogICAgICAg # ICAgZmlsZQk9ICIje2hvbWV9LyN7YXV0aH0iCiAgICAgICAgICBhdXRocwk9 # IHt9CiAgICAgICAgICBhdXRocwk9IEhhc2guZmlsZShmaWxlKQlpZiBGaWxl # LmZpbGU/KGZpbGUpCiAgICAgICAgZWxzZQogICAgICAgICAgYXV0aHMJPSBh # dXRoCiAgICAgICAgZW5kCgogICAgICAgICNvbGRzZXNzaW9uaWQJPSB2YXJz # WyJyd2Rfc2Vzc2lvbiJdCiAgICAgICAgb2xkc2Vzc2lvbmlkCT0gcmVxLmNv # b2tpZXNbInNlc3Npb25pZCJdCgoJCSMgUmV0cmlldmUgc2Vzc2lvbi4KCiAg # ICAgICAgc2Vzc2lvbgk9IEBzZXNzaW9uc1tvbGRzZXNzaW9uaWRdCgoJCSMg # RXZlbnR1YWxseSBjcmVhdGUgbmV3IHNlc3Npb24uCgogICAgICAgIGlmIHNl # c3Npb24ubmlsPwogICAgICAgICAgc2Vzc2lvbmlkCT0gTUQ1Lm5ldyhyZXEu # cGVlcmFkZHJbM10udG9fcyArIEBvYmplY3QuaW5zcGVjdC50b19zICsgKCIl # MS42ZiIgJSBUaW1lLm5vdy50b19mKSkudG9fcwl3aGlsZSAoc2Vzc2lvbmlk # ID09IG5pbCBvciBAc2Vzc2lvbnMuaW5jbHVkZT8oc2Vzc2lvbmlkKSkKICAg # ICAgICAgIHNlc3Npb24JCT0gUldEU2Vzc2lvbi5uZXcoc2Vzc2lvbmlkKQoK # ICAgICAgICAgIGlmIGF1dGgubmlsPwogICAgICAgICAgICBzZXNzaW9uWyJv # YmplY3QiXQkJPSBAb2JqZWN0CiAgICAgICAgICBlbHNlCiAgICAgICAgICAg # IHNlc3Npb25bIm9iamVjdCJdCQk9IEBvYmplY3QuY2xvbmUKICAgICAgICAg # IGVuZAoKICAgICAgICAgIGlmIG9sZHNlc3Npb25pZC5uaWw/IG9yIG9sZHNl # c3Npb25pZC5lbXB0eT8KICAgICAgICAgICAgaWYgbm90IGF1dGgubmlsPyBh # bmQgbm90IGF1dGguZW1wdHk/IGFuZCBub3Qgc2Vzc2lvbi5hdXRoZW50aWNh # dGVkIGFuZCBwYWQgIX4gL15cL3J3ZF8vCgoJCSMgQ2hlY2sgYXV0aGVudGlj # YXRpb24KCiAgICAgICAgICAgICAgdXMJPSB2YXJzWyJyd2RfYSJdCiAgICAg # ICAgICAgICAgcGEJPSB2YXJzWyJyd2RfYiJdCgogICAgICAgICAgICAgIGlm # IHVzLm5pbD8gb3IgcGEubmlsPyBvciBhdXRoc1t1c10gIT0gcGEKICAgICAg # ICAgICAgICAgIHNlc3Npb24JCQkJPSBSV0RTZXNzaW9uLm5ldwogICAgICAg # ICAgICAgICAgc2Vzc2lvblsib2JqZWN0Il0JCT0gUldETG9naW4ubmV3KHJl # YWxtKQogICAgICAgICAgICAgICAgcGFkCQkJCT0gIi8iCiAgICAgICAgICAg # ICAgZWxzZQogICAgICAgICAgICAgICAgc2Vzc2lvbi5hdXRoZW50aWNhdGVk # CQk9IHRydWUKICAgICAgICAgICAgICAgIEBzZXNzaW9uc1tzZXNzaW9uLnNl # c3Npb25pZF0JPSBzZXNzaW9uCiAgICAgICAgICAgICAgZW5kCiAgICAgICAg # ICAgIGVsc2UKICAgICAgICAgICAgICBzZXNzaW9uLmF1dGhlbnRpY2F0ZWQJ # CT0gdHJ1ZQogICAgICAgICAgICAgIEBzZXNzaW9uc1tzZXNzaW9uLnNlc3Np # b25pZF0JPSBzZXNzaW9uCiAgICAgICAgICAgIGVuZAogICAgICAgICAgZWxz # ZQogICAgICAgICAgICBzZXNzaW9uCQk9IFJXRFNlc3Npb24ubmV3CiAgICAg # ICAgICAgIHNlc3Npb25bIm9iamVjdCJdCT0gUldEVGltZU91dC5uZXcKICAg # ICAgICAgIGVuZAoKICAgICAgICAgIHZhcnMJPSB7fQogICAgICAgIGVuZAoK # CQkjIEF2b2lkIHRpbWVvdXQuCgogICAgICAgIHNlc3Npb24udG91Y2gKCiAg # ICAgICAgaWYgcGFkID09ICIvIgoKCQkjIFNlcnZlIG1ldGhvZHMvY2FsbGJh # Y2tzLgoKCQkjIEJ1aWxkIG5ldyBwYWdlLgoKICAgICAgICAgIGRvd25sb2Fk # CT0gIiIKICAgICAgICAgIGRvd25sb2FkZmlsZQk9ICIiCiAgICAgICAgICBy # ZXMJCT0gIiIKCiAgICAgICAgICBkb25lCT0gc2Vzc2lvbi5yZW5kZXIocmVz # LCBwYWQsIHZhcnMsIGRvd25sb2FkLCBkb3dubG9hZGZpbGUsIHJlcS5wZGE/ # KQoKICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIGlmIGRvd25sb2FkLmVt # cHR5PwogICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCQk9ICJ0 # ZXh0L2h0bWwiCiAgICAgICAgICAgICAgaWYgZG9uZQogICAgICAgICAgICAg # ICAgcmVzcC5jb29raWVzWyJzZXNzaW9uaWQiXQk9ICIiCiAgICAgICAgICAg # ICAgZWxzZQogICAgICAgICAgICAgICAgcmVzcC5jb29raWVzWyJzZXNzaW9u # aWQiXQk9IHNlc3Npb24uc2Vzc2lvbmlkCiAgICAgICAgICAgICAgZW5kCgog # ICAgICAgICAgICAgIHJlc3AgPDwgcmVzCiAgICAgICAgICAgIGVsc2UKICAg # ICAgICAgICAgICByZXNwWyJDb250ZW50LVR5cGUiXQkJPSAiYXBwbGljYXRp # b24vb2N0ZXQtc3RyZWFtIgogICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQt # RGlzcG9zaXRpb24iXQk9ICJhdHRhY2htZW50OyIKICAgICAgICAgICAgICBy # ZXNwWyJDb250ZW50LURpc3Bvc2l0aW9uIl0JPSAiYXR0YWNobWVudDsgZmls # ZW5hbWU9JXMiICUgZG93bmxvYWRmaWxlCXVubGVzcyBkb3dubG9hZGZpbGUu # ZW1wdHk/CgogICAgICAgICAgICAgIHJlc3AgPDwgZG93bmxvYWQKICAgICAg # ICAgICAgZW5kCiAgICAgICAgICByZXNjdWUKICAgICAgICAgICAgcHV0cyAi # U2VuZGluZyByZXNwb25zZSB0byBicm93c2VyIGZhaWxlZC4iCgogICAgICAg # ICAgICBAc2Vzc2lvbnMuZGVsZXRlKHNlc3Npb24uc2Vzc2lvbmlkKQogICAg # ICAgICAgZW5kCgoJCSMgRXZlbnR1YWxseSBkZWxldGUgdGhpcyBzZXNzaW9u # LgoKICAgICAgICAgIGlmIGRvbmUKICAgICAgICAgICAgQHNlc3Npb25zLmRl # bGV0ZShzZXNzaW9uLnNlc3Npb25pZCkKCiAgICAgICAgICAgIGlmIEBsb2Nh # bGJyb3dzaW5nCiAgICAgICAgICAgICAgcmVzcC5zdG9wCgogICAgICAgICAg # ICAgIGlmIEBicm93c2Vyc3RhcnRlZCBhbmQgbm90IEBicm93c2VydGhyZWFk # Lm5pbD8gYW5kIEBicm93c2VydGhyZWFkLmFsaXZlPwogICAgICAgICAgICAg # ICAgcmVzcC5zdG9wIGRvCiAgICAgICAgICAgICAgICAgIHB1dHMgIldhaXRp # bmcgZm9yIHRoZSBicm93c2VyIHRvIHRlcm1pbmF0ZS4uLiIKCiAgICAgICAg # ICAgICAgICAgIEBicm93c2VydGhyZWFkLmpvaW4KICAgICAgICAgICAgICAg # IGVuZAogICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAg # ICAgIGVuZAoKICAgICAgICBlbHNlCgoJCSMgU2VydmUgZmlsZXMuCgogICAg # ICAgICAgaWYgcGFkID09ICIvcndkX3BpeGVsLmdpZiIKICAgICAgICAgICAg # cmVzcFsiQ2FjaGUtQ29udHJvbCJdCT0gIm1heC1hZ2U9ODY0MDAiCiAgICAg # ICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCT0gImltYWdlL2dpZiIKICAg # ICAgICAgICAgcmVzcCA8PCAkcndkX3BpeGVsCiAgICAgICAgICBlbHNlCiAg # ICAgICAgICAgIGlmIHNlc3Npb24uYXV0aGVudGljYXRlZAogICAgICAgICAg # ICAgIHB3ZAk9IERpci5wd2QKICAgICAgICAgICAgICBmaWxlCT0gRmlsZS5l # eHBhbmRfcGF0aChwYWQuZ3N1YigvXlwvKi8sICIiKSwgJHJ3ZF9maWxlcykK # CiAgICAgICAgICAgICAgaWYgbm90IGZpbGUuaW5kZXgocHdkKSA9PSAwCiAg # ICAgICAgICAgICAgICByZXNwWyJDb250ZW50LVR5cGUiXQk9ICJ0ZXh0L2h0 # bWwiCiAgICAgICAgICAgICAgICByZXNwLnJlc3BvbnNlCQk9ICJIVFRQLzEu # MCA0MDAgQkFEIFJFUVVFU1QiCiAgICAgICAgICAgICAgICByZXNwIDw8ICI8 # aHRtbD48Ym9keT48cD48Yj5CYWQgUmVxdWVzdC48L2I+ICg8dHQ+I3twYWR9 # PC90dD4pPC9wPjwvYm9keT48L2h0bWw+IgogICAgICAgICAgICAgIGVsc2lm # IEZpbGUuZmlsZT8oZmlsZSkKICAgICAgICAgICAgICAgIHJlc3AgPDwgRmls # ZS5uZXcoZmlsZSwgInJiIikucmVhZAlyZXNjdWUgbmlsCiAgICAgICAgICAg # ICAgZWxzZQogICAgICAgICAgICAgICAgcmVzcFsiQ29udGVudC1UeXBlIl0J # PSAidGV4dC9odG1sIgogICAgICAgICAgICAgICAgcmVzcC5yZXNwb25zZQkJ # PSAiSFRUUC8xLjAgNDA0IE5PVCBGT1VORCIKICAgICAgICAgICAgICAgIHJl # c3AgPDwgIjxodG1sPjxib2R5PjxwPjxiPk5vdCBmb3VuZC48L2I+ICg8dHQ+ # I3twYWR9PC90dD4pPC9wPjwvYm9keT48L2h0bWw+IgogICAgICAgICAgICAg # IGVuZAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmVzcFsiQ29u # dGVudC1UeXBlIl0JPSAidGV4dC9odG1sIgogICAgICAgICAgICAgIHJlc3Au # cmVzcG9uc2UJCT0gIkhUVFAvMS4wID8/PyBOT1QgQVVUSE9SSVpFRCIKICAg # ICAgICAgICAgICByZXNwIDw8ICI8aHRtbD48Ym9keT48cD48Yj5Ob3QgQXV0 # aG9yaXplZC48L2I+PC9wPjwvYm9keT48L2h0bWw+IgogICAgICAgICAgICBl # bmQKICAgICAgICAgIGVuZAoKICAgICAgICBlbmQKCiAgICAgIGVuZAogICAg # ZW5kCiAgZW5kCmVuZAoKJHJ3ZF9odG1sWyJERUZBVUxUIl0JPSAiCjwhLS0g # R2VuZXJhdGVkIGJ5IFJ1YnlXZWJEaWFsb2cuICAgICAgICAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KPCEtLSBGb3IgbW9y # ZSBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnRhY3QgRXJpayBWZWVuc3RyYSA8 # cndkQGVyaWt2ZWVuLmRkcy5ubD4uIC0tPgo8aHRtbD4KICA8aGVhZD4KICAg # IDx0aXRsZT4lVElUTEUlPC90aXRsZT4KCiAgICA8bWV0YSBodHRwLWVxdWl2 # PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD0l # Q0hBUlNFVCUnPgogICAgPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1TdHls # ZS1UeXBlJyBjb250ZW50PSd0ZXh0L2Nzcyc+CiAgICA8bWV0YSBodHRwLWVx # dWl2PSdSZWZyZXNoJyBjb250ZW50PSclUkVGUkVTSCUsIGphdmFzY3JpcHQ6 # ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4KCiAgICA8bGluayByZWw9 # J3Nob3J0Y3V0IGljb24nIGhyZWY9JyVMT0dPJSc+CgogICAgPHN0eWxlIHR5 # cGU9J3RleHQvY3NzJz4KICAgIDwhLS0KCglib2R5IHsKCQliYWNrZ3JvdW5k # CQk6IHVybCglV0FURVJNQVJLJSkgd2hpdGUgY2VudGVyIGNlbnRlciBuby1y # ZXBlYXQgZml4ZWQ7Cgl9CgoJYSB7CgkJdGV4dC1kZWNvcmF0aW9uCQk6IG5v # bmU7Cgl9CgoJYTpob3ZlciB7CgkJYmFja2dyb3VuZAkJOiAjQUFBQUFBOwoJ # fQoKCXRkLnBhbmVsMSB7CgkJYm9yZGVyLWNvbG9yCQk6ICM4ODg4ODggI0VF # RUVFRSAjRUVFRUVFICM4ODg4ODg7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsK # CQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29saWQ7Cgl9 # CgoJdGQucGFuZWwyIHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVFRSAjODg4 # ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJ # CWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsKCX0K # Cgl0ZC5wYW5lbDFoaWdoIHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVFRSAj # ODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTogMXB0 # OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsK # CX0KCgl0ZC5wYW5lbDJoaWdoIHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVF # RSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTog # MXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIG5vbmUgbm9uZSBub25lOwoJ # fQoKCXRkLnBhbmVsMWxvdyB7CgkJYm9yZGVyLWNvbG9yCQk6ICM4ODg4ODgg # I0VFRUVFRSAjRUVFRUVFICM4ODg4ODg7CgkJYm9yZGVyLXdpZHRoCQk6IDFw # dDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29saWQ7 # Cgl9CgoJdGQucGFuZWwybG93IHsKCQlib3JkZXItY29sb3IJCTogIzg4ODg4 # OCAjRUVFRUVFICNFRUVFRUUgIzg4ODg4ODsKCQlib3JkZXItd2lkdGgJCTog # MXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIG5vbmUgbm9uZSBub25lOwoJ # fQoKCXRkLnRhYmJsYWQgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVFICM4 # ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7 # CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgc29saWQgc29saWQgc29saWQ7Cgl9 # CgoJdGQucGFzc2l2ZXRhYiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5k # LWNvbG9yCTogI0JCQkJCQjsKCQlib3JkZXItY29sb3IJCTogI0RERERERCAj # REREREREICNFRUVFRUUgI0RERERERDsKCQlib3JkZXItd2lkdGgJCTogMXB0 # OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsK # CX0KCgl0ZC5hY3RpdmV0YWIgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVF # ICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAx # cHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIG5vbmUgc29saWQ7 # Cgl9CgoJdGQubm90YWIgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVFICNF # RUVFRUUgI0VFRUVFRSAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7 # CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgbm9uZSBzb2xpZCBub25lOwoJfQoK # ICAgIC8vLS0+CiAgICA8L3N0eWxlPgoKICAgIDxzY3JpcHQgdHlwZT0ndGV4 # dC9qYXZhc2NyaXB0Jz4KICAgIDwhLS0KICAgICAgZnVuY3Rpb24gQm9keUdv # KCkgewogICAgICAgICRSV0RfRk9DVVMkCiAgICAgIH0KICAgIC8vLS0+CiAg # ICA8L3NjcmlwdD4KICA8L2hlYWQ+CgogIDxib2R5IGJnY29sb3I9J3doaXRl # JyBvbmxvYWQ9J0JvZHlHbygpJyBsaW5rPScjMDAwMDAwJyB2bGluaz0nIzAw # MDAwMCcgYWxpbms9JyMwMDAwMDAnPgogICAgPGZvcm0gbmFtZT0nYm9keWZv # cm0nIGFjdGlvbj0nLycgbWV0aG9kPSdwb3N0Jz4KICAgICAgPHRhYmxlIGFs # aWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxw # YWRkaW5nPScwJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJz4KICAgICAg # ICA8dHIgYWxpZ249J2NlbnRlcicgdmFsaWduPSdtaWRkbGUnPgogICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInPgoKICAgICAgICAgICAgPHRhYmxlIGFs # aWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxw # YWRkaW5nPScwJz4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXIn # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAg # ICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAg # ID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAg # ICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAg # ICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAg # PHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # YmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAg # ICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgPC90 # cj4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3 # aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRl # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxp # Z249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # PC90cj4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNr # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNF # RUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2sn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0 # ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNF # RUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KCiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcic+CgogICAgICAgICAg # ICAgICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxs # c3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnICVXSURUSDElPgogICAgICAg # ICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjNDQ0NDg4 # Jz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0nbGVm # dCcgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMScgY2VsbHBhZGRpbmc9JzAn # PgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVy # Jz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nYm9y # ZGVyJz48aW1nIHNyYz0nJUxPR08lJyB3aWR0aD0nMTQnIGhlaWdodD0nMTQn # PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcic+PGI+PHNtYWxsPjxmb250IGNvbG9yPScjRkZGRkZGJz4mbmJz # cDslVElUTEUlJm5ic3A7PC9mb250Pjwvc21hbGw+PC9iPjwvdGQ+CiAgICAg # ICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAg # ICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJs # ZSBhbGlnbj0ncmlnaHQnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzEnIGNl # bGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIg # YWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 # IS0tICVIRUxQQlVUVE9OJSAgLS0+PHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2NyaXB0OmRv # Y3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfaGVscFwi # O2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7PyZuYnNwOzwv # YT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAg # ICAgPCEtLSAlQkFDS0JVVFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlw # dDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX21h # aW5cIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOyZsdDsm # bHQ7Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAg # ICAgICAgICAgICAgICA8IS0tICVCQUNLQlVUVE9OUyUgLS0+PHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVm # PSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFs # dWU9XCJyd2RfYmFja1wiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+ # Jm5ic3A7Jmx0OyZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAg # ICAgICAgICAgICAgICAgICAgICAgPCEtLSAlQ0xPU0VCVVRUT04lIC0tPjx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+ # PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0 # aW9uLnZhbHVlPVwicndkX3F1aXRcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJt # aXQoKTsnPiZuYnNwO1gmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAg # ICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAg # ICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ # CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAgICAg # ICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nJVdJRFRIMiUnPjwv # dGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAg # ICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNDQ0NDQ0MnPgogICAg # ICAgICAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9y # ZGVyPScwJyBjZWxsc3BhY2luZz0nMycgY2VsbHBhZGRpbmc9JzAnPgogICAg # ICAgICAgICAgICAgICAgICAgICAgICVCT0RZJQogICAgICAgICAgICAgICAg # ICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGlu # cHV0IG5hbWU9J3J3ZF9hY3Rpb24nIHZhbHVlPSckUldEX0ZJUlNUQUNUSU9O # JCcgdHlwZT0naGlkZGVuJz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlu # cHV0IG5hbWU9J3J3ZF9zZXNzaW9uJyB2YWx1ZT0nJFJXRF9TRVNTSU9OJCcg # dHlwZT0naGlkZGVuJz4KICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAg # ICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90 # YWJsZT4KCiAgICAgICAgICAgICAgICA8L3RkPgoKICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VF # RUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNr # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8 # dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3 # aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRl # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # PC90cj4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAg # ID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAg # ICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAg # ICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNF # RUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgPC90cj4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAg # ICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdi # bGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAgPHRy # IGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAg # ICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # ICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAg # ICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4K # CiAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgPC90ZD4KICAgICAg # ICA8L3RyPgogICAgICA8L3RhYmxlPgogICAgPC9mb3JtPgogIDwvYm9keT4K # PC9odG1sPgoiCgokcndkX2h0bWxbIldJTkRPV1NMT09LQUxJS0UiXQk9ICIK # PCEtLSBHZW5lcmF0ZWQgYnkgUnVieVdlYkRpYWxvZy4gICAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIEZv # ciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgY29udGFjdCBFcmlrIFZlZW5z # dHJhIDxyd2RAZXJpa3ZlZW4uZGRzLm5sPi4gLS0+CjxodG1sPgogIDxoZWFk # PgogICAgPHRpdGxlPiVUSVRMRSU8L3RpdGxlPgoKICAgIDxtZXRhIGh0dHAt # ZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFy # c2V0PSVDSEFSU0VUJSc+CiAgICA8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50 # LVN0eWxlLVR5cGUnIGNvbnRlbnQ9J3RleHQvY3NzJz4KICAgIDxtZXRhIGh0 # dHAtZXF1aXY9J1JlZnJlc2gnIGNvbnRlbnQ9JyVSRUZSRVNIJSwgamF2YXNj # cmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPgoKICAgIDxsaW5r # IHJlbD0nc2hvcnRjdXQgaWNvbicgaHJlZj0nJUxPR08lJz4KCiAgICA8c3R5 # bGUgdHlwZT0ndGV4dC9jc3MnPgogICAgPCEtLQoKCWJvZHkgewoJCWJhY2tn # cm91bmQJCTogdXJsKCVXQVRFUk1BUkslKSB3aGl0ZSBjZW50ZXIgY2VudGVy # IG5vLXJlcGVhdCBmaXhlZDsKCX0KCglhIHsKCQl0ZXh0LWRlY29yYXRpb24J # CTogbm9uZTsKCX0KCglhOmhvdmVyIHsKCQliYWNrZ3JvdW5kCQk6ICNBQUFB # QUE7Cgl9CgoJdGQud2luZG93IHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVF # RSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTog # M3B0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xp # ZDsKCX0KCgl0ZC5wYW5lbDEgewoJCWJvcmRlci1jb2xvcgkJOiAjODg4ODg4 # ICNFRUVFRUUgI0VFRUVFRSAjODg4ODg4OwoJCWJvcmRlci13aWR0aAkJOiAx # cHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlk # OwoJfQoKCXRkLnBhbmVsMiB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUg # Izg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFw # dDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29saWQ7 # Cgl9CgoJdGQucGFuZWwxaGlnaCB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVF # RUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6 # IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29s # aWQ7Cgl9CgoJdGQucGFuZWwyaGlnaCB7CgkJYm9yZGVyLWNvbG9yCQk6ICNF # RUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRo # CQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBub25lIG5vbmUgbm9u # ZTsKCX0KCgl0ZC5wYW5lbDFsb3cgewoJCWJvcmRlci1jb2xvcgkJOiAjODg4 # ODg4ICNFRUVFRUUgI0VFRUVFRSAjODg4ODg4OwoJCWJvcmRlci13aWR0aAkJ # OiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNv # bGlkOwoJfQoKCXRkLnBhbmVsMmxvdyB7CgkJYm9yZGVyLWNvbG9yCQk6ICM4 # ODg4ODggI0VFRUVFRSAjRUVFRUVFICM4ODg4ODg7CgkJYm9yZGVyLXdpZHRo # CQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBub25lIG5vbmUgbm9u # ZTsKCX0KCgl0ZC50YWJibGFkIHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVF # RSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTog # MXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIHNvbGlkIHNvbGlkIHNvbGlk # OwoJfQoKCXRkLnBhc3NpdmV0YWIgewogICAgICAgICAgICAgICAgYmFja2dy # b3VuZC1jb2xvcgk6ICNCQkJCQkI7CgkJYm9yZGVyLWNvbG9yCQk6ICNERERE # REQgI0RERERERCAjRUVFRUVFICNEREREREQ7CgkJYm9yZGVyLXdpZHRoCQk6 # IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29s # aWQ7Cgl9CgoJdGQuYWN0aXZldGFiIHsKCQlib3JkZXItY29sb3IJCTogI0VF # RUVFRSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJ # CTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBub25lIHNv # bGlkOwoJfQoKCXRkLm5vdGFiIHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVF # RSAjRUVFRUVFICNFRUVFRUUgI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTog # MXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIG5vbmUgc29saWQgbm9uZTsK # CX0KCiAgICAvLy0tPgogICAgPC9zdHlsZT4KCiAgICA8c2NyaXB0IHR5cGU9 # J3RleHQvamF2YXNjcmlwdCc+CiAgICA8IS0tCiAgICAgIGZ1bmN0aW9uIEJv # ZHlHbygpIHsKICAgICAgICAkUldEX0ZPQ1VTJAogICAgICB9CiAgICAvLy0t # PgogICAgPC9zY3JpcHQ+CiAgPC9oZWFkPgoKICA8Ym9keSBiZ2NvbG9yPSd3 # aGl0ZScgb25sb2FkPSdCb2R5R28oKScgbGluaz0nIzAwMDAwMCcgdmxpbms9 # JyMwMDAwMDAnIGFsaW5rPScjMDAwMDAwJz4KICAgIDxmb3JtIG5hbWU9J2Jv # ZHlmb3JtJyBhY3Rpb249Jy8nIG1ldGhvZD0ncG9zdCc+CiAgICAgIDx0YWJs # ZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBj # ZWxscGFkZGluZz0nMCcgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJSc+CiAg # ICAgICAgPHRyIGFsaWduPSdjZW50ZXInIHZhbGlnbj0nbWlkZGxlJz4KICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJz4KCiAgICAgICAgICAgIDx0YWJs # ZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBj # ZWxscGFkZGluZz0nMCc+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2Vu # dGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBjbGFz # cz0nd2luZG93Jz4KCiAgICAgICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0n # Y2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGlu # Zz0nMCcgJVdJRFRIMSU+CiAgICAgICAgICAgICAgICAgICAgPHRyIGFsaWdu # PSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9JyM0NDQ0ODgnPgoKICAgICAgICAgICAgICAgICAg # ICAgICAgPHRhYmxlIGFsaWduPSdsZWZ0JyBib3JkZXI9JzAnIGNlbGxzcGFj # aW5nPScxJyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgICAgICAg # ICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdib3JkZXInPjxpbWcgc3JjPSclTE9HTyUn # IHdpZHRoPScxNCcgaGVpZ2h0PScxNCc+PC90ZD4KICAgICAgICAgICAgICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJz48Yj48c21hbGw+PGZv # bnQgY29sb3I9JyNGRkZGRkYnPiZuYnNwOyVUSVRMRSUmbmJzcDs8L2ZvbnQ+ # PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8 # L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAg # ICAgICAgICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdyaWdodCcgYm9yZGVy # PScwJyBjZWxsc3BhY2luZz0nMScgY2VsbHBhZGRpbmc9JzAnPgogICAgICAg # ICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAg # ICAgICAgICAgICAgICAgICAgICAgIDwhLS0gJUhFTFBCVVRUT04lICAtLT48 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxs # PjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2Fj # dGlvbi52YWx1ZT1cInJ3ZF9oZWxwXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3Vi # bWl0KCk7Jz4mbmJzcDs/Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAg # ICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICVCQUNLQlVUVE9OUyUg # LS0+PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxz # bWFsbD48YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3 # ZF9hY3Rpb24udmFsdWU9XCJyd2RfbWFpblwiO2RvY3VtZW50LmJvZHlmb3Jt # LnN1Ym1pdCgpOyc+Jm5ic3A7Jmx0OyZsdDsmbmJzcDs8L2E+PC9zbWFsbD48 # L2I+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gJUJB # Q0tCVVRUT05TJSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VF # RUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQu # Ym9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9iYWNrXCI7ZG9jdW1l # bnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDsmbHQ7Jm5ic3A7PC9hPjwv # c21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 # IS0tICVDTE9TRUJVVFRPTiUgLS0+PHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2NyaXB0OmRv # Y3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfcXVpdFwi # O2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7WCZuYnNwOzwv # YT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAg # IDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAg # ICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8 # L3RyPgoKICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+ # CiAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPSclV0lEVEgyJSc+PC90ZD4KICAgICAgICAgICAgICAgICAg # ICA8L3RyPgoKICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRl # cic+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nI0NDQ0NDQyc+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0 # YWJsZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScz # JyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAg # JUJPRFklCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAg # ICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ncndkX2FjdGlvbicg # dmFsdWU9JyRSV0RfRklSU1RBQ1RJT04kJyB0eXBlPSdoaWRkZW4nPgogICAg # ICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ncndkX3Nlc3Npb24n # IHZhbHVlPSckUldEX1NFU1NJT04kJyB0eXBlPSdoaWRkZW4nPgogICAgICAg # ICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3Ry # PgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAg # IDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgIDwvdGFi # bGU+CgogICAgICAgICAgPC90ZD4KICAgICAgICA8L3RyPgogICAgICA8L3Rh # YmxlPgogICAgPC9mb3JtPgogIDwvYm9keT4KPC9odG1sPgoiCgokcndkX2h0 # bWxbIlBEQSJdCT0gIgo8IS0tIEdlbmVyYXRlZCBieSBSdWJ5V2ViRGlhbG9n # LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg # ICAgLS0+CjwhLS0gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBjb250 # YWN0IEVyaWsgVmVlbnN0cmEgPHJ3ZEBlcmlrdmVlbi5kZHMubmw+LiAtLT4K # PGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+JVRJVExFJTwvdGl0bGU+Cgog # ICAgPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0 # ZXh0L2h0bWw7IGNoYXJzZXQ9JUNIQVJTRVQlJz4KICAgIDxtZXRhIGh0dHAt # ZXF1aXY9J1JlZnJlc2gnIGNvbnRlbnQ9JyVSRUZSRVNIJSwgamF2YXNjcmlw # dDpkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPgoKICAgIDxsaW5rIHJl # bD0nc2hvcnRjdXQgaWNvbicgaHJlZj0nJUxPR08lJz4KCiAgICA8c2NyaXB0 # IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+CiAgICA8IS0tCiAgICAgIGZ1bmN0 # aW9uIEJvZHlHbygpIHsKICAgICAgICAkUldEX0ZPQ1VTJAogICAgICB9CiAg # ICAvLy0tPgogICAgPC9zY3JpcHQ+CiAgPC9oZWFkPgoKICA8Ym9keSBiZ2Nv # bG9yPSd3aGl0ZScgb25sb2FkPSdCb2R5R28oKScgbGluaz0nIzAwMDAwMCcg # dmxpbms9JyMwMDAwMDAnIGFsaW5rPScjMDAwMDAwJz4KICAgIDxmb3JtIG5h # bWU9J2JvZHlmb3JtJyBhY3Rpb249Jy8nIG1ldGhvZD0ncG9zdCc+CiAgICAg # IDx0YWJsZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5n # PScwJyBjZWxscGFkZGluZz0nMCcgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAw # JSc+CgogICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjNDQ0NDg4Jz4KCiAgICAgICAg # ICAgIDx0YWJsZSBhbGlnbj0nbGVmdCcgYm9yZGVyPScwJyBjZWxsc3BhY2lu # Zz0nMScgY2VsbHBhZGRpbmc9JzAnPgogICAgICAgICAgICAgIDx0ciBhbGln # bj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nYm9yZGVy # Jz48aW1nIHNyYz0nJUxPR08lJyB3aWR0aD0nMTQnIGhlaWdodD0nMTQnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcic+PGI+PHNt # YWxsPjxmb250IGNvbG9yPScjRkZGRkZGJz4mbmJzcDslVElUTEUlJm5ic3A7 # PC9mb250Pjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4K # ICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgIDx0YWJsZSBhbGln # bj0ncmlnaHQnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzEnIGNlbGxwYWRk # aW5nPScwJz4KICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAg # ICAgICAgICAgICAgICA8IS0tICVIRUxQQlVUVE9OJSAgLS0+PHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVm # PSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFs # dWU9XCJyd2RfaGVscFwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+ # Jm5ic3A7PyZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAg # ICAgICAgPCEtLSAlQkFDS0JVVFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNj # cmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndk # X21haW5cIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOyZs # dDsmbHQ7Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8IS0tICVCQUNLQlVUVE9OUyUgLS0+PHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2Ny # aXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2Rf # YmFja1wiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7Jmx0 # OyZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAg # PCEtLSAlQ0xPU0VCVVRUT04lIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpk # b2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX3F1aXRc # Ijtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwO1gmbmJzcDs8 # L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAg # ICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90 # cj4KCiAgICAgICAgPCEtLQogICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4K # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRkZGRkZG # Jz4mbmJzcDs8L3RkPgogICAgICAgIDwvdHI+CiAgICAgICAgLS0+CgogICAg # ICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPScjRkZGRkZGJz4KCiAgICAgICAgICAgICAgPHRh # YmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAn # IGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICAgICVCT0RZJQogICAg # ICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgIDxpbnB1dCBuYW1l # PSdyd2RfYWN0aW9uJyB2YWx1ZT0nJFJXRF9GSVJTVEFDVElPTiQnIHR5cGU9 # J2hpZGRlbic+CiAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J3J3ZF9zZXNz # aW9uJyB2YWx1ZT0nJFJXRF9TRVNTSU9OJCcgdHlwZT0naGlkZGVuJz4KICAg # ICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KCiAgICAgIDwvdGFibGU+CiAg # ICA8L2Zvcm0+CiAgPC9ib2R5Pgo8L2h0bWw+CiIKCiRyd2RfcGl4ZWwJPSAi # ClIwbEdPRGxoQVFBQkFNSUFBQUFBQVAvLy8rN3U3a1JFaVAvLy8vLy8vLy8v # Ly8vLy95SDVCQUVLQUFNQQpMQUFBQUFBQkFBRUFBQU1DT0FrQU93PT0KIi51 # bnBhY2soIm0iKS5zaGlmdAoKJHJ3ZF9sb2dvCT0gIgpSMGxHT0RsaEVBQVFB # TUlBQUFBQUFQLy8vKzd1N2tSRWlQLy8vLy8vLy8vLy8vLy8veUg1QkFFS0FB # UUEKTEFBQUFBQVFBQkFBQUFOQ1NFclEvazIxUUt1bHJJck51OGhldUFHVWNK # MEJ1UVZENjc2RGFzSzB6Tkt2CmplZkIrb282bDZBeEJBeDdNMkhSZVBRcGg1 # eGdhMFJzSnFmRUxQSTJEU1VBQURzPQoiLnVucGFjaygibSIpLnNoaWZ0CgoK # JHJ3ZF9odG1sXzEsICRyd2RfaHRtbF8yCQk9ICRyd2RfaHRtbFtFTlZbIlJX # RFRIRU1FIl1dLnNwbGl0KC9eXHMqJUJPRFklXHMqXHIqJC8pCiRyd2RfaHRt # bF9QREFfMSwgJHJ3ZF9odG1sX1BEQV8yCT0gJHJ3ZF9odG1sWyJQREEiXS5z # cGxpdCgvXlxzKiVCT0RZJVxzKlxyKiQvKQoKI2VuZAojCiNjbGFzcyBSV0Rp # YWxvZyA8IFJXRDo6UldEaWFsb2cKI2VuZAoAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYu # MTIxMjIudGFyL2V2L3J1YnkucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAw # MTc1MAAwMDAxNzUwADAwMDAwMDQwMjYwADEwMjUwMzIwNjE2ADAyMDE0MgAg # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAw # ADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXF1 # aXJlICJjZ2kiCnJlcXVpcmUgInJiY29uZmlnIgpyZXF1aXJlICJ0aHJlYWQi # CgpUaHJlYWQuYWJvcnRfb25fZXhjZXB0aW9uCT0gdHJ1ZQoKJERFQlVHCT0g # KCRERUJVRyBvciBFTlZbIlJVQllERUJVRyJdIG9yIGZhbHNlKQoKI3Rla2Vu # cwk9ICdcd1x+XEBcI1wkXCVcXlwmXCpcLVwrJwp0ZWtlbnMJCT0gJ15cc1xy # XG5cYFwhXChcKVxbXF1ce1x9XDxcPlwsXC5cL1w/XFxcfFw9XDtcOlwiJwoK # I3Rla2VuczExCT0gJ1x3Jwp0ZWtlbnMxMQk9IHRla2VucyArICInIgoKdGVr # ZW5zMjEJPSB0ZWtlbnMgKyAiJyIKdGVrZW5zMjIJPSB0ZWtlbnMKdGVrZW5z # MjMJPSB0ZWtlbnMgKyAiJyIKCnRla2VuczMxCT0gJ1x3XHNcclxuJwoKUmVn # RXhwU3RyaW5nV29yZAk9ICIoWyN7dGVrZW5zMTF9XSspIgkJCQkJCQkJCTsg # UmVnRXhwV29yZAkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ1dvcmQpClJl # Z0V4cFN0cmluZ1dvcmQyCT0gIihbI3t0ZWtlbnMyMX1dKFsje3Rla2VuczIy # fV0qWyN7dGVrZW5zMjN9XSk/KSIJCQkJCTsgUmVnRXhwV29yZDIJCT0gUmVn # ZXhwLm5ldyhSZWdFeHBTdHJpbmdXb3JkMikKUmVnRXhwU3RyaW5nVGV4dAk9 # ICIoWyN7dGVrZW5zMzF9XSspIgkJCQkJCQkJCTsgUmVnRXhwVGV4dAkJPSBS # ZWdleHAubmV3KFJlZ0V4cFN0cmluZ1RleHQpClJlZ0V4cFN0cmluZ0ZpbGUJ # PSAnKFx3W1x3XC5cLV0qKScJCQkJCQkJCQk7IFJlZ0V4cEZpbGUJCT0gUmVn # ZXhwLm5ldyhSZWdFeHBTdHJpbmdGaWxlKQpSZWdFeHBTdHJpbmdFbWFpbAk9 # ICcoW1x3XC1cLl0rQFtcd1wtXC5dKyknCQkJCQkJCQk7IFJlZ0V4cEVtYWls # CQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nRW1haWwpClJlZ0V4cFN0cmlu # Z1VSTAkJPSAnKFx3KzpcL1wvW1x3XC5cLV0rKDpcZCopP1wvW1x3XC5cLVwv # XCNcP1w9XCVdKiknCQkJCQk7IFJlZ0V4cFVSTAkJPSBSZWdleHAubmV3KFJl # Z0V4cFN0cmluZ1VSTCkKUmVnRXhwU3RyaW5nUHJpbnQJPSAnKFtcdyBcdFxy # XG5cYFx+XCFcQFwjXCRcJVxeXCZcKlwoXClcLVwrXD1cW1xdXHtcfVw7XDpc # J1wiXCxcLlwvXDxcPlw/XFxcfF0rKScJOyBSZWdFeHBQcmludAkJPSBSZWdl # eHAubmV3KFJlZ0V4cFN0cmluZ1ByaW50KQpSZWdFeHBTdHJpbmdEaWZmCT0g # JyheW1wtXCtdKFteXC1cK10uKik/KScJCQkJCQkJCTsgUmVnRXhwRGlmZgkJ # PSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ0RpZmYpClJlZ0V4cFN0cmluZ0hU # SExpbmsJPSAnKGBbXHdcLF0qXGJhXGJbXmBdKmApJwkJCQkJCQkJOyBSZWdF # eHBIVEhMaW5rCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nSFRITGluaykK # UmVnRXhwU3RyaW5nSFRIU3BlY2lhbAk9ICcoYFteYF0qYCknCQkJCQkJCQkJ # CTsgUmVnRXhwSFRIU3BlY2lhbAk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5n # SFRIU3BlY2lhbCkKCm1vZHVsZSBFbnVtZXJhYmxlCiAgZGVmIGRlZXBfZHVw # CiAgICBNYXJzaGFsOjpsb2FkKE1hcnNoYWw6OmR1bXAoZHVwKSkKICBlbmQK # CiAgZGVmIGRlZXBfY2xvbmUKICAgIE1hcnNoYWw6OmxvYWQoTWFyc2hhbDo6 # ZHVtcChjbG9uZSkpCiAgZW5kCmVuZAoKY2xhc3MgVGhyZWFkCiAgZGVmIHNl # bGYuYmFja2dyb3VuZCgqYXJncykKICAgIG5ldygqYXJncykgZG8gfCphcmdz # fAogICAgICBUaHJlYWQucGFzcwoKICAgICAgeWllbGQoKmFyZ3MpCiAgICBl # bmQKICBlbmQKZW5kCgpjbGFzcyBPYmplY3QKICBhbGlhcyBkZWVwX2R1cCA6 # ZHVwCiAgYWxpYXMgZGVlcF9jbG9uZSA6Y2xvbmUKCiAgZGVmIHRvX2ZzCiAg # ICB0b19zCiAgZW5kCgogIGRlZiBpZHMKICAgIGlkCiAgZW5kCmVuZAoKY2xh # c3MgTnVtZXJpYwogIGRlZiB0b19mcwogICAgdG9fZgogIGVuZAoKICBkZWYg # dG9faHRtbChlb2xjb252ZXJzaW9uPXRydWUpCiAgICBzZWxmLnRvX3MudG9f # aHRtbChlb2xjb252ZXJzaW9uKQogIGVuZAplbmQKCmNsYXNzIEludGVnZXIK # ICBkZWYgb2N0CiAgICBuCT0gc2VsZgogICAgcmVzCT0gW10KCiAgICB3aGls # ZSBuID4gOAogICAgICBuLCB4CT0gbi5kaXZtb2QoOCkKICAgICAgcmVzIDw8 # IHgKICAgIGVuZAogICAgcmVzIDw8IG4KCiAgICByZXMucmV2ZXJzZS5qb2lu # KCIiKQogIGVuZAplbmQKCmNsYXNzIFN0cmluZwogIGRlZiBjaG9tcCEoZHVt # bXk9bmlsKQogICAgc2VsZi5nc3ViISgvW1xyXG5dKlx6LywgIiIpCiAgZW5k # CgogIGRlZiBjaG9tcChkdW1teT1uaWwpCiAgICBzZWxmLmdzdWIoL1tcclxu # XSpcei8sICIiKQogIGVuZAoKICBkZWYgbGYKICAgIHNlbGYuZ3N1YigvXHIq # XG4vLCAiXG4iKS5nc3ViKC9cblx6LywgIiIpICsgIlxuIgogIGVuZAoKICBk # ZWYgY3JsZgogICAgc2VsZi5nc3ViKC9ccipcbi8sICJcclxuIikuZ3N1Yigv # XHJcblx6LywgIiIpICsgIlxyXG4iCiAgZW5kCgogIGRlZiBzdHJpcAogICAg # c2VsZi5zdHJpcGJlZm9yZS5zdHJpcGFmdGVyCiAgZW5kCgogIGRlZiBzdHJp # cGJlZm9yZQogICAgc2VsZi5nc3ViKC9cQVtbOmJsYW5rOl1cclxuXSovLCAi # IikKICBlbmQKCiAgZGVmIHN0cmlwYWZ0ZXIKICAgIHNlbGYuZ3N1YigvW1s6 # Ymxhbms6XVxyXG5dKlx6LywgIiIpCiAgZW5kCgogIGRlZiBjb21wcmVzcwog # ICAgc2VsZi5nc3ViKC9bWzpibGFuazpdXHJcbl0rLywgIiAiKS5zdHJpcAog # IGVuZAoKICBkZWYgY29tcHJlc3NzcGFjZXMKICAgIHNlbGYuZ3N1YigvW1s6 # Ymxhbms6XV0rLywgIiAiKQogIGVuZAoKICBkZWYgY29tcHJlc3NwZXJsaW5l # CiAgICByZXMJPSBzZWxmLnNwbGl0KC9cbi8pCiAgICByZXMuY29sbGVjdCF7 # fGxpbmV8IGxpbmUuY29tcHJlc3N9CiAgICByZXMuZGVsZXRlX2lme3xsaW5l # fCBsaW5lLmVtcHR5P30KICAgIHJlcy5qb2luKCJcbiIpCiAgZW5kCgogIGRl # ZiBudW1lcmljPwogICAgZCwgYSwgbgk9IFtzZWxmXS50b19wYXIKCiAgICBu # b3Qgbi5lbXB0eT8KICBlbmQKCiAgZGVmIGV4ZWMoaW5wdXQ9bmlsLCBvdXRw # dXQ9dHJ1ZSkKICAgIHJlcwk9IFtdCgogICAgSU8ucG9wZW4oc2VsZiwgIncr # IikgZG8gfGZ8CiAgICAgIGYucHV0cyBpbnB1dAl1bmxlc3MgaW5wdXQubmls # PwogICAgICBmLmNsb3NlX3dyaXRlCgogICAgICByZXMJPSBmLnJlYWRsaW5l # cyBpZiBvdXRwdXQKICAgIGVuZAoKICAgIHJlcy5qb2luKCIiKQogIGVuZAoK # ICBkZWYgZXZhbAogICAgS2VybmVsOjpldmFsKHNlbGYpCiAgZW5kCgogIGRl # ZiBzcGVhawogICAgcmVxdWlyZSAiZHJiIgoKICAgIERSYi5zdGFydF9zZXJ2 # aWNlCiAgICBEUmJPYmplY3QubmV3KG5pbCwgImRydWJ5Oi8vbG9jYWxob3N0 # OjMxMDAiKS5zcGVhayhzZWxmKQogIGVuZAoKICBkZWYgc3BsaXRibG9ja3Mo # KmRlbGltaXRlcnMpCiAgICBiZWdpbmRlbGltaXRlcnMJPSBbXQogICAgZW5k # ZGVsaW1pdGVycwk9IFtdCgogICAgZGVsaW1pdGVycy5lYWNoIGRvIHxrLCB2 # fAogICAgICBiZWdpbmRlbGltaXRlcnMJPDwgay5kb3duY2FzZQogICAgICBl # bmRkZWxpbWl0ZXJzCTw8IHYuZG93bmNhc2UKICAgIGVuZAoKICAgIGJkCT0g # YmVnaW5kZWxpbWl0ZXJzLmNvbGxlY3QJe3xzfCBSZWdleHAuZXNjYXBlKHMp # fQogICAgZWQJPSBlbmRkZWxpbWl0ZXJzLmNvbGxlY3QJCXt8c3wgUmVnZXhw # LmVzY2FwZShzKX0KCiAgICBiZQk9IGJkLmpvaW4oInwiKQogICAgZWUJPSBl # ZC5qb2luKCJ8IikKCiAgICByZXMJCT0gW10KICAgIHR5cGUJPSAwCiAgICB0 # bXAJCT0gIiIKICAgIGJzCQk9ICIiCiAgICBlcwkJPSAiIgoKICAgIHNlbGYu # c3BsaXQoLygje2VlfXwje2JlfSkvaSkuZWFjaCBkbyB8c3wKICAgICAgaWYg # dHlwZSA9PSAwCiAgICAgICAgaWYgYmVnaW5kZWxpbWl0ZXJzLmluY2x1ZGU/ # KHMuZG93bmNhc2UpCiAgICAgICAgICBpCT0gYmVnaW5kZWxpbWl0ZXJzLmlu # ZGV4KHMuZG93bmNhc2UpCiAgICAgICAgICB0eXBlCT0gaSsxCiAgICAgICAg # ICB0bXAJPSBzCiAgICAgICAgICBicwk9IHMuZG93bmNhc2UKICAgICAgICAg # IGVzCT0gZW5kZGVsaW1pdGVyc1tpXQogICAgICAgIGVsc2UKICAgICAgICAg # IHJlcyA8PCBbMCwgc10JdW5sZXNzIHMuZW1wdHk/CiAgICAgICAgZW5kCiAg # ICAgIGVsc2UKICAgICAgICBpZiBzLmRvd25jYXNlID09IGVzCiAgICAgICAg # ICByZXMgPDwgW3R5cGUsIHRtcCArIHNdCiAgICAgICAgICB0eXBlCT0gMAog # ICAgICAgICAgdG1wCT0gIiIKICAgICAgICAgIGJzCT0gIiIKICAgICAgICAg # IGVzCT0gIiIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBzLmRvd25jYXNl # ID09IGJzCiAgICAgICAgICAgIHJlcyA8PCBbMCwgdG1wXQogICAgICAgICAg # ICB0bXAJPSBzCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHRtcAk9IHRt # cCArIHMKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAg # IGVuZAoKICAgIHJlcyA8PCBbMCwgdG1wXQl1bmxlc3MgdG1wLmVtcHR5PwoK # ICAgIHJldHVybiByZXMKICBlbmQKCiAgZGVmIHNwbGl0d29yZHModG9rZW5z # PVtdKQogICAgdG9rZW5zCQk9IFt0b2tlbnNdCXVubGVzcyB0b2tlbnMua2lu # ZF9vZj8oQXJyYXkpCiAgICByZXMJCQk9IFtdCgogICAgc2VsZi5zcGxpdGJs # b2NrcyhbIiciLCAiJyJdLCBbJyInLCAnIiddKS5lYWNoIGRvIHx0eXBlLCBz # fAogICAgICBjYXNlIHR5cGUKICAgICAgd2hlbiAwCiAgICAgICAgdG9rZW5z # LmVhY2ggZG8gfHRva2VufAogICAgICAgICAgdG9rZW4yCT0gdG9rZW4KICAg # ICAgICAgIHRva2VuMgk9IFJlZ2V4cC5lc2NhcGUodG9rZW4yKQlpZiB0b2tl # bjIua2luZF9vZj8oU3RyaW5nKQogICAgICAgICAgcy5nc3ViISgvI3t0b2tl # bjJ9LywgIiAje3Rva2VufSAiKQogICAgICAgIGVuZAogICAgICAgIHMuc3Bs # aXQoKS5lYWNoIGRvIHx3fAogICAgICAgICAgcmVzIDw8IHcKICAgICAgICBl # bmQKICAgICAgd2hlbiAxLCAyCiAgICAgICAgcmVzIDw8IHNbMS4uLTJdCiAg # ICAgIGVuZAogICAgZW5kCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYg # dW5jb21tZW50CiAgICByZXMJPSBbXQoKICAgIHNlbGYuc3BsaXRibG9ja3Mo # WyInIiwgIiciXSwgWyciJywgJyInXSwgWyIjIiwgIlxuIl0pLmVhY2ggZG8g # fHR5cGUsIHN8CiAgICAgIGNhc2UgdHlwZQogICAgICB3aGVuIDAsIDEsIDIJ # dGhlbglyZXMgPDwgcwogICAgICB3aGVuIDMJCXRoZW4JcmVzIDw8ICJcbiIK # ICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMuam9pbigiIikKICBlbmQKCiAg # ZGVmIG5vcXVvdGVzCiAgICBzZWxmLnN1YigvXEFbJyJdLywgIiIpLnN1Yigv # WyciXVx6LywgIiIpCiAgZW5kCgogIGRlZiB0b19odG1sKGVvbGNvbnZlcnNp # b249dHJ1ZSkKICAgIHMJPSBDR0kuZXNjYXBlSFRNTChzZWxmKQoKICAgIHMu # Z3N1YiEoL1wiLywgIlwmIzM0OyIpCiAgICBzLmdzdWIhKC9cJy8sICJcJiMx # ODA7IikKCiAgICBpZiBlb2xjb252ZXJzaW9uCiAgICAgIHMuZ3N1YiEoL1xu # LyAsICI8YnI+IikKICAgIGVuZAoKICAgIHMKICBlbmQKCiAgZGVmIGZyb21f # aHRtbChlb2xjb252ZXJzaW9uPXRydWUpCiAgICBzCT0gc2VsZgoKICAgIHMu # Z3N1YiEoLyYjMzQ7LyAsICJcIiIpCiAgICBzLmdzdWIhKC8mIzE4MDsvLCAi # XCciKQoKICAgIHMJPSBDR0kudW5lc2NhcGVIVE1MKHNlbGYpCgogICAgaWYg # ZW9sY29udmVyc2lvbgogICAgICBzLmdzdWIhKC88YnI+LywgIlxuIikKICAg # IGVuZAoKICAgIHMKICBlbmQKCiAgZGVmIHRvX2ZzCiAgICBpZiBudW1lcmlj # PwogICAgICB0b19mCiAgICBlbHNlCiAgICAgIHRvX3MKICAgIGVuZAogIGVu # ZAplbmQKCmNsYXNzIEFycmF5CiAgZGVmIGNob21wIQogICAgc2VsZi5jb2xs # ZWN0IXt8c3wgcy5jaG9tcH0KICBlbmQKCiAgZGVmIGNob21wCiAgICBzZWxm # LmNvbGxlY3R7fHN8IHMuY2hvbXB9CiAgZW5kCgogIGRlZiBjb21wcmVzcwog # ICAgc2VsZi5jb2xsZWN0e3xzfCBzLmNvbXByZXNzfQogIGVuZAoKICBkZWYg # dW5jb21tZW50CiAgICBzZWxmLmpvaW4oIlwwIikudW5jb21tZW50LnNwbGl0 # KCJcMCIpCiAgZW5kCgogIGRlZiBzdHJpcAogICAgc2VsZi5jb2xsZWN0e3xz # fCBzLnN0cmlwfQogIGVuZAoKICBkZWYgc3VtCiAgICByZXMJPSAwCiAgICBz # ZWxmLmVhY2ggZG8gfG58CiAgICAgIHJlcyArPSBuCiAgICBlbmQKICAgIHJl # cwogIGVuZAoKICBkZWYgcHJvZHVjdAogICAgcmVzCT0gMQogICAgc2VsZi5l # YWNoIGRvIHxufAogICAgICByZXMgKj0gbgogICAgZW5kCiAgICByZXMKICBl # bmQKCiAgZGVmIGpvaW53b3JkcyhzZXA9IiAiLCBxdW90ZT0nIicpCiAgICBz # ZWxmLmNvbGxlY3QgZG8gfHN8CiAgICAgIHMJPSBxdW90ZSArIHMgKyBxdW90 # ZQlpZiBzID1+IC9bWzpibGFuazpdXS8KICAgICAgcwogICAgZW5kLmpvaW4o # c2VwKQogIGVuZAoKICBkZWYgZG9taW5vKHRhYmVsbGVuLCBrb2xvbT1uaWws # IG9ubHltYXRjaGluZ2xpbmVzPWZhbHNlKQogICAgbGlua3MJPSBzZWxmCiAg # ICByZXMJCT0gW10KICAgIHJlcwkJPSBzZWxmLmR1cAl1bmxlc3Mgb25seW1h # dGNoaW5nbGluZXMKCiAgICB0YWJlbGxlbi5lYWNoIGRvIHxyZWNodHN8CiAg # ICAgIHRtcAk9IFtdCgogICAgICBsaW5rcy5lYWNoIGRvIHxsfAogICAgICAg # IGlmIGtvbG9tLm5pbD8gb3IgbC5sZW5ndGggPT0ga29sb20KICAgICAgICAg # IHJlY2h0cy5lYWNoIGRvIHxyfAogICAgICAgICAgICB0bXAgPDwgbCArIHJb # MS4uLTFdCWlmIGxbLTFdID09IHJbMF0KICAgICAgICAgIGVuZAogICAgICAg # IGVuZAogICAgICBlbmQKCiAgICAgIGxpbmtzCT0gdG1wCiAgICAgIHJlcy5j # b25jYXQodG1wKQogICAgZW5kCgogICAgcmVzCT0gcmVzLnNvcnQudW5pcQog # IGVuZAoKICBkZWYgZG9taW5vbG9vcCh0YWJlbGxlbikKICAgIGxyZXMJPSBb # XQogICAgcmVzCQk9IHNlbGYuZHVwCiAgICBrb2xvbQk9IDIKCiAgICB3aGls # ZSBscmVzLmxlbmd0aCAhPSByZXMubGVuZ3RoIGRvCiAgICAgIGxyZXMJPSBy # ZXMuZHVwCiAgICAgIHJlcwk9IHJlcy5kb21pbm8odGFiZWxsZW4sIGtvbG9t # KQoKICAgICAgcmVzLmVhY2ggZG8gfGxpbmV8CiAgICAgICAgbGluZSA8PCAi # KiIJaWYgKGxpbmUubGVuZ3RoICE9IGxpbmUudW5pcS5sZW5ndGggYW5kIGxp # bmVbLTFdICE9ICIqIikKICAgICAgZW5kCgogICAgICAkc3RkZXJyLnByaW50 # ICIjezEwMCoocmVzLmxlbmd0aCkvKGxyZXMubGVuZ3RoKX0lICIKCiAgICAg # IGtvbG9tICs9IDEKICAgIGVuZAoKICAgICRzdGRlcnIucHV0cyAiIgoKICAg # IHJldHVybiByZXMKICBlbmQKCiAgZGVmIGJ1aWxkdHJlZQogICAgc2VsZi5k # b21pbm9sb29wKFtzZWxmXSkKICBlbmQKCiAgZGVmIHN1YnNldChmaWVsZHMs # IHZhbHVlcywgcmVzdWx0cywgZXhhY3Q9dHJ1ZSwgZW1wdHlsaW5lPW5pbCwg # am9pbndpdGg9bmlsKQogICAgZmllbGRzCT0gW2ZpZWxkc10JCXVubGVzcyBm # aWVsZHMua2luZF9vZj8gQXJyYXkKICAgIHZhbHVlcwk9IFt2YWx1ZXNdCQl1 # bmxlc3MgdmFsdWVzLmtpbmRfb2Y/IEFycmF5CiAgICByZXN1bHRzCT0gW3Jl # c3VsdHNdCQl1bmxlc3MgcmVzdWx0cy5raW5kX29mPyBBcnJheQogICAgZW1w # dHlsaW5lCT0gZW1wdHlsaW5lLmRvd25jYXNlCXVubGVzcyBlbXB0eWxpbmUu # bmlsPwogICAgcmVzCQk9IHNlbGYuZHVwCiAgICByZXMuZGVsZXRlX2lmIHt0 # cnVlfQoKICAgIHNlbGYuZWFjaCBkbyB8bHwKICAgICAgb2sJPSB0cnVlCgog # ICAgICBjYXNlIGwuY2xhc3MudG9fcwogICAgICB3aGVuICJTdHJpbmciCiAg # ICAgICAgYwkJPSBsLnNwbGl0d29yZHMKICAgICAgICBjb3JyZWN0aW9uCT0g # MQogICAgICAgIGpvaW53aXRoCT0gIiAiCWlmIGpvaW53aXRoLm5pbD8KICAg # ICAgd2hlbiAiQXJyYXkiCiAgICAgICAgYwkJPSBsCiAgICAgICAgY29ycmVj # dGlvbgk9IDAKICAgICAgZW5kCgogICAgICAjY2F0Y2ggOnN0b3AgZG8KICAg # ICAgICB2YWx1ZXMyCT0gdmFsdWVzLmR1cAogICAgICAgIGZpZWxkcy5lYWNo # IGRvIHxmfAogICAgICAgICAgdgk9IHZhbHVlczIuc2hpZnQKICAgICAgICAg # IHYJPSB2LmRvd25jYXNlCXVubGVzcyB2Lm5pbD8KICAgICAgICAgIGlmIGVt # cHR5bGluZS5uaWw/IG9yIChub3QgdiA9PSBlbXB0eWxpbmUpCiAgICAgICAg # ICAgIGlmIGV4YWN0CiAgICAgICAgICAgICAgdW5sZXNzICh2Lm5pbD8gb3Ig # Y1tmLWNvcnJlY3Rpb25dLmRvd25jYXNlID09IHYpCiAgICAgICAgICAgICAg # ICBvawk9IGZhbHNlCiAgICAgICAgICAgICAgICAjdGhyb3cgOnN0b3AKICAg # ICAgICAgICAgICBlbmQKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg # IHVubGVzcyAodi5uaWw/IG9yIGNbZi1jb3JyZWN0aW9uXS5kb3duY2FzZS5p # bmNsdWRlPyh2KSkKICAgICAgICAgICAgICAgIG9rCT0gZmFsc2UKICAgICAg # ICAgICAgICAgICN0aHJvdyA6c3RvcAogICAgICAgICAgICAgIGVuZAogICAg # ICAgICAgICBlbmQKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICAj # ZW5kCgogICAgICBpZiBvawogICAgICAgIHJlczIJPSBbXQogICAgICAgIHJl # c3VsdHMuZWFjaCBkbyB8bnwKICAgICAgICAgIHJlczIgPDwgY1tuLTFdCiAg # ICAgICAgZW5kCiAgICAgICAgcmVzMgk9IHJlczIuam9pbihqb2lud2l0aCkJ # dW5sZXNzIGpvaW53aXRoLm5pbD8KICAgICAgICByZXMgPDwgcmVzMgogICAg # ICBlbmQKICAgIGVuZAoKICAgIHJldHVybiByZXMKICBlbmQKCiAgZGVmIGZv # cm1hdChmb3JtYXQpCiAgICBmb3JtYXQJPSBmb3JtYXQuZ3N1YigvXHMvLCAi # IikKICAgIHJlcwkJPSBbXQoKICAgIFtmb3JtYXQubGVuZ3RoLCBzZWxmLmxl # bmd0aF0ubWluLnRpbWVzIGRvIHxufAogICAgICBjYXNlIGZvcm1hdFtuXS5j # aHIuZG93bmNhc2UKICAgICAgd2hlbiAiaSIJdGhlbglyZXMgPDwgc2VsZltu # XS50b19pCiAgICAgIHdoZW4gInMiCXRoZW4JcmVzIDw8IHNlbGZbbl0udG9f # cwogICAgICBlbHNlCQlyZXMgPDwgc2VsZltuXQogICAgICBlbmQKICAgIGVu # ZAoKICAgIHJlcwogIGVuZAoKICBkZWYgdG9faQogICAgY29sbGVjdHt8Y3wg # Yy50b19pfQogIGVuZAoKICBkZWYgdG9fcGFyCiAgICBkYXNoCT0gc2VsZi5k # dXAKICAgIGFscGhhCT0gc2VsZi5kdXAKICAgIG51bWVyaWMJPSBzZWxmLmR1 # cAoKICAgIGRhc2guZGVsZXRlX2lmIGRvIHxzfAogICAgICBub3QgKHMgPX4g # L1xBLS8pIG9yCiAgICAgIChzID1+IC9cQS0/W1s6ZGlnaXQ6XVwuXStcei8p # IG9yCiAgICAgIChzID1+IC9eLSskLykKICAgIGVuZAoKICAgIGFscGhhLmRl # bGV0ZV9pZiBkbyB8c3wKICAgICAgKChzID1+IC9cQS0vKSBvcgogICAgICAg # KHMgPX4gL1xBLT9bWzpkaWdpdDpdXC5dK1x6LykpIGFuZAogICAgICBub3Qg # KChzID1+IC9eXC4rJC8pIG9yIChzID1+IC9eLSskLykpCiAgICBlbmQKCiAg # ICBudW1lcmljLmRlbGV0ZV9pZiBkbyB8c3wKICAgICAgbm90IChzID1+IC9c # QS0/W1s6ZGlnaXQ6XVwuXStcei8pIG9yCiAgICAgIChzID1+IC9eXC4rJC8p # CiAgICBlbmQKCiAgICByYWlzZSAiT29wcyEiCWlmIGRhc2gubGVuZ3RoICsg # YWxwaGEubGVuZ3RoICsgbnVtZXJpYy5sZW5ndGggIT0gbGVuZ3RoCgogICAg # cmV0dXJuIGRhc2gsIGFscGhhLCBudW1lcmljCiAgZW5kCgogIGRlZiBzZWxm # LmZpbGUoZmlsZSkKICAgIHJlcwk9IG5ldwoKICAgIEZpbGUub3BlbihmaWxl # KSBkbyB8ZnwKICAgICAgZi5yZWFkbGluZXMudW5jb21tZW50LmNob21wLmVh # Y2ggZG8gfGxpbmV8CiAgICAgICAgcmVzIDw8IGxpbmUKICAgICAgZW5kCiAg # ICBlbmQKCiAgICByZXMKICBlbmQKCiAgZGVmIG51bXNvcnQKICAgIHNvcnQg # ZG8gfGEsIGJ8CiAgICAgIGEyCT0gYS50b19mcwogICAgICBiMgk9IGIudG9f # ZnMKCiAgICAgIGlmIGEyLmNsYXNzICE9IGIyLmNsYXNzCiAgICAgICAgYTIJ # PSBhCiAgICAgICAgYjIJPSBiCiAgICAgIGVuZAoKICAgICAgYTIgPD0+IGIy # CiAgICBlbmQKICBlbmQKCiAgZGVmIHRvX2ZzCiAgICBjb2xsZWN0e3xzfCBz # LnRvX2ZzfQogIGVuZAoKICBkZWYgY2hhb3MKICAgIHJlcwk9IHNlbGYuZHVw # CgogICAgKGxlbmd0aF4yKS50aW1lcyBkbwogICAgICBhCT0gcmFuZChsZW5n # dGgpCiAgICAgIGIJPSByYW5kKGxlbmd0aCkKCiAgICAgIHJlc1thXSwgcmVz # W2JdCT0gcmVzW2JdLCByZXNbYV0KICAgIGVuZAoKICAgIHJlcwogIGVuZAoK # ICBkZWYgYW55CiAgICBpZiBlbXB0eT8KICAgICAgbmlsCiAgICBlbHNlCiAg # ICAgIHNlbGZbcmFuZChzZWxmLmxlbmd0aCldCiAgICBlbmQKICBlbmQKCiAg # ZGVmIG1pbm1heAogICAgbWluLCB2YWx1ZSwgbWF4CT0gc2VsZgogICAgW21p # biwgW3ZhbHVlLCBtYXhdLm1pbl0ubWF4CiAgZW5kCgogIGRlZiBpZHMKICAg # IGNvbGxlY3R7fGV8IGUuaWRzfQogIGVuZAoKICBkZWYgcm90YXRlCiAgICBy # YWlzZSAiQXJyYXkgaGFzIHRvIGJlIDJEIChBbiBBcnJheSBvZiBBcnJheXMp # LiIJdW5sZXNzIHNlbGYuZHVwLmRlbGV0ZV9pZnt8YXwgYS5raW5kX29mPyhB # cnJheSl9LmVtcHR5PwoKICAgIHJlcwk9IFtdCgogICAgc2VsZlswXS5sZW5n # dGgudGltZXMgZG8gfHh8CiAgICAgIGEJPSBbXQoKICAgICAgc2VsZi5sZW5n # dGgudGltZXMgZG8gfHl8CiAgICAgICAgYSA8PCBzZWxmW3ldW3hdCiAgICAg # IGVuZAoKICAgICAgcmVzIDw8IGEKICAgIGVuZAoKICAgIHJlcwogIGVuZAoK # ICBkZWYgdG9faAogICAgcmFpc2UgIkFycmF5IGhhcyB0byBiZSAyRCAoQW4g # QXJyYXkgb2YgQXJyYXlzKS4iCXVubGVzcyBzZWxmLmR1cC5kZWxldGVfaWZ7 # fGF8IGEua2luZF9vZj8oQXJyYXkpfS5lbXB0eT8KCiAgICByZXMJPSB7fQoK # ICAgIHNlbGYuZWFjaCBkbyB8aywgdiwgKnJlc3R8CiAgICAgIHJlc1trXQk9 # IHYKICAgIGVuZAoKICAgIHJlcwogIGVuZAplbmQKCmNsYXNzIEhhc2gKICBk # ZWYgc2F2ZShmaWxlLCBhcHBlbmQ9ZmFsc2UpCiAgICBvcmcJPSB7fQogICAg # b3JnCT0gSGFzaC5maWxlKGZpbGUpCWlmIChhcHBlbmQgYW5kIEZpbGUuZmls # ZT8oZmlsZSkpCgogICAgc2VsZi5zb3J0LmVhY2ggZG8gfGssIHZ8CiAgICAg # IG9yZ1trXQk9IHYKICAgIGVuZAoKICAgIEZpbGUub3BlbihmaWxlLCAidyIp # IGRvIHxmfAogICAgICBvcmcuc29ydC5lYWNoIGRvIHxrLCB2fAogICAgICAg # IGYucHV0cyAiJXNcdD0gJXMiICUgW2ssIHZdCiAgICAgIGVuZAogICAgZW5k # CiAgZW5kCgogIGRlZiBzdWJzZXQoZmllbGRzLCB2YWx1ZXMsIHJlc3VsdHM9 # bmlsLCBleGFjdD10cnVlLCBlbXB0eWxpbmU9bmlsLCBqb2lud2l0aD1uaWwp # CiAgICBmaWVsZHMJPSBbZmllbGRzXQkJdW5sZXNzIGZpZWxkcy5raW5kX29m # PyBBcnJheQogICAgdmFsdWVzCT0gW3ZhbHVlc10JCXVubGVzcyB2YWx1ZXMu # a2luZF9vZj8gQXJyYXkKICAgIHJlc3VsdHMJPSBbcmVzdWx0c10JCXVubGVz # cyByZXN1bHRzLmtpbmRfb2Y/IEFycmF5CiAgICBlbXB0eWxpbmUJPSBlbXB0 # eWxpbmUuZG93bmNhc2UJdW5sZXNzIGVtcHR5bGluZS5uaWw/CiAgICByZXMJ # CT0gc2VsZi5kdXAKICAgIHJlcy5kZWxldGVfaWYge3RydWV9CgogICAgc2Vs # Zi5lYWNoIGRvIHxrLCBsfAogICAgICBvawk9IHRydWUKCiAgICAgIGNhc2Ug # bC5jbGFzcy50b19zCiAgICAgIHdoZW4gIlN0cmluZyIKICAgICAgICBjCQk9 # IGwuc3BsaXR3b3JkcwogICAgICAgIGNvcnJlY3Rpb24JPSAxCiAgICAgICAg # am9pbndpdGgJPSAiICIJaWYgam9pbndpdGgubmlsPwogICAgICB3aGVuICJB # cnJheSIKICAgICAgICBjCQk9IGwKICAgICAgICBjb3JyZWN0aW9uCT0gMAog # ICAgICBlbmQKCiAgICAgICNjYXRjaCA6c3RvcCBkbwogICAgICAgIHZhbHVl # czIJPSB2YWx1ZXMuZHVwCiAgICAgICAgZmllbGRzLmVhY2ggZG8gfGZ8CiAg # ICAgICAgICB2CT0gdmFsdWVzMi5zaGlmdAogICAgICAgICAgdgk9IHYuZG93 # bmNhc2UJdW5sZXNzIHYubmlsPwogICAgICAgICAgaWYgZW1wdHlsaW5lLm5p # bD8gb3IgKG5vdCB2ID09IGVtcHR5bGluZSkKICAgICAgICAgICAgaWYgZXhh # Y3QKICAgICAgICAgICAgICB1bmxlc3MgKHYubmlsPyBvciBjW2YtY29ycmVj # dGlvbl0uZG93bmNhc2UgPT0gdikKICAgICAgICAgICAgICAgIG9rCT0gZmFs # c2UKICAgICAgICAgICAgICAgICN0aHJvdyA6c3RvcAogICAgICAgICAgICAg # IGVuZAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgdW5sZXNzICh2 # Lm5pbD8gb3IgY1tmLWNvcnJlY3Rpb25dLmRvd25jYXNlLmluY2x1ZGU/KHYp # KQogICAgICAgICAgICAgICAgb2sJPSBmYWxzZQogICAgICAgICAgICAgICAg # I3Rocm93IDpzdG9wCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVu # ZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgICNlbmQKCiAgICAg # IGlmIG9rCiAgICAgICAgcmVzMgk9IFtdCiAgICAgICAgaWYgcmVzdWx0cyA9 # PSBbbmlsXQogICAgICAgICAgcmVzMgk9IGMKICAgICAgICBlbHNlCiAgICAg # ICAgICByZXN1bHRzLmVhY2ggZG8gfG58CiAgICAgICAgICAgIHJlczIgPDwg # Y1tuLWNvcnJlY3Rpb25dCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAg # ICAgICByZXMyCT0gcmVzMi5qb2luKGpvaW53aXRoKQl1bmxlc3Mgam9pbndp # dGgubmlsPwogICAgICAgIHJlc1trXQk9IHJlczIKICAgICAgZW5kCiAgICBl # bmQKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiB0b19pCiAgICBjb2xs # ZWN0e3xrLCB2fCB2LnRvX2l9CiAgZW5kCgogIGRlZiBzZWxmLmZpbGUoZmls # ZSkKICAgIHJlcwk9IG5ldwoKICAgIEZpbGUub3BlbihmaWxlKSBkbyB8ZnwK # ICAgICAgI2YucmVhZGxpbmVzLmNob21wLmVhY2ggZG8gfGxpbmV8CiAgICAg # IHdoaWxlIGxpbmUgPSBmLmdldHMgZG8KICAgICAgICBsaW5lLmNob21wIQoK # ICAgICAgICB1bmxlc3MgbGluZS5lbXB0eT8KICAgICAgICAgIGssIHYJPSBs # aW5lLnNwbGl0KC9ccyo9XHMqLywgMikKICAgICAgICAgIHJlc1trXQk9IHYK # ICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMKICBlbmQK # CiAgZGVmIGlkcwogICAgY29sbGVjdHt8aywgdnwgW2ssIHZdLmlkc30KICBl # bmQKZW5kCgpkZWYgaWQycmVmKGlkKQogIE9iamVjdFNwYWNlLl9pZDJyZWYo # aWQpCmVuZAoKZGVmIGFmdGVyKHNlY29uZHMsICphcmdzKQogIGlmIG5vdCBz # ZWNvbmRzLm5pbD8gYW5kIG5vdCBzZWNvbmRzLnplcm8/CiAgICBUaHJlYWQu # bmV3KCphcmdzKSBkbyB8KmFyZ3MyfAogICAgICBzbGVlcCBzZWNvbmRzCiAg # ICAgIHlpZWxkKCphcmdzMikKICAgIGVuZAogIGVuZAplbmQKCmRlZiBldmVy # eShzZWNvbmRzLCAqYXJncykKICBpZiBub3Qgc2Vjb25kcy5uaWw/IGFuZCBu # b3Qgc2Vjb25kcy56ZXJvPwogICAgVGhyZWFkLm5ldygqYXJncykgZG8gfCph # cmdzMnwKICAgICAgbG9vcCBkbwogICAgICAgIHNsZWVwIHNlY29uZHMKICAg # ICAgICB5aWVsZCgqYXJnczIpCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVu # ZAoKZGVmIGV2dGltZW91dChzZWNvbmRzKQogIGJlZ2luCiAgICB0aW1lb3V0 # KHNlY29uZHMpIGRvCiAgICAgIHlpZWxkCiAgICBlbmQKICByZXNjdWUgVGlt # ZW91dEVycm9yCiAgZW5kCmVuZAoKZGVmIGV2dGltZW91dHJldHJ5KHNlY29u # ZHMpCiAgb2sJPSBmYWxzZQoKICB3aGlsZSBub3Qgb2sKICAgIGV2dGltZW91 # dChzZWNvbmRzKSBkbwogICAgICB5aWVsZAogICAgICBvawk9IHRydWUKICAg # IGVuZAogIGVuZAplbmQKCmRlZiB0cmFwKHNpZ25hbCkKICBLZXJuZWw6OnRy # YXAoc2lnbmFsKSBkbwogICAgeWllbGQKICBlbmQKCgkjIFNlZW1zIHBvaW50 # bGVzcywgYnV0IGl0J3MgZm9yIGNhdGNoaW5nIF5DIHVuZGVyIFdpbmRvd3Mu # Li4KCiAgZXZlcnkoMSkJe30JaWYgd2luZG93cz8KZW5kCgpkZWYgbGludXg/ # CiAgbm90ICh0YXJnZXRfb3MuZG93bmNhc2UgPX4gL2xpbnV4LykubmlsPwpl # bmQKCmRlZiBkYXJ3aW4/CiAgbm90ICh0YXJnZXRfb3MuZG93bmNhc2UgPX4g # L2Rhcndpbi8pLm5pbD8KZW5kCgpkZWYgd2luZG93cz8KICBub3QgKHRhcmdl # dF9vcy5kb3duY2FzZSA9fiAvMzIvKS5uaWw/CmVuZAoKZGVmIGN5Z3dpbj8K # ICBub3QgKHRhcmdldF9vcy5kb3duY2FzZSA9fiAvY3lnLykubmlsPwplbmQK # CmRlZiB0YXJnZXRfb3MKICBDb25maWc6OkNPTkZJR1sidGFyZ2V0X29zIl0g # b3IgIiIKZW5kCgpkZWYgdXNlcgogIEVOVlsiVVNFUiJdIG9yIEVOVlsiVVNF # Uk5BTUUiXQplbmQKCmRlZiBob21lCiAgKEVOVlsiSE9NRSJdIG9yIEVOVlsi # VVNFUlBST0ZJTEUiXSBvciAoRmlsZS5kaXJlY3Rvcnk/KCJoOi8iKSA/ICJo # OiIgOiAiYzoiKSkuZ3N1YigvXFwvLCAiLyIpCmVuZAoKZGVmIHRlbXAKICAo # RU5WWyJUTVBESVIiXSBvciBFTlZbIlRNUCJdIG9yIEVOVlsiVEVNUCJdIG9y # ICIvdG1wIikuZ3N1YigvXFwvLCAiLyIpCmVuZAoKZGVmIHN0ZHRtcAogICRz # dGRlcnIgPSAkc3Rkb3V0ID0gRmlsZS5uZXcoIiN7dGVtcH0vcnVieS4je1By # b2Nlc3MucGlkfS5sb2ciLCAiYSIpCmVuZApzdGR0bXAJaWYgZGVmaW5lZD8o # UlVCWVNDUklQVDJFWEUpIGFuZCAoUlVCWVNDUklQVDJFWEUgPX4gL3J1Ynl3 # L2kpCgokbm9ibQk9IGZhbHNlCgpkZWYgbm9ibQogICRub2JtCT0gdHJ1ZQpl # bmQKCmRlZiBibShsYWJlbD0iIikKICBpZiAkbm9ibQogICAgaWYgYmxvY2tf # Z2l2ZW4/CiAgICAgIHJldHVybiB5aWVsZAogICAgZWxzZQogICAgICByZXR1 # cm4gbmlsCiAgICBlbmQKICBlbmQKCiAgbGFiZWwJPSBsYWJlbC5pbnNwZWN0 # CSN1bmxlc3MgbGFiZWwua2luZF9vZj8oU3RyaW5nKQogIHJlcwk9IG5pbAoK # ICAkYm1fbXV0ZXgJPSAoJGJtX211dGV4IG9yIE11dGV4Lm5ldykKCiAgJGJt # X211dGV4LnN5bmNocm9uaXplIGRvCiAgICBpZiAkYm0ubmlsPwogICAgICBy # ZXF1aXJlICJldi9ibSIKCiAgICAgICRibQkJPSB7fQoKICAgICAgYXRfZXhp # dCBkbwogICAgICAgIGwJPSAkYm0ua2V5cy5jb2xsZWN0e3xzfCBzLmxlbmd0 # aH0ubWF4CgkjZm9ybWF0MQk9ICIlMTBzICUxMHMgJTEwcyAlMTBzICUxMHMg # JTEwcyAgICVzIgoJI2Zvcm1hdDIJPSAiJTEwLjZmICUxMC42ZiAlMTAuNmYg # JTEwLjZmICUxMC42ZiAlMTBkICAgJXMiCgkjJHN0ZGVyci5wdXRzIGZvcm1h # dDEgJSBbIlVTRVJDUFUiLCAiU1lTQ1BVIiwgIkNVU0VSQ1BVIiwgIkNTWVND # UFUiLCAiRUxBUFNFRCIsICJDT1VOVCIsICJMQUJFTCJdCgkjJGJtLnNvcnR7 # fGEsIGJ8IFtiWzFdLCBiWzBdXSA8PT4gW2FbMV0sIGFbMF1dfS5lYWNoIGRv # IHxrLCB2fAoJICAjJHN0ZGVyci5wdXRzIGZvcm1hdDIgJSAodiArIFtrXSkK # CSNlbmQKCglmb3JtYXQxCT0gIiUxMHMgJTEwcyAlMTBzICAgJXMiCglmb3Jt # YXQyCT0gIiUxMC42ZiAlMTAuNmYgJTEwZCAgICVzIgogICAgICAgICRibS5l # YWNoIGRvIHxrLCB2fAogICAgICAgICAgJGJtW2tdCT0gW3ZbMF0rdlsxXSwg # dls0XSwgdls1XV0KICAgICAgICBlbmQKCSRzdGRlcnIucHV0cyBmb3JtYXQx # ICUgWyJDUFUiLCAiRUxBUFNFRCIsICJDT1VOVCIsICJMQUJFTCJdCgkkYm0u # c29ydHt8YSwgYnwgW2JbMV0sIGJbMF1dIDw9PiBbYVsxXSwgYVswXV19LmVh # Y2ggZG8gfGssIHZ8CgkgICRzdGRlcnIucHV0cyBmb3JtYXQyICUgKHYgKyBb # a10pCgllbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICAkYm1bbGFiZWxdID0g # WzAuMF0qNSArIFswXQl1bmxlc3MgJGJtLmluY2x1ZGU/KGxhYmVsKQogICAg # JGJtW2xhYmVsXVs1XSArPSAxCiAgZW5kCgogIGlmIGJsb2NrX2dpdmVuPwog # ICAgYm0JPSBCZW5jaG1hcmsubWVhc3VyZXtyZXMgPSB5aWVsZH0KICAgIGJt # YQk9IGJtLnRvX2EJIyBbZHVtbXkgbGFiZWwsIHVzZXIgQ1BVIHRpbWUsIHN5 # c3RlbSBDUFUgdGltZSwgY2hpbGRyZW5zIHVzZXIgQ1BVIHRpbWUsIGNoaWxk # cmVucyBzeXN0ZW0gQ1BVIHRpbWUsIGVsYXBzZWQgcmVhbCB0aW1lXQoKICAg # ICRibV9sYXN0CT0gYm1hCgogICAgJGJtX211dGV4LnN5bmNocm9uaXplIGRv # CiAgICAgIGUJPSAkYm1bbGFiZWxdCiAgICAgIDAudXB0byg0KSBkbyB8bnwK # ICAgICAgICBlW25dICs9IGJtYVtuKzFdCiAgICAgIGVuZAogICAgZW5kCiAg # ZW5kCgogIHJlcwplbmQKCmRlZiB0cmFjZQogIHJlcwk9bmlsCgogIHNldF90 # cmFjZV9mdW5jIGxhbWJkYSB7IHxldmVudCwgZmlsZSwgbGluZSwgaWQsIGJp # bmRpbmcsIGNsYXNzbmFtZXwKICAgICRzdGRlcnIucHJpbnRmICIlOHMgJXM6 # JS0yZCAlMTBzICU4c1xuIiwgZXZlbnQsIGZpbGUsIGxpbmUsIGlkLCBjbGFz # c25hbWUKICB9CgogIGlmIGJsb2NrX2dpdmVuPwogICAgcmVzCT0geWllbGQK # CiAgICBub3RyYWNlCiAgZW5kCgogIHJlcwplbmQKCmRlZiBub3RyYWNlCiAg # c2V0X3RyYWNlX2Z1bmMgbmlsCmVuZAoKZGVmIGxhbWJkYV9jYWNoZWQoJmJs # b2NrKQogIGhhc2gJPSB7fQogIGxhbWJkYSBkbyB8KmFyZ3N8CiAgICByZXMJ # PSBoYXNoW2FyZ3NdCiAgICBpZiByZXMubmlsPwogICAgICByZXMJCT0gYmxv # Y2suY2FsbCgqYXJncykKICAgICAgaGFzaFthcmdzXQk9IHJlcwogICAgZW5k # CiAgICByZXMKICBlbmQKZW5kCgpkZWYgYXNrKG9wdGlvbnMsIHRleHQ9ZmFs # c2UpCiAgaQk9IDAKICAkc3RkZXJyLnB1dHMgIiIKICBvcHRpb25zLmVhY2gg # ZG8gfHN8CiAgICAkc3RkZXJyLnB1dHMgIiAlZCAlcyIgJSBbaSs9MSwgc10K # ICBlbmQKICAkc3RkZXJyLnB1dHMgIiIKICAkc3RkZXJyLnByaW50ICI/ICIK # ICByZXMJPSAkc3RkaW4uZ2V0cwogIHVubGVzcyByZXMubmlsPwogICAgcmVz # CT0gcmVzLnN0cmlwCiAgICByZXMJPSBvcHRpb25zW3Jlcy50b19pLTFdCWlm # IHRleHQgYW5kIG5vdCByZXMuZW1wdHk/CiAgZW5kCiAgcmVzCmVuZAoAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMjEyMi50 # YXIvZXYveG1sLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAxNzUwADAw # MDE3NTAAMDAwMDAwMDUzMTUAMTAyNTAzMjA2MTYAMDE3NzYzACAwAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl # cmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2 # L3NnbWwiCgpjbGFzcyBTR01MT2JqZWN0CiAgZGVmIHRvX3goY2xvc2V0YWdz # PXRydWUpCiAgICByZXMJPSAiIgoKICAgIHBhcnNldHJlZSgicHJlY2hpbGRy # ZW5fdG9feCIsICJwb3N0Y2hpbGRyZW5fdG9feCIsIHJlcywgY2xvc2V0YWdz # KQoKICAgIHJlcwogIGVuZAplbmQKCmNsYXNzIFRleHQgPCBTR01MT2JqZWN0 # CiAgZGVmIHByZWNoaWxkcmVuX3RvX3gocmVzLCBjbG9zZXRhZ3MpCiAgICBy # ZXMgPDwgQHRleHQuc3RyaXAJdW5sZXNzIEB0ZXh0LnN0cmlwLmVtcHR5Pwog # IGVuZAplbmQKCmNsYXNzIENvbW1lbnQgPCBTR01MT2JqZWN0CiAgZGVmIHBy # ZWNoaWxkcmVuX3RvX3gocmVzLCBjbG9zZXRhZ3MpCiAgICByZXMgPDwgIlxu # IglpZiBub3QgcHJldmlvdXMoW10sIFtUZXh0XSkua2luZF9vZj8oQ29tbWVu # dCkKICAgIGxpbmVzCT0gQHRleHQuZ3N1YigvKDwhLS18LS0+KS8sICIiKS5s # Zi5zcGxpdCgvXG4vKQogICAgaWYgbGluZXMubGVuZ3RoID09IDEKICAgICAg # cmVzIDw8ICIgICIqKEBsZXZlbC0xKSArICI8IS0tICIgKyBsaW5lc1swXS5z # dHJpcCArICIgLS0+IiArICJcbiIKICAgIGVsc2UKICAgICAgcmVzIDw8ICIg # ICIqKEBsZXZlbC0xKSArICI8IS0tIiArICJcbiIKICAgICAgcmVzIDw8IGxp # bmVzLmNvbGxlY3R7fHN8ICIgICIqKEBsZXZlbC0xKSArIHMuc3RyaXB9LmRl # bGV0ZV9pZnt8c3wgcy5jb21wcmVzcy5lbXB0eT99LmpvaW4oIlxuIikKICAg # ICAgcmVzIDw8ICJcbiIKICAgICAgcmVzIDw8ICIgICIqKEBsZXZlbC0xKSAr # ICItLT4iICsgIlxuIgogICAgICByZXMgPDwgIlxuIgogICAgZW5kCiAgZW5k # CmVuZAoKY2xhc3MgU3BlY2lhbCA8IFNHTUxPYmplY3QKICBkZWYgcHJlY2hp # bGRyZW5fdG9feChyZXMsIGNsb3NldGFncykKICAgIHJlcyA8PCAiICAiKihA # bGV2ZWwtMSkgKyBAdGV4dC5jb21wcmVzcyArICJcbiIKICBlbmQKZW5kCgpj # bGFzcyBJbnN0cnVjdGlvbiA8IFNHTUxPYmplY3QKICBkZWYgcHJlY2hpbGRy # ZW5fdG9feChyZXMsIGNsb3NldGFncykKICAgIHJlcyA8PCAiICAiKihAbGV2 # ZWwtMSkgKyBAdGV4dC5jb21wcmVzcyArICJcbiIKICBlbmQKZW5kCgpjbGFz # cyBPcGVuVGFnIDwgVGFnCiAgZGVmIHByZWNoaWxkcmVuX3RvX3gocmVzLCBj # bG9zZXRhZ3MpCiAgICBhCT0gW0BzdWJ0eXBlXQoKICAgIGFyZ3MJPSBAYXJn # cy5kdXAKICAgIGFyZ3MuZGVsZXRlKCJpZCIpCiAgICBhcmdzLmRlbGV0ZSgi # bmFtZSIpCiAgICBhcmdzCT0gYXJncy5zb3J0CiAgICBhcmdzLnVuc2hpZnQo # WyJpZCIsIEBhcmdzWyJpZCJdXSkJCWlmIEBhcmdzLmluY2x1ZGU/KCJpZCIp # CiAgICBhcmdzLnVuc2hpZnQoWyJuYW1lIiwgQGFyZ3NbIm5hbWUiXV0pCWlm # IEBhcmdzLmluY2x1ZGU/KCJuYW1lIikKCiAgICBhcmdzLmVhY2ggZG8gfGss # IHZ8CiAgICAgIGlmIG5vdCB2LmluY2x1ZGU/KCInIikKICAgICAgICBhIDw8 # ICIje2t9PScje3Z9JyIKICAgICAgZWxzZQogICAgICAgIGlmIG5vdCB2Lmlu # Y2x1ZGU/KCciJykKICAgICAgICAgIGEgPDwgIiN7a309XCIje3Z9XCIiCiAg # ICAgICAgZWxzZQogICAgICAgICAgYSA8PCAiI3trfT0nI3t2LmdzdWIoL1wn # LywgJyInKX0nIgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAg # IGlmIEBjaGlsZHJlbi5sZW5ndGggPT0gMCBvciAoQGNoaWxkcmVuLmxlbmd0 # aCA9PSAxIGFuZCBAY2hpbGRyZW5bMF0ua2luZF9vZj8oVGV4dCkgYW5kIEBj # aGlsZHJlblswXS50ZXh0LmNvbXByZXNzLmVtcHR5PykKICAgICAgcmVzIDw8 # ICIgICIqKEBsZXZlbC0xKSArICI8I3thLmpvaW4oIiAiKX0vPiIgKyAiXG4i # CiAgICBlbHNlCiAgICAgIGlmIEBjaGlsZHJlbi5sZW5ndGggPT0gMSBhbmQg # QGNoaWxkcmVuWzBdLmtpbmRfb2Y/KFRleHQpIGFuZCBAY2hpbGRyZW5bMF0u # dGV4dC5sZi5zcGxpdCgvXG4vKS5sZW5ndGggPT0gMQogICAgICAgIHJlcyA8 # PCAiICAiKihAbGV2ZWwtMSkgKyAiPCN7YS5qb2luKCIgIil9PiIKICAgICAg # ZWxzZQogICAgICAgIHJlcyA8PCAiICAiKihAbGV2ZWwtMSkgKyAiPCN7YS5q # b2luKCIgIil9PiIgKyAiXG4iCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgog # IGRlZiBwb3N0Y2hpbGRyZW5fdG9feChyZXMsIGNsb3NldGFncykKICAgIGlm # IGNsb3NldGFncwogICAgICB1bmxlc3MgQGNoaWxkcmVuLmxlbmd0aCA9PSAw # IG9yIChAY2hpbGRyZW4ubGVuZ3RoID09IDEgYW5kIEBjaGlsZHJlblswXS5r # aW5kX29mPyhUZXh0KSBhbmQgQGNoaWxkcmVuWzBdLnRleHQuY29tcHJlc3Mu # ZW1wdHk/KQogICAgICAgIHJlcyA8PCAiXG4iCQlpZiBAY2hpbGRyZW4ubGVu # Z3RoID09IDEgYW5kIEBjaGlsZHJlblswXS5raW5kX29mPyhUZXh0KSBhbmQg # QGNoaWxkcmVuWzBdLnRleHQubGYuc3BsaXQoL1xuLykubGVuZ3RoID4gMQog # ICAgICAgIHJlcyA8PCAiICAiKihAbGV2ZWwtMSkJdW5sZXNzIEBjaGlsZHJl # bi5sZW5ndGggPT0gMSBhbmQgQGNoaWxkcmVuWzBdLmtpbmRfb2Y/KFRleHQp # IGFuZCBAY2hpbGRyZW5bMF0udGV4dC5sZi5zcGxpdCgvXG4vKS5sZW5ndGgg # PT0gMQogICAgICAgIHJlcyA8PCAiPC8je0BzdWJ0eXBlfT4iCiAgICAgICAg # cmVzIDw8ICJcbiIKICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5kCgpjbGFz # cyBYTUwgPCBTR01MCiAgZGVmIHRvX3goY2xvc2V0YWdzPXRydWUpCiAgICBy # ZXMJPSAiIgoKICAgIHBhcnNldHJlZSgicHJlY2hpbGRyZW5fdG9feCIsICJw # b3N0Y2hpbGRyZW5fdG9feCIsIHJlcywgY2xvc2V0YWdzKQoKICAgIHJlcwog # IGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AHRtcC5lYXIycnVieXNjcmlwdC5mLjEyMTIyLnRhci9ldi9zZ21sLnJiAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAxMDEy # NQAxMDI1MDMyMDYxNgAwMjAxMjAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlr # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiZXYvdHJlZSIKCmNsYXNzIFNH # TUxPYmplY3QgPCBUcmVlT2JqZWN0CiAgZGVmIHRvX3MKICAgIHJlcwk9ICIi # CgogICAgcGFyc2V0cmVlKCJwcmVjaGlsZHJlbl90b19zIiwgInBvc3RjaGls # ZHJlbl90b19zIiwgcmVzKQoKICAgIHJlcwogIGVuZAoKICBkZWYgdG9faAog # ICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNoaWxkcmVuX3RvX3Nn # bWwiLCAicG9zdGNoaWxkcmVuX3RvX3NnbWwiLCByZXMpCgogICAgcmVzCiAg # ZW5kCmVuZAoKY2xhc3MgVGV4dCA8IFNHTUxPYmplY3QKICBkZWYgaW5pdGlh # bGl6ZSh0ZXh0KQogICAgc3VwZXIoKQogICAgQHRleHQgPSB0ZXh0CiAgZW5k # CgogIGRlZiBwcmVjaGlsZHJlbl90b19zKHJlcykKICAgICNyZXMgPDwgIiN7 # Q0dJLnVuZXNjYXBlSFRNTChAdGV4dCl9ICIKICAgIHJlcyA8PCBAdGV4dAog # IGVuZAoKICBkZWYgcHJlY2hpbGRyZW5fdG9fc2dtbChyZXMpCiAgICAjcmVz # IDw8ICIje0NHSS51bmVzY2FwZUhUTUwoQHRleHQpfSIKICAgIHJlcyA8PCBA # dGV4dAogIGVuZAplbmQKCmNsYXNzIENvbW1lbnQgPCBTR01MT2JqZWN0CiAg # ZGVmIGluaXRpYWxpemUodGV4dCkKICAgIHN1cGVyKCkKICAgIEB0ZXh0ID0g # dGV4dAogIGVuZAoKICBkZWYgcHJlY2hpbGRyZW5fdG9fc2dtbChyZXMpCiAg # ICByZXMgPDwgIiN7QHRleHR9IgogIGVuZAplbmQKCmNsYXNzIFNwZWNpYWwg # PCBTR01MT2JqZWN0CiAgZGVmIGluaXRpYWxpemUodGV4dCkKICAgIHN1cGVy # KCkKICAgIEB0ZXh0ID0gdGV4dAogIGVuZAoKICBkZWYgcHJlY2hpbGRyZW5f # dG9fc2dtbChyZXMpCiAgICByZXMgPDwgIiN7QHRleHR9IgogIGVuZAplbmQK # CmNsYXNzIEluc3RydWN0aW9uIDwgU0dNTE9iamVjdAogIGRlZiBpbml0aWFs # aXplKHRleHQpCiAgICBzdXBlcigpCiAgICBAdGV4dCA9IHRleHQKICBlbmQK # CiAgZGVmIHByZWNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAgcmVzIDw8ICIj # e0B0ZXh0fSIKICBlbmQKZW5kCgpjbGFzcyBUYWcgPCBTR01MT2JqZWN0CiAg # YXR0cl9yZWFkZXIgOmFyZ3MKICBhdHRyX3dyaXRlciA6YXJncwoKICBkZWYg # aW5pdGlhbGl6ZShzdWJ0eXBlLCBhcmdzPXt9KQogICAgc3VwZXIoc3VidHlw # ZSkKICAgIEBhcmdzID0gYXJncwogICAgQHRleHQgPSAiIgogIGVuZAplbmQK # CmNsYXNzIE9wZW5UYWcgPCBUYWcKICBkZWYgaW5pdGlhbGl6ZSgqYXJncykK # ICAgIHN1cGVyCiAgICBAdXBvcmRvd24gPSBEb3duCiAgZW5kCgogIGRlZiBw # cmVjaGlsZHJlbl90b19zZ21sKHJlcykKICAgIGEJPSBbQHN1YnR5cGVdCgog # ICAgQGFyZ3Muc29ydC5lYWNoIGRvIHxrLCB2fAogICAgICBpZiBub3Qgdi5p # bmNsdWRlPygiJyIpCiAgICAgICAgYSA8PCAiI3trfT0nI3t2fSciCiAgICAg # IGVsc2UKICAgICAgICBpZiBub3Qgdi5pbmNsdWRlPygnIicpCiAgICAgICAg # ICBhIDw8ICIje2t9PVwiI3t2fVwiIgogICAgICAgIGVsc2UKICAgICAgICAg # IGEgPDwgIiN7a309JyN7di5nc3ViKC9cJy8sICciJyl9JyIKICAgICAgICBl # bmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMgPDwgIjwje2Euam9pbigi # ICIpfT4iICsgQHRleHQKICBlbmQKCiAgZGVmIHBvc3RjaGlsZHJlbl90b19z # Z21sKHJlcykKICAgIHJlcyA8PCAiPC8je0BzdWJ0eXBlfT4iCWlmIEBjbG9z # ZWQKICBlbmQKZW5kCgpjbGFzcyBDbG9zZVRhZyA8IFRhZwogIGRlZiBpbml0 # aWFsaXplKCphcmdzKQogICAgc3VwZXIKICAgIEB1cG9yZG93biA9IER1bW15 # CiAgZW5kCmVuZAoKY2xhc3MgU0dNTCA8IFRyZWUKICBkZWYgaW5pdGlhbGl6 # ZSgqYXJncykKICAgIEB0YWdjYWNoZQk9IHt9CgogICAgc3VwZXIKICBlbmQK # CiAgZGVmIGJ1aWxkb2JqZWN0cyhzdHJpbmcpCiAgICBAb2JqZWN0cyA9IFtd # CgogICAgdmVyd2VyazMJPQogICAgbGFtYmRhIGRvIHxzdHJpbmd8CiAgICAg # IGEJPSBbXQogIAogICAgICBzdHJpbmdbMS4uLTJdLnNwbGl0YmxvY2tzKFsi # JyIsICInIl0sIFsnIicsICciJ10pLmNvbGxlY3QgZG8gfHR5cGUsIHN8CiAg # ICAgICAgY2FzZSB0eXBlCiAgICAgICAgd2hlbiAwCiAgICAgICAgICBpZiBz # ZWxmLmNsYXNzLnRvX3MgPT0gIkhUTUwiCiAgICAgICAgICAgIHMuc3BsaXR3 # b3Jkcy5lYWNoIGRvIHx3fAogICAgICAgICAgICAgIGQJPSB3LnNwbGl0KCI9 # IiwgMikKICAKICAgICAgICAgICAgICBpZiBkLmxlbmd0aCA9PSAxCiAgICAg # ICAgICAgICAgICBhIDw8IGRbMF0KICAgICAgICAgICAgICBlbHNlCiAgICAg # ICAgICAgICAgICBhIDw8IGRbMF0JaWYgbm90IGRbMF0ubmlsPyBhbmQgbm90 # IGRbMF0uZW1wdHk/CiAgICAgICAgICAgICAgICBhIDw8ICI9IgogICAgICAg # ICAgICAgICAgYSA8PCBkWzFdCWlmIG5vdCBkWzFdLm5pbD8gYW5kIG5vdCBk # WzFdLmVtcHR5PwogICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQK # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgYS5jb25jYXQgcy5zcGxpdHdv # cmRzKFsiLyIsICI9Il0pCiAgICAgICAgICBlbmQKICAgICAgICB3aGVuIDEs # IDIJdGhlbiBhIDw8IHMKICAgICAgICBlbmQKICAgICAgZW5kCiAgCiAgICAg # IG9wZW4JPSBmYWxzZQogICAgICBjbG9zZQk9IGZhbHNlCiAgCiAgICAgIGEg # PSBhWzBdLnNwbGl0d29yZHMoIi8iKSArIGFbMS4uLTFdCiAgCiAgICAgIGlm # IGFbMF0gPT0gIi8iCiAgICAgICAgY2xvc2UJPSB0cnVlCiAgICAgICAgYS5z # aGlmdAogICAgICBlbHNlCiAgICAgICAgb3Blbgk9IHRydWUKICAgICAgZW5k # CiAgCiAgICAgIGlmIGFbLTFdID09ICIvIgogICAgICAgIGNsb3NlCT0gdHJ1 # ZQogICAgICAgIGEucG9wCiAgICAgIGVuZAogIAogICAgICB0YWcJPSBhLnNo # aWZ0LmRvd25jYXNlCiAgICAgIGFyZ3MJPSB7fQogIAogICAgICB3aGlsZSBu # b3QgYS5sZW5ndGguemVybz8KICAgICAgICBpZiBhLmxlbmd0aCA+PSAzIGFu # ZCBhWzFdID09ICI9IgogICAgICAgICAga2V5CT0gYS5zaGlmdC5kb3duY2Fz # ZQogICAgICAgICAgZHVtbXkJPSBhLnNoaWZ0CiAgICAgICAgICB2YWx1ZQk9 # IGEuc2hpZnQubm9xdW90ZXMKICAgICAgICAgIGFyZ3Nba2V5XQk9IHZhbHVl # CiAgICAgICAgZWxzZQogICAgICAgICAga2V5CT0gYS5zaGlmdC5kb3duY2Fz # ZQogICAgICAgICAgYXJnc1trZXldCT0gIiIKICAgICAgICBlbmQKICAgICAg # ZW5kCiAgCiAgICAgIFt0YWcsIGFyZ3MsIG9wZW4sIGNsb3NlXQogICAgZW5k # CgogICAgdmVyd2VyazIJPQogICAgbGFtYmRhIGRvIHxzdHJpbmd8CiAgICAg # IGlmIEB0YWdjYWNoZS5pbmNsdWRlPyBzdHJpbmcKICAgICAgICByZXMJPSBA # dGFnY2FjaGVbc3RyaW5nXQogICAgICBlbHNlCiAgICAgICAgcmVzCT0gdmVy # d2VyazMuY2FsbChzdHJpbmcpCgogICAgICAgIEB0YWdjYWNoZVtzdHJpbmdd # ID0gcmVzCiAgICAgIGVuZAoKICAgICAgcmVzCiAgICBlbmQKCiAgICB2ZXJ3 # ZXJrMSA9CiAgICBsYW1iZGEgZG8gfHN0cmluZ3wKICAgICAgdGFnLCBhcmdz # LCBvcGVuLCBjbG9zZQk9IHZlcndlcmsyLmNhbGwoc3RyaW5nKQoKICAgICAg # QG9iamVjdHMgPDwgT3BlblRhZy5uZXcodGFnLmR1cCwgYXJncy5kdXApCWlm # IG9wZW4KICAgICAgQG9iamVjdHMgPDwgQ2xvc2VUYWcubmV3KHRhZy5kdXAs # IGFyZ3MuZHVwKQlpZiBjbG9zZQogICAgZW5kCgogICAgc3RyaW5nLnNwbGl0 # YmxvY2tzKFsiPCEtLSIsICItLT4iXSwgWyI8ISIsICI+Il0sIFsiPD8iLCAi # Pz4iXSwgWyI8IiwgIj4iXSkuZWFjaCBkbyB8dHlwZSwgc3wKICAgICAgY2Fz # ZSB0eXBlCiAgICAgIHdoZW4gMAkJdGhlbiBAb2JqZWN0cyA8PCBUZXh0Lm5l # dyhzKQogICAgICB3aGVuIDEJCXRoZW4gQG9iamVjdHMgPDwgQ29tbWVudC5u # ZXcocykKICAgICAgd2hlbiAyCQl0aGVuIEBvYmplY3RzIDw8IFNwZWNpYWwu # bmV3KHMpCiAgICAgIHdoZW4gMwkJdGhlbiBAb2JqZWN0cyA8PCBJbnN0cnVj # dGlvbi5uZXcocykKICAgICAgd2hlbiA0CQl0aGVuIHZlcndlcmsxLmNhbGwo # cykKICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIHRvX3MKICAgIHJl # cwk9ICIiCgogICAgcGFyc2V0cmVlKCJwcmVjaGlsZHJlbl90b19zIiwgInBv # c3RjaGlsZHJlbl90b19zIiwgcmVzKQoKICAgIHJlcwogIGVuZAoKICBkZWYg # dG9faAogICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNoaWxkcmVu # X3RvX3NnbWwiLCAicG9zdGNoaWxkcmVuX3RvX3NnbWwiLCByZXMpCgogICAg # cmVzCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJy # dWJ5c2NyaXB0LmYuMTIxMjIudGFyL2V2L3RyZWUucmIAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # ADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDE3MTYzADEwMjUwMzIw # NjE2ADAyMDEyNgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAByZXF1aXJlICJldi9ydWJ5IgpyZXF1aXJlICJldi9uZXQiCnJl # cXVpcmUgIm1kNSIKcmVxdWlyZSAidGhyZWFkIgoKU2FtZQk9IDAKRG93bgk9 # IDEKVXAJPSAyCkR1bW15CT0gMwoKbW9kdWxlIFRleHRBcnJheQogIGRlZiB0 # ZXh0YXJyYXkKICAgIEBjaGlsZHJlbi5jb2xsZWN0IGRvIHxvYmp8CiAgICAg # IFtvYmoudGV4dF0gPDwgb2JqLnRleHRhcnJheQogICAgZW5kLmZsYXR0ZW4u # Y29tcGFjdAogIGVuZAplbmQKCgptb2R1bGUgUGFyc2VUcmVlCiAgZGVmIHBh # cnNldHJlZShwcmVtZXRob2Q9InByZWNoaWxkcmVuIiwgcG9zdG1ldGhvZD0i # cG9zdGNoaWxkcmVuIiwgKmFyZ3MpCiAgICBpZiBAdmlzaWJsZQogICAgICBt # ZXRob2QocHJlbWV0aG9kKS5jYWxsKCphcmdzKQlpZiByZXNwb25kX3RvPyhw # cmVtZXRob2QpCgogICAgICBAY2hpbGRyZW4uZWFjaCBkbyB8b2JqfAogICAg # ICAgIG9iai5wYXJzZXRyZWUocHJlbWV0aG9kLCBwb3N0bWV0aG9kLCAqYXJn # cykKICAgICAgZW5kCgogICAgICBtZXRob2QocG9zdG1ldGhvZCkuY2FsbCgq # YXJncykJaWYgcmVzcG9uZF90bz8ocG9zdG1ldGhvZCkKICAgIGVuZAogIGVu # ZAoKICAjZGVmIHBhcnNldHJlZShwcmVtZXRob2Q9InByZWNoaWxkcmVuIiwg # cG9zdG1ldGhvZD0icG9zdGNoaWxkcmVuIiwgKmFyZ3MpCiAgIyAgc3RhY2sJ # PSBbc2VsZl0KICAjICBkb25lCT0gW10KICAjCiAgIyAgd2hpbGUgbm90IHN0 # YWNrLmVtcHR5PwogICMgICAgb2JqCT0gc3RhY2sucG9wCiAgIwogICMgICAg # aWYgbm90IGRvbmUuaW5jbHVkZT8ob2JqKQogICMgICAgICBvYmoubWV0aG9k # KHByZW1ldGhvZCkuY2FsbCgqYXJncykJaWYgb2JqLnJlc3BvbmRfdG8/KHBy # ZW1ldGhvZCkKICAjCiAgIyAgICAgIHN0YWNrLnB1c2gob2JqKQogICMgICAg # ICBkb25lLnB1c2gob2JqKQogICMKICAjICAgICAgc3RhY2suY29uY2F0IG9i # ai5jaGlsZHJlbi5yZXZlcnNlCiAgIyAgICAgICNvYmouY2hpbGRyZW4ucmV2 # ZXJzZS5lYWNoIGRvIHxjb2JqfAogICMgICAgICAgICNzdGFjay5wdXNoKGNv # YmopCiAgIyAgICAgICNlbmQKICAjICAgIGVsc2UKICAjICAgICAgb2JqLm1l # dGhvZChwb3N0bWV0aG9kKS5jYWxsKCphcmdzKQlpZiBvYmoucmVzcG9uZF90 # bz8ocG9zdG1ldGhvZCkKICAjICAgIGVuZAogICMgIGVuZAogICNlbmQKZW5k # CgpjbGFzcyBUcmVlT2JqZWN0CiAgYXR0cl9yZWFkZXIgOnN1YnR5cGUKICBh # dHRyX3dyaXRlciA6c3VidHlwZQogIGF0dHJfcmVhZGVyIDp1cG9yZG93bgog # IGF0dHJfd3JpdGVyIDp1cG9yZG93bgogIGF0dHJfcmVhZGVyIDpsZXZlbAog # IGF0dHJfd3JpdGVyIDpsZXZlbAogIGF0dHJfcmVhZGVyIDpwYXJlbnQKICBh # dHRyX3dyaXRlciA6cGFyZW50CiAgYXR0cl9yZWFkZXIgOmNoaWxkcmVuCiAg # YXR0cl93cml0ZXIgOmNoaWxkcmVuCiAgYXR0cl9yZWFkZXIgOmNsb3NlZAog # IGF0dHJfd3JpdGVyIDpjbG9zZWQKICBhdHRyX3JlYWRlciA6dGV4dAogIGF0 # dHJfd3JpdGVyIDp0ZXh0CiAgYXR0cl9yZWFkZXIgOnZpc2libGUKICBhdHRy # X3dyaXRlciA6dmlzaWJsZQoKICBpbmNsdWRlIFRleHRBcnJheQogIGluY2x1 # ZGUgUGFyc2VUcmVlCgogIGRlZiBpbml0aWFsaXplKHN1YnR5cGU9bmlsKQog # ICAgQHN1YnR5cGUJPSBzdWJ0eXBlCiAgICBAdXBvcmRvd24JPSBTYW1lCiAg # ICBAbGV2ZWwJPSBuaWwKICAgIEBwYXJlbnQJPSBuaWwKICAgIEBjaGlsZHJl # bgk9IFtdCiAgICBAY2xvc2VkCT0gbmlsCiAgICBAdmlzaWJsZQk9IHRydWUK # ICBlbmQKCiAgZGVmIGluc3BlY3QKICAgIHBhcmVudCwgY2hpbGRyZW4JPSBA # cGFyZW50LCBAY2hpbGRyZW4KCiAgICBAcGFyZW50LCBAY2hpbGRyZW4JPSBw # YXJlbnQub2JqZWN0X2lkLCBjaGlsZHJlbi5jb2xsZWN0e3xvYmp8IG9iai5v # YmplY3RfaWR9CgogICAgcmVzID0gIiAgIiAqIChsZXZlbC0xKSArICIje3Nl # bGYuY2xhc3N9KCN7QHN1YnR5cGV9KSAje3N1cGVyfSIKCiAgICBAcGFyZW50 # LCBAY2hpbGRyZW4JPSBwYXJlbnQsIGNoaWxkcmVuCgogICAgcmVzCiAgZW5k # CgogIGRlZiBwcmV2aW91cyhrbGFzcz1bXSwgc2tpcD1bXSkKICAgIGtsYXNz # CT0gW2tsYXNzXS5mbGF0dGVuCiAgICBza2lwCT0gW3NraXBdLmZsYXR0ZW4K # CiAgICBwbwk9IEBwYXJlbnQKICAgIHJldHVybiBuaWwJaWYgcG8ubmlsPwoK # ICAgIGNoCT0gcG8uY2hpbGRyZW4KICAgIHJldHVybiBuaWwJaWYgY2gubmls # PwoKICAgIG4JPSBjaC5pbmRleChzZWxmKQogICAgcmV0dXJuIG5pbAlpZiBu # Lm5pbD8KCiAgICByZXMJPSBuaWwKICAgIGlmIGtsYXNzLm5pbD8KICAgICAg # biAtPSAxCiAgICAgIHJlcwk9IGNoW25dCiAgICBlbHNlCiAgICAgIGJlZ2lu # CiAgICAgICAgbiAtPSAxCiAgICAgICAgcmVzCT0gY2hbbl0KICAgICAgZW5k # IHdoaWxlIChrbGFzcy5lbXB0eT8gb3Iga2xhc3MuY29sbGVjdHt8a3wgY2hb # bi0xXS5raW5kX29mPyhrKX0uc29ydC51bmlxID09IFt0cnVlXSkgXAogICAg # ICAgICAgICBhbmQgKHNraXAuZW1wdHk/IG9yIHNraXAuY29sbGVjdHt8a3wg # Y2hbbi0xXS5raW5kX29mPyhrKX0uc29ydC51bmlxID09IFtmYWxzZV0pCiAg # ICBlbmQKCiAgICByZXMKICBlbmQKZW5kCgpjbGFzcyBUcmVlCiAgQEB2ZXJz # aWUJPSAxCiAgQEBtdXRleAk9IE11dGV4Lm5ldwoKICBhdHRyX3JlYWRlciA6 # ZGF0YQogIGF0dHJfd3JpdGVyIDpkYXRhCiAgYXR0cl9yZWFkZXIgOnBhcmVu # dAogIGF0dHJfd3JpdGVyIDpwYXJlbnQKICBhdHRyX3JlYWRlciA6Y2hpbGRy # ZW4KICBhdHRyX3dyaXRlciA6Y2hpbGRyZW4KICBhdHRyX3JlYWRlciA6dmlz # aWJsZQogIGF0dHJfd3JpdGVyIDp2aXNpYmxlCgogIGluY2x1ZGUgVGV4dEFy # cmF5CiAgaW5jbHVkZSBQYXJzZVRyZWUKCiAgZGVmIGluaXRpYWxpemUoc3Ry # aW5nKQogICAgc3RyaW5nID0gc3RyaW5nLmpvaW4oIiIpIGlmIHN0cmluZy5r # aW5kX29mPyhBcnJheSkKCiAgICBAZGF0YQkJPSBzdHJpbmcKICAgIEBwYXJl # bnQJCT0gbmlsCiAgICBAY2hpbGRyZW4JCT0gW10KICAgIEBvYmplY3RzCQk9 # IFtdCiAgICBAdmlzaWJsZQkJPSB0cnVlCiAgICBAY2hlY2t2aXNpYmlsaXR5 # CT0gZmFsc2UKCiAgICBidWlsZG9iamVjdHMoc3RyaW5nKQogICAgYnVpbGRw # YXJlbnRzCiAgICBidWlsZGNoaWxkcmVuCiAgICBtYXJrY2xvc2VkCiAgICBk # ZWxldGVkdW1taWVzCgogICAgQGNoZWNrdmlzaWJpbGl0eQk9IHRydWUKICBl # bmQKCiAgZGVmIHNlbGYuZmlsZShmaWxlKQogICAgbmV3KEZpbGUubmV3KGZp # bGUpLnJlYWRsaW5lcykKICBlbmQKCiAgZGVmIHNlbGYubG9jYXRpb24odXJs # LCBmb3JtPUhhc2gubmV3KQogICAgcwk9IEhUVFBDbGllbnQuZ2V0KHVybCwg # e30sIGZvcm0pCiAgICBzCT0gIiIJaWYgcy5uaWw/CiAgICBuZXcocykKICBl # bmQKCiAgZGVmIHNlbGYubmV3X2Zyb21fY2FjaGUyKGRhdGEpCiAgICBuZXco # ZGF0YSkKICBlbmQKCiAgZGVmIHNlbGYubmV3X2Zyb21fY2FjaGUoZGF0YSkK # ICAgIGhhc2gJPSBNRDUubmV3KCIje0BAdmVyc2llfSAje2RhdGF9IikKCiAg # ICBkaXIJCT0gIiN7dGVtcH0vZXZjYWNoZS4je3VzZXJ9L3RyZWUubmV3Igog # ICAgZmlsZQk9ICIje2Rpcn0vI3toYXNofSIKCiAgICB0cmVlCT0gbmlsCgog # ICAgRmlsZS5ta3BhdGgoZGlyKQoKICAgIGlmIEZpbGUuZmlsZT8oZmlsZSkK # ICAgICAgQEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICAgIHRyZWUJPSBN # YXJzaGFsLnJlc3RvcmUoRmlsZS5uZXcoZmlsZSwgInJiIikpCiAgICAgIGVu # ZAogICAgZWxzZQogICAgICB0cmVlCT0gbmV3KGRhdGEpCgogICAgICBpZiBu # b3QgdHJlZS5uaWw/CiAgICAgICAgQEBtdXRleC5zeW5jaHJvbml6ZSBkbwog # ICAgICAgICAgRmlsZS5vcGVuKGZpbGUsICJ3YiIpIHt8ZnwgTWFyc2hhbC5k # dW1wKHRyZWUsIGYpfQogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoK # ICAgIHJldHVybiB0cmVlCiAgZW5kCgogIGRlZiBpbnNwZWN0CiAgICBAb2Jq # ZWN0cy5jb2xsZWN0IGRvIHxvYmp8CiAgICAgIG9iai5pbnNwZWN0CiAgICBl # bmQuam9pbigiXG4iKQogIGVuZAoKICBkZWYgYnVpbGRvYmplY3RzKHN0cmlu # ZykKICAgIHJhaXNlICJIYXMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgc3ViY2xh # c3MuIgogIGVuZAoKICBkZWYgYnVpbGRwYXJlbnRzCiAgICBsZXZlbAk9IDEK # ICAgIGxldmVscwk9IEhhc2gubmV3CiAgICBsZXZlbHNbMF0JPSBuaWwKICAg # IHBhcnNlIGRvIHx0eXBlLCBvYmp8CiAgICAgIGNhc2Ugb2JqLnVwb3Jkb3du # CiAgICAgIHdoZW4gRG93bgogICAgICAgIG9iai5sZXZlbAk9IGxldmVsCiAg # ICAgICAgb2JqLnBhcmVudAk9IGxldmVsc1tsZXZlbC0xXQogICAgICAgIGxl # dmVsc1tsZXZlbF0JPSBvYmoKICAgICAgICBsZXZlbCArPSAxCiAgICAgIHdo # ZW4gVXAsIER1bW15CiAgICAgICAgcGwgPSBsZXZlbAogICAgICAgIDEudXB0 # byhsZXZlbC0xKSBkbyB8bHwKICAgICAgICAgIHBvID0gbGV2ZWxzW2xdCiAg # ICAgICAgICBwbCA9IGwgaWYgcG8uc3VidHlwZSA9PSBvYmouc3VidHlwZQog # ICAgICAgIGVuZAogICAgICAgIGxldmVsID0gcGwKICAgICAgICBvYmoubGV2 # ZWwJPSBsZXZlbAogICAgICAgIG9iai5wYXJlbnQJPSBsZXZlbHNbbGV2ZWwt # MV0KICAgICAgd2hlbiBTYW1lCiAgICAgICAgb2JqLmxldmVsCT0gbGV2ZWwK # ICAgICAgICBvYmoucGFyZW50CT0gbGV2ZWxzW2xldmVsLTFdCiAgICAgIGVu # ZAogICAgZW5kCiAgZW5kCgogIGRlZiBidWlsZGNoaWxkcmVuCiAgICBAb2Jq # ZWN0cy5lYWNoIGRvIHxvYmp8CiAgICAgIG9iai5jaGlsZHJlbiA9IFtdCiAg # ICBlbmQKCiAgICBwYXJzZSBkbyB8dHlwZSwgb2JqfAogICAgICBpZiBub3Qg # b2JqLnBhcmVudC5uaWw/CiAgICAgICAgcG8gPSBvYmoucGFyZW50CiAgICAg # ICAgcG8uY2hpbGRyZW4gPDwgb2JqCiAgICAgIGVsc2UKICAgICAgICBAY2hp # bGRyZW4gPDwgb2JqCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgogIGRlZiBt # YXJrY2xvc2VkCiAgICAoW3NlbGZdICsgQG9iamVjdHMpLmVhY2ggZG8gfG9i # anwKICAgICAgb2JqLmNoaWxkcmVuLmVhY2hfaW5kZXggZG8gfGl8CiAgICAg # ICAgY28xCQk9IG9iai5jaGlsZHJlbltpXQogICAgICAgIGNvMgkJPSBvYmou # Y2hpbGRyZW5baSsxXQoKICAgICAgICBjbzEuY2xvc2VkCT0gKG5vdCBjbzIu # bmlsPyBhbmQgY28xLnVwb3Jkb3duID09IERvd24gYW5kIChjbzIudXBvcmRv # d24gPT0gVXAgb3IgY28yLnVwb3Jkb3duID09IER1bW15KSBhbmQgY28xLnN1 # YnR5cGUgPT0gY28yLnN1YnR5cGUpCiAgICAgIGVuZAogICAgZW5kCiAgZW5k # CgogIGRlZiBkZWxldGVkdW1taWVzCiAgICAoW3NlbGZdICsgQG9iamVjdHMp # LmVhY2ggZG8gfG9ianwKICAgICAgb2JqLmNoaWxkcmVuLmRlbGV0ZV9pZiBk # byB8b2JqMnwKICAgICAgICBvYmoyLnVwb3Jkb3duID09IER1bW15CiAgICAg # IGVuZAogICAgZW5kCgogICAgQG9iamVjdHMuZGVsZXRlX2lmIGRvIHxvYmp8 # CiAgICAgIG9iai51cG9yZG93biA9PSBEdW1teQogICAgZW5kCiAgZW5kCgog # IGRlZiBwYXJzZSh0eXBlcz1bXSwgc3VidHlwZXM9W10sIG9uY2U9ZmFsc2Up # CiAgICB0eXBlcwk9IFt0eXBlc10JaWYgdHlwZXMuY2xhc3MgPT0gQ2xhc3MK # ICAgIHN1YnR5cGVzCT0gW3N1YnR5cGVzXQlpZiBzdWJ0eXBlcy5jbGFzcyA9 # PSBTdHJpbmcKICAgIGhpZGVsZXZlbAk9IG5pbAoKICAgIGNhdGNoIDpvbmNl # IGRvCiAgICAgIEBvYmplY3RzLmVhY2ggZG8gfG9ianwKICAgICAgICBpZiAo # QGNoZWNrdmlzaWJpbGl0eSBhbmQgaGlkZWxldmVsLm5pbD8gYW5kIChub3Qg # b2JqLnZpc2libGUpKQogICAgICAgICAgaGlkZWxldmVsCT0gb2JqLmxldmVs # CiAgICAgICAgZWxzZQogICAgICAgICAgaWYgKEBjaGVja3Zpc2liaWxpdHkg # YW5kIChub3QgaGlkZWxldmVsLm5pbD8pIGFuZCBvYmoudmlzaWJsZSBhbmQg # b2JqLmxldmVsIDw9IGhpZGVsZXZlbCkKICAgICAgICAgICAgaGlkZWxldmVs # CT0gbmlsCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKCiAgICAgICAgaWYg # aGlkZWxldmVsLm5pbD8KICAgICAgICAgIG9rID0gZmFsc2UKICAgICAgICAg # IGNhdGNoIDpzdG9wIGRvCiAgICAgICAgICAgIGlmIHR5cGVzLmVtcHR5Pwog # ICAgICAgICAgICAgIGlmIHN1YnR5cGVzLmVtcHR5PwogICAgICAgICAgICAg # ICAgb2sgPSB0cnVlCiAgICAgICAgICAgICAgICB0aHJvdyA6c3RvcAogICAg # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHN1YnR5cGVzLmVhY2gg # ZG8gfHN0fAogICAgICAgICAgICAgICAgICBpZiBvYmouc3VidHlwZSA9PSBz # dAogICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZQogICAgICAgICAgICAg # ICAgICAgIHRocm93IDpzdG9wCiAgICAgICAgICAgICAgICAgIGVuZAogICAg # ICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAg # IGVsc2UKICAgICAgICAgICAgICBpZiBzdWJ0eXBlcy5lbXB0eT8KICAgICAg # ICAgICAgICAgIHR5cGVzLmVhY2ggZG8gfHR8CiAgICAgICAgICAgICAgICAg # IGlmIG9iai5raW5kX29mPyh0KQogICAgICAgICAgICAgICAgICAgIG9rID0g # dHJ1ZQogICAgICAgICAgICAgICAgICAgIHRocm93IDpzdG9wCiAgICAgICAg # ICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAg # ICAgZWxzZQogICAgICAgICAgICAgICAgdHlwZXMuZWFjaCBkbyB8dHwKICAg # ICAgICAgICAgICAgICAgc3VidHlwZXMuZWFjaCBkbyB8c3R8CiAgICAgICAg # ICAgICAgICAgICAgaWYgb2JqLmtpbmRfb2Y/KHQpIGFuZCBvYmouc3VidHlw # ZSA9PSBzdAogICAgICAgICAgICAgICAgICAgICAgb2sgPSB0cnVlCiAgICAg # ICAgICAgICAgICAgICAgICB0aHJvdyA6c3RvcAogICAgICAgICAgICAgICAg # ICAgIGVuZAogICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAg # IGVuZAogICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAg # ICAgIGVuZAoKICAgICAgICAgIGlmIG9rCiAgICAgICAgICAgIHlpZWxkKG9i # ai5jbGFzcy50b19zLCBvYmopCgogICAgICAgICAgICB0aHJvdyA6b25jZQlp # ZiBvbmNlCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgZW5kCiAg # ICBlbmQKICBlbmQKCiAgZGVmIHBhdGgocGFkKQogICAgcDEJPSBzZWxmCgog # ICAgdW5sZXNzIHBhZC5uaWw/CiAgICAgIHBhZC5zcGxpdCgvXC8vKS5lYWNo # IGRvIHxkZWVsfAogICAgICAgIHRhZywgdm9vcmtvbWVuCT0gZGVlbC5zcGxp # dCgvOi8pCgogICAgICAgIGlmIChub3QgdGFnLm5pbD8pIGFuZCAobm90IHAx # Lm5pbD8pCiAgICAgICAgICB2b29ya29tZW4JPSAxCWlmIHZvb3Jrb21lbi5u # aWw/CiAgICAgICAgICB2b29ya29tZW4JPSB2b29ya29tZW4udG9faQoKICAg # ICAgICAgIHRlbGxlcgk9IDAKICAgICAgICAgIHAyCT0gbmlsCiAgICAgICAg # ICBwMS5jaGlsZHJlbi5lYWNoX2luZGV4IGRvIHxpfAogICAgICAgICAgICAj # aWYgcDEuY2hpbGRyZW5baV0udXBvcmRvd24gPT0gRG93bgogICAgICAgICAg # ICAgIHVubGVzcyAgcDEuY2hpbGRyZW5baV0uc3VidHlwZS5uaWw/CiAgICAg # ICAgICAgICAgICBpZiBwMS5jaGlsZHJlbltpXS5zdWJ0eXBlLm5vcXVvdGVz # ID09IHRhZy5ub3F1b3RlcwogICAgICAgICAgICAgICAgICB0ZWxsZXIgKz0g # MQogICAgICAgICAgICAgICAgICBwMgk9IHAxLmNoaWxkcmVuW2ldCWlmIHRl # bGxlciA9PSB2b29ya29tZW4KICAgICAgICAgICAgICAgIGVuZAogICAgICAg # ICAgICAgIGVuZAogICAgICAgICAgICAjZW5kCiAgICAgICAgICBlbmQKICAg # ICAgICAgIHAxCT0gcDIKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQK # CiAgICBwMQogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5mLjEyMTIyLnRhci9ldi9u # ZXQucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAw # MDAwMDA0NjIyNgAxMDI1MDMyMDYxNgAwMTc3NTcAIDAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0 # YXIgIABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiZXYvcnVieSIK # cmVxdWlyZSAiZXYvZnRvb2xzIgpyZXF1aXJlICJldi9taW1lIgpyZXF1aXJl # ICJuZXQvaHR0cCIKcmVxdWlyZSAic29ja2V0IgpyZXF1aXJlICJ1cmkiCnJl # cXVpcmUgImNnaSIKcmVxdWlyZSAibWQ1IgpyZXF1aXJlICJ0aHJlYWQiCgok # cHJveHkJPSBFTlZbIlBST1hZIl0JaWYgJHByb3h5Lm5pbD8KCmZpbGUJPSAi # I3tob21lfS8uZXZuZXQiCmlmIEZpbGUuZmlsZT8oZmlsZSkKICBIYXNoLmZp # bGUoZmlsZSkuZWFjaCBkbyB8aywgdnwKICAgIGV2YWwgIiQje2t9ID0gJyN7 # dn0nIgl1bmxlc3Mgaz1+IC9eXCMvCiAgZW5kCmVuZAoKZGVmIHVyaTJ0eHQo # cykKCSMgPz8/IFdlcmt0IG5pZXQgZ29lZAogIGkJPSBzLmluZGV4KC8lW1s6 # ZGlnaXQ6XV17Mn0vKQogIHdoaWxlIG5vdCBpLm5pbD8KICAgIHMJPSBzWzAu # LihpLTEpXSArIHNbKGkrMSkuLihpKzIpXS51bnBhY2soJ0gyJykuc2hpZnQu # dG9faS5jaHIgKyBzWyhpKzMpLi4tMV0KICAgIGkJPSBzLmluZGV4KC8lW1s6 # ZGlnaXQ6XV17Mn0vKQogIGVuZAogIHMKZW5kCgpjbGFzcyBUQ1BTZXJ2ZXIK # ICBkZWYgc2VsZi5mcmVlcG9ydChmcm9tLCB0bywgcmVtb3RlPWZhbHNlKQog # ICAgaWYgd2luZG93cz8gb3IgY3lnd2luPwogICAgICBUQ1BTZXJ2ZXIuZnJl # ZXBvcnRfd2luZG93cyhmcm9tLCB0bywgcmVtb3RlKQogICAgZWxzZQogICAg # ICBUQ1BTZXJ2ZXIuZnJlZXBvcnRfbGludXgoZnJvbSwgdG8sIHJlbW90ZSkK # ICAgIGVuZAogIGVuZAoKICBkZWYgc2VsZi5mcmVlcG9ydF9saW51eChmcm9t # LCB0bywgcmVtb3RlKQogICAgcG9ydHMJPSAoZnJvbS4udG8pLnRvX2EKICAg # IHBvcnQJPSBuaWwKICAgIHJlcwkJPSBuaWwKCiAgICB3aGlsZSByZXMubmls # PyBhbmQgbm90IHBvcnRzLmVtcHR5PwogICAgICBiZWdpbgogICAgICAgIHBv # cnQJPSBwb3J0c1swXQogICAgICAgIHBvcnRzLmRlbGV0ZShwb3J0KQoKICAg # ICAgICBpbwk9IFRDUFNlcnZlci5uZXcocmVtb3RlID8gIjAuMC4wLjAiIDog # ImxvY2FsaG9zdCIsIHBvcnQpCgogICAgICAgIHJlcwk9IFtwb3J0LCBpb10K # ICAgICAgcmVzY3VlCiAgICAgIGVuZAogICAgZW5kCgogICAgcmVzCT0gW25p # bCwgbmlsXQlpZiByZXMubmlsPwoKICAgIHBvcnQsIGlvCT0gcmVzCgogICAg # cmV0dXJuIHBvcnQsIGlvCiAgZW5kCgogIGRlZiBzZWxmLmZyZWVwb3J0X3dp # bmRvd3MoZnJvbSwgdG8sIHJlbW90ZSkKICAgIHBvcnRzCT0gKGZyb20uLnRv # KS50b19hCiAgICBwb3J0CT0gbmlsCiAgICByZXMJCT0gbmlsCgogICAgd2hp # bGUgcmVzLm5pbD8gYW5kIG5vdCBwb3J0cy5lbXB0eT8KICAgICAgYmVnaW4K # ICAgICAgICBwb3J0CT0gcG9ydHMuYW55CiAgICAgICAgcG9ydHMuZGVsZXRl # KHBvcnQpCgogICAgICAgIGlvCT0gVENQU29ja2V0Lm5ldygibG9jYWxob3N0 # IiwgcG9ydCkKICAgICAgICBpby5jbG9zZQogICAgICByZXNjdWUKICAgICAg # ICByZXMJPSBwb3J0CiAgICAgIGVuZAogICAgZW5kCgogICAgcG9ydCwgaW8J # PSByZXMKCiAgICByZXR1cm4gcG9ydCwgaW8KICBlbmQKCiAgZGVmIHNlbGYu # ZnJlZXBvcnRfd2luZG93czIoZnJvbSwgdG8sIHJlbW90ZSkKICAgIHJlcwk9 # IG5pbAogICAgcG9ydAk9IGZyb20KCiAgICB3aGlsZSByZXMubmlsPyBhbmQg # cG9ydCA8PSB0bwogICAgICBiZWdpbgogICAgICAgIGlvCT0gVENQU29ja2V0 # Lm5ldygibG9jYWxob3N0IiwgcG9ydCkKICAgICAgICBpby5jbG9zZQoKICAg # ICAgICBwb3J0ICs9IDEKICAgICAgcmVzY3VlCiAgICAgICAgcmVzCT0gcG9y # dAogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiByZXMKICBlbmQKCiAg # ZGVmIHNlbGYudXNlZHBvcnRzKGZyb20sIHRvKQogICAgdGhyZWFkcwk9IFtd # CiAgICByZXMJCT0gW10KCiAgICBmcm9tLnVwdG8odG8pIGRvIHxwb3J0fAog # ICAgICB0aHJlYWRzIDw8IFRocmVhZC5uZXcgZG8KICAgICAgICBiZWdpbgog # ICAgICAgICAgaW8JPSBUQ1BTb2NrZXQubmV3KCJsb2NhbGhvc3QiLCBwb3J0 # KQogICAgICAgICAgaW8uY2xvc2UKCiAgICAgICAgICBwb3J0CiAgICAgICAg # cmVzY3VlCiAgICAgICAgICBuaWwKICAgICAgICBlbmQKICAgICAgZW5kCiAg # ICBlbmQKCiAgICB0aHJlYWRzLmVhY2ggZG8gfHRocmVhZHwKICAgICAgcG9y # dAk9IHRocmVhZC52YWx1ZQogICAgICByZXMgPDwgcG9ydAl1bmxlc3MgcG9y # dC5uaWw/CiAgICBlbmQKCiAgICByZXR1cm4gcmVzCiAgZW5kCmVuZAoKY2xh # c3MgRVZVUkkKICBhdHRyX3JlYWRlciA6cHJvdG9jb2wKICBhdHRyX3dyaXRl # ciA6cHJvdG9jb2wKICBhdHRyX3JlYWRlciA6dXNlcnBhc3MKICBhdHRyX3dy # aXRlciA6dXNlcnBhc3MKICBhdHRyX3JlYWRlciA6aG9zdAogIGF0dHJfd3Jp # dGVyIDpob3N0CiAgYXR0cl9yZWFkZXIgOnBvcnQKICBhdHRyX3dyaXRlciA6 # cG9ydAogIGF0dHJfcmVhZGVyIDpwYXRoCiAgYXR0cl93cml0ZXIgOnBhdGgK # ICBhdHRyX3JlYWRlciA6dmFycwogIGF0dHJfd3JpdGVyIDp2YXJzCiAgYXR0 # cl9yZWFkZXIgOmFuY2hvcgogIGF0dHJfd3JpdGVyIDphbmNob3IKCiAgZGVm # IGluaXRpYWxpemUodXJsKQogICAgYmVnaW4KICAgICAgQHByb3RvY29sLCBA # dXNlcnBhc3MsIEBob3N0LCBAcG9ydCwgZDEsIEBwYXRoLCBkMiwgQHZhcnMs # IEBhbmNob3IJPSBVUkkuc3BsaXQodXJsLnRvX3MpCiAgICByZXNjdWUKICAg # IGVuZAoKICAgIEBwYXRoCQk9ICIvIgkJaWYgKG5vdCBAcGF0aC5uaWw/IGFu # ZCBAcGF0aC5lbXB0eT8gYW5kIEBwcm90b2NvbCA9PSAiaHR0cCIpCgogICAg # QHByb3RvY29sCQk9ICIiCQlpZiBAcHJvdG9jb2wubmlsPwogICAgQHVzZXJw # YXNzCQk9ICIiCQlpZiBAdXNlcnBhc3MubmlsPwogICAgQGhvc3QJCT0gIiIJ # CWlmIEBob3N0Lm5pbD8KICAgIEBwb3J0CQk9IDAJCWlmIEBwb3J0Lm5pbD8K # ICAgIEBwYXRoCQk9ICIiCQlpZiBAcGF0aC5uaWw/CiAgICBAdmFycwkJPSAi # IgkJaWYgQHZhcnMubmlsPwogICAgQGFuY2hvcgkJPSAiIgkJaWYgQGFuY2hv # ci5uaWw/CgogICAgcmVzCQkJPSB7fQogICAgQHZhcnN2b2xnb3JkZQk9IFtd # CiAgICBAdmFycy5zcGxpdCgvJi8pLmVhY2h7fHZhcnwgaywgdiA9IHZhci5z # cGxpdCgvPS8pIDsgcmVzW2tdID0gdiA7IEB2YXJzdm9sZ29yZGUgPDwga30K # ICAgIEB2YXJzCQk9IHJlcwoKICAgIEBwb3J0CQk9IEBwb3J0LnRvX2kKICBl # bmQKCiAgZGVmICsodXJsMikKICAgIHVybDEJPSBzZWxmLnRvX3MKICAgIHVy # bDIJPSB1cmwyLnRvX3MJaWYgdXJsMi5raW5kX29mPyhzZWxmLmNsYXNzKQoK # ICAgIHJldHVybiBFVlVSSS5uZXcoKFVSSTo6R2VuZXJpYy5uZXcoKlVSSS5z # cGxpdCh1cmwxKSkgKyBVUkk6OkdlbmVyaWMubmV3KCpVUkkuc3BsaXQodXJs # MikpKS50b19zKQlyZXNjdWUgbmlsCiAgZW5kCgogIGRlZiB0b19zCiAgICBw # cm90b2NvbAk9IEBwcm90b2NvbAogICAgdXNlcnBhc3MJPSBAdXNlcnBhc3MK # ICAgIGhvc3QJPSBAaG9zdAogICAgcG9ydAk9IEBwb3J0CiAgICBwYXRoCT0g # QHBhdGgKICAgIHZhcnMJPSB2YXJzdHJpbmcKICAgIGFuY2hvcgk9IEBhbmNo # b3IKCiAgICBwcm90b2NvbAk9IG5pbAlpZiBAcHJvdG9jb2wuZW1wdHk/CiAg # ICB1c2VycGFzcwk9IG5pbAlpZiBAdXNlcnBhc3MuZW1wdHk/CiAgICBob3N0 # CT0gbmlsCWlmIEBob3N0LmVtcHR5PwogICAgcG9ydAk9IG5pbAlpZiBAcG9y # dC56ZXJvPwogICAgcGF0aAk9IG5pbAlpZiBAcGF0aC5lbXB0eT8KICAgIHZh # cnMJPSBuaWwJaWYgQHZhcnMuZW1wdHk/CiAgICBhbmNob3IJPSBuaWwJaWYg # QGFuY2hvci5lbXB0eT8KCiAgICByZXMJPSBVUkk6OkhUVFAubmV3KEBwcm90 # b2NvbCwgQHVzZXJwYXNzLCBAaG9zdCwgcG9ydCwgbmlsLCBAcGF0aCwgbmls # LCB2YXJzLCBAYW5jaG9yKS50b19zLmZyb21faHRtbAoKICAgIHJlcy5nc3Vi # ISgvQC8sICIiKQlpZiAoQHVzZXJwYXNzLm5pbD8gb3IgQHVzZXJwYXNzLmVt # cHR5PykKCiAgICByZXMuZ3N1YiEoL1wjJC8sICIiKQoKICAgIHJldHVybiBy # ZXMKICBlbmQKCiAgZGVmIGxvY2FsbmFtZQogICAgcHJvdG9jb2wJPSBAcHJv # dG9jb2wKICAgIHVzZXJwYXNzCT0gQHVzZXJwYXNzCiAgICBob3N0CT0gQGhv # c3QKICAgIHBvcnQJPSBAcG9ydAogICAgcGF0aAk9IEBwYXRoCiAgICB2YXJz # CT0gdmFyc3RyaW5nCiAgICBhbmNob3IJPSBAYW5jaG9yCgogICAgcHJvdG9j # b2wJPSBuaWwJaWYgQHByb3RvY29sLmVtcHR5PwogICAgdXNlcnBhc3MJPSBu # aWwJaWYgQHVzZXJwYXNzLmVtcHR5PwogICAgaG9zdAk9IG5pbAlpZiBAaG9z # dC5lbXB0eT8KICAgIHBvcnQJPSBuaWwJaWYgQHBvcnQuemVybz8KICAgIHBh # dGgJPSBuaWwJaWYgQHBhdGguZW1wdHk/CiAgICB2YXJzCT0gbmlsCWlmIEB2 # YXJzLmVtcHR5PwogICAgYW5jaG9yCT0gbmlsCWlmIEBhbmNob3IuZW1wdHk/ # CgogICAgcGF0aAk9ICIje3BhdGh9LiIJaWYgcGF0aCA9fiAvW1wvXFxdJC8K # CiAgICBmCT0gTUQ1Lm5ldyhwcm90b2NvbC50b19zICsgdXNlcnBhc3MudG9f # cyArIGhvc3QudG9fcyArIHBvcnQudG9fcyArIEZpbGUuZGlybmFtZShwYXRo # LnRvX3MpICsgdmFycy50b19zKS50b19zCiAgICBlCT0gRmlsZS5iYXNlbmFt # ZShwYXRoLnRvX3MpLmdzdWIoL1teXHdcLlwtXS8sICJfIikuZ3N1YigvXysv # LCAiXyIpCiAgICByZXMJPSBmICsgIi4iICsgZQogICAgcmVzLmdzdWIhKC9b # Xlx3XSskLywgIiIpCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYgdmFy # c3RyaW5nCiAgICByZXMJCT0gW10KICAgIHZhcnMJPSBAdmFycy5kdXAKCiAg # ICBAdmFyc3ZvbGdvcmRlLmVhY2ggZG8gfGt8CiAgICAgIGlmIHZhcnMuaW5j # bHVkZT8oaykKICAgICAgICB2CT0gdmFyc1trXQogICAgICAgIHZhcnMuZGVs # ZXRlKGspCgogICAgICAgIHJlcyA8PCAodi5uaWw/ID8gayA6ICIje2t9PSN7 # dn0iKQogICAgICBlbmQKICAgIGVuZAoKICAgIHJlcy5jb25jYXQodmFycy5j # b2xsZWN0e3xrLCB2fCB2Lm5pbD8gPyBrIDogIiN7a309I3t2fSJ9KQoKICAg # IHJldHVybiByZXMuam9pbigiJiIpCiAgZW5kCmVuZAoKY2xhc3MgSFRUUENs # aWVudAogIEBAdmVyc2llCT0gMQogIEBAbXV0ZXgJPSBNdXRleC5uZXcKICBA # QGhvc3RzCT0ge30KCiAgY2xhc3MgSGVhZGVyCiAgICBhdHRyX3JlYWRlciA6 # aGVhZGVyCiAgICBhdHRyX3JlYWRlciA6cHJvdG9jb2wKICAgIGF0dHJfcmVh # ZGVyIDpjb2RlCiAgICBhdHRyX3JlYWRlciA6dGV4dAoKICAgIGRlZiBpbml0 # aWFsaXplKGhlYWRlcikKICAgICAgQGhlYWRlcgk9IHt9CgogICAgICBpZiBu # b3QgaGVhZGVyLm5pbD8KICAgICAgICBmaXJzdGxpbmUsIHJlc3QJPSBoZWFk # ZXIuc3BsaXQoL1xyKlxuLywgMikKCiAgICAgICAgQHByb3RvY29sLCBAY29k # ZSwgQHRleHQJPSBmaXJzdGxpbmUuc3BsaXQoLyAgKi8sIDMpCgogICAgICAg # IEBjb2RlCT0gQGNvZGUudG9faQoKICAgICAgICBpZiBub3QgcmVzdC5uaWw/ # CiAgICAgICAgICByZXN0LnNwbGl0KC9ccipcbi8pLmVhY2ggZG8gfGxpbmV8 # CiAgICAgICAgICAgIGtleSwgdmFsdWUJPSBsaW5lLnNwbGl0KC8gLywgMikK # ICAgICAgICAgICAgQGhlYWRlcltrZXkuc3ViKC86JC8sICIiKS5kb3duY2Fz # ZV0JPSB2YWx1ZQogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgIGVu # ZAogICAgZW5kCgogICAgZGVmIHRvX3MKICAgICAgcmVzCT0gIiIKCiAgICAg # IHJlcyA8PCAiJXMgJXMgJXNcbiIgJSBbQHByb3RvY29sLCBAY29kZSwgQHRl # eHRdCgogICAgICBAaGVhZGVyLmVhY2ggZG8gfGssIHZ8CiAgICAgICAgcmVz # IDw8ICIlcz0lc1xuIiAlIFtrLCB2XQogICAgICBlbmQKCiAgICAgIHJldHVy # biByZXMKICAgIGVuZAogIGVuZAoKICBjbGFzcyBDaHVuawogICAgZGVmIGlu # aXRpYWxpemUoZGF0YSkKICAgICAgQGRhdGEJPSAiIgogICAgICBsaW5lLCBk # YXRhCT0gZGF0YS5zcGxpdCgvXHIqXG4vLCAyKQogICAgICBzaXplLCBleHQJ # CT0gbGluZS5zcGxpdCgvOy8sIDIpCiAgICAgIHNpemUJCT0gc2l6ZS5oZXgK # ICAgICAgd2hpbGUgbm90IHNpemUuemVybz8gYW5kIG5vdCBkYXRhLm5pbD8K # ICAgICAgICBAZGF0YQkJKz0gZGF0YVswLi4oc2l6ZS0xKV0KICAgICAgICBk # YXRhCQk9IGRhdGFbc2l6ZS4uLTFdCiAgICAgICAgaWYgbm90IGRhdGEubmls # PwogICAgICAgICAgZGF0YS5nc3ViISgvXlxyKlxuLywgIiIpCiAgICAgICAg # ICBsaW5lLCBkYXRhCT0gZGF0YS5zcGxpdCgvXHIqXG4vLCAyKQogICAgICAg # ICAgc2l6ZSwgZXh0CT0gbGluZS5zcGxpdCgvOy8sIDIpCiAgICAgICAgICBz # aXplCQk9IHNpemUuaGV4CiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5k # CgogICAgZGVmIHRvX3MKICAgICAgQGRhdGEKICAgIGVuZAogIGVuZAoKICBj # bGFzcyBOb0FkZHJlc3NFeGNlcHRpb24gPCBTdGFuZGFyZEVycm9yCiAgZW5k # CgogIGRlZiBzZWxmLmdldGFkZHJlc3MoaG9zdCkKICAgIGlmIG5vdCBAQGhv # c3RzLmluY2x1ZGU/KGhvc3QpCiAgICAgIEBAaG9zdHNbaG9zdF0JPSAiIgog # ICAgICBldnRpbWVvdXQoNSkgZG8JIyA/Pz8gRG9ldCAndXQgbmlldD8uLi4K # ICAgICAgICBAQGhvc3RzW2hvc3RdCT0gSVBTb2NrZXQuZ2V0YWRkcmVzcyho # b3N0KQogICAgICBlbmQKICAgIGVuZAoKICAgIHJhaXNlIE5vQWRkcmVzc0V4 # Y2VwdGlvbiwgaG9zdAlpZiBAQGhvc3RzW2hvc3RdLmVtcHR5PwoKICAgIEBA # aG9zdHNbaG9zdF0KICBlbmQKCiAgZGVmIHNlbGYuaGVhZCh1cmksIGZvcm09 # e30sIHJlY3Vyc2l2ZT10cnVlKQogICAgaGVhZGVyCT0gSGVhZGVyLm5ldyhu # aWwpCgogICAgYmVnaW4KICAgICAgd2hpbGUgbm90IHVyaS5uaWw/CiAgICAg # ICAgdXJpCQk9IEVWVVJJLm5ldyh1cmkpIGlmIHVyaS5raW5kX29mPyBTdHJp # bmcKICAgICAgICBob3N0CQk9IHVyaS5ob3N0CiAgICAgICAgcG9ydAkJPSB1 # cmkucG9ydAoKICAgICAgICBpZiAkcHJveHkubmlsPyBvciAkcHJveHkuZW1w # dHk/IG9yIGhvc3QgPT0gImxvY2FsaG9zdCIKICAgICAgICAgIGlvCQk9IG5p # bAoKICAgICAgICAgIEBAbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICAg # ICAgaW8JCQk9IFRDUFNvY2tldC5uZXcoZ2V0YWRkcmVzcyhob3N0KSwgcG9y # dC56ZXJvPyA/IDgwIDogcG9ydCkKICAgICAgICAgIGVuZAoKICAgICAgICAg # IGlvLndyaXRlKCJIRUFEICN7dXJpLnBhdGggb3IgJy8nfSN7dXJpLnZhcnN0 # cmluZy5lbXB0eT8gPyAnJyA6ICc/JyArIHVyaS52YXJzdHJpbmd9IEhUVFAv # MS4wXHJcbkhvc3Q6ICN7aG9zdH1cclxuXHJcbiIpCiAgICAgICAgZWxzZQog # ICAgICAgICAgcHJveHkJCT0gRVZVUkkubmV3KCRwcm94eSkKICAgICAgICAg # IGlvCQk9IFRDUFNvY2tldC5uZXcocHJveHkuaG9zdCwgcHJveHkucG9ydC56 # ZXJvPyA/IDgwODAgOiBwcm94eS5wb3J0KQoKICAgICAgICAgIGlvLndyaXRl # KCJIRUFEICN7dXJpfSBIVFRQLzEuMFxyXG4jeyJQcm94eS1BdXRob3JpemF0 # aW9uOiBCYXNpYyAiKyRwcm94eV9hdXRoKyJcclxuIiBpZiBub3QgJHByb3h5 # X2F1dGgubmlsP31cclxuXHJcbiIpCiAgICAgICAgZW5kCgogICAgICAgIGlv # LmNsb3NlX3dyaXRlCgogICAgICAgIHJlcwk9IGlvLnJlYWQKCiAgICAgICAg # aW8uY2xvc2VfcmVhZAoKICAgICAgICBoZWFkZXIsIGRhdGEJPSBuaWwsIG5p # bAogICAgICAgIGhlYWRlciwgZGF0YQk9IHJlcy5zcGxpdCgvXHIqXG5ccipc # bi8sIDIpCWlmIG5vdCByZXMubmlsPwogICAgICAgIGhlYWRlcgkJPSBIZWFk # ZXIubmV3KGhlYWRlcikKCiAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBoZWFk # ZXIuaGVhZGVyWyJsb2NhdGlvbiJdICE9IHVyaS50b19zCiAgICAgICAgICB1 # cmkJPSBFVlVSSS5uZXcodXJpKSArIGhlYWRlci5oZWFkZXJbImxvY2F0aW9u # Il0KICAgICAgICBlbHNlCiAgICAgICAgICB1cmkJPSBuaWwKICAgICAgICBl # bmQKICAgICAgZW5kCiAgICByZXNjdWUgRXJybm86OkVDT05OUkVTRVQsIEVy # cm5vOjpFSE9TVFVOUkVBQ0ggPT4gZQogICAgICAkc3RkZXJyLnB1dHMgZS5t # ZXNzYWdlCiAgICAgIHNsZWVwIDEKICAgICAgcmV0cnkKICAgIHJlc2N1ZSBF # cnJubzo6RUNPTk5SRUZVU0VEID0+IGUKICAgICAgZGF0YQk9IG5pbAogICAg # cmVzY3VlIE5vQWRkcmVzc0V4Y2VwdGlvbiA9PiBlCiAgICAgICRzdGRlcnIu # cHV0cyBlLm1lc3NhZ2UKICAgICAgaGVhZGVyCT0gSGVhZGVyLm5ldyhuaWwp # CiAgICBlbmQKCiAgICBHQy5zdGFydAoKICAgIHJldHVybiBoZWFkZXIKICBl # bmQKCiAgZGVmIHNlbGYuZ2V0KHVyaSwgaHR0cGhlYWRlcj17fSwgZm9ybT17 # fSkKICAgIHBvc3QJPSBBcnJheS5uZXcKICAgIGZvcm0uZWFjaF9wYWlyIGRv # IHx2YXIsIHZhbHVlfAogICAgICBwb3N0IDw8ICIje3Zhci50b19odG1sfT0j # e3ZhbHVlLnRvX2h0bWx9IgogICAgZW5kCiAgICBwb3N0CT0gcG9zdC5qb2lu # KCI/IikKCiAgICBkYXRhCT0gbmlsCgogICAgYmVnaW4KICAgICAgd2hpbGUg # bm90IHVyaS5uaWw/CiAgICAgICAgdXJpCT0gRVZVUkkubmV3KHVyaSkgaWYg # dXJpLmtpbmRfb2Y/IFN0cmluZwogICAgICAgIGhvc3QJPSB1cmkuaG9zdAog # ICAgICAgIHBvcnQJPSB1cmkucG9ydAoKICAgICAgICBpZiAkcHJveHkubmls # PyBvciAkcHJveHkuZW1wdHk/IG9yIGhvc3QgPT0gImxvY2FsaG9zdCIKICAg # ICAgICAgIGlvCT0gbmlsCiAgICAgICAgICBAQG11dGV4LnN5bmNocm9uaXpl # IGRvCiAgICAgICAgICAgIGlvCQkJPSBUQ1BTb2NrZXQubmV3KGdldGFkZHJl # c3MoaG9zdCksIHBvcnQuemVybz8gPyA4MCA6IHBvcnQpCiAgICAgICAgICBl # bmQKCiAgICAgICAgICBpZiBwb3N0LmVtcHR5PwogICAgICAgICAgICBpby53 # cml0ZSAiR0VUICVzJXMgSFRUUC8xLjBcclxuIiAlIFsodXJpLnBhdGggb3Ig # Jy8nKSwgKHVyaS52YXJzdHJpbmcuZW1wdHk/ID8gJycgOiAnPycgKyB1cmku # dmFyc3RyaW5nKV0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgaW8ud3Jp # dGUgIlBPU1QgJXMlcyBIVFRQLzEuMFxyXG4iICUgWyh1cmkucGF0aCBvciAn # LycpLCAodXJpLnZhcnN0cmluZy5lbXB0eT8gPyAnJyA6ICc/JyArIHVyaS52 # YXJzdHJpbmcpXQogICAgICAgICAgZW5kCiAgICAgICAgZWxzZQogICAgICAg # ICAgcHJveHkJPSBFVlVSSS5uZXcoJHByb3h5KQogICAgICAgICAgaW8JPSBU # Q1BTb2NrZXQubmV3KHByb3h5Lmhvc3QsIHByb3h5LnBvcnQuemVybz8gPyA4 # MDgwIDogcHJveHkucG9ydCkKCiAgICAgICAgICBpZiBwb3N0LmVtcHR5Pwog # ICAgICAgICAgICBpby53cml0ZSAiR0VUICVzIEhUVFAvMS4wXHJcbiIgJSB1 # cmkKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgaW8ud3JpdGUgIlBPU1Qg # JXMgSFRUUC8xLjBcclxuIiAlIHVyaQogICAgICAgICAgZW5kCiAgICAgICAg # ZW5kCgogICAgICAgIGlvLndyaXRlICJIb3N0OiAlc1xyXG4iICUgaG9zdAog # ICAgICAgIGlvLndyaXRlICJVc2VyLUFnZW50OiB4eXpcclxuIgogICAgICAg # IGlvLndyaXRlICJQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyAlc1xyXG4i # ICUgJHByb3h5X2F1dGgJdW5sZXNzICRwcm94eV9hdXRoLm5pbD8KICAgICAg # ICAjaW8ud3JpdGUgIkFjY2VwdC1FbmNvZGluZzogZGVmbGF0ZVxyXG4iCiAg # ICAgICAgI2lvLndyaXRlICJBY2NlcHQtQ2hhcnNldDogSVNPLTg4NTktMVxy # XG4iCiAgICAgICAgaW8ud3JpdGUgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIK # ICAgICAgICBpby53cml0ZSAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94 # LXd3dy1mb3JtLXVybGVuY29kZWRcclxuIgl1bmxlc3MgcG9zdC5lbXB0eT8K # ICAgICAgICBpby53cml0ZSAiQ29udGVudC1MZW5ndGg6ICVzXHJcbiIgJSBw # b3N0Lmxlbmd0aAkJCXVubGVzcyBwb3N0LmVtcHR5PwogICAgICAgIGh0dHBo # ZWFkZXIuZWFjaCBkbyB8aywgdnwKICAgICAgICAgICRzdGRlcnIucHV0cyAi # JXM6ICVzXHJcbiIgJSBbaywgdl0KICAgICAgICAgIGlvLndyaXRlICIlczog # JXNcclxuIiAlIFtrLCB2XQogICAgICAgIGVuZAogICAgICAgIGlvLndyaXRl # ICJcclxuIgogICAgICAgIGlvLndyaXRlIHBvc3QJCQkJCQkJdW5sZXNzIHBv # c3QuZW1wdHk/CgogICAgICAgIGlvLmNsb3NlX3dyaXRlCgogICAgICAgIHJl # cwkJPSBpby5yZWFkCgogICAgICAgIGlvLmNsb3NlX3JlYWQKCiAgICAgICAg # aGVhZGVyLCBkYXRhCT0gbmlsLCBuaWwKICAgICAgICBoZWFkZXIsIGRhdGEJ # PSByZXMuc3BsaXQoL1xyKlxuXHIqXG4vLCAyKQlpZiBub3QgcmVzLm5pbD8K # CiAgICAgICAgaGVhZGVyCT0gSGVhZGVyLm5ldyhoZWFkZXIpCiAgICAgICAg # bGVuZ3RoCT0gaGVhZGVyLmhlYWRlclsiY29udGVudC1sZW5ndGgiXQogICAg # ICAgIGRhdGEJPSAiIglpZiBsZW5ndGggPT0gIjAiCgogICAgICAgIGlmIGhl # YWRlci5oZWFkZXJbImxvY2F0aW9uIl0gIT0gdXJpLnRvX3MKICAgICAgICAg # IHVyaQk9IEVWVVJJLm5ldyh1cmkpICsgaGVhZGVyLmhlYWRlclsibG9jYXRp # b24iXQogICAgICAgIGVsc2UKICAgICAgICAgIHVyaQk9IG5pbAogICAgICAg # IGVuZAoKICAgICAgICBpZiBoZWFkZXIuaGVhZGVyWyJ0cmFuc2Zlci1lbmNv # ZGluZyJdID09ICJjaHVua2VkIgogICAgICAgICAgZGF0YQk9IENodW5rLm5l # dyhkYXRhKS50b19zCWlmIG5vdCBkYXRhLm5pbD8KICAgICAgICBlbmQKCiAg # ICAgICAgI2lmIGhlYWRlci5oZWFkZXJbImNvbnRlbnQtZW5jb2RpbmciXSA9 # PSAiZ3ppcCIKICAgICAgICAgICNkYXRhCT0gImd6aXAgLWQiLmV4ZWMoZGF0 # YSkJaWYgbm90IGRhdGEubmlsPwogICAgICAgICNlbmQKCiAgICAgICAgZGF0 # YQk9IG5pbAl1bmxlc3MgaGVhZGVyLmNvZGUgPT0gMjAwCiAgICAgIGVuZAog # ICAgcmVzY3VlIEVycm5vOjpFQ09OTlJFU0VULCBFcnJubzo6RUhPU1RVTlJF # QUNIID0+IGUKICAgICAgJHN0ZGVyci5wdXRzIGUubWVzc2FnZQogICAgICBz # bGVlcCAxCiAgICAgIHJldHJ5CiAgICByZXNjdWUgRXJybm86OkVDT05OUkVG # VVNFRCA9PiBlCiAgICAgIGRhdGEJPSBuaWwKICAgIHJlc2N1ZSBOb0FkZHJl # c3NFeGNlcHRpb24sIEVycm5vOjpFQ09OTlJFRlVTRUQgPT4gZQogICAgICAk # c3RkZXJyLnB1dHMgZS5tZXNzYWdlCiAgICAgIGRhdGEJPSBuaWwKICAgIGVu # ZAoKICAgIEdDLnN0YXJ0CgogICAgcmV0dXJuIGRhdGEKICBlbmQKCiAgZGVm # IHNlbGYuaGVhZF9mcm9tX2NhY2hlKHVyaSwgZm9ybT17fSkKICAgIGZyb21f # Y2FjaGUoImhlYWQiLCB1cmksIGZvcm0pCiAgZW5kCgogIGRlZiBzZWxmLmdl # dF9mcm9tX2NhY2hlKHVyaSwgZm9ybT17fSkKICAgIGZyb21fY2FjaGUoImdl # dCIsIHVyaSwgZm9ybSkKICBlbmQKCiAgZGVmIHNlbGYuZnJvbV9jYWNoZShh # Y3Rpb24sIHVyaSwgZm9ybSkKICAgIGxvYwkJPSB1cmkudG9fcyArIGZvcm0u # c29ydC5pbnNwZWN0CiAgICBoYXNoCT0gTUQ1Lm5ldygiI3tAQHZlcnNpZX0g # I3tsb2N9IikKCiAgICBkaXIJCT0gIiN7dGVtcH0vZXZjYWNoZS4je3VzZXJ9 # L2h0dHBjbGllbnQuI3thY3Rpb259IgogICAgZmlsZQk9ICIje2Rpcn0vI3to # YXNofSIKICAgIGRhdGEJPSBuaWwKCiAgICBGaWxlLm1rcGF0aChkaXIpCgog # ICAgZXhwaXJlCT0gMzU2KjI0KjYwKjYwCgogICAgaWYgRmlsZS5maWxlPyhm # aWxlKSBhbmQgKFRpbWUubmV3LnRvX2YgLSBGaWxlLnN0YXQoZmlsZSkubXRp # bWUudG9fZiA8IGV4cGlyZSkKICAgICAgQEBtdXRleC5zeW5jaHJvbml6ZSBk # bwogICAgICAgIEZpbGUub3BlbihmaWxlLCAicmIiKQl7fGZ8IGRhdGEgPSBm # LnJlYWR9CiAgICAgIGVuZAogICAgZWxzZQogICAgICBkYXRhCT0gbWV0aG9k # KGFjdGlvbikuY2FsbCh1cmksIGZvcm0pCgogICAgICBpZiBub3QgZGF0YS5u # aWw/CiAgICAgICAgQEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICAgICAg # RmlsZS5vcGVuKGZpbGUsICJ3YiIpCXt8ZnwgZi53cml0ZSBkYXRhfQogICAg # ICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiBkYXRhCiAg # ZW5kCmVuZAoKY2xhc3MgUmVxdWVzdEdldCA8IEhhc2gKICBkZWYgaW5pdGlh # bGl6ZShkYXRhKQogICAgQ0dJLnBhcnNlKGRhdGEpLmVhY2ggZG8gfGssIHZ8 # CiAgICAgIHNlbGZba10JPSB2CiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBS # ZXF1ZXN0UG9zdCA8IEhhc2gKICBkZWYgaW5pdGlhbGl6ZShkYXRhKQogICAg # Q0dJLnBhcnNlKGRhdGEpLmVhY2ggZG8gfGssIHZ8CiAgICAgIHNlbGZba10J # PSB2CiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBSZXF1ZXN0UmVxdWVzdAog # IGF0dHJfcmVhZGVyIDptZXRob2QKICBhdHRyX3JlYWRlciA6dXJpCiAgYXR0 # cl9yZWFkZXIgOnBhdGgKICBhdHRyX3JlYWRlciA6ZGF0YQogIGF0dHJfcmVh # ZGVyIDpwcm90b2NvbAoKICBkZWYgaW5pdGlhbGl6ZShmaXJzdGxpbmUpCiAg # ICBAbWV0aG9kLCBAdXJpLCBAcHJvdG9jb2wJPSBmaXJzdGxpbmUuc3BsaXQo # LyAvKQogICAgQHBhdGgsIEBkYXRhCQk9IEB1cmkuc3BsaXQoL1w/LykKICAg # IEBkYXRhCQkJPSAiIgkJCWlmIEBkYXRhLm5pbD8JIyBUT0RPCgojICAgIGkJ # PSBAcGF0aC5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykKIyAgICB3aGlsZSBu # b3QgaS5uaWw/CiMgICAgICBAcGF0aAk9IEBwYXRoWzAuLihpLTEpXSArIEBw # YXRoWyhpKzEpLi4oaSsyKV0udW5wYWNrKCdIMicpLnNoaWZ0LnRvX2kuY2hy # ICsgQHBhdGhbKGkrMykuLi0xXQojICAgICAgaQk9IEBwYXRoLmluZGV4KC8l # W1s6ZGlnaXQ6XV17Mn0vKQojICAgIGVuZAogIGVuZAoKICBkZWYgdG9fcwog # ICAgIiN7QG1ldGhvZH0gI3tAdXJpfSAje0Bwcm90b2NvbH1cclxuIgogIGVu # ZAoKICBkZWYgaW5zcGVjdAogICAgIihSZXF1ZXN0UmVxdWVzdDogJXMpIiAl # IFtAbWV0aG9kLCBAcGF0aCwgQGRhdGEsIEBwcm90b2NvbF0uam9pbigiLCAi # KQogIGVuZAplbmQKCmNsYXNzIFJlcXVlc3QgPCBIYXNoCiAgYXR0cl9yZWFk # ZXIgOnBlZXJhZGRyCiAgYXR0cl9yZWFkZXIgOnJlcXVlc3QKICBhdHRyX3Jl # YWRlciA6Y29va2llcwogIGF0dHJfcmVhZGVyIDp2YXJzCiAgYXR0cl9yZWFk # ZXIgOnVzZXIKICBhdHRyX3dyaXRlciA6dXNlcgoKICBkZWYgaW5pdGlhbGl6 # ZShpbykKICAgIEBpbwkJPSBpbwoKICAgIGZpcnN0bGluZQk9IEBpby5nZXRz # CgogICAgcmV0dXJuCWlmIGZpcnN0bGluZS5uaWw/CgogICAgQHJlcXVlc3QJ # PSBSZXF1ZXN0UmVxdWVzdC5uZXcoZmlyc3RsaW5lLnN0cmlwKQoKICAgIGxp # bmUJPSBAaW8uZ2V0cwogICAgbGluZQk9IGxpbmUuc3RyaXAJdW5sZXNzIGxp # bmUubmlsPwogICAgd2hpbGUgbm90IGxpbmUubmlsPyBhbmQgbm90IGxpbmUu # ZW1wdHk/CiAgICAgIGtleSwgdmFsdWUJPSBsaW5lLnNwbGl0KCIgIiwgMikK # ICAgICAgc2VsZltrZXkuc3ViKC86JC8sICIiKS5kb3duY2FzZV0JPSB2YWx1 # ZQoKICAgICAgbGluZQk9IEBpby5nZXRzCiAgICAgIGxpbmUJPSBsaW5lLnN0 # cmlwCXVubGVzcyBsaW5lLm5pbD8KICAgIGVuZAoKICAgIGNvb2tpZQk9IHNl # bGZbImNvb2tpZSJdCiAgICBjb29raWUJPSAiIglpZiBjb29raWUubmlsPwog # ICAgQGNvb2tpZXMJPSB7fQogICAgY29va2llLnNwbGl0KC87LykuZWFjaCBk # byB8c3wKICAgICAgaywgdgkJPSBzLnN0cmlwLnNwbGl0KC89LywgMikKICAg # ICAgQGNvb2tpZXNba10JPSB2CiAgICBlbmQKCiAgICBpZiBub3QgQHJlcXVl # c3QubWV0aG9kLm5pbD8KICAgICAgY2FzZSBAcmVxdWVzdC5tZXRob2QudXBj # YXNlCiAgICAgIHdoZW4gIkhFQUQiCiAgICAgIHdoZW4gIkdFVCIKICAgICAg # ICBAdmFycwk9IFJlcXVlc3RHZXQubmV3KEByZXF1ZXN0LmRhdGEubmlsPyA/ # ICIiIDogQHJlcXVlc3QuZGF0YSkKICAgICAgd2hlbiAiUE9TVCIKICAgICAg # ICBkYXRhCT0gKEBpby5yZWFkKHNlbGZbImNvbnRlbnQtbGVuZ3RoIl0udG9f # aSkgb3IgIiIpCiAgICAgICAgQHZhcnMJPSBSZXF1ZXN0UG9zdC5uZXcoKHNl # bGZbImNvbnRlbnQtdHlwZSJdID09ICJhcHBsaWNhdGlvbi94LXd3dy1mb3Jt # LXVybGVuY29kZWQiKSA/IGRhdGEgOiAiIikKICAgICAgZWxzZQogICAgICAg # ICRzdGRlcnIucHV0cyAiVW5rbm93biByZXF1ZXN0ICgnI3tmaXJzdGxpbmV9 # JykuIgogICAgICBlbmQKICAgIGVuZAoKICAgIEBwZWVyYWRkcgk9IEBpby5w # ZWVyYWRkcgoKICAgIEBwZGEJPSBmYWxzZQogICAgQHBkYQk9IHRydWUJaWYg # KHNlbGYuaW5jbHVkZT8oInVzZXItYWdlbnQiKSBhbmQgc2VsZlsidXNlci1h # Z2VudCJdLmRvd25jYXNlLmluY2x1ZGU/KCJ3aW5kb3dzIGNlIikpCiAgICBA # cGRhCT0gdHJ1ZQlpZiAoc2VsZi5pbmNsdWRlPygidXNlci1hZ2VudCIpIGFu # ZCBzZWxmWyJ1c2VyLWFnZW50Il0uZG93bmNhc2UuaW5jbHVkZT8oImhhbmRo # dHRwIikpCgogICAgQGlvLmNsb3NlX3JlYWQKICBlbmQKCiAgZGVmIHBkYT8K # ICAgIEBwZGEKICBlbmQKCiAgZGVmIHRvX3MKICAgIHJlcyA9IEByZXF1ZXN0 # LnRvX3MKICAgIHNlbGYuZWFjaCBkbyB8aywgdnwKICAgICAgcmVzIDw8ICIj # e2t9OiAje3Z9XHJcbiIKICAgIGVuZAogICAgcmVzCiAgZW5kCgogIGRlZiBp # bnNwZWN0CiAgICAiKFJlcXVlc3Q6ICVzKSIgJSBbQHBlZXJhZGRyLCBAcmVx # dWVzdC5pbnNwZWN0LCBAdmFycy5pbnNwZWN0LCBAY29va2llcy5pbnNwZWN0 # LCBzdXBlcl0uam9pbigiLCAiKQogIGVuZAplbmQKCmNsYXNzIFJlc3BvbnNl # IDwgSGFzaAogIGF0dHJfd3JpdGVyIDpyZXNwb25zZQogIGF0dHJfd3JpdGVy # IDpmaWxlCiAgYXR0cl9yZWFkZXIgOmNvb2tpZXMKICBhdHRyX3JlYWRlciA6 # c3RvcAogIGF0dHJfcmVhZGVyIDphdF9zdG9wCgogIGRlZiBpbml0aWFsaXpl # KGlvKQogICAgQGlvCQk9IGlvCiAgICBAcmVzcG9uc2UJPSAiSFRUUC8xLjAg # MjAwIE9LIgogICAgQGNvb2tpZXMJPSB7fQogICAgQGRhdGEJPSAiIgogICAg # QHN5bmNkCT0gZmFsc2UKICAgIEBzdG9wCT0gZmFsc2UKICAgIEBhdF9zdG9w # CT0gbGFtYmRhe30KICAgIEBmaWxlCT0gbmlsCiAgZW5kCgogIGRlZiBmbHVz # aAogICAgc3luYwoKICAgIGlmIEBmaWxlCiAgICAgIEZpbGUub3BlbihAZmls # ZSwgInJiIikgZG8gfGZ8CiAgICAgICAgd2hpbGUgZGF0YSA9IGYucmVhZCgx # MF8wMDApCiAgICAgICAgICBAaW8ud3JpdGUgZGF0YQogICAgICAgIGVuZAog # ICAgICBlbmQKICAgIGVuZAoKICAgIEBpby5jbG9zZQogIGVuZAoKICBkZWYg # dG9fcwogICAgcmVzID0gIiN7QHJlc3BvbnNlfVxyXG4iCiAgICBzZWxmLmVh # Y2ggZG8gfGssIHZ8CiAgICAgIHJlcyA8PCAiI3trfTogI3t2fVxyXG4iCiAg # ICBlbmQKCiAgICBAY29va2llcy5lYWNoIGRvIHxrLCB2fAogICAgICByZXMg # PDwgIlNldC1Db29raWU6ICVzPSVzO1xyXG4iICUgW2ssIHZdCiAgICBlbmQK # CiAgICByZXMKICBlbmQKCiAgZGVmIHN5bmMKICAgIHNpemUJPSAoQGRhdGEg # b3IgIiIpLmxlbmd0aAoKICAgIGlmIEBmaWxlCiAgICAgIGV4dAk9IEBmaWxl # LnNjYW4oL1wuW15cLl0qJC8pCiAgICAgIGV4dAk9IGV4dC5zaGlmdAogICAg # ICBleHQJPSBleHRbMS4uLTFdCXVubGVzcyBleHQubmlsPwogICAgICBtaW1l # dHlwZQk9IEVWTWltZTo6TWltZVR5cGVbZXh0XQoKICAgICAgc2VsZlsiQ29u # dGVudC1UeXBlIl0JPSBtaW1ldHlwZQkJdW5sZXNzIG1pbWV0eXBlLm5pbD8K # CiAgICAgIHNpemUgKz0gRmlsZS5zaXplKEBmaWxlKQlpZiBGaWxlLmZpbGU/ # KEBmaWxlKQogICAgZW5kCgogICAgc2VsZlsiQ29udGVudC1MZW5ndGgiXQk9 # IHNpemUKCiAgICBAaW8ud3JpdGUoIiN7dG9fc31cclxuIikJdW5sZXNzIEBz # eW5jZAogICAgQGlvLndyaXRlKEBkYXRhKQogICAgQGRhdGEJPSAiIgogICAg # QHN5bmNkCT0gdHJ1ZQogIGVuZAoKICBkZWYgPDwgKHMpCiAgICBAZGF0YSA8 # PCBzCiAgZW5kCgogIGRlZiBjbGVhbgogICAgQGRhdGEJPSAiIgogIGVuZAoK # ICBkZWYgaW5zcGVjdAogICAgIihSZXNwb25zZTogJXMpIiAlIFtAcmVzcG9u # c2UsIEBkYXRhXS5qb2luKCIsICIpCiAgZW5kCgogIGRlZiBzdG9wKCZibG9j # aykKICAgIEBzdG9wCT0gdHJ1ZQogICAgQGF0X3N0b3AJPSBibG9jawl1bmxl # c3MgYmxvY2submlsPwogIGVuZAoKICBkZWYgc3RvcD8KICAgIEBzdG9wCiAg # ZW5kCmVuZAoKY2xhc3MgSFRUUFNlcnZlckV4Y2VwdGlvbiA8IEV4Y2VwdGlv # bgplbmQKCmNsYXNzIEhUVFBTZXJ2ZXIKICBkZWYgc2VsZi5zZXJ2ZShwb3J0 # aW89ODAsIHJlbW90ZT1mYWxzZSwgYXV0aD1uaWwsIHJlYWxtPSJldi9uZXQi # KQogICAgcG9ydCwgc2VydmVyCT0gcG9ydGlvCgogICAgYmVnaW4KICAgICAg # c2VydmVyCT0gVENQU2VydmVyLm5ldyhyZW1vdGUgPyAiMC4wLjAuMCIgOiAi # bG9jYWxob3N0IiwgcG9ydCkJaWYgc2VydmVyLm5pbD8KCiAgICAgICRzdGRl # cnIucHV0cyAiSnVzdCBwb2ludCB5b3VyIGJyb3dzZXIgdG8gaHR0cDovL2xv # Y2FsaG9zdDoje3BvcnR9LyAuLi4iCiAgICByZXNjdWUKICAgICAgc2VydmVy # CT0gbmlsCgogICAgICAkc3RkZXJyLnB1dHMgIlBvcnQgI3twb3J0fSBpcyBp # biB1c2UuIgogICAgZW5kCgogICAgaWYgbm90IHNlcnZlci5uaWw/CiAgICAg # IGNvdW50CT0gMAoKICAgICAgYXRfZXhpdCBkbwogICAgICAgICMkc3RkZXJy # LnB1dHMgIlJlY2VpdmVkICN7Y291bnR9IHJlcXVlc3RzIgogICAgICBlbmQK # CiAgICAgIHNlcnZlcnRocmVhZCA9CiAgICAgIFRocmVhZC5uZXcgZG8KICAg # ICAgICBtdXRleAk9IE11dGV4Lm5ldwoKICAgICAgICBUaHJlYWQuY3VycmVu # dFsidGhyZWFkcyJdCT0gW10KCiAgICAgICAgZXZlcnkoMSwgVGhyZWFkLmN1 # cnJlbnQpIGRvIHx0aHJlYWR8CiAgICAgICAgICBtdXRleC5zeW5jaHJvbml6 # ZSBkbwogICAgICAgICAgICB0aHJlYWRbInRocmVhZHMiXS5kZWxldGVfaWZ7 # fHR8IChub3QgdC5hbGl2ZT8pfQogICAgICAgICAgZW5kCiAgICAgICAgZW5k # CgogICAgICAgIGxvb3AgZG8KICAgICAgICAgIGlvCT0gc2VydmVyLmFjY2Vw # dAogICAgICAgICAgY291bnQgKz0gMQoKICAgICAgICAgIHRocmVhZCA9CiAg # ICAgICAgICBUaHJlYWQubmV3KFRocmVhZC5jdXJyZW50LCBjb3VudCkgZG8g # fHBhcmVudHRocmVhZCwgY291bnQyfAogICAgICAgICAgICBzdG9wCT0gZmFs # c2UKCiAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgYmVnaW4KICAg # ICAgICAgICAgICAgIHJlcQk9IFJlcXVlc3QubmV3KGlvKQogICAgICAgICAg # ICAgICAgcmVzcAk9IFJlc3BvbnNlLm5ldyhpbykKICAgICAgICAgICAgICBy # ZXNjdWUKICAgICAgICAgICAgICAgIHJhaXNlIEhUVFBTZXJ2ZXJFeGNlcHRp # b24KICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgYmVnaW4KICAg # ICAgICAgICAgICAgIGlwCT0gcmVxLnBlZXJhZGRyWzNdCiAgICAgICAgICAg # ICAgcmVzY3VlIE5hbWVFcnJvcgogICAgICAgICAgICAgICAgcmFpc2UgSFRU # UFNlcnZlckV4Y2VwdGlvbgogICAgICAgICAgICAgIGVuZAoKICAgICAgICAg # ICAgICBpZiAobm90IHJlbW90ZSkgb3IgKHJlbW90ZSBhbmQgKGF1dGgubmls # PyBvciBhdXRoLmVtcHR5PyBvciBhdXRoZW50aWNhdGUoYXV0aCwgcmVhbG0s # IHJlcSwgcmVzcCkpKQogICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzICIj # e2NvdW50Mn0gI3tUaW1lLm5ldy5zdHJmdGltZSgiJVktJW0tJWQgJUg6JU06 # JVMiKX0gI3tpcH0gI3tyZXEudXNlcn0gI3tyZXEucmVxdWVzdC50b19zLnN0 # cmlwfSIKCiAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAg # ICB5aWVsZChyZXEsIHJlc3ApCiAgICAgICAgICAgICAgICByZXNjdWUgRXhj # ZXB0aW9uID0+IGUKICAgICAgICAgICAgICAgICAgbXV0ZXguc3luY2hyb25p # emUgZG8KICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMgZS5jbGFz # cy50b19zICsgIjogIiArIGUubWVzc2FnZQogICAgICAgICAgICAgICAgICAg # ICRzdGRlcnIucHV0cyBlLmJhY2t0cmFjZS5jb2xsZWN0e3xzfCAiXHQiK3N9 # LmpvaW4oIlxuIikKICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAg # ICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCT0gInRleHQvcGxhaW4iCiAg # ICAgICAgICAgICAgICAgIHJlc3AucmVzcG9uc2UJCT0gIkhUVFAvMS4wIDIw # MCA/Pz8iCiAgICAgICAgICAgICAgICAgIHJlc3AuY2xlYW4KICAgICAgICAg # ICAgICAgICAgcmVzcCA8PCBlLmNsYXNzLnRvX3MgKyAiOiAiICsgZS5tZXNz # YWdlCiAgICAgICAgICAgICAgICAgIHJlc3AgPDwgIlxuIgogICAgICAgICAg # ICAgICAgICByZXNwIDw8ICJcbiIKICAgICAgICAgICAgICAgICAgcmVzcCA8 # PCBlLmJhY2t0cmFjZS5jb2xsZWN0e3xzfCAiXHQiK3N9LmpvaW4oIlxuIikK # ICAgICAgICAgICAgICAgICAgcmVzcCA8PCAiXG4iCiAgICAgICAgICAgICAg # ICAgIHJlc3AgPDwgIlxuIgogICAgICAgICAgICAgICAgICByZXNwIDw8ICIo # WW91IGNhbiB1c2UgdGhlIGJhY2sgYnV0dG9uIGFuZCBzdG9wIHRoZSBhcHBs # aWNhdGlvbiBwcm9wZXJseSwgaWYgYXBwcm9wcmlhdGUuKSIKICAgICAgICAg # ICAgICAgIGVuZAoKICAgICAgICAgICAgICAgIHN0b3AJPSB0cnVlCWlmIHJl # c3Auc3RvcD8KICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgYmVn # aW4KICAgICAgICAgICAgICAgIHJlc3AuZmx1c2gJCQkKICAgICAgICAgICAg # ICByZXNjdWUKICAgICAgICAgICAgICAgIHJhaXNlIEhUVFBTZXJ2ZXJFeGNl # cHRpb24KICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgcmVzY3VlIEhU # VFBTZXJ2ZXJFeGNlcHRpb24KICAgICAgICAgICAgZW5kCgogICAgICAgICAg # ICBwYXJlbnR0aHJlYWRbInN0b3AiXQk9IHJlc3AJaWYgc3RvcAogICAgICAg # ICAgZW5kCgogICAgICAgICAgbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAg # ICAgICAgVGhyZWFkLmN1cnJlbnRbInRocmVhZHMiXSA8PCB0aHJlYWQKICAg # ICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKCiAgICAgIHNsZWVw # IDAuMQl3aGlsZSBub3Qgc2VydmVydGhyZWFkWyJzdG9wIl0KCiAgICAgIHNl # cnZlcnRocmVhZFsidGhyZWFkcyJdLmVhY2gge3x0fCB0LmpvaW59CgogICAg # ICBzZXJ2ZXJ0aHJlYWRbInN0b3AiXS5hdF9zdG9wLmNhbGwKCiAgICAgIHNl # cnZlcnRocmVhZC5raWxsCiAgICBlbmQKICBlbmQKCiAgZGVmIHNlbGYuYXV0 # aGVudGljYXRlKGF1dGgsIHJlYWxtLCByZXEsIHJlc3ApCiAgICBpZiBhdXRo # LmtpbmRfb2Y/IFN0cmluZwogICAgICBmaWxlCT0gIiN7aG9tZX0vI3thdXRo # fSIKICAgICAgYXV0aHMJPSB7fQogICAgICBhdXRocwk9IEhhc2guZmlsZShm # aWxlKQlpZiBGaWxlLmZpbGU/KGZpbGUpCiAgICBlbHNlCiAgICAgIGF1dGhz # CT0gYXV0aAogICAgZW5kCgogICAgYXV0aHVzZXJwYXNzd29yZAk9IHJlcVsi # YXV0aG9yaXphdGlvbiJdCiAgICBpZiBub3QgYXV0aHVzZXJwYXNzd29yZC5u # aWw/CiAgICAgIGF1dGh0eXBlLCB1c2VycGFzc3dvcmQJPSBhdXRodXNlcnBh # c3N3b3JkLnNwbGl0KC8gLykKICAgICAgaWYgYXV0aHR5cGUgPT0gIkJhc2lj # IiBhbmQgbm90IHVzZXJwYXNzd29yZC5uaWw/CiAgICAgICAgdSwgcAk9IHVz # ZXJwYXNzd29yZC51bnBhY2soIm0iKS5zaGlmdC5zcGxpdCgvOi8pCiAgICAg # IGVuZAogICAgZW5kCgogICAgb2sJPSAoYXV0aHMuaW5jbHVkZT8odSkgYW5k # IGF1dGhzW3VdID09IHApCgogICAgdW5sZXNzIG9rCiAgICAgIHJlc3BbIldX # Vy1BdXRoZW50aWNhdGUiXQk9ICJCYXNpYyByZWFsbT1cIiN7cmVhbG19XCIi # CiAgICAgIHJlc3AucmVzcG9uc2UJCT0gIkhUVFAvMS4wIDQwMSBVbmF1dGhv # cml6ZWQiCiAgICBlbmQKCiAgICByZXEudXNlcgk9IHUKCiAgICByZXR1cm4g # b2sKICBlbmQKZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTIxMjIudGFy # L2V2L21pbWUucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAwMDAx # NzUwADAwMDAwMDMxNjEzADEwMjUwMzIwNjE2ADAyMDExMgAgMAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJp # awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtb2R1bGUgRVZNaW1l # CiAgTWltZVR5cGUgPSB7fQoKICBNaW1lVHlwZVsnMTIzJ10gPSAnYXBwbGlj # YXRpb24vdm5kLmxvdHVzLTEtMi0zJwogIE1pbWVUeXBlWyczZHMnXSA9ICdp # bWFnZS94LTNkcycKICBNaW1lVHlwZVsnYSddID0gJ2FwcGxpY2F0aW9uL3gt # dW5peC1hcmNoaXZlJwogIE1pbWVUeXBlWydhYncnXSA9ICdhcHBsaWNhdGlv # bi94LWFiaXdvcmQnCiAgTWltZVR5cGVbJ2FjMyddID0gJ2F1ZGlvL2FjMycK # ICBNaW1lVHlwZVsnYWZtJ10gPSAnYXBwbGljYXRpb24veC1mb250LWFmbScK # ICBNaW1lVHlwZVsnYWcnXSA9ICdpbWFnZS94LWFwcGxpeC1ncmFwaGljJwog # IE1pbWVUeXBlWydhaWYnXSA9ICdhdWRpby94LWFpZmYnCiAgTWltZVR5cGVb # J2FpZmMnXSA9ICdhdWRpby94LWFpZmYnCiAgTWltZVR5cGVbJ2FpZmYnXSA9 # ICdhdWRpby94LWFpZmYnCiAgTWltZVR5cGVbJ2FwJ10gPSAnYXBwbGljYXRp # b24veC1hcHBsaXgtcHJlc2VudHMnCiAgTWltZVR5cGVbJ2FwZSddID0gJ2Fw # cGxpY2F0aW9uL3gtYXBlJwogIE1pbWVUeXBlWydhcmonXSA9ICdhcHBsaWNh # dGlvbi94LWFyaicKICBNaW1lVHlwZVsnYXMnXSA9ICdhcHBsaWNhdGlvbi94 # LWFwcGxpeC1zcHJlYWRzaGVldCcKICBNaW1lVHlwZVsnYXNjJ10gPSAndGV4 # dC9wbGFpbicKICBNaW1lVHlwZVsnYXNmJ10gPSAndmlkZW8veC1tcy1hc2Yn # CiAgTWltZVR5cGVbJ2FzcCddID0gJ2FwcGxpY2F0aW9uL3gtYXNwJwogIE1p # bWVUeXBlWydhc3gnXSA9ICdhdWRpby94LW1zLWFzeCcKICBNaW1lVHlwZVsn # YXUnXSA9ICdhdWRpby94LXVsYXcnCiAgTWltZVR5cGVbJ2F2aSddID0gJ3Zp # ZGVvL3gtbXN2aWRlbycKICBNaW1lVHlwZVsnYXcnXSA9ICdhcHBsaWNhdGlv # bi94LWFwcGxpeC13b3JkJwogIE1pbWVUeXBlWydiYWsnXSA9ICdhcHBsaWNh # dGlvbi94LWJhY2t1cCcKICBNaW1lVHlwZVsnYmNwaW8nXSA9ICdhcHBsaWNh # dGlvbi94LWJjcGlvJwogIE1pbWVUeXBlWydiZGYnXSA9ICdhcHBsaWNhdGlv # bi94LWZvbnQtYmRmJwogIE1pbWVUeXBlWydiaWInXSA9ICd0ZXh0L2JpYicK # ICBNaW1lVHlwZVsnYmluJ10gPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt # JwogIE1pbWVUeXBlWydibGVuZCddID0gJ2FwcGxpY2F0aW9uL3gtYmxlbmRl # cicKICBNaW1lVHlwZVsnYmxlbmRlciddID0gJ2FwcGxpY2F0aW9uL3gtYmxl # bmRlcicKICBNaW1lVHlwZVsnYm1wJ10gPSAnaW1hZ2UvYm1wJwogIE1pbWVU # eXBlWydieiddID0gJ2FwcGxpY2F0aW9uL3gtYnppcCcKICBNaW1lVHlwZVsn # YnoyJ10gPSAnYXBwbGljYXRpb24veC1iemlwJwogIE1pbWVUeXBlWydjJ10g # PSAndGV4dC94LWMnCiAgTWltZVR5cGVbJ2MrKyddID0gJ3RleHQveC1jKysn # CiAgTWltZVR5cGVbJ2NjJ10gPSAndGV4dC94LWMrKycKICBNaW1lVHlwZVsn # Y2RmJ10gPSAnYXBwbGljYXRpb24veC1uZXRjZGYnCiAgTWltZVR5cGVbJ2Nk # ciddID0gJ2FwcGxpY2F0aW9uL3ZuZC5jb3JlbC1kcmF3JwogIE1pbWVUeXBl # WydjZ2knXSA9ICdhcHBsaWNhdGlvbi94LWNnaScKICBNaW1lVHlwZVsnY2dt # J10gPSAnaW1hZ2UvY2dtJwogIE1pbWVUeXBlWydjbGFzcyddID0gJ2FwcGxp # Y2F0aW9uL3gtamF2YS1ieXRlLWNvZGUnCiAgTWltZVR5cGVbJ2NscyddID0g # J3RleHQveC10ZXgnCiAgTWltZVR5cGVbJ2NwaW8nXSA9ICdhcHBsaWNhdGlv # bi94LWNwaW8nCiAgTWltZVR5cGVbJ2NwcCddID0gJ3RleHQveC1jKysnCiAg # TWltZVR5cGVbJ2NzaCddID0gJ3RleHQveC1jc2gnCiAgTWltZVR5cGVbJ2Nz # cyddID0gJ3RleHQvY3NzJwogIE1pbWVUeXBlWydjc3YnXSA9ICd0ZXh0L3gt # Y29tbWEtc2VwYXJhdGVkLXZhbHVlcycKICBNaW1lVHlwZVsnZGF0J10gPSAn # dmlkZW8vbXBlZycKICBNaW1lVHlwZVsnZGJmJ10gPSAnYXBwbGljYXRpb24v # eC14YmFzZScKICBNaW1lVHlwZVsnZGMnXSA9ICdhcHBsaWNhdGlvbi94LWRj # LXJvbScKICBNaW1lVHlwZVsnZGNsJ10gPSAndGV4dC94LWRjbCcKICBNaW1l # VHlwZVsnZGNtJ10gPSAnaW1hZ2UveC1kY20nCiAgTWltZVR5cGVbJ2RlYidd # ID0gJ2FwcGxpY2F0aW9uL3gtZGViJwogIE1pbWVUeXBlWydkZXNrdG9wJ10g # PSAnYXBwbGljYXRpb24veC1nbm9tZS1hcHAtaW5mbycKICBNaW1lVHlwZVsn # ZGlhJ10gPSAnYXBwbGljYXRpb24veC1kaWEtZGlhZ3JhbScKICBNaW1lVHlw # ZVsnZGlmZiddID0gJ3RleHQveC1wYXRjaCcKICBNaW1lVHlwZVsnZGp2J10g # PSAnaW1hZ2Uvdm5kLmRqdnUnCiAgTWltZVR5cGVbJ2RqdnUnXSA9ICdpbWFn # ZS92bmQuZGp2dScKICBNaW1lVHlwZVsnZG9jJ10gPSAnYXBwbGljYXRpb24v # bXN3b3JkJwogIE1pbWVUeXBlWydkc2wnXSA9ICd0ZXh0L3gtZHNsJwogIE1p # bWVUeXBlWydkdGQnXSA9ICd0ZXh0L3gtZHRkJwogIE1pbWVUeXBlWydkdmkn # XSA9ICdhcHBsaWNhdGlvbi94LWR2aScKICBNaW1lVHlwZVsnZHdnJ10gPSAn # aW1hZ2Uvdm5kLmR3ZycKICBNaW1lVHlwZVsnZHhmJ10gPSAnaW1hZ2Uvdm5k # LmR4ZicKICBNaW1lVHlwZVsnZWwnXSA9ICd0ZXh0L3gtZW1hY3MtbGlzcCcK # ICBNaW1lVHlwZVsnZW1mJ10gPSAnaW1hZ2UveC1lbWYnCiAgTWltZVR5cGVb # J2VwcyddID0gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnCiAgTWltZVR5cGVb # J2V0aGVtZSddID0gJ2FwcGxpY2F0aW9uL3gtZS10aGVtZScKICBNaW1lVHlw # ZVsnZXR4J10gPSAndGV4dC94LXNldGV4dCcKICBNaW1lVHlwZVsnZXhlJ10g # PSAnYXBwbGljYXRpb24veC1tcy1kb3MtZXhlY3V0YWJsZScKICBNaW1lVHlw # ZVsnZXonXSA9ICdhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXQnCiAgTWltZVR5 # cGVbJ2YnXSA9ICd0ZXh0L3gtZm9ydHJhbicKICBNaW1lVHlwZVsnZmlnJ10g # PSAnaW1hZ2UveC14ZmlnJwogIE1pbWVUeXBlWydmaXRzJ10gPSAnaW1hZ2Uv # eC1maXRzJwogIE1pbWVUeXBlWydmbGFjJ10gPSAnYXVkaW8veC1mbGFjJwog # IE1pbWVUeXBlWydmbGMnXSA9ICd2aWRlby94LWZsYycKICBNaW1lVHlwZVsn # ZmxpJ10gPSAndmlkZW8veC1mbGknCiAgTWltZVR5cGVbJ2diJ10gPSAnYXBw # bGljYXRpb24veC1nYW1lYm95LXJvbScKICBNaW1lVHlwZVsnZ2NoZW1wYWlu # dCddID0gJ2FwcGxpY2F0aW9uL3gtZ2NoZW1wYWludCcKICBNaW1lVHlwZVsn # Z2NyZCddID0gJ3RleHQveC12Y2FyZCcKICBNaW1lVHlwZVsnZ2NyeXN0YWwn # XSA9ICdhcHBsaWNhdGlvbi94LWdjcnlzdGFsJwogIE1pbWVUeXBlWydnZW0n # XSA9ICd0ZXh0L3gtcnVieWdlbScKICBNaW1lVHlwZVsnZ2VuJ10gPSAnYXBw # bGljYXRpb24veC1nZW5lc2lzLXJvbScKICBNaW1lVHlwZVsnZ2cnXSA9ICdh # cHBsaWNhdGlvbi94LXNtcy1yb20nCiAgTWltZVR5cGVbJ2dpZiddID0gJ2lt # YWdlL2dpZicKICBNaW1lVHlwZVsnZ2xhZGUnXSA9ICdhcHBsaWNhdGlvbi94 # LWdsYWRlJwogIE1pbWVUeXBlWydnbmMnXSA9ICdhcHBsaWNhdGlvbi94LWdu # dWNhc2gnCiAgTWltZVR5cGVbJ2dudWNhc2gnXSA9ICdhcHBsaWNhdGlvbi94 # LWdudWNhc2gnCiAgTWltZVR5cGVbJ2dudW1lcmljJ10gPSAnYXBwbGljYXRp # b24veC1nbnVtZXJpYycKICBNaW1lVHlwZVsnZ3JheSddID0gJ2ltYWdlL3gt # Z3JheScKICBNaW1lVHlwZVsnZ3RhciddID0gJ2FwcGxpY2F0aW9uL3gtZ3Rh # cicKICBNaW1lVHlwZVsnZ3onXSA9ICdhcHBsaWNhdGlvbi94LWd6aXAnCiAg # TWltZVR5cGVbJ2gnXSA9ICd0ZXh0L3gtYy1oZWFkZXInCiAgTWltZVR5cGVb # J2grKyddID0gJ3RleHQveC1jLWhlYWRlcicKICBNaW1lVHlwZVsnaGRmJ10g # PSAnYXBwbGljYXRpb24veC1oZGYnCiAgTWltZVR5cGVbJ2hsbHMnXSA9ICd0 # ZXh0L3gtaGxsYXBpc2NyaXB0JwogIE1pbWVUeXBlWydocHAnXSA9ICd0ZXh0 # L3gtYy1oZWFkZXInCiAgTWltZVR5cGVbJ2hzJ10gPSAndGV4dC94LWhhc2tl # bGwnCiAgTWltZVR5cGVbJ2h0bSddID0gJ3RleHQvaHRtbCcKICBNaW1lVHlw # ZVsnaHRtbCddID0gJ3RleHQvaHRtbCcKICBNaW1lVHlwZVsnaWNiJ10gPSAn # aW1hZ2UveC1pY2InCiAgTWltZVR5cGVbJ2ljbyddID0gJ2ltYWdlL3gtaWNv # JwogIE1pbWVUeXBlWydpY3MnXSA9ICd0ZXh0L2NhbGVuZGFyJwogIE1pbWVU # eXBlWydpZGwnXSA9ICd0ZXh0L3gtaWRsJwogIE1pbWVUeXBlWydpZWYnXSA9 # ICdpbWFnZS9pZWYnCiAgTWltZVR5cGVbJ2lmZiddID0gJ2ltYWdlL3gtaWZm # JwogIE1pbWVUeXBlWydpbGJtJ10gPSAnaW1hZ2UveC1pbGJtJwogIE1pbWVU # eXBlWydpc28nXSA9ICdhcHBsaWNhdGlvbi94LWlzby1pbWFnZScKICBNaW1l # VHlwZVsnaXQnXSA9ICdhdWRpby94LWl0JwogIE1pbWVUeXBlWydqYXInXSA9 # ICdhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZScKICBNaW1lVHlwZVsnamF2 # YSddID0gJ3RleHQveC1qYXZhJwogIE1pbWVUeXBlWydqcGUnXSA9ICdpbWFn # ZS9qcGVnJwogIE1pbWVUeXBlWydqcGVnJ10gPSAnaW1hZ2UvanBlZycKICBN # aW1lVHlwZVsnanBnJ10gPSAnaW1hZ2UvanBlZycKICBNaW1lVHlwZVsnanBy # J10gPSAnYXBwbGljYXRpb24veC1qYnVpbGRlci1wcm9qZWN0JwogIE1pbWVU # eXBlWydqcHgnXSA9ICdhcHBsaWNhdGlvbi94LWpidWlsZGVyLXByb2plY3Qn # CiAgTWltZVR5cGVbJ2pzJ10gPSAndGV4dC94LWphdmFzY3JpcHQnCiAgTWlt # ZVR5cGVbJ2tkZWxuayddID0gJ2FwcGxpY2F0aW9uL3gta2RlLWFwcC1pbmZv # JwogIE1pbWVUeXBlWydraWwnXSA9ICdhcHBsaWNhdGlvbi94LWtpbGx1c3Ry # YXRvcicKICBNaW1lVHlwZVsna3ByJ10gPSAnYXBwbGljYXRpb24veC1rcHJl # c2VudGVyJwogIE1pbWVUeXBlWydrc3AnXSA9ICdhcHBsaWNhdGlvbi94LWtz # cHJlYWQnCiAgTWltZVR5cGVbJ2t3ZCddID0gJ2FwcGxpY2F0aW9uL3gta3dv # cmQnCiAgTWltZVR5cGVbJ2xhJ10gPSAnYXBwbGljYXRpb24veC1zaGFyZWQt # bGlicmFyeS1sYScKICBNaW1lVHlwZVsnbGhhJ10gPSAnYXBwbGljYXRpb24v # eC1saGEnCiAgTWltZVR5cGVbJ2xocyddID0gJ3RleHQveC1saXRlcmF0ZS1o # YXNrZWxsJwogIE1pbWVUeXBlWydsaHonXSA9ICdhcHBsaWNhdGlvbi94LWxo # eicKICBNaW1lVHlwZVsnbG8nXSA9ICdhcHBsaWNhdGlvbi94LW9iamVjdC1m # aWxlJwogIE1pbWVUeXBlWydsdHgnXSA9ICd0ZXh0L3gtdGV4JwogIE1pbWVU # eXBlWydsd28nXSA9ICdpbWFnZS94LWx3bycKICBNaW1lVHlwZVsnbHdvYidd # ID0gJ2ltYWdlL3gtbHdvJwogIE1pbWVUeXBlWydsd3MnXSA9ICdpbWFnZS94 # LWx3cycKICBNaW1lVHlwZVsnbHl4J10gPSAndGV4dC94LWx5eCcKICBNaW1l # VHlwZVsnbSddID0gJ3RleHQveC1vYmpjJwogIE1pbWVUeXBlWydtM3UnXSA9 # ICdhdWRpby94LW1wZWd1cmwnCiAgTWltZVR5cGVbJ200YSddID0gJ2F1ZGlv # L3gtbTRhJwogIE1pbWVUeXBlWydtYW4nXSA9ICd0ZXh0L3gtdHJvZmYtbWFu # JwogIE1pbWVUeXBlWydtZCddID0gJ2FwcGxpY2F0aW9uL3gtZ2VuZXNpcy1y # b20nCiAgTWltZVR5cGVbJ21lJ10gPSAndGV4dC94LXRyb2ZmLW1lJwogIE1p # bWVUeXBlWydtZ3AnXSA9ICdhcHBsaWNhdGlvbi94LW1hZ2ljcG9pbnQnCiAg # TWltZVR5cGVbJ21pZCddID0gJ2F1ZGlvL3gtbWlkaScKICBNaW1lVHlwZVsn # bWlkaSddID0gJ2F1ZGlvL3gtbWlkaScKICBNaW1lVHlwZVsnbWlmJ10gPSAn # YXBwbGljYXRpb24veC1taWYnCiAgTWltZVR5cGVbJ21pZmYnXSA9ICdpbWFn # ZS94LW1pZmYnCiAgTWltZVR5cGVbJ21tJ10gPSAndGV4dC94LXRyb2ZmLW1t # JwogIE1pbWVUeXBlWydtbWwnXSA9ICd0ZXh0L21hdGhtbCcKICBNaW1lVHlw # ZVsnbW9kJ10gPSAnYXVkaW8veC1tb2QnCiAgTWltZVR5cGVbJ21vdiddID0g # J3ZpZGVvL3F1aWNrdGltZScKICBNaW1lVHlwZVsnbW92aWUnXSA9ICd2aWRl # by94LXNnaS1tb3ZpZScKICBNaW1lVHlwZVsnbXAxJ10gPSAnYXVkaW8vbXBl # ZycKICBNaW1lVHlwZVsnbXAyJ10gPSAndmlkZW8vbXBlZycKICBNaW1lVHlw # ZVsnbXAzJ10gPSAnYXVkaW8vbXBlZycKICBNaW1lVHlwZVsnbXBlJ10gPSAn # dmlkZW8vbXBlZycKICBNaW1lVHlwZVsnbXBlZyddID0gJ3ZpZGVvL21wZWcn # CiAgTWltZVR5cGVbJ21wZyddID0gJ3ZpZGVvL21wZWcnCiAgTWltZVR5cGVb # J21ycCddID0gJ2FwcGxpY2F0aW9uL3gtbXJwcm9qZWN0JwogIE1pbWVUeXBl # WydtcnByb2plY3QnXSA9ICdhcHBsaWNhdGlvbi94LW1ycHJvamVjdCcKICBN # aW1lVHlwZVsnbXMnXSA9ICd0ZXh0L3gtdHJvZmYtbXMnCiAgTWltZVR5cGVb # J21zeCddID0gJ2FwcGxpY2F0aW9uL3gtbXN4LXJvbScKICBNaW1lVHlwZVsn # bjY0J10gPSAnYXBwbGljYXRpb24veC1uNjQtcm9tJwogIE1pbWVUeXBlWydu # YyddID0gJ2FwcGxpY2F0aW9uL3gtbmV0Y2RmJwogIE1pbWVUeXBlWyduZXMn # XSA9ICdhcHBsaWNhdGlvbi94LW5lcy1yb20nCiAgTWltZVR5cGVbJ25zdidd # ID0gJ3ZpZGVvL3gtbnN2JwogIE1pbWVUeXBlWydvJ10gPSAnYXBwbGljYXRp # b24veC1vYmplY3QtZmlsZScKICBNaW1lVHlwZVsnb2RhJ10gPSAnYXBwbGlj # YXRpb24vb2RhJwogIE1pbWVUeXBlWydvZ2cnXSA9ICdhcHBsaWNhdGlvbi9v # Z2cnCiAgTWltZVR5cGVbJ29sZW8nXSA9ICdhcHBsaWNhdGlvbi94LW9sZW8n # CiAgTWltZVR5cGVbJ3AnXSA9ICd0ZXh0L3gtcGFzY2FsJwogIE1pbWVUeXBl # WydwYWxtJ10gPSAnaW1hZ2UveC1wYWxtJwogIE1pbWVUeXBlWydwYXMnXSA9 # ICd0ZXh0L3gtcGFzY2FsJwogIE1pbWVUeXBlWydwYXNjYWwnXSA9ICd0ZXh0 # L3gtcGFzY2FsJwogIE1pbWVUeXBlWydwYXRjaCddID0gJ3RleHQveC1wYXRj # aCcKICBNaW1lVHlwZVsncGJtJ10gPSAnaW1hZ2UveC1wb3J0YWJsZS1iaXRt # YXAnCiAgTWltZVR5cGVbJ3BjZCddID0gJ2ltYWdlL3gtcGhvdG8tY2QnCiAg # TWltZVR5cGVbJ3BjZiddID0gJ2FwcGxpY2F0aW9uL3gtZm9udC1wY2YnCiAg # TWltZVR5cGVbJ3BjdCddID0gJ2ltYWdlL3gtcGljdCcKICBNaW1lVHlwZVsn # cGN4J10gPSAnaW1hZ2UveC1wY3gnCiAgTWltZVR5cGVbJ3BkYiddID0gJ2Fw # cGxpY2F0aW9uL3gtcGFsbS1kYXRhYmFzZScKICBNaW1lVHlwZVsncGRmJ10g # PSAnYXBwbGljYXRpb24vcGRmJwogIE1pbWVUeXBlWydwZXJsJ10gPSAndGV4 # dC94LXBlcmwnCiAgTWltZVR5cGVbJ3BmYSddID0gJ2FwcGxpY2F0aW9uL3gt # Zm9udC10eXBlMScKICBNaW1lVHlwZVsncGZiJ10gPSAnYXBwbGljYXRpb24v # eC1mb250LXR5cGUxJwogIE1pbWVUeXBlWydwZ20nXSA9ICdpbWFnZS94LXBv # cnRhYmxlLWdyYXltYXAnCiAgTWltZVR5cGVbJ3BnbiddID0gJ2FwcGxpY2F0 # aW9uL3gtY2hlc3MtcGduJwogIE1pbWVUeXBlWydwZ3AnXSA9ICdhcHBsaWNh # dGlvbi9wZ3AnCiAgTWltZVR5cGVbJ3BocCddID0gJ2FwcGxpY2F0aW9uL3gt # cGhwJwogIE1pbWVUeXBlWydwaHAzJ10gPSAnYXBwbGljYXRpb24veC1waHAn # CiAgTWltZVR5cGVbJ3BocDQnXSA9ICdhcHBsaWNhdGlvbi94LXBocCcKICBN # aW1lVHlwZVsncGljdCddID0gJ2ltYWdlL3gtcGljdCcKICBNaW1lVHlwZVsn # cGwnXSA9ICd0ZXh0L3gtcGVybCcKICBNaW1lVHlwZVsncGxzJ10gPSAnYXVk # aW8veC1zY3BscycKICBNaW1lVHlwZVsncG0nXSA9ICd0ZXh0L3gtcGVybCcK # ICBNaW1lVHlwZVsncG5nJ10gPSAnaW1hZ2UvcG5nJwogIE1pbWVUeXBlWydw # bm0nXSA9ICdpbWFnZS94LXBvcnRhYmxlLWFueW1hcCcKICBNaW1lVHlwZVsn # cG8nXSA9ICd0ZXh0L3gtcG8nCiAgTWltZVR5cGVbJ3BwJ10gPSAndGV4dC94 # LXBhc2NhbCcKICBNaW1lVHlwZVsncHBtJ10gPSAnaW1hZ2UveC1wb3J0YWJs # ZS1waXhtYXAnCiAgTWltZVR5cGVbJ3BwcyddID0gJ2FwcGxpY2F0aW9uL3Zu # ZC5tcy1wb3dlcnBvaW50JwogIE1pbWVUeXBlWydwcHQnXSA9ICdhcHBsaWNh # dGlvbi92bmQubXMtcG93ZXJwb2ludCcKICBNaW1lVHlwZVsncHMnXSA9ICdh # cHBsaWNhdGlvbi9wb3N0c2NyaXB0JwogIE1pbWVUeXBlWydwc2QnXSA9ICdp # bWFnZS94LXBzZCcKICBNaW1lVHlwZVsncHNmJ10gPSAnYXBwbGljYXRpb24v # eC1mb250LWxpbnV4LXBzZicKICBNaW1lVHlwZVsncHNpZCddID0gJ2F1ZGlv # L3Bycy5zaWQnCiAgTWltZVR5cGVbJ3B5J10gPSAndGV4dC94LXB5dGhvbicK # ICBNaW1lVHlwZVsncHljJ10gPSAnYXBwbGljYXRpb24veC1weXRob24tYnl0 # ZS1jb2RlJwogIE1pbWVUeXBlWydxaWYnXSA9ICdhcHBsaWNhdGlvbi9xaWYn # CiAgTWltZVR5cGVbJ3F0J10gPSAndmlkZW8vcXVpY2t0aW1lJwogIE1pbWVU # eXBlWydyYSddID0gJ2F1ZGlvL3gtcmVhbC1hdWRpbycKICBNaW1lVHlwZVsn # cmFtJ10gPSAnYXVkaW8veC1wbi1yZWFsYXVkaW8nCiAgTWltZVR5cGVbJ3Jh # ciddID0gJ2FwcGxpY2F0aW9uL3gtcmFyJwogIE1pbWVUeXBlWydyYXMnXSA9 # ICdpbWFnZS94LWNtdS1yYXN0ZXInCiAgTWltZVR5cGVbJ3JiJ10gPSAndGV4 # dC94LXJ1YnknCiAgTWltZVR5cGVbJ3JiYSddID0gJ3RleHQveC1ydWJ5Jwog # IE1pbWVUeXBlWydyYncnXSA9ICd0ZXh0L3gtcnVieScKICBNaW1lVHlwZVsn # cmVqJ10gPSAnYXBwbGljYXRpb24veC1yZWplY3QnCiAgTWltZVR5cGVbJ3Jn # YiddID0gJ2ltYWdlL3gtcmdiJwogIE1pbWVUeXBlWydybSddID0gJ2F1ZGlv # L3gtcmVhbC1hdWRpbycKICBNaW1lVHlwZVsncm9mZiddID0gJ3RleHQveC10 # cm9mZicKICBNaW1lVHlwZVsncnBtJ10gPSAnYXBwbGljYXRpb24veC1ycG0n # CiAgTWltZVR5cGVbJ3J0ZiddID0gJ2FwcGxpY2F0aW9uL3J0ZicKICBNaW1l # VHlwZVsncnR4J10gPSAndGV4dC9yaWNodGV4dCcKICBNaW1lVHlwZVsncnVi # eSddID0gJ3RleHQveC1ydWJ5JwogIE1pbWVUeXBlWydydWJ5dyddID0gJ3Rl # eHQveC1ydWJ5JwogIE1pbWVUeXBlWydydiddID0gJ2F1ZGlvL3gtcmVhbC1h # dWRpbycKICBNaW1lVHlwZVsncyddID0gJ3RleHQveC1hc20nCiAgTWltZVR5 # cGVbJ3MzbSddID0gJ2F1ZGlvL3gtczNtJwogIE1pbWVUeXBlWydzY20nXSA9 # ICd0ZXh0L3gtc2NoZW1lJwogIE1pbWVUeXBlWydzZGEnXSA9ICdhcHBsaWNh # dGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXcnCiAgTWltZVR5cGVbJ3NkYydd # ID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2FsYycKICBNaW1l # VHlwZVsnc2RkJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5p # bXByZXNzJwogIE1pbWVUeXBlWydzZHAnXSA9ICdhcHBsaWNhdGlvbi92bmQu # c3RhcmRpdmlzaW9uLmltcHJlc3MnCiAgTWltZVR5cGVbJ3NkcyddID0gJ2Fw # cGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2hhcnQnCiAgTWltZVR5cGVb # J3NkdyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVy # JwogIE1pbWVUeXBlWydzZ2knXSA9ICdpbWFnZS94LXNnaScKICBNaW1lVHlw # ZVsnc2dsJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0 # ZXInCiAgTWltZVR5cGVbJ3NnbSddID0gJ3RleHQvc2dtbCcKICBNaW1lVHlw # ZVsnc2dtbCddID0gJ3RleHQvc2dtbCcKICBNaW1lVHlwZVsnc2gnXSA9ICd0 # ZXh0L3gtc2gnCiAgTWltZVR5cGVbJ3NoYXInXSA9ICdhcHBsaWNhdGlvbi94 # LXNoYXInCiAgTWltZVR5cGVbJ3NpZCddID0gJ2F1ZGlvL3Bycy5zaWQnCiAg # TWltZVR5cGVbJ3NsayddID0gJ3RleHQvc3ByZWFkc2hlZXQnCiAgTWltZVR5 # cGVbJ3NtZCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWFp # bCcKICBNaW1lVHlwZVsnc21mJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJk # aXZpc2lvbi5tYXRoJwogIE1pbWVUeXBlWydzbWknXSA9ICdhcHBsaWNhdGlv # bi94LXNtaWwnCiAgTWltZVR5cGVbJ3NtaWwnXSA9ICdhcHBsaWNhdGlvbi94 # LXNtaWwnCiAgTWltZVR5cGVbJ3NtbCddID0gJ2FwcGxpY2F0aW9uL3gtc21p # bCcKICBNaW1lVHlwZVsnc21zJ10gPSAnYXBwbGljYXRpb24veC1zbXMtcm9t # JwogIE1pbWVUeXBlWydzbmQnXSA9ICdhdWRpby9iYXNpYycKICBNaW1lVHlw # ZVsnc28nXSA9ICdhcHBsaWNhdGlvbi94LXNoYXJlZC1saWJyYXJ5JwogIE1p # bWVUeXBlWydzcGQnXSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtc3BlZWRvJwog # IE1pbWVUeXBlWydzcWwnXSA9ICd0ZXh0L3gtc3FsJwogIE1pbWVUeXBlWydz # cmMnXSA9ICdhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlJwogIE1pbWVUeXBl # WydzdGMnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBs # YXRlJwogIE1pbWVUeXBlWydzdGQnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3Vu # LnhtbC5kcmF3LnRlbXBsYXRlJwogIE1pbWVUeXBlWydzdGknXSA9ICdhcHBs # aWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlJwogIE1pbWVU # eXBlWydzdG0nXSA9ICdhdWRpby94LXN0bScKICBNaW1lVHlwZVsnc3R3J10g # PSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlJwog # IE1pbWVUeXBlWydzdHknXSA9ICd0ZXh0L3gtdGV4JwogIE1pbWVUeXBlWydz # dW4nXSA9ICdpbWFnZS94LXN1bi1yYXN0ZXInCiAgTWltZVR5cGVbJ3N2NGNw # aW8nXSA9ICdhcHBsaWNhdGlvbi94LXN2NGNwaW8nCiAgTWltZVR5cGVbJ3N2 # NGNyYyddID0gJ2FwcGxpY2F0aW9uL3gtc3Y0Y3JjJwogIE1pbWVUeXBlWydz # dmcnXSA9ICdpbWFnZS9zdmcreG1sJwogIE1pbWVUeXBlWydzdmd6J10gPSAn # aW1hZ2Uvc3ZnK3htbCcKICBNaW1lVHlwZVsnc3dmJ10gPSAnYXBwbGljYXRp # b24veC1zaG9ja3dhdmUtZmxhc2gnCiAgTWltZVR5cGVbJ3N4YyddID0gJ2Fw # cGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGMnCiAgTWltZVR5cGVbJ3N4ZCdd # ID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcnCiAgTWltZVR5cGVb # J3N4ZyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9i # YWwnCiAgTWltZVR5cGVbJ3N4aSddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4u # eG1sLmltcHJlc3MnCiAgTWltZVR5cGVbJ3N4bSddID0gJ2FwcGxpY2F0aW9u # L3ZuZC5zdW4ueG1sLm1hdGgnCiAgTWltZVR5cGVbJ3N4dyddID0gJ2FwcGxp # Y2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlcicKICBNaW1lVHlwZVsnc3lsaydd # ID0gJ3RleHQvc3ByZWFkc2hlZXQnCiAgTWltZVR5cGVbJ3QnXSA9ICd0ZXh0 # L3gtdHJvZmYnCiAgTWltZVR5cGVbJ3RhciddID0gJ2FwcGxpY2F0aW9uL3gt # dGFyJwogIE1pbWVUeXBlWyd0Y2wnXSA9ICd0ZXh0L3gtdGNsJwogIE1pbWVU # eXBlWyd0ZXgnXSA9ICd0ZXh0L3gtdGV4JwogIE1pbWVUeXBlWyd0ZXhpJ10g # PSAndGV4dC94LXRleGluZm8nCiAgTWltZVR5cGVbJ3RleGluZm8nXSA9ICd0 # ZXh0L3gtdGV4aW5mbycKICBNaW1lVHlwZVsndGdhJ10gPSAnaW1hZ2UveC10 # Z2EnCiAgTWltZVR5cGVbJ3RneiddID0gJ2FwcGxpY2F0aW9uL3gtY29tcHJl # c3NlZC10YXInCiAgTWltZVR5cGVbJ3RoZW1lJ10gPSAnYXBwbGljYXRpb24v # eC10aGVtZScKICBNaW1lVHlwZVsndGlmJ10gPSAnaW1hZ2UvdGlmZicKICBN # aW1lVHlwZVsndGlmZiddID0gJ2ltYWdlL3RpZmYnCiAgTWltZVR5cGVbJ3Rv # cnJlbnQnXSA9ICdhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnQnCiAgTWltZVR5 # cGVbJ3RyJ10gPSAndGV4dC94LXRyb2ZmJwogIE1pbWVUeXBlWyd0c3YnXSA9 # ICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzJwogIE1pbWVUeXBlWyd0dGMn # XSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtdHRmJwogIE1pbWVUeXBlWyd0dGYn # XSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtdHRmJwogIE1pbWVUeXBlWyd0eHQn # XSA9ICd0ZXh0L3BsYWluJwogIE1pbWVUeXBlWyd1c3RhciddID0gJ2FwcGxp # Y2F0aW9uL3gtdXN0YXInCiAgTWltZVR5cGVbJ3ZjZiddID0gJ3RleHQveC12 # Y2FsZW5kYXInCiAgTWltZVR5cGVbJ3ZjcyddID0gJ3RleHQveC12Y2FsZW5k # YXInCiAgTWltZVR5cGVbJ3ZpJ10gPSAndGV4dC94LXZpJwogIE1pbWVUeXBl # Wyd2aW0nXSA9ICd0ZXh0L3gtdmknCiAgTWltZVR5cGVbJ3ZpdiddID0gJ3Zp # ZGVvL3ZuZC52aXZvJwogIE1pbWVUeXBlWyd2aXZvJ10gPSAndmlkZW8vdm5k # LnZpdm8nCiAgTWltZVR5cGVbJ3ZvYiddID0gJ3ZpZGVvL21wZWcnCiAgTWlt # ZVR5cGVbJ3ZvYyddID0gJ2F1ZGlvL3gtdm9jJwogIE1pbWVUeXBlWyd2b3In # XSA9ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlcicKICBN # aW1lVHlwZVsnd2F2J10gPSAnYXVkaW8veC13YXYnCiAgTWltZVR5cGVbJ3dh # eCddID0gJ2F1ZGlvL3gtbXMtYXN4JwogIE1pbWVUeXBlWyd3azEnXSA9ICdh # cHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMnCiAgTWltZVR5cGVbJ3drMydd # ID0gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItMycKICBNaW1lVHlwZVsn # d2s0J10gPSAnYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zJwogIE1pbWVU # eXBlWyd3a3MnXSA9ICdhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMnCiAg # TWltZVR5cGVbJ3dtZiddID0gJ2ltYWdlL3gtd21mJwogIE1pbWVUeXBlWyd3 # bXYnXSA9ICd2aWRlby94LW1zLXdtdicKICBNaW1lVHlwZVsnd3JsJ10gPSAn # bW9kZWwvdnJtbCcKICBNaW1lVHlwZVsnd3Z4J10gPSAndmlkZW8veC1tcy13 # dngnCiAgTWltZVR5cGVbJ3hhYyddID0gJ2FwcGxpY2F0aW9uL3gtZ251Y2Fz # aCcKICBNaW1lVHlwZVsneGJlbCddID0gJ2FwcGxpY2F0aW9uL3hiZWwnCiAg # TWltZVR5cGVbJ3hibSddID0gJ2ltYWdlL3gteGJpdG1hcCcKICBNaW1lVHlw # ZVsneGNmJ10gPSAnaW1hZ2UveC14Y2YnCiAgTWltZVR5cGVbJ3hpJ10gPSAn # YXVkaW8veC14aScKICBNaW1lVHlwZVsneGxhJ10gPSAnYXBwbGljYXRpb24v # dm5kLm1zLWV4Y2VsJwogIE1pbWVUeXBlWyd4bGMnXSA9ICdhcHBsaWNhdGlv # bi92bmQubXMtZXhjZWwnCiAgTWltZVR5cGVbJ3hsZCddID0gJ2FwcGxpY2F0 # aW9uL3ZuZC5tcy1leGNlbCcKICBNaW1lVHlwZVsneGxzJ10gPSAnYXBwbGlj # YXRpb24vdm5kLm1zLWV4Y2VsJwogIE1pbWVUeXBlWyd4bHQnXSA9ICdhcHBs # aWNhdGlvbi92bmQubXMtZXhjZWwnCiAgTWltZVR5cGVbJ3htJ10gPSAnYXVk # aW8veC14bScKICBNaW1lVHlwZVsneG1sJ10gPSAndGV4dC94bWwnCiAgTWlt # ZVR5cGVbJ3hwbSddID0gJ2ltYWdlL3gteHBpeG1hcCcKICBNaW1lVHlwZVsn # eHdkJ10gPSAnaW1hZ2UveC14d2luZG93ZHVtcCcKICBNaW1lVHlwZVsneSdd # ID0gJ3RleHQveC15YWNjJwogIE1pbWVUeXBlWyd5YWNjJ10gPSAndGV4dC94 # LXlhY2MnCiAgTWltZVR5cGVbJ3onXSA9ICdhcHBsaWNhdGlvbi94LWNvbXBy # ZXNzJwogIE1pbWVUeXBlWyd6aXAnXSA9ICdhcHBsaWNhdGlvbi96aXAnCiAg # TWltZVR5cGVbJ3pvbyddID0gJ2FwcGxpY2F0aW9uL3gtem9vJwplbmQKAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYu # MTIxMjIudGFyL2V2L2Jyb3dzZXIucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAw # MTc1MAAwMDAxNzUwADAwMDAwMDA1MjA3ADEwMjUwMzIwNjE2ADAyMDY0NgAg # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAw # ADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXF1 # aXJlICJldi9ydWJ5IgpyZXF1aXJlICJldi9uZXQiCgpiZWdpbgogIHJlcXVp # cmUgIndpbjMyb2xlIgogIHJlcXVpcmUgIndpbjMyL3JlZ2lzdHJ5IgpyZXNj # dWUgTG9hZEVycm9yCiAgJCIucHVzaCAid2luMzJvbGUuc28iCiAgJCIucHVz # aCAid2luMzIvcmVnaXN0cnkucmIiCmVuZAoKZGVmIHdpbmRvd3Nicm93c2Vy # CiAgJHN0ZGVyci5wdXRzICJMb29raW5nIGZvciBkZWZhdWx0IGJyb3dzZXIu # Li4iCgogIGZpbGV0eXBlCT0gImh0bWxmaWxlIgogIGFwcGxpY2F0aW9uCT0g # bmlsCgogIGJlZ2luCiAgICBXaW4zMjo6UmVnaXN0cnk6OkhLRVlfQ0xBU1NF # U19ST09ULm9wZW4oIi5odG1sIikgZG8gfHJlZ3wKICAgICAgZmlsZXR5cGUJ # CT0gcmVnWyIiXQogICAgZW5kCgogICAgV2luMzI6OlJlZ2lzdHJ5OjpIS0VZ # X0NMQVNTRVNfUk9PVC5vcGVuKGZpbGV0eXBlICsgIlxcc2hlbGxcXG9wZW5c # XGNvbW1hbmQiKSBkbyB8cmVnfAogICAgICBhcHBsaWNhdGlvbgk9IHJlZ1si # Il0KICAgIGVuZAogIHJlc2N1ZSBOYW1lRXJyb3IKICAgICRzdGRlcnIucHV0 # cyAiT25seSBhdmFpbGFibGUgZm9yIFdpbmRvd3MgYW5kIEN5Z3dpbi4iCiAg # ZW5kCgogIGFwcGxpY2F0aW9uCmVuZAoKZGVmIGN5Z3dpbmJyb3dzZXIKICBi # cm93c2VyLCAqYXJncwk9IHdpbmRvd3Nicm93c2VyLnNwbGl0d29yZHMKICBi # cm93c2VyCQk9IGJyb3dzZXIuZ3N1YigvXFwvLCAiLyIpCiAgI2Jyb3dzZXIJ # CT0gYnJvd3NlcgoKICBhcmdzLmNvbGxlY3Qhe3xhfCBhLmdzdWIoL1xcLywg # Ii8iKX0KICAjYXJncy5jb2xsZWN0IXt8YXwgIlwiJXNcIiIgJSBbYS5nc3Vi # KC9cXC8sICIvIildfQogICNhcmdzLmNvbGxlY3Qhe3xhfCAiXCIlc1wiIiAl # IFthXX0KCiAgcmVzCT0gIlwiJXNcIiAlcyIgJSBbYnJvd3NlciwgYXJncy5q # b2luKCIgIildCiAgcmVzCmVuZAoKZGVmIGxpbnV4YnJvd3NlcgogIGFwcGxp # Y2F0aW9uCT0gIiIKCiAgYXBwbGljYXRpb24JPSBgd2hpY2ggZ2FsZW9uCQky # PiAvZGV2L251bGxgLmNob21wCWlmIGFwcGxpY2F0aW9uLmVtcHR5PwogIGFw # cGxpY2F0aW9uCT0gYHdoaWNoIG1vemlsbGEJMj4gL2Rldi9udWxsYC5jaG9t # cAlpZiBhcHBsaWNhdGlvbi5lbXB0eT8KICBhcHBsaWNhdGlvbgk9IGB3aGlj # aCBmaXJlZm94CTI+IC9kZXYvbnVsbGAuY2hvbXAJaWYgYXBwbGljYXRpb24u # ZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hpY2ggb3BlcmEJCTI+IC9kZXYv # bnVsbGAuY2hvbXAJaWYgYXBwbGljYXRpb24uZW1wdHk/CiAgYXBwbGljYXRp # b24JPSBgd2hpY2gga29ucXVlcm9yCTI+IC9kZXYvbnVsbGAuY2hvbXAJaWYg # YXBwbGljYXRpb24uZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hpY2ggaHRt # bHZpZXcJMj4gL2Rldi9udWxsYC5jaG9tcAlpZiBhcHBsaWNhdGlvbi5lbXB0 # eT8KICBhcHBsaWNhdGlvbgk9IG5pbAkJCQkJCWlmIGFwcGxpY2F0aW9uLmVt # cHR5PwoKICBhcHBsaWNhdGlvbgplbmQKCmRlZiBkZWZhdWx0YnJvd3Nlcgog # IHJlcwk9IG5pbAogIHJlcwk9IHdpbmRvd3Nicm93c2VyCWlmIHdpbmRvd3M/ # CiAgcmVzCT0gY3lnd2luYnJvd3NlcgkJaWYgY3lnd2luPwogIHJlcwk9IGxp # bnV4YnJvd3NlcgkJaWYgbGludXg/CiAgcmVzCmVuZAoKZGVmIHNob3d1cmxp # bmJyb3dzZXIodXJsLCBicm93c2VyPWRlZmF1bHRicm93c2VyKQogIGNvbW1h # bmQJPSAiI3ticm93c2VyfSBcIiN7dXJsfVwiIgoKICBzeXN0ZW0oY29tbWFu # ZCkJb3IgJHN0ZGVyci5wdXRzICJTdGFydGluZyBvZiB0aGUgYnJvd3NlciBm # YWlsZWQsIG9yIHRoZSBicm93c2VyIHRlcm1pbmF0ZWQgYWJub3JtYWxseS5c # bkNvbW1hbmQgPT4gI3tjb21tYW5kfSIKZW5kCgpkZWYgc2hvd2luYnJvd3Nl # cihodG1sLCBicm93c2VyPWRlZmF1bHRicm93c2VyKQogIHBvcnQsIGlvCT0g # VENQU2VydmVyLmZyZWVwb3J0KDc3MDEsIDc3MDkpCgogIHVubGVzcyBicm93 # c2VyLm5pbD8KICAgIFRocmVhZC5uZXcgZG8KICAgICAgYmVnaW4KCVRocmVh # ZC5wYXNzCgogICAgICAgIHNob3d1cmxpbmJyb3dzZXIoImh0dHA6Ly9sb2Nh # bGhvc3Q6I3twb3J0fS8iLCBicm93c2VyKQogICAgICByZXNjdWUKICAgICAg # ZW5kCiAgICBlbmQKICBlbmQKCiAgSFRUUFNlcnZlci5zZXJ2ZShbcG9ydCwg # aW9dKSBkbyB8cmVxLCByZXNwfAogICAgcmVzcCA8PCBodG1sCgogICAgcmVz # cC5zdG9wCiAgZW5kCmVuZAoKZGVmIHRhYjJodG1sKHRhYikKICByZXMJPSAi # IgoKICB0YWIJPSB0YWIudG9faHRtbChmYWxzZSkKCiAgcmVzIDw8ICI8aHRt # bD5cbiIKICByZXMgPDwgIjxib2R5PlxuIgogIHJlcyA8PCAiPHRhYmxlIGFs # aWduPSdjZW50ZXInIGJvcmRlcj0nMScgY2VsbHNwYWNpbmc9JzAnIGNlbGxw # YWRkaW5nPSczJz5cbiIKICByZXMgPDwgIjx0Ym9keT5cbiIKCiAgdGFiLnNw # bGl0KC9ccipcbi8pLmVhY2ggZG8gfGxpbmV8CiAgICByZXMgPDwgIjx0cj5c # biIKCiAgICBsaW5lLnNwbGl0KC9cdC8sIC0xKS5lYWNoIGRvIHx2ZWxkfAog # ICAgICB2ZWxkCT0gIiZuYnNwOyIJaWYgdmVsZC5jb21wcmVzcy5lbXB0eT8K # CiAgICAgIHJlcyA8PCAiPHRkPiVzPC90ZD5cbiIgJSB2ZWxkCiAgICBlbmQK # CiAgICByZXMgPDwgIjwvdHI+XG4iCiAgZW5kCgogIHJlcyA8PCAiPC90Ym9k # eT5cbiIKICByZXMgPDwgIjwvdGFibGU+XG4iCiAgcmVzIDw8ICI8L2JvZHk+ # XG4iCiAgcmVzIDw8ICI8L2h0bWw+XG4iCgogIHJlcwplbmQKAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMjEyMi50YXIvZXYvdGhy # ZWFkLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAw # MDAwMDE2NDEAMTAyNTAzMjA2MTYAMDIwNDMwACAwAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy # ICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1YnkiCnJl # cXVpcmUgInRocmVhZCIKCmNsYXNzIEZha2VUaHJlYWQKICBkZWYgaW5pdGlh # bGl6ZSgqYXJncykKICAgIHlpZWxkKCphcmdzKQogIGVuZAoKICBkZWYgam9p # bgogIGVuZAplbmQKCmNsYXNzIFRocmVhZExpbWl0ZXIKICBkZWYgaW5pdGlh # bGl6ZShsaW1pdCkKICAgIEBsaW1pdAk9IGxpbWl0CiAgICBAY291bnQJPSAw # CiAgICBAdGhyZWFkcwk9IFtdCiAgICBAbXV0ZXgJPSBNdXRleC5uZXcKICAg # IEBjdgkJPSBDb25kaXRpb25WYXJpYWJsZS5uZXcKCiAgICBldmVyeSgxKSBk # bwogICAgICBAbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICBAdGhyZWFk # cy5kdXAuZWFjaCBkbyB8dHwKICAgICAgICAgIHVubGVzcyB0LmFsaXZlPwog # ICAgICAgICAgICAkc3RkZXJyLnB1dHMgIkZvdW5kIGRlYWQgdGhyZWFkLiIK # CiAgICAgICAgICAgIEB0aHJlYWRzLmRlbGV0ZSh0KQoKICAgICAgICAgICAg # QGNvdW50IC09IDEKCiAgICAgICAgICAgIEBjdi5zaWduYWwKICAgICAgICAg # IGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBk # ZWYgd2FpdAogICAgaWYgYmxvY2tfZ2l2ZW4/CiAgICAgIHNlbGYud2FpdAog # ICAgICB5aWVsZAogICAgICBzZWxmLnNpZ25hbAogICAgZWxzZQogICAgICBA # bXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICBAdGhyZWFkcyA8PCBUaHJl # YWQuY3VycmVudAoKICAgICAgICBAY291bnQgKz0gMQoKICAgICAgICBAY3Yu # d2FpdChAbXV0ZXgpCWlmIEBjb3VudCA+IEBsaW1pdAogICAgICBlbmQKICAg # IGVuZAogIGVuZAoKICBkZWYgc2lnbmFsCiAgICBAbXV0ZXguc3luY2hyb25p # emUgZG8KICAgICAgQHRocmVhZHMuZGVsZXRlKFRocmVhZC5jdXJyZW50KQoK # ICAgICAgQGNvdW50IC09IDEKCiAgICAgIEBjdi5zaWduYWwKICAgIGVuZAog # IGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAA