# 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 # dG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE2NjgudGFyLwAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDA3MDAAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDAw # ADEwMjUwMzIwNjEzADAxNjIxNgAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTY2OC50 # YXIvaW5pdC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAw # MDE3NTAAMDAwMDAwMDAzNDEAMTAwNTEzNjAzMzUAMDE3NTIyACAwAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl # cmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2 # L3J3ZCIKY2xhc3MgRGVtbyA8IFJXRGlhbG9nCiAgZGVmIG11bHRpcGx5CiAg # ICBAcmVzdWx0ID0gIiVzICogJXMgPSAlcyIgJSBbQGEsIEBiLCBAYS50b19p # KkBiLnRvX2ldCiAgZW5kCiAgZGVmIGFkZAogICAgQHJlc3VsdCA9ICIlcyAr # ICVzID0gJXMiICUgW0BhLCBAYiwgQGEudG9faStAYi50b19pXQogIGVuZApl # bmQKRGVtby5maWxlKCJyd2RjYWxjLnJ3ZCIpLnNlcnZlCgAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE2NjgudGFyL3J3ZGNhbGMu # cndkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAw # MDAwNjMyADEwMTU0NjEyNzUyADAyMDQwMQAgMAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg # AGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8YXBwbGljYXRpb24+CiAgPHdpbmRv # dyBuYW1lPSJtYWluIiB0aXRsZT0iU2ltcGxlIENhbGN1bGF0b3IiPgogICAg # PHRhYmxlPgogICAgICA8cm93PiA8cCBhbGlnbj0icmlnaHQiPkZpcnN0IG51 # bWJlcjo8L3A+ICA8dGV4dCBuYW1lPSJhIi8+IDwvcm93PgogICAgICA8cm93 # PiA8cCBhbGlnbj0icmlnaHQiPlNlY29uZCBudW1iZXI6PC9wPiA8dGV4dCBu # YW1lPSJiIi8+IDwvcm93PgogICAgPC90YWJsZT4KICAgIDxwPiVyZXN1bHQl # PC9wPgogICAgPGhvcml6b250YWw+CiAgICAgIDxidXR0b24gY2FwdGlvbj0i # TXVsdGlwbHkiIGFjdGlvbj0ibXVsdGlwbHkiLz4KICAgICAgPGJ1dHRvbiBj # YXB0aW9uPSJBZGQiIGFjdGlvbj0iYWRkIi8+CiAgICA8L2hvcml6b250YWw+ # CiAgPC93aW5kb3c+CjwvYXBwbGljYXRpb24+CgAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5l # YXIycnVieXNjcmlwdC5mLjExNjY4LnRhci90YXIycnVieXNjcmlwdC5zaAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAzNAAxMDA0 # MDQ2MTI3NAAwMjE1NjYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAZXZkbyBydWJ5bGliY29weSAtLXJ3ZC1leGl0CgAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3Jp # cHQuZi4xMTY2OC50YXIvZXYvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1 # NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMDAAMTAyNTAzMjA2MTMAMDE2 # NjQyACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw # MDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AHRtcC5lYXIycnVieXNjcmlwdC5mLjExNjY4LnRhci9ldi9mdG9vbHMucmIA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwNjUx # NgAxMDI1MDMyMDYxMwAwMjA1MTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlr # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiZnRvb2xzIgoKY2xhc3MgRGly # CiAgZGVmIHNlbGYuY29weShmcm9tLCB0bykKICAgIGlmIEZpbGUuZGlyZWN0 # b3J5Pyhmcm9tKQogICAgICBwZGlyCT0gRGlyLnB3ZAogICAgICB0b2Rpcgk9 # IEZpbGUuZXhwYW5kX3BhdGgodG8pCgogICAgICBGaWxlLm1rcGF0aCh0b2Rp # cikKCiAgICAgIERpci5jaGRpcihmcm9tKQogICAgICAgIERpci5uZXcoIi4i # KS5lYWNoIGRvIHxlfAogICAgICAgICAgRGlyLmNvcHkoZSwgdG9kaXIrIi8i # K2UpCWlmIG5vdCBbIi4iLCAiLi4iXS5pbmNsdWRlPyhlKQogICAgICAgIGVu # ZAogICAgICBEaXIuY2hkaXIocGRpcikKICAgIGVsc2UKICAgICAgdG9kaXIJ # PSBGaWxlLmRpcm5hbWUoRmlsZS5leHBhbmRfcGF0aCh0bykpCgogICAgICBG # aWxlLm1rcGF0aCh0b2RpcikKCiAgICAgIEZpbGUuY29weShmcm9tLCB0bykK # ICAgIGVuZAogIGVuZAoKICBkZWYgc2VsZi5tb3ZlKGZyb20sIHRvKQogICAg # RGlyLmNvcHkoZnJvbSwgdG8pCiAgICBEaXIucm1fcmYoZnJvbSkKICBlbmQK # CiAgZGVmIHNlbGYucm1fcmYoZW50cnkpCiAgICBGaWxlLmNobW9kKDA3NTUs # IGVudHJ5KQoKICAgIGlmIEZpbGUuZnR5cGUoZW50cnkpID09ICJkaXJlY3Rv # cnkiCiAgICAgIHBkaXIJPSBEaXIucHdkCgogICAgICBEaXIuY2hkaXIoZW50 # cnkpCiAgICAgICAgRGlyLm5ldygiLiIpLmVhY2ggZG8gfGV8CiAgICAgICAg # ICBEaXIucm1fcmYoZSkJaWYgbm90IFsiLiIsICIuLiJdLmluY2x1ZGU/KGUp # CiAgICAgICAgZW5kCiAgICAgIERpci5jaGRpcihwZGlyKQoKICAgICAgYmVn # aW4KICAgICAgICBEaXIuZGVsZXRlKGVudHJ5KQogICAgICByZXNjdWUgPT4g # ZQogICAgICAgICRzdGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAgZW5kCiAg # ICBlbHNlCiAgICAgIGJlZ2luCiAgICAgICAgRmlsZS5kZWxldGUoZW50cnkp # CiAgICAgIHJlc2N1ZSA9PiBlCiAgICAgICAgJHN0ZGVyci5wdXRzIGUubWVz # c2FnZQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgc2VsZi5maW5k # KGVudHJ5PW5pbCwgbWFzaz1uaWwpCiAgICBlbnRyeQk9ICIuIglpZiBlbnRy # eS5uaWw/CgogICAgZW50cnkJPSBlbnRyeS5nc3ViKC9bXC9cXF0qJC8sICIi # KQl1bmxlc3MgZW50cnkubmlsPwoKICAgIG1hc2sJPSAvXiN7bWFza30kL2kJ # aWYgbWFzay5raW5kX29mPyhTdHJpbmcpCgogICAgcmVzCT0gW10KCiAgICBp # ZiBGaWxlLmRpcmVjdG9yeT8oZW50cnkpCiAgICAgIHBkaXIJPSBEaXIucHdk # CgogICAgICByZXMgKz0gWyIlcy8iICUgZW50cnldCWlmIG1hc2submlsPyBv # ciBlbnRyeSA9fiBtYXNrCgogICAgICBiZWdpbgogICAgICAgIERpci5jaGRp # cihlbnRyeSkKCiAgICAgICAgYmVnaW4KICAgICAgICAgIERpci5uZXcoIi4i # KS5lYWNoIGRvIHxlfAogICAgICAgICAgICByZXMgKz0gRGlyLmZpbmQoZSwg # bWFzaykuY29sbGVjdHt8ZXwgZW50cnkrIi8iK2V9CXVubGVzcyBbIi4iLCAi # Li4iXS5pbmNsdWRlPyhlKQogICAgICAgICAgZW5kCiAgICAgICAgZW5zdXJl # CiAgICAgICAgICBEaXIuY2hkaXIocGRpcikKICAgICAgICBlbmQKICAgICAg # cmVzY3VlIEVycm5vOjpFQUNDRVMgPT4gZQogICAgICAgICRzdGRlcnIucHV0 # cyBlLm1lc3NhZ2UKICAgICAgZW5kCiAgICBlbHNlCiAgICAgIHJlcyArPSBb # ZW50cnldCWlmIG1hc2submlsPyBvciBlbnRyeSA9fiBtYXNrCiAgICBlbmQK # CiAgICByZXMKICBlbmQKZW5kCgpjbGFzcyBGaWxlCiAgZGVmIHNlbGYucm9s # bGJhY2t1cChmaWxlLCBtb2RlPW5pbCkKICAgIGJhY2t1cGZpbGUJPSBmaWxl # ICsgIi5SQi5CQUNLVVAiCiAgICBjb250cm9sZmlsZQk9IGZpbGUgKyAiLlJC # LkNPTlRST0wiCiAgICByZXMJCT0gbmlsCgogICAgRmlsZS50b3VjaChmaWxl # KSAgICB1bmxlc3MgRmlsZS5maWxlPyhmaWxlKQoKCSMgUm9sbGJhY2sKCiAg # ICBpZiBGaWxlLmZpbGU/KGJhY2t1cGZpbGUpIGFuZCBGaWxlLmZpbGU/KGNv # bnRyb2xmaWxlKQogICAgICAkc3RkZXJyLnB1dHMgIlJlc3RvcmluZyAje2Zp # bGV9Li4uIgoKICAgICAgRmlsZS5jb3B5KGJhY2t1cGZpbGUsIGZpbGUpCQkJ # CSMgUm9sbGJhY2sgZnJvbSBwaGFzZSAzCiAgICBlbmQKCgkjIFJlc2V0Cgog # ICAgRmlsZS5kZWxldGUoYmFja3VwZmlsZSkJaWYgRmlsZS5maWxlPyhiYWNr # dXBmaWxlKQkjIFJlc2V0IGZyb20gcGhhc2UgMiBvciAzCiAgICBGaWxlLmRl # bGV0ZShjb250cm9sZmlsZSkJaWYgRmlsZS5maWxlPyhjb250cm9sZmlsZSkJ # IyBSZXNldCBmcm9tIHBoYXNlIDMgb3IgNAoKCSMgQmFja3VwCgogICAgRmls # ZS5jb3B5KGZpbGUsIGJhY2t1cGZpbGUpCQkJCQkjIEVudGVyIHBoYXNlIDIK # ICAgIEZpbGUudG91Y2goY29udHJvbGZpbGUpCQkJCQkjIEVudGVyIHBoYXNl # IDMKCgkjIFRoZSByZWFsIHRoaW5nCgogICAgaWYgYmxvY2tfZ2l2ZW4/CiAg # ICAgIGlmIG1vZGUubmlsPwogICAgICAgIHJlcwk9IHlpZWxkCiAgICAgIGVs # c2UKICAgICAgICBGaWxlLm9wZW4oZmlsZSwgbW9kZSkgZG8gfGZ8CiAgICAg # ICAgICByZXMJPSB5aWVsZChmKQogICAgICAgIGVuZAogICAgICBlbmQKICAg # IGVuZAoKCSMgQ2xlYW51cAoKICAgIEZpbGUuZGVsZXRlKGJhY2t1cGZpbGUp # CQkJCQkjIEVudGVyIHBoYXNlIDQKICAgIEZpbGUuZGVsZXRlKGNvbnRyb2xm # aWxlKQkJCQkJIyBFbnRlciBwaGFzZSA1CgoJIyBSZXR1cm4sIGxpa2UgRmls # ZS5vcGVuCgogICAgcmVzCT0gRmlsZS5vcGVuKGZpbGUsIChtb2RlIG9yICJy # IikpCXVubGVzcyBibG9ja19naXZlbj8KCiAgICByZXMKICBlbmQKCiAgZGVm # IHNlbGYudG91Y2goZmlsZSkKICAgIGlmIEZpbGUuZXhpc3RzPyhmaWxlKQog # ICAgICBGaWxlLnV0aW1lKFRpbWUubm93LCBGaWxlLm10aW1lKGZpbGUpLCBm # aWxlKQogICAgZWxzZQogICAgICBGaWxlLm9wZW4oZmlsZSwgImEiKXt8Znx9 # CiAgICBlbmQKICBlbmQKCiAgZGVmIHNlbGYud2hpY2goZmlsZSkKICAgIHJl # cwk9IG5pbAoKICAgIGlmIHdpbmRvd3M/CiAgICAgIGZpbGUJPSBmaWxlLmdz # dWIoL1wuZXhlJC9pLCAiIikgKyAiLmV4ZSIKICAgICAgc2VwCQk9ICI7Igog # ICAgZWxzZQogICAgICBzZXAJCT0gIjoiCiAgICBlbmQKCiAgICBjYXRjaCA6 # c3RvcCBkbwogICAgICBFTlZbIlBBVEgiXS5zcGxpdCgvI3tzZXB9LykucmV2 # ZXJzZS5lYWNoIGRvIHxkfAogICAgICAgIGlmIEZpbGUuZGlyZWN0b3J5Pyhk # KQogICAgICAgICAgRGlyLm5ldyhkKS5lYWNoIGRvIHxlfAogICAgICAgICAg # ICAgaWYgZS5kb3duY2FzZSA9PSBmaWxlLmRvd25jYXNlCiAgICAgICAgICAg # ICAgIHJlcwk9IEZpbGUuZXhwYW5kX3BhdGgoZSwgZCkKICAgICAgICAgICAg # ICAgdGhyb3cgOnN0b3AKICAgICAgICAgICAgZW5kCiAgICAgICAgICBlbmQK # ICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMKICBlbmQK # ZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTY2OC50YXIvZXYvcndkLnJiAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAyMDI1 # MTYAMTAyNTAzMjA2MTMAMDE3Nzc0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJp # awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1YnkiCnJlcXVpcmUg # ImV2L3htbCIKcmVxdWlyZSAiZXYvbmV0IgpyZXF1aXJlICJldi9icm93c2Vy # IgpyZXF1aXJlICJldi90aHJlYWQiCnJlcXVpcmUgIm1kNSIKcmVxdWlyZSAi # cmJjb25maWciCgpiZWdpbgogIHJlcXVpcmUgIndpbjMyb2xlIgogIHJlcXVp # cmUgIndpbjMyL3JlZ2lzdHJ5IgpyZXNjdWUgTG9hZEVycm9yCiAgJCIucHVz # aCAid2luMzJvbGUuc28iCiAgJCIucHVzaCAid2luMzIvcmVnaXN0cnkucmIi # CmVuZAoKJHJ3ZF9leGl0CT0gQVJHVi5pbmNsdWRlPygiLS1yd2QtZXhpdCIp # CSMgSGFjayA/Pz8KJHJ3ZF9leGl0CT0gdHJ1ZQlpZiBkZWZpbmVkPyhSRVFV # SVJFMkxJQikKJHJ3ZF9kZWJ1Zwk9ICgkcndkX2RlYnVnIG9yICRERUJVRyBv # ciBmYWxzZSkKJHJ3ZF9ib3JkZXIJPSAoJHJ3ZF9ib3JkZXIgb3IgMCkKJHJ3 # ZF9kaXIJPSBEaXIucHdkCiRyd2RfZmlsZXMJPSBGaWxlLmV4cGFuZF9wYXRo # KCJyd2RfZmlsZXMiLCBEaXIucHdkKQokcndkX2h0bWwJPSB7fQoKQVJHVi5k # ZWxldGVfaWYgZG8gfGFyZ3wKICBhcmcgPX4gL14tLXJ3ZC0vCmVuZAoKUldE # RW1wdHlsaW5lCT0gIi4uLiIKCiNtb2R1bGUgUldECgpyY2ZpbGUJPSBuaWwK # cwk9IEVOVlsiSE9NRSJdCQk7IHMgPSBGaWxlLmV4cGFuZF9wYXRoKCIucndk # cmMiLCBzKQl1bmxlc3Mgcy5uaWw/CTsgcmNmaWxlID0gcwlpZiAobm90IHMu # bmlsPyBhbmQgcmNmaWxlLm5pbD8gYW5kIEZpbGUuZmlsZT8ocykpCnMJPSBF # TlZbIlVTRVJQUk9GSUxFIl0JOyBzID0gRmlsZS5leHBhbmRfcGF0aCgicndk # LmNmZyIsIHMpCXVubGVzcyBzLm5pbD8JOyByY2ZpbGUgPSBzCWlmIChub3Qg # cy5uaWw/IGFuZCByY2ZpbGUubmlsPyBhbmQgRmlsZS5maWxlPyhzKSkKcwk9 # IEVOVlsid2luZGlyIl0JCTsgcyA9IEZpbGUuZXhwYW5kX3BhdGgoInJ3ZC5j # ZmciLCBzKQl1bmxlc3Mgcy5uaWw/CTsgcmNmaWxlID0gcwlpZiAobm90IHMu # bmlsPyBhbmQgcmNmaWxlLm5pbD8gYW5kIEZpbGUuZmlsZT8ocykpCgpBTAk9 # ICJhbGlnbj0nbGVmdCciCkFDCT0gImFsaWduPSdjZW50ZXInIgpBUgk9ICJh # bGlnbj0ncmlnaHQnIgpWQQk9ICJ2YWxpZ249J21pZGRsZSciCgpGb3JtYXQJ # PSAiXG48IS0tICUtMTBzICUtMTBzIC0tPlx0IgoKdW5sZXNzIHJjZmlsZS5u # aWw/CiAgcHV0cyAiUmVhZGluZyAje3JjZmlsZX0gLi4uIgoKICBIYXNoLmZp # bGUocmNmaWxlKS5lYWNoIGRvIHxrLCB2fAogICAgRU5WW2tdCT0gdgl1bmxl # c3MgRU5WLmluY2x1ZGU/KGspCiAgZW5kCmVuZAoKRU5WWyJSV0RCUk9XU0VS # Il0JPSAoRU5WWyJSV0RCUk9XU0VSIl0gb3IgZGVmYXVsdGJyb3dzZXIpIG9y # IHB1dHMgIk5vIGJyb3dzZXIgZm91bmQuIgpFTlZbIlJXRFBPUlRTIl0JCT0g # KEVOVlsiUldEUE9SVFMiXSBvciAiNzcwMS03NzA5IikKRU5WWyJSV0RUSEVN # RSJdCQk9IChFTlZbIlJXRFRIRU1FIl0gb3IgIkRFRkFVTFQiKQoKI3RyYXAo # IklOVCIpCXtwdXRzICJUZXJtaW5hdGluZy4uLiIgOyBleGl0fQoKJFNBRkUJ # PSAyCgpjbGFzcyBJRQogIGRlZiBpbml0aWFsaXplKHVybCkKICAgIEBpZSA9 # IFdJTjMyT0xFLm5ldygiSW50ZXJuZXRFeHBsb3Jlci5BcHBsaWNhdGlvbiIp # CiAgICBAZXYJPSBXSU4zMk9MRV9FVkVOVC5uZXcoQGllLCAiRFdlYkJyb3dz # ZXJFdmVudHMyIikKCiAgICBAaWUubmF2aWdhdGUodXJsKQoKICAgIEBpZS5t # ZW51YmFyCQk9IGZhbHNlCiAgICBAaWUudG9vbGJhcgkJPSBmYWxzZQogICAg # QGllLmFkZHJlc3NiYXIJPSBmYWxzZQogICAgQGllLnN0YXR1c2Jhcgk9IGZh # bHNlCgogICAgQGllLnZpc2libGUJCT0gdHJ1ZQoKICAgIGF0X2V4aXQgZG8K # ICAgICAgQGllLnZpc2libGUJPSBmYWxzZQogICAgZW5kCgogICAgQGV2Lm9u # X2V2ZW50KCJPblF1aXQiKSBkbwogICAgICBUaHJlYWQubWFpbi5leGl0CiAg # ICBlbmQKCiAgICBUaHJlYWQubmV3IGRvCiAgICAgIGxvb3AgZG8KICAgICAg # ICBXSU4zMk9MRV9FVkVOVC5tZXNzYWdlX2xvb3AKICAgICAgZW5kCiAgICBl # bmQKICBlbmQKZW5kCgpjbGFzcyBBcnJheQogIGRlZiByd2Rfb3B0aW9ucyhl # bXB0eWxpbmU9bmlsKQogICAgaWYgZW1wdHlsaW5lLm5pbD8KICAgICAgYQk9 # IHNlbGYKICAgIGVsc2UKICAgICAgYQk9IFtlbXB0eWxpbmVdLmNvbmNhdChz # ZWxmKQogICAgZW5kCgogICAgYS5udW1zb3J0LmNvbGxlY3R7fHN8ICI8b3B0 # aW9uPiN7cy50b19zLnRvX2h0bWx9PC9vcHRpb24+IiB9LmpvaW4oIlxuIikK # ICBlbmQKCiAgZGVmIHJ3ZF9tZXRob2QobWV0aG9kKQogICAgcmVzCT0gIiIK # CiAgICBzZWxmLmVhY2ggZG8gfHN8CiAgICAgIHMJCT0gcy5qb2luKCIvIikJ # aWYgcy5raW5kX29mPyhBcnJheSkKICAgICAgczIJPSBzLmR1cAogICAgICBz # MlswLi4wXQk9IHMyWzAuLjBdLnVwY2FzZQogICAgICByZXMJPSByZXMgKyAi # PHAgYWxpZ249J2xlZnQnPjxhIGFjdGlvbj0nI3ttZXRob2R9LyN7cy50b19o # dG1sfSc+I3tzMi50b19odG1sfTwvYT48L3A+IgogICAgZW5kCgogICAgcmV0 # dXJuIHJlcwogIGVuZAoKICBkZWYgcndkX3JvdyhrZXk9bmlsLCB2YWx1ZT1u # aWwsIGJvbGQ9ZmFsc2UpCiAgICByZXMJPSAiIgoKICAgIHJlcwk9IHJlcyAr # ICI8cm93IHZhbGlnbj0ndG9wJz4iCiAgICByZXMJPSByZXMgKyAiPHJhZGlv # IG5hbWU9JyN7a2V5LnRvX2h0bWx9JyB2YWx1ZT0nI3t2YWx1ZS50b19odG1s # fScvPiIJdW5sZXNzIGtleS5uaWw/CiAgICByZXMJPSByZXMgKyBzZWxmLmNv # bGxlY3R7fHN8ICI8cCBhbGlnbj0nI3socy5raW5kX29mPyhOdW1lcmljKSBv # ciBzID1+IC9eXGQrXC5cZCskLykgPyAicmlnaHQiIDogImxlZnQifSc+I3si # PGI+IiBpZiBib2xkfSN7cy50b19zLnRvX2h0bWx9I3siPC9iPiIgaWYgYm9s # ZH08L3A+In0uam9pbigiIikKICAgIHJlcwk9IHJlcyArICI8L3Jvdz4iCgog # ICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYgcndkX3RhYmxlKGhlYWRlcnM9 # bmlsLCBoaWdobGlnaHRyb3dzPVtdKQogICAgcmVzCT0gIiIKCiAgICBoaWdo # bGlnaHRyb3dzCT0gW2hpZ2hsaWdodHJvd3NdLmZsYXR0ZW4KCiAgICBuCT0g # LTEKCiAgICByZXMJPSByZXMgKyAiPHRhYmxlPiIKICAgIHJlcwk9IHJlcyAr # IGhlYWRlcnMucndkX3JvdyhuaWwsIG5pbCwgdHJ1ZSkJdW5sZXNzIGhlYWRl # cnMubmlsPwogICAgcmVzCT0gcmVzICsgc2VsZi5jb2xsZWN0e3xhfCBhLnJ3 # ZF9yb3cobmlsLCBuaWwsIGhpZ2hsaWdodHJvd3MuaW5jbHVkZT8obis9MSkp # fS5qb2luKCIiKQogICAgcmVzCT0gcmVzICsgIjwvdGFibGU+IgoKICAgIHJl # dHVybiByZXMKICBlbmQKCiAgZGVmIHJ3ZF9oZWFkZXJzKGVtcHR5ZmllbGQ9 # ZmFsc2UpCiAgICByZXMJPSAiIgoKICAgIHJlcwk9IHJlcyArICI8cm93PiIK # ICAgIHJlcwk9IHJlcyArICI8cC8+IglpZiBlbXB0eWZpZWxkCiAgICByZXMJ # PSByZXMgKyBzZWxmLmNvbGxlY3R7fHN8ICI8cCBhbGlnbj0nbGVmdCc+PGI+ # I3tzLnRvX2h0bWx9PC9iPjwvcD4iIH0uam9pbigiIikKICAgIHJlcwk9IHJl # cyArICI8L3Jvdz4iCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYgcndk # X2Zvcm0ocHJlZml4LCB2YWx1ZXM9W10sIHR3b3BhcnRzPTAsIG9wdGlvbnM9 # e30pCiAgICByZXMJPSBbXQoKICAgIHJlcyA8PCAiPHRhYmxlPiIKICAgIHNl # bGYuZWFjaF9pbmRleCBkbyB8bnwKICAgICAgbmFtZQk9ICIje3ByZWZpeC50 # b19odG1sfSN7c2VsZltuXS5kb3duY2FzZS50b19odG1sfSIKCiAgICAgIHJl # cyA8PCAiPHJvdz4iCiAgICAgIHJlcyA8PCAiPHAgYWxpZ249J3JpZ2h0Jz4i # CiAgICAgIHJlcyA8PCAiI3tzZWxmW25dLnRvX2h0bWx9OiIKICAgICAgcmVz # IDw8ICI8L3A+IgoKICAgICAgaWYgb3B0aW9ucy5rZXlzLmluY2x1ZGU/KHNl # bGZbbl0pCiAgICAgICAgcmVzIDw8ICI8c2VsZWN0IG5hbWU9JyN7bmFtZX0n # PiIKICAgICAgICByZXMgPDwgb3B0aW9uc1tzZWxmW25dXS5yd2Rfb3B0aW9u # cyhSV0RFbXB0eWxpbmUpCiAgICAgICAgcmVzIDw8ICI8L3NlbGVjdD4iCiAg # ICAgIGVsc2UKICAgICAgICBzCT0gIiIKCiAgICAgICAgcyA8PCAiPHRleHQg # bmFtZT0nI3tuYW1lfSciCiAgICAgICAgcyA8PCAiIHZhbHVlPScje3ZhbHVl # c1tuXS50b19zLnRvX2h0bWx9JyIJaWYgbiA8IHZhbHVlcy5sZW5ndGgKICAg # ICAgICBzIDw8ICIvPiIKCiAgICAgICAgcmVzIDw8IHMKICAgICAgZW5kCgog # ICAgICByZXMgPDwgIjwvcm93PiIKCiAgICAgIGlmIHR3b3BhcnRzID4gMCBh # bmQgbiA9PSB0d29wYXJ0cy0xCiAgICAgICAgcmVzIDw8ICI8cm93PjxlbXB0 # eS8+PC9yb3c+IgogICAgICBlbmQKICAgIGVuZAogICAgcmVzIDw8ICI8L3Rh # YmxlPiIKCiAgICByZXR1cm4gcmVzLmpvaW4oIlxuIikKICBlbmQKZW5kCgpj # bGFzcyBIYXNoCiAgZGVmIHJ3ZF90YWJsZShmaWVsZD1uaWwsIGpvaW53aXRo # PW5pbCwgaGVhZGVycz1uaWwpCiAgICByZXMJPSBbXQoKICAgIHJlcyA8PCAi # PHRhYmxlPiIKICAgIHJlcyA8PCBoZWFkZXJzLnJ3ZF9oZWFkZXJzKChub3Qg # ZmllbGQubmlsPykpCWlmIG5vdCBoZWFkZXJzLm5pbD8KICAgIHNlbGYua2V5 # cy5udW1zb3J0LmVhY2ggZG8gfGtleXwKICAgICAga2V5Mgk9IGtleQogICAg # ICB2YWx1ZTIJPSBzZWxmW2tleV0KCiAgICAgIGtleTIJPSBrZXkyLmpvaW4o # am9pbndpdGgpCWlmIGtleTIua2luZF9vZj8oQXJyYXkpCiAgICAgIHZhbHVl # Mgk9IFt2YWx1ZTJdCQlpZiB2YWx1ZTIua2luZF9vZj8oU3RyaW5nKQoKICAg # ICAgcmVzIDw8IHZhbHVlMi5yd2Rfcm93KGZpZWxkLCBrZXkyKQogICAgZW5k # CiAgICByZXMgPDwgIjwvdGFibGU+IgoKICAgIHJlcy5qb2luKCJcbiIpCiAg # ZW5kCmVuZAoKY2xhc3MgRVZUYWJsZQogIGRlZiByd2RfdGFibGUoZmllbGQ9 # bmlsLCBqb2lud2l0aD1Ac2VwKQogICAgc3VwZXIoZmllbGQsIGpvaW53aXRo # LCBAaGVhZGVycykKICBlbmQKCiAgZGVmIHJ3ZF9mb3JtKHByZWZpeD0iIiwg # a2V5PW5pbCwgdHdvcGFydHM9ZmFsc2UpCiAgICB2YWx1ZXMJPSBzZWxmW2tl # eV0JaWYgbm90IGtleS5uaWw/CiAgICB2YWx1ZXMJPSBbXQkJaWYgdmFsdWVz # Lm5pbD8KICAgIG9wdGlvbnMJPSB7fQoKICAgIGlmIEZpbGUuZmlsZT8ob2xk # bG9jYXRpb24oImNvbnN0cmFpbnRzLnRzdiIpKQogICAgICB0YWJsZQk9IEZp # bGUuYmFzZW5hbWUoQGZpbGUpLmdzdWIoL1wudHN2JC8sICIiKQoKICAgICAg # VFNWRmlsZS5uZXcob2xkbG9jYXRpb24oImNvbnN0cmFpbnRzLnRzdiIpKS5z # dWJzZXQoWyJUYWJsZSIsICJDb25zdHJhaW50Il0sIFt0YWJsZSwgImtleSJd # LCBbIkNvbHVtbiIsICJWYWx1ZSJdKS52YWx1ZXMuZWFjaCBkbyB8Y29sdW1u # LCB0YWJsZTJ8CiAgICAgICAgb3B0aW9uc1tjb2x1bW5dCT0gVFNWRmlsZS5u # ZXcob2xkbG9jYXRpb24oIiN7dGFibGUyfS50c3YiKSkua2V5cy5jb2xsZWN0 # e3xhfCBhLmpvaW4oIlx0Iil9CiAgICAgIGVuZAogICAgZW5kCgogICAgQGhl # YWRlcnMucndkX2Zvcm0ocHJlZml4LCB2YWx1ZXMsIHR3b3BhcnRzID8gQGtl # eSA6IDAsIG9wdGlvbnMpCiAgZW5kCgogIGRlZiByd2RfbWV0YWRhdGEKICAg # IHJlcwk9IFtdCgogICAgcmVzIDw8ICI8dGFibGU+IgogICAgcmVzIDw8ICI8 # cm93PiIKICAgIHJlcyA8PCAiICA8ZW1wdHkvPiIKICAgIHJlcyA8PCAiICA8 # dGV4dCBuYW1lPSdoZWFkZXJfbmV3JyB2YWx1ZT0nJy8+IgogICAgcmVzIDw8 # ICI8L3Jvdz4iCiAgICBAaGVhZGVycy5lYWNoX2luZGV4IGRvIHxufAogICAg # ICByZXMgPDwgIjxyb3c+IgogICAgICByZXMgPDwgIiAgPHRleHQgbmFtZT0n # aGVhZGVyXyN7bn1fb2xkJyB2YWx1ZT0nI3tAaGVhZGVyc1tuXX0nLz4iCiAg # ICAgIHJlcyA8PCAiICA8dGV4dCBuYW1lPSdoZWFkZXJfI3tufV9uZXcnIHZh # bHVlPScnLz4iCiAgICAgIHJlcyA8PCAiPC9yb3c+IgogICAgZW5kCiAgICBy # ZXMgPDwgIjwvdGFibGU+IgoKICAgIHJldHVybiByZXMuam9pbigiXG4iKQog # IGVuZAplbmQKCmNsYXNzIE9wZW5UYWcKICBkZWYgcHJlY2hpbGRyZW4ocmVz # LCBiZWZvcmUsIGFmdGVyLCB2YXJzaHRtbCwgdmFyc3N0cmluZywgc3dpdGNo # ZXMsIGhlbHAsIG9uZW9ybW9yZWZpZWxkcywgZmlyc3RhY3Rpb24sIHRhYnMs # IHRhYiwgcGRhKQogICAgYmVmCT0gYmVmb3JlWy0xXQogICAgcmVzIDw8IEZv # cm1hdCAlIFsiQmVmb3JlIiwgQHN1YnR5cGVdCWlmICgkcndkX2RlYnVnIGFu # ZCBub3QgYmVmLm5pbD8pCiAgICByZXMgPDwgYmVmCWlmIG5vdCBiZWYubmls # PwoKICAgIHJlcyA8PCBGb3JtYXQgJSBbIlByZSIsIEBzdWJ0eXBlXQlpZiAk # cndkX2RlYnVnCgogICAgYWxpZ24JPSBBQwogICAgYWxpZ24JPSAiYWxpZ249 # JyN7QGFyZ3NbImFsaWduIl19JyIJaWYgQGFyZ3MuaW5jbHVkZT8oImFsaWdu # IikKCiAgICB2YWxpZ24JPSBWQQogICAgdmFsaWduCT0gInZhbGlnbj0nI3tA # YXJnc1sidmFsaWduIl19JyIJaWYgQGFyZ3MuaW5jbHVkZT8oInZhbGlnbiIp # CgogICAgdmFsdWUxCT0gIiIKICAgIHZhbHVlMQk9IHZhcnNodG1sW0Bhcmdz # WyJuYW1lIl1dCWlmIHZhcnNodG1sLmluY2x1ZGU/KEBhcmdzWyJuYW1lIl0p # CiAgICB2YWx1ZTEJPSBAYXJnc1sidmFsdWUiXQkJaWYgQGFyZ3MuaW5jbHVk # ZT8oInZhbHVlIikKCiAgICB2YWx1ZTIJPSAiIgogICAgdmFsdWUyCT0gdmFy # c3N0cmluZ1tAYXJnc1sibmFtZSJdXQlpZiB2YXJzc3RyaW5nLmluY2x1ZGU/ # KEBhcmdzWyJuYW1lIl0pCiAgICB2YWx1ZTIJPSBAYXJnc1sidmFsdWUiXQkJ # aWYgQGFyZ3MuaW5jbHVkZT8oInZhbHVlIikKCiAgICBjZWxsc3BhY2luZwk9 # IDMKICAgIGNlbGxzcGFjaW5nCT0gMAlpZiBwZGEKCiAgICBjYXNlIEBzdWJ0 # eXBlCiAgICB3aGVuICJhcHBsaWNhdGlvbiIKICAgIHdoZW4gIndpbmRvdyIs # ICJoZWxwd2luZG93IgogICAgICBhcmdzCT0gQGFyZ3MuZGVlcF9kdXAKCiAg # ICAgIGFyZ3NbIm5vaGVscGJ1dHRvbiJdCT0gKG5vdCBoZWxwKQoKICAgICAg # dGVtcGxhdGUJPSAkcndkX2h0bWxfMQogICAgICB0ZW1wbGF0ZQk9ICRyd2Rf # aHRtbF9QREFfMQlpZiBwZGEKCiAgICAgIHJlcyA8PCAodGVtcGxhdGUodGVt # cGxhdGUsIGFyZ3MpKQogICAgd2hlbiAicCIJCXRoZW4gcmVzIDw8ICI8cCAj # e2FsaWdufT4iCiAgICB3aGVuICJwcmUiCQl0aGVuIHJlcyA8PCAiPHByZSAj # e2FsaWdufT4iCiAgICB3aGVuICJiaWciCQl0aGVuIHJlcyA8PCAiPHAgI3th # bGlnbn0+PGJpZz4iCiAgICB3aGVuICJzbWFsbCIJdGhlbiByZXMgPDwgIjxw # ICN7YWxpZ259PjxzbWFsbD4iCiAgICB3aGVuICJsaXN0IgkJdGhlbiByZXMg # PDwgIjx1bCAje2FsaWdufT4iCiAgICB3aGVuICJpdGVtIgkJdGhlbiByZXMg # PDwgIjxsaSAje2FsaWdufT4iCiAgICB3aGVuICJlbXB0eSIJdGhlbiByZXMg # PDwgIjxwPjxicj4iCiAgICB3aGVuICJpbWFnZSIKICAgICAgd2lkdGgJPSAi # d2lkdGg9JyN7QGFyZ3NbIndpZHRoIl19IglpZiBAYXJncy5pbmNsdWRlPygi # d2lkdGgiKQogICAgICBoZWlnaHQJPSAiaGVpZ2h0PScje0BhcmdzWyJoZWln # aHQiXX0nIglpZiBAYXJncy5pbmNsdWRlPygiaGVpZ2h0IikKCiAgICAgIHJl # cyA8PCAiPGltZyBzcmM9JyN7QGFyZ3NbInNyYyJdfScgYWx0PScje0Bhcmdz # WyJhbHQiXX0nICN7d2lkdGh9ICN7aGVpZ2h0fT4iCiAgICB3aGVuICJwcm9n # cmVzc2JhciIKICAgICAgd2lkdGgJPSAyMDAKCiAgICAgIHJlcyA8PCAiPHRh # YmxlPiIKICAgICAgcmVzIDw8ICIgIDx0cj4iCiAgICAgIHJlcyA8PCAiICAg # IDx0ZCBjb2xzcGFuPScyJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nI3t3aWR0aCs1fSc+PC90ZD4iCiAgICAgIHJlcyA8 # PCAiICA8L3RyPiIKICAgICAgcmVzIDw8ICIgIDx0cj4iCiAgICAgIHJlcyA8 # PCAiICAgIDx0ZCBiZ2NvbG9yPScjREREREREJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxMCcgd2lkdGg9JyN7KHdpZHRoKkBhcmdzWyJ2 # YWx1ZSJdLnRvX2YpLnRvX2l9Jz48L3RkPiIKICAgICAgcmVzIDw8ICIgICAg # PHRkIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEwJyB3aWR0aD0nI3sod2lkdGgqKDEuMC1AYXJnc1sidmFs # dWUiXS50b19mKSkudG9faX0nPjwvdGQ+IgogICAgICByZXMgPDwgIiAgPC90 # cj4iCiAgICAgIHJlcyA8PCAiPC90YWJsZT4iCiAgICB3aGVuICJiciIJCXRo # ZW4gcmVzIDw8ICI8YnI+IgogICAgd2hlbiAiaHIiCQl0aGVuIHJlcyA8PCAi # PGhyPiIKICAgIHdoZW4gImIiCQl0aGVuIHJlcyA8PCAiPGI+IgogICAgd2hl # biAiaSIJCXRoZW4gcmVzIDw8ICI8aT4iCiAgICB3aGVuICJhIgogICAgICBp # ZiBAYXJncy5pbmNsdWRlPygiaHJlZiIpCiAgICAgICAgcmVzIDw8ICI8YSBo # cmVmPScje0BhcmdzWyJocmVmIl19JyB0YXJnZXQ9JyN7QGFyZ3NbInRhcmdl # dCJdIG9yICJfYmxhbmsifSc+IgogICAgICBlbHNlCiAgICAgICAgcmVzIDw8 # ICI8YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9h # Y3Rpb24udmFsdWU9XCIje0BhcmdzWyJhY3Rpb24iXX1cIjtkb2N1bWVudC5i # b2R5Zm9ybS5zdWJtaXQoKTsnPiIKICAgICAgZW5kCiAgICB3aGVuICJ2ZXJ0 # aWNhbCIJdGhlbiByZXMgPDwgIjx0YWJsZSAje0FDfSBib3JkZXI9JyN7JHJ3 # ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0nI3tjZWxsc3BhY2luZ30nIGNlbGxw # YWRkaW5nPScwJz4iCiAgICB3aGVuICJob3Jpem9udGFsIgl0aGVuIHJlcyA8 # PCAiPHRhYmxlICN7QUN9IGJvcmRlcj0nI3skcndkX2JvcmRlcn0nIGNlbGxz # cGFjaW5nPScje2NlbGxzcGFjaW5nfScgY2VsbHBhZGRpbmc9JzAnPjx0ciAj # e2FsaWdufSAje3ZhbGlnbn0+IgogICAgd2hlbiAidGFibGUiCXRoZW4gcmVz # IDw8ICI8dGFibGUgI3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2Vs # bHNwYWNpbmc9JyN7Y2VsbHNwYWNpbmd9JyBjZWxscGFkZGluZz0nMCc+Igog # ICAgd2hlbiAicm93IgkJdGhlbiByZXMgPDwgIjx0ciAje2FsaWdufSAje3Zh # bGlnbn0+IgogICAgd2hlbiAiaGlkZGVuIgl0aGVuIHJlcyA8PCAiPHAgI3th # bGlnbn0+PGlucHV0IG5hbWU9JyN7QGFyZ3NbIm5hbWUiXX0nIHZhbHVlPScj # e3ZhbHVlMX0nIHR5cGU9J2hpZGRlbic+IgogICAgd2hlbiAidGV4dCIKICAg # ICAgbWF4bGVuZ3RoCT0gIiIKICAgICAgbWF4bGVuZ3RoCT0gIm1heGxlbmd0 # aD0nJXMnIiAlIEBhcmdzWyJtYXhsZW5ndGgiXQlpZiBAYXJncy5pbmNsdWRl # PygibWF4bGVuZ3RoIikKICAgICAgc2l6ZQk9ICIiCiAgICAgIHNpemUJPSAi # c2l6ZT0nJXMnIiAlIEBhcmdzWyJzaXplIl0JCWlmIEBhcmdzLmluY2x1ZGU/ # KCJzaXplIikKICAgICAgc2l6ZQk9ICJzaXplPSclcyciICUgMTAJCQlpZiBw # ZGEKICAgICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tA # YXJnc1sibmFtZSJdfScgdmFsdWU9JyN7dmFsdWUxfScgdHlwZT0ndGV4dCcg # I3ttYXhsZW5ndGh9ICN7c2l6ZX0+IgogICAgICBvbmVvcm1vcmVmaWVsZHMJ # PDwgInRydWUiCiAgICB3aGVuICJ0ZXh0YXJlYSIKICAgICAgcmVzIDw8ICI8 # cCAje2FsaWdufT48dGV4dGFyZWEgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScg # cm93cz0nMjUnIGNvbHM9JzgwJz4je3ZhbHVlMi5jcmxmfTwvdGV4dGFyZWE+ # IgogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJw # YXNzd29yZCIKICAgICAgbWF4bGVuZ3RoCT0gIiIKICAgICAgbWF4bGVuZ3Ro # CT0gIm1heGxlbmd0aD0nJXMnIiAlIEBhcmdzWyJtYXhsZW5ndGgiXQlpZiBA # YXJncy5pbmNsdWRlPygibWF4bGVuZ3RoIikKICAgICAgc2l6ZQk9ICIiCiAg # ICAgIHNpemUJPSAic2l6ZT0nJXMnIiAlIDEwCQkJaWYgcGRhCiAgICAgIHJl # cyA8PCAiPHAgI3thbGlnbn0+PGlucHV0IG5hbWU9JyN7QGFyZ3NbIm5hbWUi # XX0nIHZhbHVlPScje3ZhbHVlMX0nIHR5cGU9J3Bhc3N3b3JkJyAje21heGxl # bmd0aH0gI3tzaXplfT4iCiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1 # ZSIKICAgIHdoZW4gImNoZWNrYm94IgogICAgICBpZiB2YXJzaHRtbFtAYXJn # c1sibmFtZSJdXSA9PSAib24iCiAgICAgICAgc3dpdGNoZXNbQGFyZ3NbIm5h # bWUiXV0JPSB0cnVlCiAgICAgICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5w # dXQgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgY2hlY2tlZD0nb24nIHR5cGU9 # J2NoZWNrYm94Jz4iCiAgICAgIGVsc2UKICAgICAgICBzd2l0Y2hlc1tAYXJn # c1sibmFtZSJdXQk9IGZhbHNlCiAgICAgICAgcmVzIDw8ICI8cCAje2FsaWdu # fT48aW5wdXQgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgdHlwZT0nY2hlY2ti # b3gnPiIKICAgICAgZW5kCiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1 # ZSIKICAgIHdoZW4gInJhZGlvIgogICAgICBpZiB2YXJzaHRtbFtAYXJnc1si # bmFtZSJdXSA9PSB2YWx1ZTEJIyA/Pz8gMSBvciAyPwogICAgICAgIHJlcyA8 # PCAiPHAgI3thbGlnbn0+PGlucHV0IG5hbWU9JyN7QGFyZ3NbIm5hbWUiXX0n # IGNoZWNrZWQ9J29uJyB2YWx1ZT0nI3t2YWx1ZTF9JyB0eXBlPSdyYWRpbyc+ # IgogICAgICBlbHNlCiAgICAgICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5w # dXQgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgdmFsdWU9JyN7dmFsdWUxfScg # dHlwZT0ncmFkaW8nPiIKICAgICAgZW5kCiAgICAgIG9uZW9ybW9yZWZpZWxk # cwk8PCAidHJ1ZSIKICAgIHdoZW4gInNlbGVjdCIKICAgICByZXMgPDwgIjxz # ZWxlY3QgI3thbGlnbn0gbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgd2lkdGg9 # JyN7QGFyZ3NbIndpZHRoIl19IHNpemU9JyN7QGFyZ3NbInNpemUiXX0nPiIJ # IyA/Pz8gTWlzc2NoaWVuIG5vZyBpZXRzIG1ldCAnbXVsdGlwbGUnPwogICAg # ICBuYW1lCT0gQGFyZ3NbIm5hbWUiXQogICAgICAkc2VsZWN0CT0gdmFyc2h0 # bWxbbmFtZV0KICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAg # d2hlbiAib3B0aW9uIgogICAgICBpZiAkc2VsZWN0ID09IEBjaGlsZHJlblsw # XS50ZXh0CiAgICAgICAgcmVzIDw8ICI8b3B0aW9uIHNlbGVjdGVkPSd0cnVl # Jz4iCiAgICAgIGVsc2UKICAgICAgICByZXMgPDwgIjxvcHRpb24+IgogICAg # ICBlbmQKICAgIHdoZW4gImJ1dHRvbiIKICAgICAgcmVzIDw8ICI8aW5wdXQg # dHlwZT0nc3VibWl0JyB2YWx1ZT0nI3tAYXJnc1siY2FwdGlvbiJdfScgb25j # bGljaz0nZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cIiN7 # QGFyZ3NbImFjdGlvbiJdfVwiOyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCBA # YXJnc1siYWN0aW9uIl0JaWYgKGZpcnN0YWN0aW9uLmVtcHR5PyBhbmQgQGFy # Z3MuaW5jbHVkZT8oImFjdGlvbiIpKQogICAgICBvbmVvcm1vcmVmaWVsZHMJ # PDwgInRydWUiCiAgICB3aGVuICJiYWNrIgogICAgICByZXMgPDwgIjxpbnB1 # dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdCYWNrJyBvbmNsaWNrPSdkb2N1bWVu # dC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX2JhY2tcIjsnPiIK # ICAgICAgZmlyc3RhY3Rpb24JPDwgInJ3ZF9iYWNrIglpZiBmaXJzdGFjdGlv # bi5lbXB0eT8KICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAg # d2hlbiAiY2FuY2VsIgogICAgICByZXMgPDwgIjxpbnB1dCB0eXBlPSdzdWJt # aXQnIHZhbHVlPSdDYW5jZWwnIG9uY2xpY2s9J2RvY3VtZW50LmJvZHlmb3Jt # LnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfY2FuY2VsXCI7Jz4iCiAgICAgIGZp # cnN0YWN0aW9uCTw8ICJyd2RfY2FuY2VsIglpZiBmaXJzdGFjdGlvbi5lbXB0 # eT8KICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAi # aGVscCIKICAgICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1 # ZT0nSGVscCcgb25jbGljaz0nZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlv # bi52YWx1ZT1cInJ3ZF9oZWxwXCI7Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8 # ICJyd2RfaGVscCIJaWYgZmlyc3RhY3Rpb24uZW1wdHk/CiAgICAgIG9uZW9y # bW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gInF1aXQiCiAgICAgIHJl # cyA8PCAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1F1aXQnIG9uY2xp # Y2s9J2RvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2Rf # cXVpdFwiOyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCAicndkX3F1aXQiCWlm # IGZpcnN0YWN0aW9uLmVtcHR5PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwg # InRydWUiCiAgICB3aGVuICJjbG9zZSIKICAgICAgcmVzIDw8ICI8aW5wdXQg # dHlwZT0nc3VibWl0JyB2YWx1ZT0nQ2xvc2UnIG9uY2xpY2s9J3dpbmRvdy5j # bG9zZSgpOyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCAicndkX3F1aXQiCWlm # IGZpcnN0YWN0aW9uLmVtcHR5PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwg # InRydWUiCiAgICB3aGVuICJtYWluIgogICAgICByZXMgPDwgIjxpbnB1dCB0 # eXBlPSdzdWJtaXQnIHZhbHVlPSdNYWluJyBvbmNsaWNrPSdkb2N1bWVudC5i # b2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX21haW5cIjsnPiIKICAg # ICAgZmlyc3RhY3Rpb24JPDwgInJ3ZF9tYWluIglpZiBmaXJzdGFjdGlvbi5l # bXB0eT8KICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hl # biAicmVzZXQiCiAgICAgIHJlcyA8PCAiPGlucHV0IHR5cGU9J3Jlc2V0JyAg # dmFsdWU9J1Jlc2V0Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8ICJyd2RfcXVp # dCIJaWYgZmlyc3RhY3Rpb24uZW1wdHk/CSMgPz8/CiAgICAgIG9uZW9ybW9y # ZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gImNsb3Nld2luZG93IgogICAg # ICAjcmVzIDw8ICI8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+XG4i # CSMgPz8/CiAgICAgICNyZXMgPDwgIjwhLS1cbiIKICAgICAgI3JlcyA8PCAi # ICB3aW5kb3cuY2xvc2UoKTtcbiIKICAgICAgI3JlcyA8PCAiLy8tLT5cbiIK # ICAgICAgI3JlcyA8PCAiPC9zY3JpcHQ+IgogICAgd2hlbiAidGFicyIKICAg # ICAgcmVzIDw8ICI8dGFibGUgI3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVy # fScgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJz4iCiAgICAgIHJl # cyA8PCAiICA8dHIgI3tBTH0+IgogICAgICByZXMgPDwgIiAgICA8dGQgI3tB # TH0gY2xhc3M9J3RhYnMnPiIKICAgICAgcmVzIDw8ICIgICAgICA8dGFibGUg # I3tBTH0gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JzAn # IGNlbGxwYWRkaW5nPScwJz4iCiAgICAgIHJlcyA8PCAiICAgICAgICA8dHIg # I3tBTH0+IgogICAgICAjcmVzIDw8ICIgICAgICAgICAgPHRkIGNsYXNzPSdu # b3RhYic+Jm5ic3A7PC90ZD4iCiAgICAgIHRhYnMuZWFjaCBkbyB8b2JqfAog # ICAgICAgIG5hbWUJPSBvYmouYXJnc1sibmFtZSJdCiAgICAgICAgY2FwdGlv # bgk9IG9iai5hcmdzWyJjYXB0aW9uIl0KCiAgICAgICAgcmVzIDw8ICI8dGQg # I3tBTH0gY2xhc3M9J25vdGFiJz4mbmJzcDs8L3RkPiIJdW5sZXNzIG9iaiA9 # PSB0YWJzWzBdCgogICAgICAgIGlmIG5hbWUgPT0gdGFiCiAgICAgICAgICBy # ZXMgPDwgIjx0ZCAje0FDfSBjbGFzcz0nYWN0aXZldGFiJz48dHQ+Jm5ic3A7 # I3tjYXB0aW9ufSZuYnNwOzwvdHQ+PC90ZD4iCiAgICAgICAgZWxzZQogICAg # ICAgICAgcmVzIDw8ICI8dGQgI3tBQ30gY2xhc3M9J3Bhc3NpdmV0YWInPjxh # IGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlv # bi52YWx1ZT1cInJ3ZF90YWJfI3tuYW1lfVwiO2RvY3VtZW50LmJvZHlmb3Jt # LnN1Ym1pdCgpOyc+PHR0PiZuYnNwOyN7Y2FwdGlvbn0mbmJzcDs8L3R0Pjwv # YT48L3RkPiIKICAgICAgICBlbmQKICAgICAgZW5kCiAgICAgIHJlcyA8PCAi # ICAgICAgICAgIDx0ZCBjbGFzcz0nbm90YWInIHdpZHRoPScxMDAlJz4mbmJz # cDs8L3RkPiIKICAgICAgcmVzIDw8ICIgICAgICAgIDwvdHI+IgogICAgICBy # ZXMgPDwgIiAgICAgIDwvdGFibGU+IgogICAgICByZXMgPDwgIiAgICA8L3Rk # PiIKICAgICAgcmVzIDw8ICIgIDwvdHI+IgogICAgICByZXMgPDwgIiAgPHRy # ICN7YWxpZ259PiIKICAgICAgcmVzIDw8ICIgICAgPHRkICN7YWxpZ259IGNs # YXNzPSd0YWJibGFkJz4iCiAgICB3aGVuICJ0YWIiCiAgICAgIHJlcyA8PCAi # PHRhYmxlICN7QUN9IGJvcmRlcj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFj # aW5nPSczJyBjZWxscGFkZGluZz0nMCc+IgogICAgd2hlbiAicGFuZWwiCiAg # ICAgIGxldmVsCT0gKEBhcmdzWyJsZXZlbCJdIG9yICJub3JtYWwiKQogICAg # ICByZXMgPDwgIjx0YWJsZSAje0FDfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9 # JyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPiIKICAgICAgcmVz # IDw8ICIgIDx0ciAje2FsaWdufT4iCiAgICAgIHJlcyA8PCAiICAgIDx0ZCAj # e2FsaWdufSBjbGFzcz0ncGFuZWwxJz4iCQlpZiBsZXZlbCA9PSAibm9ybWFs # IgogICAgICByZXMgPDwgIiAgICA8dGQgI3thbGlnbn0gY2xhc3M9J3BhbmVs # MWhpZ2gnPiIJaWYgbGV2ZWwgPT0gImhpZ2giCiAgICAgIHJlcyA8PCAiICAg # IDx0ZCAje2FsaWdufSBjbGFzcz0ncGFuZWwxbG93Jz4iCWlmIGxldmVsID09 # ICJsb3ciCiAgICAgIHJlcyA8PCAiICAgICAgPHRhYmxlICN7QUN9IGJvcmRl # cj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGlu # Zz0nMCc+IgogICAgICByZXMgPDwgIiAgICAgICAgPHRyICN7YWxpZ259PiIK # ICAgICAgcmVzIDw8ICIgICAgICAgICAgPHRkICN7YWxpZ259IGNsYXNzPSdw # YW5lbDInPiIJCWlmIGxldmVsID09ICJub3JtYWwiCiAgICAgIHJlcyA8PCAi # ICAgICAgICAgIDx0ZCAje2FsaWdufSBjbGFzcz0ncGFuZWwyaGlnaCc+Iglp # ZiBsZXZlbCA9PSAiaGlnaCIKICAgICAgcmVzIDw8ICIgICAgICAgICAgPHRk # ICN7YWxpZ259IGNsYXNzPSdwYW5lbDJsb3cnPiIJaWYgbGV2ZWwgPT0gImxv # dyIKICAgICAgcmVzIDw8ICIgICAgICAgICAgICA8dGFibGUgI3tBQ30gYm9y # ZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JzMnIGNlbGxwYWRk # aW5nPScwJz4iCiAgICBlbHNlCiAgICAgIHB1dHMgIjwje0BzdWJ0eXBlfT4i # CiAgICAgIHJlcyA8PCAiJmx0OyN7QHN1YnR5cGV9Jmd0OyIKICAgIGVuZAoK # ICAgIGJlZgk9IG5pbAogICAgYWZ0CT0gbmlsCgogICAgY2FzZSBAc3VidHlw # ZQogICAgd2hlbiAidmVydGljYWwiLCAid2luZG93IiwgImhlbHB3aW5kb3ci # LCAidGFiIiwgInBhbmVsIgogICAgICByZXMgPDwgRm9ybWF0ICUgWyJBZnRQ # cmUiLCBAc3VidHlwZV0JaWYgJHJ3ZF9kZWJ1ZwogICAgICBpZiBAYXJncy5p # bmNsdWRlPygic3BhY2luZyIpCiAgICAgICAgcwk9ICI8dHI+PHRkPiZuYnNw # OzwvdGQ+PC90cj4iICogKEBhcmdzWyJzcGFjaW5nIl0udG9faSkKICAgICAg # ZWxzZQogICAgICAgIHMJPSAiIgogICAgICBlbmQKICAgICAgYmVmCT0gIiN7 # c308dHIgI3thbGlnbn0gI3t2YWxpZ259Pjx0ZCAje2FsaWdufT4iCiAgICAg # IGFmdAk9ICI8L3RkPjwvdHI+IgogICAgd2hlbiAiaG9yaXpvbnRhbCIsICJy # b3ciCiAgICAgIHJlcyA8PCBGb3JtYXQgJSBbIkFmdFByZSIsIEBzdWJ0eXBl # XQlpZiAkcndkX2RlYnVnCiAgICAgIGJlZgk9ICI8dGQgI3thbGlnbn0+Igog # ICAgICBhZnQJPSAiPC90ZD4iCiAgICBlbmQKCiAgICBiZWZvcmUucHVzaChi # ZWYpCiAgICBhZnRlci5wdXNoKGFmdCkKICBlbmQKCiAgZGVmIHBvc3RjaGls # ZHJlbihyZXMsIGJlZm9yZSwgYWZ0ZXIsIHZhcnNodG1sLCB2YXJzc3RyaW5n # LCBzd2l0Y2hlcywgaGVscCwgb25lb3Jtb3JlZmllbGRzLCBmaXJzdGFjdGlv # biwgdGFicywgdGFiLCBwZGEpCiAgICBjYXNlIEBzdWJ0eXBlCiAgICB3aGVu # ICJ2ZXJ0aWNhbCIsICJ3aW5kb3ciLCAiaGVscHdpbmRvdyIsICJ0YWIiLCAi # cGFuZWwiCiAgICAgIHJlcyA8PCBGb3JtYXQgJSBbIkJlZlBvc3QiLCBAc3Vi # dHlwZV0JaWYgJHJ3ZF9kZWJ1ZwogICAgICBpZiBAYXJncy5pbmNsdWRlPygi # c3BhY2luZyIpCiAgICAgICAgcmVzIDw8ICI8dHI+PHRkPiZuYnNwOzwvdGQ+ # PC90cj4iICogKEBhcmdzWyJzcGFjaW5nIl0udG9faSkKICAgICAgZW5kCiAg # ICB3aGVuICJob3Jpem9udGFsIiwgInJvdyIKICAgICAgcmVzIDw8IEZvcm1h # dCAlIFsiQmVmUG9zdCIsIEBzdWJ0eXBlXQlpZiAkcndkX2RlYnVnCiAgICBl # bmQKCiAgICByZXMgPDwgRm9ybWF0ICUgWyJQb3N0IiwgQHN1YnR5cGVdCQlp # ZiAkcndkX2RlYnVnCgogICAgY2FzZSBAc3VidHlwZQogICAgd2hlbiAiYXBw # bGljYXRpb24iCiAgICB3aGVuICJ3aW5kb3ciLCAiaGVscHdpbmRvdyIKICAg # ICAgYXJncwk9IEBhcmdzLmRlZXBfZHVwCgogICAgICBhcmdzWyJub2hlbHBi # dXR0b24iXQk9IChub3QgaGVscCkKCiAgICAgIHRlbXBsYXRlCT0gJHJ3ZF9o # dG1sXzIKICAgICAgdGVtcGxhdGUJPSAkcndkX2h0bWxfUERBXzIJaWYgcGRh # CgogICAgICByZXMgPDwgKHRlbXBsYXRlKHRlbXBsYXRlLCBhcmdzKSkKICAg # IHdoZW4gInAiCQl0aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4gInByZSIJ # CXRoZW4gcmVzIDw8ICI8L3ByZT4iCiAgICB3aGVuICJiaWciCQl0aGVuIHJl # cyA8PCAiPC9iaWc+PC9wPiIKICAgIHdoZW4gInNtYWxsIgl0aGVuIHJlcyA8 # PCAiPC9zbWFsbD48L3A+IgogICAgd2hlbiAibGlzdCIJCXRoZW4gcmVzIDw8 # ICI8L3VsPiIKICAgIHdoZW4gIml0ZW0iCQl0aGVuIHJlcyA8PCAiPC9saT4i # CiAgICB3aGVuICJlbXB0eSIJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3aGVu # ICJpbWFnZSIJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gInByb2dyZXNzYmFy # Igl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiYnIiCQl0aGVuIHJlcyA8PCAi # IgogICAgd2hlbiAiaHIiCQl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiYiIJ # CXRoZW4gcmVzIDw8ICI8L2I+IgogICAgd2hlbiAiaSIJCXRoZW4gcmVzIDw8 # ICI8L2k+IgogICAgd2hlbiAiYSIJCXRoZW4gcmVzIDw8ICI8L2E+IgogICAg # d2hlbiAidmVydGljYWwiCXRoZW4gcmVzIDw8ICI8L3RhYmxlPiIKICAgIHdo # ZW4gImhvcml6b250YWwiCXRoZW4gcmVzIDw8ICI8L3RyPjwvdGFibGU+Igog # ICAgd2hlbiAidGFibGUiCXRoZW4gcmVzIDw8ICI8L3RhYmxlPiIKICAgIHdo # ZW4gInJvdyIJCXRoZW4gcmVzIDw8ICI8L3RyPiIKICAgIHdoZW4gImhpZGRl # biIJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3aGVuICJ0ZXh0IgkJdGhlbiBy # ZXMgPDwgIjwvcD4iCiAgICB3aGVuICJ0ZXh0YXJlYSIJdGhlbiByZXMgPDwg # IjwvcD4iCiAgICB3aGVuICJwYXNzd29yZCIJdGhlbiByZXMgPDwgIjwvcD4i # CiAgICB3aGVuICJjaGVja2JveCIJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3 # aGVuICJyYWRpbyIJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3aGVuICJzZWxl # Y3QiCiAgICAgIHJlcyA8PCAiPC9zZWxlY3Q+IgogICAgICAkc2VsZWN0CT0g # bmlsCiAgICB3aGVuICJvcHRpb24iCXRoZW4gcmVzIDw8ICI8L29wdGlvbj4i # CiAgICB3aGVuICJidXR0b24iCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJi # YWNrIgkJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gImNhbmNlbCIJdGhlbiBy # ZXMgPDwgIiIKICAgIHdoZW4gImhlbHAiCQl0aGVuIHJlcyA8PCAiIgogICAg # d2hlbiAicXVpdCIJCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJjbG9zZSIJ # dGhlbiByZXMgPDwgIiIKICAgIHdoZW4gIm1haW4iCQl0aGVuIHJlcyA8PCAi # IgogICAgd2hlbiAicmVzZXQiCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJj # bG9zZXdpbmRvdyIJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gInRhYnMiCiAg # ICAgIHJlcyA8PCAiICAgIDwvdGQ+IgogICAgICByZXMgPDwgIiAgPC90cj4i # CiAgICAgIHJlcyA8PCAiPC90YWJsZT4iCiAgICB3aGVuICJ0YWIiCiAgICAg # IHJlcyA8PCAiPC90YWJsZT4iCiAgICB3aGVuICJwYW5lbCIKICAgICAgcmVz # IDw8ICIgICAgICAgICAgICA8L3RhYmxlPiIKICAgICAgcmVzIDw8ICIgICAg # ICAgICAgPC90ZD4iCiAgICAgIHJlcyA8PCAiICAgICAgICA8L3RyPiIKICAg # ICAgcmVzIDw8ICIgICAgICA8L3RhYmxlPiIKICAgICAgcmVzIDw8ICIgICAg # PC90ZD4iCiAgICAgIHJlcyA8PCAiICA8L3RyPiIKICAgICAgcmVzIDw8ICI8 # L3RhYmxlPiIKICAgIGVsc2UKICAgICAgcHV0cyAiPC8je0BzdWJ0eXBlfT4i # CiAgICAgIHJlcyA8PCAiJmx0Oy8je0BzdWJ0eXBlfSZndDsiCiAgICBlbmQK # CiAgICBiZWZvcmUucG9wCiAgICBhZnRlci5wb3AKCiAgICBhZnQJPSBhZnRl # clstMV0KICAgIHJlcyA8PCBGb3JtYXQgJSBbIkFmdGVyIiwgQHN1YnR5cGVd # CQlpZiAoJHJ3ZF9kZWJ1ZyBhbmQgbm90IGFmdC5uaWw/KQogICAgcmVzIDw8 # IGFmdAlpZiBub3QgYWZ0Lm5pbD8KICBlbmQKCiAgZGVmIHRlbXBsYXRlKGh0 # bWwsIHZhcnMpCiAgICByZXMJPSBbXQoKICAgIGEJPSB7fQoKICAgIHZhcnMu # ZWFjaCBkbyB8aywgdnwKICAgICAgYVtrLnVwY2FzZV0JPSB2CiAgICBlbmQK # CiAgICBsb2dvCT0gbmlsCiAgICBsb2dvCT0gRmlsZS5leHBhbmRfcGF0aCh2 # YXJzWyJsb2dvIl0sICRyd2RfZmlsZXMpCQlpZiB2YXJzLmluY2x1ZGU/KCJs # b2dvIikKICAgIGxvZ28JPSBuaWwJCQkJCQkJdW5sZXNzIGxvZ28ubmlsPyBv # ciBGaWxlLmZpbGU/KGxvZ28pCgogICAgd2F0ZXJtYXJrCT0gbmlsCiAgICB3 # YXRlcm1hcmsJPSBGaWxlLmV4cGFuZF9wYXRoKHZhcnNbIndhdGVybWFyayJd # LCAkcndkX2ZpbGVzKQlpZiB2YXJzLmluY2x1ZGU/KCJ3YXRlcm1hcmsiKQog # ICAgd2F0ZXJtYXJrCT0gbmlsCQkJCQkJCXVubGVzcyB3YXRlcm1hcmsubmls # PyBvciBGaWxlLmZpbGU/KHdhdGVybWFyaykKCiAgICBhWyJMT0dPIl0JCT0g # IiIJdW5sZXNzIG5vdCBsb2dvLm5pbD8KICAgIGFbIldBVEVSTUFSSyJdCT0g # IiIJdW5sZXNzIG5vdCB3YXRlcm1hcmsubmlsPwoKICAgIGFbIkhFTFBCVVRU # T04iXQk9IChub3QgKHZhcnNbIm5vaGVscGJ1dHRvbiJdKSkKICAgIGFbIkJB # Q0tCVVRUT05TIl0JPSAobm90ICh2YXJzWyJub2JhY2tidXR0b25zIl0pKQog # ICAgYVsiQkFDS0JVVFRPTlMiXQk9IChub3QgKHZhcnNbIm5vYmFja2J1dHRv # bnMiXSkpCiAgICBhWyJDTE9TRUJVVFRPTiJdCT0gKG5vdCAodmFyc1sibm9j # bG9zZWJ1dHRvbiJdKSkKCiAgICBpZiBhLmluY2x1ZGU/KCJXSURUSCIpCiAg # ICAgIGFbIldJRFRIMSJdCT0gIndpZHRoPScje2FbIldJRFRIIl19JyIKICAg # ICAgYVsiV0lEVEgyIl0JPSBhWyJXSURUSCJdCiAgICBlbHNlCiAgICAgIGFb # IldJRFRIMSJdCT0gIiAiCiAgICAgIGFbIldJRFRIMiJdCT0gIjEiCiAgICBl # bmQKCiAgICBodG1sLnNwbGl0KC9ccipcbi8pLmVhY2ggZG8gfGxpbmV8CiAg # ICAgIGlmIGxpbmUgPX4gLyVbQS1aMC05XSslLwogICAgICAgIGEuZWFjaCBk # byB8aywgdnwKICAgICAgICAgIHYJPSBmYWxzZQlpZiAodi5raW5kX29mPyhT # dHJpbmcpIGFuZCB2LmVtcHR5PykKCiAgICAgICAgICBpZiBsaW5lLmluY2x1 # ZGU/KCIlI3trfSUiKQogICAgICAgICAgICBsaW5lLmdzdWIhKCIlI3trfSUi # LCAiI3t2fSIpCWlmIHYKICAgICAgICAgIGVuZAogICAgICAgIGVuZAoKICAg # ICAgICBsaW5lCT0gIjwhLS0gI3tsaW5lLnNjYW4oLyVbQS1aMC05XSslLyku # am9pbigiICIpfSAtLT4iCWlmIGxpbmUgPX4gLyVbQS1aMC05XSslLwogICAg # ICBlbmQKCiAgICAgIHJlcyA8PCBsaW5lCiAgICBlbmQKCiAgICByZXMuam9p # bigiXG4iKQogIGVuZAplbmQKCmNsYXNzIFRleHQKICBkZWYgcHJlY2hpbGRy # ZW4ocmVzLCBiZWZvcmUsIGFmdGVyLCB2YXJzaHRtbCwgdmFyc3N0cmluZywg # c3dpdGNoZXMsIGhlbHAsIG9uZW9ybW9yZWZpZWxkcywgZmlyc3RhY3Rpb24s # IHRhYnMsIHRhYiwgcGRhKQogICAgaWYgbm90IEB0ZXh0LnNjYW4oL1teIFx0 # XHJcbl0vKS5lbXB0eT8KICAgICAgcmVzIDw8IEZvcm1hdCAlIFsiVGV4dCIs # ICIiXQlpZiAkcndkX2RlYnVnCiAgICAgIHJlcyA8PCAiI3tAdGV4dH0iCiAg # ICBlbmQKICBlbmQKZW5kCgpjbGFzcyBSV0RUcmVlIDwgWE1MCmVuZAoKY2xh # c3MgUldEV2luZG93CiAgQEB3aW5kb3dzCT0ge30JIyBLaW5kIG9mIGNhY2hp # bmcuCiAgQEBoZWxwd2luZG93cwk9IHt9CSMgS2luZCBvZiBjYWNoaW5nLgoK # ICBkZWYgaW5pdGlhbGl6ZShyd2QsIHdpbmRvdz1uaWwpCiAgICByd2QJPSBy # d2Quam9pbigiXG4iKQlpZiByd2Qua2luZF9vZj8oQXJyYXkpCgogICAgaWYg # QEB3aW5kb3dzW3J3ZF0ubmlsPwogICAgICBAQHdpbmRvd3NbcndkXQkJPSB7 # fQogICAgICBAQGhlbHB3aW5kb3dzW3J3ZF0JPSB7fQoKICAgICAgdHJlZQk9 # IFhNTC5uZXcocndkKQoKICAgICAgdHJlZS5wYXJzZShPcGVuVGFnLCAid2lu # ZG93IikgZG8gfHR5cGUsIG9ianwKICAgICAgICAkcndkX2FwcHZhcnMuZWFj # aHt8aywgdnwgb2JqLmFyZ3Nba10gPSB2fQogICAgICAgIEBAd2luZG93c1ty # d2RdW29iai5hcmdzWyJuYW1lIl1dCT0gb2JqLnRvX2gKICAgICAgZW5kCgog # ICAgICB0cmVlLnBhcnNlKE9wZW5UYWcsICJoZWxwd2luZG93IikgZG8gfHR5 # cGUsIG9ianwKICAgICAgICAkcndkX2FwcHZhcnMuZWFjaHt8aywgdnwgb2Jq # LmFyZ3Nba10gPSB2fQogICAgICAgIEBAaGVscHdpbmRvd3NbcndkXVtvYmou # YXJnc1sibmFtZSJdXQk9IG9iai50b19oCiAgICAgIGVuZAogICAgZW5kCgog # ICAgQHJ3ZAk9IChAQHdpbmRvd3NbcndkXVt3aW5kb3ddIG9yICIiKS5kdXAK # ICAgIEBoZWxwcndkCT0gKEBAaGVscHdpbmRvd3NbcndkXVt3aW5kb3ddIG9y # ICIiKS5kdXAKICBlbmQKCiAgZGVmIHJlbmRlcihwZGEsIGFjdGlvbj1uaWws # IHZhcnM9SGFzaC5uZXcsIHN3aXRjaGVzPUhhc2gubmV3LCBoZWxwPWZhbHNl # LCB0YWI9IiIpCiAgICB2YXJzaHRtbAkJPSBIYXNoLm5ldwogICAgdmFyc3N0 # cmluZwkJPSBIYXNoLm5ldwogICAgb25lb3Jtb3JlZmllbGRzCT0gIiIKICAg # IGZpcnN0YWN0aW9uCQk9ICIiCiAgICBodG1sCQk9IFtdCgogICAgdmFycwk9 # IHZhcnMuZGVlcF9kdXAKCiAgICB2YXJzLmVhY2ggZG8gfGtleSwgdmFsdWV8 # CiAgICAgIGlmIG5vdCBrZXkuZW1wdHk/CiAgICAgICAgaWYgdmFsdWUucmVz # cG9uZF90bz8gInRvX3MiCiAgICAgICAgICBAcndkLmdzdWIhKC8lJSN7a2V5 # fSUlLywgdmFsdWUudG9fcykKICAgICAgICAgIEByd2QuZ3N1YiEoLyUje2tl # eX0lLywgdmFsdWUudG9fcy50b19odG1sKQoKICAgICAgICAgIEBoZWxwcndk # LmdzdWIhKC8lJSN7a2V5fSUlLywgdmFsdWUudG9fcykKICAgICAgICAgIEBo # ZWxwcndkLmdzdWIhKC8lI3trZXl9JS8sIHZhbHVlLnRvX3MudG9faHRtbCkK # CiAgICAgICAgICB2YXJzaHRtbFtrZXldCQk9IHZhbHVlLnRvX3MudG9faHRt # bAogICAgICAgICAgdmFyc3N0cmluZ1trZXldCT0gdmFsdWUudG9fcwogICAg # ICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIHdpbmRvd29iamVjdAk9 # IFJXRFRyZWUubmV3KEByd2QpLmNoaWxkcmVuLmR1cC5kZWxldGVfaWZ7fG9i # anwgb2JqLnN1YnR5cGUgIT0gIndpbmRvdyJ9WzBdCiAgICBoZWxwb2JqZWN0 # CQk9IFJXRFRyZWUubmV3KEBoZWxwcndkKS5jaGlsZHJlbi5kdXAuZGVsZXRl # X2lme3xvYmp8IG9iai5zdWJ0eXBlICE9ICJoZWxwd2luZG93In1bMF0KCiAg # ICB0YWJzb2JqCT0gd2luZG93b2JqZWN0LmNoaWxkcmVuLmR1cC5kZWxldGVf # aWZ7fG9ianwgb2JqLnN1YnR5cGUgIT0gInRhYnMifVswXQoKICAgIGlmIG5v # dCB0YWJzb2JqLm5pbD8KICAgICAgdGFicwk9IHRhYnNvYmouY2hpbGRyZW4u # ZHVwLmRlbGV0ZV9pZnt8b2JqfCAobm90IG9iai5raW5kX29mPyhPcGVuVGFn # KSkgb3IgKG9iai5zdWJ0eXBlICE9ICJ0YWIiKX0KCiAgICAgIGlmIHRhYi5l # bXB0eT8KICAgICAgICB0YWIJCQk9IHRhYnNbMF0uYXJnc1sibmFtZSJdCiAg # ICAgIGVuZAoKICAgICAgdGFic29iai5jaGlsZHJlbi5kZWxldGVfaWZ7fG9i # anwgKG9iai5raW5kX29mPyhPcGVuVGFnKSkgYW5kIChvYmouc3VidHlwZSA9 # PSAidGFiIikgYW5kIG9iai5hcmdzWyJuYW1lIl0gIT0gdGFifQogICAgZW5k # CgogICAgaWYgaGVscAogICAgICBoZWxwb2JqZWN0LnBhcnNldHJlZSgicHJl # Y2hpbGRyZW4iLCAicG9zdGNoaWxkcmVuIiwgaHRtbCwgWyIiXSwgWyIiXSwg # dmFyc2h0bWwsIHZhcnNzdHJpbmcsIHN3aXRjaGVzLCBmYWxzZSwgb25lb3Jt # b3JlZmllbGRzLCBmaXJzdGFjdGlvbiwgdGFicywgdGFiLCBwZGEpCiAgICBl # bHNlCiAgICAgIHdpbmRvd29iamVjdC5wYXJzZXRyZWUoInByZWNoaWxkcmVu # IiwgInBvc3RjaGlsZHJlbiIsIGh0bWwsIFsiIl0sIFsiIl0sIHZhcnNodG1s # LCB2YXJzc3RyaW5nLCBzd2l0Y2hlcywgKG5vdCBAaGVscHJ3ZC5lbXB0eT8p # LCBvbmVvcm1vcmVmaWVsZHMsIGZpcnN0YWN0aW9uLCB0YWJzLCB0YWIsIHBk # YSkKICAgIGVuZAoKICAgIGh0bWwJPSBodG1sLmpvaW4oIiIpCSMgPz8/Cgog # ICAgaHRtbC5nc3ViISgvJSUqW1s6YWxudW06XV9cLV0rJSUqLywgIiIpCWlm # IG5vdCAkcndkX2RlYnVnCiAgICBodG1sLmdzdWIhKC8lJS8sICIlIikKICAg # IGh0bWwuZ3N1YiEoL1xuXG4qLywgIlxuIikKCiAgICBpZiBvbmVvcm1vcmVm # aWVsZHMuZW1wdHk/CiAgICAgIGZvY3VzCT0gIiIKICAgIGVsc2UKICAgICAg # Zm9jdXMJPSAiZG9jdW1lbnQuYm9keWZvcm0uZWxlbWVudHNbMF0uZm9jdXMo # KTsiCiAgICBlbmQKCiAgICBmaXJzdGFjdGlvbgk9IGFjdGlvbglpZiB3aW5k # b3dvYmplY3QuYXJncy5rZXlzLmluY2x1ZGU/KCJyZWZyZXNoIikJdW5sZXNz # IGFjdGlvbi5uaWw/CgogICAgaHRtbC5nc3ViISgvXCRSV0RfRklSU1RBQ1RJ # T05cJC8JLCBmaXJzdGFjdGlvbikKICAgIGh0bWwuZ3N1YiEoL1wkUldEX0ZP # Q1VTXCQvCQksIGZvY3VzKQoKICAgIGh0bWwKICBlbmQKZW5kCgpjbGFzcyBS # V0RNZXNzYWdlIDwgUldEV2luZG93CiAgZGVmIGluaXRpYWxpemUobXNnKQog # ICAgc3VwZXIoIjx3aW5kb3cgdGl0bGU9J1JXRCBNZXNzYWdlJyBub2JhY2ti # dXR0b25zIG5vY2xvc2VidXR0b24+PHA+I3ttc2d9PC9wPjxiYWNrLz48L3dp # bmRvdz4iKQogIGVuZAplbmQKCmNsYXNzIFJXREVycm9yIDwgUldEV2luZG93 # CiAgZGVmIGluaXRpYWxpemUobXNnKQogICAgc3VwZXIoIjx3aW5kb3cgdGl0 # bGU9J1JXRCBFcnJvcicgbm9iYWNrYnV0dG9ucyBub2Nsb3NlYnV0dG9uPjxw # PjxiPkVycm9yOjwvYj4gI3ttc2d9PC9wPjxiYWNrLz48L3dpbmRvdz4iKQog # IGVuZAplbmQKCmNsYXNzIFJXRFByb2dyZXNzQmFyIDwgUldEV2luZG93CiAg # ZGVmIGluaXRpYWxpemUocmVmcmVzaCwgcHJvZ3Jlc3MpCiAgICBzCT0gIiIK # ICAgIHMgPDwgIjx3aW5kb3cgdGl0bGU9J1JXRCBQcm9ncmVzcycgbm9iYWNr # YnV0dG9ucyBub2Nsb3NlYnV0dG9uIHJlZnJlc2g9JyN7cmVmcmVzaH0nPiIK # ICAgIGlmIHByb2dyZXNzLmxlbmd0aCA9PSAxCiAgICAgIHByb2dyZXNzLmVh # Y2ggZG8gfGNhcHRpb24sIHZhbHVlfAogICAgICAgIHMgPDwgIjxwPiN7Y2Fw # dGlvbn08L3A+PHByb2dyZXNzYmFyIHZhbHVlPScje3ZhbHVlfScvPjxwPiN7 # KDEwMCp2YWx1ZSkudG9faX0lJTwvcD4iCiAgICAgIGVuZAogICAgZWxzZQog # ICAgICBzIDw8ICI8dGFibGU+IgogICAgICBwcm9ncmVzcy5lYWNoIGRvIHxj # YXB0aW9uLCB2YWx1ZXwKICAgICAgICBzIDw8ICI8cm93PjxwIGFsaWduPSds # ZWZ0Jz4je2NhcHRpb259PC9wPjxwcm9ncmVzc2JhciB2YWx1ZT0nI3t2YWx1 # ZX0nLz48cCBhbGlnbj0ncmlnaHQnPiN7KDEwMCp2YWx1ZSkudG9faX0lJTwv # cD48L3Jvdz4iCiAgICAgIGVuZAogICAgICBzIDw8ICI8L3RhYmxlPiIKICAg # IGVuZAogICAgcyA8PCAiPGNhbmNlbC8+IgogICAgcyA8PCAiPC93aW5kb3c+ # IgogICAgc3VwZXIocykKICBlbmQKZW5kCgpjbGFzcyBSV0REb25lIDwgUldE # V2luZG93CiAgZGVmIGluaXRpYWxpemUoZXhpdGJyb3dzZXIpCiAgICBzdXBl # cigiPHdpbmRvdyB0aXRsZT0nUldEIE1lc3NhZ2UnIG5vYmFja2J1dHRvbnMg # bm9jbG9zZWJ1dHRvbj48cD5Eb25lLjwvcD48aT4oU29tZSBicm93c2VycyBk # b24ndCBjbG9zZSw8YnI+YmVjYXVzZSBvZiBzZWN1cml0eSByZWFzb25zLik8 # L2k+PGhvcml6b250YWw+PGNsb3NlLz4je2V4aXRicm93c2VyID8gIiIgOiAi # PGJ1dHRvbiBjYXB0aW9uPSdBZ2FpbicvPiJ9PC9ob3Jpem9udGFsPiN7ZXhp # dGJyb3dzZXIgPyAiPGNsb3Nld2luZG93Lz4iIDogIiJ9PC93aW5kb3c+IikK # ICBlbmQKZW5kCgpjbGFzcyBSV0RpYWxvZwogIGRlZiBpbml0aWFsaXplKHht # bCkKICAgIEByd2RfeG1sCQkJPSB4bWwKICAgIEByd2RfZXhpdGJyb3dzZXIJ # CT0gZmFsc2UKICAgIEByd2RfaGlzdG9yeQkJPSBbXQogICAgQHJ3ZF9pZ25v # cmVfdmFycwkJPSBbXQogICAgQHJ3ZF9jYWxsX2FmdGVyX2JhY2sJPSBbXQog # ICAgQHJ3ZF90aW1lCQkJPSBUaW1lLm5vdwoKICAgICRyd2RfYXBwdmFycwk9 # IHt9CWlmICRyd2RfYXBwdmFycy5uaWw/CiAgICBYTUwubmV3KHhtbCkucGFy # c2UoT3BlblRhZywgImFwcGxpY2F0aW9uIikgZG8gfHR5cGUsIG9ianwKICAg # ICAgb2JqLmFyZ3MuZGVlcF9kdXAuZWFjaCBkbyB8aywgdnwKICAgICAgICAk # cndkX2FwcHZhcnNba10JPSB2CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgog # IGRlZiBzZWxmLmZpbGUocndkZmlsZSwgKmFyZ3MpCiAgICBuZXcoRmlsZS5u # ZXcocndkZmlsZSkucmVhZGxpbmVzLCAqYXJncykKICBlbmQKCiAgZGVmIHNl # cnZlKHBvcnQ9bmlsLCBhdXRoPW5pbCwgcmVhbG09c2VsZi5jbGFzcy50b19z # KQogICAgZXhpdAlpZiAkcndkX2V4aXQKCiAgICByYWlzZSAiUldEIGlzIG5v # dCBpbml0aWFsaXplZC4iCWlmIEByd2RfeG1sLm5pbD8KCiAgICBsb3csIGhp # Z2gJPSBFTlZbIlJXRFBPUlRTIl0uc3BsaXQoL1teXGQrXS8pCiAgICBoaWdo # CT0gbG93CWlmIGhpZ2gubmlsPwogICAgbG93LCBoaWdoCT0gbG93LnRvX2ks # IGhpZ2gudG9faQoKICAgIGlvCQk9IG5pbAoKICAgIHBvcnQsIGlvCT0gVENQ # U2VydmVyLmZyZWVwb3J0KGxvdywgaGlnaCwgKG5vdCBhdXRoLm5pbD8pKQlp # ZiBwb3J0Lm5pbD8KICAgIHJhaXNlICJObyBmcmVlIFRDUCBwb3J0LiIJCQkJ # CQlpZiBwb3J0Lm5pbD8KCiAgICBwb3J0CT0gcG9ydC50b19pCgogICAgQHJ3 # ZF9zZXJ2ZXIJPSBSV0RTZXJ2ZXIubmV3KHNlbGYsIHBvcnQsIGlvLCBhdXRo # LCByZWFsbSkKCiAgICBzZWxmCiAgZW5kCgogIGRlZiByZW5kZXIocmVzLCBw # YXRoLCBwb3N0LCBkb3dubG9hZCwgZG93bmxvYWRmaWxlLCBwZGEsIHNlc3Np # b25pZCkKCQkjIEF2b2lkIGEgdGltZW91dC4KCiAgICBAcndkX3RpbWUJCT0g # VGltZS5ub3cKCgkJIyBJbml0aWFsaXplIHNvbWUgdmFycy4KCiAgICB2YXJz # CQk9IEhhc2gubmV3CWlmIHZhcnMubmlsPwogICAgQHJ3ZF9zd2l0Y2hlcwk9 # IEhhc2gubmV3CWlmIEByd2Rfc3dpdGNoZXMubmlsPwoKICAgIGRvbmUJCT0g # ZmFsc2UKICAgIGhlbHAJCT0gZmFsc2UKICAgIGJhY2sJCT0gZmFsc2UKICAg # IHRhYgkJCT0gIiIKICAgIEByd2RfbXNndHlwZQk9IG5pbAlpZiBAcndkX3By # b2dyZXNzX3RocmVhZC5uaWw/CiAgICBAcndkX2Rvd25sb2FkCT0gbmlsCiAg # ICBAcndkX2Rvd25sb2FkX2ZpbGUJPSBuaWwKCgkJIyBTd2l0Y2hlcyBhcmUg # dXNlZCBmb3IgY2hlY2tib3hlcy4KCiAgICBAcndkX3N3aXRjaGVzLmVhY2gg # ZG8gfGtleSwgdmFsdWV8CiAgICAgIHZhcnNba2V5XQk9ICJvZmYiCiAgICBl # bmQKCiAgICBAcndkX3N3aXRjaGVzCT0gSGFzaC5uZXcKCgkJIyBDb3B5IHRo # ZSB2YXJzIGZyb20gdGhlIHdpbmRvdyB0byB2YXJzLiB2YXJzIHdpbCBsYXRl # ciBvbiBiZSBjb3BpZWQgdG8gaW5zdGFuY2UgdmFyaWFibGVzLgoKICAgIHBv # c3Quc29ydC5lYWNoIGRvIHxrZXksIHZhbHVlfAogICAgICBwdXRzICJQb3N0 # OiAje2tleX0gLT4gI3t2YWx1ZS5mcm9tX2h0bWwuaW5zcGVjdH0iCWlmICRy # d2RfZGVidWcKCiAgICAgIHZhcnNba2V5XQk9IHZhbHVlLmZyb21faHRtbAog # ICAgZW5kCgoJCSMgU3RhY2sgaGFuZGxpbmcgZm9yIHJ3ZF9hY3Rpb24sIHJ3 # ZF93aW5kb3cgYW5kIHJ3ZF90YWIuCgogICAgQHJ3ZF9hY3Rpb24JCQk9IHZh # cnNbInJ3ZF9hY3Rpb24iXQkJaWYgdmFycy5pbmNsdWRlPygicndkX2FjdGlv # biIpCiAgICBAcndkX2FjdGlvbiwgQHJ3ZF9hcmdzCT0gQHJ3ZF9hY3Rpb24u # c3BsaXQoL1wvLywgMikJdW5sZXNzIEByd2RfYWN0aW9uLm5pbD8KICAgIEBy # d2RfYWN0aW9uLCByZXN0CQk9IEByd2RfYWN0aW9uLnNwbGl0KC9cPy8pCXVu # bGVzcyBAcndkX2FjdGlvbi5uaWw/CgogICAgQHJ3ZF9yZWZyZXNoX2FjdGlv # bgkJPSAoQHJ3ZF9hY3Rpb24gb3IgQHJ3ZF9yZWZyZXNoX2FjdGlvbiBvciAi # bWFpbiIpCgogICAgdW5sZXNzIHJlc3QubmlsPwogICAgICByZXN0LmVhY2gg # ZG8gfHN8CiAgICAgICAgaywgdgk9IHMuc3BsaXQoLz0vLCAyKQogICAgICAg # IHZhcnNba10JPSB2CiAgICAgIGVuZAogICAgZW5kCgogICAgaWYgQHJ3ZF9h # Y3Rpb24gPT0gInJ3ZF9jYW5jZWwiCiAgICAgIEByd2RfcHJvZ3Jlc3NfdGhy # ZWFkLmtpbGwJCXVubGVzcyBAcndkX3Byb2dyZXNzX3RocmVhZC5uaWw/CiAg # ICAgIEByd2RfcHJvZ3Jlc3NfdGhyZWFkCT0gbmlsCiAgICAgIEByd2RfYWN0 # aW9uCQk9ICJyd2RfYmFjayIKICAgIGVuZAoKICAgIEByd2RfaGlzdG9yeQk9 # IFtbIm1haW4iLCBbXSwgIm1haW4iLCAiIl1dCWlmIEByd2RfaGlzdG9yeS5l # bXB0eT8KCiAgICBpZiBAcndkX2FjdGlvbiA9fiAvXnJ3ZF90YWJfLwogICAg # ICBAcndkX3RhYgk9IEByd2RfYWN0aW9uLnN1YigvXnJ3ZF90YWJfLywgIiIp # CiAgICAgIEByd2RfaGlzdG9yeVstMV1bM10JPSBAcndkX3RhYgogICAgZWxz # ZQogICAgICBjYXNlIEByd2RfYWN0aW9uCiAgICAgIHdoZW4gInJ3ZF9iYWNr # IgogICAgICAgIEByd2RfaGlzdG9yeS5wb3AKICAgICAgICBAcndkX2FjdGlv # bgkJCT0gKEByd2RfaGlzdG9yeVstMV0gb3IgW25pbCwgbmlsLCBuaWxdKVsw # XQogICAgICAgIEByd2RfYXJncwkJCT0gKEByd2RfaGlzdG9yeVstMV0gb3Ig # W25pbCwgbmlsLCBuaWxdKVsxXQogICAgICAgIEByd2Rfd2luZG93CQkJPSAo # QHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0pWzJdCiAgICAg # ICAgQHJ3ZF90YWIJCQk9IChAcndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5p # bCwgbmlsXSlbM10KICAgICAgICBiYWNrCQkJCT0gdHJ1ZQogICAgICB3aGVu # ICJyd2RfaGVscCIKICAgICAgICBoZWxwCQkJCT0gdHJ1ZQogICAgICB3aGVu # ICJyd2RfbWFpbiIKICAgICAgICBAcndkX2FjdGlvbgkJCT0gbmlsCiAgICAg # ICAgQHJ3ZF93aW5kb3cJCQk9IG5pbAogICAgICAgIEByd2RfdGFiCQkJPSBu # aWwKICAgICAgICBAcndkX2hpc3RvcnkJCQk9IFtdCiAgICAgIHdoZW4gInJ3 # ZF9xdWl0IgogICAgICAgIGRvbmUJCQkJPSB0cnVlCiAgICAgIGVsc2UKICAg # ICAgZW5kCgoJCSMgSGlzdG9yeSBzdHVmZgoKICAgICAgQHJ3ZF9oaXN0b3J5 # CT0gQHJ3ZF9oaXN0b3J5Wy0xMDAuLi0xXQlpZiBAcndkX2hpc3RvcnkubGVu # Z3RoID49IDEwMAogICAgICBAcndkX2FjdGlvbgk9ICJtYWluIgkJCWlmIEBy # d2RfYWN0aW9uLm5pbD8KICAgICAgQHJ3ZF9hY3Rpb24JPSAibWFpbiIJCQlp # ZiBAcndkX2FjdGlvbi5lbXB0eT8KICAgICAgQHJ3ZF93aW5kb3cJPSAibWFp # biIJCQlpZiBAcndkX3dpbmRvdy5uaWw/CiAgICAgIEByd2Rfd2luZG93CT0g # Im1haW4iCQkJaWYgQHJ3ZF93aW5kb3cuZW1wdHk/CiAgICAgIEByd2RfdGFi # CQk9ICIiCQkJCWlmIEByd2RfdGFiLm5pbD8KICAgICAgQHJ3ZF9hcmdzCQk9 # IFtdCQkJCWlmIEByd2RfYXJncy5uaWw/CiAgICAgIEByd2RfYXJncwkJPSBb # XQkJCQlpZiBAcndkX2FjdGlvbiA9PSAibWFpbiIKCiAgICAgIHZhcnNbInJ3 # ZF9hY3Rpb24iXQk9IEByd2RfYWN0aW9uCiAgICAgIHZhcnNbInJ3ZF93aW5k # b3ciXQk9IEByd2Rfd2luZG93CiAgICAgIHZhcnNbInJ3ZF90YWIiXQkJPSBA # cndkX3RhYgoKCQkjIENvcHkgdmFycyBmcm9tIHdpbmRvdyB0byBpbnN0YW5j # ZS4KCiAgICAgIHZhcnMuZWFjaCBkbyB8aywgdnwKICAgICAgICBpbnN0YW5j # ZV9ldmFsICJAI3trfQk9IHZhcnNbJyN7a30nXSIJCWlmICgobm90IGsuZW1w # dHk/KSBhbmQgay5zY2FuKC9ecndkXy8pLmVtcHR5PyBhbmQgbm90IEByd2Rf # aWdub3JlX3ZhcnMuaW5jbHVkZT8oIkAje2t9IikpCiAgICAgIGVuZAoKCQkj # IENhbGxiYWNrLgoKICAgICAgaWYgKG5vdCBiYWNrKSBvciBAcndkX2NhbGxf # YWZ0ZXJfYmFjay5pbmNsdWRlPyhAcndkX2FjdGlvbikKICAgICAgICB1bmxl # c3MgQHJ3ZF9hY3Rpb24gPX4gL15yd2RfLwogICAgICAgICAgcHV0cyAiTWV0 # aG9kOiAje0Byd2RfYWN0aW9ufSgje0Byd2RfYXJncy5qb2luKCIsICIpfSki # CWlmICRyd2RfZGVidWcKICAgICAgICAgIGlmIG1ldGhvZHMuaW5jbHVkZT8o # QHJ3ZF9hY3Rpb24pCiAgICAgICAgICAgIG1ldGhvZChAcndkX2FjdGlvbiku # Y2FsbCgqQHJ3ZF9hcmdzKQogICAgICAgICAgZWxzZQogICAgICAgICAgICBw # dXRzICJNZXRob2QgJyVzJyBpcyBub3QgZGVmaW5lZC4iICUgQHJ3ZF9hY3Rp # b24KICAgICAgICAgIGVuZAogICAgICAgIGVuZAoKCQkjIEhpc3Rvcnkgc3R1 # ZmYKCiAgICAgICAgQHJ3ZF9oaXN0b3J5CT0gW1sibWFpbiIsIFtdLCAibWFp # biIsICIiXV0JaWYgQHJ3ZF9hY3Rpb24gPT0gIm1haW4iCiAgICAgICAgQHJ3 # ZF9oaXN0b3J5CT0gW1sibWFpbiIsIFtdLCAibWFpbiIsICIiXV0JaWYgQHJ3 # ZF9oaXN0b3J5LmVtcHR5PwoKICAgICAgICBhCQk9IFtAcndkX2FjdGlvbiwg # QHJ3ZF9hcmdzLCBAcndkX3dpbmRvdywgQHJ3ZF90YWJdCgogICAgICAgIEBy # d2RfaGlzdG9yeS5wdXNoIGEJCQkJaWYgKEByd2RfaGlzdG9yeVstMV0gIT0g # YSBvciBub3QgQHJ3ZF9tc2d0eXBlLm5pbD8pCgogICAgICAgIGlmIEByd2Rf # d2luZG93ID09ICJyd2RfYmFjayIKICAgICAgICAgIEByd2RfaGlzdG9yeS5w # b3AKICAgICAgICAgIEByd2RfaGlzdG9yeS5wb3AKICAgICAgICAgIEByd2Rf # YWN0aW9uCQkJPSAoQHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5p # bF0pWzBdCiAgICAgICAgICBAcndkX2FyZ3MJCQk9IChAcndkX2hpc3Rvcnlb # LTFdIG9yIFtuaWwsIG5pbCwgbmlsXSlbMV0KICAgICAgICAgIEByd2Rfd2lu # ZG93CQkJPSAoQHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0p # WzJdCiAgICAgICAgICBAcndkX3RhYgkJCT0gKEByd2RfaGlzdG9yeVstMV0g # b3IgW25pbCwgbmlsLCBuaWxdKVszXQogICAgICAgIGVuZAogICAgICBlbmQK # ICAgIGVuZAoKCQkjIENvcHkgdmFycyBmcm9tIGluc3RhbmNlIHRvIHdpbmRv # dy4KCiAgICBpbnN0YW5jZV92YXJpYWJsZXMuZWFjaCBkbyB8a3wKICAgICAg # ay5zdWIhKC9eQC8sICIiKQogICAgICBpbnN0YW5jZV9ldmFsICJ2YXJzWycj # e2t9J10gPSBAI3trfS50b19zIglpZiAoay5zY2FuKC9ecndkXy8pLmVtcHR5 # PyBhbmQgbm90IEByd2RfaWdub3JlX3ZhcnMuaW5jbHVkZT8oIkAje2t9Iikp # CiAgICBlbmQKCgkJIyBqdXN0IGlnbm9yZS4KCiAgICB2YXJzLnNvcnQuZWFj # aCBkbyB8a2V5LCB2YWx1ZXwKICAgICAgcHV0cyAiUHJlOiAje2tleX0gLT4g # I3t2YWx1ZS5pbnNwZWN0fSIJaWYgJHJ3ZF9kZWJ1ZwogICAgZW5kCgoKCQkj # IEFuc3dlciB0byBicm93c2VyLgoKICAgIGlmIGRvbmUKICAgICAgcmVzIDw8 # IFJXRERvbmUubmV3KEByd2RfZXhpdGJyb3dzZXIpLnJlbmRlcihwZGEpCiAg # ICBlbHNlCiAgICAgIGlmIG5vdCBAcndkX2Rvd25sb2FkLm5pbD8KICAgICAg # ICBwdXRzICJEb3dubG9hZDogI3tAcndkX3dpbmRvd30iCQlpZiAkcndkX2Rl # YnVnCgogICAgICAgIGRvd25sb2FkCTw8IEByd2RfZG93bmxvYWQKICAgICAg # ICBkb3dubG9hZGZpbGUJPDwgQHJ3ZF9kb3dubG9hZF9maWxlCiAgICAgIGVs # c2UKICAgICAgICBpZiBub3QgQHJ3ZF9wcm9ncmVzc190aHJlYWQubmlsPwog # ICAgICAgICAgcmVzIDw8IFJXRFByb2dyZXNzQmFyLm5ldyhAcndkX3Byb2dy # ZXNzX3JlZnJlc2gsIEByd2RfcHJvZ3Jlc3NfcHJvZ3Jlc3MpLnJlbmRlcihw # ZGEsIEByd2RfcmVmcmVzaF9hY3Rpb24pCiAgICAgICAgZWxzZQogICAgICAg # ICAgaWYgbm90IEByd2RfbXNndHlwZS5uaWw/CiAgICAgICAgICAgIHJlcyA8 # PCBSV0RNZXNzYWdlLm5ldyhAcndkX21zZykucmVuZGVyKHBkYSkJaWYgQHJ3 # ZF9tc2d0eXBlID09ICJtZXNzYWdlIgogICAgICAgICAgICByZXMgPDwgUldE # RXJyb3IubmV3KEByd2RfbXNnKS5yZW5kZXIocGRhKQlpZiBAcndkX21zZ3R5 # cGUgPT0gImVycm9yIgogICAgICAgICAgICByZXMgPDwgQHJ3ZF9tc2cJCQkJ # aWYgQHJ3ZF9tc2d0eXBlID09ICJ0ZXh0IgogICAgICAgICAgZWxzZQogICAg # ICAgICAgICBwdXRzICJXaW5kb3c6ICN7QHJ3ZF93aW5kb3d9IgkJaWYgJHJ3 # ZF9kZWJ1ZwogICAgICAgICAgICBwdXRzICJUYWI6ICN7QHJ3ZF90YWJ9IgkJ # aWYgJHJ3ZF9kZWJ1ZwoKICAgICAgICAgICAgcmVzIDw8IFJXRFdpbmRvdy5u # ZXcoQHJ3ZF94bWwsIEByd2Rfd2luZG93KS5yZW5kZXIocGRhLCBAcndkX3Jl # ZnJlc2hfYWN0aW9uLCB2YXJzLCBAcndkX3N3aXRjaGVzLCBoZWxwLCBAcndk # X3RhYikKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAg # IGVuZAoKICAgIHJldHVybiBkb25lCiAgZW5kCgogIGRlZiBzYW1ld2luZG93 # PwogICAgQHJ3ZF9oaXN0b3J5Wy0xXVsyXSA9PSBAcndkX3dpbmRvdwogIGVu # ZAoKICBkZWYgbWVzc2FnZShtc2csICZibG9jaykKICAgIEByd2RfbXNnCQk9 # IG1zZwogICAgQHJ3ZF9tc2d0eXBlCT0gIm1lc3NhZ2UiCiAgZW5kCgogIGRl # ZiBlcnJvcihtc2csICZibG9jaykKICAgIEByd2RfbXNnCQk9IG1zZwogICAg # QHJ3ZF9tc2d0eXBlCT0gImVycm9yIgogIGVuZAoKICBkZWYgdGV4dChtc2cp # CiAgICBAcndkX21zZwkJPSAiPGh0bWw+PGJvZHk+PHByZT4je21zZ308L3By # ZT48L2JvZHk+PC9odG1sPiIKICAgIEByd2RfbXNndHlwZQk9ICJ0ZXh0Igog # IGVuZAoKICBkZWYgcHJvZ3Jlc3NiYXIocmVmcmVzaCwgKnByb2dyZXNzKQog # ICAgQHJ3ZF9wcm9ncmVzc19yZWZyZXNoCT0gKHJlZnJlc2ggb3IgMSkKICAg # IEByd2RfcHJvZ3Jlc3NfcHJvZ3Jlc3MJPSBbXQoKICAgIHdoaWxlIG5vdCBw # cm9ncmVzcy5lbXB0eT8KICAgICAgcwk9IChwcm9ncmVzcy5zaGlmdCBvciAi # IikKICAgICAgaWYgcy5raW5kX29mPyhBcnJheSkKICAgICAgICBjYXB0aW9u # LCB2YWx1ZQk9IHMKICAgICAgICB2YWx1ZQk9ICh2YWx1ZSBvciAwLjApLnRv # X2YKICAgICAgZWxzZQogICAgICAgIGNhcHRpb24JPSBzCiAgICAgICAgdmFs # dWUJPSAocHJvZ3Jlc3Muc2hpZnQgb3IgMC4wKS50b19mCiAgICAgIGVuZAoK # ICAgICAgQHJ3ZF9wcm9ncmVzc19wcm9ncmVzcyA8PCBbY2FwdGlvbiwgdmFs # dWVdCiAgICBlbmQKCiAgICBpZiBAcndkX3Byb2dyZXNzX3RocmVhZC5uaWw/ # CiAgICAgIEByd2RfcHJvZ3Jlc3NfcHJvZ3Jlc3MuZWFjaCBkbyB8YXwKICAg # ICAgICBhWzFdCT0gMC4wCiAgICAgIGVuZAoKICAgICAgQHJ3ZF9wcm9ncmVz # c190aHJlYWQgPQogICAgICBUaHJlYWQubmV3IGRvCiAgICAgICAgeWllbGQK # ICAgICAgZW5kCiAgICAgIFRocmVhZC5wYXNzCiAgICBlbmQKCiAgICBAcndk # X3Byb2dyZXNzX3RocmVhZAk9IG5pbAl1bmxlc3MgQHJ3ZF9wcm9ncmVzc190 # aHJlYWQuYWxpdmU/CiAgZW5kCgogIGRlZiBkb3dubG9hZChkYXRhLCBmaWxl # bmFtZT0iIikKICAgIEByd2RfZG93bmxvYWQJPSBkYXRhCiAgICBAcndkX2Rv # d25sb2FkX2ZpbGUJPSBmaWxlbmFtZQogIGVuZAoKICBkZWYgZXhpdGJyb3dz # ZXIKICAgIEByd2RfZXhpdGJyb3dzZXIJPSB0cnVlCiAgZW5kCgogIGRlZiB0 # aW1lb3V0KHRpbWVvdXQsIGludGVydmFsPTEpCiAgICBAcndkX3RpbWVvdXQJ # PSB0aW1lb3V0CgogICAgdW5sZXNzIEByd2RfdGltZW91dF90aHJlYWQKICAg # ICAgQHJ3ZF90aW1lb3V0X3RocmVhZCA9CiAgICAgIFRocmVhZC5uZXcgZG8K # ICAgICAgICBsb29wIGRvCiAgICAgICAgICBpZiBUaW1lLm5vdyAtIEByd2Rf # dGltZSA+IEByd2RfdGltZW91dAogICAgICAgICAgICAkc3RkZXJyLnB1dHMg # IkV4aXRpbmcgZHVlIHRvIHRpbWVvdXQgKCN7QHJ3ZF90aW1lb3V0fSBzZWNv # bmRzKS4iCiAgICAgICAgICAgIGV4aXQgMQogICAgICAgICAgZW5kCiAgICAg # ICAgICBzbGVlcCBpbnRlcnZhbAogICAgICAgIGVuZAogICAgICBlbmQKICAg # IGVuZAogIGVuZAplbmQKCmNsYXNzIFJXRExvZ2luIDwgUldEaWFsb2cKICBk # ZWYgaW5pdGlhbGl6ZShyZWFsbSkKICAgIHN1cGVyKCI8d2luZG93IG5hbWU9 # J21haW4nIHRpdGxlPSdSV0QgTG9naW4gZm9yICN7cmVhbG19JyBub2JhY2ti # dXR0b25zIG5vY2xvc2VidXR0b24+PHRhYmxlPjxyb3c+PHAgYWxpZ249J3Jp # Z2h0Jz5Vc2VybmFtZTo8L3A+PHRleHQgbmFtZT0ncndkX2EnLz48L3Jvdz48 # cm93PjxwIGFsaWduPSdyaWdodCc+UGFzc3dvcmQ6PC9wPjxwYXNzd29yZCBu # YW1lPSdyd2RfYicvPjwvcm93PjwvdGFibGU+PGJ1dHRvbiBjYXB0aW9uPSdM # b2dpbicvPjwvd2luZG93PiIpCiAgZW5kCmVuZAoKY2xhc3MgUldEVGltZU91 # dCA8IFJXRGlhbG9nCiAgZGVmIGluaXRpYWxpemUKICAgIHN1cGVyKCI8d2lu # ZG93IG5hbWU9J21haW4nIHRpdGxlPSdSV0QgRXJyb3InIG5vYmFja2J1dHRv # bnMgbm9jbG9zZWJ1dHRvbj48cD48Yj5FcnJvcjo8L2I+IFNlc3Npb24gaGFz # IGV4cGlyZWQuPC9wPjxidXR0b24gY2FwdGlvbj0nTmV3IHNlc3Npb24nLz48 # L3dpbmRvdz4iKQogIGVuZAplbmQKCmNsYXNzIFNlc3Npb25DbGVhbnVwCiAg # ZGVmIGluaXRpYWxpemUoc2Vzc2lvbnMsIGludGVydmFsLCB0aW1lb3V0KQog # ICAgZXZlcnkoaW50ZXJ2YWwpIGRvCiAgICAgIHNlc3Npb25zLmRlbGV0ZV9p # ZiBkbyB8aWQsIHNlc3Npb258CiAgICAgICAgdGltZQk9IFRpbWUubm93LnRv # X2kgLSBzZXNzaW9uLmxhc3RhY2Nlc3MudG9faQoKICAgICAgICBwdXRzICJT # ZXNzaW9uICVzIGRlbGV0ZWQiICUgaWQJaWYgdGltZSA+IHRpbWVvdXQKCiAg # ICAgICAgdGltZSA+IHRpbWVvdXQKICAgICAgZW5kCiAgICBlbmQKICBlbmQK # ZW5kCgpjbGFzcyBTZXNzaW9ucwogIGRlZiBpbml0aWFsaXplKHJhY2ssIGNs # ZWFudXApCiAgICBAcmFjawk9IHJhY2sudG9fcwogICAgQGNsZWFudXAJPSBT # ZXNzaW9uQ2xlYW51cC5uZXcoc2VsZiwgMzYwMCwgMjQqMzYwMCkJaWYgY2xl # YW51cAogICAgQHNlc3Npb25zCT0ge30KICBlbmQKCiAgZGVmIFtdKHNlc3Np # b25pZCkKICAgIEBzZXNzaW9uc1tzZXNzaW9uaWRdCiAgZW5kCgogIGRlZiBb # XT0oc2Vzc2lvbmlkLCB2YWx1ZSkKICAgIEBzZXNzaW9uc1tzZXNzaW9uaWRd # CT0gdmFsdWUKICBlbmQKCiAgZGVmIGRlbGV0ZShzZXNzaW9uaWQpCiAgICBA # c2Vzc2lvbnMuZGVsZXRlKHNlc3Npb25pZCkKICBlbmQKCiAgZGVmIGRlbGV0 # ZV9pZigmYmxvY2spCiAgICBAc2Vzc2lvbnMuZGVsZXRlX2lme3xrLCB2fCBi # bG9jay5jYWxsKGssIHYpfQogIGVuZAoKICBkZWYgaW5jbHVkZT8oc2Vzc2lv # bmlkKQogICAgQHNlc3Npb25zLmluY2x1ZGU/KHNlc3Npb25pZCkKICBlbmQK # ZW5kCgpjbGFzcyBSV0RTZXNzaW9uIDwgSGFzaAogIGF0dHJfcmVhZGVyIDpz # ZXNzaW9uaWQKICBhdHRyX3JlYWRlciA6bGFzdGFjY2VzcwogIGF0dHJfcmVh # ZGVyIDphdXRoZW50aWNhdGVkCiAgYXR0cl93cml0ZXIgOmF1dGhlbnRpY2F0 # ZWQKCiAgZGVmIGluaXRpYWxpemUoc2Vzc2lvbmlkPW5pbCkKICAgIEBzZXNz # aW9uaWQJCT0gc2Vzc2lvbmlkCiAgICBAbGFzdGFjY2VzcwkJPSBUaW1lLm5v # dwogICAgQGF1dGhlbnRpY2F0ZWQJPSBmYWxzZQogIGVuZAoKICBkZWYgdG91 # Y2gKICAgIEBsYXN0YWNjZXNzCT0gVGltZS5ub3cKICBlbmQKCiAgZGVmIHJl # bmRlcihyZXMsIHBhdGgsIHBvc3QsIGRvd25sb2FkLCBkb3dubG9hZGZpbGUs # IHBkYSkKICAgIGRvbmUJPSBzZWxmWyJvYmplY3QiXS5yZW5kZXIocmVzLCBw # YXRoLCBwb3N0LCBkb3dubG9hZCwgZG93bmxvYWRmaWxlLCBwZGEsIEBzZXNz # aW9uaWQpCgogICAgcmVzLmdzdWIhKC9cJFJXRF9TRVNTSU9OXCQvLCBkb25l # ID8gIiIgOiAiI3tAc2Vzc2lvbmlkfSIpCgogICAgcmV0dXJuIGRvbmUKICBl # bmQKZW5kCgpjbGFzcyBSV0RTZXJ2ZXIKICBkZWYgaW5pdGlhbGl6ZShvYmos # IHBvcnQsIGlvLCBhdXRoLCByZWFsbSkKICAgIEBvYmplY3QJCT0gb2JqCiAg # ICBAbG9jYWxicm93c2luZwk9IGZhbHNlCiAgICBAYnJvd3NlcnN0YXJ0ZWQJ # PSBmYWxzZQogICAgQHNlc3Npb25zCQk9IFNlc3Npb25zLm5ldyhvYmouY2xh # c3MsIChub3QgYXV0aC5uaWw/KSkKCiAgICBpZiBhdXRoLm5pbD8KICAgICAg # QGxvY2FsYnJvd3NpbmcJPSB0cnVlCgogICAgICBpZiBFTlYuaW5jbHVkZT8o # IlJXREJST1dTRVIiKSBhbmQgbm90IEVOVlsiUldEQlJPV1NFUiJdLm5pbD8g # YW5kIG5vdCBFTlZbIlJXREJST1dTRVIiXS5lbXB0eT8KICAgICAgICBAYnJv # d3NlcnN0YXJ0ZWQJPSB0cnVlCiAgICAgICAgQG9iamVjdC5leGl0YnJvd3Nl # cgoKCSMgU3RhcnQgYnJvd3Nlci4KCiAgICAgICAgQGJyb3dzZXJ0aHJlYWQJ # PQogICAgICAgIFRocmVhZC5uZXcgZG8KICAgICAgICAgIHB1dHMgIlN0YXJ0 # aW5nIHRoZSBicm93c2VyLi4uIgoKICAgICAgICAgICNpZiBFTlZbIlJXREJS # T1dTRVIiXS5kb3duY2FzZSA9fiAvaWV4cGxvcmUvCSMgPz8/CiAgICAgICAg # ICAgICNAaWUJPSBJRS5uZXcoImh0dHA6Ly9sb2NhbGhvc3Q6I3twb3J0fS8i # KQogICAgICAgICAgI2Vsc2UKICAgICAgICAgICAgYnJvd3Nlcgk9IEVOVlsi # UldEQlJPV1NFUiJdLmR1cAogICAgICAgICAgICB1cmwJCT0gImh0dHA6Ly9s # b2NhbGhvc3Q6JXMvIiAlIFtwb3J0XQoKICAgICAgICAgICAgcmUJCT0gL1sk # JV0xXGIvCiAgICAgICAgICAgIGNvbW1hbmQJPSAiJXMgXCIlc1wiIiAlIFti # cm93c2VyLCB1cmxdCiAgICAgICAgICAgIGNvbW1hbmQJPSBicm93c2VyLmdz # dWIocmUsIHVybCkJaWYgYnJvd3NlciA9fiByZQoKICAgICAgICAgICAgY29t # bWFuZC5nc3ViISgvJXBvcnQlLywgcG9ydC50b19zKQoKICAgICAgICAgICAg # c3lzdGVtKGNvbW1hbmQpIG9yICRzdGRlcnIucHV0cyAiU3RhcnRpbmcgb2Yg # dGhlIGJyb3dzZXIgZmFpbGVkLCBvciB0aGUgYnJvd3NlciB0ZXJtaW5hdGVk # IGFibm9ybWFsbHkuXG5Db21tYW5kID0+ICN7Y29tbWFuZH0iCiAgICAgICAg # ICAjZW5kCgogICAgICAgICAgcHV0cyAiVGhlIGJyb3dzZXIgaGFzIHRlcm1p # bmF0ZWQuIgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKCSMgU3Rh # cnQgc2VydmVyLgoKICAgIHBvcnRpbwkJPSBwb3J0CiAgICBwb3J0aW8JCT0g # W3BvcnQsIGlvXQl1bmxlc3MgaW8ubmlsPwogICAgdGhyZWFkbGltaXRlcgk9 # IFRocmVhZExpbWl0ZXIubmV3KDEpCgogICAgSFRUUFNlcnZlci5zZXJ2ZShw # b3J0aW8sIChub3QgYXV0aC5uaWw/KSkgZG8gfHJlcSwgcmVzcHwKICAgICAg # dGhyZWFkbGltaXRlci53YWl0IGRvCiAgICAgICAgdmFycwk9IHt9CiAgICAg # ICAgcmVxLnZhcnMuZWFjaCBkbyB8aywgdnwKICAgICAgICAgIHZhcnNba10J # PSB2LmpvaW4oIlx0IikKICAgICAgICBlbmQKICAgICAgICBwYWQJPSAocmVx # LnJlcXVlc3QucGF0aCBvciAiLyIpCgogICAgICAgIGlmIGF1dGgua2luZF9v # Zj8gU3RyaW5nCiAgICAgICAgICBmaWxlCT0gIiN7aG9tZX0vI3thdXRofSIK # ICAgICAgICAgIGF1dGhzCT0ge30KICAgICAgICAgIGF1dGhzCT0gSGFzaC5m # aWxlKGZpbGUpCWlmIEZpbGUuZmlsZT8oZmlsZSkKICAgICAgICBlbHNlCiAg # ICAgICAgICBhdXRocwk9IGF1dGgKICAgICAgICBlbmQKCiAgICAgICAgI29s # ZHNlc3Npb25pZAk9IHZhcnNbInJ3ZF9zZXNzaW9uIl0KICAgICAgICBvbGRz # ZXNzaW9uaWQJPSByZXEuY29va2llc1sic2Vzc2lvbmlkIl0KCgkJIyBSZXRy # aWV2ZSBzZXNzaW9uLgoKICAgICAgICBzZXNzaW9uCT0gQHNlc3Npb25zW29s # ZHNlc3Npb25pZF0KCgkJIyBFdmVudHVhbGx5IGNyZWF0ZSBuZXcgc2Vzc2lv # bi4KCiAgICAgICAgaWYgc2Vzc2lvbi5uaWw/CiAgICAgICAgICBzZXNzaW9u # aWQJPSBNRDUubmV3KHJlcS5wZWVyYWRkclszXS50b19zICsgQG9iamVjdC5p # bnNwZWN0LnRvX3MgKyAoIiUxLjZmIiAlIFRpbWUubm93LnRvX2YpKS50b19z # CXdoaWxlIChzZXNzaW9uaWQgPT0gbmlsIG9yIEBzZXNzaW9ucy5pbmNsdWRl # PyhzZXNzaW9uaWQpKQogICAgICAgICAgc2Vzc2lvbgkJPSBSV0RTZXNzaW9u # Lm5ldyhzZXNzaW9uaWQpCgogICAgICAgICAgaWYgYXV0aC5uaWw/CiAgICAg # ICAgICAgIHNlc3Npb25bIm9iamVjdCJdCQk9IEBvYmplY3QKICAgICAgICAg # IGVsc2UKICAgICAgICAgICAgc2Vzc2lvblsib2JqZWN0Il0JCT0gQG9iamVj # dC5jbG9uZQogICAgICAgICAgZW5kCgogICAgICAgICAgaWYgb2xkc2Vzc2lv # bmlkLm5pbD8gb3Igb2xkc2Vzc2lvbmlkLmVtcHR5PwogICAgICAgICAgICBp # ZiBub3QgYXV0aC5uaWw/IGFuZCBub3QgYXV0aC5lbXB0eT8gYW5kIG5vdCBz # ZXNzaW9uLmF1dGhlbnRpY2F0ZWQgYW5kIHBhZCAhfiAvXlwvcndkXy8KCgkJ # IyBDaGVjayBhdXRoZW50aWNhdGlvbgoKICAgICAgICAgICAgICB1cwk9IHZh # cnNbInJ3ZF9hIl0KICAgICAgICAgICAgICBwYQk9IHZhcnNbInJ3ZF9iIl0K # CiAgICAgICAgICAgICAgaWYgdXMubmlsPyBvciBwYS5uaWw/IG9yIGF1dGhz # W3VzXSAhPSBwYQogICAgICAgICAgICAgICAgc2Vzc2lvbgkJCQk9IFJXRFNl # c3Npb24ubmV3CiAgICAgICAgICAgICAgICBzZXNzaW9uWyJvYmplY3QiXQkJ # PSBSV0RMb2dpbi5uZXcocmVhbG0pCiAgICAgICAgICAgICAgICBwYWQJCQkJ # PSAiLyIKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBzZXNz # aW9uLmF1dGhlbnRpY2F0ZWQJCT0gdHJ1ZQogICAgICAgICAgICAgICAgQHNl # c3Npb25zW3Nlc3Npb24uc2Vzc2lvbmlkXQk9IHNlc3Npb24KICAgICAgICAg # ICAgICBlbmQKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHNlc3Np # b24uYXV0aGVudGljYXRlZAkJPSB0cnVlCiAgICAgICAgICAgICAgQHNlc3Np # b25zW3Nlc3Npb24uc2Vzc2lvbmlkXQk9IHNlc3Npb24KICAgICAgICAgICAg # ZW5kCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHNlc3Npb24JCT0gUldE # U2Vzc2lvbi5uZXcKICAgICAgICAgICAgc2Vzc2lvblsib2JqZWN0Il0JPSBS # V0RUaW1lT3V0Lm5ldwogICAgICAgICAgZW5kCgogICAgICAgICAgdmFycwk9 # IHt9CiAgICAgICAgZW5kCgoJCSMgQXZvaWQgdGltZW91dC4KCiAgICAgICAg # c2Vzc2lvbi50b3VjaAoKICAgICAgICBpZiBwYWQgPT0gIi8iCgoJCSMgU2Vy # dmUgbWV0aG9kcy9jYWxsYmFja3MuCgoJCSMgQnVpbGQgbmV3IHBhZ2UuCgog # ICAgICAgICAgZG93bmxvYWQJPSAiIgogICAgICAgICAgZG93bmxvYWRmaWxl # CT0gIiIKICAgICAgICAgIHJlcwkJPSAiIgoKICAgICAgICAgIGRvbmUJPSBz # ZXNzaW9uLnJlbmRlcihyZXMsIHBhZCwgdmFycywgZG93bmxvYWQsIGRvd25s # b2FkZmlsZSwgcmVxLnBkYT8pCgogICAgICAgICAgYmVnaW4KICAgICAgICAg # ICAgaWYgZG93bmxvYWQuZW1wdHk/CiAgICAgICAgICAgICAgcmVzcFsiQ29u # dGVudC1UeXBlIl0JCT0gInRleHQvaHRtbCIKICAgICAgICAgICAgICBpZiBk # b25lCiAgICAgICAgICAgICAgICByZXNwLmNvb2tpZXNbInNlc3Npb25pZCJd # CT0gIiIKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXNw # LmNvb2tpZXNbInNlc3Npb25pZCJdCT0gc2Vzc2lvbi5zZXNzaW9uaWQKICAg # ICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgcmVzcCA8PCByZXMKICAg # ICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQtVHlw # ZSJdCQk9ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCiAgICAgICAgICAg # ICAgcmVzcFsiQ29udGVudC1EaXNwb3NpdGlvbiJdCT0gImF0dGFjaG1lbnQ7 # IgogICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQtRGlzcG9zaXRpb24iXQk9 # ICJhdHRhY2htZW50OyBmaWxlbmFtZT0lcyIgJSBkb3dubG9hZGZpbGUJdW5s # ZXNzIGRvd25sb2FkZmlsZS5lbXB0eT8KCiAgICAgICAgICAgICAgcmVzcCA8 # PCBkb3dubG9hZAogICAgICAgICAgICBlbmQKICAgICAgICAgIHJlc2N1ZQog # ICAgICAgICAgICBwdXRzICJTZW5kaW5nIHJlc3BvbnNlIHRvIGJyb3dzZXIg # ZmFpbGVkLiIKCiAgICAgICAgICAgIEBzZXNzaW9ucy5kZWxldGUoc2Vzc2lv # bi5zZXNzaW9uaWQpCiAgICAgICAgICBlbmQKCgkJIyBFdmVudHVhbGx5IGRl # bGV0ZSB0aGlzIHNlc3Npb24uCgogICAgICAgICAgaWYgZG9uZQogICAgICAg # ICAgICBAc2Vzc2lvbnMuZGVsZXRlKHNlc3Npb24uc2Vzc2lvbmlkKQoKICAg # ICAgICAgICAgaWYgQGxvY2FsYnJvd3NpbmcKICAgICAgICAgICAgICByZXNw # LnN0b3AKCiAgICAgICAgICAgICAgaWYgQGJyb3dzZXJzdGFydGVkIGFuZCBu # b3QgQGJyb3dzZXJ0aHJlYWQubmlsPyBhbmQgQGJyb3dzZXJ0aHJlYWQuYWxp # dmU/CiAgICAgICAgICAgICAgICByZXNwLnN0b3AgZG8KICAgICAgICAgICAg # ICAgICAgcHV0cyAiV2FpdGluZyBmb3IgdGhlIGJyb3dzZXIgdG8gdGVybWlu # YXRlLi4uIgoKICAgICAgICAgICAgICAgICAgQGJyb3dzZXJ0aHJlYWQuam9p # bgogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAg # ICAgICAgIGVuZAogICAgICAgICAgZW5kCgogICAgICAgIGVsc2UKCgkJIyBT # ZXJ2ZSBmaWxlcy4KCiAgICAgICAgICBpZiBwYWQgPT0gIi9yd2RfcGl4ZWwu # Z2lmIgogICAgICAgICAgICByZXNwWyJDYWNoZS1Db250cm9sIl0JPSAibWF4 # LWFnZT04NjQwMCIKICAgICAgICAgICAgcmVzcFsiQ29udGVudC1UeXBlIl0J # PSAiaW1hZ2UvZ2lmIgogICAgICAgICAgICByZXNwIDw8ICRyd2RfcGl4ZWwK # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgc2Vzc2lvbi5hdXRoZW50 # aWNhdGVkCiAgICAgICAgICAgICAgcHdkCT0gRGlyLnB3ZAogICAgICAgICAg # ICAgIGZpbGUJPSBGaWxlLmV4cGFuZF9wYXRoKHBhZC5nc3ViKC9eXC8qLywg # IiIpLCAkcndkX2ZpbGVzKQoKICAgICAgICAgICAgICBpZiBub3QgZmlsZS5p # bmRleChwd2QpID09IDAKICAgICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQt # VHlwZSJdCT0gInRleHQvaHRtbCIKICAgICAgICAgICAgICAgIHJlc3AucmVz # cG9uc2UJCT0gIkhUVFAvMS4wIDQwMCBCQUQgUkVRVUVTVCIKICAgICAgICAg # ICAgICAgIHJlc3AgPDwgIjxodG1sPjxib2R5PjxwPjxiPkJhZCBSZXF1ZXN0 # LjwvYj4gKDx0dD4je3BhZH08L3R0Pik8L3A+PC9ib2R5PjwvaHRtbD4iCiAg # ICAgICAgICAgICAgZWxzaWYgRmlsZS5maWxlPyhmaWxlKQogICAgICAgICAg # ICAgICAgcmVzcCA8PCBGaWxlLm5ldyhmaWxlLCAicmIiKS5yZWFkCXJlc2N1 # ZSBuaWwKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXNw # WyJDb250ZW50LVR5cGUiXQk9ICJ0ZXh0L2h0bWwiCiAgICAgICAgICAgICAg # ICByZXNwLnJlc3BvbnNlCQk9ICJIVFRQLzEuMCA0MDQgTk9UIEZPVU5EIgog # ICAgICAgICAgICAgICAgcmVzcCA8PCAiPGh0bWw+PGJvZHk+PHA+PGI+Tm90 # IGZvdW5kLjwvYj4gKDx0dD4je3BhZH08L3R0Pik8L3A+PC9ib2R5PjwvaHRt # bD4iCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVsc2UKICAgICAg # ICAgICAgICByZXNwWyJDb250ZW50LVR5cGUiXQk9ICJ0ZXh0L2h0bWwiCiAg # ICAgICAgICAgICAgcmVzcC5yZXNwb25zZQkJPSAiSFRUUC8xLjAgPz8/IE5P # VCBBVVRIT1JJWkVEIgogICAgICAgICAgICAgIHJlc3AgPDwgIjxodG1sPjxi # b2R5PjxwPjxiPk5vdCBBdXRob3JpemVkLjwvYj48L3A+PC9ib2R5PjwvaHRt # bD4iCiAgICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCgogICAgICAgIGVu # ZAoKICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5kCgokcndkX2h0bWxbIkRF # RkFVTFQiXQk9ICIKPCEtLSBHZW5lcmF0ZWQgYnkgUnVieVdlYkRpYWxvZy4g # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg # IC0tPgo8IS0tIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgY29udGFj # dCBFcmlrIFZlZW5zdHJhIDxyd2RAZXJpa3ZlZW4uZGRzLm5sPi4gLS0+Cjxo # dG1sPgogIDxoZWFkPgogICAgPHRpdGxlPiVUSVRMRSU8L3RpdGxlPgoKICAg # IDxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4 # dC9odG1sOyBjaGFyc2V0PSVDSEFSU0VUJSc+CiAgICA8bWV0YSBodHRwLWVx # dWl2PSdDb250ZW50LVN0eWxlLVR5cGUnIGNvbnRlbnQ9J3RleHQvY3NzJz4K # ICAgIDxtZXRhIGh0dHAtZXF1aXY9J1JlZnJlc2gnIGNvbnRlbnQ9JyVSRUZS # RVNIJSwgamF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsn # PgoKICAgIDxsaW5rIHJlbD0nc2hvcnRjdXQgaWNvbicgaHJlZj0nJUxPR08l # Jz4KCiAgICA8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPgogICAgPCEtLQoKCWJv # ZHkgewoJCWJhY2tncm91bmQJCTogdXJsKCVXQVRFUk1BUkslKSB3aGl0ZSBj # ZW50ZXIgY2VudGVyIG5vLXJlcGVhdCBmaXhlZDsKCX0KCglhIHsKCQl0ZXh0 # LWRlY29yYXRpb24JCTogbm9uZTsKCX0KCglhOmhvdmVyIHsKCQliYWNrZ3Jv # dW5kCQk6ICNBQUFBQUE7Cgl9CgoJdGQucGFuZWwxIHsKCQlib3JkZXItY29s # b3IJCTogIzg4ODg4OCAjRUVFRUVFICNFRUVFRUUgIzg4ODg4ODsKCQlib3Jk # ZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xp # ZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYW5lbDIgewoJCWJvcmRlci1jb2xv # cgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRl # ci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlk # IHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVsMWhpZ2ggewoJCWJvcmRlci1j # b2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJv # cmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNv # bGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVsMmhpZ2ggewoJCWJvcmRl # ci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJ # CWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUg # bm9uZSBub25lIG5vbmU7Cgl9CgoJdGQucGFuZWwxbG93IHsKCQlib3JkZXIt # Y29sb3IJCTogIzg4ODg4OCAjRUVFRUVFICNFRUVFRUUgIzg4ODg4ODsKCQli # b3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBz # b2xpZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYW5lbDJsb3cgewoJCWJvcmRl # ci1jb2xvcgkJOiAjODg4ODg4ICNFRUVFRUUgI0VFRUVFRSAjODg4ODg4OwoJ # CWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUg # bm9uZSBub25lIG5vbmU7Cgl9CgoJdGQudGFiYmxhZCB7CgkJYm9yZGVyLWNv # bG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9y # ZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBzb2xp # ZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYXNzaXZldGFiIHsKICAgICAgICAg # ICAgICAgIGJhY2tncm91bmQtY29sb3IJOiAjQkJCQkJCOwoJCWJvcmRlci1j # b2xvcgkJOiAjREREREREICNEREREREQgI0VFRUVFRSAjREREREREOwoJCWJv # cmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNv # bGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLmFjdGl2ZXRhYiB7CgkJYm9yZGVy # LWNvbG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJ # Ym9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQg # c29saWQgbm9uZSBzb2xpZDsKCX0KCgl0ZC5ub3RhYiB7CgkJYm9yZGVyLWNv # bG9yCQk6ICNFRUVFRUUgI0VFRUVFRSAjRUVFRUVFICNFRUVFRUU7CgkJYm9y # ZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBub25l # IHNvbGlkIG5vbmU7Cgl9CgogICAgLy8tLT4KICAgIDwvc3R5bGU+CgogICAg # PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgogICAgPCEtLQogICAg # ICBmdW5jdGlvbiBCb2R5R28oKSB7CiAgICAgICAgJFJXRF9GT0NVUyQKICAg # ICAgfQogICAgLy8tLT4KICAgIDwvc2NyaXB0PgogIDwvaGVhZD4KCiAgPGJv # ZHkgYmdjb2xvcj0nd2hpdGUnIG9ubG9hZD0nQm9keUdvKCknIGxpbms9JyMw # MDAwMDAnIHZsaW5rPScjMDAwMDAwJyBhbGluaz0nIzAwMDAwMCc+CiAgICA8 # Zm9ybSBuYW1lPSdib2R5Zm9ybScgYWN0aW9uPScvJyBtZXRob2Q9J3Bvc3Qn # PgogICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxs # c3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnIHdpZHRoPScxMDAlJyBoZWln # aHQ9JzEwMCUnPgogICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJyB2YWxpZ249 # J21pZGRsZSc+CiAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcic+CgogICAg # ICAgICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxs # c3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPgoKICAgICAgICAgICAgICA8 # dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAg # ICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAg # ICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8L3Ry # PgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAg # ICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3do # aXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxpZ249 # J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # ICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWln # aHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3 # aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAg # ICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAg # ICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxh # Y2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVF # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVF # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxp # Z249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3do # aXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4K # CiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # d2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgoKICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJz4KCiAgICAgICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0nY2VudGVy # JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCcg # JVdJRFRIMSU+CiAgICAgICAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50 # ZXInPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9JyM0NDQ0ODgnPgoKICAgICAgICAgICAgICAgICAgICAgICAg # PHRhYmxlIGFsaWduPSdsZWZ0JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScx # JyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAg # PHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdib3JkZXInPjxpbWcgc3JjPSclTE9HTyUnIHdpZHRo # PScxNCcgaGVpZ2h0PScxNCc+PC90ZD4KICAgICAgICAgICAgICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJz48Yj48c21hbGw+PGZvbnQgY29s # b3I9JyNGRkZGRkYnPiZuYnNwOyVUSVRMRSUmbmJzcDs8L2ZvbnQ+PC9zbWFs # bD48L2I+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgog # ICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAg # ICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdyaWdodCcgYm9yZGVyPScwJyBj # ZWxsc3BhY2luZz0nMScgY2VsbHBhZGRpbmc9JzAnPgogICAgICAgICAgICAg # ICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAg # ICAgICAgICAgICAgICAgIDwhLS0gJUhFTFBCVVRUT04lICAtLT48dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhy # ZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52 # YWx1ZT1cInJ3ZF9oZWxwXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7 # Jz4mbmJzcDs/Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAg # ICAgICAgICAgICAgICAgICAgICA8IS0tICVCQUNLQlVUVE9OUyUgLS0+PHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48 # YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rp # b24udmFsdWU9XCJyd2RfbWFpblwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1p # dCgpOyc+Jm5ic3A7Jmx0OyZsdDsmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90 # ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gJUJBQ0tCVVRU # T05TJSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+ # PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZv # cm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9iYWNrXCI7ZG9jdW1lbnQuYm9k # eWZvcm0uc3VibWl0KCk7Jz4mbmJzcDsmbHQ7Jm5ic3A7PC9hPjwvc21hbGw+ # PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICVD # TE9TRUJVVFRPTiUgLS0+PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNF # RUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50 # LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfcXVpdFwiO2RvY3Vt # ZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7WCZuYnNwOzwvYT48L3Nt # YWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ # CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAg # ICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoK # ICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAg # ICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # d2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPSclV0lEVEgyJSc+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3Ry # PgoKICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAg # ICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nI0NDQ0NDQyc+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBh # bGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPSczJyBjZWxs # cGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgJUJPRFkl # CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAg # ICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ncndkX2FjdGlvbicgdmFsdWU9 # JyRSV0RfRklSU1RBQ1RJT04kJyB0eXBlPSdoaWRkZW4nPgogICAgICAgICAg # ICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ncndkX3Nlc3Npb24nIHZhbHVl # PSckUldEX1NFU1NJT04kJyB0eXBlPSdoaWRkZW4nPgogICAgICAgICAgICAg # ICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAg # ICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvdGQ+ # CgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9 # J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3 # aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+ # CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3 # aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVF # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1n # 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 # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAg # ID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3do # aXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8dHIg # YWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFj # ayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWln # aHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAg # ICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # ICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoK # ICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAg # ICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNr # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAg # ICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgPC90YWJsZT4KCiAgICAg # ICAgICA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgIDwvdGFibGU+CiAgICA8 # L2Zvcm0+CiAgPC9ib2R5Pgo8L2h0bWw+CiIKCiRyd2RfaHRtbFsiV0lORE9X # U0xPT0tBTElLRSJdCT0gIgo8IS0tIEdlbmVyYXRlZCBieSBSdWJ5V2ViRGlh # bG9nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg # ICAgICAgLS0+CjwhLS0gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBj # b250YWN0IEVyaWsgVmVlbnN0cmEgPHJ3ZEBlcmlrdmVlbi5kZHMubmw+LiAt # LT4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+JVRJVExFJTwvdGl0bGU+ # CgogICAgPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50 # PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9JUNIQVJTRVQlJz4KICAgIDxtZXRhIGh0 # dHAtZXF1aXY9J0NvbnRlbnQtU3R5bGUtVHlwZScgY29udGVudD0ndGV4dC9j # c3MnPgogICAgPG1ldGEgaHR0cC1lcXVpdj0nUmVmcmVzaCcgY29udGVudD0n # JVJFRlJFU0glLCBqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnN1Ym1p # dCgpOyc+CgogICAgPGxpbmsgcmVsPSdzaG9ydGN1dCBpY29uJyBocmVmPScl # TE9HTyUnPgoKICAgIDxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+CiAgICA8IS0t # CgoJYm9keSB7CgkJYmFja2dyb3VuZAkJOiB1cmwoJVdBVEVSTUFSSyUpIHdo # aXRlIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0IGZpeGVkOwoJfQoKCWEgewoJ # CXRleHQtZGVjb3JhdGlvbgkJOiBub25lOwoJfQoKCWE6aG92ZXIgewoJCWJh # Y2tncm91bmQJCTogI0FBQUFBQTsKCX0KCgl0ZC53aW5kb3cgewoJCWJvcmRl # ci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJ # CWJvcmRlci13aWR0aAkJOiAzcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlk # IHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVsMSB7CgkJYm9yZGVy # LWNvbG9yCQk6ICM4ODg4ODggI0VFRUVFRSAjRUVFRUVFICM4ODg4ODg7CgkJ # Ym9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQg # c29saWQgc29saWQgc29saWQ7Cgl9CgoJdGQucGFuZWwyIHsKCQlib3JkZXIt # Y29sb3IJCTogI0VFRUVFRSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQli # b3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBz # b2xpZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYW5lbDFoaWdoIHsKCQlib3Jk # ZXItY29sb3IJCTogI0VFRUVFRSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsK # CQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xp # ZCBzb2xpZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYW5lbDJoaWdoIHsKCQli # b3JkZXItY29sb3IJCTogI0VFRUVFRSAjODg4ODg4ICM4ODg4ODggI0VFRUVF # RTsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBu # b25lIG5vbmUgbm9uZSBub25lOwoJfQoKCXRkLnBhbmVsMWxvdyB7CgkJYm9y # ZGVyLWNvbG9yCQk6ICM4ODg4ODggI0VFRUVFRSAjRUVFRUVFICM4ODg4ODg7 # CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29s # aWQgc29saWQgc29saWQgc29saWQ7Cgl9CgoJdGQucGFuZWwybG93IHsKCQli # b3JkZXItY29sb3IJCTogIzg4ODg4OCAjRUVFRUVFICNFRUVFRUUgIzg4ODg4 # ODsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBu # b25lIG5vbmUgbm9uZSBub25lOwoJfQoKCXRkLnRhYmJsYWQgewoJCWJvcmRl # ci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJ # CWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUg # c29saWQgc29saWQgc29saWQ7Cgl9CgoJdGQucGFzc2l2ZXRhYiB7CiAgICAg # ICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yCTogI0JCQkJCQjsKCQlib3Jk # ZXItY29sb3IJCTogI0RERERERCAjREREREREICNFRUVFRUUgI0RERERERDsK # CQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xp # ZCBzb2xpZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5hY3RpdmV0YWIgewoJCWJv # cmRlci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVF # OwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNv # bGlkIHNvbGlkIG5vbmUgc29saWQ7Cgl9CgoJdGQubm90YWIgewoJCWJvcmRl # ci1jb2xvcgkJOiAjRUVFRUVFICNFRUVFRUUgI0VFRUVFRSAjRUVFRUVFOwoJ # CWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUg # bm9uZSBzb2xpZCBub25lOwoJfQoKICAgIC8vLS0+CiAgICA8L3N0eWxlPgoK # ICAgIDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KICAgIDwhLS0K # ICAgICAgZnVuY3Rpb24gQm9keUdvKCkgewogICAgICAgICRSV0RfRk9DVVMk # CiAgICAgIH0KICAgIC8vLS0+CiAgICA8L3NjcmlwdD4KICA8L2hlYWQ+Cgog # IDxib2R5IGJnY29sb3I9J3doaXRlJyBvbmxvYWQ9J0JvZHlHbygpJyBsaW5r # PScjMDAwMDAwJyB2bGluaz0nIzAwMDAwMCcgYWxpbms9JyMwMDAwMDAnPgog # ICAgPGZvcm0gbmFtZT0nYm9keWZvcm0nIGFjdGlvbj0nLycgbWV0aG9kPSdw # b3N0Jz4KICAgICAgPHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcg # Y2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJyB3aWR0aD0nMTAwJScg # aGVpZ2h0PScxMDAlJz4KICAgICAgICA8dHIgYWxpZ249J2NlbnRlcicgdmFs # aWduPSdtaWRkbGUnPgogICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInPgoK # ICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcg # Y2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJz4KCiAgICAgICAgICAg # ICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInIGNsYXNzPSd3aW5kb3cnPgoKICAgICAgICAgICAgICAg # ICAgPHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNp # bmc9JzAnIGNlbGxwYWRkaW5nPScwJyAlV0lEVEgxJT4KICAgICAgICAgICAg # ICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nIzQ0NDQ4OCc+Cgog # ICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249J2xlZnQnIGJv # cmRlcj0nMCcgY2VsbHNwYWNpbmc9JzEnIGNlbGxwYWRkaW5nPScwJz4KICAg # ICAgICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAg # ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2JvcmRlcic+ # PGltZyBzcmM9JyVMT0dPJScgd2lkdGg9JzE0JyBoZWlnaHQ9JzE0Jz48L3Rk # PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInPjxiPjxzbWFsbD48Zm9udCBjb2xvcj0nI0ZGRkZGRic+Jm5ic3A7JVRJ # VExFJSZuYnNwOzwvZm9udD48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAg # ICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAg # IDwvdGFibGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYWxp # Z249J3JpZ2h0JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScxJyBjZWxscGFk # ZGluZz0nMCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGFsaWdu # PSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAl # SEVMUEJVVFRPTiUgIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScj # RUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVu # dC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX2hlbHBcIjtkb2N1 # bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOz8mbmJzcDs8L2E+PC9z # bWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwh # LS0gJUJBQ0tCVVRUT05TJSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9j # dW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9tYWluXCI7 # ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDsmbHQ7Jmx0OyZu # YnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAg # ICAgICAgICAgPCEtLSAlQkFDS0JVVFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2 # YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwi # cndkX2JhY2tcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNw # OyZsdDsmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAg # ICAgICAgICAgICAgICAgIDwhLS0gJUNMT1NFQlVUVE9OJSAtLT48dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhy # ZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52 # YWx1ZT1cInJ3ZF9xdWl0XCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7 # Jz4mbmJzcDtYJm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAg # ICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAg # ICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAg # ICAgICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgICAgICAgIDx0 # ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JyVXSURUSDIlJz48L3RkPgog # ICAgICAgICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgICAgICAg # IDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjQ0NDQ0NDJz4KICAgICAgICAg # ICAgICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0n # MCcgY2VsbHNwYWNpbmc9JzMnIGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAg # ICAgICAgICAgICAgICAgICAlQk9EWSUKICAgICAgICAgICAgICAgICAgICAg # ICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBu # YW1lPSdyd2RfYWN0aW9uJyB2YWx1ZT0nJFJXRF9GSVJTVEFDVElPTiQnIHR5 # cGU9J2hpZGRlbic+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBu # YW1lPSdyd2Rfc2Vzc2lvbicgdmFsdWU9JyRSV0RfU0VTU0lPTiQnIHR5cGU9 # J2hpZGRlbic+CiAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAg # ICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+ # CgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgoK # ICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICA8L3RkPgogICAgICAg # IDwvdHI+CiAgICAgIDwvdGFibGU+CiAgICA8L2Zvcm0+CiAgPC9ib2R5Pgo8 # L2h0bWw+CiIKCiRyd2RfaHRtbFsiUERBIl0JPSAiCjwhLS0gR2VuZXJhdGVk # IGJ5IFJ1YnlXZWJEaWFsb2cuICAgICAgICAgICAgICAgICAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAgICAtLT4KPCEtLSBGb3IgbW9yZSBpbmZvcm1h # dGlvbiwgcGxlYXNlIGNvbnRhY3QgRXJpayBWZWVuc3RyYSA8cndkQGVyaWt2 # ZWVuLmRkcy5ubD4uIC0tPgo8aHRtbD4KICA8aGVhZD4KICAgIDx0aXRsZT4l # VElUTEUlPC90aXRsZT4KCiAgICA8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50 # LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD0lQ0hBUlNFVCUn # PgogICAgPG1ldGEgaHR0cC1lcXVpdj0nUmVmcmVzaCcgY29udGVudD0nJVJF # RlJFU0glLCBqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgp # Oyc+CgogICAgPGxpbmsgcmVsPSdzaG9ydGN1dCBpY29uJyBocmVmPSclTE9H # TyUnPgoKICAgIDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KICAg # IDwhLS0KICAgICAgZnVuY3Rpb24gQm9keUdvKCkgewogICAgICAgICRSV0Rf # Rk9DVVMkCiAgICAgIH0KICAgIC8vLS0+CiAgICA8L3NjcmlwdD4KICA8L2hl # YWQ+CgogIDxib2R5IGJnY29sb3I9J3doaXRlJyBvbmxvYWQ9J0JvZHlHbygp # JyBsaW5rPScjMDAwMDAwJyB2bGluaz0nIzAwMDAwMCcgYWxpbms9JyMwMDAw # MDAnPgogICAgPGZvcm0gbmFtZT0nYm9keWZvcm0nIGFjdGlvbj0nLycgbWV0 # aG9kPSdwb3N0Jz4KICAgICAgPHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRl # cj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJyB3aWR0aD0n # MTAwJScgaGVpZ2h0PScxMDAlJz4KCiAgICAgICAgPHRyIGFsaWduPSdjZW50 # ZXInPgogICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyM0 # NDQ0ODgnPgoKICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdsZWZ0JyBib3Jk # ZXI9JzAnIGNlbGxzcGFjaW5nPScxJyBjZWxscGFkZGluZz0nMCc+CiAgICAg # ICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdib3JkZXInPjxpbWcgc3JjPSclTE9HTyUnIHdpZHRoPScx # NCcgaGVpZ2h0PScxNCc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJz48Yj48c21hbGw+PGZvbnQgY29sb3I9JyNGRkZGRkYnPiZu # YnNwOyVUSVRMRSUmbmJzcDs8L2ZvbnQ+PC9zbWFsbD48L2I+PC90ZD4KICAg # ICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgoKICAgICAg # ICAgICAgPHRhYmxlIGFsaWduPSdyaWdodCcgYm9yZGVyPScwJyBjZWxsc3Bh # Y2luZz0nMScgY2VsbHBhZGRpbmc9JzAnPgogICAgICAgICAgICAgIDx0ciBh # bGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDwhLS0gJUhFTFBCVVRU # T04lICAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+ # PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZv # cm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9oZWxwXCI7ZG9jdW1lbnQuYm9k # eWZvcm0uc3VibWl0KCk7Jz4mbmJzcDs/Jm5ic3A7PC9hPjwvc21hbGw+PC9i # PjwvdGQ+CiAgICAgICAgICAgICAgICA8IS0tICVCQUNLQlVUVE9OUyUgLS0+ # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFs # bD48YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9h # Y3Rpb24udmFsdWU9XCJyd2RfbWFpblwiO2RvY3VtZW50LmJvZHlmb3JtLnN1 # Ym1pdCgpOyc+Jm5ic3A7Jmx0OyZsdDsmbmJzcDs8L2E+PC9zbWFsbD48L2I+ # PC90ZD4KICAgICAgICAgICAgICAgIDwhLS0gJUJBQ0tCVVRUT05TJSAtLT48 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxs # PjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2Fj # dGlvbi52YWx1ZT1cInJ3ZF9iYWNrXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3Vi # bWl0KCk7Jz4mbmJzcDsmbHQ7Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8IS0tICVDTE9TRUJVVFRPTiUgLS0+PHRkIGFs # aWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBo # cmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24u # dmFsdWU9XCJyd2RfcXVpdFwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgp # Oyc+Jm5ic3A7WCZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAg # ICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAg # PC90ZD4KICAgICAgICA8L3RyPgoKICAgICAgICA8IS0tCiAgICAgICAgPHRy # IGFsaWduPSdjZW50ZXInPgogICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9JyNGRkZGRkYnPiZuYnNwOzwvdGQ+CiAgICAgICAgPC90cj4K # ICAgICAgICAtLT4KCiAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNGRkZGRkYnPgoK # ICAgICAgICAgICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScw # JyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPgogICAgICAgICAg # ICAgICAgJUJPRFklCiAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAg # ICAgICAgPGlucHV0IG5hbWU9J3J3ZF9hY3Rpb24nIHZhbHVlPSckUldEX0ZJ # UlNUQUNUSU9OJCcgdHlwZT0naGlkZGVuJz4KICAgICAgICAgICAgICA8aW5w # dXQgbmFtZT0ncndkX3Nlc3Npb24nIHZhbHVlPSckUldEX1NFU1NJT04kJyB0 # eXBlPSdoaWRkZW4nPgogICAgICAgICAgPC90ZD4KICAgICAgICA8L3RyPgoK # ICAgICAgPC90YWJsZT4KICAgIDwvZm9ybT4KICA8L2JvZHk+CjwvaHRtbD4K # IgoKJHJ3ZF9waXhlbAk9ICIKUjBsR09EbGhBUUFCQU1JQUFBQUFBUC8vLys3 # dTdrUkVpUC8vLy8vLy8vLy8vLy8vL3lINUJBRUtBQU1BCkxBQUFBQUFCQUFF # QUFBTUNPQWtBT3c9PQoiLnVucGFjaygibSIpLnNoaWZ0CgokcndkX2xvZ28J # PSAiClIwbEdPRGxoRUFBUUFNSUFBQUFBQVAvLy8rN3U3a1JFaVAvLy8vLy8v # Ly8vLy8vLy95SDVCQUVLQUFRQQpMQUFBQUFBUUFCQUFBQU5DU0VyUS9rMjFR # S3VscklyTnU4aGV1QUdVY0owQnVRVkQ2NzZEYXNLMHpOS3YKamVmQitvbzZs # NkF4QkF4N00ySFJlUFFwaDV4Z2EwUnNKcWZFTFBJMkRTVUFBRHM9CiIudW5w # YWNrKCJtIikuc2hpZnQKCgokcndkX2h0bWxfMSwgJHJ3ZF9odG1sXzIJCT0g # JHJ3ZF9odG1sW0VOVlsiUldEVEhFTUUiXV0uc3BsaXQoL15ccyolQk9EWSVc # cypcciokLykKJHJ3ZF9odG1sX1BEQV8xLCAkcndkX2h0bWxfUERBXzIJPSAk # cndkX2h0bWxbIlBEQSJdLnNwbGl0KC9eXHMqJUJPRFklXHMqXHIqJC8pCgoj # ZW5kCiMKI2NsYXNzIFJXRGlhbG9nIDwgUldEOjpSV0RpYWxvZwojZW5kCgAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAu # ZWFyMnJ1YnlzY3JpcHQuZi4xMTY2OC50YXIvZXYvcnVieS5yYgAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwNDAyNjAAMTAy # NTAzMjA2MTMAMDIwMTU1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAHJlcXVpcmUgImNnaSIKcmVxdWlyZSAicmJjb25maWci # CnJlcXVpcmUgInRocmVhZCIKClRocmVhZC5hYm9ydF9vbl9leGNlcHRpb24J # PSB0cnVlCgokREVCVUcJPSAoJERFQlVHIG9yIEVOVlsiUlVCWURFQlVHIl0g # b3IgZmFsc2UpCgojdGVrZW5zCT0gJ1x3XH5cQFwjXCRcJVxeXCZcKlwtXCsn # CnRla2VucwkJPSAnXlxzXHJcblxgXCFcKFwpXFtcXVx7XH1cPFw+XCxcLlwv # XD9cXFx8XD1cO1w6XCInCgojdGVrZW5zMTEJPSAnXHcnCnRla2VuczExCT0g # dGVrZW5zICsgIiciCgp0ZWtlbnMyMQk9IHRla2VucyArICInIgp0ZWtlbnMy # Mgk9IHRla2Vucwp0ZWtlbnMyMwk9IHRla2VucyArICInIgoKdGVrZW5zMzEJ # PSAnXHdcc1xyXG4nCgpSZWdFeHBTdHJpbmdXb3JkCT0gIihbI3t0ZWtlbnMx # MX1dKykiCQkJCQkJCQkJOyBSZWdFeHBXb3JkCQk9IFJlZ2V4cC5uZXcoUmVn # RXhwU3RyaW5nV29yZCkKUmVnRXhwU3RyaW5nV29yZDIJPSAiKFsje3Rla2Vu # czIxfV0oWyN7dGVrZW5zMjJ9XSpbI3t0ZWtlbnMyM31dKT8pIgkJCQkJOyBS # ZWdFeHBXb3JkMgkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ1dvcmQyKQpS # ZWdFeHBTdHJpbmdUZXh0CT0gIihbI3t0ZWtlbnMzMX1dKykiCQkJCQkJCQkJ # OyBSZWdFeHBUZXh0CQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nVGV4dCkK # UmVnRXhwU3RyaW5nRmlsZQk9ICcoXHdbXHdcLlwtXSopJwkJCQkJCQkJCTsg # UmVnRXhwRmlsZQkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ0ZpbGUpClJl # Z0V4cFN0cmluZ0VtYWlsCT0gJyhbXHdcLVwuXStAW1x3XC1cLl0rKScJCQkJ # CQkJCTsgUmVnRXhwRW1haWwJCT0gUmVnZXhwLm5ldyhSZWdFeHBTdHJpbmdF # bWFpbCkKUmVnRXhwU3RyaW5nVVJMCQk9ICcoXHcrOlwvXC9bXHdcLlwtXSso # OlxkKik/XC9bXHdcLlwtXC9cI1w/XD1cJV0qKScJCQkJCTsgUmVnRXhwVVJM # CQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nVVJMKQpSZWdFeHBTdHJpbmdQ # cmludAk9ICcoW1x3IFx0XHJcblxgXH5cIVxAXCNcJFwlXF5cJlwqXChcKVwt # XCtcPVxbXF1ce1x9XDtcOlwnXCJcLFwuXC9cPFw+XD9cXFx8XSspJwk7IFJl # Z0V4cFByaW50CQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nUHJpbnQpClJl # Z0V4cFN0cmluZ0RpZmYJPSAnKF5bXC1cK10oW15cLVwrXS4qKT8pJwkJCQkJ # CQkJOyBSZWdFeHBEaWZmCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nRGlm # ZikKUmVnRXhwU3RyaW5nSFRITGluawk9ICcoYFtcd1wsXSpcYmFcYlteYF0q # YCknCQkJCQkJCQk7IFJlZ0V4cEhUSExpbmsJCT0gUmVnZXhwLm5ldyhSZWdF # eHBTdHJpbmdIVEhMaW5rKQpSZWdFeHBTdHJpbmdIVEhTcGVjaWFsCT0gJyhg # W15gXSpgKScJCQkJCQkJCQkJOyBSZWdFeHBIVEhTcGVjaWFsCT0gUmVnZXhw # Lm5ldyhSZWdFeHBTdHJpbmdIVEhTcGVjaWFsKQoKbW9kdWxlIEVudW1lcmFi # bGUKICBkZWYgZGVlcF9kdXAKICAgIE1hcnNoYWw6OmxvYWQoTWFyc2hhbDo6 # ZHVtcChkdXApKQogIGVuZAoKICBkZWYgZGVlcF9jbG9uZQogICAgTWFyc2hh # bDo6bG9hZChNYXJzaGFsOjpkdW1wKGNsb25lKSkKICBlbmQKZW5kCgpjbGFz # cyBUaHJlYWQKICBkZWYgc2VsZi5iYWNrZ3JvdW5kKCphcmdzKQogICAgbmV3 # KCphcmdzKSBkbyB8KmFyZ3N8CiAgICAgIFRocmVhZC5wYXNzCgogICAgICB5 # aWVsZCgqYXJncykKICAgIGVuZAogIGVuZAplbmQKCmNsYXNzIE9iamVjdAog # IGFsaWFzIGRlZXBfZHVwIDpkdXAKICBhbGlhcyBkZWVwX2Nsb25lIDpjbG9u # ZQoKICBkZWYgdG9fZnMKICAgIHRvX3MKICBlbmQKCiAgZGVmIGlkcwogICAg # aWQKICBlbmQKZW5kCgpjbGFzcyBOdW1lcmljCiAgZGVmIHRvX2ZzCiAgICB0 # b19mCiAgZW5kCgogIGRlZiB0b19odG1sKGVvbGNvbnZlcnNpb249dHJ1ZSkK # ICAgIHNlbGYudG9fcy50b19odG1sKGVvbGNvbnZlcnNpb24pCiAgZW5kCmVu # ZAoKY2xhc3MgSW50ZWdlcgogIGRlZiBvY3QKICAgIG4JPSBzZWxmCiAgICBy # ZXMJPSBbXQoKICAgIHdoaWxlIG4gPiA4CiAgICAgIG4sIHgJPSBuLmRpdm1v # ZCg4KQogICAgICByZXMgPDwgeAogICAgZW5kCiAgICByZXMgPDwgbgoKICAg # IHJlcy5yZXZlcnNlLmpvaW4oIiIpCiAgZW5kCmVuZAoKY2xhc3MgU3RyaW5n # CiAgZGVmIGNob21wIShkdW1teT1uaWwpCiAgICBzZWxmLmdzdWIhKC9bXHJc # bl0qXHovLCAiIikKICBlbmQKCiAgZGVmIGNob21wKGR1bW15PW5pbCkKICAg # IHNlbGYuZ3N1YigvW1xyXG5dKlx6LywgIiIpCiAgZW5kCgogIGRlZiBsZgog # ICAgc2VsZi5nc3ViKC9ccipcbi8sICJcbiIpLmdzdWIoL1xuXHovLCAiIikg # KyAiXG4iCiAgZW5kCgogIGRlZiBjcmxmCiAgICBzZWxmLmdzdWIoL1xyKlxu # LywgIlxyXG4iKS5nc3ViKC9cclxuXHovLCAiIikgKyAiXHJcbiIKICBlbmQK # CiAgZGVmIHN0cmlwCiAgICBzZWxmLnN0cmlwYmVmb3JlLnN0cmlwYWZ0ZXIK # ICBlbmQKCiAgZGVmIHN0cmlwYmVmb3JlCiAgICBzZWxmLmdzdWIoL1xBW1s6 # Ymxhbms6XVxyXG5dKi8sICIiKQogIGVuZAoKICBkZWYgc3RyaXBhZnRlcgog # ICAgc2VsZi5nc3ViKC9bWzpibGFuazpdXHJcbl0qXHovLCAiIikKICBlbmQK # CiAgZGVmIGNvbXByZXNzCiAgICBzZWxmLmdzdWIoL1tbOmJsYW5rOl1cclxu # XSsvLCAiICIpLnN0cmlwCiAgZW5kCgogIGRlZiBjb21wcmVzc3NwYWNlcwog # ICAgc2VsZi5nc3ViKC9bWzpibGFuazpdXSsvLCAiICIpCiAgZW5kCgogIGRl # ZiBjb21wcmVzc3BlcmxpbmUKICAgIHJlcwk9IHNlbGYuc3BsaXQoL1xuLykK # ICAgIHJlcy5jb2xsZWN0IXt8bGluZXwgbGluZS5jb21wcmVzc30KICAgIHJl # cy5kZWxldGVfaWZ7fGxpbmV8IGxpbmUuZW1wdHk/fQogICAgcmVzLmpvaW4o # IlxuIikKICBlbmQKCiAgZGVmIG51bWVyaWM/CiAgICBkLCBhLCBuCT0gW3Nl # bGZdLnRvX3BhcgoKICAgIG5vdCBuLmVtcHR5PwogIGVuZAoKICBkZWYgZXhl # YyhpbnB1dD1uaWwsIG91dHB1dD10cnVlKQogICAgcmVzCT0gW10KCiAgICBJ # Ty5wb3BlbihzZWxmLCAidysiKSBkbyB8ZnwKICAgICAgZi5wdXRzIGlucHV0 # CXVubGVzcyBpbnB1dC5uaWw/CiAgICAgIGYuY2xvc2Vfd3JpdGUKCiAgICAg # IHJlcwk9IGYucmVhZGxpbmVzIGlmIG91dHB1dAogICAgZW5kCgogICAgcmVz # LmpvaW4oIiIpCiAgZW5kCgogIGRlZiBldmFsCiAgICBLZXJuZWw6OmV2YWwo # c2VsZikKICBlbmQKCiAgZGVmIHNwZWFrCiAgICByZXF1aXJlICJkcmIiCgog # ICAgRFJiLnN0YXJ0X3NlcnZpY2UKICAgIERSYk9iamVjdC5uZXcobmlsLCAi # ZHJ1Ynk6Ly9sb2NhbGhvc3Q6MzEwMCIpLnNwZWFrKHNlbGYpCiAgZW5kCgog # IGRlZiBzcGxpdGJsb2NrcygqZGVsaW1pdGVycykKICAgIGJlZ2luZGVsaW1p # dGVycwk9IFtdCiAgICBlbmRkZWxpbWl0ZXJzCT0gW10KCiAgICBkZWxpbWl0 # ZXJzLmVhY2ggZG8gfGssIHZ8CiAgICAgIGJlZ2luZGVsaW1pdGVycwk8PCBr # LmRvd25jYXNlCiAgICAgIGVuZGRlbGltaXRlcnMJPDwgdi5kb3duY2FzZQog # ICAgZW5kCgogICAgYmQJPSBiZWdpbmRlbGltaXRlcnMuY29sbGVjdAl7fHN8 # IFJlZ2V4cC5lc2NhcGUocyl9CiAgICBlZAk9IGVuZGRlbGltaXRlcnMuY29s # bGVjdAkJe3xzfCBSZWdleHAuZXNjYXBlKHMpfQoKICAgIGJlCT0gYmQuam9p # bigifCIpCiAgICBlZQk9IGVkLmpvaW4oInwiKQoKICAgIHJlcwkJPSBbXQog # ICAgdHlwZQk9IDAKICAgIHRtcAkJPSAiIgogICAgYnMJCT0gIiIKICAgIGVz # CQk9ICIiCgogICAgc2VsZi5zcGxpdCgvKCN7ZWV9fCN7YmV9KS9pKS5lYWNo # IGRvIHxzfAogICAgICBpZiB0eXBlID09IDAKICAgICAgICBpZiBiZWdpbmRl # bGltaXRlcnMuaW5jbHVkZT8ocy5kb3duY2FzZSkKICAgICAgICAgIGkJPSBi # ZWdpbmRlbGltaXRlcnMuaW5kZXgocy5kb3duY2FzZSkKICAgICAgICAgIHR5 # cGUJPSBpKzEKICAgICAgICAgIHRtcAk9IHMKICAgICAgICAgIGJzCT0gcy5k # b3duY2FzZQogICAgICAgICAgZXMJPSBlbmRkZWxpbWl0ZXJzW2ldCiAgICAg # ICAgZWxzZQogICAgICAgICAgcmVzIDw8IFswLCBzXQl1bmxlc3Mgcy5lbXB0 # eT8KICAgICAgICBlbmQKICAgICAgZWxzZQogICAgICAgIGlmIHMuZG93bmNh # c2UgPT0gZXMKICAgICAgICAgIHJlcyA8PCBbdHlwZSwgdG1wICsgc10KICAg # ICAgICAgIHR5cGUJPSAwCiAgICAgICAgICB0bXAJPSAiIgogICAgICAgICAg # YnMJPSAiIgogICAgICAgICAgZXMJPSAiIgogICAgICAgIGVsc2UKICAgICAg # ICAgIGlmIHMuZG93bmNhc2UgPT0gYnMKICAgICAgICAgICAgcmVzIDw8IFsw # LCB0bXBdCiAgICAgICAgICAgIHRtcAk9IHMKICAgICAgICAgIGVsc2UKICAg # ICAgICAgICAgdG1wCT0gdG1wICsgcwogICAgICAgICAgZW5kCiAgICAgICAg # ZW5kCiAgICAgIGVuZAogICAgZW5kCgogICAgcmVzIDw8IFswLCB0bXBdCXVu # bGVzcyB0bXAuZW1wdHk/CgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYg # c3BsaXR3b3Jkcyh0b2tlbnM9W10pCiAgICB0b2tlbnMJCT0gW3Rva2Vuc10J # dW5sZXNzIHRva2Vucy5raW5kX29mPyhBcnJheSkKICAgIHJlcwkJCT0gW10K # CiAgICBzZWxmLnNwbGl0YmxvY2tzKFsiJyIsICInIl0sIFsnIicsICciJ10p # LmVhY2ggZG8gfHR5cGUsIHN8CiAgICAgIGNhc2UgdHlwZQogICAgICB3aGVu # IDAKICAgICAgICB0b2tlbnMuZWFjaCBkbyB8dG9rZW58CiAgICAgICAgICB0 # b2tlbjIJPSB0b2tlbgogICAgICAgICAgdG9rZW4yCT0gUmVnZXhwLmVzY2Fw # ZSh0b2tlbjIpCWlmIHRva2VuMi5raW5kX29mPyhTdHJpbmcpCiAgICAgICAg # ICBzLmdzdWIhKC8je3Rva2VuMn0vLCAiICN7dG9rZW59ICIpCiAgICAgICAg # ZW5kCiAgICAgICAgcy5zcGxpdCgpLmVhY2ggZG8gfHd8CiAgICAgICAgICBy # ZXMgPDwgdwogICAgICAgIGVuZAogICAgICB3aGVuIDEsIDIKICAgICAgICBy # ZXMgPDwgc1sxLi4tMl0KICAgICAgZW5kCiAgICBlbmQKCiAgICByZXR1cm4g # cmVzCiAgZW5kCgogIGRlZiB1bmNvbW1lbnQKICAgIHJlcwk9IFtdCgogICAg # c2VsZi5zcGxpdGJsb2NrcyhbIiciLCAiJyJdLCBbJyInLCAnIiddLCBbIiMi # LCAiXG4iXSkuZWFjaCBkbyB8dHlwZSwgc3wKICAgICAgY2FzZSB0eXBlCiAg # ICAgIHdoZW4gMCwgMSwgMgl0aGVuCXJlcyA8PCBzCiAgICAgIHdoZW4gMwkJ # dGhlbglyZXMgPDwgIlxuIgogICAgICBlbmQKICAgIGVuZAoKICAgIHJlcy5q # b2luKCIiKQogIGVuZAoKICBkZWYgbm9xdW90ZXMKICAgIHNlbGYuc3ViKC9c # QVsnIl0vLCAiIikuc3ViKC9bJyJdXHovLCAiIikKICBlbmQKCiAgZGVmIHRv # X2h0bWwoZW9sY29udmVyc2lvbj10cnVlKQogICAgcwk9IENHSS5lc2NhcGVI # VE1MKHNlbGYpCgogICAgcy5nc3ViISgvXCIvLCAiXCYjMzQ7IikKICAgIHMu # Z3N1YiEoL1wnLywgIlwmIzE4MDsiKQoKICAgIGlmIGVvbGNvbnZlcnNpb24K # ICAgICAgcy5nc3ViISgvXG4vICwgIjxicj4iKQogICAgZW5kCgogICAgcwog # IGVuZAoKICBkZWYgZnJvbV9odG1sKGVvbGNvbnZlcnNpb249dHJ1ZSkKICAg # IHMJPSBzZWxmCgogICAgcy5nc3ViISgvJiMzNDsvICwgIlwiIikKICAgIHMu # Z3N1YiEoLyYjMTgwOy8sICJcJyIpCgogICAgcwk9IENHSS51bmVzY2FwZUhU # TUwoc2VsZikKCiAgICBpZiBlb2xjb252ZXJzaW9uCiAgICAgIHMuZ3N1YiEo # Lzxicj4vLCAiXG4iKQogICAgZW5kCgogICAgcwogIGVuZAoKICBkZWYgdG9f # ZnMKICAgIGlmIG51bWVyaWM/CiAgICAgIHRvX2YKICAgIGVsc2UKICAgICAg # dG9fcwogICAgZW5kCiAgZW5kCmVuZAoKY2xhc3MgQXJyYXkKICBkZWYgY2hv # bXAhCiAgICBzZWxmLmNvbGxlY3Qhe3xzfCBzLmNob21wfQogIGVuZAoKICBk # ZWYgY2hvbXAKICAgIHNlbGYuY29sbGVjdHt8c3wgcy5jaG9tcH0KICBlbmQK # CiAgZGVmIGNvbXByZXNzCiAgICBzZWxmLmNvbGxlY3R7fHN8IHMuY29tcHJl # c3N9CiAgZW5kCgogIGRlZiB1bmNvbW1lbnQKICAgIHNlbGYuam9pbigiXDAi # KS51bmNvbW1lbnQuc3BsaXQoIlwwIikKICBlbmQKCiAgZGVmIHN0cmlwCiAg # ICBzZWxmLmNvbGxlY3R7fHN8IHMuc3RyaXB9CiAgZW5kCgogIGRlZiBzdW0K # ICAgIHJlcwk9IDAKICAgIHNlbGYuZWFjaCBkbyB8bnwKICAgICAgcmVzICs9 # IG4KICAgIGVuZAogICAgcmVzCiAgZW5kCgogIGRlZiBwcm9kdWN0CiAgICBy # ZXMJPSAxCiAgICBzZWxmLmVhY2ggZG8gfG58CiAgICAgIHJlcyAqPSBuCiAg # ICBlbmQKICAgIHJlcwogIGVuZAoKICBkZWYgam9pbndvcmRzKHNlcD0iICIs # IHF1b3RlPSciJykKICAgIHNlbGYuY29sbGVjdCBkbyB8c3wKICAgICAgcwk9 # IHF1b3RlICsgcyArIHF1b3RlCWlmIHMgPX4gL1tbOmJsYW5rOl1dLwogICAg # ICBzCiAgICBlbmQuam9pbihzZXApCiAgZW5kCgogIGRlZiBkb21pbm8odGFi # ZWxsZW4sIGtvbG9tPW5pbCwgb25seW1hdGNoaW5nbGluZXM9ZmFsc2UpCiAg # ICBsaW5rcwk9IHNlbGYKICAgIHJlcwkJPSBbXQogICAgcmVzCQk9IHNlbGYu # ZHVwCXVubGVzcyBvbmx5bWF0Y2hpbmdsaW5lcwoKICAgIHRhYmVsbGVuLmVh # Y2ggZG8gfHJlY2h0c3wKICAgICAgdG1wCT0gW10KCiAgICAgIGxpbmtzLmVh # Y2ggZG8gfGx8CiAgICAgICAgaWYga29sb20ubmlsPyBvciBsLmxlbmd0aCA9 # PSBrb2xvbQogICAgICAgICAgcmVjaHRzLmVhY2ggZG8gfHJ8CiAgICAgICAg # ICAgIHRtcCA8PCBsICsgclsxLi4tMV0JaWYgbFstMV0gPT0gclswXQogICAg # ICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgIGVuZAoKICAgICAgbGlua3MJ # PSB0bXAKICAgICAgcmVzLmNvbmNhdCh0bXApCiAgICBlbmQKCiAgICByZXMJ # PSByZXMuc29ydC51bmlxCiAgZW5kCgogIGRlZiBkb21pbm9sb29wKHRhYmVs # bGVuKQogICAgbHJlcwk9IFtdCiAgICByZXMJCT0gc2VsZi5kdXAKICAgIGtv # bG9tCT0gMgoKICAgIHdoaWxlIGxyZXMubGVuZ3RoICE9IHJlcy5sZW5ndGgg # ZG8KICAgICAgbHJlcwk9IHJlcy5kdXAKICAgICAgcmVzCT0gcmVzLmRvbWlu # byh0YWJlbGxlbiwga29sb20pCgogICAgICByZXMuZWFjaCBkbyB8bGluZXwK # ICAgICAgICBsaW5lIDw8ICIqIglpZiAobGluZS5sZW5ndGggIT0gbGluZS51 # bmlxLmxlbmd0aCBhbmQgbGluZVstMV0gIT0gIioiKQogICAgICBlbmQKCiAg # ICAgICRzdGRlcnIucHJpbnQgIiN7MTAwKihyZXMubGVuZ3RoKS8obHJlcy5s # ZW5ndGgpfSUgIgoKICAgICAga29sb20gKz0gMQogICAgZW5kCgogICAgJHN0 # ZGVyci5wdXRzICIiCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYgYnVp # bGR0cmVlCiAgICBzZWxmLmRvbWlub2xvb3AoW3NlbGZdKQogIGVuZAoKICBk # ZWYgc3Vic2V0KGZpZWxkcywgdmFsdWVzLCByZXN1bHRzLCBleGFjdD10cnVl # LCBlbXB0eWxpbmU9bmlsLCBqb2lud2l0aD1uaWwpCiAgICBmaWVsZHMJPSBb # ZmllbGRzXQkJdW5sZXNzIGZpZWxkcy5raW5kX29mPyBBcnJheQogICAgdmFs # dWVzCT0gW3ZhbHVlc10JCXVubGVzcyB2YWx1ZXMua2luZF9vZj8gQXJyYXkK # ICAgIHJlc3VsdHMJPSBbcmVzdWx0c10JCXVubGVzcyByZXN1bHRzLmtpbmRf # b2Y/IEFycmF5CiAgICBlbXB0eWxpbmUJPSBlbXB0eWxpbmUuZG93bmNhc2UJ # dW5sZXNzIGVtcHR5bGluZS5uaWw/CiAgICByZXMJCT0gc2VsZi5kdXAKICAg # IHJlcy5kZWxldGVfaWYge3RydWV9CgogICAgc2VsZi5lYWNoIGRvIHxsfAog # ICAgICBvawk9IHRydWUKCiAgICAgIGNhc2UgbC5jbGFzcy50b19zCiAgICAg # IHdoZW4gIlN0cmluZyIKICAgICAgICBjCQk9IGwuc3BsaXR3b3JkcwogICAg # ICAgIGNvcnJlY3Rpb24JPSAxCiAgICAgICAgam9pbndpdGgJPSAiICIJaWYg # am9pbndpdGgubmlsPwogICAgICB3aGVuICJBcnJheSIKICAgICAgICBjCQk9 # IGwKICAgICAgICBjb3JyZWN0aW9uCT0gMAogICAgICBlbmQKCiAgICAgICNj # YXRjaCA6c3RvcCBkbwogICAgICAgIHZhbHVlczIJPSB2YWx1ZXMuZHVwCiAg # ICAgICAgZmllbGRzLmVhY2ggZG8gfGZ8CiAgICAgICAgICB2CT0gdmFsdWVz # Mi5zaGlmdAogICAgICAgICAgdgk9IHYuZG93bmNhc2UJdW5sZXNzIHYubmls # PwogICAgICAgICAgaWYgZW1wdHlsaW5lLm5pbD8gb3IgKG5vdCB2ID09IGVt # cHR5bGluZSkKICAgICAgICAgICAgaWYgZXhhY3QKICAgICAgICAgICAgICB1 # bmxlc3MgKHYubmlsPyBvciBjW2YtY29ycmVjdGlvbl0uZG93bmNhc2UgPT0g # dikKICAgICAgICAgICAgICAgIG9rCT0gZmFsc2UKICAgICAgICAgICAgICAg # ICN0aHJvdyA6c3RvcAogICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBl # bHNlCiAgICAgICAgICAgICAgdW5sZXNzICh2Lm5pbD8gb3IgY1tmLWNvcnJl # Y3Rpb25dLmRvd25jYXNlLmluY2x1ZGU/KHYpKQogICAgICAgICAgICAgICAg # b2sJPSBmYWxzZQogICAgICAgICAgICAgICAgI3Rocm93IDpzdG9wCiAgICAg # ICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCiAg # ICAgICAgZW5kCiAgICAgICNlbmQKCiAgICAgIGlmIG9rCiAgICAgICAgcmVz # Mgk9IFtdCiAgICAgICAgcmVzdWx0cy5lYWNoIGRvIHxufAogICAgICAgICAg # cmVzMiA8PCBjW24tMV0KICAgICAgICBlbmQKICAgICAgICByZXMyCT0gcmVz # Mi5qb2luKGpvaW53aXRoKQl1bmxlc3Mgam9pbndpdGgubmlsPwogICAgICAg # IHJlcyA8PCByZXMyCiAgICAgIGVuZAogICAgZW5kCgogICAgcmV0dXJuIHJl # cwogIGVuZAoKICBkZWYgZm9ybWF0KGZvcm1hdCkKICAgIGZvcm1hdAk9IGZv # cm1hdC5nc3ViKC9ccy8sICIiKQogICAgcmVzCQk9IFtdCgogICAgW2Zvcm1h # dC5sZW5ndGgsIHNlbGYubGVuZ3RoXS5taW4udGltZXMgZG8gfG58CiAgICAg # IGNhc2UgZm9ybWF0W25dLmNoci5kb3duY2FzZQogICAgICB3aGVuICJpIgl0 # aGVuCXJlcyA8PCBzZWxmW25dLnRvX2kKICAgICAgd2hlbiAicyIJdGhlbgly # ZXMgPDwgc2VsZltuXS50b19zCiAgICAgIGVsc2UJCXJlcyA8PCBzZWxmW25d # CiAgICAgIGVuZAogICAgZW5kCgogICAgcmVzCiAgZW5kCgogIGRlZiB0b19p # CiAgICBjb2xsZWN0e3xjfCBjLnRvX2l9CiAgZW5kCgogIGRlZiB0b19wYXIK # ICAgIGRhc2gJPSBzZWxmLmR1cAogICAgYWxwaGEJPSBzZWxmLmR1cAogICAg # bnVtZXJpYwk9IHNlbGYuZHVwCgogICAgZGFzaC5kZWxldGVfaWYgZG8gfHN8 # CiAgICAgIG5vdCAocyA9fiAvXEEtLykgb3IKICAgICAgKHMgPX4gL1xBLT9b # WzpkaWdpdDpdXC5dK1x6Lykgb3IKICAgICAgKHMgPX4gL14tKyQvKQogICAg # ZW5kCgogICAgYWxwaGEuZGVsZXRlX2lmIGRvIHxzfAogICAgICAoKHMgPX4g # L1xBLS8pIG9yCiAgICAgICAocyA9fiAvXEEtP1tbOmRpZ2l0Ol1cLl0rXHov # KSkgYW5kCiAgICAgIG5vdCAoKHMgPX4gL15cLiskLykgb3IgKHMgPX4gL14t # KyQvKSkKICAgIGVuZAoKICAgIG51bWVyaWMuZGVsZXRlX2lmIGRvIHxzfAog # ICAgICBub3QgKHMgPX4gL1xBLT9bWzpkaWdpdDpdXC5dK1x6Lykgb3IKICAg # ICAgKHMgPX4gL15cLiskLykKICAgIGVuZAoKICAgIHJhaXNlICJPb3BzISIJ # aWYgZGFzaC5sZW5ndGggKyBhbHBoYS5sZW5ndGggKyBudW1lcmljLmxlbmd0 # aCAhPSBsZW5ndGgKCiAgICByZXR1cm4gZGFzaCwgYWxwaGEsIG51bWVyaWMK # ICBlbmQKCiAgZGVmIHNlbGYuZmlsZShmaWxlKQogICAgcmVzCT0gbmV3Cgog # ICAgRmlsZS5vcGVuKGZpbGUpIGRvIHxmfAogICAgICBmLnJlYWRsaW5lcy51 # bmNvbW1lbnQuY2hvbXAuZWFjaCBkbyB8bGluZXwKICAgICAgICByZXMgPDwg # bGluZQogICAgICBlbmQKICAgIGVuZAoKICAgIHJlcwogIGVuZAoKICBkZWYg # bnVtc29ydAogICAgc29ydCBkbyB8YSwgYnwKICAgICAgYTIJPSBhLnRvX2Zz # CiAgICAgIGIyCT0gYi50b19mcwoKICAgICAgaWYgYTIuY2xhc3MgIT0gYjIu # Y2xhc3MKICAgICAgICBhMgk9IGEKICAgICAgICBiMgk9IGIKICAgICAgZW5k # CgogICAgICBhMiA8PT4gYjIKICAgIGVuZAogIGVuZAoKICBkZWYgdG9fZnMK # ICAgIGNvbGxlY3R7fHN8IHMudG9fZnN9CiAgZW5kCgogIGRlZiBjaGFvcwog # ICAgcmVzCT0gc2VsZi5kdXAKCiAgICAobGVuZ3RoXjIpLnRpbWVzIGRvCiAg # ICAgIGEJPSByYW5kKGxlbmd0aCkKICAgICAgYgk9IHJhbmQobGVuZ3RoKQoK # ICAgICAgcmVzW2FdLCByZXNbYl0JPSByZXNbYl0sIHJlc1thXQogICAgZW5k # CgogICAgcmVzCiAgZW5kCgogIGRlZiBhbnkKICAgIGlmIGVtcHR5PwogICAg # ICBuaWwKICAgIGVsc2UKICAgICAgc2VsZltyYW5kKHNlbGYubGVuZ3RoKV0K # ICAgIGVuZAogIGVuZAoKICBkZWYgbWlubWF4CiAgICBtaW4sIHZhbHVlLCBt # YXgJPSBzZWxmCiAgICBbbWluLCBbdmFsdWUsIG1heF0ubWluXS5tYXgKICBl # bmQKCiAgZGVmIGlkcwogICAgY29sbGVjdHt8ZXwgZS5pZHN9CiAgZW5kCgog # IGRlZiByb3RhdGUKICAgIHJhaXNlICJBcnJheSBoYXMgdG8gYmUgMkQgKEFu # IEFycmF5IG9mIEFycmF5cykuIgl1bmxlc3Mgc2VsZi5kdXAuZGVsZXRlX2lm # e3xhfCBhLmtpbmRfb2Y/KEFycmF5KX0uZW1wdHk/CgogICAgcmVzCT0gW10K # CiAgICBzZWxmWzBdLmxlbmd0aC50aW1lcyBkbyB8eHwKICAgICAgYQk9IFtd # CgogICAgICBzZWxmLmxlbmd0aC50aW1lcyBkbyB8eXwKICAgICAgICBhIDw8 # IHNlbGZbeV1beF0KICAgICAgZW5kCgogICAgICByZXMgPDwgYQogICAgZW5k # CgogICAgcmVzCiAgZW5kCgogIGRlZiB0b19oCiAgICByYWlzZSAiQXJyYXkg # aGFzIHRvIGJlIDJEIChBbiBBcnJheSBvZiBBcnJheXMpLiIJdW5sZXNzIHNl # bGYuZHVwLmRlbGV0ZV9pZnt8YXwgYS5raW5kX29mPyhBcnJheSl9LmVtcHR5 # PwoKICAgIHJlcwk9IHt9CgogICAgc2VsZi5lYWNoIGRvIHxrLCB2LCAqcmVz # dHwKICAgICAgcmVzW2tdCT0gdgogICAgZW5kCgogICAgcmVzCiAgZW5kCmVu # ZAoKY2xhc3MgSGFzaAogIGRlZiBzYXZlKGZpbGUsIGFwcGVuZD1mYWxzZSkK # ICAgIG9yZwk9IHt9CiAgICBvcmcJPSBIYXNoLmZpbGUoZmlsZSkJaWYgKGFw # cGVuZCBhbmQgRmlsZS5maWxlPyhmaWxlKSkKCiAgICBzZWxmLnNvcnQuZWFj # aCBkbyB8aywgdnwKICAgICAgb3JnW2tdCT0gdgogICAgZW5kCgogICAgRmls # ZS5vcGVuKGZpbGUsICJ3IikgZG8gfGZ8CiAgICAgIG9yZy5zb3J0LmVhY2gg # ZG8gfGssIHZ8CiAgICAgICAgZi5wdXRzICIlc1x0PSAlcyIgJSBbaywgdl0K # ICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIHN1YnNldChmaWVsZHMs # IHZhbHVlcywgcmVzdWx0cz1uaWwsIGV4YWN0PXRydWUsIGVtcHR5bGluZT1u # aWwsIGpvaW53aXRoPW5pbCkKICAgIGZpZWxkcwk9IFtmaWVsZHNdCQl1bmxl # c3MgZmllbGRzLmtpbmRfb2Y/IEFycmF5CiAgICB2YWx1ZXMJPSBbdmFsdWVz # XQkJdW5sZXNzIHZhbHVlcy5raW5kX29mPyBBcnJheQogICAgcmVzdWx0cwk9 # IFtyZXN1bHRzXQkJdW5sZXNzIHJlc3VsdHMua2luZF9vZj8gQXJyYXkKICAg # IGVtcHR5bGluZQk9IGVtcHR5bGluZS5kb3duY2FzZQl1bmxlc3MgZW1wdHls # aW5lLm5pbD8KICAgIHJlcwkJPSBzZWxmLmR1cAogICAgcmVzLmRlbGV0ZV9p # ZiB7dHJ1ZX0KCiAgICBzZWxmLmVhY2ggZG8gfGssIGx8CiAgICAgIG9rCT0g # dHJ1ZQoKICAgICAgY2FzZSBsLmNsYXNzLnRvX3MKICAgICAgd2hlbiAiU3Ry # aW5nIgogICAgICAgIGMJCT0gbC5zcGxpdHdvcmRzCiAgICAgICAgY29ycmVj # dGlvbgk9IDEKICAgICAgICBqb2lud2l0aAk9ICIgIglpZiBqb2lud2l0aC5u # aWw/CiAgICAgIHdoZW4gIkFycmF5IgogICAgICAgIGMJCT0gbAogICAgICAg # IGNvcnJlY3Rpb24JPSAwCiAgICAgIGVuZAoKICAgICAgI2NhdGNoIDpzdG9w # IGRvCiAgICAgICAgdmFsdWVzMgk9IHZhbHVlcy5kdXAKICAgICAgICBmaWVs # ZHMuZWFjaCBkbyB8ZnwKICAgICAgICAgIHYJPSB2YWx1ZXMyLnNoaWZ0CiAg # ICAgICAgICB2CT0gdi5kb3duY2FzZQl1bmxlc3Mgdi5uaWw/CiAgICAgICAg # ICBpZiBlbXB0eWxpbmUubmlsPyBvciAobm90IHYgPT0gZW1wdHlsaW5lKQog # ICAgICAgICAgICBpZiBleGFjdAogICAgICAgICAgICAgIHVubGVzcyAodi5u # aWw/IG9yIGNbZi1jb3JyZWN0aW9uXS5kb3duY2FzZSA9PSB2KQogICAgICAg # ICAgICAgICAgb2sJPSBmYWxzZQogICAgICAgICAgICAgICAgI3Rocm93IDpz # dG9wCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVsc2UKICAgICAg # ICAgICAgICB1bmxlc3MgKHYubmlsPyBvciBjW2YtY29ycmVjdGlvbl0uZG93 # bmNhc2UuaW5jbHVkZT8odikpCiAgICAgICAgICAgICAgICBvawk9IGZhbHNl # CiAgICAgICAgICAgICAgICAjdGhyb3cgOnN0b3AKICAgICAgICAgICAgICBl # bmQKICAgICAgICAgICAgZW5kCiAgICAgICAgICBlbmQKICAgICAgICBlbmQK # ICAgICAgI2VuZAoKICAgICAgaWYgb2sKICAgICAgICByZXMyCT0gW10KICAg # ICAgICBpZiByZXN1bHRzID09IFtuaWxdCiAgICAgICAgICByZXMyCT0gYwog # ICAgICAgIGVsc2UKICAgICAgICAgIHJlc3VsdHMuZWFjaCBkbyB8bnwKICAg # ICAgICAgICAgcmVzMiA8PCBjW24tY29ycmVjdGlvbl0KICAgICAgICAgIGVu # ZAogICAgICAgIGVuZAogICAgICAgIHJlczIJPSByZXMyLmpvaW4oam9pbndp # dGgpCXVubGVzcyBqb2lud2l0aC5uaWw/CiAgICAgICAgcmVzW2tdCT0gcmVz # MgogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiByZXMKICBlbmQKCiAg # ZGVmIHRvX2kKICAgIGNvbGxlY3R7fGssIHZ8IHYudG9faX0KICBlbmQKCiAg # ZGVmIHNlbGYuZmlsZShmaWxlKQogICAgcmVzCT0gbmV3CgogICAgRmlsZS5v # cGVuKGZpbGUpIGRvIHxmfAogICAgICAjZi5yZWFkbGluZXMuY2hvbXAuZWFj # aCBkbyB8bGluZXwKICAgICAgd2hpbGUgbGluZSA9IGYuZ2V0cyBkbwogICAg # ICAgIGxpbmUuY2hvbXAhCgogICAgICAgIHVubGVzcyBsaW5lLmVtcHR5Pwog # ICAgICAgICAgaywgdgk9IGxpbmUuc3BsaXQoL1xzKj1ccyovLCAyKQogICAg # ICAgICAgcmVzW2tdCT0gdgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVu # ZAoKICAgIHJlcwogIGVuZAoKICBkZWYgaWRzCiAgICBjb2xsZWN0e3xrLCB2 # fCBbaywgdl0uaWRzfQogIGVuZAplbmQKCmRlZiBpZDJyZWYoaWQpCiAgT2Jq # ZWN0U3BhY2UuX2lkMnJlZihpZCkKZW5kCgpkZWYgYWZ0ZXIoc2Vjb25kcywg # KmFyZ3MpCiAgaWYgbm90IHNlY29uZHMubmlsPyBhbmQgbm90IHNlY29uZHMu # emVybz8KICAgIFRocmVhZC5uZXcoKmFyZ3MpIGRvIHwqYXJnczJ8CiAgICAg # IHNsZWVwIHNlY29uZHMKICAgICAgeWllbGQoKmFyZ3MyKQogICAgZW5kCiAg # ZW5kCmVuZAoKZGVmIGV2ZXJ5KHNlY29uZHMsICphcmdzKQogIGlmIG5vdCBz # ZWNvbmRzLm5pbD8gYW5kIG5vdCBzZWNvbmRzLnplcm8/CiAgICBUaHJlYWQu # bmV3KCphcmdzKSBkbyB8KmFyZ3MyfAogICAgICBsb29wIGRvCiAgICAgICAg # c2xlZXAgc2Vjb25kcwogICAgICAgIHlpZWxkKCphcmdzMikKICAgICAgZW5k # CiAgICBlbmQKICBlbmQKZW5kCgpkZWYgZXZ0aW1lb3V0KHNlY29uZHMpCiAg # YmVnaW4KICAgIHRpbWVvdXQoc2Vjb25kcykgZG8KICAgICAgeWllbGQKICAg # IGVuZAogIHJlc2N1ZSBUaW1lb3V0RXJyb3IKICBlbmQKZW5kCgpkZWYgZXZ0 # aW1lb3V0cmV0cnkoc2Vjb25kcykKICBvawk9IGZhbHNlCgogIHdoaWxlIG5v # dCBvawogICAgZXZ0aW1lb3V0KHNlY29uZHMpIGRvCiAgICAgIHlpZWxkCiAg # ICAgIG9rCT0gdHJ1ZQogICAgZW5kCiAgZW5kCmVuZAoKZGVmIHRyYXAoc2ln # bmFsKQogIEtlcm5lbDo6dHJhcChzaWduYWwpIGRvCiAgICB5aWVsZAogIGVu # ZAoKCSMgU2VlbXMgcG9pbnRsZXNzLCBidXQgaXQncyBmb3IgY2F0Y2hpbmcg # XkMgdW5kZXIgV2luZG93cy4uLgoKICBldmVyeSgxKQl7fQlpZiB3aW5kb3dz # PwplbmQKCmRlZiBsaW51eD8KICBub3QgKHRhcmdldF9vcy5kb3duY2FzZSA9 # fiAvbGludXgvKS5uaWw/CmVuZAoKZGVmIGRhcndpbj8KICBub3QgKHRhcmdl # dF9vcy5kb3duY2FzZSA9fiAvZGFyd2luLykubmlsPwplbmQKCmRlZiB3aW5k # b3dzPwogIG5vdCAodGFyZ2V0X29zLmRvd25jYXNlID1+IC8zMi8pLm5pbD8K # ZW5kCgpkZWYgY3lnd2luPwogIG5vdCAodGFyZ2V0X29zLmRvd25jYXNlID1+ # IC9jeWcvKS5uaWw/CmVuZAoKZGVmIHRhcmdldF9vcwogIENvbmZpZzo6Q09O # RklHWyJ0YXJnZXRfb3MiXSBvciAiIgplbmQKCmRlZiB1c2VyCiAgRU5WWyJV # U0VSIl0gb3IgRU5WWyJVU0VSTkFNRSJdCmVuZAoKZGVmIGhvbWUKICAoRU5W # WyJIT01FIl0gb3IgRU5WWyJVU0VSUFJPRklMRSJdIG9yIChGaWxlLmRpcmVj # dG9yeT8oImg6LyIpID8gImg6IiA6ICJjOiIpKS5nc3ViKC9cXC8sICIvIikK # ZW5kCgpkZWYgdGVtcAogIChFTlZbIlRNUERJUiJdIG9yIEVOVlsiVE1QIl0g # b3IgRU5WWyJURU1QIl0gb3IgIi90bXAiKS5nc3ViKC9cXC8sICIvIikKZW5k # CgpkZWYgc3RkdG1wCiAgJHN0ZGVyciA9ICRzdGRvdXQgPSBGaWxlLm5ldygi # I3t0ZW1wfS9ydWJ5LiN7UHJvY2Vzcy5waWR9LmxvZyIsICJhIikKZW5kCnN0 # ZHRtcAlpZiBkZWZpbmVkPyhSVUJZU0NSSVBUMkVYRSkgYW5kIChSVUJZU0NS # SVBUMkVYRSA9fiAvcnVieXcvaSkKCiRub2JtCT0gZmFsc2UKCmRlZiBub2Jt # CiAgJG5vYm0JPSB0cnVlCmVuZAoKZGVmIGJtKGxhYmVsPSIiKQogIGlmICRu # b2JtCiAgICBpZiBibG9ja19naXZlbj8KICAgICAgcmV0dXJuIHlpZWxkCiAg # ICBlbHNlCiAgICAgIHJldHVybiBuaWwKICAgIGVuZAogIGVuZAoKICBsYWJl # bAk9IGxhYmVsLmluc3BlY3QJI3VubGVzcyBsYWJlbC5raW5kX29mPyhTdHJp # bmcpCiAgcmVzCT0gbmlsCgogICRibV9tdXRleAk9ICgkYm1fbXV0ZXggb3Ig # TXV0ZXgubmV3KQoKICAkYm1fbXV0ZXguc3luY2hyb25pemUgZG8KICAgIGlm # ICRibS5uaWw/CiAgICAgIHJlcXVpcmUgImV2L2JtIgoKICAgICAgJGJtCQk9 # IHt9CgogICAgICBhdF9leGl0IGRvCiAgICAgICAgbAk9ICRibS5rZXlzLmNv # bGxlY3R7fHN8IHMubGVuZ3RofS5tYXgKCSNmb3JtYXQxCT0gIiUxMHMgJTEw # cyAlMTBzICUxMHMgJTEwcyAlMTBzICAgJXMiCgkjZm9ybWF0Mgk9ICIlMTAu # NmYgJTEwLjZmICUxMC42ZiAlMTAuNmYgJTEwLjZmICUxMGQgICAlcyIKCSMk # c3RkZXJyLnB1dHMgZm9ybWF0MSAlIFsiVVNFUkNQVSIsICJTWVNDUFUiLCAi # Q1VTRVJDUFUiLCAiQ1NZU0NQVSIsICJFTEFQU0VEIiwgIkNPVU5UIiwgIkxB # QkVMIl0KCSMkYm0uc29ydHt8YSwgYnwgW2JbMV0sIGJbMF1dIDw9PiBbYVsx # XSwgYVswXV19LmVhY2ggZG8gfGssIHZ8CgkgICMkc3RkZXJyLnB1dHMgZm9y # bWF0MiAlICh2ICsgW2tdKQoJI2VuZAoKCWZvcm1hdDEJPSAiJTEwcyAlMTBz # ICUxMHMgICAlcyIKCWZvcm1hdDIJPSAiJTEwLjZmICUxMC42ZiAlMTBkICAg # JXMiCiAgICAgICAgJGJtLmVhY2ggZG8gfGssIHZ8CiAgICAgICAgICAkYm1b # a10JPSBbdlswXSt2WzFdLCB2WzRdLCB2WzVdXQogICAgICAgIGVuZAoJJHN0 # ZGVyci5wdXRzIGZvcm1hdDEgJSBbIkNQVSIsICJFTEFQU0VEIiwgIkNPVU5U # IiwgIkxBQkVMIl0KCSRibS5zb3J0e3xhLCBifCBbYlsxXSwgYlswXV0gPD0+ # IFthWzFdLCBhWzBdXX0uZWFjaCBkbyB8aywgdnwKCSAgJHN0ZGVyci5wdXRz # IGZvcm1hdDIgJSAodiArIFtrXSkKCWVuZAogICAgICBlbmQKICAgIGVuZAoK # ICAgICRibVtsYWJlbF0gPSBbMC4wXSo1ICsgWzBdCXVubGVzcyAkYm0uaW5j # bHVkZT8obGFiZWwpCiAgICAkYm1bbGFiZWxdWzVdICs9IDEKICBlbmQKCiAg # aWYgYmxvY2tfZ2l2ZW4/CiAgICBibQk9IEJlbmNobWFyay5tZWFzdXJle3Jl # cyA9IHlpZWxkfQogICAgYm1hCT0gYm0udG9fYQkjIFtkdW1teSBsYWJlbCwg # dXNlciBDUFUgdGltZSwgc3lzdGVtIENQVSB0aW1lLCBjaGlsZHJlbnMgdXNl # ciBDUFUgdGltZSwgY2hpbGRyZW5zIHN5c3RlbSBDUFUgdGltZSwgZWxhcHNl # ZCByZWFsIHRpbWVdCgogICAgJGJtX2xhc3QJPSBibWEKCiAgICAkYm1fbXV0 # ZXguc3luY2hyb25pemUgZG8KICAgICAgZQk9ICRibVtsYWJlbF0KICAgICAg # MC51cHRvKDQpIGRvIHxufAogICAgICAgIGVbbl0gKz0gYm1hW24rMV0KICAg # ICAgZW5kCiAgICBlbmQKICBlbmQKCiAgcmVzCmVuZAoKZGVmIHRyYWNlCiAg # cmVzCT1uaWwKCiAgc2V0X3RyYWNlX2Z1bmMgbGFtYmRhIHsgfGV2ZW50LCBm # aWxlLCBsaW5lLCBpZCwgYmluZGluZywgY2xhc3NuYW1lfAogICAgJHN0ZGVy # ci5wcmludGYgIiU4cyAlczolLTJkICUxMHMgJThzXG4iLCBldmVudCwgZmls # ZSwgbGluZSwgaWQsIGNsYXNzbmFtZQogIH0KCiAgaWYgYmxvY2tfZ2l2ZW4/ # CiAgICByZXMJPSB5aWVsZAoKICAgIG5vdHJhY2UKICBlbmQKCiAgcmVzCmVu # ZAoKZGVmIG5vdHJhY2UKICBzZXRfdHJhY2VfZnVuYyBuaWwKZW5kCgpkZWYg # bGFtYmRhX2NhY2hlZCgmYmxvY2spCiAgaGFzaAk9IHt9CiAgbGFtYmRhIGRv # IHwqYXJnc3wKICAgIHJlcwk9IGhhc2hbYXJnc10KICAgIGlmIHJlcy5uaWw/ # CiAgICAgIHJlcwkJPSBibG9jay5jYWxsKCphcmdzKQogICAgICBoYXNoW2Fy # Z3NdCT0gcmVzCiAgICBlbmQKICAgIHJlcwogIGVuZAplbmQKCmRlZiBhc2so # b3B0aW9ucywgdGV4dD1mYWxzZSkKICBpCT0gMAogICRzdGRlcnIucHV0cyAi # IgogIG9wdGlvbnMuZWFjaCBkbyB8c3wKICAgICRzdGRlcnIucHV0cyAiICVk # ICVzIiAlIFtpKz0xLCBzXQogIGVuZAogICRzdGRlcnIucHV0cyAiIgogICRz # dGRlcnIucHJpbnQgIj8gIgogIHJlcwk9ICRzdGRpbi5nZXRzCiAgdW5sZXNz # IHJlcy5uaWw/CiAgICByZXMJPSByZXMuc3RyaXAKICAgIHJlcwk9IG9wdGlv # bnNbcmVzLnRvX2ktMV0JaWYgdGV4dCBhbmQgbm90IHJlcy5lbXB0eT8KICBl # bmQKICByZXMKZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5lYXIycnVi # eXNjcmlwdC5mLjExNjY4LnRhci9ldi94bWwucmIAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw # MDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwNTMxNQAxMDI1MDMyMDYx # MwAwMTc3NzYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAcmVxdWlyZSAiZXYvc2dtbCIKCmNsYXNzIFNHTUxPYmplY3QKICBk # ZWYgdG9feChjbG9zZXRhZ3M9dHJ1ZSkKICAgIHJlcwk9ICIiCgogICAgcGFy # c2V0cmVlKCJwcmVjaGlsZHJlbl90b194IiwgInBvc3RjaGlsZHJlbl90b194 # IiwgcmVzLCBjbG9zZXRhZ3MpCgogICAgcmVzCiAgZW5kCmVuZAoKY2xhc3Mg # VGV4dCA8IFNHTUxPYmplY3QKICBkZWYgcHJlY2hpbGRyZW5fdG9feChyZXMs # IGNsb3NldGFncykKICAgIHJlcyA8PCBAdGV4dC5zdHJpcAl1bmxlc3MgQHRl # eHQuc3RyaXAuZW1wdHk/CiAgZW5kCmVuZAoKY2xhc3MgQ29tbWVudCA8IFNH # TUxPYmplY3QKICBkZWYgcHJlY2hpbGRyZW5fdG9feChyZXMsIGNsb3NldGFn # cykKICAgIHJlcyA8PCAiXG4iCWlmIG5vdCBwcmV2aW91cyhbXSwgW1RleHRd # KS5raW5kX29mPyhDb21tZW50KQogICAgbGluZXMJPSBAdGV4dC5nc3ViKC8o # PCEtLXwtLT4pLywgIiIpLmxmLnNwbGl0KC9cbi8pCiAgICBpZiBsaW5lcy5s # ZW5ndGggPT0gMQogICAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgIjwh # LS0gIiArIGxpbmVzWzBdLnN0cmlwICsgIiAtLT4iICsgIlxuIgogICAgZWxz # ZQogICAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgIjwhLS0iICsgIlxu # IgogICAgICByZXMgPDwgbGluZXMuY29sbGVjdHt8c3wgIiAgIiooQGxldmVs # LTEpICsgcy5zdHJpcH0uZGVsZXRlX2lme3xzfCBzLmNvbXByZXNzLmVtcHR5 # P30uam9pbigiXG4iKQogICAgICByZXMgPDwgIlxuIgogICAgICByZXMgPDwg # IiAgIiooQGxldmVsLTEpICsgIi0tPiIgKyAiXG4iCiAgICAgIHJlcyA8PCAi # XG4iCiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBTcGVjaWFsIDwgU0dNTE9i # amVjdAogIGRlZiBwcmVjaGlsZHJlbl90b194KHJlcywgY2xvc2V0YWdzKQog # ICAgcmVzIDw8ICIgICIqKEBsZXZlbC0xKSArIEB0ZXh0LmNvbXByZXNzICsg # IlxuIgogIGVuZAplbmQKCmNsYXNzIEluc3RydWN0aW9uIDwgU0dNTE9iamVj # dAogIGRlZiBwcmVjaGlsZHJlbl90b194KHJlcywgY2xvc2V0YWdzKQogICAg # cmVzIDw8ICIgICIqKEBsZXZlbC0xKSArIEB0ZXh0LmNvbXByZXNzICsgIlxu # IgogIGVuZAplbmQKCmNsYXNzIE9wZW5UYWcgPCBUYWcKICBkZWYgcHJlY2hp # bGRyZW5fdG9feChyZXMsIGNsb3NldGFncykKICAgIGEJPSBbQHN1YnR5cGVd # CgogICAgYXJncwk9IEBhcmdzLmR1cAogICAgYXJncy5kZWxldGUoImlkIikK # ICAgIGFyZ3MuZGVsZXRlKCJuYW1lIikKICAgIGFyZ3MJPSBhcmdzLnNvcnQK # ICAgIGFyZ3MudW5zaGlmdChbImlkIiwgQGFyZ3NbImlkIl1dKQkJaWYgQGFy # Z3MuaW5jbHVkZT8oImlkIikKICAgIGFyZ3MudW5zaGlmdChbIm5hbWUiLCBA # YXJnc1sibmFtZSJdXSkJaWYgQGFyZ3MuaW5jbHVkZT8oIm5hbWUiKQoKICAg # IGFyZ3MuZWFjaCBkbyB8aywgdnwKICAgICAgaWYgbm90IHYuaW5jbHVkZT8o # IiciKQogICAgICAgIGEgPDwgIiN7a309JyN7dn0nIgogICAgICBlbHNlCiAg # ICAgICAgaWYgbm90IHYuaW5jbHVkZT8oJyInKQogICAgICAgICAgYSA8PCAi # I3trfT1cIiN7dn1cIiIKICAgICAgICBlbHNlCiAgICAgICAgICBhIDw8ICIj # e2t9PScje3YuZ3N1YigvXCcvLCAnIicpfSciCiAgICAgICAgZW5kCiAgICAg # IGVuZAogICAgZW5kCgogICAgaWYgQGNoaWxkcmVuLmxlbmd0aCA9PSAwIG9y # IChAY2hpbGRyZW4ubGVuZ3RoID09IDEgYW5kIEBjaGlsZHJlblswXS5raW5k # X29mPyhUZXh0KSBhbmQgQGNoaWxkcmVuWzBdLnRleHQuY29tcHJlc3MuZW1w # dHk/KQogICAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgIjwje2Euam9p # bigiICIpfS8+IiArICJcbiIKICAgIGVsc2UKICAgICAgaWYgQGNoaWxkcmVu # Lmxlbmd0aCA9PSAxIGFuZCBAY2hpbGRyZW5bMF0ua2luZF9vZj8oVGV4dCkg # YW5kIEBjaGlsZHJlblswXS50ZXh0LmxmLnNwbGl0KC9cbi8pLmxlbmd0aCA9 # PSAxCiAgICAgICAgcmVzIDw8ICIgICIqKEBsZXZlbC0xKSArICI8I3thLmpv # aW4oIiAiKX0+IgogICAgICBlbHNlCiAgICAgICAgcmVzIDw8ICIgICIqKEBs # ZXZlbC0xKSArICI8I3thLmpvaW4oIiAiKX0+IiArICJcbiIKICAgICAgZW5k # CiAgICBlbmQKICBlbmQKCiAgZGVmIHBvc3RjaGlsZHJlbl90b194KHJlcywg # Y2xvc2V0YWdzKQogICAgaWYgY2xvc2V0YWdzCiAgICAgIHVubGVzcyBAY2hp # bGRyZW4ubGVuZ3RoID09IDAgb3IgKEBjaGlsZHJlbi5sZW5ndGggPT0gMSBh # bmQgQGNoaWxkcmVuWzBdLmtpbmRfb2Y/KFRleHQpIGFuZCBAY2hpbGRyZW5b # MF0udGV4dC5jb21wcmVzcy5lbXB0eT8pCiAgICAgICAgcmVzIDw8ICJcbiIJ # CWlmIEBjaGlsZHJlbi5sZW5ndGggPT0gMSBhbmQgQGNoaWxkcmVuWzBdLmtp # bmRfb2Y/KFRleHQpIGFuZCBAY2hpbGRyZW5bMF0udGV4dC5sZi5zcGxpdCgv # XG4vKS5sZW5ndGggPiAxCiAgICAgICAgcmVzIDw8ICIgICIqKEBsZXZlbC0x # KQl1bmxlc3MgQGNoaWxkcmVuLmxlbmd0aCA9PSAxIGFuZCBAY2hpbGRyZW5b # MF0ua2luZF9vZj8oVGV4dCkgYW5kIEBjaGlsZHJlblswXS50ZXh0LmxmLnNw # bGl0KC9cbi8pLmxlbmd0aCA9PSAxCiAgICAgICAgcmVzIDw8ICI8LyN7QHN1 # YnR5cGV9PiIKICAgICAgICByZXMgPDwgIlxuIgogICAgICBlbmQKICAgIGVu # ZAogIGVuZAplbmQKCmNsYXNzIFhNTCA8IFNHTUwKICBkZWYgdG9feChjbG9z # ZXRhZ3M9dHJ1ZSkKICAgIHJlcwk9ICIiCgogICAgcGFyc2V0cmVlKCJwcmVj # aGlsZHJlbl90b194IiwgInBvc3RjaGlsZHJlbl90b194IiwgcmVzLCBjbG9z # ZXRhZ3MpCgogICAgcmVzCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE2Njgu # dGFyL2V2L3NnbWwucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAw # MDAxNzUwADAwMDAwMDEwMTI1ADEwMjUwMzIwNjEzADAyMDEzMwAgMAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # ZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAw # MDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXF1aXJlICJl # di90cmVlIgoKY2xhc3MgU0dNTE9iamVjdCA8IFRyZWVPYmplY3QKICBkZWYg # dG9fcwogICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNoaWxkcmVu # X3RvX3MiLCAicG9zdGNoaWxkcmVuX3RvX3MiLCByZXMpCgogICAgcmVzCiAg # ZW5kCgogIGRlZiB0b19oCiAgICByZXMJPSAiIgoKICAgIHBhcnNldHJlZSgi # cHJlY2hpbGRyZW5fdG9fc2dtbCIsICJwb3N0Y2hpbGRyZW5fdG9fc2dtbCIs # IHJlcykKCiAgICByZXMKICBlbmQKZW5kCgpjbGFzcyBUZXh0IDwgU0dNTE9i # amVjdAogIGRlZiBpbml0aWFsaXplKHRleHQpCiAgICBzdXBlcigpCiAgICBA # dGV4dCA9IHRleHQKICBlbmQKCiAgZGVmIHByZWNoaWxkcmVuX3RvX3MocmVz # KQogICAgI3JlcyA8PCAiI3tDR0kudW5lc2NhcGVIVE1MKEB0ZXh0KX0gIgog # ICAgcmVzIDw8IEB0ZXh0CiAgZW5kCgogIGRlZiBwcmVjaGlsZHJlbl90b19z # Z21sKHJlcykKICAgICNyZXMgPDwgIiN7Q0dJLnVuZXNjYXBlSFRNTChAdGV4 # dCl9IgogICAgcmVzIDw8IEB0ZXh0CiAgZW5kCmVuZAoKY2xhc3MgQ29tbWVu # dCA8IFNHTUxPYmplY3QKICBkZWYgaW5pdGlhbGl6ZSh0ZXh0KQogICAgc3Vw # ZXIoKQogICAgQHRleHQgPSB0ZXh0CiAgZW5kCgogIGRlZiBwcmVjaGlsZHJl # bl90b19zZ21sKHJlcykKICAgIHJlcyA8PCAiI3tAdGV4dH0iCiAgZW5kCmVu # ZAoKY2xhc3MgU3BlY2lhbCA8IFNHTUxPYmplY3QKICBkZWYgaW5pdGlhbGl6 # ZSh0ZXh0KQogICAgc3VwZXIoKQogICAgQHRleHQgPSB0ZXh0CiAgZW5kCgog # IGRlZiBwcmVjaGlsZHJlbl90b19zZ21sKHJlcykKICAgIHJlcyA8PCAiI3tA # dGV4dH0iCiAgZW5kCmVuZAoKY2xhc3MgSW5zdHJ1Y3Rpb24gPCBTR01MT2Jq # ZWN0CiAgZGVmIGluaXRpYWxpemUodGV4dCkKICAgIHN1cGVyKCkKICAgIEB0 # ZXh0ID0gdGV4dAogIGVuZAoKICBkZWYgcHJlY2hpbGRyZW5fdG9fc2dtbChy # ZXMpCiAgICByZXMgPDwgIiN7QHRleHR9IgogIGVuZAplbmQKCmNsYXNzIFRh # ZyA8IFNHTUxPYmplY3QKICBhdHRyX3JlYWRlciA6YXJncwogIGF0dHJfd3Jp # dGVyIDphcmdzCgogIGRlZiBpbml0aWFsaXplKHN1YnR5cGUsIGFyZ3M9e30p # CiAgICBzdXBlcihzdWJ0eXBlKQogICAgQGFyZ3MgPSBhcmdzCiAgICBAdGV4 # dCA9ICIiCiAgZW5kCmVuZAoKY2xhc3MgT3BlblRhZyA8IFRhZwogIGRlZiBp # bml0aWFsaXplKCphcmdzKQogICAgc3VwZXIKICAgIEB1cG9yZG93biA9IERv # d24KICBlbmQKCiAgZGVmIHByZWNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAg # YQk9IFtAc3VidHlwZV0KCiAgICBAYXJncy5zb3J0LmVhY2ggZG8gfGssIHZ8 # CiAgICAgIGlmIG5vdCB2LmluY2x1ZGU/KCInIikKICAgICAgICBhIDw8ICIj # e2t9PScje3Z9JyIKICAgICAgZWxzZQogICAgICAgIGlmIG5vdCB2LmluY2x1 # ZGU/KCciJykKICAgICAgICAgIGEgPDwgIiN7a309XCIje3Z9XCIiCiAgICAg # ICAgZWxzZQogICAgICAgICAgYSA8PCAiI3trfT0nI3t2LmdzdWIoL1wnLywg # JyInKX0nIgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIHJl # cyA8PCAiPCN7YS5qb2luKCIgIil9PiIgKyBAdGV4dAogIGVuZAoKICBkZWYg # cG9zdGNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAgcmVzIDw8ICI8LyN7QHN1 # YnR5cGV9PiIJaWYgQGNsb3NlZAogIGVuZAplbmQKCmNsYXNzIENsb3NlVGFn # IDwgVGFnCiAgZGVmIGluaXRpYWxpemUoKmFyZ3MpCiAgICBzdXBlcgogICAg # QHVwb3Jkb3duID0gRHVtbXkKICBlbmQKZW5kCgpjbGFzcyBTR01MIDwgVHJl # ZQogIGRlZiBpbml0aWFsaXplKCphcmdzKQogICAgQHRhZ2NhY2hlCT0ge30K # CiAgICBzdXBlcgogIGVuZAoKICBkZWYgYnVpbGRvYmplY3RzKHN0cmluZykK # ICAgIEBvYmplY3RzID0gW10KCiAgICB2ZXJ3ZXJrMwk9CiAgICBsYW1iZGEg # ZG8gfHN0cmluZ3wKICAgICAgYQk9IFtdCiAgCiAgICAgIHN0cmluZ1sxLi4t # Ml0uc3BsaXRibG9ja3MoWyInIiwgIiciXSwgWyciJywgJyInXSkuY29sbGVj # dCBkbyB8dHlwZSwgc3wKICAgICAgICBjYXNlIHR5cGUKICAgICAgICB3aGVu # IDAKICAgICAgICAgIGlmIHNlbGYuY2xhc3MudG9fcyA9PSAiSFRNTCIKICAg # ICAgICAgICAgcy5zcGxpdHdvcmRzLmVhY2ggZG8gfHd8CiAgICAgICAgICAg # ICAgZAk9IHcuc3BsaXQoIj0iLCAyKQogIAogICAgICAgICAgICAgIGlmIGQu # bGVuZ3RoID09IDEKICAgICAgICAgICAgICAgIGEgPDwgZFswXQogICAgICAg # ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGEgPDwgZFswXQlpZiBub3Qg # ZFswXS5uaWw/IGFuZCBub3QgZFswXS5lbXB0eT8KICAgICAgICAgICAgICAg # IGEgPDwgIj0iCiAgICAgICAgICAgICAgICBhIDw8IGRbMV0JaWYgbm90IGRb # MV0ubmlsPyBhbmQgbm90IGRbMV0uZW1wdHk/CiAgICAgICAgICAgICAgZW5k # CiAgICAgICAgICAgIGVuZAogICAgICAgICAgZWxzZQogICAgICAgICAgICBh # LmNvbmNhdCBzLnNwbGl0d29yZHMoWyIvIiwgIj0iXSkKICAgICAgICAgIGVu # ZAogICAgICAgIHdoZW4gMSwgMgl0aGVuIGEgPDwgcwogICAgICAgIGVuZAog # ICAgICBlbmQKICAKICAgICAgb3Blbgk9IGZhbHNlCiAgICAgIGNsb3NlCT0g # ZmFsc2UKICAKICAgICAgYSA9IGFbMF0uc3BsaXR3b3JkcygiLyIpICsgYVsx # Li4tMV0KICAKICAgICAgaWYgYVswXSA9PSAiLyIKICAgICAgICBjbG9zZQk9 # IHRydWUKICAgICAgICBhLnNoaWZ0CiAgICAgIGVsc2UKICAgICAgICBvcGVu # CT0gdHJ1ZQogICAgICBlbmQKICAKICAgICAgaWYgYVstMV0gPT0gIi8iCiAg # ICAgICAgY2xvc2UJPSB0cnVlCiAgICAgICAgYS5wb3AKICAgICAgZW5kCiAg # CiAgICAgIHRhZwk9IGEuc2hpZnQuZG93bmNhc2UKICAgICAgYXJncwk9IHt9 # CiAgCiAgICAgIHdoaWxlIG5vdCBhLmxlbmd0aC56ZXJvPwogICAgICAgIGlm # IGEubGVuZ3RoID49IDMgYW5kIGFbMV0gPT0gIj0iCiAgICAgICAgICBrZXkJ # PSBhLnNoaWZ0LmRvd25jYXNlCiAgICAgICAgICBkdW1teQk9IGEuc2hpZnQK # ICAgICAgICAgIHZhbHVlCT0gYS5zaGlmdC5ub3F1b3RlcwogICAgICAgICAg # YXJnc1trZXldCT0gdmFsdWUKICAgICAgICBlbHNlCiAgICAgICAgICBrZXkJ # PSBhLnNoaWZ0LmRvd25jYXNlCiAgICAgICAgICBhcmdzW2tleV0JPSAiIgog # ICAgICAgIGVuZAogICAgICBlbmQKICAKICAgICAgW3RhZywgYXJncywgb3Bl # biwgY2xvc2VdCiAgICBlbmQKCiAgICB2ZXJ3ZXJrMgk9CiAgICBsYW1iZGEg # ZG8gfHN0cmluZ3wKICAgICAgaWYgQHRhZ2NhY2hlLmluY2x1ZGU/IHN0cmlu # ZwogICAgICAgIHJlcwk9IEB0YWdjYWNoZVtzdHJpbmddCiAgICAgIGVsc2UK # ICAgICAgICByZXMJPSB2ZXJ3ZXJrMy5jYWxsKHN0cmluZykKCiAgICAgICAg # QHRhZ2NhY2hlW3N0cmluZ10gPSByZXMKICAgICAgZW5kCgogICAgICByZXMK # ICAgIGVuZAoKICAgIHZlcndlcmsxID0KICAgIGxhbWJkYSBkbyB8c3RyaW5n # fAogICAgICB0YWcsIGFyZ3MsIG9wZW4sIGNsb3NlCT0gdmVyd2VyazIuY2Fs # bChzdHJpbmcpCgogICAgICBAb2JqZWN0cyA8PCBPcGVuVGFnLm5ldyh0YWcu # ZHVwLCBhcmdzLmR1cCkJaWYgb3BlbgogICAgICBAb2JqZWN0cyA8PCBDbG9z # ZVRhZy5uZXcodGFnLmR1cCwgYXJncy5kdXApCWlmIGNsb3NlCiAgICBlbmQK # CiAgICBzdHJpbmcuc3BsaXRibG9ja3MoWyI8IS0tIiwgIi0tPiJdLCBbIjwh # IiwgIj4iXSwgWyI8PyIsICI/PiJdLCBbIjwiLCAiPiJdKS5lYWNoIGRvIHx0 # eXBlLCBzfAogICAgICBjYXNlIHR5cGUKICAgICAgd2hlbiAwCQl0aGVuIEBv # YmplY3RzIDw8IFRleHQubmV3KHMpCiAgICAgIHdoZW4gMQkJdGhlbiBAb2Jq # ZWN0cyA8PCBDb21tZW50Lm5ldyhzKQogICAgICB3aGVuIDIJCXRoZW4gQG9i # amVjdHMgPDwgU3BlY2lhbC5uZXcocykKICAgICAgd2hlbiAzCQl0aGVuIEBv # YmplY3RzIDw8IEluc3RydWN0aW9uLm5ldyhzKQogICAgICB3aGVuIDQJCXRo # ZW4gdmVyd2VyazEuY2FsbChzKQogICAgICBlbmQKICAgIGVuZAogIGVuZAoK # ICBkZWYgdG9fcwogICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNo # aWxkcmVuX3RvX3MiLCAicG9zdGNoaWxkcmVuX3RvX3MiLCByZXMpCgogICAg # cmVzCiAgZW5kCgogIGRlZiB0b19oCiAgICByZXMJPSAiIgoKICAgIHBhcnNl # dHJlZSgicHJlY2hpbGRyZW5fdG9fc2dtbCIsICJwb3N0Y2hpbGRyZW5fdG9f # c2dtbCIsIHJlcykKCiAgICByZXMKICBlbmQKZW5kCgAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTY2OC50YXIvZXYvdHJl # ZS5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAw # MDAwMTcxNjMAMTAyNTAzMjA2MTMAMDIwMTQxACAwAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy # ICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1YnkiCnJl # cXVpcmUgImV2L25ldCIKcmVxdWlyZSAibWQ1IgpyZXF1aXJlICJ0aHJlYWQi # CgpTYW1lCT0gMApEb3duCT0gMQpVcAk9IDIKRHVtbXkJPSAzCgptb2R1bGUg # VGV4dEFycmF5CiAgZGVmIHRleHRhcnJheQogICAgQGNoaWxkcmVuLmNvbGxl # Y3QgZG8gfG9ianwKICAgICAgW29iai50ZXh0XSA8PCBvYmoudGV4dGFycmF5 # CiAgICBlbmQuZmxhdHRlbi5jb21wYWN0CiAgZW5kCmVuZAoKCm1vZHVsZSBQ # YXJzZVRyZWUKICBkZWYgcGFyc2V0cmVlKHByZW1ldGhvZD0icHJlY2hpbGRy # ZW4iLCBwb3N0bWV0aG9kPSJwb3N0Y2hpbGRyZW4iLCAqYXJncykKICAgIGlm # IEB2aXNpYmxlCiAgICAgIG1ldGhvZChwcmVtZXRob2QpLmNhbGwoKmFyZ3Mp # CWlmIHJlc3BvbmRfdG8/KHByZW1ldGhvZCkKCiAgICAgIEBjaGlsZHJlbi5l # YWNoIGRvIHxvYmp8CiAgICAgICAgb2JqLnBhcnNldHJlZShwcmVtZXRob2Qs # IHBvc3RtZXRob2QsICphcmdzKQogICAgICBlbmQKCiAgICAgIG1ldGhvZChw # b3N0bWV0aG9kKS5jYWxsKCphcmdzKQlpZiByZXNwb25kX3RvPyhwb3N0bWV0 # aG9kKQogICAgZW5kCiAgZW5kCgogICNkZWYgcGFyc2V0cmVlKHByZW1ldGhv # ZD0icHJlY2hpbGRyZW4iLCBwb3N0bWV0aG9kPSJwb3N0Y2hpbGRyZW4iLCAq # YXJncykKICAjICBzdGFjawk9IFtzZWxmXQogICMgIGRvbmUJPSBbXQogICMK # ICAjICB3aGlsZSBub3Qgc3RhY2suZW1wdHk/CiAgIyAgICBvYmoJPSBzdGFj # ay5wb3AKICAjCiAgIyAgICBpZiBub3QgZG9uZS5pbmNsdWRlPyhvYmopCiAg # IyAgICAgIG9iai5tZXRob2QocHJlbWV0aG9kKS5jYWxsKCphcmdzKQlpZiBv # YmoucmVzcG9uZF90bz8ocHJlbWV0aG9kKQogICMKICAjICAgICAgc3RhY2su # cHVzaChvYmopCiAgIyAgICAgIGRvbmUucHVzaChvYmopCiAgIwogICMgICAg # ICBzdGFjay5jb25jYXQgb2JqLmNoaWxkcmVuLnJldmVyc2UKICAjICAgICAg # I29iai5jaGlsZHJlbi5yZXZlcnNlLmVhY2ggZG8gfGNvYmp8CiAgIyAgICAg # ICAgI3N0YWNrLnB1c2goY29iaikKICAjICAgICAgI2VuZAogICMgICAgZWxz # ZQogICMgICAgICBvYmoubWV0aG9kKHBvc3RtZXRob2QpLmNhbGwoKmFyZ3Mp # CWlmIG9iai5yZXNwb25kX3RvPyhwb3N0bWV0aG9kKQogICMgICAgZW5kCiAg # IyAgZW5kCiAgI2VuZAplbmQKCmNsYXNzIFRyZWVPYmplY3QKICBhdHRyX3Jl # YWRlciA6c3VidHlwZQogIGF0dHJfd3JpdGVyIDpzdWJ0eXBlCiAgYXR0cl9y # ZWFkZXIgOnVwb3Jkb3duCiAgYXR0cl93cml0ZXIgOnVwb3Jkb3duCiAgYXR0 # cl9yZWFkZXIgOmxldmVsCiAgYXR0cl93cml0ZXIgOmxldmVsCiAgYXR0cl9y # ZWFkZXIgOnBhcmVudAogIGF0dHJfd3JpdGVyIDpwYXJlbnQKICBhdHRyX3Jl # YWRlciA6Y2hpbGRyZW4KICBhdHRyX3dyaXRlciA6Y2hpbGRyZW4KICBhdHRy # X3JlYWRlciA6Y2xvc2VkCiAgYXR0cl93cml0ZXIgOmNsb3NlZAogIGF0dHJf # cmVhZGVyIDp0ZXh0CiAgYXR0cl93cml0ZXIgOnRleHQKICBhdHRyX3JlYWRl # ciA6dmlzaWJsZQogIGF0dHJfd3JpdGVyIDp2aXNpYmxlCgogIGluY2x1ZGUg # VGV4dEFycmF5CiAgaW5jbHVkZSBQYXJzZVRyZWUKCiAgZGVmIGluaXRpYWxp # emUoc3VidHlwZT1uaWwpCiAgICBAc3VidHlwZQk9IHN1YnR5cGUKICAgIEB1 # cG9yZG93bgk9IFNhbWUKICAgIEBsZXZlbAk9IG5pbAogICAgQHBhcmVudAk9 # IG5pbAogICAgQGNoaWxkcmVuCT0gW10KICAgIEBjbG9zZWQJPSBuaWwKICAg # IEB2aXNpYmxlCT0gdHJ1ZQogIGVuZAoKICBkZWYgaW5zcGVjdAogICAgcGFy # ZW50LCBjaGlsZHJlbgk9IEBwYXJlbnQsIEBjaGlsZHJlbgoKICAgIEBwYXJl # bnQsIEBjaGlsZHJlbgk9IHBhcmVudC5vYmplY3RfaWQsIGNoaWxkcmVuLmNv # bGxlY3R7fG9ianwgb2JqLm9iamVjdF9pZH0KCiAgICByZXMgPSAiICAiICog # KGxldmVsLTEpICsgIiN7c2VsZi5jbGFzc30oI3tAc3VidHlwZX0pICN7c3Vw # ZXJ9IgoKICAgIEBwYXJlbnQsIEBjaGlsZHJlbgk9IHBhcmVudCwgY2hpbGRy # ZW4KCiAgICByZXMKICBlbmQKCiAgZGVmIHByZXZpb3VzKGtsYXNzPVtdLCBz # a2lwPVtdKQogICAga2xhc3MJPSBba2xhc3NdLmZsYXR0ZW4KICAgIHNraXAJ # PSBbc2tpcF0uZmxhdHRlbgoKICAgIHBvCT0gQHBhcmVudAogICAgcmV0dXJu # IG5pbAlpZiBwby5uaWw/CgogICAgY2gJPSBwby5jaGlsZHJlbgogICAgcmV0 # dXJuIG5pbAlpZiBjaC5uaWw/CgogICAgbgk9IGNoLmluZGV4KHNlbGYpCiAg # ICByZXR1cm4gbmlsCWlmIG4ubmlsPwoKICAgIHJlcwk9IG5pbAogICAgaWYg # a2xhc3MubmlsPwogICAgICBuIC09IDEKICAgICAgcmVzCT0gY2hbbl0KICAg # IGVsc2UKICAgICAgYmVnaW4KICAgICAgICBuIC09IDEKICAgICAgICByZXMJ # PSBjaFtuXQogICAgICBlbmQgd2hpbGUgKGtsYXNzLmVtcHR5PyBvciBrbGFz # cy5jb2xsZWN0e3xrfCBjaFtuLTFdLmtpbmRfb2Y/KGspfS5zb3J0LnVuaXEg # PT0gW3RydWVdKSBcCiAgICAgICAgICAgIGFuZCAoc2tpcC5lbXB0eT8gb3Ig # c2tpcC5jb2xsZWN0e3xrfCBjaFtuLTFdLmtpbmRfb2Y/KGspfS5zb3J0LnVu # aXEgPT0gW2ZhbHNlXSkKICAgIGVuZAoKICAgIHJlcwogIGVuZAplbmQKCmNs # YXNzIFRyZWUKICBAQHZlcnNpZQk9IDEKICBAQG11dGV4CT0gTXV0ZXgubmV3 # CgogIGF0dHJfcmVhZGVyIDpkYXRhCiAgYXR0cl93cml0ZXIgOmRhdGEKICBh # dHRyX3JlYWRlciA6cGFyZW50CiAgYXR0cl93cml0ZXIgOnBhcmVudAogIGF0 # dHJfcmVhZGVyIDpjaGlsZHJlbgogIGF0dHJfd3JpdGVyIDpjaGlsZHJlbgog # IGF0dHJfcmVhZGVyIDp2aXNpYmxlCiAgYXR0cl93cml0ZXIgOnZpc2libGUK # CiAgaW5jbHVkZSBUZXh0QXJyYXkKICBpbmNsdWRlIFBhcnNlVHJlZQoKICBk # ZWYgaW5pdGlhbGl6ZShzdHJpbmcpCiAgICBzdHJpbmcgPSBzdHJpbmcuam9p # bigiIikgaWYgc3RyaW5nLmtpbmRfb2Y/KEFycmF5KQoKICAgIEBkYXRhCQk9 # IHN0cmluZwogICAgQHBhcmVudAkJPSBuaWwKICAgIEBjaGlsZHJlbgkJPSBb # XQogICAgQG9iamVjdHMJCT0gW10KICAgIEB2aXNpYmxlCQk9IHRydWUKICAg # IEBjaGVja3Zpc2liaWxpdHkJPSBmYWxzZQoKICAgIGJ1aWxkb2JqZWN0cyhz # dHJpbmcpCiAgICBidWlsZHBhcmVudHMKICAgIGJ1aWxkY2hpbGRyZW4KICAg # IG1hcmtjbG9zZWQKICAgIGRlbGV0ZWR1bW1pZXMKCiAgICBAY2hlY2t2aXNp # YmlsaXR5CT0gdHJ1ZQogIGVuZAoKICBkZWYgc2VsZi5maWxlKGZpbGUpCiAg # ICBuZXcoRmlsZS5uZXcoZmlsZSkucmVhZGxpbmVzKQogIGVuZAoKICBkZWYg # c2VsZi5sb2NhdGlvbih1cmwsIGZvcm09SGFzaC5uZXcpCiAgICBzCT0gSFRU # UENsaWVudC5nZXQodXJsLCB7fSwgZm9ybSkKICAgIHMJPSAiIglpZiBzLm5p # bD8KICAgIG5ldyhzKQogIGVuZAoKICBkZWYgc2VsZi5uZXdfZnJvbV9jYWNo # ZTIoZGF0YSkKICAgIG5ldyhkYXRhKQogIGVuZAoKICBkZWYgc2VsZi5uZXdf # ZnJvbV9jYWNoZShkYXRhKQogICAgaGFzaAk9IE1ENS5uZXcoIiN7QEB2ZXJz # aWV9ICN7ZGF0YX0iKQoKICAgIGRpcgkJPSAiI3t0ZW1wfS9ldmNhY2hlLiN7 # dXNlcn0vdHJlZS5uZXciCiAgICBmaWxlCT0gIiN7ZGlyfS8je2hhc2h9IgoK # ICAgIHRyZWUJPSBuaWwKCiAgICBGaWxlLm1rcGF0aChkaXIpCgogICAgaWYg # RmlsZS5maWxlPyhmaWxlKQogICAgICBAQG11dGV4LnN5bmNocm9uaXplIGRv # CiAgICAgICAgdHJlZQk9IE1hcnNoYWwucmVzdG9yZShGaWxlLm5ldyhmaWxl # LCAicmIiKSkKICAgICAgZW5kCiAgICBlbHNlCiAgICAgIHRyZWUJPSBuZXco # ZGF0YSkKCiAgICAgIGlmIG5vdCB0cmVlLm5pbD8KICAgICAgICBAQG11dGV4 # LnN5bmNocm9uaXplIGRvCiAgICAgICAgICBGaWxlLm9wZW4oZmlsZSwgIndi # Iikge3xmfCBNYXJzaGFsLmR1bXAodHJlZSwgZil9CiAgICAgICAgZW5kCiAg # ICAgIGVuZAogICAgZW5kCgogICAgcmV0dXJuIHRyZWUKICBlbmQKCiAgZGVm # IGluc3BlY3QKICAgIEBvYmplY3RzLmNvbGxlY3QgZG8gfG9ianwKICAgICAg # b2JqLmluc3BlY3QKICAgIGVuZC5qb2luKCJcbiIpCiAgZW5kCgogIGRlZiBi # dWlsZG9iamVjdHMoc3RyaW5nKQogICAgcmFpc2UgIkhhcyB0byBiZSBkZWZp # bmVkIGluIHRoZSBzdWJjbGFzcy4iCiAgZW5kCgogIGRlZiBidWlsZHBhcmVu # dHMKICAgIGxldmVsCT0gMQogICAgbGV2ZWxzCT0gSGFzaC5uZXcKICAgIGxl # dmVsc1swXQk9IG5pbAogICAgcGFyc2UgZG8gfHR5cGUsIG9ianwKICAgICAg # Y2FzZSBvYmoudXBvcmRvd24KICAgICAgd2hlbiBEb3duCiAgICAgICAgb2Jq # LmxldmVsCT0gbGV2ZWwKICAgICAgICBvYmoucGFyZW50CT0gbGV2ZWxzW2xl # dmVsLTFdCiAgICAgICAgbGV2ZWxzW2xldmVsXQk9IG9iagogICAgICAgIGxl # dmVsICs9IDEKICAgICAgd2hlbiBVcCwgRHVtbXkKICAgICAgICBwbCA9IGxl # dmVsCiAgICAgICAgMS51cHRvKGxldmVsLTEpIGRvIHxsfAogICAgICAgICAg # cG8gPSBsZXZlbHNbbF0KICAgICAgICAgIHBsID0gbCBpZiBwby5zdWJ0eXBl # ID09IG9iai5zdWJ0eXBlCiAgICAgICAgZW5kCiAgICAgICAgbGV2ZWwgPSBw # bAogICAgICAgIG9iai5sZXZlbAk9IGxldmVsCiAgICAgICAgb2JqLnBhcmVu # dAk9IGxldmVsc1tsZXZlbC0xXQogICAgICB3aGVuIFNhbWUKICAgICAgICBv # YmoubGV2ZWwJPSBsZXZlbAogICAgICAgIG9iai5wYXJlbnQJPSBsZXZlbHNb # bGV2ZWwtMV0KICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIGJ1aWxk # Y2hpbGRyZW4KICAgIEBvYmplY3RzLmVhY2ggZG8gfG9ianwKICAgICAgb2Jq # LmNoaWxkcmVuID0gW10KICAgIGVuZAoKICAgIHBhcnNlIGRvIHx0eXBlLCBv # Ymp8CiAgICAgIGlmIG5vdCBvYmoucGFyZW50Lm5pbD8KICAgICAgICBwbyA9 # IG9iai5wYXJlbnQKICAgICAgICBwby5jaGlsZHJlbiA8PCBvYmoKICAgICAg # ZWxzZQogICAgICAgIEBjaGlsZHJlbiA8PCBvYmoKICAgICAgZW5kCiAgICBl # bmQKICBlbmQKCiAgZGVmIG1hcmtjbG9zZWQKICAgIChbc2VsZl0gKyBAb2Jq # ZWN0cykuZWFjaCBkbyB8b2JqfAogICAgICBvYmouY2hpbGRyZW4uZWFjaF9p # bmRleCBkbyB8aXwKICAgICAgICBjbzEJCT0gb2JqLmNoaWxkcmVuW2ldCiAg # ICAgICAgY28yCQk9IG9iai5jaGlsZHJlbltpKzFdCgogICAgICAgIGNvMS5j # bG9zZWQJPSAobm90IGNvMi5uaWw/IGFuZCBjbzEudXBvcmRvd24gPT0gRG93 # biBhbmQgKGNvMi51cG9yZG93biA9PSBVcCBvciBjbzIudXBvcmRvd24gPT0g # RHVtbXkpIGFuZCBjbzEuc3VidHlwZSA9PSBjbzIuc3VidHlwZSkKICAgICAg # ZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIGRlbGV0ZWR1bW1pZXMKICAgIChb # c2VsZl0gKyBAb2JqZWN0cykuZWFjaCBkbyB8b2JqfAogICAgICBvYmouY2hp # bGRyZW4uZGVsZXRlX2lmIGRvIHxvYmoyfAogICAgICAgIG9iajIudXBvcmRv # d24gPT0gRHVtbXkKICAgICAgZW5kCiAgICBlbmQKCiAgICBAb2JqZWN0cy5k # ZWxldGVfaWYgZG8gfG9ianwKICAgICAgb2JqLnVwb3Jkb3duID09IER1bW15 # CiAgICBlbmQKICBlbmQKCiAgZGVmIHBhcnNlKHR5cGVzPVtdLCBzdWJ0eXBl # cz1bXSwgb25jZT1mYWxzZSkKICAgIHR5cGVzCT0gW3R5cGVzXQlpZiB0eXBl # cy5jbGFzcyA9PSBDbGFzcwogICAgc3VidHlwZXMJPSBbc3VidHlwZXNdCWlm # IHN1YnR5cGVzLmNsYXNzID09IFN0cmluZwogICAgaGlkZWxldmVsCT0gbmls # CgogICAgY2F0Y2ggOm9uY2UgZG8KICAgICAgQG9iamVjdHMuZWFjaCBkbyB8 # b2JqfAogICAgICAgIGlmIChAY2hlY2t2aXNpYmlsaXR5IGFuZCBoaWRlbGV2 # ZWwubmlsPyBhbmQgKG5vdCBvYmoudmlzaWJsZSkpCiAgICAgICAgICBoaWRl # bGV2ZWwJPSBvYmoubGV2ZWwKICAgICAgICBlbHNlCiAgICAgICAgICBpZiAo # QGNoZWNrdmlzaWJpbGl0eSBhbmQgKG5vdCBoaWRlbGV2ZWwubmlsPykgYW5k # IG9iai52aXNpYmxlIGFuZCBvYmoubGV2ZWwgPD0gaGlkZWxldmVsKQogICAg # ICAgICAgICBoaWRlbGV2ZWwJPSBuaWwKICAgICAgICAgIGVuZAogICAgICAg # IGVuZAoKICAgICAgICBpZiBoaWRlbGV2ZWwubmlsPwogICAgICAgICAgb2sg # PSBmYWxzZQogICAgICAgICAgY2F0Y2ggOnN0b3AgZG8KICAgICAgICAgICAg # aWYgdHlwZXMuZW1wdHk/CiAgICAgICAgICAgICAgaWYgc3VidHlwZXMuZW1w # dHk/CiAgICAgICAgICAgICAgICBvayA9IHRydWUKICAgICAgICAgICAgICAg # IHRocm93IDpzdG9wCiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg # ICAgc3VidHlwZXMuZWFjaCBkbyB8c3R8CiAgICAgICAgICAgICAgICAgIGlm # IG9iai5zdWJ0eXBlID09IHN0CiAgICAgICAgICAgICAgICAgICAgb2sgPSB0 # cnVlCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgOnN0b3AKICAgICAgICAg # ICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg # ICBlbmQKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGlmIHN1YnR5 # cGVzLmVtcHR5PwogICAgICAgICAgICAgICAgdHlwZXMuZWFjaCBkbyB8dHwK # ICAgICAgICAgICAgICAgICAgaWYgb2JqLmtpbmRfb2Y/KHQpCiAgICAgICAg # ICAgICAgICAgICAgb2sgPSB0cnVlCiAgICAgICAgICAgICAgICAgICAgdGhy # b3cgOnN0b3AKICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAg # ICBlbmQKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0eXBl # cy5lYWNoIGRvIHx0fAogICAgICAgICAgICAgICAgICBzdWJ0eXBlcy5lYWNo # IGRvIHxzdHwKICAgICAgICAgICAgICAgICAgICBpZiBvYmoua2luZF9vZj8o # dCkgYW5kIG9iai5zdWJ0eXBlID09IHN0CiAgICAgICAgICAgICAgICAgICAg # ICBvayA9IHRydWUKICAgICAgICAgICAgICAgICAgICAgIHRocm93IDpzdG9w # CiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgIGVu # ZAogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAg # ICAgICAgIGVuZAogICAgICAgICAgZW5kCgogICAgICAgICAgaWYgb2sKICAg # ICAgICAgICAgeWllbGQob2JqLmNsYXNzLnRvX3MsIG9iaikKCiAgICAgICAg # ICAgIHRocm93IDpvbmNlCWlmIG9uY2UKICAgICAgICAgIGVuZAogICAgICAg # IGVuZAogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgcGF0aChwYWQp # CiAgICBwMQk9IHNlbGYKCiAgICB1bmxlc3MgcGFkLm5pbD8KICAgICAgcGFk # LnNwbGl0KC9cLy8pLmVhY2ggZG8gfGRlZWx8CiAgICAgICAgdGFnLCB2b29y # a29tZW4JPSBkZWVsLnNwbGl0KC86LykKCiAgICAgICAgaWYgKG5vdCB0YWcu # bmlsPykgYW5kIChub3QgcDEubmlsPykKICAgICAgICAgIHZvb3Jrb21lbgk9 # IDEJaWYgdm9vcmtvbWVuLm5pbD8KICAgICAgICAgIHZvb3Jrb21lbgk9IHZv # b3Jrb21lbi50b19pCgogICAgICAgICAgdGVsbGVyCT0gMAogICAgICAgICAg # cDIJPSBuaWwKICAgICAgICAgIHAxLmNoaWxkcmVuLmVhY2hfaW5kZXggZG8g # fGl8CiAgICAgICAgICAgICNpZiBwMS5jaGlsZHJlbltpXS51cG9yZG93biA9 # PSBEb3duCiAgICAgICAgICAgICAgdW5sZXNzICBwMS5jaGlsZHJlbltpXS5z # dWJ0eXBlLm5pbD8KICAgICAgICAgICAgICAgIGlmIHAxLmNoaWxkcmVuW2ld # LnN1YnR5cGUubm9xdW90ZXMgPT0gdGFnLm5vcXVvdGVzCiAgICAgICAgICAg # ICAgICAgIHRlbGxlciArPSAxCiAgICAgICAgICAgICAgICAgIHAyCT0gcDEu # Y2hpbGRyZW5baV0JaWYgdGVsbGVyID09IHZvb3Jrb21lbgogICAgICAgICAg # ICAgICAgZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICNlbmQK # ICAgICAgICAgIGVuZAogICAgICAgICAgcDEJPSBwMgogICAgICAgIGVuZAog # ICAgICBlbmQKICAgIGVuZAoKICAgIHAxCiAgZW5kCmVuZAoAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0 # LmYuMTE2NjgudGFyL2V2L25ldC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUA # MDAwMTc1MAAwMDAxNzUwADAwMDAwMDQ2MjI2ADEwMjUwMzIwNjEzADAxNzc3 # MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAw # MDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy # ZXF1aXJlICJldi9ydWJ5IgpyZXF1aXJlICJldi9mdG9vbHMiCnJlcXVpcmUg # ImV2L21pbWUiCnJlcXVpcmUgIm5ldC9odHRwIgpyZXF1aXJlICJzb2NrZXQi # CnJlcXVpcmUgInVyaSIKcmVxdWlyZSAiY2dpIgpyZXF1aXJlICJtZDUiCnJl # cXVpcmUgInRocmVhZCIKCiRwcm94eQk9IEVOVlsiUFJPWFkiXQlpZiAkcHJv # eHkubmlsPwoKZmlsZQk9ICIje2hvbWV9Ly5ldm5ldCIKaWYgRmlsZS5maWxl # PyhmaWxlKQogIEhhc2guZmlsZShmaWxlKS5lYWNoIGRvIHxrLCB2fAogICAg # ZXZhbCAiJCN7a30gPSAnI3t2fSciCXVubGVzcyBrPX4gL15cIy8KICBlbmQK # ZW5kCgpkZWYgdXJpMnR4dChzKQoJIyA/Pz8gV2Vya3QgbmlldCBnb2VkCiAg # aQk9IHMuaW5kZXgoLyVbWzpkaWdpdDpdXXsyfS8pCiAgd2hpbGUgbm90IGku # bmlsPwogICAgcwk9IHNbMC4uKGktMSldICsgc1soaSsxKS4uKGkrMildLnVu # cGFjaygnSDInKS5zaGlmdC50b19pLmNociArIHNbKGkrMykuLi0xXQogICAg # aQk9IHMuaW5kZXgoLyVbWzpkaWdpdDpdXXsyfS8pCiAgZW5kCiAgcwplbmQK # CmNsYXNzIFRDUFNlcnZlcgogIGRlZiBzZWxmLmZyZWVwb3J0KGZyb20sIHRv # LCByZW1vdGU9ZmFsc2UpCiAgICBpZiB3aW5kb3dzPyBvciBjeWd3aW4/CiAg # ICAgIFRDUFNlcnZlci5mcmVlcG9ydF93aW5kb3dzKGZyb20sIHRvLCByZW1v # dGUpCiAgICBlbHNlCiAgICAgIFRDUFNlcnZlci5mcmVlcG9ydF9saW51eChm # cm9tLCB0bywgcmVtb3RlKQogICAgZW5kCiAgZW5kCgogIGRlZiBzZWxmLmZy # ZWVwb3J0X2xpbnV4KGZyb20sIHRvLCByZW1vdGUpCiAgICBwb3J0cwk9IChm # cm9tLi50bykudG9fYQogICAgcG9ydAk9IG5pbAogICAgcmVzCQk9IG5pbAoK # ICAgIHdoaWxlIHJlcy5uaWw/IGFuZCBub3QgcG9ydHMuZW1wdHk/CiAgICAg # IGJlZ2luCiAgICAgICAgcG9ydAk9IHBvcnRzWzBdCiAgICAgICAgcG9ydHMu # ZGVsZXRlKHBvcnQpCgogICAgICAgIGlvCT0gVENQU2VydmVyLm5ldyhyZW1v # dGUgPyAiMC4wLjAuMCIgOiAibG9jYWxob3N0IiwgcG9ydCkKCiAgICAgICAg # cmVzCT0gW3BvcnQsIGlvXQogICAgICByZXNjdWUKICAgICAgZW5kCiAgICBl # bmQKCiAgICByZXMJPSBbbmlsLCBuaWxdCWlmIHJlcy5uaWw/CgogICAgcG9y # dCwgaW8JPSByZXMKCiAgICByZXR1cm4gcG9ydCwgaW8KICBlbmQKCiAgZGVm # IHNlbGYuZnJlZXBvcnRfd2luZG93cyhmcm9tLCB0bywgcmVtb3RlKQogICAg # cG9ydHMJPSAoZnJvbS4udG8pLnRvX2EKICAgIHBvcnQJPSBuaWwKICAgIHJl # cwkJPSBuaWwKCiAgICB3aGlsZSByZXMubmlsPyBhbmQgbm90IHBvcnRzLmVt # cHR5PwogICAgICBiZWdpbgogICAgICAgIHBvcnQJPSBwb3J0cy5hbnkKICAg # ICAgICBwb3J0cy5kZWxldGUocG9ydCkKCiAgICAgICAgaW8JPSBUQ1BTb2Nr # ZXQubmV3KCJsb2NhbGhvc3QiLCBwb3J0KQogICAgICAgIGlvLmNsb3NlCiAg # ICAgIHJlc2N1ZQogICAgICAgIHJlcwk9IHBvcnQKICAgICAgZW5kCiAgICBl # bmQKCiAgICBwb3J0LCBpbwk9IHJlcwoKICAgIHJldHVybiBwb3J0LCBpbwog # IGVuZAoKICBkZWYgc2VsZi5mcmVlcG9ydF93aW5kb3dzMihmcm9tLCB0bywg # cmVtb3RlKQogICAgcmVzCT0gbmlsCiAgICBwb3J0CT0gZnJvbQoKICAgIHdo # aWxlIHJlcy5uaWw/IGFuZCBwb3J0IDw9IHRvCiAgICAgIGJlZ2luCiAgICAg # ICAgaW8JPSBUQ1BTb2NrZXQubmV3KCJsb2NhbGhvc3QiLCBwb3J0KQogICAg # ICAgIGlvLmNsb3NlCgogICAgICAgIHBvcnQgKz0gMQogICAgICByZXNjdWUK # ICAgICAgICByZXMJPSBwb3J0CiAgICAgIGVuZAogICAgZW5kCgogICAgcmV0 # dXJuIHJlcwogIGVuZAoKICBkZWYgc2VsZi51c2VkcG9ydHMoZnJvbSwgdG8p # CiAgICB0aHJlYWRzCT0gW10KICAgIHJlcwkJPSBbXQoKICAgIGZyb20udXB0 # byh0bykgZG8gfHBvcnR8CiAgICAgIHRocmVhZHMgPDwgVGhyZWFkLm5ldyBk # bwogICAgICAgIGJlZ2luCiAgICAgICAgICBpbwk9IFRDUFNvY2tldC5uZXco # ImxvY2FsaG9zdCIsIHBvcnQpCiAgICAgICAgICBpby5jbG9zZQoKICAgICAg # ICAgIHBvcnQKICAgICAgICByZXNjdWUKICAgICAgICAgIG5pbAogICAgICAg # IGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIHRocmVhZHMuZWFjaCBkbyB8 # dGhyZWFkfAogICAgICBwb3J0CT0gdGhyZWFkLnZhbHVlCiAgICAgIHJlcyA8 # PCBwb3J0CXVubGVzcyBwb3J0Lm5pbD8KICAgIGVuZAoKICAgIHJldHVybiBy # ZXMKICBlbmQKZW5kCgpjbGFzcyBFVlVSSQogIGF0dHJfcmVhZGVyIDpwcm90 # b2NvbAogIGF0dHJfd3JpdGVyIDpwcm90b2NvbAogIGF0dHJfcmVhZGVyIDp1 # c2VycGFzcwogIGF0dHJfd3JpdGVyIDp1c2VycGFzcwogIGF0dHJfcmVhZGVy # IDpob3N0CiAgYXR0cl93cml0ZXIgOmhvc3QKICBhdHRyX3JlYWRlciA6cG9y # dAogIGF0dHJfd3JpdGVyIDpwb3J0CiAgYXR0cl9yZWFkZXIgOnBhdGgKICBh # dHRyX3dyaXRlciA6cGF0aAogIGF0dHJfcmVhZGVyIDp2YXJzCiAgYXR0cl93 # cml0ZXIgOnZhcnMKICBhdHRyX3JlYWRlciA6YW5jaG9yCiAgYXR0cl93cml0 # ZXIgOmFuY2hvcgoKICBkZWYgaW5pdGlhbGl6ZSh1cmwpCiAgICBiZWdpbgog # ICAgICBAcHJvdG9jb2wsIEB1c2VycGFzcywgQGhvc3QsIEBwb3J0LCBkMSwg # QHBhdGgsIGQyLCBAdmFycywgQGFuY2hvcgk9IFVSSS5zcGxpdCh1cmwudG9f # cykKICAgIHJlc2N1ZQogICAgZW5kCgogICAgQHBhdGgJCT0gIi8iCQlpZiAo # bm90IEBwYXRoLm5pbD8gYW5kIEBwYXRoLmVtcHR5PyBhbmQgQHByb3RvY29s # ID09ICJodHRwIikKCiAgICBAcHJvdG9jb2wJCT0gIiIJCWlmIEBwcm90b2Nv # bC5uaWw/CiAgICBAdXNlcnBhc3MJCT0gIiIJCWlmIEB1c2VycGFzcy5uaWw/ # CiAgICBAaG9zdAkJPSAiIgkJaWYgQGhvc3QubmlsPwogICAgQHBvcnQJCT0g # MAkJaWYgQHBvcnQubmlsPwogICAgQHBhdGgJCT0gIiIJCWlmIEBwYXRoLm5p # bD8KICAgIEB2YXJzCQk9ICIiCQlpZiBAdmFycy5uaWw/CiAgICBAYW5jaG9y # CQk9ICIiCQlpZiBAYW5jaG9yLm5pbD8KCiAgICByZXMJCQk9IHt9CiAgICBA # dmFyc3ZvbGdvcmRlCT0gW10KICAgIEB2YXJzLnNwbGl0KC8mLykuZWFjaHt8 # dmFyfCBrLCB2ID0gdmFyLnNwbGl0KC89LykgOyByZXNba10gPSB2IDsgQHZh # cnN2b2xnb3JkZSA8PCBrfQogICAgQHZhcnMJCT0gcmVzCgogICAgQHBvcnQJ # CT0gQHBvcnQudG9faQogIGVuZAoKICBkZWYgKyh1cmwyKQogICAgdXJsMQk9 # IHNlbGYudG9fcwogICAgdXJsMgk9IHVybDIudG9fcwlpZiB1cmwyLmtpbmRf # b2Y/KHNlbGYuY2xhc3MpCgogICAgcmV0dXJuIEVWVVJJLm5ldygoVVJJOjpH # ZW5lcmljLm5ldygqVVJJLnNwbGl0KHVybDEpKSArIFVSSTo6R2VuZXJpYy5u # ZXcoKlVSSS5zcGxpdCh1cmwyKSkpLnRvX3MpCXJlc2N1ZSBuaWwKICBlbmQK # CiAgZGVmIHRvX3MKICAgIHByb3RvY29sCT0gQHByb3RvY29sCiAgICB1c2Vy # cGFzcwk9IEB1c2VycGFzcwogICAgaG9zdAk9IEBob3N0CiAgICBwb3J0CT0g # QHBvcnQKICAgIHBhdGgJPSBAcGF0aAogICAgdmFycwk9IHZhcnN0cmluZwog # ICAgYW5jaG9yCT0gQGFuY2hvcgoKICAgIHByb3RvY29sCT0gbmlsCWlmIEBw # cm90b2NvbC5lbXB0eT8KICAgIHVzZXJwYXNzCT0gbmlsCWlmIEB1c2VycGFz # cy5lbXB0eT8KICAgIGhvc3QJPSBuaWwJaWYgQGhvc3QuZW1wdHk/CiAgICBw # b3J0CT0gbmlsCWlmIEBwb3J0Lnplcm8/CiAgICBwYXRoCT0gbmlsCWlmIEBw # YXRoLmVtcHR5PwogICAgdmFycwk9IG5pbAlpZiBAdmFycy5lbXB0eT8KICAg # IGFuY2hvcgk9IG5pbAlpZiBAYW5jaG9yLmVtcHR5PwoKICAgIHJlcwk9IFVS # STo6SFRUUC5uZXcoQHByb3RvY29sLCBAdXNlcnBhc3MsIEBob3N0LCBwb3J0 # LCBuaWwsIEBwYXRoLCBuaWwsIHZhcnMsIEBhbmNob3IpLnRvX3MuZnJvbV9o # dG1sCgogICAgcmVzLmdzdWIhKC9ALywgIiIpCWlmIChAdXNlcnBhc3Mubmls # PyBvciBAdXNlcnBhc3MuZW1wdHk/KQoKICAgIHJlcy5nc3ViISgvXCMkLywg # IiIpCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYgbG9jYWxuYW1lCiAg # ICBwcm90b2NvbAk9IEBwcm90b2NvbAogICAgdXNlcnBhc3MJPSBAdXNlcnBh # c3MKICAgIGhvc3QJPSBAaG9zdAogICAgcG9ydAk9IEBwb3J0CiAgICBwYXRo # CT0gQHBhdGgKICAgIHZhcnMJPSB2YXJzdHJpbmcKICAgIGFuY2hvcgk9IEBh # bmNob3IKCiAgICBwcm90b2NvbAk9IG5pbAlpZiBAcHJvdG9jb2wuZW1wdHk/ # CiAgICB1c2VycGFzcwk9IG5pbAlpZiBAdXNlcnBhc3MuZW1wdHk/CiAgICBo # b3N0CT0gbmlsCWlmIEBob3N0LmVtcHR5PwogICAgcG9ydAk9IG5pbAlpZiBA # cG9ydC56ZXJvPwogICAgcGF0aAk9IG5pbAlpZiBAcGF0aC5lbXB0eT8KICAg # IHZhcnMJPSBuaWwJaWYgQHZhcnMuZW1wdHk/CiAgICBhbmNob3IJPSBuaWwJ # aWYgQGFuY2hvci5lbXB0eT8KCiAgICBwYXRoCT0gIiN7cGF0aH0uIglpZiBw # YXRoID1+IC9bXC9cXF0kLwoKICAgIGYJPSBNRDUubmV3KHByb3RvY29sLnRv # X3MgKyB1c2VycGFzcy50b19zICsgaG9zdC50b19zICsgcG9ydC50b19zICsg # RmlsZS5kaXJuYW1lKHBhdGgudG9fcykgKyB2YXJzLnRvX3MpLnRvX3MKICAg # IGUJPSBGaWxlLmJhc2VuYW1lKHBhdGgudG9fcykuZ3N1YigvW15cd1wuXC1d # LywgIl8iKS5nc3ViKC9fKy8sICJfIikKICAgIHJlcwk9IGYgKyAiLiIgKyBl # CiAgICByZXMuZ3N1YiEoL1teXHddKyQvLCAiIikKCiAgICByZXR1cm4gcmVz # CiAgZW5kCgogIGRlZiB2YXJzdHJpbmcKICAgIHJlcwkJPSBbXQogICAgdmFy # cwk9IEB2YXJzLmR1cAoKICAgIEB2YXJzdm9sZ29yZGUuZWFjaCBkbyB8a3wK # ICAgICAgaWYgdmFycy5pbmNsdWRlPyhrKQogICAgICAgIHYJPSB2YXJzW2td # CiAgICAgICAgdmFycy5kZWxldGUoaykKCiAgICAgICAgcmVzIDw8ICh2Lm5p # bD8gPyBrIDogIiN7a309I3t2fSIpCiAgICAgIGVuZAogICAgZW5kCgogICAg # cmVzLmNvbmNhdCh2YXJzLmNvbGxlY3R7fGssIHZ8IHYubmlsPyA/IGsgOiAi # I3trfT0je3Z9In0pCgogICAgcmV0dXJuIHJlcy5qb2luKCImIikKICBlbmQK # ZW5kCgpjbGFzcyBIVFRQQ2xpZW50CiAgQEB2ZXJzaWUJPSAxCiAgQEBtdXRl # eAk9IE11dGV4Lm5ldwogIEBAaG9zdHMJPSB7fQoKICBjbGFzcyBIZWFkZXIK # ICAgIGF0dHJfcmVhZGVyIDpoZWFkZXIKICAgIGF0dHJfcmVhZGVyIDpwcm90 # b2NvbAogICAgYXR0cl9yZWFkZXIgOmNvZGUKICAgIGF0dHJfcmVhZGVyIDp0 # ZXh0CgogICAgZGVmIGluaXRpYWxpemUoaGVhZGVyKQogICAgICBAaGVhZGVy # CT0ge30KCiAgICAgIGlmIG5vdCBoZWFkZXIubmlsPwogICAgICAgIGZpcnN0 # bGluZSwgcmVzdAk9IGhlYWRlci5zcGxpdCgvXHIqXG4vLCAyKQoKICAgICAg # ICBAcHJvdG9jb2wsIEBjb2RlLCBAdGV4dAk9IGZpcnN0bGluZS5zcGxpdCgv # ICAqLywgMykKCiAgICAgICAgQGNvZGUJPSBAY29kZS50b19pCgogICAgICAg # IGlmIG5vdCByZXN0Lm5pbD8KICAgICAgICAgIHJlc3Quc3BsaXQoL1xyKlxu # LykuZWFjaCBkbyB8bGluZXwKICAgICAgICAgICAga2V5LCB2YWx1ZQk9IGxp # bmUuc3BsaXQoLyAvLCAyKQogICAgICAgICAgICBAaGVhZGVyW2tleS5zdWIo # LzokLywgIiIpLmRvd25jYXNlXQk9IHZhbHVlCiAgICAgICAgICBlbmQKICAg # ICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICBkZWYgdG9fcwogICAg # ICByZXMJPSAiIgoKICAgICAgcmVzIDw8ICIlcyAlcyAlc1xuIiAlIFtAcHJv # dG9jb2wsIEBjb2RlLCBAdGV4dF0KCiAgICAgIEBoZWFkZXIuZWFjaCBkbyB8 # aywgdnwKICAgICAgICByZXMgPDwgIiVzPSVzXG4iICUgW2ssIHZdCiAgICAg # IGVuZAoKICAgICAgcmV0dXJuIHJlcwogICAgZW5kCiAgZW5kCgogIGNsYXNz # IENodW5rCiAgICBkZWYgaW5pdGlhbGl6ZShkYXRhKQogICAgICBAZGF0YQk9 # ICIiCiAgICAgIGxpbmUsIGRhdGEJPSBkYXRhLnNwbGl0KC9ccipcbi8sIDIp # CiAgICAgIHNpemUsIGV4dAkJPSBsaW5lLnNwbGl0KC87LywgMikKICAgICAg # c2l6ZQkJPSBzaXplLmhleAogICAgICB3aGlsZSBub3Qgc2l6ZS56ZXJvPyBh # bmQgbm90IGRhdGEubmlsPwogICAgICAgIEBkYXRhCQkrPSBkYXRhWzAuLihz # aXplLTEpXQogICAgICAgIGRhdGEJCT0gZGF0YVtzaXplLi4tMV0KICAgICAg # ICBpZiBub3QgZGF0YS5uaWw/CiAgICAgICAgICBkYXRhLmdzdWIhKC9eXHIq # XG4vLCAiIikKICAgICAgICAgIGxpbmUsIGRhdGEJPSBkYXRhLnNwbGl0KC9c # cipcbi8sIDIpCiAgICAgICAgICBzaXplLCBleHQJPSBsaW5lLnNwbGl0KC87 # LywgMikKICAgICAgICAgIHNpemUJCT0gc2l6ZS5oZXgKICAgICAgICBlbmQK # ICAgICAgZW5kCiAgICBlbmQKCiAgICBkZWYgdG9fcwogICAgICBAZGF0YQog # ICAgZW5kCiAgZW5kCgogIGNsYXNzIE5vQWRkcmVzc0V4Y2VwdGlvbiA8IFN0 # YW5kYXJkRXJyb3IKICBlbmQKCiAgZGVmIHNlbGYuZ2V0YWRkcmVzcyhob3N0 # KQogICAgaWYgbm90IEBAaG9zdHMuaW5jbHVkZT8oaG9zdCkKICAgICAgQEBo # b3N0c1tob3N0XQk9ICIiCiAgICAgIGV2dGltZW91dCg1KSBkbwkjID8/PyBE # b2V0ICd1dCBuaWV0Py4uLgogICAgICAgIEBAaG9zdHNbaG9zdF0JPSBJUFNv # Y2tldC5nZXRhZGRyZXNzKGhvc3QpCiAgICAgIGVuZAogICAgZW5kCgogICAg # cmFpc2UgTm9BZGRyZXNzRXhjZXB0aW9uLCBob3N0CWlmIEBAaG9zdHNbaG9z # dF0uZW1wdHk/CgogICAgQEBob3N0c1tob3N0XQogIGVuZAoKICBkZWYgc2Vs # Zi5oZWFkKHVyaSwgZm9ybT17fSwgcmVjdXJzaXZlPXRydWUpCiAgICBoZWFk # ZXIJPSBIZWFkZXIubmV3KG5pbCkKCiAgICBiZWdpbgogICAgICB3aGlsZSBu # b3QgdXJpLm5pbD8KICAgICAgICB1cmkJCT0gRVZVUkkubmV3KHVyaSkgaWYg # dXJpLmtpbmRfb2Y/IFN0cmluZwogICAgICAgIGhvc3QJCT0gdXJpLmhvc3QK # ICAgICAgICBwb3J0CQk9IHVyaS5wb3J0CgogICAgICAgIGlmICRwcm94eS5u # aWw/IG9yICRwcm94eS5lbXB0eT8gb3IgaG9zdCA9PSAibG9jYWxob3N0Igog # ICAgICAgICAgaW8JCT0gbmlsCgogICAgICAgICAgQEBtdXRleC5zeW5jaHJv # bml6ZSBkbwogICAgICAgICAgICBpbwkJCT0gVENQU29ja2V0Lm5ldyhnZXRh # ZGRyZXNzKGhvc3QpLCBwb3J0Lnplcm8/ID8gODAgOiBwb3J0KQogICAgICAg # ICAgZW5kCgogICAgICAgICAgaW8ud3JpdGUoIkhFQUQgI3t1cmkucGF0aCBv # ciAnLyd9I3t1cmkudmFyc3RyaW5nLmVtcHR5PyA/ICcnIDogJz8nICsgdXJp # LnZhcnN0cmluZ30gSFRUUC8xLjBcclxuSG9zdDogI3tob3N0fVxyXG5cclxu # IikKICAgICAgICBlbHNlCiAgICAgICAgICBwcm94eQkJPSBFVlVSSS5uZXco # JHByb3h5KQogICAgICAgICAgaW8JCT0gVENQU29ja2V0Lm5ldyhwcm94eS5o # b3N0LCBwcm94eS5wb3J0Lnplcm8/ID8gODA4MCA6IHByb3h5LnBvcnQpCgog # ICAgICAgICAgaW8ud3JpdGUoIkhFQUQgI3t1cml9IEhUVFAvMS4wXHJcbiN7 # IlByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljICIrJHByb3h5X2F1dGgrIlxy # XG4iIGlmIG5vdCAkcHJveHlfYXV0aC5uaWw/fVxyXG5cclxuIikKICAgICAg # ICBlbmQKCiAgICAgICAgaW8uY2xvc2Vfd3JpdGUKCiAgICAgICAgcmVzCT0g # aW8ucmVhZAoKICAgICAgICBpby5jbG9zZV9yZWFkCgogICAgICAgIGhlYWRl # ciwgZGF0YQk9IG5pbCwgbmlsCiAgICAgICAgaGVhZGVyLCBkYXRhCT0gcmVz # LnNwbGl0KC9ccipcblxyKlxuLywgMikJaWYgbm90IHJlcy5uaWw/CiAgICAg # ICAgaGVhZGVyCQk9IEhlYWRlci5uZXcoaGVhZGVyKQoKICAgICAgICBpZiBy # ZWN1cnNpdmUgYW5kIGhlYWRlci5oZWFkZXJbImxvY2F0aW9uIl0gIT0gdXJp # LnRvX3MKICAgICAgICAgIHVyaQk9IEVWVVJJLm5ldyh1cmkpICsgaGVhZGVy # LmhlYWRlclsibG9jYXRpb24iXQogICAgICAgIGVsc2UKICAgICAgICAgIHVy # aQk9IG5pbAogICAgICAgIGVuZAogICAgICBlbmQKICAgIHJlc2N1ZSBFcnJu # bzo6RUNPTk5SRVNFVCwgRXJybm86OkVIT1NUVU5SRUFDSCA9PiBlCiAgICAg # ICRzdGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAgc2xlZXAgMQogICAgICBy # ZXRyeQogICAgcmVzY3VlIEVycm5vOjpFQ09OTlJFRlVTRUQgPT4gZQogICAg # ICBkYXRhCT0gbmlsCiAgICByZXNjdWUgTm9BZGRyZXNzRXhjZXB0aW9uID0+ # IGUKICAgICAgJHN0ZGVyci5wdXRzIGUubWVzc2FnZQogICAgICBoZWFkZXIJ # PSBIZWFkZXIubmV3KG5pbCkKICAgIGVuZAoKICAgIEdDLnN0YXJ0CgogICAg # cmV0dXJuIGhlYWRlcgogIGVuZAoKICBkZWYgc2VsZi5nZXQodXJpLCBodHRw # aGVhZGVyPXt9LCBmb3JtPXt9KQogICAgcG9zdAk9IEFycmF5Lm5ldwogICAg # Zm9ybS5lYWNoX3BhaXIgZG8gfHZhciwgdmFsdWV8CiAgICAgIHBvc3QgPDwg # IiN7dmFyLnRvX2h0bWx9PSN7dmFsdWUudG9faHRtbH0iCiAgICBlbmQKICAg # IHBvc3QJPSBwb3N0LmpvaW4oIj8iKQoKICAgIGRhdGEJPSBuaWwKCiAgICBi # ZWdpbgogICAgICB3aGlsZSBub3QgdXJpLm5pbD8KICAgICAgICB1cmkJPSBF # VlVSSS5uZXcodXJpKSBpZiB1cmkua2luZF9vZj8gU3RyaW5nCiAgICAgICAg # aG9zdAk9IHVyaS5ob3N0CiAgICAgICAgcG9ydAk9IHVyaS5wb3J0CgogICAg # ICAgIGlmICRwcm94eS5uaWw/IG9yICRwcm94eS5lbXB0eT8gb3IgaG9zdCA9 # PSAibG9jYWxob3N0IgogICAgICAgICAgaW8JPSBuaWwKICAgICAgICAgIEBA # bXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICAgICAgaW8JCQk9IFRDUFNv # Y2tldC5uZXcoZ2V0YWRkcmVzcyhob3N0KSwgcG9ydC56ZXJvPyA/IDgwIDog # cG9ydCkKICAgICAgICAgIGVuZAoKICAgICAgICAgIGlmIHBvc3QuZW1wdHk/ # CiAgICAgICAgICAgIGlvLndyaXRlICJHRVQgJXMlcyBIVFRQLzEuMFxyXG4i # ICUgWyh1cmkucGF0aCBvciAnLycpLCAodXJpLnZhcnN0cmluZy5lbXB0eT8g # PyAnJyA6ICc/JyArIHVyaS52YXJzdHJpbmcpXQogICAgICAgICAgZWxzZQog # ICAgICAgICAgICBpby53cml0ZSAiUE9TVCAlcyVzIEhUVFAvMS4wXHJcbiIg # JSBbKHVyaS5wYXRoIG9yICcvJyksICh1cmkudmFyc3RyaW5nLmVtcHR5PyA/ # ICcnIDogJz8nICsgdXJpLnZhcnN0cmluZyldCiAgICAgICAgICBlbmQKICAg # ICAgICBlbHNlCiAgICAgICAgICBwcm94eQk9IEVWVVJJLm5ldygkcHJveHkp # CiAgICAgICAgICBpbwk9IFRDUFNvY2tldC5uZXcocHJveHkuaG9zdCwgcHJv # eHkucG9ydC56ZXJvPyA/IDgwODAgOiBwcm94eS5wb3J0KQoKICAgICAgICAg # IGlmIHBvc3QuZW1wdHk/CiAgICAgICAgICAgIGlvLndyaXRlICJHRVQgJXMg # SFRUUC8xLjBcclxuIiAlIHVyaQogICAgICAgICAgZWxzZQogICAgICAgICAg # ICBpby53cml0ZSAiUE9TVCAlcyBIVFRQLzEuMFxyXG4iICUgdXJpCiAgICAg # ICAgICBlbmQKICAgICAgICBlbmQKCiAgICAgICAgaW8ud3JpdGUgIkhvc3Q6 # ICVzXHJcbiIgJSBob3N0CiAgICAgICAgaW8ud3JpdGUgIlVzZXItQWdlbnQ6 # IHh5elxyXG4iCiAgICAgICAgaW8ud3JpdGUgIlByb3h5LUF1dGhvcml6YXRp # b246IEJhc2ljICVzXHJcbiIgJSAkcHJveHlfYXV0aAl1bmxlc3MgJHByb3h5 # X2F1dGgubmlsPwogICAgICAgICNpby53cml0ZSAiQWNjZXB0LUVuY29kaW5n # OiBkZWZsYXRlXHJcbiIKICAgICAgICAjaW8ud3JpdGUgIkFjY2VwdC1DaGFy # c2V0OiBJU08tODg1OS0xXHJcbiIKICAgICAgICBpby53cml0ZSAiQ29ubmVj # dGlvbjogY2xvc2VcclxuIgogICAgICAgIGlvLndyaXRlICJDb250ZW50LVR5 # cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4iCXVu # bGVzcyBwb3N0LmVtcHR5PwogICAgICAgIGlvLndyaXRlICJDb250ZW50LUxl # bmd0aDogJXNcclxuIiAlIHBvc3QubGVuZ3RoCQkJdW5sZXNzIHBvc3QuZW1w # dHk/CiAgICAgICAgaHR0cGhlYWRlci5lYWNoIGRvIHxrLCB2fAogICAgICAg # ICAgJHN0ZGVyci5wdXRzICIlczogJXNcclxuIiAlIFtrLCB2XQogICAgICAg # ICAgaW8ud3JpdGUgIiVzOiAlc1xyXG4iICUgW2ssIHZdCiAgICAgICAgZW5k # CiAgICAgICAgaW8ud3JpdGUgIlxyXG4iCiAgICAgICAgaW8ud3JpdGUgcG9z # dAkJCQkJCQl1bmxlc3MgcG9zdC5lbXB0eT8KCiAgICAgICAgaW8uY2xvc2Vf # d3JpdGUKCiAgICAgICAgcmVzCQk9IGlvLnJlYWQKCiAgICAgICAgaW8uY2xv # c2VfcmVhZAoKICAgICAgICBoZWFkZXIsIGRhdGEJPSBuaWwsIG5pbAogICAg # ICAgIGhlYWRlciwgZGF0YQk9IHJlcy5zcGxpdCgvXHIqXG5ccipcbi8sIDIp # CWlmIG5vdCByZXMubmlsPwoKICAgICAgICBoZWFkZXIJPSBIZWFkZXIubmV3 # KGhlYWRlcikKICAgICAgICBsZW5ndGgJPSBoZWFkZXIuaGVhZGVyWyJjb250 # ZW50LWxlbmd0aCJdCiAgICAgICAgZGF0YQk9ICIiCWlmIGxlbmd0aCA9PSAi # MCIKCiAgICAgICAgaWYgaGVhZGVyLmhlYWRlclsibG9jYXRpb24iXSAhPSB1 # cmkudG9fcwogICAgICAgICAgdXJpCT0gRVZVUkkubmV3KHVyaSkgKyBoZWFk # ZXIuaGVhZGVyWyJsb2NhdGlvbiJdCiAgICAgICAgZWxzZQogICAgICAgICAg # dXJpCT0gbmlsCiAgICAgICAgZW5kCgogICAgICAgIGlmIGhlYWRlci5oZWFk # ZXJbInRyYW5zZmVyLWVuY29kaW5nIl0gPT0gImNodW5rZWQiCiAgICAgICAg # ICBkYXRhCT0gQ2h1bmsubmV3KGRhdGEpLnRvX3MJaWYgbm90IGRhdGEubmls # PwogICAgICAgIGVuZAoKICAgICAgICAjaWYgaGVhZGVyLmhlYWRlclsiY29u # dGVudC1lbmNvZGluZyJdID09ICJnemlwIgogICAgICAgICAgI2RhdGEJPSAi # Z3ppcCAtZCIuZXhlYyhkYXRhKQlpZiBub3QgZGF0YS5uaWw/CiAgICAgICAg # I2VuZAoKICAgICAgICBkYXRhCT0gbmlsCXVubGVzcyBoZWFkZXIuY29kZSA9 # PSAyMDAKICAgICAgZW5kCiAgICByZXNjdWUgRXJybm86OkVDT05OUkVTRVQs # IEVycm5vOjpFSE9TVFVOUkVBQ0ggPT4gZQogICAgICAkc3RkZXJyLnB1dHMg # ZS5tZXNzYWdlCiAgICAgIHNsZWVwIDEKICAgICAgcmV0cnkKICAgIHJlc2N1 # ZSBFcnJubzo6RUNPTk5SRUZVU0VEID0+IGUKICAgICAgZGF0YQk9IG5pbAog # ICAgcmVzY3VlIE5vQWRkcmVzc0V4Y2VwdGlvbiwgRXJybm86OkVDT05OUkVG # VVNFRCA9PiBlCiAgICAgICRzdGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAg # ZGF0YQk9IG5pbAogICAgZW5kCgogICAgR0Muc3RhcnQKCiAgICByZXR1cm4g # ZGF0YQogIGVuZAoKICBkZWYgc2VsZi5oZWFkX2Zyb21fY2FjaGUodXJpLCBm # b3JtPXt9KQogICAgZnJvbV9jYWNoZSgiaGVhZCIsIHVyaSwgZm9ybSkKICBl # bmQKCiAgZGVmIHNlbGYuZ2V0X2Zyb21fY2FjaGUodXJpLCBmb3JtPXt9KQog # ICAgZnJvbV9jYWNoZSgiZ2V0IiwgdXJpLCBmb3JtKQogIGVuZAoKICBkZWYg # c2VsZi5mcm9tX2NhY2hlKGFjdGlvbiwgdXJpLCBmb3JtKQogICAgbG9jCQk9 # IHVyaS50b19zICsgZm9ybS5zb3J0Lmluc3BlY3QKICAgIGhhc2gJPSBNRDUu # bmV3KCIje0BAdmVyc2llfSAje2xvY30iKQoKICAgIGRpcgkJPSAiI3t0ZW1w # fS9ldmNhY2hlLiN7dXNlcn0vaHR0cGNsaWVudC4je2FjdGlvbn0iCiAgICBm # aWxlCT0gIiN7ZGlyfS8je2hhc2h9IgogICAgZGF0YQk9IG5pbAoKICAgIEZp # bGUubWtwYXRoKGRpcikKCiAgICBleHBpcmUJPSAzNTYqMjQqNjAqNjAKCiAg # ICBpZiBGaWxlLmZpbGU/KGZpbGUpIGFuZCAoVGltZS5uZXcudG9fZiAtIEZp # bGUuc3RhdChmaWxlKS5tdGltZS50b19mIDwgZXhwaXJlKQogICAgICBAQG11 # dGV4LnN5bmNocm9uaXplIGRvCiAgICAgICAgRmlsZS5vcGVuKGZpbGUsICJy # YiIpCXt8ZnwgZGF0YSA9IGYucmVhZH0KICAgICAgZW5kCiAgICBlbHNlCiAg # ICAgIGRhdGEJPSBtZXRob2QoYWN0aW9uKS5jYWxsKHVyaSwgZm9ybSkKCiAg # ICAgIGlmIG5vdCBkYXRhLm5pbD8KICAgICAgICBAQG11dGV4LnN5bmNocm9u # aXplIGRvCiAgICAgICAgICBGaWxlLm9wZW4oZmlsZSwgIndiIikJe3xmfCBm # LndyaXRlIGRhdGF9CiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgog # ICAgcmV0dXJuIGRhdGEKICBlbmQKZW5kCgpjbGFzcyBSZXF1ZXN0R2V0IDwg # SGFzaAogIGRlZiBpbml0aWFsaXplKGRhdGEpCiAgICBDR0kucGFyc2UoZGF0 # YSkuZWFjaCBkbyB8aywgdnwKICAgICAgc2VsZltrXQk9IHYKICAgIGVuZAog # IGVuZAplbmQKCmNsYXNzIFJlcXVlc3RQb3N0IDwgSGFzaAogIGRlZiBpbml0 # aWFsaXplKGRhdGEpCiAgICBDR0kucGFyc2UoZGF0YSkuZWFjaCBkbyB8aywg # dnwKICAgICAgc2VsZltrXQk9IHYKICAgIGVuZAogIGVuZAplbmQKCmNsYXNz # IFJlcXVlc3RSZXF1ZXN0CiAgYXR0cl9yZWFkZXIgOm1ldGhvZAogIGF0dHJf # cmVhZGVyIDp1cmkKICBhdHRyX3JlYWRlciA6cGF0aAogIGF0dHJfcmVhZGVy # IDpkYXRhCiAgYXR0cl9yZWFkZXIgOnByb3RvY29sCgogIGRlZiBpbml0aWFs # aXplKGZpcnN0bGluZSkKICAgIEBtZXRob2QsIEB1cmksIEBwcm90b2NvbAk9 # IGZpcnN0bGluZS5zcGxpdCgvIC8pCiAgICBAcGF0aCwgQGRhdGEJCT0gQHVy # aS5zcGxpdCgvXD8vKQogICAgQGRhdGEJCQk9ICIiCQkJaWYgQGRhdGEubmls # PwkjIFRPRE8KCiMgICAgaQk9IEBwYXRoLmluZGV4KC8lW1s6ZGlnaXQ6XV17 # Mn0vKQojICAgIHdoaWxlIG5vdCBpLm5pbD8KIyAgICAgIEBwYXRoCT0gQHBh # dGhbMC4uKGktMSldICsgQHBhdGhbKGkrMSkuLihpKzIpXS51bnBhY2soJ0gy # Jykuc2hpZnQudG9faS5jaHIgKyBAcGF0aFsoaSszKS4uLTFdCiMgICAgICBp # CT0gQHBhdGguaW5kZXgoLyVbWzpkaWdpdDpdXXsyfS8pCiMgICAgZW5kCiAg # ZW5kCgogIGRlZiB0b19zCiAgICAiI3tAbWV0aG9kfSAje0B1cml9ICN7QHBy # b3RvY29sfVxyXG4iCiAgZW5kCgogIGRlZiBpbnNwZWN0CiAgICAiKFJlcXVl # c3RSZXF1ZXN0OiAlcykiICUgW0BtZXRob2QsIEBwYXRoLCBAZGF0YSwgQHBy # b3RvY29sXS5qb2luKCIsICIpCiAgZW5kCmVuZAoKY2xhc3MgUmVxdWVzdCA8 # IEhhc2gKICBhdHRyX3JlYWRlciA6cGVlcmFkZHIKICBhdHRyX3JlYWRlciA6 # cmVxdWVzdAogIGF0dHJfcmVhZGVyIDpjb29raWVzCiAgYXR0cl9yZWFkZXIg # OnZhcnMKICBhdHRyX3JlYWRlciA6dXNlcgogIGF0dHJfd3JpdGVyIDp1c2Vy # CgogIGRlZiBpbml0aWFsaXplKGlvKQogICAgQGlvCQk9IGlvCgogICAgZmly # c3RsaW5lCT0gQGlvLmdldHMKCiAgICByZXR1cm4JaWYgZmlyc3RsaW5lLm5p # bD8KCiAgICBAcmVxdWVzdAk9IFJlcXVlc3RSZXF1ZXN0Lm5ldyhmaXJzdGxp # bmUuc3RyaXApCgogICAgbGluZQk9IEBpby5nZXRzCiAgICBsaW5lCT0gbGlu # ZS5zdHJpcAl1bmxlc3MgbGluZS5uaWw/CiAgICB3aGlsZSBub3QgbGluZS5u # aWw/IGFuZCBub3QgbGluZS5lbXB0eT8KICAgICAga2V5LCB2YWx1ZQk9IGxp # bmUuc3BsaXQoIiAiLCAyKQogICAgICBzZWxmW2tleS5zdWIoLzokLywgIiIp # LmRvd25jYXNlXQk9IHZhbHVlCgogICAgICBsaW5lCT0gQGlvLmdldHMKICAg # ICAgbGluZQk9IGxpbmUuc3RyaXAJdW5sZXNzIGxpbmUubmlsPwogICAgZW5k # CgogICAgY29va2llCT0gc2VsZlsiY29va2llIl0KICAgIGNvb2tpZQk9ICIi # CWlmIGNvb2tpZS5uaWw/CiAgICBAY29va2llcwk9IHt9CiAgICBjb29raWUu # c3BsaXQoLzsvKS5lYWNoIGRvIHxzfAogICAgICBrLCB2CQk9IHMuc3RyaXAu # c3BsaXQoLz0vLCAyKQogICAgICBAY29va2llc1trXQk9IHYKICAgIGVuZAoK # ICAgIGlmIG5vdCBAcmVxdWVzdC5tZXRob2QubmlsPwogICAgICBjYXNlIEBy # ZXF1ZXN0Lm1ldGhvZC51cGNhc2UKICAgICAgd2hlbiAiSEVBRCIKICAgICAg # d2hlbiAiR0VUIgogICAgICAgIEB2YXJzCT0gUmVxdWVzdEdldC5uZXcoQHJl # cXVlc3QuZGF0YS5uaWw/ID8gIiIgOiBAcmVxdWVzdC5kYXRhKQogICAgICB3 # aGVuICJQT1NUIgogICAgICAgIGRhdGEJPSAoQGlvLnJlYWQoc2VsZlsiY29u # dGVudC1sZW5ndGgiXS50b19pKSBvciAiIikKICAgICAgICBAdmFycwk9IFJl # cXVlc3RQb3N0Lm5ldygoc2VsZlsiY29udGVudC10eXBlIl0gPT0gImFwcGxp # Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpID8gZGF0YSA6ICIiKQog # ICAgICBlbHNlCiAgICAgICAgJHN0ZGVyci5wdXRzICJVbmtub3duIHJlcXVl # c3QgKCcje2ZpcnN0bGluZX0nKS4iCiAgICAgIGVuZAogICAgZW5kCgogICAg # QHBlZXJhZGRyCT0gQGlvLnBlZXJhZGRyCgogICAgQHBkYQk9IGZhbHNlCiAg # ICBAcGRhCT0gdHJ1ZQlpZiAoc2VsZi5pbmNsdWRlPygidXNlci1hZ2VudCIp # IGFuZCBzZWxmWyJ1c2VyLWFnZW50Il0uZG93bmNhc2UuaW5jbHVkZT8oIndp # bmRvd3MgY2UiKSkKICAgIEBwZGEJPSB0cnVlCWlmIChzZWxmLmluY2x1ZGU/ # KCJ1c2VyLWFnZW50IikgYW5kIHNlbGZbInVzZXItYWdlbnQiXS5kb3duY2Fz # ZS5pbmNsdWRlPygiaGFuZGh0dHAiKSkKCiAgICBAaW8uY2xvc2VfcmVhZAog # IGVuZAoKICBkZWYgcGRhPwogICAgQHBkYQogIGVuZAoKICBkZWYgdG9fcwog # ICAgcmVzID0gQHJlcXVlc3QudG9fcwogICAgc2VsZi5lYWNoIGRvIHxrLCB2 # fAogICAgICByZXMgPDwgIiN7a306ICN7dn1cclxuIgogICAgZW5kCiAgICBy # ZXMKICBlbmQKCiAgZGVmIGluc3BlY3QKICAgICIoUmVxdWVzdDogJXMpIiAl # IFtAcGVlcmFkZHIsIEByZXF1ZXN0Lmluc3BlY3QsIEB2YXJzLmluc3BlY3Qs # IEBjb29raWVzLmluc3BlY3QsIHN1cGVyXS5qb2luKCIsICIpCiAgZW5kCmVu # ZAoKY2xhc3MgUmVzcG9uc2UgPCBIYXNoCiAgYXR0cl93cml0ZXIgOnJlc3Bv # bnNlCiAgYXR0cl93cml0ZXIgOmZpbGUKICBhdHRyX3JlYWRlciA6Y29va2ll # cwogIGF0dHJfcmVhZGVyIDpzdG9wCiAgYXR0cl9yZWFkZXIgOmF0X3N0b3AK # CiAgZGVmIGluaXRpYWxpemUoaW8pCiAgICBAaW8JCT0gaW8KICAgIEByZXNw # b25zZQk9ICJIVFRQLzEuMCAyMDAgT0siCiAgICBAY29va2llcwk9IHt9CiAg # ICBAZGF0YQk9ICIiCiAgICBAc3luY2QJPSBmYWxzZQogICAgQHN0b3AJPSBm # YWxzZQogICAgQGF0X3N0b3AJPSBsYW1iZGF7fQogICAgQGZpbGUJPSBuaWwK # ICBlbmQKCiAgZGVmIGZsdXNoCiAgICBzeW5jCgogICAgaWYgQGZpbGUKICAg # ICAgRmlsZS5vcGVuKEBmaWxlLCAicmIiKSBkbyB8ZnwKICAgICAgICB3aGls # ZSBkYXRhID0gZi5yZWFkKDEwXzAwMCkKICAgICAgICAgIEBpby53cml0ZSBk # YXRhCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgogICAgQGlvLmNs # b3NlCiAgZW5kCgogIGRlZiB0b19zCiAgICByZXMgPSAiI3tAcmVzcG9uc2V9 # XHJcbiIKICAgIHNlbGYuZWFjaCBkbyB8aywgdnwKICAgICAgcmVzIDw8ICIj # e2t9OiAje3Z9XHJcbiIKICAgIGVuZAoKICAgIEBjb29raWVzLmVhY2ggZG8g # fGssIHZ8CiAgICAgIHJlcyA8PCAiU2V0LUNvb2tpZTogJXM9JXM7XHJcbiIg # JSBbaywgdl0KICAgIGVuZAoKICAgIHJlcwogIGVuZAoKICBkZWYgc3luYwog # ICAgc2l6ZQk9IChAZGF0YSBvciAiIikubGVuZ3RoCgogICAgaWYgQGZpbGUK # ICAgICAgZXh0CT0gQGZpbGUuc2NhbigvXC5bXlwuXSokLykKICAgICAgZXh0 # CT0gZXh0LnNoaWZ0CiAgICAgIGV4dAk9IGV4dFsxLi4tMV0JdW5sZXNzIGV4 # dC5uaWw/CiAgICAgIG1pbWV0eXBlCT0gRVZNaW1lOjpNaW1lVHlwZVtleHRd # CgogICAgICBzZWxmWyJDb250ZW50LVR5cGUiXQk9IG1pbWV0eXBlCQl1bmxl # c3MgbWltZXR5cGUubmlsPwoKICAgICAgc2l6ZSArPSBGaWxlLnNpemUoQGZp # bGUpCWlmIEZpbGUuZmlsZT8oQGZpbGUpCiAgICBlbmQKCiAgICBzZWxmWyJD # b250ZW50LUxlbmd0aCJdCT0gc2l6ZQoKICAgIEBpby53cml0ZSgiI3t0b19z # fVxyXG4iKQl1bmxlc3MgQHN5bmNkCiAgICBAaW8ud3JpdGUoQGRhdGEpCiAg # ICBAZGF0YQk9ICIiCiAgICBAc3luY2QJPSB0cnVlCiAgZW5kCgogIGRlZiA8 # PCAocykKICAgIEBkYXRhIDw8IHMKICBlbmQKCiAgZGVmIGNsZWFuCiAgICBA # ZGF0YQk9ICIiCiAgZW5kCgogIGRlZiBpbnNwZWN0CiAgICAiKFJlc3BvbnNl # OiAlcykiICUgW0ByZXNwb25zZSwgQGRhdGFdLmpvaW4oIiwgIikKICBlbmQK # CiAgZGVmIHN0b3AoJmJsb2NrKQogICAgQHN0b3AJPSB0cnVlCiAgICBAYXRf # c3RvcAk9IGJsb2NrCXVubGVzcyBibG9jay5uaWw/CiAgZW5kCgogIGRlZiBz # dG9wPwogICAgQHN0b3AKICBlbmQKZW5kCgpjbGFzcyBIVFRQU2VydmVyRXhj # ZXB0aW9uIDwgRXhjZXB0aW9uCmVuZAoKY2xhc3MgSFRUUFNlcnZlcgogIGRl # ZiBzZWxmLnNlcnZlKHBvcnRpbz04MCwgcmVtb3RlPWZhbHNlLCBhdXRoPW5p # bCwgcmVhbG09ImV2L25ldCIpCiAgICBwb3J0LCBzZXJ2ZXIJPSBwb3J0aW8K # CiAgICBiZWdpbgogICAgICBzZXJ2ZXIJPSBUQ1BTZXJ2ZXIubmV3KHJlbW90 # ZSA/ICIwLjAuMC4wIiA6ICJsb2NhbGhvc3QiLCBwb3J0KQlpZiBzZXJ2ZXIu # bmlsPwoKICAgICAgJHN0ZGVyci5wdXRzICJKdXN0IHBvaW50IHlvdXIgYnJv # d3NlciB0byBodHRwOi8vbG9jYWxob3N0OiN7cG9ydH0vIC4uLiIKICAgIHJl # c2N1ZQogICAgICBzZXJ2ZXIJPSBuaWwKCiAgICAgICRzdGRlcnIucHV0cyAi # UG9ydCAje3BvcnR9IGlzIGluIHVzZS4iCiAgICBlbmQKCiAgICBpZiBub3Qg # c2VydmVyLm5pbD8KICAgICAgY291bnQJPSAwCgogICAgICBhdF9leGl0IGRv # CiAgICAgICAgIyRzdGRlcnIucHV0cyAiUmVjZWl2ZWQgI3tjb3VudH0gcmVx # dWVzdHMiCiAgICAgIGVuZAoKICAgICAgc2VydmVydGhyZWFkID0KICAgICAg # VGhyZWFkLm5ldyBkbwogICAgICAgIG11dGV4CT0gTXV0ZXgubmV3CgogICAg # ICAgIFRocmVhZC5jdXJyZW50WyJ0aHJlYWRzIl0JPSBbXQoKICAgICAgICBl # dmVyeSgxLCBUaHJlYWQuY3VycmVudCkgZG8gfHRocmVhZHwKICAgICAgICAg # IG11dGV4LnN5bmNocm9uaXplIGRvCiAgICAgICAgICAgIHRocmVhZFsidGhy # ZWFkcyJdLmRlbGV0ZV9pZnt8dHwgKG5vdCB0LmFsaXZlPyl9CiAgICAgICAg # ICBlbmQKICAgICAgICBlbmQKCiAgICAgICAgbG9vcCBkbwogICAgICAgICAg # aW8JPSBzZXJ2ZXIuYWNjZXB0CiAgICAgICAgICBjb3VudCArPSAxCgogICAg # ICAgICAgdGhyZWFkID0KICAgICAgICAgIFRocmVhZC5uZXcoVGhyZWFkLmN1 # cnJlbnQsIGNvdW50KSBkbyB8cGFyZW50dGhyZWFkLCBjb3VudDJ8CiAgICAg # ICAgICAgIHN0b3AJPSBmYWxzZQoKICAgICAgICAgICAgYmVnaW4KICAgICAg # ICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgcmVxCT0gUmVxdWVzdC5u # ZXcoaW8pCiAgICAgICAgICAgICAgICByZXNwCT0gUmVzcG9uc2UubmV3KGlv # KQogICAgICAgICAgICAgIHJlc2N1ZQogICAgICAgICAgICAgICAgcmFpc2Ug # SFRUUFNlcnZlckV4Y2VwdGlvbgogICAgICAgICAgICAgIGVuZAoKICAgICAg # ICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgaXAJPSByZXEucGVlcmFk # ZHJbM10KICAgICAgICAgICAgICByZXNjdWUgTmFtZUVycm9yCiAgICAgICAg # ICAgICAgICByYWlzZSBIVFRQU2VydmVyRXhjZXB0aW9uCiAgICAgICAgICAg # ICAgZW5kCgogICAgICAgICAgICAgIGlmIChub3QgcmVtb3RlKSBvciAocmVt # b3RlIGFuZCAoYXV0aC5uaWw/IG9yIGF1dGguZW1wdHk/IG9yIGF1dGhlbnRp # Y2F0ZShhdXRoLCByZWFsbSwgcmVxLCByZXNwKSkpCiAgICAgICAgICAgICAg # ICAkc3RkZXJyLnB1dHMgIiN7Y291bnQyfSAje1RpbWUubmV3LnN0cmZ0aW1l # KCIlWS0lbS0lZCAlSDolTTolUyIpfSAje2lwfSAje3JlcS51c2VyfSAje3Jl # cS5yZXF1ZXN0LnRvX3Muc3RyaXB9IgoKICAgICAgICAgICAgICAgIGJlZ2lu # CiAgICAgICAgICAgICAgICAgIHlpZWxkKHJlcSwgcmVzcCkKICAgICAgICAg # ICAgICAgIHJlc2N1ZSBFeGNlcHRpb24gPT4gZQogICAgICAgICAgICAgICAg # ICBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICAgICAgICAgICAgICAgICRz # dGRlcnIucHV0cyBlLmNsYXNzLnRvX3MgKyAiOiAiICsgZS5tZXNzYWdlCiAg # ICAgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzIGUuYmFja3RyYWNlLmNv # bGxlY3R7fHN8ICJcdCIrc30uam9pbigiXG4iKQogICAgICAgICAgICAgICAg # ICBlbmQKICAgICAgICAgICAgICAgICAgcmVzcFsiQ29udGVudC1UeXBlIl0J # PSAidGV4dC9wbGFpbiIKICAgICAgICAgICAgICAgICAgcmVzcC5yZXNwb25z # ZQkJPSAiSFRUUC8xLjAgMjAwID8/PyIKICAgICAgICAgICAgICAgICAgcmVz # cC5jbGVhbgogICAgICAgICAgICAgICAgICByZXNwIDw8IGUuY2xhc3MudG9f # cyArICI6ICIgKyBlLm1lc3NhZ2UKICAgICAgICAgICAgICAgICAgcmVzcCA8 # PCAiXG4iCiAgICAgICAgICAgICAgICAgIHJlc3AgPDwgIlxuIgogICAgICAg # ICAgICAgICAgICByZXNwIDw8IGUuYmFja3RyYWNlLmNvbGxlY3R7fHN8ICJc # dCIrc30uam9pbigiXG4iKQogICAgICAgICAgICAgICAgICByZXNwIDw8ICJc # biIKICAgICAgICAgICAgICAgICAgcmVzcCA8PCAiXG4iCiAgICAgICAgICAg # ICAgICAgIHJlc3AgPDwgIihZb3UgY2FuIHVzZSB0aGUgYmFjayBidXR0b24g # YW5kIHN0b3AgdGhlIGFwcGxpY2F0aW9uIHByb3Blcmx5LCBpZiBhcHByb3By # aWF0ZS4pIgogICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICAgICAg # c3RvcAk9IHRydWUJaWYgcmVzcC5zdG9wPwogICAgICAgICAgICAgIGVuZAoK # ICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgcmVzcC5mbHVz # aAkJCQogICAgICAgICAgICAgIHJlc2N1ZQogICAgICAgICAgICAgICAgcmFp # c2UgSFRUUFNlcnZlckV4Y2VwdGlvbgogICAgICAgICAgICAgIGVuZAogICAg # ICAgICAgICByZXNjdWUgSFRUUFNlcnZlckV4Y2VwdGlvbgogICAgICAgICAg # ICBlbmQKCiAgICAgICAgICAgIHBhcmVudHRocmVhZFsic3RvcCJdCT0gcmVz # cAlpZiBzdG9wCiAgICAgICAgICBlbmQKCiAgICAgICAgICBtdXRleC5zeW5j # aHJvbml6ZSBkbwogICAgICAgICAgICBUaHJlYWQuY3VycmVudFsidGhyZWFk # cyJdIDw8IHRocmVhZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAg # IGVuZAoKICAgICAgc2xlZXAgMC4xCXdoaWxlIG5vdCBzZXJ2ZXJ0aHJlYWRb # InN0b3AiXQoKICAgICAgc2VydmVydGhyZWFkWyJ0aHJlYWRzIl0uZWFjaCB7 # fHR8IHQuam9pbn0KCiAgICAgIHNlcnZlcnRocmVhZFsic3RvcCJdLmF0X3N0 # b3AuY2FsbAoKICAgICAgc2VydmVydGhyZWFkLmtpbGwKICAgIGVuZAogIGVu # ZAoKICBkZWYgc2VsZi5hdXRoZW50aWNhdGUoYXV0aCwgcmVhbG0sIHJlcSwg # cmVzcCkKICAgIGlmIGF1dGgua2luZF9vZj8gU3RyaW5nCiAgICAgIGZpbGUJ # PSAiI3tob21lfS8je2F1dGh9IgogICAgICBhdXRocwk9IHt9CiAgICAgIGF1 # dGhzCT0gSGFzaC5maWxlKGZpbGUpCWlmIEZpbGUuZmlsZT8oZmlsZSkKICAg # IGVsc2UKICAgICAgYXV0aHMJPSBhdXRoCiAgICBlbmQKCiAgICBhdXRodXNl # cnBhc3N3b3JkCT0gcmVxWyJhdXRob3JpemF0aW9uIl0KICAgIGlmIG5vdCBh # dXRodXNlcnBhc3N3b3JkLm5pbD8KICAgICAgYXV0aHR5cGUsIHVzZXJwYXNz # d29yZAk9IGF1dGh1c2VycGFzc3dvcmQuc3BsaXQoLyAvKQogICAgICBpZiBh # dXRodHlwZSA9PSAiQmFzaWMiIGFuZCBub3QgdXNlcnBhc3N3b3JkLm5pbD8K # ICAgICAgICB1LCBwCT0gdXNlcnBhc3N3b3JkLnVucGFjaygibSIpLnNoaWZ0 # LnNwbGl0KC86LykKICAgICAgZW5kCiAgICBlbmQKCiAgICBvawk9IChhdXRo # cy5pbmNsdWRlPyh1KSBhbmQgYXV0aHNbdV0gPT0gcCkKCiAgICB1bmxlc3Mg # b2sKICAgICAgcmVzcFsiV1dXLUF1dGhlbnRpY2F0ZSJdCT0gIkJhc2ljIHJl # YWxtPVwiI3tyZWFsbX1cIiIKICAgICAgcmVzcC5yZXNwb25zZQkJPSAiSFRU # UC8xLjAgNDAxIFVuYXV0aG9yaXplZCIKICAgIGVuZAoKICAgIHJlcS51c2Vy # CT0gdQoKICAgIHJldHVybiBvawogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1Ynlz # Y3JpcHQuZi4xMTY2OC50YXIvZXYvbWltZS5yYgAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAw # MDc1NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMzE2MTMAMTAyNTAzMjA2MTMA # MDIwMTI1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # ADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAG1vZHVsZSBFVk1pbWUKICBNaW1lVHlwZSA9IHt9CgogIE1pbWVUeXBl # WycxMjMnXSA9ICdhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMnCiAgTWlt # ZVR5cGVbJzNkcyddID0gJ2ltYWdlL3gtM2RzJwogIE1pbWVUeXBlWydhJ10g # PSAnYXBwbGljYXRpb24veC11bml4LWFyY2hpdmUnCiAgTWltZVR5cGVbJ2Fi # dyddID0gJ2FwcGxpY2F0aW9uL3gtYWJpd29yZCcKICBNaW1lVHlwZVsnYWMz # J10gPSAnYXVkaW8vYWMzJwogIE1pbWVUeXBlWydhZm0nXSA9ICdhcHBsaWNh # dGlvbi94LWZvbnQtYWZtJwogIE1pbWVUeXBlWydhZyddID0gJ2ltYWdlL3gt # YXBwbGl4LWdyYXBoaWMnCiAgTWltZVR5cGVbJ2FpZiddID0gJ2F1ZGlvL3gt # YWlmZicKICBNaW1lVHlwZVsnYWlmYyddID0gJ2F1ZGlvL3gtYWlmZicKICBN # aW1lVHlwZVsnYWlmZiddID0gJ2F1ZGlvL3gtYWlmZicKICBNaW1lVHlwZVsn # YXAnXSA9ICdhcHBsaWNhdGlvbi94LWFwcGxpeC1wcmVzZW50cycKICBNaW1l # VHlwZVsnYXBlJ10gPSAnYXBwbGljYXRpb24veC1hcGUnCiAgTWltZVR5cGVb # J2FyaiddID0gJ2FwcGxpY2F0aW9uL3gtYXJqJwogIE1pbWVUeXBlWydhcydd # ID0gJ2FwcGxpY2F0aW9uL3gtYXBwbGl4LXNwcmVhZHNoZWV0JwogIE1pbWVU # eXBlWydhc2MnXSA9ICd0ZXh0L3BsYWluJwogIE1pbWVUeXBlWydhc2YnXSA9 # ICd2aWRlby94LW1zLWFzZicKICBNaW1lVHlwZVsnYXNwJ10gPSAnYXBwbGlj # YXRpb24veC1hc3AnCiAgTWltZVR5cGVbJ2FzeCddID0gJ2F1ZGlvL3gtbXMt # YXN4JwogIE1pbWVUeXBlWydhdSddID0gJ2F1ZGlvL3gtdWxhdycKICBNaW1l # VHlwZVsnYXZpJ10gPSAndmlkZW8veC1tc3ZpZGVvJwogIE1pbWVUeXBlWydh # dyddID0gJ2FwcGxpY2F0aW9uL3gtYXBwbGl4LXdvcmQnCiAgTWltZVR5cGVb # J2JhayddID0gJ2FwcGxpY2F0aW9uL3gtYmFja3VwJwogIE1pbWVUeXBlWydi # Y3BpbyddID0gJ2FwcGxpY2F0aW9uL3gtYmNwaW8nCiAgTWltZVR5cGVbJ2Jk # ZiddID0gJ2FwcGxpY2F0aW9uL3gtZm9udC1iZGYnCiAgTWltZVR5cGVbJ2Jp # YiddID0gJ3RleHQvYmliJwogIE1pbWVUeXBlWydiaW4nXSA9ICdhcHBsaWNh # dGlvbi9vY3RldC1zdHJlYW0nCiAgTWltZVR5cGVbJ2JsZW5kJ10gPSAnYXBw # bGljYXRpb24veC1ibGVuZGVyJwogIE1pbWVUeXBlWydibGVuZGVyJ10gPSAn # YXBwbGljYXRpb24veC1ibGVuZGVyJwogIE1pbWVUeXBlWydibXAnXSA9ICdp # bWFnZS9ibXAnCiAgTWltZVR5cGVbJ2J6J10gPSAnYXBwbGljYXRpb24veC1i # emlwJwogIE1pbWVUeXBlWydiejInXSA9ICdhcHBsaWNhdGlvbi94LWJ6aXAn # CiAgTWltZVR5cGVbJ2MnXSA9ICd0ZXh0L3gtYycKICBNaW1lVHlwZVsnYysr # J10gPSAndGV4dC94LWMrKycKICBNaW1lVHlwZVsnY2MnXSA9ICd0ZXh0L3gt # YysrJwogIE1pbWVUeXBlWydjZGYnXSA9ICdhcHBsaWNhdGlvbi94LW5ldGNk # ZicKICBNaW1lVHlwZVsnY2RyJ10gPSAnYXBwbGljYXRpb24vdm5kLmNvcmVs # LWRyYXcnCiAgTWltZVR5cGVbJ2NnaSddID0gJ2FwcGxpY2F0aW9uL3gtY2dp # JwogIE1pbWVUeXBlWydjZ20nXSA9ICdpbWFnZS9jZ20nCiAgTWltZVR5cGVb # J2NsYXNzJ10gPSAnYXBwbGljYXRpb24veC1qYXZhLWJ5dGUtY29kZScKICBN # aW1lVHlwZVsnY2xzJ10gPSAndGV4dC94LXRleCcKICBNaW1lVHlwZVsnY3Bp # byddID0gJ2FwcGxpY2F0aW9uL3gtY3BpbycKICBNaW1lVHlwZVsnY3BwJ10g # PSAndGV4dC94LWMrKycKICBNaW1lVHlwZVsnY3NoJ10gPSAndGV4dC94LWNz # aCcKICBNaW1lVHlwZVsnY3NzJ10gPSAndGV4dC9jc3MnCiAgTWltZVR5cGVb # J2NzdiddID0gJ3RleHQveC1jb21tYS1zZXBhcmF0ZWQtdmFsdWVzJwogIE1p # bWVUeXBlWydkYXQnXSA9ICd2aWRlby9tcGVnJwogIE1pbWVUeXBlWydkYmYn # XSA9ICdhcHBsaWNhdGlvbi94LXhiYXNlJwogIE1pbWVUeXBlWydkYyddID0g # J2FwcGxpY2F0aW9uL3gtZGMtcm9tJwogIE1pbWVUeXBlWydkY2wnXSA9ICd0 # ZXh0L3gtZGNsJwogIE1pbWVUeXBlWydkY20nXSA9ICdpbWFnZS94LWRjbScK # ICBNaW1lVHlwZVsnZGViJ10gPSAnYXBwbGljYXRpb24veC1kZWInCiAgTWlt # ZVR5cGVbJ2Rlc2t0b3AnXSA9ICdhcHBsaWNhdGlvbi94LWdub21lLWFwcC1p # bmZvJwogIE1pbWVUeXBlWydkaWEnXSA9ICdhcHBsaWNhdGlvbi94LWRpYS1k # aWFncmFtJwogIE1pbWVUeXBlWydkaWZmJ10gPSAndGV4dC94LXBhdGNoJwog # IE1pbWVUeXBlWydkanYnXSA9ICdpbWFnZS92bmQuZGp2dScKICBNaW1lVHlw # ZVsnZGp2dSddID0gJ2ltYWdlL3ZuZC5kanZ1JwogIE1pbWVUeXBlWydkb2Mn # XSA9ICdhcHBsaWNhdGlvbi9tc3dvcmQnCiAgTWltZVR5cGVbJ2RzbCddID0g # J3RleHQveC1kc2wnCiAgTWltZVR5cGVbJ2R0ZCddID0gJ3RleHQveC1kdGQn # CiAgTWltZVR5cGVbJ2R2aSddID0gJ2FwcGxpY2F0aW9uL3gtZHZpJwogIE1p # bWVUeXBlWydkd2cnXSA9ICdpbWFnZS92bmQuZHdnJwogIE1pbWVUeXBlWydk # eGYnXSA9ICdpbWFnZS92bmQuZHhmJwogIE1pbWVUeXBlWydlbCddID0gJ3Rl # eHQveC1lbWFjcy1saXNwJwogIE1pbWVUeXBlWydlbWYnXSA9ICdpbWFnZS94 # LWVtZicKICBNaW1lVHlwZVsnZXBzJ10gPSAnYXBwbGljYXRpb24vcG9zdHNj # cmlwdCcKICBNaW1lVHlwZVsnZXRoZW1lJ10gPSAnYXBwbGljYXRpb24veC1l # LXRoZW1lJwogIE1pbWVUeXBlWydldHgnXSA9ICd0ZXh0L3gtc2V0ZXh0Jwog # IE1pbWVUeXBlWydleGUnXSA9ICdhcHBsaWNhdGlvbi94LW1zLWRvcy1leGVj # dXRhYmxlJwogIE1pbWVUeXBlWydleiddID0gJ2FwcGxpY2F0aW9uL2FuZHJl # dy1pbnNldCcKICBNaW1lVHlwZVsnZiddID0gJ3RleHQveC1mb3J0cmFuJwog # IE1pbWVUeXBlWydmaWcnXSA9ICdpbWFnZS94LXhmaWcnCiAgTWltZVR5cGVb # J2ZpdHMnXSA9ICdpbWFnZS94LWZpdHMnCiAgTWltZVR5cGVbJ2ZsYWMnXSA9 # ICdhdWRpby94LWZsYWMnCiAgTWltZVR5cGVbJ2ZsYyddID0gJ3ZpZGVvL3gt # ZmxjJwogIE1pbWVUeXBlWydmbGknXSA9ICd2aWRlby94LWZsaScKICBNaW1l # VHlwZVsnZ2InXSA9ICdhcHBsaWNhdGlvbi94LWdhbWVib3ktcm9tJwogIE1p # bWVUeXBlWydnY2hlbXBhaW50J10gPSAnYXBwbGljYXRpb24veC1nY2hlbXBh # aW50JwogIE1pbWVUeXBlWydnY3JkJ10gPSAndGV4dC94LXZjYXJkJwogIE1p # bWVUeXBlWydnY3J5c3RhbCddID0gJ2FwcGxpY2F0aW9uL3gtZ2NyeXN0YWwn # CiAgTWltZVR5cGVbJ2dlbSddID0gJ3RleHQveC1ydWJ5Z2VtJwogIE1pbWVU # eXBlWydnZW4nXSA9ICdhcHBsaWNhdGlvbi94LWdlbmVzaXMtcm9tJwogIE1p # bWVUeXBlWydnZyddID0gJ2FwcGxpY2F0aW9uL3gtc21zLXJvbScKICBNaW1l # VHlwZVsnZ2lmJ10gPSAnaW1hZ2UvZ2lmJwogIE1pbWVUeXBlWydnbGFkZSdd # ID0gJ2FwcGxpY2F0aW9uL3gtZ2xhZGUnCiAgTWltZVR5cGVbJ2duYyddID0g # J2FwcGxpY2F0aW9uL3gtZ251Y2FzaCcKICBNaW1lVHlwZVsnZ251Y2FzaCdd # ID0gJ2FwcGxpY2F0aW9uL3gtZ251Y2FzaCcKICBNaW1lVHlwZVsnZ251bWVy # aWMnXSA9ICdhcHBsaWNhdGlvbi94LWdudW1lcmljJwogIE1pbWVUeXBlWydn # cmF5J10gPSAnaW1hZ2UveC1ncmF5JwogIE1pbWVUeXBlWydndGFyJ10gPSAn # YXBwbGljYXRpb24veC1ndGFyJwogIE1pbWVUeXBlWydneiddID0gJ2FwcGxp # Y2F0aW9uL3gtZ3ppcCcKICBNaW1lVHlwZVsnaCddID0gJ3RleHQveC1jLWhl # YWRlcicKICBNaW1lVHlwZVsnaCsrJ10gPSAndGV4dC94LWMtaGVhZGVyJwog # IE1pbWVUeXBlWydoZGYnXSA9ICdhcHBsaWNhdGlvbi94LWhkZicKICBNaW1l # VHlwZVsnaGxscyddID0gJ3RleHQveC1obGxhcGlzY3JpcHQnCiAgTWltZVR5 # cGVbJ2hwcCddID0gJ3RleHQveC1jLWhlYWRlcicKICBNaW1lVHlwZVsnaHMn # XSA9ICd0ZXh0L3gtaGFza2VsbCcKICBNaW1lVHlwZVsnaHRtJ10gPSAndGV4 # dC9odG1sJwogIE1pbWVUeXBlWydodG1sJ10gPSAndGV4dC9odG1sJwogIE1p # bWVUeXBlWydpY2InXSA9ICdpbWFnZS94LWljYicKICBNaW1lVHlwZVsnaWNv # J10gPSAnaW1hZ2UveC1pY28nCiAgTWltZVR5cGVbJ2ljcyddID0gJ3RleHQv # Y2FsZW5kYXInCiAgTWltZVR5cGVbJ2lkbCddID0gJ3RleHQveC1pZGwnCiAg # TWltZVR5cGVbJ2llZiddID0gJ2ltYWdlL2llZicKICBNaW1lVHlwZVsnaWZm # J10gPSAnaW1hZ2UveC1pZmYnCiAgTWltZVR5cGVbJ2lsYm0nXSA9ICdpbWFn # ZS94LWlsYm0nCiAgTWltZVR5cGVbJ2lzbyddID0gJ2FwcGxpY2F0aW9uL3gt # aXNvLWltYWdlJwogIE1pbWVUeXBlWydpdCddID0gJ2F1ZGlvL3gtaXQnCiAg # TWltZVR5cGVbJ2phciddID0gJ2FwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZl # JwogIE1pbWVUeXBlWydqYXZhJ10gPSAndGV4dC94LWphdmEnCiAgTWltZVR5 # cGVbJ2pwZSddID0gJ2ltYWdlL2pwZWcnCiAgTWltZVR5cGVbJ2pwZWcnXSA9 # ICdpbWFnZS9qcGVnJwogIE1pbWVUeXBlWydqcGcnXSA9ICdpbWFnZS9qcGVn # JwogIE1pbWVUeXBlWydqcHInXSA9ICdhcHBsaWNhdGlvbi94LWpidWlsZGVy # LXByb2plY3QnCiAgTWltZVR5cGVbJ2pweCddID0gJ2FwcGxpY2F0aW9uL3gt # amJ1aWxkZXItcHJvamVjdCcKICBNaW1lVHlwZVsnanMnXSA9ICd0ZXh0L3gt # amF2YXNjcmlwdCcKICBNaW1lVHlwZVsna2RlbG5rJ10gPSAnYXBwbGljYXRp # b24veC1rZGUtYXBwLWluZm8nCiAgTWltZVR5cGVbJ2tpbCddID0gJ2FwcGxp # Y2F0aW9uL3gta2lsbHVzdHJhdG9yJwogIE1pbWVUeXBlWydrcHInXSA9ICdh # cHBsaWNhdGlvbi94LWtwcmVzZW50ZXInCiAgTWltZVR5cGVbJ2tzcCddID0g # J2FwcGxpY2F0aW9uL3gta3NwcmVhZCcKICBNaW1lVHlwZVsna3dkJ10gPSAn # YXBwbGljYXRpb24veC1rd29yZCcKICBNaW1lVHlwZVsnbGEnXSA9ICdhcHBs # aWNhdGlvbi94LXNoYXJlZC1saWJyYXJ5LWxhJwogIE1pbWVUeXBlWydsaGEn # XSA9ICdhcHBsaWNhdGlvbi94LWxoYScKICBNaW1lVHlwZVsnbGhzJ10gPSAn # dGV4dC94LWxpdGVyYXRlLWhhc2tlbGwnCiAgTWltZVR5cGVbJ2xoeiddID0g # J2FwcGxpY2F0aW9uL3gtbGh6JwogIE1pbWVUeXBlWydsbyddID0gJ2FwcGxp # Y2F0aW9uL3gtb2JqZWN0LWZpbGUnCiAgTWltZVR5cGVbJ2x0eCddID0gJ3Rl # eHQveC10ZXgnCiAgTWltZVR5cGVbJ2x3byddID0gJ2ltYWdlL3gtbHdvJwog # IE1pbWVUeXBlWydsd29iJ10gPSAnaW1hZ2UveC1sd28nCiAgTWltZVR5cGVb # J2x3cyddID0gJ2ltYWdlL3gtbHdzJwogIE1pbWVUeXBlWydseXgnXSA9ICd0 # ZXh0L3gtbHl4JwogIE1pbWVUeXBlWydtJ10gPSAndGV4dC94LW9iamMnCiAg # TWltZVR5cGVbJ20zdSddID0gJ2F1ZGlvL3gtbXBlZ3VybCcKICBNaW1lVHlw # ZVsnbTRhJ10gPSAnYXVkaW8veC1tNGEnCiAgTWltZVR5cGVbJ21hbiddID0g # J3RleHQveC10cm9mZi1tYW4nCiAgTWltZVR5cGVbJ21kJ10gPSAnYXBwbGlj # YXRpb24veC1nZW5lc2lzLXJvbScKICBNaW1lVHlwZVsnbWUnXSA9ICd0ZXh0 # L3gtdHJvZmYtbWUnCiAgTWltZVR5cGVbJ21ncCddID0gJ2FwcGxpY2F0aW9u # L3gtbWFnaWNwb2ludCcKICBNaW1lVHlwZVsnbWlkJ10gPSAnYXVkaW8veC1t # aWRpJwogIE1pbWVUeXBlWydtaWRpJ10gPSAnYXVkaW8veC1taWRpJwogIE1p # bWVUeXBlWydtaWYnXSA9ICdhcHBsaWNhdGlvbi94LW1pZicKICBNaW1lVHlw # ZVsnbWlmZiddID0gJ2ltYWdlL3gtbWlmZicKICBNaW1lVHlwZVsnbW0nXSA9 # ICd0ZXh0L3gtdHJvZmYtbW0nCiAgTWltZVR5cGVbJ21tbCddID0gJ3RleHQv # bWF0aG1sJwogIE1pbWVUeXBlWydtb2QnXSA9ICdhdWRpby94LW1vZCcKICBN # aW1lVHlwZVsnbW92J10gPSAndmlkZW8vcXVpY2t0aW1lJwogIE1pbWVUeXBl # Wydtb3ZpZSddID0gJ3ZpZGVvL3gtc2dpLW1vdmllJwogIE1pbWVUeXBlWydt # cDEnXSA9ICdhdWRpby9tcGVnJwogIE1pbWVUeXBlWydtcDInXSA9ICd2aWRl # by9tcGVnJwogIE1pbWVUeXBlWydtcDMnXSA9ICdhdWRpby9tcGVnJwogIE1p # bWVUeXBlWydtcGUnXSA9ICd2aWRlby9tcGVnJwogIE1pbWVUeXBlWydtcGVn # J10gPSAndmlkZW8vbXBlZycKICBNaW1lVHlwZVsnbXBnJ10gPSAndmlkZW8v # bXBlZycKICBNaW1lVHlwZVsnbXJwJ10gPSAnYXBwbGljYXRpb24veC1tcnBy # b2plY3QnCiAgTWltZVR5cGVbJ21ycHJvamVjdCddID0gJ2FwcGxpY2F0aW9u # L3gtbXJwcm9qZWN0JwogIE1pbWVUeXBlWydtcyddID0gJ3RleHQveC10cm9m # Zi1tcycKICBNaW1lVHlwZVsnbXN4J10gPSAnYXBwbGljYXRpb24veC1tc3gt # cm9tJwogIE1pbWVUeXBlWyduNjQnXSA9ICdhcHBsaWNhdGlvbi94LW42NC1y # b20nCiAgTWltZVR5cGVbJ25jJ10gPSAnYXBwbGljYXRpb24veC1uZXRjZGYn # CiAgTWltZVR5cGVbJ25lcyddID0gJ2FwcGxpY2F0aW9uL3gtbmVzLXJvbScK # ICBNaW1lVHlwZVsnbnN2J10gPSAndmlkZW8veC1uc3YnCiAgTWltZVR5cGVb # J28nXSA9ICdhcHBsaWNhdGlvbi94LW9iamVjdC1maWxlJwogIE1pbWVUeXBl # WydvZGEnXSA9ICdhcHBsaWNhdGlvbi9vZGEnCiAgTWltZVR5cGVbJ29nZydd # ID0gJ2FwcGxpY2F0aW9uL29nZycKICBNaW1lVHlwZVsnb2xlbyddID0gJ2Fw # cGxpY2F0aW9uL3gtb2xlbycKICBNaW1lVHlwZVsncCddID0gJ3RleHQveC1w # YXNjYWwnCiAgTWltZVR5cGVbJ3BhbG0nXSA9ICdpbWFnZS94LXBhbG0nCiAg # TWltZVR5cGVbJ3BhcyddID0gJ3RleHQveC1wYXNjYWwnCiAgTWltZVR5cGVb # J3Bhc2NhbCddID0gJ3RleHQveC1wYXNjYWwnCiAgTWltZVR5cGVbJ3BhdGNo # J10gPSAndGV4dC94LXBhdGNoJwogIE1pbWVUeXBlWydwYm0nXSA9ICdpbWFn # ZS94LXBvcnRhYmxlLWJpdG1hcCcKICBNaW1lVHlwZVsncGNkJ10gPSAnaW1h # Z2UveC1waG90by1jZCcKICBNaW1lVHlwZVsncGNmJ10gPSAnYXBwbGljYXRp # b24veC1mb250LXBjZicKICBNaW1lVHlwZVsncGN0J10gPSAnaW1hZ2UveC1w # aWN0JwogIE1pbWVUeXBlWydwY3gnXSA9ICdpbWFnZS94LXBjeCcKICBNaW1l # VHlwZVsncGRiJ10gPSAnYXBwbGljYXRpb24veC1wYWxtLWRhdGFiYXNlJwog # IE1pbWVUeXBlWydwZGYnXSA9ICdhcHBsaWNhdGlvbi9wZGYnCiAgTWltZVR5 # cGVbJ3BlcmwnXSA9ICd0ZXh0L3gtcGVybCcKICBNaW1lVHlwZVsncGZhJ10g # PSAnYXBwbGljYXRpb24veC1mb250LXR5cGUxJwogIE1pbWVUeXBlWydwZmIn # XSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtdHlwZTEnCiAgTWltZVR5cGVbJ3Bn # bSddID0gJ2ltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCcKICBNaW1lVHlwZVsn # cGduJ10gPSAnYXBwbGljYXRpb24veC1jaGVzcy1wZ24nCiAgTWltZVR5cGVb # J3BncCddID0gJ2FwcGxpY2F0aW9uL3BncCcKICBNaW1lVHlwZVsncGhwJ10g # PSAnYXBwbGljYXRpb24veC1waHAnCiAgTWltZVR5cGVbJ3BocDMnXSA9ICdh # cHBsaWNhdGlvbi94LXBocCcKICBNaW1lVHlwZVsncGhwNCddID0gJ2FwcGxp # Y2F0aW9uL3gtcGhwJwogIE1pbWVUeXBlWydwaWN0J10gPSAnaW1hZ2UveC1w # aWN0JwogIE1pbWVUeXBlWydwbCddID0gJ3RleHQveC1wZXJsJwogIE1pbWVU # eXBlWydwbHMnXSA9ICdhdWRpby94LXNjcGxzJwogIE1pbWVUeXBlWydwbSdd # ID0gJ3RleHQveC1wZXJsJwogIE1pbWVUeXBlWydwbmcnXSA9ICdpbWFnZS9w # bmcnCiAgTWltZVR5cGVbJ3BubSddID0gJ2ltYWdlL3gtcG9ydGFibGUtYW55 # bWFwJwogIE1pbWVUeXBlWydwbyddID0gJ3RleHQveC1wbycKICBNaW1lVHlw # ZVsncHAnXSA9ICd0ZXh0L3gtcGFzY2FsJwogIE1pbWVUeXBlWydwcG0nXSA9 # ICdpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCcKICBNaW1lVHlwZVsncHBzJ10g # PSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnCiAgTWltZVR5cGVb # J3BwdCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JwogIE1p # bWVUeXBlWydwcyddID0gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnCiAgTWlt # ZVR5cGVbJ3BzZCddID0gJ2ltYWdlL3gtcHNkJwogIE1pbWVUeXBlWydwc2Yn # XSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtbGludXgtcHNmJwogIE1pbWVUeXBl # Wydwc2lkJ10gPSAnYXVkaW8vcHJzLnNpZCcKICBNaW1lVHlwZVsncHknXSA9 # ICd0ZXh0L3gtcHl0aG9uJwogIE1pbWVUeXBlWydweWMnXSA9ICdhcHBsaWNh # dGlvbi94LXB5dGhvbi1ieXRlLWNvZGUnCiAgTWltZVR5cGVbJ3FpZiddID0g # J2FwcGxpY2F0aW9uL3FpZicKICBNaW1lVHlwZVsncXQnXSA9ICd2aWRlby9x # dWlja3RpbWUnCiAgTWltZVR5cGVbJ3JhJ10gPSAnYXVkaW8veC1yZWFsLWF1 # ZGlvJwogIE1pbWVUeXBlWydyYW0nXSA9ICdhdWRpby94LXBuLXJlYWxhdWRp # bycKICBNaW1lVHlwZVsncmFyJ10gPSAnYXBwbGljYXRpb24veC1yYXInCiAg # TWltZVR5cGVbJ3JhcyddID0gJ2ltYWdlL3gtY211LXJhc3RlcicKICBNaW1l # VHlwZVsncmInXSA9ICd0ZXh0L3gtcnVieScKICBNaW1lVHlwZVsncmJhJ10g # PSAndGV4dC94LXJ1YnknCiAgTWltZVR5cGVbJ3JidyddID0gJ3RleHQveC1y # dWJ5JwogIE1pbWVUeXBlWydyZWonXSA9ICdhcHBsaWNhdGlvbi94LXJlamVj # dCcKICBNaW1lVHlwZVsncmdiJ10gPSAnaW1hZ2UveC1yZ2InCiAgTWltZVR5 # cGVbJ3JtJ10gPSAnYXVkaW8veC1yZWFsLWF1ZGlvJwogIE1pbWVUeXBlWydy # b2ZmJ10gPSAndGV4dC94LXRyb2ZmJwogIE1pbWVUeXBlWydycG0nXSA9ICdh # cHBsaWNhdGlvbi94LXJwbScKICBNaW1lVHlwZVsncnRmJ10gPSAnYXBwbGlj # YXRpb24vcnRmJwogIE1pbWVUeXBlWydydHgnXSA9ICd0ZXh0L3JpY2h0ZXh0 # JwogIE1pbWVUeXBlWydydWJ5J10gPSAndGV4dC94LXJ1YnknCiAgTWltZVR5 # cGVbJ3J1Ynl3J10gPSAndGV4dC94LXJ1YnknCiAgTWltZVR5cGVbJ3J2J10g # PSAnYXVkaW8veC1yZWFsLWF1ZGlvJwogIE1pbWVUeXBlWydzJ10gPSAndGV4 # dC94LWFzbScKICBNaW1lVHlwZVsnczNtJ10gPSAnYXVkaW8veC1zM20nCiAg # TWltZVR5cGVbJ3NjbSddID0gJ3RleHQveC1zY2hlbWUnCiAgTWltZVR5cGVb # J3NkYSddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhdycK # ICBNaW1lVHlwZVsnc2RjJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZp # c2lvbi5jYWxjJwogIE1pbWVUeXBlWydzZGQnXSA9ICdhcHBsaWNhdGlvbi92 # bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MnCiAgTWltZVR5cGVbJ3NkcCddID0g # J2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uaW1wcmVzcycKICBNaW1l # VHlwZVsnc2RzJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5j # aGFydCcKICBNaW1lVHlwZVsnc2R3J10gPSAnYXBwbGljYXRpb24vdm5kLnN0 # YXJkaXZpc2lvbi53cml0ZXInCiAgTWltZVR5cGVbJ3NnaSddID0gJ2ltYWdl # L3gtc2dpJwogIE1pbWVUeXBlWydzZ2wnXSA9ICdhcHBsaWNhdGlvbi92bmQu # c3RhcmRpdmlzaW9uLndyaXRlcicKICBNaW1lVHlwZVsnc2dtJ10gPSAndGV4 # dC9zZ21sJwogIE1pbWVUeXBlWydzZ21sJ10gPSAndGV4dC9zZ21sJwogIE1p # bWVUeXBlWydzaCddID0gJ3RleHQveC1zaCcKICBNaW1lVHlwZVsnc2hhcidd # ID0gJ2FwcGxpY2F0aW9uL3gtc2hhcicKICBNaW1lVHlwZVsnc2lkJ10gPSAn # YXVkaW8vcHJzLnNpZCcKICBNaW1lVHlwZVsnc2xrJ10gPSAndGV4dC9zcHJl # YWRzaGVldCcKICBNaW1lVHlwZVsnc21kJ10gPSAnYXBwbGljYXRpb24vdm5k # LnN0YXJkaXZpc2lvbi5tYWlsJwogIE1pbWVUeXBlWydzbWYnXSA9ICdhcHBs # aWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1hdGgnCiAgTWltZVR5cGVbJ3Nt # aSddID0gJ2FwcGxpY2F0aW9uL3gtc21pbCcKICBNaW1lVHlwZVsnc21pbCdd # ID0gJ2FwcGxpY2F0aW9uL3gtc21pbCcKICBNaW1lVHlwZVsnc21sJ10gPSAn # YXBwbGljYXRpb24veC1zbWlsJwogIE1pbWVUeXBlWydzbXMnXSA9ICdhcHBs # aWNhdGlvbi94LXNtcy1yb20nCiAgTWltZVR5cGVbJ3NuZCddID0gJ2F1ZGlv # L2Jhc2ljJwogIE1pbWVUeXBlWydzbyddID0gJ2FwcGxpY2F0aW9uL3gtc2hh # cmVkLWxpYnJhcnknCiAgTWltZVR5cGVbJ3NwZCddID0gJ2FwcGxpY2F0aW9u # L3gtZm9udC1zcGVlZG8nCiAgTWltZVR5cGVbJ3NxbCddID0gJ3RleHQveC1z # cWwnCiAgTWltZVR5cGVbJ3NyYyddID0gJ2FwcGxpY2F0aW9uL3gtd2Fpcy1z # b3VyY2UnCiAgTWltZVR5cGVbJ3N0YyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5z # dW4ueG1sLmNhbGMudGVtcGxhdGUnCiAgTWltZVR5cGVbJ3N0ZCddID0gJ2Fw # cGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGUnCiAgTWltZVR5 # cGVbJ3N0aSddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3Mu # dGVtcGxhdGUnCiAgTWltZVR5cGVbJ3N0bSddID0gJ2F1ZGlvL3gtc3RtJwog # IE1pbWVUeXBlWydzdHcnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53 # cml0ZXIudGVtcGxhdGUnCiAgTWltZVR5cGVbJ3N0eSddID0gJ3RleHQveC10 # ZXgnCiAgTWltZVR5cGVbJ3N1biddID0gJ2ltYWdlL3gtc3VuLXJhc3RlcicK # ICBNaW1lVHlwZVsnc3Y0Y3BpbyddID0gJ2FwcGxpY2F0aW9uL3gtc3Y0Y3Bp # bycKICBNaW1lVHlwZVsnc3Y0Y3JjJ10gPSAnYXBwbGljYXRpb24veC1zdjRj # cmMnCiAgTWltZVR5cGVbJ3N2ZyddID0gJ2ltYWdlL3N2Zyt4bWwnCiAgTWlt # ZVR5cGVbJ3N2Z3onXSA9ICdpbWFnZS9zdmcreG1sJwogIE1pbWVUeXBlWydz # d2YnXSA9ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcKICBNaW1l # VHlwZVsnc3hjJ10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYycK # ICBNaW1lVHlwZVsnc3hkJ10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwu # ZHJhdycKICBNaW1lVHlwZVsnc3hnJ10gPSAnYXBwbGljYXRpb24vdm5kLnN1 # bi54bWwud3JpdGVyLmdsb2JhbCcKICBNaW1lVHlwZVsnc3hpJ10gPSAnYXBw # bGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzcycKICBNaW1lVHlwZVsnc3ht # J10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aCcKICBNaW1lVHlw # ZVsnc3h3J10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyJwog # IE1pbWVUeXBlWydzeWxrJ10gPSAndGV4dC9zcHJlYWRzaGVldCcKICBNaW1l # VHlwZVsndCddID0gJ3RleHQveC10cm9mZicKICBNaW1lVHlwZVsndGFyJ10g # PSAnYXBwbGljYXRpb24veC10YXInCiAgTWltZVR5cGVbJ3RjbCddID0gJ3Rl # eHQveC10Y2wnCiAgTWltZVR5cGVbJ3RleCddID0gJ3RleHQveC10ZXgnCiAg # TWltZVR5cGVbJ3RleGknXSA9ICd0ZXh0L3gtdGV4aW5mbycKICBNaW1lVHlw # ZVsndGV4aW5mbyddID0gJ3RleHQveC10ZXhpbmZvJwogIE1pbWVUeXBlWyd0 # Z2EnXSA9ICdpbWFnZS94LXRnYScKICBNaW1lVHlwZVsndGd6J10gPSAnYXBw # bGljYXRpb24veC1jb21wcmVzc2VkLXRhcicKICBNaW1lVHlwZVsndGhlbWUn # XSA9ICdhcHBsaWNhdGlvbi94LXRoZW1lJwogIE1pbWVUeXBlWyd0aWYnXSA9 # ICdpbWFnZS90aWZmJwogIE1pbWVUeXBlWyd0aWZmJ10gPSAnaW1hZ2UvdGlm # ZicKICBNaW1lVHlwZVsndG9ycmVudCddID0gJ2FwcGxpY2F0aW9uL3gtYml0 # dG9ycmVudCcKICBNaW1lVHlwZVsndHInXSA9ICd0ZXh0L3gtdHJvZmYnCiAg # TWltZVR5cGVbJ3RzdiddID0gJ3RleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMn # CiAgTWltZVR5cGVbJ3R0YyddID0gJ2FwcGxpY2F0aW9uL3gtZm9udC10dGYn # CiAgTWltZVR5cGVbJ3R0ZiddID0gJ2FwcGxpY2F0aW9uL3gtZm9udC10dGYn # CiAgTWltZVR5cGVbJ3R4dCddID0gJ3RleHQvcGxhaW4nCiAgTWltZVR5cGVb # J3VzdGFyJ10gPSAnYXBwbGljYXRpb24veC11c3RhcicKICBNaW1lVHlwZVsn # dmNmJ10gPSAndGV4dC94LXZjYWxlbmRhcicKICBNaW1lVHlwZVsndmNzJ10g # PSAndGV4dC94LXZjYWxlbmRhcicKICBNaW1lVHlwZVsndmknXSA9ICd0ZXh0 # L3gtdmknCiAgTWltZVR5cGVbJ3ZpbSddID0gJ3RleHQveC12aScKICBNaW1l # VHlwZVsndml2J10gPSAndmlkZW8vdm5kLnZpdm8nCiAgTWltZVR5cGVbJ3Zp # dm8nXSA9ICd2aWRlby92bmQudml2bycKICBNaW1lVHlwZVsndm9iJ10gPSAn # dmlkZW8vbXBlZycKICBNaW1lVHlwZVsndm9jJ10gPSAnYXVkaW8veC12b2Mn # CiAgTWltZVR5cGVbJ3ZvciddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2 # aXNpb24ud3JpdGVyJwogIE1pbWVUeXBlWyd3YXYnXSA9ICdhdWRpby94LXdh # dicKICBNaW1lVHlwZVsnd2F4J10gPSAnYXVkaW8veC1tcy1hc3gnCiAgTWlt # ZVR5cGVbJ3drMSddID0gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItMycK # ICBNaW1lVHlwZVsnd2szJ10gPSAnYXBwbGljYXRpb24vdm5kLmxvdHVzLTEt # Mi0zJwogIE1pbWVUeXBlWyd3azQnXSA9ICdhcHBsaWNhdGlvbi92bmQubG90 # dXMtMS0yLTMnCiAgTWltZVR5cGVbJ3drcyddID0gJ2FwcGxpY2F0aW9uL3Zu # ZC5sb3R1cy0xLTItMycKICBNaW1lVHlwZVsnd21mJ10gPSAnaW1hZ2UveC13 # bWYnCiAgTWltZVR5cGVbJ3dtdiddID0gJ3ZpZGVvL3gtbXMtd212JwogIE1p # bWVUeXBlWyd3cmwnXSA9ICdtb2RlbC92cm1sJwogIE1pbWVUeXBlWyd3dngn # XSA9ICd2aWRlby94LW1zLXd2eCcKICBNaW1lVHlwZVsneGFjJ10gPSAnYXBw # bGljYXRpb24veC1nbnVjYXNoJwogIE1pbWVUeXBlWyd4YmVsJ10gPSAnYXBw # bGljYXRpb24veGJlbCcKICBNaW1lVHlwZVsneGJtJ10gPSAnaW1hZ2UveC14 # Yml0bWFwJwogIE1pbWVUeXBlWyd4Y2YnXSA9ICdpbWFnZS94LXhjZicKICBN # aW1lVHlwZVsneGknXSA9ICdhdWRpby94LXhpJwogIE1pbWVUeXBlWyd4bGEn # XSA9ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnCiAgTWltZVR5cGVbJ3hs # YyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcKICBNaW1lVHlwZVsn # eGxkJ10gPSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJwogIE1pbWVUeXBl # Wyd4bHMnXSA9ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnCiAgTWltZVR5 # cGVbJ3hsdCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcKICBNaW1l # VHlwZVsneG0nXSA9ICdhdWRpby94LXhtJwogIE1pbWVUeXBlWyd4bWwnXSA9 # ICd0ZXh0L3htbCcKICBNaW1lVHlwZVsneHBtJ10gPSAnaW1hZ2UveC14cGl4 # bWFwJwogIE1pbWVUeXBlWyd4d2QnXSA9ICdpbWFnZS94LXh3aW5kb3dkdW1w # JwogIE1pbWVUeXBlWyd5J10gPSAndGV4dC94LXlhY2MnCiAgTWltZVR5cGVb # J3lhY2MnXSA9ICd0ZXh0L3gteWFjYycKICBNaW1lVHlwZVsneiddID0gJ2Fw # cGxpY2F0aW9uL3gtY29tcHJlc3MnCiAgTWltZVR5cGVbJ3ppcCddID0gJ2Fw # cGxpY2F0aW9uL3ppcCcKICBNaW1lVHlwZVsnem9vJ10gPSAnYXBwbGljYXRp # b24veC16b28nCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAu # ZWFyMnJ1YnlzY3JpcHQuZi4xMTY2OC50YXIvZXYvYnJvd3Nlci5yYgAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDUyMDcAMTAy # NTAzMjA2MTMAMDIwNjYxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1YnkiCnJlcXVpcmUgImV2L25l # dCIKCmJlZ2luCiAgcmVxdWlyZSAid2luMzJvbGUiCiAgcmVxdWlyZSAid2lu # MzIvcmVnaXN0cnkiCnJlc2N1ZSBMb2FkRXJyb3IKICAkIi5wdXNoICJ3aW4z # Mm9sZS5zbyIKICAkIi5wdXNoICJ3aW4zMi9yZWdpc3RyeS5yYiIKZW5kCgpk # ZWYgd2luZG93c2Jyb3dzZXIKICAkc3RkZXJyLnB1dHMgIkxvb2tpbmcgZm9y # IGRlZmF1bHQgYnJvd3Nlci4uLiIKCiAgZmlsZXR5cGUJPSAiaHRtbGZpbGUi # CiAgYXBwbGljYXRpb24JPSBuaWwKCiAgYmVnaW4KICAgIFdpbjMyOjpSZWdp # c3RyeTo6SEtFWV9DTEFTU0VTX1JPT1Qub3BlbigiLmh0bWwiKSBkbyB8cmVn # fAogICAgICBmaWxldHlwZQkJPSByZWdbIiJdCiAgICBlbmQKCiAgICBXaW4z # Mjo6UmVnaXN0cnk6OkhLRVlfQ0xBU1NFU19ST09ULm9wZW4oZmlsZXR5cGUg # KyAiXFxzaGVsbFxcb3BlblxcY29tbWFuZCIpIGRvIHxyZWd8CiAgICAgIGFw # cGxpY2F0aW9uCT0gcmVnWyIiXQogICAgZW5kCiAgcmVzY3VlIE5hbWVFcnJv # cgogICAgJHN0ZGVyci5wdXRzICJPbmx5IGF2YWlsYWJsZSBmb3IgV2luZG93 # cyBhbmQgQ3lnd2luLiIKICBlbmQKCiAgYXBwbGljYXRpb24KZW5kCgpkZWYg # Y3lnd2luYnJvd3NlcgogIGJyb3dzZXIsICphcmdzCT0gd2luZG93c2Jyb3dz # ZXIuc3BsaXR3b3JkcwogIGJyb3dzZXIJCT0gYnJvd3Nlci5nc3ViKC9cXC8s # ICIvIikKICAjYnJvd3NlcgkJPSBicm93c2VyCgogIGFyZ3MuY29sbGVjdCF7 # fGF8IGEuZ3N1YigvXFwvLCAiLyIpfQogICNhcmdzLmNvbGxlY3Qhe3xhfCAi # XCIlc1wiIiAlIFthLmdzdWIoL1xcLywgIi8iKV19CiAgI2FyZ3MuY29sbGVj # dCF7fGF8ICJcIiVzXCIiICUgW2FdfQoKICByZXMJPSAiXCIlc1wiICVzIiAl # IFticm93c2VyLCBhcmdzLmpvaW4oIiAiKV0KICByZXMKZW5kCgpkZWYgbGlu # dXhicm93c2VyCiAgYXBwbGljYXRpb24JPSAiIgoKICBhcHBsaWNhdGlvbgk9 # IGB3aGljaCBnYWxlb24JCTI+IC9kZXYvbnVsbGAuY2hvbXAJaWYgYXBwbGlj # YXRpb24uZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hpY2ggbW96aWxsYQky # PiAvZGV2L251bGxgLmNob21wCWlmIGFwcGxpY2F0aW9uLmVtcHR5PwogIGFw # cGxpY2F0aW9uCT0gYHdoaWNoIGZpcmVmb3gJMj4gL2Rldi9udWxsYC5jaG9t # cAlpZiBhcHBsaWNhdGlvbi5lbXB0eT8KICBhcHBsaWNhdGlvbgk9IGB3aGlj # aCBvcGVyYQkJMj4gL2Rldi9udWxsYC5jaG9tcAlpZiBhcHBsaWNhdGlvbi5l # bXB0eT8KICBhcHBsaWNhdGlvbgk9IGB3aGljaCBrb25xdWVyb3IJMj4gL2Rl # di9udWxsYC5jaG9tcAlpZiBhcHBsaWNhdGlvbi5lbXB0eT8KICBhcHBsaWNh # dGlvbgk9IGB3aGljaCBodG1sdmlldwkyPiAvZGV2L251bGxgLmNob21wCWlm # IGFwcGxpY2F0aW9uLmVtcHR5PwogIGFwcGxpY2F0aW9uCT0gbmlsCQkJCQkJ # aWYgYXBwbGljYXRpb24uZW1wdHk/CgogIGFwcGxpY2F0aW9uCmVuZAoKZGVm # IGRlZmF1bHRicm93c2VyCiAgcmVzCT0gbmlsCiAgcmVzCT0gd2luZG93c2Jy # b3dzZXIJaWYgd2luZG93cz8KICByZXMJPSBjeWd3aW5icm93c2VyCQlpZiBj # eWd3aW4/CiAgcmVzCT0gbGludXhicm93c2VyCQlpZiBsaW51eD8KICByZXMK # ZW5kCgpkZWYgc2hvd3VybGluYnJvd3Nlcih1cmwsIGJyb3dzZXI9ZGVmYXVs # dGJyb3dzZXIpCiAgY29tbWFuZAk9ICIje2Jyb3dzZXJ9IFwiI3t1cmx9XCIi # CgogIHN5c3RlbShjb21tYW5kKQlvciAkc3RkZXJyLnB1dHMgIlN0YXJ0aW5n # IG9mIHRoZSBicm93c2VyIGZhaWxlZCwgb3IgdGhlIGJyb3dzZXIgdGVybWlu # YXRlZCBhYm5vcm1hbGx5LlxuQ29tbWFuZCA9PiAje2NvbW1hbmR9IgplbmQK # CmRlZiBzaG93aW5icm93c2VyKGh0bWwsIGJyb3dzZXI9ZGVmYXVsdGJyb3dz # ZXIpCiAgcG9ydCwgaW8JPSBUQ1BTZXJ2ZXIuZnJlZXBvcnQoNzcwMSwgNzcw # OSkKCiAgdW5sZXNzIGJyb3dzZXIubmlsPwogICAgVGhyZWFkLm5ldyBkbwog # ICAgICBiZWdpbgoJVGhyZWFkLnBhc3MKCiAgICAgICAgc2hvd3VybGluYnJv # d3NlcigiaHR0cDovL2xvY2FsaG9zdDoje3BvcnR9LyIsIGJyb3dzZXIpCiAg # ICAgIHJlc2N1ZQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBIVFRQU2Vy # dmVyLnNlcnZlKFtwb3J0LCBpb10pIGRvIHxyZXEsIHJlc3B8CiAgICByZXNw # IDw8IGh0bWwKCiAgICByZXNwLnN0b3AKICBlbmQKZW5kCgpkZWYgdGFiMmh0 # bWwodGFiKQogIHJlcwk9ICIiCgogIHRhYgk9IHRhYi50b19odG1sKGZhbHNl # KQoKICByZXMgPDwgIjxodG1sPlxuIgogIHJlcyA8PCAiPGJvZHk+XG4iCiAg # cmVzIDw8ICI8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScxJyBjZWxs # c3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzMnPlxuIgogIHJlcyA8PCAiPHRi # b2R5PlxuIgoKICB0YWIuc3BsaXQoL1xyKlxuLykuZWFjaCBkbyB8bGluZXwK # ICAgIHJlcyA8PCAiPHRyPlxuIgoKICAgIGxpbmUuc3BsaXQoL1x0LywgLTEp # LmVhY2ggZG8gfHZlbGR8CiAgICAgIHZlbGQJPSAiJm5ic3A7IglpZiB2ZWxk # LmNvbXByZXNzLmVtcHR5PwoKICAgICAgcmVzIDw8ICI8dGQ+JXM8L3RkPlxu # IiAlIHZlbGQKICAgIGVuZAoKICAgIHJlcyA8PCAiPC90cj5cbiIKICBlbmQK # CiAgcmVzIDw8ICI8L3Rib2R5PlxuIgogIHJlcyA8PCAiPC90YWJsZT5cbiIK # ICByZXMgPDwgIjwvYm9keT5cbiIKICByZXMgPDwgIjwvaHRtbD5cbiIKCiAg # cmVzCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5m # LjExNjY4LnRhci9ldi90aHJlYWQucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAw # MDE3NTAAMDAwMTc1MAAwMDAwMDAwMTY0MQAxMDI1MDMyMDYxMwAwMjA0NDMA # IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAw # MAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVx # dWlyZSAiZXYvcnVieSIKcmVxdWlyZSAidGhyZWFkIgoKY2xhc3MgRmFrZVRo # cmVhZAogIGRlZiBpbml0aWFsaXplKCphcmdzKQogICAgeWllbGQoKmFyZ3Mp # CiAgZW5kCgogIGRlZiBqb2luCiAgZW5kCmVuZAoKY2xhc3MgVGhyZWFkTGlt # aXRlcgogIGRlZiBpbml0aWFsaXplKGxpbWl0KQogICAgQGxpbWl0CT0gbGlt # aXQKICAgIEBjb3VudAk9IDAKICAgIEB0aHJlYWRzCT0gW10KICAgIEBtdXRl # eAk9IE11dGV4Lm5ldwogICAgQGN2CQk9IENvbmRpdGlvblZhcmlhYmxlLm5l # dwoKICAgIGV2ZXJ5KDEpIGRvCiAgICAgIEBtdXRleC5zeW5jaHJvbml6ZSBk # bwogICAgICAgIEB0aHJlYWRzLmR1cC5lYWNoIGRvIHx0fAogICAgICAgICAg # dW5sZXNzIHQuYWxpdmU/CiAgICAgICAgICAgICRzdGRlcnIucHV0cyAiRm91 # bmQgZGVhZCB0aHJlYWQuIgoKICAgICAgICAgICAgQHRocmVhZHMuZGVsZXRl # KHQpCgogICAgICAgICAgICBAY291bnQgLT0gMQoKICAgICAgICAgICAgQGN2 # LnNpZ25hbAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgIGVuZAog # ICAgZW5kCiAgZW5kCgogIGRlZiB3YWl0CiAgICBpZiBibG9ja19naXZlbj8K # ICAgICAgc2VsZi53YWl0CiAgICAgIHlpZWxkCiAgICAgIHNlbGYuc2lnbmFs # CiAgICBlbHNlCiAgICAgIEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICAg # IEB0aHJlYWRzIDw8IFRocmVhZC5jdXJyZW50CgogICAgICAgIEBjb3VudCAr # PSAxCgogICAgICAgIEBjdi53YWl0KEBtdXRleCkJaWYgQGNvdW50ID4gQGxp # bWl0CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgogIGRlZiBzaWduYWwKICAg # IEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICBAdGhyZWFkcy5kZWxldGUo # VGhyZWFkLmN1cnJlbnQpCgogICAgICBAY291bnQgLT0gMQoKICAgICAgQGN2 # LnNpZ25hbAogICAgZW5kCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAA # 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