tramp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tramp and NT-Emacs with plink


From: Douglas Gray Stephens
Subject: Re: Tramp and NT-Emacs with plink
Date: Wed, 30 Oct 2002 18:41:14 +0000

Kai,

At 19:17 (GMT+0200) on 8-October-2002, Kai Großjohann wrote:
 > Douglas Gray Stephens <address@hidden> writes:
 > 
 > > Sorry, more things to look at ....
 > >
 > > I'm currently on tramp.el version 2.0.23.
 > >
 > > I still believe that tramp is filling my ~/.bash_history file up, but
 > > am not sure how to help debug this issue, as it probably affects other
 > > users. (It appears to only happen on some machines, so there must be a
 > > machine/shell/??? issue, but I'm using bash as my default shell on all
 > > the machines.)
 > 
 > Tramp tries to turn off the ksh history already, it is easy to add
 > commands to also turn off the bash history.
 > 
 > How does one turn off the bash history?  (I'm too lazy to read the
 > documentation...)

Within bash, I think the commands are the same as ksh, so HISTSIZE and
HISTFILE are both appropriate.

I've attached my history file and assoicated tramp debug files, and if
you look at line 359 in the history file (
 tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
 echo are you awake
 exec env 'PS1=$ ' /bin/sh
 sudo su -
 PS1='
 /////
 '; PS2=''; PS3=''
) this 


This corresponds to line 3798 in the debug file:
 $ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
 (nil 1 15002 15000 (15807 43793) (15807 43690) (15807 43690) 60265 33261 t (6 
. 51848) (128 133))
 $ echo are you awake
 [[Remote prompt `^/////
?$' not found in 10 secs]]# Opening connection for address@hidden using nil...
 # Waiting for prompts from remote shell
 # Waiting 60s for prompt from remote shell
 # Sending password
 # Found remote shell prompt.
 # Initializing remote shell
 $ exec env PS1='$ ' /bin/sh

The debug log shows
 $ # Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1'
rather than showing a command being sent.  In tramp.el this is done
via a
 process-send-string
while other commands are sent via 
 tramp-send-command
is this significant



Douglas.
# Opening connection for address@hidden using nil...
# Waiting for prompts from remote shell
# Waiting 60s for prompt from remote shell
# Sending password
# Found remote shell prompt.
# Initializing remote shell
$ exec env PS1='$ ' /bin/sh
# Waiting 30s for remote `/bin/sh' to come up...
exec env 'PS1=$ ' /bin/sh
$ # Setting up remote shell environment
stty -inlcr -echo kill '^U'
$ $ # Determining coding system
foo
bar
$ # Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1'
$ # Waiting 30s for `set +o vi +o emacs'
$ # Waiting 30s for `unset MAIL MAILCHECK MAILPATH'
$ # Waiting 30s for `unset CDPATH'
$ # Setting shell prompt
$ PS1='
/////
'; PS2=''; PS3=''
$ echo ~root
~root
$ while read d; do if test -x $d/bash -a -f $d/bash; then echo tramp_executable 
$d/bash; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
tramp_executable /bin/bash
# Starting remote shell `/bin/bash --norc' for tilde expansion...
$ PS1='$ ' exec /bin/bash --norc
$ # Setting remote shell prompt...
# Setting remote shell prompt...done
# Finding command to check if file exists
$ test -e / 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e /\ this\ file\ does\ not\ exist\  2>/dev/null; echo tramp_exit_status 
$? 
tramp_exit_status 1
# Finding a suitable `ls' command
# Checking remote `/export/home/gray/bin/ls' command for `-n' option
$ test -x /export/home/gray/bin/ls 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
# Checking remote `/bin/ls' command for `-n' option
$ test -x /bin/ls 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Testing remote command `/bin/ls' for -n...
$ /bin/ls -lnd / >/dev/null 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Testing remote command `/bin/ls' for -n...okay
# Using remote command `/bin/ls' for getting directory listings
$ tramp_set_exit_status () {
return $1
}
$ test -e /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/sbin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/sbin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/local/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/local/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /local/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /local/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /local/gnu/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /usr/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /usr/pkg/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /usr/contrib/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ 
PATH=/export/home/gray/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin; 
export PATH
$ LC_TIME=C; export LC_TIME; echo huhu
huhu
$ mesg n; echo huhu
huhu
$ biff n ; echo huhu
bash: biff: command not found
huhu
$ unalias ls; echo huhu
bash: unalias: `ls': not an alias
huhu
$ ( test / -nt / )
$ tramp_test_nt () {
test -n "`find $1 -prune -newer $2 -print`"
}
$ tramp_uudecode () {
(echo begin 600 /tmp/tramp.$$; tail +2) | uudecode
cat /tmp/tramp.$$
rm -f /tmp/tramp.$$
}
$ while read d; do if test -x $d/perl5 -a -f $d/perl5; then echo 
tramp_executable $d/perl5; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
$ while read d; do if test -x $d/perl -a -f $d/perl; then echo tramp_executable 
$d/perl; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
tramp_executable /bin/perl
# Sending the Perl `file-attributes' implementation.
$ tramp_file_attributes () {
/bin/perl -e '$f = $ARGV[0];
@s = lstat($f);
if (($s[2] & 0170000) == 0120000) { $l = readlink($f); $l = "\"$l\""; }
elsif (($s[2] & 0170000) == 040000) { $l = "t"; }
else { $l = "nil" };
printf("(%s %u %d %d (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) (%u %u))\n",
$l, $s[3], $s[4], $s[5], $s[8] >> 16 & 0xffff, $s[8] & 0xffff,
$s[9] >> 16 & 0xffff, $s[9] & 0xffff, $s[10] >> 16 & 0xffff, $s[10] & 0xffff,
$s[7], $s[2], $s[1] >> 16 & 0xffff, $s[1] & 0xffff, $s[0] >> 16 & 0xffff, $s[0] 
& 0xffff);' $1 2>/dev/null
}
# Sending the Perl `mime-encode' implementations.
$ tramp_encode () {
/bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
};

binmode(\*STDIN);

# We read in chunks of 54 bytes, to generate output lines
# of 72 chars (plus end of line)
$/ = \54;

while (my $data = <STDIN>) {
    my $pad = q();

    # Only for the last chunk, and only if did not fill the last three-byte 
packet
    if (eof) {
        my $mod = length($data) % 3;
        $pad = q(=) x (3 - $mod) if $mod;
    }

    # Not the fastest method, but it is simple: unpack to binary string, split
    # by groups of 6 bits and convert back from binary to byte; then map into
    # the translation table
    print
      join q(),
        map($trans{$_},
            (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)),
              $pad,
                qq(\n);
}
' 2>/dev/null
}
$ tramp_encode_with_module () {
perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' 2>/dev/null
}
# Sending the Perl `mime-decode' implementations.
$ tramp_decode () {
/bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {($_, substr(unpack(q(B8), chr $i++), 2, 6))}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)
};

my %bytes = map {(unpack(q(B8), chr $_), chr $_)} 0 .. 255;

binmode(\*STDOUT);

# We are going to accumulate into $pending to accept any line length
# (we do not check they are <= 76 chars as the RFC says)
my $pending = q();

while (my $data = <STDIN>) {
    chomp $data;

    # If we find one or two =, we have reached the end and
    # any following data is to be discarded
    my $finished = $data =~ s/(==?).*/$1/;
    $pending .= $data;

    my $len = length($pending);
    my $chunk = substr($pending, 0, $len & ~3);

    # Easy method: translate from chars to (pregenerated) six-bit packets, join,
    # split in 8-bit chunks and convert back to char.
    print join q(),
      map $bytes{$_},
        ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g);

    last if $finished;
}
' 2>/dev/null
}
$ tramp_decode_with_module () {
perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' 2>/dev/null
}
$ while read d; do if test -x $d/ln -a -f $d/ln; then echo tramp_executable 
$d/ln; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
tramp_executable /bin/ln
# Checking remote encoding command `mimencode -b' for sanity
$ ( mimencode -b </dev/null 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
# Checking remote decoding command `mimencode -u -b' for sanity
$ ( echo xyzzy | mimencode -b | mimencode -u -b 2>/dev/null; echo 
tramp_exit_status $? )
xyzzy
tramp_exit_status 0
# Checking to see if encoding/decoding commands work on remote host...
$ echo xyzzy | mimencode -b | mimencode -u -b
xyzzy
# Checking to see if encoding/decoding commands work on remote host...done
$ cd ~gray; pwd
/export/home/gray
$ cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ /bin/ls -a -d test* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
test/
test-000920-iwf/
test-020122/
test-020820/
test-020929/
test-group-020911/
test-hrcreator-020611/
test.staging/
$ cd
$ cd ~gray; pwd
/export/home/gray
$ cd ~gray; pwd
/export/home/gray
$ test -e /export/home/gray/public_html/test 2>/dev/null; echo 
tramp_exit_status $? 
tramp_exit_status 0
$ cd ~gray; pwd
/export/home/gray
$ cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ /bin/ls -a -d test* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
test/
test-000920-iwf/
test-020122/
test-020820/
test-020929/
test-group-020911/
test-hrcreator-020611/
test.staging/
$ cd
$ cd ~gray; pwd
/export/home/gray
$ cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ /bin/ls -a -d test\ * 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
$ cd
$ cd ~gray; pwd
/export/home/gray
$ cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ /bin/ls -a -d test-* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
test-000920-iwf/
test-020122/
test-020820/
test-020929/
test-group-020911/
test-hrcreator-020611/
$ cd
$ cd ~gray; pwd
/export/home/gray
$ cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ /bin/ls -a -d test-g* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
test-group-020911/
$ cd
$ cd ~gray; pwd
/export/home/gray
$ cd ~gray; pwd
/export/home/gray
$ test -e /export/home/gray/public_html/test-group-020911/ 2>/dev/null; echo 
tramp_exit_status $? 
tramp_exit_status 0
$ cd ~gray; pwd
/export/home/gray
$ ( test -d 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 1
$ test -e /export 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export
(t 4 0 3 (15802 2814) (15669 41634) (15669 41634) 512 16877 t (1 . 23424) (128 
128))
$ test -e /export/home 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home
(t 18 0 0 (15807 38231) (15805 33360) (15805 33360) 512 16877 t (0 . 2) (128 
133))
$ test -e /export/home/gray 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray
(t 9 15002 1 (15807 38238) (15806 31457) (15806 31457) 1536 16877 t (3 . 23069) 
(128 133))
$ test -e /export/home/gray/public_html 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray/public_html
(t 12 15002 1 (15807 38614) (15767 9486) (15767 9486) 512 16877 t (3 . 45584) 
(128 133))
$ test -e /export/home/gray/public_html/test-group-020911 2>/dev/null; echo 
tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray/public_html/test-group-020911
(t 3 15002 15000 (15806 25753) (15743 15624) (15743 15624) 2560 16877 t (6 . 
34909) (128 133))
$ test -e /export/home/gray/public_html/test-group-020911/admin 2>/dev/null; 
echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray/public_html/test-group-020911/admin
(t 3 15002 15000 (15806 25754) (15743 15684) (15743 15684) 512 16877 t (6 . 
46177) (128 133))
$ test -e /export/home/gray/public_html/test-group-020911/admin/groups 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups
(t 2 15002 15000 (15807 38261) (15773 51388) (15773 51388) 1536 16877 t (6 . 
51818) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38282) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38282) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
$ test -e /export 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export
(t 4 0 3 (15802 2814) (15669 41634) (15669 41634) 512 16877 t (1 . 23424) (128 
128))
$ test -e /export/home 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home
(t 18 0 0 (15807 38231) (15805 33360) (15805 33360) 512 16877 t (0 . 2) (128 
133))
$ test -e /export/home/gray 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray
(t 9 15002 1 (15807 38238) (15806 31457) (15806 31457) 1536 16877 t (3 . 23069) 
(128 133))
$ test -e /export/home/gray/public_html 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray/public_html
(t 12 15002 1 (15807 38614) (15767 9486) (15767 9486) 512 16877 t (3 . 45584) 
(128 133))
$ test -e /export/home/gray/public_html/test-group-020911 2>/dev/null; echo 
tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray/public_html/test-group-020911
(t 3 15002 15000 (15806 25753) (15743 15624) (15743 15624) 2560 16877 t (6 . 
34909) (128 133))
$ test -e /export/home/gray/public_html/test-group-020911/admin 2>/dev/null; 
echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes /export/home/gray/public_html/test-group-020911/admin
(t 3 15002 15000 (15806 25754) (15743 15684) (15743 15684) 512 16877 t (6 . 
46177) (128 133))
$ test -e /export/home/gray/public_html/test-group-020911/admin/groups 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups
(t 2 15002 15000 (15807 38261) (15773 51388) (15773 51388) 1536 16877 t (6 . 
51818) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38282) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38282) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Encoding remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...
$ mimencode -b < 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
IyEvdXNyL2Jpbi9wZXJsCgojIDI1LXNlcC0wMiBkZ3MgRXhwYW5kIFNJR05BTF9DTEVBTlVQ
IHRvIGluY2x1ZGUgdHJhY2UgYmFjayBkZXRhaWxzLgojIDI0LXNlcC0wMiBkZ3MgRml4IGlz
c3VlIHdoZW4gbm90IGluIHVwZGF0ZSBtb2RlLCBhbmQgbm90IGdldHRpbmcgcHJveHkgZGV0
YWlscwojICAgICAgICAgICAgICAgSWYgbm8gcHJveHksIHVzZSBtYW5hZ2VyIGFzIHRoZSBh
ZG1pbiBjb250YWN0CiMgMTktc2VwLTAyIGRncyBBZGQgdGVzdCB3aGVuIGxkYXAgY29ubmVj
dGlvbiBkcm9wcyBhZnRlciBzdGFydCAKIyAgICAgICAgICAgICAgIGluIHNlbmRFbWFpbAoj
ICAgICAgICAgICAgICAgQ2hhbmdlIHJvb3RAbG9jYWxob3N0IHRvIHJvb3QgZm9yIGZlZWRi
YWNrIG1haWwKIyAxOC1zZXAtMDIgZGdzIEFkZCBsaXN0IG9mIGdyb3VwcyB0byBiZSBwcm9j
ZXNzZWQgdG8gbG9nCiMgICAgICAgICAgICAgICBNYWtlIGFsYXJtIHNldHRpbmcgaW50byBh
IHZhcmlhYmxlCiMgMTMtc2VwLTAyIGRncyBNb2RpZnkgZW1haWwgbWVzc2FnZXMKIyAgICAg
ICAgICAgICAgIEFkZCBjaGVjayB0byBzbGVlcCB3aGVuIHNlcnZlciBpcyBkdW1waW5nIGF0
IG1pZG5pZ2h0IAojICAgICAgICAgICAgICAgICAodGhpcyBtYXkgbmVlZCBhZGp1c3Rpbmcg
d2l0aCBkdW1wIGNyb24pCiMgICAgICAgICAgICAgICBBZGQgZ3JvdXAgbmFtZSBvdXRwdXQg
ZHVyaW5nIHByb2Nlc3NpbmcKIyAgICAgICAgICAgICAgIERyb3AgaW5jbHVkZSBzdGF0ZW1l
bnQgb24gdG9wIGxpbmUgKG11c3QgYmUgcnVuIGZyb20gd2l0aGluIGRpcmVjdG9yeQojICAg
ICAgICAgICAgICAgaS5lLgojICAgICAgICAgICAgICAgKGNkIDxzb21lZGlyZWN0b3J5Pjsu
L2dycHRlci5wbCApCiMgICAgICAgICAgICAgICBQaWNrIHVwIGdyb3VwcyBiZWluZyBwcm9j
ZXNzZWQgaW4gdXBkYXRlIG1vZGUKIyAxMC1zZXAtMDIgZGdzIEZpeCBpc3N1ZSB3aXRoIG1p
c3NpbmcgImNuPSIgaW4gdW5pcXVlbWVtYmVyCiMgMzAtYXVnLTAyIGRncyBGaXggYnVnIHdo
ZW4gdW5pcXVlbWVtYmVycyBub3QgcmVtb3ZlZAojICAgICAgICAgICAgICAgUmV3cml0ZSBz
ZW5kRW1haWwgcm91dGluZQojICAgICAgICAgICAgICAgRG8gbm90IGVtYWlsIGlmIG9ubGUg
TERBUCBjb25uZWN0aW9uIGZhaWxpbmcKIyAgICAgICAgICAgICAgIFJlbW92ZSByZWR1bmRh
bnQgZXZhbCBjYWxscwojICAgICAgICAgICAgICAgVXBkYXRlIFVSTCB0byBiZSBwcm9kdWN0
aW9uIGFuZCBub3QgZGVidXNzeQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgbGRhcCBncm91cHMgYmFja2Vu
ZCAoYmF0Y2gpIHByb2Nlc3NpbmcKIyBhZGFwdGVkIGZyb20gc2xiJ3MgZ3JvdXB0ZXIucGwK
IwojIERvbiBFcmlja3NvbiwgSUVDLCAyMDAwCiMKIyBEZWJ1ZyBMZXZlbDogMSBmZXcgaW5m
b3JtYXRpb24sIHNtYWxsIHZlcmJvc2UgCiMgICAgICAgICAgICAgIDIgZ2VuZXJhbCB2ZXJi
b3NlIChnb29kIGZvciBkZW1vcykKIyAgICAgICAgICAgICAgMyBwcm9ncmFtIGZsb3cKIyAg
ICAgICAgICAgICAgNCB2YXJpYWJsZXMgY29udGVudCBpbnNpZGUgcHJvY2VkdXJlCiMgICAg
ICAgICAgICAgIDUgaGF2aW5nIGJhZCBkYXk/CiMKIyBDcmVhdGVkOiBCYXNlZCB1cG9uIGdy
b3VwdGVyLnBsIE1hcmNoIDE5OTggYnkgRGFuaWVsIEd1ZXJtZXVyCiMKIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Cgp1c2Ugc3RyaWN0Owp1c2UgZ3JwZ2xvYmFsOwp1c2UgRGF0ZTo6TWFuaXA7CnVzZSBNb3pp
bGxhOjpMREFQOjpDb25uOwp1c2UgTW96aWxsYTo6TERBUDo6VXRpbHM7CnVzZSBNb3ppbGxh
OjpMREFQOjpFbnRyeTsKI3VzZSBUaW1lOjpQYXJzZURhdGU7CgpteSBAbWVtYmVyTGlzdDsK
bXkgQHJlbW92ZV9saXN0OwpteSBAYXJnczsKbXkgKCRjb25uSG9zdCwkY29ublBvcnQsJGNv
bm5ETiwkY29ublBhc3MsCiAgICAkZ3JvdXBiYXNlZG4sJHBlb3BsZWJhc2Vkbiwkcm9sZWJh
c2VkbikgPSAmZ2V0UGFybXM7Cm15ICRjdXJHcm91cDsKbXkgJGN1ckFkbWluOwpteSAkY3Vy
TGRhcEFkbWluOwpteSAkY3VyTGRhcEFkbWluTWFpbDsKCm15ICRydG47Cm15ICRucmVjb3Jk
czsKbXkgJHNjb3BlPSdzdWJ0cmVlJzsKbXkgJFZlcnNpb25JbmZvOwpteSAkbG9nOwpteSAk
bGRhcDsKbXkgJGZvbnRjb2xvcjsKbXkgJGRlYnVnOwpteSAkdGltZVN0YW1wOwpteSAkaTsK
bXkgJHA7Cm15ICRteW5hbWU7Cm15IEBmaWVsZHM7Cm15ICVyZWNvcmRzOwpteSAlcmVjb3Jk
OwpteSAkcmVjb3JkWDsKbXkgJHNlYXJjaFZhbDsKbXkgJGZpZWxkX3RvX3NlYXJjaDsKbXkg
JGF0dHI7Cm15ICRmaWx0ZXI7Cm15IEBwczsKbXkgJGRhdGU7Cm15ICRncm91cF9leHBpcmU7
Cm15ICRleHBpcmVfZGF0ZTI7Cm15ICRleHBpcmVfZGF0ZTsKbXkgJGVycjsKbXkgJGVycmZs
YWc7Cm15ICRlcnJ0ZXh0OwpteSAkZXJydGV4dE1zZzsKbXkgJHN0YXJ0VGltZTsKbXkgJHJl
YWRfaG9zdDsKbXkgQGF0dHJzOwpteSAkYmFzZWRuOwpteSAkbnVfdXNlcjsKbXkgJG51X3Bh
c3N3ZDsKbXkgJGJ1ZmY7Cm15ICR1cGRhdGVvbmx5OwpteSAkc2hvdzsKbXkgJGxhc3Rtb2Rp
ZmllZG9uOwpteSAkcmVjdXJfbGV2ZWw7Cm15ICRsaXN0b25seTsKbXkgJGxvY2tmb3JjZWQ7
Cm15ICRrZWVwdGVtcDsKbXkgJGh0bWw7Cm15ICRncm91cF9uYW1lOwpteSAkZW9sOwpteSAk
ZW9scHJpbnQ7Cm15ICRhbmFseXplOwpteSAkdGVtcGZpbGU7Cm15ICRtZW1iZXJsaW1pdDsK
bXkgJGRuOwpteSAkY247Cm15ICR0aGlzY247Cm15ICRzaXplbGltaXQ7Cm15ICRtZW1iZXJm
aWxlOwpteSAkbG9ja2ZpbGU7Cm15ICRzcmNkaXI7Cm15ICR3b3JrZGlyOwpteSAkdG1wZGly
OwpteSAkbG9nZGlyOwpteSBAZ3JvdXBMaXN0OwpteSBAYWRtaW5MaXN0OwpteSAkb2xkTmFt
ZTsKbXkgJGNoYW5nZWQ7Cm15ICRwczsKbXkgJGNtZDsKCm15ICRtYXhUaW1lPTgqNjAqNjA7
ICAjIE1heGltdW0gdGltZSB0aGF0IGpvYiB3aWxsIHJ1biBmb3IgYmVmb3JlIGFib3J0aW5n
CgpteSAkUkNTZGF0ZT0nJERhdGU6IDIwMDIvMDkvMTkgJCc7Cm15ICRSQ1NmaWxlPSckUkNT
ZmlsZTogZ3JwdGVyLnBsLHYgJCc7Cm15ICRSQ1NyZXY9JyRSZXZpc2lvbjogMS44ZGdzICQn
OwoKCiMgRW52aXJvbm1lbnQgdmFyaWFibGVzCiR8ID0xOyAgICAgICAgICAgICAgICAgIyB0
dXJuIG9mZiBidWZmZXJpbmcKCiMtLS0tLS0tLS0tLS0tLS0gZ2xvYmFsIHZhcmlhYmxlczog
ZGlyZWN0b3JpZXMgLS0tLS0tLS0tLS0tLS0KJHNyY2RpciAgICAgPSAmZ2V0c3JjZGlyOwok
bG9nZGlyICAgICA9ICIkc3JjZGlyL2xvZ3MiOwokdG1wZGlyICAgICA9ICIkc3JjZGlyL3Rt
cGZpbGVzIjsKJHdvcmtkaXIgICAgPSAiJHNyY2Rpci93b3JrIjsKIy0tLS0tLS0tLS0tLS0t
LSBnbG9iYWwgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJGxvY2tm
aWxlICAgPSAiJHRtcGRpci9ncnB0ZXIubG9jayI7CiRtZW1iZXJmaWxlID0gIiR0bXBkaXIv
bWVtYmVycyQkLnRtcCI7CiRzaXplbGltaXQgICAgID0gMTAwMDsgICMgU2V0IHRvIE1heGlt
dW0gTnVtYmVyIG9mIEVudHJpZXMgdG8gUmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAg
ICMgQ2FuIHNldCBzbWFsbCB0byB0ZXN0IGVycm9yIHJvdXRpbmVzCiR0ZW1wZmlsZSAgID0g
IiR0bXBkaXIvZ3JvdXAuJCQudG1wIjsKCiRWZXJzaW9uSW5mbz0iJFJDU2ZpbGUgJFJDU3Jl
diAkUkNTZGF0ZSI7CgojLS0tLS0tLS0tLS0tLS0gY29tbWFuZCBsaW5lIG9wdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQokYW5hbHl6ZSA9IDA7ICAgICAgICAgICMgY21kIGxpbmUg
b3B0aW9uOiAgYnkgZGVmYXVsdCB3aGVuIHRoZSBwcm9ncmFtIAogICAgICAgICAgICAgICAg
ICAgICAgICMgcnVucyBpdCB1cGRhdGVzIHRoZSBkaXJlY3RvcnkKICAgICAgICAgICAgICAg
ICAgICAgICAjIGlmIHNldCB0byAxLCB0aGUgcHJvZ3JhbSBqdXN0IGFuYWx5emVzIHRoZSAK
ICAgICAgICAgICAgICAgICAgICAgICAjIGdyb3VwIHN0cnVjdHVyZSBhbmQgd3JpdGUgaXQg
dG8gc3Rkb3V0CgokZW9sPSJcbiI7ICAgICAgICAgICAgICMgc2V0IGJ5ICRodG1sOiBlbmQg
b2YgbGluZSBmb3Igc3Rkb3V0IAokZW9scHJpbnQ9IlxcbiI7ICAgICAgICMKICAgICAgICAg
ICAgICAgICAgICAgICAjKGNhbiBiZSBcbiBvciA8YnI+IGZvciB3d3cuCgokZ3JvdXBfbmFt
ZSA9ICIiOyAgICAgICMgY21kIGxpbmUgb3B0aW9uOiAKICAgICAgICAgICAgICAgICAgICAg
ICAjIGRvIGFsbCBncm91cCB1bmxlc3Mgc3BlY2lmeSBpbiB0aGUgYXJndW1lbnRzCgokaHRt
bCA9IDA7ICAgICAgICAgICAgICMgY21kIGxpbmUgb3B0aW9uOiAKICAgICAgICAgICAgICAg
ICAgICAgICAjIG91dHB1dCB0eXBlOiBodG1sICgxKSBvciBzdGQgKDApCgoka2VlcHRlbXA9
MDsgICAgICAgICAgICNpZiBzZXQgdG8gb25lIHRlbXAgZmlsZSBhcmUgbm90IGVyYXNlZCAK
ICAgICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIHByb2Nlc3NpbmcKICAgICAgICAgICAg
ICAgICAgICAgICAjc2V0IHRvIHplcm8gdGVtcCBmaWxlIGFyZSBlcmFzZS4KCiRsaXN0b25s
eSA9IDA7ICAgICAgICAgIyBzZXQgdG8gMSB0ZWxsIHRoaXMgcHJvZ3JhbSAKICAgICAgICAg
ICAgICAgICAgICAgICAjIHRvIGRpc3BsYXkgYWxsIGdyb3VwcyB0aGVuIHF1aXRzLgoKJGxv
Y2tmb3JjZWQgPSAwOyAgICAgICAjIHNldCB0byAxIHRlbGwgdGhpcyBwcm9ncmFtIHRvIGZv
cmNlIHRoZSBsb2NrIAogICAgICAgICAgICAgICAgICAgICAgICMgb2YgdGhlIGV4ZWN1dGlv
bi4KCiRsb2cgPSAyOyAgICAgICAgICAgICAgIyBjbWQgbGluZSBvcHRpb24gdG8gbG9nIG91
dHB1dCBpbnRvIExPRyBmaWxlCiAgICAgICAgICAgICAgICAgICAgICAgIyAwID0gZGlzcGxh
eSwgMSA9IExPRyBmaWxlLCAyID0gYm90aAoKJHJlY3VyX2xldmVsPTA7ICAgICAgICAjIHRl
bGwgdXMgdGhlIGxldmVsIG9mIHJlY3Vyc2l2aXR5IHRoZSAKICAgICAgICAgICAgICAgICAg
ICAgICAjIHByb2dyYW0gaXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaXMg
dXNlZCB0byBpbmRlbnQgdGhlIG91dHB1dCB0byBkaXNwbGF5IGEgbmljZQogICAgICAgICAg
ICAgICAgICAgICAgICMgZGlyZWN0b3J5IHRyZWUgd2hlbiBncm91cCBpbmNsdWRlcyBvdGhl
ciBncm91cHMKCiRzaG93PTA7ICAgICAgICAgICAgICAgIyBjbWQgbGluZSBvcHRpb246IHNo
b3cgZGVidWcgaW5mb3JtYXRpb24gCiAgICAgICAgICAgICAgICAgICAgICAgIyAgdXAgdG8g
bGV2ZWwgeW91IHNldCBoZXJlICgwIHRvIDUpCiAgICAgICAgICAgICAgICAgICAgICAgIyBz
aG91bGQgYmUgc2V0IHRvIDAgaW4gbm9ybWFsIG9wZXJhdGlvbiBtb2RlCgokdXBkYXRlb25s
eSA9IDA7ICAgICAgICMgc2V0IHRvIDEgdGVsbCB0aGlzIHByb2dyYW0gb25seSB0byBleHBh
bmQgCiAgICAgICAgICAgICAgICAgICAgICAgIyBncm91cCB3aXRoIHN0YXR1cyAnVG8gYmUg
cHJvY2Vzc2VkJy4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBETyBOT1QgTU9ESUZZICBiZWxvdyB0aGlzIGxp
bmUuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMgCiMKIyAgTUFJTgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMK
CiMjIGNyZWF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IGlmIG5lZWRlZAoKaWYgKCRkZWJ1ZyA+
PSAwKSB7CiAgcHJpbnQgcXF7PCEtLSBHcm91cCBjb2RlICRWZXJzaW9uSW5mbyBzdGFydGlu
ZyBhdCB9LHNjYWxhcihnbXRpbWUodGltZSkpLHFxey0tPlxufTsKfQoKaWYgKCEgLWQgIiR3
b3JrZGlyIiApIAogIHsKICBta2Rpcigkd29ya2RpciwwNzc3KSB8fCBkaWUgKCJjYW5ub3Qg
Y3JlYXRlIGRpcmVjdG9yeTogJHdvcmtkaXI6ICQ/Iik7CiAgUHJpbnRNZXNzYWdlKCJEaXJl
Y3RvcnkgJHdvcmtkaXIgY3JlYXRlZCIpOwogIH0KCiMgdXNhZ2U6ICBncnB0ZXIgWy1vcHRp
b25zIC4uLl0gIwojd2hlcmUgb3B0aW9ucyBpbmNsdWRlOiBzZWUgJnVzYWdlIAoKIyMjIyBy
ZWFkIGFyZ3VlbWVudCBhbmQgc2V0IHZhcmlhYmxlcwoKQGFyZ3M9QEFSR1Y7CiRidWZmPSAi
QXJndW1lbnQgbGluZTogXG4gICI7CmZvciAoJGk9MDsgJGk8PSAkI2FyZ3M7ICRpKyspCiAg
eyAkYnVmZiAuPSAkYXJnc1skaV0gLiAnICc7IH0gCgojIyMjIGluaXQgc2VxdWVuY2UKd2hp
bGUgKCAkXyA9ICRBUkdWWzBdICkKICB7CiAgc2hpZnQ7CiAgbGFzdCBpZiAvXi0tJC87CiAg
aWYgICAgKC9eLWcvKSAgICAKICAgIHsgJGdyb3VwX25hbWUgPSAmZ2V0X29wdGlvbigiLWdy
b3VwIik7ICB9IAogIGVsc2lmICgvXi13LykgICAgICAKICAgIHsgJGh0bWwgPSAxICAgICAg
ICAgICAgIH0KICBlbHNpZiAoL14tYS8pICAgICAgCiAgICB7ICRhbmFseXplICAgPSAxOyAg
ICAgICAgICAgICAgICAgICAgICAgfQogIGVsc2lmICgvXi1sb2ckLykgICAgICAgIAogICAg
eyRsb2cgPSAmZ2V0X29wdGlvbigiLWxvZyIpOyB9CiAgZWxzaWYgKC9eLWwvKSAgICAgIAog
ICAgeyAkbGlzdG9ubHkgID0gMTsgICAgICAgICAgICAgICAgICAgICAgIH0KICBlbHNpZiAo
L14tdS8pICAgICAgCiAgICB7ICR1cGRhdGVvbmx5ICA9IDE7ICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgZWxzaWYgKC9eLXovKSAgICAgIAogICAgeyAkbG9ja2ZvcmNlZCAgPSAxOyAg
ICAgICAgICAgICAgICAgICAgICAgfQogIGVsc2lmICgvXi1kLykgICAgICAKICAgIHsgJHNo
b3cgICAgICAgPSAmZ2V0X29wdGlvbigiLWRlYnVnIik7IH0KICBlbHNpZiAoL14tay8pICAg
ICAgCiAgICB7ICRrZWVwdGVtcCAgPSAxOyAgIH0KICBlbHNpZiAoL14taC8pICAgIAogICAg
eyAmdXNhZ2UoIkhlbHAgcmVxdWVzdGVkIik7IH0KICBlbHNpZiAoL14tcC8pICAgICAgCiAg
ICB7ICRudV9wYXNzd2QgID0gJmdldF9vcHRpb24oIi1wYXNzIik7ICAgfQogIGVsc2lmICgv
XlthLXpBLVpdKi8pICAgIAogICAgeyAKICAgICZhYm9ydCgiRVJSOiBjYW4ndCBzcGVjaWZ5
IG1vcmUgdGhhbiBvbmUgdXNlciEiLDcpIGlmICgkbnVfdXNlciBuZSAiIik7CiAgICAkbnVf
dXNlciA9ICRfOwogICAgfQogIGVsc2UgICAgICAgICAgICAgCiAgICB7ICZ1c2FnZSgidW5r
bm93biBhcmd1bWVudDogJF8iKTt9CiAgfQoKaWYgKCAkaHRtbCA9PSAxKQogIHsgCiAgcHJp
bnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5QcmFnbWE6IG5vLWNhY2hlXG5cbiI7IAog
IHByaW50ICI8SFRNTD48SEVBRD48VElUTEU+TERBUCBHcm91cHMgQmF0Y2ggUHJvY2Vzc2lu
ZzwvVElUTEU+PC9IRUFEPiI7CiAgcHJpbnQgIjxCT0RZPlxuIgogIH0KCiMjIGRpc3BsYXkg
UkNTIGluZm86CiZSQ1NkaXNwKCRSQ1NkYXRlLCRSQ1NmaWxlLCRSQ1NyZXYsMCk7CgomRGVi
dWdNc2coMSwgCiAgIlxuLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAt
IC0gLSAtIFxuIiAuCiAgIlBhcmFtZXRlcnM6XG4gIHdvcmtkaXIgXHQkd29ya2RpclxuICBi
YXNlZG4gXHQkYmFzZWRuXG4gIGdyb3VwYmFzZWRuICIgLgogICJcdCRncm91cGJhc2Vkblxu
ICBwZW9wbGViYXNlZG4gXHQkcGVvcGxlYmFzZWRuXG4gIHJlYWRfaG9zdCAiIC4KICAiXHQk
cmVhZF9ob3N0XG4tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAt
IC0iKTsKCgomRGVidWdNc2coMSwiXG5Bcmd1bWVudHM6XG4gIGFuYWx5emVcdCRhbmFseXpl
XG4gIGVvbFx0XHQkZW9scHJpbnRcbiIgLgogICIgIGdyb3VwX25hbWVcdCRncm91cF9uYW1l
XG4gIGh0bWxcdFx0JGh0bWxcbiAga2VlcHRlbXBcdCRrZWVwdGVtcFxuIiAuCiAgIiAgbGlz
dG9ubHlcdCRsaXN0b25seVxuICBsb2NrZm9yY2VkXHQkbG9ja2ZvcmNlZFxuIiAuCiAgIiAg
bG9nXHRcdCRsb2dcbiAgcmVjdXJfbGV2ZWxcdCRyZWN1cl9sZXZlbFxuICBzaG93XHRcdCRz
aG93XG4iIC4KICAiICB1cGRhdGVvbmx5XHQkdXBkYXRlb25seVxuIiAuCiAgIi0gLSAtIC0g
LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIik7CiRkYXRlPWdtdGlt
ZSh0aW1lKTsKJHN0YXJ0VGltZT1nbXRpbWUodGltZSk7CmNob21wKCRkYXRlKTsKJGRlYnVn
PSRzaG93Owomc2V0RGVidWcoJGRlYnVnKTsKI29wZW4gbG9nIGZpbGUKbG9nTXNnMigiSU5G
OiBTdGFydGluZ1xuIik7CgooJHJ0biwkbGRhcCk9ZG9CaW5kKCRsZGFwKTsKaWYgKCRydG4g
bmUgJycpCiAgeyAmYWJvcnQoJHJ0bik7IH0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGNoZWNrIGxvY2sgZmlsZSBleGlzdHMK
IyBpZiBpdCBleGlzdHMgaXQgbWVhbnMgdGhhbiBhbm90aGVyIGluc3RhbmNlIG9mIHRoaXMg
CiMgcHJvZyBpcyBhbHJlYWR5IHJ1bm5pbmcgb3IgdGhhbiB0aGUgZmlsZSBpcyBhbiBvbGQg
bG9jayBmaWxlIAojIGZyb20gYSBwcm9jZXNzIHRoYXQgYWxyZWFkeSBkaWVkLgojCgppZiAg
KCgtZSAiJGxvY2tmaWxlIikgJiYgKCRsb2NrZm9yY2VkID09IDApKSAKICB7CiAgIyMjIEhl
cmUgdGhlIGxvY2tmaWxlIGV4aXN0LgogICMjIyBDaGVjayBpZiB0aGUgZmlsZSBpcyBvbGRl
ciB0aGFuIG9uZSBkYXkuIGlmIHllcwogICMjIyB3ZSByZW1vdmUgaXQgc2luY2UgdGhpcyBp
cyBwcm9iYWJseSBkdWUgdG8gYSBpbnRlcnJ1cHRlZAogICMjIyBwcm9jZXNzIHJlc3VsdGlu
ZyBmcm9tIGFuIExEQVAgY3Jhc2ggb3IgYSBzZXJ2ZXIgcmVzdGFydC4KICAKICBpZiAoKC1N
ICRsb2NrZmlsZSkgPj0gMSkKICAgIHsKICAgIFByaW50TWVzc2FnZSgiRGVsZXRpbmcgbG9j
a2ZpbGUgJGxvY2tmaWxlIHNpbmNlICIgLgogICAgICAiaXQncyBvbGRlciB0aGFuIDEgZGF5
Iik7CiAgICB1bmxpbmsgKCRsb2NrZmlsZSk7CiAgICB9IAogIGVsc2UgCiAgICB7CiAgICAj
IENoZWNrIHRvIHNlZSBpZiBhbm90aGVyIHByb2Nlc3MgaXMgcnVubmluZwogICAgJGNtZCA9
ICdwcyAtZWYgfCBncmVwIGdycHRlci5wbCB8IGdyZXAgLXYgZ3JlcCB8IHdjIC1sICcgLiAn
PicgLgogICAgICAiJHRtcGRpci8kJC50bXAiOwogICAgc3lzdGVtKCRjbWQpOwoKICAgICRw
cz0wOyAKICAgIEBwcz0oKTsKICAgIG9wZW4gKFBTLCAiPCR0bXBkaXIvJCQudG1wIik7CiAg
ICAkcHM9IDxQUz47CiAgICBjbG9zZSBQUzsKICAgIHVubGluayAiJHRtcGRpci8kJC50bXAi
OwogICAgaWYgKCRwcyA+PSAyKSAKICAgICAgewogICAgICBQcmludE1lc3NhZ2UoIkFib3J0
aW5nOiBhbm90aGVyIHByb2Nlc3MgaXMgcnVubmluZyIpOwogICAgICBpZiAoJGh0bWwgPT0g
MSkKICAgICAgICB7IHByaW50ICI8L0JPRFk+PC9IVE1MPlxuIjsgfQogICAgICBleGl0Owog
ICAgICB9IAogICAgZWxzZQogICAgICB7CiAgICAgIHByaW50IFNUREVSUiAiTG9jayBmaWxl
IGV4aXN0cyAoJGxvY2tmaWxlKSwgIiAuCiAgICAgICAgImJ1dCBubyBwcm9jZXNzLCBkZWxl
dGluZyBsb2NrZmlsZS4iOwogICAgICBQcmludE1lc3NhZ2UoIkxvY2sgZmlsZSBleGlzdHMg
KCRsb2NrZmlsZSksICIgLgogICAgICAgICJidXQgbm8gcHJvY2VzcywgZGVsZXRpbmcgbG9j
a2ZpbGUuIik7CiAgICAgIHVubGluayAiJGxvY2tmaWxlIjsgCiAgICAgIH0gCiAgICB9CiAg
fQoKIyMjIyMjCiMjIyB3ZSBjcmVhdGUgYSBsb2NrIGZpbGUgYW5kIHB1dCB0aGUgZGF0ZSBp
biBpdAojIyMgYXMgd2VsbCBhcyB0aGUgUElEIwpQcmludE1lc3NhZ2UoIkNyZWF0aW5nIGxv
Y2tmaWxlIik7Cm9wZW4gKExPQ0tGSUxFLCAiPiRsb2NrZmlsZSIpCiAgb3Igd2FybiAiRmFp
bGVkIHRvIG9wZW46ICckbG9ja2ZpbGUnLCAgJD8iOwoKcHJpbnQgTE9DS0ZJTEUgIlBJRCAk
JCwgICRkYXRlIjsKCmNsb3NlIExPQ0tGSUxFOwoKJkRlYnVnTXNnKDMsICIkZGF0ZTogc3Rh
cnRpbmcgJDAiKTsKCmlmICghIC1kICIkbG9nZGlyIiApIAogIHsKICBta2RpcigkbG9nZGly
LDA3NzcpIHx8IGRpZSAoImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5OiAkbG9nZGlyOiAkPyIp
OwogIFByaW50TWVzc2FnZSgiRGlyZWN0b3J5ICRsb2dkaXIgY3JlYXRlZCIpOwogIH0KJlNl
dEZvbnRDb2xvcigiYmxhY2siKTsKCmlmICggLWQgIiR0bXBkaXIiICkgCiAgewogICZEZWJ1
Z01zZygzLCAiQ2xlYW5pbmcgdG1wZGlyIGRpcmVjdG9yeTogJHRtcGRpciIpOwogIHN5c3Rl
bSgicm0gLWYgJHRtcGRpci8qLnRtcCIpOyAgIAogIH0KZWxzZQogIHsKICBta2RpcigkdG1w
ZGlyLDA3NzcpIHx8IGRpZSAoImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5OiAkdG1wZGlyOiAk
PyIpOwogIFByaW50TWVzc2FnZSgiRGlyZWN0b3J5ICR0bXBkaXIgY3JlYXRlZCIpOwogIH0K
CiZjYXRjaF9zaWduYWxzOyAgIyMjIGFsbG93IGdyYWNlZnVsIGludGVycnVwdHMKCiMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIGFm
dGVyIDUgaG91cnMgdGhpcyBwcm9jZXNzIHdpbGwKIyMjIGJlIGF1dG9tb3RpY2FsbHkgaW50
ZXJydXB0ZWQKIyMjIHRoaXMgd2FzIG5lY2Vzc2FyeSBzaW5jZSBMREFQIGNyYXNoZXMgbWFr
ZSAKIyMjIHRoaXMgcHJvZyBoYW5nLgoKYWxhcm0gKCRtYXhUaW1lKTsgCgojLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBnZXQgdGhlIGN1cnJlbnQgTERBUCBhZG1pbgojLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCigkcnRuLCAkY3VyTGRhcEFkbWluKSA9IGdl
dEFkbWluVGV4dCgkbGRhcCwgJ2NuPWdyb3VwJywgJHJvbGViYXNlZG4sICdhZG1pbjonKTsK
CiRjdXJMZGFwQWRtaW4gPX4gcy9eICpjbiAqPSAqLy87CiRjdXJMZGFwQWRtaW4gPX4gcy8s
LiokLy87CiZEZWJ1Z01zZygxLCJjdXJMZGFwQWRtaW49JGN1ckxkYXBBZG1pbiIpOwoKaWYg
KCRydG4gbmUgIiIpCiAgIHsgJmFib3J0KCdFUlI6ICcgLiAkcnRuKTsgfQoKIyBub3cgZ2V0
IHRoZSBtYWlsIGFkZHJlc3MKJGZpbHRlcj0iY249JGN1ckxkYXBBZG1pbiI7CiRhdHRyPSJt
YWlsIjsKCmlmICggJGN1ckxkYXBBZG1pbiA9fiAvXDxub25lXD4vICkKICB7ICRjdXJMZGFw
QWRtaW4gPSAmZGVmTGRhcEFkbWluOyB9CgomRGVidWdNc2coMSwgIkdldHRpbmcgdGhlICRh
dHRyIGZvciAnJGZpbHRlcicgKGdyb3VwX2xkYXBfYWRtaW4pIik7IAokY3VyTGRhcEFkbWlu
TWFpbCA9ICIiOwokcnRuID0nJzsKKCRydG4sICRjdXJMZGFwQWRtaW5NYWlsKSA9ICZnZXRB
dHRyT25lKCRsZGFwLCRwZW9wbGViYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKaWYgKCAkcnRu
IG5lICIiKSAKICB7IAogICZ3YXJuKCRydG4pOyAKICB9CgomRGVidWdNc2coMSwiY3VyTGRh
cEFkbWluTWFpbD0kY3VyTGRhcEFkbWluTWFpbCIpOwoKaWYgKCRydG4gbmUgIiIpCiAgIHsg
JmFib3J0KCdFUlI6ICcgLiAkcnRuKTsgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiMgZ2V0IHRoZSBncm91cF9leHBpcmUgdmFsdWUgZnJvbSB0
aGUgcm9sZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
CigkcnRuLCAkZ3JvdXBfZXhwaXJlKSA9IGdldEFkbWluVGV4dCgkbGRhcCwgJ2NuPWdyb3Vw
JywgJHJvbGViYXNlZG4sICdleHBpcmU6Jyk7CmlmICgkcnRuIG5lICcnKQogIHsgJmFib3J0
KCdFUlI6ICcgLiAkcnRuKTsgfQoKIy0tLS0tIGNhbGN1bGF0ZSB0aGUgdmFsdWUgZm9yIGV4
cGlyYXRpb24gZGF0ZSAodG9kYXkgLSBncm91cF9leHBpcmUpCiRleHBpcmVfZGF0ZSA9ICZE
YXRlQ2FsYygidG9kYXkiLCAiLSIgLiAkZ3JvdXBfZXhwaXJlIC4gIiBkYXlzIiwgXCRlcnIp
OwomRGVidWdNc2coNCwgImV4cGlyZV9kYXRlPSRleHBpcmVfZGF0ZSwgZXJyPSRlcnIiKTsK
JGV4cGlyZV9kYXRlMj0gJkRhdGVDYWxjKCJ0b2RheSIsICIrNyBkYXlzIiwgXCRlcnIpOwom
RGVidWdNc2coNCwgImV4cGlyZV9kYXRlMj0kZXhwaXJlX2RhdGUyLCBlcnI9JGVyciIpOwok
ZXhwaXJlX2RhdGUyPSZVbml4RGF0ZSgkZXhwaXJlX2RhdGUyLCIlZC0lYiIpOwomRGVidWdN
c2coNCwgImV4cGlyZV9kYXRlMj0kZXhwaXJlX2RhdGUyLCBlcnI9JGVyciIpOwoKCmlmICgk
ZXJyIG5lICIiKQogICB7ICZhYm9ydCgiJHJ0biIpO30gIAoKIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBpZiBhIGdyb3VwIHdhcyBz
ZW5kIGluIGFyZ3VtZW50IHRoZW4gd2UgCiMjIyBwcm9jZXNzIG9ubHkgdGhpcyBncm91cAoK
aWYgKCRncm91cF9uYW1lIG5lICIiKQogIHsgJkV4cGFuZF9PbmVfR3JvdXAoImNuPSRncm91
cF9uYW1lIik7IH0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiMjIyBJZiB0aGlzIGlzIGFuIHVwZGF0ZSBvbmx5IHRoZW4gCiMjIyB3ZSB1
cGRhdGUgb25seSB0aGUgZ3JvdXBzIHcvICd0byBiZSBwcm9jZXNzZWQnIHN0YXR1cwojIyMg
b3IgJ3RvIGJlIHJlbmFtZWQqJyBzdGF0dXMKIyMjIGxpc3Rvbmx5IGFsc28gY2hlY2tlZDog
d2lsbCBvbmx5IGxpc3QgdGhlIGdyb3VwcwoKZWxzaWYgKCR1cGRhdGVvbmx5KSAKICB7CiAg
JkRlYnVnTXNnKDMsICJVcGRhdGluZyBvbmx5IHRoZSBncm91cCB3aXRoIHN0YXR1cz0nIiAu
CiAgICAiVG8gYmUgcHJvY2Vzc2VkJyBvciAnQmVpbmcgUHJvY2Vzc2VkJyIpOwogIAogIEBh
dHRycyA9IAogICAgKAogICAgImNuIiwKICAgICJhZG1pbnRleHQiLAogICAgInByb3h5IiwK
ICAgICJtYW5hZ2VyIgogICAgKTsKICAKICAkZmlsdGVyPSIofChhZG1pbnRleHQ9c3RhdHVz
OiB0byBiZSBwcm9jZXNzZWQpKGFkbWludGV4dD1zdGF0dXM6IEJlaW5nIFByb2Nlc3NlZCkp
IjsKICAKICAjIGhlcmUgaXMgd2hlcmUgd2Ugc2hvdWxkIHB1dCBpbiB0aGUgY2FsbCB0byBk
b0xEQVBTZWFyY2goKQogICMgcGFzcyB0byBpdCAkQkFTRUROLCAkZmlsdGVyLCBcQGF0dHJz
CiAgIyBnZXQgYmFjayAkcnRuLCAkbmVudHJpZXMsJHJlY29yZHt9LT57fQogIAogICZEZWJ1
Z01zZyg0LCJRdWVyeWluZyBncm91cHMgZm9yIHVwZGF0ZSBvbmx5Iik7CiAgbXkgKCRydG4s
ICRuZW50cmllcywgJHJlY29yZDEpID0gCiAgICAmZG9MREFQU2VhcmNoKCRsZGFwLCAkZ3Jv
dXBiYXNlZG4sICRmaWx0ZXIsIFxAYXR0cnMpOwoKICBpZiAoJHJ0biBuZSAnJykKICAgIHsg
Jndhcm4oJHJ0bik7IH0KCiAgJkRlYnVnTXNnKDQsIlF1ZXJ5aW5nIGRvbmUiKTsKICAlcmVj
b3JkID0gJSRyZWNvcmQxOwogIEBncm91cExpc3QgPSBAYWRtaW5MaXN0ID0gKCk7CiAgaWYg
KCRuZW50cmllcyA9PSAwKSAKICAgIHsgCiAgICAmUmVtb3ZlTG9ja0ZpbGU7CiAgICBsb2dN
c2cyKCJJTkY6IEVuZGluZzogbm8gZ3JvdXBzIG5lZWQgdXBkYXRpbmdcbiIpOwogICAgfSAK
ICBlbHNlCiAgICB7CiAgCiAgICBmb3JlYWNoICRkbiAoc29ydCBrZXlzICVyZWNvcmQpIHsK
ICAgICAgcHVzaCBAZ3JvdXBMaXN0LCAkeyRyZWNvcmR7JGRufXsnY24nfX1bMF07CiAgICAg
IGlmICgoJHJlY29yZHskZG59eydwcm94eSd9WzBdID1+IC9eICpjbiAqPSAqKC4rPykgKiwg
Km91PS8pIHx8CgkgICgkcmVjb3JkeyRkbn17J21hbmFnZXInfVswXSA9fiAvXiAqY24gKj0g
KiguKz8pICosICpvdT0vKSAKCSAgKSB7CiAgICAgICAgcHVzaCBAYWRtaW5MaXN0LCAkMTsK
ICAgICAgfSBlbHNlIHsKCXB1c2ggQGFkbWluTGlzdCwgJ05vIHByb3h5IG9yIG1hbmFnZXIg
ZGVmaW5lZCc7CiAgICAgIH0KICAgIH0KICAgICMgUHJpbnQgb3V0IGxpc3Qgb2YgZ3JvdXBz
IHRvIGJlIHByb2Nlc3NlZAogICAgaWYgKCRkZWJ1ZyA+PSAwKSB7CiAgICAgICBQcmludE1l
c3NhZ2UocXtHcm91cCB0byBiZSBwcm9jZXNzZWQ6IH0uCgkJICAgIGpvaW4ocXF7XG5Hcm91
cCB0byBiZSBwcm9jZXNzZWQ6IH0sQGdyb3VwTGlzdCkKCQkgICApOwogICAgICAgcHJpbnQg
cXF7PCEtLSBHcm91cCB0byBiZSBwcm9jZXNzZWQ6IH0sCiAgICAgICAgICAgICBqb2luKHFx
ey0tPlxuPCEtLSBHcm91cCB0byBiZSBwcm9jZXNzZWQ6IH0sQGdyb3VwTGlzdCksCiAgICAg
ICAgICAgICBxcXstLT5cbn07CiAgICB9CiAgICAKICAgIGZvciAoJGk9MDsgJGk8PSAkI2dy
b3VwTGlzdDsgJGkrKykKICAgICAgewogICAgICAkbXluYW1lPSRncm91cExpc3RbJGldOwog
ICAgICAkY3VyQWRtaW49JGFkbWluTGlzdFskaV07CiAgICAgICZEZWJ1Z01zZyg0LCJncm91
cDogY249JG15bmFtZSxhZG1pbj0kY3VyQWRtaW4iKTsKICAgICAgaWYgKCRsaXN0b25seSA9
PSAxKQogICAgICAgIHsKICAgICAgICAkY24gPSAkbXluYW1lOwogICAgICAgICRjbiA9fiBz
L14gKmNuICo9ICovLzsKICAgICAgICAkY24gPX4gcy8sLiokLy87CiAgICAgICAgcHJpbnQg
IiRjblxuIjsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7ICZFeHBhbmRfT25lX0dy
b3VwKCJjbj0kbXluYW1lIik7IH0KICAgICAgfQogICAgfQoKICBpZiAoJGRlYnVnID49IDAp
IHsKICAgIFByaW50TWVzc2FnZShzY2FsYXIoQGdyb3VwTGlzdCkucXF7IGdyb3VwcyB1cGRh
dGVkXG59KTsKICAgIHByaW50IHFxezwhLS0gfSxzY2FsYXIoQGdyb3VwTGlzdCkscXF7IGdy
b3VwcyB1cGRhdGVkLS0+XG59OwogIH0KICAjIyMjIyBub3cgZG8gJ3RvIGJlIHJlbmFtZWQq
JwogICRmaWx0ZXI9IihhZG1pbnRleHQ9c3RhdHVzOiB0byBiZSByZW5hbWVkKikiOwogIAog
ICMgaGVyZSBpcyB3aGVyZSB3ZSBzaG91bGQgcHV0IGluIHRoZSBjYWxsIHRvIGRvTERBUFNl
YXJjaCgpCiAgIyBwYXNzIHRvIGl0ICRCQVNFRE4sICRmaWx0ZXIsIFxAYXR0cnMKICAjIGdl
dCBiYWNrICRydG4sICRuZW50cmllcywkcmVjb3Jke30tPnt9CiAgCiAgJkRlYnVnTXNnKDQs
IlF1ZXJ5aW5nIGdyb3VwcyBmb3IgdXBkYXRlIG9ubHkiKTsKICAoJHJ0biwgJG5lbnRyaWVz
LCAkcmVjb3JkMSkgPSAKICAgICZkb0xEQVBTZWFyY2goJGxkYXAsICRncm91cGJhc2Vkbiwg
JGZpbHRlciwgXEBhdHRycyk7CgogIGlmICgkcnRuIG5lICcnKQogICAgeyAmd2FybigkcnRu
KTsgfQoKICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZG9uZSIpOwogICVyZWNvcmQgPSAlJHJl
Y29yZDE7CiAgQGdyb3VwTGlzdCA9IEBhZG1pbkxpc3QgPSAoKTsKICBpZiAoJG5lbnRyaWVz
ID09IDApIAogICAgeyAKICAgICZSZW1vdmVMb2NrRmlsZTsKICAgIGxvZ01zZzIoIklORjog
RW5kaW5nOiBubyBncm91cHMgbmVlZCB1cGRhdGluZyBmb3IgcmVuYW1lXG4iKTsKICAgIGlm
ICgkaHRtbCA9PSAxKQogICAgICB7IHByaW50ICI8L0JPRFk+PC9IVE1MPlxuIjsgfQogICAg
ZXhpdCgwKTsgCiAgICB9IAogIAogIGZvcmVhY2ggJGRuIChzb3J0IGtleXMgJXJlY29yZCkg
ewogICAgcHVzaCBAZ3JvdXBMaXN0LCAkeyRyZWNvcmR7JGRufXsnY24nfX1bMF07CiAgICBp
ZiAoKCRyZWNvcmR7JGRufXsncHJveHknfVswXSA9fiAvXiAqY24gKj0gKiguKz8pICosICpv
dT0vKSB8fAoJKCRyZWNvcmR7JGRufXsnbWFuYWdlcid9WzBdID1+IC9eICpjbiAqPSAqKC4r
PykgKiwgKm91PS8pIAoJKSB7CiAgICAgIHB1c2ggQGFkbWluTGlzdCwgJDE7CiAgICB9IGVs
c2UgewogICAgICBwdXNoIEBhZG1pbkxpc3QsICdObyBwcm94eSBvciBtYW5hZ2VyIGRlZmlu
ZWQnOwogICAgfQogIH0KICBmb3IgKCRpPTA7ICRpPD0gJCNncm91cExpc3Q7ICRpKyspCiAg
ICB7CiAgICAkbXluYW1lPSRncm91cExpc3RbJGldOwogICAgJGN1ckFkbWluPSRhZG1pbkxp
c3RbJGldOwogICAgJkRlYnVnTXNnKDQsImdyb3VwOiBjbj0kbXluYW1lLGFkbWluPSRjdXJB
ZG1pbiIpOwogICAgaWYgKCRsaXN0b25seSA9PSAxKQogICAgICB7CiAgICAgICRjbiA9ICRt
eW5hbWU7CiAgICAgICRjbiA9fiBzL14gKmNuICo9ICovLzsKICAgICAgJGNuID1+IHMvLC4q
JC8vOwogICAgICBwcmludCAiJGNuXG4iOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsgJkV4
cGFuZF9PbmVfR3JvdXAoImNuPSRteW5hbWUiKTsgfQogICAgfQoKICB9CmVsc2UKICB7CiAg
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAg
IyMjIG90aGVyd2lzZSB3ZSBzZWFyY2ggYWxsIGdyb3VwcwoKICAmRGVidWdNc2coMywgIlNl
YXJjaGluZyBhbGwgTERBUCBncm91cHM6ICIpOwoKICAkZmllbGRfdG9fc2VhcmNoPSJjbiI7
CiAgJHNlYXJjaFZhbD0iJGZpZWxkX3RvX3NlYXJjaD0qIjsKICAoJHJ0biwgJG5yZWNvcmRz
LCAkcmVjb3JkWCkgPSAmUXVlcnk7ICAjcmVzdWx0IG91dHB1dCBpbiBzdWJyIFF1ZXJ5CiAg
CiAgaWYgKCAkcnRuIG5lICIiKSAKICAgIHsgJndhcm4oJHJ0bik7IH0KICBlbHNpZiAoICRu
cmVjb3JkcyA9PSAwKQogICAgeyBQcmludE1lc3NhZ2UoIk5vIHJlY29yZHMgZm91bmQiKTt9
IAogIGVsc2UKICAgIHsKICAgICVyZWNvcmRzPSUkcmVjb3JkWDsKICAgIEBncm91cExpc3Q9
QGFkbWluTGlzdD0oKTsKICAgIGZvcmVhY2ggJGRuIChzb3J0IGtleXMgJXJlY29yZHMpIHsK
ICAgICAgcHVzaCBAZ3JvdXBMaXN0LCAkcmVjb3Jkc3skZG59eydjbid9WzBdOyAKICAgICAg
aWYgKCgkcmVjb3Jkc3skZG59eydwcm94eSd9WzBdID1+IC9eICpjbiAqPSAqKC4rPykgKiwg
Km91PS8pIHx8CgkgICgkcmVjb3Jkc3skZG59eydtYW5hZ2VyJ31bMF0gPX4gL14gKmNuICo9
ICooLis/KSAqLCAqb3U9LykgCiAgICAgICAgICkgewogICAgICAgIHB1c2ggQGFkbWluTGlz
dCwgJDE7CiAgICAgIH0gZWxzZSB7CglwdXNoIEBhZG1pbkxpc3QsICdObyBwcm94eSBvciBt
YW5hZ2VyIGRlZmluZWQnOwogICAgICB9CiAgICB9CgogICAgIyBQcmludCBvdXQgbGlzdCBv
ZiBncm91cHMgdG8gYmUgcHJvY2Vzc2VkCiAgICBpZiAoJGRlYnVnID49IDApIHsKICAgICAg
IFByaW50TWVzc2FnZShxe0dyb3VwIHRvIGJlIHByb2Nlc3NlZDogfS4KCQkgICAgam9pbihx
cXtcbkdyb3VwIHRvIGJlIHByb2Nlc3NlZDogfSxAZ3JvdXBMaXN0KQoJCSAgICk7CiAgICAg
ICBwcmludCBxcXs8MS0tR3JvdXAgdG8gYmUgcHJvY2Vzc2VkOiB9LAogICAgICAgICAgICAg
am9pbihxcXstLT5cbjwhLS1Hcm91cCB0byBiZSBwcm9jZXNzZWQ6IH0sQGdyb3VwTGlzdCks
CiAgICAgICAgICAgICBxcXstLT5cbn07CiAgICB9CgoKCiAgICAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMjIyBJZiB3ZSBsaXN0
IG9ubHkgdGhlIGdyb3VwcyBvbiB0aGVuIHdlIGRvIGl0CiAgICAjIyBhbmQgZXhpdAogICAg
CiAgICBpZiAoJGxpc3Rvbmx5ID09IDEpCiAgICAgIHsKICAgICAgcHJpbnQgIkxJU1RJTkcg
T0YgQUxMIEdST1VQU1xuIjsKICAgICAgZm9yICgkaT0wOyAkaTw9JCNncm91cExpc3Q7ICRp
KyspCiAgICAgICAgeyBwcmludCAiICAiIC4gJGdyb3VwTGlzdFskaV0gLiAiXG4iIDsgfQog
ICAgICAmUmVtb3ZlTG9ja0ZpbGU7CiAgICAgIGxvZ01zZzIoIklORjogRW5kaW5nIGFmdGVy
IGxpc3Rvbmx5XG4iKTsKICAgICAgaWYgKCRodG1sID09IDEpCiAgICAgICAgeyBwcmludCAi
PC9CT0RZPjwvSFRNTD5cbiI7IH0KICAgICAgZXhpdCAoMCk7CiAgICAgIH0KICAgIGVsc2UK
ICAgICAgewogICAgICAjIG9wZW4gcmVzdWx0IGZpbGUgYW5kIHByb2Nlc3MgZWFjaCBsaW5l
CiAgICAgIGZvciAoJGk9MDsgJGk8PSQjZ3JvdXBMaXN0OyAkaSsrKQogICAgICAgIHsKCSRj
dXJBZG1pbj0kYWRtaW5MaXN0WyRpXTsKICAgICAgICAmRGVidWdNc2coNCwiZ3JvdXAgJGk6
ICRncm91cExpc3RbJGldLCBhZG1pbj0kY3VyQWRtaW4iKTsKICAgICAgICAmRXhwYW5kX09u
ZV9Hcm91cCgiY249JGdyb3VwTGlzdFskaV0iKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0g
ICNlbmQgaWYgZWxzZQogICAgaWYgKCRkZWJ1ZyA+PSAwKSB7CiAgICAgIFByaW50TWVzc2Fn
ZShzY2FsYXIoQGdyb3VwTGlzdCkucXF7IGdyb3VwcyB1cGRhdGVkXG59KTsKICAgICAgcHJp
bnQgcXF7PCEtLSB9LHNjYWxhcihAZ3JvdXBMaXN0KSxxcXsgZ3JvdXBzIHVwZGF0ZWQtLT5c
bn07CiAgICB9CiAgCiAgfQomUmVtb3ZlTG9ja0ZpbGU7CiR0aW1lU3RhbXA9Z210aW1lKHRp
bWUpOwpjaG9tcCAkdGltZVN0YW1wOwokdGltZVN0YW1wPX5zLy4qIC8vOwokZGF0ZT1zbGJU
aW1lMygkdGltZVN0YW1wKTsKbG9nTXNnMigiSU5GOiBFbmRpbmdcbiIpOwomRGVidWdNc2co
MywgIiRkYXRlOiBFbmQgb2YgcHJvZ3JhbTogJDAiKTsKaWYgKCRkZWJ1ZyA+PSAwKSB7CiAg
UHJpbnRNZXNzYWdlKHF7RmluaXNoZWQgcHJvY2Vzc2luZyBhdCB9LnNjYWxhcihnbXRpbWUo
dGltZSkpLnFxe1xufSk7CiAgcHJpbnQgcXF7PCEtLSBGaW5pc2hlZCBwcm9jZXNzaW5nIGF0
IH0sc2NhbGFyKGdtdGltZSh0aW1lKSkscXF7LS0+XG59Owp9CgppZiAoJGh0bWwgPT0gMSkK
ICB7IHByaW50ICI8L0JPRFk+PC9IVE1MPlxuIjsgfQoKIz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIwojIEVO
RCBPRiBNQUlOCiMKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBFeHBhbmRf
T25lX0dyb3VwIAogIHsKICBteSAkcmVjb3JkOwogIG15ICVyZWNvcmQxOwoKICBteSAkZ3Jv
dXBfbmFtZSA9ICRfWzBdOyAgCiAgJkRlYnVnTXNnKDUsICIjIyMjIyBFeHBhbmRfT25lX0dy
b3VwOiAkZ3JvdXBfbmFtZSIpOyAKICAkY3VyR3JvdXA9JGdyb3VwX25hbWU7CiAgJGN1ckdy
b3VwID1+IHMvICpjbiAqPSAqLy87CiAgCiAgIwogICMgaW5pdGlhbGl6ZSBzb21lIGxvY2Fs
IHZhcmlhYmxlIChuZWVkIHRvIGJlIGxvY2FsIGZvciByZWN1cnNpdml0eSkuCiAgIwogIG15
ICR1cGRhdGVfdGVtcGZpbGUgICA9ICAiJHRtcGRpci91cGRhdGUuJGdyb3VwX25hbWUuJCQu
dG1wIjsgCiAgbXkgJHdhcm5fdGVtcGZpbGUgICA9ICAiJHRtcGRpci93YXJuLiRncm91cF9u
YW1lLiQkLnRtcCI7IAogIG15ICRtZW1iZXJfdGVtcGZpbGUgICA9ICAiJHRtcGRpci9tZW1i
ZXIuJGdyb3VwX25hbWUuJCQudG1wIjsgCiAgbXkgJHN1YnNjcmlwdGlvbnNEZW55VG9fdGVt
cGZpbGUgID0gIAogICAgIiR0bXBkaXIvc3Vic2NyaXB0aW9uc0RlbnlUby4kZ3JvdXBfbmFt
ZS4kJC50bXAiOwogIG15ICRzdWJzY3JpcHRpb25zR3JhbnRUb190ZW1wZmlsZSA9ICAKICAg
ICIkdG1wZGlyL3N1YnNjcmlwdGlvbnNHcmFudFRvLiRncm91cF9uYW1lLiQkLnRtcCI7CiAg
CiAgbXkgJGk7CiAgbXkgJGo7CiAgbXkgJGs7CiAgbXkgJHA7CiAgbXkgQHA7CiAgbXkgJGxp
bmU7CiAgbXkgJHF1ZXJ5X3N0cjsKICBteSAkY21kOwogIG15ICRyZXM7CiAgbXkgJG5iX3dh
cm47CiAgbXkgJGZpZWxkbmFtZTsKICBteSAkZGVsdGE7CiAgbXkgJGNvdW50OwogIG15ICRx
dWVyeV9zdHJpbmc7CiAgbXkgJGF0dHJYOwogIG15ICRzYXZlX21lbWJlcnM7CiAgbXkgJHRl
bXA7CiAgbXkgJGV4cG5vdGlmeTsKICBteSAkZ3JvdXBfYWRtaW47CiAgbXkgJGdyb3VwX21h
aWw7CiAgbXkgQG5hbWU7CiAgbXkgJHN0YXR1czsKICAKICBteSBAbWVtYmVyX2xpc3Q7CiAg
bXkgQHNhdmVfbWVtYmVyczsKICBteSBAcmVtb3ZlX21lbWJlcnM7CiAgbXkgQHN1YnNjcmlw
dGlvbnNHcmFudFRvX2xpc3Q7CiAgbXkgQHN1YnNjcmlwdGlvbnNEZW55VG9fbGlzdDsKICBt
eSBAd2FybmluZ19saXN0OwogIG15ICVjaGdhdHRyczsKICBteSBAcmVmYXR0cnM7CiAgbXkg
QGF0dHJzOwogIG15ICVzZWVuX2xpc3Q7CiAgbXkgQGF0dHJfbGlzdDsKICBteSBAZ3JvdXBf
bGlzdDsKICBteSAkZ3JvdXBfc3RhdHVzOwogIAogICRlcnJmbGFnID0gMDsgIyBubyBlcnJv
cnMgeWV0CiAgJGVycnRleHRNc2cgPSAiIjsKICAkcmVjdXJfbGV2ZWwrKzsKICAmRGVidWdN
c2coMiwgInwiKTsKICAmRGVidWdNc2coMiwgInwiKTsKICAmRGVidWdNc2coMiwgIistLVBy
b2Nlc3NpbmcgJGdyb3VwX25hbWUiKTsKICAKICBpZiAoJGRlYnVnID49IDApIHsKICAgIFBy
aW50TWVzc2FnZSgiUHJvY2Vzc2luZyAkZ3JvdXBfbmFtZSIpOyAKICAgIHByaW50ICI8IS0t
IFByb2Nlc3NpbmcgJGdyb3VwX25hbWUgYXQgIixzY2FsYXIoZ210aW1lKHRpbWUpKSwiR01U
IC0tPlxuIjsKICB9CiAgJGVycnRleHQ9IkdldHRpbmcgc3RhdHVzIjsKICAoJHJ0biwgJHN0
YXR1cykgPSBnZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4s
ICdzdGF0dXM6Jyk7CiAgaWYgKCAkcnRuIG5lICIiKSAKICAgIHsgJndhcm4oJHJ0bik7IH0K
ICAmRGVidWdNc2coNCwic3RhdHVzPSAkc3RhdHVzIik7CgogIGlmIChpbmRleChsYygkc3Rh
dHVzKSwgbGMoJ0luYWN0aXZlJykpID49IDApCiAgICB7ICRncm91cF9zdGF0dXMgPSAiSW5h
Y3RpdmUiOyB9CiAgZWxzZQogICAgeyAkZ3JvdXBfc3RhdHVzID0gIkFjdGl2ZSI7IH0KCiAg
JkRlYnVnTXNnKDQsImdyb3Vwc3RhdHVzPSAkZ3JvdXBfc3RhdHVzIik7CgogIGlmICgkZ3Jv
dXBfc3RhdHVzIGVxICdJbmFjdGl2ZScpCiAgICB7CiAgICAmRGVidWdNc2coNCwiU2tpcHBp
bmcgaW5hY3RpdmUgZ3JvdXAiKTsKICAgIHJldHVybjsKICAgIH0KCiAgKCRydG4sICRzdGF0
dXMpID0gZ2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3VwYmFzZWRuLCAn
c3RhdHVzOicpOwogIGlmICggJHJ0biBuZSAiIikgCiAgICB7ICZ3YXJuKCRydG4pOyB9CiAg
JkRlYnVnTXNnKDQsInN0YXR1cz0gJHN0YXR1cyIpOwoKICBpZiAoJHN0YXR1cyA9fiAvdG8g
YmUgcmVuYW1lZC8pCiAgICB7CiAgICAkb2xkTmFtZT0kc3RhdHVzOwogICAgJG9sZE5hbWUg
PX4gcy90byBiZSByZW5hbWVkOiAvLzsKICAgICZEZWJ1Z01zZyg0LCJvbGROYW1lPSAkb2xk
TmFtZSIpOwogICAgJGF0dHI9J3N1YnNjcmlwdGlvbnNncmFudG8nOwogICAgJnJlbmFtZUdy
b3VwUmVmcygkbGRhcCwgJG9sZE5hbWUsICRjdXJHcm91cCwgJGF0dHIpOwogICAgJGF0dHI9
J3N1YnNjcmlwdGlvbnNkZW55dG8nOwogICAgJnJlbmFtZUdyb3VwUmVmcygkbGRhcCwgJG9s
ZE5hbWUsICRjdXJHcm91cCwgJGF0dHIpOwogICAgJkRlYnVnTXNnKDQsImdyb3VwOiBjbj0k
Y3VyR3JvdXAgd2FzIHJlbmFtZWQsIHdhcyAkb2xkTmFtZSIpOwogICAgfQoKICAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgIyMjIEhl
cmUgc3RhcnQgdGhlIGdyb3VwIHByb2Nlc3NpbmcKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgIyBzZXQgZ3JvdXAgc3RhdHVzIHNp
bmNlIHdlIGFyZSB3b3JraW5nIG9uIGl0LgogIGlmICggJGFuYWx5emUgIT0gMSkKICAgIHsK
ICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgCiAgICAgICRn
cm91cGJhc2VkbiwgInN0YXR1czoiLCAiQmVpbmcgUHJvY2Vzc2VkIik7CiAgICB9CiAKICBp
ZiAoICRydG4gbmUgIiIpIAogICAgeyAmd2FybigkcnRuKTsgfQoKICAjIGZpcnN0IGNoZWNr
IGlmIHRoZSBncm91cCBuZWVkcyBleHBpcmF0aW9uIGRvbmUKICAkZXJydGV4dD0iR2V0dGlu
ZyBsYXN0bW9kaWZpZWRvbiI7CiAgJGF0dHI9J2xhc3Rtb2RpZmllZG9uJzsKICAkZmlsdGVy
PSIkZ3JvdXBfbmFtZSI7CiAgKCRydG4sICRsYXN0bW9kaWZpZWRvbikgPSAmZ2V0QXR0ck9u
ZSgkbGRhcCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCAkYXR0cik7CiAgaWYgKCAkcnRuIG5l
ICIiKSAKICAgIHsgJndhcm4oJHJ0bik7IH0KICAmRGVidWdNc2coNCwibGFzdG1vZGlmaWVk
b249ICRsYXN0bW9kaWZpZWRvbiIpOwoKICAkZXJydGV4dD0nR2V0dGluZyBncm91cCBzdGF0
dXMnOwoKICAoJHJ0biwgJHN0YXR1cykgPSBnZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9u
YW1lLCAkZ3JvdXBiYXNlZG4sICdzdGF0dXM6Jyk7CiAgaWYgKCAkcnRuIG5lICIiKSAKICAg
IHsgJndhcm4oJHJ0bik7IH0KICAmRGVidWdNc2coNCwic3RhdHVzPSAkc3RhdHVzIik7Cgog
IGlmIChpbmRleChsYygkc3RhdHVzKSwgbGMoJ0luYWN0aXZlJykpID49IDApCiAgICB7ICRn
cm91cF9zdGF0dXMgPSAiSW5hY3RpdmUiOyB9CiAgZWxzZQogICAgeyAkZ3JvdXBfc3RhdHVz
ID0gIkFjdGl2ZSI7IH0KCiAgJkRlYnVnTXNnKDQsImdyb3Vwc3RhdHVzPSAkZ3JvdXBfc3Rh
dHVzIik7CgogICR0ZW1wID0gJkRhdGVfQ21wKCRsYXN0bW9kaWZpZWRvbiwgJGV4cGlyZV9k
YXRlKTsKICBpZiAoKCR0ZW1wIDw9IDApIGFuZCAKICAgICAgKCRsYXN0bW9kaWZpZWRvbiBu
ZSAnJykgYW5kCiAgICAgICgkZ3JvdXBfc3RhdHVzIG5lICdJbmFjdGl2ZScpIGFuZAogICAg
ICAoJGdyb3VwX2V4cGlyZSAhPSAwKSkKICAgIHsKICAgICMgZ3JvdXAgbmVlZHMgdG8gYmUg
ZXhwaXJlZAogICAgIyBpZiBleHBub3RpZnkgbm90IHNlbnQsIHNlbmQgaXQKCiAgICAkZXJy
dGV4dD0iR2V0dGluZyBleHBub3RpZnkiOwogICAgKCRydG4sICRleHBub3RpZnkpID0gCiAg
ICAgIGdldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsICRncm91cGJhc2VkbiwgJ2V4
cG5vdGlmeTonKTsKICAgICZEZWJ1Z01zZyg0LCJleHBub3RpZnk9ICRleHBub3RpZnkiKTsK
ICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgIGVsc2UK
ICAgICAgewogICAgICBpZiAoJGV4cG5vdGlmeSBlcSAnJykKICAgICAgICB7CiAgICAgICAg
aWYgKCAkYW5hbHl6ZSA9PSAxKQogICAgICAgICAgeyAKICAgICAgICAgIHByaW50ICJHcm91
cCAkZ3JvdXBfbmFtZSBuZWVkcyB0byBiZSBwcm9jZXNzZWQgZm9yIGV4cGlyYXRpb24sXG4i
OwogICAgICAgICAgcHJpbnQgIndpdGggbWFpbCBzZW50IHRvIGdyb3VwIGFkbWluXG4iOwog
ICAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICMgZ2V0IGdy
b3VwIGFkbWluCiAgCiAgICAgICAgICAkZXJydGV4dD0iR2V0dGluZyBhZG1pbmlzdHJhdG9y
IjsKICAgICAgICAgICRhdHRyPSdwcm94eSc7CiAgICAgICAgICAkZmlsdGVyPSIkZ3JvdXBf
bmFtZSI7CiAgICAgICAgICAoJHJ0biwgJGdyb3VwX2FkbWluKSA9ICZnZXRBdHRyT25lKCRs
ZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAgICAgICAgIGlmICggJHJ0
biBuZSAiIikgCiAgICAgICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgICAgICAgICZEZWJ1
Z01zZyg0LCJncm91cF9hZG1pbj0gJGdyb3VwX2FkbWluIik7CiAgICAgICAgICBpZiAoICRn
cm91cF9hZG1pbiBlcSAnJykKICAgICAgICAgICAgeyAmd2Fybigibm8gZ3JvdXAgYWRtaW4g
Zm9yICRncm91cF9uYW1lIik7IH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgeyAKICAg
ICAgICAgICAgIyBoYXZlIGNuLCBmaWx0ZXIgaXQgYW5kIGdldCBtYWlsYWRkcgogICAgICAg
ICAgICAkZ3JvdXBfYWRtaW4gPX4gcy9eICpjbiAqPSAqLy87CiAgICAgICAgICAgICRncm91
cF9hZG1pbiA9fiBzLywuKiQvLzsKICAgICAgICAKICAgICAgICAgICAgJGVycnRleHQ9Ikdl
dHRpbmcgbWFpbCI7CiAgICAgICAgICAgICRhdHRyPSdtYWlsJzsKICAgICAgICAgICAgJGZp
bHRlcj0iY249JGdyb3VwX2FkbWluIjsKICAgICAgICAgICAgcHJpbnQgImZpbHRlcj0nJGZp
bHRlciciOwogICAgICAgICAgICAoJHJ0biwgJGdyb3VwX21haWwpID0gCiAgICAgICAgICAg
ICAgJmdldEF0dHJPbmUoJGxkYXAsICRwZW9wbGViYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsK
ICAgICAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwX21haWw9ICRncm91cF9tYWlsIik7CiAg
ICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgeyAmd2FybigkcnRu
KTsgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgeyAjaGF2ZSB1c2VyLCBzZW5k
IHRoZSBtYWlsCiAgICAgICAgICAgICAgcHJpbnQgIlNlbmRpbmcgZXhwaXJlIHdhcm5pbmcg
dG8gJGdyb3VwX21haWxcbiI7CiAgICAgICAgICAgICAgJkRlYnVnTXNnKDQsInNlbmRpbmcg
bWFpbDoiIC4KICAgICAgICAgICAgICAgICJtYWlsIC1zIFwiR3JvdXAgJGdyb3VwX25hbWVc
IiAkZ3JvdXBfbWFpbCA8IiAuIAogICAgICAgICAgICAgICAgIiAkc3JjZGlyL21haWwubXNn
Iik7CiAgICAgICAgICAgICAgb3BlbiAoTUFJTE1TRywgIj4kdG1wZGlyLyQkLm1zZzIiKSBv
cgogICAgICAgICAgICAgICAgZGllICJ1bmFibGUgdG8gb3BlbiBtYWlsIG1lc3NhZ2UgZmls
ZSI7CiAgCiAgICAgICAgICAgICAgcHJpbnQgTUFJTE1TRyAiRGVhciBHcm91cCBBZG1pbmlz
dHJhdG9yLFxuXG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIllvdSBhcmUgdGhl
IGFkbWluaXN0cmF0b3IgZm9yIHRoZSBncm91cFxuIjsKICAgICAgICAgICAgICBwcmludCBN
QUlMTVNHICIgJGdyb3VwX25hbWVcbiI7CiAgICAgICAgICAgICAgcHJpbnQgTUFJTE1TRyAi
YW5kIGFzIGl0IGhhcyBub3QgYmVlbiB1cGRhdGVkIHJlY2VudGx5LCAiIC4KICAgICAgICAg
ICAgICAgICJ0aGUgZ3JvdXAgd2lsbCBiZSBzZXQgdG9cbiI7CiAgICAgICAgICAgICAgcHJp
bnQgTUFJTE1TRyAiaW5hY3RpdmUgb24gJGV4cGlyZV9kYXRlMi4gICIgLgogICAgICAgICAg
ICAgICAgIlRoaXMgd2lsbCBtZWFuIHRoYXQgdGhlIGdyb3VwIGhhcyBubyBtZW1iZXJzLCBz
b1xuIjsKICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICJpdCBjYW4gbm90IGxvbmdlciB0
byB1c2VkIHRvIGFjY2VzcyAiIC4KICAgICAgICAgICAgICAgICJjb250cm9scywgZXRjLlxu
XG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIllvdSBjYW4gdXBkYXRlIHRoZSBn
cm91cCB2aWE6XG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIiAgaHR0cDovL2Rl
YnVzc3kuaG91c3Rvbi5vbW5lcy5zbGIuY29tLyIgLgogICAgICAgICAgICAgICAgImxkYXAv
bGRhcDMvZ3JwaW5kZXguY2dpXG5cbiI7CiAgICAgICAgICAgICAgcHJpbnQgTUFJTE1TRyAi
WW91IHdpbGwgYmUgcmVtaW5kZWQgYWJvdXQgdGhpcyBpZiB0aGUgZ3JvdXAgIiAuCiAgICAg
ICAgICAgICAgICAiaXMgc3VzcGVuZGVkLlxuXG4iOwogICAgICAgICAgICAgIHByaW50IE1B
SUxNU0cgIlNpbmNlcmVseVxuIjsKICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICJMREFQ
IEFkbWluaXN0cmF0b3JcbiI7ICAgICAgICAKICAgICAgICAgICAgICBjbG9zZSBNQUlMTVNH
OwogICAgICAgICAgICAgICNzeXN0ZW0oIm1haWwgLXMgXCJEaXJlY3RvcnkgR3JvdXAgJGdy
b3VwX25hbWUgIiAuCiAgICAgICAgICAgICAgIyAgIndpbGwgYmUgc3VzcGVuZGVkIG9uICRl
eHBpcmVfZGF0ZTJcIiAkZ3JvdXBfbWFpbCIgLgogICAgICAgICAgICAgICMgICIgPCAkdG1w
ZGlyLyQkLm1zZzIiKTsKICAgICAgICAgICAgICBzeXN0ZW0oImVjaG8gXCItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0iIC4KICAgICAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS1cIiA+PiRsb2dkaXIvbWFpbCIpOwogICAgICAgICAgICAgIHN5
c3RlbSgiZWNobyBcIlN1YmplY3Q6IERpcmVjdG9yeSBncm91cCAkZ3JvdXBfbmFtZSAiIC4K
ICAgICAgICAgICAgICAgICJ3aWxsIGJlIHN1c3BlbmRlZCBvbiAkZXhwaXJlX2RhdGUyXCIg
Pj4kbG9nZGlyL21haWwiKTsKICAgICAgICAgICAgICBzeXN0ZW0oImVjaG8gXCJUbzogICAg
ICAkZ3JvdXBfbWFpbFwiID4+JGxvZ2Rpci9tYWlsIik7CiAgICAgICAgICAgICAgc3lzdGVt
KCJlY2hvIFwiICAgICAgICAgICAgICAgICAgICBcIiA+PiRsb2dkaXIvbWFpbCIpOwogICAg
ICAgICAgICAgIHN5c3RlbSgiY2F0IDwgJHRtcGRpci8kJC5tc2cyID4+ICRsb2dkaXIvbWFp
bCIpOwogICAgICAgICAgCiAgICAgICAgICAgICAgaWYgKCRrZWVwdGVtcCA9PSAwKQogICAg
ICAgICAgICAgICAgeyB1bmxpbmsgIiR0bXBkaXIvJCQubXNnMiI7fQogICAgICAgICAgICAg
IH0KICAgICAgICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1l
LCAKICAgICAgICAgICAgICAkZ3JvdXBiYXNlZG4sICJleHBub3RpZnk6IiwgIk1haWwgU2Vu
dCAiIC4gJnNsYlRpbWUzKTsKICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCAkcnRuIG5l
ICIiKSAKICAgICAgICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgICAgIGlmICgg
JGVycmZsYWcgPT0gMCkKICAgICAgICAgICAgICB7IAogICAgICAgICAgICAgICRydG4gPSAm
c2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3VwYmFzZWRuLCAKICAgICAg
ICAgICAgICAgICJzdGF0dXM6IiwgIk9LIik7IAogICAgICAgICAgIAogICAgICAgICAgICAg
IGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAg
ICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgeyAKICAgICAg
ICAgICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsICRncm91
cGJhc2VkbiwgInN0YXR1czoiLCAKICAgICAgICAgICAgICAgICJFUlJPUiAiIC4KICAgICAg
ICAgICAgICAgICRlcnJ0ZXh0TXNnKTsKICAgICAgICAgICAKICAgICAgICAgICAgICBpZiAo
ICRydG4gbmUgIiIpIAogICAgICAgICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgICAg
ICAgCiAgICAgICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgICAgIHsg
Jndhcm4oJHJ0bik7IH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAg
IH0KICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgIyBlbHNlIGNoZWNr
IGlmIG9uZSB3ZWVrIHBhc3QgbWFpbCBzZW50IAogICAgICAgICMgYW5kIHNldCBncm91cCB0
byBpbmFjdGl2ZSBpZiBzby4KICAgICAgICBpZiAobGVuZ3RoKCRleHBub3RpZnkpIDwgMTUp
CiAgICAgICAgICB7ICZ3YXJuKCJCYWQgZXhwaXJhdGlvbiB0aW1lc3RhbXA6ICRleHBub3Rp
ZnkiKTsgfQogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICRleHBpcmVfZGF0
ZTI9c3Vic3RyKCRleHBub3RpZnksIDExKTsKICAgICAgICAgIGlmICgkZGVidWcgPiAwKQog
ICAgICAgICAgICB7IHByaW50ICJleHBpcmVfZGF0ZTI9JGV4cGlyZV9kYXRlMiI7IH0KICAg
ICAgICAgIAogICAgICAgICAgJGV4cGlyZV9kYXRlMiA9ICZEYXRlQ2FsYygidG9kYXkiLCAi
LSIgLiAkZ3JvdXBfZXhwaXJlIC4gCiAgICAgICAgICAgICIgZGF5cyIsIFwkZXJyKTsKICAg
ICAgICAgICR0ZW1wID0gJkRhdGVfQ21wKCRsYXN0bW9kaWZpZWRvbiwgJGV4cGlyZV9kYXRl
Mik7CiAgICAgICAgICBpZiAoJGRlYnVnID4gMCkKICAgICAgICAgICAgeyBwcmludCAiZXhw
aXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIiOyB9CiAgICAgICAgICBpZiAoJHRlbXAgPD0gMCkK
ICAgICAgICAgICAgewogICAgICAgICAgICBpZiAoJGFuYWx5emUgPT0gMSkKICAgICAgICAg
ICAgICB7IHByaW50ICJHcm91cCAkZ3JvdXBfbmFtZSBuZWVkcyB0byBiZSBleHBpcmVkXG4i
OyB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHJ0
biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAKICAgICAgICAgICAgICAg
ICRncm91cGJhc2VkbiwgInN0YXR1czoiLCAiSW5hY3RpdmUiKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgICB7ICZ3YXJu
KCRydG4pOyB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICZEZWJ1Z01zZyg0LCIqKioq
IGdyb3VwIGV4cGlyZWQgKioqIik7CiAgICAgICAgICAgICAgcHJpbnQgIkdyb3VwICRncm91
cF9uYW1lIGV4cGlyZWRcbiI7CgogICAgICAgICAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0
KCRsZGFwLCRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4sIAogICAgICAgICAgICAgICAgImV4
cGFuZGVkOiIsICRkYXRlKTsKICAgICAgICAKICAgICAgICAgICAgICBpZiAoICRydG4gbmUg
IiIpIAogICAgICAgICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gIAogICAgICB9CiAgICB9CiAg
ZWxzZQogICAgeyAmRGVidWdNc2coNCwgIioqKiogZ3JvdXAgbm90IGV4cGlyaW5nICoqKiIp
OyAKICAgICMjIyMjIyMjIyMgcHJvY2VzcyBtZW1iZXJzIGhlcmUKICAgICMgbm93IHNhdmUg
dGhlIHVuaXF1ZW1lbWJlciBsaXN0IGZvciBsYXRlcgogICAgJGVycnRleHQ9J0dldHRpbmcg
TWVtYmVyIExpc3QnOwogICAgJGF0dHI9J3VuaXF1ZW1lbWJlcic7CiAgICAkZmlsdGVyPSIk
Z3JvdXBfbmFtZSI7CiAgICAkc2F2ZV9tZW1iZXJzPSgpOwogICAgKCRydG4sICRhdHRyWCkg
PSAmZ2V0QXR0cigkbGRhcCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCAkYXR0cik7CiAgICBp
ZiAoICRydG4gbmUgIiIpIAogICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgCiAgICBAc2F2ZV9t
ZW1iZXJzPUAkYXR0clg7CiAgICBAc2F2ZV9tZW1iZXJzPXNvcnQoQHNhdmVfbWVtYmVycyk7
CiAgCiAgICBpZiAoJHNob3cgPiAwKQogICAgICB7CiAgICAgIGRpc3BBcnJheSgiT3JpZ2lu
YWwgbWVtYmVyIGxpc3QgZm9yIGdyb3VwICckZ3JvdXBfbmFtZSciLCBAc2F2ZV9tZW1iZXJz
KTsKICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgIFByaW50TWVzc2FnZSggIiAgIiAu
IHNjYWxhcihAc2F2ZV9tZW1iZXJzKSAuICIgbWVtYmVycyIgLgogICAgICAgICIgZm9yIE9y
aWdpbmFsIExpc3QiKTsgCiAgICAgIH0KICAgIAogICAgIwogICAgIyBHZXQgdGhlIHF1ZXJ5
IHN0cmluZwogICAgIwogICAgCiAgICAmRGVidWdNc2cgKDMsICJHZXR0aW5nIHRoZSBxdWVy
eSBzdHJpbmcgZm9yICckZ3JvdXBfbmFtZSciKTsKICAgICRlcnJ0ZXh0PSJHZXR0aW5nIHF1
ZXJ5IHN0cmluZyI7CiAgICAkYXR0cj0nc3Vic2NyaXB0aW9ucyc7CiAgICAkZmlsdGVyPSIk
Z3JvdXBfbmFtZSI7ICAjIGFscmVhZHkgaGFzIGNuPQogICAgJHF1ZXJ5X3N0cmluZyA9ICIi
OwogICAgJHJ0biA9ICcnOwogICAgKCRydG4sICRxdWVyeV9zdHJpbmcpID0gJmdldEF0dHJP
bmUoJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwogICAgaWYgKCAkcnRu
IG5lICIiKSAKICAgICAgeyAKICAgICAgJndhcm4oJHJ0bik7IAogICAgICB9CiAgICBAbWVt
YmVyX2xpc3QgPSAoKTsKICAKICAgIGlmICgkcXVlcnlfc3RyaW5nIG5lICIiKSAjdGhlcmUg
aXMgYSBxdWVyeSBzdHJpbmcgdG8gcHJvY2VzcwogICAgICB7ICAgICAgICAgICAgICAgICAg
ICNzbyBnZXQgdGhlIG1lbWJlcnMgKGRucykKICAgICAgJkRlYnVnTXNnICgzLCAiUXVlcnkg
c3RyaW5nIGlzOiA8JHF1ZXJ5X3N0cmluZz4iKTsKICAgIAogICAgICAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAg
ICMgI3F1ZXJ5X2xkYXAgd2l0aCB0aGUgcXVlcnkgc3RyaW5nLCBwdXQgcmVzdWx0IGluIGFy
cmF5CiAgCiAgICAgIEBhdHRycyA9IAogICAgICAgICgKICAgICAgICAiY24iLAogICAgICAg
ICk7CiAgICAgIAogICAgICBpZiAoaW5kZXgoJHF1ZXJ5X3N0cmluZywgIigiKSA8IDAgKQog
ICAgICAgIHsgJGZpbHRlcj0iKCRxdWVyeV9zdHJpbmcpIjsgfQogICAgICBlbHNlCiAgICAg
ICAgeyAkZmlsdGVyPSIkcXVlcnlfc3RyaW5nIjsgfQogIAogICAgICAkZXJydGV4dD0iUHJv
Y2Vzc2luZyBxdWVyeSBzdHJpbmcgJyRxdWVyeV9zdHJpbmcnIjsKICAgICAgJkRlYnVnTXNn
KDQsIlF1ZXJ5aW5nIHVzZXJzIHZpYSBxdWVyeSBzdHJpbmcgJyRxdWVyeV9zdHJpbmcnIik7
CiAgICAgIG15ICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmQxKSA9IAogICAgICAgICZkb0xE
QVBTZWFyY2goJGxkYXAsICRwZW9wbGViYXNlZG4sICRmaWx0ZXIsIFxAYXR0cnMpOwogIAog
ICAgICBpZiAoJHJ0biBuZSAnJykKICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgCiAgICAg
ICZEZWJ1Z01zZyg0LCJRdWVyeWluZyBkb25lIik7CiAgICAgICVyZWNvcmQgPSAlJHJlY29y
ZDE7CiAgICAgIGlmICgkbmVudHJpZXMgPT0gMCkgCiAgICAgICAgeyAmRGVidWdNc2coMywg
Ik5vIG1lbWJlcnMgZm91bmQiKTsgfQogIAogICAgICBmb3JlYWNoICRkbiAoc29ydCBrZXlz
ICVyZWNvcmQpIAogICAgICAgIHsgCiAgICAgICAgY2hvbXAoJGRuKTsKICAgICAgICAkZG4g
PX4gcy9eICpjbiAqPSAqLy87ICAgICMgcmVtb3ZlIGNuPSBmcm9tIGRuICh1aWQgb2sgdG9v
KSAKICAgICAgICAjICRkbiA9fiBzLywuKiQvLzsgICAgICAgICAgIyByZW1vdmUgYWxsIGJ1
dCBjbiBmcm9tIGRuICh1aWQgb2sgdG9vKQogICAgICAgICRkbiA9fiBzLywuW09vXSokLy87
CiAgICAgICAgJGRuID0gJkNsZWFuU3RyaW5nKCRkbik7CiAgICAgICAgcHVzaCBAbWVtYmVy
X2xpc3QsICRkbjsgCiAgICAgICAgfQogIAogICAgICAkY291bnQgPSBzY2FsYXIoQG1lbWJl
cl9saXN0KTsKICAgICAgJkRlYnVnTXNnKDMsICJGb3VuZCAkY291bnQgcmVjb3JkKHMpIHdp
dGggdGhlIHF1ZXJ5IHN0cmluZyIpOwogICAgCiAgICAgICMjIyMgR3JvdXAgaGFzIGJlZW4g
ZXhwYW5kZWQgMXN0IHBoYXNlCiAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAjIE5vdyBxdWVyeSBz
YW1lIHJlY29yZCBhbmQgZ2V0IGxpc3Qgb2YgYWxsb3dlZCBwZW9wbGUgb3IgZ3JvdXAKICAg
ICAgIyBmb3IgZWFjaCBvYmplY3Q6IGlmIHBlcnNvbiB0aGVuIGFkZCB0byBtZW1iZXJsaXN0
LCAKICAgICAgIyBpZiBpdCBpcyBhIGdyb3VwIGNhbGwgcmVjdXJzaXZlbHkgdGhpcyBwcm9j
ZWR1cmUuCiAgICAKICAgICAgfSAKICAgIGVsc2UgCiAgICAgIHsgJkRlYnVnTXNnKDMsICJO
byBxdWVyeSBzdHJpbmcgZm91bmQiKTsgfQogIAogICAgaWYgKCRkZWJ1ZyA+IDApCiAgICAg
IHsgJmRpc3BBcnJheSgiTWVtYmVyIExpc3QgQWZ0ZXIgUXVlcnkgU3RyaW5nIiwgQG1lbWJl
cl9saXN0KTsgfQogICAgZWxzZQogICAgICB7IAogICAgICBQcmludE1lc3NhZ2UoIiAgIiAu
IHNjYWxhcihAbWVtYmVyX2xpc3QpIC4gIiBtZW1iZXJzICIgLgogICAgICAgICJhZnRlciBR
dWVyeSBTdHJpbmcgcHJvY2Vzc2VkIik7CiAgICAgIH0KICAKICAgICMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIG5vdyBnZXQgdGhlIGdyYW50dG8g
bGlzdCBhbmQgYWRkIGl0IGluCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogICAgJkRlYnVnTXNnKDMsICJRdWVyeWluZyBMREFQIHRvIGdldCB0aGUg
c3Vic2NyaXB0aW9uc0dyYW50VG8gIiAuCiAgICAgICJwYXJ0IGZvciAnJGdyb3VwX25hbWUn
Iik7CiAgICAkZXJydGV4dD0iR2V0dGluZyBHcmFudCBMaXN0IjsKICAgICRmaWx0ZXI9IiRn
cm91cF9uYW1lIjsgICMgYWxyZWFkeSBoYXMgY249CiAgICAkYXR0cj0ic3Vic2NyaXB0aW9u
c2dyYW50dG8iOwogICAgKCRydG4sICRhdHRyWCkgPWdldEF0dHIoJGxkYXAsICRncm91cGJh
c2VkbiwgJGZpbHRlciwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAK
ICAgICAgJndhcm4oJHJ0bik7IAogICAgICB9CiAgICBAYXR0cl9saXN0PUAkYXR0clg7CiAg
ICBpZiAoJCNhdHRyX2xpc3QgPj0gMCkgI3RoZXJlIGlzIGEgZ3JhbnQgdG8gcGFydCB0byBw
cm9jZXNzCiAgICAgIHsKICAgICAgQHN1YnNjcmlwdGlvbnNHcmFudFRvX2xpc3QgPSBAYXR0
cl9saXN0OwogICAgICAmRGVidWdNc2cgKDQsICInJGdyb3VwX25hbWUnIHN1YnNjcmlwdGlv
bnNHcmFudFRvIGxpc3QgaXM6Iik7CiAgICAgIGZvciAoJGk9MDsgJGk8PSQjc3Vic2NyaXB0
aW9uc0dyYW50VG9fbGlzdDsgJGkrKykKICAgICAgICB7ICZEZWJ1Z01zZyAoNCwgIiAgIiAu
ICRzdWJzY3JpcHRpb25zR3JhbnRUb19saXN0WyRpXSk7IH0KICAgICAgJGNvdW50ID0gJCNz
dWJzY3JpcHRpb25zR3JhbnRUb19saXN0KzE7CiAgICAgICZEZWJ1Z01zZyAoMywgIkZvdW5k
ICRjb3VudCByZWNvcmRzIHRvIGdyYW50IiAuCiAgICAgICAgIlByb2Nlc3Npbmcgc3Vic2Ny
aXB0aW9uc0dyYW50VG8gcGFydCIpOyAKICAgICAgZm9yZWFjaCAkcCAoQHN1YnNjcmlwdGlv
bnNHcmFudFRvX2xpc3QpCiAgICAgICAgewogICAgICAgIGlmICggKGluZGV4KCRwLCAnY249
JykgPCAwICkgYW5kCiAgICAgICAgICAgICAobGMoJHApICF+ICdncm91cCAnICkgKQogICAg
ICAgICAgewogICAgICAgICAgI25lZWQgdG8gZ2V0IGNuIGZyb20gdWlkCiAgICAgICAgICBj
aG9tcCgkcCk7CiAgICAgICAgICAkcD0mQ2xlYW5TdHJpbmcoJHApOwogICAgICAgICAgKCRy
dG4sJHAsJGJ1ZmYpPSZnZXRDbkZyb21VaWQoJHApOwogICAgICAgICAgaWYgKCRydG4gbmUg
JycpCiAgICAgICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgICAgICAgIGlmICgkcCBlcSAn
JykKICAgICAgICAgICAgeyAkcCA9ICRidWZmOyB9CiAgICAgICAgICB9CiAgICAgICAgJHAg
PX4gcy9eICpjbiAqPSAqLy87ICAgICMgcmVtb3ZlIGNuPSBmcm9tIGRuICh1aWQgb2sgdG9v
KSAKICAgICAgICAjICRwID1+IHMvLC4qJC8vOyAgICAgICAgICAjIHJlbW92ZSBhbGwgYnV0
IGNuIGZyb20gZG4gKHVpZCBvayB0b28pIAogICAgICAgICRwID1+IHMvLC5bT29dPSokLy87
CiAgICAgICAgJHAgPSAmQ2xlYW5TdHJpbmcgKCRwKTsKICAgICAgICBpZiAobGMoJHApID1+
ICdncm91cCAnKQogICAgICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDQsICIjIyMjIGZv
dW5kIGdyb3VwICckcCcgISEhISIpOwogICAgICAgICAgJHAgPX4gcy8gKltHZ11bUnJdW09v
XVtVdV1bUHBdIC8vOwogICAgICAgICAgJHJ0bj0mZ2V0R3JvdXBNZW1iZXJzKCRwLCAwKTsK
ICAgICAgICAgIGlmICgkcnRuIG5lICcnKQogICAgICAgICAgICB7ICZ3YXJuKCRydG4pOyB9
CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsgcHVzaCBAbWVtYmVyX2xpc3QsIEBtZW1i
ZXJMaXN0fTsKICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAg
ICAjIyMgd2UgYWRkIHRoZSBvYmplY3QgdG8gdGhlIG1lbWJlciBsaXN0CiAgICAgICAgICBw
dXNoIEBtZW1iZXJfbGlzdCwgJHAKICAgICAgICAgIH0KICAgICAgICB9ICNlbmQgZm9yZWFj
aAogICAgICB9IAogICAgZWxzZSAKICAgICAgeyAmRGVidWdNc2coMywgIk5vIEdyYW50IHRv
IGxpc3QgZm91bmQiKSA7IH0KICAgIAogICAgaWYgKCAkZGVidWcgPiAwKQogICAgICB7IGRp
c3BBcnJheSgiTWVtYmVyIExpc3QgYWZ0ZXIgR3JhbnQgdG8iLCBAbWVtYmVyX2xpc3QpOyB9
CiAgICBlbHNlCiAgICAgIHsgCiAgICAgIFByaW50TWVzc2FnZSgiICAiIC4gc2NhbGFyKEBt
ZW1iZXJfbGlzdCkgLiAiIG1lbWJlcnMgIiAuCiAgICAgICAgImFmdGVyIEdyYW50IFRvIHBy
b2Nlc3NlZCIpOwogICAgICB9CiAgCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIERvIHRoZSBz
YW1lIHdpdGggZGVueSBncm91cCAjIGFkZCBkZW5pZWQgbWVtYmVyIHRvIGEgc2VwYXJhdGUg
ZmlsZQogICAgIwogICAgJkRlYnVnTXNnKDMsICJRdWVyeWluZyBMREFQIHRvIGdldCB0aGUg
c3Vic2NyaXB0aW9uc0RlbnlUbyBwYXJ0Iik7CiAgICAkZXJydGV4dD0iR2V0dGluZyBEZW55
IExpc3QiOwogICAgJGZpbHRlcj0kZ3JvdXBfbmFtZTsKICAgICRhdHRyPSdzdWJzY3JpcHRp
b25zZGVueXRvJzsKICAgIEBtZW1iZXJMaXN0ID0gKCk7CiAgICAKICAgICgkcnRuLCAkYXR0
clgpID0gZ2V0QXR0cigkbGRhcCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCAkYXR0cik7CiAg
ICBpZiAoICRydG4gbmUgIiIpIAogICAgICB7IAogICAgICAmd2FybigkcnRuKTsgCiAgICAg
IH0KICAgIEBhdHRyX2xpc3Q9QCRhdHRyWDsKICAKICAgIGlmICgkI2F0dHJfbGlzdCA+PSAw
KSAjdGhlcmUgaXMgYSBzdWJzY3JpcHRpb25zRGVueVRvIHBhcnQgdG8gcHJvY2VzcwogICAg
ICB7CiAgICAgIEBzdWJzY3JpcHRpb25zRGVueVRvX2xpc3QgPSBAYXR0cl9saXN0OwogICAg
ICAkY291bnQgPSAkI3N1YnNjcmlwdGlvbnNEZW55VG9fbGlzdDsKICAgICAgJkRlYnVnTXNn
ICg0LCAiJyRncm91cF9uYW1lJyBzdWJzY3JpcHRpb25zRGVueVRvIGxpc3QgaXM6Iik7CiAg
ICAgIGZvciAoJGk9MDsgJGk8PSQjc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0OyAkaSsrKQog
ICAgICAgIHsgJkRlYnVnTXNnICg0LCAiICAiIC4gJHN1YnNjcmlwdGlvbnNEZW55VG9fbGlz
dFskaV0pOyB9CiAgICAgICZEZWJ1Z01zZygzLCAiRm91bmQgJGNvdW50IHJlY29yZChzKSB0
byBkZW55Iik7CiAgICAgICZEZWJ1Z01zZyAoMywgIlByb2Nlc3Npbmcgc3Vic2NyaXB0aW9u
c0RlbnlUbyBhbmQgZXZlbnR1YWxseSAiIC4KICAgICAgICAiY2FsbCByZWN1cnNpdmVseSB0
aGlzIGZ1bmN0aW9uIik7CiAgICAgIGZvcmVhY2ggJHAgKEBzdWJzY3JpcHRpb25zRGVueVRv
X2xpc3QpCiAgICAgICAgewogICAgICAgICZEZWJ1Z01zZyAoNCwgInN1YnNjcmlwdGlvbnNE
ZW55VG8gJGk6ICRwIik7CiAgICAgICAgJHAgPSAmQ2xlYW5TdHJpbmcgKCRwKTsKICAgICAg
ICBpZiAobGMoJHApID1+IC9eZ3JvdXAgLyApCiAgICAgICAgICB7CiAgICAgICAgICAmRGVi
dWdNc2coNCwiIyMjIyBmb3VuZCBncm91cCAnJHAnICEhISEiKTsKICAgICAgICAgICRwID1+
IHMvICpbR2ddW1JyXVtPb11bVXVdW1BwXSAvLzsKICAgICAgICAgICRlcnJ0ZXh0PSJQcm9j
ZXNzaW5nIERlbnkgTGlzdCI7CiAgICAgICAgICAkcnRuPSZnZXRHcm91cE1lbWJlcnMoJHAs
IDApOwogICAgICAgICAgaWYgKCRydG4gbmUgJycpCiAgICAgICAgICAgIHsgJndhcm4oJHJ0
bik7IH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgeyBwdXNoIEByZW1vdmVfbGlzdCwg
QG1lbWJlckxpc3R9OwogICAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAg
ICAgICAgICMjIyB3ZSBhZGQgdGhlIG9iamVjdCB0byB0aGUgcmVtb3ZhbCBsaXN0CiAgICAg
ICAgICBwdXNoIEByZW1vdmVfbGlzdCwgJHA7CiAgICAgICAgICB9CiAgICAgICAgfSAjZW5k
IGZvcmVhY2gKICAgICAgaWYgKCQjbWVtYmVyTGlzdCA+PTApCiAgICAgICAgeyBwdXNoIEBy
ZW1vdmVfbGlzdCwgQG1lbWJlckxpc3Q7IH0KICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICMjIyBOb3cg
dGhhdCB3ZSBoYXZlIHRoZSBmdWxsIGRlbnkgdG8gbGlzdCB3ZSBwcm9jZXNzIGl0CiAgICAg
ICMjIyB3ZSBzdWJ0cmFjdCBmcm9tIHRoZSBtZW1iZXJsaXN0CiAgICAgICMjIyBhbHNvIHdl
IHNjYW4gdGhlIGxpc3QgdGlsbCB0aGUgZW5kCiAgICAgICMjIyBpbiBjYXNlIHRoZXJlIGFy
ZSBzZXZlcmFsIGluc3RhbmNlcyBvZiB0aGUgdWlkIHRvIGRlbnkKICAgICAgIyMjCiAgICAg
ICZEZWJ1Z01zZyg0LCAiLS1CZWZvcmUgcmVtb3ZhbCBNZW1iZXJsaXN0IGlzOlxuQG1lbWJl
cl9saXN0IikgOwogICAgICAmRGVidWdNc2coNCwgIi0tQW5kIFJlbW92YWwgbGlzdCBpczpc
bkByZW1vdmVfbGlzdCIpOwogICAgICAmRGVidWdNc2coNCwgIlN1YnN0cmFjdGluZyBkZW55
Iik7CiAgICAgIG15ICgkeGRuLCAkeG5iKTsKICAgICAgZm9yZWFjaCAkcCAoQHJlbW92ZV9s
aXN0KQogICAgICAgIHsKICAgICAgICBteSBAbmV3X21lbWJlcl9saXN0OwogICAgICAgICZE
ZWJ1Z01zZyg1LCAiLS0+RGVueWluZyAkcCIpOyAKICAgICAgICAkaz0wOwogICAgICAgIGZv
cmVhY2ggJGxpbmUgKEBtZW1iZXJfbGlzdCkKICAgICAgICAgIHsKICAgICAgICAgICZEZWJ1
Z01zZyg0LCAiY2hlY2tpbmcgJGxpbmUiKTsKICAgICAgICAgICRrKys7CiAgICAgICAgICBp
ZiAoJGxpbmUgPX4gJHAgKSAjaWYgdGhlIGRuIGNvbnRhaW5zIHRoZSB1c2VyIHRoZW4KICAg
ICAgICAgICAgewogICAgICAgICAgICAmRGVidWdNc2coNCwgIiRrOiBXT04nVCBwdXNoICRs
aW5lID0gJHAiKTsKICAgICAgICAgICAgI0RlYnVnTXNnKDQsICIkazogUmVtb3ZpbmcgJHhk
biBzaW5jZSBpdCBpcyBpbiAkbGluZSIpOwogICAgICAgICAgICAjRGVidWdNc2coNSwgIkJl
Zm9yZSByZW1vdmFsIE1lbWJlcmxpc3QgaXMgXG46QG1lbWJlcl9saXN0IikgOwogICAgICAg
ICAgICAjc3BsaWNlIChAbWVtYmVyX2xpc3QsICRrLTEsIDEpOwogICAgICAgICAgICAjRGVi
dWdNc2coNSwgIkFmdGVyIHJlbW92YWwgTWVtYmVybGlzdCBpcyBcbjpAbWVtYmVyX2xpc3Qi
KSA7CiAgICAgICAgICAgICMkay0tOwogICAgICAgICAgICB9CiAgICAgICAgICBlbHNlIAog
ICAgICAgICAgICB7CiAgICAgICAgICAgIERlYnVnTXNnKDQsICIkazogcHVzaGluZyB0byBt
ZW1iZXIgbGlzdCAiIC4KICAgICAgICAgICAgICAiJGxpbmUgc2luY2Ugbm90IGluICRwIik7
CiAgICAgICAgICAgIHB1c2ggKEBuZXdfbWVtYmVyX2xpc3QsICRsaW5lKTsKICAgICAgICAg
ICAgfQogICAgICAgICAgfQogICAgICAgIEBtZW1iZXJfbGlzdCA9IEBuZXdfbWVtYmVyX2xp
c3Q7CiAgICAgICAgfSAjZW5kIGZvcmVhY2gKICAgICAgCiAgICAgICNlbmQgaWYKICAgICAg
fSAKICAgIGVsc2UgCiAgICAgIHsgRGVidWdNc2coMywgIk5vIERlbnkgdG8gbGlzdCBmb3Vu
ZCIpIDsgfQogICAgCiAgICBAbWVtYmVyX2xpc3QgPSBzb3J0KEBtZW1iZXJfbGlzdCk7ICAg
ICAgI3NvcnQgYXJyYXkgYWxwaGEgb3JkZXIKICAgIGlmICgkZGVidWcgPiAwKQogICAgICB7
IGRpc3BBcnJheSgiTWVtYmVyIExpc3QgYWZ0ZXIgRGVueSIsIEBtZW1iZXJfbGlzdCk7IH0K
ICAgIGVsc2UKICAgICAgeyAKICAgICAgUHJpbnRNZXNzYWdlKCIgICIgLiBzY2FsYXIoQG1l
bWJlcl9saXN0KSAuICIgbWVtYmVycyAiIC4KICAgICAgICAiYWZ0ZXIgRGVueSBUbyBwcm9j
ZXNzZWQiKTsgCiAgICAgIH0KICAgICAgCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyB2ZXJpZnkgdGhhdCBlYWNoIG1lbWJl
ciBpcyBpbiBkYXRhYmFzZQogICAgIyBvciBwdXQgaW4gd2FybmluZyBsaXN0CiAgICAjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgQGF0
dHJzID0gCiAgICAgICgKICAgICAgImNuIiwKICAgICAgKTsKICAgIAogICAgZm9yICgkaj0w
OyAkajw9JCNtZW1iZXJfbGlzdDsgJGorKykgewogICAgICAjc2VhcmNoIGZvciBjbiBpbiBw
ZW9wbGUKICAgICAgJHRoaXNjbiAgPSAkbWVtYmVyX2xpc3RbJGpdOwogICAgICAkdGhpc2Nu
ICA9fiBzL14gKmRuICo9ICo6ICovLzsKICAgICAgJHRoaXNjbiAgPX4gcy8sLiokLy87CiAg
ICAgICRlcnJ0ZXh0ID0gIlByb2Nlc3NpbmcgbWVtYmVyIGxpc3QiOwogICAgICAkZmlsdGVy
ICA9ICIoY249JHRoaXNjbikiOwogICAgICAKICAgICAgJkRlYnVnTXNnKDQsIlskajpdIFF1
ZXJ5aW5nIHBlb3BsZSBmb3IgY24gJyR0aGlzY24nIik7CiAgICAgIG15ICgkcnRuLCAkbmVu
dHJpZXMsICRyZWNvcmQxKSA9IAoJICAmZG9MREFQU2VhcmNoKCRsZGFwLCAkcGVvcGxlYmFz
ZWRuLCAkZmlsdGVyLCBcQGF0dHJzKTsKICAgICAgCiAgICAgIGlmICgkcnRuIG5lICcnKSB7
Cgkmd2FybigkcnRuKTsgCiAgICAgIH0KICAgICAgCiAgICAgICZEZWJ1Z01zZyg0LCJRdWVy
eWluZyBkb25lIik7CiAgICAgIGlmICgkbmVudHJpZXMgPT0gMCkgeyAKICAgICAgICAmRGVi
dWdNc2coNSwgIiR0aGlzY24gbm90IGZvdW5kIGluIHBlb3BsZSIpOwogICAgICAgICR0aGlz
Y24gLj0gIiBub3QgZm91bmQiOwogICAgICAgIHB1c2ggQHdhcm5pbmdfbGlzdCwgJHRoaXNj
bjsKCSRtZW1iZXJfbGlzdFskal09cXt9OwogICAgICB9IGVsc2UgeyAKCSZEZWJ1Z01zZyg1
LCAiJHRoaXNjbiBmb3VuZCBpbiBwZW9wbGUiKTsgCiAgICAgIH0KICAgIH0KICAKICAgICMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAj
IHJlbW92ZSBkdXBsaWNhdGUgZW50cmllcyBhbmQgbWFrZSBmdWxsIGRuIGFnYWluCiAgICAj
IHVubGVzcyBpdHMgYSBiYWQgdWlkIQogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICVzZWVuX2xpc3Q9KCk7CiAgICBAbWVtYmVy
X2xpc3Q9IHNvcnQoZ3JlcCB7ISAkc2Vlbl9saXN0eyRffSsrIH0gQG1lbWJlcl9saXN0KSA7
CiAgICAjIEBtZW1iZXJfbGlzdCBtYXkgaGF2ZSBhIGJsYW5rIGVudHJ5LCBpZiBhIEROIGRv
ZXMgbm90IGV4aXN0CiAgICB1bmxlc3MgKCRtZW1iZXJfbGlzdFswXSkgewogICAgICBzaGlm
dCBAbWVtYmVyX2xpc3Q7CiAgICB9CiAgICBmb3JlYWNoIChAbWVtYmVyX2xpc3QpIHsKICAg
ICAgJF8gPX4gcy9eL2NuPS9vOyAjIFByZWZpeCBlYWNoIEROIHdpdGggY249IGFzIHJlbW92
ZWQgZWFybGllcgogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgICAjICB1cGRhdGUgTERBUCB3aXRoIHRoZSBuZXcgbWVtYmVyICBmaWxl
CiAgCiAgICBpZiAoJHNob3cgPiAwKQogICAgICB7ZGlzcEFycmF5KCJOZXcgbWVtYmVyIGxp
c3QgZm9yIGdyb3VwICckZ3JvdXBfbmFtZSciLCBAbWVtYmVyX2xpc3QpO30KICAgIGVsc2UK
ICAgICAgewogICAgICBQcmludE1lc3NhZ2UoIiAgIiAuIHNjYWxhcihAbWVtYmVyX2xpc3Qp
IC4gIiBtZW1iZXJzICIgLgogICAgICAgICJmb3IgbmV3IG1lbWJlciBsaXN0Iik7IAogICAg
ICB9CiAgICBQcmludE1lc3NhZ2UoIiAgQ29tcGFyaW5nIG9sZCBhbmQgbmV3IG1lbWJlciBs
aXN0cyIpOwogIAogICAgJGRlbHRhID0gMDsKICAgIGlmICgkI21lbWJlcl9saXN0IDwgMCkg
CiAgICAgIHsKICAgICAgaWYgKCQjc2F2ZV9tZW1iZXJzIDwgMCkKICAgICAgICB7IAogICAg
ICAgICRkZWx0YSA9IDA7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgeyAKICAgICAg
ICBQcmludE1lc3NhZ2UoIiAgVXBkYXRlIG5lZWRlZCAoMSkiKTsgCiAgICAgICAgJGRlbHRh
ID0gMTsKICAgICAgICB9CiAgICAgIH0KICAgIGVsc2lmICgkI21lbWJlcl9saXN0ID09ICQj
c2F2ZV9tZW1iZXJzKQogICAgICB7CiAgICAgIGZvciAoJGk9MDsgJGk8PSQjbWVtYmVyX2xp
c3Q7ICRpKyspCiAgICAgICAgewogICAgICAgIGlmICgkbWVtYmVyX2xpc3RbJGldIG5lICRz
YXZlX21lbWJlcnNbJGldKQogICAgICAgICAgewogICAgICAgICAgUHJpbnRNZXNzYWdlKCIg
IERpZmZlcmVuY2UgZm91bmQgYXQgJGk6Iik7CiAgICAgICAgICBQcmludE1lc3NhZ2UoIiAg
ICBPbGQ9JHNhdmVfbWVtYmVyc1skaV0iKTsKICAgICAgICAgIFByaW50TWVzc2FnZSgiICAg
IE5ldz0kbWVtYmVyX2xpc3RbJGldIik7CiAgICAgICAgICAkZGVsdGE9MTsKICAgICAgICAg
IFByaW50TWVzc2FnZSgiICBVcGRhdGUgbmVlZGVkICgzKSIpOwogICAgICAgICAgbGFzdDsK
ICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICBQ
cmludE1lc3NhZ2UoIiAgVXBkYXRlIG5lZWRlZCAoMikiKTsKICAgICAgJGRlbHRhID0gMTsK
ICAgICAgfQogIAogICAgaWYgKCRkZWx0YSA9PSAwKQogICAgICB7IFByaW50TWVzc2FnZSgi
ICBPbGQgYW5kIG5ldyBsaXN0cyBhcmUgdGhlIHNhbWUsIHNraXBwaW5nIHVwZGF0ZSIpOyB9
CiAgICBlbHNlCiAgICAgIHsKICAgICAgaWYgKCAkYW5hbHl6ZSA9PSAxKQogICAgICAgIHsg
CiAgICAgICAgcHJpbnQgIiAgTGlzdHMgZGlmZmVyIGJ1dCB3aWxsIG5vdCBiZSBjaGFuZ2Vk
IHNpbmNlIHdlIGFyZSAiIC4KICAgICAgICAgICJpbiBhbmFseXplIG1vZGVcbiI7IAogICAg
ICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAgICAgICMgIHVwZGF0ZSBMREFQCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICAgCiAgICAgICAgcHVzaCBAcmVmYXR0cnMsICdjbic7CiAgICAgICAgcHVz
aCBAcmVmYXR0cnMsICd1bmlxdWVtZW1iZXInOwogICAgICAKICAgICAgICAkZmllbGRuYW1l
PSd1bmlxdWVtZW1iZXInOwogICAgICAgIHB1c2ggQHskY2hnYXR0cnN7JGZpZWxkbmFtZX19
LEBtZW1iZXJfbGlzdDsKICAgICAgICBEZWJ1Z01zZygzLCAiZ3JvdXA9JGdyb3VwX25hbWUs
IGF0dHI9JGZpZWxkbmFtZSwgdmFsdWVzPSIgLiBAbWVtYmVyX2xpc3QpOwogICAgICAKICAg
ICAgICBEZWJ1Z01zZygzLCAicmVmYXR0cnM9QHJlZmF0dHJzIik7CiAgICAgICAgZm9yZWFj
aCAkYXR0ciAoa2V5cyAlY2hnYXR0cnMpCiAgICAgICAgICB7IERlYnVnTXNnKDMsICJjaGdh
dHRyc3skYXR0cn09JGNoZ2F0dHJzeyRhdHRyfSIpOyB9CiAgICAgICAgRGVidWdNc2coMywg
IlNldHRpbmcgZ3JvdXAgJyRncm91cF9uYW1lJyB3aXRoIGF0dHJpYnV0ZSAiIC4KICAgICAg
ICAgICInJGZpZWxkbmFtZScgdG8gdmFsdWVzIiAuIEBtZW1iZXJfbGlzdCk7CiAgICAgIAog
ICAgICAgICRmaWx0ZXI9JGdyb3VwX25hbWU7CiAgICAgICAgRGVidWdNc2cgKDMsICJVcGRh
dGluZyBMREFQIGZvciA8JGdyb3VwX25hbWU+Iik7CiAgICAgICAgCiAgICAgICAgJGVycnRl
eHQ9IlVwZGF0aW5nIE1lbWJlciBMaXN0IjsKICAgICAgICBwcmludCAiZ3JvdXBiYXNlZG49
JGdyb3VwYmFzZWRuLCBmaWx0ZXI9JGZpbHRlclxuIiBpZiAoJHNob3cgPjApOwogICAgICAg
ICRydG49IiI7IAogICAgICAgICRydG4gPSAmZG9MREFQTW9kcygkZ3JvdXBiYXNlZG4sICRm
aWx0ZXIsIFxAcmVmYXR0cnMsIFwlY2hnYXR0cnMpOwogICAgICAgIAogICAgICAgIGlmICgg
JHJ0biBuZSAiIikgCiAgICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgZWxzZQog
ICAgICAgICAgeyBEZWJ1Z01zZygxLCAiR3JvdXAgJGdyb3VwX25hbWUgdXBkYXRlZC4iKTsg
fQogICAgICAKICAgICAgICB9CiAgICAgIH0gCiAgICBpZiAoICRhbmFseXplICE9IDEpCiAg
ICAgIHsKICAgICAgI2Fsd2F5cyB1cGRhdGUgdGhlIGFkbWludGV4dCB2YWx1ZXMgKHVubGVz
cyBleHBpcmVkKQogICAgICAjCiAgICAgICMgIHVwZGF0ZSBMREFQIHdpdGggdGhlIG5ldyB3
YXJuaW5nIGxpc3QgCiAgICAgICMKICAgICAgJG5iX3dhcm4gPSAkI3dhcm5pbmdfbGlzdDsK
ICAgICAgJG5iX3dhcm4rKzsKICAgICAgJGNvdW50ID0gMDsKICAgICAgaWYgKCR3YXJuaW5n
X2xpc3RbMF0gZXEgIiIpIAogICAgICAgIHsgcHVzaCBAd2FybmluZ19saXN0LCAiTm8gV2Fy
bmluZyI7IH0KICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICBAd2FybmluZ19saXN0PSBz
b3J0IEB3YXJuaW5nX2xpc3Q7CiAgICAgICAgZm9yICgkaT0wOyAkaTw9JCN3YXJuaW5nX2xp
c3Q7ICRpKyspCiAgICAgICAgICB7CiAgICAgICAgICAmRGVidWdNc2coMywgIndhcm5pbmc6
ICIgLiAkd2FybmluZ19saXN0WyRpXSk7CiAgICAgICAgICAkY291bnQrKzsKICAgICAgICAg
IH0KICAgICAgICB1bnNoaWZ0IEB3YXJuaW5nX2xpc3QsICJ0aGUgXCJHcmFudCB0b1wiL1wi
QUREIHVpZFwiICIgLgogICAgICAgICAgImZpZWxkIGNvbnRhaW5zICRuYl93YXJuIHVpZChz
KSB3aGljaCBkbyhlcykndCBleGlzdCI7CiAgICAgICAgfQogICAgICAmRGVidWdNc2coMywg
IiAqKiogd2FybmluZ19saXN0ICgkI3dhcm5pbmdfbGlzdCkgKioqIik7CiAgICAgIGZvciAo
JGk9MDsgJGk8PSQjd2FybmluZ19saXN0OyAkaSsrKQogICAgICAgIHsgJkRlYnVnTXNnKDMs
ICJ3YXJuaW5nX2xpc3RbJGldPSckd2FybmluZ19saXN0WyRpXSciKTsgfQogICAgICAjCiAg
ICAgICMgIHVwZGF0ZSBMREFQCiAgICAgICMgIAogICAgICAKICAgICAgJHJ0biA9ICZzZXRB
ZG1pblRleHQyKCRsZGFwLCAkZ3JvdXBfbmFtZSwgCiAgICAgICAgJGdyb3VwYmFzZWRuLCAi
d2FybmluZzoiLCBAd2FybmluZ19saXN0KTsKICAgICAKICAgICAgaWYgKCAkcnRuIG5lICIi
KSAKICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAgIGVsc2UgCiAgICAgICAgeyBEZWJ1
Z01zZygxLCAiR3JvdXAgJGdyb3VwX25hbWUgdXBkYXRlZC4iKTsgfQogICAgICAKICAgICAg
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIGVuZAogICAgICAgIAogICAgICAkY291bnQgPSBzY2Fs
YXIoQG1lbWJlcl9saXN0KTsKICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRn
cm91cF9uYW1lLCAKICAgICAgICAkZ3JvdXBiYXNlZG4sICJpbmZvcm1hdGlvbjoiLCAKICAg
ICAgICAiVGhpcyBncm91cCBjb250YWlucyAkY291bnQgbWVtYmVyKHMpIik7CiAgICAgIGlm
ICggJHJ0biBuZSAiIikgCiAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgCiAgICAgICR0
aW1lU3RhbXA9Z210aW1lKHRpbWUpOwogICAgICBjaG9tcCAkdGltZVN0YW1wOwogICAgICAk
dGltZVN0YW1wPX5zLy4qIC8vOwogICAgICAkZGF0ZT1zbGJUaW1lMygkdGltZVN0YW1wKTsK
ICAgIAogICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsICRn
cm91cGJhc2VkbiwgImV4cGFuZGVkOiIsICRkYXRlKTsKICAgIAogICAgICBpZiAoICRydG4g
bmUgIiIpIAogICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgIAogICAgICBpZiAoICRlcnJm
bGFnID09IDApCiAgICAgICAgeyAKICAgICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRh
cCwgJGdyb3VwX25hbWUsICRncm91cGJhc2VkbiwgInN0YXR1czoiLCAiT0siKTsgCiAgICAg
CiAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgIHsgJndhcm4oJHJ0bik7IH0K
ICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7IAogICAgICAgICRydG4gPSAmc2V0QWRt
aW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3VwYmFzZWRuLCAic3RhdHVzOiIsICJF
UlJPUiAiIC4KICAgICAgICAgICRlcnJ0ZXh0TXNnKTsKICAgICAKICAgICAgICBpZiAoICRy
dG4gbmUgIiIpIAogICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgCiAgICAgICAgaWYg
KCAkcnRuIG5lICIiKSAKICAgICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgICAgICB9CiAg
ICAgIERlYnVnTXNnICgzLCAiTERBUCB1cGRhdGUgZG9uZSIpOwogICAgICBpZiAoJGRlbHRh
ID09IDEpCiAgICAgICAgeyBEZWJ1Z01zZyAoMiwiJGdyb3VwX25hbWUgaGFzIGZpbmFsbHkg
JGNvdW50IG1lbWJlcnMgc2F2ZWQgaW4gTERBUCIpOyB9CiAgICAgIH0KICAgIH0KICAkcmVj
dXJfbGV2ZWwtLTsKICByZXR1cm47CiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBpc19hX2dyb3VwCiMg
ICBBcmc6IG5hbWUgb2YgdGhlIGdyb3VwCiMgICBSZXR1cm5zOiAxIGlmIGEgZ3JvdXAsIDAg
aWYgbm90CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0Kc3ViIGlzX2FfZ3JvdXAoKQogIHsgCgogIG15KCRuYW1lKSA9
IEBfOyAgCiAgbXkgJHJlcz0iIjsKCiAgRGVidWdNc2coNSwgJyMjIyMjIGlzX2FfZ3JvdXAn
KTsgCiAgRGVidWdNc2coNCwiaXNfYV9ncm91cCB0ZXN0aW5nOiAkbmFtZSIpOwogICgkcnRu
LCAkcmVzKSA9ICZnZXRBZG1pblRleHQoJGxkYXAsICJjbj0kbmFtZSIsICRncm91cGJhc2Vk
biwgImRpcnR5OiIpOwogIGlmICggJHJ0biBuZSAiIikgCiAgICB7IAogICAgJndhcm4oJHJ0
bik7IAogICAgfQogIGlmICgkcmVzIGVxICIiKQogICAgewogICAgRGVidWdNc2coNCwiJG5h
bWUgaXMgYSBub3QgZ3JvdXAhISIpOwogICAgcmV0dXJuIDA7CiAgICB9IAogIGVsc2UgCiAg
ICB7CiAgICBEZWJ1Z01zZyg0LCIkbmFtZSBpcyBhIGdyb3VwIGFuZCB0aGUgJyRhdHRyJyBp
cyAkcmVzISEiKTsKICAgIHJldHVybiAxOwogICAgfQogIH0KCiMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNldEZpZWxkKGdyb3VwX3RvX3VwZGF0ZSAo
Y24pLCBmaWVsZG5hbWUsICB2YWx1ZSkpCiMKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCnN1YiBTZXRGaWVsZCgpCiAgewogIG15ICgkZ3JvdXBfbmFtZSwg
JGZpZWxkbmFtZSwgJHZhbHVlKSA9IEBfOwogIG15ICRjbWQ7CgogIG15ICRydG47CgogIERl
YnVnTXNnKDUsICcjIyMjIyBTZXRGaWVsZCcpOyAKICBEZWJ1Z01zZygzLCAiU2V0dGluZyBn
cm91cCAnJGdyb3VwX25hbWUnIHdpdGggYXR0cmlidXRlICIgLgogICAgIickZmllbGRuYW1l
JyB0byAnJHZhbHVlJyIpOwoKICAkZmlsdGVyPSRncm91cF9uYW1lOwogIAogIHByaW50ICJn
cm91cGJhc2Vkbj0kZ3JvdXBiYXNlZG4sIGZpbHRlcj0kZmlsdGVyXG4iIGlmICgkc2hvdyA+
MCk7CiAgJnB1dEF0dHJPbmUoJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCAkZmllbGRuYW1lLCAk
dmFsdWUpOwogIAogIERlYnVnTXNnKDEsICJHcm91cCAkZ3JvdXBfbmFtZSB1cGRhdGVkLiIp
OyAKICB9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj
IGdldF9vcHRpb24KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KCnN1YiBnZXRfb3B0aW9uIAogIHsKICBteSAkcmVzdWx0OwogICNwcmludCAiYXJn
IGNvdW50PSQjQVJHVlxuIjsKICAmdXNhZ2UoIm1pc3NpbmcgYXJndW1lbnQgZm9yICRfWzBd
IikgaWYgKCQjQVJHVj09LTEpIDsKICAkcmVzdWx0ID0gJEFSR1ZbMF07CiAgc2hpZnQgQEFS
R1Y7ICAgCiAgcmV0dXJuICRyZXN1bHQ7CiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgdXNhZ2U6IHByaW50IG91dCB1c2FnZSBpbnN0cnVj
dGlvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpz
dWIgdXNhZ2UgCiAgewogIG15ICRtZXNzID0gQF87CgogIHByaW50ICJncnB0ZXI6ICRtZXNz
XG5cbiI7CgogIHByaW50IDw8Il9FT0ZfIjsKdXNhZ2U6ICBncnB0ZXIgWy1vcHRpb25zIC4u
Ll0gCgp3aGVyZSBvcHRpb25zIGluY2x1ZGU6CiAgICAtZGVidWcgICAgZGVidWdsZXZlbCAg
ICAgIDEgdG8gNSAoMT1zbWFsbCBhbW91bnQsIDU9b3UgbGEgbGEhICAgICAgIAogICAgLXd3
dyAgICAgIGh0bWwgb3V0cHV0ICAgICBzZXQgdGhlIG91dHBvdXQgdGV4dCBmb3JtYXQgdG8g
aHRtbCBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBpcyAi
XG4iIAogICAgLWdyb3VwICAgIGdyb3VwX25hbWUgKGNuKSBlbnRlciBvbmUgZ3JvdXAgbmFt
ZSAoY24pLCBwcm9jZXNzIGFsbCBncm91cHMgYnkgZGVmYXVsdAogICAgLWxvZyAgICAgICAg
ICAgICAgICAgICAgICBPdXRwdXQgZ29lcyB0byB0aGUgbG9nIGZpbGUgKGdvb2QgZm9yIGNy
b24pICAgICAgICAgICAgICAKICAgIC1saXN0Z3JvdXAgICAgICAgICAgICAgICAgbGlzdCBh
bGwgZ3JvdXBzIGluIHRoZSBkaXJlY3RvcnkuCiAgICAta2VlcHRlbXAgICAgICAgICAgICAg
ICAgIGRvIG5vdCBlcmFzZSB0ZW1wb3JhcnkgZmlsZXMKICAgIC11cGRhdGUgICAgICAgICAg
ICAgICAgICAgZXhwYW5kIG9ubHkgZ3JvdXBzIHdpdGggc3RhdHVzICd0byBiZSBwcm9jZXNz
ZWQnCiAgICAteiAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBncnB0ZXIucGwgZXZlbiBp
ZiB0aGUgbG9jayBmaWxlIGV4aXN0cwoKQWxsIG9wdGlvbnMgY2FuIGJlIGFiYnJldmlhdGVk
IHVwIHRvIG9uZSBsZXR0ZXIuCgpFeGFtcGxlczoKVXBkYXRlIHRoZSBncm91cCAnQXVzdGlu
IGVtcGxveWVlcycgd2l0aCBzbWFsbCBhbW91bnQgb2Ygb3V0cHV0Ci4vZ3JwdGVyLnBsIC1n
cm91cCAnQXVzdGluIGVtcGxveWVlcycgLWRlYnVnIDIKClNhbWUgYnV0IHdpdGggaHRtbCBv
dXRwdXQgCi4vZ3JwdGVyLnBsIC1ncm91cCAnQXVzdGluIGVtcGxveWVlcycgLWRlYnVnIDMg
LXd3dwoKRG8gYWxsIGdyb3VwcyB3aXRoIGEgbG90IG9mIG91dHB1dCBpbmZvcm1hdGlvbgou
L2dyb3VwZXIucGwgLWRlYnVnIDQKCgpfRU9GXwoKICAmUmVtb3ZlTG9ja0ZpbGU7CiAgaWYg
KCRodG1sID09IDEpCiAgICB7IHByaW50ICI8L0JPRFk+PC9IVE1MPlxuIjsgfQogIGV4aXQg
NzsKICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIyBTZXRGb250Y29sb3IKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgU2V0Rm9udENvbG9yCiAgewogIG15ICgkY29sb3Ip
ID0gQF87CiAgaWYgICAgKCRjb2xvciBlcSAicmVkIikKICAgIHskZm9udGNvbG9yPSIjRkQw
MjA1Ijt9CiAgZWxzaWYgKCRjb2xvciBlcSAiYmx1ZSIpCiAgICB7ICRmb250Y29sb3I9IiMz
MzMzRkYiO30KICBlbHNpZiAoJGNvbG9yIGVxICJibGFjayIpCiAgICB7JGZvbnRjb2xvcj0i
IzMzMDAzMyI7fTsKICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIyBjYXRjaF9zaWduYWxzOgojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBjYXRjaF9zaWduYWxzIAogIHsK
ICAkU0lHeydJTlQnfSA9ICdTSUdOQUxfQ0xFQU5VUCc7CiAgJFNJR3snSFVQJ30gPSAnU0lH
TkFMX0NMRUFOVVAnOwogICRTSUd7J1FVSVQnfSA9ICdTSUdOQUxfQ0xFQU5VUCc7CiMgICRT
SUd7J1BJUEUnfSA9ICdTSUdOQUxfQ0xFQU5VUCc7CiAgJFNJR3snQUxSTSd9ID0gJ1NJR05B
TF9DTEVBTlVQJzsKICAkU0lHeydfX0RJRV9fJ30gPSAnU0lHTkFMX0NMRUFOVVAnOyAgICMj
I19fV0FSTl9fIGlzIGFsc28gYXZhaWxhYmxlCiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgYWJvcnQ6IGRpc3BsYXkgbWVzc2Fn
ZSBhbmQgcXVpdAojIEFyZ3M6ICBtZXNzYWdlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIGFib3J0CiAgewogIG15ICRtc2c9JF9b
MF07CgogIHByaW50ICRtc2cgLiAiXG4iOwoKICAmU0lHTkFMX0NMRUFOVVA7CiAgfQoKIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgd2Fy
bjogZGlzcGxheSBtZXNzYWdlIGJ1dCBjb250aW51ZSAKIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgd2FybgogIHsKICBteSAkbXNn
PSRfWzBdOwoKICBwcmludCAiV0FSTklORzogIiAuICRtc2cgLiAiICgkZXJydGV4dClcbiI7
CiAgJGVycnRleHRNc2cgPSAkZXJydGV4dDsKICAmc2VuZEVtYWlsKCBAXyApOwogICRlcnJm
bGFnID0gMTsKICB9CgoMCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiMgc2VuZEVtYWlsOgojICBnaXZlcyBtZXNzYWdlIHRvIGFuIGFkbWlu
CiMgYXJnOgojICBtZXNzYWdlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KCnN1YiBzZW5kRW1haWwgewogIG15ICR1c2VyTmFtZSA9ICIiOwog
IG15ICR1c2VyTWFpbCA9ICIiOwogIG15ICRpOwogIG15ICRzY3JpcHQ7CgogIG15ICRtc2cg
PSBqb2luKHFxeyAgXG59LEBfKTsKCiAgJHRpbWVTdGFtcD1nbXRpbWUodGltZSk7CiAgY2hv
bXAgJHRpbWVTdGFtcDsKICAkdGltZVN0YW1wPX5zLy4qIC8vOwogICRkYXRlPXNsYlRpbWUz
KCR0aW1lU3RhbXApOwoKICBpZiAoJF9bMF0gPX4gL1VuYWJsZSB0byBnZXQgTERBUCBDb25u
ZWN0aW9ufENhbid0IGNvbnRhY3QgTERBUCBzZXJ2ZXIvKSB7CiAgICBsb2dNc2cyKCJJTkY6
IE5vIGVtYWlsIHNlbnQgYXMgTERBUCBzZXJ2ZXIgY29ubmVjdGlvbiBmYWlsZWQiLiRtc2cp
OyAgCiAgfSBlbHNlIHsKICAgIGlmICgkY3VyQWRtaW4gbmUgIiIpIHsKICAgICAgJHVzZXJO
YW1lID0gJGN1ckFkbWluOyAKICAgIH0gIGVsc2lmICgkY3VyTGRhcEFkbWluIG5lICIiKSB7
CiAgICAgICR1c2VyTmFtZSA9ICRjdXJMZGFwQWRtaW5NYWlsOyAKICAgIH0gZWxzZSB7CiAg
ICAgICR1c2VyTmFtZSA9ICZkZWZMZGFwQWRtaW47IAogICAgfQoKICAgIGlmICgkdXNlck5h
bWUgbmUgJmRlZkxkYXBBZG1pbikgewogICAgICAjIG5vdyBnZXQgbWFpbCBmb3IgdXNlck5h
bWUKICAgICAgJHVzZXJNYWlsPWdldE1haWwoJHVzZXJOYW1lKTsKICAgICAgaWYgKCRkZWJ1
ZyA+IDApIHsKCXByaW50ICJnZXRNYWlsKCckdXNlck5hbWUnKSByZXR1cm5lZCAnJHVzZXJN
YWlsJ1xuIjsgCiAgICAgIH0KICAgIH0gICAgICAKCiAgICBpZiAoJHVzZXJNYWlsIGVxICcn
KSB7CiAgICAgICR1c2VyTWFpbCA9ICZkZWZMZGFwQWRtaW47IAogICAgfQogICAgCiAgICBs
b2dNc2cyKCJJTkY6IFN0YXJ0aW5nIHRvIG1haWwgJHVzZXJNYWlsXG4kbXNnXG4iKTsKICAg
IHVubGVzcyAob3BlbihNQUlMLCAifCAvdXNyL2xpYi9zZW5kbWFpbCAtb2kgLXQiKSkgewog
ICAgICBkaWUgcXF7ICBGYWlsZWQgdG8gdGFsayB0byBzZW5kbWFpbCAtLSAkIVxufTsKICAg
IH0KICAgIAogICAgcHJpbnQgTUFJTCA8PCJNQUlMMSIsKCRjdXJHcm91cCA/IDw8Ik1BSUwy
IiA6IDw8Ik1BSUwzIik7CkZyb206ICJEaXJlY3RvcnkgR3JvdXAgQ29kZSBNYW5hZ2VyIiA8
bGRhcC1hZG1pblxAc2xiLmNvbT4KWC1UbzogJHVzZXJNYWlsClRvOiBncmF5XEBjYW1icmlk
Z2Uub2lsZmllbGQuc2xiLmNvbQpTdWJqZWN0OiBEZWJ1c3N5IC0tIERpcmVjdG9yeSBncm91
cCBleHBhbnNpb24gZXJyb3IKCk1BSUwxClRoZSBMREFQIERpcmVjdG9yeSBncm91cCBtYW5h
Z2VtZW50IHN5c3RlbSBoYXMgZmFpbGVkIHRvIGV4cGFuZCB0aGUgbGlzdApvZiBtZW1iZXJz
IGZvciB0aGUgZ3JvdXA6CiAkY3VyR3JvdXAKYW5kIHlvdSBhcmUgYmVpbmcgc2VudCB0aGlz
IG1lc3NhZ2UgYXMgeW91IGFyZQp0aGUgZ3JvdXAgbWFuYWdlci9zcG9uc29yL2FkbWluaXN0
cmF0b3IKClRoZSBlcnJvciBpcwogICRtc2cKd2hpbGUKICAkZXJydGV4dE1zZwoKWW91ciBn
cm91cCBtZW1iZXJzIHdpbGwgbm90IGhhdmUgYmVlbiB1cGRhdGVkLgoKWW91IHNob3VsZCBm
aXggdGhpcyBlcnJvciBieSB1cGRhdGluZyB0aGUgZ3JvdXAsCndoaWNoIGNhbiBiZSBkb25l
IGZyb20gdGhlIERpcmVjdG9yeSBncm91cCBwYWdlIGF0CiBodHRwOi8vZGlyZWN0b3J5LnNs
Yi5jb20vYWRtaW4vZ3JvdXBzL2dycGluZGV4LmNnaSAKCk1BSUwyClRoZSBjcm9uIHNjcmlw
dAogICQwCmhhcyBmYWlsZWQgdG8gZXhwYW5kIHRoZSBncm91cCBtZW1iZXJzIGF0CiAgJGRh
dGUKCkRldGFpbHMgb2YgdGhlIGVycm9yIGFyZToKICAkbXNnCih1c2luZyBMREFQIFNlcnZl
ciAkY29ubkhvc3Q6JGNvbm5Qb3J0KQoKTUFJTDMKCiAgICBjbG9zZSBNQUlMOwogICAgbG9n
TXNnMigiSU5GOiBDb21wbGV0ZWQgc2VuZGluZyBtYWlsIHRvICR1c2VyTWFpbFxuICAkbXNn
XG4iKTsgIAogIH0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiMgU0lHTkFMX0NMRUFOVVA6CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIFNJR05BTF9DTEVBTlVQIAogIHsK
IAogICMjIyMgcXVpdCBncmFjZWZ1bGx5CiAgbXkgJGVyck1zZzsKICBteSAkaTsKICAKICAk
ZXJyTXNnPSJVbmV4cGVjdGVkIGVycm9yOlxuIjsKICBpZiAoJF9bMF0gZXEgJ0FMUk0nKSB7
CiAgICAkZXJyTXNnLj0iIEV4Y2VlZGVkIG1heGltdW0gdGltZSBmb3IgdGhlIGpvYiAoJG1h
eFRpbWUgc2Vjb25kcykiOwogIH0KICAKICBmb3JlYWNoICRpICgwLi4kI18pIHsKICAgICRl
cnJNc2cuPSIgXCRfWyRpXT0kX1skaV1cbiI7CiAgfQogICRlcnJNc2cuPSAiIFwkIT0kIVxu
IFwkPz0kP1xuIjsKICAjIEdldCBkZXRhaWxzIG9uIHdoZXJlIGVycm9yIG9jY3VycmVkCiAg
bXkgJGluZGVudDsKICBDQUxMOgogIGZvcmVhY2ggJGkgKDEuLjUpIHsKICAgICRpbmRlbnQ9
JyAneCRpOwogICAgQF8gPSBjYWxsZXIgJGk7CiAgICB1bmxlc3MgKCRfWzBdKSB7CiAgICAg
IGxhc3QgQ0FMTDsKICAgIH0KICAgICRlcnJNc2cuPSIke2luZGVudH1wYWNrYWdlOiAkX1sw
XVxuJHtpbmRlbnR9ZmlsZW5hbWU6ICRfWzFdXG4ke2luZGVudH1saW5lOiAkX1syXVxuIjsK
ICB9CiAgcHJpbnQgJGVyck1zZzsKICAkY3VyQWRtaW49Jyc7CiAgJGN1ckdyb3VwPScnOwog
IHNlbmRFbWFpbCgkZXJyTXNnKTsKICBzeXN0ZW0oInJtIC1mICR0bXBkaXIvKi4kJC50bXAi
KTsgCiAgaWYgKC1lICRsb2NrZmlsZSkgCiAgICB7CiAgICB1bmxpbmsgIiRsb2NrZmlsZSI7
IAogICAgcHJpbnQgIkdyb3VwdGVyIHdhcyBpbnRlcnJ1cHRlZCwgbG9jayBmaWxlICgkbG9j
a2ZpbGUpICByZW1vdmVkIVxuIjsKICAgIH0gCiAgZWxzZSAKICAgIHsKICAgIHByaW50ICJH
cm91cHRlciB3YXMgaW50ZXJydXB0ZWQsIG5vIGxvY2sgZmlsZSAoJGxvY2tmaWxlKSIgLgog
ICAgICAiIHRvIHJlbW92ZSFcbiI7CiAgICB9CiAgbG9nTXNnMigiSU5GOiBFbmRpbmdcbiIp
OwogIGlmICgkaHRtbCA9PSAxKQogICAgeyBwcmludCAiPC9CT0RZPjwvSFRNTD5cbiI7IH0K
ICBleGl0IDI7CiAgfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDbGVhblN0cmluZzogcmVtb3ZlIGhl
YWRpbmcgc3BhY2VzIGFuZCB0YWJzLCAKIyAgICAgICAgICAgICAgcmVwbGFjZSBtdWx0aXBs
ZSBzcGFjZXMgYW5kIHRhYnMgYnkgb25lIGJldHdlZW4gd29yZHMgCiMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQoKc3ViIENsZWFuU3RyaW5nCiAgewogIERlYnVnTXNnKDUsICcjIyMjIyBDbGVhblN0cmlu
ZycpOyAKICBteSAoJHN0cikgPSBAXzsKICAjcHJpbnQgIjxicj4gY2xlYW5pbmcgc3RyOick
c3RyJzxicj4iOwogICRzdHIgPX4gcy9eXHMrLy87ICAjIHJlbW92ZSBsZWFkaW5nIHdoaXRl
IGNoYXJzCiAgIyMjIyAkc3RyID1+IHMvXlsgXHRdKy8vOwogICRzdHIgPX4gcy9ccyskLy87
ICAjIHJlbW92ZSB0cmFpbGluZyB3aGl0ZSBjaGFycwogICRzdHIgPX4gcy9bIFx0XSsvIC87
ICAgICMgcmVwbGFjZSBuIHdoaXRlIGNoYXJzIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICMgYnkgb25seSAxIGluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmluZwogICNwcmludCAiIGNs
ZWFuZWQgIHN0cjonJHN0cic8YnI+IjsKCiAgcmV0dXJuICRzdHI7CiAgfQoKIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUXVlcnkgU3ViOiBzZXRz
IHVwIExEQVAgcXVlcnkKIyAgIFJldHVybnMgcnRuLCAkbmVudHJpZXMsIFwlcmVjb3Jkcwoj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFF1ZXJ5
IAogIHsKCiAgbXkgQGF0dHJzOwogIG15ICRmaWx0ZXI7CiAgbXkgJXJlY29yZHM7CiAgbXkg
JXJlY29yZFg7CiAgbXkgJGVudHJ5OwogIG15ICRpdGVtTm87CiAgbXkgJGRuOwogIG15ICRp
dGVtOwogIG15ICRhdHRyOwogIG15ICRTY3JpcHROYW1lOwogIG15IEB2YWx1ZXM7CiAgbXkg
JGk7CiAgbXkgJG5lbnRyaWVzOwogIG15ICRyZWNvcmRYOwogIEBhdHRycyA9IAogICAgKAog
ICAgICJjbiIsCiAgICAgInByb3h5IiwKICAgICAibWFuYWdlciIKICAgICk7CiAgCiAgRGVi
dWdNc2coNSwgJyMjIyMjIFF1ZXJ5Jyk7IAogICRmaWx0ZXIgPSAiJGZpZWxkX3RvX3NlYXJj
aD0iOwoKICBpZiAoKCAkc2VhcmNoVmFsIGVxICIiICkgfHwgKCAkc2VhcmNoVmFsIGVxICcq
JyApKSAKICAgIHsgJGZpbHRlciAuPSAiKiI7IH0KICBlbHNpZiAoIGluZGV4KCRzZWFyY2hW
YWwsJz0nKSA+PSAwICkKICAgIHsgJGZpbHRlciA9ICRzZWFyY2hWYWwgfQogIGVsc2UKICAg
IHsKICAgIGlmICggc3Vic3RyKCRzZWFyY2hWYWwsMCwxKSBuZSAnKicgKQogICAgICB7ICRm
aWx0ZXIgLj0gJyonOyB9CiAgICAkZmlsdGVyIC49ICRzZWFyY2hWYWw7CgogICAgaWYgKCBz
dWJzdHIoJHNlYXJjaFZhbCxsZW5ndGgoJHNlYXJjaFZhbCktMSwxKSBuZSAnKicpIAogICAg
ICB7ICRmaWx0ZXIgLj0gJyonOyB9IAogICAgfQoKICAjIFNlYXJjaCB2aWEgY2FsbCB0byBk
b0xEQVBTZWFyY2goKQogICMgcGFzcyB0byBpdCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsIFxA
YXR0cnMKICAjIGdldCBiYWNrICRuZW50cmllcywkcmVjb3Jke30tPnt9CgogICNwcmludCAi
Z3JvdXBiYXNlZG49JGdyb3VwYmFzZWRuLCBmaWx0ZXI9JGZpbHRlclxuIjsKICAoJHJ0biwg
JG5lbnRyaWVzLCAkcmVjb3JkWCkgPSAKICAgICZkb0xEQVBTZWFyY2goJGxkYXAsICRncm91
cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycyk7CgogIGlmICggJHJ0biBuZSAiIikgCiAgICB7
IHJldHVybiAoJHJ0biwgJG5lbnRyaWVzLCAiIiApOyB9CgogICVyZWNvcmRzPSAlJHJlY29y
ZFg7CgogIGlmICgkbmVudHJpZXMgPT0gMCkgCiAgICB7IHJldHVybiAoJHJ0biwgJG5lbnRy
aWVzLCAiIik7IH0gCgogIG15ICRjb3VudCA9IDE7CiAgcmV0dXJuICgkcnRuLCAkbmVudHJp
ZXMsIFwlcmVjb3Jkcyk7CiAgfSMjIyBlbmQgc3ViIFF1ZXJ5CgojLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludE1lc3NhZ2U6
CiMgICBEaXNwbGF5IG1lc3NhZ2UgdG8gc2NyZWVuIGFuZC9vciBsb2cgZmlsZQojLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBQ
cmludE1lc3NhZ2UgCiAgewogIGlmICgkbG9nID4gMCApIAogICAgeyAKICAgIGlmIChpbmRl
eCgkX1swXSwgIlxuIikgPCAwKQogICAgICB7IGxvZ01zZzIoIkRFQjogIiAuICRfWzBdIC4g
IlxuIik7IH0KICAgIGVsc2UKICAgICAgeyBsb2dNc2cyKCJERUI6ICIgLiAkX1swXSk7IH0K
ICAgIH0KICBpZiAoICgkbG9nICUgMikgID09IDApCiAgICB7IHByaW50ICRfWzBdIC4gIlxu
IjsgfQogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJl
bW92ZUxvY2tGaWxlOgojICBFbGltaW5hdGUgdGhlIGxvY2sgZmlsZQojLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBSZW1vdmVMb2NrRmlsZSAKICB7CiAg
aWYgKC1lICRsb2NrZmlsZSkgCiAgICB7IHVubGluayAiJGxvY2tmaWxlIjsgfQogIH0KIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBkaXNwQXJyYXk6CiMgIERp
c3BsYXkgYXJyYXkgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3Vi
IGRpc3BBcnJheQogIHsKICBteSAoJGFyck5hbWUsIEBhcnJWYWxzKT0gQF87CgogIG15ICRi
dWZmID0gIiRhcnJOYW1lICI7CiAgbXkgJGNvdW50PSAkI2FyclZhbHMgKyAxOwogIG15ICRp
OwoKICBpZiAoJCNhcnJWYWxzIDwgMCkKICAgIHsgJGJ1ZmYgLj0gIjpcbiI7fQogIGVsc2UK
ICAgIHsgJGJ1ZmYgLj0gIlsiIC4gJGNvdW50IC4gIiBtZW1iZXJzXSA6XG4iOyB9CgogIGZv
ciAoJGk9MDsgJGk8PSQjYXJyVmFsczsgJGkrKykKICAgIHsgJGJ1ZmYgLj0gIiAgJGk6ICIg
LiAkYXJyVmFsc1skaV0gLiAiXG4iOyB9CgogIGlmICgkI2FyclZhbHMgPCAwKQogICAgeyAk
YnVmZiAuPSAiICA8bm9uZT5cbiI7IH0KCiAgUHJpbnRNZXNzYWdlKCRidWZmKTsKICB9CiMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGdl
dEdyb3VwTWVtYmVyczoKIyAgIGdldHMgbWVtYmVycyBmb3IgZ3JvdXAgc3BlY2lmaWVkCiMg
YXJndW1lbnQ6IAojICAgIGdyb3VwICh3aXRoICdncm91cCAnIHByZWZpeCkKIyAgICBsZXZl
bCAoc3RhcnRzIHdpdGggMCkKIyByZXR1cm5zOgojICAgIHJ0bgojIHVzZXMgZ2xvYmFsIEBt
ZW1iZXJMaXN0IHRvIHN0b3JlIG1lbWJlcnMKIyB3aGljaCBoYXZlIG9ubHkgYmFzZSBwYXJ0
IG9mIGNuIChyZXN0IGFkZGVkIGxhdGVyKQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgZ2V0R3JvdXBNZW1iZXJzCiAgewogIG15ICgk
Z3JvdXBfbmFtZSwgJGxldmVsKSA9IEBfOwogIG15ICRydG47CiAgbXkgQG1lbWJlcl9saXN0
OwogIG15IEBncm91cF9saXN0OwogIG15IEB0ZW1wX2xpc3Q7CiAgbXkgJGF0dHJYOwogIG15
ICRpOwogIG15ICRwOwoKICBpZiAoJGxldmVsID09IDApCiAgICB7IEBtZW1iZXJMaXN0ID0g
KCk7IH0KICBlbHNpZiAoJGxldmVsID49IDEwKQogICAgeyByZXR1cm4gKCJHcm91cCBuZXN0
aW5nIGxldmVsPSRsZXZlbCBleGNlZWRzIG1heGltdW0iLCBAbWVtYmVyTGlzdCk7IH0KCiAg
JGZpbHRlcj0gImNuPSRncm91cF9uYW1lIjsKICAkYXR0cj0ndW5pcXVlbWVtYmVyJzsKICAo
JHJ0biwgJGF0dHJYKSA9IGdldEF0dHIoJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwg
JGF0dHIpOwogIGlmICgkcnRuIG5lICcnKQogICAgeyByZXR1cm4gJHJ0bjsgfQogIGVsc2UK
ICAgIHsKICAgIEB0ZW1wX2xpc3Q9QCRhdHRyWDsKICAgIGZvciAoJGk9MDsgJGk8PSQjdGVt
cF9saXN0OyAkaSsrKQogICAgICB7CiAgICAgIGlmIChpbmRleChsYygkdGVtcF9saXN0WyRp
XSksICdncm91cCAnKSA8IDApCiAgICAgICAgeyAKICAgICAgICAkcCA9ICR0ZW1wX2xpc3Rb
JGldOyAKICAgICAgICBpZiAoaW5kZXgoJHAsJ2NuPScpID49IDApCiAgICAgICAgICB7CiAg
ICAgICAgICAmRGVidWdNc2coOTksICJkbj0nJHAnIik7CiAgICAgICAgICAkcCA9fiBzL15j
bj0vLzsKICAgICAgICAgICZEZWJ1Z01zZyg5OSwgIm5vdyAnJHAnIik7CiAgICAgICAgICAk
cCA9fiBzLywuKiQvLzsKICAgICAgICAgICZEZWJ1Z01zZyg5OSwgIm5vdyAnJHAnIik7CiAg
ICAgICAgICB9CiAgICAgICAgcHVzaCBAbWVtYmVyTGlzdCwgJHA7IH0KICAgICAgZWxzZQog
ICAgICAgIHsgcHVzaCBAZ3JvdXBfbGlzdCwgJHRlbXBfbGlzdFskaV07IH0KICAgICAgfQoK
ICAgIGlmICgkI2dyb3VwX2xpc3QgPj0gMCkKICAgICAgewogICAgICAkbGV2ZWwrKzsKICAg
ICAgZm9yICgkaT0wOyRpPD0kI3RlbXBfbGlzdDsgJGkrKykKICAgICAgICB7CiAgICAgICAg
JHA9JHRlbXBfbGlzdFskaV07CiAgICAgICAgJHAgPX4gcy8gKltHZ11bUnJdW09vXVtVdV1b
UHBdIC8vOwogICAgICAgICRydG4gPSBnZXRHcm91cE1lbWJlcnMoJHAsICRsZXZlbCk7CiAg
ICAgICAgaWYgKCRydG4gbmUgJycpCiAgICAgICAgICB7IHJldHVybiAkcnRuOyB9CiAgICAg
ICAgfQogICAgICAkbGV2ZWwtLTsKICAgICAgfQogICAgcmV0dXJuICRydG47CiAgICB9CiAg
fQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQojIHJlbmFtZUdyb3VwUmVmcwojCiMgYXJnczoKIyAgbGRhcCwgb2xkTmFtZSwgbmV3TmFt
ZSwgYXR0cgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpzdWIgcmVuYW1lR3JvdXBSZWZzCiAgewogIG15ICgkbGRhcCwgJG9sZE5hbWUs
ICRuZXdOYW1lLCAkYXR0cikgPSBAXzsKICBteSAkYXR0clg7CiAgbXkgJGZpbHRlcjsKICBt
eSAkZG47CiAgbXkgJG5lbnRyaWVzOwogIG15IEBhdHRycyA9ICgnY24nLCAnc3Vic2NyaXB0
aW9uc2dyYW50bycsICdzdWJzY2lwdGlvbnNkZW55dG8nKTsKICBteSAkcmVjb3JkWDsKICBt
eSAlcmVjb3JkczsKICBteSBAdmFsdWVzOwogIG15IEBncm91cExpc3Q7CiAgbXkgQGFkbWlu
TGlzdDsKICBteSAkaTsKICBteSAka2V5OwogIG15ICVjaGdhdHRyczsKICBteSAkcnRuOwog
ICNteSAkbmVudHJpZXM7CgogICMgbmVlZCB0byBjaGVjayBzdWJzY3JpcHRpb25zZGVueXRv
LCBzdWJzY3JpcHRpb25zZ3JhbnR0byBmaWVsZHMKICAjIGZvciBhbGwgZ3JvdXBzIGFuZCBm
aXggaWYgZm91bmQKICAkZmlsdGVyPSIkYXR0cj1ncm91cCAkb2xkTmFtZSI7CiAgRGVidWdN
c2coNCwiUmVuYW1lOiBzZWFyY2g6IGJhc2U9JGdyb3VwYmFzZWRuLCBmaWx0ZXI9JGZpbHRl
ciwgIiAuCiAgICAiYXR0cnM9QGF0dHJzIik7CiAgKCRydG4sICRuZW50cmllcywgJHJlY29y
ZFgpID0gCiAgICAgJmRvTERBUFNlYXJjaCgkbGRhcCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVy
LCBcQGF0dHJzKTsKCiAgaWYgKCAkcnRuIG5lICIiKQogICAgeyAmd2FybigkcnRuKTsgfQog
IERlYnVnTXNnKDQsICJuZW50cmllcz0kbmVudHJpZXMiKTsKICAlcmVjb3Jkcz0lJHJlY29y
ZFg7CgogIEBncm91cExpc3QgPSAoKTsKICBEZWJ1Z01zZyg0LCAiU2VhcmNoaW5nIGZvciAn
Z3JvdXAgJG9sZE5hbWUnIik7CiAgZm9yZWFjaCAkZG4gKGtleXMgJXJlY29yZHMpCiAgICB7
IAogICAgJGRuID1+IHMvLC4qLy87ICAgI2tlZXAgb25seSBjbgogICAgRGVidWdNc2coNCwg
IlNlYXJjaGluZyAkZG4gZm9yICRhdHRyIik7CiAgICBwdXNoIEBncm91cExpc3QsICRkbjsK
ICAgIH0KIAogIGZvcmVhY2ggJGRuIChAZ3JvdXBMaXN0KQogICAgeyAKICAgICgkcnRuLCAk
YXR0clgpID0gJmdldEF0dHIoJGxkYXAsICRncm91cGJhc2VkbiwgJGRuLCAkYXR0cik7CiAg
ICBpZiAoICRydG4gbmUgJycpCiAgICAgIHsgCiAgICAgICZ3YXJuKCRydG4pOwogICAgICBy
ZXR1cm47CiAgICAgIH0KICAgIEB2YWx1ZXM9QCRhdHRyWDsKICAgIERlYnVnTXNnKDQsICIk
ZG4gc2VhcmNoIGZvciAkYXR0ciByZXR1cm5lZCAkI3ZhbHVlcyBpdGVtcyIpOwogICAgZm9y
ICgkaT0wOyAkaTw9ICQjdmFsdWVzOyAkaSsrKQogICAgICB7CiAgICAgIGlmICgkdmFsdWVz
WyRpXSA9fiAnZ3JvdXAgJyAuICRvbGROYW1lKQogICAgICAgIHsgCiAgICAgICAgJHZhbHVl
c1skaV0gPSAnZ3JvdXAgJyAuICRncm91cF9uYW1lOyAKICAgICAgICAmRGVidWdNc2coNCwg
ImZvdW5kIG9uZSB0byBjaGFuZ2UiKTsKICAgICAgICBpZiAoICRhbmFseXplID09IDEpIAog
ICAgICAgICAgeyBwcmludCAiTmVlZCB0byBjaGFuZ2UgJ2dyb3VwICIgLiAkZ3JvdXBfbmFt
ZSAuICInIGluICRkblxuIjsgfQogICAgICAgIH0KICAgICAgfQogICAgaWYgKCAkYW5hbHl6
ZSAhPSAxKQogICAgICB7CiAgICAgICRjaGdhdHRyc3skYXR0cn09XEB2YWx1ZXM7CiAgICAg
IERlYnVnTXNnKDQsICJ1cGRhdGluZyAkYXR0ciBpbiAkZG4iKTsKICAgICAgJHJ0bj0gJmRv
TERBUE1vZHMoJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzLCBcJWNoZ2F0dHJzKTsK
ICAgICAgaWYgKCAkcnRuIG5lICIiKQogICAgICAgIHsKICAgICAgICAmd2FybigkcnRuKTsK
ICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgeyBEZWJ1Z01z
Zyg0LCAiR3JvdXAgJGRuIHVwZGF0ZWQiKTsgfQogICAgICB9CiAgICB9CiAgfQojLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBE
ZWJ1Z01zZwojICAgQXJnczoKIyAgICAgTGV2ZWw6ICAxIHRvIDUKIyAgICAgbXNnOiAgICBt
c2cgdG8gcHJpbnQgdG8gc3RvdXQKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRGVidWdNc2coKQogIHsKICAKICBteSgk
bGV2ZWwsICRtc2cpID0gQF87CiAgbXkgJGk7CiAgbXkgJGluZGVudCA9ICIiOwogIG15ICRj
bG9zaW5nX2luZGVudCA9ICIiOwogIG15ICRoZWFkID0gIiI7CgoKICBpZiAoJHNob3cgPT0g
MCkKICAgIHsgcmV0dXJuOyB9CiAgCiAgJG1zZyAuPSAkaW5kZW50OwogIGZvciAoJGk9MDsg
JGkgPCAkcmVjdXJfbGV2ZWw7ICRpKyspCiAgICB7CiAgICBpZiAoJGh0bWwgPT0gMSkKICAg
ICAgewogICAgICAjJGluZGVudCAuPSAiJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsgCiAgICAgICRpbmRlbnQgLj0iICAgICAgICAiOwogICAg
ICAkY2xvc2luZ19pbmRlbnQgLj0gIiI7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAg
ICAjJGluZGVudCAuPSAiICAgICI7CiAgICAgIH0KICAgIH0KCiAgaWYgKCRodG1sID09IDEp
CiAgICB7CiAgICAkaGVhZD0iPGZvbnQgY29sb3I9XCIkZm9udGNvbG9yXCI+IjsKICAgICRl
b2wgPSAiPC9mb250PlxuIjsKICAgIH0gCiAgZWxzZSAKICAgIHsKICAgICRoZWFkID0gIiI7
CiAgICAkZW9sID0gIlxuIjsKICAgIH0KCiAgJG1zZyA9ICIkaGVhZCRpbmRlbnQkbXNnJGNs
b3NpbmdfaW5kZW50JGVvbCI7CgogIFNXSVRDSDogCiAgICB7CiAgICBpZiAoJGxldmVsPT0x
KSAKICAgICAgeyAgCiAgICAgIGlmICgkc2hvdz49MSkgCiAgICAgICB7IFByaW50TWVzc2Fn
ZSgkbXNnKTt9IAogICAgICBsYXN0IFNXSVRDSDsgCiAgICAgIH0KICAgIGlmICgkbGV2ZWw9
PTIpIAogICAgICB7ICAKICAgICAgaWYgKCRzaG93Pj0yKSAKICAgICAgICB7IFByaW50TWVz
c2FnZSgkbXNnKTt9IAogICAgICBsYXN0IFNXSVRDSDsgCiAgICAgIH0KICAgIGlmICgkbGV2
ZWw9PTMpIAogICAgICB7ICAKICAgICAgaWYgKCRzaG93Pj0zKSAKICAgICAgICB7IFByaW50
TWVzc2FnZSgkbXNnKTt9IAogICAgICBsYXN0IFNXSVRDSDsgCiAgICAgIH0KICAgIGlmICgk
bGV2ZWw9PTQpIAogICAgICB7ICAKICAgICAgaWYgKCRzaG93Pj00KSAKICAgICAgICB7IFBy
aW50TWVzc2FnZSgkbXNnKTt9IAogICAgICBsYXN0IFNXSVRDSDsgfQogICAgaWYgKCRsZXZl
bD09NSkgCiAgICAgIHsgIAogICAgICBpZiAoJHNob3c+PTUpIAogICAgICAgIHsgUHJpbnRN
ZXNzYWdlKCRtc2cpO30gCiAgICAgIGxhc3QgU1dJVENIOyAKICAgICAgfQogICAgCiAgICBQ
cmludE1lc3NhZ2UoJG1zZyk7IAogICAgbGFzdCBTV0lUQ0g7CiAgICB9CiAgfQoKIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBn
ZXRNYWlsOgojICAgZ2V0IHVzZXIgbWFpbCBhZGRyZXNzIGZvciB1c2VybmFtZSAKIyBhcmdz
OgojICAgdXNlck5hbWUKIyByZXR1cm5zOgojICAgdXNlck1haWwKIyBub3RlOgojICAgZXJy
b3JzIGRpc3BsYXllZCBvbmx5CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIGdldE1haWwKICB7CiAgbXkgJHVzZXJOYW1lPSRf
WzBdOwogIG15ICR1c2VyTWFpbDsKICBteSAkZmlsdGVyOwogIG15ICRhdHRyOwogIG15ICRy
dG47CiAgaWYgKCR1c2VyTmFtZSBuZSAnJykKICAgIHsKICAgICRmaWx0ZXI9ImNuPSR1c2Vy
TmFtZSI7CiAgICAkYXR0cj0ibWFpbCI7CiAgICAKICAgIGlmICgkZGVidWcgPiAwKQogICAg
ICB7IHByaW50ICI8IS0tR2V0dGluZyB0aGUgJGF0dHIgZm9yICckZmlsdGVyJyAobWFpbCki
OyB9CiAgICAkcnRuID0nJzsKICAgICgkcnRuLCAkdXNlck1haWwpID0gJmdldEF0dHJPbmUo
JGxkYXAsJHBlb3BsZWJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5l
ICIiKSAKICAgICAgeyAKICAgICAgcHJpbnQgIldBUk5JTkc6IGdldE1haWwoJHVzZXJOYW1l
KSBlcnJvcjpcbiRydG5cbiI7IAogICAgICBpZiAoJHVzZXJNYWlsIGVxICcnKQogICAgICAg
IHsgJHVzZXJNYWlsID0gJmRlZkxkYXBBZG1pbjsgfSAgI2lmIGxkYXAgZG93bgogICAgICB9
CiAgICBlbHNlCiAgICAgIHsgcmV0dXJuICR1c2VyTWFpbDsgfQogICAgfQogIGVsc2UKICAg
IHsgcmV0dXJuICZkZWZMZGFwQWRtaW47IH0KICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGdldENuRnJvbVVp
ZCBTdWI6IHVzZSBsZGFwIHRvIGdldCBjb21tb24gbmFtZSAoY24pIGZyb20gdWlkCiMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCnN1YiBnZXRDbkZyb21VaWQgCiAgewoKICBteSAkYXR0cjsKICBteSAkZmlsdGVyOwog
IG15ICRpOwogIG15ICRBcmc9JF9bMF07CiAgbXkgJHVpZDsKICBteSAkY247CiAgbXkgJGJ1
ZmY7CiAgCiAgJkRlYnVnTXNnKDk5LCJnZXRDbkZyb21VaWQgYXJnPSckQXJnJyIpOwoKICAk
ZmlsdGVyID0gInVpZD0iIC4gJEFyZzsKICAkYXR0ciAgID0gImRuIjsKCiAgJkRlYnVnTXNn
KDk5LCJHZXR0aW5nIHRoZSAkYXR0ciBmb3IgJyRmaWx0ZXInIChkaXN0aW5ndWlzaGVkIG5h
bWUpIik7CiAgJGJ1ZmYgPSAiIjsKICAoJHJ0biwgJGJ1ZmYpID0gJmdldEF0dHJPbmUoJGxk
YXAsJHBlb3BsZWJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwogICZEZWJ1Z01zZyg5OSwiIGNu
PSckYnVmZiciKTsKCiAgJGJ1ZmYgPX4gcy9eICpjbiAqPSAqLy87CiAgJGJ1ZmYgPX4gcy8s
LiokLy87CiAgcmV0dXJuICgkcnRuLCAkYnVmZiwgJEFyZyk7CiAgIAogIH0jIyMgZW5kIHN1
YiBnZXRDbkZyb21VaWQKCgo=
tramp_exit_status 0
# Decoding remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...
# Decoding remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
 with function base64-decode-region...
# Decoding remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...done
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38634) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
# Inserting local temp file `d:/Temp/tramp.644-lW'...
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38634) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
# Inserting local temp file `d:/Temp/tramp.644-lW'...done
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -w 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/RCS/grpter.pl\,v 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl\,v 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/RCS/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/SCCS/s.grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/s.grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ ( test -d /export/home/gray/public_html/test-group-020911/admin/groups/CVS 
2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 1
$ echo are you awake
are you awake
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38634) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
$ echo are you awake
are you awake
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38634) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -w 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 38634) (15766 62427) (15766 62427) 60497 33261 t (6 . 
51865) (128 133))
$ cd /export/home/gray/public_html/test-group-020911/admin/groups/ 2>/dev/null; 
echo tramp_exit_status $? 
tramp_exit_status 0
$ /bin/ls -a -d grpter.pl.\~* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
grpter.pl.~1.~
grpter.pl.~1~
grpter.pl.~2.~
grpter.pl.~2~
grpter.pl.~3.~
grpter.pl.~4.~
$ cd
$ mv -f /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~ 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~ 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~ 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~
(nil 1 15002 15000 (15807 38634) (15766 62427) (15807 39263) 60497 33261 t (6 . 
51865) (128 133))
$ rm -f 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~1.\~ 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Encoding region...
# Encoding region using function...
# Decoding region into remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...
$ mimencode -u -b 
>/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl <<'EOF'
# Sending data to remote host...
IyEvdXNyL2Jpbi9wZXJsCgojIDMwLW9jdC0wMiBkZ3MgRml4IGJ1ZyB3aGVuIGdyb3VwIGNvbnRh
aW5zIGFub3RoZXIgZ3JvdXAKIyAyNS1zZXAtMDIgZGdzIEV4cGFuZCBTSUdOQUxfQ0xFQU5VUCB0
byBpbmNsdWRlIHRyYWNlIGJhY2sgZGV0YWlscy4KIyAyNC1zZXAtMDIgZGdzIEZpeCBpc3N1ZSB3
aGVuIG5vdCBpbiB1cGRhdGUgbW9kZSwgYW5kIG5vdCBnZXR0aW5nIHByb3h5IGRldGFpbHMKIyAg
ICAgICAgICAgICAgIElmIG5vIHByb3h5LCB1c2UgbWFuYWdlciBhcyB0aGUgYWRtaW4gY29udGFj
dAojIDE5LXNlcC0wMiBkZ3MgQWRkIHRlc3Qgd2hlbiBsZGFwIGNvbm5lY3Rpb24gZHJvcHMgYWZ0
ZXIgc3RhcnQgCiMgICAgICAgICAgICAgICBpbiBzZW5kRW1haWwKIyAgICAgICAgICAgICAgIENo
YW5nZSByb290QGxvY2FsaG9zdCB0byByb290IGZvciBmZWVkYmFjayBtYWlsCiMgMTgtc2VwLTAy
IGRncyBBZGQgbGlzdCBvZiBncm91cHMgdG8gYmUgcHJvY2Vzc2VkIHRvIGxvZwojICAgICAgICAg
ICAgICAgTWFrZSBhbGFybSBzZXR0aW5nIGludG8gYSB2YXJpYWJsZQojIDEzLXNlcC0wMiBkZ3Mg
TW9kaWZ5IGVtYWlsIG1lc3NhZ2VzCiMgICAgICAgICAgICAgICBBZGQgY2hlY2sgdG8gc2xlZXAg
d2hlbiBzZXJ2ZXIgaXMgZHVtcGluZyBhdCBtaWRuaWdodCAKIyAgICAgICAgICAgICAgICAgKHRo
aXMgbWF5IG5lZWQgYWRqdXN0aW5nIHdpdGggZHVtcCBjcm9uKQojICAgICAgICAgICAgICAgQWRk
IGdyb3VwIG5hbWUgb3V0cHV0IGR1cmluZyBwcm9jZXNzaW5nCiMgICAgICAgICAgICAgICBEcm9w
IGluY2x1ZGUgc3RhdGVtZW50IG9uIHRvcCBsaW5lIChtdXN0IGJlIHJ1biBmcm9tIHdpdGhpbiBk
aXJlY3RvcnkKIyAgICAgICAgICAgICAgIGkuZS4KIyAgICAgICAgICAgICAgIChjZCA8c29tZWRp
cmVjdG9yeT47Li9ncnB0ZXIucGwgKQojICAgICAgICAgICAgICAgUGljayB1cCBncm91cHMgYmVp
bmcgcHJvY2Vzc2VkIGluIHVwZGF0ZSBtb2RlCiMgMTAtc2VwLTAyIGRncyBGaXggaXNzdWUgd2l0
aCBtaXNzaW5nICJjbj0iIGluIHVuaXF1ZW1lbWJlcgojIDMwLWF1Zy0wMiBkZ3MgRml4IGJ1ZyB3
aGVuIHVuaXF1ZW1lbWJlcnMgbm90IHJlbW92ZWQKIyAgICAgICAgICAgICAgIFJld3JpdGUgc2Vu
ZEVtYWlsIHJvdXRpbmUKIyAgICAgICAgICAgICAgIERvIG5vdCBlbWFpbCBpZiBvbmxlIExEQVAg
Y29ubmVjdGlvbiBmYWlsaW5nCiMgICAgICAgICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGV2YWwg
Y2FsbHMKIyAgICAgICAgICAgICAgIFVwZGF0ZSBVUkwgdG8gYmUgcHJvZHVjdGlvbiBhbmQgbm90
IGRlYnVzc3kKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQojIGxkYXAgZ3JvdXBzIGJhY2tlbmQgKGJhdGNoKSBwcm9jZXNz
aW5nCiMgYWRhcHRlZCBmcm9tIHNsYidzIGdyb3VwdGVyLnBsCiMKIyBEb24gRXJpY2tzb24sIElF
QywgMjAwMAojCiMgRGVidWcgTGV2ZWw6IDEgZmV3IGluZm9ybWF0aW9uLCBzbWFsbCB2ZXJib3Nl
IAojICAgICAgICAgICAgICAyIGdlbmVyYWwgdmVyYm9zZSAoZ29vZCBmb3IgZGVtb3MpCiMgICAg
ICAgICAgICAgIDMgcHJvZ3JhbSBmbG93CiMgICAgICAgICAgICAgIDQgdmFyaWFibGVzIGNvbnRl
bnQgaW5zaWRlIHByb2NlZHVyZQojICAgICAgICAgICAgICA1IGhhdmluZyBiYWQgZGF5PwojCiMg
Q3JlYXRlZDogQmFzZWQgdXBvbiBncm91cHRlci5wbCBNYXJjaCAxOTk4IGJ5IERhbmllbCBHdWVy
bWV1cgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQoKdXNlIHN0cmljdDsKdXNlIGdycGdsb2JhbDsKdXNlIERhdGU6Ok1h
bmlwOwp1c2UgTW96aWxsYTo6TERBUDo6Q29ubjsKdXNlIE1vemlsbGE6OkxEQVA6OlV0aWxzOwp1
c2UgTW96aWxsYTo6TERBUDo6RW50cnk7CiN1c2UgVGltZTo6UGFyc2VEYXRlOwoKbXkgQG1lbWJl
ckxpc3Q7Cm15IEByZW1vdmVfbGlzdDsKbXkgQGFyZ3M7Cm15ICgkY29ubkhvc3QsJGNvbm5Qb3J0
LCRjb25uRE4sJGNvbm5QYXNzLAogICAgJGdyb3VwYmFzZWRuLCRwZW9wbGViYXNlZG4sJHJvbGVi
YXNlZG4pID0gJmdldFBhcm1zOwpteSAkY3VyR3JvdXA7Cm15ICRjdXJBZG1pbjsKbXkgJGN1ckxk
YXBBZG1pbjsKbXkgJGN1ckxkYXBBZG1pbk1haWw7CgpteSAkcnRuOwpteSAkbnJlY29yZHM7Cm15
ICRzY29wZT0nc3VidHJlZSc7Cm15ICRWZXJzaW9uSW5mbzsKbXkgJGxvZzsKbXkgJGxkYXA7Cm15
ICRmb250Y29sb3I7Cm15ICRkZWJ1ZzsKbXkgJHRpbWVTdGFtcDsKbXkgJGk7Cm15ICRwOwpteSAk
bXluYW1lOwpteSBAZmllbGRzOwpteSAlcmVjb3JkczsKbXkgJXJlY29yZDsKbXkgJHJlY29yZFg7
Cm15ICRzZWFyY2hWYWw7Cm15ICRmaWVsZF90b19zZWFyY2g7Cm15ICRhdHRyOwpteSAkZmlsdGVy
OwpteSBAcHM7Cm15ICRkYXRlOwpteSAkZ3JvdXBfZXhwaXJlOwpteSAkZXhwaXJlX2RhdGUyOwpt
eSAkZXhwaXJlX2RhdGU7Cm15ICRlcnI7Cm15ICRlcnJmbGFnOwpteSAkZXJydGV4dDsKbXkgJGVy
cnRleHRNc2c7Cm15ICRzdGFydFRpbWU7Cm15ICRyZWFkX2hvc3Q7Cm15IEBhdHRyczsKbXkgJGJh
c2VkbjsKbXkgJG51X3VzZXI7Cm15ICRudV9wYXNzd2Q7Cm15ICRidWZmOwpteSAkdXBkYXRlb25s
eTsKbXkgJHNob3c7Cm15ICRsYXN0bW9kaWZpZWRvbjsKbXkgJHJlY3VyX2xldmVsOwpteSAkbGlz
dG9ubHk7Cm15ICRsb2NrZm9yY2VkOwpteSAka2VlcHRlbXA7Cm15ICRodG1sOwpteSAkZ3JvdXBf
bmFtZTsKbXkgJGVvbDsKbXkgJGVvbHByaW50OwpteSAkYW5hbHl6ZTsKbXkgJHRlbXBmaWxlOwpt
eSAkbWVtYmVybGltaXQ7Cm15ICRkbjsKbXkgJGNuOwpteSAkdGhpc2NuOwpteSAkc2l6ZWxpbWl0
OwpteSAkbWVtYmVyZmlsZTsKbXkgJGxvY2tmaWxlOwpteSAkc3JjZGlyOwpteSAkd29ya2RpcjsK
bXkgJHRtcGRpcjsKbXkgJGxvZ2RpcjsKbXkgQGdyb3VwTGlzdDsKbXkgQGFkbWluTGlzdDsKbXkg
JG9sZE5hbWU7Cm15ICRjaGFuZ2VkOwpteSAkcHM7Cm15ICRjbWQ7CgpteSAkbWF4VGltZT04KjYw
KjYwOyAgIyBNYXhpbXVtIHRpbWUgdGhhdCBqb2Igd2lsbCBydW4gZm9yIGJlZm9yZSBhYm9ydGlu
ZwoKbXkgJFJDU2RhdGU9JyREYXRlOiAyMDAyLzA5LzE5ICQnOwpteSAkUkNTZmlsZT0nJFJDU2Zp
bGU6IGdycHRlci5wbCx2ICQnOwpteSAkUkNTcmV2PSckUmV2aXNpb246IDEuOGRncyAkJzsKCgoj
IEVudmlyb25tZW50IHZhcmlhYmxlcwokfCA9MTsgICAgICAgICAgICAgICAgICMgdHVybiBvZmYg
YnVmZmVyaW5nCgojLS0tLS0tLS0tLS0tLS0tIGdsb2JhbCB2YXJpYWJsZXM6IGRpcmVjdG9yaWVz
IC0tLS0tLS0tLS0tLS0tCiRzcmNkaXIgICAgID0gJmdldHNyY2RpcjsKJGxvZ2RpciAgICAgPSAi
JHNyY2Rpci9sb2dzIjsKJHRtcGRpciAgICAgPSAiJHNyY2Rpci90bXBmaWxlcyI7CiR3b3JrZGly
ICAgID0gIiRzcmNkaXIvd29yayI7CiMtLS0tLS0tLS0tLS0tLS0gZ2xvYmFsIHZhcmlhYmxlcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiRsb2NrZmlsZSAgID0gIiR0bXBkaXIvZ3JwdGVy
LmxvY2siOwokbWVtYmVyZmlsZSA9ICIkdG1wZGlyL21lbWJlcnMkJC50bXAiOwokc2l6ZWxpbWl0
ICAgICA9IDEwMDA7ICAjIFNldCB0byBNYXhpbXVtIE51bWJlciBvZiBFbnRyaWVzIHRvIFJldHVy
bgogICAgICAgICAgICAgICAgICAgICAgICAjIENhbiBzZXQgc21hbGwgdG8gdGVzdCBlcnJvciBy
b3V0aW5lcwokdGVtcGZpbGUgICA9ICIkdG1wZGlyL2dyb3VwLiQkLnRtcCI7CgokVmVyc2lvbklu
Zm89IiRSQ1NmaWxlICRSQ1NyZXYgJFJDU2RhdGUiOwoKIy0tLS0tLS0tLS0tLS0tIGNvbW1hbmQg
bGluZSBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJGFuYWx5emUgPSAwOyAgICAgICAg
ICAjIGNtZCBsaW5lIG9wdGlvbjogIGJ5IGRlZmF1bHQgd2hlbiB0aGUgcHJvZ3JhbSAKICAgICAg
ICAgICAgICAgICAgICAgICAjIHJ1bnMgaXQgdXBkYXRlcyB0aGUgZGlyZWN0b3J5CiAgICAgICAg
ICAgICAgICAgICAgICAgIyBpZiBzZXQgdG8gMSwgdGhlIHByb2dyYW0ganVzdCBhbmFseXplcyB0
aGUgCiAgICAgICAgICAgICAgICAgICAgICAgIyBncm91cCBzdHJ1Y3R1cmUgYW5kIHdyaXRlIGl0
IHRvIHN0ZG91dAoKJGVvbD0iXG4iOyAgICAgICAgICAgICAjIHNldCBieSAkaHRtbDogZW5kIG9m
IGxpbmUgZm9yIHN0ZG91dCAKJGVvbHByaW50PSJcXG4iOyAgICAgICAjCiAgICAgICAgICAgICAg
ICAgICAgICAgIyhjYW4gYmUgXG4gb3IgPGJyPiBmb3Igd3d3LgoKJGdyb3VwX25hbWUgPSAiIjsg
ICAgICAjIGNtZCBsaW5lIG9wdGlvbjogCiAgICAgICAgICAgICAgICAgICAgICAgIyBkbyBhbGwg
Z3JvdXAgdW5sZXNzIHNwZWNpZnkgaW4gdGhlIGFyZ3VtZW50cwoKJGh0bWwgPSAwOyAgICAgICAg
ICAgICAjIGNtZCBsaW5lIG9wdGlvbjogCiAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQg
dHlwZTogaHRtbCAoMSkgb3Igc3RkICgwKQoKJGtlZXB0ZW1wPTA7ICAgICAgICAgICAjaWYgc2V0
IHRvIG9uZSB0ZW1wIGZpbGUgYXJlIG5vdCBlcmFzZWQgCiAgICAgICAgICAgICAgICAgICAgICAg
IyBhZnRlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgI3NldCB0byB6ZXJvIHRl
bXAgZmlsZSBhcmUgZXJhc2UuCgokbGlzdG9ubHkgPSAwOyAgICAgICAgICMgc2V0IHRvIDEgdGVs
bCB0aGlzIHByb2dyYW0gCiAgICAgICAgICAgICAgICAgICAgICAgIyB0byBkaXNwbGF5IGFsbCBn
cm91cHMgdGhlbiBxdWl0cy4KCiRsb2NrZm9yY2VkID0gMDsgICAgICAgIyBzZXQgdG8gMSB0ZWxs
IHRoaXMgcHJvZ3JhbSB0byBmb3JjZSB0aGUgbG9jayAKICAgICAgICAgICAgICAgICAgICAgICAj
IG9mIHRoZSBleGVjdXRpb24uCgokbG9nID0gMjsgICAgICAgICAgICAgICMgY21kIGxpbmUgb3B0
aW9uIHRvIGxvZyBvdXRwdXQgaW50byBMT0cgZmlsZQogICAgICAgICAgICAgICAgICAgICAgICMg
MCA9IGRpc3BsYXksIDEgPSBMT0cgZmlsZSwgMiA9IGJvdGgKCiRyZWN1cl9sZXZlbD0wOyAgICAg
ICAgIyB0ZWxsIHVzIHRoZSBsZXZlbCBvZiByZWN1cnNpdml0eSB0aGUgCiAgICAgICAgICAgICAg
ICAgICAgICAgIyBwcm9ncmFtIGlzIGluCiAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlz
IHVzZWQgdG8gaW5kZW50IHRoZSBvdXRwdXQgdG8gZGlzcGxheSBhIG5pY2UKICAgICAgICAgICAg
ICAgICAgICAgICAjIGRpcmVjdG9yeSB0cmVlIHdoZW4gZ3JvdXAgaW5jbHVkZXMgb3RoZXIgZ3Jv
dXBzCgokc2hvdz0wOyAgICAgICAgICAgICAgICMgY21kIGxpbmUgb3B0aW9uOiBzaG93IGRlYnVn
IGluZm9ybWF0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICMgIHVwIHRvIGxldmVsIHlvdSBz
ZXQgaGVyZSAoMCB0byA1KQogICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIGJlIHNldCB0
byAwIGluIG5vcm1hbCBvcGVyYXRpb24gbW9kZQoKJHVwZGF0ZW9ubHkgPSAwOyAgICAgICAjIHNl
dCB0byAxIHRlbGwgdGhpcyBwcm9ncmFtIG9ubHkgdG8gZXhwYW5kIAogICAgICAgICAgICAgICAg
ICAgICAgICMgZ3JvdXAgd2l0aCBzdGF0dXMgJ1RvIGJlIHByb2Nlc3NlZCcuCgojIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMg
RE8gTk9UIE1PRElGWSAgYmVsb3cgdGhpcyBsaW5lLgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIAojCiMgIE1BSU4KIwojIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKIyMjIyMjIyMjCgojIyBjcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSBpZiBuZWVk
ZWQKCmlmICgkZGVidWcgPj0gMCkgewogIHByaW50IHFxezwhLS0gR3JvdXAgY29kZSAkVmVyc2lv
bkluZm8gc3RhcnRpbmcgYXQgfSxzY2FsYXIoZ210aW1lKHRpbWUpKSxxcXstLT5cbn07Cn0KCmlm
ICghIC1kICIkd29ya2RpciIgKSAKICB7CiAgbWtkaXIoJHdvcmtkaXIsMDc3NykgfHwgZGllICgi
Y2Fubm90IGNyZWF0ZSBkaXJlY3Rvcnk6ICR3b3JrZGlyOiAkPyIpOwogIFByaW50TWVzc2FnZSgi
RGlyZWN0b3J5ICR3b3JrZGlyIGNyZWF0ZWQiKTsKICB9CgojIHVzYWdlOiAgZ3JwdGVyIFstb3B0
aW9ucyAuLi5dICMKI3doZXJlIG9wdGlvbnMgaW5jbHVkZTogc2VlICZ1c2FnZSAKCiMjIyMgcmVh
ZCBhcmd1ZW1lbnQgYW5kIHNldCB2YXJpYWJsZXMKCkBhcmdzPUBBUkdWOwokYnVmZj0gIkFyZ3Vt
ZW50IGxpbmU6IFxuICAiOwpmb3IgKCRpPTA7ICRpPD0gJCNhcmdzOyAkaSsrKQogIHsgJGJ1ZmYg
Lj0gJGFyZ3NbJGldIC4gJyAnOyB9IAoKIyMjIyBpbml0IHNlcXVlbmNlCndoaWxlICggJF8gPSAk
QVJHVlswXSApCiAgewogIHNoaWZ0OwogIGxhc3QgaWYgL14tLSQvOwogIGlmICAgICgvXi1nLykg
ICAgCiAgICB7ICRncm91cF9uYW1lID0gJmdldF9vcHRpb24oIi1ncm91cCIpOyAgfSAKICBlbHNp
ZiAoL14tdy8pICAgICAgCiAgICB7ICRodG1sID0gMSAgICAgICAgICAgICB9CiAgZWxzaWYgKC9e
LWEvKSAgICAgIAogICAgeyAkYW5hbHl6ZSAgID0gMTsgICAgICAgICAgICAgICAgICAgICAgIH0K
ICBlbHNpZiAoL14tbG9nJC8pICAgICAgICAKICAgIHskbG9nID0gJmdldF9vcHRpb24oIi1sb2ci
KTsgfQogIGVsc2lmICgvXi1sLykgICAgICAKICAgIHsgJGxpc3Rvbmx5ICA9IDE7ICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgZWxzaWYgKC9eLXUvKSAgICAgIAogICAgeyAkdXBkYXRlb25seSAg
PSAxOyAgICAgICAgICAgICAgICAgICAgICAgfQogIGVsc2lmICgvXi16LykgICAgICAKICAgIHsg
JGxvY2tmb3JjZWQgID0gMTsgICAgICAgICAgICAgICAgICAgICAgIH0KICBlbHNpZiAoL14tZC8p
ICAgICAgCiAgICB7ICRzaG93ICAgICAgID0gJmdldF9vcHRpb24oIi1kZWJ1ZyIpOyB9CiAgZWxz
aWYgKC9eLWsvKSAgICAgIAogICAgeyAka2VlcHRlbXAgID0gMTsgICB9CiAgZWxzaWYgKC9eLWgv
KSAgICAKICAgIHsgJnVzYWdlKCJIZWxwIHJlcXVlc3RlZCIpOyB9CiAgZWxzaWYgKC9eLXAvKSAg
ICAgIAogICAgeyAkbnVfcGFzc3dkICA9ICZnZXRfb3B0aW9uKCItcGFzcyIpOyAgIH0KICBlbHNp
ZiAoL15bYS16QS1aXSovKSAgICAKICAgIHsgCiAgICAmYWJvcnQoIkVSUjogY2FuJ3Qgc3BlY2lm
eSBtb3JlIHRoYW4gb25lIHVzZXIhIiw3KSBpZiAoJG51X3VzZXIgbmUgIiIpOwogICAgJG51X3Vz
ZXIgPSAkXzsKICAgIH0KICBlbHNlICAgICAgICAgICAgIAogICAgeyAmdXNhZ2UoInVua25vd24g
YXJndW1lbnQ6ICRfIik7fQogIH0KCmlmICggJGh0bWwgPT0gMSkKICB7IAogIHByaW50ICJDb250
ZW50LXR5cGU6IHRleHQvaHRtbFxuUHJhZ21hOiBuby1jYWNoZVxuXG4iOyAKICBwcmludCAiPEhU
TUw+PEhFQUQ+PFRJVExFPkxEQVAgR3JvdXBzIEJhdGNoIFByb2Nlc3Npbmc8L1RJVExFPjwvSEVB
RD4iOwogIHByaW50ICI8Qk9EWT5cbiIKICB9CgojIyBkaXNwbGF5IFJDUyBpbmZvOgomUkNTZGlz
cCgkUkNTZGF0ZSwkUkNTZmlsZSwkUkNTcmV2LDApOwoKJkRlYnVnTXNnKDEsIAogICJcbi0gLSAt
IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSBcbiIgLgogICJQYXJhbWV0
ZXJzOlxuICB3b3JrZGlyIFx0JHdvcmtkaXJcbiAgYmFzZWRuIFx0JGJhc2VkblxuICBncm91cGJh
c2VkbiAiIC4KICAiXHQkZ3JvdXBiYXNlZG5cbiAgcGVvcGxlYmFzZWRuIFx0JHBlb3BsZWJhc2Vk
blxuICByZWFkX2hvc3QgIiAuCiAgIlx0JHJlYWRfaG9zdFxuLSAtIC0gLSAtIC0gLSAtIC0gLSAt
IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIik7CgoKJkRlYnVnTXNnKDEsIlxuQXJndW1lbnRzOlxu
ICBhbmFseXplXHQkYW5hbHl6ZVxuICBlb2xcdFx0JGVvbHByaW50XG4iIC4KICAiICBncm91cF9u
YW1lXHQkZ3JvdXBfbmFtZVxuICBodG1sXHRcdCRodG1sXG4gIGtlZXB0ZW1wXHQka2VlcHRlbXBc
biIgLgogICIgIGxpc3Rvbmx5XHQkbGlzdG9ubHlcbiAgbG9ja2ZvcmNlZFx0JGxvY2tmb3JjZWRc
biIgLgogICIgIGxvZ1x0XHQkbG9nXG4gIHJlY3VyX2xldmVsXHQkcmVjdXJfbGV2ZWxcbiAgc2hv
d1x0XHQkc2hvd1xuIiAuCiAgIiAgdXBkYXRlb25seVx0JHVwZGF0ZW9ubHlcbiIgLgogICItIC0g
LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSIpOwokZGF0ZT1nbXRp
bWUodGltZSk7CiRzdGFydFRpbWU9Z210aW1lKHRpbWUpOwpjaG9tcCgkZGF0ZSk7CiRkZWJ1Zz0k
c2hvdzsKJnNldERlYnVnKCRkZWJ1Zyk7CiNvcGVuIGxvZyBmaWxlCmxvZ01zZzIoIklORjogU3Rh
cnRpbmdcbiIpOwoKKCRydG4sJGxkYXApPWRvQmluZCgkbGRhcCk7CmlmICgkcnRuIG5lICcnKQog
IHsgJmFib3J0KCRydG4pOyB9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKIyBjaGVjayBsb2NrIGZpbGUgZXhpc3RzCiMgaWYgaXQgZXhpc3Rz
IGl0IG1lYW5zIHRoYW4gYW5vdGhlciBpbnN0YW5jZSBvZiB0aGlzIAojIHByb2cgaXMgYWxyZWFk
eSBydW5uaW5nIG9yIHRoYW4gdGhlIGZpbGUgaXMgYW4gb2xkIGxvY2sgZmlsZSAKIyBmcm9tIGEg
cHJvY2VzcyB0aGF0IGFscmVhZHkgZGllZC4KIwoKaWYgICgoLWUgIiRsb2NrZmlsZSIpICYmICgk
bG9ja2ZvcmNlZCA9PSAwKSkgCiAgewogICMjIyBIZXJlIHRoZSBsb2NrZmlsZSBleGlzdC4KICAj
IyMgQ2hlY2sgaWYgdGhlIGZpbGUgaXMgb2xkZXIgdGhhbiBvbmUgZGF5LiBpZiB5ZXMKICAjIyMg
d2UgcmVtb3ZlIGl0IHNpbmNlIHRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgaW50ZXJydXB0ZWQK
ICAjIyMgcHJvY2VzcyByZXN1bHRpbmcgZnJvbSBhbiBMREFQIGNyYXNoIG9yIGEgc2VydmVyIHJl
c3RhcnQuCiAgCiAgaWYgKCgtTSAkbG9ja2ZpbGUpID49IDEpCiAgICB7CiAgICBQcmludE1lc3Nh
Z2UoIkRlbGV0aW5nIGxvY2tmaWxlICRsb2NrZmlsZSBzaW5jZSAiIC4KICAgICAgIml0J3Mgb2xk
ZXIgdGhhbiAxIGRheSIpOwogICAgdW5saW5rICgkbG9ja2ZpbGUpOwogICAgfSAKICBlbHNlIAog
ICAgewogICAgIyBDaGVjayB0byBzZWUgaWYgYW5vdGhlciBwcm9jZXNzIGlzIHJ1bm5pbmcKICAg
ICRjbWQgPSAncHMgLWVmIHwgZ3JlcCBncnB0ZXIucGwgfCBncmVwIC12IGdyZXAgfCB3YyAtbCAn
IC4gJz4nIC4KICAgICAgIiR0bXBkaXIvJCQudG1wIjsKICAgIHN5c3RlbSgkY21kKTsKCiAgICAk
cHM9MDsgCiAgICBAcHM9KCk7CiAgICBvcGVuIChQUywgIjwkdG1wZGlyLyQkLnRtcCIpOwogICAg
JHBzPSA8UFM+OwogICAgY2xvc2UgUFM7CiAgICB1bmxpbmsgIiR0bXBkaXIvJCQudG1wIjsKICAg
IGlmICgkcHMgPj0gMikgCiAgICAgIHsKICAgICAgUHJpbnRNZXNzYWdlKCJBYm9ydGluZzogYW5v
dGhlciBwcm9jZXNzIGlzIHJ1bm5pbmciKTsKICAgICAgaWYgKCRodG1sID09IDEpCiAgICAgICAg
eyBwcmludCAiPC9CT0RZPjwvSFRNTD5cbiI7IH0KICAgICAgZXhpdDsKICAgICAgfSAKICAgIGVs
c2UKICAgICAgewogICAgICBwcmludCBTVERFUlIgIkxvY2sgZmlsZSBleGlzdHMgKCRsb2NrZmls
ZSksICIgLgogICAgICAgICJidXQgbm8gcHJvY2VzcywgZGVsZXRpbmcgbG9ja2ZpbGUuIjsKICAg
ICAgUHJpbnRNZXNzYWdlKCJMb2NrIGZpbGUgZXhpc3RzICgkbG9ja2ZpbGUpLCAiIC4KICAgICAg
ICAiYnV0IG5vIHByb2Nlc3MsIGRlbGV0aW5nIGxvY2tmaWxlLiIpOwogICAgICB1bmxpbmsgIiRs
b2NrZmlsZSI7IAogICAgICB9IAogICAgfQogIH0KCiMjIyMjIwojIyMgd2UgY3JlYXRlIGEgbG9j
ayBmaWxlIGFuZCBwdXQgdGhlIGRhdGUgaW4gaXQKIyMjIGFzIHdlbGwgYXMgdGhlIFBJRCMKUHJp
bnRNZXNzYWdlKCJDcmVhdGluZyBsb2NrZmlsZSIpOwpvcGVuIChMT0NLRklMRSwgIj4kbG9ja2Zp
bGUiKQogIG9yIHdhcm4gIkZhaWxlZCB0byBvcGVuOiAnJGxvY2tmaWxlJywgICQ/IjsKCnByaW50
IExPQ0tGSUxFICJQSUQgJCQsICAkZGF0ZSI7CgpjbG9zZSBMT0NLRklMRTsKCiZEZWJ1Z01zZygz
LCAiJGRhdGU6IHN0YXJ0aW5nICQwIik7CgppZiAoISAtZCAiJGxvZ2RpciIgKSAKICB7CiAgbWtk
aXIoJGxvZ2RpciwwNzc3KSB8fCBkaWUgKCJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeTogJGxvZ2Rp
cjogJD8iKTsKICBQcmludE1lc3NhZ2UoIkRpcmVjdG9yeSAkbG9nZGlyIGNyZWF0ZWQiKTsKICB9
CiZTZXRGb250Q29sb3IoImJsYWNrIik7CgppZiAoIC1kICIkdG1wZGlyIiApIAogIHsKICAmRGVi
dWdNc2coMywgIkNsZWFuaW5nIHRtcGRpciBkaXJlY3Rvcnk6ICR0bXBkaXIiKTsKICBzeXN0ZW0o
InJtIC1mICR0bXBkaXIvKi50bXAiKTsgICAKICB9CmVsc2UKICB7CiAgbWtkaXIoJHRtcGRpciww
Nzc3KSB8fCBkaWUgKCJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeTogJHRtcGRpcjogJD8iKTsKICBQ
cmludE1lc3NhZ2UoIkRpcmVjdG9yeSAkdG1wZGlyIGNyZWF0ZWQiKTsKICB9CgomY2F0Y2hfc2ln
bmFsczsgICMjIyBhbGxvdyBncmFjZWZ1bCBpbnRlcnJ1cHRzCgojIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBhZnRlciA1IGhvdXJzIHRoaXMg
cHJvY2VzcyB3aWxsCiMjIyBiZSBhdXRvbW90aWNhbGx5IGludGVycnVwdGVkCiMjIyB0aGlzIHdh
cyBuZWNlc3Nhcnkgc2luY2UgTERBUCBjcmFzaGVzIG1ha2UgCiMjIyB0aGlzIHByb2cgaGFuZy4K
CmFsYXJtICgkbWF4VGltZSk7IAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZ2V0
IHRoZSBjdXJyZW50IExEQVAgYWRtaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoo
JHJ0biwgJGN1ckxkYXBBZG1pbikgPSBnZXRBZG1pblRleHQoJGxkYXAsICdjbj1ncm91cCcsICRy
b2xlYmFzZWRuLCAnYWRtaW46Jyk7CgokY3VyTGRhcEFkbWluID1+IHMvXiAqY24gKj0gKi8vOwok
Y3VyTGRhcEFkbWluID1+IHMvLC4qJC8vOwomRGVidWdNc2coMSwiY3VyTGRhcEFkbWluPSRjdXJM
ZGFwQWRtaW4iKTsKCmlmICgkcnRuIG5lICIiKQogICB7ICZhYm9ydCgnRVJSOiAnIC4gJHJ0bik7
IH0KCiMgbm93IGdldCB0aGUgbWFpbCBhZGRyZXNzCiRmaWx0ZXI9ImNuPSRjdXJMZGFwQWRtaW4i
OwokYXR0cj0ibWFpbCI7CgppZiAoICRjdXJMZGFwQWRtaW4gPX4gL1w8bm9uZVw+LyApCiAgeyAk
Y3VyTGRhcEFkbWluID0gJmRlZkxkYXBBZG1pbjsgfQoKJkRlYnVnTXNnKDEsICJHZXR0aW5nIHRo
ZSAkYXR0ciBmb3IgJyRmaWx0ZXInIChncm91cF9sZGFwX2FkbWluKSIpOyAKJGN1ckxkYXBBZG1p
bk1haWwgPSAiIjsKJHJ0biA9Jyc7CigkcnRuLCAkY3VyTGRhcEFkbWluTWFpbCkgPSAmZ2V0QXR0
ck9uZSgkbGRhcCwkcGVvcGxlYmFzZWRuLCAkZmlsdGVyLCAkYXR0cik7CmlmICggJHJ0biBuZSAi
IikgCiAgeyAKICAmd2FybigkcnRuKTsgCiAgfQoKJkRlYnVnTXNnKDEsImN1ckxkYXBBZG1pbk1h
aWw9JGN1ckxkYXBBZG1pbk1haWwiKTsKCmlmICgkcnRuIG5lICIiKQogICB7ICZhYm9ydCgnRVJS
OiAnIC4gJHJ0bik7IH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQojIGdldCB0aGUgZ3JvdXBfZXhwaXJlIHZhbHVlIGZyb20gdGhlIHJvbGUKIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgooJHJ0biwgJGdyb3VwX2V4cGly
ZSkgPSBnZXRBZG1pblRleHQoJGxkYXAsICdjbj1ncm91cCcsICRyb2xlYmFzZWRuLCAnZXhwaXJl
OicpOwppZiAoJHJ0biBuZSAnJykKICB7ICZhYm9ydCgnRVJSOiAnIC4gJHJ0bik7IH0KCiMtLS0t
LSBjYWxjdWxhdGUgdGhlIHZhbHVlIGZvciBleHBpcmF0aW9uIGRhdGUgKHRvZGF5IC0gZ3JvdXBf
ZXhwaXJlKQokZXhwaXJlX2RhdGUgPSAmRGF0ZUNhbGMoInRvZGF5IiwgIi0iIC4gJGdyb3VwX2V4
cGlyZSAuICIgZGF5cyIsIFwkZXJyKTsKJkRlYnVnTXNnKDQsICJleHBpcmVfZGF0ZT0kZXhwaXJl
X2RhdGUsIGVycj0kZXJyIik7CiRleHBpcmVfZGF0ZTI9ICZEYXRlQ2FsYygidG9kYXkiLCAiKzcg
ZGF5cyIsIFwkZXJyKTsKJkRlYnVnTXNnKDQsICJleHBpcmVfZGF0ZTI9JGV4cGlyZV9kYXRlMiwg
ZXJyPSRlcnIiKTsKJGV4cGlyZV9kYXRlMj0mVW5peERhdGUoJGV4cGlyZV9kYXRlMiwiJWQtJWIi
KTsKJkRlYnVnTXNnKDQsICJleHBpcmVfZGF0ZTI9JGV4cGlyZV9kYXRlMiwgZXJyPSRlcnIiKTsK
CgppZiAoJGVyciBuZSAiIikKICAgeyAmYWJvcnQoIiRydG4iKTt9ICAKCiMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgaWYgYSBncm91cCB3YXMg
c2VuZCBpbiBhcmd1bWVudCB0aGVuIHdlIAojIyMgcHJvY2VzcyBvbmx5IHRoaXMgZ3JvdXAKCmlm
ICgkZ3JvdXBfbmFtZSBuZSAiIikKICB7ICZFeHBhbmRfT25lX0dyb3VwKCJjbj0kZ3JvdXBfbmFt
ZSIpOyB9CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwojIyMgSWYgdGhpcyBpcyBhbiB1cGRhdGUgb25seSB0aGVuIAojIyMgd2UgdXBkYXRlIG9ubHkg
dGhlIGdyb3VwcyB3LyAndG8gYmUgcHJvY2Vzc2VkJyBzdGF0dXMKIyMjIG9yICd0byBiZSByZW5h
bWVkKicgc3RhdHVzCiMjIyBsaXN0b25seSBhbHNvIGNoZWNrZWQ6IHdpbGwgb25seSBsaXN0IHRo
ZSBncm91cHMKCmVsc2lmICgkdXBkYXRlb25seSkgCiAgewogICZEZWJ1Z01zZygzLCAiVXBkYXRp
bmcgb25seSB0aGUgZ3JvdXAgd2l0aCBzdGF0dXM9JyIgLgogICAgIlRvIGJlIHByb2Nlc3NlZCcg
b3IgJ0JlaW5nIFByb2Nlc3NlZCciKTsKICAKICBAYXR0cnMgPSAKICAgICgKICAgICJjbiIsCiAg
ICAiYWRtaW50ZXh0IiwKICAgICJwcm94eSIsCiAgICAibWFuYWdlciIKICAgICk7CiAgCiAgJGZp
bHRlcj0iKHwoYWRtaW50ZXh0PXN0YXR1czogdG8gYmUgcHJvY2Vzc2VkKShhZG1pbnRleHQ9c3Rh
dHVzOiBCZWluZyBQcm9jZXNzZWQpKSI7CiAgCiAgIyBoZXJlIGlzIHdoZXJlIHdlIHNob3VsZCBw
dXQgaW4gdGhlIGNhbGwgdG8gZG9MREFQU2VhcmNoKCkKICAjIHBhc3MgdG8gaXQgJEJBU0VETiwg
JGZpbHRlciwgXEBhdHRycwogICMgZ2V0IGJhY2sgJHJ0biwgJG5lbnRyaWVzLCRyZWNvcmR7fS0+
e30KICAKICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZ3JvdXBzIGZvciB1cGRhdGUgb25seSIpOwog
IG15ICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmQxKSA9IAogICAgJmRvTERBUFNlYXJjaCgkbGRh
cCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzKTsKCiAgaWYgKCRydG4gbmUgJycpCiAg
ICB7ICZ3YXJuKCRydG4pOyB9CgogICZEZWJ1Z01zZyg0LCJRdWVyeWluZyBkb25lIik7CiAgJXJl
Y29yZCA9ICUkcmVjb3JkMTsKICBAZ3JvdXBMaXN0ID0gQGFkbWluTGlzdCA9ICgpOwogIGlmICgk
bmVudHJpZXMgPT0gMCkgCiAgICB7IAogICAgJlJlbW92ZUxvY2tGaWxlOwogICAgbG9nTXNnMigi
SU5GOiBFbmRpbmc6IG5vIGdyb3VwcyBuZWVkIHVwZGF0aW5nXG4iKTsKICAgIH0gCiAgZWxzZQog
ICAgewogIAogICAgZm9yZWFjaCAkZG4gKHNvcnQga2V5cyAlcmVjb3JkKSB7CiAgICAgIHB1c2gg
QGdyb3VwTGlzdCwgJHskcmVjb3JkeyRkbn17J2NuJ319WzBdOwogICAgICBpZiAoKCRyZWNvcmR7
JGRufXsncHJveHknfVswXSA9fiAvXiAqY24gKj0gKiguKz8pICosICpvdT0vaSkgfHwKCSAgKCRy
ZWNvcmR7JGRufXsnbWFuYWdlcid9WzBdID1+IC9eICpjbiAqPSAqKC4rPykgKiwgKm91PS9pKSAK
CSAgKSB7CiAgICAgICAgcHVzaCBAYWRtaW5MaXN0LCAkMTsKICAgICAgfSBlbHNlIHsKCXB1c2gg
QGFkbWluTGlzdCwgJ05vIHByb3h5IG9yIG1hbmFnZXIgZGVmaW5lZCc7CiAgICAgIH0KICAgIH0K
ICAgICMgUHJpbnQgb3V0IGxpc3Qgb2YgZ3JvdXBzIHRvIGJlIHByb2Nlc3NlZAogICAgaWYgKCRk
ZWJ1ZyA+PSAwKSB7CiAgICAgICBQcmludE1lc3NhZ2UocXtHcm91cCB0byBiZSBwcm9jZXNzZWQ6
IH0uCgkJICAgIGpvaW4ocXF7XG5Hcm91cCB0byBiZSBwcm9jZXNzZWQ6IH0sQGdyb3VwTGlzdCkK
CQkgICApOwogICAgICAgcHJpbnQgcXF7PCEtLSBHcm91cCB0byBiZSBwcm9jZXNzZWQ6IH0sCiAg
ICAgICAgICAgICBqb2luKHFxey0tPlxuPCEtLSBHcm91cCB0byBiZSBwcm9jZXNzZWQ6IH0sQGdy
b3VwTGlzdCksCiAgICAgICAgICAgICBxcXstLT5cbn07CiAgICB9CiAgICAKICAgIGZvciAoJGk9
MDsgJGk8PSAkI2dyb3VwTGlzdDsgJGkrKykKICAgICAgewogICAgICAkbXluYW1lPSRncm91cExp
c3RbJGldOwogICAgICAkY3VyQWRtaW49JGFkbWluTGlzdFskaV07CiAgICAgICZEZWJ1Z01zZyg0
LCJncm91cDogY249JG15bmFtZSxhZG1pbj0kY3VyQWRtaW4iKTsKICAgICAgaWYgKCRsaXN0b25s
eSA9PSAxKQogICAgICAgIHsKICAgICAgICAkY24gPSAkbXluYW1lOwogICAgICAgICRjbiA9fiBz
L14gKmNuICo9ICovLzsKICAgICAgICAkY24gPX4gcy8sLiokLy87CiAgICAgICAgcHJpbnQgIiRj
blxuIjsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7ICZFeHBhbmRfT25lX0dyb3VwKCJj
bj0kbXluYW1lIik7IH0KICAgICAgfQogICAgfQoKICBpZiAoJGRlYnVnID49IDApIHsKICAgIFBy
aW50TWVzc2FnZShzY2FsYXIoQGdyb3VwTGlzdCkucXF7IGdyb3VwcyB1cGRhdGVkXG59KTsKICAg
IHByaW50IHFxezwhLS0gfSxzY2FsYXIoQGdyb3VwTGlzdCkscXF7IGdyb3VwcyB1cGRhdGVkLS0+
XG59OwogIH0KICAjIyMjIyBub3cgZG8gJ3RvIGJlIHJlbmFtZWQqJwogICRmaWx0ZXI9IihhZG1p
bnRleHQ9c3RhdHVzOiB0byBiZSByZW5hbWVkKikiOwogIAogICMgaGVyZSBpcyB3aGVyZSB3ZSBz
aG91bGQgcHV0IGluIHRoZSBjYWxsIHRvIGRvTERBUFNlYXJjaCgpCiAgIyBwYXNzIHRvIGl0ICRC
QVNFRE4sICRmaWx0ZXIsIFxAYXR0cnMKICAjIGdldCBiYWNrICRydG4sICRuZW50cmllcywkcmVj
b3Jke30tPnt9CiAgCiAgJkRlYnVnTXNnKDQsIlF1ZXJ5aW5nIGdyb3VwcyBmb3IgdXBkYXRlIG9u
bHkiKTsKICAoJHJ0biwgJG5lbnRyaWVzLCAkcmVjb3JkMSkgPSAKICAgICZkb0xEQVBTZWFyY2go
JGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycyk7CgogIGlmICgkcnRuIG5lICcn
KQogICAgeyAmd2FybigkcnRuKTsgfQoKICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZG9uZSIpOwog
ICVyZWNvcmQgPSAlJHJlY29yZDE7CiAgQGdyb3VwTGlzdCA9IEBhZG1pbkxpc3QgPSAoKTsKICBp
ZiAoJG5lbnRyaWVzID09IDApIAogICAgeyAKICAgICZSZW1vdmVMb2NrRmlsZTsKICAgIGxvZ01z
ZzIoIklORjogRW5kaW5nOiBubyBncm91cHMgbmVlZCB1cGRhdGluZyBmb3IgcmVuYW1lXG4iKTsK
ICAgIGlmICgkaHRtbCA9PSAxKQogICAgICB7IHByaW50ICI8L0JPRFk+PC9IVE1MPlxuIjsgfQog
ICAgZXhpdCgwKTsgCiAgICB9IAogIAogIGZvcmVhY2ggJGRuIChzb3J0IGtleXMgJXJlY29yZCkg
ewogICAgcHVzaCBAZ3JvdXBMaXN0LCAkeyRyZWNvcmR7JGRufXsnY24nfX1bMF07CiAgICBpZiAo
KCRyZWNvcmR7JGRufXsncHJveHknfVswXSA9fiAvXiAqY24gKj0gKiguKz8pICosICpvdT0vaSkg
fHwKCSgkcmVjb3JkeyRkbn17J21hbmFnZXInfVswXSA9fiAvXiAqY24gKj0gKiguKz8pICosICpv
dT0vaSkgCgkpIHsKICAgICAgcHVzaCBAYWRtaW5MaXN0LCAkMTsKICAgIH0gZWxzZSB7CiAgICAg
IHB1c2ggQGFkbWluTGlzdCwgJ05vIHByb3h5IG9yIG1hbmFnZXIgZGVmaW5lZCc7CiAgICB9CiAg
fQogIGZvciAoJGk9MDsgJGk8PSAkI2dyb3VwTGlzdDsgJGkrKykKICAgIHsKICAgICRteW5hbWU9
JGdyb3VwTGlzdFskaV07CiAgICAkY3VyQWRtaW49JGFkbWluTGlzdFskaV07CiAgICAmRGVidWdN
c2coNCwiZ3JvdXA6IGNuPSRteW5hbWUsYWRtaW49JGN1ckFkbWluIik7CiAgICBpZiAoJGxpc3Rv
bmx5ID09IDEpCiAgICAgIHsKICAgICAgJGNuID0gJG15bmFtZTsKICAgICAgJGNuID1+IHMvXiAq
Y24gKj0gKi8vOwogICAgICAkY24gPX4gcy8sLiokLy87CiAgICAgIHByaW50ICIkY25cbiI7CiAg
ICAgIH0KICAgIGVsc2UKICAgICAgeyAmRXhwYW5kX09uZV9Hcm91cCgiY249JG15bmFtZSIpOyB9
CiAgICB9CgogIH0KZWxzZQogIHsKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICAjIyMgb3RoZXJ3aXNlIHdlIHNlYXJjaCBhbGwgZ3JvdXBzCgog
ICZEZWJ1Z01zZygzLCAiU2VhcmNoaW5nIGFsbCBMREFQIGdyb3VwczogIik7CgogICRmaWVsZF90
b19zZWFyY2g9ImNuIjsKICAkc2VhcmNoVmFsPSIkZmllbGRfdG9fc2VhcmNoPSoiOwogICgkcnRu
LCAkbnJlY29yZHMsICRyZWNvcmRYKSA9ICZRdWVyeTsgICNyZXN1bHQgb3V0cHV0IGluIHN1YnIg
UXVlcnkKICAKICBpZiAoICRydG4gbmUgIiIpIAogICAgeyAmd2FybigkcnRuKTsgfQogIGVsc2lm
ICggJG5yZWNvcmRzID09IDApCiAgICB7IFByaW50TWVzc2FnZSgiTm8gcmVjb3JkcyBmb3VuZCIp
O30gCiAgZWxzZQogICAgewogICAgJXJlY29yZHM9JSRyZWNvcmRYOwogICAgQGdyb3VwTGlzdD1A
YWRtaW5MaXN0PSgpOwogICAgZm9yZWFjaCAkZG4gKHNvcnQga2V5cyAlcmVjb3JkcykgewogICAg
ICBwdXNoIEBncm91cExpc3QsICRyZWNvcmRzeyRkbn17J2NuJ31bMF07IAogICAgICBpZiAoKCRy
ZWNvcmRzeyRkbn17J3Byb3h5J31bMF0gPX4gL14gKmNuICo9ICooLis/KSAqLCAqb3U9L2kpIHx8
CgkgICgkcmVjb3Jkc3skZG59eydtYW5hZ2VyJ31bMF0gPX4gL14gKmNuICo9ICooLis/KSAqLCAq
b3U9L2kpIAogICAgICAgICApIHsKICAgICAgICBwdXNoIEBhZG1pbkxpc3QsICQxOwogICAgICB9
IGVsc2UgewoJcHVzaCBAYWRtaW5MaXN0LCAnTm8gcHJveHkgb3IgbWFuYWdlciBkZWZpbmVkJzsK
ICAgICAgfQogICAgfQoKICAgICMgUHJpbnQgb3V0IGxpc3Qgb2YgZ3JvdXBzIHRvIGJlIHByb2Nl
c3NlZAogICAgaWYgKCRkZWJ1ZyA+PSAwKSB7CiAgICAgICBQcmludE1lc3NhZ2UocXtHcm91cCB0
byBiZSBwcm9jZXNzZWQ6IH0uCgkJICAgIGpvaW4ocXF7XG5Hcm91cCB0byBiZSBwcm9jZXNzZWQ6
IH0sQGdyb3VwTGlzdCkKCQkgICApOwogICAgICAgcHJpbnQgcXF7PDEtLUdyb3VwIHRvIGJlIHBy
b2Nlc3NlZDogfSwKICAgICAgICAgICAgIGpvaW4ocXF7LS0+XG48IS0tR3JvdXAgdG8gYmUgcHJv
Y2Vzc2VkOiB9LEBncm91cExpc3QpLAogICAgICAgICAgICAgcXF7LS0+XG59OwogICAgfQoKCgog
ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAg
ICAjIyMgSWYgd2UgbGlzdCBvbmx5IHRoZSBncm91cHMgb24gdGhlbiB3ZSBkbyBpdAogICAgIyMg
YW5kIGV4aXQKICAgIAogICAgaWYgKCRsaXN0b25seSA9PSAxKQogICAgICB7CiAgICAgIHByaW50
ICJMSVNUSU5HIE9GIEFMTCBHUk9VUFNcbiI7CiAgICAgIGZvciAoJGk9MDsgJGk8PSQjZ3JvdXBM
aXN0OyAkaSsrKQogICAgICAgIHsgcHJpbnQgIiAgIiAuICRncm91cExpc3RbJGldIC4gIlxuIiA7
IH0KICAgICAgJlJlbW92ZUxvY2tGaWxlOwogICAgICBsb2dNc2cyKCJJTkY6IEVuZGluZyBhZnRl
ciBsaXN0b25seVxuIik7CiAgICAgIGlmICgkaHRtbCA9PSAxKQogICAgICAgIHsgcHJpbnQgIjwv
Qk9EWT48L0hUTUw+XG4iOyB9CiAgICAgIGV4aXQgKDApOwogICAgICB9CiAgICBlbHNlCiAgICAg
IHsKICAgICAgIyBvcGVuIHJlc3VsdCBmaWxlIGFuZCBwcm9jZXNzIGVhY2ggbGluZQogICAgICBm
b3IgKCRpPTA7ICRpPD0kI2dyb3VwTGlzdDsgJGkrKykKICAgICAgICB7CgkkY3VyQWRtaW49JGFk
bWluTGlzdFskaV07CiAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwICRpOiAkZ3JvdXBMaXN0WyRp
XSwgYWRtaW49JGN1ckFkbWluIik7CiAgICAgICAgJkV4cGFuZF9PbmVfR3JvdXAoImNuPSRncm91
cExpc3RbJGldIik7CiAgICAgICAgfQogICAgICB9CiAgICB9ICAjZW5kIGlmIGVsc2UKICAgIGlm
ICgkZGVidWcgPj0gMCkgewogICAgICBQcmludE1lc3NhZ2Uoc2NhbGFyKEBncm91cExpc3QpLnFx
eyBncm91cHMgdXBkYXRlZFxufSk7CiAgICAgIHByaW50IHFxezwhLS0gfSxzY2FsYXIoQGdyb3Vw
TGlzdCkscXF7IGdyb3VwcyB1cGRhdGVkLS0+XG59OwogICAgfQogIAogIH0KJlJlbW92ZUxvY2tG
aWxlOwokdGltZVN0YW1wPWdtdGltZSh0aW1lKTsKY2hvbXAgJHRpbWVTdGFtcDsKJHRpbWVTdGFt
cD1+cy8uKiAvLzsKJGRhdGU9c2xiVGltZTMoJHRpbWVTdGFtcCk7CmxvZ01zZzIoIklORjogRW5k
aW5nXG4iKTsKJkRlYnVnTXNnKDMsICIkZGF0ZTogRW5kIG9mIHByb2dyYW06ICQwIik7CmlmICgk
ZGVidWcgPj0gMCkgewogIFByaW50TWVzc2FnZShxe0ZpbmlzaGVkIHByb2Nlc3NpbmcgYXQgfS5z
Y2FsYXIoZ210aW1lKHRpbWUpKS5xcXtcbn0pOwogIHByaW50IHFxezwhLS0gRmluaXNoZWQgcHJv
Y2Vzc2luZyBhdCB9LHNjYWxhcihnbXRpbWUodGltZSkpLHFxey0tPlxufTsKfQoKaWYgKCRodG1s
ID09IDEpCiAgeyBwcmludCAiPC9CT0RZPjwvSFRNTD5cbiI7IH0KCiM9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMKIyBF
TkQgT0YgTUFJTgojCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRXhwYW5kX09uZV9Hcm91
cCAKICB7CiAgbXkgJHJlY29yZDsKICBteSAlcmVjb3JkMTsKCiAgbXkgJGdyb3VwX25hbWUgPSAk
X1swXTsgIAogICZEZWJ1Z01zZyg1LCAiIyMjIyMgRXhwYW5kX09uZV9Hcm91cDogJGdyb3VwX25h
bWUiKTsgCiAgJGN1ckdyb3VwPSRncm91cF9uYW1lOwogICRjdXJHcm91cCA9fiBzLyAqY24gKj0g
Ki8vOwogIAogICMKICAjIGluaXRpYWxpemUgc29tZSBsb2NhbCB2YXJpYWJsZSAobmVlZCB0byBi
ZSBsb2NhbCBmb3IgcmVjdXJzaXZpdHkpLgogICMKICBteSAkdXBkYXRlX3RlbXBmaWxlICAgPSAg
IiR0bXBkaXIvdXBkYXRlLiRncm91cF9uYW1lLiQkLnRtcCI7IAogIG15ICR3YXJuX3RlbXBmaWxl
ICAgPSAgIiR0bXBkaXIvd2Fybi4kZ3JvdXBfbmFtZS4kJC50bXAiOyAKICBteSAkbWVtYmVyX3Rl
bXBmaWxlICAgPSAgIiR0bXBkaXIvbWVtYmVyLiRncm91cF9uYW1lLiQkLnRtcCI7IAogIG15ICRz
dWJzY3JpcHRpb25zRGVueVRvX3RlbXBmaWxlICA9ICAKICAgICIkdG1wZGlyL3N1YnNjcmlwdGlv
bnNEZW55VG8uJGdyb3VwX25hbWUuJCQudG1wIjsKICBteSAkc3Vic2NyaXB0aW9uc0dyYW50VG9f
dGVtcGZpbGUgPSAgCiAgICAiJHRtcGRpci9zdWJzY3JpcHRpb25zR3JhbnRUby4kZ3JvdXBfbmFt
ZS4kJC50bXAiOwogIAogIG15ICRpOwogIG15ICRqOwogIG15ICRrOwogIG15ICRwOwogIG15IEBw
OwogIG15ICRsaW5lOwogIG15ICRxdWVyeV9zdHI7CiAgbXkgJGNtZDsKICBteSAkcmVzOwogIG15
ICRuYl93YXJuOwogIG15ICRmaWVsZG5hbWU7CiAgbXkgJGRlbHRhOwogIG15ICRjb3VudDsKICBt
eSAkcXVlcnlfc3RyaW5nOwogIG15ICRhdHRyWDsKICBteSAkc2F2ZV9tZW1iZXJzOwogIG15ICR0
ZW1wOwogIG15ICRleHBub3RpZnk7CiAgbXkgJGdyb3VwX2FkbWluOwogIG15ICRncm91cF9tYWls
OwogIG15IEBuYW1lOwogIG15ICRzdGF0dXM7CiAgCiAgbXkgQG1lbWJlcl9saXN0OwogIG15IEBz
YXZlX21lbWJlcnM7CiAgbXkgQHJlbW92ZV9tZW1iZXJzOwogIG15IEBzdWJzY3JpcHRpb25zR3Jh
bnRUb19saXN0OwogIG15IEBzdWJzY3JpcHRpb25zRGVueVRvX2xpc3Q7CiAgbXkgQHdhcm5pbmdf
bGlzdDsKICBteSAlY2hnYXR0cnM7CiAgbXkgQHJlZmF0dHJzOwogIG15IEBhdHRyczsKICBteSAl
c2Vlbl9saXN0OwogIG15IEBhdHRyX2xpc3Q7CiAgbXkgQGdyb3VwX2xpc3Q7CiAgbXkgJGdyb3Vw
X3N0YXR1czsKICAKICAkZXJyZmxhZyA9IDA7ICMgbm8gZXJyb3JzIHlldAogICRlcnJ0ZXh0TXNn
ID0gIiI7CiAgJHJlY3VyX2xldmVsKys7CiAgJkRlYnVnTXNnKDIsICJ8Iik7CiAgJkRlYnVnTXNn
KDIsICJ8Iik7CiAgJkRlYnVnTXNnKDIsICIrLS1Qcm9jZXNzaW5nICRncm91cF9uYW1lIik7CiAg
CiAgaWYgKCRkZWJ1ZyA+PSAwKSB7CiAgICBQcmludE1lc3NhZ2UoIlByb2Nlc3NpbmcgJGdyb3Vw
X25hbWUiKTsgCiAgICBwcmludCAiPCEtLSBQcm9jZXNzaW5nICRncm91cF9uYW1lIGF0ICIsc2Nh
bGFyKGdtdGltZSh0aW1lKSksIkdNVCAtLT5cbiI7CiAgfQogICRlcnJ0ZXh0PSJHZXR0aW5nIHN0
YXR1cyI7CiAgKCRydG4sICRzdGF0dXMpID0gZ2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFt
ZSwgJGdyb3VwYmFzZWRuLCAnc3RhdHVzOicpOwogIGlmICggJHJ0biBuZSAiIikgCiAgICB7ICZ3
YXJuKCRydG4pOyB9CiAgJkRlYnVnTXNnKDQsInN0YXR1cz0gJHN0YXR1cyIpOwoKICBpZiAoaW5k
ZXgobGMoJHN0YXR1cyksIGxjKCdJbmFjdGl2ZScpKSA+PSAwKQogICAgeyAkZ3JvdXBfc3RhdHVz
ID0gIkluYWN0aXZlIjsgfQogIGVsc2UKICAgIHsgJGdyb3VwX3N0YXR1cyA9ICJBY3RpdmUiOyB9
CgogICZEZWJ1Z01zZyg0LCJncm91cHN0YXR1cz0gJGdyb3VwX3N0YXR1cyIpOwoKICBpZiAoJGdy
b3VwX3N0YXR1cyBlcSAnSW5hY3RpdmUnKQogICAgewogICAgJkRlYnVnTXNnKDQsIlNraXBwaW5n
IGluYWN0aXZlIGdyb3VwIik7CiAgICByZXR1cm47CiAgICB9CgogICgkcnRuLCAkc3RhdHVzKSA9
IGdldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsICRncm91cGJhc2VkbiwgJ3N0YXR1czon
KTsKICBpZiAoICRydG4gbmUgIiIpIAogICAgeyAmd2FybigkcnRuKTsgfQogICZEZWJ1Z01zZyg0
LCJzdGF0dXM9ICRzdGF0dXMiKTsKCiAgaWYgKCRzdGF0dXMgPX4gL3RvIGJlIHJlbmFtZWQvKQog
ICAgewogICAgJG9sZE5hbWU9JHN0YXR1czsKICAgICRvbGROYW1lID1+IHMvdG8gYmUgcmVuYW1l
ZDogLy87CiAgICAmRGVidWdNc2coNCwib2xkTmFtZT0gJG9sZE5hbWUiKTsKICAgICRhdHRyPSdz
dWJzY3JpcHRpb25zZ3JhbnRvJzsKICAgICZyZW5hbWVHcm91cFJlZnMoJGxkYXAsICRvbGROYW1l
LCAkY3VyR3JvdXAsICRhdHRyKTsKICAgICRhdHRyPSdzdWJzY3JpcHRpb25zZGVueXRvJzsKICAg
ICZyZW5hbWVHcm91cFJlZnMoJGxkYXAsICRvbGROYW1lLCAkY3VyR3JvdXAsICRhdHRyKTsKICAg
ICZEZWJ1Z01zZyg0LCJncm91cDogY249JGN1ckdyb3VwIHdhcyByZW5hbWVkLCB3YXMgJG9sZE5h
bWUiKTsKICAgIH0KCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwogICMjIyBIZXJlIHN0YXJ0IHRoZSBncm91cCBwcm9jZXNzaW5nCiAgIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgc2V0IGdy
b3VwIHN0YXR1cyBzaW5jZSB3ZSBhcmUgd29ya2luZyBvbiBpdC4KICBpZiAoICRhbmFseXplICE9
IDEpCiAgICB7CiAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsIAog
ICAgICAkZ3JvdXBiYXNlZG4sICJzdGF0dXM6IiwgIkJlaW5nIFByb2Nlc3NlZCIpOwogICAgfQog
CiAgaWYgKCAkcnRuIG5lICIiKSAKICAgIHsgJndhcm4oJHJ0bik7IH0KCiAgIyBmaXJzdCBjaGVj
ayBpZiB0aGUgZ3JvdXAgbmVlZHMgZXhwaXJhdGlvbiBkb25lCiAgJGVycnRleHQ9IkdldHRpbmcg
bGFzdG1vZGlmaWVkb24iOwogICRhdHRyPSdsYXN0bW9kaWZpZWRvbic7CiAgJGZpbHRlcj0iJGdy
b3VwX25hbWUiOwogICgkcnRuLCAkbGFzdG1vZGlmaWVkb24pID0gJmdldEF0dHJPbmUoJGxkYXAs
ICRncm91cGJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwogIGlmICggJHJ0biBuZSAiIikgCiAgICB7
ICZ3YXJuKCRydG4pOyB9CiAgJkRlYnVnTXNnKDQsImxhc3Rtb2RpZmllZG9uPSAkbGFzdG1vZGlm
aWVkb24iKTsKCiAgJGVycnRleHQ9J0dldHRpbmcgZ3JvdXAgc3RhdHVzJzsKCiAgKCRydG4sICRz
dGF0dXMpID0gZ2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3VwYmFzZWRuLCAn
c3RhdHVzOicpOwogIGlmICggJHJ0biBuZSAiIikgCiAgICB7ICZ3YXJuKCRydG4pOyB9CiAgJkRl
YnVnTXNnKDQsInN0YXR1cz0gJHN0YXR1cyIpOwoKICBpZiAoaW5kZXgobGMoJHN0YXR1cyksIGxj
KCdJbmFjdGl2ZScpKSA+PSAwKQogICAgeyAkZ3JvdXBfc3RhdHVzID0gIkluYWN0aXZlIjsgfQog
IGVsc2UKICAgIHsgJGdyb3VwX3N0YXR1cyA9ICJBY3RpdmUiOyB9CgogICZEZWJ1Z01zZyg0LCJn
cm91cHN0YXR1cz0gJGdyb3VwX3N0YXR1cyIpOwoKICAkdGVtcCA9ICZEYXRlX0NtcCgkbGFzdG1v
ZGlmaWVkb24sICRleHBpcmVfZGF0ZSk7CiAgaWYgKCgkdGVtcCA8PSAwKSBhbmQgCiAgICAgICgk
bGFzdG1vZGlmaWVkb24gbmUgJycpIGFuZAogICAgICAoJGdyb3VwX3N0YXR1cyBuZSAnSW5hY3Rp
dmUnKSBhbmQKICAgICAgKCRncm91cF9leHBpcmUgIT0gMCkpCiAgICB7CiAgICAjIGdyb3VwIG5l
ZWRzIHRvIGJlIGV4cGlyZWQKICAgICMgaWYgZXhwbm90aWZ5IG5vdCBzZW50LCBzZW5kIGl0Cgog
ICAgJGVycnRleHQ9IkdldHRpbmcgZXhwbm90aWZ5IjsKICAgICgkcnRuLCAkZXhwbm90aWZ5KSA9
IAogICAgICBnZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4sICdl
eHBub3RpZnk6Jyk7CiAgICAmRGVidWdNc2coNCwiZXhwbm90aWZ5PSAkZXhwbm90aWZ5Iik7CiAg
ICBpZiAoICRydG4gbmUgIiIpIAogICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICBlbHNlCiAgICAg
IHsKICAgICAgaWYgKCRleHBub3RpZnkgZXEgJycpCiAgICAgICAgewogICAgICAgIGlmICggJGFu
YWx5emUgPT0gMSkKICAgICAgICAgIHsgCiAgICAgICAgICBwcmludCAiR3JvdXAgJGdyb3VwX25h
bWUgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkIGZvciBleHBpcmF0aW9uLFxuIjsKICAgICAgICAgIHBy
aW50ICJ3aXRoIG1haWwgc2VudCB0byBncm91cCBhZG1pblxuIjsKICAgICAgICAgIH0KICAgICAg
ICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAjIGdldCBncm91cCBhZG1pbgogIAogICAgICAg
ICAgJGVycnRleHQ9IkdldHRpbmcgYWRtaW5pc3RyYXRvciI7CiAgICAgICAgICAkYXR0cj0ncHJv
eHknOwogICAgICAgICAgJGZpbHRlcj0iJGdyb3VwX25hbWUiOwogICAgICAgICAgKCRydG4sICRn
cm91cF9hZG1pbikgPSAmZ2V0QXR0ck9uZSgkbGRhcCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCAk
YXR0cik7CiAgICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgICB7ICZ3YXJuKCRy
dG4pOyB9CiAgICAgICAgICAmRGVidWdNc2coNCwiZ3JvdXBfYWRtaW49ICRncm91cF9hZG1pbiIp
OwogICAgICAgICAgaWYgKCAkZ3JvdXBfYWRtaW4gZXEgJycpCiAgICAgICAgICAgIHsgJndhcm4o
Im5vIGdyb3VwIGFkbWluIGZvciAkZ3JvdXBfbmFtZSIpOyB9CiAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgIHsgCiAgICAgICAgICAgICMgaGF2ZSBjbiwgZmlsdGVyIGl0IGFuZCBnZXQgbWFpbGFk
ZHIKICAgICAgICAgICAgJGdyb3VwX2FkbWluID1+IHMvXiAqY24gKj0gKi8vOwogICAgICAgICAg
ICAkZ3JvdXBfYWRtaW4gPX4gcy8sLiokLy87CiAgICAgICAgCiAgICAgICAgICAgICRlcnJ0ZXh0
PSJHZXR0aW5nIG1haWwiOwogICAgICAgICAgICAkYXR0cj0nbWFpbCc7CiAgICAgICAgICAgICRm
aWx0ZXI9ImNuPSRncm91cF9hZG1pbiI7CiAgICAgICAgICAgIHByaW50ICJmaWx0ZXI9JyRmaWx0
ZXInIjsKICAgICAgICAgICAgKCRydG4sICRncm91cF9tYWlsKSA9IAogICAgICAgICAgICAgICZn
ZXRBdHRyT25lKCRsZGFwLCAkcGVvcGxlYmFzZWRuLCAkZmlsdGVyLCAkYXR0cik7CiAgICAgICAg
ICAgICZEZWJ1Z01zZyg0LCJncm91cF9tYWlsPSAkZ3JvdXBfbWFpbCIpOwogICAgICAgICAgICBp
ZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgIHsgI2hhdmUgdXNlciwgc2VuZCB0aGUgbWFpbAogICAgICAg
ICAgICAgIHByaW50ICJTZW5kaW5nIGV4cGlyZSB3YXJuaW5nIHRvICRncm91cF9tYWlsXG4iOwog
ICAgICAgICAgICAgICZEZWJ1Z01zZyg0LCJzZW5kaW5nIG1haWw6IiAuCiAgICAgICAgICAgICAg
ICAibWFpbCAtcyBcIkdyb3VwICRncm91cF9uYW1lXCIgJGdyb3VwX21haWwgPCIgLiAKICAgICAg
ICAgICAgICAgICIgJHNyY2Rpci9tYWlsLm1zZyIpOwogICAgICAgICAgICAgIG9wZW4gKE1BSUxN
U0csICI+JHRtcGRpci8kJC5tc2cyIikgb3IKICAgICAgICAgICAgICAgIGRpZSAidW5hYmxlIHRv
IG9wZW4gbWFpbCBtZXNzYWdlIGZpbGUiOwogIAogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cg
IkRlYXIgR3JvdXAgQWRtaW5pc3RyYXRvcixcblxuIjsKICAgICAgICAgICAgICBwcmludCBNQUlM
TVNHICJZb3UgYXJlIHRoZSBhZG1pbmlzdHJhdG9yIGZvciB0aGUgZ3JvdXBcbiI7CiAgICAgICAg
ICAgICAgcHJpbnQgTUFJTE1TRyAiICRncm91cF9uYW1lXG4iOwogICAgICAgICAgICAgIHByaW50
IE1BSUxNU0cgImFuZCBhcyBpdCBoYXMgbm90IGJlZW4gdXBkYXRlZCByZWNlbnRseSwgIiAuCiAg
ICAgICAgICAgICAgICAidGhlIGdyb3VwIHdpbGwgYmUgc2V0IHRvXG4iOwogICAgICAgICAgICAg
IHByaW50IE1BSUxNU0cgImluYWN0aXZlIG9uICRleHBpcmVfZGF0ZTIuICAiIC4KICAgICAgICAg
ICAgICAgICJUaGlzIHdpbGwgbWVhbiB0aGF0IHRoZSBncm91cCBoYXMgbm8gbWVtYmVycywgc29c
biI7CiAgICAgICAgICAgICAgcHJpbnQgTUFJTE1TRyAiaXQgY2FuIG5vdCBsb25nZXIgdG8gdXNl
ZCB0byBhY2Nlc3MgIiAuCiAgICAgICAgICAgICAgICAiY29udHJvbHMsIGV0Yy5cblxuIjsKICAg
ICAgICAgICAgICBwcmludCBNQUlMTVNHICJZb3UgY2FuIHVwZGF0ZSB0aGUgZ3JvdXAgdmlhOlxu
IjsKICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICIgIGh0dHA6Ly9kZWJ1c3N5LmhvdXN0b24u
b21uZXMuc2xiLmNvbS8iIC4KICAgICAgICAgICAgICAgICJsZGFwL2xkYXAzL2dycGluZGV4LmNn
aVxuXG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIllvdSB3aWxsIGJlIHJlbWluZGVk
IGFib3V0IHRoaXMgaWYgdGhlIGdyb3VwICIgLgogICAgICAgICAgICAgICAgImlzIHN1c3BlbmRl
ZC5cblxuIjsKICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICJTaW5jZXJlbHlcbiI7CiAgICAg
ICAgICAgICAgcHJpbnQgTUFJTE1TRyAiTERBUCBBZG1pbmlzdHJhdG9yXG4iOyAgICAgICAgCiAg
ICAgICAgICAgICAgY2xvc2UgTUFJTE1TRzsKICAgICAgICAgICAgICAjc3lzdGVtKCJtYWlsIC1z
IFwiRGlyZWN0b3J5IEdyb3VwICRncm91cF9uYW1lICIgLgogICAgICAgICAgICAgICMgICJ3aWxs
IGJlIHN1c3BlbmRlZCBvbiAkZXhwaXJlX2RhdGUyXCIgJGdyb3VwX21haWwiIC4KICAgICAgICAg
ICAgICAjICAiIDwgJHRtcGRpci8kJC5tc2cyIik7CiAgICAgICAgICAgICAgc3lzdGVtKCJlY2hv
IFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiAuCiAgICAgICAgICAgICAgICAiLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIgPj4kbG9nZGlyL21haWwiKTsKICAgICAgICAg
ICAgICBzeXN0ZW0oImVjaG8gXCJTdWJqZWN0OiBEaXJlY3RvcnkgZ3JvdXAgJGdyb3VwX25hbWUg
IiAuCiAgICAgICAgICAgICAgICAid2lsbCBiZSBzdXNwZW5kZWQgb24gJGV4cGlyZV9kYXRlMlwi
ID4+JGxvZ2Rpci9tYWlsIik7CiAgICAgICAgICAgICAgc3lzdGVtKCJlY2hvIFwiVG86ICAgICAg
JGdyb3VwX21haWxcIiA+PiRsb2dkaXIvbWFpbCIpOwogICAgICAgICAgICAgIHN5c3RlbSgiZWNo
byBcIiAgICAgICAgICAgICAgICAgICAgXCIgPj4kbG9nZGlyL21haWwiKTsKICAgICAgICAgICAg
ICBzeXN0ZW0oImNhdCA8ICR0bXBkaXIvJCQubXNnMiA+PiAkbG9nZGlyL21haWwiKTsKICAgICAg
ICAgIAogICAgICAgICAgICAgIGlmICgka2VlcHRlbXAgPT0gMCkKICAgICAgICAgICAgICAgIHsg
dW5saW5rICIkdG1wZGlyLyQkLm1zZzIiO30KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICRy
dG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgCiAgICAgICAgICAgICAgJGdy
b3VwYmFzZWRuLCAiZXhwbm90aWZ5OiIsICJNYWlsIFNlbnQgIiAuICZzbGJUaW1lMyk7CiAgICAg
ICAgICAgCiAgICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgeyAmd2Fy
bigkcnRuKTsgfQogICAgICAgICAgICBpZiAoICRlcnJmbGFnID09IDApCiAgICAgICAgICAgICAg
eyAKICAgICAgICAgICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUs
ICRncm91cGJhc2VkbiwgCiAgICAgICAgICAgICAgICAic3RhdHVzOiIsICJPSyIpOyAKICAgICAg
ICAgICAKICAgICAgICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgICAgICAgeyAm
d2FybigkcnRuKTsgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgIHsgCiAgICAgICAgICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9u
YW1lLCAkZ3JvdXBiYXNlZG4sICJzdGF0dXM6IiwgCiAgICAgICAgICAgICAgICAiRVJST1IgIiAu
CiAgICAgICAgICAgICAgICAkZXJydGV4dE1zZyk7CiAgICAgICAgICAgCiAgICAgICAgICAgICAg
aWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgICAg
ICAgIAogICAgICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgICB7ICZ3
YXJuKCRydG4pOyB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAg
ICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICMgZWxzZSBjaGVjayBpZiBvbmUg
d2VlayBwYXN0IG1haWwgc2VudCAKICAgICAgICAjIGFuZCBzZXQgZ3JvdXAgdG8gaW5hY3RpdmUg
aWYgc28uCiAgICAgICAgaWYgKGxlbmd0aCgkZXhwbm90aWZ5KSA8IDE1KQogICAgICAgICAgeyAm
d2FybigiQmFkIGV4cGlyYXRpb24gdGltZXN0YW1wOiAkZXhwbm90aWZ5Iik7IH0KICAgICAgICBl
bHNlCiAgICAgICAgICB7CiAgICAgICAgICAkZXhwaXJlX2RhdGUyPXN1YnN0cigkZXhwbm90aWZ5
LCAxMSk7CiAgICAgICAgICBpZiAoJGRlYnVnID4gMCkKICAgICAgICAgICAgeyBwcmludCAiZXhw
aXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIiOyB9CiAgICAgICAgICAKICAgICAgICAgICRleHBpcmVf
ZGF0ZTIgPSAmRGF0ZUNhbGMoInRvZGF5IiwgIi0iIC4gJGdyb3VwX2V4cGlyZSAuIAogICAgICAg
ICAgICAiIGRheXMiLCBcJGVycik7CiAgICAgICAgICAkdGVtcCA9ICZEYXRlX0NtcCgkbGFzdG1v
ZGlmaWVkb24sICRleHBpcmVfZGF0ZTIpOwogICAgICAgICAgaWYgKCRkZWJ1ZyA+IDApCiAgICAg
ICAgICAgIHsgcHJpbnQgImV4cGlyZV9kYXRlMj0kZXhwaXJlX2RhdGUyIjsgfQogICAgICAgICAg
aWYgKCR0ZW1wIDw9IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKCRhbmFseXplID09
IDEpCiAgICAgICAgICAgICAgeyBwcmludCAiR3JvdXAgJGdyb3VwX25hbWUgbmVlZHMgdG8gYmUg
ZXhwaXJlZFxuIjsgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgCiAgICAgICAgICAg
ICAgICAkZ3JvdXBiYXNlZG4sICJzdGF0dXM6IiwgIkluYWN0aXZlIik7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgICAgICAgeyAmd2Fybigk
cnRuKTsgfQogICAgICAgICAgICAKICAgICAgICAgICAgICAmRGVidWdNc2coNCwiKioqKiBncm91
cCBleHBpcmVkICoqKiIpOwogICAgICAgICAgICAgIHByaW50ICJHcm91cCAkZ3JvdXBfbmFtZSBl
eHBpcmVkXG4iOwoKICAgICAgICAgICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwkZ3Jv
dXBfbmFtZSwgJGdyb3VwYmFzZWRuLCAKICAgICAgICAgICAgICAgICJleHBhbmRlZDoiLCAkZGF0
ZSk7CiAgICAgICAgCiAgICAgICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAg
ICAgIHsgJndhcm4oJHJ0bik7IH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAg
ICAgIH0KICAgICAgICB9ICAKICAgICAgfQogICAgfQogIGVsc2UKICAgIHsgJkRlYnVnTXNnKDQs
ICIqKioqIGdyb3VwIG5vdCBleHBpcmluZyAqKioiKTsgCiAgICAjIyMjIyMjIyMjIHByb2Nlc3Mg
bWVtYmVycyBoZXJlCiAgICAjIG5vdyBzYXZlIHRoZSB1bmlxdWVtZW1iZXIgbGlzdCBmb3IgbGF0
ZXIKICAgICRlcnJ0ZXh0PSdHZXR0aW5nIE1lbWJlciBMaXN0JzsKICAgICRhdHRyPSd1bmlxdWVt
ZW1iZXInOwogICAgJGZpbHRlcj0iJGdyb3VwX25hbWUiOwogICAgJHNhdmVfbWVtYmVycz0oKTsK
ICAgICgkcnRuLCAkYXR0clgpID0gJmdldEF0dHIoJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRl
ciwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAmd2FybigkcnRuKTsgfQog
IAogICAgQHNhdmVfbWVtYmVycz1AJGF0dHJYOwogICAgQHNhdmVfbWVtYmVycz1zb3J0KEBzYXZl
X21lbWJlcnMpOwogIAogICAgaWYgKCRzaG93ID4gMCkKICAgICAgewogICAgICBkaXNwQXJyYXko
Ik9yaWdpbmFsIG1lbWJlciBsaXN0IGZvciBncm91cCAnJGdyb3VwX25hbWUnIiwgQHNhdmVfbWVt
YmVycyk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICBQcmludE1lc3NhZ2UoICIgICIg
LiBzY2FsYXIoQHNhdmVfbWVtYmVycykgLiAiIG1lbWJlcnMiIC4KICAgICAgICAiIGZvciBPcmln
aW5hbCBMaXN0Iik7IAogICAgICB9CiAgICAKICAgICMKICAgICMgR2V0IHRoZSBxdWVyeSBzdHJp
bmcKICAgICMKICAgIAogICAgJkRlYnVnTXNnICgzLCAiR2V0dGluZyB0aGUgcXVlcnkgc3RyaW5n
IGZvciAnJGdyb3VwX25hbWUnIik7CiAgICAkZXJydGV4dD0iR2V0dGluZyBxdWVyeSBzdHJpbmci
OwogICAgJGF0dHI9J3N1YnNjcmlwdGlvbnMnOwogICAgJGZpbHRlcj0iJGdyb3VwX25hbWUiOyAg
IyBhbHJlYWR5IGhhcyBjbj0KICAgICRxdWVyeV9zdHJpbmcgPSAiIjsKICAgICRydG4gPSAnJzsK
ICAgICgkcnRuLCAkcXVlcnlfc3RyaW5nKSA9ICZnZXRBdHRyT25lKCRsZGFwLCAkZ3JvdXBiYXNl
ZG4sICRmaWx0ZXIsICRhdHRyKTsKICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgIHsgCiAgICAg
ICZ3YXJuKCRydG4pOyAKICAgICAgfQogICAgQG1lbWJlcl9saXN0ID0gKCk7CiAgCiAgICBpZiAo
JHF1ZXJ5X3N0cmluZyBuZSAiIikgI3RoZXJlIGlzIGEgcXVlcnkgc3RyaW5nIHRvIHByb2Nlc3MK
ICAgICAgeyAgICAgICAgICAgICAgICAgICAjc28gZ2V0IHRoZSBtZW1iZXJzIChkbnMpCiAgICAg
ICZEZWJ1Z01zZyAoMywgIlF1ZXJ5IHN0cmluZyBpczogPCRxdWVyeV9zdHJpbmc+Iik7CiAgICAK
ICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwogICAgICAjICNxdWVyeV9sZGFwIHdpdGggdGhlIHF1ZXJ5IHN0cmluZywgcHV0
IHJlc3VsdCBpbiBhcnJheQogIAogICAgICBAYXR0cnMgPSAKICAgICAgICAoCiAgICAgICAgImNu
IiwKICAgICAgICApOwogICAgICAKICAgICAgaWYgKGluZGV4KCRxdWVyeV9zdHJpbmcsICIoIikg
PCAwICkKICAgICAgICB7ICRmaWx0ZXI9IigkcXVlcnlfc3RyaW5nKSI7IH0KICAgICAgZWxzZQog
ICAgICAgIHsgJGZpbHRlcj0iJHF1ZXJ5X3N0cmluZyI7IH0KICAKICAgICAgJGVycnRleHQ9IlBy
b2Nlc3NpbmcgcXVlcnkgc3RyaW5nICckcXVlcnlfc3RyaW5nJyI7CiAgICAgICZEZWJ1Z01zZyg0
LCJRdWVyeWluZyB1c2VycyB2aWEgcXVlcnkgc3RyaW5nICckcXVlcnlfc3RyaW5nJyIpOwogICAg
ICBteSAoJHJ0biwgJG5lbnRyaWVzLCAkcmVjb3JkMSkgPSAKICAgICAgICAmZG9MREFQU2VhcmNo
KCRsZGFwLCAkcGVvcGxlYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzKTsKICAKICAgICAgaWYgKCRy
dG4gbmUgJycpCiAgICAgICAgeyAmd2FybigkcnRuKTsgfQogIAogICAgICAmRGVidWdNc2coNCwi
UXVlcnlpbmcgZG9uZSIpOwogICAgICAlcmVjb3JkID0gJSRyZWNvcmQxOwogICAgICBpZiAoJG5l
bnRyaWVzID09IDApIAogICAgICAgIHsgJkRlYnVnTXNnKDMsICJObyBtZW1iZXJzIGZvdW5kIik7
IH0KICAKICAgICAgZm9yZWFjaCAkZG4gKHNvcnQga2V5cyAlcmVjb3JkKSAKICAgICAgICB7IAog
ICAgICAgIGNob21wKCRkbik7CiAgICAgICAgJGRuID1+IHMvXiAqY24gKj0gKi8vOyAgICAjIHJl
bW92ZSBjbj0gZnJvbSBkbiAodWlkIG9rIHRvbykgCiAgICAgICAgIyAkZG4gPX4gcy8sLiokLy87
ICAgICAgICAgICMgcmVtb3ZlIGFsbCBidXQgY24gZnJvbSBkbiAodWlkIG9rIHRvbykKICAgICAg
ICAkZG4gPX4gcy8sLltPb10qJC8vOwogICAgICAgICRkbiA9ICZDbGVhblN0cmluZygkZG4pOwog
ICAgICAgIHB1c2ggQG1lbWJlcl9saXN0LCAkZG47IAogICAgICAgIH0KICAKICAgICAgJGNvdW50
ID0gc2NhbGFyKEBtZW1iZXJfbGlzdCk7CiAgICAgICZEZWJ1Z01zZygzLCAiRm91bmQgJGNvdW50
IHJlY29yZChzKSB3aXRoIHRoZSBxdWVyeSBzdHJpbmciKTsKICAgIAogICAgICAjIyMjIEdyb3Vw
IGhhcyBiZWVuIGV4cGFuZGVkIDFzdCBwaGFzZQogICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgIyBOb3cgcXVl
cnkgc2FtZSByZWNvcmQgYW5kIGdldCBsaXN0IG9mIGFsbG93ZWQgcGVvcGxlIG9yIGdyb3VwCiAg
ICAgICMgZm9yIGVhY2ggb2JqZWN0OiBpZiBwZXJzb24gdGhlbiBhZGQgdG8gbWVtYmVybGlzdCwg
CiAgICAgICMgaWYgaXQgaXMgYSBncm91cCBjYWxsIHJlY3Vyc2l2ZWx5IHRoaXMgcHJvY2VkdXJl
LgogICAgCiAgICAgIH0gCiAgICBlbHNlIAogICAgICB7ICZEZWJ1Z01zZygzLCAiTm8gcXVlcnkg
c3RyaW5nIGZvdW5kIik7IH0KICAKICAgIGlmICgkZGVidWcgPiAwKQogICAgICB7ICZkaXNwQXJy
YXkoIk1lbWJlciBMaXN0IEFmdGVyIFF1ZXJ5IFN0cmluZyIsIEBtZW1iZXJfbGlzdCk7IH0KICAg
IGVsc2UKICAgICAgeyAKICAgICAgUHJpbnRNZXNzYWdlKCIgICIgLiBzY2FsYXIoQG1lbWJlcl9s
aXN0KSAuICIgbWVtYmVycyAiIC4KICAgICAgICAiYWZ0ZXIgUXVlcnkgU3RyaW5nIHByb2Nlc3Nl
ZCIpOwogICAgICB9CiAgCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAgIyBub3cgZ2V0IHRoZSBncmFudHRvIGxpc3QgYW5kIGFkZCBpdCBpbgogICAgIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICZEZWJ1Z01zZygzLCAi
UXVlcnlpbmcgTERBUCB0byBnZXQgdGhlIHN1YnNjcmlwdGlvbnNHcmFudFRvICIgLgogICAgICAi
cGFydCBmb3IgJyRncm91cF9uYW1lJyIpOwogICAgJGVycnRleHQ9IkdldHRpbmcgR3JhbnQgTGlz
dCI7CiAgICAkZmlsdGVyPSIkZ3JvdXBfbmFtZSI7ICAjIGFscmVhZHkgaGFzIGNuPQogICAgJGF0
dHI9InN1YnNjcmlwdGlvbnNncmFudHRvIjsKICAgICgkcnRuLCAkYXR0clgpID1nZXRBdHRyKCRs
ZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAgIGlmICggJHJ0biBuZSAiIikg
CiAgICAgIHsgCiAgICAgICZ3YXJuKCRydG4pOyAKICAgICAgfQogICAgQGF0dHJfbGlzdD1AJGF0
dHJYOwogICAgaWYgKCQjYXR0cl9saXN0ID49IDApICN0aGVyZSBpcyBhIGdyYW50IHRvIHBhcnQg
dG8gcHJvY2VzcwogICAgICB7CiAgICAgIEBzdWJzY3JpcHRpb25zR3JhbnRUb19saXN0ID0gQGF0
dHJfbGlzdDsKICAgICAgJkRlYnVnTXNnICg0LCAiJyRncm91cF9uYW1lJyBzdWJzY3JpcHRpb25z
R3JhbnRUbyBsaXN0IGlzOiIpOwogICAgICBmb3IgKCRpPTA7ICRpPD0kI3N1YnNjcmlwdGlvbnNH
cmFudFRvX2xpc3Q7ICRpKyspCiAgICAgICAgeyAmRGVidWdNc2cgKDQsICIgICIgLiAkc3Vic2Ny
aXB0aW9uc0dyYW50VG9fbGlzdFskaV0pOyB9CiAgICAgICRjb3VudCA9ICQjc3Vic2NyaXB0aW9u
c0dyYW50VG9fbGlzdCsxOwogICAgICAmRGVidWdNc2cgKDMsICJGb3VuZCAkY291bnQgcmVjb3Jk
cyB0byBncmFudCIgLgogICAgICAgICJQcm9jZXNzaW5nIHN1YnNjcmlwdGlvbnNHcmFudFRvIHBh
cnQiKTsgCiAgICAgIGZvcmVhY2ggJHAgKEBzdWJzY3JpcHRpb25zR3JhbnRUb19saXN0KQogICAg
ICAgIHsKICAgICAgICBpZiAoIChpbmRleCgkcCwgJ2NuPScpIDwgMCApIGFuZAogICAgICAgICAg
ICAgKGxjKCRwKSAhfiAnZ3JvdXAgJyApICkKICAgICAgICAgIHsKICAgICAgICAgICNuZWVkIHRv
IGdldCBjbiBmcm9tIHVpZAogICAgICAgICAgY2hvbXAoJHApOwogICAgICAgICAgJHA9JkNsZWFu
U3RyaW5nKCRwKTsKICAgICAgICAgICgkcnRuLCRwLCRidWZmKT0mZ2V0Q25Gcm9tVWlkKCRwKTsK
ICAgICAgICAgIGlmICgkcnRuIG5lICcnKQogICAgICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAg
ICAgICAgICBpZiAoJHAgZXEgJycpCiAgICAgICAgICAgIHsgJHAgPSAkYnVmZjsgfQogICAgICAg
ICAgfQogICAgICAgICRwID1+IHMvXiAqY24gKj0gKi8vOyAgICAjIHJlbW92ZSBjbj0gZnJvbSBk
biAodWlkIG9rIHRvbykgCiAgICAgICAgIyAkcCA9fiBzLywuKiQvLzsgICAgICAgICAgIyByZW1v
dmUgYWxsIGJ1dCBjbiBmcm9tIGRuICh1aWQgb2sgdG9vKSAKICAgICAgICAkcCA9fiBzLywuW09v
XT0qJC8vOwogICAgICAgICRwID0gJkNsZWFuU3RyaW5nICgkcCk7CiAgICAgICAgaWYgKGxjKCRw
KSA9fiAnLCAqb3U9Z3JvdXAgKiwnKQogICAgICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDQs
ICIjIyMjIGZvdW5kIGdyb3VwICckcCcgISEhISIpOwogICAgICAgICAgJHAgPX4gcy8gKiwgKm91
PW1nICosICpvdT1ncm91cCAqLC4rJC8vaTsKCSAgaWYgKGxjKCRncm91cF9uYW1lKSBuZSAgbGMo
cXF7Y249JHB9KSB7ICMgRG9lcyBncm91cCBpbmNsdWRlcyBpdHNlbGYKCSAgICAkcnRuPSZnZXRH
cm91cE1lbWJlcnMoJHAsIDApOwoJICAgIGlmICgkcnRuIG5lICcnKSB7CgkgICAgICAmd2Fybigk
cnRuKTsgCgkgICAgfSBlbHNlIHsKCSAgICAgIHB1c2ggQG1lbWJlcl9saXN0LCBAbWVtYmVyTGlz
dDsKCSAgICB9OwoJICB9CiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewogICAg
ICAgICAgIyMjIHdlIGFkZCB0aGUgb2JqZWN0IHRvIHRoZSBtZW1iZXIgbGlzdAogICAgICAgICAg
cHVzaCBAbWVtYmVyX2xpc3QsICRwCiAgICAgICAgICB9CiAgICAgICAgfSAjZW5kIGZvcmVhY2gK
ICAgICAgfSAKICAgIGVsc2UgCiAgICAgIHsgJkRlYnVnTXNnKDMsICJObyBHcmFudCB0byBsaXN0
IGZvdW5kIikgOyB9CiAgICAKICAgIGlmICggJGRlYnVnID4gMCkKICAgICAgeyBkaXNwQXJyYXko
Ik1lbWJlciBMaXN0IGFmdGVyIEdyYW50IHRvIiwgQG1lbWJlcl9saXN0KTsgfQogICAgZWxzZQog
ICAgICB7IAogICAgICBQcmludE1lc3NhZ2UoIiAgIiAuIHNjYWxhcihAbWVtYmVyX2xpc3QpIC4g
IiBtZW1iZXJzICIgLgogICAgICAgICJhZnRlciBHcmFudCBUbyBwcm9jZXNzZWQiKTsKICAgICAg
fQogIAogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBEbyB0aGUgc2FtZSB3aXRoIGRlbnkgZ3JvdXAgIyBh
ZGQgZGVuaWVkIG1lbWJlciB0byBhIHNlcGFyYXRlIGZpbGUKICAgICMKICAgICZEZWJ1Z01zZygz
LCAiUXVlcnlpbmcgTERBUCB0byBnZXQgdGhlIHN1YnNjcmlwdGlvbnNEZW55VG8gcGFydCIpOwog
ICAgJGVycnRleHQ9IkdldHRpbmcgRGVueSBMaXN0IjsKICAgICRmaWx0ZXI9JGdyb3VwX25hbWU7
CiAgICAkYXR0cj0nc3Vic2NyaXB0aW9uc2Rlbnl0byc7CiAgICBAbWVtYmVyTGlzdCA9ICgpOwog
ICAgCiAgICAoJHJ0biwgJGF0dHJYKSA9IGdldEF0dHIoJGxkYXAsICRncm91cGJhc2VkbiwgJGZp
bHRlciwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAKICAgICAgJndhcm4o
JHJ0bik7IAogICAgICB9CiAgICBAYXR0cl9saXN0PUAkYXR0clg7CiAgCiAgICBpZiAoJCNhdHRy
X2xpc3QgPj0gMCkgI3RoZXJlIGlzIGEgc3Vic2NyaXB0aW9uc0RlbnlUbyBwYXJ0IHRvIHByb2Nl
c3MKICAgICAgewogICAgICBAc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0ID0gQGF0dHJfbGlzdDsK
ICAgICAgJGNvdW50ID0gJCNzdWJzY3JpcHRpb25zRGVueVRvX2xpc3Q7CiAgICAgICZEZWJ1Z01z
ZyAoNCwgIickZ3JvdXBfbmFtZScgc3Vic2NyaXB0aW9uc0RlbnlUbyBsaXN0IGlzOiIpOwogICAg
ICBmb3IgKCRpPTA7ICRpPD0kI3N1YnNjcmlwdGlvbnNEZW55VG9fbGlzdDsgJGkrKykKICAgICAg
ICB7ICZEZWJ1Z01zZyAoNCwgIiAgIiAuICRzdWJzY3JpcHRpb25zRGVueVRvX2xpc3RbJGldKTsg
fQogICAgICAmRGVidWdNc2coMywgIkZvdW5kICRjb3VudCByZWNvcmQocykgdG8gZGVueSIpOwog
ICAgICAmRGVidWdNc2cgKDMsICJQcm9jZXNzaW5nIHN1YnNjcmlwdGlvbnNEZW55VG8gYW5kIGV2
ZW50dWFsbHkgIiAuCiAgICAgICAgImNhbGwgcmVjdXJzaXZlbHkgdGhpcyBmdW5jdGlvbiIpOwog
ICAgICBmb3JlYWNoICRwIChAc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0KQogICAgICAgIHsKICAg
ICAgICAmRGVidWdNc2cgKDQsICJzdWJzY3JpcHRpb25zRGVueVRvICRpOiAkcCIpOwogICAgICAg
ICRwID0gJkNsZWFuU3RyaW5nICgkcCk7CiAgICAgICAgaWYgKGxjKCRwKSA9fiAvXmdyb3VwIC8g
KQogICAgICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDQsIiMjIyMgZm91bmQgZ3JvdXAgJyRw
JyAhISEhIik7CiAgICAgICAgICAkcCA9fiBzLyAqW0dnXVtScl1bT29dW1V1XVtQcF0gLy87CiAg
ICAgICAgICAkZXJydGV4dD0iUHJvY2Vzc2luZyBEZW55IExpc3QiOwogICAgICAgICAgJHJ0bj0m
Z2V0R3JvdXBNZW1iZXJzKCRwLCAwKTsKICAgICAgICAgIGlmICgkcnRuIG5lICcnKQogICAgICAg
ICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsgcHVzaCBA
cmVtb3ZlX2xpc3QsIEBtZW1iZXJMaXN0fTsKICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAg
ICAgICB7CiAgICAgICAgICAjIyMgd2UgYWRkIHRoZSBvYmplY3QgdG8gdGhlIHJlbW92YWwgbGlz
dAogICAgICAgICAgcHVzaCBAcmVtb3ZlX2xpc3QsICRwOwogICAgICAgICAgfQogICAgICAgIH0g
I2VuZCBmb3JlYWNoCiAgICAgIGlmICgkI21lbWJlckxpc3QgPj0wKQogICAgICAgIHsgcHVzaCBA
cmVtb3ZlX2xpc3QsIEBtZW1iZXJMaXN0OyB9CiAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAjIyMgTm93IHRoYXQg
d2UgaGF2ZSB0aGUgZnVsbCBkZW55IHRvIGxpc3Qgd2UgcHJvY2VzcyBpdAogICAgICAjIyMgd2Ug
c3VidHJhY3QgZnJvbSB0aGUgbWVtYmVybGlzdAogICAgICAjIyMgYWxzbyB3ZSBzY2FuIHRoZSBs
aXN0IHRpbGwgdGhlIGVuZAogICAgICAjIyMgaW4gY2FzZSB0aGVyZSBhcmUgc2V2ZXJhbCBpbnN0
YW5jZXMgb2YgdGhlIHVpZCB0byBkZW55CiAgICAgICMjIwogICAgICAmRGVidWdNc2coNCwgIi0t
QmVmb3JlIHJlbW92YWwgTWVtYmVybGlzdCBpczpcbkBtZW1iZXJfbGlzdCIpIDsKICAgICAgJkRl
YnVnTXNnKDQsICItLUFuZCBSZW1vdmFsIGxpc3QgaXM6XG5AcmVtb3ZlX2xpc3QiKTsKICAgICAg
JkRlYnVnTXNnKDQsICJTdWJzdHJhY3RpbmcgZGVueSIpOwogICAgICBteSAoJHhkbiwgJHhuYik7
CiAgICAgIGZvcmVhY2ggJHAgKEByZW1vdmVfbGlzdCkKICAgICAgICB7CiAgICAgICAgbXkgQG5l
d19tZW1iZXJfbGlzdDsKICAgICAgICAmRGVidWdNc2coNSwgIi0tPkRlbnlpbmcgJHAiKTsgCiAg
ICAgICAgJGs9MDsKICAgICAgICBmb3JlYWNoICRsaW5lIChAbWVtYmVyX2xpc3QpCiAgICAgICAg
ICB7CiAgICAgICAgICAmRGVidWdNc2coNCwgImNoZWNraW5nICRsaW5lIik7CiAgICAgICAgICAk
aysrOwogICAgICAgICAgaWYgKCRsaW5lID1+ICRwICkgI2lmIHRoZSBkbiBjb250YWlucyB0aGUg
dXNlciB0aGVuCiAgICAgICAgICAgIHsKICAgICAgICAgICAgJkRlYnVnTXNnKDQsICIkazogV09O
J1QgcHVzaCAkbGluZSA9ICRwIik7CiAgICAgICAgICAgICNEZWJ1Z01zZyg0LCAiJGs6IFJlbW92
aW5nICR4ZG4gc2luY2UgaXQgaXMgaW4gJGxpbmUiKTsKICAgICAgICAgICAgI0RlYnVnTXNnKDUs
ICJCZWZvcmUgcmVtb3ZhbCBNZW1iZXJsaXN0IGlzIFxuOkBtZW1iZXJfbGlzdCIpIDsKICAgICAg
ICAgICAgI3NwbGljZSAoQG1lbWJlcl9saXN0LCAkay0xLCAxKTsKICAgICAgICAgICAgI0RlYnVn
TXNnKDUsICJBZnRlciByZW1vdmFsIE1lbWJlcmxpc3QgaXMgXG46QG1lbWJlcl9saXN0IikgOwog
ICAgICAgICAgICAjJGstLTsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZSAKICAgICAgICAg
ICAgewogICAgICAgICAgICBEZWJ1Z01zZyg0LCAiJGs6IHB1c2hpbmcgdG8gbWVtYmVyIGxpc3Qg
IiAuCiAgICAgICAgICAgICAgIiRsaW5lIHNpbmNlIG5vdCBpbiAkcCIpOwogICAgICAgICAgICBw
dXNoIChAbmV3X21lbWJlcl9saXN0LCAkbGluZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0K
ICAgICAgICBAbWVtYmVyX2xpc3QgPSBAbmV3X21lbWJlcl9saXN0OwogICAgICAgIH0gI2VuZCBm
b3JlYWNoCiAgICAgIAogICAgICAjZW5kIGlmCiAgICAgIH0gCiAgICBlbHNlIAogICAgICB7IERl
YnVnTXNnKDMsICJObyBEZW55IHRvIGxpc3QgZm91bmQiKSA7IH0KICAgIAogICAgQG1lbWJlcl9s
aXN0ID0gc29ydChAbWVtYmVyX2xpc3QpOyAgICAgICNzb3J0IGFycmF5IGFscGhhIG9yZGVyCiAg
ICBpZiAoJGRlYnVnID4gMCkKICAgICAgeyBkaXNwQXJyYXkoIk1lbWJlciBMaXN0IGFmdGVyIERl
bnkiLCBAbWVtYmVyX2xpc3QpOyB9CiAgICBlbHNlCiAgICAgIHsgCiAgICAgIFByaW50TWVzc2Fn
ZSgiICAiIC4gc2NhbGFyKEBtZW1iZXJfbGlzdCkgLiAiIG1lbWJlcnMgIiAuCiAgICAgICAgImFm
dGVyIERlbnkgVG8gcHJvY2Vzc2VkIik7IAogICAgICB9CiAgICAgIAogICAgIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgdmVyaWZ5IHRoYXQg
ZWFjaCBtZW1iZXIgaXMgaW4gZGF0YWJhc2UKICAgICMgb3IgcHV0IGluIHdhcm5pbmcgbGlzdAog
ICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg
IEBhdHRycyA9IAogICAgICAoCiAgICAgICJjbiIsCiAgICAgICk7CiAgICAKICAgIGZvciAoJGo9
MDsgJGo8PSQjbWVtYmVyX2xpc3Q7ICRqKyspIHsKICAgICAgI3NlYXJjaCBmb3IgY24gaW4gcGVv
cGxlCiAgICAgICR0aGlzY24gID0gJG1lbWJlcl9saXN0WyRqXTsKICAgICAgJHRoaXNjbiAgPX4g
cy9eICpkbiAqPSAqOiAqLy87CiAgICAgICR0aGlzY24gID1+IHMvLC4qJC8vOwogICAgICAkZXJy
dGV4dCA9ICJQcm9jZXNzaW5nIG1lbWJlciBsaXN0IjsKICAgICAgJGZpbHRlciAgPSAiKGNuPSR0
aGlzY24pIjsKICAgICAgCiAgICAgICZEZWJ1Z01zZyg0LCJbJGo6XSBRdWVyeWluZyBwZW9wbGUg
Zm9yIGNuICckdGhpc2NuJyIpOwogICAgICBteSAoJHJ0biwgJG5lbnRyaWVzLCAkcmVjb3JkMSkg
PSAKCSAgJmRvTERBUFNlYXJjaCgkbGRhcCwgJHBlb3BsZWJhc2VkbiwgJGZpbHRlciwgXEBhdHRy
cyk7CiAgICAgIAogICAgICBpZiAoJHJ0biBuZSAnJykgewoJJndhcm4oJHJ0bik7IAogICAgICB9
CiAgICAgIAogICAgICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZG9uZSIpOwogICAgICBpZiAoJG5l
bnRyaWVzID09IDApIHsgCiAgICAgICAgJkRlYnVnTXNnKDUsICIkdGhpc2NuIG5vdCBmb3VuZCBp
biBwZW9wbGUiKTsKICAgICAgICAkdGhpc2NuIC49ICIgbm90IGZvdW5kIjsKICAgICAgICBwdXNo
IEB3YXJuaW5nX2xpc3QsICR0aGlzY247CgkkbWVtYmVyX2xpc3RbJGpdPXF7fTsKICAgICAgfSBl
bHNlIHsgCgkmRGVidWdNc2coNSwgIiR0aGlzY24gZm91bmQgaW4gcGVvcGxlIik7IAogICAgICB9
CiAgICB9CiAgCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogICAgIyByZW1vdmUgZHVwbGljYXRlIGVudHJpZXMgYW5kIG1ha2UgZnVsbCBkbiBh
Z2FpbgogICAgIyB1bmxlc3MgaXRzIGEgYmFkIHVpZCEKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAlc2Vlbl9saXN0PSgpOwogICAgQG1l
bWJlcl9saXN0PSBzb3J0KGdyZXAgeyEgJHNlZW5fbGlzdHskX30rKyB9IEBtZW1iZXJfbGlzdCkg
OwogICAgIyBAbWVtYmVyX2xpc3QgbWF5IGhhdmUgYSBibGFuayBlbnRyeSwgaWYgYSBETiBkb2Vz
IG5vdCBleGlzdAogICAgdW5sZXNzICgkbWVtYmVyX2xpc3RbMF0pIHsKICAgICAgc2hpZnQgQG1l
bWJlcl9saXN0OwogICAgfQogICAgZm9yZWFjaCAoQG1lbWJlcl9saXN0KSB7CiAgICAgICRfID1+
IHMvXi9jbj0vbzsgIyBQcmVmaXggZWFjaCBETiB3aXRoIGNuPSBhcyByZW1vdmVkIGVhcmxpZXIK
ICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg
IyAgdXBkYXRlIExEQVAgd2l0aCB0aGUgbmV3IG1lbWJlciAgZmlsZQogIAogICAgaWYgKCRzaG93
ID4gMCkKICAgICAge2Rpc3BBcnJheSgiTmV3IG1lbWJlciBsaXN0IGZvciBncm91cCAnJGdyb3Vw
X25hbWUnIiwgQG1lbWJlcl9saXN0KTt9CiAgICBlbHNlCiAgICAgIHsKICAgICAgUHJpbnRNZXNz
YWdlKCIgICIgLiBzY2FsYXIoQG1lbWJlcl9saXN0KSAuICIgbWVtYmVycyAiIC4KICAgICAgICAi
Zm9yIG5ldyBtZW1iZXIgbGlzdCIpOyAKICAgICAgfQogICAgUHJpbnRNZXNzYWdlKCIgIENvbXBh
cmluZyBvbGQgYW5kIG5ldyBtZW1iZXIgbGlzdHMiKTsKICAKICAgICRkZWx0YSA9IDA7CiAgICBp
ZiAoJCNtZW1iZXJfbGlzdCA8IDApIAogICAgICB7CiAgICAgIGlmICgkI3NhdmVfbWVtYmVycyA8
IDApCiAgICAgICAgeyAKICAgICAgICAkZGVsdGEgPSAwOwogICAgICAgIH0KICAgICAgZWxzZQog
ICAgICAgIHsgCiAgICAgICAgUHJpbnRNZXNzYWdlKCIgIFVwZGF0ZSBuZWVkZWQgKDEpIik7IAog
ICAgICAgICRkZWx0YSA9IDE7CiAgICAgICAgfQogICAgICB9CiAgICBlbHNpZiAoJCNtZW1iZXJf
bGlzdCA9PSAkI3NhdmVfbWVtYmVycykKICAgICAgewogICAgICBmb3IgKCRpPTA7ICRpPD0kI21l
bWJlcl9saXN0OyAkaSsrKQogICAgICAgIHsKICAgICAgICBpZiAoJG1lbWJlcl9saXN0WyRpXSBu
ZSAkc2F2ZV9tZW1iZXJzWyRpXSkKICAgICAgICAgIHsKICAgICAgICAgIFByaW50TWVzc2FnZSgi
ICBEaWZmZXJlbmNlIGZvdW5kIGF0ICRpOiIpOwogICAgICAgICAgUHJpbnRNZXNzYWdlKCIgICAg
T2xkPSRzYXZlX21lbWJlcnNbJGldIik7CiAgICAgICAgICBQcmludE1lc3NhZ2UoIiAgICBOZXc9
JG1lbWJlcl9saXN0WyRpXSIpOwogICAgICAgICAgJGRlbHRhPTE7CiAgICAgICAgICBQcmludE1l
c3NhZ2UoIiAgVXBkYXRlIG5lZWRlZCAoMykiKTsKICAgICAgICAgIGxhc3Q7CiAgICAgICAgICB9
CiAgICAgICAgfQogICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgUHJpbnRNZXNzYWdlKCIg
IFVwZGF0ZSBuZWVkZWQgKDIpIik7CiAgICAgICRkZWx0YSA9IDE7CiAgICAgIH0KICAKICAgIGlm
ICgkZGVsdGEgPT0gMCkKICAgICAgeyBQcmludE1lc3NhZ2UoIiAgT2xkIGFuZCBuZXcgbGlzdHMg
YXJlIHRoZSBzYW1lLCBza2lwcGluZyB1cGRhdGUiKTsgfQogICAgZWxzZQogICAgICB7CiAgICAg
IGlmICggJGFuYWx5emUgPT0gMSkKICAgICAgICB7IAogICAgICAgIHByaW50ICIgIExpc3RzIGRp
ZmZlciBidXQgd2lsbCBub3QgYmUgY2hhbmdlZCBzaW5jZSB3ZSBhcmUgIiAuCiAgICAgICAgICAi
aW4gYW5hbHl6ZSBtb2RlXG4iOyAKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAg
ICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjICB1cGRhdGUgTERBUAogICAgICAg
ICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIAogICAgICAgIHB1c2ggQHJlZmF0dHJzLCAn
Y24nOwogICAgICAgIHB1c2ggQHJlZmF0dHJzLCAndW5pcXVlbWVtYmVyJzsKICAgICAgCiAgICAg
ICAgJGZpZWxkbmFtZT0ndW5pcXVlbWVtYmVyJzsKICAgICAgICBwdXNoIEB7JGNoZ2F0dHJzeyRm
aWVsZG5hbWV9fSxAbWVtYmVyX2xpc3Q7CiAgICAgICAgRGVidWdNc2coMywgImdyb3VwPSRncm91
cF9uYW1lLCBhdHRyPSRmaWVsZG5hbWUsIHZhbHVlcz0iIC4gQG1lbWJlcl9saXN0KTsKICAgICAg
CiAgICAgICAgRGVidWdNc2coMywgInJlZmF0dHJzPUByZWZhdHRycyIpOwogICAgICAgIGZvcmVh
Y2ggJGF0dHIgKGtleXMgJWNoZ2F0dHJzKQogICAgICAgICAgeyBEZWJ1Z01zZygzLCAiY2hnYXR0
cnN7JGF0dHJ9PSRjaGdhdHRyc3skYXR0cn0iKTsgfQogICAgICAgIERlYnVnTXNnKDMsICJTZXR0
aW5nIGdyb3VwICckZ3JvdXBfbmFtZScgd2l0aCBhdHRyaWJ1dGUgIiAuCiAgICAgICAgICAiJyRm
aWVsZG5hbWUnIHRvIHZhbHVlcyIgLiBAbWVtYmVyX2xpc3QpOwogICAgICAKICAgICAgICAkZmls
dGVyPSRncm91cF9uYW1lOwogICAgICAgIERlYnVnTXNnICgzLCAiVXBkYXRpbmcgTERBUCBmb3Ig
PCRncm91cF9uYW1lPiIpOwogICAgICAgIAogICAgICAgICRlcnJ0ZXh0PSJVcGRhdGluZyBNZW1i
ZXIgTGlzdCI7CiAgICAgICAgcHJpbnQgImdyb3VwYmFzZWRuPSRncm91cGJhc2VkbiwgZmlsdGVy
PSRmaWx0ZXJcbiIgaWYgKCRzaG93ID4wKTsKICAgICAgICAkcnRuPSIiOyAKICAgICAgICAkcnRu
ID0gJmRvTERBUE1vZHMoJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQHJlZmF0dHJzLCBcJWNoZ2F0
dHJzKTsKICAgICAgICAKICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgeyAmd2Fy
bigkcnRuKTsgfQogICAgICAgIGVsc2UKICAgICAgICAgIHsgRGVidWdNc2coMSwgIkdyb3VwICRn
cm91cF9uYW1lIHVwZGF0ZWQuIik7IH0KICAgICAgCiAgICAgICAgfQogICAgICB9IAogICAgaWYg
KCAkYW5hbHl6ZSAhPSAxKQogICAgICB7CiAgICAgICNhbHdheXMgdXBkYXRlIHRoZSBhZG1pbnRl
eHQgdmFsdWVzICh1bmxlc3MgZXhwaXJlZCkKICAgICAgIwogICAgICAjICB1cGRhdGUgTERBUCB3
aXRoIHRoZSBuZXcgd2FybmluZyBsaXN0IAogICAgICAjCiAgICAgICRuYl93YXJuID0gJCN3YXJu
aW5nX2xpc3Q7CiAgICAgICRuYl93YXJuKys7CiAgICAgICRjb3VudCA9IDA7CiAgICAgIGlmICgk
d2FybmluZ19saXN0WzBdIGVxICIiKSAKICAgICAgICB7IHB1c2ggQHdhcm5pbmdfbGlzdCwgIk5v
IFdhcm5pbmciOyB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgQHdhcm5pbmdfbGlzdD0g
c29ydCBAd2FybmluZ19saXN0OwogICAgICAgIGZvciAoJGk9MDsgJGk8PSQjd2FybmluZ19saXN0
OyAkaSsrKQogICAgICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDMsICJ3YXJuaW5nOiAiIC4g
JHdhcm5pbmdfbGlzdFskaV0pOwogICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICB9CiAgICAg
ICAgdW5zaGlmdCBAd2FybmluZ19saXN0LCAidGhlIFwiR3JhbnQgdG9cIi9cIkFERCB1aWRcIiAi
IC4KICAgICAgICAgICJmaWVsZCBjb250YWlucyAkbmJfd2FybiB1aWQocykgd2hpY2ggZG8oZXMp
J3QgZXhpc3QiOwogICAgICAgIH0KICAgICAgJkRlYnVnTXNnKDMsICIgKioqIHdhcm5pbmdfbGlz
dCAoJCN3YXJuaW5nX2xpc3QpICoqKiIpOwogICAgICBmb3IgKCRpPTA7ICRpPD0kI3dhcm5pbmdf
bGlzdDsgJGkrKykKICAgICAgICB7ICZEZWJ1Z01zZygzLCAid2FybmluZ19saXN0WyRpXT0nJHdh
cm5pbmdfbGlzdFskaV0nIik7IH0KICAgICAgIwogICAgICAjICB1cGRhdGUgTERBUAogICAgICAj
ICAKICAgICAgCiAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0MigkbGRhcCwgJGdyb3VwX25hbWUs
IAogICAgICAgICRncm91cGJhc2VkbiwgIndhcm5pbmc6IiwgQHdhcm5pbmdfbGlzdCk7CiAgICAg
CiAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgICBl
bHNlIAogICAgICAgIHsgRGVidWdNc2coMSwgIkdyb3VwICRncm91cF9uYW1lIHVwZGF0ZWQuIik7
IH0KICAgICAgCiAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBlbmQKICAgICAgICAKICAgICAg
JGNvdW50ID0gc2NhbGFyKEBtZW1iZXJfbGlzdCk7CiAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0
KCRsZGFwLCAkZ3JvdXBfbmFtZSwgCiAgICAgICAgJGdyb3VwYmFzZWRuLCAiaW5mb3JtYXRpb246
IiwgCiAgICAgICAgIlRoaXMgZ3JvdXAgY29udGFpbnMgJGNvdW50IG1lbWJlcihzKSIpOwogICAg
ICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgIAogICAgICAk
dGltZVN0YW1wPWdtdGltZSh0aW1lKTsKICAgICAgY2hvbXAgJHRpbWVTdGFtcDsKICAgICAgJHRp
bWVTdGFtcD1+cy8uKiAvLzsKICAgICAgJGRhdGU9c2xiVGltZTMoJHRpbWVTdGFtcCk7CiAgICAK
ICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAkZ3JvdXBiYXNl
ZG4sICJleHBhbmRlZDoiLCAkZGF0ZSk7CiAgICAKICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAg
ICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAKICAgICAgaWYgKCAkZXJyZmxhZyA9PSAwKQogICAg
ICAgIHsgCiAgICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAk
Z3JvdXBiYXNlZG4sICJzdGF0dXM6IiwgIk9LIik7IAogICAgIAogICAgICAgIGlmICggJHJ0biBu
ZSAiIikgCiAgICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgfQogICAgICBlbHNlCiAg
ICAgICAgeyAKICAgICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUs
ICRncm91cGJhc2VkbiwgInN0YXR1czoiLCAiRVJST1IgIiAuCiAgICAgICAgICAkZXJydGV4dE1z
Zyk7CiAgICAgCiAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgIHsgJndhcm4oJHJ0
bik7IH0KICAgIAogICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICB7ICZ3YXJuKCRy
dG4pOyB9CiAgICAgICAgfQogICAgICBEZWJ1Z01zZyAoMywgIkxEQVAgdXBkYXRlIGRvbmUiKTsK
ICAgICAgaWYgKCRkZWx0YSA9PSAxKQogICAgICAgIHsgRGVidWdNc2cgKDIsIiRncm91cF9uYW1l
IGhhcyBmaW5hbGx5ICRjb3VudCBtZW1iZXJzIHNhdmVkIGluIExEQVAiKTsgfQogICAgICB9CiAg
ICB9CiAgJHJlY3VyX2xldmVsLS07CiAgcmV0dXJuOwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgaXNfYV9ncm91
cAojICAgQXJnOiBuYW1lIG9mIHRoZSBncm91cAojICAgUmV0dXJuczogMSBpZiBhIGdyb3VwLCAw
IGlmIG5vdAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCnN1YiBpc19hX2dyb3VwKCkKICB7IAoKICBteSgkbmFtZSkgPSBAXzsg
IAogIG15ICRyZXM9IiI7CgogIERlYnVnTXNnKDUsICcjIyMjIyBpc19hX2dyb3VwJyk7IAogIERl
YnVnTXNnKDQsImlzX2FfZ3JvdXAgdGVzdGluZzogJG5hbWUiKTsKICAoJHJ0biwgJHJlcykgPSAm
Z2V0QWRtaW5UZXh0KCRsZGFwLCAiY249JG5hbWUiLCAkZ3JvdXBiYXNlZG4sICJkaXJ0eToiKTsK
ICBpZiAoICRydG4gbmUgIiIpIAogICAgeyAKICAgICZ3YXJuKCRydG4pOyAKICAgIH0KICBpZiAo
JHJlcyBlcSAiIikKICAgIHsKICAgIERlYnVnTXNnKDQsIiRuYW1lIGlzIGEgbm90IGdyb3VwISEi
KTsKICAgIHJldHVybiAwOwogICAgfSAKICBlbHNlIAogICAgewogICAgRGVidWdNc2coNCwiJG5h
bWUgaXMgYSBncm91cCBhbmQgdGhlICckYXR0cicgaXMgJHJlcyEhIik7CiAgICByZXR1cm4gMTsK
ICAgIH0KICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBT
ZXRGaWVsZChncm91cF90b191cGRhdGUgKGNuKSwgZmllbGRuYW1lLCAgdmFsdWUpKQojCiMKIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgU2V0RmllbGQoKQogIHsK
ICBteSAoJGdyb3VwX25hbWUsICRmaWVsZG5hbWUsICR2YWx1ZSkgPSBAXzsKICBteSAkY21kOwoK
ICBteSAkcnRuOwoKICBEZWJ1Z01zZyg1LCAnIyMjIyMgU2V0RmllbGQnKTsgCiAgRGVidWdNc2co
MywgIlNldHRpbmcgZ3JvdXAgJyRncm91cF9uYW1lJyB3aXRoIGF0dHJpYnV0ZSAiIC4KICAgICIn
JGZpZWxkbmFtZScgdG8gJyR2YWx1ZSciKTsKCiAgJGZpbHRlcj0kZ3JvdXBfbmFtZTsKICAKICBw
cmludCAiZ3JvdXBiYXNlZG49JGdyb3VwYmFzZWRuLCBmaWx0ZXI9JGZpbHRlclxuIiBpZiAoJHNo
b3cgPjApOwogICZwdXRBdHRyT25lKCRncm91cGJhc2VkbiwgJGZpbHRlciwgJGZpZWxkbmFtZSwg
JHZhbHVlKTsKICAKICBEZWJ1Z01zZygxLCAiR3JvdXAgJGdyb3VwX25hbWUgdXBkYXRlZC4iKTsg
CiAgfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBnZXRf
b3B0aW9uCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpz
dWIgZ2V0X29wdGlvbiAKICB7CiAgbXkgJHJlc3VsdDsKICAjcHJpbnQgImFyZyBjb3VudD0kI0FS
R1ZcbiI7CiAgJnVzYWdlKCJtaXNzaW5nIGFyZ3VtZW50IGZvciAkX1swXSIpIGlmICgkI0FSR1Y9
PS0xKSA7CiAgJHJlc3VsdCA9ICRBUkdWWzBdOwogIHNoaWZ0IEBBUkdWOyAgIAogIHJldHVybiAk
cmVzdWx0OwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQojIHVzYWdlOiBwcmludCBvdXQgdXNhZ2UgaW5zdHJ1Y3Rpb25zCiMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIHVzYWdlIAogIHsKICBteSAkbWVzcyA9
IEBfOwoKICBwcmludCAiZ3JwdGVyOiAkbWVzc1xuXG4iOwoKICBwcmludCA8PCJfRU9GXyI7CnVz
YWdlOiAgZ3JwdGVyIFstb3B0aW9ucyAuLi5dIAoKd2hlcmUgb3B0aW9ucyBpbmNsdWRlOgogICAg
LWRlYnVnICAgIGRlYnVnbGV2ZWwgICAgICAxIHRvIDUgKDE9c21hbGwgYW1vdW50LCA1PW91IGxh
IGxhISAgICAgICAKICAgIC13d3cgICAgICBodG1sIG91dHB1dCAgICAgc2V0IHRoZSBvdXRwb3V0
IHRleHQgZm9ybWF0IHRvIGh0bWwgZm9ybWF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQgaXMgIlxuIiAKICAgIC1ncm91cCAgICBncm91cF9uYW1lIChjbikgZW50ZXIgb25l
IGdyb3VwIG5hbWUgKGNuKSwgcHJvY2VzcyBhbGwgZ3JvdXBzIGJ5IGRlZmF1bHQKICAgIC1sb2cg
ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0IGdvZXMgdG8gdGhlIGxvZyBmaWxlIChnb29kIGZv
ciBjcm9uKSAgICAgICAgICAgICAgCiAgICAtbGlzdGdyb3VwICAgICAgICAgICAgICAgIGxpc3Qg
YWxsIGdyb3VwcyBpbiB0aGUgZGlyZWN0b3J5LgogICAgLWtlZXB0ZW1wICAgICAgICAgICAgICAg
ICBkbyBub3QgZXJhc2UgdGVtcG9yYXJ5IGZpbGVzCiAgICAtdXBkYXRlICAgICAgICAgICAgICAg
ICAgIGV4cGFuZCBvbmx5IGdyb3VwcyB3aXRoIHN0YXR1cyAndG8gYmUgcHJvY2Vzc2VkJwogICAg
LXogICAgICAgICAgICAgICAgICAgICAgICBydW4gZ3JwdGVyLnBsIGV2ZW4gaWYgdGhlIGxvY2sg
ZmlsZSBleGlzdHMKCkFsbCBvcHRpb25zIGNhbiBiZSBhYmJyZXZpYXRlZCB1cCB0byBvbmUgbGV0
dGVyLgoKRXhhbXBsZXM6ClVwZGF0ZSB0aGUgZ3JvdXAgJ0F1c3RpbiBlbXBsb3llZXMnIHdpdGgg
c21hbGwgYW1vdW50IG9mIG91dHB1dAouL2dycHRlci5wbCAtZ3JvdXAgJ0F1c3RpbiBlbXBsb3ll
ZXMnIC1kZWJ1ZyAyCgpTYW1lIGJ1dCB3aXRoIGh0bWwgb3V0cHV0IAouL2dycHRlci5wbCAtZ3Jv
dXAgJ0F1c3RpbiBlbXBsb3llZXMnIC1kZWJ1ZyAzIC13d3cKCkRvIGFsbCBncm91cHMgd2l0aCBh
IGxvdCBvZiBvdXRwdXQgaW5mb3JtYXRpb24KLi9ncm91cGVyLnBsIC1kZWJ1ZyA0CgoKX0VPRl8K
CiAgJlJlbW92ZUxvY2tGaWxlOwogIGlmICgkaHRtbCA9PSAxKQogICAgeyBwcmludCAiPC9CT0RZ
PjwvSFRNTD5cbiI7IH0KICBleGl0IDc7CiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU2V0Rm9udGNvbG9yCiMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIFNldEZvbnRDb2xvcgogIHsK
ICBteSAoJGNvbG9yKSA9IEBfOwogIGlmICAgICgkY29sb3IgZXEgInJlZCIpCiAgICB7JGZvbnRj
b2xvcj0iI0ZEMDIwNSI7fQogIGVsc2lmICgkY29sb3IgZXEgImJsdWUiKQogICAgeyAkZm9udGNv
bG9yPSIjMzMzM0ZGIjt9CiAgZWxzaWYgKCRjb2xvciBlcSAiYmxhY2siKQogICAgeyRmb250Y29s
b3I9IiMzMzAwMzMiO307CiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiMgY2F0Y2hfc2lnbmFsczoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgY2F0Y2hfc2lnbmFscyAKICB7CiAgJFNJ
R3snSU5UJ30gPSAnU0lHTkFMX0NMRUFOVVAnOwogICRTSUd7J0hVUCd9ID0gJ1NJR05BTF9DTEVB
TlVQJzsKICAkU0lHeydRVUlUJ30gPSAnU0lHTkFMX0NMRUFOVVAnOwojICAkU0lHeydQSVBFJ30g
PSAnU0lHTkFMX0NMRUFOVVAnOwogICRTSUd7J0FMUk0nfSA9ICdTSUdOQUxfQ0xFQU5VUCc7CiAg
JFNJR3snX19ESUVfXyd9ID0gJ1NJR05BTF9DTEVBTlVQJzsgICAjIyNfX1dBUk5fXyBpcyBhbHNv
IGF2YWlsYWJsZQogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQojIGFib3J0OiBkaXNwbGF5IG1lc3NhZ2UgYW5kIHF1aXQKIyBBcmdzOiAgbWVz
c2FnZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
CnN1YiBhYm9ydAogIHsKICBteSAkbXNnPSRfWzBdOwoKICBwcmludCAkbXNnIC4gIlxuIjsKCiAg
JlNJR05BTF9DTEVBTlVQOwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQojIHdhcm46IGRpc3BsYXkgbWVzc2FnZSBidXQgY29udGludWUgCiMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIHdh
cm4KICB7CiAgbXkgJG1zZz0kX1swXTsKCiAgcHJpbnQgIldBUk5JTkc6ICIgLiAkbXNnIC4gIiAo
JGVycnRleHQpXG4iOwogICRlcnJ0ZXh0TXNnID0gJGVycnRleHQ7CiAgJnNlbmRFbWFpbCggQF8g
KTsKICAkZXJyZmxhZyA9IDE7CiAgfQoKDAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQojIHNlbmRFbWFpbDoKIyAgZ2l2ZXMgbWVzc2FnZSB0byBhbiBh
ZG1pbgojIGFyZzoKIyAgbWVzc2FnZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCgpzdWIgc2VuZEVtYWlsIHsKICBteSAkdXNlck5hbWUgPSAiIjsKICBt
eSAkdXNlck1haWwgPSAiIjsKICBteSAkaTsKICBteSAkc2NyaXB0OwoKICBteSAkbXNnID0gam9p
bihxcXsgIFxufSxAXyk7CgogICR0aW1lU3RhbXA9Z210aW1lKHRpbWUpOwogIGNob21wICR0aW1l
U3RhbXA7CiAgJHRpbWVTdGFtcD1+cy8uKiAvLzsKICAkZGF0ZT1zbGJUaW1lMygkdGltZVN0YW1w
KTsKCiAgaWYgKCRfWzBdID1+IC9VbmFibGUgdG8gZ2V0IExEQVAgQ29ubmVjdGlvbnxDYW4ndCBj
b250YWN0IExEQVAgc2VydmVyLykgewogICAgbG9nTXNnMigiSU5GOiBObyBlbWFpbCBzZW50IGFz
IExEQVAgc2VydmVyIGNvbm5lY3Rpb24gZmFpbGVkIi4kbXNnKTsgIAogIH0gZWxzZSB7CiAgICBp
ZiAoJGN1ckFkbWluIG5lICIiKSB7CiAgICAgICR1c2VyTmFtZSA9ICRjdXJBZG1pbjsgCiAgICB9
ICBlbHNpZiAoJGN1ckxkYXBBZG1pbiBuZSAiIikgewogICAgICAkdXNlck5hbWUgPSAkY3VyTGRh
cEFkbWluTWFpbDsgCiAgICB9IGVsc2UgewogICAgICAkdXNlck5hbWUgPSAmZGVmTGRhcEFkbWlu
OyAKICAgIH0KCiAgICBpZiAoJHVzZXJOYW1lIG5lICZkZWZMZGFwQWRtaW4pIHsKICAgICAgIyBu
b3cgZ2V0IG1haWwgZm9yIHVzZXJOYW1lCiAgICAgICR1c2VyTWFpbD1nZXRNYWlsKCR1c2VyTmFt
ZSk7CiAgICAgIGlmICgkZGVidWcgPiAwKSB7CglwcmludCAiZ2V0TWFpbCgnJHVzZXJOYW1lJykg
cmV0dXJuZWQgJyR1c2VyTWFpbCdcbiI7IAogICAgICB9CiAgICB9ICAgICAgCgogICAgaWYgKCR1
c2VyTWFpbCBlcSAnJykgewogICAgICAkdXNlck1haWwgPSAmZGVmTGRhcEFkbWluOyAKICAgIH0K
ICAgIAogICAgbG9nTXNnMigiSU5GOiBTdGFydGluZyB0byBtYWlsICR1c2VyTWFpbFxuJG1zZ1xu
Iik7CiAgICB1bmxlc3MgKG9wZW4oTUFJTCwgInwgL3Vzci9saWIvc2VuZG1haWwgLW9pIC10Iikp
IHsKICAgICAgZGllIHFxeyAgRmFpbGVkIHRvIHRhbGsgdG8gc2VuZG1haWwgLS0gJCFcbn07CiAg
ICB9CiAgICAKICAgIHByaW50IE1BSUwgPDwiTUFJTDEiLCgkY3VyR3JvdXAgPyA8PCJNQUlMMiIg
OiA8PCJNQUlMMyIpOwpGcm9tOiAiRGlyZWN0b3J5IEdyb3VwIENvZGUgTWFuYWdlciIgPGxkYXAt
YWRtaW5cQHNsYi5jb20+ClgtVG86ICR1c2VyTWFpbApUbzogZ3JheVxAY2FtYnJpZGdlLm9pbGZp
ZWxkLnNsYi5jb20KU3ViamVjdDogRGVidXNzeSAtLSBEaXJlY3RvcnkgZ3JvdXAgZXhwYW5zaW9u
IGVycm9yCgpNQUlMMQpUaGUgTERBUCBEaXJlY3RvcnkgZ3JvdXAgbWFuYWdlbWVudCBzeXN0ZW0g
aGFzIGZhaWxlZCB0byBleHBhbmQgdGhlIGxpc3QKb2YgbWVtYmVycyBmb3IgdGhlIGdyb3VwOgog
JGN1ckdyb3VwCmFuZCB5b3UgYXJlIGJlaW5nIHNlbnQgdGhpcyBtZXNzYWdlIGFzIHlvdSBhcmUK
dGhlIGdyb3VwIG1hbmFnZXIvc3BvbnNvci9hZG1pbmlzdHJhdG9yCgpUaGUgZXJyb3IgaXMKICAk
bXNnCndoaWxlCiAgJGVycnRleHRNc2cKCllvdXIgZ3JvdXAgbWVtYmVycyB3aWxsIG5vdCBoYXZl
IGJlZW4gdXBkYXRlZC4KCllvdSBzaG91bGQgZml4IHRoaXMgZXJyb3IgYnkgdXBkYXRpbmcgdGhl
IGdyb3VwLAp3aGljaCBjYW4gYmUgZG9uZSBmcm9tIHRoZSBEaXJlY3RvcnkgZ3JvdXAgcGFnZSBh
dAogaHR0cDovL2RpcmVjdG9yeS5zbGIuY29tL2FkbWluL2dyb3Vwcy9ncnBpbmRleC5jZ2kgCgpN
QUlMMgpUaGUgY3JvbiBzY3JpcHQKICAkMApoYXMgZmFpbGVkIHRvIGV4cGFuZCB0aGUgZ3JvdXAg
bWVtYmVycyBhdAogICRkYXRlCgpEZXRhaWxzIG9mIHRoZSBlcnJvciBhcmU6CiAgJG1zZwoodXNp
bmcgTERBUCBTZXJ2ZXIgJGNvbm5Ib3N0OiRjb25uUG9ydCkKCk1BSUwzCgogICAgY2xvc2UgTUFJ
TDsKICAgIGxvZ01zZzIoIklORjogQ29tcGxldGVkIHNlbmRpbmcgbWFpbCB0byAkdXNlck1haWxc
biAgJG1zZ1xuIik7ICAKICB9Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQojIFNJR05BTF9DTEVBTlVQOgojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBTSUdOQUxfQ0xFQU5VUCAKICB7CiAK
ICAjIyMjIHF1aXQgZ3JhY2VmdWxseQogIG15ICRlcnJNc2c7CiAgbXkgJGk7CiAgCiAgJGVyck1z
Zz0iVW5leHBlY3RlZCBlcnJvcjpcbiI7CiAgaWYgKCRfWzBdIGVxICdBTFJNJykgewogICAgJGVy
ck1zZy49IiBFeGNlZWRlZCBtYXhpbXVtIHRpbWUgZm9yIHRoZSBqb2IgKCRtYXhUaW1lIHNlY29u
ZHMpIjsKICB9CiAgCiAgZm9yZWFjaCAkaSAoMC4uJCNfKSB7CiAgICAkZXJyTXNnLj0iIFwkX1sk
aV09JF9bJGldXG4iOwogIH0KICAkZXJyTXNnLj0gIiBcJCE9JCFcbiBcJD89JD9cbiI7CiAgIyBH
ZXQgZGV0YWlscyBvbiB3aGVyZSBlcnJvciBvY2N1cnJlZAogIG15ICRpbmRlbnQ7CiAgQ0FMTDoK
ICBmb3JlYWNoICRpICgxLi41KSB7CiAgICAkaW5kZW50PScgJ3gkaTsKICAgIEBfID0gY2FsbGVy
ICRpOwogICAgdW5sZXNzICgkX1swXSkgewogICAgICBsYXN0IENBTEw7CiAgICB9CiAgICAkZXJy
TXNnLj0iJHtpbmRlbnR9cGFja2FnZTogJF9bMF1cbiR7aW5kZW50fWZpbGVuYW1lOiAkX1sxXVxu
JHtpbmRlbnR9bGluZTogJF9bMl1cbiI7CiAgfQogIHByaW50ICRlcnJNc2c7CiAgJGN1ckFkbWlu
PScnOwogICRjdXJHcm91cD0nJzsKICBzZW5kRW1haWwoJGVyck1zZyk7CiAgc3lzdGVtKCJybSAt
ZiAkdG1wZGlyLyouJCQudG1wIik7IAogIGlmICgtZSAkbG9ja2ZpbGUpIAogICAgewogICAgdW5s
aW5rICIkbG9ja2ZpbGUiOyAKICAgIHByaW50ICJHcm91cHRlciB3YXMgaW50ZXJydXB0ZWQsIGxv
Y2sgZmlsZSAoJGxvY2tmaWxlKSAgcmVtb3ZlZCFcbiI7CiAgICB9IAogIGVsc2UgCiAgICB7CiAg
ICBwcmludCAiR3JvdXB0ZXIgd2FzIGludGVycnVwdGVkLCBubyBsb2NrIGZpbGUgKCRsb2NrZmls
ZSkiIC4KICAgICAgIiB0byByZW1vdmUhXG4iOwogICAgfQogIGxvZ01zZzIoIklORjogRW5kaW5n
XG4iKTsKICBpZiAoJGh0bWwgPT0gMSkKICAgIHsgcHJpbnQgIjwvQk9EWT48L0hUTUw+XG4iOyB9
CiAgZXhpdCAyOwogIH0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ2xlYW5TdHJpbmc6IHJlbW92ZSBoZWFkaW5n
IHNwYWNlcyBhbmQgdGFicywgCiMgICAgICAgICAgICAgIHJlcGxhY2UgbXVsdGlwbGUgc3BhY2Vz
IGFuZCB0YWJzIGJ5IG9uZSBiZXR3ZWVuIHdvcmRzIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBDbGVhblN0
cmluZwogIHsKICBEZWJ1Z01zZyg1LCAnIyMjIyMgQ2xlYW5TdHJpbmcnKTsgCiAgbXkgKCRzdHIp
ID0gQF87CiAgI3ByaW50ICI8YnI+IGNsZWFuaW5nIHN0cjonJHN0cic8YnI+IjsKICAkc3RyID1+
IHMvXlxzKy8vOyAgIyByZW1vdmUgbGVhZGluZyB3aGl0ZSBjaGFycwogICMjIyMgJHN0ciA9fiBz
L15bIFx0XSsvLzsKICAkc3RyID1+IHMvXHMrJC8vOyAgIyByZW1vdmUgdHJhaWxpbmcgd2hpdGUg
Y2hhcnMKICAkc3RyID1+IHMvWyBcdF0rLyAvOyAgICAjIHJlcGxhY2UgbiB3aGl0ZSBjaGFycyAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJ5IG9ubHkgMSBpbiB0aGUgbWlkZGxlIG9mIHRo
ZSBzdHJpbmcKICAjcHJpbnQgIiBjbGVhbmVkICBzdHI6JyRzdHInPGJyPiI7CgogIHJldHVybiAk
c3RyOwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj
IFF1ZXJ5IFN1Yjogc2V0cyB1cCBMREFQIHF1ZXJ5CiMgICBSZXR1cm5zIHJ0biwgJG5lbnRyaWVz
LCBcJXJlY29yZHMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CnN1YiBRdWVyeSAKICB7CgogIG15IEBhdHRyczsKICBteSAkZmlsdGVyOwogIG15ICVyZWNvcmRz
OwogIG15ICVyZWNvcmRYOwogIG15ICRlbnRyeTsKICBteSAkaXRlbU5vOwogIG15ICRkbjsKICBt
eSAkaXRlbTsKICBteSAkYXR0cjsKICBteSAkU2NyaXB0TmFtZTsKICBteSBAdmFsdWVzOwogIG15
ICRpOwogIG15ICRuZW50cmllczsKICBteSAkcmVjb3JkWDsKICBAYXR0cnMgPSAKICAgICgKICAg
ICAiY24iLAogICAgICJwcm94eSIsCiAgICAgIm1hbmFnZXIiCiAgICApOwogIAogIERlYnVnTXNn
KDUsICcjIyMjIyBRdWVyeScpOyAKICAkZmlsdGVyID0gIiRmaWVsZF90b19zZWFyY2g9IjsKCiAg
aWYgKCggJHNlYXJjaFZhbCBlcSAiIiApIHx8ICggJHNlYXJjaFZhbCBlcSAnKicgKSkgCiAgICB7
ICRmaWx0ZXIgLj0gIioiOyB9CiAgZWxzaWYgKCBpbmRleCgkc2VhcmNoVmFsLCc9JykgPj0gMCAp
CiAgICB7ICRmaWx0ZXIgPSAkc2VhcmNoVmFsIH0KICBlbHNlCiAgICB7CiAgICBpZiAoIHN1YnN0
cigkc2VhcmNoVmFsLDAsMSkgbmUgJyonICkKICAgICAgeyAkZmlsdGVyIC49ICcqJzsgfQogICAg
JGZpbHRlciAuPSAkc2VhcmNoVmFsOwoKICAgIGlmICggc3Vic3RyKCRzZWFyY2hWYWwsbGVuZ3Ro
KCRzZWFyY2hWYWwpLTEsMSkgbmUgJyonKSAKICAgICAgeyAkZmlsdGVyIC49ICcqJzsgfSAKICAg
IH0KCiAgIyBTZWFyY2ggdmlhIGNhbGwgdG8gZG9MREFQU2VhcmNoKCkKICAjIHBhc3MgdG8gaXQg
JGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzCiAgIyBnZXQgYmFjayAkbmVudHJpZXMsJHJl
Y29yZHt9LT57fQoKICAjcHJpbnQgImdyb3VwYmFzZWRuPSRncm91cGJhc2VkbiwgZmlsdGVyPSRm
aWx0ZXJcbiI7CiAgKCRydG4sICRuZW50cmllcywgJHJlY29yZFgpID0gCiAgICAmZG9MREFQU2Vh
cmNoKCRsZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsIFxAYXR0cnMpOwoKICBpZiAoICRydG4g
bmUgIiIpIAogICAgeyByZXR1cm4gKCRydG4sICRuZW50cmllcywgIiIgKTsgfQoKICAlcmVjb3Jk
cz0gJSRyZWNvcmRYOwoKICBpZiAoJG5lbnRyaWVzID09IDApIAogICAgeyByZXR1cm4gKCRydG4s
ICRuZW50cmllcywgIiIpOyB9IAoKICBteSAkY291bnQgPSAxOwogIHJldHVybiAoJHJ0biwgJG5l
bnRyaWVzLCBcJXJlY29yZHMpOwogIH0jIyMgZW5kIHN1YiBRdWVyeQoKIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRNZXNzYWdlOgoj
ICAgRGlzcGxheSBtZXNzYWdlIHRvIHNjcmVlbiBhbmQvb3IgbG9nIGZpbGUKIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgUHJpbnRNZXNz
YWdlIAogIHsKICBpZiAoJGxvZyA+IDAgKSAKICAgIHsgCiAgICBpZiAoaW5kZXgoJF9bMF0sICJc
biIpIDwgMCkKICAgICAgeyBsb2dNc2cyKCJERUI6ICIgLiAkX1swXSAuICJcbiIpOyB9CiAgICBl
bHNlCiAgICAgIHsgbG9nTXNnMigiREVCOiAiIC4gJF9bMF0pOyB9CiAgICB9CiAgaWYgKCAoJGxv
ZyAlIDIpICA9PSAwKQogICAgeyBwcmludCAkX1swXSAuICJcbiI7IH0KICB9CgojLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZW1vdmVMb2NrRmlsZToKIyAgRWxpbWlu
YXRlIHRoZSBsb2NrIGZpbGUKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CgpzdWIgUmVtb3ZlTG9ja0ZpbGUgCiAgewogIGlmICgtZSAkbG9ja2ZpbGUpIAogICAgeyB1bmxp
bmsgIiRsb2NrZmlsZSI7IH0KICB9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiMgZGlzcEFycmF5OgojICBEaXNwbGF5IGFycmF5IAojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCnN1YiBkaXNwQXJyYXkKICB7CiAgbXkgKCRhcnJOYW1lLCBAYXJyVmFs
cyk9IEBfOwoKICBteSAkYnVmZiA9ICIkYXJyTmFtZSAiOwogIG15ICRjb3VudD0gJCNhcnJWYWxz
ICsgMTsKICBteSAkaTsKCiAgaWYgKCQjYXJyVmFscyA8IDApCiAgICB7ICRidWZmIC49ICI6XG4i
O30KICBlbHNlCiAgICB7ICRidWZmIC49ICJbIiAuICRjb3VudCAuICIgbWVtYmVyc10gOlxuIjsg
fQoKICBmb3IgKCRpPTA7ICRpPD0kI2FyclZhbHM7ICRpKyspCiAgICB7ICRidWZmIC49ICIgICRp
OiAiIC4gJGFyclZhbHNbJGldIC4gIlxuIjsgfQoKICBpZiAoJCNhcnJWYWxzIDwgMCkKICAgIHsg
JGJ1ZmYgLj0gIiAgPG5vbmU+XG4iOyB9CgogIFByaW50TWVzc2FnZSgkYnVmZik7CiAgfQojLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBnZXRHcm91
cE1lbWJlcnM6CiMgICBnZXRzIG1lbWJlcnMgZm9yIGdyb3VwIHNwZWNpZmllZAojIGFyZ3VtZW50
OiAKIyAgICBncm91cCAod2l0aCAnZ3JvdXAgJyBwcmVmaXgpCiMgICAgbGV2ZWwgKHN0YXJ0cyB3
aXRoIDApCiMgcmV0dXJuczoKIyAgICBydG4KIyB1c2VzIGdsb2JhbCBAbWVtYmVyTGlzdCB0byBz
dG9yZSBtZW1iZXJzCiMgd2hpY2ggaGF2ZSBvbmx5IGJhc2UgcGFydCBvZiBjbiAocmVzdCBhZGRl
ZCBsYXRlcikKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0Kc3ViIGdldEdyb3VwTWVtYmVycwogIHsKICBteSAoJGdyb3VwX25hbWUsICRsZXZlbCkgPSBA
XzsKICBteSAkcnRuOwogIG15IEBtZW1iZXJfbGlzdDsKICBteSBAZ3JvdXBfbGlzdDsKICBteSBA
dGVtcF9saXN0OwogIG15ICRhdHRyWDsKICBteSAkaTsKICBteSAkcDsKCiAgaWYgKCRsZXZlbCA9
PSAwKQogICAgeyBAbWVtYmVyTGlzdCA9ICgpOyB9CiAgZWxzaWYgKCRsZXZlbCA+PSAxMCkKICAg
IHsgcmV0dXJuICgiR3JvdXAgbmVzdGluZyBsZXZlbD0kbGV2ZWwgZXhjZWVkcyBtYXhpbXVtIiwg
QG1lbWJlckxpc3QpOyB9CgogICRmaWx0ZXI9ICJjbj0kZ3JvdXBfbmFtZSI7CiAgJGF0dHI9J3Vu
aXF1ZW1lbWJlcic7CiAgKCRydG4sICRhdHRyWCkgPSBnZXRBdHRyKCRsZGFwLCAkZ3JvdXBiYXNl
ZG4sICRmaWx0ZXIsICRhdHRyKTsKICBpZiAoJHJ0biBuZSAnJykKICAgIHsgcmV0dXJuICRydG47
IH0KICBlbHNlCiAgICB7CiAgICBAdGVtcF9saXN0PUAkYXR0clg7CiAgICBmb3IgKCRpPTA7ICRp
PD0kI3RlbXBfbGlzdDsgJGkrKykKICAgICAgewogICAgICBpZiAoaW5kZXgobGMoJHRlbXBfbGlz
dFskaV0pLCAnZ3JvdXAgJykgPCAwKQogICAgICAgIHsgCiAgICAgICAgJHAgPSAkdGVtcF9saXN0
WyRpXTsgCiAgICAgICAgaWYgKGluZGV4KCRwLCdjbj0nKSA+PSAwKQogICAgICAgICAgewogICAg
ICAgICAgJkRlYnVnTXNnKDk5LCAiZG49JyRwJyIpOwogICAgICAgICAgJHAgPX4gcy9eY249Ly87
CiAgICAgICAgICAmRGVidWdNc2coOTksICJub3cgJyRwJyIpOwogICAgICAgICAgJHAgPX4gcy8s
LiokLy87CiAgICAgICAgICAmRGVidWdNc2coOTksICJub3cgJyRwJyIpOwogICAgICAgICAgfQog
ICAgICAgIHB1c2ggQG1lbWJlckxpc3QsICRwOyB9CiAgICAgIGVsc2UKICAgICAgICB7IHB1c2gg
QGdyb3VwX2xpc3QsICR0ZW1wX2xpc3RbJGldOyB9CiAgICAgIH0KCiAgICBpZiAoJCNncm91cF9s
aXN0ID49IDApCiAgICAgIHsKICAgICAgJGxldmVsKys7CiAgICAgIGZvciAoJGk9MDskaTw9JCN0
ZW1wX2xpc3Q7ICRpKyspCiAgICAgICAgewogICAgICAgICRwPSR0ZW1wX2xpc3RbJGldOwogICAg
ICAgICRwID1+IHMvICpbR2ddW1JyXVtPb11bVXVdW1BwXSAvLzsKICAgICAgICAkcnRuID0gZ2V0
R3JvdXBNZW1iZXJzKCRwLCAkbGV2ZWwpOwogICAgICAgIGlmICgkcnRuIG5lICcnKQogICAgICAg
ICAgeyByZXR1cm4gJHJ0bjsgfQogICAgICAgIH0KICAgICAgJGxldmVsLS07CiAgICAgIH0KICAg
IHJldHVybiAkcnRuOwogICAgfQogIH0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyByZW5hbWVHcm91cFJlZnMKIwojIGFyZ3M6CiMgIGxkYXAs
IG9sZE5hbWUsIG5ld05hbWUsIGF0dHIKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIHJlbmFtZUdyb3VwUmVmcwogIHsKICBteSAoJGxkYXAs
ICRvbGROYW1lLCAkbmV3TmFtZSwgJGF0dHIpID0gQF87CiAgbXkgJGF0dHJYOwogIG15ICRmaWx0
ZXI7CiAgbXkgJGRuOwogIG15ICRuZW50cmllczsKICBteSBAYXR0cnMgPSAoJ2NuJywgJ3N1YnNj
cmlwdGlvbnNncmFudG8nLCAnc3Vic2NpcHRpb25zZGVueXRvJyk7CiAgbXkgJHJlY29yZFg7CiAg
bXkgJXJlY29yZHM7CiAgbXkgQHZhbHVlczsKICBteSBAZ3JvdXBMaXN0OwogIG15IEBhZG1pbkxp
c3Q7CiAgbXkgJGk7CiAgbXkgJGtleTsKICBteSAlY2hnYXR0cnM7CiAgbXkgJHJ0bjsKICAjbXkg
JG5lbnRyaWVzOwoKICAjIG5lZWQgdG8gY2hlY2sgc3Vic2NyaXB0aW9uc2Rlbnl0bywgc3Vic2Ny
aXB0aW9uc2dyYW50dG8gZmllbGRzCiAgIyBmb3IgYWxsIGdyb3VwcyBhbmQgZml4IGlmIGZvdW5k
CiAgJGZpbHRlcj0iJGF0dHI9Z3JvdXAgJG9sZE5hbWUiOwogIERlYnVnTXNnKDQsIlJlbmFtZTog
c2VhcmNoOiBiYXNlPSRncm91cGJhc2VkbiwgZmlsdGVyPSRmaWx0ZXIsICIgLgogICAgImF0dHJz
PUBhdHRycyIpOwogICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmRYKSA9IAogICAgICZkb0xEQVBT
ZWFyY2goJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycyk7CgogIGlmICggJHJ0
biBuZSAiIikKICAgIHsgJndhcm4oJHJ0bik7IH0KICBEZWJ1Z01zZyg0LCAibmVudHJpZXM9JG5l
bnRyaWVzIik7CiAgJXJlY29yZHM9JSRyZWNvcmRYOwoKICBAZ3JvdXBMaXN0ID0gKCk7CiAgRGVi
dWdNc2coNCwgIlNlYXJjaGluZyBmb3IgJ2dyb3VwICRvbGROYW1lJyIpOwogIGZvcmVhY2ggJGRu
IChrZXlzICVyZWNvcmRzKQogICAgeyAKICAgICRkbiA9fiBzLywuKi8vOyAgICNrZWVwIG9ubHkg
Y24KICAgIERlYnVnTXNnKDQsICJTZWFyY2hpbmcgJGRuIGZvciAkYXR0ciIpOwogICAgcHVzaCBA
Z3JvdXBMaXN0LCAkZG47CiAgICB9CiAKICBmb3JlYWNoICRkbiAoQGdyb3VwTGlzdCkKICAgIHsg
CiAgICAoJHJ0biwgJGF0dHJYKSA9ICZnZXRBdHRyKCRsZGFwLCAkZ3JvdXBiYXNlZG4sICRkbiwg
JGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICcnKQogICAgICB7IAogICAgICAmd2FybigkcnRuKTsK
ICAgICAgcmV0dXJuOwogICAgICB9CiAgICBAdmFsdWVzPUAkYXR0clg7CiAgICBEZWJ1Z01zZyg0
LCAiJGRuIHNlYXJjaCBmb3IgJGF0dHIgcmV0dXJuZWQgJCN2YWx1ZXMgaXRlbXMiKTsKICAgIGZv
ciAoJGk9MDsgJGk8PSAkI3ZhbHVlczsgJGkrKykKICAgICAgewogICAgICBpZiAoJHZhbHVlc1sk
aV0gPX4gJ2dyb3VwICcgLiAkb2xkTmFtZSkKICAgICAgICB7IAogICAgICAgICR2YWx1ZXNbJGld
ID0gJ2dyb3VwICcgLiAkZ3JvdXBfbmFtZTsgCiAgICAgICAgJkRlYnVnTXNnKDQsICJmb3VuZCBv
bmUgdG8gY2hhbmdlIik7CiAgICAgICAgaWYgKCAkYW5hbHl6ZSA9PSAxKSAKICAgICAgICAgIHsg
cHJpbnQgIk5lZWQgdG8gY2hhbmdlICdncm91cCAiIC4gJGdyb3VwX25hbWUgLiAiJyBpbiAkZG5c
biI7IH0KICAgICAgICB9CiAgICAgIH0KICAgIGlmICggJGFuYWx5emUgIT0gMSkKICAgICAgewog
ICAgICAkY2hnYXR0cnN7JGF0dHJ9PVxAdmFsdWVzOwogICAgICBEZWJ1Z01zZyg0LCAidXBkYXRp
bmcgJGF0dHIgaW4gJGRuIik7CiAgICAgICRydG49ICZkb0xEQVBNb2RzKCRncm91cGJhc2Vkbiwg
JGZpbHRlciwgXEBhdHRycywgXCVjaGdhdHRycyk7CiAgICAgIGlmICggJHJ0biBuZSAiIikKICAg
ICAgICB7CiAgICAgICAgJndhcm4oJHJ0bik7CiAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAg
ICAgZWxzZQogICAgICAgIHsgRGVidWdNc2coNCwgIkdyb3VwICRkbiB1cGRhdGVkIik7IH0KICAg
ICAgfQogICAgfQogIH0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiMgRGVidWdNc2cKIyAgIEFyZ3M6CiMgICAgIExldmVsOiAgMSB0byA1
CiMgICAgIG1zZzogICAgbXNnIHRvIHByaW50IHRvIHN0b3V0CgojLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIERlYnVnTXNnKCkKICB7
CiAgCiAgbXkoJGxldmVsLCAkbXNnKSA9IEBfOwogIG15ICRpOwogIG15ICRpbmRlbnQgPSAiIjsK
ICBteSAkY2xvc2luZ19pbmRlbnQgPSAiIjsKICBteSAkaGVhZCA9ICIiOwoKCiAgaWYgKCRzaG93
ID09IDApCiAgICB7IHJldHVybjsgfQogIAogICRtc2cgLj0gJGluZGVudDsKICBmb3IgKCRpPTA7
ICRpIDwgJHJlY3VyX2xldmVsOyAkaSsrKQogICAgewogICAgaWYgKCRodG1sID09IDEpCiAgICAg
IHsKICAgICAgIyRpbmRlbnQgLj0gIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyI7IAogICAgICAkaW5kZW50IC49IiAgICAgICAgIjsKICAgICAgJGNsb3Np
bmdfaW5kZW50IC49ICIiOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgIyRpbmRlbnQg
Lj0gIiAgICAiOwogICAgICB9CiAgICB9CgogIGlmICgkaHRtbCA9PSAxKQogICAgewogICAgJGhl
YWQ9Ijxmb250IGNvbG9yPVwiJGZvbnRjb2xvclwiPiI7CiAgICAkZW9sID0gIjwvZm9udD5cbiI7
CiAgICB9IAogIGVsc2UgCiAgICB7CiAgICAkaGVhZCA9ICIiOwogICAgJGVvbCA9ICJcbiI7CiAg
ICB9CgogICRtc2cgPSAiJGhlYWQkaW5kZW50JG1zZyRjbG9zaW5nX2luZGVudCRlb2wiOwoKICBT
V0lUQ0g6IAogICAgewogICAgaWYgKCRsZXZlbD09MSkgCiAgICAgIHsgIAogICAgICBpZiAoJHNo
b3c+PTEpIAogICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAgbGFzdCBTV0lUQ0g7
IAogICAgICB9CiAgICBpZiAoJGxldmVsPT0yKSAKICAgICAgeyAgCiAgICAgIGlmICgkc2hvdz49
MikgCiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAgbGFzdCBTV0lUQ0g7IAog
ICAgICB9CiAgICBpZiAoJGxldmVsPT0zKSAKICAgICAgeyAgCiAgICAgIGlmICgkc2hvdz49Mykg
CiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAgbGFzdCBTV0lUQ0g7IAogICAg
ICB9CiAgICBpZiAoJGxldmVsPT00KSAKICAgICAgeyAgCiAgICAgIGlmICgkc2hvdz49NCkgCiAg
ICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAgbGFzdCBTV0lUQ0g7IH0KICAgIGlm
ICgkbGV2ZWw9PTUpIAogICAgICB7ICAKICAgICAgaWYgKCRzaG93Pj01KSAKICAgICAgICB7IFBy
aW50TWVzc2FnZSgkbXNnKTt9IAogICAgICBsYXN0IFNXSVRDSDsgCiAgICAgIH0KICAgIAogICAg
UHJpbnRNZXNzYWdlKCRtc2cpOyAKICAgIGxhc3QgU1dJVENIOwogICAgfQogIH0KCiMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZ2V0TWFp
bDoKIyAgIGdldCB1c2VyIG1haWwgYWRkcmVzcyBmb3IgdXNlcm5hbWUgCiMgYXJnczoKIyAgIHVz
ZXJOYW1lCiMgcmV0dXJuczoKIyAgIHVzZXJNYWlsCiMgbm90ZToKIyAgIGVycm9ycyBkaXNwbGF5
ZWQgb25seQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCnN1YiBnZXRNYWlsCiAgewogIG15ICR1c2VyTmFtZT0kX1swXTsKICBteSAkdXNlck1h
aWw7CiAgbXkgJGZpbHRlcjsKICBteSAkYXR0cjsKICBteSAkcnRuOwogIGlmICgkdXNlck5hbWUg
bmUgJycpCiAgICB7CiAgICAkZmlsdGVyPSJjbj0kdXNlck5hbWUiOwogICAgJGF0dHI9Im1haWwi
OwogICAgCiAgICBpZiAoJGRlYnVnID4gMCkKICAgICAgeyBwcmludCAiPCEtLUdldHRpbmcgdGhl
ICRhdHRyIGZvciAnJGZpbHRlcicgKG1haWwpIjsgfQogICAgJHJ0biA9Jyc7CiAgICAoJHJ0biwg
JHVzZXJNYWlsKSA9ICZnZXRBdHRyT25lKCRsZGFwLCRwZW9wbGViYXNlZG4sICRmaWx0ZXIsICRh
dHRyKTsKICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgIHsgCiAgICAgIHByaW50ICJXQVJOSU5H
OiBnZXRNYWlsKCR1c2VyTmFtZSkgZXJyb3I6XG4kcnRuXG4iOyAKICAgICAgaWYgKCR1c2VyTWFp
bCBlcSAnJykKICAgICAgICB7ICR1c2VyTWFpbCA9ICZkZWZMZGFwQWRtaW47IH0gICNpZiBsZGFw
IGRvd24KICAgICAgfQogICAgZWxzZQogICAgICB7IHJldHVybiAkdXNlck1haWw7IH0KICAgIH0K
ICBlbHNlCiAgICB7IHJldHVybiAmZGVmTGRhcEFkbWluOyB9CiAgfQoKIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBnZXRDbkZy
b21VaWQgU3ViOiB1c2UgbGRhcCB0byBnZXQgY29tbW9uIG5hbWUgKGNuKSBmcm9tIHVpZAojLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpzdWIgZ2V0Q25Gcm9tVWlkIAogIHsKCiAgbXkgJGF0dHI7CiAgbXkgJGZpbHRlcjsKICBteSAk
aTsKICBteSAkQXJnPSRfWzBdOwogIG15ICR1aWQ7CiAgbXkgJGNuOwogIG15ICRidWZmOwogIAog
ICZEZWJ1Z01zZyg5OSwiZ2V0Q25Gcm9tVWlkIGFyZz0nJEFyZyciKTsKCiAgJGZpbHRlciA9ICJ1
aWQ9IiAuICRBcmc7CiAgJGF0dHIgICA9ICJkbiI7CgogICZEZWJ1Z01zZyg5OSwiR2V0dGluZyB0
aGUgJGF0dHIgZm9yICckZmlsdGVyJyAoZGlzdGluZ3Vpc2hlZCBuYW1lKSIpOwogICRidWZmID0g
IiI7CiAgKCRydG4sICRidWZmKSA9ICZnZXRBdHRyT25lKCRsZGFwLCRwZW9wbGViYXNlZG4sICRm
aWx0ZXIsICRhdHRyKTsKICAmRGVidWdNc2coOTksIiBjbj0nJGJ1ZmYnIik7CgogICRidWZmID1+
IHMvXiAqY24gKj0gKi8vOwogICRidWZmID1+IHMvLC4qJC8vOwogIHJldHVybiAoJHJ0biwgJGJ1
ZmYsICRBcmcpOwogICAKICB9IyMjIGVuZCBzdWIgZ2V0Q25Gcm9tVWlkCgoK
# Sending end of data token...
$ EOF
# Waiting for remote host to process data...
$ echo tramp_exit_status $? 
tramp_exit_status 0
# Decoding region into remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...done
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 39271) (15807 39271) (15807 39271) 60636 33188 t (6 . 
51848) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 39271) (15807 39271) (15807 39271) 60636 33188 t (6 . 
51848) (128 133))
$ chmod 0755 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ echo are you awake
are you awake
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 39271) (15807 39271) (15807 39273) 60636 33261 t (6 . 
51848) (128 133))
$ echo are you awake
are you awake
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 39271) (15807 39271) (15807 39273) 60636 33261 t (6 . 
51848) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -w 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Encoding region...
# Encoding region using function...
# Decoding region into remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...
$ mimencode -u -b 
>/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl <<'EOF'
# Sending data to remote host...
IyEvdXNyL2Jpbi9wZXJsCgojIDMwLW9jdC0wMiBkZ3MgRml4IGJ1ZyB3aGVuIGdyb3VwIGNvbnRh
aW5zIGFub3RoZXIgZ3JvdXAKIyAyNS1zZXAtMDIgZGdzIEV4cGFuZCBTSUdOQUxfQ0xFQU5VUCB0
byBpbmNsdWRlIHRyYWNlIGJhY2sgZGV0YWlscy4KIyAyNC1zZXAtMDIgZGdzIEZpeCBpc3N1ZSB3
aGVuIG5vdCBpbiB1cGRhdGUgbW9kZSwgYW5kIG5vdCBnZXR0aW5nIHByb3h5IGRldGFpbHMKIyAg
ICAgICAgICAgICAgIElmIG5vIHByb3h5LCB1c2UgbWFuYWdlciBhcyB0aGUgYWRtaW4gY29udGFj
dAojIDE5LXNlcC0wMiBkZ3MgQWRkIHRlc3Qgd2hlbiBsZGFwIGNvbm5lY3Rpb24gZHJvcHMgYWZ0
ZXIgc3RhcnQgCiMgICAgICAgICAgICAgICBpbiBzZW5kRW1haWwKIyAgICAgICAgICAgICAgIENo
YW5nZSByb290QGxvY2FsaG9zdCB0byByb290IGZvciBmZWVkYmFjayBtYWlsCiMgMTgtc2VwLTAy
IGRncyBBZGQgbGlzdCBvZiBncm91cHMgdG8gYmUgcHJvY2Vzc2VkIHRvIGxvZwojICAgICAgICAg
ICAgICAgTWFrZSBhbGFybSBzZXR0aW5nIGludG8gYSB2YXJpYWJsZQojIDEzLXNlcC0wMiBkZ3Mg
TW9kaWZ5IGVtYWlsIG1lc3NhZ2VzCiMgICAgICAgICAgICAgICBBZGQgY2hlY2sgdG8gc2xlZXAg
d2hlbiBzZXJ2ZXIgaXMgZHVtcGluZyBhdCBtaWRuaWdodCAKIyAgICAgICAgICAgICAgICAgKHRo
aXMgbWF5IG5lZWQgYWRqdXN0aW5nIHdpdGggZHVtcCBjcm9uKQojICAgICAgICAgICAgICAgQWRk
IGdyb3VwIG5hbWUgb3V0cHV0IGR1cmluZyBwcm9jZXNzaW5nCiMgICAgICAgICAgICAgICBEcm9w
IGluY2x1ZGUgc3RhdGVtZW50IG9uIHRvcCBsaW5lIChtdXN0IGJlIHJ1biBmcm9tIHdpdGhpbiBk
aXJlY3RvcnkKIyAgICAgICAgICAgICAgIGkuZS4KIyAgICAgICAgICAgICAgIChjZCA8c29tZWRp
cmVjdG9yeT47Li9ncnB0ZXIucGwgKQojICAgICAgICAgICAgICAgUGljayB1cCBncm91cHMgYmVp
bmcgcHJvY2Vzc2VkIGluIHVwZGF0ZSBtb2RlCiMgMTAtc2VwLTAyIGRncyBGaXggaXNzdWUgd2l0
aCBtaXNzaW5nICJjbj0iIGluIHVuaXF1ZW1lbWJlcgojIDMwLWF1Zy0wMiBkZ3MgRml4IGJ1ZyB3
aGVuIHVuaXF1ZW1lbWJlcnMgbm90IHJlbW92ZWQKIyAgICAgICAgICAgICAgIFJld3JpdGUgc2Vu
ZEVtYWlsIHJvdXRpbmUKIyAgICAgICAgICAgICAgIERvIG5vdCBlbWFpbCBpZiBvbmxlIExEQVAg
Y29ubmVjdGlvbiBmYWlsaW5nCiMgICAgICAgICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGV2YWwg
Y2FsbHMKIyAgICAgICAgICAgICAgIFVwZGF0ZSBVUkwgdG8gYmUgcHJvZHVjdGlvbiBhbmQgbm90
IGRlYnVzc3kKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQojIGxkYXAgZ3JvdXBzIGJhY2tlbmQgKGJhdGNoKSBwcm9jZXNz
aW5nCiMgYWRhcHRlZCBmcm9tIHNsYidzIGdyb3VwdGVyLnBsCiMKIyBEb24gRXJpY2tzb24sIElF
QywgMjAwMAojCiMgRGVidWcgTGV2ZWw6IDEgZmV3IGluZm9ybWF0aW9uLCBzbWFsbCB2ZXJib3Nl
IAojICAgICAgICAgICAgICAyIGdlbmVyYWwgdmVyYm9zZSAoZ29vZCBmb3IgZGVtb3MpCiMgICAg
ICAgICAgICAgIDMgcHJvZ3JhbSBmbG93CiMgICAgICAgICAgICAgIDQgdmFyaWFibGVzIGNvbnRl
bnQgaW5zaWRlIHByb2NlZHVyZQojICAgICAgICAgICAgICA1IGhhdmluZyBiYWQgZGF5PwojCiMg
Q3JlYXRlZDogQmFzZWQgdXBvbiBncm91cHRlci5wbCBNYXJjaCAxOTk4IGJ5IERhbmllbCBHdWVy
bWV1cgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQoKdXNlIHN0cmljdDsKdXNlIGdycGdsb2JhbDsKdXNlIERhdGU6Ok1h
bmlwOwp1c2UgTW96aWxsYTo6TERBUDo6Q29ubjsKdXNlIE1vemlsbGE6OkxEQVA6OlV0aWxzOwp1
c2UgTW96aWxsYTo6TERBUDo6RW50cnk7CiN1c2UgVGltZTo6UGFyc2VEYXRlOwoKbXkgQG1lbWJl
ckxpc3Q7Cm15IEByZW1vdmVfbGlzdDsKbXkgQGFyZ3M7Cm15ICgkY29ubkhvc3QsJGNvbm5Qb3J0
LCRjb25uRE4sJGNvbm5QYXNzLAogICAgJGdyb3VwYmFzZWRuLCRwZW9wbGViYXNlZG4sJHJvbGVi
YXNlZG4pID0gJmdldFBhcm1zOwpteSAkY3VyR3JvdXA7Cm15ICRjdXJBZG1pbjsKbXkgJGN1ckxk
YXBBZG1pbjsKbXkgJGN1ckxkYXBBZG1pbk1haWw7CgpteSAkcnRuOwpteSAkbnJlY29yZHM7Cm15
ICRzY29wZT0nc3VidHJlZSc7Cm15ICRWZXJzaW9uSW5mbzsKbXkgJGxvZzsKbXkgJGxkYXA7Cm15
ICRmb250Y29sb3I7Cm15ICRkZWJ1ZzsKbXkgJHRpbWVTdGFtcDsKbXkgJGk7Cm15ICRwOwpteSAk
bXluYW1lOwpteSBAZmllbGRzOwpteSAlcmVjb3JkczsKbXkgJXJlY29yZDsKbXkgJHJlY29yZFg7
Cm15ICRzZWFyY2hWYWw7Cm15ICRmaWVsZF90b19zZWFyY2g7Cm15ICRhdHRyOwpteSAkZmlsdGVy
OwpteSBAcHM7Cm15ICRkYXRlOwpteSAkZ3JvdXBfZXhwaXJlOwpteSAkZXhwaXJlX2RhdGUyOwpt
eSAkZXhwaXJlX2RhdGU7Cm15ICRlcnI7Cm15ICRlcnJmbGFnOwpteSAkZXJydGV4dDsKbXkgJGVy
cnRleHRNc2c7Cm15ICRzdGFydFRpbWU7Cm15ICRyZWFkX2hvc3Q7Cm15IEBhdHRyczsKbXkgJGJh
c2VkbjsKbXkgJG51X3VzZXI7Cm15ICRudV9wYXNzd2Q7Cm15ICRidWZmOwpteSAkdXBkYXRlb25s
eTsKbXkgJHNob3c7Cm15ICRsYXN0bW9kaWZpZWRvbjsKbXkgJHJlY3VyX2xldmVsOwpteSAkbGlz
dG9ubHk7Cm15ICRsb2NrZm9yY2VkOwpteSAka2VlcHRlbXA7Cm15ICRodG1sOwpteSAkZ3JvdXBf
bmFtZTsKbXkgJGVvbDsKbXkgJGVvbHByaW50OwpteSAkYW5hbHl6ZTsKbXkgJHRlbXBmaWxlOwpt
eSAkbWVtYmVybGltaXQ7Cm15ICRkbjsKbXkgJGNuOwpteSAkdGhpc2NuOwpteSAkc2l6ZWxpbWl0
OwpteSAkbWVtYmVyZmlsZTsKbXkgJGxvY2tmaWxlOwpteSAkc3JjZGlyOwpteSAkd29ya2RpcjsK
bXkgJHRtcGRpcjsKbXkgJGxvZ2RpcjsKbXkgQGdyb3VwTGlzdDsKbXkgQGFkbWluTGlzdDsKbXkg
JG9sZE5hbWU7Cm15ICRjaGFuZ2VkOwpteSAkcHM7Cm15ICRjbWQ7CgpteSAkbWF4VGltZT04KjYw
KjYwOyAgIyBNYXhpbXVtIHRpbWUgdGhhdCBqb2Igd2lsbCBydW4gZm9yIGJlZm9yZSBhYm9ydGlu
ZwoKbXkgJFJDU2RhdGU9JyREYXRlOiAyMDAyLzA5LzE5ICQnOwpteSAkUkNTZmlsZT0nJFJDU2Zp
bGU6IGdycHRlci5wbCx2ICQnOwpteSAkUkNTcmV2PSckUmV2aXNpb246IDEuOGRncyAkJzsKCgoj
IEVudmlyb25tZW50IHZhcmlhYmxlcwokfCA9MTsgICAgICAgICAgICAgICAgICMgdHVybiBvZmYg
YnVmZmVyaW5nCgojLS0tLS0tLS0tLS0tLS0tIGdsb2JhbCB2YXJpYWJsZXM6IGRpcmVjdG9yaWVz
IC0tLS0tLS0tLS0tLS0tCiRzcmNkaXIgICAgID0gJmdldHNyY2RpcjsKJGxvZ2RpciAgICAgPSAi
JHNyY2Rpci9sb2dzIjsKJHRtcGRpciAgICAgPSAiJHNyY2Rpci90bXBmaWxlcyI7CiR3b3JrZGly
ICAgID0gIiRzcmNkaXIvd29yayI7CiMtLS0tLS0tLS0tLS0tLS0gZ2xvYmFsIHZhcmlhYmxlcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiRsb2NrZmlsZSAgID0gIiR0bXBkaXIvZ3JwdGVy
LmxvY2siOwokbWVtYmVyZmlsZSA9ICIkdG1wZGlyL21lbWJlcnMkJC50bXAiOwokc2l6ZWxpbWl0
ICAgICA9IDEwMDA7ICAjIFNldCB0byBNYXhpbXVtIE51bWJlciBvZiBFbnRyaWVzIHRvIFJldHVy
bgogICAgICAgICAgICAgICAgICAgICAgICAjIENhbiBzZXQgc21hbGwgdG8gdGVzdCBlcnJvciBy
b3V0aW5lcwokdGVtcGZpbGUgICA9ICIkdG1wZGlyL2dyb3VwLiQkLnRtcCI7CgokVmVyc2lvbklu
Zm89IiRSQ1NmaWxlICRSQ1NyZXYgJFJDU2RhdGUiOwoKIy0tLS0tLS0tLS0tLS0tIGNvbW1hbmQg
bGluZSBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJGFuYWx5emUgPSAwOyAgICAgICAg
ICAjIGNtZCBsaW5lIG9wdGlvbjogIGJ5IGRlZmF1bHQgd2hlbiB0aGUgcHJvZ3JhbSAKICAgICAg
ICAgICAgICAgICAgICAgICAjIHJ1bnMgaXQgdXBkYXRlcyB0aGUgZGlyZWN0b3J5CiAgICAgICAg
ICAgICAgICAgICAgICAgIyBpZiBzZXQgdG8gMSwgdGhlIHByb2dyYW0ganVzdCBhbmFseXplcyB0
aGUgCiAgICAgICAgICAgICAgICAgICAgICAgIyBncm91cCBzdHJ1Y3R1cmUgYW5kIHdyaXRlIGl0
IHRvIHN0ZG91dAoKJGVvbD0iXG4iOyAgICAgICAgICAgICAjIHNldCBieSAkaHRtbDogZW5kIG9m
IGxpbmUgZm9yIHN0ZG91dCAKJGVvbHByaW50PSJcXG4iOyAgICAgICAjCiAgICAgICAgICAgICAg
ICAgICAgICAgIyhjYW4gYmUgXG4gb3IgPGJyPiBmb3Igd3d3LgoKJGdyb3VwX25hbWUgPSAiIjsg
ICAgICAjIGNtZCBsaW5lIG9wdGlvbjogCiAgICAgICAgICAgICAgICAgICAgICAgIyBkbyBhbGwg
Z3JvdXAgdW5sZXNzIHNwZWNpZnkgaW4gdGhlIGFyZ3VtZW50cwoKJGh0bWwgPSAwOyAgICAgICAg
ICAgICAjIGNtZCBsaW5lIG9wdGlvbjogCiAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQg
dHlwZTogaHRtbCAoMSkgb3Igc3RkICgwKQoKJGtlZXB0ZW1wPTA7ICAgICAgICAgICAjaWYgc2V0
IHRvIG9uZSB0ZW1wIGZpbGUgYXJlIG5vdCBlcmFzZWQgCiAgICAgICAgICAgICAgICAgICAgICAg
IyBhZnRlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgI3NldCB0byB6ZXJvIHRl
bXAgZmlsZSBhcmUgZXJhc2UuCgokbGlzdG9ubHkgPSAwOyAgICAgICAgICMgc2V0IHRvIDEgdGVs
bCB0aGlzIHByb2dyYW0gCiAgICAgICAgICAgICAgICAgICAgICAgIyB0byBkaXNwbGF5IGFsbCBn
cm91cHMgdGhlbiBxdWl0cy4KCiRsb2NrZm9yY2VkID0gMDsgICAgICAgIyBzZXQgdG8gMSB0ZWxs
IHRoaXMgcHJvZ3JhbSB0byBmb3JjZSB0aGUgbG9jayAKICAgICAgICAgICAgICAgICAgICAgICAj
IG9mIHRoZSBleGVjdXRpb24uCgokbG9nID0gMjsgICAgICAgICAgICAgICMgY21kIGxpbmUgb3B0
aW9uIHRvIGxvZyBvdXRwdXQgaW50byBMT0cgZmlsZQogICAgICAgICAgICAgICAgICAgICAgICMg
MCA9IGRpc3BsYXksIDEgPSBMT0cgZmlsZSwgMiA9IGJvdGgKCiRyZWN1cl9sZXZlbD0wOyAgICAg
ICAgIyB0ZWxsIHVzIHRoZSBsZXZlbCBvZiByZWN1cnNpdml0eSB0aGUgCiAgICAgICAgICAgICAg
ICAgICAgICAgIyBwcm9ncmFtIGlzIGluCiAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlz
IHVzZWQgdG8gaW5kZW50IHRoZSBvdXRwdXQgdG8gZGlzcGxheSBhIG5pY2UKICAgICAgICAgICAg
ICAgICAgICAgICAjIGRpcmVjdG9yeSB0cmVlIHdoZW4gZ3JvdXAgaW5jbHVkZXMgb3RoZXIgZ3Jv
dXBzCgokc2hvdz0wOyAgICAgICAgICAgICAgICMgY21kIGxpbmUgb3B0aW9uOiBzaG93IGRlYnVn
IGluZm9ybWF0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICMgIHVwIHRvIGxldmVsIHlvdSBz
ZXQgaGVyZSAoMCB0byA1KQogICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIGJlIHNldCB0
byAwIGluIG5vcm1hbCBvcGVyYXRpb24gbW9kZQoKJHVwZGF0ZW9ubHkgPSAwOyAgICAgICAjIHNl
dCB0byAxIHRlbGwgdGhpcyBwcm9ncmFtIG9ubHkgdG8gZXhwYW5kIAogICAgICAgICAgICAgICAg
ICAgICAgICMgZ3JvdXAgd2l0aCBzdGF0dXMgJ1RvIGJlIHByb2Nlc3NlZCcuCgojIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMg
RE8gTk9UIE1PRElGWSAgYmVsb3cgdGhpcyBsaW5lLgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIAojCiMgIE1BSU4KIwojIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKIyMjIyMjIyMjCgojIyBjcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSBpZiBuZWVk
ZWQKCmlmICgkZGVidWcgPj0gMCkgewogIHByaW50IHFxezwhLS0gR3JvdXAgY29kZSAkVmVyc2lv
bkluZm8gc3RhcnRpbmcgYXQgfSxzY2FsYXIoZ210aW1lKHRpbWUpKSxxcXstLT5cbn07Cn0KCmlm
ICghIC1kICIkd29ya2RpciIgKSAKICB7CiAgbWtkaXIoJHdvcmtkaXIsMDc3NykgfHwgZGllICgi
Y2Fubm90IGNyZWF0ZSBkaXJlY3Rvcnk6ICR3b3JrZGlyOiAkPyIpOwogIFByaW50TWVzc2FnZSgi
RGlyZWN0b3J5ICR3b3JrZGlyIGNyZWF0ZWQiKTsKICB9CgojIHVzYWdlOiAgZ3JwdGVyIFstb3B0
aW9ucyAuLi5dICMKI3doZXJlIG9wdGlvbnMgaW5jbHVkZTogc2VlICZ1c2FnZSAKCiMjIyMgcmVh
ZCBhcmd1ZW1lbnQgYW5kIHNldCB2YXJpYWJsZXMKCkBhcmdzPUBBUkdWOwokYnVmZj0gIkFyZ3Vt
ZW50IGxpbmU6IFxuICAiOwpmb3IgKCRpPTA7ICRpPD0gJCNhcmdzOyAkaSsrKQogIHsgJGJ1ZmYg
Lj0gJGFyZ3NbJGldIC4gJyAnOyB9IAoKIyMjIyBpbml0IHNlcXVlbmNlCndoaWxlICggJF8gPSAk
QVJHVlswXSApCiAgewogIHNoaWZ0OwogIGxhc3QgaWYgL14tLSQvOwogIGlmICAgICgvXi1nLykg
ICAgCiAgICB7ICRncm91cF9uYW1lID0gJmdldF9vcHRpb24oIi1ncm91cCIpOyAgfSAKICBlbHNp
ZiAoL14tdy8pICAgICAgCiAgICB7ICRodG1sID0gMSAgICAgICAgICAgICB9CiAgZWxzaWYgKC9e
LWEvKSAgICAgIAogICAgeyAkYW5hbHl6ZSAgID0gMTsgICAgICAgICAgICAgICAgICAgICAgIH0K
ICBlbHNpZiAoL14tbG9nJC8pICAgICAgICAKICAgIHskbG9nID0gJmdldF9vcHRpb24oIi1sb2ci
KTsgfQogIGVsc2lmICgvXi1sLykgICAgICAKICAgIHsgJGxpc3Rvbmx5ICA9IDE7ICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgZWxzaWYgKC9eLXUvKSAgICAgIAogICAgeyAkdXBkYXRlb25seSAg
PSAxOyAgICAgICAgICAgICAgICAgICAgICAgfQogIGVsc2lmICgvXi16LykgICAgICAKICAgIHsg
JGxvY2tmb3JjZWQgID0gMTsgICAgICAgICAgICAgICAgICAgICAgIH0KICBlbHNpZiAoL14tZC8p
ICAgICAgCiAgICB7ICRzaG93ICAgICAgID0gJmdldF9vcHRpb24oIi1kZWJ1ZyIpOyB9CiAgZWxz
aWYgKC9eLWsvKSAgICAgIAogICAgeyAka2VlcHRlbXAgID0gMTsgICB9CiAgZWxzaWYgKC9eLWgv
KSAgICAKICAgIHsgJnVzYWdlKCJIZWxwIHJlcXVlc3RlZCIpOyB9CiAgZWxzaWYgKC9eLXAvKSAg
ICAgIAogICAgeyAkbnVfcGFzc3dkICA9ICZnZXRfb3B0aW9uKCItcGFzcyIpOyAgIH0KICBlbHNp
ZiAoL15bYS16QS1aXSovKSAgICAKICAgIHsgCiAgICAmYWJvcnQoIkVSUjogY2FuJ3Qgc3BlY2lm
eSBtb3JlIHRoYW4gb25lIHVzZXIhIiw3KSBpZiAoJG51X3VzZXIgbmUgIiIpOwogICAgJG51X3Vz
ZXIgPSAkXzsKICAgIH0KICBlbHNlICAgICAgICAgICAgIAogICAgeyAmdXNhZ2UoInVua25vd24g
YXJndW1lbnQ6ICRfIik7fQogIH0KCmlmICggJGh0bWwgPT0gMSkKICB7IAogIHByaW50ICJDb250
ZW50LXR5cGU6IHRleHQvaHRtbFxuUHJhZ21hOiBuby1jYWNoZVxuXG4iOyAKICBwcmludCAiPEhU
TUw+PEhFQUQ+PFRJVExFPkxEQVAgR3JvdXBzIEJhdGNoIFByb2Nlc3Npbmc8L1RJVExFPjwvSEVB
RD4iOwogIHByaW50ICI8Qk9EWT5cbiIKICB9CgojIyBkaXNwbGF5IFJDUyBpbmZvOgomUkNTZGlz
cCgkUkNTZGF0ZSwkUkNTZmlsZSwkUkNTcmV2LDApOwoKJkRlYnVnTXNnKDEsIAogICJcbi0gLSAt
IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSBcbiIgLgogICJQYXJhbWV0
ZXJzOlxuICB3b3JrZGlyIFx0JHdvcmtkaXJcbiAgYmFzZWRuIFx0JGJhc2VkblxuICBncm91cGJh
c2VkbiAiIC4KICAiXHQkZ3JvdXBiYXNlZG5cbiAgcGVvcGxlYmFzZWRuIFx0JHBlb3BsZWJhc2Vk
blxuICByZWFkX2hvc3QgIiAuCiAgIlx0JHJlYWRfaG9zdFxuLSAtIC0gLSAtIC0gLSAtIC0gLSAt
IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIik7CgoKJkRlYnVnTXNnKDEsIlxuQXJndW1lbnRzOlxu
ICBhbmFseXplXHQkYW5hbHl6ZVxuICBlb2xcdFx0JGVvbHByaW50XG4iIC4KICAiICBncm91cF9u
YW1lXHQkZ3JvdXBfbmFtZVxuICBodG1sXHRcdCRodG1sXG4gIGtlZXB0ZW1wXHQka2VlcHRlbXBc
biIgLgogICIgIGxpc3Rvbmx5XHQkbGlzdG9ubHlcbiAgbG9ja2ZvcmNlZFx0JGxvY2tmb3JjZWRc
biIgLgogICIgIGxvZ1x0XHQkbG9nXG4gIHJlY3VyX2xldmVsXHQkcmVjdXJfbGV2ZWxcbiAgc2hv
d1x0XHQkc2hvd1xuIiAuCiAgIiAgdXBkYXRlb25seVx0JHVwZGF0ZW9ubHlcbiIgLgogICItIC0g
LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSIpOwokZGF0ZT1nbXRp
bWUodGltZSk7CiRzdGFydFRpbWU9Z210aW1lKHRpbWUpOwpjaG9tcCgkZGF0ZSk7CiRkZWJ1Zz0k
c2hvdzsKJnNldERlYnVnKCRkZWJ1Zyk7CiNvcGVuIGxvZyBmaWxlCmxvZ01zZzIoIklORjogU3Rh
cnRpbmdcbiIpOwoKKCRydG4sJGxkYXApPWRvQmluZCgkbGRhcCk7CmlmICgkcnRuIG5lICcnKQog
IHsgJmFib3J0KCRydG4pOyB9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKIyBjaGVjayBsb2NrIGZpbGUgZXhpc3RzCiMgaWYgaXQgZXhpc3Rz
IGl0IG1lYW5zIHRoYW4gYW5vdGhlciBpbnN0YW5jZSBvZiB0aGlzIAojIHByb2cgaXMgYWxyZWFk
eSBydW5uaW5nIG9yIHRoYW4gdGhlIGZpbGUgaXMgYW4gb2xkIGxvY2sgZmlsZSAKIyBmcm9tIGEg
cHJvY2VzcyB0aGF0IGFscmVhZHkgZGllZC4KIwoKaWYgICgoLWUgIiRsb2NrZmlsZSIpICYmICgk
bG9ja2ZvcmNlZCA9PSAwKSkgCiAgewogICMjIyBIZXJlIHRoZSBsb2NrZmlsZSBleGlzdC4KICAj
IyMgQ2hlY2sgaWYgdGhlIGZpbGUgaXMgb2xkZXIgdGhhbiBvbmUgZGF5LiBpZiB5ZXMKICAjIyMg
d2UgcmVtb3ZlIGl0IHNpbmNlIHRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgaW50ZXJydXB0ZWQK
ICAjIyMgcHJvY2VzcyByZXN1bHRpbmcgZnJvbSBhbiBMREFQIGNyYXNoIG9yIGEgc2VydmVyIHJl
c3RhcnQuCiAgCiAgaWYgKCgtTSAkbG9ja2ZpbGUpID49IDEpCiAgICB7CiAgICBQcmludE1lc3Nh
Z2UoIkRlbGV0aW5nIGxvY2tmaWxlICRsb2NrZmlsZSBzaW5jZSAiIC4KICAgICAgIml0J3Mgb2xk
ZXIgdGhhbiAxIGRheSIpOwogICAgdW5saW5rICgkbG9ja2ZpbGUpOwogICAgfSAKICBlbHNlIAog
ICAgewogICAgIyBDaGVjayB0byBzZWUgaWYgYW5vdGhlciBwcm9jZXNzIGlzIHJ1bm5pbmcKICAg
ICRjbWQgPSAncHMgLWVmIHwgZ3JlcCBncnB0ZXIucGwgfCBncmVwIC12IGdyZXAgfCB3YyAtbCAn
IC4gJz4nIC4KICAgICAgIiR0bXBkaXIvJCQudG1wIjsKICAgIHN5c3RlbSgkY21kKTsKCiAgICAk
cHM9MDsgCiAgICBAcHM9KCk7CiAgICBvcGVuIChQUywgIjwkdG1wZGlyLyQkLnRtcCIpOwogICAg
JHBzPSA8UFM+OwogICAgY2xvc2UgUFM7CiAgICB1bmxpbmsgIiR0bXBkaXIvJCQudG1wIjsKICAg
IGlmICgkcHMgPj0gMikgCiAgICAgIHsKICAgICAgUHJpbnRNZXNzYWdlKCJBYm9ydGluZzogYW5v
dGhlciBwcm9jZXNzIGlzIHJ1bm5pbmciKTsKICAgICAgaWYgKCRodG1sID09IDEpCiAgICAgICAg
eyBwcmludCAiPC9CT0RZPjwvSFRNTD5cbiI7IH0KICAgICAgZXhpdDsKICAgICAgfSAKICAgIGVs
c2UKICAgICAgewogICAgICBwcmludCBTVERFUlIgIkxvY2sgZmlsZSBleGlzdHMgKCRsb2NrZmls
ZSksICIgLgogICAgICAgICJidXQgbm8gcHJvY2VzcywgZGVsZXRpbmcgbG9ja2ZpbGUuIjsKICAg
ICAgUHJpbnRNZXNzYWdlKCJMb2NrIGZpbGUgZXhpc3RzICgkbG9ja2ZpbGUpLCAiIC4KICAgICAg
ICAiYnV0IG5vIHByb2Nlc3MsIGRlbGV0aW5nIGxvY2tmaWxlLiIpOwogICAgICB1bmxpbmsgIiRs
b2NrZmlsZSI7IAogICAgICB9IAogICAgfQogIH0KCiMjIyMjIwojIyMgd2UgY3JlYXRlIGEgbG9j
ayBmaWxlIGFuZCBwdXQgdGhlIGRhdGUgaW4gaXQKIyMjIGFzIHdlbGwgYXMgdGhlIFBJRCMKUHJp
bnRNZXNzYWdlKCJDcmVhdGluZyBsb2NrZmlsZSIpOwpvcGVuIChMT0NLRklMRSwgIj4kbG9ja2Zp
bGUiKQogIG9yIHdhcm4gIkZhaWxlZCB0byBvcGVuOiAnJGxvY2tmaWxlJywgICQ/IjsKCnByaW50
IExPQ0tGSUxFICJQSUQgJCQsICAkZGF0ZSI7CgpjbG9zZSBMT0NLRklMRTsKCiZEZWJ1Z01zZygz
LCAiJGRhdGU6IHN0YXJ0aW5nICQwIik7CgppZiAoISAtZCAiJGxvZ2RpciIgKSAKICB7CiAgbWtk
aXIoJGxvZ2RpciwwNzc3KSB8fCBkaWUgKCJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeTogJGxvZ2Rp
cjogJD8iKTsKICBQcmludE1lc3NhZ2UoIkRpcmVjdG9yeSAkbG9nZGlyIGNyZWF0ZWQiKTsKICB9
CiZTZXRGb250Q29sb3IoImJsYWNrIik7CgppZiAoIC1kICIkdG1wZGlyIiApIAogIHsKICAmRGVi
dWdNc2coMywgIkNsZWFuaW5nIHRtcGRpciBkaXJlY3Rvcnk6ICR0bXBkaXIiKTsKICBzeXN0ZW0o
InJtIC1mICR0bXBkaXIvKi50bXAiKTsgICAKICB9CmVsc2UKICB7CiAgbWtkaXIoJHRtcGRpciww
Nzc3KSB8fCBkaWUgKCJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeTogJHRtcGRpcjogJD8iKTsKICBQ
cmludE1lc3NhZ2UoIkRpcmVjdG9yeSAkdG1wZGlyIGNyZWF0ZWQiKTsKICB9CgomY2F0Y2hfc2ln
bmFsczsgICMjIyBhbGxvdyBncmFjZWZ1bCBpbnRlcnJ1cHRzCgojIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBhZnRlciA1IGhvdXJzIHRoaXMg
cHJvY2VzcyB3aWxsCiMjIyBiZSBhdXRvbW90aWNhbGx5IGludGVycnVwdGVkCiMjIyB0aGlzIHdh
cyBuZWNlc3Nhcnkgc2luY2UgTERBUCBjcmFzaGVzIG1ha2UgCiMjIyB0aGlzIHByb2cgaGFuZy4K
CmFsYXJtICgkbWF4VGltZSk7IAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZ2V0
IHRoZSBjdXJyZW50IExEQVAgYWRtaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoo
JHJ0biwgJGN1ckxkYXBBZG1pbikgPSBnZXRBZG1pblRleHQoJGxkYXAsICdjbj1ncm91cCcsICRy
b2xlYmFzZWRuLCAnYWRtaW46Jyk7CgokY3VyTGRhcEFkbWluID1+IHMvXiAqY24gKj0gKi8vaTsK
JGN1ckxkYXBBZG1pbiA9fiBzLywuKiQvLzsKJkRlYnVnTXNnKDEsImN1ckxkYXBBZG1pbj0kY3Vy
TGRhcEFkbWluIik7CgppZiAoJHJ0biBuZSAiIikKICAgeyAmYWJvcnQoJ0VSUjogJyAuICRydG4p
OyB9CgojIG5vdyBnZXQgdGhlIG1haWwgYWRkcmVzcwokZmlsdGVyPSJjbj0kY3VyTGRhcEFkbWlu
IjsKJGF0dHI9Im1haWwiOwoKaWYgKCAkY3VyTGRhcEFkbWluID1+IC9cPG5vbmVcPi8gKQogIHsg
JGN1ckxkYXBBZG1pbiA9ICZkZWZMZGFwQWRtaW47IH0KCiZEZWJ1Z01zZygxLCAiR2V0dGluZyB0
aGUgJGF0dHIgZm9yICckZmlsdGVyJyAoZ3JvdXBfbGRhcF9hZG1pbikiKTsgCiRjdXJMZGFwQWRt
aW5NYWlsID0gIiI7CiRydG4gPScnOwooJHJ0biwgJGN1ckxkYXBBZG1pbk1haWwpID0gJmdldEF0
dHJPbmUoJGxkYXAsJHBlb3BsZWJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwppZiAoICRydG4gbmUg
IiIpIAogIHsgCiAgJndhcm4oJHJ0bik7IAogIH0KCiZEZWJ1Z01zZygxLCJjdXJMZGFwQWRtaW5N
YWlsPSRjdXJMZGFwQWRtaW5NYWlsIik7CgppZiAoJHJ0biBuZSAiIikKICAgeyAmYWJvcnQoJ0VS
UjogJyAuICRydG4pOyB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIyBnZXQgdGhlIGdyb3VwX2V4cGlyZSB2YWx1ZSBmcm9tIHRoZSByb2xlCiMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKKCRydG4sICRncm91cF9leHBp
cmUpID0gZ2V0QWRtaW5UZXh0KCRsZGFwLCAnY249Z3JvdXAnLCAkcm9sZWJhc2VkbiwgJ2V4cGly
ZTonKTsKaWYgKCRydG4gbmUgJycpCiAgeyAmYWJvcnQoJ0VSUjogJyAuICRydG4pOyB9CgojLS0t
LS0gY2FsY3VsYXRlIHRoZSB2YWx1ZSBmb3IgZXhwaXJhdGlvbiBkYXRlICh0b2RheSAtIGdyb3Vw
X2V4cGlyZSkKJGV4cGlyZV9kYXRlID0gJkRhdGVDYWxjKCJ0b2RheSIsICItIiAuICRncm91cF9l
eHBpcmUgLiAiIGRheXMiLCBcJGVycik7CiZEZWJ1Z01zZyg0LCAiZXhwaXJlX2RhdGU9JGV4cGly
ZV9kYXRlLCBlcnI9JGVyciIpOwokZXhwaXJlX2RhdGUyPSAmRGF0ZUNhbGMoInRvZGF5IiwgIis3
IGRheXMiLCBcJGVycik7CiZEZWJ1Z01zZyg0LCAiZXhwaXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIs
IGVycj0kZXJyIik7CiRleHBpcmVfZGF0ZTI9JlVuaXhEYXRlKCRleHBpcmVfZGF0ZTIsIiVkLSVi
Iik7CiZEZWJ1Z01zZyg0LCAiZXhwaXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIsIGVycj0kZXJyIik7
CgoKaWYgKCRlcnIgbmUgIiIpCiAgIHsgJmFib3J0KCIkcnRuIik7fSAgCgojIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIGlmIGEgZ3JvdXAgd2Fz
IHNlbmQgaW4gYXJndW1lbnQgdGhlbiB3ZSAKIyMjIHByb2Nlc3Mgb25seSB0aGlzIGdyb3VwCgpp
ZiAoJGdyb3VwX25hbWUgbmUgIiIpCiAgeyAmRXhwYW5kX09uZV9Hcm91cCgiY249JGdyb3VwX25h
bWUiKTsgfQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKIyMjIElmIHRoaXMgaXMgYW4gdXBkYXRlIG9ubHkgdGhlbiAKIyMjIHdlIHVwZGF0ZSBvbmx5
IHRoZSBncm91cHMgdy8gJ3RvIGJlIHByb2Nlc3NlZCcgc3RhdHVzCiMjIyBvciAndG8gYmUgcmVu
YW1lZConIHN0YXR1cwojIyMgbGlzdG9ubHkgYWxzbyBjaGVja2VkOiB3aWxsIG9ubHkgbGlzdCB0
aGUgZ3JvdXBzCgplbHNpZiAoJHVwZGF0ZW9ubHkpIAogIHsKICAmRGVidWdNc2coMywgIlVwZGF0
aW5nIG9ubHkgdGhlIGdyb3VwIHdpdGggc3RhdHVzPSciIC4KICAgICJUbyBiZSBwcm9jZXNzZWQn
IG9yICdCZWluZyBQcm9jZXNzZWQnIik7CiAgCiAgQGF0dHJzID0gCiAgICAoCiAgICAiY24iLAog
ICAgImFkbWludGV4dCIsCiAgICAicHJveHkiLAogICAgIm1hbmFnZXIiCiAgICApOwogIAogICRm
aWx0ZXI9Iih8KGFkbWludGV4dD1zdGF0dXM6IHRvIGJlIHByb2Nlc3NlZCkoYWRtaW50ZXh0PXN0
YXR1czogQmVpbmcgUHJvY2Vzc2VkKSkiOwogIAogICMgaGVyZSBpcyB3aGVyZSB3ZSBzaG91bGQg
cHV0IGluIHRoZSBjYWxsIHRvIGRvTERBUFNlYXJjaCgpCiAgIyBwYXNzIHRvIGl0ICRCQVNFRE4s
ICRmaWx0ZXIsIFxAYXR0cnMKICAjIGdldCBiYWNrICRydG4sICRuZW50cmllcywkcmVjb3Jke30t
Pnt9CiAgCiAgJkRlYnVnTXNnKDQsIlF1ZXJ5aW5nIGdyb3VwcyBmb3IgdXBkYXRlIG9ubHkiKTsK
ICBteSAoJHJ0biwgJG5lbnRyaWVzLCAkcmVjb3JkMSkgPSAKICAgICZkb0xEQVBTZWFyY2goJGxk
YXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycyk7CgogIGlmICgkcnRuIG5lICcnKQog
ICAgeyAmd2FybigkcnRuKTsgfQoKICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZG9uZSIpOwogICVy
ZWNvcmQgPSAlJHJlY29yZDE7CiAgQGdyb3VwTGlzdCA9IEBhZG1pbkxpc3QgPSAoKTsKICBpZiAo
JG5lbnRyaWVzID09IDApIAogICAgeyAKICAgICZSZW1vdmVMb2NrRmlsZTsKICAgIGxvZ01zZzIo
IklORjogRW5kaW5nOiBubyBncm91cHMgbmVlZCB1cGRhdGluZ1xuIik7CiAgICB9IAogIGVsc2UK
ICAgIHsKICAKICAgIGZvcmVhY2ggJGRuIChzb3J0IGtleXMgJXJlY29yZCkgewogICAgICBwdXNo
IEBncm91cExpc3QsICR7JHJlY29yZHskZG59eydjbid9fVswXTsKICAgICAgaWYgKCgkcmVjb3Jk
eyRkbn17J3Byb3h5J31bMF0gPX4gL14gKmNuICo9ICooLis/KSAqLCAqb3U9L2kpIHx8CgkgICgk
cmVjb3JkeyRkbn17J21hbmFnZXInfVswXSA9fiAvXiAqY24gKj0gKiguKz8pICosICpvdT0vaSkg
CgkgICkgewogICAgICAgIHB1c2ggQGFkbWluTGlzdCwgJDE7CiAgICAgIH0gZWxzZSB7CglwdXNo
IEBhZG1pbkxpc3QsICdObyBwcm94eSBvciBtYW5hZ2VyIGRlZmluZWQnOwogICAgICB9CiAgICB9
CiAgICAjIFByaW50IG91dCBsaXN0IG9mIGdyb3VwcyB0byBiZSBwcm9jZXNzZWQKICAgIGlmICgk
ZGVidWcgPj0gMCkgewogICAgICAgUHJpbnRNZXNzYWdlKHF7R3JvdXAgdG8gYmUgcHJvY2Vzc2Vk
OiB9LgoJCSAgICBqb2luKHFxe1xuR3JvdXAgdG8gYmUgcHJvY2Vzc2VkOiB9LEBncm91cExpc3Qp
CgkJICAgKTsKICAgICAgIHByaW50IHFxezwhLS0gR3JvdXAgdG8gYmUgcHJvY2Vzc2VkOiB9LAog
ICAgICAgICAgICAgam9pbihxcXstLT5cbjwhLS0gR3JvdXAgdG8gYmUgcHJvY2Vzc2VkOiB9LEBn
cm91cExpc3QpLAogICAgICAgICAgICAgcXF7LS0+XG59OwogICAgfQogICAgCiAgICBmb3IgKCRp
PTA7ICRpPD0gJCNncm91cExpc3Q7ICRpKyspCiAgICAgIHsKICAgICAgJG15bmFtZT0kZ3JvdXBM
aXN0WyRpXTsKICAgICAgJGN1ckFkbWluPSRhZG1pbkxpc3RbJGldOwogICAgICAmRGVidWdNc2co
NCwiZ3JvdXA6IGNuPSRteW5hbWUsYWRtaW49JGN1ckFkbWluIik7CiAgICAgIGlmICgkbGlzdG9u
bHkgPT0gMSkKICAgICAgICB7CiAgICAgICAgJGNuID0gJG15bmFtZTsKICAgICAgICAkY24gPX4g
cy9eICpjbiAqPSAqLy9pOwogICAgICAgICRjbiA9fiBzLywuKiQvLzsKICAgICAgICBwcmludCAi
JGNuXG4iOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsgJkV4cGFuZF9PbmVfR3JvdXAo
ImNuPSRteW5hbWUiKTsgfQogICAgICB9CiAgICB9CgogIGlmICgkZGVidWcgPj0gMCkgewogICAg
UHJpbnRNZXNzYWdlKHNjYWxhcihAZ3JvdXBMaXN0KS5xcXsgZ3JvdXBzIHVwZGF0ZWRcbn0pOwog
ICAgcHJpbnQgcXF7PCEtLSB9LHNjYWxhcihAZ3JvdXBMaXN0KSxxcXsgZ3JvdXBzIHVwZGF0ZWQt
LT5cbn07CiAgfQogICMjIyMjIG5vdyBkbyAndG8gYmUgcmVuYW1lZConCiAgJGZpbHRlcj0iKGFk
bWludGV4dD1zdGF0dXM6IHRvIGJlIHJlbmFtZWQqKSI7CiAgCiAgIyBoZXJlIGlzIHdoZXJlIHdl
IHNob3VsZCBwdXQgaW4gdGhlIGNhbGwgdG8gZG9MREFQU2VhcmNoKCkKICAjIHBhc3MgdG8gaXQg
JEJBU0VETiwgJGZpbHRlciwgXEBhdHRycwogICMgZ2V0IGJhY2sgJHJ0biwgJG5lbnRyaWVzLCRy
ZWNvcmR7fS0+e30KICAKICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZ3JvdXBzIGZvciB1cGRhdGUg
b25seSIpOwogICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmQxKSA9IAogICAgJmRvTERBUFNlYXJj
aCgkbGRhcCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzKTsKCiAgaWYgKCRydG4gbmUg
JycpCiAgICB7ICZ3YXJuKCRydG4pOyB9CgogICZEZWJ1Z01zZyg0LCJRdWVyeWluZyBkb25lIik7
CiAgJXJlY29yZCA9ICUkcmVjb3JkMTsKICBAZ3JvdXBMaXN0ID0gQGFkbWluTGlzdCA9ICgpOwog
IGlmICgkbmVudHJpZXMgPT0gMCkgCiAgICB7IAogICAgJlJlbW92ZUxvY2tGaWxlOwogICAgbG9n
TXNnMigiSU5GOiBFbmRpbmc6IG5vIGdyb3VwcyBuZWVkIHVwZGF0aW5nIGZvciByZW5hbWVcbiIp
OwogICAgaWYgKCRodG1sID09IDEpCiAgICAgIHsgcHJpbnQgIjwvQk9EWT48L0hUTUw+XG4iOyB9
CiAgICBleGl0KDApOyAKICAgIH0gCiAgCiAgZm9yZWFjaCAkZG4gKHNvcnQga2V5cyAlcmVjb3Jk
KSB7CiAgICBwdXNoIEBncm91cExpc3QsICR7JHJlY29yZHskZG59eydjbid9fVswXTsKICAgIGlm
ICgoJHJlY29yZHskZG59eydwcm94eSd9WzBdID1+IC9eICpjbiAqPSAqKC4rPykgKiwgKm91PS9p
KSB8fAoJKCRyZWNvcmR7JGRufXsnbWFuYWdlcid9WzBdID1+IC9eICpjbiAqPSAqKC4rPykgKiwg
Km91PS9pKSAKCSkgewogICAgICBwdXNoIEBhZG1pbkxpc3QsICQxOwogICAgfSBlbHNlIHsKICAg
ICAgcHVzaCBAYWRtaW5MaXN0LCAnTm8gcHJveHkgb3IgbWFuYWdlciBkZWZpbmVkJzsKICAgIH0K
ICB9CiAgZm9yICgkaT0wOyAkaTw9ICQjZ3JvdXBMaXN0OyAkaSsrKQogICAgewogICAgJG15bmFt
ZT0kZ3JvdXBMaXN0WyRpXTsKICAgICRjdXJBZG1pbj0kYWRtaW5MaXN0WyRpXTsKICAgICZEZWJ1
Z01zZyg0LCJncm91cDogY249JG15bmFtZSxhZG1pbj0kY3VyQWRtaW4iKTsKICAgIGlmICgkbGlz
dG9ubHkgPT0gMSkKICAgICAgewogICAgICAkY24gPSAkbXluYW1lOwogICAgICAkY24gPX4gcy9e
ICpjbiAqPSAqLy9pOwogICAgICAkY24gPX4gcy8sLiokLy87CiAgICAgIHByaW50ICIkY25cbiI7
CiAgICAgIH0KICAgIGVsc2UKICAgICAgeyAmRXhwYW5kX09uZV9Hcm91cCgiY249JG15bmFtZSIp
OyB9CiAgICB9CgogIH0KZWxzZQogIHsKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIyMgb3RoZXJ3aXNlIHdlIHNlYXJjaCBhbGwgZ3JvdXBz
CgogICZEZWJ1Z01zZygzLCAiU2VhcmNoaW5nIGFsbCBMREFQIGdyb3VwczogIik7CgogICRmaWVs
ZF90b19zZWFyY2g9ImNuIjsKICAkc2VhcmNoVmFsPSIkZmllbGRfdG9fc2VhcmNoPSoiOwogICgk
cnRuLCAkbnJlY29yZHMsICRyZWNvcmRYKSA9ICZRdWVyeTsgICNyZXN1bHQgb3V0cHV0IGluIHN1
YnIgUXVlcnkKICAKICBpZiAoICRydG4gbmUgIiIpIAogICAgeyAmd2FybigkcnRuKTsgfQogIGVs
c2lmICggJG5yZWNvcmRzID09IDApCiAgICB7IFByaW50TWVzc2FnZSgiTm8gcmVjb3JkcyBmb3Vu
ZCIpO30gCiAgZWxzZQogICAgewogICAgJXJlY29yZHM9JSRyZWNvcmRYOwogICAgQGdyb3VwTGlz
dD1AYWRtaW5MaXN0PSgpOwogICAgZm9yZWFjaCAkZG4gKHNvcnQga2V5cyAlcmVjb3Jkcykgewog
ICAgICBwdXNoIEBncm91cExpc3QsICRyZWNvcmRzeyRkbn17J2NuJ31bMF07IAogICAgICBpZiAo
KCRyZWNvcmRzeyRkbn17J3Byb3h5J31bMF0gPX4gL14gKmNuICo9ICooLis/KSAqLCAqb3U9L2kp
IHx8CgkgICgkcmVjb3Jkc3skZG59eydtYW5hZ2VyJ31bMF0gPX4gL14gKmNuICo9ICooLis/KSAq
LCAqb3U9L2kpIAogICAgICAgICApIHsKICAgICAgICBwdXNoIEBhZG1pbkxpc3QsICQxOwogICAg
ICB9IGVsc2UgewoJcHVzaCBAYWRtaW5MaXN0LCAnTm8gcHJveHkgb3IgbWFuYWdlciBkZWZpbmVk
JzsKICAgICAgfQogICAgfQoKICAgICMgUHJpbnQgb3V0IGxpc3Qgb2YgZ3JvdXBzIHRvIGJlIHBy
b2Nlc3NlZAogICAgaWYgKCRkZWJ1ZyA+PSAwKSB7CiAgICAgICBQcmludE1lc3NhZ2UocXtHcm91
cCB0byBiZSBwcm9jZXNzZWQ6IH0uCgkJICAgIGpvaW4ocXF7XG5Hcm91cCB0byBiZSBwcm9jZXNz
ZWQ6IH0sQGdyb3VwTGlzdCkKCQkgICApOwogICAgICAgcHJpbnQgcXF7PDEtLUdyb3VwIHRvIGJl
IHByb2Nlc3NlZDogfSwKICAgICAgICAgICAgIGpvaW4ocXF7LS0+XG48IS0tR3JvdXAgdG8gYmUg
cHJvY2Vzc2VkOiB9LEBncm91cExpc3QpLAogICAgICAgICAgICAgcXF7LS0+XG59OwogICAgfQoK
CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiAgICAjIyMgSWYgd2UgbGlzdCBvbmx5IHRoZSBncm91cHMgb24gdGhlbiB3ZSBkbyBpdAogICAg
IyMgYW5kIGV4aXQKICAgIAogICAgaWYgKCRsaXN0b25seSA9PSAxKQogICAgICB7CiAgICAgIHBy
aW50ICJMSVNUSU5HIE9GIEFMTCBHUk9VUFNcbiI7CiAgICAgIGZvciAoJGk9MDsgJGk8PSQjZ3Jv
dXBMaXN0OyAkaSsrKQogICAgICAgIHsgcHJpbnQgIiAgIiAuICRncm91cExpc3RbJGldIC4gIlxu
IiA7IH0KICAgICAgJlJlbW92ZUxvY2tGaWxlOwogICAgICBsb2dNc2cyKCJJTkY6IEVuZGluZyBh
ZnRlciBsaXN0b25seVxuIik7CiAgICAgIGlmICgkaHRtbCA9PSAxKQogICAgICAgIHsgcHJpbnQg
IjwvQk9EWT48L0hUTUw+XG4iOyB9CiAgICAgIGV4aXQgKDApOwogICAgICB9CiAgICBlbHNlCiAg
ICAgIHsKICAgICAgIyBvcGVuIHJlc3VsdCBmaWxlIGFuZCBwcm9jZXNzIGVhY2ggbGluZQogICAg
ICBmb3IgKCRpPTA7ICRpPD0kI2dyb3VwTGlzdDsgJGkrKykKICAgICAgICB7CgkkY3VyQWRtaW49
JGFkbWluTGlzdFskaV07CiAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwICRpOiAkZ3JvdXBMaXN0
WyRpXSwgYWRtaW49JGN1ckFkbWluIik7CiAgICAgICAgJkV4cGFuZF9PbmVfR3JvdXAoImNuPSRn
cm91cExpc3RbJGldIik7CiAgICAgICAgfQogICAgICB9CiAgICB9ICAjZW5kIGlmIGVsc2UKICAg
IGlmICgkZGVidWcgPj0gMCkgewogICAgICBQcmludE1lc3NhZ2Uoc2NhbGFyKEBncm91cExpc3Qp
LnFxeyBncm91cHMgdXBkYXRlZFxufSk7CiAgICAgIHByaW50IHFxezwhLS0gfSxzY2FsYXIoQGdy
b3VwTGlzdCkscXF7IGdyb3VwcyB1cGRhdGVkLS0+XG59OwogICAgfQogIAogIH0KJlJlbW92ZUxv
Y2tGaWxlOwokdGltZVN0YW1wPWdtdGltZSh0aW1lKTsKY2hvbXAgJHRpbWVTdGFtcDsKJHRpbWVT
dGFtcD1+cy8uKiAvLzsKJGRhdGU9c2xiVGltZTMoJHRpbWVTdGFtcCk7CmxvZ01zZzIoIklORjog
RW5kaW5nXG4iKTsKJkRlYnVnTXNnKDMsICIkZGF0ZTogRW5kIG9mIHByb2dyYW06ICQwIik7Cmlm
ICgkZGVidWcgPj0gMCkgewogIFByaW50TWVzc2FnZShxe0ZpbmlzaGVkIHByb2Nlc3NpbmcgYXQg
fS5zY2FsYXIoZ210aW1lKHRpbWUpKS5xcXtcbn0pOwogIHByaW50IHFxezwhLS0gRmluaXNoZWQg
cHJvY2Vzc2luZyBhdCB9LHNjYWxhcihnbXRpbWUodGltZSkpLHFxey0tPlxufTsKfQoKaWYgKCRo
dG1sID09IDEpCiAgeyBwcmludCAiPC9CT0RZPjwvSFRNTD5cbiI7IH0KCiM9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMK
IyBFTkQgT0YgTUFJTgojCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRXhwYW5kX09uZV9H
cm91cCAKICB7CiAgbXkgJHJlY29yZDsKICBteSAlcmVjb3JkMTsKCiAgbXkgJGdyb3VwX25hbWUg
PSAkX1swXTsgIAogICZEZWJ1Z01zZyg1LCAiIyMjIyMgRXhwYW5kX09uZV9Hcm91cDogJGdyb3Vw
X25hbWUiKTsgCiAgJGN1ckdyb3VwPSRncm91cF9uYW1lOwogICRjdXJHcm91cCA9fiBzLyAqY24g
Kj0gKi8vaTsKICAKICAjCiAgIyBpbml0aWFsaXplIHNvbWUgbG9jYWwgdmFyaWFibGUgKG5lZWQg
dG8gYmUgbG9jYWwgZm9yIHJlY3Vyc2l2aXR5KS4KICAjCiAgbXkgJHVwZGF0ZV90ZW1wZmlsZSAg
ID0gICIkdG1wZGlyL3VwZGF0ZS4kZ3JvdXBfbmFtZS4kJC50bXAiOyAKICBteSAkd2Fybl90ZW1w
ZmlsZSAgID0gICIkdG1wZGlyL3dhcm4uJGdyb3VwX25hbWUuJCQudG1wIjsgCiAgbXkgJG1lbWJl
cl90ZW1wZmlsZSAgID0gICIkdG1wZGlyL21lbWJlci4kZ3JvdXBfbmFtZS4kJC50bXAiOyAKICBt
eSAkc3Vic2NyaXB0aW9uc0RlbnlUb190ZW1wZmlsZSAgPSAgCiAgICAiJHRtcGRpci9zdWJzY3Jp
cHRpb25zRGVueVRvLiRncm91cF9uYW1lLiQkLnRtcCI7CiAgbXkgJHN1YnNjcmlwdGlvbnNHcmFu
dFRvX3RlbXBmaWxlID0gIAogICAgIiR0bXBkaXIvc3Vic2NyaXB0aW9uc0dyYW50VG8uJGdyb3Vw
X25hbWUuJCQudG1wIjsKICAKICBteSAkaTsKICBteSAkajsKICBteSAkazsKICBteSAkcDsKICBt
eSBAcDsKICBteSAkbGluZTsKICBteSAkcXVlcnlfc3RyOwogIG15ICRjbWQ7CiAgbXkgJHJlczsK
ICBteSAkbmJfd2FybjsKICBteSAkZmllbGRuYW1lOwogIG15ICRkZWx0YTsKICBteSAkY291bnQ7
CiAgbXkgJHF1ZXJ5X3N0cmluZzsKICBteSAkYXR0clg7CiAgbXkgJHNhdmVfbWVtYmVyczsKICBt
eSAkdGVtcDsKICBteSAkZXhwbm90aWZ5OwogIG15ICRncm91cF9hZG1pbjsKICBteSAkZ3JvdXBf
bWFpbDsKICBteSBAbmFtZTsKICBteSAkc3RhdHVzOwogIAogIG15IEBtZW1iZXJfbGlzdDsKICBt
eSBAc2F2ZV9tZW1iZXJzOwogIG15IEByZW1vdmVfbWVtYmVyczsKICBteSBAc3Vic2NyaXB0aW9u
c0dyYW50VG9fbGlzdDsKICBteSBAc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0OwogIG15IEB3YXJu
aW5nX2xpc3Q7CiAgbXkgJWNoZ2F0dHJzOwogIG15IEByZWZhdHRyczsKICBteSBAYXR0cnM7CiAg
bXkgJXNlZW5fbGlzdDsKICBteSBAYXR0cl9saXN0OwogIG15IEBncm91cF9saXN0OwogIG15ICRn
cm91cF9zdGF0dXM7CiAgCiAgJGVycmZsYWcgPSAwOyAjIG5vIGVycm9ycyB5ZXQKICAkZXJydGV4
dE1zZyA9ICIiOwogICRyZWN1cl9sZXZlbCsrOwogICZEZWJ1Z01zZygyLCAifCIpOwogICZEZWJ1
Z01zZygyLCAifCIpOwogICZEZWJ1Z01zZygyLCAiKy0tUHJvY2Vzc2luZyAkZ3JvdXBfbmFtZSIp
OwogIAogIGlmICgkZGVidWcgPj0gMCkgewogICAgUHJpbnRNZXNzYWdlKCJQcm9jZXNzaW5nICRn
cm91cF9uYW1lIik7IAogICAgcHJpbnQgIjwhLS0gUHJvY2Vzc2luZyAkZ3JvdXBfbmFtZSBhdCAi
LHNjYWxhcihnbXRpbWUodGltZSkpLCJHTVQgLS0+XG4iOwogIH0KICAkZXJydGV4dD0iR2V0dGlu
ZyBzdGF0dXMiOwogICgkcnRuLCAkc3RhdHVzKSA9IGdldEFkbWluVGV4dCgkbGRhcCwgJGdyb3Vw
X25hbWUsICRncm91cGJhc2VkbiwgJ3N0YXR1czonKTsKICBpZiAoICRydG4gbmUgIiIpIAogICAg
eyAmd2FybigkcnRuKTsgfQogICZEZWJ1Z01zZyg0LCJzdGF0dXM9ICRzdGF0dXMiKTsKCiAgaWYg
KGluZGV4KGxjKCRzdGF0dXMpLCBsYygnSW5hY3RpdmUnKSkgPj0gMCkKICAgIHsgJGdyb3VwX3N0
YXR1cyA9ICJJbmFjdGl2ZSI7IH0KICBlbHNlCiAgICB7ICRncm91cF9zdGF0dXMgPSAiQWN0aXZl
IjsgfQoKICAmRGVidWdNc2coNCwiZ3JvdXBzdGF0dXM9ICRncm91cF9zdGF0dXMiKTsKCiAgaWYg
KCRncm91cF9zdGF0dXMgZXEgJ0luYWN0aXZlJykKICAgIHsKICAgICZEZWJ1Z01zZyg0LCJTa2lw
cGluZyBpbmFjdGl2ZSBncm91cCIpOwogICAgcmV0dXJuOwogICAgfQoKICAoJHJ0biwgJHN0YXR1
cykgPSBnZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4sICdzdGF0
dXM6Jyk7CiAgaWYgKCAkcnRuIG5lICIiKSAKICAgIHsgJndhcm4oJHJ0bik7IH0KICAmRGVidWdN
c2coNCwic3RhdHVzPSAkc3RhdHVzIik7CgogIGlmICgkc3RhdHVzID1+IC90byBiZSByZW5hbWVk
LykKICAgIHsKICAgICRvbGROYW1lPSRzdGF0dXM7CiAgICAkb2xkTmFtZSA9fiBzL3RvIGJlIHJl
bmFtZWQ6IC8vOwogICAgJkRlYnVnTXNnKDQsIm9sZE5hbWU9ICRvbGROYW1lIik7CiAgICAkYXR0
cj0nc3Vic2NyaXB0aW9uc2dyYW50byc7CiAgICAmcmVuYW1lR3JvdXBSZWZzKCRsZGFwLCAkb2xk
TmFtZSwgJGN1ckdyb3VwLCAkYXR0cik7CiAgICAkYXR0cj0nc3Vic2NyaXB0aW9uc2Rlbnl0byc7
CiAgICAmcmVuYW1lR3JvdXBSZWZzKCRsZGFwLCAkb2xkTmFtZSwgJGN1ckdyb3VwLCAkYXR0cik7
CiAgICAmRGVidWdNc2coNCwiZ3JvdXA6IGNuPSRjdXJHcm91cCB3YXMgcmVuYW1lZCwgd2FzICRv
bGROYW1lIik7CiAgICB9CgogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKICAjIyMgSGVyZSBzdGFydCB0aGUgZ3JvdXAgcHJvY2Vzc2luZwogICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIHNl
dCBncm91cCBzdGF0dXMgc2luY2Ugd2UgYXJlIHdvcmtpbmcgb24gaXQuCiAgaWYgKCAkYW5hbHl6
ZSAhPSAxKQogICAgewogICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1l
LCAKICAgICAgJGdyb3VwYmFzZWRuLCAic3RhdHVzOiIsICJCZWluZyBQcm9jZXNzZWQiKTsKICAg
IH0KIAogIGlmICggJHJ0biBuZSAiIikgCiAgICB7ICZ3YXJuKCRydG4pOyB9CgogICMgZmlyc3Qg
Y2hlY2sgaWYgdGhlIGdyb3VwIG5lZWRzIGV4cGlyYXRpb24gZG9uZQogICRlcnJ0ZXh0PSJHZXR0
aW5nIGxhc3Rtb2RpZmllZG9uIjsKICAkYXR0cj0nbGFzdG1vZGlmaWVkb24nOwogICRmaWx0ZXI9
IiRncm91cF9uYW1lIjsKICAoJHJ0biwgJGxhc3Rtb2RpZmllZG9uKSA9ICZnZXRBdHRyT25lKCRs
ZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICBpZiAoICRydG4gbmUgIiIpIAog
ICAgeyAmd2FybigkcnRuKTsgfQogICZEZWJ1Z01zZyg0LCJsYXN0bW9kaWZpZWRvbj0gJGxhc3Rt
b2RpZmllZG9uIik7CgogICRlcnJ0ZXh0PSdHZXR0aW5nIGdyb3VwIHN0YXR1cyc7CgogICgkcnRu
LCAkc3RhdHVzKSA9IGdldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsICRncm91cGJhc2Vk
biwgJ3N0YXR1czonKTsKICBpZiAoICRydG4gbmUgIiIpIAogICAgeyAmd2FybigkcnRuKTsgfQog
ICZEZWJ1Z01zZyg0LCJzdGF0dXM9ICRzdGF0dXMiKTsKCiAgaWYgKGluZGV4KGxjKCRzdGF0dXMp
LCBsYygnSW5hY3RpdmUnKSkgPj0gMCkKICAgIHsgJGdyb3VwX3N0YXR1cyA9ICJJbmFjdGl2ZSI7
IH0KICBlbHNlCiAgICB7ICRncm91cF9zdGF0dXMgPSAiQWN0aXZlIjsgfQoKICAmRGVidWdNc2co
NCwiZ3JvdXBzdGF0dXM9ICRncm91cF9zdGF0dXMiKTsKCiAgJHRlbXAgPSAmRGF0ZV9DbXAoJGxh
c3Rtb2RpZmllZG9uLCAkZXhwaXJlX2RhdGUpOwogIGlmICgoJHRlbXAgPD0gMCkgYW5kIAogICAg
ICAoJGxhc3Rtb2RpZmllZG9uIG5lICcnKSBhbmQKICAgICAgKCRncm91cF9zdGF0dXMgbmUgJ0lu
YWN0aXZlJykgYW5kCiAgICAgICgkZ3JvdXBfZXhwaXJlICE9IDApKQogICAgewogICAgIyBncm91
cCBuZWVkcyB0byBiZSBleHBpcmVkCiAgICAjIGlmIGV4cG5vdGlmeSBub3Qgc2VudCwgc2VuZCBp
dAoKICAgICRlcnJ0ZXh0PSJHZXR0aW5nIGV4cG5vdGlmeSI7CiAgICAoJHJ0biwgJGV4cG5vdGlm
eSkgPSAKICAgICAgZ2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3VwYmFzZWRu
LCAnZXhwbm90aWZ5OicpOwogICAgJkRlYnVnTXNnKDQsImV4cG5vdGlmeT0gJGV4cG5vdGlmeSIp
OwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgZWxzZQog
ICAgICB7CiAgICAgIGlmICgkZXhwbm90aWZ5IGVxICcnKQogICAgICAgIHsKICAgICAgICBpZiAo
ICRhbmFseXplID09IDEpCiAgICAgICAgICB7IAogICAgICAgICAgcHJpbnQgIkdyb3VwICRncm91
cF9uYW1lIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBmb3IgZXhwaXJhdGlvbixcbiI7CiAgICAgICAg
ICBwcmludCAid2l0aCBtYWlsIHNlbnQgdG8gZ3JvdXAgYWRtaW5cbiI7CiAgICAgICAgICB9CiAg
ICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgIyBnZXQgZ3JvdXAgYWRtaW4KICAKICAg
ICAgICAgICRlcnJ0ZXh0PSJHZXR0aW5nIGFkbWluaXN0cmF0b3IiOwogICAgICAgICAgJGF0dHI9
J3Byb3h5JzsKICAgICAgICAgICRmaWx0ZXI9IiRncm91cF9uYW1lIjsKICAgICAgICAgICgkcnRu
LCAkZ3JvdXBfYWRtaW4pID0gJmdldEF0dHJPbmUoJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRl
ciwgJGF0dHIpOwogICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgeyAmd2Fy
bigkcnRuKTsgfQogICAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwX2FkbWluPSAkZ3JvdXBfYWRt
aW4iKTsKICAgICAgICAgIGlmICggJGdyb3VwX2FkbWluIGVxICcnKQogICAgICAgICAgICB7ICZ3
YXJuKCJubyBncm91cCBhZG1pbiBmb3IgJGdyb3VwX25hbWUiKTsgfQogICAgICAgICAgZWxzZQog
ICAgICAgICAgICB7IAogICAgICAgICAgICAjIGhhdmUgY24sIGZpbHRlciBpdCBhbmQgZ2V0IG1h
aWxhZGRyCiAgICAgICAgICAgICRncm91cF9hZG1pbiA9fiBzL14gKmNuICo9ICovL2k7CiAgICAg
ICAgICAgICRncm91cF9hZG1pbiA9fiBzLywuKiQvLzsKICAgICAgICAKICAgICAgICAgICAgJGVy
cnRleHQ9IkdldHRpbmcgbWFpbCI7CiAgICAgICAgICAgICRhdHRyPSdtYWlsJzsKICAgICAgICAg
ICAgJGZpbHRlcj0iY249JGdyb3VwX2FkbWluIjsKICAgICAgICAgICAgcHJpbnQgImZpbHRlcj0n
JGZpbHRlciciOwogICAgICAgICAgICAoJHJ0biwgJGdyb3VwX21haWwpID0gCiAgICAgICAgICAg
ICAgJmdldEF0dHJPbmUoJGxkYXAsICRwZW9wbGViYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAg
ICAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwX21haWw9ICRncm91cF9tYWlsIik7CiAgICAgICAg
ICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgeyAjaGF2ZSB1c2VyLCBzZW5kIHRoZSBtYWlsCiAg
ICAgICAgICAgICAgcHJpbnQgIlNlbmRpbmcgZXhwaXJlIHdhcm5pbmcgdG8gJGdyb3VwX21haWxc
biI7CiAgICAgICAgICAgICAgJkRlYnVnTXNnKDQsInNlbmRpbmcgbWFpbDoiIC4KICAgICAgICAg
ICAgICAgICJtYWlsIC1zIFwiR3JvdXAgJGdyb3VwX25hbWVcIiAkZ3JvdXBfbWFpbCA8IiAuIAog
ICAgICAgICAgICAgICAgIiAkc3JjZGlyL21haWwubXNnIik7CiAgICAgICAgICAgICAgb3BlbiAo
TUFJTE1TRywgIj4kdG1wZGlyLyQkLm1zZzIiKSBvcgogICAgICAgICAgICAgICAgZGllICJ1bmFi
bGUgdG8gb3BlbiBtYWlsIG1lc3NhZ2UgZmlsZSI7CiAgCiAgICAgICAgICAgICAgcHJpbnQgTUFJ
TE1TRyAiRGVhciBHcm91cCBBZG1pbmlzdHJhdG9yLFxuXG4iOwogICAgICAgICAgICAgIHByaW50
IE1BSUxNU0cgIllvdSBhcmUgdGhlIGFkbWluaXN0cmF0b3IgZm9yIHRoZSBncm91cFxuIjsKICAg
ICAgICAgICAgICBwcmludCBNQUlMTVNHICIgJGdyb3VwX25hbWVcbiI7CiAgICAgICAgICAgICAg
cHJpbnQgTUFJTE1TRyAiYW5kIGFzIGl0IGhhcyBub3QgYmVlbiB1cGRhdGVkIHJlY2VudGx5LCAi
IC4KICAgICAgICAgICAgICAgICJ0aGUgZ3JvdXAgd2lsbCBiZSBzZXQgdG9cbiI7CiAgICAgICAg
ICAgICAgcHJpbnQgTUFJTE1TRyAiaW5hY3RpdmUgb24gJGV4cGlyZV9kYXRlMi4gICIgLgogICAg
ICAgICAgICAgICAgIlRoaXMgd2lsbCBtZWFuIHRoYXQgdGhlIGdyb3VwIGhhcyBubyBtZW1iZXJz
LCBzb1xuIjsKICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICJpdCBjYW4gbm90IGxvbmdlciB0
byB1c2VkIHRvIGFjY2VzcyAiIC4KICAgICAgICAgICAgICAgICJjb250cm9scywgZXRjLlxuXG4i
OwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIllvdSBjYW4gdXBkYXRlIHRoZSBncm91cCB2
aWE6XG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIiAgaHR0cDovL2RlYnVzc3kuaG91
c3Rvbi5vbW5lcy5zbGIuY29tLyIgLgogICAgICAgICAgICAgICAgImxkYXAvbGRhcDMvZ3JwaW5k
ZXguY2dpXG5cbiI7CiAgICAgICAgICAgICAgcHJpbnQgTUFJTE1TRyAiWW91IHdpbGwgYmUgcmVt
aW5kZWQgYWJvdXQgdGhpcyBpZiB0aGUgZ3JvdXAgIiAuCiAgICAgICAgICAgICAgICAiaXMgc3Vz
cGVuZGVkLlxuXG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIlNpbmNlcmVseVxuIjsK
ICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICJMREFQIEFkbWluaXN0cmF0b3JcbiI7ICAgICAg
ICAKICAgICAgICAgICAgICBjbG9zZSBNQUlMTVNHOwogICAgICAgICAgICAgICNzeXN0ZW0oIm1h
aWwgLXMgXCJEaXJlY3RvcnkgR3JvdXAgJGdyb3VwX25hbWUgIiAuCiAgICAgICAgICAgICAgIyAg
IndpbGwgYmUgc3VzcGVuZGVkIG9uICRleHBpcmVfZGF0ZTJcIiAkZ3JvdXBfbWFpbCIgLgogICAg
ICAgICAgICAgICMgICIgPCAkdG1wZGlyLyQkLm1zZzIiKTsKICAgICAgICAgICAgICBzeXN0ZW0o
ImVjaG8gXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIC4KICAgICAgICAgICAgICAgICItLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIiA+PiRsb2dkaXIvbWFpbCIpOwogICAg
ICAgICAgICAgIHN5c3RlbSgiZWNobyBcIlN1YmplY3Q6IERpcmVjdG9yeSBncm91cCAkZ3JvdXBf
bmFtZSAiIC4KICAgICAgICAgICAgICAgICJ3aWxsIGJlIHN1c3BlbmRlZCBvbiAkZXhwaXJlX2Rh
dGUyXCIgPj4kbG9nZGlyL21haWwiKTsKICAgICAgICAgICAgICBzeXN0ZW0oImVjaG8gXCJUbzog
ICAgICAkZ3JvdXBfbWFpbFwiID4+JGxvZ2Rpci9tYWlsIik7CiAgICAgICAgICAgICAgc3lzdGVt
KCJlY2hvIFwiICAgICAgICAgICAgICAgICAgICBcIiA+PiRsb2dkaXIvbWFpbCIpOwogICAgICAg
ICAgICAgIHN5c3RlbSgiY2F0IDwgJHRtcGRpci8kJC5tc2cyID4+ICRsb2dkaXIvbWFpbCIpOwog
ICAgICAgICAgCiAgICAgICAgICAgICAgaWYgKCRrZWVwdGVtcCA9PSAwKQogICAgICAgICAgICAg
ICAgeyB1bmxpbmsgIiR0bXBkaXIvJCQubXNnMiI7fQogICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAKICAgICAgICAgICAg
ICAkZ3JvdXBiYXNlZG4sICJleHBub3RpZnk6IiwgIk1haWwgU2VudCAiIC4gJnNsYlRpbWUzKTsK
ICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgICB7
ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgICAgIGlmICggJGVycmZsYWcgPT0gMCkKICAgICAgICAg
ICAgICB7IAogICAgICAgICAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBf
bmFtZSwgJGdyb3VwYmFzZWRuLCAKICAgICAgICAgICAgICAgICJzdGF0dXM6IiwgIk9LIik7IAog
ICAgICAgICAgIAogICAgICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAg
ICB7ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgeyAKICAgICAgICAgICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdy
b3VwX25hbWUsICRncm91cGJhc2VkbiwgInN0YXR1czoiLCAKICAgICAgICAgICAgICAgICJFUlJP
UiAiIC4KICAgICAgICAgICAgICAgICRlcnJ0ZXh0TXNnKTsKICAgICAgICAgICAKICAgICAgICAg
ICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgICAgICAgeyAmd2FybigkcnRuKTsgfQog
ICAgICAgICAgCiAgICAgICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgICAg
IHsgJndhcm4oJHJ0bik7IH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAg
IH0KICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgIyBlbHNlIGNoZWNrIGlm
IG9uZSB3ZWVrIHBhc3QgbWFpbCBzZW50IAogICAgICAgICMgYW5kIHNldCBncm91cCB0byBpbmFj
dGl2ZSBpZiBzby4KICAgICAgICBpZiAobGVuZ3RoKCRleHBub3RpZnkpIDwgMTUpCiAgICAgICAg
ICB7ICZ3YXJuKCJCYWQgZXhwaXJhdGlvbiB0aW1lc3RhbXA6ICRleHBub3RpZnkiKTsgfQogICAg
ICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICRleHBpcmVfZGF0ZTI9c3Vic3RyKCRleHBu
b3RpZnksIDExKTsKICAgICAgICAgIGlmICgkZGVidWcgPiAwKQogICAgICAgICAgICB7IHByaW50
ICJleHBpcmVfZGF0ZTI9JGV4cGlyZV9kYXRlMiI7IH0KICAgICAgICAgIAogICAgICAgICAgJGV4
cGlyZV9kYXRlMiA9ICZEYXRlQ2FsYygidG9kYXkiLCAiLSIgLiAkZ3JvdXBfZXhwaXJlIC4gCiAg
ICAgICAgICAgICIgZGF5cyIsIFwkZXJyKTsKICAgICAgICAgICR0ZW1wID0gJkRhdGVfQ21wKCRs
YXN0bW9kaWZpZWRvbiwgJGV4cGlyZV9kYXRlMik7CiAgICAgICAgICBpZiAoJGRlYnVnID4gMCkK
ICAgICAgICAgICAgeyBwcmludCAiZXhwaXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIiOyB9CiAgICAg
ICAgICBpZiAoJHRlbXAgPD0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICBpZiAoJGFuYWx5
emUgPT0gMSkKICAgICAgICAgICAgICB7IHByaW50ICJHcm91cCAkZ3JvdXBfbmFtZSBuZWVkcyB0
byBiZSBleHBpcmVkXG4iOyB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAKICAgICAg
ICAgICAgICAgICRncm91cGJhc2VkbiwgInN0YXR1czoiLCAiSW5hY3RpdmUiKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgICB7ICZ3
YXJuKCRydG4pOyB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICZEZWJ1Z01zZyg0LCIqKioq
IGdyb3VwIGV4cGlyZWQgKioqIik7CiAgICAgICAgICAgICAgcHJpbnQgIkdyb3VwICRncm91cF9u
YW1lIGV4cGlyZWRcbiI7CgogICAgICAgICAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFw
LCRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4sIAogICAgICAgICAgICAgICAgImV4cGFuZGVkOiIs
ICRkYXRlKTsKICAgICAgICAKICAgICAgICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAg
ICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgICAgfQogICAgICAgIH0gIAogICAgICB9CiAgICB9CiAgZWxzZQogICAgeyAmRGVidWdN
c2coNCwgIioqKiogZ3JvdXAgbm90IGV4cGlyaW5nICoqKiIpOyAKICAgICMjIyMjIyMjIyMgcHJv
Y2VzcyBtZW1iZXJzIGhlcmUKICAgICMgbm93IHNhdmUgdGhlIHVuaXF1ZW1lbWJlciBsaXN0IGZv
ciBsYXRlcgogICAgJGVycnRleHQ9J0dldHRpbmcgTWVtYmVyIExpc3QnOwogICAgJGF0dHI9J3Vu
aXF1ZW1lbWJlcic7CiAgICAkZmlsdGVyPSIkZ3JvdXBfbmFtZSI7CiAgICAkc2F2ZV9tZW1iZXJz
PSgpOwogICAgKCRydG4sICRhdHRyWCkgPSAmZ2V0QXR0cigkbGRhcCwgJGdyb3VwYmFzZWRuLCAk
ZmlsdGVyLCAkYXR0cik7CiAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICB7ICZ3YXJuKCRydG4p
OyB9CiAgCiAgICBAc2F2ZV9tZW1iZXJzPUAkYXR0clg7CiAgICBAc2F2ZV9tZW1iZXJzPXNvcnQo
QHNhdmVfbWVtYmVycyk7CiAgCiAgICBpZiAoJHNob3cgPiAwKQogICAgICB7CiAgICAgIGRpc3BB
cnJheSgiT3JpZ2luYWwgbWVtYmVyIGxpc3QgZm9yIGdyb3VwICckZ3JvdXBfbmFtZSciLCBAc2F2
ZV9tZW1iZXJzKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgIFByaW50TWVzc2FnZSgg
IiAgIiAuIHNjYWxhcihAc2F2ZV9tZW1iZXJzKSAuICIgbWVtYmVycyIgLgogICAgICAgICIgZm9y
IE9yaWdpbmFsIExpc3QiKTsgCiAgICAgIH0KICAgIAogICAgIwogICAgIyBHZXQgdGhlIHF1ZXJ5
IHN0cmluZwogICAgIwogICAgCiAgICAmRGVidWdNc2cgKDMsICJHZXR0aW5nIHRoZSBxdWVyeSBz
dHJpbmcgZm9yICckZ3JvdXBfbmFtZSciKTsKICAgICRlcnJ0ZXh0PSJHZXR0aW5nIHF1ZXJ5IHN0
cmluZyI7CiAgICAkYXR0cj0nc3Vic2NyaXB0aW9ucyc7CiAgICAkZmlsdGVyPSIkZ3JvdXBfbmFt
ZSI7ICAjIGFscmVhZHkgaGFzIGNuPQogICAgJHF1ZXJ5X3N0cmluZyA9ICIiOwogICAgJHJ0biA9
ICcnOwogICAgKCRydG4sICRxdWVyeV9zdHJpbmcpID0gJmdldEF0dHJPbmUoJGxkYXAsICRncm91
cGJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAK
ICAgICAgJndhcm4oJHJ0bik7IAogICAgICB9CiAgICBAbWVtYmVyX2xpc3QgPSAoKTsKICAKICAg
IGlmICgkcXVlcnlfc3RyaW5nIG5lICIiKSAjdGhlcmUgaXMgYSBxdWVyeSBzdHJpbmcgdG8gcHJv
Y2VzcwogICAgICB7ICAgICAgICAgICAgICAgICAgICNzbyBnZXQgdGhlIG1lbWJlcnMgKGRucykK
ICAgICAgJkRlYnVnTXNnICgzLCAiUXVlcnkgc3RyaW5nIGlzOiA8JHF1ZXJ5X3N0cmluZz4iKTsK
ICAgIAogICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiAgICAgICMgI3F1ZXJ5X2xkYXAgd2l0aCB0aGUgcXVlcnkgc3RyaW5n
LCBwdXQgcmVzdWx0IGluIGFycmF5CiAgCiAgICAgIEBhdHRycyA9IAogICAgICAgICgKICAgICAg
ICAiY24iLAogICAgICAgICk7CiAgICAgIAogICAgICBpZiAoaW5kZXgoJHF1ZXJ5X3N0cmluZywg
IigiKSA8IDAgKQogICAgICAgIHsgJGZpbHRlcj0iKCRxdWVyeV9zdHJpbmcpIjsgfQogICAgICBl
bHNlCiAgICAgICAgeyAkZmlsdGVyPSIkcXVlcnlfc3RyaW5nIjsgfQogIAogICAgICAkZXJydGV4
dD0iUHJvY2Vzc2luZyBxdWVyeSBzdHJpbmcgJyRxdWVyeV9zdHJpbmcnIjsKICAgICAgJkRlYnVn
TXNnKDQsIlF1ZXJ5aW5nIHVzZXJzIHZpYSBxdWVyeSBzdHJpbmcgJyRxdWVyeV9zdHJpbmcnIik7
CiAgICAgIG15ICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmQxKSA9IAogICAgICAgICZkb0xEQVBT
ZWFyY2goJGxkYXAsICRwZW9wbGViYXNlZG4sICRmaWx0ZXIsIFxAYXR0cnMpOwogIAogICAgICBp
ZiAoJHJ0biBuZSAnJykKICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgCiAgICAgICZEZWJ1Z01z
Zyg0LCJRdWVyeWluZyBkb25lIik7CiAgICAgICVyZWNvcmQgPSAlJHJlY29yZDE7CiAgICAgIGlm
ICgkbmVudHJpZXMgPT0gMCkgCiAgICAgICAgeyAmRGVidWdNc2coMywgIk5vIG1lbWJlcnMgZm91
bmQiKTsgfQogIAogICAgICBmb3JlYWNoICRkbiAoc29ydCBrZXlzICVyZWNvcmQpIAogICAgICAg
IHsgCiAgICAgICAgY2hvbXAoJGRuKTsKICAgICAgICAkZG4gPX4gcy9eICpjbiAqPSAqLy9pOyAg
ICAjIHJlbW92ZSBjbj0gZnJvbSBkbiAodWlkIG9rIHRvbykgCiAgICAgICAgIyAkZG4gPX4gcy8s
LiokLy87ICAgICAgICAgICMgcmVtb3ZlIGFsbCBidXQgY24gZnJvbSBkbiAodWlkIG9rIHRvbykK
ICAgICAgICAkZG4gPX4gcy8sLltPb10qJC8vOwogICAgICAgICRkbiA9ICZDbGVhblN0cmluZygk
ZG4pOwogICAgICAgIHB1c2ggQG1lbWJlcl9saXN0LCAkZG47IAogICAgICAgIH0KICAKICAgICAg
JGNvdW50ID0gc2NhbGFyKEBtZW1iZXJfbGlzdCk7CiAgICAgICZEZWJ1Z01zZygzLCAiRm91bmQg
JGNvdW50IHJlY29yZChzKSB3aXRoIHRoZSBxdWVyeSBzdHJpbmciKTsKICAgIAogICAgICAjIyMj
IEdyb3VwIGhhcyBiZWVuIGV4cGFuZGVkIDFzdCBwaGFzZQogICAgICAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgIyBO
b3cgcXVlcnkgc2FtZSByZWNvcmQgYW5kIGdldCBsaXN0IG9mIGFsbG93ZWQgcGVvcGxlIG9yIGdy
b3VwCiAgICAgICMgZm9yIGVhY2ggb2JqZWN0OiBpZiBwZXJzb24gdGhlbiBhZGQgdG8gbWVtYmVy
bGlzdCwgCiAgICAgICMgaWYgaXQgaXMgYSBncm91cCBjYWxsIHJlY3Vyc2l2ZWx5IHRoaXMgcHJv
Y2VkdXJlLgogICAgCiAgICAgIH0gCiAgICBlbHNlIAogICAgICB7ICZEZWJ1Z01zZygzLCAiTm8g
cXVlcnkgc3RyaW5nIGZvdW5kIik7IH0KICAKICAgIGlmICgkZGVidWcgPiAwKQogICAgICB7ICZk
aXNwQXJyYXkoIk1lbWJlciBMaXN0IEFmdGVyIFF1ZXJ5IFN0cmluZyIsIEBtZW1iZXJfbGlzdCk7
IH0KICAgIGVsc2UKICAgICAgeyAKICAgICAgUHJpbnRNZXNzYWdlKCIgICIgLiBzY2FsYXIoQG1l
bWJlcl9saXN0KSAuICIgbWVtYmVycyAiIC4KICAgICAgICAiYWZ0ZXIgUXVlcnkgU3RyaW5nIHBy
b2Nlc3NlZCIpOwogICAgICB9CiAgCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogICAgIyBub3cgZ2V0IHRoZSBncmFudHRvIGxpc3QgYW5kIGFkZCBpdCBpbgog
ICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICZEZWJ1Z01z
ZygzLCAiUXVlcnlpbmcgTERBUCB0byBnZXQgdGhlIHN1YnNjcmlwdGlvbnNHcmFudFRvICIgLgog
ICAgICAicGFydCBmb3IgJyRncm91cF9uYW1lJyIpOwogICAgJGVycnRleHQ9IkdldHRpbmcgR3Jh
bnQgTGlzdCI7CiAgICAkZmlsdGVyPSIkZ3JvdXBfbmFtZSI7ICAjIGFscmVhZHkgaGFzIGNuPQog
ICAgJGF0dHI9InN1YnNjcmlwdGlvbnNncmFudHRvIjsKICAgICgkcnRuLCAkYXR0clgpID1nZXRB
dHRyKCRsZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAgIGlmICggJHJ0biBu
ZSAiIikgCiAgICAgIHsgCiAgICAgICZ3YXJuKCRydG4pOyAKICAgICAgfQogICAgQGF0dHJfbGlz
dD1AJGF0dHJYOwogICAgaWYgKCQjYXR0cl9saXN0ID49IDApICN0aGVyZSBpcyBhIGdyYW50IHRv
IHBhcnQgdG8gcHJvY2VzcwogICAgICB7CiAgICAgIEBzdWJzY3JpcHRpb25zR3JhbnRUb19saXN0
ID0gQGF0dHJfbGlzdDsKICAgICAgJkRlYnVnTXNnICg0LCAiJyRncm91cF9uYW1lJyBzdWJzY3Jp
cHRpb25zR3JhbnRUbyBsaXN0IGlzOiIpOwogICAgICBmb3IgKCRpPTA7ICRpPD0kI3N1YnNjcmlw
dGlvbnNHcmFudFRvX2xpc3Q7ICRpKyspCiAgICAgICAgeyAmRGVidWdNc2cgKDQsICIgICIgLiAk
c3Vic2NyaXB0aW9uc0dyYW50VG9fbGlzdFskaV0pOyB9CiAgICAgICRjb3VudCA9ICQjc3Vic2Ny
aXB0aW9uc0dyYW50VG9fbGlzdCsxOwogICAgICAmRGVidWdNc2cgKDMsICJGb3VuZCAkY291bnQg
cmVjb3JkcyB0byBncmFudCIgLgogICAgICAgICJQcm9jZXNzaW5nIHN1YnNjcmlwdGlvbnNHcmFu
dFRvIHBhcnQiKTsgCiAgICAgIGZvcmVhY2ggJHAgKEBzdWJzY3JpcHRpb25zR3JhbnRUb19saXN0
KQogICAgICAgIHsKICAgICAgICBpZiAoIChpbmRleCgkcCwgJ2NuPScpIDwgMCApIGFuZAogICAg
ICAgICAgICAgKGxjKCRwKSAhfiAnZ3JvdXAgJyApICkKICAgICAgICAgIHsKICAgICAgICAgICNu
ZWVkIHRvIGdldCBjbiBmcm9tIHVpZAogICAgICAgICAgY2hvbXAoJHApOwogICAgICAgICAgJHA9
JkNsZWFuU3RyaW5nKCRwKTsKICAgICAgICAgICgkcnRuLCRwLCRidWZmKT0mZ2V0Q25Gcm9tVWlk
KCRwKTsKICAgICAgICAgIGlmICgkcnRuIG5lICcnKQogICAgICAgICAgICB7ICZ3YXJuKCRydG4p
OyB9CiAgICAgICAgICBpZiAoJHAgZXEgJycpCiAgICAgICAgICAgIHsgJHAgPSAkYnVmZjsgfQog
ICAgICAgICAgfQogICAgICAgICRwID1+IHMvXiAqY24gKj0gKi8vaTsgICAgIyByZW1vdmUgY249
IGZyb20gZG4gKHVpZCBvayB0b28pIAogICAgICAgICMgJHAgPX4gcy8sLiokLy87ICAgICAgICAg
ICMgcmVtb3ZlIGFsbCBidXQgY24gZnJvbSBkbiAodWlkIG9rIHRvbykgCiAgICAgICAgJHAgPX4g
cy8sLltPb109KiQvLzsKICAgICAgICAkcCA9ICZDbGVhblN0cmluZyAoJHApOwogICAgICAgIGlm
IChsYygkcCkgPX4gLywgKm91PWdyb3VwICosLykKICAgICAgICAgIHsKICAgICAgICAgICZEZWJ1
Z01zZyg0LCAiIyMjIyBmb3VuZCBncm91cCAnJHAnICEhISEiKTsKCSAgaWYgKCIkY249JHAiICF+
IC8kZ3JvdXBfbmFtZS9pKSB7ICMgR3JvdXAgbm90IGN1cnJlbnQgR3JvdXAKCSAgICAkcnRuPSZn
ZXRHcm91cE1lbWJlcnMoImNuPSRwIiwgMCk7CgkgICAgaWYgKCRydG4gbmUgJycpIHsKCSAgICAg
ICZ3YXJuKCRydG4pOyAKCSAgICB9IGVsc2UgewoJICAgICAgcHVzaCBAbWVtYmVyX2xpc3QsIEBt
ZW1iZXJMaXN0OwoJICAgIH07CgkgIH0KICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAg
ICB7CiAgICAgICAgICAjIyMgd2UgYWRkIHRoZSBvYmplY3QgdG8gdGhlIG1lbWJlciBsaXN0CiAg
ICAgICAgICBwdXNoIEBtZW1iZXJfbGlzdCwgJHAKICAgICAgICAgIH0KICAgICAgICB9ICNlbmQg
Zm9yZWFjaAogICAgICB9IAogICAgZWxzZSAKICAgICAgeyAmRGVidWdNc2coMywgIk5vIEdyYW50
IHRvIGxpc3QgZm91bmQiKSA7IH0KICAgIAogICAgaWYgKCAkZGVidWcgPiAwKQogICAgICB7IGRp
c3BBcnJheSgiTWVtYmVyIExpc3QgYWZ0ZXIgR3JhbnQgdG8iLCBAbWVtYmVyX2xpc3QpOyB9CiAg
ICBlbHNlCiAgICAgIHsgCiAgICAgIFByaW50TWVzc2FnZSgiICAiIC4gc2NhbGFyKEBtZW1iZXJf
bGlzdCkgLiAiIG1lbWJlcnMgIiAuCiAgICAgICAgImFmdGVyIEdyYW50IFRvIHByb2Nlc3NlZCIp
OwogICAgICB9CiAgCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIERvIHRoZSBzYW1lIHdpdGggZGVueSBn
cm91cCAjIGFkZCBkZW5pZWQgbWVtYmVyIHRvIGEgc2VwYXJhdGUgZmlsZQogICAgIwogICAgJkRl
YnVnTXNnKDMsICJRdWVyeWluZyBMREFQIHRvIGdldCB0aGUgc3Vic2NyaXB0aW9uc0RlbnlUbyBw
YXJ0Iik7CiAgICAkZXJydGV4dD0iR2V0dGluZyBEZW55IExpc3QiOwogICAgJGZpbHRlcj0kZ3Jv
dXBfbmFtZTsKICAgICRhdHRyPSdzdWJzY3JpcHRpb25zZGVueXRvJzsKICAgIEBtZW1iZXJMaXN0
ID0gKCk7CiAgICAKICAgICgkcnRuLCAkYXR0clgpID0gZ2V0QXR0cigkbGRhcCwgJGdyb3VwYmFz
ZWRuLCAkZmlsdGVyLCAkYXR0cik7CiAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICB7IAogICAg
ICAmd2FybigkcnRuKTsgCiAgICAgIH0KICAgIEBhdHRyX2xpc3Q9QCRhdHRyWDsKICAKICAgIGlm
ICgkI2F0dHJfbGlzdCA+PSAwKSAjdGhlcmUgaXMgYSBzdWJzY3JpcHRpb25zRGVueVRvIHBhcnQg
dG8gcHJvY2VzcwogICAgICB7CiAgICAgIEBzdWJzY3JpcHRpb25zRGVueVRvX2xpc3QgPSBAYXR0
cl9saXN0OwogICAgICAkY291bnQgPSAkI3N1YnNjcmlwdGlvbnNEZW55VG9fbGlzdDsKICAgICAg
JkRlYnVnTXNnICg0LCAiJyRncm91cF9uYW1lJyBzdWJzY3JpcHRpb25zRGVueVRvIGxpc3QgaXM6
Iik7CiAgICAgIGZvciAoJGk9MDsgJGk8PSQjc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0OyAkaSsr
KQogICAgICAgIHsgJkRlYnVnTXNnICg0LCAiICAiIC4gJHN1YnNjcmlwdGlvbnNEZW55VG9fbGlz
dFskaV0pOyB9CiAgICAgICZEZWJ1Z01zZygzLCAiRm91bmQgJGNvdW50IHJlY29yZChzKSB0byBk
ZW55Iik7CiAgICAgICZEZWJ1Z01zZyAoMywgIlByb2Nlc3Npbmcgc3Vic2NyaXB0aW9uc0RlbnlU
byBhbmQgZXZlbnR1YWxseSAiIC4KICAgICAgICAiY2FsbCByZWN1cnNpdmVseSB0aGlzIGZ1bmN0
aW9uIik7CiAgICAgIGZvcmVhY2ggJHAgKEBzdWJzY3JpcHRpb25zRGVueVRvX2xpc3QpCiAgICAg
ICAgewogICAgICAgICZEZWJ1Z01zZyAoNCwgInN1YnNjcmlwdGlvbnNEZW55VG8gJGk6ICRwIik7
CiAgICAgICAgJHAgPSAmQ2xlYW5TdHJpbmcgKCRwKTsKICAgICAgICBpZiAobGMoJHApID1+IC8s
ICpvdT1ncm91cCAqLC8pCiAgICAgICAgICB7CiAgICAgICAgICAmRGVidWdNc2coNCwiIyMjIyBm
b3VuZCBncm91cCAnJHAnICEhISEiKTsKCSAgaWYgKCIkY249JHAiICF+IC8kZ3JvdXBfbmFtZS9p
KSB7ICMgR3JvdXAgbm90IGN1cnJlbnQgR3JvdXAKCSAgICAkcnRuPSZnZXRHcm91cE1lbWJlcnMo
ImNuPSRwIiwgMCk7CiAgICAgICAgICAgICRlcnJ0ZXh0PSJQcm9jZXNzaW5nIERlbnkgTGlzdCI7
CiAgICAgICAgICAgICRydG49JmdldEdyb3VwTWVtYmVycygkcCwgMCk7CiAgICAgICAgICAgIGlm
ICgkcnRuIG5lICcnKSB7CgkgICAgICAmd2FybigkcnRuKTsgCgkgICAgfSBlbHNlIHsKCSAgICAg
IHB1c2ggQHJlbW92ZV9saXN0LCBAbWVtYmVyTGlzdDsKCSAgICB9OwoJICB9CiAgICAgICAgICB9
CiAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgIyMjIHdlIGFkZCB0aGUgb2JqZWN0
IHRvIHRoZSByZW1vdmFsIGxpc3QKICAgICAgICAgIHB1c2ggQHJlbW92ZV9saXN0LCAkcDsKICAg
ICAgICAgIH0KICAgICAgICB9ICNlbmQgZm9yZWFjaAogICAgICBpZiAoJCNtZW1iZXJMaXN0ID49
MCkKICAgICAgICB7IHB1c2ggQHJlbW92ZV9saXN0LCBAbWVtYmVyTGlzdDsgfQogICAgICAjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICAgICAgIyMjIE5vdyB0aGF0IHdlIGhhdmUgdGhlIGZ1bGwgZGVueSB0byBsaXN0IHdlIHByb2Nl
c3MgaXQKICAgICAgIyMjIHdlIHN1YnRyYWN0IGZyb20gdGhlIG1lbWJlcmxpc3QKICAgICAgIyMj
IGFsc28gd2Ugc2NhbiB0aGUgbGlzdCB0aWxsIHRoZSBlbmQKICAgICAgIyMjIGluIGNhc2UgdGhl
cmUgYXJlIHNldmVyYWwgaW5zdGFuY2VzIG9mIHRoZSB1aWQgdG8gZGVueQogICAgICAjIyMKICAg
ICAgJkRlYnVnTXNnKDQsICItLUJlZm9yZSByZW1vdmFsIE1lbWJlcmxpc3QgaXM6XG5AbWVtYmVy
X2xpc3QiKSA7CiAgICAgICZEZWJ1Z01zZyg0LCAiLS1BbmQgUmVtb3ZhbCBsaXN0IGlzOlxuQHJl
bW92ZV9saXN0Iik7CiAgICAgICZEZWJ1Z01zZyg0LCAiU3Vic3RyYWN0aW5nIGRlbnkiKTsKICAg
ICAgbXkgKCR4ZG4sICR4bmIpOwogICAgICBmb3JlYWNoICRwIChAcmVtb3ZlX2xpc3QpCiAgICAg
ICAgewogICAgICAgIG15IEBuZXdfbWVtYmVyX2xpc3Q7CiAgICAgICAgJkRlYnVnTXNnKDUsICIt
LT5EZW55aW5nICRwIik7IAogICAgICAgICRrPTA7CiAgICAgICAgZm9yZWFjaCAkbGluZSAoQG1l
bWJlcl9saXN0KQogICAgICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDQsICJjaGVja2luZyAk
bGluZSIpOwogICAgICAgICAgJGsrKzsKICAgICAgICAgIGlmICgkbGluZSA9fiAkcCApICNpZiB0
aGUgZG4gY29udGFpbnMgdGhlIHVzZXIgdGhlbgogICAgICAgICAgICB7CiAgICAgICAgICAgICZE
ZWJ1Z01zZyg0LCAiJGs6IFdPTidUIHB1c2ggJGxpbmUgPSAkcCIpOwogICAgICAgICAgICAjRGVi
dWdNc2coNCwgIiRrOiBSZW1vdmluZyAkeGRuIHNpbmNlIGl0IGlzIGluICRsaW5lIik7CiAgICAg
ICAgICAgICNEZWJ1Z01zZyg1LCAiQmVmb3JlIHJlbW92YWwgTWVtYmVybGlzdCBpcyBcbjpAbWVt
YmVyX2xpc3QiKSA7CiAgICAgICAgICAgICNzcGxpY2UgKEBtZW1iZXJfbGlzdCwgJGstMSwgMSk7
CiAgICAgICAgICAgICNEZWJ1Z01zZyg1LCAiQWZ0ZXIgcmVtb3ZhbCBNZW1iZXJsaXN0IGlzIFxu
OkBtZW1iZXJfbGlzdCIpIDsKICAgICAgICAgICAgIyRrLS07CiAgICAgICAgICAgIH0KICAgICAg
ICAgIGVsc2UgCiAgICAgICAgICAgIHsKICAgICAgICAgICAgRGVidWdNc2coNCwgIiRrOiBwdXNo
aW5nIHRvIG1lbWJlciBsaXN0ICIgLgogICAgICAgICAgICAgICIkbGluZSBzaW5jZSBub3QgaW4g
JHAiKTsKICAgICAgICAgICAgcHVzaCAoQG5ld19tZW1iZXJfbGlzdCwgJGxpbmUpOwogICAgICAg
ICAgICB9CiAgICAgICAgICB9CiAgICAgICAgQG1lbWJlcl9saXN0ID0gQG5ld19tZW1iZXJfbGlz
dDsKICAgICAgICB9ICNlbmQgZm9yZWFjaAogICAgICAKICAgICAgI2VuZCBpZgogICAgICB9IAog
ICAgZWxzZSAKICAgICAgeyBEZWJ1Z01zZygzLCAiTm8gRGVueSB0byBsaXN0IGZvdW5kIikgOyB9
CiAgICAKICAgIEBtZW1iZXJfbGlzdCA9IHNvcnQoQG1lbWJlcl9saXN0KTsgICAgICAjc29ydCBh
cnJheSBhbHBoYSBvcmRlcgogICAgaWYgKCRkZWJ1ZyA+IDApCiAgICAgIHsgZGlzcEFycmF5KCJN
ZW1iZXIgTGlzdCBhZnRlciBEZW55IiwgQG1lbWJlcl9saXN0KTsgfQogICAgZWxzZQogICAgICB7
IAogICAgICBQcmludE1lc3NhZ2UoIiAgIiAuIHNjYWxhcihAbWVtYmVyX2xpc3QpIC4gIiBtZW1i
ZXJzICIgLgogICAgICAgICJhZnRlciBEZW55IFRvIHByb2Nlc3NlZCIpOyAKICAgICAgfQogICAg
ICAKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAgICAjIHZlcmlmeSB0aGF0IGVhY2ggbWVtYmVyIGlzIGluIGRhdGFiYXNlCiAgICAjIG9yIHB1
dCBpbiB3YXJuaW5nIGxpc3QKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgICBAYXR0cnMgPSAKICAgICAgKAogICAgICAiY24iLAogICAgICAp
OwogICAgCiAgICBmb3IgKCRqPTA7ICRqPD0kI21lbWJlcl9saXN0OyAkaisrKSB7CiAgICAgICNz
ZWFyY2ggZm9yIGNuIGluIHBlb3BsZQogICAgICAkdGhpc2NuICA9ICRtZW1iZXJfbGlzdFskal07
CiAgICAgICR0aGlzY24gID1+IHMvXiAqZG4gKj0gKjogKi8vOwogICAgICAkdGhpc2NuICA9fiBz
LywuKiQvLzsKICAgICAgJGVycnRleHQgPSAiUHJvY2Vzc2luZyBtZW1iZXIgbGlzdCI7CiAgICAg
ICRmaWx0ZXIgID0gIihjbj0kdGhpc2NuKSI7CiAgICAgIAogICAgICAmRGVidWdNc2coNCwiWyRq
Ol0gUXVlcnlpbmcgcGVvcGxlIGZvciBjbiAnJHRoaXNjbiciKTsKICAgICAgbXkgKCRydG4sICRu
ZW50cmllcywgJHJlY29yZDEpID0gCgkgICZkb0xEQVBTZWFyY2goJGxkYXAsICRwZW9wbGViYXNl
ZG4sICRmaWx0ZXIsIFxAYXR0cnMpOwogICAgICAKICAgICAgaWYgKCRydG4gbmUgJycpIHsKCSZ3
YXJuKCRydG4pOyAKICAgICAgfQogICAgICAKICAgICAgJkRlYnVnTXNnKDQsIlF1ZXJ5aW5nIGRv
bmUiKTsKICAgICAgaWYgKCRuZW50cmllcyA9PSAwKSB7IAogICAgICAgICZEZWJ1Z01zZyg1LCAi
JHRoaXNjbiBub3QgZm91bmQgaW4gcGVvcGxlIik7CiAgICAgICAgJHRoaXNjbiAuPSAiIG5vdCBm
b3VuZCI7CiAgICAgICAgcHVzaCBAd2FybmluZ19saXN0LCAkdGhpc2NuOwoJJG1lbWJlcl9saXN0
WyRqXT1xe307CiAgICAgIH0gZWxzZSB7IAoJJkRlYnVnTXNnKDUsICIkdGhpc2NuIGZvdW5kIGlu
IHBlb3BsZSIpOyAKICAgICAgfQogICAgfQogIAogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVz
IGFuZCBtYWtlIGZ1bGwgZG4gYWdhaW4KICAgICMgdW5sZXNzIGl0cyBhIGJhZCB1aWQhCiAgICAj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgJXNl
ZW5fbGlzdD0oKTsKICAgIEBtZW1iZXJfbGlzdD0gc29ydChncmVwIHshICRzZWVuX2xpc3R7JF99
KysgfSBAbWVtYmVyX2xpc3QpIDsKICAgICMgQG1lbWJlcl9saXN0IG1heSBoYXZlIGEgYmxhbmsg
ZW50cnksIGlmIGEgRE4gZG9lcyBub3QgZXhpc3QKICAgIHVubGVzcyAoJG1lbWJlcl9saXN0WzBd
KSB7CiAgICAgIHNoaWZ0IEBtZW1iZXJfbGlzdDsKICAgIH0KICAgIGZvcmVhY2ggKEBtZW1iZXJf
bGlzdCkgewogICAgICAkXyA9fiBzL14vY249L287ICMgUHJlZml4IGVhY2ggRE4gd2l0aCBjbj0g
YXMgcmVtb3ZlZCBlYXJsaWVyCiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgICMgIHVwZGF0ZSBMREFQIHdpdGggdGhlIG5ldyBtZW1iZXIgIGZp
bGUKICAKICAgIGlmICgkc2hvdyA+IDApCiAgICAgIHtkaXNwQXJyYXkoIk5ldyBtZW1iZXIgbGlz
dCBmb3IgZ3JvdXAgJyRncm91cF9uYW1lJyIsIEBtZW1iZXJfbGlzdCk7fQogICAgZWxzZQogICAg
ICB7CiAgICAgIFByaW50TWVzc2FnZSgiICAiIC4gc2NhbGFyKEBtZW1iZXJfbGlzdCkgLiAiIG1l
bWJlcnMgIiAuCiAgICAgICAgImZvciBuZXcgbWVtYmVyIGxpc3QiKTsgCiAgICAgIH0KICAgIFBy
aW50TWVzc2FnZSgiICBDb21wYXJpbmcgb2xkIGFuZCBuZXcgbWVtYmVyIGxpc3RzIik7CiAgCiAg
ICAkZGVsdGEgPSAwOwogICAgaWYgKCQjbWVtYmVyX2xpc3QgPCAwKSAKICAgICAgewogICAgICBp
ZiAoJCNzYXZlX21lbWJlcnMgPCAwKQogICAgICAgIHsgCiAgICAgICAgJGRlbHRhID0gMDsKICAg
ICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7IAogICAgICAgIFByaW50TWVzc2FnZSgiICBVcGRh
dGUgbmVlZGVkICgxKSIpOyAKICAgICAgICAkZGVsdGEgPSAxOwogICAgICAgIH0KICAgICAgfQog
ICAgZWxzaWYgKCQjbWVtYmVyX2xpc3QgPT0gJCNzYXZlX21lbWJlcnMpCiAgICAgIHsKICAgICAg
Zm9yICgkaT0wOyAkaTw9JCNtZW1iZXJfbGlzdDsgJGkrKykKICAgICAgICB7CiAgICAgICAgaWYg
KCRtZW1iZXJfbGlzdFskaV0gbmUgJHNhdmVfbWVtYmVyc1skaV0pCiAgICAgICAgICB7CiAgICAg
ICAgICBQcmludE1lc3NhZ2UoIiAgRGlmZmVyZW5jZSBmb3VuZCBhdCAkaToiKTsKICAgICAgICAg
IFByaW50TWVzc2FnZSgiICAgIE9sZD0kc2F2ZV9tZW1iZXJzWyRpXSIpOwogICAgICAgICAgUHJp
bnRNZXNzYWdlKCIgICAgTmV3PSRtZW1iZXJfbGlzdFskaV0iKTsKICAgICAgICAgICRkZWx0YT0x
OwogICAgICAgICAgUHJpbnRNZXNzYWdlKCIgIFVwZGF0ZSBuZWVkZWQgKDMpIik7CiAgICAgICAg
ICBsYXN0OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgZWxzZQogICAgICB7CiAg
ICAgIFByaW50TWVzc2FnZSgiICBVcGRhdGUgbmVlZGVkICgyKSIpOwogICAgICAkZGVsdGEgPSAx
OwogICAgICB9CiAgCiAgICBpZiAoJGRlbHRhID09IDApCiAgICAgIHsgUHJpbnRNZXNzYWdlKCIg
IE9sZCBhbmQgbmV3IGxpc3RzIGFyZSB0aGUgc2FtZSwgc2tpcHBpbmcgdXBkYXRlIik7IH0KICAg
IGVsc2UKICAgICAgewogICAgICBpZiAoICRhbmFseXplID09IDEpCiAgICAgICAgeyAKICAgICAg
ICBwcmludCAiICBMaXN0cyBkaWZmZXIgYnV0IHdpbGwgbm90IGJlIGNoYW5nZWQgc2luY2Ugd2Ug
YXJlICIgLgogICAgICAgICAgImluIGFuYWx5emUgbW9kZVxuIjsgCiAgICAgICAgfQogICAgICBl
bHNlCiAgICAgICAgewogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyAg
dXBkYXRlIExEQVAKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAKICAgICAg
ICBwdXNoIEByZWZhdHRycywgJ2NuJzsKICAgICAgICBwdXNoIEByZWZhdHRycywgJ3VuaXF1ZW1l
bWJlcic7CiAgICAgIAogICAgICAgICRmaWVsZG5hbWU9J3VuaXF1ZW1lbWJlcic7CiAgICAgICAg
cHVzaCBAeyRjaGdhdHRyc3skZmllbGRuYW1lfX0sQG1lbWJlcl9saXN0OwogICAgICAgIERlYnVn
TXNnKDMsICJncm91cD0kZ3JvdXBfbmFtZSwgYXR0cj0kZmllbGRuYW1lLCB2YWx1ZXM9IiAuIEBt
ZW1iZXJfbGlzdCk7CiAgICAgIAogICAgICAgIERlYnVnTXNnKDMsICJyZWZhdHRycz1AcmVmYXR0
cnMiKTsKICAgICAgICBmb3JlYWNoICRhdHRyIChrZXlzICVjaGdhdHRycykKICAgICAgICAgIHsg
RGVidWdNc2coMywgImNoZ2F0dHJzeyRhdHRyfT0kY2hnYXR0cnN7JGF0dHJ9Iik7IH0KICAgICAg
ICBEZWJ1Z01zZygzLCAiU2V0dGluZyBncm91cCAnJGdyb3VwX25hbWUnIHdpdGggYXR0cmlidXRl
ICIgLgogICAgICAgICAgIickZmllbGRuYW1lJyB0byB2YWx1ZXMiIC4gQG1lbWJlcl9saXN0KTsK
ICAgICAgCiAgICAgICAgJGZpbHRlcj0kZ3JvdXBfbmFtZTsKICAgICAgICBEZWJ1Z01zZyAoMywg
IlVwZGF0aW5nIExEQVAgZm9yIDwkZ3JvdXBfbmFtZT4iKTsKICAgICAgICAKICAgICAgICAkZXJy
dGV4dD0iVXBkYXRpbmcgTWVtYmVyIExpc3QiOwogICAgICAgIHByaW50ICJncm91cGJhc2Vkbj0k
Z3JvdXBiYXNlZG4sIGZpbHRlcj0kZmlsdGVyXG4iIGlmICgkc2hvdyA+MCk7CiAgICAgICAgJHJ0
bj0iIjsgCiAgICAgICAgJHJ0biA9ICZkb0xEQVBNb2RzKCRncm91cGJhc2VkbiwgJGZpbHRlciwg
XEByZWZhdHRycywgXCVjaGdhdHRycyk7CiAgICAgICAgCiAgICAgICAgaWYgKCAkcnRuIG5lICIi
KSAKICAgICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAgICAgICBlbHNlCiAgICAgICAgICB7IERl
YnVnTXNnKDEsICJHcm91cCAkZ3JvdXBfbmFtZSB1cGRhdGVkLiIpOyB9CiAgICAgIAogICAgICAg
IH0KICAgICAgfSAKICAgIGlmICggJGFuYWx5emUgIT0gMSkKICAgICAgewogICAgICAjYWx3YXlz
IHVwZGF0ZSB0aGUgYWRtaW50ZXh0IHZhbHVlcyAodW5sZXNzIGV4cGlyZWQpCiAgICAgICMKICAg
ICAgIyAgdXBkYXRlIExEQVAgd2l0aCB0aGUgbmV3IHdhcm5pbmcgbGlzdCAKICAgICAgIwogICAg
ICAkbmJfd2FybiA9ICQjd2FybmluZ19saXN0OwogICAgICAkbmJfd2FybisrOwogICAgICAkY291
bnQgPSAwOwogICAgICBpZiAoJHdhcm5pbmdfbGlzdFswXSBlcSAiIikgCiAgICAgICAgeyBwdXNo
IEB3YXJuaW5nX2xpc3QsICJObyBXYXJuaW5nIjsgfQogICAgICBlbHNlCiAgICAgICAgewogICAg
ICAgIEB3YXJuaW5nX2xpc3Q9IHNvcnQgQHdhcm5pbmdfbGlzdDsKICAgICAgICBmb3IgKCRpPTA7
ICRpPD0kI3dhcm5pbmdfbGlzdDsgJGkrKykKICAgICAgICAgIHsKICAgICAgICAgICZEZWJ1Z01z
ZygzLCAid2FybmluZzogIiAuICR3YXJuaW5nX2xpc3RbJGldKTsKICAgICAgICAgICRjb3VudCsr
OwogICAgICAgICAgfQogICAgICAgIHVuc2hpZnQgQHdhcm5pbmdfbGlzdCwgInRoZSBcIkdyYW50
IHRvXCIvXCJBREQgdWlkXCIgIiAuCiAgICAgICAgICAiZmllbGQgY29udGFpbnMgJG5iX3dhcm4g
dWlkKHMpIHdoaWNoIGRvKGVzKSd0IGV4aXN0IjsKICAgICAgICB9CiAgICAgICZEZWJ1Z01zZygz
LCAiICoqKiB3YXJuaW5nX2xpc3QgKCQjd2FybmluZ19saXN0KSAqKioiKTsKICAgICAgZm9yICgk
aT0wOyAkaTw9JCN3YXJuaW5nX2xpc3Q7ICRpKyspCiAgICAgICAgeyAmRGVidWdNc2coMywgIndh
cm5pbmdfbGlzdFskaV09JyR3YXJuaW5nX2xpc3RbJGldJyIpOyB9CiAgICAgICMKICAgICAgIyAg
dXBkYXRlIExEQVAKICAgICAgIyAgCiAgICAgIAogICAgICAkcnRuID0gJnNldEFkbWluVGV4dDIo
JGxkYXAsICRncm91cF9uYW1lLCAKICAgICAgICAkZ3JvdXBiYXNlZG4sICJ3YXJuaW5nOiIsIEB3
YXJuaW5nX2xpc3QpOwogICAgIAogICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgIHsgJndh
cm4oJHJ0bik7IH0KICAgICAgZWxzZSAKICAgICAgICB7IERlYnVnTXNnKDEsICJHcm91cCAkZ3Jv
dXBfbmFtZSB1cGRhdGVkLiIpOyB9CiAgICAgIAogICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMg
ZW5kCiAgICAgICAgCiAgICAgICRjb3VudCA9IHNjYWxhcihAbWVtYmVyX2xpc3QpOwogICAgICAk
cnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsIAogICAgICAgICRncm91cGJh
c2VkbiwgImluZm9ybWF0aW9uOiIsIAogICAgICAgICJUaGlzIGdyb3VwIGNvbnRhaW5zICRjb3Vu
dCBtZW1iZXIocykiKTsKICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICB7ICZ3YXJuKCRy
dG4pOyB9CiAgICAKICAgICAgJHRpbWVTdGFtcD1nbXRpbWUodGltZSk7CiAgICAgIGNob21wICR0
aW1lU3RhbXA7CiAgICAgICR0aW1lU3RhbXA9fnMvLiogLy87CiAgICAgICRkYXRlPXNsYlRpbWUz
KCR0aW1lU3RhbXApOwogICAgCiAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3Jv
dXBfbmFtZSwgJGdyb3VwYmFzZWRuLCAiZXhwYW5kZWQ6IiwgJGRhdGUpOwogICAgCiAgICAgIGlm
ICggJHJ0biBuZSAiIikgCiAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgCiAgICAgIGlmICgg
JGVycmZsYWcgPT0gMCkKICAgICAgICB7IAogICAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRs
ZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3VwYmFzZWRuLCAic3RhdHVzOiIsICJPSyIpOyAKICAgICAK
ICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAg
ICAgIH0KICAgICAgZWxzZQogICAgICAgIHsgCiAgICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQo
JGxkYXAsICRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4sICJzdGF0dXM6IiwgIkVSUk9SICIgLgog
ICAgICAgICAgJGVycnRleHRNc2cpOwogICAgIAogICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAg
ICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAKICAgICAgICBpZiAoICRydG4gbmUgIiIpIAog
ICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgICAgIH0KICAgICAgRGVidWdNc2cgKDMsICJM
REFQIHVwZGF0ZSBkb25lIik7CiAgICAgIGlmICgkZGVsdGEgPT0gMSkKICAgICAgICB7IERlYnVn
TXNnICgyLCIkZ3JvdXBfbmFtZSBoYXMgZmluYWxseSAkY291bnQgbWVtYmVycyBzYXZlZCBpbiBM
REFQIik7IH0KICAgICAgfQogICAgfQogICRyZWN1cl9sZXZlbC0tOwogIHJldHVybjsKICB9Cgoj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQojIGlzX2FfZ3JvdXAKIyAgIEFyZzogbmFtZSBvZiB0aGUgZ3JvdXAKIyAgIFJldHVy
bnM6IDEgaWYgYSBncm91cCwgMCBpZiBub3QKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgaXNfYV9ncm91cCgpCiAgeyAK
CiAgbXkoJG5hbWUpID0gQF87ICAKICBteSAkcmVzPSIiOwoKICBEZWJ1Z01zZyg1LCAnIyMjIyMg
aXNfYV9ncm91cCcpOyAKICBEZWJ1Z01zZyg0LCJpc19hX2dyb3VwIHRlc3Rpbmc6ICRuYW1lIik7
CiAgKCRydG4sICRyZXMpID0gJmdldEFkbWluVGV4dCgkbGRhcCwgImNuPSRuYW1lIiwgJGdyb3Vw
YmFzZWRuLCAiZGlydHk6Iik7CiAgaWYgKCAkcnRuIG5lICIiKSAKICAgIHsgCiAgICAmd2Fybigk
cnRuKTsgCiAgICB9CiAgaWYgKCRyZXMgZXEgIiIpCiAgICB7CiAgICBEZWJ1Z01zZyg0LCIkbmFt
ZSBpcyBhIG5vdCBncm91cCEhIik7CiAgICByZXR1cm4gMDsKICAgIH0gCiAgZWxzZSAKICAgIHsK
ICAgIERlYnVnTXNnKDQsIiRuYW1lIGlzIGEgZ3JvdXAgYW5kIHRoZSAnJGF0dHInIGlzICRyZXMh
ISIpOwogICAgcmV0dXJuIDE7CiAgICB9CiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQojCiMgU2V0RmllbGQoZ3JvdXBfdG9fdXBkYXRlIChjbiksIGZpZWxkbmFt
ZSwgIHZhbHVlKSkKIwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
c3ViIFNldEZpZWxkKCkKICB7CiAgbXkgKCRncm91cF9uYW1lLCAkZmllbGRuYW1lLCAkdmFsdWUp
ID0gQF87CiAgbXkgJGNtZDsKCiAgbXkgJHJ0bjsKCiAgRGVidWdNc2coNSwgJyMjIyMjIFNldEZp
ZWxkJyk7IAogIERlYnVnTXNnKDMsICJTZXR0aW5nIGdyb3VwICckZ3JvdXBfbmFtZScgd2l0aCBh
dHRyaWJ1dGUgIiAuCiAgICAiJyRmaWVsZG5hbWUnIHRvICckdmFsdWUnIik7CgogICRmaWx0ZXI9
JGdyb3VwX25hbWU7CiAgCiAgcHJpbnQgImdyb3VwYmFzZWRuPSRncm91cGJhc2VkbiwgZmlsdGVy
PSRmaWx0ZXJcbiIgaWYgKCRzaG93ID4wKTsKICAmcHV0QXR0ck9uZSgkZ3JvdXBiYXNlZG4sICRm
aWx0ZXIsICRmaWVsZG5hbWUsICR2YWx1ZSk7CiAgCiAgRGVidWdNc2coMSwgIkdyb3VwICRncm91
cF9uYW1lIHVwZGF0ZWQuIik7IAogIH0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiMgZ2V0X29wdGlvbgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQoKc3ViIGdldF9vcHRpb24gCiAgewogIG15ICRyZXN1bHQ7CiAgI3By
aW50ICJhcmcgY291bnQ9JCNBUkdWXG4iOwogICZ1c2FnZSgibWlzc2luZyBhcmd1bWVudCBmb3Ig
JF9bMF0iKSBpZiAoJCNBUkdWPT0tMSkgOwogICRyZXN1bHQgPSAkQVJHVlswXTsKICBzaGlmdCBA
QVJHVjsgICAKICByZXR1cm4gJHJlc3VsdDsKICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyB1c2FnZTogcHJpbnQgb3V0IHVzYWdlIGluc3RydWN0aW9u
cwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiB1c2Fn
ZSAKICB7CiAgbXkgJG1lc3MgPSBAXzsKCiAgcHJpbnQgImdycHRlcjogJG1lc3NcblxuIjsKCiAg
cHJpbnQgPDwiX0VPRl8iOwp1c2FnZTogIGdycHRlciBbLW9wdGlvbnMgLi4uXSAKCndoZXJlIG9w
dGlvbnMgaW5jbHVkZToKICAgIC1kZWJ1ZyAgICBkZWJ1Z2xldmVsICAgICAgMSB0byA1ICgxPXNt
YWxsIGFtb3VudCwgNT1vdSBsYSBsYSEgICAgICAgCiAgICAtd3d3ICAgICAgaHRtbCBvdXRwdXQg
ICAgIHNldCB0aGUgb3V0cG91dCB0ZXh0IGZvcm1hdCB0byBodG1sIGZvcm1hdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzICJcbiIgCiAgICAtZ3JvdXAgICAgZ3JvdXBf
bmFtZSAoY24pIGVudGVyIG9uZSBncm91cCBuYW1lIChjbiksIHByb2Nlc3MgYWxsIGdyb3VwcyBi
eSBkZWZhdWx0CiAgICAtbG9nICAgICAgICAgICAgICAgICAgICAgIE91dHB1dCBnb2VzIHRvIHRo
ZSBsb2cgZmlsZSAoZ29vZCBmb3IgY3JvbikgICAgICAgICAgICAgIAogICAgLWxpc3Rncm91cCAg
ICAgICAgICAgICAgICBsaXN0IGFsbCBncm91cHMgaW4gdGhlIGRpcmVjdG9yeS4KICAgIC1rZWVw
dGVtcCAgICAgICAgICAgICAgICAgZG8gbm90IGVyYXNlIHRlbXBvcmFyeSBmaWxlcwogICAgLXVw
ZGF0ZSAgICAgICAgICAgICAgICAgICBleHBhbmQgb25seSBncm91cHMgd2l0aCBzdGF0dXMgJ3Rv
IGJlIHByb2Nlc3NlZCcKICAgIC16ICAgICAgICAgICAgICAgICAgICAgICAgcnVuIGdycHRlci5w
bCBldmVuIGlmIHRoZSBsb2NrIGZpbGUgZXhpc3RzCgpBbGwgb3B0aW9ucyBjYW4gYmUgYWJicmV2
aWF0ZWQgdXAgdG8gb25lIGxldHRlci4KCkV4YW1wbGVzOgpVcGRhdGUgdGhlIGdyb3VwICdBdXN0
aW4gZW1wbG95ZWVzJyB3aXRoIHNtYWxsIGFtb3VudCBvZiBvdXRwdXQKLi9ncnB0ZXIucGwgLWdy
b3VwICdBdXN0aW4gZW1wbG95ZWVzJyAtZGVidWcgMgoKU2FtZSBidXQgd2l0aCBodG1sIG91dHB1
dCAKLi9ncnB0ZXIucGwgLWdyb3VwICdBdXN0aW4gZW1wbG95ZWVzJyAtZGVidWcgMyAtd3d3CgpE
byBhbGwgZ3JvdXBzIHdpdGggYSBsb3Qgb2Ygb3V0cHV0IGluZm9ybWF0aW9uCi4vZ3JvdXBlci5w
bCAtZGVidWcgNAoKCl9FT0ZfCgogICZSZW1vdmVMb2NrRmlsZTsKICBpZiAoJGh0bWwgPT0gMSkK
ICAgIHsgcHJpbnQgIjwvQk9EWT48L0hUTUw+XG4iOyB9CiAgZXhpdCA3OwogIH0KCiMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNldEZvbnRjb2xv
cgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1
YiBTZXRGb250Q29sb3IKICB7CiAgbXkgKCRjb2xvcikgPSBAXzsKICBpZiAgICAoJGNvbG9yIGVx
ICJyZWQiKQogICAgeyRmb250Y29sb3I9IiNGRDAyMDUiO30KICBlbHNpZiAoJGNvbG9yIGVxICJi
bHVlIikKICAgIHsgJGZvbnRjb2xvcj0iIzMzMzNGRiI7fQogIGVsc2lmICgkY29sb3IgZXEgImJs
YWNrIikKICAgIHskZm9udGNvbG9yPSIjMzMwMDMzIjt9OwogIH0KCiMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGNhdGNoX3NpZ25hbHM6CiMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIGNhdGNo
X3NpZ25hbHMgCiAgewogICRTSUd7J0lOVCd9ID0gJ1NJR05BTF9DTEVBTlVQJzsKICAkU0lHeydI
VVAnfSA9ICdTSUdOQUxfQ0xFQU5VUCc7CiAgJFNJR3snUVVJVCd9ID0gJ1NJR05BTF9DTEVBTlVQ
JzsKIyAgJFNJR3snUElQRSd9ID0gJ1NJR05BTF9DTEVBTlVQJzsKICAkU0lHeydBTFJNJ30gPSAn
U0lHTkFMX0NMRUFOVVAnOwogICRTSUd7J19fRElFX18nfSA9ICdTSUdOQUxfQ0xFQU5VUCc7ICAg
IyMjX19XQVJOX18gaXMgYWxzbyBhdmFpbGFibGUKICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBhYm9ydDogZGlzcGxheSBtZXNzYWdlIGFu
ZCBxdWl0CiMgQXJnczogIG1lc3NhZ2UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgYWJvcnQKICB7CiAgbXkgJG1zZz0kX1swXTsKCiAgcHJp
bnQgJG1zZyAuICJcbiI7CgogICZTSUdOQUxfQ0xFQU5VUDsKICB9CgojLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyB3YXJuOiBkaXNwbGF5IG1lc3Nh
Z2UgYnV0IGNvbnRpbnVlIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KCnN1YiB3YXJuCiAgewogIG15ICRtc2c9JF9bMF07CgogIHByaW50ICJXQVJO
SU5HOiAiIC4gJG1zZyAuICIgKCRlcnJ0ZXh0KVxuIjsKICAkZXJydGV4dE1zZyA9ICRlcnJ0ZXh0
OwogICZzZW5kRW1haWwoIEBfICk7CiAgJGVycmZsYWcgPSAxOwogIH0KCgwKIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBzZW5kRW1haWw6CiMgIGdp
dmVzIG1lc3NhZ2UgdG8gYW4gYWRtaW4KIyBhcmc6CiMgIG1lc3NhZ2UKIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIHNlbmRFbWFpbCB7CiAgbXkg
JHVzZXJOYW1lID0gIiI7CiAgbXkgJHVzZXJNYWlsID0gIiI7CiAgbXkgJGk7CiAgbXkgJHNjcmlw
dDsKCiAgbXkgJG1zZyA9IGpvaW4ocXF7ICBcbn0sQF8pOwoKICAkdGltZVN0YW1wPWdtdGltZSh0
aW1lKTsKICBjaG9tcCAkdGltZVN0YW1wOwogICR0aW1lU3RhbXA9fnMvLiogLy87CiAgJGRhdGU9
c2xiVGltZTMoJHRpbWVTdGFtcCk7CgogIGlmICgkX1swXSA9fiAvVW5hYmxlIHRvIGdldCBMREFQ
IENvbm5lY3Rpb258Q2FuJ3QgY29udGFjdCBMREFQIHNlcnZlci8pIHsKICAgIGxvZ01zZzIoIklO
RjogTm8gZW1haWwgc2VudCBhcyBMREFQIHNlcnZlciBjb25uZWN0aW9uIGZhaWxlZCIuJG1zZyk7
ICAKICB9IGVsc2UgewogICAgaWYgKCRjdXJBZG1pbiBuZSAiIikgewogICAgICAkdXNlck5hbWUg
PSAkY3VyQWRtaW47IAogICAgfSAgZWxzaWYgKCRjdXJMZGFwQWRtaW4gbmUgIiIpIHsKICAgICAg
JHVzZXJOYW1lID0gJGN1ckxkYXBBZG1pbk1haWw7IAogICAgfSBlbHNlIHsKICAgICAgJHVzZXJO
YW1lID0gJmRlZkxkYXBBZG1pbjsgCiAgICB9CgogICAgaWYgKCR1c2VyTmFtZSBuZSAmZGVmTGRh
cEFkbWluKSB7CiAgICAgICMgbm93IGdldCBtYWlsIGZvciB1c2VyTmFtZQogICAgICAkdXNlck1h
aWw9Z2V0TWFpbCgkdXNlck5hbWUpOwogICAgICBpZiAoJGRlYnVnID4gMCkgewoJcHJpbnQgImdl
dE1haWwoJyR1c2VyTmFtZScpIHJldHVybmVkICckdXNlck1haWwnXG4iOyAKICAgICAgfQogICAg
fSAgICAgIAoKICAgIGlmICgkdXNlck1haWwgZXEgJycpIHsKICAgICAgJHVzZXJNYWlsID0gJmRl
ZkxkYXBBZG1pbjsgCiAgICB9CiAgICAKICAgIGxvZ01zZzIoIklORjogU3RhcnRpbmcgdG8gbWFp
bCAkdXNlck1haWxcbiRtc2dcbiIpOwogICAgdW5sZXNzIChvcGVuKE1BSUwsICJ8IC91c3IvbGli
L3NlbmRtYWlsIC1vaSAtdCIpKSB7CiAgICAgIGRpZSBxcXsgIEZhaWxlZCB0byB0YWxrIHRvIHNl
bmRtYWlsIC0tICQhXG59OwogICAgfQogICAgCiAgICBwcmludCBNQUlMIDw8Ik1BSUwxIiwoJGN1
ckdyb3VwID8gPDwiTUFJTDIiIDogPDwiTUFJTDMiKTsKRnJvbTogIkRpcmVjdG9yeSBHcm91cCBD
b2RlIE1hbmFnZXIiIDxsZGFwLWFkbWluXEBzbGIuY29tPgpYLVRvOiAkdXNlck1haWwKVG86IGdy
YXlcQGNhbWJyaWRnZS5vaWxmaWVsZC5zbGIuY29tClN1YmplY3Q6IERlYnVzc3kgLS0gRGlyZWN0
b3J5IGdyb3VwIGV4cGFuc2lvbiBlcnJvcgoKTUFJTDEKVGhlIExEQVAgRGlyZWN0b3J5IGdyb3Vw
IG1hbmFnZW1lbnQgc3lzdGVtIGhhcyBmYWlsZWQgdG8gZXhwYW5kIHRoZSBsaXN0Cm9mIG1lbWJl
cnMgZm9yIHRoZSBncm91cDoKICRjdXJHcm91cAphbmQgeW91IGFyZSBiZWluZyBzZW50IHRoaXMg
bWVzc2FnZSBhcyB5b3UgYXJlCnRoZSBncm91cCBtYW5hZ2VyL3Nwb25zb3IvYWRtaW5pc3RyYXRv
cgoKVGhlIGVycm9yIGlzCiAgJG1zZwp3aGlsZQogICRlcnJ0ZXh0TXNnCgpZb3VyIGdyb3VwIG1l
bWJlcnMgd2lsbCBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQuCgpZb3Ugc2hvdWxkIGZpeCB0aGlzIGVy
cm9yIGJ5IHVwZGF0aW5nIHRoZSBncm91cCwKd2hpY2ggY2FuIGJlIGRvbmUgZnJvbSB0aGUgRGly
ZWN0b3J5IGdyb3VwIHBhZ2UgYXQKIGh0dHA6Ly9kaXJlY3Rvcnkuc2xiLmNvbS9hZG1pbi9ncm91
cHMvZ3JwaW5kZXguY2dpIAoKTUFJTDIKVGhlIGNyb24gc2NyaXB0CiAgJDAKaGFzIGZhaWxlZCB0
byBleHBhbmQgdGhlIGdyb3VwIG1lbWJlcnMgYXQKICAkZGF0ZQoKRGV0YWlscyBvZiB0aGUgZXJy
b3IgYXJlOgogICRtc2cKKHVzaW5nIExEQVAgU2VydmVyICRjb25uSG9zdDokY29ublBvcnQpCgpN
QUlMMwoKICAgIGNsb3NlIE1BSUw7CiAgICBsb2dNc2cyKCJJTkY6IENvbXBsZXRlZCBzZW5kaW5n
IG1haWwgdG8gJHVzZXJNYWlsXG4gICRtc2dcbiIpOyAgCiAgfQp9CgojLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTSUdOQUxfQ0xFQU5VUDoKIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgU0lH
TkFMX0NMRUFOVVAgCiAgewogCiAgIyMjIyBxdWl0IGdyYWNlZnVsbHkKICBteSAkZXJyTXNnOwog
IG15ICRpOwogIAogICRlcnJNc2c9IlVuZXhwZWN0ZWQgZXJyb3I6XG4iOwogIGlmICgkX1swXSBl
cSAnQUxSTScpIHsKICAgICRlcnJNc2cuPSIgRXhjZWVkZWQgbWF4aW11bSB0aW1lIGZvciB0aGUg
am9iICgkbWF4VGltZSBzZWNvbmRzKSI7CiAgfQogIAogIGZvcmVhY2ggJGkgKDAuLiQjXykgewog
ICAgJGVyck1zZy49IiBcJF9bJGldPSRfWyRpXVxuIjsKICB9CiAgJGVyck1zZy49ICIgXCQhPSQh
XG4gXCQ/PSQ/XG4iOwogICMgR2V0IGRldGFpbHMgb24gd2hlcmUgZXJyb3Igb2NjdXJyZWQKICBt
eSAkaW5kZW50OwogIENBTEw6CiAgZm9yZWFjaCAkaSAoMS4uNSkgewogICAgJGluZGVudD0nICd4
JGk7CiAgICBAXyA9IGNhbGxlciAkaTsKICAgIHVubGVzcyAoJF9bMF0pIHsKICAgICAgbGFzdCBD
QUxMOwogICAgfQogICAgJGVyck1zZy49IiR7aW5kZW50fXBhY2thZ2U6ICRfWzBdXG4ke2luZGVu
dH1maWxlbmFtZTogJF9bMV1cbiR7aW5kZW50fWxpbmU6ICRfWzJdXG4iOwogIH0KICBwcmludCAk
ZXJyTXNnOwogICRjdXJBZG1pbj0nJzsKICAkY3VyR3JvdXA9Jyc7CiAgc2VuZEVtYWlsKCRlcnJN
c2cpOwogIHN5c3RlbSgicm0gLWYgJHRtcGRpci8qLiQkLnRtcCIpOyAKICBpZiAoLWUgJGxvY2tm
aWxlKSAKICAgIHsKICAgIHVubGluayAiJGxvY2tmaWxlIjsgCiAgICBwcmludCAiR3JvdXB0ZXIg
d2FzIGludGVycnVwdGVkLCBsb2NrIGZpbGUgKCRsb2NrZmlsZSkgIHJlbW92ZWQhXG4iOwogICAg
fSAKICBlbHNlIAogICAgewogICAgcHJpbnQgIkdyb3VwdGVyIHdhcyBpbnRlcnJ1cHRlZCwgbm8g
bG9jayBmaWxlICgkbG9ja2ZpbGUpIiAuCiAgICAgICIgdG8gcmVtb3ZlIVxuIjsKICAgIH0KICBs
b2dNc2cyKCJJTkY6IEVuZGluZ1xuIik7CiAgaWYgKCRodG1sID09IDEpCiAgICB7IHByaW50ICI8
L0JPRFk+PC9IVE1MPlxuIjsgfQogIGV4aXQgMjsKICB9CgoMCiMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENsZWFu
U3RyaW5nOiByZW1vdmUgaGVhZGluZyBzcGFjZXMgYW5kIHRhYnMsIAojICAgICAgICAgICAgICBy
ZXBsYWNlIG11bHRpcGxlIHNwYWNlcyBhbmQgdGFicyBieSBvbmUgYmV0d2VlbiB3b3JkcyAKIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCgpzdWIgQ2xlYW5TdHJpbmcKICB7CiAgRGVidWdNc2coNSwgJyMjIyMjIENsZWFu
U3RyaW5nJyk7IAogIG15ICgkc3RyKSA9IEBfOwogICNwcmludCAiPGJyPiBjbGVhbmluZyBzdHI6
JyRzdHInPGJyPiI7CiAgJHN0ciA9fiBzL15ccysvLzsgICMgcmVtb3ZlIGxlYWRpbmcgd2hpdGUg
Y2hhcnMKICAjIyMjICRzdHIgPX4gcy9eWyBcdF0rLy87CiAgJHN0ciA9fiBzL1xzKyQvLzsgICMg
cmVtb3ZlIHRyYWlsaW5nIHdoaXRlIGNoYXJzCiAgJHN0ciA9fiBzL1sgXHRdKy8gL2dvOyAgICAj
IHJlcGxhY2UgbiB3aGl0ZSBjaGFycyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnkg
b25seSAxIGluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmluZwogICRzdHIgPX4gcy8gKFxkezZ9KS8g
ICQxLzsgIyAyIHNwYWNlcyBiZWZvcmUgSUQgaW4gRE4KICAjcHJpbnQgIiBjbGVhbmVkICBzdHI6
JyRzdHInPGJyPiI7CgogIHJldHVybiAkc3RyOwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFF1ZXJ5IFN1Yjogc2V0cyB1cCBMREFQIHF1ZXJ5CiMg
ICBSZXR1cm5zIHJ0biwgJG5lbnRyaWVzLCBcJXJlY29yZHMKIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBRdWVyeSAKICB7CgogIG15IEBhdHRyczsKICBt
eSAkZmlsdGVyOwogIG15ICVyZWNvcmRzOwogIG15ICVyZWNvcmRYOwogIG15ICRlbnRyeTsKICBt
eSAkaXRlbU5vOwogIG15ICRkbjsKICBteSAkaXRlbTsKICBteSAkYXR0cjsKICBteSAkU2NyaXB0
TmFtZTsKICBteSBAdmFsdWVzOwogIG15ICRpOwogIG15ICRuZW50cmllczsKICBteSAkcmVjb3Jk
WDsKICBAYXR0cnMgPSAKICAgICgKICAgICAiY24iLAogICAgICJwcm94eSIsCiAgICAgIm1hbmFn
ZXIiCiAgICApOwogIAogIERlYnVnTXNnKDUsICcjIyMjIyBRdWVyeScpOyAKICAkZmlsdGVyID0g
IiRmaWVsZF90b19zZWFyY2g9IjsKCiAgaWYgKCggJHNlYXJjaFZhbCBlcSAiIiApIHx8ICggJHNl
YXJjaFZhbCBlcSAnKicgKSkgCiAgICB7ICRmaWx0ZXIgLj0gIioiOyB9CiAgZWxzaWYgKCBpbmRl
eCgkc2VhcmNoVmFsLCc9JykgPj0gMCApCiAgICB7ICRmaWx0ZXIgPSAkc2VhcmNoVmFsIH0KICBl
bHNlCiAgICB7CiAgICBpZiAoIHN1YnN0cigkc2VhcmNoVmFsLDAsMSkgbmUgJyonICkKICAgICAg
eyAkZmlsdGVyIC49ICcqJzsgfQogICAgJGZpbHRlciAuPSAkc2VhcmNoVmFsOwoKICAgIGlmICgg
c3Vic3RyKCRzZWFyY2hWYWwsbGVuZ3RoKCRzZWFyY2hWYWwpLTEsMSkgbmUgJyonKSAKICAgICAg
eyAkZmlsdGVyIC49ICcqJzsgfSAKICAgIH0KCiAgIyBTZWFyY2ggdmlhIGNhbGwgdG8gZG9MREFQ
U2VhcmNoKCkKICAjIHBhc3MgdG8gaXQgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzCiAg
IyBnZXQgYmFjayAkbmVudHJpZXMsJHJlY29yZHt9LT57fQoKICAjcHJpbnQgImdyb3VwYmFzZWRu
PSRncm91cGJhc2VkbiwgZmlsdGVyPSRmaWx0ZXJcbiI7CiAgKCRydG4sICRuZW50cmllcywgJHJl
Y29yZFgpID0gCiAgICAmZG9MREFQU2VhcmNoKCRsZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIs
IFxAYXR0cnMpOwoKICBpZiAoICRydG4gbmUgIiIpIAogICAgeyByZXR1cm4gKCRydG4sICRuZW50
cmllcywgIiIgKTsgfQoKICAlcmVjb3Jkcz0gJSRyZWNvcmRYOwoKICBpZiAoJG5lbnRyaWVzID09
IDApIAogICAgeyByZXR1cm4gKCRydG4sICRuZW50cmllcywgIiIpOyB9IAoKICBteSAkY291bnQg
PSAxOwogIHJldHVybiAoJHJ0biwgJG5lbnRyaWVzLCBcJXJlY29yZHMpOwogIH0jIyMgZW5kIHN1
YiBRdWVyeQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiMgUHJpbnRNZXNzYWdlOgojICAgRGlzcGxheSBtZXNzYWdlIHRvIHNjcmVlbiBhbmQv
b3IgbG9nIGZpbGUKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCgpzdWIgUHJpbnRNZXNzYWdlIAogIHsKICBpZiAoJGxvZyA+IDAgKSAKICAgIHsg
CiAgICBpZiAoaW5kZXgoJF9bMF0sICJcbiIpIDwgMCkKICAgICAgeyBsb2dNc2cyKCJERUI6ICIg
LiAkX1swXSAuICJcbiIpOyB9CiAgICBlbHNlCiAgICAgIHsgbG9nTXNnMigiREVCOiAiIC4gJF9b
MF0pOyB9CiAgICB9CiAgaWYgKCAoJGxvZyAlIDIpICA9PSAwKQogICAgeyBwcmludCAkX1swXSAu
ICJcbiI7IH0KICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBS
ZW1vdmVMb2NrRmlsZToKIyAgRWxpbWluYXRlIHRoZSBsb2NrIGZpbGUKIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgUmVtb3ZlTG9ja0ZpbGUgCiAgewogIGlmICgt
ZSAkbG9ja2ZpbGUpIAogICAgeyB1bmxpbmsgIiRsb2NrZmlsZSI7IH0KICB9CiMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZGlzcEFycmF5OgojICBEaXNwbGF5IGFycmF5
IAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBkaXNwQXJyYXkKICB7
CiAgbXkgKCRhcnJOYW1lLCBAYXJyVmFscyk9IEBfOwoKICBteSAkYnVmZiA9ICIkYXJyTmFtZSAi
OwogIG15ICRjb3VudD0gJCNhcnJWYWxzICsgMTsKICBteSAkaTsKCiAgaWYgKCQjYXJyVmFscyA8
IDApCiAgICB7ICRidWZmIC49ICI6XG4iO30KICBlbHNlCiAgICB7ICRidWZmIC49ICJbIiAuICRj
b3VudCAuICIgbWVtYmVyc10gOlxuIjsgfQoKICBmb3IgKCRpPTA7ICRpPD0kI2FyclZhbHM7ICRp
KyspCiAgICB7ICRidWZmIC49ICIgICRpOiAiIC4gJGFyclZhbHNbJGldIC4gIlxuIjsgfQoKICBp
ZiAoJCNhcnJWYWxzIDwgMCkKICAgIHsgJGJ1ZmYgLj0gIiAgPG5vbmU+XG4iOyB9CgogIFByaW50
TWVzc2FnZSgkYnVmZik7CiAgfQoKDAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIyBnZXRHcm91cE1lbWJlcnM6CiMgICBnZXRzIG1lbWJlcnMgZm9y
IGdyb3VwIHNwZWNpZmllZAojIGFyZ3VtZW50OiAKIyAgICBncm91cCAoRE4gb2YgZ3JvdXAgdG8g
Z2V0IHVuaXF1ZW1lbWJlcnMgZnJvbSkKIyAgICBsZXZlbCAoc3RhcnRzIHdpdGggMCkKIwojICAg
ICBXZWQgMzAtT2N0LTIwMDI7IERvdWdsYXMgR3JheSBTdGVwaGVucwojICAgICAgZ3JvdXAgbGV2
ZWwgc2hvdWxkIG5ldmVyIGJlIG5vbiB6ZXJvLCBhcyB1bmlxdWVtZW1iZXIgbGlzdAojICAgICAg
c2hvdWxkIG5vdCBpbmNsdWRlIGdyb3VwIEROcwojCiMgcmV0dXJuczoKIyAgICBydG4KIyB1c2Vz
IGdsb2JhbCBAbWVtYmVyTGlzdCB0byBzdG9yZSBtZW1iZXJzCiMgd2hpY2ggaGF2ZSBvbmx5IGJh
c2UgcGFydCBvZiBjbiAocmVzdCBhZGRlZCBsYXRlcikKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIGdldEdyb3VwTWVtYmVycyAgewogIG15ICgk
Z3JvdXBfbmFtZSwgJGxldmVsKSA9IEBfOwogIG15ICRydG47CiAgbXkgQG1lbWJlcl9saXN0Owog
IG15IEBncm91cF9saXN0OwogIG15IEB0ZW1wX2xpc3Q7CiAgbXkgJGF0dHJYOwogIG15ICRpOwog
IG15ICRwOwoKICBpZiAoJGxldmVsID09IDApIHsKICAgIEBtZW1iZXJMaXN0ID0gKCk7IAogIH0g
ZWxzaWYgKCRsZXZlbCA+PSAxMCkgewogICAgcmV0dXJuICgiR3JvdXAgbmVzdGluZyBsZXZlbD0k
bGV2ZWwgZXhjZWVkcyBtYXhpbXVtIiwgQG1lbWJlckxpc3QpOyAKICB9CgogICRhdHRyPSd1bmlx
dWVtZW1iZXInOwogICgkcnRuLCAkYXR0clgpID0gZ2V0QXR0cigkbGRhcCwgJGdyb3VwX25hbWUs
J29iamVjdGNsYXNzPSonLCAkYXR0cik7CiAgaWYgKCRydG4gbmUgJycpIHsKICAgIHJldHVybiAk
cnRuOyAKICB9IGVsc2UgewogICAgQHRlbXBfbGlzdD1AJGF0dHJYOwogICAgZm9yICgkaT0wOyAk
aTw9JCN0ZW1wX2xpc3Q7ICRpKyspIHsKICAgICAgJHAgPSAkdGVtcF9saXN0WyRpXTsgCiAgICAg
ICRwID1+IHMvXmNuPS8vOwogICAgICAkcCA9ICZDbGVhblN0cmluZyAoJHApOwogICAgICBwdXNo
IEBtZW1iZXJMaXN0LCAkcDsgCiAgICB9CiAgICByZXR1cm4gJHJ0bjsKICB9Cn0KCgwKIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyByZW5hbWVH
cm91cFJlZnMKIwojIGFyZ3M6CiMgIGxkYXAsIG9sZE5hbWUsIG5ld05hbWUsIGF0dHIKIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIHJlbmFt
ZUdyb3VwUmVmcwogIHsKICBteSAoJGxkYXAsICRvbGROYW1lLCAkbmV3TmFtZSwgJGF0dHIpID0g
QF87CiAgbXkgJGF0dHJYOwogIG15ICRmaWx0ZXI7CiAgbXkgJGRuOwogIG15ICRuZW50cmllczsK
ICBteSBAYXR0cnMgPSAoJ2NuJywgJ3N1YnNjcmlwdGlvbnNncmFudG8nLCAnc3Vic2NpcHRpb25z
ZGVueXRvJyk7CiAgbXkgJHJlY29yZFg7CiAgbXkgJXJlY29yZHM7CiAgbXkgQHZhbHVlczsKICBt
eSBAZ3JvdXBMaXN0OwogIG15IEBhZG1pbkxpc3Q7CiAgbXkgJGk7CiAgbXkgJGtleTsKICBteSAl
Y2hnYXR0cnM7CiAgbXkgJHJ0bjsKICAjbXkgJG5lbnRyaWVzOwoKICAjIG5lZWQgdG8gY2hlY2sg
c3Vic2NyaXB0aW9uc2Rlbnl0bywgc3Vic2NyaXB0aW9uc2dyYW50dG8gZmllbGRzCiAgIyBmb3Ig
YWxsIGdyb3VwcyBhbmQgZml4IGlmIGZvdW5kCiAgJGZpbHRlcj0iJGF0dHI9Z3JvdXAgJG9sZE5h
bWUiOwogIERlYnVnTXNnKDQsIlJlbmFtZTogc2VhcmNoOiBiYXNlPSRncm91cGJhc2VkbiwgZmls
dGVyPSRmaWx0ZXIsICIgLgogICAgImF0dHJzPUBhdHRycyIpOwogICgkcnRuLCAkbmVudHJpZXMs
ICRyZWNvcmRYKSA9IAogICAgICZkb0xEQVBTZWFyY2goJGxkYXAsICRncm91cGJhc2VkbiwgJGZp
bHRlciwgXEBhdHRycyk7CgogIGlmICggJHJ0biBuZSAiIikKICAgIHsgJndhcm4oJHJ0bik7IH0K
ICBEZWJ1Z01zZyg0LCAibmVudHJpZXM9JG5lbnRyaWVzIik7CiAgJXJlY29yZHM9JSRyZWNvcmRY
OwoKICBAZ3JvdXBMaXN0ID0gKCk7CiAgRGVidWdNc2coNCwgIlNlYXJjaGluZyBmb3IgJ2dyb3Vw
ICRvbGROYW1lJyIpOwogIGZvcmVhY2ggJGRuIChrZXlzICVyZWNvcmRzKQogICAgeyAKICAgICRk
biA9fiBzLywuKi8vOyAgICNrZWVwIG9ubHkgY24KICAgIERlYnVnTXNnKDQsICJTZWFyY2hpbmcg
JGRuIGZvciAkYXR0ciIpOwogICAgcHVzaCBAZ3JvdXBMaXN0LCAkZG47CiAgICB9CiAKICBmb3Jl
YWNoICRkbiAoQGdyb3VwTGlzdCkKICAgIHsgCiAgICAoJHJ0biwgJGF0dHJYKSA9ICZnZXRBdHRy
KCRsZGFwLCAkZ3JvdXBiYXNlZG4sICRkbiwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICcnKQog
ICAgICB7IAogICAgICAmd2FybigkcnRuKTsKICAgICAgcmV0dXJuOwogICAgICB9CiAgICBAdmFs
dWVzPUAkYXR0clg7CiAgICBEZWJ1Z01zZyg0LCAiJGRuIHNlYXJjaCBmb3IgJGF0dHIgcmV0dXJu
ZWQgJCN2YWx1ZXMgaXRlbXMiKTsKICAgIGZvciAoJGk9MDsgJGk8PSAkI3ZhbHVlczsgJGkrKykK
ICAgICAgewogICAgICBpZiAoJHZhbHVlc1skaV0gPX4gJ2dyb3VwICcgLiAkb2xkTmFtZSkKICAg
ICAgICB7IAogICAgICAgICR2YWx1ZXNbJGldID0gJ2dyb3VwICcgLiAkZ3JvdXBfbmFtZTsgCiAg
ICAgICAgJkRlYnVnTXNnKDQsICJmb3VuZCBvbmUgdG8gY2hhbmdlIik7CiAgICAgICAgaWYgKCAk
YW5hbHl6ZSA9PSAxKSAKICAgICAgICAgIHsgcHJpbnQgIk5lZWQgdG8gY2hhbmdlICdncm91cCAi
IC4gJGdyb3VwX25hbWUgLiAiJyBpbiAkZG5cbiI7IH0KICAgICAgICB9CiAgICAgIH0KICAgIGlm
ICggJGFuYWx5emUgIT0gMSkKICAgICAgewogICAgICAkY2hnYXR0cnN7JGF0dHJ9PVxAdmFsdWVz
OwogICAgICBEZWJ1Z01zZyg0LCAidXBkYXRpbmcgJGF0dHIgaW4gJGRuIik7CiAgICAgICRydG49
ICZkb0xEQVBNb2RzKCRncm91cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycywgXCVjaGdhdHRycyk7
CiAgICAgIGlmICggJHJ0biBuZSAiIikKICAgICAgICB7CiAgICAgICAgJndhcm4oJHJ0bik7CiAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsgRGVidWdNc2coNCwg
Ikdyb3VwICRkbiB1cGRhdGVkIik7IH0KICAgICAgfQogICAgfQogIH0KIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRGVidWdNc2cKIyAg
IEFyZ3M6CiMgICAgIExldmVsOiAgMSB0byA1CiMgICAgIG1zZzogICAgbXNnIHRvIHByaW50IHRv
IHN0b3V0CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0Kc3ViIERlYnVnTXNnKCkKICB7CiAgCiAgbXkoJGxldmVsLCAkbXNnKSA9IEBfOwog
IG15ICRpOwogIG15ICRpbmRlbnQgPSAiIjsKICBteSAkY2xvc2luZ19pbmRlbnQgPSAiIjsKICBt
eSAkaGVhZCA9ICIiOwoKCiAgaWYgKCRzaG93ID09IDApCiAgICB7IHJldHVybjsgfQogIAogICRt
c2cgLj0gJGluZGVudDsKICBmb3IgKCRpPTA7ICRpIDwgJHJlY3VyX2xldmVsOyAkaSsrKQogICAg
ewogICAgaWYgKCRodG1sID09IDEpCiAgICAgIHsKICAgICAgIyRpbmRlbnQgLj0gIiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7IAogICAgICAkaW5kZW50
IC49IiAgICAgICAgIjsKICAgICAgJGNsb3NpbmdfaW5kZW50IC49ICIiOwogICAgICB9CiAgICBl
bHNlCiAgICAgIHsKICAgICAgIyRpbmRlbnQgLj0gIiAgICAiOwogICAgICB9CiAgICB9CgogIGlm
ICgkaHRtbCA9PSAxKQogICAgewogICAgJGhlYWQ9Ijxmb250IGNvbG9yPVwiJGZvbnRjb2xvclwi
PiI7CiAgICAkZW9sID0gIjwvZm9udD5cbiI7CiAgICB9IAogIGVsc2UgCiAgICB7CiAgICAkaGVh
ZCA9ICIiOwogICAgJGVvbCA9ICJcbiI7CiAgICB9CgogICRtc2cgPSAiJGhlYWQkaW5kZW50JG1z
ZyRjbG9zaW5nX2luZGVudCRlb2wiOwoKICBTV0lUQ0g6IAogICAgewogICAgaWYgKCRsZXZlbD09
MSkgCiAgICAgIHsgIAogICAgICBpZiAoJHNob3c+PTEpIAogICAgICAgeyBQcmludE1lc3NhZ2Uo
JG1zZyk7fSAKICAgICAgbGFzdCBTV0lUQ0g7IAogICAgICB9CiAgICBpZiAoJGxldmVsPT0yKSAK
ICAgICAgeyAgCiAgICAgIGlmICgkc2hvdz49MikgCiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1z
Zyk7fSAKICAgICAgbGFzdCBTV0lUQ0g7IAogICAgICB9CiAgICBpZiAoJGxldmVsPT0zKSAKICAg
ICAgeyAgCiAgICAgIGlmICgkc2hvdz49MykgCiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7
fSAKICAgICAgbGFzdCBTV0lUQ0g7IAogICAgICB9CiAgICBpZiAoJGxldmVsPT00KSAKICAgICAg
eyAgCiAgICAgIGlmICgkc2hvdz49NCkgCiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAK
ICAgICAgbGFzdCBTV0lUQ0g7IH0KICAgIGlmICgkbGV2ZWw9PTUpIAogICAgICB7ICAKICAgICAg
aWYgKCRzaG93Pj01KSAKICAgICAgICB7IFByaW50TWVzc2FnZSgkbXNnKTt9IAogICAgICBsYXN0
IFNXSVRDSDsgCiAgICAgIH0KICAgIAogICAgUHJpbnRNZXNzYWdlKCRtc2cpOyAKICAgIGxhc3Qg
U1dJVENIOwogICAgfQogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiMgZ2V0TWFpbDoKIyAgIGdldCB1c2VyIG1haWwgYWRkcmVzcyBm
b3IgdXNlcm5hbWUgCiMgYXJnczoKIyAgIHVzZXJOYW1lCiMgcmV0dXJuczoKIyAgIHVzZXJNYWls
CiMgbm90ZToKIyAgIGVycm9ycyBkaXNwbGF5ZWQgb25seQojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBnZXRNYWlsCiAgewogIG15ICR1
c2VyTmFtZT0kX1swXTsKICBteSAkdXNlck1haWw7CiAgbXkgJGZpbHRlcjsKICBteSAkYXR0cjsK
ICBteSAkcnRuOwogIGlmICgkdXNlck5hbWUgbmUgJycpCiAgICB7CiAgICAkZmlsdGVyPSJjbj0k
dXNlck5hbWUiOwogICAgJGF0dHI9Im1haWwiOwogICAgCiAgICBpZiAoJGRlYnVnID4gMCkKICAg
ICAgeyBwcmludCAiPCEtLUdldHRpbmcgdGhlICRhdHRyIGZvciAnJGZpbHRlcicgKG1haWwpIjsg
fQogICAgJHJ0biA9Jyc7CiAgICAoJHJ0biwgJHVzZXJNYWlsKSA9ICZnZXRBdHRyT25lKCRsZGFw
LCRwZW9wbGViYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAgIGlmICggJHJ0biBuZSAiIikgCiAg
ICAgIHsgCiAgICAgIHByaW50ICJXQVJOSU5HOiBnZXRNYWlsKCR1c2VyTmFtZSkgZXJyb3I6XG4k
cnRuXG4iOyAKICAgICAgaWYgKCR1c2VyTWFpbCBlcSAnJykKICAgICAgICB7ICR1c2VyTWFpbCA9
ICZkZWZMZGFwQWRtaW47IH0gICNpZiBsZGFwIGRvd24KICAgICAgfQogICAgZWxzZQogICAgICB7
IHJldHVybiAkdXNlck1haWw7IH0KICAgIH0KICBlbHNlCiAgICB7IHJldHVybiAmZGVmTGRhcEFk
bWluOyB9CiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIyBnZXRDbkZyb21VaWQgU3ViOiB1c2UgbGRhcCB0byBnZXQgY29t
bW9uIG5hbWUgKGNuKSBmcm9tIHVpZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgZ2V0Q25Gcm9tVWlkIAogIHsKCiAgbXkg
JGF0dHI7CiAgbXkgJGZpbHRlcjsKICBteSAkaTsKICBteSAkQXJnPSRfWzBdOwogIG15ICR1aWQ7
CiAgbXkgJGNuOwogIG15ICRidWZmOwogIAogICZEZWJ1Z01zZyg5OSwiZ2V0Q25Gcm9tVWlkIGFy
Zz0nJEFyZyciKTsKCiAgJGZpbHRlciA9ICJ1aWQ9IiAuICRBcmc7CiAgJGF0dHIgICA9ICJkbiI7
CgogICZEZWJ1Z01zZyg5OSwiR2V0dGluZyB0aGUgJGF0dHIgZm9yICckZmlsdGVyJyAoZGlzdGlu
Z3Vpc2hlZCBuYW1lKSIpOwogICRidWZmID0gIiI7CiAgKCRydG4sICRidWZmKSA9ICZnZXRBdHRy
T25lKCRsZGFwLCRwZW9wbGViYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAmRGVidWdNc2coOTks
IiBjbj0nJGJ1ZmYnIik7CgogICRidWZmID1+IHMvXiAqY24gKj0gKi8vaTsKICAkYnVmZiA9fiBz
LywuKiQvLzsKICByZXR1cm4gKCRydG4sICRidWZmLCAkQXJnKTsKICAgCiAgfSMjIyBlbmQgc3Vi
IGdldENuRnJvbVVpZAoKCg==
# Sending end of data token...
$ EOF
# Waiting for remote host to process data...
$ echo tramp_exit_status $? 
tramp_exit_status 0
# Decoding region into remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...done
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 39271) (15807 43690) (15807 43690) 60265 33261 t (6 . 
51848) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 39271) (15807 43690) (15807 43690) 60265 33261 t (6 . 
51848) (128 133))
$ echo are you awake
are you awake
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 43793) (15807 43690) (15807 43690) 60265 33261 t (6 . 
51848) (128 133))
$ echo are you awake
[[Remote prompt `^/////
?$' not found in 10 secs]]# Opening connection for address@hidden using nil...
# Waiting for prompts from remote shell
# Waiting 60s for prompt from remote shell
# Sending password
# Found remote shell prompt.
# Initializing remote shell
$ exec env PS1='$ ' /bin/sh
# Waiting 30s for remote `/bin/sh' to come up...
exec env 'PS1=$ ' /bin/sh
$ # Setting up remote shell environment
stty -inlcr -echo kill '^U'
$ $ # Determining coding system
foo
bar
$ # Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1'
$ # Waiting 30s for `set +o vi +o emacs'
$ # Waiting 30s for `unset MAIL MAILCHECK MAILPATH'
$ # Waiting 30s for `unset CDPATH'
$ # Setting shell prompt
$ PS1='
/////
'; PS2=''; PS3=''
$ echo ~root
~root
$ while read d; do if test -x $d/bash -a -f $d/bash; then echo tramp_executable 
$d/bash; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
tramp_executable /bin/bash
# Starting remote shell `/bin/bash --norc' for tilde expansion...
$ PS1='$ ' exec /bin/bash --norc
$ # Setting remote shell prompt...
# Setting remote shell prompt...done
# Finding command to check if file exists
$ test -e / 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -e /\ this\ file\ does\ not\ exist\  2>/dev/null; echo tramp_exit_status 
$? 
tramp_exit_status 1
# Finding a suitable `ls' command
# Checking remote `/export/home/gray/bin/ls' command for `-n' option
$ test -x /export/home/gray/bin/ls 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
# Checking remote `/bin/ls' command for `-n' option
$ test -x /bin/ls 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Testing remote command `/bin/ls' for -n...
$ /bin/ls -lnd / >/dev/null 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Testing remote command `/bin/ls' for -n...okay
# Using remote command `/bin/ls' for getting directory listings
$ tramp_set_exit_status () {
return $1
}
$ test -e /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/sbin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/sbin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/local/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/local/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ ( test -d /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
$ test -e /local/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /local/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /local/gnu/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /usr/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /usr/pkg/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ test -e /usr/contrib/bin 2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 1
$ 
PATH=/export/home/gray/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin; 
export PATH
$ LC_TIME=C; export LC_TIME; echo huhu
huhu
$ mesg n; echo huhu
huhu
$ biff n ; echo huhu
bash: biff: command not found
huhu
$ unalias ls; echo huhu
bash: unalias: `ls': not an alias
huhu
$ ( test / -nt / )
$ tramp_test_nt () {
test -n "`find $1 -prune -newer $2 -print`"
}
$ tramp_uudecode () {
(echo begin 600 /tmp/tramp.$$; tail +2) | uudecode
cat /tmp/tramp.$$
rm -f /tmp/tramp.$$
}
$ while read d; do if test -x $d/perl5 -a -f $d/perl5; then echo 
tramp_executable $d/perl5; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
$ while read d; do if test -x $d/perl -a -f $d/perl; then echo tramp_executable 
$d/perl; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
tramp_executable /bin/perl
# Sending the Perl `file-attributes' implementation.
$ tramp_file_attributes () {
/bin/perl -e '$f = $ARGV[0];
@s = lstat($f);
if (($s[2] & 0170000) == 0120000) { $l = readlink($f); $l = "\"$l\""; }
elsif (($s[2] & 0170000) == 040000) { $l = "t"; }
else { $l = "nil" };
printf("(%s %u %d %d (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) (%u %u))\n",
$l, $s[3], $s[4], $s[5], $s[8] >> 16 & 0xffff, $s[8] & 0xffff,
$s[9] >> 16 & 0xffff, $s[9] & 0xffff, $s[10] >> 16 & 0xffff, $s[10] & 0xffff,
$s[7], $s[2], $s[1] >> 16 & 0xffff, $s[1] & 0xffff, $s[0] >> 16 & 0xffff, $s[0] 
& 0xffff);' $1 2>/dev/null
}
# Sending the Perl `mime-encode' implementations.
$ tramp_encode () {
/bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
};

binmode(\*STDIN);

# We read in chunks of 54 bytes, to generate output lines
# of 72 chars (plus end of line)
$/ = \54;

while (my $data = <STDIN>) {
    my $pad = q();

    # Only for the last chunk, and only if did not fill the last three-byte 
packet
    if (eof) {
        my $mod = length($data) % 3;
        $pad = q(=) x (3 - $mod) if $mod;
    }

    # Not the fastest method, but it is simple: unpack to binary string, split
    # by groups of 6 bits and convert back from binary to byte; then map into
    # the translation table
    print
      join q(),
        map($trans{$_},
            (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)),
              $pad,
                qq(\n);
}
' 2>/dev/null
}
$ tramp_encode_with_module () {
perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' 2>/dev/null
}
# Sending the Perl `mime-decode' implementations.
$ tramp_decode () {
/bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {($_, substr(unpack(q(B8), chr $i++), 2, 6))}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)
};

my %bytes = map {(unpack(q(B8), chr $_), chr $_)} 0 .. 255;

binmode(\*STDOUT);

# We are going to accumulate into $pending to accept any line length
# (we do not check they are <= 76 chars as the RFC says)
my $pending = q();

while (my $data = <STDIN>) {
    chomp $data;

    # If we find one or two =, we have reached the end and
    # any following data is to be discarded
    my $finished = $data =~ s/(==?).*/$1/;
    $pending .= $data;

    my $len = length($pending);
    my $chunk = substr($pending, 0, $len & ~3);

    # Easy method: translate from chars to (pregenerated) six-bit packets, join,
    # split in 8-bit chunks and convert back to char.
    print join q(),
      map $bytes{$_},
        ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g);

    last if $finished;
}
' 2>/dev/null
}
$ tramp_decode_with_module () {
perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' 2>/dev/null
}
$ while read d; do if test -x $d/ln -a -f $d/ln; then echo tramp_executable 
$d/ln; break; fi; done <<'EOF'
$ /export/home/gray/bin
$ /bin
$ /usr/bin
$ /usr/sbin
$ /usr/local/bin
$ /usr/ccs/bin
$ /local/bin
$ /local/freeware/bin
$ /local/gnu/bin
$ /usr/freeware/bin
$ /usr/pkg/bin
$ /usr/contrib/bin
$ EOF
tramp_executable /bin/ln
# Checking remote encoding command `mimencode -b' for sanity
$ ( mimencode -b </dev/null 2>/dev/null; echo tramp_exit_status $? )
tramp_exit_status 0
# Checking remote decoding command `mimencode -u -b' for sanity
$ ( echo xyzzy | mimencode -b | mimencode -u -b 2>/dev/null; echo 
tramp_exit_status $? )
xyzzy
tramp_exit_status 0
# Checking to see if encoding/decoding commands work on remote host...
$ echo xyzzy | mimencode -b | mimencode -u -b
xyzzy
# Checking to see if encoding/decoding commands work on remote host...done
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 43793) (15807 43690) (15807 43690) 60265 33261 t (6 . 
51848) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ test -w 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
# Encoding region...
# Encoding region using function...
# Decoding region into remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...
$ mimencode -u -b 
>/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl <<'EOF'
# Sending data to remote host...
IyEvdXNyL2Jpbi9wZXJsCgojIDMwLW9jdC0wMiBkZ3MgRml4IGJ1ZyB3aGVuIGdyb3VwIGNvbnRh
aW5zIGFub3RoZXIgZ3JvdXAKIyAyNS1zZXAtMDIgZGdzIEV4cGFuZCBTSUdOQUxfQ0xFQU5VUCB0
byBpbmNsdWRlIHRyYWNlIGJhY2sgZGV0YWlscy4KIyAyNC1zZXAtMDIgZGdzIEZpeCBpc3N1ZSB3
aGVuIG5vdCBpbiB1cGRhdGUgbW9kZSwgYW5kIG5vdCBnZXR0aW5nIHByb3h5IGRldGFpbHMKIyAg
ICAgICAgICAgICAgIElmIG5vIHByb3h5LCB1c2UgbWFuYWdlciBhcyB0aGUgYWRtaW4gY29udGFj
dAojIDE5LXNlcC0wMiBkZ3MgQWRkIHRlc3Qgd2hlbiBsZGFwIGNvbm5lY3Rpb24gZHJvcHMgYWZ0
ZXIgc3RhcnQgCiMgICAgICAgICAgICAgICBpbiBzZW5kRW1haWwKIyAgICAgICAgICAgICAgIENo
YW5nZSByb290QGxvY2FsaG9zdCB0byByb290IGZvciBmZWVkYmFjayBtYWlsCiMgMTgtc2VwLTAy
IGRncyBBZGQgbGlzdCBvZiBncm91cHMgdG8gYmUgcHJvY2Vzc2VkIHRvIGxvZwojICAgICAgICAg
ICAgICAgTWFrZSBhbGFybSBzZXR0aW5nIGludG8gYSB2YXJpYWJsZQojIDEzLXNlcC0wMiBkZ3Mg
TW9kaWZ5IGVtYWlsIG1lc3NhZ2VzCiMgICAgICAgICAgICAgICBBZGQgY2hlY2sgdG8gc2xlZXAg
d2hlbiBzZXJ2ZXIgaXMgZHVtcGluZyBhdCBtaWRuaWdodCAKIyAgICAgICAgICAgICAgICAgKHRo
aXMgbWF5IG5lZWQgYWRqdXN0aW5nIHdpdGggZHVtcCBjcm9uKQojICAgICAgICAgICAgICAgQWRk
IGdyb3VwIG5hbWUgb3V0cHV0IGR1cmluZyBwcm9jZXNzaW5nCiMgICAgICAgICAgICAgICBEcm9w
IGluY2x1ZGUgc3RhdGVtZW50IG9uIHRvcCBsaW5lIChtdXN0IGJlIHJ1biBmcm9tIHdpdGhpbiBk
aXJlY3RvcnkKIyAgICAgICAgICAgICAgIGkuZS4KIyAgICAgICAgICAgICAgIChjZCA8c29tZWRp
cmVjdG9yeT47Li9ncnB0ZXIucGwgKQojICAgICAgICAgICAgICAgUGljayB1cCBncm91cHMgYmVp
bmcgcHJvY2Vzc2VkIGluIHVwZGF0ZSBtb2RlCiMgMTAtc2VwLTAyIGRncyBGaXggaXNzdWUgd2l0
aCBtaXNzaW5nICJjbj0iIGluIHVuaXF1ZW1lbWJlcgojIDMwLWF1Zy0wMiBkZ3MgRml4IGJ1ZyB3
aGVuIHVuaXF1ZW1lbWJlcnMgbm90IHJlbW92ZWQKIyAgICAgICAgICAgICAgIFJld3JpdGUgc2Vu
ZEVtYWlsIHJvdXRpbmUKIyAgICAgICAgICAgICAgIERvIG5vdCBlbWFpbCBpZiBvbmxlIExEQVAg
Y29ubmVjdGlvbiBmYWlsaW5nCiMgICAgICAgICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGV2YWwg
Y2FsbHMKIyAgICAgICAgICAgICAgIFVwZGF0ZSBVUkwgdG8gYmUgcHJvZHVjdGlvbiBhbmQgbm90
IGRlYnVzc3kKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQojIGxkYXAgZ3JvdXBzIGJhY2tlbmQgKGJhdGNoKSBwcm9jZXNz
aW5nCiMgYWRhcHRlZCBmcm9tIHNsYidzIGdyb3VwdGVyLnBsCiMKIyBEb24gRXJpY2tzb24sIElF
QywgMjAwMAojCiMgRGVidWcgTGV2ZWw6IDEgZmV3IGluZm9ybWF0aW9uLCBzbWFsbCB2ZXJib3Nl
IAojICAgICAgICAgICAgICAyIGdlbmVyYWwgdmVyYm9zZSAoZ29vZCBmb3IgZGVtb3MpCiMgICAg
ICAgICAgICAgIDMgcHJvZ3JhbSBmbG93CiMgICAgICAgICAgICAgIDQgdmFyaWFibGVzIGNvbnRl
bnQgaW5zaWRlIHByb2NlZHVyZQojICAgICAgICAgICAgICA1IGhhdmluZyBiYWQgZGF5PwojCiMg
Q3JlYXRlZDogQmFzZWQgdXBvbiBncm91cHRlci5wbCBNYXJjaCAxOTk4IGJ5IERhbmllbCBHdWVy
bWV1cgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQoKdXNlIHN0cmljdDsKdXNlIGdycGdsb2JhbDsKdXNlIERhdGU6Ok1h
bmlwOwp1c2UgTW96aWxsYTo6TERBUDo6Q29ubjsKdXNlIE1vemlsbGE6OkxEQVA6OlV0aWxzOwp1
c2UgTW96aWxsYTo6TERBUDo6RW50cnk7CiN1c2UgVGltZTo6UGFyc2VEYXRlOwoKbXkgQG1lbWJl
ckxpc3Q7Cm15IEByZW1vdmVfbGlzdDsKbXkgQGFyZ3M7Cm15ICgkY29ubkhvc3QsJGNvbm5Qb3J0
LCRjb25uRE4sJGNvbm5QYXNzLAogICAgJGdyb3VwYmFzZWRuLCRwZW9wbGViYXNlZG4sJHJvbGVi
YXNlZG4pID0gJmdldFBhcm1zOwpteSAkY3VyR3JvdXA7Cm15ICRjdXJBZG1pbjsKbXkgJGN1ckxk
YXBBZG1pbjsKbXkgJGN1ckxkYXBBZG1pbk1haWw7CgpteSAkcnRuOwpteSAkbnJlY29yZHM7Cm15
ICRzY29wZT0nc3VidHJlZSc7Cm15ICRWZXJzaW9uSW5mbzsKbXkgJGxvZzsKbXkgJGxkYXA7Cm15
ICRmb250Y29sb3I7Cm15ICRkZWJ1ZzsKbXkgJHRpbWVTdGFtcDsKbXkgJGk7Cm15ICRwOwpteSAk
bXluYW1lOwpteSBAZmllbGRzOwpteSAlcmVjb3JkczsKbXkgJXJlY29yZDsKbXkgJHJlY29yZFg7
Cm15ICRzZWFyY2hWYWw7Cm15ICRmaWVsZF90b19zZWFyY2g7Cm15ICRhdHRyOwpteSAkZmlsdGVy
OwpteSBAcHM7Cm15ICRkYXRlOwpteSAkZ3JvdXBfZXhwaXJlOwpteSAkZXhwaXJlX2RhdGUyOwpt
eSAkZXhwaXJlX2RhdGU7Cm15ICRlcnI7Cm15ICRlcnJmbGFnOwpteSAkZXJydGV4dDsKbXkgJGVy
cnRleHRNc2c7Cm15ICRzdGFydFRpbWU7Cm15ICRyZWFkX2hvc3Q7Cm15IEBhdHRyczsKbXkgJGJh
c2VkbjsKbXkgJG51X3VzZXI7Cm15ICRudV9wYXNzd2Q7Cm15ICRidWZmOwpteSAkdXBkYXRlb25s
eTsKbXkgJHNob3c7Cm15ICRsYXN0bW9kaWZpZWRvbjsKbXkgJHJlY3VyX2xldmVsOwpteSAkbGlz
dG9ubHk7Cm15ICRsb2NrZm9yY2VkOwpteSAka2VlcHRlbXA7Cm15ICRodG1sOwpteSAkZ3JvdXBf
bmFtZTsKbXkgJGVvbDsKbXkgJGVvbHByaW50OwpteSAkYW5hbHl6ZTsKbXkgJHRlbXBmaWxlOwpt
eSAkbWVtYmVybGltaXQ7Cm15ICRkbjsKbXkgJGNuOwpteSAkdGhpc2NuOwpteSAkc2l6ZWxpbWl0
OwpteSAkbWVtYmVyZmlsZTsKbXkgJGxvY2tmaWxlOwpteSAkc3JjZGlyOwpteSAkd29ya2RpcjsK
bXkgJHRtcGRpcjsKbXkgJGxvZ2RpcjsKbXkgQGdyb3VwTGlzdDsKbXkgQGFkbWluTGlzdDsKbXkg
JG9sZE5hbWU7Cm15ICRjaGFuZ2VkOwpteSAkcHM7Cm15ICRjbWQ7CgpteSAkbWF4VGltZT04KjYw
KjYwOyAgIyBNYXhpbXVtIHRpbWUgdGhhdCBqb2Igd2lsbCBydW4gZm9yIGJlZm9yZSBhYm9ydGlu
ZwoKbXkgJFJDU2RhdGU9JyREYXRlOiAyMDAyLzA5LzE5ICQnOwpteSAkUkNTZmlsZT0nJFJDU2Zp
bGU6IGdycHRlci5wbCx2ICQnOwpteSAkUkNTcmV2PSckUmV2aXNpb246IDEuOGRncyAkJzsKCgoj
IEVudmlyb25tZW50IHZhcmlhYmxlcwokfCA9MTsgICAgICAgICAgICAgICAgICMgdHVybiBvZmYg
YnVmZmVyaW5nCgojLS0tLS0tLS0tLS0tLS0tIGdsb2JhbCB2YXJpYWJsZXM6IGRpcmVjdG9yaWVz
IC0tLS0tLS0tLS0tLS0tCiRzcmNkaXIgICAgID0gJmdldHNyY2RpcjsKJGxvZ2RpciAgICAgPSAi
JHNyY2Rpci9sb2dzIjsKJHRtcGRpciAgICAgPSAiJHNyY2Rpci90bXBmaWxlcyI7CiR3b3JrZGly
ICAgID0gIiRzcmNkaXIvd29yayI7CiMtLS0tLS0tLS0tLS0tLS0gZ2xvYmFsIHZhcmlhYmxlcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiRsb2NrZmlsZSAgID0gIiR0bXBkaXIvZ3JwdGVy
LmxvY2siOwokbWVtYmVyZmlsZSA9ICIkdG1wZGlyL21lbWJlcnMkJC50bXAiOwokc2l6ZWxpbWl0
ICAgICA9IDEwMDA7ICAjIFNldCB0byBNYXhpbXVtIE51bWJlciBvZiBFbnRyaWVzIHRvIFJldHVy
bgogICAgICAgICAgICAgICAgICAgICAgICAjIENhbiBzZXQgc21hbGwgdG8gdGVzdCBlcnJvciBy
b3V0aW5lcwokdGVtcGZpbGUgICA9ICIkdG1wZGlyL2dyb3VwLiQkLnRtcCI7CgokVmVyc2lvbklu
Zm89IiRSQ1NmaWxlICRSQ1NyZXYgJFJDU2RhdGUiOwoKIy0tLS0tLS0tLS0tLS0tIGNvbW1hbmQg
bGluZSBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJGFuYWx5emUgPSAwOyAgICAgICAg
ICAjIGNtZCBsaW5lIG9wdGlvbjogIGJ5IGRlZmF1bHQgd2hlbiB0aGUgcHJvZ3JhbSAKICAgICAg
ICAgICAgICAgICAgICAgICAjIHJ1bnMgaXQgdXBkYXRlcyB0aGUgZGlyZWN0b3J5CiAgICAgICAg
ICAgICAgICAgICAgICAgIyBpZiBzZXQgdG8gMSwgdGhlIHByb2dyYW0ganVzdCBhbmFseXplcyB0
aGUgCiAgICAgICAgICAgICAgICAgICAgICAgIyBncm91cCBzdHJ1Y3R1cmUgYW5kIHdyaXRlIGl0
IHRvIHN0ZG91dAoKJGVvbD0iXG4iOyAgICAgICAgICAgICAjIHNldCBieSAkaHRtbDogZW5kIG9m
IGxpbmUgZm9yIHN0ZG91dCAKJGVvbHByaW50PSJcXG4iOyAgICAgICAjCiAgICAgICAgICAgICAg
ICAgICAgICAgIyhjYW4gYmUgXG4gb3IgPGJyPiBmb3Igd3d3LgoKJGdyb3VwX25hbWUgPSAiIjsg
ICAgICAjIGNtZCBsaW5lIG9wdGlvbjogCiAgICAgICAgICAgICAgICAgICAgICAgIyBkbyBhbGwg
Z3JvdXAgdW5sZXNzIHNwZWNpZnkgaW4gdGhlIGFyZ3VtZW50cwoKJGh0bWwgPSAwOyAgICAgICAg
ICAgICAjIGNtZCBsaW5lIG9wdGlvbjogCiAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQg
dHlwZTogaHRtbCAoMSkgb3Igc3RkICgwKQoKJGtlZXB0ZW1wPTA7ICAgICAgICAgICAjaWYgc2V0
IHRvIG9uZSB0ZW1wIGZpbGUgYXJlIG5vdCBlcmFzZWQgCiAgICAgICAgICAgICAgICAgICAgICAg
IyBhZnRlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgI3NldCB0byB6ZXJvIHRl
bXAgZmlsZSBhcmUgZXJhc2UuCgokbGlzdG9ubHkgPSAwOyAgICAgICAgICMgc2V0IHRvIDEgdGVs
bCB0aGlzIHByb2dyYW0gCiAgICAgICAgICAgICAgICAgICAgICAgIyB0byBkaXNwbGF5IGFsbCBn
cm91cHMgdGhlbiBxdWl0cy4KCiRsb2NrZm9yY2VkID0gMDsgICAgICAgIyBzZXQgdG8gMSB0ZWxs
IHRoaXMgcHJvZ3JhbSB0byBmb3JjZSB0aGUgbG9jayAKICAgICAgICAgICAgICAgICAgICAgICAj
IG9mIHRoZSBleGVjdXRpb24uCgokbG9nID0gMjsgICAgICAgICAgICAgICMgY21kIGxpbmUgb3B0
aW9uIHRvIGxvZyBvdXRwdXQgaW50byBMT0cgZmlsZQogICAgICAgICAgICAgICAgICAgICAgICMg
MCA9IGRpc3BsYXksIDEgPSBMT0cgZmlsZSwgMiA9IGJvdGgKCiRyZWN1cl9sZXZlbD0wOyAgICAg
ICAgIyB0ZWxsIHVzIHRoZSBsZXZlbCBvZiByZWN1cnNpdml0eSB0aGUgCiAgICAgICAgICAgICAg
ICAgICAgICAgIyBwcm9ncmFtIGlzIGluCiAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlz
IHVzZWQgdG8gaW5kZW50IHRoZSBvdXRwdXQgdG8gZGlzcGxheSBhIG5pY2UKICAgICAgICAgICAg
ICAgICAgICAgICAjIGRpcmVjdG9yeSB0cmVlIHdoZW4gZ3JvdXAgaW5jbHVkZXMgb3RoZXIgZ3Jv
dXBzCgokc2hvdz0wOyAgICAgICAgICAgICAgICMgY21kIGxpbmUgb3B0aW9uOiBzaG93IGRlYnVn
IGluZm9ybWF0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICMgIHVwIHRvIGxldmVsIHlvdSBz
ZXQgaGVyZSAoMCB0byA1KQogICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIGJlIHNldCB0
byAwIGluIG5vcm1hbCBvcGVyYXRpb24gbW9kZQoKJHVwZGF0ZW9ubHkgPSAwOyAgICAgICAjIHNl
dCB0byAxIHRlbGwgdGhpcyBwcm9ncmFtIG9ubHkgdG8gZXhwYW5kIAogICAgICAgICAgICAgICAg
ICAgICAgICMgZ3JvdXAgd2l0aCBzdGF0dXMgJ1RvIGJlIHByb2Nlc3NlZCcuCgojIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMg
RE8gTk9UIE1PRElGWSAgYmVsb3cgdGhpcyBsaW5lLgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIAojCiMgIE1BSU4KIwojIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKIyMjIyMjIyMjCgojIyBjcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSBpZiBuZWVk
ZWQKCmlmICgkZGVidWcgPj0gMCkgewogIHByaW50IHFxezwhLS0gR3JvdXAgY29kZSAkVmVyc2lv
bkluZm8gc3RhcnRpbmcgYXQgfSxzY2FsYXIoZ210aW1lKHRpbWUpKSxxcXstLT5cbn07Cn0KCmlm
ICghIC1kICIkd29ya2RpciIgKSAKICB7CiAgbWtkaXIoJHdvcmtkaXIsMDc3NykgfHwgZGllICgi
Y2Fubm90IGNyZWF0ZSBkaXJlY3Rvcnk6ICR3b3JrZGlyOiAkPyIpOwogIFByaW50TWVzc2FnZSgi
RGlyZWN0b3J5ICR3b3JrZGlyIGNyZWF0ZWQiKTsKICB9CgojIHVzYWdlOiAgZ3JwdGVyIFstb3B0
aW9ucyAuLi5dICMKI3doZXJlIG9wdGlvbnMgaW5jbHVkZTogc2VlICZ1c2FnZSAKCiMjIyMgcmVh
ZCBhcmd1ZW1lbnQgYW5kIHNldCB2YXJpYWJsZXMKCkBhcmdzPUBBUkdWOwokYnVmZj0gIkFyZ3Vt
ZW50IGxpbmU6IFxuICAiOwpmb3IgKCRpPTA7ICRpPD0gJCNhcmdzOyAkaSsrKQogIHsgJGJ1ZmYg
Lj0gJGFyZ3NbJGldIC4gJyAnOyB9IAoKIyMjIyBpbml0IHNlcXVlbmNlCndoaWxlICggJF8gPSAk
QVJHVlswXSApCiAgewogIHNoaWZ0OwogIGxhc3QgaWYgL14tLSQvOwogIGlmICAgICgvXi1nLykg
ICAgCiAgICB7ICRncm91cF9uYW1lID0gJmdldF9vcHRpb24oIi1ncm91cCIpOyAgfSAKICBlbHNp
ZiAoL14tdy8pICAgICAgCiAgICB7ICRodG1sID0gMSAgICAgICAgICAgICB9CiAgZWxzaWYgKC9e
LWEvKSAgICAgIAogICAgeyAkYW5hbHl6ZSAgID0gMTsgICAgICAgICAgICAgICAgICAgICAgIH0K
ICBlbHNpZiAoL14tbG9nJC8pICAgICAgICAKICAgIHskbG9nID0gJmdldF9vcHRpb24oIi1sb2ci
KTsgfQogIGVsc2lmICgvXi1sLykgICAgICAKICAgIHsgJGxpc3Rvbmx5ICA9IDE7ICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgZWxzaWYgKC9eLXUvKSAgICAgIAogICAgeyAkdXBkYXRlb25seSAg
PSAxOyAgICAgICAgICAgICAgICAgICAgICAgfQogIGVsc2lmICgvXi16LykgICAgICAKICAgIHsg
JGxvY2tmb3JjZWQgID0gMTsgICAgICAgICAgICAgICAgICAgICAgIH0KICBlbHNpZiAoL14tZC8p
ICAgICAgCiAgICB7ICRzaG93ICAgICAgID0gJmdldF9vcHRpb24oIi1kZWJ1ZyIpOyB9CiAgZWxz
aWYgKC9eLWsvKSAgICAgIAogICAgeyAka2VlcHRlbXAgID0gMTsgICB9CiAgZWxzaWYgKC9eLWgv
KSAgICAKICAgIHsgJnVzYWdlKCJIZWxwIHJlcXVlc3RlZCIpOyB9CiAgZWxzaWYgKC9eLXAvKSAg
ICAgIAogICAgeyAkbnVfcGFzc3dkICA9ICZnZXRfb3B0aW9uKCItcGFzcyIpOyAgIH0KICBlbHNp
ZiAoL15bYS16QS1aXSovKSAgICAKICAgIHsgCiAgICAmYWJvcnQoIkVSUjogY2FuJ3Qgc3BlY2lm
eSBtb3JlIHRoYW4gb25lIHVzZXIhIiw3KSBpZiAoJG51X3VzZXIgbmUgIiIpOwogICAgJG51X3Vz
ZXIgPSAkXzsKICAgIH0KICBlbHNlICAgICAgICAgICAgIAogICAgeyAmdXNhZ2UoInVua25vd24g
YXJndW1lbnQ6ICRfIik7fQogIH0KCmlmICggJGh0bWwgPT0gMSkKICB7IAogIHByaW50ICJDb250
ZW50LXR5cGU6IHRleHQvaHRtbFxuUHJhZ21hOiBuby1jYWNoZVxuXG4iOyAKICBwcmludCAiPEhU
TUw+PEhFQUQ+PFRJVExFPkxEQVAgR3JvdXBzIEJhdGNoIFByb2Nlc3Npbmc8L1RJVExFPjwvSEVB
RD4iOwogIHByaW50ICI8Qk9EWT5cbiIKICB9CgojIyBkaXNwbGF5IFJDUyBpbmZvOgomUkNTZGlz
cCgkUkNTZGF0ZSwkUkNTZmlsZSwkUkNTcmV2LDApOwoKJkRlYnVnTXNnKDEsIAogICJcbi0gLSAt
IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSBcbiIgLgogICJQYXJhbWV0
ZXJzOlxuICB3b3JrZGlyIFx0JHdvcmtkaXJcbiAgYmFzZWRuIFx0JGJhc2VkblxuICBncm91cGJh
c2VkbiAiIC4KICAiXHQkZ3JvdXBiYXNlZG5cbiAgcGVvcGxlYmFzZWRuIFx0JHBlb3BsZWJhc2Vk
blxuICByZWFkX2hvc3QgIiAuCiAgIlx0JHJlYWRfaG9zdFxuLSAtIC0gLSAtIC0gLSAtIC0gLSAt
IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIik7CgoKJkRlYnVnTXNnKDEsIlxuQXJndW1lbnRzOlxu
ICBhbmFseXplXHQkYW5hbHl6ZVxuICBlb2xcdFx0JGVvbHByaW50XG4iIC4KICAiICBncm91cF9u
YW1lXHQkZ3JvdXBfbmFtZVxuICBodG1sXHRcdCRodG1sXG4gIGtlZXB0ZW1wXHQka2VlcHRlbXBc
biIgLgogICIgIGxpc3Rvbmx5XHQkbGlzdG9ubHlcbiAgbG9ja2ZvcmNlZFx0JGxvY2tmb3JjZWRc
biIgLgogICIgIGxvZ1x0XHQkbG9nXG4gIHJlY3VyX2xldmVsXHQkcmVjdXJfbGV2ZWxcbiAgc2hv
d1x0XHQkc2hvd1xuIiAuCiAgIiAgdXBkYXRlb25seVx0JHVwZGF0ZW9ubHlcbiIgLgogICItIC0g
LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSIpOwokZGF0ZT1nbXRp
bWUodGltZSk7CiRzdGFydFRpbWU9Z210aW1lKHRpbWUpOwpjaG9tcCgkZGF0ZSk7CiRkZWJ1Zz0k
c2hvdzsKJnNldERlYnVnKCRkZWJ1Zyk7CiNvcGVuIGxvZyBmaWxlCmxvZ01zZzIoIklORjogU3Rh
cnRpbmdcbiIpOwoKKCRydG4sJGxkYXApPWRvQmluZCgkbGRhcCk7CmlmICgkcnRuIG5lICcnKQog
IHsgJmFib3J0KCRydG4pOyB9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKIyBjaGVjayBsb2NrIGZpbGUgZXhpc3RzCiMgaWYgaXQgZXhpc3Rz
IGl0IG1lYW5zIHRoYW4gYW5vdGhlciBpbnN0YW5jZSBvZiB0aGlzIAojIHByb2cgaXMgYWxyZWFk
eSBydW5uaW5nIG9yIHRoYW4gdGhlIGZpbGUgaXMgYW4gb2xkIGxvY2sgZmlsZSAKIyBmcm9tIGEg
cHJvY2VzcyB0aGF0IGFscmVhZHkgZGllZC4KIwoKaWYgICgoLWUgIiRsb2NrZmlsZSIpICYmICgk
bG9ja2ZvcmNlZCA9PSAwKSkgCiAgewogICMjIyBIZXJlIHRoZSBsb2NrZmlsZSBleGlzdC4KICAj
IyMgQ2hlY2sgaWYgdGhlIGZpbGUgaXMgb2xkZXIgdGhhbiBvbmUgZGF5LiBpZiB5ZXMKICAjIyMg
d2UgcmVtb3ZlIGl0IHNpbmNlIHRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgaW50ZXJydXB0ZWQK
ICAjIyMgcHJvY2VzcyByZXN1bHRpbmcgZnJvbSBhbiBMREFQIGNyYXNoIG9yIGEgc2VydmVyIHJl
c3RhcnQuCiAgCiAgaWYgKCgtTSAkbG9ja2ZpbGUpID49IDEpCiAgICB7CiAgICBQcmludE1lc3Nh
Z2UoIkRlbGV0aW5nIGxvY2tmaWxlICRsb2NrZmlsZSBzaW5jZSAiIC4KICAgICAgIml0J3Mgb2xk
ZXIgdGhhbiAxIGRheSIpOwogICAgdW5saW5rICgkbG9ja2ZpbGUpOwogICAgfSAKICBlbHNlIAog
ICAgewogICAgIyBDaGVjayB0byBzZWUgaWYgYW5vdGhlciBwcm9jZXNzIGlzIHJ1bm5pbmcKICAg
ICRjbWQgPSAncHMgLWVmIHwgZ3JlcCBncnB0ZXIucGwgfCBncmVwIC12IGdyZXAgfCB3YyAtbCAn
IC4gJz4nIC4KICAgICAgIiR0bXBkaXIvJCQudG1wIjsKICAgIHN5c3RlbSgkY21kKTsKCiAgICAk
cHM9MDsgCiAgICBAcHM9KCk7CiAgICBvcGVuIChQUywgIjwkdG1wZGlyLyQkLnRtcCIpOwogICAg
JHBzPSA8UFM+OwogICAgY2xvc2UgUFM7CiAgICB1bmxpbmsgIiR0bXBkaXIvJCQudG1wIjsKICAg
IGlmICgkcHMgPj0gMikgCiAgICAgIHsKICAgICAgUHJpbnRNZXNzYWdlKCJBYm9ydGluZzogYW5v
dGhlciBwcm9jZXNzIGlzIHJ1bm5pbmciKTsKICAgICAgaWYgKCRodG1sID09IDEpCiAgICAgICAg
eyBwcmludCAiPC9CT0RZPjwvSFRNTD5cbiI7IH0KICAgICAgZXhpdDsKICAgICAgfSAKICAgIGVs
c2UKICAgICAgewogICAgICBwcmludCBTVERFUlIgIkxvY2sgZmlsZSBleGlzdHMgKCRsb2NrZmls
ZSksICIgLgogICAgICAgICJidXQgbm8gcHJvY2VzcywgZGVsZXRpbmcgbG9ja2ZpbGUuIjsKICAg
ICAgUHJpbnRNZXNzYWdlKCJMb2NrIGZpbGUgZXhpc3RzICgkbG9ja2ZpbGUpLCAiIC4KICAgICAg
ICAiYnV0IG5vIHByb2Nlc3MsIGRlbGV0aW5nIGxvY2tmaWxlLiIpOwogICAgICB1bmxpbmsgIiRs
b2NrZmlsZSI7IAogICAgICB9IAogICAgfQogIH0KCiMjIyMjIwojIyMgd2UgY3JlYXRlIGEgbG9j
ayBmaWxlIGFuZCBwdXQgdGhlIGRhdGUgaW4gaXQKIyMjIGFzIHdlbGwgYXMgdGhlIFBJRCMKUHJp
bnRNZXNzYWdlKCJDcmVhdGluZyBsb2NrZmlsZSIpOwpvcGVuIChMT0NLRklMRSwgIj4kbG9ja2Zp
bGUiKQogIG9yIHdhcm4gIkZhaWxlZCB0byBvcGVuOiAnJGxvY2tmaWxlJywgICQ/IjsKCnByaW50
IExPQ0tGSUxFICJQSUQgJCQsICAkZGF0ZSI7CgpjbG9zZSBMT0NLRklMRTsKCiZEZWJ1Z01zZygz
LCAiJGRhdGU6IHN0YXJ0aW5nICQwIik7CgppZiAoISAtZCAiJGxvZ2RpciIgKSAKICB7CiAgbWtk
aXIoJGxvZ2RpciwwNzc3KSB8fCBkaWUgKCJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeTogJGxvZ2Rp
cjogJD8iKTsKICBQcmludE1lc3NhZ2UoIkRpcmVjdG9yeSAkbG9nZGlyIGNyZWF0ZWQiKTsKICB9
CiZTZXRGb250Q29sb3IoImJsYWNrIik7CgppZiAoIC1kICIkdG1wZGlyIiApIAogIHsKICAmRGVi
dWdNc2coMywgIkNsZWFuaW5nIHRtcGRpciBkaXJlY3Rvcnk6ICR0bXBkaXIiKTsKICBzeXN0ZW0o
InJtIC1mICR0bXBkaXIvKi50bXAiKTsgICAKICB9CmVsc2UKICB7CiAgbWtkaXIoJHRtcGRpciww
Nzc3KSB8fCBkaWUgKCJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeTogJHRtcGRpcjogJD8iKTsKICBQ
cmludE1lc3NhZ2UoIkRpcmVjdG9yeSAkdG1wZGlyIGNyZWF0ZWQiKTsKICB9CgomY2F0Y2hfc2ln
bmFsczsgICMjIyBhbGxvdyBncmFjZWZ1bCBpbnRlcnJ1cHRzCgojIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBhZnRlciA1IGhvdXJzIHRoaXMg
cHJvY2VzcyB3aWxsCiMjIyBiZSBhdXRvbW90aWNhbGx5IGludGVycnVwdGVkCiMjIyB0aGlzIHdh
cyBuZWNlc3Nhcnkgc2luY2UgTERBUCBjcmFzaGVzIG1ha2UgCiMjIyB0aGlzIHByb2cgaGFuZy4K
CmFsYXJtICgkbWF4VGltZSk7IAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZ2V0
IHRoZSBjdXJyZW50IExEQVAgYWRtaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoo
JHJ0biwgJGN1ckxkYXBBZG1pbikgPSBnZXRBZG1pblRleHQoJGxkYXAsICdjbj1ncm91cCcsICRy
b2xlYmFzZWRuLCAnYWRtaW46Jyk7CgokY3VyTGRhcEFkbWluID1+IHMvXiAqY24gKj0gKi8vaTsK
JGN1ckxkYXBBZG1pbiA9fiBzLywuKiQvLzsKJkRlYnVnTXNnKDEsImN1ckxkYXBBZG1pbj0kY3Vy
TGRhcEFkbWluIik7CgppZiAoJHJ0biBuZSAiIikKICAgeyAmYWJvcnQoJ0VSUjogJyAuICRydG4p
OyB9CgojIG5vdyBnZXQgdGhlIG1haWwgYWRkcmVzcwokZmlsdGVyPSJjbj0kY3VyTGRhcEFkbWlu
IjsKJGF0dHI9Im1haWwiOwoKaWYgKCAkY3VyTGRhcEFkbWluID1+IC9cPG5vbmVcPi8gKQogIHsg
JGN1ckxkYXBBZG1pbiA9ICZkZWZMZGFwQWRtaW47IH0KCiZEZWJ1Z01zZygxLCAiR2V0dGluZyB0
aGUgJGF0dHIgZm9yICckZmlsdGVyJyAoZ3JvdXBfbGRhcF9hZG1pbikiKTsgCiRjdXJMZGFwQWRt
aW5NYWlsID0gIiI7CiRydG4gPScnOwooJHJ0biwgJGN1ckxkYXBBZG1pbk1haWwpID0gJmdldEF0
dHJPbmUoJGxkYXAsJHBlb3BsZWJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwppZiAoICRydG4gbmUg
IiIpIAogIHsgCiAgJndhcm4oJHJ0bik7IAogIH0KCiZEZWJ1Z01zZygxLCJjdXJMZGFwQWRtaW5N
YWlsPSRjdXJMZGFwQWRtaW5NYWlsIik7CgppZiAoJHJ0biBuZSAiIikKICAgeyAmYWJvcnQoJ0VS
UjogJyAuICRydG4pOyB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIyBnZXQgdGhlIGdyb3VwX2V4cGlyZSB2YWx1ZSBmcm9tIHRoZSByb2xlCiMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKKCRydG4sICRncm91cF9leHBp
cmUpID0gZ2V0QWRtaW5UZXh0KCRsZGFwLCAnY249Z3JvdXAnLCAkcm9sZWJhc2VkbiwgJ2V4cGly
ZTonKTsKaWYgKCRydG4gbmUgJycpCiAgeyAmYWJvcnQoJ0VSUjogJyAuICRydG4pOyB9CgojLS0t
LS0gY2FsY3VsYXRlIHRoZSB2YWx1ZSBmb3IgZXhwaXJhdGlvbiBkYXRlICh0b2RheSAtIGdyb3Vw
X2V4cGlyZSkKJGV4cGlyZV9kYXRlID0gJkRhdGVDYWxjKCJ0b2RheSIsICItIiAuICRncm91cF9l
eHBpcmUgLiAiIGRheXMiLCBcJGVycik7CiZEZWJ1Z01zZyg0LCAiZXhwaXJlX2RhdGU9JGV4cGly
ZV9kYXRlLCBlcnI9JGVyciIpOwokZXhwaXJlX2RhdGUyPSAmRGF0ZUNhbGMoInRvZGF5IiwgIis3
IGRheXMiLCBcJGVycik7CiZEZWJ1Z01zZyg0LCAiZXhwaXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIs
IGVycj0kZXJyIik7CiRleHBpcmVfZGF0ZTI9JlVuaXhEYXRlKCRleHBpcmVfZGF0ZTIsIiVkLSVi
Iik7CiZEZWJ1Z01zZyg0LCAiZXhwaXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIsIGVycj0kZXJyIik7
CgoKaWYgKCRlcnIgbmUgIiIpCiAgIHsgJmFib3J0KCIkcnRuIik7fSAgCgojIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIGlmIGEgZ3JvdXAgd2Fz
IHNlbmQgaW4gYXJndW1lbnQgdGhlbiB3ZSAKIyMjIHByb2Nlc3Mgb25seSB0aGlzIGdyb3VwCgpp
ZiAoJGdyb3VwX25hbWUgbmUgIiIpCiAgeyAmRXhwYW5kX09uZV9Hcm91cCgiY249JGdyb3VwX25h
bWUiKTsgfQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKIyMjIElmIHRoaXMgaXMgYW4gdXBkYXRlIG9ubHkgdGhlbiAKIyMjIHdlIHVwZGF0ZSBvbmx5
IHRoZSBncm91cHMgdy8gJ3RvIGJlIHByb2Nlc3NlZCcgc3RhdHVzCiMjIyBvciAndG8gYmUgcmVu
YW1lZConIHN0YXR1cwojIyMgbGlzdG9ubHkgYWxzbyBjaGVja2VkOiB3aWxsIG9ubHkgbGlzdCB0
aGUgZ3JvdXBzCgplbHNpZiAoJHVwZGF0ZW9ubHkpIAogIHsKICAmRGVidWdNc2coMywgIlVwZGF0
aW5nIG9ubHkgdGhlIGdyb3VwIHdpdGggc3RhdHVzPSciIC4KICAgICJUbyBiZSBwcm9jZXNzZWQn
IG9yICdCZWluZyBQcm9jZXNzZWQnIik7CiAgCiAgQGF0dHJzID0gCiAgICAoCiAgICAiY24iLAog
ICAgImFkbWludGV4dCIsCiAgICAicHJveHkiLAogICAgIm1hbmFnZXIiCiAgICApOwogIAogICRm
aWx0ZXI9Iih8KGFkbWludGV4dD1zdGF0dXM6IHRvIGJlIHByb2Nlc3NlZCkoYWRtaW50ZXh0PXN0
YXR1czogQmVpbmcgUHJvY2Vzc2VkKSkiOwogIAogICMgaGVyZSBpcyB3aGVyZSB3ZSBzaG91bGQg
cHV0IGluIHRoZSBjYWxsIHRvIGRvTERBUFNlYXJjaCgpCiAgIyBwYXNzIHRvIGl0ICRCQVNFRE4s
ICRmaWx0ZXIsIFxAYXR0cnMKICAjIGdldCBiYWNrICRydG4sICRuZW50cmllcywkcmVjb3Jke30t
Pnt9CiAgCiAgJkRlYnVnTXNnKDQsIlF1ZXJ5aW5nIGdyb3VwcyBmb3IgdXBkYXRlIG9ubHkiKTsK
ICBteSAoJHJ0biwgJG5lbnRyaWVzLCAkcmVjb3JkMSkgPSAKICAgICZkb0xEQVBTZWFyY2goJGxk
YXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycyk7CgogIGlmICgkcnRuIG5lICcnKQog
ICAgeyAmd2FybigkcnRuKTsgfQoKICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZG9uZSIpOwogICVy
ZWNvcmQgPSAlJHJlY29yZDE7CiAgQGdyb3VwTGlzdCA9IEBhZG1pbkxpc3QgPSAoKTsKICBpZiAo
JG5lbnRyaWVzID09IDApIAogICAgeyAKICAgICZSZW1vdmVMb2NrRmlsZTsKICAgIGxvZ01zZzIo
IklORjogRW5kaW5nOiBubyBncm91cHMgbmVlZCB1cGRhdGluZ1xuIik7CiAgICB9IAogIGVsc2UK
ICAgIHsKICAKICAgIGZvcmVhY2ggJGRuIChzb3J0IGtleXMgJXJlY29yZCkgewogICAgICBwdXNo
IEBncm91cExpc3QsICR7JHJlY29yZHskZG59eydjbid9fVswXTsKICAgICAgaWYgKCgkcmVjb3Jk
eyRkbn17J3Byb3h5J31bMF0gPX4gL14gKmNuICo9ICooLis/KSAqLCAqb3U9L2kpIHx8CgkgICgk
cmVjb3JkeyRkbn17J21hbmFnZXInfVswXSA9fiAvXiAqY24gKj0gKiguKz8pICosICpvdT0vaSkg
CgkgICkgewogICAgICAgIHB1c2ggQGFkbWluTGlzdCwgJDE7CiAgICAgIH0gZWxzZSB7CglwdXNo
IEBhZG1pbkxpc3QsICdObyBwcm94eSBvciBtYW5hZ2VyIGRlZmluZWQnOwogICAgICB9CiAgICB9
CiAgICAjIFByaW50IG91dCBsaXN0IG9mIGdyb3VwcyB0byBiZSBwcm9jZXNzZWQKICAgIGlmICgk
ZGVidWcgPj0gMCkgewogICAgICAgUHJpbnRNZXNzYWdlKHF7R3JvdXAgdG8gYmUgcHJvY2Vzc2Vk
OiB9LgoJCSAgICBqb2luKHFxe1xuR3JvdXAgdG8gYmUgcHJvY2Vzc2VkOiB9LEBncm91cExpc3Qp
CgkJICAgKTsKICAgICAgIHByaW50IHFxezwhLS0gR3JvdXAgdG8gYmUgcHJvY2Vzc2VkOiB9LAog
ICAgICAgICAgICAgam9pbihxcXstLT5cbjwhLS0gR3JvdXAgdG8gYmUgcHJvY2Vzc2VkOiB9LEBn
cm91cExpc3QpLAogICAgICAgICAgICAgcXF7LS0+XG59OwogICAgfQogICAgCiAgICBmb3IgKCRp
PTA7ICRpPD0gJCNncm91cExpc3Q7ICRpKyspCiAgICAgIHsKICAgICAgJG15bmFtZT0kZ3JvdXBM
aXN0WyRpXTsKICAgICAgJGN1ckFkbWluPSRhZG1pbkxpc3RbJGldOwogICAgICAmRGVidWdNc2co
NCwiZ3JvdXA6IGNuPSRteW5hbWUsYWRtaW49JGN1ckFkbWluIik7CiAgICAgIGlmICgkbGlzdG9u
bHkgPT0gMSkKICAgICAgICB7CiAgICAgICAgJGNuID0gJG15bmFtZTsKICAgICAgICAkY24gPX4g
cy9eICpjbiAqPSAqLy9pOwogICAgICAgICRjbiA9fiBzLywuKiQvLzsKICAgICAgICBwcmludCAi
JGNuXG4iOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsgJkV4cGFuZF9PbmVfR3JvdXAo
ImNuPSRteW5hbWUiKTsgfQogICAgICB9CiAgICB9CgogIGlmICgkZGVidWcgPj0gMCkgewogICAg
UHJpbnRNZXNzYWdlKHNjYWxhcihAZ3JvdXBMaXN0KS5xcXsgZ3JvdXBzIHVwZGF0ZWRcbn0pOwog
ICAgcHJpbnQgcXF7PCEtLSB9LHNjYWxhcihAZ3JvdXBMaXN0KSxxcXsgZ3JvdXBzIHVwZGF0ZWQt
LT5cbn07CiAgfQogICMjIyMjIG5vdyBkbyAndG8gYmUgcmVuYW1lZConCiAgJGZpbHRlcj0iKGFk
bWludGV4dD1zdGF0dXM6IHRvIGJlIHJlbmFtZWQqKSI7CiAgCiAgIyBoZXJlIGlzIHdoZXJlIHdl
IHNob3VsZCBwdXQgaW4gdGhlIGNhbGwgdG8gZG9MREFQU2VhcmNoKCkKICAjIHBhc3MgdG8gaXQg
JEJBU0VETiwgJGZpbHRlciwgXEBhdHRycwogICMgZ2V0IGJhY2sgJHJ0biwgJG5lbnRyaWVzLCRy
ZWNvcmR7fS0+e30KICAKICAmRGVidWdNc2coNCwiUXVlcnlpbmcgZ3JvdXBzIGZvciB1cGRhdGUg
b25seSIpOwogICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmQxKSA9IAogICAgJmRvTERBUFNlYXJj
aCgkbGRhcCwgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzKTsKCiAgaWYgKCRydG4gbmUg
JycpCiAgICB7ICZ3YXJuKCRydG4pOyB9CgogICZEZWJ1Z01zZyg0LCJRdWVyeWluZyBkb25lIik7
CiAgJXJlY29yZCA9ICUkcmVjb3JkMTsKICBAZ3JvdXBMaXN0ID0gQGFkbWluTGlzdCA9ICgpOwog
IGlmICgkbmVudHJpZXMgPT0gMCkgCiAgICB7IAogICAgJlJlbW92ZUxvY2tGaWxlOwogICAgbG9n
TXNnMigiSU5GOiBFbmRpbmc6IG5vIGdyb3VwcyBuZWVkIHVwZGF0aW5nIGZvciByZW5hbWVcbiIp
OwogICAgaWYgKCRodG1sID09IDEpCiAgICAgIHsgcHJpbnQgIjwvQk9EWT48L0hUTUw+XG4iOyB9
CiAgICBleGl0KDApOyAKICAgIH0gCiAgCiAgZm9yZWFjaCAkZG4gKHNvcnQga2V5cyAlcmVjb3Jk
KSB7CiAgICBwdXNoIEBncm91cExpc3QsICR7JHJlY29yZHskZG59eydjbid9fVswXTsKICAgIGlm
ICgoJHJlY29yZHskZG59eydwcm94eSd9WzBdID1+IC9eICpjbiAqPSAqKC4rPykgKiwgKm91PS9p
KSB8fAoJKCRyZWNvcmR7JGRufXsnbWFuYWdlcid9WzBdID1+IC9eICpjbiAqPSAqKC4rPykgKiwg
Km91PS9pKSAKCSkgewogICAgICBwdXNoIEBhZG1pbkxpc3QsICQxOwogICAgfSBlbHNlIHsKICAg
ICAgcHVzaCBAYWRtaW5MaXN0LCAnTm8gcHJveHkgb3IgbWFuYWdlciBkZWZpbmVkJzsKICAgIH0K
ICB9CiAgZm9yICgkaT0wOyAkaTw9ICQjZ3JvdXBMaXN0OyAkaSsrKQogICAgewogICAgJG15bmFt
ZT0kZ3JvdXBMaXN0WyRpXTsKICAgICRjdXJBZG1pbj0kYWRtaW5MaXN0WyRpXTsKICAgICZEZWJ1
Z01zZyg0LCJncm91cDogY249JG15bmFtZSxhZG1pbj0kY3VyQWRtaW4iKTsKICAgIGlmICgkbGlz
dG9ubHkgPT0gMSkKICAgICAgewogICAgICAkY24gPSAkbXluYW1lOwogICAgICAkY24gPX4gcy9e
ICpjbiAqPSAqLy9pOwogICAgICAkY24gPX4gcy8sLiokLy87CiAgICAgIHByaW50ICIkY25cbiI7
CiAgICAgIH0KICAgIGVsc2UKICAgICAgeyAmRXhwYW5kX09uZV9Hcm91cCgiY249JG15bmFtZSIp
OyB9CiAgICB9CgogIH0KZWxzZQogIHsKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIyMgb3RoZXJ3aXNlIHdlIHNlYXJjaCBhbGwgZ3JvdXBz
CgogICZEZWJ1Z01zZygzLCAiU2VhcmNoaW5nIGFsbCBMREFQIGdyb3VwczogIik7CgogICRmaWVs
ZF90b19zZWFyY2g9ImNuIjsKICAkc2VhcmNoVmFsPSIkZmllbGRfdG9fc2VhcmNoPSoiOwogICgk
cnRuLCAkbnJlY29yZHMsICRyZWNvcmRYKSA9ICZRdWVyeTsgICNyZXN1bHQgb3V0cHV0IGluIHN1
YnIgUXVlcnkKICAKICBpZiAoICRydG4gbmUgIiIpIAogICAgeyAmd2FybigkcnRuKTsgfQogIGVs
c2lmICggJG5yZWNvcmRzID09IDApCiAgICB7IFByaW50TWVzc2FnZSgiTm8gcmVjb3JkcyBmb3Vu
ZCIpO30gCiAgZWxzZQogICAgewogICAgJXJlY29yZHM9JSRyZWNvcmRYOwogICAgQGdyb3VwTGlz
dD1AYWRtaW5MaXN0PSgpOwogICAgZm9yZWFjaCAkZG4gKHNvcnQga2V5cyAlcmVjb3Jkcykgewog
ICAgICBwdXNoIEBncm91cExpc3QsICRyZWNvcmRzeyRkbn17J2NuJ31bMF07IAogICAgICBpZiAo
KCRyZWNvcmRzeyRkbn17J3Byb3h5J31bMF0gPX4gL14gKmNuICo9ICooLis/KSAqLCAqb3U9L2kp
IHx8CgkgICgkcmVjb3Jkc3skZG59eydtYW5hZ2VyJ31bMF0gPX4gL14gKmNuICo9ICooLis/KSAq
LCAqb3U9L2kpIAogICAgICAgICApIHsKICAgICAgICBwdXNoIEBhZG1pbkxpc3QsICQxOwogICAg
ICB9IGVsc2UgewoJcHVzaCBAYWRtaW5MaXN0LCAnTm8gcHJveHkgb3IgbWFuYWdlciBkZWZpbmVk
JzsKICAgICAgfQogICAgfQoKICAgICMgUHJpbnQgb3V0IGxpc3Qgb2YgZ3JvdXBzIHRvIGJlIHBy
b2Nlc3NlZAogICAgaWYgKCRkZWJ1ZyA+PSAwKSB7CiAgICAgICBQcmludE1lc3NhZ2UocXtHcm91
cCB0byBiZSBwcm9jZXNzZWQ6IH0uCgkJICAgIGpvaW4ocXF7XG5Hcm91cCB0byBiZSBwcm9jZXNz
ZWQ6IH0sQGdyb3VwTGlzdCkKCQkgICApOwogICAgICAgcHJpbnQgcXF7PDEtLUdyb3VwIHRvIGJl
IHByb2Nlc3NlZDogfSwKICAgICAgICAgICAgIGpvaW4ocXF7LS0+XG48IS0tR3JvdXAgdG8gYmUg
cHJvY2Vzc2VkOiB9LEBncm91cExpc3QpLAogICAgICAgICAgICAgcXF7LS0+XG59OwogICAgfQoK
CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiAgICAjIyMgSWYgd2UgbGlzdCBvbmx5IHRoZSBncm91cHMgb24gdGhlbiB3ZSBkbyBpdAogICAg
IyMgYW5kIGV4aXQKICAgIAogICAgaWYgKCRsaXN0b25seSA9PSAxKQogICAgICB7CiAgICAgIHBy
aW50ICJMSVNUSU5HIE9GIEFMTCBHUk9VUFNcbiI7CiAgICAgIGZvciAoJGk9MDsgJGk8PSQjZ3Jv
dXBMaXN0OyAkaSsrKQogICAgICAgIHsgcHJpbnQgIiAgIiAuICRncm91cExpc3RbJGldIC4gIlxu
IiA7IH0KICAgICAgJlJlbW92ZUxvY2tGaWxlOwogICAgICBsb2dNc2cyKCJJTkY6IEVuZGluZyBh
ZnRlciBsaXN0b25seVxuIik7CiAgICAgIGlmICgkaHRtbCA9PSAxKQogICAgICAgIHsgcHJpbnQg
IjwvQk9EWT48L0hUTUw+XG4iOyB9CiAgICAgIGV4aXQgKDApOwogICAgICB9CiAgICBlbHNlCiAg
ICAgIHsKICAgICAgIyBvcGVuIHJlc3VsdCBmaWxlIGFuZCBwcm9jZXNzIGVhY2ggbGluZQogICAg
ICBmb3IgKCRpPTA7ICRpPD0kI2dyb3VwTGlzdDsgJGkrKykKICAgICAgICB7CgkkY3VyQWRtaW49
JGFkbWluTGlzdFskaV07CiAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwICRpOiAkZ3JvdXBMaXN0
WyRpXSwgYWRtaW49JGN1ckFkbWluIik7CiAgICAgICAgJkV4cGFuZF9PbmVfR3JvdXAoImNuPSRn
cm91cExpc3RbJGldIik7CiAgICAgICAgfQogICAgICB9CiAgICB9ICAjZW5kIGlmIGVsc2UKICAg
IGlmICgkZGVidWcgPj0gMCkgewogICAgICBQcmludE1lc3NhZ2Uoc2NhbGFyKEBncm91cExpc3Qp
LnFxeyBncm91cHMgdXBkYXRlZFxufSk7CiAgICAgIHByaW50IHFxezwhLS0gfSxzY2FsYXIoQGdy
b3VwTGlzdCkscXF7IGdyb3VwcyB1cGRhdGVkLS0+XG59OwogICAgfQogIAogIH0KJlJlbW92ZUxv
Y2tGaWxlOwokdGltZVN0YW1wPWdtdGltZSh0aW1lKTsKY2hvbXAgJHRpbWVTdGFtcDsKJHRpbWVT
dGFtcD1+cy8uKiAvLzsKJGRhdGU9c2xiVGltZTMoJHRpbWVTdGFtcCk7CmxvZ01zZzIoIklORjog
RW5kaW5nXG4iKTsKJkRlYnVnTXNnKDMsICIkZGF0ZTogRW5kIG9mIHByb2dyYW06ICQwIik7Cmlm
ICgkZGVidWcgPj0gMCkgewogIFByaW50TWVzc2FnZShxe0ZpbmlzaGVkIHByb2Nlc3NpbmcgYXQg
fS5zY2FsYXIoZ210aW1lKHRpbWUpKS5xcXtcbn0pOwogIHByaW50IHFxezwhLS0gRmluaXNoZWQg
cHJvY2Vzc2luZyBhdCB9LHNjYWxhcihnbXRpbWUodGltZSkpLHFxey0tPlxufTsKfQoKaWYgKCRo
dG1sID09IDEpCiAgeyBwcmludCAiPC9CT0RZPjwvSFRNTD5cbiI7IH0KCiM9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMK
IyBFTkQgT0YgTUFJTgojCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRXhwYW5kX09uZV9H
cm91cCAKICB7CiAgbXkgJHJlY29yZDsKICBteSAlcmVjb3JkMTsKCiAgbXkgJGdyb3VwX25hbWUg
PSAkX1swXTsgIAogICZEZWJ1Z01zZyg1LCAiIyMjIyMgRXhwYW5kX09uZV9Hcm91cDogJGdyb3Vw
X25hbWUiKTsgCiAgJGN1ckdyb3VwPSRncm91cF9uYW1lOwogICRjdXJHcm91cCA9fiBzLyAqY24g
Kj0gKi8vaTsKICAKICAjCiAgIyBpbml0aWFsaXplIHNvbWUgbG9jYWwgdmFyaWFibGUgKG5lZWQg
dG8gYmUgbG9jYWwgZm9yIHJlY3Vyc2l2aXR5KS4KICAjCiAgbXkgJHVwZGF0ZV90ZW1wZmlsZSAg
ID0gICIkdG1wZGlyL3VwZGF0ZS4kZ3JvdXBfbmFtZS4kJC50bXAiOyAKICBteSAkd2Fybl90ZW1w
ZmlsZSAgID0gICIkdG1wZGlyL3dhcm4uJGdyb3VwX25hbWUuJCQudG1wIjsgCiAgbXkgJG1lbWJl
cl90ZW1wZmlsZSAgID0gICIkdG1wZGlyL21lbWJlci4kZ3JvdXBfbmFtZS4kJC50bXAiOyAKICBt
eSAkc3Vic2NyaXB0aW9uc0RlbnlUb190ZW1wZmlsZSAgPSAgCiAgICAiJHRtcGRpci9zdWJzY3Jp
cHRpb25zRGVueVRvLiRncm91cF9uYW1lLiQkLnRtcCI7CiAgbXkgJHN1YnNjcmlwdGlvbnNHcmFu
dFRvX3RlbXBmaWxlID0gIAogICAgIiR0bXBkaXIvc3Vic2NyaXB0aW9uc0dyYW50VG8uJGdyb3Vw
X25hbWUuJCQudG1wIjsKICAKICBteSAkaTsKICBteSAkajsKICBteSAkazsKICBteSAkcDsKICBt
eSBAcDsKICBteSAkbGluZTsKICBteSAkcXVlcnlfc3RyOwogIG15ICRjbWQ7CiAgbXkgJHJlczsK
ICBteSAkbmJfd2FybjsKICBteSAkZmllbGRuYW1lOwogIG15ICRkZWx0YTsKICBteSAkY291bnQ7
CiAgbXkgJHF1ZXJ5X3N0cmluZzsKICBteSAkYXR0clg7CiAgbXkgJHNhdmVfbWVtYmVyczsKICBt
eSAkdGVtcDsKICBteSAkZXhwbm90aWZ5OwogIG15ICRncm91cF9hZG1pbjsKICBteSAkZ3JvdXBf
bWFpbDsKICBteSBAbmFtZTsKICBteSAkc3RhdHVzOwogIAogIG15IEBtZW1iZXJfbGlzdDsKICBt
eSBAc2F2ZV9tZW1iZXJzOwogIG15IEByZW1vdmVfbWVtYmVyczsKICBteSBAc3Vic2NyaXB0aW9u
c0dyYW50VG9fbGlzdDsKICBteSBAc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0OwogIG15IEB3YXJu
aW5nX2xpc3Q7CiAgbXkgJWNoZ2F0dHJzOwogIG15IEByZWZhdHRyczsKICBteSBAYXR0cnM7CiAg
bXkgJXNlZW5fbGlzdDsKICBteSBAYXR0cl9saXN0OwogIG15IEBncm91cF9saXN0OwogIG15ICRn
cm91cF9zdGF0dXM7CiAgCiAgJGVycmZsYWcgPSAwOyAjIG5vIGVycm9ycyB5ZXQKICAkZXJydGV4
dE1zZyA9ICIiOwogICRyZWN1cl9sZXZlbCsrOwogICZEZWJ1Z01zZygyLCAifCIpOwogICZEZWJ1
Z01zZygyLCAifCIpOwogICZEZWJ1Z01zZygyLCAiKy0tUHJvY2Vzc2luZyAkZ3JvdXBfbmFtZSIp
OwogIAogIGlmICgkZGVidWcgPj0gMCkgewogICAgUHJpbnRNZXNzYWdlKCJQcm9jZXNzaW5nICRn
cm91cF9uYW1lIik7IAogICAgcHJpbnQgIjwhLS0gUHJvY2Vzc2luZyAkZ3JvdXBfbmFtZSBhdCAi
LHNjYWxhcihnbXRpbWUodGltZSkpLCJHTVQgLS0+XG4iOwogIH0KICAkZXJydGV4dD0iR2V0dGlu
ZyBzdGF0dXMiOwogICgkcnRuLCAkc3RhdHVzKSA9IGdldEFkbWluVGV4dCgkbGRhcCwgJGdyb3Vw
X25hbWUsICRncm91cGJhc2VkbiwgJ3N0YXR1czonKTsKICBpZiAoICRydG4gbmUgIiIpIAogICAg
eyAmd2FybigkcnRuKTsgfQogICZEZWJ1Z01zZyg0LCJzdGF0dXM9ICRzdGF0dXMiKTsKCiAgaWYg
KGluZGV4KGxjKCRzdGF0dXMpLCBsYygnSW5hY3RpdmUnKSkgPj0gMCkKICAgIHsgJGdyb3VwX3N0
YXR1cyA9ICJJbmFjdGl2ZSI7IH0KICBlbHNlCiAgICB7ICRncm91cF9zdGF0dXMgPSAiQWN0aXZl
IjsgfQoKICAmRGVidWdNc2coNCwiZ3JvdXBzdGF0dXM9ICRncm91cF9zdGF0dXMiKTsKCiAgaWYg
KCRncm91cF9zdGF0dXMgZXEgJ0luYWN0aXZlJykKICAgIHsKICAgICZEZWJ1Z01zZyg0LCJTa2lw
cGluZyBpbmFjdGl2ZSBncm91cCIpOwogICAgcmV0dXJuOwogICAgfQoKICAoJHJ0biwgJHN0YXR1
cykgPSBnZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4sICdzdGF0
dXM6Jyk7CiAgaWYgKCAkcnRuIG5lICIiKSAKICAgIHsgJndhcm4oJHJ0bik7IH0KICAmRGVidWdN
c2coNCwic3RhdHVzPSAkc3RhdHVzIik7CgogIGlmICgkc3RhdHVzID1+IC90byBiZSByZW5hbWVk
LykKICAgIHsKICAgICRvbGROYW1lPSRzdGF0dXM7CiAgICAkb2xkTmFtZSA9fiBzL3RvIGJlIHJl
bmFtZWQ6IC8vOwogICAgJkRlYnVnTXNnKDQsIm9sZE5hbWU9ICRvbGROYW1lIik7CiAgICAkYXR0
cj0nc3Vic2NyaXB0aW9uc2dyYW50byc7CiAgICAmcmVuYW1lR3JvdXBSZWZzKCRsZGFwLCAkb2xk
TmFtZSwgJGN1ckdyb3VwLCAkYXR0cik7CiAgICAkYXR0cj0nc3Vic2NyaXB0aW9uc2Rlbnl0byc7
CiAgICAmcmVuYW1lR3JvdXBSZWZzKCRsZGFwLCAkb2xkTmFtZSwgJGN1ckdyb3VwLCAkYXR0cik7
CiAgICAmRGVidWdNc2coNCwiZ3JvdXA6IGNuPSRjdXJHcm91cCB3YXMgcmVuYW1lZCwgd2FzICRv
bGROYW1lIik7CiAgICB9CgogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKICAjIyMgSGVyZSBzdGFydCB0aGUgZ3JvdXAgcHJvY2Vzc2luZwogICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIHNl
dCBncm91cCBzdGF0dXMgc2luY2Ugd2UgYXJlIHdvcmtpbmcgb24gaXQuCiAgaWYgKCAkYW5hbHl6
ZSAhPSAxKQogICAgewogICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1l
LCAKICAgICAgJGdyb3VwYmFzZWRuLCAic3RhdHVzOiIsICJCZWluZyBQcm9jZXNzZWQiKTsKICAg
IH0KIAogIGlmICggJHJ0biBuZSAiIikgCiAgICB7ICZ3YXJuKCRydG4pOyB9CgogICMgZmlyc3Qg
Y2hlY2sgaWYgdGhlIGdyb3VwIG5lZWRzIGV4cGlyYXRpb24gZG9uZQogICRlcnJ0ZXh0PSJHZXR0
aW5nIGxhc3Rtb2RpZmllZG9uIjsKICAkYXR0cj0nbGFzdG1vZGlmaWVkb24nOwogICRmaWx0ZXI9
IiRncm91cF9uYW1lIjsKICAoJHJ0biwgJGxhc3Rtb2RpZmllZG9uKSA9ICZnZXRBdHRyT25lKCRs
ZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICBpZiAoICRydG4gbmUgIiIpIAog
ICAgeyAmd2FybigkcnRuKTsgfQogICZEZWJ1Z01zZyg0LCJsYXN0bW9kaWZpZWRvbj0gJGxhc3Rt
b2RpZmllZG9uIik7CgogICRlcnJ0ZXh0PSdHZXR0aW5nIGdyb3VwIHN0YXR1cyc7CgogICgkcnRu
LCAkc3RhdHVzKSA9IGdldEFkbWluVGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsICRncm91cGJhc2Vk
biwgJ3N0YXR1czonKTsKICBpZiAoICRydG4gbmUgIiIpIAogICAgeyAmd2FybigkcnRuKTsgfQog
ICZEZWJ1Z01zZyg0LCJzdGF0dXM9ICRzdGF0dXMiKTsKCiAgaWYgKGluZGV4KGxjKCRzdGF0dXMp
LCBsYygnSW5hY3RpdmUnKSkgPj0gMCkKICAgIHsgJGdyb3VwX3N0YXR1cyA9ICJJbmFjdGl2ZSI7
IH0KICBlbHNlCiAgICB7ICRncm91cF9zdGF0dXMgPSAiQWN0aXZlIjsgfQoKICAmRGVidWdNc2co
NCwiZ3JvdXBzdGF0dXM9ICRncm91cF9zdGF0dXMiKTsKCiAgJHRlbXAgPSAmRGF0ZV9DbXAoJGxh
c3Rtb2RpZmllZG9uLCAkZXhwaXJlX2RhdGUpOwogIGlmICgoJHRlbXAgPD0gMCkgYW5kIAogICAg
ICAoJGxhc3Rtb2RpZmllZG9uIG5lICcnKSBhbmQKICAgICAgKCRncm91cF9zdGF0dXMgbmUgJ0lu
YWN0aXZlJykgYW5kCiAgICAgICgkZ3JvdXBfZXhwaXJlICE9IDApKQogICAgewogICAgIyBncm91
cCBuZWVkcyB0byBiZSBleHBpcmVkCiAgICAjIGlmIGV4cG5vdGlmeSBub3Qgc2VudCwgc2VuZCBp
dAoKICAgICRlcnJ0ZXh0PSJHZXR0aW5nIGV4cG5vdGlmeSI7CiAgICAoJHJ0biwgJGV4cG5vdGlm
eSkgPSAKICAgICAgZ2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3VwYmFzZWRu
LCAnZXhwbm90aWZ5OicpOwogICAgJkRlYnVnTXNnKDQsImV4cG5vdGlmeT0gJGV4cG5vdGlmeSIp
OwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgZWxzZQog
ICAgICB7CiAgICAgIGlmICgkZXhwbm90aWZ5IGVxICcnKQogICAgICAgIHsKICAgICAgICBpZiAo
ICRhbmFseXplID09IDEpCiAgICAgICAgICB7IAogICAgICAgICAgcHJpbnQgIkdyb3VwICRncm91
cF9uYW1lIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBmb3IgZXhwaXJhdGlvbixcbiI7CiAgICAgICAg
ICBwcmludCAid2l0aCBtYWlsIHNlbnQgdG8gZ3JvdXAgYWRtaW5cbiI7CiAgICAgICAgICB9CiAg
ICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgIyBnZXQgZ3JvdXAgYWRtaW4KICAKICAg
ICAgICAgICRlcnJ0ZXh0PSJHZXR0aW5nIGFkbWluaXN0cmF0b3IiOwogICAgICAgICAgJGF0dHI9
J3Byb3h5JzsKICAgICAgICAgICRmaWx0ZXI9IiRncm91cF9uYW1lIjsKICAgICAgICAgICgkcnRu
LCAkZ3JvdXBfYWRtaW4pID0gJmdldEF0dHJPbmUoJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRl
ciwgJGF0dHIpOwogICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgeyAmd2Fy
bigkcnRuKTsgfQogICAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwX2FkbWluPSAkZ3JvdXBfYWRt
aW4iKTsKICAgICAgICAgIGlmICggJGdyb3VwX2FkbWluIGVxICcnKQogICAgICAgICAgICB7ICZ3
YXJuKCJubyBncm91cCBhZG1pbiBmb3IgJGdyb3VwX25hbWUiKTsgfQogICAgICAgICAgZWxzZQog
ICAgICAgICAgICB7IAogICAgICAgICAgICAjIGhhdmUgY24sIGZpbHRlciBpdCBhbmQgZ2V0IG1h
aWxhZGRyCiAgICAgICAgICAgICRncm91cF9hZG1pbiA9fiBzL14gKmNuICo9ICovL2k7CiAgICAg
ICAgICAgICRncm91cF9hZG1pbiA9fiBzLywuKiQvLzsKICAgICAgICAKICAgICAgICAgICAgJGVy
cnRleHQ9IkdldHRpbmcgbWFpbCI7CiAgICAgICAgICAgICRhdHRyPSdtYWlsJzsKICAgICAgICAg
ICAgJGZpbHRlcj0iY249JGdyb3VwX2FkbWluIjsKICAgICAgICAgICAgcHJpbnQgImZpbHRlcj0n
JGZpbHRlciciOwogICAgICAgICAgICAoJHJ0biwgJGdyb3VwX21haWwpID0gCiAgICAgICAgICAg
ICAgJmdldEF0dHJPbmUoJGxkYXAsICRwZW9wbGViYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAg
ICAgICAgICAgJkRlYnVnTXNnKDQsImdyb3VwX21haWw9ICRncm91cF9tYWlsIik7CiAgICAgICAg
ICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgeyAjaGF2ZSB1c2VyLCBzZW5kIHRoZSBtYWlsCiAg
ICAgICAgICAgICAgcHJpbnQgIlNlbmRpbmcgZXhwaXJlIHdhcm5pbmcgdG8gJGdyb3VwX21haWxc
biI7CiAgICAgICAgICAgICAgJkRlYnVnTXNnKDQsInNlbmRpbmcgbWFpbDoiIC4KICAgICAgICAg
ICAgICAgICJtYWlsIC1zIFwiR3JvdXAgJGdyb3VwX25hbWVcIiAkZ3JvdXBfbWFpbCA8IiAuIAog
ICAgICAgICAgICAgICAgIiAkc3JjZGlyL21haWwubXNnIik7CiAgICAgICAgICAgICAgb3BlbiAo
TUFJTE1TRywgIj4kdG1wZGlyLyQkLm1zZzIiKSBvcgogICAgICAgICAgICAgICAgZGllICJ1bmFi
bGUgdG8gb3BlbiBtYWlsIG1lc3NhZ2UgZmlsZSI7CiAgCiAgICAgICAgICAgICAgcHJpbnQgTUFJ
TE1TRyAiRGVhciBHcm91cCBBZG1pbmlzdHJhdG9yLFxuXG4iOwogICAgICAgICAgICAgIHByaW50
IE1BSUxNU0cgIllvdSBhcmUgdGhlIGFkbWluaXN0cmF0b3IgZm9yIHRoZSBncm91cFxuIjsKICAg
ICAgICAgICAgICBwcmludCBNQUlMTVNHICIgJGdyb3VwX25hbWVcbiI7CiAgICAgICAgICAgICAg
cHJpbnQgTUFJTE1TRyAiYW5kIGFzIGl0IGhhcyBub3QgYmVlbiB1cGRhdGVkIHJlY2VudGx5LCAi
IC4KICAgICAgICAgICAgICAgICJ0aGUgZ3JvdXAgd2lsbCBiZSBzZXQgdG9cbiI7CiAgICAgICAg
ICAgICAgcHJpbnQgTUFJTE1TRyAiaW5hY3RpdmUgb24gJGV4cGlyZV9kYXRlMi4gICIgLgogICAg
ICAgICAgICAgICAgIlRoaXMgd2lsbCBtZWFuIHRoYXQgdGhlIGdyb3VwIGhhcyBubyBtZW1iZXJz
LCBzb1xuIjsKICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICJpdCBjYW4gbm90IGxvbmdlciB0
byB1c2VkIHRvIGFjY2VzcyAiIC4KICAgICAgICAgICAgICAgICJjb250cm9scywgZXRjLlxuXG4i
OwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIllvdSBjYW4gdXBkYXRlIHRoZSBncm91cCB2
aWE6XG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIiAgaHR0cDovL2RlYnVzc3kuaG91
c3Rvbi5vbW5lcy5zbGIuY29tLyIgLgogICAgICAgICAgICAgICAgImxkYXAvbGRhcDMvZ3JwaW5k
ZXguY2dpXG5cbiI7CiAgICAgICAgICAgICAgcHJpbnQgTUFJTE1TRyAiWW91IHdpbGwgYmUgcmVt
aW5kZWQgYWJvdXQgdGhpcyBpZiB0aGUgZ3JvdXAgIiAuCiAgICAgICAgICAgICAgICAiaXMgc3Vz
cGVuZGVkLlxuXG4iOwogICAgICAgICAgICAgIHByaW50IE1BSUxNU0cgIlNpbmNlcmVseVxuIjsK
ICAgICAgICAgICAgICBwcmludCBNQUlMTVNHICJMREFQIEFkbWluaXN0cmF0b3JcbiI7ICAgICAg
ICAKICAgICAgICAgICAgICBjbG9zZSBNQUlMTVNHOwogICAgICAgICAgICAgICNzeXN0ZW0oIm1h
aWwgLXMgXCJEaXJlY3RvcnkgR3JvdXAgJGdyb3VwX25hbWUgIiAuCiAgICAgICAgICAgICAgIyAg
IndpbGwgYmUgc3VzcGVuZGVkIG9uICRleHBpcmVfZGF0ZTJcIiAkZ3JvdXBfbWFpbCIgLgogICAg
ICAgICAgICAgICMgICIgPCAkdG1wZGlyLyQkLm1zZzIiKTsKICAgICAgICAgICAgICBzeXN0ZW0o
ImVjaG8gXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIC4KICAgICAgICAgICAgICAgICItLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIiA+PiRsb2dkaXIvbWFpbCIpOwogICAg
ICAgICAgICAgIHN5c3RlbSgiZWNobyBcIlN1YmplY3Q6IERpcmVjdG9yeSBncm91cCAkZ3JvdXBf
bmFtZSAiIC4KICAgICAgICAgICAgICAgICJ3aWxsIGJlIHN1c3BlbmRlZCBvbiAkZXhwaXJlX2Rh
dGUyXCIgPj4kbG9nZGlyL21haWwiKTsKICAgICAgICAgICAgICBzeXN0ZW0oImVjaG8gXCJUbzog
ICAgICAkZ3JvdXBfbWFpbFwiID4+JGxvZ2Rpci9tYWlsIik7CiAgICAgICAgICAgICAgc3lzdGVt
KCJlY2hvIFwiICAgICAgICAgICAgICAgICAgICBcIiA+PiRsb2dkaXIvbWFpbCIpOwogICAgICAg
ICAgICAgIHN5c3RlbSgiY2F0IDwgJHRtcGRpci8kJC5tc2cyID4+ICRsb2dkaXIvbWFpbCIpOwog
ICAgICAgICAgCiAgICAgICAgICAgICAgaWYgKCRrZWVwdGVtcCA9PSAwKQogICAgICAgICAgICAg
ICAgeyB1bmxpbmsgIiR0bXBkaXIvJCQubXNnMiI7fQogICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAKICAgICAgICAgICAg
ICAkZ3JvdXBiYXNlZG4sICJleHBub3RpZnk6IiwgIk1haWwgU2VudCAiIC4gJnNsYlRpbWUzKTsK
ICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgICB7
ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgICAgIGlmICggJGVycmZsYWcgPT0gMCkKICAgICAgICAg
ICAgICB7IAogICAgICAgICAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBf
bmFtZSwgJGdyb3VwYmFzZWRuLCAKICAgICAgICAgICAgICAgICJzdGF0dXM6IiwgIk9LIik7IAog
ICAgICAgICAgIAogICAgICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAg
ICB7ICZ3YXJuKCRydG4pOyB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgeyAKICAgICAgICAgICAgICAkcnRuID0gJnNldEFkbWluVGV4dCgkbGRhcCwgJGdy
b3VwX25hbWUsICRncm91cGJhc2VkbiwgInN0YXR1czoiLCAKICAgICAgICAgICAgICAgICJFUlJP
UiAiIC4KICAgICAgICAgICAgICAgICRlcnJ0ZXh0TXNnKTsKICAgICAgICAgICAKICAgICAgICAg
ICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgICAgICAgeyAmd2FybigkcnRuKTsgfQog
ICAgICAgICAgCiAgICAgICAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgICAgICAg
IHsgJndhcm4oJHJ0bik7IH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAg
IH0KICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgIyBlbHNlIGNoZWNrIGlm
IG9uZSB3ZWVrIHBhc3QgbWFpbCBzZW50IAogICAgICAgICMgYW5kIHNldCBncm91cCB0byBpbmFj
dGl2ZSBpZiBzby4KICAgICAgICBpZiAobGVuZ3RoKCRleHBub3RpZnkpIDwgMTUpCiAgICAgICAg
ICB7ICZ3YXJuKCJCYWQgZXhwaXJhdGlvbiB0aW1lc3RhbXA6ICRleHBub3RpZnkiKTsgfQogICAg
ICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICRleHBpcmVfZGF0ZTI9c3Vic3RyKCRleHBu
b3RpZnksIDExKTsKICAgICAgICAgIGlmICgkZGVidWcgPiAwKQogICAgICAgICAgICB7IHByaW50
ICJleHBpcmVfZGF0ZTI9JGV4cGlyZV9kYXRlMiI7IH0KICAgICAgICAgIAogICAgICAgICAgJGV4
cGlyZV9kYXRlMiA9ICZEYXRlQ2FsYygidG9kYXkiLCAiLSIgLiAkZ3JvdXBfZXhwaXJlIC4gCiAg
ICAgICAgICAgICIgZGF5cyIsIFwkZXJyKTsKICAgICAgICAgICR0ZW1wID0gJkRhdGVfQ21wKCRs
YXN0bW9kaWZpZWRvbiwgJGV4cGlyZV9kYXRlMik7CiAgICAgICAgICBpZiAoJGRlYnVnID4gMCkK
ICAgICAgICAgICAgeyBwcmludCAiZXhwaXJlX2RhdGUyPSRleHBpcmVfZGF0ZTIiOyB9CiAgICAg
ICAgICBpZiAoJHRlbXAgPD0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICBpZiAoJGFuYWx5
emUgPT0gMSkKICAgICAgICAgICAgICB7IHByaW50ICJHcm91cCAkZ3JvdXBfbmFtZSBuZWVkcyB0
byBiZSBleHBpcmVkXG4iOyB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9uYW1lLCAKICAgICAg
ICAgICAgICAgICRncm91cGJhc2VkbiwgInN0YXR1czoiLCAiSW5hY3RpdmUiKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICAgICAgICB7ICZ3
YXJuKCRydG4pOyB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICZEZWJ1Z01zZyg0LCIqKioq
IGdyb3VwIGV4cGlyZWQgKioqIik7CiAgICAgICAgICAgICAgcHJpbnQgIkdyb3VwICRncm91cF9u
YW1lIGV4cGlyZWRcbiI7CgogICAgICAgICAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFw
LCRncm91cF9uYW1lLCAkZ3JvdXBiYXNlZG4sIAogICAgICAgICAgICAgICAgImV4cGFuZGVkOiIs
ICRkYXRlKTsKICAgICAgICAKICAgICAgICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAg
ICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgICAgfQogICAgICAgIH0gIAogICAgICB9CiAgICB9CiAgZWxzZQogICAgeyAmRGVidWdN
c2coNCwgIioqKiogZ3JvdXAgbm90IGV4cGlyaW5nICoqKiIpOyAKICAgICMjIyMjIyMjIyMgcHJv
Y2VzcyBtZW1iZXJzIGhlcmUKICAgICMgbm93IHNhdmUgdGhlIHVuaXF1ZW1lbWJlciBsaXN0IGZv
ciBsYXRlcgogICAgJGVycnRleHQ9J0dldHRpbmcgTWVtYmVyIExpc3QnOwogICAgJGF0dHI9J3Vu
aXF1ZW1lbWJlcic7CiAgICAkZmlsdGVyPSIkZ3JvdXBfbmFtZSI7CiAgICAkc2F2ZV9tZW1iZXJz
PSgpOwogICAgKCRydG4sICRhdHRyWCkgPSAmZ2V0QXR0cigkbGRhcCwgJGdyb3VwYmFzZWRuLCAk
ZmlsdGVyLCAkYXR0cik7CiAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICB7ICZ3YXJuKCRydG4p
OyB9CiAgCiAgICBAc2F2ZV9tZW1iZXJzPUAkYXR0clg7CiAgICBAc2F2ZV9tZW1iZXJzPXNvcnQo
QHNhdmVfbWVtYmVycyk7CiAgCiAgICBpZiAoJHNob3cgPiAwKQogICAgICB7CiAgICAgIGRpc3BB
cnJheSgiT3JpZ2luYWwgbWVtYmVyIGxpc3QgZm9yIGdyb3VwICckZ3JvdXBfbmFtZSciLCBAc2F2
ZV9tZW1iZXJzKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgIFByaW50TWVzc2FnZSgg
IiAgIiAuIHNjYWxhcihAc2F2ZV9tZW1iZXJzKSAuICIgbWVtYmVycyIgLgogICAgICAgICIgZm9y
IE9yaWdpbmFsIExpc3QiKTsgCiAgICAgIH0KICAgIAogICAgIwogICAgIyBHZXQgdGhlIHF1ZXJ5
IHN0cmluZwogICAgIwogICAgCiAgICAmRGVidWdNc2cgKDMsICJHZXR0aW5nIHRoZSBxdWVyeSBz
dHJpbmcgZm9yICckZ3JvdXBfbmFtZSciKTsKICAgICRlcnJ0ZXh0PSJHZXR0aW5nIHF1ZXJ5IHN0
cmluZyI7CiAgICAkYXR0cj0nc3Vic2NyaXB0aW9ucyc7CiAgICAkZmlsdGVyPSIkZ3JvdXBfbmFt
ZSI7ICAjIGFscmVhZHkgaGFzIGNuPQogICAgJHF1ZXJ5X3N0cmluZyA9ICIiOwogICAgJHJ0biA9
ICcnOwogICAgKCRydG4sICRxdWVyeV9zdHJpbmcpID0gJmdldEF0dHJPbmUoJGxkYXAsICRncm91
cGJhc2VkbiwgJGZpbHRlciwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAK
ICAgICAgJndhcm4oJHJ0bik7IAogICAgICB9CiAgICBAbWVtYmVyX2xpc3QgPSAoKTsKICAKICAg
IGlmICgkcXVlcnlfc3RyaW5nIG5lICIiKSAjdGhlcmUgaXMgYSBxdWVyeSBzdHJpbmcgdG8gcHJv
Y2VzcwogICAgICB7ICAgICAgICAgICAgICAgICAgICNzbyBnZXQgdGhlIG1lbWJlcnMgKGRucykK
ICAgICAgJkRlYnVnTXNnICgzLCAiUXVlcnkgc3RyaW5nIGlzOiA8JHF1ZXJ5X3N0cmluZz4iKTsK
ICAgIAogICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiAgICAgICMgI3F1ZXJ5X2xkYXAgd2l0aCB0aGUgcXVlcnkgc3RyaW5n
LCBwdXQgcmVzdWx0IGluIGFycmF5CiAgCiAgICAgIEBhdHRycyA9IAogICAgICAgICgKICAgICAg
ICAiY24iLAogICAgICAgICk7CiAgICAgIAogICAgICBpZiAoaW5kZXgoJHF1ZXJ5X3N0cmluZywg
IigiKSA8IDAgKQogICAgICAgIHsgJGZpbHRlcj0iKCRxdWVyeV9zdHJpbmcpIjsgfQogICAgICBl
bHNlCiAgICAgICAgeyAkZmlsdGVyPSIkcXVlcnlfc3RyaW5nIjsgfQogIAogICAgICAkZXJydGV4
dD0iUHJvY2Vzc2luZyBxdWVyeSBzdHJpbmcgJyRxdWVyeV9zdHJpbmcnIjsKICAgICAgJkRlYnVn
TXNnKDQsIlF1ZXJ5aW5nIHVzZXJzIHZpYSBxdWVyeSBzdHJpbmcgJyRxdWVyeV9zdHJpbmcnIik7
CiAgICAgIG15ICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmQxKSA9IAogICAgICAgICZkb0xEQVBT
ZWFyY2goJGxkYXAsICRwZW9wbGViYXNlZG4sICRmaWx0ZXIsIFxAYXR0cnMpOwogIAogICAgICBp
ZiAoJHJ0biBuZSAnJykKICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgCiAgICAgICZEZWJ1Z01z
Zyg0LCJRdWVyeWluZyBkb25lIik7CiAgICAgICVyZWNvcmQgPSAlJHJlY29yZDE7CiAgICAgIGlm
ICgkbmVudHJpZXMgPT0gMCkgCiAgICAgICAgeyAmRGVidWdNc2coMywgIk5vIG1lbWJlcnMgZm91
bmQiKTsgfQogIAogICAgICBmb3JlYWNoICRkbiAoc29ydCBrZXlzICVyZWNvcmQpIAogICAgICAg
IHsgCiAgICAgICAgY2hvbXAoJGRuKTsKICAgICAgICAkZG4gPX4gcy9eICpjbiAqPSAqLy9pOyAg
ICAjIHJlbW92ZSBjbj0gZnJvbSBkbiAodWlkIG9rIHRvbykgCiAgICAgICAgIyAkZG4gPX4gcy8s
LiokLy87ICAgICAgICAgICMgcmVtb3ZlIGFsbCBidXQgY24gZnJvbSBkbiAodWlkIG9rIHRvbykK
ICAgICAgICAkZG4gPX4gcy8sLltPb10qJC8vOwogICAgICAgICRkbiA9ICZDbGVhblN0cmluZygk
ZG4pOwogICAgICAgIHB1c2ggQG1lbWJlcl9saXN0LCAkZG47IAogICAgICAgIH0KICAKICAgICAg
JGNvdW50ID0gc2NhbGFyKEBtZW1iZXJfbGlzdCk7CiAgICAgICZEZWJ1Z01zZygzLCAiRm91bmQg
JGNvdW50IHJlY29yZChzKSB3aXRoIHRoZSBxdWVyeSBzdHJpbmciKTsKICAgIAogICAgICAjIyMj
IEdyb3VwIGhhcyBiZWVuIGV4cGFuZGVkIDFzdCBwaGFzZQogICAgICAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgIyBO
b3cgcXVlcnkgc2FtZSByZWNvcmQgYW5kIGdldCBsaXN0IG9mIGFsbG93ZWQgcGVvcGxlIG9yIGdy
b3VwCiAgICAgICMgZm9yIGVhY2ggb2JqZWN0OiBpZiBwZXJzb24gdGhlbiBhZGQgdG8gbWVtYmVy
bGlzdCwgCiAgICAgICMgaWYgaXQgaXMgYSBncm91cCBjYWxsIHJlY3Vyc2l2ZWx5IHRoaXMgcHJv
Y2VkdXJlLgogICAgCiAgICAgIH0gCiAgICBlbHNlIAogICAgICB7ICZEZWJ1Z01zZygzLCAiTm8g
cXVlcnkgc3RyaW5nIGZvdW5kIik7IH0KICAKICAgIGlmICgkZGVidWcgPiAwKQogICAgICB7ICZk
aXNwQXJyYXkoIk1lbWJlciBMaXN0IEFmdGVyIFF1ZXJ5IFN0cmluZyIsIEBtZW1iZXJfbGlzdCk7
IH0KICAgIGVsc2UKICAgICAgeyAKICAgICAgUHJpbnRNZXNzYWdlKCIgICIgLiBzY2FsYXIoQG1l
bWJlcl9saXN0KSAuICIgbWVtYmVycyAiIC4KICAgICAgICAiYWZ0ZXIgUXVlcnkgU3RyaW5nIHBy
b2Nlc3NlZCIpOwogICAgICB9CiAgCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogICAgIyBub3cgZ2V0IHRoZSBncmFudHRvIGxpc3QgYW5kIGFkZCBpdCBpbgog
ICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICZEZWJ1Z01z
ZygzLCAiUXVlcnlpbmcgTERBUCB0byBnZXQgdGhlIHN1YnNjcmlwdGlvbnNHcmFudFRvICIgLgog
ICAgICAicGFydCBmb3IgJyRncm91cF9uYW1lJyIpOwogICAgJGVycnRleHQ9IkdldHRpbmcgR3Jh
bnQgTGlzdCI7CiAgICAkZmlsdGVyPSIkZ3JvdXBfbmFtZSI7ICAjIGFscmVhZHkgaGFzIGNuPQog
ICAgJGF0dHI9InN1YnNjcmlwdGlvbnNncmFudHRvIjsKICAgICgkcnRuLCAkYXR0clgpID1nZXRB
dHRyKCRsZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAgIGlmICggJHJ0biBu
ZSAiIikgCiAgICAgIHsgCiAgICAgICZ3YXJuKCRydG4pOyAKICAgICAgfQogICAgQGF0dHJfbGlz
dD1AJGF0dHJYOwogICAgaWYgKCQjYXR0cl9saXN0ID49IDApICN0aGVyZSBpcyBhIGdyYW50IHRv
IHBhcnQgdG8gcHJvY2VzcwogICAgICB7CiAgICAgIEBzdWJzY3JpcHRpb25zR3JhbnRUb19saXN0
ID0gQGF0dHJfbGlzdDsKICAgICAgJkRlYnVnTXNnICg0LCAiJyRncm91cF9uYW1lJyBzdWJzY3Jp
cHRpb25zR3JhbnRUbyBsaXN0IGlzOiIpOwogICAgICBmb3IgKCRpPTA7ICRpPD0kI3N1YnNjcmlw
dGlvbnNHcmFudFRvX2xpc3Q7ICRpKyspCiAgICAgICAgeyAmRGVidWdNc2cgKDQsICIgICIgLiAk
c3Vic2NyaXB0aW9uc0dyYW50VG9fbGlzdFskaV0pOyB9CiAgICAgICRjb3VudCA9ICQjc3Vic2Ny
aXB0aW9uc0dyYW50VG9fbGlzdCsxOwogICAgICAmRGVidWdNc2cgKDMsICJGb3VuZCAkY291bnQg
cmVjb3JkcyB0byBncmFudCIgLgogICAgICAgICJQcm9jZXNzaW5nIHN1YnNjcmlwdGlvbnNHcmFu
dFRvIHBhcnQiKTsgCiAgICAgIGZvcmVhY2ggJHAgKEBzdWJzY3JpcHRpb25zR3JhbnRUb19saXN0
KQogICAgICAgIHsKICAgICAgICBpZiAoKCRwICF+IC9eY249L2kpICYmCiAgICAgICAgICAgICgk
cCAhfiAvICosICpvdT1tZyAqLCAqbz1ncm91cC9pKQogICAgICAgICAgICkgewogICAgICAgICAg
I25lZWQgdG8gZ2V0IGNuIGZyb20gdWlkCiAgICAgICAgICBjaG9tcCgkcCk7CiAgICAgICAgICAk
cD0mQ2xlYW5TdHJpbmcoJHApOwogICAgICAgICAgKCRydG4sJHAsJGJ1ZmYpPSZnZXRDbkZyb21V
aWQoJHApOwogICAgICAgICAgaWYgKCRydG4gbmUgJycpIHsKCSAgICAmd2FybigkcnRuKTsgCgkg
IH0KICAgICAgICAgIGlmICgkcCBlcSAnJykgewoJICAgICRwID0gJGJ1ZmY7IAoJICB9Cgl9CiAg
ICAgICAgJHAgPX4gcy9eICpjbiAqPSAqLy9pOyAgICAjIHJlbW92ZSBjbj0gZnJvbSBkbiAodWlk
IG9rIHRvbykgCiAgICAgICAgIyAkcCA9fiBzLywuKiQvLzsgICAgICAgICAgIyByZW1vdmUgYWxs
IGJ1dCBjbiBmcm9tIGRuICh1aWQgb2sgdG9vKSAKICAgICAgICAkcCA9fiBzLywuW09vXT0qJC8v
OwogICAgICAgICRwID0gJkNsZWFuU3RyaW5nICgkcCk7CiAgICAgICAgaWYgKGxjKCRwKSA9fiAv
LCAqb3U9Z3JvdXAgKiwvKQogICAgICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDQsICIjIyMj
IGZvdW5kIGdyb3VwICckcCcgISEhISIpOwoJICBpZiAoImNuPSRwIiAhfiAvJGdyb3VwX25hbWUv
aSkgeyAjIEdyb3VwIG5vdCBjdXJyZW50IEdyb3VwCgkgICAgJHJ0bj0mZ2V0R3JvdXBNZW1iZXJz
KCJjbj0kcCIsIDApOwoJICAgIGlmICgkcnRuIG5lICcnKSB7CgkgICAgICAmd2FybigkcnRuKTsg
CgkgICAgfSBlbHNlIHsKCSAgICAgIHB1c2ggQG1lbWJlcl9saXN0LCBAbWVtYmVyTGlzdDsKCSAg
ICB9OwoJICB9CiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAg
IyMjIHdlIGFkZCB0aGUgb2JqZWN0IHRvIHRoZSBtZW1iZXIgbGlzdAogICAgICAgICAgcHVzaCBA
bWVtYmVyX2xpc3QsICRwCiAgICAgICAgICB9CiAgICAgICAgfSAjZW5kIGZvcmVhY2gKICAgICAg
fSAKICAgIGVsc2UgCiAgICAgIHsgJkRlYnVnTXNnKDMsICJObyBHcmFudCB0byBsaXN0IGZvdW5k
IikgOyB9CiAgICAKICAgIGlmICggJGRlYnVnID4gMCkKICAgICAgeyBkaXNwQXJyYXkoIk1lbWJl
ciBMaXN0IGFmdGVyIEdyYW50IHRvIiwgQG1lbWJlcl9saXN0KTsgfQogICAgZWxzZQogICAgICB7
IAogICAgICBQcmludE1lc3NhZ2UoIiAgIiAuIHNjYWxhcihAbWVtYmVyX2xpc3QpIC4gIiBtZW1i
ZXJzICIgLgogICAgICAgICJhZnRlciBHcmFudCBUbyBwcm9jZXNzZWQiKTsKICAgICAgfQogIAog
ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwogICAgIyBEbyB0aGUgc2FtZSB3aXRoIGRlbnkgZ3JvdXAgIyBhZGQgZGVu
aWVkIG1lbWJlciB0byBhIHNlcGFyYXRlIGZpbGUKICAgICMKICAgICZEZWJ1Z01zZygzLCAiUXVl
cnlpbmcgTERBUCB0byBnZXQgdGhlIHN1YnNjcmlwdGlvbnNEZW55VG8gcGFydCIpOwogICAgJGVy
cnRleHQ9IkdldHRpbmcgRGVueSBMaXN0IjsKICAgICRmaWx0ZXI9JGdyb3VwX25hbWU7CiAgICAk
YXR0cj0nc3Vic2NyaXB0aW9uc2Rlbnl0byc7CiAgICBAbWVtYmVyTGlzdCA9ICgpOwogICAgCiAg
ICAoJHJ0biwgJGF0dHJYKSA9IGdldEF0dHIoJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwg
JGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgeyAKICAgICAgJndhcm4oJHJ0bik7
IAogICAgICB9CiAgICBAYXR0cl9saXN0PUAkYXR0clg7CiAgCiAgICBpZiAoJCNhdHRyX2xpc3Qg
Pj0gMCkgI3RoZXJlIGlzIGEgc3Vic2NyaXB0aW9uc0RlbnlUbyBwYXJ0IHRvIHByb2Nlc3MKICAg
ICAgewogICAgICBAc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0ID0gQGF0dHJfbGlzdDsKICAgICAg
JGNvdW50ID0gJCNzdWJzY3JpcHRpb25zRGVueVRvX2xpc3Q7CiAgICAgICZEZWJ1Z01zZyAoNCwg
IickZ3JvdXBfbmFtZScgc3Vic2NyaXB0aW9uc0RlbnlUbyBsaXN0IGlzOiIpOwogICAgICBmb3Ig
KCRpPTA7ICRpPD0kI3N1YnNjcmlwdGlvbnNEZW55VG9fbGlzdDsgJGkrKykKICAgICAgICB7ICZE
ZWJ1Z01zZyAoNCwgIiAgIiAuICRzdWJzY3JpcHRpb25zRGVueVRvX2xpc3RbJGldKTsgfQogICAg
ICAmRGVidWdNc2coMywgIkZvdW5kICRjb3VudCByZWNvcmQocykgdG8gZGVueSIpOwogICAgICAm
RGVidWdNc2cgKDMsICJQcm9jZXNzaW5nIHN1YnNjcmlwdGlvbnNEZW55VG8gYW5kIGV2ZW50dWFs
bHkgIiAuCiAgICAgICAgImNhbGwgcmVjdXJzaXZlbHkgdGhpcyBmdW5jdGlvbiIpOwogICAgICBm
b3JlYWNoICRwIChAc3Vic2NyaXB0aW9uc0RlbnlUb19saXN0KQogICAgICAgIHsKICAgICAgICAm
RGVidWdNc2cgKDQsICJzdWJzY3JpcHRpb25zRGVueVRvICRpOiAkcCIpOwogICAgICAgICRwID0g
JkNsZWFuU3RyaW5nICgkcCk7CiAgICAgICAgaWYgKGxjKCRwKSA9fiAvLCAqb3U9Z3JvdXAgKiwv
KQogICAgICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDQsIiMjIyMgZm91bmQgZ3JvdXAgJyRw
JyAhISEhIik7CgkgIGlmICgiY249JHAiICF+IC8kZ3JvdXBfbmFtZS9pKSB7ICMgR3JvdXAgbm90
IGN1cnJlbnQgR3JvdXAKCSAgICAkcnRuPSZnZXRHcm91cE1lbWJlcnMoImNuPSRwIiwgMCk7CiAg
ICAgICAgICAgICRlcnJ0ZXh0PSJQcm9jZXNzaW5nIERlbnkgTGlzdCI7CiAgICAgICAgICAgICRy
dG49JmdldEdyb3VwTWVtYmVycygkcCwgMCk7CiAgICAgICAgICAgIGlmICgkcnRuIG5lICcnKSB7
CgkgICAgICAmd2FybigkcnRuKTsgCgkgICAgfSBlbHNlIHsKCSAgICAgIHB1c2ggQHJlbW92ZV9s
aXN0LCBAbWVtYmVyTGlzdDsKCSAgICB9OwoJICB9CiAgICAgICAgICB9CiAgICAgICAgZWxzZQog
ICAgICAgICAgewogICAgICAgICAgIyMjIHdlIGFkZCB0aGUgb2JqZWN0IHRvIHRoZSByZW1vdmFs
IGxpc3QKICAgICAgICAgIHB1c2ggQHJlbW92ZV9saXN0LCAkcDsKICAgICAgICAgIH0KICAgICAg
ICB9ICNlbmQgZm9yZWFjaAogICAgICBpZiAoJCNtZW1iZXJMaXN0ID49MCkKICAgICAgICB7IHB1
c2ggQHJlbW92ZV9saXN0LCBAbWVtYmVyTGlzdDsgfQogICAgICAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgIyMjIE5vdyB0
aGF0IHdlIGhhdmUgdGhlIGZ1bGwgZGVueSB0byBsaXN0IHdlIHByb2Nlc3MgaXQKICAgICAgIyMj
IHdlIHN1YnRyYWN0IGZyb20gdGhlIG1lbWJlcmxpc3QKICAgICAgIyMjIGFsc28gd2Ugc2NhbiB0
aGUgbGlzdCB0aWxsIHRoZSBlbmQKICAgICAgIyMjIGluIGNhc2UgdGhlcmUgYXJlIHNldmVyYWwg
aW5zdGFuY2VzIG9mIHRoZSB1aWQgdG8gZGVueQogICAgICAjIyMKICAgICAgJkRlYnVnTXNnKDQs
ICItLUJlZm9yZSByZW1vdmFsIE1lbWJlcmxpc3QgaXM6XG5AbWVtYmVyX2xpc3QiKSA7CiAgICAg
ICZEZWJ1Z01zZyg0LCAiLS1BbmQgUmVtb3ZhbCBsaXN0IGlzOlxuQHJlbW92ZV9saXN0Iik7CiAg
ICAgICZEZWJ1Z01zZyg0LCAiU3Vic3RyYWN0aW5nIGRlbnkiKTsKICAgICAgbXkgKCR4ZG4sICR4
bmIpOwogICAgICBmb3JlYWNoICRwIChAcmVtb3ZlX2xpc3QpCiAgICAgICAgewogICAgICAgIG15
IEBuZXdfbWVtYmVyX2xpc3Q7CiAgICAgICAgJkRlYnVnTXNnKDUsICItLT5EZW55aW5nICRwIik7
IAogICAgICAgICRrPTA7CiAgICAgICAgZm9yZWFjaCAkbGluZSAoQG1lbWJlcl9saXN0KQogICAg
ICAgICAgewogICAgICAgICAgJkRlYnVnTXNnKDQsICJjaGVja2luZyAkbGluZSIpOwogICAgICAg
ICAgJGsrKzsKICAgICAgICAgIGlmICgkbGluZSA9fiAkcCApICNpZiB0aGUgZG4gY29udGFpbnMg
dGhlIHVzZXIgdGhlbgogICAgICAgICAgICB7CiAgICAgICAgICAgICZEZWJ1Z01zZyg0LCAiJGs6
IFdPTidUIHB1c2ggJGxpbmUgPSAkcCIpOwogICAgICAgICAgICAjRGVidWdNc2coNCwgIiRrOiBS
ZW1vdmluZyAkeGRuIHNpbmNlIGl0IGlzIGluICRsaW5lIik7CiAgICAgICAgICAgICNEZWJ1Z01z
Zyg1LCAiQmVmb3JlIHJlbW92YWwgTWVtYmVybGlzdCBpcyBcbjpAbWVtYmVyX2xpc3QiKSA7CiAg
ICAgICAgICAgICNzcGxpY2UgKEBtZW1iZXJfbGlzdCwgJGstMSwgMSk7CiAgICAgICAgICAgICNE
ZWJ1Z01zZyg1LCAiQWZ0ZXIgcmVtb3ZhbCBNZW1iZXJsaXN0IGlzIFxuOkBtZW1iZXJfbGlzdCIp
IDsKICAgICAgICAgICAgIyRrLS07CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgCiAgICAg
ICAgICAgIHsKICAgICAgICAgICAgRGVidWdNc2coNCwgIiRrOiBwdXNoaW5nIHRvIG1lbWJlciBs
aXN0ICIgLgogICAgICAgICAgICAgICIkbGluZSBzaW5jZSBub3QgaW4gJHAiKTsKICAgICAgICAg
ICAgcHVzaCAoQG5ld19tZW1iZXJfbGlzdCwgJGxpbmUpOwogICAgICAgICAgICB9CiAgICAgICAg
ICB9CiAgICAgICAgQG1lbWJlcl9saXN0ID0gQG5ld19tZW1iZXJfbGlzdDsKICAgICAgICB9ICNl
bmQgZm9yZWFjaAogICAgICAKICAgICAgI2VuZCBpZgogICAgICB9IAogICAgZWxzZSAKICAgICAg
eyBEZWJ1Z01zZygzLCAiTm8gRGVueSB0byBsaXN0IGZvdW5kIikgOyB9CiAgICAKICAgIEBtZW1i
ZXJfbGlzdCA9IHNvcnQoQG1lbWJlcl9saXN0KTsgICAgICAjc29ydCBhcnJheSBhbHBoYSBvcmRl
cgogICAgaWYgKCRkZWJ1ZyA+IDApCiAgICAgIHsgZGlzcEFycmF5KCJNZW1iZXIgTGlzdCBhZnRl
ciBEZW55IiwgQG1lbWJlcl9saXN0KTsgfQogICAgZWxzZQogICAgICB7IAogICAgICBQcmludE1l
c3NhZ2UoIiAgIiAuIHNjYWxhcihAbWVtYmVyX2xpc3QpIC4gIiBtZW1iZXJzICIgLgogICAgICAg
ICJhZnRlciBEZW55IFRvIHByb2Nlc3NlZCIpOyAKICAgICAgfQogICAgICAKICAgICMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIHZlcmlmeSB0
aGF0IGVhY2ggbWVtYmVyIGlzIGluIGRhdGFiYXNlCiAgICAjIG9yIHB1dCBpbiB3YXJuaW5nIGxp
c3QKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAgICBAYXR0cnMgPSAKICAgICAgKAogICAgICAiY24iLAogICAgICApOwogICAgCiAgICBmb3Ig
KCRqPTA7ICRqPD0kI21lbWJlcl9saXN0OyAkaisrKSB7CiAgICAgICNzZWFyY2ggZm9yIGNuIGlu
IHBlb3BsZQogICAgICAkdGhpc2NuICA9ICRtZW1iZXJfbGlzdFskal07CiAgICAgICR0aGlzY24g
ID1+IHMvXiAqZG4gKj0gKjogKi8vOwogICAgICAkdGhpc2NuICA9fiBzLywuKiQvLzsKICAgICAg
JGVycnRleHQgPSAiUHJvY2Vzc2luZyBtZW1iZXIgbGlzdCI7CiAgICAgICRmaWx0ZXIgID0gIihj
bj0kdGhpc2NuKSI7CiAgICAgIAogICAgICAmRGVidWdNc2coNCwiWyRqOl0gUXVlcnlpbmcgcGVv
cGxlIGZvciBjbiAnJHRoaXNjbiciKTsKICAgICAgbXkgKCRydG4sICRuZW50cmllcywgJHJlY29y
ZDEpID0gCgkgICZkb0xEQVBTZWFyY2goJGxkYXAsICRwZW9wbGViYXNlZG4sICRmaWx0ZXIsIFxA
YXR0cnMpOwogICAgICAKICAgICAgaWYgKCRydG4gbmUgJycpIHsKCSZ3YXJuKCRydG4pOyAKICAg
ICAgfQogICAgICAKICAgICAgJkRlYnVnTXNnKDQsIlF1ZXJ5aW5nIGRvbmUiKTsKICAgICAgaWYg
KCRuZW50cmllcyA9PSAwKSB7IAogICAgICAgICZEZWJ1Z01zZyg1LCAiJHRoaXNjbiBub3QgZm91
bmQgaW4gcGVvcGxlIik7CiAgICAgICAgJHRoaXNjbiAuPSAiIG5vdCBmb3VuZCI7CiAgICAgICAg
cHVzaCBAd2FybmluZ19saXN0LCAkdGhpc2NuOwoJJG1lbWJlcl9saXN0WyRqXT1xe307CiAgICAg
IH0gZWxzZSB7IAoJJkRlYnVnTXNnKDUsICIkdGhpc2NuIGZvdW5kIGluIHBlb3BsZSIpOyAKICAg
ICAgfQogICAgfQogIAogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KICAgICMgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCBtYWtlIGZ1bGwg
ZG4gYWdhaW4KICAgICMgdW5sZXNzIGl0cyBhIGJhZCB1aWQhCiAgICAjLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgJXNlZW5fbGlzdD0oKTsKICAg
IEBtZW1iZXJfbGlzdD0gc29ydChncmVwIHshICRzZWVuX2xpc3R7JF99KysgfSBAbWVtYmVyX2xp
c3QpIDsKICAgICMgQG1lbWJlcl9saXN0IG1heSBoYXZlIGEgYmxhbmsgZW50cnksIGlmIGEgRE4g
ZG9lcyBub3QgZXhpc3QKICAgIHVubGVzcyAoJG1lbWJlcl9saXN0WzBdKSB7CiAgICAgIHNoaWZ0
IEBtZW1iZXJfbGlzdDsKICAgIH0KICAgIGZvcmVhY2ggKEBtZW1iZXJfbGlzdCkgewogICAgICAk
XyA9fiBzL14vY249L287ICMgUHJlZml4IGVhY2ggRE4gd2l0aCBjbj0gYXMgcmVtb3ZlZCBlYXJs
aWVyCiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ICAgICMgIHVwZGF0ZSBMREFQIHdpdGggdGhlIG5ldyBtZW1iZXIgIGZpbGUKICAKICAgIGlmICgk
c2hvdyA+IDApCiAgICAgIHtkaXNwQXJyYXkoIk5ldyBtZW1iZXIgbGlzdCBmb3IgZ3JvdXAgJyRn
cm91cF9uYW1lJyIsIEBtZW1iZXJfbGlzdCk7fQogICAgZWxzZQogICAgICB7CiAgICAgIFByaW50
TWVzc2FnZSgiICAiIC4gc2NhbGFyKEBtZW1iZXJfbGlzdCkgLiAiIG1lbWJlcnMgIiAuCiAgICAg
ICAgImZvciBuZXcgbWVtYmVyIGxpc3QiKTsgCiAgICAgIH0KICAgIFByaW50TWVzc2FnZSgiICBD
b21wYXJpbmcgb2xkIGFuZCBuZXcgbWVtYmVyIGxpc3RzIik7CiAgCiAgICAkZGVsdGEgPSAwOwog
ICAgaWYgKCQjbWVtYmVyX2xpc3QgPCAwKSAKICAgICAgewogICAgICBpZiAoJCNzYXZlX21lbWJl
cnMgPCAwKQogICAgICAgIHsgCiAgICAgICAgJGRlbHRhID0gMDsKICAgICAgICB9CiAgICAgIGVs
c2UKICAgICAgICB7IAogICAgICAgIFByaW50TWVzc2FnZSgiICBVcGRhdGUgbmVlZGVkICgxKSIp
OyAKICAgICAgICAkZGVsdGEgPSAxOwogICAgICAgIH0KICAgICAgfQogICAgZWxzaWYgKCQjbWVt
YmVyX2xpc3QgPT0gJCNzYXZlX21lbWJlcnMpCiAgICAgIHsKICAgICAgZm9yICgkaT0wOyAkaTw9
JCNtZW1iZXJfbGlzdDsgJGkrKykKICAgICAgICB7CiAgICAgICAgaWYgKCRtZW1iZXJfbGlzdFsk
aV0gbmUgJHNhdmVfbWVtYmVyc1skaV0pCiAgICAgICAgICB7CiAgICAgICAgICBQcmludE1lc3Nh
Z2UoIiAgRGlmZmVyZW5jZSBmb3VuZCBhdCAkaToiKTsKICAgICAgICAgIFByaW50TWVzc2FnZSgi
ICAgIE9sZD0kc2F2ZV9tZW1iZXJzWyRpXSIpOwogICAgICAgICAgUHJpbnRNZXNzYWdlKCIgICAg
TmV3PSRtZW1iZXJfbGlzdFskaV0iKTsKICAgICAgICAgICRkZWx0YT0xOwogICAgICAgICAgUHJp
bnRNZXNzYWdlKCIgIFVwZGF0ZSBuZWVkZWQgKDMpIik7CiAgICAgICAgICBsYXN0OwogICAgICAg
ICAgfQogICAgICAgIH0KICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgIFByaW50TWVzc2Fn
ZSgiICBVcGRhdGUgbmVlZGVkICgyKSIpOwogICAgICAkZGVsdGEgPSAxOwogICAgICB9CiAgCiAg
ICBpZiAoJGRlbHRhID09IDApCiAgICAgIHsgUHJpbnRNZXNzYWdlKCIgIE9sZCBhbmQgbmV3IGxp
c3RzIGFyZSB0aGUgc2FtZSwgc2tpcHBpbmcgdXBkYXRlIik7IH0KICAgIGVsc2UKICAgICAgewog
ICAgICBpZiAoICRhbmFseXplID09IDEpCiAgICAgICAgeyAKICAgICAgICBwcmludCAiICBMaXN0
cyBkaWZmZXIgYnV0IHdpbGwgbm90IGJlIGNoYW5nZWQgc2luY2Ugd2UgYXJlICIgLgogICAgICAg
ICAgImluIGFuYWx5emUgbW9kZVxuIjsgCiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewog
ICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyAgdXBkYXRlIExEQVAKICAg
ICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAKICAgICAgICBwdXNoIEByZWZhdHRy
cywgJ2NuJzsKICAgICAgICBwdXNoIEByZWZhdHRycywgJ3VuaXF1ZW1lbWJlcic7CiAgICAgIAog
ICAgICAgICRmaWVsZG5hbWU9J3VuaXF1ZW1lbWJlcic7CiAgICAgICAgcHVzaCBAeyRjaGdhdHRy
c3skZmllbGRuYW1lfX0sQG1lbWJlcl9saXN0OwogICAgICAgIERlYnVnTXNnKDMsICJncm91cD0k
Z3JvdXBfbmFtZSwgYXR0cj0kZmllbGRuYW1lLCB2YWx1ZXM9IiAuIEBtZW1iZXJfbGlzdCk7CiAg
ICAgIAogICAgICAgIERlYnVnTXNnKDMsICJyZWZhdHRycz1AcmVmYXR0cnMiKTsKICAgICAgICBm
b3JlYWNoICRhdHRyIChrZXlzICVjaGdhdHRycykKICAgICAgICAgIHsgRGVidWdNc2coMywgImNo
Z2F0dHJzeyRhdHRyfT0kY2hnYXR0cnN7JGF0dHJ9Iik7IH0KICAgICAgICBEZWJ1Z01zZygzLCAi
U2V0dGluZyBncm91cCAnJGdyb3VwX25hbWUnIHdpdGggYXR0cmlidXRlICIgLgogICAgICAgICAg
IickZmllbGRuYW1lJyB0byB2YWx1ZXMiIC4gQG1lbWJlcl9saXN0KTsKICAgICAgCiAgICAgICAg
JGZpbHRlcj0kZ3JvdXBfbmFtZTsKICAgICAgICBEZWJ1Z01zZyAoMywgIlVwZGF0aW5nIExEQVAg
Zm9yIDwkZ3JvdXBfbmFtZT4iKTsKICAgICAgICAKICAgICAgICAkZXJydGV4dD0iVXBkYXRpbmcg
TWVtYmVyIExpc3QiOwogICAgICAgIHByaW50ICJncm91cGJhc2Vkbj0kZ3JvdXBiYXNlZG4sIGZp
bHRlcj0kZmlsdGVyXG4iIGlmICgkc2hvdyA+MCk7CiAgICAgICAgJHJ0bj0iIjsgCiAgICAgICAg
JHJ0biA9ICZkb0xEQVBNb2RzKCRncm91cGJhc2VkbiwgJGZpbHRlciwgXEByZWZhdHRycywgXCVj
aGdhdHRycyk7CiAgICAgICAgCiAgICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICAgIHsg
Jndhcm4oJHJ0bik7IH0KICAgICAgICBlbHNlCiAgICAgICAgICB7IERlYnVnTXNnKDEsICJHcm91
cCAkZ3JvdXBfbmFtZSB1cGRhdGVkLiIpOyB9CiAgICAgIAogICAgICAgIH0KICAgICAgfSAKICAg
IGlmICggJGFuYWx5emUgIT0gMSkKICAgICAgewogICAgICAjYWx3YXlzIHVwZGF0ZSB0aGUgYWRt
aW50ZXh0IHZhbHVlcyAodW5sZXNzIGV4cGlyZWQpCiAgICAgICMKICAgICAgIyAgdXBkYXRlIExE
QVAgd2l0aCB0aGUgbmV3IHdhcm5pbmcgbGlzdCAKICAgICAgIwogICAgICAkbmJfd2FybiA9ICQj
d2FybmluZ19saXN0OwogICAgICAkbmJfd2FybisrOwogICAgICAkY291bnQgPSAwOwogICAgICBp
ZiAoJHdhcm5pbmdfbGlzdFswXSBlcSAiIikgCiAgICAgICAgeyBwdXNoIEB3YXJuaW5nX2xpc3Qs
ICJObyBXYXJuaW5nIjsgfQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgIEB3YXJuaW5nX2xp
c3Q9IHNvcnQgQHdhcm5pbmdfbGlzdDsKICAgICAgICBmb3IgKCRpPTA7ICRpPD0kI3dhcm5pbmdf
bGlzdDsgJGkrKykKICAgICAgICAgIHsKICAgICAgICAgICZEZWJ1Z01zZygzLCAid2FybmluZzog
IiAuICR3YXJuaW5nX2xpc3RbJGldKTsKICAgICAgICAgICRjb3VudCsrOwogICAgICAgICAgfQog
ICAgICAgIHVuc2hpZnQgQHdhcm5pbmdfbGlzdCwgInRoZSBcIkdyYW50IHRvXCIvXCJBREQgdWlk
XCIgIiAuCiAgICAgICAgICAiZmllbGQgY29udGFpbnMgJG5iX3dhcm4gdWlkKHMpIHdoaWNoIGRv
KGVzKSd0IGV4aXN0IjsKICAgICAgICB9CiAgICAgICZEZWJ1Z01zZygzLCAiICoqKiB3YXJuaW5n
X2xpc3QgKCQjd2FybmluZ19saXN0KSAqKioiKTsKICAgICAgZm9yICgkaT0wOyAkaTw9JCN3YXJu
aW5nX2xpc3Q7ICRpKyspCiAgICAgICAgeyAmRGVidWdNc2coMywgIndhcm5pbmdfbGlzdFskaV09
JyR3YXJuaW5nX2xpc3RbJGldJyIpOyB9CiAgICAgICMKICAgICAgIyAgdXBkYXRlIExEQVAKICAg
ICAgIyAgCiAgICAgIAogICAgICAkcnRuID0gJnNldEFkbWluVGV4dDIoJGxkYXAsICRncm91cF9u
YW1lLCAKICAgICAgICAkZ3JvdXBiYXNlZG4sICJ3YXJuaW5nOiIsIEB3YXJuaW5nX2xpc3QpOwog
ICAgIAogICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgIHsgJndhcm4oJHJ0bik7IH0KICAg
ICAgZWxzZSAKICAgICAgICB7IERlYnVnTXNnKDEsICJHcm91cCAkZ3JvdXBfbmFtZSB1cGRhdGVk
LiIpOyB9CiAgICAgIAogICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgZW5kCiAgICAgICAgCiAg
ICAgICRjb3VudCA9IHNjYWxhcihAbWVtYmVyX2xpc3QpOwogICAgICAkcnRuID0gJnNldEFkbWlu
VGV4dCgkbGRhcCwgJGdyb3VwX25hbWUsIAogICAgICAgICRncm91cGJhc2VkbiwgImluZm9ybWF0
aW9uOiIsIAogICAgICAgICJUaGlzIGdyb3VwIGNvbnRhaW5zICRjb3VudCBtZW1iZXIocykiKTsK
ICAgICAgaWYgKCAkcnRuIG5lICIiKSAKICAgICAgICB7ICZ3YXJuKCRydG4pOyB9CiAgICAKICAg
ICAgJHRpbWVTdGFtcD1nbXRpbWUodGltZSk7CiAgICAgIGNob21wICR0aW1lU3RhbXA7CiAgICAg
ICR0aW1lU3RhbXA9fnMvLiogLy87CiAgICAgICRkYXRlPXNsYlRpbWUzKCR0aW1lU3RhbXApOwog
ICAgCiAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFtZSwgJGdyb3Vw
YmFzZWRuLCAiZXhwYW5kZWQ6IiwgJGRhdGUpOwogICAgCiAgICAgIGlmICggJHJ0biBuZSAiIikg
CiAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgCiAgICAgIGlmICggJGVycmZsYWcgPT0gMCkK
ICAgICAgICB7IAogICAgICAgICRydG4gPSAmc2V0QWRtaW5UZXh0KCRsZGFwLCAkZ3JvdXBfbmFt
ZSwgJGdyb3VwYmFzZWRuLCAic3RhdHVzOiIsICJPSyIpOyAKICAgICAKICAgICAgICBpZiAoICRy
dG4gbmUgIiIpIAogICAgICAgICAgeyAmd2FybigkcnRuKTsgfQogICAgICAgIH0KICAgICAgZWxz
ZQogICAgICAgIHsgCiAgICAgICAgJHJ0biA9ICZzZXRBZG1pblRleHQoJGxkYXAsICRncm91cF9u
YW1lLCAkZ3JvdXBiYXNlZG4sICJzdGF0dXM6IiwgIkVSUk9SICIgLgogICAgICAgICAgJGVycnRl
eHRNc2cpOwogICAgIAogICAgICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgICAgICB7ICZ3YXJu
KCRydG4pOyB9CiAgICAKICAgICAgICBpZiAoICRydG4gbmUgIiIpIAogICAgICAgICAgeyAmd2Fy
bigkcnRuKTsgfQogICAgICAgIH0KICAgICAgRGVidWdNc2cgKDMsICJMREFQIHVwZGF0ZSBkb25l
Iik7CiAgICAgIGlmICgkZGVsdGEgPT0gMSkKICAgICAgICB7IERlYnVnTXNnICgyLCIkZ3JvdXBf
bmFtZSBoYXMgZmluYWxseSAkY291bnQgbWVtYmVycyBzYXZlZCBpbiBMREFQIik7IH0KICAgICAg
fQogICAgfQogICRyZWN1cl9sZXZlbC0tOwogIHJldHVybjsKICB9CgojLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGlzX2Ff
Z3JvdXAKIyAgIEFyZzogbmFtZSBvZiB0aGUgZ3JvdXAKIyAgIFJldHVybnM6IDEgaWYgYSBncm91
cCwgMCBpZiBub3QKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgaXNfYV9ncm91cCgpCiAgeyAKCiAgbXkoJG5hbWUpID0g
QF87ICAKICBteSAkcmVzPSIiOwoKICBEZWJ1Z01zZyg1LCAnIyMjIyMgaXNfYV9ncm91cCcpOyAK
ICBEZWJ1Z01zZyg0LCJpc19hX2dyb3VwIHRlc3Rpbmc6ICRuYW1lIik7CiAgKCRydG4sICRyZXMp
ID0gJmdldEFkbWluVGV4dCgkbGRhcCwgImNuPSRuYW1lIiwgJGdyb3VwYmFzZWRuLCAiZGlydHk6
Iik7CiAgaWYgKCAkcnRuIG5lICIiKSAKICAgIHsgCiAgICAmd2FybigkcnRuKTsgCiAgICB9CiAg
aWYgKCRyZXMgZXEgIiIpCiAgICB7CiAgICBEZWJ1Z01zZyg0LCIkbmFtZSBpcyBhIG5vdCBncm91
cCEhIik7CiAgICByZXR1cm4gMDsKICAgIH0gCiAgZWxzZSAKICAgIHsKICAgIERlYnVnTXNnKDQs
IiRuYW1lIGlzIGEgZ3JvdXAgYW5kIHRoZSAnJGF0dHInIGlzICRyZXMhISIpOwogICAgcmV0dXJu
IDE7CiAgICB9CiAgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj
CiMgU2V0RmllbGQoZ3JvdXBfdG9fdXBkYXRlIChjbiksIGZpZWxkbmFtZSwgIHZhbHVlKSkKIwoj
CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFNldEZpZWxkKCkK
ICB7CiAgbXkgKCRncm91cF9uYW1lLCAkZmllbGRuYW1lLCAkdmFsdWUpID0gQF87CiAgbXkgJGNt
ZDsKCiAgbXkgJHJ0bjsKCiAgRGVidWdNc2coNSwgJyMjIyMjIFNldEZpZWxkJyk7IAogIERlYnVn
TXNnKDMsICJTZXR0aW5nIGdyb3VwICckZ3JvdXBfbmFtZScgd2l0aCBhdHRyaWJ1dGUgIiAuCiAg
ICAiJyRmaWVsZG5hbWUnIHRvICckdmFsdWUnIik7CgogICRmaWx0ZXI9JGdyb3VwX25hbWU7CiAg
CiAgcHJpbnQgImdyb3VwYmFzZWRuPSRncm91cGJhc2VkbiwgZmlsdGVyPSRmaWx0ZXJcbiIgaWYg
KCRzaG93ID4wKTsKICAmcHV0QXR0ck9uZSgkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsICRmaWVsZG5h
bWUsICR2YWx1ZSk7CiAgCiAgRGVidWdNc2coMSwgIkdyb3VwICRncm91cF9uYW1lIHVwZGF0ZWQu
Iik7IAogIH0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg
Z2V0X29wdGlvbgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQoKc3ViIGdldF9vcHRpb24gCiAgewogIG15ICRyZXN1bHQ7CiAgI3ByaW50ICJhcmcgY291bnQ9
JCNBUkdWXG4iOwogICZ1c2FnZSgibWlzc2luZyBhcmd1bWVudCBmb3IgJF9bMF0iKSBpZiAoJCNB
UkdWPT0tMSkgOwogICRyZXN1bHQgPSAkQVJHVlswXTsKICBzaGlmdCBAQVJHVjsgICAKICByZXR1
cm4gJHJlc3VsdDsKICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIyB1c2FnZTogcHJpbnQgb3V0IHVzYWdlIGluc3RydWN0aW9ucwojLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiB1c2FnZSAKICB7CiAgbXkgJG1l
c3MgPSBAXzsKCiAgcHJpbnQgImdycHRlcjogJG1lc3NcblxuIjsKCiAgcHJpbnQgPDwiX0VPRl8i
Owp1c2FnZTogIGdycHRlciBbLW9wdGlvbnMgLi4uXSAKCndoZXJlIG9wdGlvbnMgaW5jbHVkZToK
ICAgIC1kZWJ1ZyAgICBkZWJ1Z2xldmVsICAgICAgMSB0byA1ICgxPXNtYWxsIGFtb3VudCwgNT1v
dSBsYSBsYSEgICAgICAgCiAgICAtd3d3ICAgICAgaHRtbCBvdXRwdXQgICAgIHNldCB0aGUgb3V0
cG91dCB0ZXh0IGZvcm1hdCB0byBodG1sIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0IGlzICJcbiIgCiAgICAtZ3JvdXAgICAgZ3JvdXBfbmFtZSAoY24pIGVudGVy
IG9uZSBncm91cCBuYW1lIChjbiksIHByb2Nlc3MgYWxsIGdyb3VwcyBieSBkZWZhdWx0CiAgICAt
bG9nICAgICAgICAgICAgICAgICAgICAgIE91dHB1dCBnb2VzIHRvIHRoZSBsb2cgZmlsZSAoZ29v
ZCBmb3IgY3JvbikgICAgICAgICAgICAgIAogICAgLWxpc3Rncm91cCAgICAgICAgICAgICAgICBs
aXN0IGFsbCBncm91cHMgaW4gdGhlIGRpcmVjdG9yeS4KICAgIC1rZWVwdGVtcCAgICAgICAgICAg
ICAgICAgZG8gbm90IGVyYXNlIHRlbXBvcmFyeSBmaWxlcwogICAgLXVwZGF0ZSAgICAgICAgICAg
ICAgICAgICBleHBhbmQgb25seSBncm91cHMgd2l0aCBzdGF0dXMgJ3RvIGJlIHByb2Nlc3NlZCcK
ICAgIC16ICAgICAgICAgICAgICAgICAgICAgICAgcnVuIGdycHRlci5wbCBldmVuIGlmIHRoZSBs
b2NrIGZpbGUgZXhpc3RzCgpBbGwgb3B0aW9ucyBjYW4gYmUgYWJicmV2aWF0ZWQgdXAgdG8gb25l
IGxldHRlci4KCkV4YW1wbGVzOgpVcGRhdGUgdGhlIGdyb3VwICdBdXN0aW4gZW1wbG95ZWVzJyB3
aXRoIHNtYWxsIGFtb3VudCBvZiBvdXRwdXQKLi9ncnB0ZXIucGwgLWdyb3VwICdBdXN0aW4gZW1w
bG95ZWVzJyAtZGVidWcgMgoKU2FtZSBidXQgd2l0aCBodG1sIG91dHB1dCAKLi9ncnB0ZXIucGwg
LWdyb3VwICdBdXN0aW4gZW1wbG95ZWVzJyAtZGVidWcgMyAtd3d3CgpEbyBhbGwgZ3JvdXBzIHdp
dGggYSBsb3Qgb2Ygb3V0cHV0IGluZm9ybWF0aW9uCi4vZ3JvdXBlci5wbCAtZGVidWcgNAoKCl9F
T0ZfCgogICZSZW1vdmVMb2NrRmlsZTsKICBpZiAoJGh0bWwgPT0gMSkKICAgIHsgcHJpbnQgIjwv
Qk9EWT48L0hUTUw+XG4iOyB9CiAgZXhpdCA3OwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNldEZvbnRjb2xvcgojLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBTZXRGb250Q29sb3IK
ICB7CiAgbXkgKCRjb2xvcikgPSBAXzsKICBpZiAgICAoJGNvbG9yIGVxICJyZWQiKQogICAgeyRm
b250Y29sb3I9IiNGRDAyMDUiO30KICBlbHNpZiAoJGNvbG9yIGVxICJibHVlIikKICAgIHsgJGZv
bnRjb2xvcj0iIzMzMzNGRiI7fQogIGVsc2lmICgkY29sb3IgZXEgImJsYWNrIikKICAgIHskZm9u
dGNvbG9yPSIjMzMwMDMzIjt9OwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQojIGNhdGNoX3NpZ25hbHM6CiMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIGNhdGNoX3NpZ25hbHMgCiAgewog
ICRTSUd7J0lOVCd9ID0gJ1NJR05BTF9DTEVBTlVQJzsKICAkU0lHeydIVVAnfSA9ICdTSUdOQUxf
Q0xFQU5VUCc7CiAgJFNJR3snUVVJVCd9ID0gJ1NJR05BTF9DTEVBTlVQJzsKIyAgJFNJR3snUElQ
RSd9ID0gJ1NJR05BTF9DTEVBTlVQJzsKICAkU0lHeydBTFJNJ30gPSAnU0lHTkFMX0NMRUFOVVAn
OwogICRTSUd7J19fRElFX18nfSA9ICdTSUdOQUxfQ0xFQU5VUCc7ICAgIyMjX19XQVJOX18gaXMg
YWxzbyBhdmFpbGFibGUKICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIyBhYm9ydDogZGlzcGxheSBtZXNzYWdlIGFuZCBxdWl0CiMgQXJnczog
IG1lc3NhZ2UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCgpzdWIgYWJvcnQKICB7CiAgbXkgJG1zZz0kX1swXTsKCiAgcHJpbnQgJG1zZyAuICJcbiI7
CgogICZTSUdOQUxfQ0xFQU5VUDsKICB9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyB3YXJuOiBkaXNwbGF5IG1lc3NhZ2UgYnV0IGNvbnRpbnVl
IAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1
YiB3YXJuCiAgewogIG15ICRtc2c9JF9bMF07CgogIHByaW50ICJXQVJOSU5HOiAiIC4gJG1zZyAu
ICIgKCRlcnJ0ZXh0KVxuIjsKICAkZXJydGV4dE1zZyA9ICRlcnJ0ZXh0OwogICZzZW5kRW1haWwo
IEBfICk7CiAgJGVycmZsYWcgPSAxOwogIH0KCgwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBzZW5kRW1haWw6CiMgIGdpdmVzIG1lc3NhZ2UgdG8g
YW4gYWRtaW4KIyBhcmc6CiMgIG1lc3NhZ2UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIHNlbmRFbWFpbCB7CiAgbXkgJHVzZXJOYW1lID0gIiI7
CiAgbXkgJHVzZXJNYWlsID0gIiI7CiAgbXkgJGk7CiAgbXkgJHNjcmlwdDsKCiAgbXkgJG1zZyA9
IGpvaW4ocXF7ICBcbn0sQF8pOwoKICAkdGltZVN0YW1wPWdtdGltZSh0aW1lKTsKICBjaG9tcCAk
dGltZVN0YW1wOwogICR0aW1lU3RhbXA9fnMvLiogLy87CiAgJGRhdGU9c2xiVGltZTMoJHRpbWVT
dGFtcCk7CgogIGlmICgkX1swXSA9fiAvVW5hYmxlIHRvIGdldCBMREFQIENvbm5lY3Rpb258Q2Fu
J3QgY29udGFjdCBMREFQIHNlcnZlci8pIHsKICAgIGxvZ01zZzIoIklORjogTm8gZW1haWwgc2Vu
dCBhcyBMREFQIHNlcnZlciBjb25uZWN0aW9uIGZhaWxlZCIuJG1zZyk7ICAKICB9IGVsc2Ugewog
ICAgaWYgKCRjdXJBZG1pbiBuZSAiIikgewogICAgICAkdXNlck5hbWUgPSAkY3VyQWRtaW47IAog
ICAgfSAgZWxzaWYgKCRjdXJMZGFwQWRtaW4gbmUgIiIpIHsKICAgICAgJHVzZXJOYW1lID0gJGN1
ckxkYXBBZG1pbk1haWw7IAogICAgfSBlbHNlIHsKICAgICAgJHVzZXJOYW1lID0gJmRlZkxkYXBB
ZG1pbjsgCiAgICB9CgogICAgaWYgKCR1c2VyTmFtZSBuZSAmZGVmTGRhcEFkbWluKSB7CiAgICAg
ICMgbm93IGdldCBtYWlsIGZvciB1c2VyTmFtZQogICAgICAkdXNlck1haWw9Z2V0TWFpbCgkdXNl
ck5hbWUpOwogICAgICBpZiAoJGRlYnVnID4gMCkgewoJcHJpbnQgImdldE1haWwoJyR1c2VyTmFt
ZScpIHJldHVybmVkICckdXNlck1haWwnXG4iOyAKICAgICAgfQogICAgfSAgICAgIAoKICAgIGlm
ICgkdXNlck1haWwgZXEgJycpIHsKICAgICAgJHVzZXJNYWlsID0gJmRlZkxkYXBBZG1pbjsgCiAg
ICB9CiAgICAKICAgIGxvZ01zZzIoIklORjogU3RhcnRpbmcgdG8gbWFpbCAkdXNlck1haWxcbiRt
c2dcbiIpOwogICAgdW5sZXNzIChvcGVuKE1BSUwsICJ8IC91c3IvbGliL3NlbmRtYWlsIC1vaSAt
dCIpKSB7CiAgICAgIGRpZSBxcXsgIEZhaWxlZCB0byB0YWxrIHRvIHNlbmRtYWlsIC0tICQhXG59
OwogICAgfQogICAgCiAgICBwcmludCBNQUlMIDw8Ik1BSUwxIiwoJGN1ckdyb3VwID8gPDwiTUFJ
TDIiIDogPDwiTUFJTDMiKTsKRnJvbTogIkRpcmVjdG9yeSBHcm91cCBDb2RlIE1hbmFnZXIiIDxs
ZGFwLWFkbWluXEBzbGIuY29tPgpYLVRvOiAkdXNlck1haWwKVG86IGdyYXlcQGNhbWJyaWRnZS5v
aWxmaWVsZC5zbGIuY29tClN1YmplY3Q6IERlYnVzc3kgLS0gRGlyZWN0b3J5IGdyb3VwIGV4cGFu
c2lvbiBlcnJvcgoKTUFJTDEKVGhlIExEQVAgRGlyZWN0b3J5IGdyb3VwIG1hbmFnZW1lbnQgc3lz
dGVtIGhhcyBmYWlsZWQgdG8gZXhwYW5kIHRoZSBsaXN0Cm9mIG1lbWJlcnMgZm9yIHRoZSBncm91
cDoKICRjdXJHcm91cAphbmQgeW91IGFyZSBiZWluZyBzZW50IHRoaXMgbWVzc2FnZSBhcyB5b3Ug
YXJlCnRoZSBncm91cCBtYW5hZ2VyL3Nwb25zb3IvYWRtaW5pc3RyYXRvcgoKVGhlIGVycm9yIGlz
CiAgJG1zZwp3aGlsZQogICRlcnJ0ZXh0TXNnCgpZb3VyIGdyb3VwIG1lbWJlcnMgd2lsbCBub3Qg
aGF2ZSBiZWVuIHVwZGF0ZWQuCgpZb3Ugc2hvdWxkIGZpeCB0aGlzIGVycm9yIGJ5IHVwZGF0aW5n
IHRoZSBncm91cCwKd2hpY2ggY2FuIGJlIGRvbmUgZnJvbSB0aGUgRGlyZWN0b3J5IGdyb3VwIHBh
Z2UgYXQKIGh0dHA6Ly9kaXJlY3Rvcnkuc2xiLmNvbS9hZG1pbi9ncm91cHMvZ3JwaW5kZXguY2dp
IAoKTUFJTDIKVGhlIGNyb24gc2NyaXB0CiAgJDAKaGFzIGZhaWxlZCB0byBleHBhbmQgdGhlIGdy
b3VwIG1lbWJlcnMgYXQKICAkZGF0ZQoKRGV0YWlscyBvZiB0aGUgZXJyb3IgYXJlOgogICRtc2cK
KHVzaW5nIExEQVAgU2VydmVyICRjb25uSG9zdDokY29ublBvcnQpCgpNQUlMMwoKICAgIGNsb3Nl
IE1BSUw7CiAgICBsb2dNc2cyKCJJTkY6IENvbXBsZXRlZCBzZW5kaW5nIG1haWwgdG8gJHVzZXJN
YWlsXG4gICRtc2dcbiIpOyAgCiAgfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTSUdOQUxfQ0xFQU5VUDoKIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgU0lHTkFMX0NMRUFOVVAgCiAg
ewogCiAgIyMjIyBxdWl0IGdyYWNlZnVsbHkKICBteSAkZXJyTXNnOwogIG15ICRpOwogIAogICRl
cnJNc2c9IlVuZXhwZWN0ZWQgZXJyb3I6XG4iOwogIGlmICgkX1swXSBlcSAnQUxSTScpIHsKICAg
ICRlcnJNc2cuPSIgRXhjZWVkZWQgbWF4aW11bSB0aW1lIGZvciB0aGUgam9iICgkbWF4VGltZSBz
ZWNvbmRzKSI7CiAgfQogIAogIGZvcmVhY2ggJGkgKDAuLiQjXykgewogICAgJGVyck1zZy49IiBc
JF9bJGldPSRfWyRpXVxuIjsKICB9CiAgJGVyck1zZy49ICIgXCQhPSQhXG4gXCQ/PSQ/XG4iOwog
ICMgR2V0IGRldGFpbHMgb24gd2hlcmUgZXJyb3Igb2NjdXJyZWQKICBteSAkaW5kZW50OwogIENB
TEw6CiAgZm9yZWFjaCAkaSAoMS4uNSkgewogICAgJGluZGVudD0nICd4JGk7CiAgICBAXyA9IGNh
bGxlciAkaTsKICAgIHVubGVzcyAoJF9bMF0pIHsKICAgICAgbGFzdCBDQUxMOwogICAgfQogICAg
JGVyck1zZy49IiR7aW5kZW50fXBhY2thZ2U6ICRfWzBdXG4ke2luZGVudH1maWxlbmFtZTogJF9b
MV1cbiR7aW5kZW50fWxpbmU6ICRfWzJdXG4iOwogIH0KICBwcmludCAkZXJyTXNnOwogICRjdXJB
ZG1pbj0nJzsKICAkY3VyR3JvdXA9Jyc7CiAgc2VuZEVtYWlsKCRlcnJNc2cpOwogIHN5c3RlbSgi
cm0gLWYgJHRtcGRpci8qLiQkLnRtcCIpOyAKICBpZiAoLWUgJGxvY2tmaWxlKSAKICAgIHsKICAg
IHVubGluayAiJGxvY2tmaWxlIjsgCiAgICBwcmludCAiR3JvdXB0ZXIgd2FzIGludGVycnVwdGVk
LCBsb2NrIGZpbGUgKCRsb2NrZmlsZSkgIHJlbW92ZWQhXG4iOwogICAgfSAKICBlbHNlIAogICAg
ewogICAgcHJpbnQgIkdyb3VwdGVyIHdhcyBpbnRlcnJ1cHRlZCwgbm8gbG9jayBmaWxlICgkbG9j
a2ZpbGUpIiAuCiAgICAgICIgdG8gcmVtb3ZlIVxuIjsKICAgIH0KICBsb2dNc2cyKCJJTkY6IEVu
ZGluZ1xuIik7CiAgaWYgKCRodG1sID09IDEpCiAgICB7IHByaW50ICI8L0JPRFk+PC9IVE1MPlxu
IjsgfQogIGV4aXQgMjsKICB9CgoMCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENsZWFuU3RyaW5nOiByZW1vdmUg
aGVhZGluZyBzcGFjZXMgYW5kIHRhYnMsIAojICAgICAgICAgICAgICByZXBsYWNlIG11bHRpcGxl
IHNwYWNlcyBhbmQgdGFicyBieSBvbmUgYmV0d2VlbiB3b3JkcyAKIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIg
Q2xlYW5TdHJpbmcKICB7CiAgRGVidWdNc2coNSwgJyMjIyMjIENsZWFuU3RyaW5nJyk7IAogIG15
ICgkc3RyKSA9IEBfOwogICNwcmludCAiPGJyPiBjbGVhbmluZyBzdHI6JyRzdHInPGJyPiI7CiAg
JHN0ciA9fiBzL15ccysvLzsgICMgcmVtb3ZlIGxlYWRpbmcgd2hpdGUgY2hhcnMKICAjIyMjICRz
dHIgPX4gcy9eWyBcdF0rLy87CiAgJHN0ciA9fiBzL1xzKyQvLzsgICMgcmVtb3ZlIHRyYWlsaW5n
IHdoaXRlIGNoYXJzCiAgJHN0ciA9fiBzL1sgXHRdKy8gL2dvOyAgICAjIHJlcGxhY2UgbiB3aGl0
ZSBjaGFycyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnkgb25seSAxIGluIHRoZSBt
aWRkbGUgb2YgdGhlIHN0cmluZwogICRzdHIgPX4gcy8gKFxkezZ9KS8gICQxLzsgIyAyIHNwYWNl
cyBiZWZvcmUgSUQgaW4gRE4KICAjcHJpbnQgIiBjbGVhbmVkICBzdHI6JyRzdHInPGJyPiI7Cgog
IHJldHVybiAkc3RyOwogIH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQojIFF1ZXJ5IFN1Yjogc2V0cyB1cCBMREFQIHF1ZXJ5CiMgICBSZXR1cm5zIHJ0biwg
JG5lbnRyaWVzLCBcJXJlY29yZHMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCnN1YiBRdWVyeSAKICB7CgogIG15IEBhdHRyczsKICBteSAkZmlsdGVyOwogIG15
ICVyZWNvcmRzOwogIG15ICVyZWNvcmRYOwogIG15ICRlbnRyeTsKICBteSAkaXRlbU5vOwogIG15
ICRkbjsKICBteSAkaXRlbTsKICBteSAkYXR0cjsKICBteSAkU2NyaXB0TmFtZTsKICBteSBAdmFs
dWVzOwogIG15ICRpOwogIG15ICRuZW50cmllczsKICBteSAkcmVjb3JkWDsKICBAYXR0cnMgPSAK
ICAgICgKICAgICAiY24iLAogICAgICJwcm94eSIsCiAgICAgIm1hbmFnZXIiCiAgICApOwogIAog
IERlYnVnTXNnKDUsICcjIyMjIyBRdWVyeScpOyAKICAkZmlsdGVyID0gIiRmaWVsZF90b19zZWFy
Y2g9IjsKCiAgaWYgKCggJHNlYXJjaFZhbCBlcSAiIiApIHx8ICggJHNlYXJjaFZhbCBlcSAnKicg
KSkgCiAgICB7ICRmaWx0ZXIgLj0gIioiOyB9CiAgZWxzaWYgKCBpbmRleCgkc2VhcmNoVmFsLCc9
JykgPj0gMCApCiAgICB7ICRmaWx0ZXIgPSAkc2VhcmNoVmFsIH0KICBlbHNlCiAgICB7CiAgICBp
ZiAoIHN1YnN0cigkc2VhcmNoVmFsLDAsMSkgbmUgJyonICkKICAgICAgeyAkZmlsdGVyIC49ICcq
JzsgfQogICAgJGZpbHRlciAuPSAkc2VhcmNoVmFsOwoKICAgIGlmICggc3Vic3RyKCRzZWFyY2hW
YWwsbGVuZ3RoKCRzZWFyY2hWYWwpLTEsMSkgbmUgJyonKSAKICAgICAgeyAkZmlsdGVyIC49ICcq
JzsgfSAKICAgIH0KCiAgIyBTZWFyY2ggdmlhIGNhbGwgdG8gZG9MREFQU2VhcmNoKCkKICAjIHBh
c3MgdG8gaXQgJGdyb3VwYmFzZWRuLCAkZmlsdGVyLCBcQGF0dHJzCiAgIyBnZXQgYmFjayAkbmVu
dHJpZXMsJHJlY29yZHt9LT57fQoKICAjcHJpbnQgImdyb3VwYmFzZWRuPSRncm91cGJhc2Vkbiwg
ZmlsdGVyPSRmaWx0ZXJcbiI7CiAgKCRydG4sICRuZW50cmllcywgJHJlY29yZFgpID0gCiAgICAm
ZG9MREFQU2VhcmNoKCRsZGFwLCAkZ3JvdXBiYXNlZG4sICRmaWx0ZXIsIFxAYXR0cnMpOwoKICBp
ZiAoICRydG4gbmUgIiIpIAogICAgeyByZXR1cm4gKCRydG4sICRuZW50cmllcywgIiIgKTsgfQoK
ICAlcmVjb3Jkcz0gJSRyZWNvcmRYOwoKICBpZiAoJG5lbnRyaWVzID09IDApIAogICAgeyByZXR1
cm4gKCRydG4sICRuZW50cmllcywgIiIpOyB9IAoKICBteSAkY291bnQgPSAxOwogIHJldHVybiAo
JHJ0biwgJG5lbnRyaWVzLCBcJXJlY29yZHMpOwogIH0jIyMgZW5kIHN1YiBRdWVyeQoKIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRN
ZXNzYWdlOgojICAgRGlzcGxheSBtZXNzYWdlIHRvIHNjcmVlbiBhbmQvb3IgbG9nIGZpbGUKIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIg
UHJpbnRNZXNzYWdlIAogIHsKICBpZiAoJGxvZyA+IDAgKSAKICAgIHsgCiAgICBpZiAoaW5kZXgo
JF9bMF0sICJcbiIpIDwgMCkKICAgICAgeyBsb2dNc2cyKCJERUI6ICIgLiAkX1swXSAuICJcbiIp
OyB9CiAgICBlbHNlCiAgICAgIHsgbG9nTXNnMigiREVCOiAiIC4gJF9bMF0pOyB9CiAgICB9CiAg
aWYgKCAoJGxvZyAlIDIpICA9PSAwKQogICAgeyBwcmludCAkX1swXSAuICJcbiI7IH0KICB9Cgoj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZW1vdmVMb2NrRmlsZToK
IyAgRWxpbWluYXRlIHRoZSBsb2NrIGZpbGUKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCgpzdWIgUmVtb3ZlTG9ja0ZpbGUgCiAgewogIGlmICgtZSAkbG9ja2ZpbGUpIAog
ICAgeyB1bmxpbmsgIiRsb2NrZmlsZSI7IH0KICB9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiMgZGlzcEFycmF5OgojICBEaXNwbGF5IGFycmF5IAojLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBkaXNwQXJyYXkKICB7CiAgbXkgKCRhcnJOYW1l
LCBAYXJyVmFscyk9IEBfOwoKICBteSAkYnVmZiA9ICIkYXJyTmFtZSAiOwogIG15ICRjb3VudD0g
JCNhcnJWYWxzICsgMTsKICBteSAkaTsKCiAgaWYgKCQjYXJyVmFscyA8IDApCiAgICB7ICRidWZm
IC49ICI6XG4iO30KICBlbHNlCiAgICB7ICRidWZmIC49ICJbIiAuICRjb3VudCAuICIgbWVtYmVy
c10gOlxuIjsgfQoKICBmb3IgKCRpPTA7ICRpPD0kI2FyclZhbHM7ICRpKyspCiAgICB7ICRidWZm
IC49ICIgICRpOiAiIC4gJGFyclZhbHNbJGldIC4gIlxuIjsgfQoKICBpZiAoJCNhcnJWYWxzIDwg
MCkKICAgIHsgJGJ1ZmYgLj0gIiAgPG5vbmU+XG4iOyB9CgogIFByaW50TWVzc2FnZSgkYnVmZik7
CiAgfQoKDAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIyBnZXRHcm91cE1lbWJlcnM6CiMgICBnZXRzIG1lbWJlcnMgZm9yIGdyb3VwIHNwZWNpZmll
ZAojIGFyZ3VtZW50OiAKIyAgICBncm91cCAoRE4gb2YgZ3JvdXAgdG8gZ2V0IHVuaXF1ZW1lbWJl
cnMgZnJvbSkKIyAgICBsZXZlbCAoc3RhcnRzIHdpdGggMCkKIwojICAgICBXZWQgMzAtT2N0LTIw
MDI7IERvdWdsYXMgR3JheSBTdGVwaGVucwojICAgICAgZ3JvdXAgbGV2ZWwgc2hvdWxkIG5ldmVy
IGJlIG5vbiB6ZXJvLCBhcyB1bmlxdWVtZW1iZXIgbGlzdAojICAgICAgc2hvdWxkIG5vdCBpbmNs
dWRlIGdyb3VwIEROcwojCiMgcmV0dXJuczoKIyAgICBydG4KIyB1c2VzIGdsb2JhbCBAbWVtYmVy
TGlzdCB0byBzdG9yZSBtZW1iZXJzCiMgd2hpY2ggaGF2ZSBvbmx5IGJhc2UgcGFydCBvZiBjbiAo
cmVzdCBhZGRlZCBsYXRlcikKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0Kc3ViIGdldEdyb3VwTWVtYmVycyAgewogIG15ICgkZ3JvdXBfbmFtZSwgJGxl
dmVsKSA9IEBfOwogIG15ICRydG47CiAgbXkgQG1lbWJlcl9saXN0OwogIG15IEBncm91cF9saXN0
OwogIG15IEB0ZW1wX2xpc3Q7CiAgbXkgJGF0dHJYOwogIG15ICRpOwogIG15ICRwOwoKICBpZiAo
JGxldmVsID09IDApIHsKICAgIEBtZW1iZXJMaXN0ID0gKCk7IAogIH0gZWxzaWYgKCRsZXZlbCA+
PSAxMCkgewogICAgcmV0dXJuICgiR3JvdXAgbmVzdGluZyBsZXZlbD0kbGV2ZWwgZXhjZWVkcyBt
YXhpbXVtIiwgQG1lbWJlckxpc3QpOyAKICB9CgogICRhdHRyPSd1bmlxdWVtZW1iZXInOwogICgk
cnRuLCAkYXR0clgpID0gZ2V0QXR0cigkbGRhcCwgJGdyb3VwX25hbWUsJ29iamVjdGNsYXNzPSon
LCAkYXR0cik7CiAgaWYgKCRydG4gbmUgJycpIHsKICAgIHJldHVybiAkcnRuOyAKICB9IGVsc2Ug
ewogICAgQHRlbXBfbGlzdD1AJGF0dHJYOwogICAgZm9yICgkaT0wOyAkaTw9JCN0ZW1wX2xpc3Q7
ICRpKyspIHsKICAgICAgJHAgPSAkdGVtcF9saXN0WyRpXTsgCiAgICAgICRwID1+IHMvXmNuPS8v
OwogICAgICAkcCA9ICZDbGVhblN0cmluZyAoJHApOwogICAgICBwdXNoIEBtZW1iZXJMaXN0LCAk
cDsgCiAgICB9CiAgICByZXR1cm4gJHJ0bjsKICB9Cn0KCgwKIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyByZW5hbWVHcm91cFJlZnMKIwojIGFy
Z3M6CiMgIGxkYXAsIG9sZE5hbWUsIG5ld05hbWUsIGF0dHIKIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIHJlbmFtZUdyb3VwUmVmcwogIHsK
ICBteSAoJGxkYXAsICRvbGROYW1lLCAkbmV3TmFtZSwgJGF0dHIpID0gQF87CiAgbXkgJGF0dHJY
OwogIG15ICRmaWx0ZXI7CiAgbXkgJGRuOwogIG15ICRuZW50cmllczsKICBteSBAYXR0cnMgPSAo
J2NuJywgJ3N1YnNjcmlwdGlvbnNncmFudG8nLCAnc3Vic2NpcHRpb25zZGVueXRvJyk7CiAgbXkg
JHJlY29yZFg7CiAgbXkgJXJlY29yZHM7CiAgbXkgQHZhbHVlczsKICBteSBAZ3JvdXBMaXN0Owog
IG15IEBhZG1pbkxpc3Q7CiAgbXkgJGk7CiAgbXkgJGtleTsKICBteSAlY2hnYXR0cnM7CiAgbXkg
JHJ0bjsKICAjbXkgJG5lbnRyaWVzOwoKICAjIG5lZWQgdG8gY2hlY2sgc3Vic2NyaXB0aW9uc2Rl
bnl0bywgc3Vic2NyaXB0aW9uc2dyYW50dG8gZmllbGRzCiAgIyBmb3IgYWxsIGdyb3VwcyBhbmQg
Zml4IGlmIGZvdW5kCiAgJGZpbHRlcj0iJGF0dHI9Z3JvdXAgJG9sZE5hbWUiOwogIERlYnVnTXNn
KDQsIlJlbmFtZTogc2VhcmNoOiBiYXNlPSRncm91cGJhc2VkbiwgZmlsdGVyPSRmaWx0ZXIsICIg
LgogICAgImF0dHJzPUBhdHRycyIpOwogICgkcnRuLCAkbmVudHJpZXMsICRyZWNvcmRYKSA9IAog
ICAgICZkb0xEQVBTZWFyY2goJGxkYXAsICRncm91cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycyk7
CgogIGlmICggJHJ0biBuZSAiIikKICAgIHsgJndhcm4oJHJ0bik7IH0KICBEZWJ1Z01zZyg0LCAi
bmVudHJpZXM9JG5lbnRyaWVzIik7CiAgJXJlY29yZHM9JSRyZWNvcmRYOwoKICBAZ3JvdXBMaXN0
ID0gKCk7CiAgRGVidWdNc2coNCwgIlNlYXJjaGluZyBmb3IgJ2dyb3VwICRvbGROYW1lJyIpOwog
IGZvcmVhY2ggJGRuIChrZXlzICVyZWNvcmRzKQogICAgeyAKICAgICRkbiA9fiBzLywuKi8vOyAg
ICNrZWVwIG9ubHkgY24KICAgIERlYnVnTXNnKDQsICJTZWFyY2hpbmcgJGRuIGZvciAkYXR0ciIp
OwogICAgcHVzaCBAZ3JvdXBMaXN0LCAkZG47CiAgICB9CiAKICBmb3JlYWNoICRkbiAoQGdyb3Vw
TGlzdCkKICAgIHsgCiAgICAoJHJ0biwgJGF0dHJYKSA9ICZnZXRBdHRyKCRsZGFwLCAkZ3JvdXBi
YXNlZG4sICRkbiwgJGF0dHIpOwogICAgaWYgKCAkcnRuIG5lICcnKQogICAgICB7IAogICAgICAm
d2FybigkcnRuKTsKICAgICAgcmV0dXJuOwogICAgICB9CiAgICBAdmFsdWVzPUAkYXR0clg7CiAg
ICBEZWJ1Z01zZyg0LCAiJGRuIHNlYXJjaCBmb3IgJGF0dHIgcmV0dXJuZWQgJCN2YWx1ZXMgaXRl
bXMiKTsKICAgIGZvciAoJGk9MDsgJGk8PSAkI3ZhbHVlczsgJGkrKykKICAgICAgewogICAgICBp
ZiAoJHZhbHVlc1skaV0gPX4gJ2dyb3VwICcgLiAkb2xkTmFtZSkKICAgICAgICB7IAogICAgICAg
ICR2YWx1ZXNbJGldID0gJ2dyb3VwICcgLiAkZ3JvdXBfbmFtZTsgCiAgICAgICAgJkRlYnVnTXNn
KDQsICJmb3VuZCBvbmUgdG8gY2hhbmdlIik7CiAgICAgICAgaWYgKCAkYW5hbHl6ZSA9PSAxKSAK
ICAgICAgICAgIHsgcHJpbnQgIk5lZWQgdG8gY2hhbmdlICdncm91cCAiIC4gJGdyb3VwX25hbWUg
LiAiJyBpbiAkZG5cbiI7IH0KICAgICAgICB9CiAgICAgIH0KICAgIGlmICggJGFuYWx5emUgIT0g
MSkKICAgICAgewogICAgICAkY2hnYXR0cnN7JGF0dHJ9PVxAdmFsdWVzOwogICAgICBEZWJ1Z01z
Zyg0LCAidXBkYXRpbmcgJGF0dHIgaW4gJGRuIik7CiAgICAgICRydG49ICZkb0xEQVBNb2RzKCRn
cm91cGJhc2VkbiwgJGZpbHRlciwgXEBhdHRycywgXCVjaGdhdHRycyk7CiAgICAgIGlmICggJHJ0
biBuZSAiIikKICAgICAgICB7CiAgICAgICAgJndhcm4oJHJ0bik7CiAgICAgICAgcmV0dXJuOwog
ICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsgRGVidWdNc2coNCwgIkdyb3VwICRkbiB1cGRh
dGVkIik7IH0KICAgICAgfQogICAgfQogIH0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRGVidWdNc2cKIyAgIEFyZ3M6CiMgICAgIExl
dmVsOiAgMSB0byA1CiMgICAgIG1zZzogICAgbXNnIHRvIHByaW50IHRvIHN0b3V0CgojLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIERl
YnVnTXNnKCkKICB7CiAgCiAgbXkoJGxldmVsLCAkbXNnKSA9IEBfOwogIG15ICRpOwogIG15ICRp
bmRlbnQgPSAiIjsKICBteSAkY2xvc2luZ19pbmRlbnQgPSAiIjsKICBteSAkaGVhZCA9ICIiOwoK
CiAgaWYgKCRzaG93ID09IDApCiAgICB7IHJldHVybjsgfQogIAogICRtc2cgLj0gJGluZGVudDsK
ICBmb3IgKCRpPTA7ICRpIDwgJHJlY3VyX2xldmVsOyAkaSsrKQogICAgewogICAgaWYgKCRodG1s
ID09IDEpCiAgICAgIHsKICAgICAgIyRpbmRlbnQgLj0gIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7IAogICAgICAkaW5kZW50IC49IiAgICAgICAgIjsK
ICAgICAgJGNsb3NpbmdfaW5kZW50IC49ICIiOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAg
ICAgIyRpbmRlbnQgLj0gIiAgICAiOwogICAgICB9CiAgICB9CgogIGlmICgkaHRtbCA9PSAxKQog
ICAgewogICAgJGhlYWQ9Ijxmb250IGNvbG9yPVwiJGZvbnRjb2xvclwiPiI7CiAgICAkZW9sID0g
IjwvZm9udD5cbiI7CiAgICB9IAogIGVsc2UgCiAgICB7CiAgICAkaGVhZCA9ICIiOwogICAgJGVv
bCA9ICJcbiI7CiAgICB9CgogICRtc2cgPSAiJGhlYWQkaW5kZW50JG1zZyRjbG9zaW5nX2luZGVu
dCRlb2wiOwoKICBTV0lUQ0g6IAogICAgewogICAgaWYgKCRsZXZlbD09MSkgCiAgICAgIHsgIAog
ICAgICBpZiAoJHNob3c+PTEpIAogICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAg
bGFzdCBTV0lUQ0g7IAogICAgICB9CiAgICBpZiAoJGxldmVsPT0yKSAKICAgICAgeyAgCiAgICAg
IGlmICgkc2hvdz49MikgCiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAgbGFz
dCBTV0lUQ0g7IAogICAgICB9CiAgICBpZiAoJGxldmVsPT0zKSAKICAgICAgeyAgCiAgICAgIGlm
ICgkc2hvdz49MykgCiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAgbGFzdCBT
V0lUQ0g7IAogICAgICB9CiAgICBpZiAoJGxldmVsPT00KSAKICAgICAgeyAgCiAgICAgIGlmICgk
c2hvdz49NCkgCiAgICAgICAgeyBQcmludE1lc3NhZ2UoJG1zZyk7fSAKICAgICAgbGFzdCBTV0lU
Q0g7IH0KICAgIGlmICgkbGV2ZWw9PTUpIAogICAgICB7ICAKICAgICAgaWYgKCRzaG93Pj01KSAK
ICAgICAgICB7IFByaW50TWVzc2FnZSgkbXNnKTt9IAogICAgICBsYXN0IFNXSVRDSDsgCiAgICAg
IH0KICAgIAogICAgUHJpbnRNZXNzYWdlKCRtc2cpOyAKICAgIGxhc3QgU1dJVENIOwogICAgfQog
IH0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiMgZ2V0TWFpbDoKIyAgIGdldCB1c2VyIG1haWwgYWRkcmVzcyBmb3IgdXNlcm5hbWUgCiMg
YXJnczoKIyAgIHVzZXJOYW1lCiMgcmV0dXJuczoKIyAgIHVzZXJNYWlsCiMgbm90ZToKIyAgIGVy
cm9ycyBkaXNwbGF5ZWQgb25seQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBnZXRNYWlsCiAgewogIG15ICR1c2VyTmFtZT0kX1swXTsK
ICBteSAkdXNlck1haWw7CiAgbXkgJGZpbHRlcjsKICBteSAkYXR0cjsKICBteSAkcnRuOwogIGlm
ICgkdXNlck5hbWUgbmUgJycpCiAgICB7CiAgICAkZmlsdGVyPSJjbj0kdXNlck5hbWUiOwogICAg
JGF0dHI9Im1haWwiOwogICAgCiAgICBpZiAoJGRlYnVnID4gMCkKICAgICAgeyBwcmludCAiPCEt
LUdldHRpbmcgdGhlICRhdHRyIGZvciAnJGZpbHRlcicgKG1haWwpIjsgfQogICAgJHJ0biA9Jyc7
CiAgICAoJHJ0biwgJHVzZXJNYWlsKSA9ICZnZXRBdHRyT25lKCRsZGFwLCRwZW9wbGViYXNlZG4s
ICRmaWx0ZXIsICRhdHRyKTsKICAgIGlmICggJHJ0biBuZSAiIikgCiAgICAgIHsgCiAgICAgIHBy
aW50ICJXQVJOSU5HOiBnZXRNYWlsKCR1c2VyTmFtZSkgZXJyb3I6XG4kcnRuXG4iOyAKICAgICAg
aWYgKCR1c2VyTWFpbCBlcSAnJykKICAgICAgICB7ICR1c2VyTWFpbCA9ICZkZWZMZGFwQWRtaW47
IH0gICNpZiBsZGFwIGRvd24KICAgICAgfQogICAgZWxzZQogICAgICB7IHJldHVybiAkdXNlck1h
aWw7IH0KICAgIH0KICBlbHNlCiAgICB7IHJldHVybiAmZGVmTGRhcEFkbWluOyB9CiAgfQoKIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIyBnZXRDbkZyb21VaWQgU3ViOiB1c2UgbGRhcCB0byBnZXQgY29tbW9uIG5hbWUgKGNuKSBm
cm9tIHVpZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpzdWIgZ2V0Q25Gcm9tVWlkIAogIHsKCiAgbXkgJGF0dHI7CiAgbXkgJGZp
bHRlcjsKICBteSAkaTsKICBteSAkQXJnPSRfWzBdOwogIG15ICR1aWQ7CiAgbXkgJGNuOwogIG15
ICRidWZmOwogIAogICZEZWJ1Z01zZyg5OSwiZ2V0Q25Gcm9tVWlkIGFyZz0nJEFyZyciKTsKCiAg
JGZpbHRlciA9ICJ1aWQ9IiAuICRBcmc7CiAgJGF0dHIgICA9ICJkbiI7CgogICZEZWJ1Z01zZyg5
OSwiR2V0dGluZyB0aGUgJGF0dHIgZm9yICckZmlsdGVyJyAoZGlzdGluZ3Vpc2hlZCBuYW1lKSIp
OwogICRidWZmID0gIiI7CiAgKCRydG4sICRidWZmKSA9ICZnZXRBdHRyT25lKCRsZGFwLCRwZW9w
bGViYXNlZG4sICRmaWx0ZXIsICRhdHRyKTsKICAmRGVidWdNc2coOTksIiBjbj0nJGJ1ZmYnIik7
CgogICRidWZmID1+IHMvXiAqY24gKj0gKi8vaTsKICAkYnVmZiA9fiBzLywuKiQvLzsKICByZXR1
cm4gKCRydG4sICRidWZmLCAkQXJnKTsKICAgCiAgfSMjIyBlbmQgc3ViIGdldENuRnJvbVVpZAoK
Cg==
# Sending end of data token...
$ EOF
# Waiting for remote host to process data...
$ echo tramp_exit_status $? 
tramp_exit_status 0
# Decoding region into remote file 
/address@hidden:/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl...done
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 43793) (15807 45538) (15807 45538) 60250 33261 t (6 . 
51848) (128 133))
$ test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_exit_status 0
$ tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
(nil 1 15002 15000 (15807 43793) (15807 45538) (15807 45538) 60250 33261 t (6 . 
51848) (128 133))
test -e /export/home/gray/public_html/test 2>/dev/null; echo tramp_exit_status 
$? 
cd ~; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test* 2>/dev/null | while read f; do if test -d "$f" 2>/dev/null; 
then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd ~; pwd
test -e /export/home/gray/public_html/test 2>/dev/null; echo tramp_exit_status 
$? 
cd ~; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test* 2>/dev/null | while read f; do if test -d "$f" 2>/dev/null; 
then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test-g* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd ~; pwd
test -e /export/home/gray/public_html/test-group-020911/ 2>/dev/null; echo 
tramp_exit_status $? 
cd ~; pwd
cd /export/home/gray/public_html/test-group-020911/admin/ 2>/dev/null; echo 
tramp_exit_status $? 
/bin/ls -a -d group* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd ~; pwd
test -e /export/home/gray/public_html/test-group-020911/admin/groups 
2>/dev/null; echo tramp_exit_status $? 
cd ~; pwd
cd /export/home/gray/public_html/test-group-020911/admin/groups/ 2>/dev/null; 
echo tramp_exit_status $? 
/bin/ls -a -d grp* 2>/dev/null | while read f; do if test -d "$f" 2>/dev/null; 
then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd ~; pwd
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grp 
2>/dev/null; echo tramp_exit_status $? 
cd ~; pwd
cd /export/home/gray/public_html/test-group-020911/admin/groups/ 2>/dev/null; 
echo tramp_exit_status $? 
/bin/ls -a -d grp* 2>/dev/null | while read f; do if test -d "$f" 2>/dev/null; 
then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd /export/home/gray/public_html/test-group-020911/admin/groups/ 2>/dev/null; 
echo tramp_exit_status $? 
/bin/ls -a -d grpt* 2>/dev/null | while read f; do if test -d "$f" 2>/dev/null; 
then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd ~; pwd
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.p 
2>/dev/null; echo tramp_exit_status $? 
cd ~; pwd
cd /export/home/gray/public_html/test-group-020911/admin/groups/ 2>/dev/null; 
echo tramp_exit_status $? 
/bin/ls -a -d grpter.p* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
cd ~; pwd
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.p 
2>/dev/null; echo tramp_exit_status $? 
cd ~; pwd
cd /export/home/gray/public_html/test-group-020911/admin/groups/ 2>/dev/null; 
echo tramp_exit_status $? 
/bin/ls -a -d grpter.p* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
cd ~; pwd
( test -d 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? )
test -e /export 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export
test -e /export/home 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home
test -e /export/home/gray 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray
test -e /export/home/gray/public_html 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html
test -e /export/home/gray/public_html/test-group-020911 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911
test -e /export/home/gray/public_html/test-group-020911/admin 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911/admin
test -e /export/home/gray/public_html/test-group-020911/admin/groups 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export
test -e /export/home 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home
test -e /export/home/gray 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray
test -e /export/home/gray/public_html 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html
test -e /export/home/gray/public_html/test-group-020911 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911
test -e /export/home/gray/public_html/test-group-020911/admin 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911/admin
test -e /export/home/gray/public_html/test-group-020911/admin/groups 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
mimencode -b < 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -w /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/RCS/grpter.pl\,v 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl\,v 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/RCS/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/SCCS/s.grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/s.grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
( test -d /export/home/gray/public_html/test-group-020911/admin/groups/CVS 
2>/dev/null; echo tramp_exit_status $? )
exec env 'PS1=$ ' /bin/sh
PS1='
/////
'; PS2=''; PS3=''
test -e / 2>/dev/null; echo tramp_exit_status $? 
test -e /\ this\ file\ does\ not\ exist\  2>/dev/null; echo tramp_exit_status 
$? 
test -x /export/home/gray/bin/ls 2>/dev/null; echo tramp_exit_status $? 
test -x /bin/ls 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -lnd / >/dev/null 2>/dev/null; echo tramp_exit_status $? 
tramp_set_exit_status () { return $1; }
test -e /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /bin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/sbin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/sbin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/local/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/local/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /local/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /local/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /local/gnu/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /usr/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /usr/pkg/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /usr/contrib/bin 2>/dev/null; echo tramp_exit_status $? 
PATH=/export/home/gray/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin; 
export PATH
LC_TIME=C; export LC_TIME; echo huhu
mesg n; echo huhu
biff n ; echo huhu
unalias ls; echo huhu
( test / -nt / )
tramp_test_nt () { test -n "`find $1 -prune -newer $2 -print`"; }
tramp_uudecode () { (echo begin 600 /tmp/tramp.$$; tail +2) | uudecode; cat 
/tmp/tramp.$$; rm -f /tmp/tramp.$$; }
while read d; do if test -x $d/perl5 -a -f $d/perl5; then echo tramp_executable 
$d/perl5; break; fi; done <<'EOF'
while read d; do if test -x $d/perl -a -f $d/perl; then echo tramp_executable 
$d/perl; break; fi; done <<'EOF'
tramp_file_attributes () { /bin/perl -e '$f = $ARGV[0];
@s = lstat($f);
if (($s[2] & 0170000) == 0120000) { $l = readlink($f); $l = "\"$l\""; }
elsif (($s[2] & 0170000) == 040000) { $l = "t"; }
else { $l = "nil" };
printf("(%s %u %d %d (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) (%u %u))\n",
$l, $s[3], $s[4], $s[5], $s[8] >> 16 & 0xffff, $s[8] & 0xffff,
$s[9] >> 16 & 0xffff, $s[9] & 0xffff, $s[10] >> 16 & 0xffff, $s[10] & 0xffff,
$s[7], $s[2], $s[1] >> 16 & 0xffff, $s[1] & 0xffff, $s[0] >> 16 & 0xffff, $s[0] 
& 0xffff);' $1 2>/dev/null; }
tramp_encode () { /bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
};

binmode(\*STDIN);

# We read in chunks of 54 bytes, to generate output lines
# of 72 chars (plus end of line)
$/ = \54;

while (my $data = <STDIN>) {
    my $pad = q();

    # Only for the last chunk, and only if did not fill the last three-byte 
packet
    if (eof) {
        my $mod = length($data) % 3;
        $pad = q(=) x (3 - $mod) if $mod;
    }

    # Not the fastest method, but it is simple: unpack to binary string, split
    # by groups of 6 bits and convert back from binary to byte; then map into
    # the translation table
    print
      join q(),
        map($trans{$_},
            (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)),
              $pad,
                qq(\n);
}
' 2>/dev/null; }
tramp_encode_with_module () { perl -MMIME::Base64 -0777 -ne 'print 
encode_base64($_)' 2>/dev/null; }
tramp_decode () { /bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {($_, substr(unpack(q(B8), chr $i++), 2, 6))}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)
};

my %bytes = map {(unpack(q(B8), chr $_), chr $_)} 0 .. 255;

binmode(\*STDOUT);

# We are going to accumulate into $pending to accept any line length
# (we do not check they are <= 76 chars as the RFC says)
my $pending = q();

while (my $data = <STDIN>) {
    chomp $data;

    # If we find one or two =, we have reached the end and
    # any following data is to be discarded
    my $finished = $data =~ s/(==?).*/$1/;
    $pending .= $data;

    my $len = length($pending);
    my $chunk = substr($pending, 0, $len & ~3);

    # Easy method: translate from chars to (pregenerated) six-bit packets, join,
    # split in 8-bit chunks and convert back to char.
    print join q(),
      map $bytes{$_},
        ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g);

    last if $finished;
}
' 2>/dev/null; }
tramp_decode_with_module () { perl -MMIME::Base64 -0777 -ne 'print 
decode_base64($_)' 2>/dev/null; }
while read d; do if test -x $d/ln -a -f $d/ln; then echo tramp_executable 
$d/ln; break; fi; done <<'EOF'
( mimencode -b </dev/null 2>/dev/null; echo tramp_exit_status $? )
( echo xyzzy | mimencode -b | mimencode -u -b 2>/dev/null; echo 
tramp_exit_status $? )
echo xyzzy | mimencode -b | mimencode -u -b
cd ~gray; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test* 2>/dev/null | while read f; do if test -d "$f" 2>/dev/null; 
then echo "$f/"; else echo "$f"; fi; done
cd
cd ~gray; pwd
cd ~gray; pwd
test -e /export/home/gray/public_html/test 2>/dev/null; echo tramp_exit_status 
$? 
cd ~gray; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test* 2>/dev/null | while read f; do if test -d "$f" 2>/dev/null; 
then echo "$f/"; else echo "$f"; fi; done
cd
cd ~gray; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test\ * 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
cd ~gray; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test-* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
cd ~gray; pwd
cd /export/home/gray/public_html/ 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -a -d test-g* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
cd ~gray; pwd
cd ~gray; pwd
test -e /export/home/gray/public_html/test-group-020911/ 2>/dev/null; echo 
tramp_exit_status $? 
cd ~gray; pwd
( test -d 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? )
test -e /export 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export
test -e /export/home 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home
test -e /export/home/gray 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray
test -e /export/home/gray/public_html 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html
test -e /export/home/gray/public_html/test-group-020911 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911
test -e /export/home/gray/public_html/test-group-020911/admin 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911/admin
test -e /export/home/gray/public_html/test-group-020911/admin/groups 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export
test -e /export/home 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home
test -e /export/home/gray 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray
test -e /export/home/gray/public_html 2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html
test -e /export/home/gray/public_html/test-group-020911 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911
test -e /export/home/gray/public_html/test-group-020911/admin 2>/dev/null; echo 
tramp_exit_status $? 
tramp_file_attributes /export/home/gray/public_html/test-group-020911/admin
test -e /export/home/gray/public_html/test-group-020911/admin/groups 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
mimencode -b < 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -w /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/RCS/grpter.pl\,v 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl\,v 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/RCS/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/SCCS/s.grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/s.grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
( test -d /export/home/gray/public_html/test-group-020911/admin/groups/CVS 
2>/dev/null; echo tramp_exit_status $? )
echo are you awake
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
echo are you awake
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -w /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
cd /export/home/gray/public_html/test-group-020911/admin/groups/ 2>/dev/null; 
echo tramp_exit_status $? 
/bin/ls -a -d grpter.pl.\~* 2>/dev/null | while read f; do if test -d "$f" 
2>/dev/null; then echo "$f/"; else echo "$f"; fi; done
cd
mv -f /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~ 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~ 
2>/dev/null; echo tramp_exit_status $? 
test -e 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~ 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~5.\~
rm -f 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl.\~1.\~ 
2>/dev/null; echo tramp_exit_status $? 
mimencode -u -b 
>/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl <<'EOF'
echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
chmod 0755 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
echo are you awake
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
echo are you awake
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -w /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
mimencode -u -b 
>/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl <<'EOF'
echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
echo are you awake
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
echo are you awake
exec env 'PS1=$ ' /bin/sh
sudo su -
PS1='
/////
'; PS2=''; PS3=''
test -e / 2>/dev/null; echo tramp_exit_status $? 
test -e /\ this\ file\ does\ not\ exist\  2>/dev/null; echo tramp_exit_status 
$? 
test -x /export/home/gray/bin/ls 2>/dev/null; echo tramp_exit_status $? 
test -x /bin/ls 2>/dev/null; echo tramp_exit_status $? 
/bin/ls -lnd / >/dev/null 2>/dev/null; echo tramp_exit_status $? 
tramp_set_exit_status () { return $1; }
test -e /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /bin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/sbin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/sbin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/local/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/local/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? 
( test -d /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? )
test -e /local/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /local/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /local/gnu/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /usr/freeware/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /usr/pkg/bin 2>/dev/null; echo tramp_exit_status $? 
test -e /usr/contrib/bin 2>/dev/null; echo tramp_exit_status $? 
PATH=/export/home/gray/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin; 
export PATH
LC_TIME=C; export LC_TIME; echo huhu
mesg n; echo huhu
biff n ; echo huhu
unalias ls; echo huhu
( test / -nt / )
tramp_test_nt () { test -n "`find $1 -prune -newer $2 -print`"; }
tramp_uudecode () { (echo begin 600 /tmp/tramp.$$; tail +2) | uudecode; cat 
/tmp/tramp.$$; rm -f /tmp/tramp.$$; }
while read d; do if test -x $d/perl5 -a -f $d/perl5; then echo tramp_executable 
$d/perl5; break; fi; done <<'EOF'
while read d; do if test -x $d/perl -a -f $d/perl; then echo tramp_executable 
$d/perl; break; fi; done <<'EOF'
tramp_file_attributes () { /bin/perl -e '$f = $ARGV[0];
@s = lstat($f);
if (($s[2] & 0170000) == 0120000) { $l = readlink($f); $l = "\"$l\""; }
elsif (($s[2] & 0170000) == 040000) { $l = "t"; }
else { $l = "nil" };
printf("(%s %u %d %d (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) (%u %u))\n",
$l, $s[3], $s[4], $s[5], $s[8] >> 16 & 0xffff, $s[8] & 0xffff,
$s[9] >> 16 & 0xffff, $s[9] & 0xffff, $s[10] >> 16 & 0xffff, $s[10] & 0xffff,
$s[7], $s[2], $s[1] >> 16 & 0xffff, $s[1] & 0xffff, $s[0] >> 16 & 0xffff, $s[0] 
& 0xffff);' $1 2>/dev/null; }
tramp_encode () { /bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
};

binmode(\*STDIN);

# We read in chunks of 54 bytes, to generate output lines
# of 72 chars (plus end of line)
$/ = \54;

while (my $data = <STDIN>) {
    my $pad = q();

    # Only for the last chunk, and only if did not fill the last three-byte 
packet
    if (eof) {
        my $mod = length($data) % 3;
        $pad = q(=) x (3 - $mod) if $mod;
    }

    # Not the fastest method, but it is simple: unpack to binary string, split
    # by groups of 6 bits and convert back from binary to byte; then map into
    # the translation table
    print
      join q(),
        map($trans{$_},
            (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)),
              $pad,
                qq(\n);
}
' 2>/dev/null; }
tramp_encode_with_module () { perl -MMIME::Base64 -0777 -ne 'print 
encode_base64($_)' 2>/dev/null; }
tramp_decode () { /bin/perl -e '
# This script contributed by Juanma Barranquero <address@hidden>.
# Copyright (C) 2002 Free Software Foundation, Inc.
use strict;

my %trans = do {
    my $i = 0;
    map {($_, substr(unpack(q(B8), chr $i++), 2, 6))}
      split //, 
q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)
};

my %bytes = map {(unpack(q(B8), chr $_), chr $_)} 0 .. 255;

binmode(\*STDOUT);

# We are going to accumulate into $pending to accept any line length
# (we do not check they are <= 76 chars as the RFC says)
my $pending = q();

while (my $data = <STDIN>) {
    chomp $data;

    # If we find one or two =, we have reached the end and
    # any following data is to be discarded
    my $finished = $data =~ s/(==?).*/$1/;
    $pending .= $data;

    my $len = length($pending);
    my $chunk = substr($pending, 0, $len & ~3);

    # Easy method: translate from chars to (pregenerated) six-bit packets, join,
    # split in 8-bit chunks and convert back to char.
    print join q(),
      map $bytes{$_},
        ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g);

    last if $finished;
}
' 2>/dev/null; }
tramp_decode_with_module () { perl -MMIME::Base64 -0777 -ne 'print 
decode_base64($_)' 2>/dev/null; }
while read d; do if test -x $d/ln -a -f $d/ln; then echo tramp_executable 
$d/ln; break; fi; done <<'EOF'
( mimencode -b </dev/null 2>/dev/null; echo tramp_exit_status $? )
( echo xyzzy | mimencode -b | mimencode -u -b 2>/dev/null; echo 
tramp_exit_status $? )
echo xyzzy | mimencode -b | mimencode -u -b
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
test -w /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
mimencode -u -b 
>/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl <<'EOF'
echo tramp_exit_status $? 
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl
test -e /export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl 
2>/dev/null; echo tramp_exit_status $? 
tramp_file_attributes 
/export/home/gray/public_html/test-group-020911/admin/groups/grpter.pl

reply via email to

[Prev in Thread] Current Thread [Next in Thread]