com php/gtk-src: Fixed compile with 5.5. Added VC11 compatibility: ext/gtk+/config.w32 ext/libglade/config.w32 ext/libsexy/config.w32 ext/sourceview/config.w32 generator/generator.php generator/gtkgenerator.php main/php_gtk.h main/phpg_sup port.c win32/config.w32.in

[email protected] (Elizabeth Marie Smith) Fri, 28 Jun 2013 02:49:21 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
--664b1a9984c02278f5843cc7ba629263cfe5c5ea
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Commit:    694fdabeb72d6dc0aee904359ed981201db4986f=0AAuthor:    Zachary Re=
is <[email protected]>         Thu, 27 Jun 2013 22:49:21 -0400=0AParents: =
  e972b2524af28df69baa7657413a61eec552fcd2=0ABranches:  master=0A=0ALink:  =
     http://git.php.net/?p=3Dphp/gtk-src.git;a=3Dcommitdiff;h=3D694fdabeb72=
d6dc0aee904359ed981201db4986f=0A=0ALog:=0AFixed compile with 5.5. Added VC1=
1 compatibility=0A=0A*renamed generator.php and related functions/classes t=
o get around=0Akeyword issue in > 5.5=0A=0AChanged paths:=0A  M  ext/gtk+/c=
onfig.w32=0A  M  ext/libglade/config.w32=0A  M  ext/libsexy/config.w32=0A  =
M  ext/sourceview/config.w32=0A  D  generator/generator.php=0A  A  generato=
r/gtkgenerator.php=0A  M  main/php_gtk.h=0A  M  main/phpg_support.c=0A  M  =
win32/config.w32.in=0A=0A
--664b1a9984c02278f5843cc7ba629263cfe5c5ea
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="diff_694fdabeb72d6dc0aee904359ed981201db4986f.txt"

ZGlmZiAtLWdpdCBhL2V4dC9ndGsrL2NvbmZpZy53MzIgYi9leHQvZ3RrKy9jb25maWcudzMyCmlu
ZGV4IGYyZDVlMzIuLjFlNzU2ZWUgMTAwNjQ0Ci0tLSBhL2V4dC9ndGsrL2NvbmZpZy53MzIKKysr
IGIvZXh0L2d0aysvY29uZmlnLnczMgpAQCAtMjcsMTIgKzI3LDEyIEBAIGlmIChDSEVDS19IRUFE
RVIoIm1haW4vcGhwLmgiKSAmJiBDSEVDS19MSUIoUEhQX0xJQikgJiYKIAkJLyogQ3JlYXRlIHRo
ZSBmaWxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QgKi8KIAkJdmFyIHRlbXAgPSBGU08uT3BlblRleHRG
aWxlKCJ3aW4zMlxcdGVtcC5iYXQiLCA4KTsKIAkJLyogZ2VuZXJhdGUgc291cmNlIGFuZCBoZWFk
ZXIgZmlsZXMgZm9yIGV4cG9ydGVkIFBIUC1HVEsgZnVuY3Rpb25zICovCi0JCXRlbXAuV3JpdGVM
aW5lKCIvKiB1c2FnZTogcGhwIGdlbmVyYXRvci5waHAgWy1sIGxvZ2ZpbGVdIFstbyBvdmVycmlk
ZXNmaWxlXSBbLXAgcHJlZml4XSBbLWMgZnVuY3Rpb25jbGFzcyBdIFstciB0eXBlc2ZpbGVdIFst
ZiBzYXZlZmlsZV0gWy12IGd0a2xpYnZlcnNpb25dIGRlZnNmaWxlICovIik7CisJCXRlbXAuV3Jp
dGVMaW5lKCIvKiB1c2FnZTogcGhwIGd0a2dlbmVyYXRvci5waHAgWy1sIGxvZ2ZpbGVdIFstbyBv
dmVycmlkZXNmaWxlXSBbLXAgcHJlZml4XSBbLWMgZnVuY3Rpb25jbGFzcyBdIFstciB0eXBlc2Zp
bGVdIFstZiBzYXZlZmlsZV0gWy12IGd0a2xpYnZlcnNpb25dIGRlZnNmaWxlICovIik7CiAJCXRl
bXAuV3JpdGVMaW5lKCJta2RpciB3aW4zMlxcbG9ncyIpOwotCQl0ZW1wLldyaXRlTGluZSgicGhw
IC1xIGdlbmVyYXRvclxcZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX2F0ay5s
b2cgLW8gZXh0XFxndGsrXFxhdGsub3ZlcnJpZGVzIC1wIGF0ayBleHRcXGd0aytcXGF0ay5kZWZz
IC12ICIgKyBQSFBfR1RLX0xJQlZFUlNJT04gKyAiIC1mIGV4dFxcZ3RrK1xcZ2VuX2F0ay5jID4+
IHNvdXJjZXMudGVtcCIpOwotCQl0ZW1wLldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ2Vu
ZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX3BhbmdvLmxvZyAtbyBleHRcXGd0aytc
XHBhbmdvLm92ZXJyaWRlcyAtcCBwYW5nbyBleHRcXGd0aytcXHBhbmdvLmRlZnMgLXYgIiArIFBI
UF9HVEtfTElCVkVSU0lPTiArICIgLWYgZXh0XFxndGsrXFxnZW5fcGFuZ28uYyA+PiBzb3VyY2Vz
LnRlbXAiKTsKLQkJdGVtcC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGdlbmVyYXRvci5w
aHAgLWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19nZGsubG9nIC1vIGV4dFxcZ3RrK1xcZ2RrLm92ZXJy
aWRlcyAtcCBnZGsgLXIgZXh0XFxndGsrXFxhdGstdHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19M
SUJWRVJTSU9OICsgIiAtciBleHRcXGd0aytcXHBhbmdvLXR5cGVzLmRlZnMgZXh0XFxndGsrXFxn
ZGsuZGVmcyAtZiBleHRcXGd0aytcXGdlbl9nZGsuYyA+PiBzb3VyY2VzLnRlbXAiKTsKLQkJdGVt
cC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGdlbmVyYXRvci5waHAgLWwgd2luMzJcXGxv
Z3NcXGNvbmZpZ19ndGsubG9nIC1vIGV4dFxcZ3RrK1xcZ3RrLm92ZXJyaWRlcyAtcCBndGsgLXIg
ZXh0XFxndGsrXFxhdGstdHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19MSUJWRVJTSU9OICsgIiAt
ciBleHRcXGd0aytcXHBhbmdvLXR5cGVzLmRlZnMgLXIgZXh0XFxndGsrXFxnZGstdHlwZXMuZGVm
cyBleHRcXGd0aytcXGd0ay5kZWZzIC1mIGV4dFxcZ3RrK1xcZ2VuX2d0ay5jID4+IHNvdXJjZXMu
dGVtcCIpOworCQl0ZW1wLldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ3RrZ2VuZXJhdG9y
LnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX2F0ay5sb2cgLW8gZXh0XFxndGsrXFxhdGsub3Zl
cnJpZGVzIC1wIGF0ayBleHRcXGd0aytcXGF0ay5kZWZzIC12ICIgKyBQSFBfR1RLX0xJQlZFUlNJ
T04gKyAiIC1mIGV4dFxcZ3RrK1xcZ2VuX2F0ay5jID4+IHNvdXJjZXMudGVtcCIpOworCQl0ZW1w
LldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ3RrZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxc
bG9nc1xcY29uZmlnX3BhbmdvLmxvZyAtbyBleHRcXGd0aytcXHBhbmdvLm92ZXJyaWRlcyAtcCBw
YW5nbyBleHRcXGd0aytcXHBhbmdvLmRlZnMgLXYgIiArIFBIUF9HVEtfTElCVkVSU0lPTiArICIg
LWYgZXh0XFxndGsrXFxnZW5fcGFuZ28uYyA+PiBzb3VyY2VzLnRlbXAiKTsKKwkJdGVtcC5Xcml0
ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGd0a2dlbmVyYXRvci5waHAgLWwgd2luMzJcXGxvZ3Nc
XGNvbmZpZ19nZGsubG9nIC1vIGV4dFxcZ3RrK1xcZ2RrLm92ZXJyaWRlcyAtcCBnZGsgLXIgZXh0
XFxndGsrXFxhdGstdHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19MSUJWRVJTSU9OICsgIiAtciBl
eHRcXGd0aytcXHBhbmdvLXR5cGVzLmRlZnMgZXh0XFxndGsrXFxnZGsuZGVmcyAtZiBleHRcXGd0
aytcXGdlbl9nZGsuYyA+PiBzb3VyY2VzLnRlbXAiKTsKKwkJdGVtcC5Xcml0ZUxpbmUoInBocCAt
cSBnZW5lcmF0b3JcXGd0a2dlbmVyYXRvci5waHAgLWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19ndGsu
bG9nIC1vIGV4dFxcZ3RrK1xcZ3RrLm92ZXJyaWRlcyAtcCBndGsgLXIgZXh0XFxndGsrXFxhdGst
dHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19MSUJWRVJTSU9OICsgIiAtciBleHRcXGd0aytcXHBh
bmdvLXR5cGVzLmRlZnMgLXIgZXh0XFxndGsrXFxnZGstdHlwZXMuZGVmcyBleHRcXGd0aytcXGd0
ay5kZWZzIC1mIGV4dFxcZ3RrK1xcZ2VuX2d0ay5jID4+IHNvdXJjZXMudGVtcCIpOwogCQl0ZW1w
LldyaXRlTGluZSgnZ3JlcCAtaCAiXlBIUF9HVEtfRVhQT1JUX0NFIiBleHRcXGd0aytcXGdlbl9h
dGsuYyB8IHNlZCAtZSAicy9eL1BIUF9HVEtfQVBJIGV4dGVybiAvIiA+IGV4dFxcZ3RrK1xcZ2Vu
X2F0ay5oJyk7CiAJCXRlbXAuV3JpdGVMaW5lKCdncmVwIC1oICJeUEhQX0dUS19FWFBPUlRfQ0Ui
IGV4dFxcZ3RrK1xcZ2VuX3BhbmdvLmMgfCBzZWQgLWUgInMvXi9QSFBfR1RLX0FQSSBleHRlcm4g
LyIgPiBleHRcXGd0aytcXGdlbl9wYW5nby5oJyk7CiAJCXRlbXAuV3JpdGVMaW5lKCdncmVwIC1o
ICJeUEhQX0dUS19FWFBPUlRfQ0UiIGV4dFxcZ3RrK1xcZ2VuX2dkay5jIHwgc2VkIC1lICJzL14v
UEhQX0dUS19BUEkgZXh0ZXJuIC8iID4gZXh0XFxndGsrXFxnZW5fZ2RrLmgnKTsKZGlmZiAtLWdp
dCBhL2V4dC9saWJnbGFkZS9jb25maWcudzMyIGIvZXh0L2xpYmdsYWRlL2NvbmZpZy53MzIKaW5k
ZXggNzhiNTBiNC4uYTZlZTc0NSAxMDA2NDQKLS0tIGEvZXh0L2xpYmdsYWRlL2NvbmZpZy53MzIK
KysrIGIvZXh0L2xpYmdsYWRlL2NvbmZpZy53MzIKQEAgLTksNyArOSw3IEBAIGlmIChQSFBfR1RL
X0xJQkdMQURFICE9ICJubyIgfHwgUEhQX0dUS19BTEwgIT0gIm5vIikgewogCiAJCQl2YXIgdGVt
cCA9IEZTTy5PcGVuVGV4dEZpbGUoIndpbjMyXFx0ZW1wLmJhdCIsIDgpOwogCi0JCQl0ZW1wLldy
aXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xc
Y29uZmlnX2dsYWRlLmxvZyAtbyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5vdmVycmlkZXMgLXAg
Z2xhZGUgLXIgZXh0XFxndGsrXFxndGsuZGVmcyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5kZWZz
IC1mIGV4dFxcbGliZ2xhZGVcXGdlbl9saWJnbGFkZS5jIik7CisJCQl0ZW1wLldyaXRlTGluZSgi
cGhwIC1xIGdlbmVyYXRvclxcZ3RrZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmln
X2dsYWRlLmxvZyAtbyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5vdmVycmlkZXMgLXAgZ2xhZGUg
LXIgZXh0XFxndGsrXFxndGsuZGVmcyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5kZWZzIC1mIGV4
dFxcbGliZ2xhZGVcXGdlbl9saWJnbGFkZS5jIik7CiAKIAkJCXRlbXAuV3JpdGVMaW5lKCdncmVw
IC1oICJeUEhQX0dUS19FWFBPUlRfQ0UiIGV4dFxcbGliZ2xhZGVcXGdlbl9saWJnbGFkZS5jIHwg
c2VkIC1lICJzL14vUEhQX0dUS19BUEkgZXh0ZXJuIC8iID4gZXh0XFxsaWJnbGFkZVxcZ2VuX2xp
YmdsYWRlLmgnKTsKIApkaWZmIC0tZ2l0IGEvZXh0L2xpYnNleHkvY29uZmlnLnczMiBiL2V4dC9s
aWJzZXh5L2NvbmZpZy53MzIKaW5kZXggMDg4MzJjMy4uNTU0MjA3YSAxMDA2NDQKLS0tIGEvZXh0
L2xpYnNleHkvY29uZmlnLnczMgorKysgYi9leHQvbGlic2V4eS9jb25maWcudzMyCkBAIC02LDcg
KzYsNyBAQCBpZiAoUEhQX0dUS19MSUJTRVhZICE9ICJubyIgfHwgUEhQX0dUS19BTEwgIT0gIm5v
IikKIAkJaWYgKEZTTy5GaWxlRXhpc3RzKCJ3aW4zMlxcdGVtcC5iYXQiKSkKIAkJeyAKIAkJCXZh
ciB0ZW1wID0gRlNPLk9wZW5UZXh0RmlsZSgid2luMzJcXHRlbXAuYmF0IiwgOCk7Ci0JCQl0ZW1w
LldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9n
c1xcY29uZmlnX2xpYnNleHkubG9nIC1vIGV4dFxcbGlic2V4eVxcc2V4eS5vdmVycmlkZXMgLXAg
c2V4eSAtciBleHRcXGd0aytcXGd0ay5kZWZzIGV4dFxcbGlic2V4eVxcc2V4eS5kZWZzID4gZXh0
XFxsaWJzZXh5XFxnZW5fbGlic2V4eS5jIik7CisJCQl0ZW1wLldyaXRlTGluZSgicGhwIC1xIGdl
bmVyYXRvclxcZ3RrZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX2xpYnNleHku
bG9nIC1vIGV4dFxcbGlic2V4eVxcc2V4eS5vdmVycmlkZXMgLXAgc2V4eSAtciBleHRcXGd0aytc
XGd0ay5kZWZzIGV4dFxcbGlic2V4eVxcc2V4eS5kZWZzID4gZXh0XFxsaWJzZXh5XFxnZW5fbGli
c2V4eS5jIik7CiAJCQl0ZW1wLldyaXRlTGluZSgnZ3JlcCAtaCAiXlBIUF9HVEtfRVhQT1JUX0NF
IiBleHRcXGxpYnNleHlcXGdlbl9saWJzZXh5LmMgfCBzZWQgLWUgInMvXi9QSFBfR1RLX0FQSSBl
eHRlcm4gLyIgPiBleHRcXGxpYnNleHlcXGdlbl9saWJzZXh5LmgnKTsKICAJCQl0ZW1wLkNsb3Nl
KCk7IAkJCiAJCX0KZGlmZiAtLWdpdCBhL2V4dC9zb3VyY2V2aWV3L2NvbmZpZy53MzIgYi9leHQv
c291cmNldmlldy9jb25maWcudzMyCmluZGV4IDgxNTUwMmYuLjFkMWJjM2YgMTAwNjQ0Ci0tLSBh
L2V4dC9zb3VyY2V2aWV3L2NvbmZpZy53MzIKKysrIGIvZXh0L3NvdXJjZXZpZXcvY29uZmlnLncz
MgpAQCAtNyw3ICs3LDcgQEAgaWYgKFBIUF9HVEtfU09VUkNFVklFVyAhPSAibm8iIHx8IFBIUF9H
VEtfQUxMICE9ICJubyIpIHsKIAkJaWYgKEZTTy5GaWxlRXhpc3RzKCJ3aW4zMlxcdGVtcC5iYXQi
KSkgewogCiAJCQl2YXIgdGVtcCA9IEZTTy5PcGVuVGV4dEZpbGUoIndpbjMyXFx0ZW1wLmJhdCIs
IDgpOwotCQkJdGVtcC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGdlbmVyYXRvci5waHAg
LWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19zb3VyY2V2aWV3LmxvZyAtbyBleHRcXHNvdXJjZXZpZXdc
XHNvdXJjZXZpZXcub3ZlcnJpZGVzIC1wIGd0a3NvdXJjZXZpZXcgLXIgZXh0XFxndGsrXFxndGsu
ZGVmcyBleHRcXHNvdXJjZXZpZXdcXHNvdXJjZXZpZXcuZGVmcyA+IGV4dFxcc291cmNldmlld1xc
Z2VuX3NvdXJjZXZpZXcuYyIpOworCQkJdGVtcC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3Jc
XGd0a2dlbmVyYXRvci5waHAgLWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19zb3VyY2V2aWV3LmxvZyAt
byBleHRcXHNvdXJjZXZpZXdcXHNvdXJjZXZpZXcub3ZlcnJpZGVzIC1wIGd0a3NvdXJjZXZpZXcg
LXIgZXh0XFxndGsrXFxndGsuZGVmcyBleHRcXHNvdXJjZXZpZXdcXHNvdXJjZXZpZXcuZGVmcyA+
IGV4dFxcc291cmNldmlld1xcZ2VuX3NvdXJjZXZpZXcuYyIpOwogICAgICAgICAgICAgICAgICAg
dGVtcC5Xcml0ZUxpbmUoJ2dyZXAgLWggIl5QSFBfR1RLX0VYUE9SVF9DRSIgZXh0XFxzb3VyY2V2
aWV3XFxnZW5fc291cmNldmlldy5jIHwgc2VkIC1lICJzL14vUEhQX0dUS19BUEkgZXh0ZXJuIC8i
ID4gZXh0XFxzb3VyY2V2aWV3XFxnZW5fc291cmNldmlldy5oJyk7CQkKIAkJCXRlbXAuQ2xvc2Uo
KTsKIAkJfQpkaWZmIC0tZ2l0IGEvZ2VuZXJhdG9yL2dlbmVyYXRvci5waHAgYi9nZW5lcmF0b3Iv
Z2VuZXJhdG9yLnBocApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ODM2ZC4uMDAw
MDAwMAotLS0gYS9nZW5lcmF0b3IvZ2VuZXJhdG9yLnBocAorKysgL2Rldi9udWxsCkBAIC0xLDE1
ODEgKzAsMCBAQAotPD9waHAKLS8qCi0gKiBQSFAtR1RLIC0gVGhlIFBIUCBsYW5ndWFnZSBiaW5k
aW5ncyBmb3IgR1RLKwotICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDA4IEFuZHJlaSBabWll
dnNraSA8YW5kcmVpQHBocC5uZXQ+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqIAotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKiAKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSAqLwotCi0vKiAkSWQkICovCi0K
LS8qCi0gKiBTaWduaWZpY2FudCBwb3J0aW9ucyBvZiB0aGlzIGdlbmVyYXRvciBhcmUgYmFzZWQg
b24gdGhlIHB5Z3RrIGNvZGUgZ2VuZXJhdG9yCi0gKiBkZXZlbG9wZWQgYnkgSmFtZXMgSGVuc3Ry
aWRnZSA8amFtZXNoQGRhYS5jb20uYXU+LgotICoKLSAqLwotCi1zZXRfdGltZV9saW1pdCgzMDAp
OwotCi0vLyBvdmVycmlkZSB0aGUgZGVmYXVsdCBQSFAgOE1iIGFzIHRoaXMgc2NyaXB0IHRlbmRz
IHRvIHVzZSBhIGxvdCBtb3JlCi0vLyBhbmQgaG9wZWZ1bGx5IHJlZHVjZSB0aGUgc3VwcG9ydCBx
dWVzdGlvbnMgYSBiaXQuLgotLy8gTWFrZSBpdCAtMSBpbnN0ZWFkIDopCi1pbmlfc2V0KCdtZW1v
cnlfbGltaXQnLCctMScpOwotCi1pZiAoc3Ryc3RyKFBIUF9PUywgJ1dJTicpKSB7Ci0JZGVmaW5l
KCdXSU5fT1MnLCB0cnVlKTsKLX0gZWxzZSB7Ci0JZGVmaW5lKCdXSU5fT1MnLCBmYWxzZSk7Ci19
Ci0KLXJlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiAiL0dldG9wdC5waHAiOwotcmVxdWlyZSBk
aXJuYW1lKF9fRklMRV9fKSAuICIvb3ZlcnJpZGUucGhwIjsKLXJlcXVpcmUgZGlybmFtZShfX0ZJ
TEVfXykgLiAiL2FyZ190eXBlcy5waHAiOwotcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICIv
c2NoZW1lLnBocCI7Ci1yZXF1aXJlIGRpcm5hbWUoX19GSUxFX18pIC4gIi90ZW1wbGF0ZXMucGhw
IjsKLXJlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiAiL2FycmF5X3ByaW50Zi5waHAiOwotcmVx
dWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICIvbGluZW91dHB1dC5waHAiOwotCi1jbGFzcyBHZW5l
cmF0b3IgewotICAgIHZhciAkcGFyc2VyICAgICAgICAgICAgID0gbnVsbDsKLSAgICB2YXIgJG92
ZXJyaWRlcyAgICAgICAgICA9IG51bGw7Ci0gICAgdmFyICRwcmVmaXggICAgICAgICAgICAgPSBu
dWxsOwotICAgIHZhciAkbHByZWZpeCAgICAgICAgICAgID0gbnVsbDsKLSAgICB2YXIgJGZ1bmN0
aW9uX2NsYXNzICAgICA9IG51bGw7Ci0gICAgdmFyICRsb2dmaWxlICAgICAgICAgICAgPSBudWxs
OwotICAgIHZhciAkZGl2ZXJzaW9ucyAgICAgICAgID0gbnVsbDsKLQotICAgIHZhciAkZ3R5cGVf
Y29uc3RhbnRzICAgID0gJyc7Ci0KLSAgICB2YXIgJHRlbXBsYXRlX21hcCAgICAgICA9IGFycmF5
KCdvYmplY3QnID0+IGFycmF5KCdjb25zdHJ1Y3RvcicgPT4gVGVtcGxhdGVzOjpjb25zdHJ1Y3Rv
cl9ib2R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3N0YXRpY19jb25zdHJ1Y3RvcicgPT4gVGVtcGxhdGVzOjpzdGF0aWNfY29uc3RydWN0
b3JfYm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdtZXRob2QnID0+IFRlbXBsYXRlczo6bWV0aG9kX2JvZHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcCcgPT4gVGVtcGxh
dGVzOjpwcm9wX2FjY2VzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Ym94ZWQnICA9PiBhcnJheSgnY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6Ym94ZWRfY29uc3Ry
dWN0b3JfYm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdzdGF0aWNfY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6Ym94ZWRfc3RhdGlj
X2NvbnN0cnVjdG9yX2JvZHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnbWV0aG9kJyA9PiBUZW1wbGF0ZXM6OmJveGVkX21ldGhvZF9ib2R5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Byb3AnID0+IFRlbXBsYXRlczo6Ym94ZWRfcHJvcF9hY2Nlc3MpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZScgPT4gYXJyYXkoJ21ldGhvZCcgPT4gVGVt
cGxhdGVzOjptZXRob2RfYm9keSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncG9pbnRlcicgPT4gYXJyYXkoJ21ldGhvZCcgPT4gVGVtcGxhdGVzOjpwb2ludGVyX21ldGhv
ZF9ib2R5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICB2YXIg
JGhhbmRsZXJzICAgICAgICAgICA9IGFycmF5KCdyZWFkX3Byb3BlcnR5JywgJ3dyaXRlX3Byb3Bl
cnR5JywgJ2dldF9wcm9wZXJ0aWVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZWFkX2RpbWVuc2lvbicsICd3cml0ZV9kaW1lbnNpb24nLCAnaGFzX2RpbWVuc2lvbics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5zZXRfZGltZW5zaW9uJywg
J2NvdW50X2VsZW1lbnRzJyk7Ci0gICAgdmFyICRjb3ZlciAgICAgICAgICAgICAgPSBhcnJheSgp
OwotCi0gICAgZnVuY3Rpb24gR2VuZXJhdG9yKCYkcGFyc2VyLCAmJG92ZXJyaWRlcywgJHByZWZp
eCwgJGZ1bmN0aW9uX2NsYXNzKQotICAgIHsKLSAgICAgICAgJHRoaXMtPnBhcnNlciAgICA9ICYk
cGFyc2VyOwotICAgICAgICAkdGhpcy0+b3ZlcnJpZGVzID0gJiRvdmVycmlkZXM7Ci0gICAgICAg
ICR0aGlzLT5wcmVmaXggICAgPSB1Y2ZpcnN0KCRwcmVmaXgpOwotICAgICAgICAkdGhpcy0+bHBy
ZWZpeCAgID0gc3RydG9sb3dlcigkcHJlZml4KTsKLSAgICAgICAgJHRoaXMtPmZ1bmN0aW9uX2Ns
YXNzID0gJGZ1bmN0aW9uX2NsYXNzOwotCi0gICAgICAgICR0aGlzLT5jb3ZlclsiZnVuY3MiXSA9
IG5ldyBDb3ZlcmFnZSgiRnVuY3Rpb25zIik7Ci0gICAgICAgICR0aGlzLT5jb3ZlclsibWV0aG9k
cyJdID0gbmV3IENvdmVyYWdlKCJNZXRob2RzIik7Ci0gICAgICAgICR0aGlzLT5jb3ZlclsiY3Rv
cnMiXSA9IG5ldyBDb3ZlcmFnZSgiQ29uc3RydWN0b3JzIik7Ci0gICAgICAgICR0aGlzLT5jb3Zl
clsicHJvcHMiXSA9IG5ldyBDb3ZlcmFnZSgiUHJvcGVydHkgYWNjZXNzb3JzIik7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gc2V0X2xvZ2ZpbGUoJGxvZ2ZpbGUpIHsKLSAgICAgICAgJHRoaXMtPmxv
Z2ZpbGUgPSBmb3BlbigkbG9nZmlsZSwgJ3cnKTsKLSAgICB9Ci0gICAgCi0gICAgZnVuY3Rpb24g
bG9nX3ByaW50KCkKLSAgICB7Ci0gICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwotICAg
ICAgICBpZiAoY291bnQoJGFyZ3MpID09IDApIHJldHVybjsKLQotICAgICAgICAkZm9ybWF0ID0g
YXJyYXlfc2hpZnQoJGFyZ3MpOwotCi0gICAgICAgICRvdXRwdXQgPSB2c3ByaW50ZigkZm9ybWF0
LCAkYXJncyk7Ci0KLSAgICAgICAgaWYgKCFXSU5fT1MpIHsKLSAgICAgICAgICAgIGVjaG8gJG91
dHB1dDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ3cml0ZSgkdGhpcy0+bG9nZmlsZSwgJG91dHB1
dCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbG9nKCkKLSAgICB7Ci0gICAgICAgICRhcmdzID0g
ZnVuY19nZXRfYXJncygpOwotICAgICAgICBpZiAoY291bnQoJGFyZ3MpID09IDApIHJldHVybjsK
LQotICAgICAgICAkZm9ybWF0ID0gYXJyYXlfc2hpZnQoJGFyZ3MpOwotCi0gICAgICAgIGZ3cml0
ZSgkdGhpcy0+bG9nZmlsZSwgdnNwcmludGYoJGZvcm1hdCwgJGFyZ3MpKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBkaXZlcnQoKQotICAgIHsKLSAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdz
KCk7Ci0gICAgICAgIGlmIChjb3VudCgkYXJncykgPCAyKSByZXR1cm47Ci0KLSAgICAgICAgbGlz
dCAoJGRpdmVydF9pZCwgJGZvcm1hdCkgPSAkYXJnczsKLQotICAgICAgICBAJHRoaXMtPmRpdmVy
c2lvbnNbJGRpdmVydF9pZF0gLj0gdnNwcmludGYoJGZvcm1hdCwgYXJyYXlfc2xpY2UoJGFyZ3Ms
IDIpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiByZWdpc3Rlcl90eXBlcygkcGFyc2VyID0gbnVs
bCkKLSAgICB7Ci0gICAgICAgIGdsb2JhbCAgJG1hdGNoZXI7Ci0KLSAgICAgICAgaWYgKCEkcGFy
c2VyKQotICAgICAgICAgICAgJHBhcnNlciA9ICR0aGlzLT5wYXJzZXI7Ci0KLSAgICAgICAgZm9y
ZWFjaCAoJHBhcnNlci0+b2JqZWN0cyBhcyAkb2JqZWN0KSB7Ci0gICAgICAgICAgICAkbWF0Y2hl
ci0+cmVnaXN0ZXJfb2JqZWN0KCRvYmplY3QtPmNfbmFtZSwgJG9iamVjdC0+dHlwZWNvZGUpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yZWFjaCAoJHBhcnNlci0+aW50ZXJmYWNlcyBhcyAkaW50
ZXJmYWNlKSB7Ci0gICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0ZXJfb2JqZWN0KCRpbnRlcmZh
Y2UtPmNfbmFtZSwgJGludGVyZmFjZS0+dHlwZWNvZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Zm9yZWFjaCAoJHBhcnNlci0+ZW51bXMgYXMgJGVudW0pIHsKLSAgICAgICAgICAgIGlmICgkZW51
bS0+ZGVmX3R5cGUgPT0gJ2ZsYWdzJykKLSAgICAgICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0
ZXJfZmxhZygkZW51bS0+Y19uYW1lLCAkZW51bS0+dHlwZWNvZGUpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICRtYXRjaGVyLT5yZWdpc3Rlcl9lbnVtKCRlbnVtLT5jX25hbWUs
ICRlbnVtLT50eXBlY29kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoICgkcGFyc2Vy
LT5ib3hlZCBhcyAkYm94ZWQpIHsKLSAgICAgICAgICAgICRtYXRjaGVyLT5yZWdpc3Rlcl9ib3hl
ZCgkYm94ZWQtPmNfbmFtZSwgJGJveGVkLT50eXBlY29kZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmb3JlYWNoICgkcGFyc2VyLT5wb2ludGVycyBhcyAkcG9pbnRlcikgewotICAgICAgICAgICAg
JG1hdGNoZXItPnJlZ2lzdGVyX3BvaW50ZXIoJHBvaW50ZXItPmNfbmFtZSwgJHBvaW50ZXItPnR5
cGVjb2RlKTsKLSAgICAgICAgfQotICAgIH0KLQotCi0gICAgZnVuY3Rpb24gd3JpdGVfb3ZlcnJp
ZGUoJG92ZXJyaWRlLCAkaWQpCi0gICAgewotICAgICAgICAkYXJncyA9IGFycmF5X3NsaWNlKGZ1
bmNfZ2V0X2FyZ3MoKSwgMSk7Ci0gICAgICAgIGxpc3QoJGxpbmVubywgJGZpbGVfbmFtZSkgPSAk
dGhpcy0+b3ZlcnJpZGVzLT5nZXRfbGluZV9pbmZvKGpvaW4oJy4nLCAkYXJncykpOyAKLSAgICAg
ICAgJHRoaXMtPmZwLT5zZXRfbGluZSgkbGluZW5vLCAkZmlsZV9uYW1lKTsKLSAgICAgICAgJHRo
aXMtPmZwLT53cml0ZSgkb3ZlcnJpZGUpOwotICAgICAgICAkdGhpcy0+ZnAtPnJlc2V0X2xpbmUo
KTsKLSAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgiXG5cbiIpOwotICAgIH0KLQotCi0gICAgZnVu
Y3Rpb24gd3JpdGVfY2FsbGFibGUoJGNhbGxhYmxlLCAkdGVtcGxhdGUsICRoYW5kbGVfcmV0dXJu
ID0gZmFsc2UsICRpc19tZXRob2QgPSBmYWxzZSwgJGRpY3QgPSBhcnJheSgpKQotICAgIHsKLSAg
ICAgICAgZ2xvYmFsICRtYXRjaGVyOwotCi0gICAgICAgIGlmICgkY2FsbGFibGUtPnZhcmFyZ3Mp
IHsKLSAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3ZhcmFyZ3MgbWV0aG9kcyBub3Qg
c3VwcG9ydGVkJyk7Ci0gICAgICAgIH0KLQotICAgICAgICAkaW5mbyA9IG5ldyBXcmFwcGVyX0lu
Zm8oKTsKLSAgICAgICAgLyoKLSAgICAgICAgICogU2xpZ2h0IGhhY2sgdGhhdCByZWxpZXMgb24g
Ym90aCBwYXJhbWV0ZXJzIGJlaW5nIGZhbHNlIHdoZW4gdXNlZCB0bwotICAgICAgICAgKiB3cml0
ZSBvdXQgYSBjb25zdHJ1Y3Rvci4KLSAgICAgICAgICovCi0gICAgICAgIGlmICghJGhhbmRsZV9y
ZXR1cm4gJiYgISRpc19tZXRob2QpIHsKLSAgICAgICAgICAgICRpbmZvLT5lcnJvcl9hY3Rpb24g
PSAiUEhQR19USFJPV19DT05TVFJVQ1RfRVhDRVBUSU9OKCRkaWN0W2NsYXNzXSkiOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLyogbmVlZCB0aGUgZXh0cmEgY29tbWEgZm9yIG1ldGhvZHMgKi8KLSAg
ICAgICAgaWYgKCRpc19tZXRob2QpIHsKLSAgICAgICAgICAgICRpbmZvLT5hcmdfbGlzdFtdID0g
Jyc7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoICgkY2FsbGFibGUtPnBhcmFtcyBhcyAk
cGFyYW1zX2FycmF5KSB7Ci0gICAgICAgICAgICBsaXN0KCRwYXJhbV90eXBlLCAkcGFyYW1fbmFt
ZSwgJHBhcmFtX2RlZmF1bHQsICRwYXJhbV9udWxsKSA9ICRwYXJhbXNfYXJyYXk7Ci0KLSAgICAg
ICAgICAgIGlmIChpc3NldCgkcGFyYW1fZGVmYXVsdCkgJiYgc3RycG9zKCRpbmZvLT5zcGVjaWZp
ZXJzLCAnfCcpID09PSBmYWxzZSkgewotICAgICAgICAgICAgICAgICRpbmZvLT5hZGRfcGFyc2Vf
bGlzdCgnfCcpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAkaGFuZGxlciA9ICRtYXRj
aGVyLT5nZXQoJHBhcmFtX3R5cGUpOwotICAgICAgICAgICAgJGhhbmRsZXItPndyaXRlX3BhcmFt
KCRwYXJhbV90eXBlLCAkcGFyYW1fbmFtZSwgJHBhcmFtX2RlZmF1bHQsICRwYXJhbV9udWxsLCAk
aW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICAkZGljdFsncmV0dXJuJ10gPSAnJzsKLSAgICAg
ICAgaWYgKCRoYW5kbGVfcmV0dXJuKSB7Ci0gICAgICAgICAgICBpZiAoJGNhbGxhYmxlLT5yZXR1
cm5fdHlwZSAhPT0gbnVsbCAmJgotICAgICAgICAgICAgICAgICRjYWxsYWJsZS0+cmV0dXJuX3R5
cGUgIT0gJ25vbmUnKSB7Ci0gICAgICAgICAgICAgICAgJGRpY3RbJ3JldHVybiddID0gJ3BocF9y
ZXR2YWwgPSAnOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJGhhbmRsZXIgPSAkbWF0Y2hl
ci0+Z2V0KCRjYWxsYWJsZS0+cmV0dXJuX3R5cGUpOwotICAgICAgICAgICAgJGhhbmRsZXItPndy
aXRlX3JldHVybigkY2FsbGFibGUtPnJldHVybl90eXBlLCAkY2FsbGFibGUtPmNhbGxlcl9vd25z
X3JldHVybiwgJGluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzc2V0KCRjYWxsYWJs
ZS0+ZGVwcmVjYXRlZCkpIHsKLSAgICAgICAgICAgICRpbmZvLT5wcmVfY29kZVtdID0gc3ByaW50
ZihUZW1wbGF0ZXM6OmRlcHJlY2F0aW9uX21zZywgJGNhbGxhYmxlLT5kZXByZWNhdGVkID8gJyIn
LiRjYWxsYWJsZS0+ZGVwcmVjYXRlZC4nIicgOiAnTlVMTCcpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCFpc3NldCgkZGljdFsnbmFtZSddKSkgewotICAgICAgICAgICAgJGRpY3RbJ25hbWUn
XSA9ICRjYWxsYWJsZS0+bmFtZTsKLSAgICAgICAgfQotICAgICAgICAkZGljdFsnY25hbWUnXSA9
ICRjYWxsYWJsZS0+Y19uYW1lOwotICAgICAgICAkZGljdFsndmFyX2xpc3QnXSA9ICRpbmZvLT5n
ZXRfdmFyX2xpc3QoKTsKLSAgICAgICAgJGRpY3RbJ3NwZWNzJ10gPSAkaW5mby0+c3BlY2lmaWVy
czsKLSAgICAgICAgJGRpY3RbJ3BhcnNlX2xpc3QnXSA9ICRpbmZvLT5nZXRfcGFyc2VfbGlzdCgp
OwotICAgICAgICAkZGljdFsnYXJnX2xpc3QnXSA9ICRpbmZvLT5nZXRfYXJnX2xpc3QoKTsKLSAg
ICAgICAgJGRpY3RbJ3ByZV9jb2RlJ10gPSAkaW5mby0+Z2V0X3ByZV9jb2RlKCk7Ci0gICAgICAg
ICRkaWN0Wydwb3N0X2NvZGUnXSA9ICRpbmZvLT5nZXRfcG9zdF9jb2RlKCk7Ci0KLSAgICAgICAg
aWYgKCFlbXB0eSgkZGljdFsnY3Rvcl93aXRoX3Byb3BzJ10pKSB7Ci0gICAgICAgICAgICAkZGlj
dFsnbl9wYXJhbXMnXSA9IGNvdW50KChhcnJheSkkY2FsbGFibGUtPnBhcmFtcyk7Ci0gICAgICAg
ICAgICAkZGljdFsnbl9hcmdzJ10gPSAkZGljdFsnbl9wYXJhbXMnXSArIDE7Ci0gICAgICAgICAg
ICAkcHJvcF9uYW1lcyA9ICcnOwotICAgICAgICAgICAgZm9yZWFjaCAoJGNhbGxhYmxlLT5wcm9w
ZXJ0aWVzIGFzICRwcm9wKSB7Ci0gICAgICAgICAgICAgICAgJHByb3BfbmFtZXMgLj0gJyInIC4g
JHByb3BbMF0gLiAnIiwgJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRkaWN0Wydwcm9w
cyddID0gJHByb3BfbmFtZXM7Ci0gICAgICAgICAgICAkbiA9IDA7Ci0gICAgICAgICAgICBmb3Ig
KCRpID0gMDsgJGkgPCBjb3VudCgkaW5mby0+cGFyc2VfbGlzdCk7ICRpKyspIHsKLSAgICAgICAg
ICAgICAgICBpZiAoJGluZm8tPnBhcnNlX2xpc3RbJGldICYmICRpbmZvLT5wYXJzZV9saXN0WyRp
XXswfSA9PSAnJicpIHsKLSAgICAgICAgICAgICAgICAgICAgJGluZm8tPnBhcnNlX2xpc3RbJGld
ID0gIiZwaHBfYXJnc1skbl0iOwotICAgICAgICAgICAgICAgICAgICAkbisrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRkaWN0WydzcGVjcyddID0gcHJl
Z19yZXBsYWNlKCcsKFtefCEvXSksJywgJ14kMScsICRkaWN0WydzcGVjcyddKTsKLSAgICAgICAg
ICAgICRkaWN0WydwYXJzZV9saXN0J10gPSAkaW5mby0+Z2V0X3BhcnNlX2xpc3QoKTsKLSAgICAg
ICAgICAgICRkaWN0WydwcmVfY29kZSddID0gJyc7Ci0gICAgICAgICAgICAkZGljdFsncG9zdF9j
b2RlJ10gPSAnJzsKLQotICAgICAgICAgICAgLy8gUmVwbGFjZSBhbnkgcmVtb3ZlZCBkZXByZWNh
dGlvbiBtZXNzYWdlcwotICAgICAgICAgICAgaWYgKGlzc2V0KCRjYWxsYWJsZS0+ZGVwcmVjYXRl
ZCkpIHsKLSAgICAgICAgICAgICAgICAkZGljdFsncHJlX2NvZGUnXSA9IHNwcmludGYoVGVtcGxh
dGVzOjpkZXByZWNhdGlvbl9tc2csICRjYWxsYWJsZS0+ZGVwcmVjYXRlZCA/ICciJy4kY2FsbGFi
bGUtPmRlcHJlY2F0ZWQuJyInIDogJ05VTEwnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiBhcHJpbnRmKCR0ZW1wbGF0ZSwgJGRpY3QpOwotICAgIH0KLQotCi0g
ICAgZnVuY3Rpb24gd3JpdGVfbWV0aG9kcygkb2JqZWN0KQotICAgIHsKLSAgICAgICAgJHRoaXMt
PmxvZ19wcmludCgiICAlLTIwcyAiLCAibWV0aG9kcyIpOwotCi0gICAgICAgICRudW1fd3JpdHRl
biA9ICRudW1fc2tpcHBlZCA9IDA7Ci0gICAgICAgICRtZXRob2RfZW50cmllcyA9IGFycmF5KCk7
Ci0KLSAgICAgICAgJG1ldGhvZHMgPSAkdGhpcy0+cGFyc2VyLT5maW5kX21ldGhvZHMoJG9iamVj
dCk7Ci0KLSAgICAgICAgJGRpY3RbJ2NsYXNzJ10gPSAkb2JqZWN0LT5jX25hbWU7Ci0gICAgICAg
ICRkaWN0WydzY29wZSddID0gJG9iamVjdC0+Y19uYW1lOwotICAgICAgICAkZGljdFsndHlwZWNv
ZGUnXSA9ICRvYmplY3QtPnR5cGVjb2RlOwotCi0gICAgICAgIHN3aXRjaCAoJG9iamVjdC0+ZGVm
X3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6Ci0gICAgICAgICAgICBjYXNlICdp
bnRlcmZhY2UnOgotICAgICAgICAgICAgICAgICRkaWN0WydjYXN0J10gPSBwcmVnX3JlcGxhY2Uo
JyFfVFlQRV8hJywgJ18nLCAkb2JqZWN0LT50eXBlY29kZSwgMSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgJ2JveGVkJzoKLSAgICAgICAgICAgIGNhc2UgJ3Bv
aW50ZXInOgotICAgICAgICAgICAgICAgICRkaWN0WydjYXN0J10gPSAkb2JqZWN0LT5jX25hbWUg
LiAnIConOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBkZWZpbml0aW9u
IHR5cGUiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgICRv
YmplY3QtPm1ldGhvZHMgPSBhcnJheSgpOwotICAgICAgICAkbWV0aG9kYXJnaW5mb3MgPSAnJzsK
LQotICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbWV0aG9kKSB7Ci0gICAgICAgICAgICAk
bWV0aG9kX25hbWUgPSAkbWV0aG9kLT5jX25hbWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IC8qIHNraXAgaWdub3JlZCBtZXRob2RzICovCi0gICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJy
aWRlcy0+aXNfaWdub3JlZCgkbWV0aG9kX25hbWUpKSBjb250aW51ZTsKLQotICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKSA9
ICR0aGlzLT5nZW5SZWZsZWN0aW9uQXJnSW5mbygkbWV0aG9kLCAkb2JqZWN0KTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoKCRvdmVycmlkZW4gPSAkdGhpcy0+b3ZlcnJp
ZGVzLT5pc19vdmVycmlkZW4oJG1ldGhvZF9uYW1lKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
bGlzdCgkbWV0aG9kX25hbWUsICRtZXRob2Rfb3ZlcnJpZGUsICRmbGFncykgPSAkdGhpcy0+b3Zl
cnJpZGVzLT5nZXRfb3ZlcnJpZGUoJG1ldGhvZF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc3NldCgkbWV0aG9kX25hbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGhv
ZF9uYW1lID0gJG1ldGhvZC0+bmFtZTsKLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9vdmVy
cmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywgInN0YXRpYyAkMSgk
b2JqZWN0LT5pbl9tb2R1bGUkb2JqZWN0LT5uYW1lLCAkbWV0aG9kX25hbWUpIiwgJG1ldGhvZF9v
dmVycmlkZSk7Ci0gICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkbWV0
aG9kX292ZXJyaWRlLCAkbWV0aG9kLT5jX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAkbWV0
aG9kX2VudHJpZXNbJG1ldGhvZF9uYW1lXSA9IGFycmF5KCRvYmplY3QtPmluX21vZHVsZSAuICRv
YmplY3QtPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJG1ldGhvZF9uYW1lLCAkcmVmbGVjdGlvbl9mdW5jLCAkZmxhZ3MgPyAg
JGZsYWdzIDogKCRtZXRob2QtPnN0YXRpYyA/ICdaRU5EX0FDQ19QVUJMSUN8WkVORF9BQ0NfU1RB
VElDJyA6ICdaRU5EX0FDQ19QVUJMSUMnKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmlzX2RlcHJlY2F0ZWQoJG1l
dGhvZC0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGhvZC0+ZGVwcmVj
YXRlZCA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9kZXByZWNhdGVkKCRtZXRob2QtPmNfbmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCRtZXRob2Qt
PnN0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGUgPSAkdGhpcy0+d3JpdGVf
Y2FsbGFibGUoJG1ldGhvZCwgVGVtcGxhdGVzOjpmdW5jdGlvbl9ib2R5LCB0cnVlLCBmYWxzZSwg
JGRpY3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgJGZsYWdzID0gJ1pFTkRfQUNDX1BVQkxJ
Q3xaRU5EX0FDQ19TVEFUSUMnOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJHRlbXBsYXRlID0gJHRoaXMtPnRlbXBsYXRlX21hcFskb2JqZWN0
LT5kZWZfdHlwZV1bJ21ldGhvZCddOwotICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGUgPSAk
dGhpcy0+d3JpdGVfY2FsbGFibGUoJG1ldGhvZCwgJHRlbXBsYXRlLCB0cnVlLCB0cnVlLCAkZGlj
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgPSAnWkVORF9BQ0NfUFVCTElDJzsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndy
aXRlKCRjb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9lbnRyaWVzWyRtZXRob2Qt
Pm5hbWVdID0gYXJyYXkoJG9iamVjdC0+aW5fbW9kdWxlIC4gJG9iamVjdC0+bmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1l
dGhvZC0+bmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwg
IiVzICAlLTExcyAlczo6JXNcbiIsICRvdmVycmlkZW4gPyAiJSUiOiIgICIsICJtZXRob2QiLCAk
b2JqZWN0LT5jX25hbWUsICRtZXRob2QtPm5hbWUpOwotICAgICAgICAgICAgICAgICRudW1fd3Jp
dHRlbisrOwotICAgICAgICAgICAgICAgICR0aGlzLT5jb3ZlclsibWV0aG9kcyJdLT53cml0dGVu
KCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCRhcmdpbmZvID09PSBu
dWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICRvYmplY3QtPm1ldGhvZHNbJG1ldGhvZC0+bmFt
ZV0gPSAxOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRt
ZXRob2RhcmdpbmZvcyAuPSAkYXJnaW5mbzsKLSAgICAgICAgICAgICAgICAgICAgJG9iamVjdC0+
bWV0aG9kc1skbWV0aG9kLT5uYW1lXSA9IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVy
dCgibm90Z2VuIiwgIiAgJS0xMXMgJXM6OiVzOiAlc1xuIiwgIm1ldGhvZCIsICRvYmplY3QtPmNf
bmFtZSwgJG1ldGhvZC0+bmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAg
JG51bV9za2lwcGVkKys7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJtZXRob2RzIl0t
PnNraXBwZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICgkdGhp
cy0+b3ZlcnJpZGVzLT5oYXZlX2V4dHJhX21ldGhvZHMoJG9iamVjdC0+Y19uYW1lKSkgewotICAg
ICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2V4dHJhX21ldGhvZHMoJG9i
amVjdC0+Y19uYW1lKSBhcyAkbWV0aG9kX25hbWUgPT4gJG92ZXJyaWRlKSB7Ci0gICAgICAgICAg
ICAgICAgbGlzdCgkbWV0aG9kX2JvZHksICRmbGFncykgPSAkb3ZlcnJpZGU7Ci0gICAgICAgICAg
ICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVuYykgPSAkdGhpcy0+Z2VuUmVmbGVj
dGlvbkFyZ0luZm8obnVsbCwgJG9iamVjdCwgJG1ldGhvZF9uYW1lKTsKLQotICAgICAgICAgICAg
ICAgICRtZXRob2RfYm9keSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywg
InN0YXRpYyAkMSgkb2JqZWN0LT5jX25hbWUsICRtZXRob2RfbmFtZSkiLCAkbWV0aG9kX2JvZHkp
OwotICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkbWV0aG9kX2JvZHksICRv
YmplY3QtPmNfbmFtZSwgJG1ldGhvZF9uYW1lKTsKLSAgICAgICAgICAgICAgICAkbWV0aG9kX2Vu
dHJpZXNbJG1ldGhvZF9uYW1lXSA9IGFycmF5KCRvYmplY3QtPmNfbmFtZSwgJG1ldGhvZF9uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzID8gJGZsYWdzIDogJ1pFTkRfQUNDX1BVQkxJQycpOwot
ICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlcyAgJS0xMXMgJXM6OiVzXG4i
LCAiJSUiLCAibWV0aG9kIiwgJG9iamVjdC0+Y19uYW1lLCAkbWV0aG9kX25hbWUpOwotICAgICAg
ICAgICAgICAgICRudW1fd3JpdHRlbisrOwotICAgICAgICAgICAgICAgICR0aGlzLT5jb3Zlclsi
bWV0aG9kcyJdLT53cml0dGVuKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoJGFyZ2luZm8gPT09
IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgJG9iamVjdC0+bWV0aG9kc1skbWV0aG9kX25h
bWVdID0gMTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAk
bWV0aG9kYXJnaW5mb3MgLj0gJGFyZ2luZm87Ci0gICAgICAgICAgICAgICAgICAgICRvYmplY3Qt
Pm1ldGhvZHNbJG1ldGhvZF9uYW1lXSA9IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiKCVkIHdyaXR0ZW4s
ICVkIHNraXBwZWQpXG4iLCAkbnVtX3dyaXR0ZW4sICRudW1fc2tpcHBlZCk7Ci0KLSAgICAgICAg
cmV0dXJuIGFycmF5KCRtZXRob2RfZW50cmllcywgJG1ldGhvZGFyZ2luZm9zKTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiB3cml0ZV9jb25zdHJ1Y3Rvcigkb2JqZWN0KQotICAgIHsKLSAgICAgICAg
JHRoaXMtPmxvZ19wcmludCgiICAlLTIwcyAiLCAiY29uc3RydWN0b3JzIik7Ci0gICAgICAgICRu
dW1fd3JpdHRlbiA9ICRudW1fc2tpcHBlZCA9IDA7Ci0KLSAgICAgICAgJGN0b3JzID0gJHRoaXMt
PnBhcnNlci0+ZmluZF9jb25zdHJ1Y3Rvcigkb2JqZWN0LCAkdGhpcy0+b3ZlcnJpZGVzKTsKLQot
ICAgICAgICAkY3Rvcl9kZWZzID0gYXJyYXkoKTsKLSAgICAgICAgJGN0b3JfYXJnaW5mb3MgPSAn
JzsKLQotICAgICAgICBpZiAoJGN0b3JzKSB7Ci0gICAgICAgICAgICAkZGljdFsnY2xhc3MnXSA9
ICRvYmplY3QtPmNfbmFtZTsKLSAgICAgICAgICAgICRkaWN0Wyd0eXBlY29kZSddID0gJG9iamVj
dC0+dHlwZWNvZGU7Ci0gICAgICAgICAgICAkZmlyc3QgPSAxOwotCi0gICAgICAgICAgICBmb3Jl
YWNoICgkY3RvcnMgYXMgJGN0b3IpIHsKLSAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJy
aWRlcy0+aXNfZGVwcmVjYXRlZCgkY3Rvci0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICAg
ICAkY3Rvci0+ZGVwcmVjYXRlZCA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9kZXByZWNhdGVkKCRj
dG9yLT5jX25hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkY3Rvcl9u
YW1lID0gJGN0b3ItPmNfbmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoJGZpcnN0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICRjdG9yX2ZlX25hbWUgPSAnX19jb25zdHJ1Y3QnOwotICAgICAgICAg
ICAgICAgICAgICAkZmxhZ3MgPSAnWkVORF9BQ0NfUFVCTElDJzsKLSAgICAgICAgICAgICAgICAg
ICAgJHRlbXBsYXRlX25hbWUgPSAnY29uc3RydWN0b3InOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoISRjdG9yLT5jYWxsZXJfb3duc19yZXR1cm4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICRkaWN0Wydwb3N0X2NyZWF0ZV9jb2RlJ10gPSAiXHRnX29iamVjdF9yZWYod3JhcHBlZF9vYmop
OyI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAvLyByZW1vdmUgY2xhc3MgbmFtZSBmcm9tIHRoZSBjb25zdHJ1Y3Rv
ciBuYW1lLCBpLmUuIHR1cm4KLSAgICAgICAgICAgICAgICAgICAgLy8gZ3RrX2J1dHRvbl9uZXdf
d2l0aF9tbmVtb25pYyBpbnRvIG5ld193aXRoX21uZW1vbmljCi0gICAgICAgICAgICAgICAgICAg
ICRjdG9yX2ZlX25hbWUgPSBzdWJzdHIoJGN0b3JfbmFtZSwgc3RybGVuKGNvbnZlcnRfdHlwZW5h
bWUoJGN0b3ItPmlzX2NvbnN0cnVjdG9yX29mKSkpOwotICAgICAgICAgICAgICAgICAgICAkZmxh
Z3MgPSAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQyc7Ci0gICAgICAgICAgICAgICAg
ICAgICR0ZW1wbGF0ZV9uYW1lID0gJ3N0YXRpY19jb25zdHJ1Y3Rvcic7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgJGRpY3RbJ2N0b3Jfd2l0aF9wcm9wcyddID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgLyogVXNlIHNpbXBsZSBuby1wcm9wIGNvbnN0cnVjdG9yIG9ubHkg
Zm9yIGRlZmF1bHQgY29uc3RydWN0b3JzCi0gICAgICAgICAgICAgICAgICAgd2l0aCBubyBwYXJh
bWV0ZXJzLiAqLwotICAgICAgICAgICAgICAgIGlmICgkb2JqZWN0LT5kZWZfdHlwZSA9PSAnb2Jq
ZWN0JyAmJiAhJGN0b3ItPnBhcmFtcyAmJiAkZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAg
JHRlbXBsYXRlID0gVGVtcGxhdGVzOjpjb25zdHJ1Y3Rvcl93aXRob3V0X3Byb3BzOwotICAgICAg
ICAgICAgICAgICAgICAkZGljdFsnY3Rvcl93aXRoX3Byb3BzJ10gPSB0cnVlOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoJG9iamVjdC0+ZGVmX3R5cGUgPT0gJ29iamVjdCcgJiYgJGN0b3It
PnByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgJHRlbXBsYXRlID0gVGVtcGxhdGVz
Ojpjb25zdHJ1Y3Rvcl93aXRoX3Byb3BzOwotICAgICAgICAgICAgICAgICAgICAkZGljdFsnY3Rv
cl93aXRoX3Byb3BzJ10gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICR0ZW1wbGF0ZSA9ICR0aGlzLT50ZW1wbGF0ZV9tYXBbJG9iamVjdC0+ZGVm
X3R5cGVdWyR0ZW1wbGF0ZV9uYW1lXTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlv
bl9mdW5jKSA9ICR0aGlzLT5nZW5SZWZsZWN0aW9uQXJnSW5mbygkY3RvciwgJG9iamVjdCwgJGN0
b3JfZmVfbmFtZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCgkb3ZlcnJpZGVuID0gJHRo
aXMtPm92ZXJyaWRlcy0+aXNfb3ZlcnJpZGVuKCRjdG9yX25hbWUpKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgbGlzdCgsICRjdG9yX292ZXJyaWRlLCAkY3Rvcl9mbGFncykgPSAkdGhpcy0+
b3ZlcnJpZGVzLT5nZXRfb3ZlcnJpZGUoJGN0b3JfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWVtcHR5KCRjdG9yX2ZsYWdzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkZmxhZ3MgPSAkY3Rvcl9mbGFnczsKLSAgICAgICAgICAgICAgICAgICAgICAgICRjdG9yX292
ZXJyaWRlID0gcHJlZ19yZXBsYWNlKCchXi4qKFBIUF9NRVRIT0QpLiokIW0nLCAic3RhdGljICQx
KCRjdG9yLT5pc19jb25zdHJ1Y3Rvcl9vZiwgJGN0b3JfZmVfbmFtZSkiLCAkY3Rvcl9vdmVycmlk
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGN0b3Jf
b3ZlcnJpZGUsICRjdG9yLT5jX25hbWUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgJGRpY3RbJ25hbWUnXSA9ICRjdG9yX2ZlX25hbWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAkY29kZSA9ICR0aGlzLT53cml0ZV9jYWxsYWJsZSgkY3Rv
ciwgJHRlbXBsYXRlLCBmYWxzZSwgZmFsc2UsICRkaWN0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICR0aGlzLT5mcC0+d3JpdGUoJGNvZGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgJGN0b3JfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6Om1ldGhv
ZF9lbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3Rv
ci0+aXNfY29uc3RydWN0b3Jfb2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGN0b3JfZmVfbmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzKTsKLSAgICAg
ICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwgIiVzICAlLTExcyAlczo6JXNcbiIs
ICRvdmVycmlkZW4/IiUlIjoiICAiLCAiY29uc3RydWN0b3IiLCAkb2JqZWN0LT5jX25hbWUsICRj
dG9yX2ZlX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAkbnVtX3dyaXR0ZW4rKzsKLSAgICAg
ICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJjdG9ycyJdLT53cml0dGVuKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAoJGFyZ2luZm8gIT09IG51bGwp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRjdG9yX2FyZ2luZm9zIC49ICRhcmdpbmZvOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9u
ICRlKSB7Ci0gICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoIm5vdGdlbiIsICIgICUt
MTFzICVzOjolczogJXNcbiIsICJjb25zdHJ1Y3RvciIsICRvYmplY3QtPmNfbmFtZSwgJGN0b3Jf
ZmVfbmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgICRudW1fc2tp
cHBlZCsrOwotICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbImN0b3JzIl0tPnNraXBw
ZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gbWFyayBjbGFzcyBhcyBub24taW5zdGFudGlh
YmxlIGRpcmVjdGx5IGlmIHdlIHdlcmUgdHJ5aW5nCi0gICAgICAgICAgICAgICAgICAgIC8vIHRv
IGdlbmVyYXRlIGRlZmF1bHQgY29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRj
dG9yX2ZlX25hbWUgPT0gJ19fY29uc3RydWN0JykgewotICAgICAgICAgICAgICAgICAgICAgICAg
JGN0b3JfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6OmZ1bmN0aW9uX2VudHJ5LCAkY3Rvcl9m
ZV9uYW1lLCAnbm9fZGlyZWN0X2NvbnN0cnVjdG9yJywgJGN0b3JfZmVfbmFtZSwgJ25vX2RpcmVj
dF9jb25zdHJ1Y3RvcicpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICRmaXJzdCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aGF2ZV9leHRyYV9tZXRo
b2RzKCRvYmplY3QtPmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAgICAkY3Rvcl9uYW1lID0gJ19f
Y29uc3RydWN0JzsKLSAgICAgICAgICAgICAgICAkZXh0cmFzID0gJHRoaXMtPm92ZXJyaWRlcy0+
Z2V0X2V4dHJhX21ldGhvZHMoJG9iamVjdC0+Y19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAo
aXNzZXQoJGV4dHJhc1skY3Rvcl9uYW1lXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgJGN0b3Jf
Ym9keSA9ICRleHRyYXNbJGN0b3JfbmFtZV07Ci0gICAgICAgICAgICAgICAgICAgICRjdG9yX2Jv
ZHkgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0aWMgJDEoJG9i
amVjdC0+Y19uYW1lLCAkY3Rvcl9uYW1lKSIsICRjdG9yX2JvZHkpOwotICAgICAgICAgICAgICAg
ICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGN0b3JfYm9keSwgJG9iamVjdC0+Y19uYW1lLCAk
Y3Rvcl9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgJGN0b3JfZGVmc1tdID0gc3ByaW50ZihU
ZW1wbGF0ZXM6Om1ldGhvZF9lbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkb2JqZWN0LT5jX25hbWUsICRjdG9yX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05VTEwnLCAnWkVORF9BQ0NfUFVCTElDJyk7Ci0g
ICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAlLTExcyAlczo6
JXNcbiIsICJjb25zdHJ1Y3RvciIsICRvYmplY3QtPmNfbmFtZSwgJGN0b3JfbmFtZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICRudW1fd3JpdHRlbisrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gbWFyayBjbGFzcyBhcyBub24taW5z
dGFudGlhYmxlIGRpcmVjdGx5LCBvbmx5IGlmIGl0J3Mgbm90Ci0gICAgICAgICAgICAgICAgLy8g
R09iamVjdC4gRm9yIEdPYmplY3QncyB3ZSBsZXQgaXQgY2hhaW4gdXAgdG8gR09iamVjdAotICAg
ICAgICAgICAgICAgIC8vIGNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgaWYgKCRvYmplY3Qt
PmRlZl90eXBlICE9ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICAgICAgICAgICRjdG9yX2RlZnNb
XSA9IHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlvbl9lbnRyeSwgJ19fY29uc3RydWN0JywgJ25v
X2RpcmVjdF9jb25zdHJ1Y3RvcicsICdfX2NvbnN0cnVjdCcsICdub19kaXJlY3RfY29uc3RydWN0
b3InKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICAkdGhpcy0+bG9nX3ByaW50KCIoJWQgd3JpdHRlbiwgJWQgc2tpcHBlZClcbiIsICRudW1f
d3JpdHRlbiwgJG51bV9za2lwcGVkKTsKLSAgICAgICAgcmV0dXJuIGFycmF5KCRjdG9yX2RlZnMs
ICRjdG9yX2FyZ2luZm9zKTsKLSAgICB9Ly9mdW5jdGlvbiB3cml0ZV9jb25zdHJ1Y3Rvcigkb2Jq
ZWN0KQotCi0gICAgZnVuY3Rpb24gd3JpdGVfY2xhc3NlcygpCi0gICAgewotICAgICAgICAkcmVn
aXN0ZXJfY2xhc3NlcyA9ICcnOwotCi0gICAgICAgIGlmICgkdGhpcy0+cGFyc2VyLT5mdW5jdGlv
bnMgfHwgJHRoaXMtPnBhcnNlci0+ZW51bXMpIHsKLSAgICAgICAgICAgICR0aGlzLT5sb2dfcHJp
bnQoIlxuJXNcbiVzXG4iLCAkdGhpcy0+cHJlZml4LCBzdHJfcmVwZWF0KCd+JywgNTApKTsKLSAg
ICAgICAgICAgICRmdW5jX2RlZnMgPSAkdGhpcy0+d3JpdGVfZnVuY3Rpb25zKCk7Ci0KLSAgICAg
ICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9j
bGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ2Nl
JyA9PiAkdGhpcy0+bHByZWZpeCAuICdfY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY2xhc3MnID0+ICR0aGlzLT5wcmVmaXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXRob2RzJyA9PiAkZnVuY19k
ZWZzID8gJHRoaXMtPmxwcmVmaXggLiAnX21ldGhvZHMnIDogJ05VTEwnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50JyA9PiAnTlVMTCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZV9mbGFncycg
PT4gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By
b3BpbmZvJyA9PiAnTlVMTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdjcmVhdGVfZnVuYycgPT4gJ05VTEwnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZWNvZGUnID0+IDApKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8qIEdJbnRlcmZhY2UncyAqLwotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJc
blxuIiAuICR0aGlzLT5tYWtlX2hlYWRlcigiSW50ZXJmYWNlcyIsIDUwLCAnLScpKTsKLSAgICAg
ICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+aW50ZXJmYWNlcyBhcyAkaW50ZXJmYWNlKSB7Ci0g
ICAgICAgICAgICAkcmVnX2luZm8gPSAkdGhpcy0+d3JpdGVfY2xhc3MoJGludGVyZmFjZSk7Ci0g
ICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0
ZXJfaW50ZXJmYWNlLCAkcmVnX2luZm8pOwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlk
ZXMtPmhhdmVfcG9zdF9yZWdpc3RyYXRpb24oJGludGVyZmFjZS0+Y19uYW1lKSkgewotICAgICAg
ICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wb3N0
X3JlZ2lzdHJhdGlvbigkaW50ZXJmYWNlLT5jX25hbWUpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvKiBzaXplIGNoZWNrIGdvZXMgaGVyZSAqLwotICAgICAgICAgICAgaWYgKCR0aGlz
LT5mcC0+Y2hlY2tfc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gd2UgaGl0IHNpemUgdG9v
IGJpZywgd3JpdGUgb3V0IGVuZAotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3By
aW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHRoaXMtPmxwcmVmaXggLiAkdGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMpKTsKLSAg
ICAgICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3NlcyA9ICcnOwotICAgICAgICAgICAgICAgICR0
aGlzLT5mcC0+bmV3X2ZpbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBp
ZiAoISR0aGlzLT5wYXJzZXItPmludGVyZmFjZXMpIHsKLSAgICAgICAgICAgICR0aGlzLT5sb2df
cHJpbnQoIiAgLS0gbm9uZSAtLSAgIik7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBHT2JqZWN0
J3MgKi8KLSAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG5cbiIgLiAkdGhpcy0+bWFrZV9oZWFk
ZXIoIk9iamVjdHMiLCA1MCwgJy0nKSk7Ci0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXIt
Pm9iamVjdHMgYXMgJG9iamVjdCkgewotICAgICAgICAgICAgLyogc2tpcCBpZ25vcmVkIG9iamVj
dHMgKi8KLSAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5pc19pZ25vcmVkKCRvYmpl
Y3QtPmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcbiVzICVz
XG4iLCAkb2JqZWN0LT5jX25hbWUsICJpcyBpZ25vcmVkIGluIHRoZSBvdmVycmlkZXMgZmlsZSIp
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
JHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRvYmplY3QpOwotICAgICAgICAgICAgJHJl
Z2lzdGVyX2NsYXNzZXMgLj0gYXByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzLCAkcmVn
X2luZm8pOwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhhdmVfcG9zdF9yZWdp
c3RyYXRpb24oJG9iamVjdC0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9j
bGFzc2VzIC49ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wb3N0X3JlZ2lzdHJhdGlvbigkb2JqZWN0
LT5jX25hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogc2l6ZSBjaGVjayBnb2Vz
IGhlcmUgKi8KLSAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAtPmNoZWNrX3NpemUoKSkgewotICAg
ICAgICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcsIHdyaXRlIG91dCBlbmQKLSAgICAg
ICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9j
bGFzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5scHJlZml4
IC4gJHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7Ci0gICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2Ns
YXNzZXMgPSAnJzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPm5ld19maWxlKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCEkdGhpcy0+cGFyc2VyLT5vYmplY3Rz
KSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIgIC0tIG5vbmUgLS0gICIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLyogR0JveGVkICovCi0gICAgICAgICR0aGlzLT5sb2dfcHJpbnQo
IlxuXG4iIC4gJHRoaXMtPm1ha2VfaGVhZGVyKCJCb3hlZCBUeXBlcyIsIDUwLCAnLScpKTsKLSAg
ICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+Ym94ZWQgYXMgJGJveGVkKSB7Ci0gICAgICAg
ICAgICAkcmVnX2luZm8gPSAkdGhpcy0+d3JpdGVfY2xhc3MoJGJveGVkKTsKLSAgICAgICAgICAg
ICRyZWdpc3Rlcl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9ib3hlZCwg
JHJlZ19pbmZvKTsKLSAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX3Bvc3Rf
cmVnaXN0cmF0aW9uKCRib3hlZC0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICRyZWdpc3Rl
cl9jbGFzc2VzIC49ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wb3N0X3JlZ2lzdHJhdGlvbigkYm94
ZWQtPmNfbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBzaXplIGNoZWNrIGdv
ZXMgaGVyZSAqLwotICAgICAgICAgICAgaWYgKCR0aGlzLT5mcC0+Y2hlY2tfc2l6ZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gd2UgaGl0IHNpemUgdG9vIGJpZywgd3JpdGUgb3V0IGVuZAotICAg
ICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVy
X2NsYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxwcmVm
aXggLiAkdGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMpKTsKLSAgICAgICAgICAgICAgICAkcmVnaXN0ZXJf
Y2xhc3NlcyA9ICcnOwotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+bmV3X2ZpbGUoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoISR0aGlzLT5wYXJzZXItPmJveGVk
KSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIgIC0tIG5vbmUgLS0gICIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLyogR1BvaW50ZXIgKi8KLSAgICAgICAgJHRoaXMtPmxvZ19wcmlu
dCgiXG5cbiIgLiAkdGhpcy0+bWFrZV9oZWFkZXIoIlBvaW50ZXJzIiwgNTAsICctJykpOwotICAg
ICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5wb2ludGVycyBhcyAkcG9pbnRlcikgewotICAg
ICAgICAgICAgJHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRwb2ludGVyKTsKLSAgICAg
ICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9w
b2ludGVyLCAkcmVnX2luZm8pOwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhh
dmVfcG9zdF9yZWdpc3RyYXRpb24oJHBvaW50ZXItPmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAg
ICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdpc3Ry
YXRpb24oJHBvaW50ZXItPmNfbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBz
aXplIGNoZWNrIGdvZXMgaGVyZSAqLwotICAgICAgICAgICAgaWYgKCR0aGlzLT5mcC0+Y2hlY2tf
c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gd2UgaGl0IHNpemUgdG9vIGJpZywgd3JpdGUg
b3V0IGVuZAotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0
ZXM6OnJlZ2lzdGVyX2NsYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHRoaXMtPmxwcmVmaXggLiAkdGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMpKTsKLSAgICAgICAgICAgICAg
ICAkcmVnaXN0ZXJfY2xhc3NlcyA9ICcnOwotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+bmV3
X2ZpbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoISR0aGlzLT5w
YXJzZXItPnBvaW50ZXJzKSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIgIC0tIG5v
bmUgLS0gICIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogcmVnaXN0ZXIgYWxsIGNsYXNzZXMg
Ki8KLSAgICAgICAgaWYgKCRyZWdpc3Rlcl9jbGFzc2VzICE9PSAnJykgewotICAgICAgICAgICAg
ICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bHByZWZp
eCAuICR0aGlzLT5mcC0+Z2V0X2N1cnJlbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICAkcmVnaXN0ZXJfY2xhc3NlcyA9ICcnOwotICAgICAgICAkdG90YWwgPSAkdGhpcy0+ZnAtPmdl
dF90b3RhbCgpOwotICAgICAgICAkY3VycmVudCA9IDA7Ci0gICAgICAgIHdoaWxlKCRjdXJyZW50
IDwgJHRvdGFsKSB7Ci0gICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMgLj0gJwlwaHBn
XycgLiAkdGhpcy0+bHByZWZpeCAuICRjdXJyZW50IC4gIl9yZWdpc3Rlcl9jbGFzc2VzKFRTUk1M
U19DKTtcbiI7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZV9oZWFkZXIoJ3ZvaWQg
cGhwZ18nIC4gJHRoaXMtPmxwcmVmaXggLiAkY3VycmVudCAuICJfcmVnaXN0ZXJfY2xhc3NlcyhU
U1JNTFNfRCk7XG4iKTsKLSAgICAgICAgICAgICAgICAkY3VycmVudCsrOwotICAgICAgICB9Ci0g
ICAgICAgIC8qIHdyaXRlIHRoZSAibWV0YSIgcmVnaXN0ZXIgY2xhc3MgKi8KLSAgICAgICAgJHRo
aXMtPmZwLT53cml0ZShzcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfY2xhc3NlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5scHJlZml4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMp
KTsKLQotICAgIH0KLSAgICAKLSAgICBmdW5jdGlvbiB3cml0ZV9wcm9wX2hhbmRsZXJzKCRvYmpl
Y3QpCi0gICAgewotICAgICAgICBnbG9iYWwgJG1hdGNoZXI7Ci0KLSAgICAgICAgaWYgKCEkb2Jq
ZWN0LT5maWVsZHMgJiYgISR0aGlzLT5vdmVycmlkZXMtPmhhdmVfZXh0cmFfcHJvcHMoJG9iamVj
dC0+Y19uYW1lKSkgewotICAgICAgICAgICAgcmV0dXJuICdOVUxMJzsKLSAgICAgICAgfQotCi0g
ICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiAgJS0yMHMgIiwgInByb3BlcnR5IGFjY2Vzc29ycyIp
OwotICAgICAgICAkbnVtX3dyaXR0ZW4gPSAkbnVtX3NraXBwZWQgPSAwOwotCi0gICAgICAgICRj
bGFzcyA9IHN0cnRvbG93ZXIoJG9iamVjdC0+Y19uYW1lKTsKLSAgICAgICAgJHByb3BfZGVmcyA9
IGFycmF5KCk7Ci0gICAgICAgICRkaWN0ID0gYXJyYXkoKTsKLQotICAgICAgICBzd2l0Y2ggKCRv
YmplY3QtPmRlZl90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlICdvYmplY3QnOgotICAgICAgICAg
ICAgICAgICRkaWN0WydjYXN0J10gPSBwcmVnX3JlcGxhY2UoJyFfVFlQRV8hJywgJ18nLCAkb2Jq
ZWN0LT50eXBlY29kZSwgMSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
IGNhc2UgJ2JveGVkJzoKLSAgICAgICAgICAgIGNhc2UgJ3BvaW50ZXInOgotICAgICAgICAgICAg
ICAgICRkaWN0WydjYXN0J10gPSAkb2JqZWN0LT5jX25hbWUgLiAnIConOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBkZWZpbml0aW9uIHR5cGUiKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGZvcmVhY2ggKCRvYmplY3QtPmZpZWxk
cyBhcyAkZmllbGQpIHsKLSAgICAgICAgICAgIGxpc3QoJGZpZWxkX3R5cGUsICRmaWVsZF9uYW1l
KSA9ICRmaWVsZDsKLQotICAgICAgICAgICAgJHJlYWRfZnVuYyA9ICJQSFBHX1BST1BfUkVBRF9G
Tigkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSI7Ci0gICAgICAgICAgICAkd3JpdGVfZnVu
YyA9ICdOVUxMJzsKLSAgICAgICAgICAgICRpbmZvID0gbmV3IFdyYXBwZXJfSW5mbygpOwotCi0g
ICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5p
c19wcm9wX292ZXJyaWRlbigkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSkgewotICAgICAg
ICAgICAgICAgICAgICAkb3ZlcnJpZGVzID0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X3Byb3Bfb3Zl
cnJpZGUoJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpc3NldCgkb3ZlcnJpZGVzWydyZWFkJ10pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAkcmVhZF9vdmVycmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBHX1BST1BfUkVBREVSKS4q
JCFtJywgIiQxKCRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpIiwgJG92ZXJyaWRlc1sncmVh
ZCddKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkcmVh
ZF9vdmVycmlkZSwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSwgJ3JlYWQnKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAlLTExcyAlcy0+
JXNcbiIsICJyZWFkZXIgZm9yIiwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcmVhZF9m
dW5jID0gJ05VTEwnOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpc3NldCgkb3ZlcnJpZGVzWyd3cml0ZSddKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgJHdyaXRlX292ZXJyaWRlID0gcHJlZ19yZXBsYWNlKCchXi4qKFBIUEdfUFJPUF9XUklURVIp
LiokIW0nLCAic3RhdGljICQxKCRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpIiwgJG92ZXJy
aWRlc1snd3JpdGUnXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3Zl
cnJpZGUoJG92ZXJyaWRlc1snd3JpdGUnXSwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSwg
J3dyaXRlJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4gIiwg
IiUlJSUgICUtMTFzICVzLT4lc1xuIiwgIndyaXRlciBmb3IiLCAkb2JqZWN0LT5jX25hbWUsICRm
aWVsZF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICRoYW5kbGVyID0gJG1hdGNoZXItPmdldCgkZmllbGRf
dHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICRoYW5kbGVyLT53cml0ZV9yZXR1cm4oJGZpZWxk
X3R5cGUsIGZhbHNlLCAkaW5mbyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgJGRpY3RbJ25hbWUn
XSA9ICRmaWVsZF9uYW1lOwotCi0gICAgICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUo
YXByaW50ZihUZW1wbGF0ZXM6OnByb3BfcmVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdjbGFzcycgPT4gJG9iamVjdC0+Y19uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1l
JyA9PiAkZmllbGRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndmFyX2xpc3QnID0+ICRpbmZvLT5nZXRfdmFyX2xpc3QoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlX2NvZGUn
ID0+ICRpbmZvLT5nZXRfcHJlX2NvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncG9zdF9jb2RlJyA9PiAkaW5mby0+Z2V0X3Bvc3RfY29k
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdwcm9wX2FjY2VzcycgPT4gYXByaW50ZigkdGhpcy0+dGVtcGxhdGVfbWFwWyRvYmplY3QtPmRl
Zl90eXBlXVsncHJvcCddLCAkZGljdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICkpKTsKLSAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVy
dCgiZ2VuIiwgIiAgICAlLTExcyAlcy0+JXNcbiIsICJyZWFkZXIgZm9yIiwgJG9iamVjdC0+Y19u
YW1lLCAkZmllbGRfbmFtZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICRw
cm9wX2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjpwcm9wX2luZm9fZW50cnksIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkX25hbWUsICRyZWFkX2Z1bmMs
ICR3cml0ZV9mdW5jKTsKLSAgICAgICAgICAgICAgICAkbnVtX3dyaXR0ZW4rKzsKLSAgICAgICAg
ICAgICAgICAkdGhpcy0+Y292ZXJbInByb3BzIl0tPndyaXR0ZW4oKTsKLSAgICAgICAgICAgIH0g
Y2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewotICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoIm5v
dGdlbiIsICIgICUtMTFzICVzLT4lczogJXNcbiIsICJyZWFkZXIgZm9yIiwgJG9iamVjdC0+Y19u
YW1lLCAkZmllbGRfbmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAgJG51
bV9za2lwcGVkKys7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJwcm9wcyJdLT5za2lw
cGVkKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoJHRoaXMtPm92
ZXJyaWRlcy0+aGF2ZV9leHRyYV9wcm9wcygkb2JqZWN0LT5jX25hbWUpKSB7Ci0gICAgICAgICAg
ICBmb3JlYWNoICgkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZXh0cmFfcHJvcHMoJG9iamVjdC0+Y19u
YW1lKSBhcyAkcHJvcF9uYW1lID0+ICRvdmVycmlkZXMpIHsKLQotICAgICAgICAgICAgICAgICRy
ZWFkX2Z1bmMgPSAiUEhQR19QUk9QX1JFQURfRk4oJG9iamVjdC0+Y19uYW1lLCAkcHJvcF9uYW1l
KSI7Ci0gICAgICAgICAgICAgICAgJHdyaXRlX2Z1bmMgPSAnTlVMTCc7Ci0gICAgICAgICAgICAg
ICAgJGluZm8gPSBuZXcgV3JhcHBlcl9JbmZvKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNz
ZXQoJG92ZXJyaWRlc1sncmVhZCddKSkgewotICAgICAgICAgICAgICAgICAgICAkcmVhZF9vdmVy
cmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBHX1BST1BfUkVBREVSKS4qJCFtJywgIiQxKCRv
YmplY3QtPmNfbmFtZSwgJHByb3BfbmFtZSkiLCAkb3ZlcnJpZGVzWydyZWFkJ10pOwotICAgICAg
ICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJHJlYWRfb3ZlcnJpZGUsICRvYmpl
Y3QtPmNfbmFtZSwgJHByb3BfbmFtZSwgJ3JlYWQnLCAnZXh0cmEnKTsKLSAgICAgICAgICAgICAg
ICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwgIiUlJSUgICUtMTFzICVzLT4lc1xuIiwgInJlYWRl
ciBmb3IiLCAkb2JqZWN0LT5jX25hbWUsICRwcm9wX25hbWUpOwotICAgICAgICAgICAgICAgICAg
ICAkdGhpcy0+Y292ZXJbInByb3BzIl0tPndyaXR0ZW4oKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAkcmVhZF9mdW5jID0gJ05VTEwnOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3ZlcnJpZGVzWyd3cml0ZSdd
KSkgewotICAgICAgICAgICAgICAgICAgICAkd3JpdGVfb3ZlcnJpZGUgPSBwcmVnX3JlcGxhY2Uo
JyFeLiooUEhQR19QUk9QX1dSSVRFUikuKiQhbScsICJzdGF0aWMgJDEoJG9iamVjdC0+Y19uYW1l
LCAkcHJvcF9uYW1lKSIsICRvdmVycmlkZXNbJ3dyaXRlJ10pOwotICAgICAgICAgICAgICAgICAg
ICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG92ZXJyaWRlc1snd3JpdGUnXSwgJG9iamVjdC0+Y19u
YW1lLCAkcHJvcF9uYW1lLCAnd3JpdGUnLCAnZXh0cmEnKTsKLSAgICAgICAgICAgICAgICAgICAg
JHRoaXMtPmRpdmVydCgiZ2VuICIsICIlJSUlICAlLTExcyAlcy0+JXNcbiIsICJ3cml0ZXIgZm9y
IiwgJG9iamVjdC0+Y19uYW1lLCAkcHJvcF9uYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAkcHJvcF9kZWZzW10gPSBzcHJpbnRmKFRlbXBsYXRlczo6cHJvcF9pbmZv
X2VudHJ5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcm9wX25h
bWUsICRyZWFkX2Z1bmMsICR3cml0ZV9mdW5jKTsKLSAgICAgICAgICAgICAgICAkbnVtX3dyaXR0
ZW4rKzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbInByb3BzIl0tPndyaXR0ZW4oKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIigl
ZCB3cml0dGVuLCAlZCBza2lwcGVkKVxuIiwgJG51bV93cml0dGVuLCAkbnVtX3NraXBwZWQpOwot
Ci0gICAgICAgIGlmICgkcHJvcF9kZWZzKSB7Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRl
KHNwcmludGYoVGVtcGxhdGVzOjpwcm9wX2luZm9faGVhZGVyLCAkY2xhc3MpKTsKLSAgICAgICAg
ICAgICR0aGlzLT5mcC0+d3JpdGUoam9pbignJywgJHByb3BfZGVmcykpOwotICAgICAgICAgICAg
JHRoaXMtPmZwLT53cml0ZShUZW1wbGF0ZXM6OnByb3BfaW5mb19mb290ZXIpOwotICAgICAgICAg
ICAgcmV0dXJuICRjbGFzcyAuICdfcHJvcF9pbmZvJzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHJldHVybiAnTlVMTCc7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3
cml0ZV9vYmplY3RfaGFuZGxlcnMoJG9iamVjdCkKLSAgICB7Ci0gICAgICAgICRoYW5kbGVycyA9
IGFycmF5KCk7Ci0KLSAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhhbmRsZXJzIGFzICRoYW5kbGVy
KSB7Ci0gICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aXNfaGFuZGxlcl9vdmVycmlk
ZW4oJG9iamVjdC0+Y19uYW1lLCAkaGFuZGxlcikpIHsKLSAgICAgICAgICAgICAgICAkb3ZlcnJp
ZGUgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfaGFuZGxlcl9vdmVycmlkZSgkb2JqZWN0LT5jX25h
bWUsICRoYW5kbGVyKTsKLSAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG92
ZXJyaWRlLCAkb2JqZWN0LT5jX25hbWUsICRoYW5kbGVyKTsKLSAgICAgICAgICAgICAgICAkaGFu
ZGxlcnNbXSA9ICRoYW5kbGVyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCEkaGFuZGxlcnMpCi0gICAgICAgICAgICByZXR1cm4gYXJyYXkoJ05VTEwnLCAnJyk7Ci0K
LSAgICAgICAgJGRpY3RbJ2NsYXNzJ10gPSBzdHJ0b2xvd2VyKCRvYmplY3QtPmluX21vZHVsZSAu
ICRvYmplY3QtPm5hbWUpOwotICAgICAgICBzd2l0Y2ggKCRvYmplY3QtPmRlZl90eXBlKSB7Ci0g
ICAgICAgICAgICBjYXNlICdvYmplY3QnOgotICAgICAgICAgICAgICAgICRkaWN0WydjcmVhdGVf
ZnVuYyddID0gJ3BocGdfY3JlYXRlX2dvYmplY3QnOwotICAgICAgICAgICAgICAgICRkaWN0Wydv
cmlnX2hhbmRsZXJzJ10gPSAncGhwZ19nb2JqZWN0X2hhbmRsZXJzJzsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAnYm94ZWQnOgotICAgICAgICAgICAgICAgICRk
aWN0WydjcmVhdGVfZnVuYyddID0gJ3BocGdfY3JlYXRlX2dib3hlZCc7Ci0gICAgICAgICAgICAg
ICAgJGRpY3RbJ29yaWdfaGFuZGxlcnMnXSA9ICdwaHBfZ3RrX2hhbmRsZXJzJzsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAncG9pbnRlcic6Ci0gICAgICAgICAg
ICAgICAgJGRpY3RbJ2NyZWF0ZV9mdW5jJ10gPSAncGhwZ19jcmVhdGVfZ3BvaW50ZXInOwotICAg
ICAgICAgICAgICAgICRkaWN0WydvcmlnX2hhbmRsZXJzJ10gPSAncGhwX2d0a19oYW5kbGVycyc7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigidW5oYW5kbGVkIGRlZmluaXRpb24gdHlwZSIp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgJHRoaXMtPmZw
LT53cml0ZShhcHJpbnRmKFRlbXBsYXRlczo6Y3VzdG9tX2NyZWF0ZV9mdW5jLCAkZGljdCkpOwot
ICAgICAgICAkY3JlYXRlX2Z1bmMgPSAncGhwZ19jcmVhdGVfJyAuICRkaWN0WydjbGFzcyddOwot
Ci0gICAgICAgICRleHRyYV9yZWdfaW5mbyA9IGFwcmludGYoVGVtcGxhdGVzOjpjdXN0b21faGFu
ZGxlcnNfaW5pdCwgJGRpY3QpOwotICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRs
ZXIpIHsKLSAgICAgICAgICAgICRkaWN0WydoYW5kbGVyJ10gPSAkaGFuZGxlcjsKLSAgICAgICAg
ICAgICRleHRyYV9yZWdfaW5mbyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6Y3VzdG9tX2hhbmRsZXJf
c2V0LCAkZGljdCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gYXJyYXkoJGNyZWF0ZV9m
dW5jLCAkZXh0cmFfcmVnX2luZm8pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG1ha2VfbWV0aG9k
X2RlZnMoJGNsYXNzLCAkbWV0aG9kX2VudHJpZXMpCi0gICAgewotICAgICAgICAkbWV0aG9kX2Rl
ZnMgPSBhcnJheSgpOwotCi0gICAgICAgIGlmICgkY2xhc3MtPmRlZl90eXBlID09ICdvYmplY3Qn
KSB7Ci0gICAgICAgICAgICBmb3JlYWNoICgkbWV0aG9kX2VudHJpZXMgYXMgJG1lKSB7Ci0gICAg
ICAgICAgICAgICAgJG1ldGhvZF9kZWZzW10gPSB2c3ByaW50ZihUZW1wbGF0ZXM6Om1ldGhvZF9l
bnRyeSwgJG1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgkY2xhc3MtPmltcGxl
bWVudHMpIHsKLSAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2xhc3MtPmltcGxlbWVudHMgYXMg
JGludGVyZmFjZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbnRlcmZhY2UgPSAkdGhp
cy0+cGFyc2VyLT5pbnRlcmZhY2VzWyRpbnRlcmZhY2VfbmFtZV07Ci0gICAgICAgICAgICAgICAg
ICAgICRpZmFjZV9tZXRob2RzID0gYXJyYXlfZGlmZl9rZXkoJGludGVyZmFjZS0+bWV0aG9kcywg
JG1ldGhvZF9lbnRyaWVzKTsKLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9kZWZzW10gPSAi
XG5cdC8qKiogICAkaW50ZXJmYWNlX25hbWUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucyAgICoq
Ki9cblxuIjsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGZvcmVh
Y2ggKCRpZmFjZV9tZXRob2RzIGFzICRpZmFjZV9tZXRob2Q9PiRkdW1teSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRkdW1teSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHJlZmxlY3Rpb25fZnVuYyA9ICdOVUxMJzsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZmxlY3Rpb25fZnVuYyA9
ICdhcmdpbmZvXycgLiBzdHJ0b2xvd2VyKCRpbnRlcmZhY2UtPmluX21vZHVsZSkgLiAnXycgLiBz
dHJ0b2xvd2VyKCRpbnRlcmZhY2UtPmNfbmFtZSkgLiAnXycuICRpZmFjZV9tZXRob2Q7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kX2Rl
ZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjphbGlhc19lbnRyeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW50ZXJmYWNlX25hbWUsICRpZmFjZV9t
ZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JGlmYWNlX21ldGhvZCwgJHJlZmxlY3Rpb25fZnVuYywgJ1pFTkRfQUNDX1BVQkxJQycpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgaWYgKCRjbGFzcy0+ZGVmX3R5cGUgPT0gJ2JveGVkJyB8fCAkY2xhc3MtPmRl
Zl90eXBlID09ICdwb2ludGVyJykgewotICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhvZF9lbnRy
aWVzIGFzICRtZSkgewotICAgICAgICAgICAgICAgICRtZXRob2RfZGVmc1tdID0gdnNwcmludGYo
VGVtcGxhdGVzOjptZXRob2RfZW50cnksICRtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAoJGNsYXNzLT5kZWZfdHlwZSA9PSAnaW50ZXJmYWNlJykgewotICAgICAgICAgICAg
Zm9yZWFjaCAoJG1ldGhvZF9lbnRyaWVzIGFzICRtZSkgewotICAgICAgICAgICAgICAgICRtZXRo
b2RfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6OmFic19tZXRob2RfZW50cnksICRtZVsxXSwg
JG1lWzBdLCAkbWVbMV0sICRtZVsyXSwgJ1pFTkRfQUNDX1BVQkxJQ3xaRU5EX0FDQ19BQlNUUkFD
VCcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICRtZXRob2Rf
ZGVmczsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3cml0ZV9jbGFzcygkY2xhc3MpCi0gICAgewot
ICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcbiVzXG4lc1xuIiwgJGNsYXNzLT5jX25hbWUsIHN0
cl9yZXBlYXQoJ34nLCA1MCkpOwotCi0gICAgICAgICRjbGFzc19tb2R1bGUgPSBzdHJ0b2xvd2Vy
KCRjbGFzcy0+aW5fbW9kdWxlKTsKLSAgICAgICAgJGNsYXNzX2xuYW1lID0gc3RydG9sb3dlcigk
Y2xhc3MtPm5hbWUpOwotCi0gICAgICAgICRjcmVhdGVfZnVuYyA9ICdOVUxMJzsKLSAgICAgICAg
JGV4dHJhX3JlZ19pbmZvID0gJyc7Ci0gICAgICAgICRjdG9yX2RlZnMgPSBudWxsOwotICAgICAg
ICAkcHJvcF9pbmZvID0gJ05VTEwnOwotICAgICAgICAkY3Rvcl9hcmdpbmZvID0gJyc7Ci0KLSAg
ICAgICAgaWYgKCRjbGFzcy0+ZGVmX3R5cGUgIT0gJ2ludGVyZmFjZScpIHsKLSAgICAgICAgICAg
IC8qIGludGVyZmFjZXMgZG9uJ3QgaGF2ZSB0aGVzZSAqLwotICAgICAgICAgICAgbGlzdCgkY3Rv
cl9kZWZzLCAkY3Rvcl9hcmdpbmZvKSA9ICR0aGlzLT53cml0ZV9jb25zdHJ1Y3RvcigkY2xhc3Mp
OwotICAgICAgICAgICAgJHByb3BfaW5mbyA9ICR0aGlzLT53cml0ZV9wcm9wX2hhbmRsZXJzKCRj
bGFzcyk7Ci0gICAgICAgICAgICBsaXN0KCRjcmVhdGVfZnVuYywgJGV4dHJhX3JlZ19pbmZvKSA9
ICR0aGlzLT53cml0ZV9vYmplY3RfaGFuZGxlcnMoJGNsYXNzKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGxpc3QoJG1ldGhvZF9lbnRyaWVzLCAkbWV0aG9kX2FyZ2luZm8pID0gJHRoaXMtPndyaXRl
X21ldGhvZHMoJGNsYXNzKTsKLSAgICAgICAga3NvcnQoJG1ldGhvZF9lbnRyaWVzKTsKLSAgICAg
ICAgJG1ldGhvZF9kZWZzICAgICAgICAgICA9ICR0aGlzLT5tYWtlX21ldGhvZF9kZWZzKCRjbGFz
cywgJG1ldGhvZF9lbnRyaWVzKTsKLSAgICAgICAgCi0gICAgICAgICRhcmdpbmZvID0gJGN0b3Jf
YXJnaW5mbyAuICRtZXRob2RfYXJnaW5mbzsKLQotICAgICAgICBpZiAoJGN0b3JfZGVmcykgewot
ICAgICAgICAgICAgJG1ldGhvZF9kZWZzICAgICAgICAgICA9IGFycmF5X21lcmdlKCRjdG9yX2Rl
ZnMsICRtZXRob2RfZGVmcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoJG1ldGhvZF9kZWZz
KSB7Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCRhcmdpbmZvKTsKLSAgICAgICAgICAg
ICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OmZ1bmN0aW9uc19kZWNsLCBzdHJ0
b2xvd2VyKCRjbGFzcy0+Y19uYW1lKSkpOwotICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShq
b2luKCcnLCAkbWV0aG9kX2RlZnMpKTsKLSAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoVGVt
cGxhdGVzOjpmdW5jdGlvbnNfZGVjbF9lbmQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRj
bGFzcy0+ZGVmX3R5cGUgPT0gJ29iamVjdCcgJiYgJGNsYXNzLT5pbXBsZW1lbnRzKSB7Ci0gICAg
ICAgICAgICAkaWZhY2VfZW50cmllcyA9IGFycmF5KCk7Ci0gICAgICAgICAgICBmb3JlYWNoICgk
Y2xhc3MtPmltcGxlbWVudHMgYXMgJGludGVyZmFjZSkgewotICAgICAgICAgICAgICAgICRpZmFj
ZV9lbnRyaWVzW10gPSBzdHJ0b2xvd2VyKCRpbnRlcmZhY2UpIC4gJ19jZSc7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAkZXh0cmFfcmVnX2luZm8gLj0gYXByaW50ZihUZW1wbGF0ZXM6Omlt
cGxlbWVudF9pbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcnJheSgnY2UnID0+ICRjbGFzcy0+Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnaWZhY2VzJyA9PiBqb2luKCcsICcsICRpZmFjZV9lbnRyaWVzKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1faWZhY2Vz
JyA9PiBjb3VudCgkaWZhY2VfZW50cmllcykpKTsKLSAgICAgICAgfQotICAgICAgICAvKiBEbyBu
b3QgcmVnaXN0ZXIgZ3R5cGUgY29uc3RhbnRzIGZvciBpbnRlcmZhY2VzLCBzaW5jZSBpbnRlcmZh
Y2VzIHdpbGwgCi0gICAgICAgICAgIG5ldmVyIGJlIGluc3RhbnRpYXRlZCBhbnl3YXkuICovCi0g
ICAgICAgIGlmICgkY2xhc3MtPmRlZl90eXBlICE9ICdpbnRlcmZhY2UnKSB7Ci0gICAgICAgICAg
ICAkdGhpcy0+Z3R5cGVfY29uc3RhbnRzIC49IHNwcmludGYoVGVtcGxhdGVzOjpndHlwZV9jb25z
dGFudCwgJGNsYXNzLT5jZSwgJGNsYXNzLT50eXBlY29kZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gYXJyYXkoJ2NlJyA9PiAkY2xhc3MtPmNlLAotICAgICAgICAgICAgICAgICAgICAg
J2NsYXNzJyA9PiAkY2xhc3MtPmluX21vZHVsZSAuICRjbGFzcy0+bmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICdtZXRob2RzJyA9PiAkbWV0aG9kX2RlZnMgPyBzdHJ0b2xvd2VyKCRjbGFzcy0+
Y19uYW1lKSAuICdfbWV0aG9kcycgOiAnTlVMTCcsCi0gICAgICAgICAgICAgICAgICAgICAncGFy
ZW50JyA9PiAoJGNsYXNzLT5kZWZfdHlwZSA9PSAnb2JqZWN0JyAmJiAkY2xhc3MtPnBhcmVudCkg
PyBzdHJ0b2xvd2VyKCRjbGFzcy0+cGFyZW50KSAuICdfY2UnIDogJ05VTEwnLAotICAgICAgICAg
ICAgICAgICAgICAgJ2NlX2ZsYWdzJyA9PiAkY2xhc3MtPmNlX2ZsYWdzID8gaW1wbG9kZSgnfCcs
ICRjbGFzcy0+Y2VfZmxhZ3MpIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICd0eXBlY29kZScg
PT4gJGNsYXNzLT50eXBlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfZnVuYycg
PT4gJGNyZWF0ZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhX3JlZ19pbmZvJyA9
PiAkZXh0cmFfcmVnX2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAncHJvcGluZm8nID0+ICRw
cm9wX2luZm8pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHdyaXRlX2NvbnN0YW50cygpCi0gICAg
ewotICAgICAgICAkZW51bXNfY29kZSA9ICcnOwotCi0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5w
YXJzZXItPmVudW1zIGFzICRlbnVtKSB7Ci0gICAgICAgICAgICBpZiAoJGVudW0tPnR5cGVjb2Rl
ID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigidW5oYW5k
bGVkIGVudW0gdHlwZSIpOwotICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlbnVtLT52YWx1ZXMg
YXMgJG5pY2sgPT4gJHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAkZW51bXNfY29kZSAuPSBzcHJpbnRmKFRlbXBsYXRlczo6
cmVnaXN0ZXJfZW51bSwgJGVudW0tPmRlZl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGVudW0tPnR5cGVjb2RlLCAkdGhpcy0+bHByZWZpeCAuICdfY2UnKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3By
aW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NvbnN0YW50cywgJHRoaXMtPmxwcmVmaXgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZW51bXNfY29kZSAuICJcbiIgLiAkdGhpcy0+
b3ZlcnJpZGVzLT5nZXRfY29uc3RhbnRzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkdGhpcy0+Z3R5cGVfY29uc3RhbnRzKSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gd3Jp
dGVfZnVuY3Rpb25zKCkKLSAgICB7Ci0gICAgICAgICRmdW5jX2RlZnMgPSBhcnJheSgpOwotCi0g
ICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiAgJS0yMHMiLCAiZnVuY3Rpb25zIik7Ci0gICAgICAg
ICRudW1fd3JpdHRlbiA9ICRudW1fc2tpcHBlZCA9IDA7Ci0KLSAgICAgICAgJGRpY3RbJ3Njb3Bl
J10gPSAkdGhpcy0+cHJlZml4OwotICAgICAgICAKLSAgICAgICAgJGZ1bmN0aW9uX2FyZ2luZm9z
ID0gJyc7Ci0gICAgICAgIAotICAgICAgICAkb2JqZWN0ID0gbmV3IHN0ZGNsYXNzOwotICAgICAg
ICAkb2JqZWN0LT5pbl9tb2R1bGUgPSAkdGhpcy0+cHJlZml4OwotICAgICAgICAkb2JqZWN0LT5j
X25hbWUgPSAkdGhpcy0+cHJlZml4OwotCi0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXIt
PmZ1bmN0aW9ucyBhcyAkZnVuY3Rpb24pIHsKLSAgICAgICAgICAgICRmdW5jX25hbWUgPSAkZnVu
Y3Rpb24tPm5hbWU7Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5uYW1lID09ICRmdW5jdGlv
bi0+Y19uYW1lKSB7Ci0gICAgICAgICAgICAgICAgJGZ1bmNfbmFtZSA9IHN1YnN0cigkZnVuY3Rp
b24tPm5hbWUsIHN0cmxlbigkdGhpcy0+bHByZWZpeCkgKyAxKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAkZnVuY19uYW1lOwotCi0gICAgICAgICAgICAvKiBz
a2lwIGlnbm9yZWQgbWV0aG9kcyAqLwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMt
PmlzX2lnbm9yZWQoJGZ1bmN0aW9uLT5jX25hbWUpKSBjb250aW51ZTsKLQotICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKSA9
ICR0aGlzLT5nZW5SZWZsZWN0aW9uQXJnSW5mbygkZnVuY3Rpb24sICRvYmplY3QpOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICgoJG92ZXJyaWRlbiA9ICR0aGlzLT5vdmVy
cmlkZXMtPmlzX292ZXJyaWRlbigkZnVuY3Rpb24tPmNfbmFtZSkpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxpc3QoJGZ1bmNfbmFtZSwgJGZ1bmN0aW9uX292ZXJyaWRlLCAkZmxhZ3MpID0gJHRo
aXMtPm92ZXJyaWRlcy0+Z2V0X292ZXJyaWRlKCRmdW5jdGlvbi0+Y19uYW1lKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGVtcHR5KCRmdW5jX25hbWUpIHx8ICRmdW5jX25hbWUgPT0gJGZ1bmN0
aW9uLT5jX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAkZnVuY19uYW1lID0gJGZ1bmN0
aW9uLT5uYW1lOwotICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25fb3ZlcnJpZGUgPSBwcmVn
X3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0aWMgJDEoJHRoaXMtPnByZWZp
eCwgJGZ1bmNfbmFtZSkiLCAkZnVuY3Rpb25fb3ZlcnJpZGUpOwotICAgICAgICAgICAgICAgICAg
ICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGZ1bmN0aW9uX292ZXJyaWRlLCAkZnVuY3Rpb24tPmNf
bmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRmdW5jX2RlZnNbXSA9IHNwcmludGYoVGVtcGxh
dGVzOjptZXRob2RfZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHRoaXMtPnByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkZnVuY19uYW1lLCAkcmVmbGVjdGlvbl9mdW5jLCAkZmxhZ3MgPyAkZmxhZ3MgOiAn
WkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQycpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHRoaXMtPndyaXRlX2NhbGxhYmxlKCRm
dW5jdGlvbiwgVGVtcGxhdGVzOjpmdW5jdGlvbl9ib2R5LCB0cnVlLCBmYWxzZSwgJGRpY3QpOwot
ICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCRjb2RlKTsKLSAgICAgICAgICAg
ICAgICAgICAgJGZ1bmNfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6Om1ldGhvZF9lbnRyeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jX25hbWUs
ICRyZWZsZWN0aW9uX2Z1bmMsICdaRU5EX0FDQ19QVUJMSUN8WkVORF9BQ0NfU1RBVElDJyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIl
cyAgJS0xMXMgJXM6OiVzXG4iLCAkb3ZlcnJpZGVuPyIlJSI6IiAgIiwgImZ1bmN0aW9uIiwgJHRo
aXMtPnByZWZpeCwgJGZ1bmN0aW9uLT5uYW1lKTsKLSAgICAgICAgICAgICAgICAkbnVtX3dyaXR0
ZW4rKzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbImZ1bmNzIl0tPndyaXR0ZW4oKTsK
LQotICAgICAgICAgICAgICAgIGlmICgkYXJnaW5mbyAhPT0gbnVsbCkgewotICAgICAgICAgICAg
ICAgICAgICAkZnVuY3Rpb25fYXJnaW5mb3MgLj0gJGFyZ2luZm87Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7Ci0gICAgICAgICAgICAgICAg
JHRoaXMtPmRpdmVydCgibm90Z2VuIiwgIiAgJS0xMXMgJXM6OiVzOiAlc1xuIiwgImZ1bmN0aW9u
IiwgJHRoaXMtPnByZWZpeCwgJGZ1bmN0aW9uLT5uYW1lLCAkZS0+Z2V0TWVzc2FnZSgpKTsKLSAg
ICAgICAgICAgICAgICAkbnVtX3NraXBwZWQrKzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+Y292
ZXJbImZ1bmNzIl0tPnNraXBwZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX2V4dHJhX21ldGhvZHMoJHRoaXMtPnByZWZp
eCkpIHsKLSAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5vdmVycmlkZXMtPmdldF9leHRyYV9t
ZXRob2RzKCR0aGlzLT5wcmVmaXgpIGFzICRmdW5jX25hbWUgPT4gJG92ZXJyaWRlKSB7Ci0gICAg
ICAgICAgICAgICAgbGlzdCgkZnVuY19ib2R5LCAkZmxhZ3MpID0gJG92ZXJyaWRlOwotICAgICAg
ICAgICAgICAgIGxpc3QoJGFyZ2luZm8sICRyZWZsZWN0aW9uX2Z1bmMpID0gJHRoaXMtPmdlblJl
ZmxlY3Rpb25BcmdJbmZvKG51bGwsICRvYmplY3QsICRmdW5jX25hbWUpOwotCi0gICAgICAgICAg
ICAgICAgJGZ1bmNfYm9keSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywg
InN0YXRpYyAkMSgkdGhpcy0+cHJlZml4LCAkZnVuY19uYW1lKSIsICRmdW5jX2JvZHkpOwotICAg
ICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkZnVuY19ib2R5LCAkdGhpcy0+cHJl
Zml4LCAkZnVuY19uYW1lKTsKLSAgICAgICAgICAgICAgICAkZnVuY19kZWZzW10gPSBzcHJpbnRm
KFRlbXBsYXRlczo6bWV0aG9kX2VudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHRoaXMtPnByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRmdW5jX25hbWUsICRyZWZsZWN0aW9uX2Z1bmMsICdaRU5EX0FDQ19QVUJMSUN8WkVO
RF9BQ0NfU1RBVElDJyk7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwgIiUl
JSUgICUtMTFzICVzOjolc1xuIiwgImZ1bmN0aW9uIiwgJHRoaXMtPnByZWZpeCwgJGZ1bmNfbmFt
ZSk7Ci0gICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoJGFyZ2luZm8gIT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uX2Fy
Z2luZm9zIC49ICRhcmdpbmZvOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIHNvcnQoJGZ1bmNfZGVmcyk7Ci0gICAgICAgIGlmICgkZnVuY19k
ZWZzKSB7Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCRmdW5jdGlvbl9hcmdpbmZvcyk7
Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlv
bnNfZGVjbCwgc3RydG9sb3dlcigkdGhpcy0+bHByZWZpeCkpKTsKLSAgICAgICAgICAgICR0aGlz
LT5mcC0+d3JpdGUoam9pbignJywgJGZ1bmNfZGVmcykpOwotICAgICAgICAgICAgJHRoaXMtPmZw
LT53cml0ZShUZW1wbGF0ZXM6OmZ1bmN0aW9uc19kZWNsX2VuZCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICAkdGhpcy0+bG9nX3ByaW50KCIoJWQgd3JpdHRlbiwgJWQgc2tpcHBlZClcbiIsICRudW1f
d3JpdHRlbiwgJG51bV9za2lwcGVkKTsKLSAgICAgICAgcmV0dXJuICRmdW5jX2RlZnM7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gd3JpdGVfcHJvcF9saXN0cygpCi0gICAgewotICAgICAgICBnbG9i
YWwgICRjbGFzc19wcm9wX2xpc3RfaGVhZGVyLAotICAgICAgICAgICAgICAgICRjbGFzc19wcm9w
X2xpc3RfZm9vdGVyOwotICAgICAgICAKLSAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgiXG4iKTsK
LSAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+b2JqZWN0cyBhcyAkb2JqZWN0KSB7Ci0g
ICAgICAgICAgICBpZiAoY291bnQoJG9iamVjdC0+ZmllbGRzKSA9PSAwKSBjb250aW51ZTsKLQot
ICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJpbnRmKCRjbGFzc19wcm9wX2xpc3RfaGVh
ZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ0b2xvd2VyKCRvYmplY3Qt
PmluX21vZHVsZSkgLiAnXycgLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ0
b2xvd2VyKCRvYmplY3QtPm5hbWUpKSk7Ci0gICAgICAgICAgICBmb3JlYWNoICgkb2JqZWN0LT5m
aWVsZHMgYXMgJGZpZWxkX2RlZikgewotICAgICAgICAgICAgICAgIGxpc3QoLCAkZmllbGRfbmFt
ZSkgPSAkZmllbGRfZGVmOwotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoIlx0XCIk
ZmllbGRfbmFtZVwiLFxuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkdGhpcy0+ZnAt
PndyaXRlKCRjbGFzc19wcm9wX2xpc3RfZm9vdGVyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGZ1bmN0aW9uIHdyaXRlX2NvdmVyYWdlX2luZm8oKQotICAgIHsKLSAgICAgICAgJHRoaXMtPmxv
Z19wcmludCgiXG5cbiIpOwotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCR0aGlzLT5tYWtlX2hl
YWRlcigiJHRoaXMtPnByZWZpeCBDb3ZlcmFnZSIpKTsKLQotICAgICAgICBmb3JlYWNoICgkdGhp
cy0+Y292ZXIgYXMgJGNvdmVyYWdlKSB7Ci0gICAgICAgICAgICBsaXN0KCRuYW1lLCAkd3JpdHRl
biwgJHRvdGFsLCAkcGVyY2VudCkgPSAkY292ZXJhZ2UtPmdldF9zdGF0cygpOwotICAgICAgICAg
ICAgaWYgKCR0b3RhbCkgewotICAgICAgICAgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiUtMjBz
OiAlNS4xZiUlIHdyaXR0ZW4gKCVkLyVkKVxuIiwgJG5hbWUsICRwZXJjZW50LCAkd3JpdHRlbiwg
JHRvdGFsKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmxv
Z19wcmludCgiJS0yMHM6IG5vbmUgZm91bmRcbiIsICRuYW1lKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcblxuIik7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gd3JpdGVfY2xhc3NfZW50cmllcygpCi0gICAgewotICAgICAgICAkdGhpcy0+ZnAt
PndyaXRlKCJcbiIpOwotICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5pbnRlcmZhY2Vz
IGFzICRpbnRlcmZhY2UpIHsKLSAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKHNw
cmludGYoVGVtcGxhdGVzOjpjbGFzc19lbnRyeSwgJGludGVyZmFjZS0+Y2UpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXItPm9iamVjdHMgYXMgJG9iamVjdCkg
ewotICAgICAgICAgICAgaWYgKCEkdGhpcy0+b3ZlcnJpZGVzLT5pc19pZ25vcmVkKCRvYmplY3Qt
PmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJp
bnRmKFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICRvYmplY3QtPmNlKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5ib3hlZCBhcyAk
Ym94ZWQpIHsKLSAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKHNwcmludGYoVGVt
cGxhdGVzOjpjbGFzc19lbnRyeSwgJGJveGVkLT5jZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Zm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+cG9pbnRlcnMgYXMgJHBvaW50ZXIpIHsKLSAgICAgICAg
ICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKHNwcmludGYoVGVtcGxhdGVzOjpjbGFzc19lbnRy
eSwgJHBvaW50ZXItPmNlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoJHRoaXMtPnBhcnNl
ci0+ZnVuY3Rpb25zIHx8ICR0aGlzLT5wYXJzZXItPmVudW1zKSB7Ci0gICAgICAgICAgICAkdGhp
cy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRmKFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICR0aGlz
LT5scHJlZml4IC4gJ19jZScpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG1h
a2VfaGVhZGVyKCRzdHJpbmcsICR3aWR0aCA9IDcyLCAkY2hhciA9ICc9JykKLSAgICB7Ci0gICAg
ICAgICRyZXMgPSAiXG4iIC4gc3RyX3JlcGVhdCgkY2hhciwgJHdpZHRoKSAuICJcbiI7Ci0gICAg
ICAgICRyZXMgLj0gc3RyX3BhZCgkc3RyaW5nLCAkd2lkdGgsICIgIiwgU1RSX1BBRF9CT1RIKSAu
ICJcbiI7Ci0gICAgICAgICRyZXMgLj0gc3RyX3JlcGVhdCgkY2hhciwgJHdpZHRoKSAuICJcbiI7
Ci0KLSAgICAgICAgcmV0dXJuICRyZXM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gd3JpdGVfc291
cmNlKCRzYXZlZmlsZSkKLSAgICB7Ci0gICAgICAgICR0aGlzLT5ub3RfZ2VuZXJhdGVkX2xpc3Qg
PSBhcnJheSgpOwotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCR0aGlzLT5tYWtlX2hlYWRlcigi
JHRoaXMtPnByZWZpeCBTdW1tYXJ5IikpOwotCi0gICAgICAgICR0aGlzLT5mcCA9IG5ldyBMaW5l
T3V0cHV0KCRzYXZlZmlsZSk7Ci0gICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKCIjaW5j
bHVkZSBcInBocF9ndGsuaFwiXG4iKTsKLSAgICAgICAgJHRoaXMtPmZwLT53cml0ZV9oZWFkZXIo
IlxuI2lmIEhBVkVfUEhQX0dUS1xuIik7Ci0gICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVy
KCR0aGlzLT5vdmVycmlkZXMtPmdldF9oZWFkZXJzKCkpOwotICAgICAgICAkdGhpcy0+d3JpdGVf
Y2xhc3NfZW50cmllcygpOwotICAgICAgICAkdGhpcy0+d3JpdGVfY2xhc3NlcygpOwotICAgICAg
ICAkdGhpcy0+d3JpdGVfY29uc3RhbnRzKCk7Ci0gICAgICAgICR0aGlzLT5mcC0+d3JpdGVfYWxs
KCJcbiNlbmRpZiAvKiBIQVZFX1BIUF9HVEsgKi9cbiIpOwotCi0gICAgICAgICR0aGlzLT5mcC0+
c2F2ZSgpOwotCi0gICAgICAgICR0aGlzLT5sb2coIlxuXG4iKTsKLSAgICAgICAgJHRoaXMtPmxv
ZygkdGhpcy0+bWFrZV9oZWFkZXIoIiR0aGlzLT5wcmVmaXggR2VuZXJhdGVkIEl0ZW1zIikpOwot
ICAgICAgICAkdGhpcy0+bG9nKCIlJSUlIC0gb3ZlcnJpZGRlblxuXG4iKTsKLSAgICAgICAgJHRo
aXMtPmxvZygiJXMiLCAkdGhpcy0+ZGl2ZXJzaW9uc1siZ2VuIl0pOwotCi0gICAgICAgICR0aGlz
LT5sb2coIlxuXG4iKTsKLSAgICAgICAgJHRoaXMtPmxvZygkdGhpcy0+bWFrZV9oZWFkZXIoIiR0
aGlzLT5wcmVmaXggTm90IEdlbmVyYXRlZCBJdGVtcyIpKTsKLSAgICAgICAgaWYgKCFlbXB0eSgk
dGhpcy0+ZGl2ZXJzaW9uc1sibm90Z2VuIl0pKSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nKCIl
cyIsICR0aGlzLT5kaXZlcnNpb25zWyJub3RnZW4iXSk7Ci0gICAgICAgIH0KLQotICAgICAgICAk
dGhpcy0+d3JpdGVfY292ZXJhZ2VfaW5mbygpOwotICAgICAgICAkdGhpcy0+d3JpdGVfdW51c2Vk
X2luZm8oKTsKLSAgICB9Ci0gICAgCi0gICAgCi0gICAgCi0gICAgLyoqCi0gICAgKiAgIGdlbmVy
YXRlcyBhbiBaRU5EX0FSR0lORk8gZW50cnkgZm9yIHRoaXMgbWV0aG9kCi0gICAgKiAgIGJhc2Vk
IG9uIHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGl0Ci0gICAgKgotICAgICogICBAcGFyYW0g
TWV0aG9kICRtZXRob2QgICAgICAgICAgIFRoZSBtZXRob2QgKG9yIGNvbnN0cnVjdG9yKSB0byBn
ZW5lcmF0ZSB0aGUgYXJnaW5mbyBmb3IgKGlmIE5VTEwsIHRoZW4gd2UgY2hlY2sgZm9yIG92ZXJy
aWRkZW4gb25seSkKLSAgICAqICAgQHBhcmFtIENsYXNzICAkY2xhc3MgICAgICAgICAgICBUaGUg
Y2xhc3Mgb2YgdGhlIG1ldGhvZAotICAgICogICBAcGFyYW0gc3RyaW5nICRkZXRfbWV0aG9kX25h
bWUgIFNwZWNpYWwgZGV0ZXJtaW5lZCBtZXRob2QgbmFtZSBpZiBpdCBjYW4ndCBiZSBjYWxjdWxh
dGVkIGZyb20gdGhlIG1ldGhvZCBvYmplY3QKLSAgICAqICAgQHJldHVybiBhcnJheSBUaGUgYXJn
aW5mbyAoc3RyaW5nKSBhbmQgdGhlIG5hbWUgb2YgdGhlIHJlZmxlY3Rpb24gZnVuY3Rpb24KLSAg
ICAqLwotICAgIGZ1bmN0aW9uIGdlblJlZmxlY3Rpb25BcmdJbmZvKCRtZXRob2QsICRjbGFzcywg
JGRldF9tZXRob2RfbmFtZSA9IG51bGwpCi0gICAgewotICAgICAgICBpZiAoJGRldF9tZXRob2Rf
bmFtZSAhPT0gbnVsbCkgewotICAgICAgICAgICAgJGxlbiA9IDIwIC0gc3RybGVuKCRkZXRfbWV0
aG9kX25hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGxlbiA9IDIwIC0gc3Ry
bGVuKCRtZXRob2QtPm5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgkbGVuIDwgMCkgeyAk
bGVuID0gMDsgfQotCi0gICAgICAgIGlmICgkbWV0aG9kID09PSBudWxsIHx8ICgkb3ZlcnJpZGVu
ID0gJHRoaXMtPm92ZXJyaWRlcy0+aXNfb3ZlcnJpZGVuKCRtZXRob2QtPmNfbmFtZSkpKSB7Ci0g
ICAgICAgICAgICAvL292ZXJyaWRkZW4gZnVuY3Rpb24gLSBleHRyYSBhcmdpbmZvIGluIG92ZXJy
aWRlIGZpbGU/Ci0gICAgICAgICAgICAkY2xhc3NfbmFtZSAgPSAkY2xhc3MtPmNfbmFtZTsKLSAg
ICAgICAgICAgIGlmICgkZGV0X21ldGhvZF9uYW1lICE9PSBudWxsKSB7Ci0gICAgICAgICAgICAg
ICAgJG1ldGhvZF9uYW1lID0gJGRldF9tZXRob2RfbmFtZTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgJG92ZXJyaWRlaW5mbyA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9v
dmVycmlkZSgkbWV0aG9kLT5jX25hbWUpOwotICAgICAgICAgICAgICAgICRtZXRob2RfbmFtZSA9
ICRvdmVycmlkZWluZm9bMF07Ci0gICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRtZXRob2RfbmFt
ZSkgfHwgJG1ldGhvZF9uYW1lID09ICRtZXRob2QtPmNfbmFtZSkgewotICAgICAgICAgICAgICAg
ICAgICAkbWV0aG9kX25hbWUgPSAkbWV0aG9kLT5uYW1lOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhhc19leHRy
YV9hcmdpbmZvKCRjbGFzc19uYW1lLCAkbWV0aG9kX25hbWUpKSB7Ci0gICAgICAgICAgICAgICAg
JHJlZmxlY3Rpb25fZnVuY25hbWUgPSBHZW5lcmF0b3I6OmdldFJlZmxlY3Rpb25GdW5jTmFtZSgk
bWV0aG9kLCAkY2xhc3MsICRkZXRfbWV0aG9kX25hbWUpOwotICAgICAgICAgICAgICAgICRyZWZs
ZWN0aW9uX2Z1bmMgPSBzdHJfcmVwZWF0KCcgJywgJGxlbikgLiAkcmVmbGVjdGlvbl9mdW5jbmFt
ZTsKLQotICAgICAgICAgICAgICAgICRhcmdpbmZvID0gc3RyX3JlcGxhY2UoJ0FSR0lORk9fTkFN
RScsICRyZWZsZWN0aW9uX2Z1bmNuYW1lLCAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZXh0cmFfYXJn
aW5mbygkY2xhc3NfbmFtZSwgJG1ldGhvZF9uYW1lKSk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIC8vbm8gYXJnaW5mbwotICAgICAgICAgICAgICAgICRyZWZsZWN0aW9u
X2Z1bmMgPSBzdHJfcmVwZWF0KCcgJywgJGxlbikgLiAnTlVMTCc7Ci0gICAgICAgICAgICAgICAg
JGFyZ2luZm8gPSBudWxsOwotICAgICAgICAgICAgICAgIC8vdmFyX2R1bXAoJ05vIGFyZ2luZm8g
Zm9yIG92ZXJyaWRkZW4gJyAuICRyZWZsZWN0aW9uX2Z1bmNuYW1lKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICB9IGVsc2UgaWYgKGNvdW50KCRtZXRob2QtPnBhcmFtcykgPT0gMCkgewotICAg
ICAgICAgICAgJHJlZmxlY3Rpb25fZnVuYyA9IHN0cl9yZXBlYXQoJyAnLCAkbGVuKSAuICdOVUxM
JzsKLSAgICAgICAgICAgICRhcmdpbmZvID0gbnVsbDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICRyZWZsZWN0aW9uX2Z1bmNuYW1lID0gR2VuZXJhdG9yOjpnZXRSZWZsZWN0aW9uRnVu
Y05hbWUoJG1ldGhvZCwgJGNsYXNzKTsKLSAgICAgICAgICAgICRyZWZsZWN0aW9uX2Z1bmMgPSBz
dHJfcmVwZWF0KCcgJywgJGxlbikgLiAkcmVmbGVjdGlvbl9mdW5jbmFtZTsKLQotICAgICAgICAg
ICAgJHBhcmFtX2NvdW50ID0gMDsKLSAgICAgICAgICAgICRvcHRwYXJhbV9jb3VudCA9IDA7Ci0g
ICAgICAgICAgICAkYXJncGFyYW1zID0gJyc7Ci0gICAgICAgICAgICBmb3JlYWNoICgkbWV0aG9k
LT5wYXJhbXMgYXMgJHBhcmFtaW5mbykgewotICAgICAgICAgICAgICAgICRwYXJhbV9jb3VudCsr
OwotICAgICAgICAgICAgICAgIGlmICgkcGFyYW1pbmZvWzJdICE9PSBudWxsKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vaWYgdGhpcyBpcyBzZXQsIHdlJ3ZlIGdvdCBhIGRlZmF1bHQgdmFsdWUg
LT4gb3B0aW9uYWwgcGFyYW1ldGVyCi0gICAgICAgICAgICAgICAgICAgICRvcHRwYXJhbV9jb3Vu
dCsrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICRwYXJhbXR5cGUgPSBz
dHJfcmVwbGFjZSgnY29uc3QtJywgJycsIHN0cl9yZXBsYWNlKCcqJywgJycsICRwYXJhbWluZm9b
MF0pKTsKLSAgICAgICAgICAgICAgICBpZiAoR2VuZXJhdG9yOjppc19waHBfdHlwZSgkcGFyYW10
eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAkYXJncGFyYW1zIC49IHNwcmludGYoVGVtcGxh
dGVzOjpyZWZsZWN0aW9uX2FyZywgJHBhcmFtaW5mb1sxXSk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgJGFyZ3BhcmFtcyAuPSBzcHJpbnRmKFRlbXBsYXRl
czo6cmVmbGVjdGlvbl9vYmphcmcsICRwYXJhbWluZm9bMV0sICRwYXJhbXR5cGUpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgkb3B0cGFyYW1fY291
bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgLy93aXRoIG9wdGlvbmFsIGNvdW50Ci0gICAgICAg
ICAgICAgICAgJGFyZ2luZm8gPSBzcHJpbnRmKFRlbXBsYXRlczo6cmVmbGVjdGlvbl9hcmdpbmZv
ZXhfYmVnaW4sICRyZWZsZWN0aW9uX2Z1bmNuYW1lLCAkcGFyYW1fY291bnQgLSAkb3B0cGFyYW1f
Y291bnQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvL3NpbXBsZSBv
bmUKLSAgICAgICAgICAgICAgICAkYXJnaW5mbyA9IHNwcmludGYoVGVtcGxhdGVzOjpyZWZsZWN0
aW9uX2FyZ2luZm9fYmVnaW4sICRyZWZsZWN0aW9uX2Z1bmNuYW1lKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgJGFyZ2luZm8gLj0gJGFyZ3BhcmFtczsKLSAgICAgICAgICAgICRhcmdp
bmZvIC49IFRlbXBsYXRlczo6cmVmbGVjdGlvbl9hcmdpbmZvX2VuZDsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gYXJyYXkoJGFyZ2luZm8sICRyZWZsZWN0aW9uX2Z1bmMpOwotICAgIH0vL2Z1
bmN0aW9uIGdlblJlZmxlY3Rpb25BcmdJbmZvKCRtZXRob2QsICRjbGFzcykKLQotCi0KLSAgICBm
dW5jdGlvbiBnZXRSZWZsZWN0aW9uRnVuY05hbWUoJG1ldGhvZCwgJGNsYXNzLCAkZGV0X21ldGhv
ZF9uYW1lID0gbnVsbCkKLSAgICB7Ci0gICAgICAgIGlmICgkbWV0aG9kID09PSBudWxsKSB7Ci0g
ICAgICAgICAgICAkbWV0aG9kID0gbmV3IHN0ZGNsYXNzOwotICAgICAgICAgICAgJG1ldGhvZC0+
bmFtZSA9ICRkZXRfbWV0aG9kX25hbWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICdhcmdp
bmZvXycgLiBzdHJ0b2xvd2VyKCRjbGFzcy0+aW5fbW9kdWxlKSAuICdfJyAuIHN0cnRvbG93ZXIo
JGNsYXNzLT5jX25hbWUpIC4gJ18nLiAkbWV0aG9kLT5uYW1lOwotICAgIH0vL2Z1bmN0aW9uIGdl
dFJlZmxlY3Rpb25GdW5jTmFtZSgkbWV0aG9kLCAkY2xhc3MsICRkZXRfbWV0aG9kX25hbWUgPSBu
dWxsKQotCi0KLQotICAgIGZ1bmN0aW9uIHdyaXRlX3VudXNlZF9pbmZvKCkKLSAgICB7Ci0gICAg
ICAgICR1bnVzZWQgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfdW51c2VkX2FyZ2luZm8oKTsKLSAg
ICAgICAgCi0gICAgICAgICR1bnVzZWRfY291bnQgPSAwOwotICAgICAgICAkb3V0cHV0ID0gJyc7
Ci0gICAgICAgIGZvcmVhY2ggKCR1bnVzZWQgYXMgJGNsYXNzID0+ICRtZXRob2RzKSB7Ci0gICAg
ICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbWV0aG9kID0+ICR0cnVlKSB7Ci0gICAgICAg
ICAgICAgICAgJHVudXNlZF9jb3VudCsrOwotICAgICAgICAgICAgICAgIGxpc3QoJGxpbmUsICRm
aWxlbmFtZSkgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfbGluZV9pbmZvKCIkY2xhc3MuJG1ldGhv
ZC5hcmdpbmZvIik7Ci0gICAgICAgICAgICAgICAgJG91dHB1dCAuPSAnICcgLiBzdHJfcGFkKCRj
bGFzcyAuICc6OicgLiAkbWV0aG9kLCA0MCkgLiAnICcgLiAkZmlsZW5hbWUgLiAnIycgLiAkbGlu
ZSAuICJcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCR1bnVzZWRf
Y291bnQgPiAwKSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCdVbnVzZWQgYXJnaW5m
byBvdmVycmlkZXM6JyAuICJcbiIpOwotICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgkb3V0
cHV0KTsKLSAgICAgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIlxuXG4iKTsKLSAgICAgICAgfQot
ICAgIH0KLQotCi0KLSAgICAvKioKLSAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIHR5cGUgaXMg
YSBzaW1wbGUgcGhwIHR5cGUKLSAgICAgKgotICAgICAqIEFsbCB1bnN1cHBvcnRlZCBjbGFzc2Vz
IGhhdmUgdG8gYmUgaGVyZSBhcyBwaHA1IGZ1bmN0aW9ucyB3ZWlyZCBpZgotICAgICAqICByZWZs
ZWN0aW9uIGlzIHVzZWQgd2l0aCB0aGlzIG9uZXMuLi4KLSAgICAgKiBVc2UgZ2VuZXJhdG9yL3Jl
ZmxlY3Rpb25fY2xhc3NfY2hlY2tlci5waHAgdG8gbWlzc2luZyBjbGFzc2VzLCBhbmQKLSAgICAg
KiAgYWRkIHRoZW0gaGVyZQotICAgICAqCi0gICAgICogQGFjY2VzcyBwdWJsaWMKLSAgICAgKiBA
cGFyYW0gIHN0cmluZyAkaW5fdHlwZSBUaGUgQyB0eXBlLgotICAgICAqIEByZXR1cm4gYm9vbGVh
biB0cnVlIGlmIGl0cyBhIHNpbXBsZSB0eXBlCi0gICAgICovCi0gICAgZnVuY3Rpb24gaXNfcGhw
X3R5cGUoJGluX3R5cGUpCi0gICAgewotICAgICAgICAvLyBLZXkgPSBDIFR5cGUsIFZhbCA9IFBI
UCB0eXBlCi0gICAgICAgIHN0YXRpYyAkdHlwZV9tYXAgPSBhcnJheSgnbm9uZScgICAgICAgICAg
ID0+ICd2b2lkJywKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYXIqJyAg
ICAgICAgICA9PiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn
Y2hhcionICAgICAgICAgPT4gJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY29uc3QtY2hhcionICAgID0+ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2NvbnN0LWdjaGFyKicgICA9PiAnc3RyaW5nJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzdHJpbmcnICAgICAgICAgPT4gJ3N0cmluZycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdGljX3N0cmluZycgID0+ICdzdHJpbmcnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc2lnbmVkLWNoYXIqJyA9PiAnc3Ry
aW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndWNoYXIqJyAgICAgICAg
PT4gJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFyJyAgICAgICAgICAgPT4gJ2NoYXInLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2djaGFyJyAgICAgICAgICA9PiAnY2hhcics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VjaGFyJyAgICAgICAgID0+ICdj
aGFyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2ludCcgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdnaW50JyAgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VpbnQnICAgICAgICAgID0+ICdpbnQnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0JyAgICAgICAgICA9PiAnaW50JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnc2hvcnQnICAgICAgICAgPT4gJ2lu
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VzaG9ydCcgICAgICAgID0+
ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvbmcnICAgICAgICAg
ICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9uZycgICAg
ICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3Vsb25n
JyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VpbnQ4JyAgICAgICAgID0+ICdpbnQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpbnQ4JyAgICAgICAgICA9PiAn
aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndWludDE2JyAgICAgICAg
PT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2ludDE2JyAgICAg
ICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1aW50MzIn
ICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnaW50
MzInICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnc2l6ZScgICAgICAgICAgPT4gJ2lu
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vYWxsIGVudW1lcmF0aW9uIGNsYXNzZXMgaGVyZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy9ndGsgZW51bXMKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdHdGtBY2NlbEZsYWdzJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnR3RrQW5jaG9yVHlwZScgICAgICAgID0+ICdpbnQnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Fycm93VHlwZScgICAgICAgICA9
PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtBdHRhY2hPcHRp
b25zJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr
QnV0dG9uQm94U3R5bGUnICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0d0a0J1dHRvbnNUeXBlJyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdHdGtDYWxlbmRhckRpc3BsYXlPcHRpb25zJyA9PiAnaW50JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtDZWxsUmVuZGVyZXJTdGF0ZScgPT4g
J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrQ29ybmVyVHlwZScg
ICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0NU
cmVlRXhwYW5kZXJTdHlsZSc9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdHdGtDVHJlZUxpbmVTdHlsZScgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnR3RrQ3VydmVUeXBlJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0RlbGV0ZVR5cGUnICAgICAgICA9PiAnaW50JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtEZXN0cm95Tm90aWZ5JyAgICAg
PT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrRGlhbG9nRmxh
Z3MnICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0
a0RpcmVjdGlvblR5cGUnICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdHdGtFeHBhbmRlclN0eWxlJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnR3RrRmlsZUNob29zZXJBY3Rpb24nID0+ICdpbnQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Z1bmN0aW9uJyAgICAgICAgICA9PiAnaW50
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtJY29uTG9va3VwRmxhZ3Mn
ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrSWNvblNp
emUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0d0a0lNUHJlZWRpdFN0eWxlJyAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHdGtJTVN0YXR1c1N0eWxlJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnR3RrSnVzdGlmaWNhdGlvbicgICAgID0+ICdpbnQnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a01hdGNoVHlwZScgICAgICAgICA9PiAn
aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtNZXNzYWdlVHlwZScg
ICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrTWV0
cmljVHlwZScgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0d0a01vdmVtZW50U3RlcCcgICAgICA9PiAnaW50JywgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnR3RrT3JpZW50YXRpb24nICAgICAgID0+ICdpbnQnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1BhY2tEaXJlY3Rpb24nICAgICA9PiAnaW50JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQYWNrVHlwZScgICAgICAgICAg
PT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGF0aFByaW9y
aXR5VHlwZScgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0
a1BhdGhUeXBlJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdHdGtQb2xpY3lUeXBlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnR3RrUG9zaXRpb25UeXBlJyAgICAgID0+ICdpbnQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByZXZpZXdUeXBlJyAgICAgICA9PiAnaW50
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcm9ncmVzc0Jhck9yaWVu
dGF0aW9uJyA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQ
cm9ncmVzc0JhclN0eWxlJyAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR3RrUmVsaWVmU3R5bGUnICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0d0a1Jlc2l6ZU1vZGUnICAgICAgICA9PiAnaW50JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTY3JvbGxTdGVwJyAgICAgICAgPT4gJ2ludCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU2Nyb2xsVHlwZScgICAgICAg
ID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1NlbGVjdGlv
bk1vZGUnICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH
dGtTaGFkb3dUeXBlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnR3RrU2lkZVR5cGUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0d0a1NpemVHcm91cE1vZGUnICAgICA9PiAnaW50JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTcGluQnV0dG9uVXBkYXRlUG9saWN5JyA9
PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTcGluVHlwZScg
ICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr
U3RhdGVUeXBlJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0d0a1N0b2NrSXRlbScgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdHdGtTdWJtZW51RGlyZWN0aW9uJyAgPT4gJ2ludCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU3VibWVudVBsYWNlbWVudCcgID0+ICdpbnQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1RleHREaXJlY3Rpb24nICAg
ICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUZXh0U2Vh
cmNoRmxhZ3MnICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
R3RrVGV4dFdpbmRvd1R5cGUnICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0d0a1Rvb2xiYXJTdHlsZScgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdHdGtUcmVlQ2VsbERhdGFGdW5jJyAgPT4gJ2ludCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVHJlZU1vZGVsJyAgICAgICAgID0+ICdp
bnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1RyZWVQYXRoJyAgICAg
ICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUcmVl
Vmlld0NvbHVtblNpemluZycgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR3RrVHJlZVZpZXdEcm9wUG9zaXRpb24nID0+ICdpbnQnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0d0a1R5cGUnICAgICAgICAgICAgICA9PiAnaW50JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtVSU1hbmFnZXJJdGVtVHlwZScgPT4gJ2lu
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVXBkYXRlVHlwZScgICAg
ICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Zpc2li
aWxpdHknICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHdGtXaW5kb3dQb3NpdGlvbicgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnR3RrV2luZG93VHlwZScgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0d0a1dyYXBNb2RlJyAgICAgICAgICA9PiAnaW50JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTb3J0VHlwZScgICAgICAgICAgPT4g
J2ludCcsCi0JCQkJCQkJCSAvLyAyLjEwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnR3RrVW5pdCcgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0d0a1RyZWVWaWV3R3JpZExpbmVzJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUZXh0QnVmZmVyVGFyZ2V0SW5mbycgICAgICAg
ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU2Vuc2l0
aXZpdHlUeXBlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR3RrUmVjZW50U29ydFR5cGUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0d0a1JlY2VudE1hbmFnZXJFcnJvcicgICAgICAgICAgPT4g
J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUmVjZW50Q2hvb3Nl
ckVycm9yICcgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0d0a1ByaW50U3RhdHVzJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdHdGtQcmludFF1YWxpdHknICAgICAgICAgID0+ICdpbnQnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByaW50UGFnZXMnICAgICAgICA9PiAn
aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludE9wZXJhdGlv
blJlc3VsdCcgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR3RrUHJpbnRPcGVyYXRpb25BY3Rpb24nICAgICAgICAgID0+ICdpbnQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByaW50RXJyb3InICAgICAgICAgID0+ICdp
bnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByaW50RHVwbGV4JyAg
ICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQ
YWdlU2V0JyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnR3RrUGFnZU9yaWVudGF0aW9uJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdHdGtDZWxsUmVuZGVyZXJBY2NlbE1vZGUnICAgICAgICAgID0+
ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Fzc2lzdGFudFBh
Z2VUeXBlJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vZ2RrIGVudW1zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrQXhp
c1VzZScgICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0dka0JpdG1hcCcgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdHZGtCeXRlT3JkZXInICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnR2RrQ2FwU3R5bGUnICAgICAgICAgID0+ICdpbnQnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0NvbG9yc3BhY2UnICAgICAgICA9
PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtDdXJzb3JUeXBl
JyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2Rr
Q3Jvc3NpbmdNb2RlJyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0dka0RyYWdBY3Rpb24nICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdHZGtEcmFnUHJvdG9jb2wnICAgICAgPT4gJ2ludCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrRXZlbnRFeHBvc2UnICAgICAgID0+ICdpbnQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0V2ZW50S2V5JyAgICAgICAg
ICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtFdmVudFNl
bGVjdGlvbicgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
R2RrRXZlbnRUeXBlJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0dka0V2ZW50TWFzaycgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdHZGtFeHRlbnNpb25Nb2RlJyAgICAgPT4gJ2ludCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrR3Jhdml0eScgICAgICAgICAgID0+ICdp
bnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0ZpbGwnICAgICAgICAg
ICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtGaWxs
UnVsZScgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnR2RrRmlsdGVyUmV0dXJuJyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0dka0ZvbnRUeXBlJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdHZGtGdW5jdGlvbicgICAgICAgICAgPT4gJ2ludCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrR0NWYWx1ZXNNYXNrJyAgICAgID0+
ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0dyYWJTdGF0dXMn
ICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtJ
bWFnZVR5cGUnICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR2RrSW5wdXRDb25kaXRpb24nICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0dka0lucHV0U291cmNlJyAgICAgICA9PiAnaW50JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtJbnB1dE1vZGUnICAgICAgICAgPT4gJ2ludCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrSW50ZXJwVHlwZScgICAgICAg
ID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0pvaW5TdHls
ZScgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH
ZGtMaW5lU3R5bGUnICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnR2RrTW9kaWZpZXJUeXBlJyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0dka05hdGl2ZVdpbmRvdycgICAgICA9PiAnaW50JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtOb3RpZnlUeXBlJyAgICAgICAgPT4gJ2lu
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrT3ZlcmxhcFR5cGUnICAg
ICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka093bmVy
Q2hhbmdlJyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHZGtQaXhidWZBbHBoYU1vZGUnICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnR2RrUHJvcGVydHlTdGF0ZScgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0dka1Byb3BNb2RlJyAgICAgICAgICA9PiAnaW50JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtSZ2JEaXRoZXInICAgICAgICAgPT4g
J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrU2Nyb2xsRGlyZWN0
aW9uJyAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1Nl
dHRpbmdBY3Rpb24nICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdHZGtTdWJ3aW5kb3dNb2RlJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnR2RrVmlzaWJpbGl0eVN0YXRlJyAgID0+ICdpbnQnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1Zpc3VhbFR5cGUnICAgICAgICA9PiAnaW50JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtXaW5kb3dBdHRyaWJ1dGVzVHlw
ZScgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1dpbmRv
d0NsYXNzJyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHZGtXaW5kb3dFZGdlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnR2RrV2luZG93SGludHMnICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0dka1dpbmRvd1N0YXRlJyAgICAgICA9PiAnaW50JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtXaW5kb3dUeXBlSGludCcgICAgPT4g
J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrV01EZWNvcmF0aW9u
JyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1dN
RnVuY3Rpb24nICAgICAgICA9PiAnaW50JywKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbGlic2V4eSBlbnVtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1NleHlJY29uRW50cnlQb3NpdGlvbicgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnU2V4eVNwZWxsRXJyb3InICAgICAgICA9PiAnaW50JywKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3RrZXh0cmEgZW51bXMKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdHdGtJY29uTGlzdE1vZGUnICAgICAgICAgICAgPT4gJ2ludCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdFBsYW5lJyAgICAgICAg
ICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bs
b3RCYXJVbml0cycgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHdGtQbG90Q2FudmFzQWN0aW9uJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdENhbnZhc1NlbGVjdGlvbicgICAgID0+
ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RDYW52YXNQ
b3MnICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHdGtQbG90Q2FudmFzU2VsZWN0aW9uTW9kZScgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnR3RrUGxvdENhbnZhc1Bsb3RQb3MnICAgICAgID0+ICdpbnQnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RQcm9qZWN0aW9uJyAgICAg
ICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90
U2NhbGUnICAgICAgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnR3RrUGxvdFN5bWJvbFR5cGUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RTeW1ib2xTdHlsZScgICAgICAgICA9PiAn
aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90Qm9yZGVyU3R5
bGUnICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
R3RrUGxvdExpbmVTdHlsZScgICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0d0a1Bsb3RDb25uZWN0b3InICAgICAgICAgICA9PiAnaW50JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90RXJyb3InICAgICAgICAgICAg
ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdE9y
aWVudGF0aW9uJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0d0a1Bsb3RBeGlzUG9zJyAgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90TGFiZWxTdHlsZScgICAgICAgICAgPT4gJ2lu
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdFNjYWxlJyAgICAg
ICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0
a1Bsb3RQYWdlU2l6ZScgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdHdGtQbG90UGFnZU9yaWVudGF0aW9uJyAgICAgPT4gJ2ludCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdFVuaXRzJyAgICAgICAgICAgICAg
ID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1NoZWV0QXR0
clR5cGUnICAgICAgICAgICA9PiAnaW50JywKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy9QYW5nbyBlbnVtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bh
bmdvQWxpZ25tZW50JyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdQYW5nb0RpcmVjdGlvbicgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnUGFuZ29FbGxpcHNpemVNb2RlJyAgID0+ICdpbnQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvRm9udE1hc2snICAgICAgICA9PiAnaW50
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb1JlY3RhbmdsZScgICAg
ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGFuZ29TdHJl
dGNoJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1BhbmdvU3R5bGUnICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdQYW5nb1RhYkFsaWduJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnUGFuZ29WYXJpYW50JyAgICAgICAgID0+ICdpbnQnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvV2VpZ2h0JyAgICAgICAgICA9PiAn
aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb1dyYXBNb2RlJyAg
ICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQXRrIGVudW1zCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQXRrUm9sZScgICAgICAgICAgICAgID0+ICdpbnQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F0a1JlbGF0aW9uVHlwZScgICAgICA9PiAnaW50
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdGtTdGF0ZVR5cGUnICAgICAg
ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXRrVGV4dEF0
dHJpYnV0ZScgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvL3NvbWUgbW9yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0dEZXN0cm95Tm90aWZ5JyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHRXJyb3InICAgICAgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnR1NMaXN0JyAgICAgICAgICAgICAgID0+ICdpbnQnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dWYWx1ZScgICAgICAgICAgICAgICA9PiAn
aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2dwb2ludGVyJyAgICAgICAgICAgICA9PiAnaW50JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2dib29sZWFuJyAgICAgICA9PiAnYm9vbCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3VibGUnICAg
ICAgICAgPT4gJ2RvdWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2Rv
dWJsZScgICAgICAgID0+ICdkb3VibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2Zsb2F0JyAgICAgICAgICA9PiAnZG91YmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdnZmxvYXQnICAgICAgICAgPT4gJ2RvdWJsZScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtE
cmF3YWJsZSonICAgPT4gJ0dka1dpbmRvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR2RrQXRvbScgICAgICAgID0+ICdzdHJpbmcnKTsKLSAgICAgICAgCi0gICAgICAgIHJl
dHVybiBpc3NldCgkdHlwZV9tYXBbJGluX3R5cGVdKTsKLSAgICB9Ly9mdW5jdGlvbiBpc19waHBf
dHlwZSgkaW5fdHlwZSkKLX0KLQotLyogc2ltcGxlIGZhdGFsX2Vycm9yIGZ1bmN0aW9uIAotICAg
ICAgICAtIHVzZWZ1bCBpbiA0LjIuMC1kZXYgYW5kIGxhdGVyIGFzIGl0IHdpbGwgYWN0dWFsbHkg
aGFsdCBleGVjdHV0aW9uIG9mIG1ha2UKLSAgICAtIG5lZWRzIHRvIG91dHB1dCB0byBzdGRlcnIg
YXMgdGhlIGRlZmF1bHQgcHJpbnQgd291bGQgZW5kIHVwIGluc2lkZSB0aGUgY29kZQotICAgIC0g
VE9ETyAtIHRoZSBtYWtlIGZpbGUgb3V0cHV0cyBhbiBlbXB0eSBmaWxlIHRvIGdlbl9YWFguYywg
dGhlcmUgbXVzdCBiZSBhCi0gICAgICBiZXR0ZXIgd2F5ICB0byBkZWxldGUgaXQuLi4gLSBieSB1
c2luZyBvdXRwdXQgYnVmZmVyaW5nIG9yIHNvbXRoaW5nPwotKi8gIAotZnVuY3Rpb24gZmF0YWxf
ZXJyb3IoJG1lc3NhZ2UpIHsKLSAgICAkZmggPSBmb3BlbigicGhwOi8vc3RkZXJyIiwgInciKTsK
LSAgICAgICAgZndyaXRlKCRmaCwiXG5cblxuXG4KLT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAKLSAgICBU
aGVyZSB3YXMgYSBTZXJpb3VzIGVycm9yIHdpdGggdGhlIFBIUC1HVEsgZ2VuZXJhdG9yIHNjcmlw
dAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ICAgIAotICAgICRtZXNzYWdlCi09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAg
Ci0gICAgWW91IHNob3VsZCB0eXBlIHRoaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGMgc291cmNlIGlz
IGNvcnJlY3RseQotICAgIGdlbmVyYXRlZCBiZWZvcmUgYXR0ZW1wdGluZyB0byBtYWtlIGFnYWlu
LgotICAgIAotICAgICNmaW5kIC4gfCBncmVwIGRlZnMgfCB4YXJncyB0b3VjaAotCi0gICAgXG5c
blxuXG4iKTsKLSAgICBmY2xvc2UoJGZoKTsKLSAgICBleGl0KDEpOwotfQotCi0KLSRvbGRfZXJy
b3JfcmVwb3J0aW5nID0gZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsKLQotaWYgKCFpc3NldCgkX1NF
UlZFUlsnYXJndiddKSkgCi0gICAgZmF0YWxfZXJyb3IoIgotICAgICAgICBDb3VsZCBub3QgcmVh
ZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZvciBnZW5lcmF0b3IucGhwIAotICAgICAgICBQbGVh
c2UgZW5zdXJlIHRoYXQgdGhpcyBvcHRpb24gaXMgc2V0IGluIHlvdXIgcGhwLmluaQotICAgICAg
ICByZWdpc3Rlcl9hcmdjX2FyZ3YgPSBPbiAgICAgCi0gICAgIik7Ci0KLQotaWYgKGlzc2V0KCRf
U0VSVkVSWydhcmdjJ10pICYmCi0gICAgaXNzZXQoJF9TRVJWRVJbJ2FyZ3YnXSkpIHsKLSAgICAk
YXJnYyA9ICRfU0VSVkVSWydhcmdjJ107Ci0gICAgJGFyZ3YgPSAkX1NFUlZFUlsnYXJndiddOwot
fQotCi0gCi0kcmVzdWx0ID0gQ29uc29sZV9HZXRvcHQ6OmdldG9wdCgkYXJndiwgJ2w6bzpwOmM6
cjpmOnY6Jyk7Ci1pZiAoISRyZXN1bHQgfHwgY291bnQoJHJlc3VsdFsxXSkgPCAyKQotICAgIGRp
ZSgidXNhZ2U6IHBocCBnZW5lcmF0b3IucGhwIFstbCBsb2dmaWxlXSBbLW8gb3ZlcnJpZGVzZmls
ZV0gWy1wIHByZWZpeF0gWy1jIGZ1bmN0aW9uY2xhc3MgXSBbLXIgdHlwZXNmaWxlXSBbLWYgc2F2
ZWZpbGVdIFstdiBndGtsaWJ2ZXJzaW9uXSBkZWZzZmlsZVxuIik7Ci0KLWxpc3QoJG9wdHMsICRh
cmd2KSA9ICRyZXN1bHQ7Ci0KLSRwcmVmaXggPSAnR3RrJzsKLSRmdW5jdGlvbl9jbGFzcyA9IG51
bGw7Ci0kb3ZlcnJpZGVzID0gbnVsbDsKLSRyZWdpc3Rlcl9kZWZzID0gYXJyYXkoKTsKLSRzYXZl
ZmlsZSA9ICd0bXAuYyc7Ci0kbG9nZmlsZSA9ICdwaHA6Ly9zdGRlcnInOwotJGd0a3ZlcnNpb24g
PSAnMi42JzsKLQotZm9yZWFjaCAoJG9wdHMgYXMgJG9wdCkgewotICAgIGxpc3QoJG9wdF9zcGVj
LCAkb3B0X2FyZykgPSAkb3B0OwotICAgIGlmICgkb3B0X3NwZWMgPT0gJ28nKSB7Ci0gICAgICAg
ICRvdmVycmlkZXMgPSAkb3B0X2FyZzsKLSAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAncCcp
IHsKLSAgICAgICAgJHByZWZpeCA9ICRvcHRfYXJnOwotICAgIH0gZWxzZSBpZiAoJG9wdF9zcGVj
ID09ICdjJykgewotICAgICAgICAkZnVuY3Rpb25fY2xhc3MgPSAkb3B0X2FyZzsKLSAgICB9IGVs
c2UgaWYgKCRvcHRfc3BlYyA9PSAncicpIHsKLSAgICAgICAgJHJlZ2lzdGVyX2RlZnNbXSA9ICRv
cHRfYXJnOwotICAgIH0gZWxzZSBpZiAoJG9wdF9zcGVjID09ICdmJykgewotICAgICAgICAkc2F2
ZWZpbGUgPSAkb3B0X2FyZzsKLSAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAnbCcpIHsKLSAg
ICAgICAgJGxvZ2ZpbGUgPSAkb3B0X2FyZzsKLSAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAn
dicpIHsKLSAgICAgICAgJGd0a3ZlcnNpb24gPSAkb3B0X2FyZzsKLSAgICB9Ci19Ci0KLWlmIChm
aWxlX2V4aXN0cyhkaXJuYW1lKCRhcmd2WzFdKSAuICcvYXJnX3R5cGVzLnBocCcpKSB7Ci0gICAg
aW5jbHVkZShkaXJuYW1lKCRhcmd2WzFdKSAuICcvYXJnX3R5cGVzLnBocCcpOwotfQotCi0kb3Zl
cnJpZGVzID0gbmV3IE92ZXJyaWRlcygkb3ZlcnJpZGVzLCAkZ3RrdmVyc2lvbik7Ci0kcGFyc2Vy
ID0gbmV3IERlZnNfUGFyc2VyKCRhcmd2WzFdLCAkZ3RrdmVyc2lvbik7Ci0kZ2VuZXJhdG9yID0g
bmV3IEdlbmVyYXRvcigkcGFyc2VyLCAkb3ZlcnJpZGVzLCAkcHJlZml4LCAkZnVuY3Rpb25fY2xh
c3MpOwotJGdlbmVyYXRvci0+c2V0X2xvZ2ZpbGUoJGxvZ2ZpbGUpOwotZm9yZWFjaCAoJHJlZ2lz
dGVyX2RlZnMgYXMgJGRlZnMpIHsKLSAgICAkdHlwZV9wYXJzZXIgPSBuZXcgRGVmc19QYXJzZXIo
JGRlZnMsICRndGt2ZXJzaW9uKTsKLSAgICAkdHlwZV9wYXJzZXItPnN0YXJ0X3BhcnNpbmcoKTsK
LSAgICAkZ2VuZXJhdG9yLT5yZWdpc3Rlcl90eXBlcygkdHlwZV9wYXJzZXIpOwotfQotJHBhcnNl
ci0+c3RhcnRfcGFyc2luZygpOwotJGdlbmVyYXRvci0+cmVnaXN0ZXJfdHlwZXMoKTsKLSRnZW5l
cmF0b3ItPndyaXRlX3NvdXJjZSgkc2F2ZWZpbGUpOwotCi1lcnJvcl9yZXBvcnRpbmcoJG9sZF9l
cnJvcl9yZXBvcnRpbmcpOwotCi0vKiB2aW06IHNldCBldCBzdHM9NDogKi8KLT8+CmRpZmYgLS1n
aXQgYS9nZW5lcmF0b3IvZ3RrZ2VuZXJhdG9yLnBocCBiL2dlbmVyYXRvci9ndGtnZW5lcmF0b3Iu
cGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNDFmY2UKLS0tIC9kZXYv
bnVsbAorKysgYi9nZW5lcmF0b3IvZ3RrZ2VuZXJhdG9yLnBocApAQCAtMCwwICsxLDE1ODEgQEAK
Kzw/cGhwCisvKgorICogUEhQLUdUSyAtIFRoZSBQSFAgbGFuZ3VhZ2UgYmluZGluZ3MgZm9yIEdU
SysKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwOCBBbmRyZWkgWm1pZXZza2kgPGFuZHJl
aUBwaHAubmV0PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiAK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICogCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z
dG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworLyogJElkJCAqLworCisvKgorICogU2ln
bmlmaWNhbnQgcG9ydGlvbnMgb2YgdGhpcyBnZW5lcmF0b3IgYXJlIGJhc2VkIG9uIHRoZSBweWd0
ayBjb2RlIGdlbmVyYXRvcgorICogZGV2ZWxvcGVkIGJ5IEphbWVzIEhlbnN0cmlkZ2UgPGphbWVz
aEBkYWEuY29tLmF1Pi4KKyAqCisgKi8KKworc2V0X3RpbWVfbGltaXQoMzAwKTsKKworLy8gb3Zl
cnJpZGUgdGhlIGRlZmF1bHQgUEhQIDhNYiBhcyB0aGlzIHNjcmlwdCB0ZW5kcyB0byB1c2UgYSBs
b3QgbW9yZQorLy8gYW5kIGhvcGVmdWxseSByZWR1Y2UgdGhlIHN1cHBvcnQgcXVlc3Rpb25zIGEg
Yml0Li4KKy8vIE1ha2UgaXQgLTEgaW5zdGVhZCA6KQoraW5pX3NldCgnbWVtb3J5X2xpbWl0Jywn
LTEnKTsKKworaWYgKHN0cnN0cihQSFBfT1MsICdXSU4nKSkgeworCWRlZmluZSgnV0lOX09TJywg
dHJ1ZSk7Cit9IGVsc2UgeworCWRlZmluZSgnV0lOX09TJywgZmFsc2UpOworfQorCityZXF1aXJl
IGRpcm5hbWUoX19GSUxFX18pIC4gIi9HZXRvcHQucGhwIjsKK3JlcXVpcmUgZGlybmFtZShfX0ZJ
TEVfXykgLiAiL292ZXJyaWRlLnBocCI7CityZXF1aXJlIGRpcm5hbWUoX19GSUxFX18pIC4gIi9h
cmdfdHlwZXMucGhwIjsKK3JlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiAiL3NjaGVtZS5waHAi
OworcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICIvdGVtcGxhdGVzLnBocCI7CityZXF1aXJl
IGRpcm5hbWUoX19GSUxFX18pIC4gIi9hcnJheV9wcmludGYucGhwIjsKK3JlcXVpcmUgZGlybmFt
ZShfX0ZJTEVfXykgLiAiL2xpbmVvdXRwdXQucGhwIjsKKworY2xhc3MgZ3RrR2VuZXJhdG9yIHsK
KyAgICB2YXIgJHBhcnNlciAgICAgICAgICAgICA9IG51bGw7CisgICAgdmFyICRvdmVycmlkZXMg
ICAgICAgICAgPSBudWxsOworICAgIHZhciAkcHJlZml4ICAgICAgICAgICAgID0gbnVsbDsKKyAg
ICB2YXIgJGxwcmVmaXggICAgICAgICAgICA9IG51bGw7CisgICAgdmFyICRmdW5jdGlvbl9jbGFz
cyAgICAgPSBudWxsOworICAgIHZhciAkbG9nZmlsZSAgICAgICAgICAgID0gbnVsbDsKKyAgICB2
YXIgJGRpdmVyc2lvbnMgICAgICAgICA9IG51bGw7CisKKyAgICB2YXIgJGd0eXBlX2NvbnN0YW50
cyAgICA9ICcnOworCisgICAgdmFyICR0ZW1wbGF0ZV9tYXAgICAgICAgPSBhcnJheSgnb2JqZWN0
JyA9PiBhcnJheSgnY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6Y29uc3RydWN0b3JfYm9keSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz
dGF0aWNfY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6c3RhdGljX2NvbnN0cnVjdG9yX2JvZHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
bWV0aG9kJyA9PiBUZW1wbGF0ZXM6Om1ldGhvZF9ib2R5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3AnID0+IFRlbXBsYXRlczo6cHJv
cF9hY2Nlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JveGVkJyAg
PT4gYXJyYXkoJ2NvbnN0cnVjdG9yJyA9PiBUZW1wbGF0ZXM6OmJveGVkX2NvbnN0cnVjdG9yX2Jv
ZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnc3RhdGljX2NvbnN0cnVjdG9yJyA9PiBUZW1wbGF0ZXM6OmJveGVkX3N0YXRpY19jb25zdHJ1
Y3Rvcl9ib2R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ21ldGhvZCcgPT4gVGVtcGxhdGVzOjpib3hlZF9tZXRob2RfYm9keSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wJyA9
PiBUZW1wbGF0ZXM6OmJveGVkX3Byb3BfYWNjZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdpbnRlcmZhY2UnID0+IGFycmF5KCdtZXRob2QnID0+IFRlbXBsYXRlczo6
bWV0aG9kX2JvZHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50
ZXInID0+IGFycmF5KCdtZXRob2QnID0+IFRlbXBsYXRlczo6cG9pbnRlcl9tZXRob2RfYm9keSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgdmFyICRoYW5kbGVy
cyAgICAgICAgICAgPSBhcnJheSgncmVhZF9wcm9wZXJ0eScsICd3cml0ZV9wcm9wZXJ0eScsICdn
ZXRfcHJvcGVydGllcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVh
ZF9kaW1lbnNpb24nLCAnd3JpdGVfZGltZW5zaW9uJywgJ2hhc19kaW1lbnNpb24nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc2V0X2RpbWVuc2lvbicsICdjb3VudF9l
bGVtZW50cycpOworICAgIHZhciAkY292ZXIgICAgICAgICAgICAgID0gYXJyYXkoKTsKKworICAg
IGZ1bmN0aW9uIGd0a0dlbmVyYXRvcigmJHBhcnNlciwgJiRvdmVycmlkZXMsICRwcmVmaXgsICRm
dW5jdGlvbl9jbGFzcykKKyAgICB7CisgICAgICAgICR0aGlzLT5wYXJzZXIgICAgPSAmJHBhcnNl
cjsKKyAgICAgICAgJHRoaXMtPm92ZXJyaWRlcyA9ICYkb3ZlcnJpZGVzOworICAgICAgICAkdGhp
cy0+cHJlZml4ICAgID0gdWNmaXJzdCgkcHJlZml4KTsKKyAgICAgICAgJHRoaXMtPmxwcmVmaXgg
ICA9IHN0cnRvbG93ZXIoJHByZWZpeCk7CisgICAgICAgICR0aGlzLT5mdW5jdGlvbl9jbGFzcyA9
ICRmdW5jdGlvbl9jbGFzczsKKworICAgICAgICAkdGhpcy0+Y292ZXJbImZ1bmNzIl0gPSBuZXcg
Q292ZXJhZ2UoIkZ1bmN0aW9ucyIpOworICAgICAgICAkdGhpcy0+Y292ZXJbIm1ldGhvZHMiXSA9
IG5ldyBDb3ZlcmFnZSgiTWV0aG9kcyIpOworICAgICAgICAkdGhpcy0+Y292ZXJbImN0b3JzIl0g
PSBuZXcgQ292ZXJhZ2UoIkNvbnN0cnVjdG9ycyIpOworICAgICAgICAkdGhpcy0+Y292ZXJbInBy
b3BzIl0gPSBuZXcgQ292ZXJhZ2UoIlByb3BlcnR5IGFjY2Vzc29ycyIpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHNldF9sb2dmaWxlKCRsb2dmaWxlKSB7CisgICAgICAgICR0aGlzLT5sb2dmaWxl
ID0gZm9wZW4oJGxvZ2ZpbGUsICd3Jyk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGxvZ19w
cmludCgpCisgICAgeworICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKKyAgICAgICAg
aWYgKGNvdW50KCRhcmdzKSA9PSAwKSByZXR1cm47CisKKyAgICAgICAgJGZvcm1hdCA9IGFycmF5
X3NoaWZ0KCRhcmdzKTsKKworICAgICAgICAkb3V0cHV0ID0gdnNwcmludGYoJGZvcm1hdCwgJGFy
Z3MpOworCisgICAgICAgIGlmICghV0lOX09TKSB7CisgICAgICAgICAgICBlY2hvICRvdXRwdXQ7
CisgICAgICAgIH0KKworICAgICAgICBmd3JpdGUoJHRoaXMtPmxvZ2ZpbGUsICRvdXRwdXQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZygpCisgICAgeworICAgICAgICAkYXJncyA9IGZ1bmNf
Z2V0X2FyZ3MoKTsKKyAgICAgICAgaWYgKGNvdW50KCRhcmdzKSA9PSAwKSByZXR1cm47CisKKyAg
ICAgICAgJGZvcm1hdCA9IGFycmF5X3NoaWZ0KCRhcmdzKTsKKworICAgICAgICBmd3JpdGUoJHRo
aXMtPmxvZ2ZpbGUsIHZzcHJpbnRmKCRmb3JtYXQsICRhcmdzKSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZGl2ZXJ0KCkKKyAgICB7CisgICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwor
ICAgICAgICBpZiAoY291bnQoJGFyZ3MpIDwgMikgcmV0dXJuOworCisgICAgICAgIGxpc3QgKCRk
aXZlcnRfaWQsICRmb3JtYXQpID0gJGFyZ3M7CisKKyAgICAgICAgQCR0aGlzLT5kaXZlcnNpb25z
WyRkaXZlcnRfaWRdIC49IHZzcHJpbnRmKCRmb3JtYXQsIGFycmF5X3NsaWNlKCRhcmdzLCAyKSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVnaXN0ZXJfdHlwZXMoJHBhcnNlciA9IG51bGwpCisg
ICAgeworICAgICAgICBnbG9iYWwgICRtYXRjaGVyOworCisgICAgICAgIGlmICghJHBhcnNlcikK
KyAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyOworCisgICAgICAgIGZvcmVhY2gg
KCRwYXJzZXItPm9iamVjdHMgYXMgJG9iamVjdCkgeworICAgICAgICAgICAgJG1hdGNoZXItPnJl
Z2lzdGVyX29iamVjdCgkb2JqZWN0LT5jX25hbWUsICRvYmplY3QtPnR5cGVjb2RlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvcmVhY2ggKCRwYXJzZXItPmludGVyZmFjZXMgYXMgJGludGVyZmFj
ZSkgeworICAgICAgICAgICAgJG1hdGNoZXItPnJlZ2lzdGVyX29iamVjdCgkaW50ZXJmYWNlLT5j
X25hbWUsICRpbnRlcmZhY2UtPnR5cGVjb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcmVh
Y2ggKCRwYXJzZXItPmVudW1zIGFzICRlbnVtKSB7CisgICAgICAgICAgICBpZiAoJGVudW0tPmRl
Zl90eXBlID09ICdmbGFncycpCisgICAgICAgICAgICAgICAgJG1hdGNoZXItPnJlZ2lzdGVyX2Zs
YWcoJGVudW0tPmNfbmFtZSwgJGVudW0tPnR5cGVjb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0ZXJfZW51bSgkZW51bS0+Y19uYW1lLCAkZW51
bS0+dHlwZWNvZGUpOworICAgICAgICB9CisKKyAgICAgICAgZm9yZWFjaCAoJHBhcnNlci0+Ym94
ZWQgYXMgJGJveGVkKSB7CisgICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0ZXJfYm94ZWQoJGJv
eGVkLT5jX25hbWUsICRib3hlZC0+dHlwZWNvZGUpOworICAgICAgICB9CisKKyAgICAgICAgZm9y
ZWFjaCAoJHBhcnNlci0+cG9pbnRlcnMgYXMgJHBvaW50ZXIpIHsKKyAgICAgICAgICAgICRtYXRj
aGVyLT5yZWdpc3Rlcl9wb2ludGVyKCRwb2ludGVyLT5jX25hbWUsICRwb2ludGVyLT50eXBlY29k
ZSk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIGZ1bmN0aW9uIHdyaXRlX292ZXJyaWRlKCRv
dmVycmlkZSwgJGlkKQorICAgIHsKKyAgICAgICAgJGFyZ3MgPSBhcnJheV9zbGljZShmdW5jX2dl
dF9hcmdzKCksIDEpOworICAgICAgICBsaXN0KCRsaW5lbm8sICRmaWxlX25hbWUpID0gJHRoaXMt
Pm92ZXJyaWRlcy0+Z2V0X2xpbmVfaW5mbyhqb2luKCcuJywgJGFyZ3MpKTsgCisgICAgICAgICR0
aGlzLT5mcC0+c2V0X2xpbmUoJGxpbmVubywgJGZpbGVfbmFtZSk7CisgICAgICAgICR0aGlzLT5m
cC0+d3JpdGUoJG92ZXJyaWRlKTsKKyAgICAgICAgJHRoaXMtPmZwLT5yZXNldF9saW5lKCk7Cisg
ICAgICAgICR0aGlzLT5mcC0+d3JpdGUoIlxuXG4iKTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9u
IHdyaXRlX2NhbGxhYmxlKCRjYWxsYWJsZSwgJHRlbXBsYXRlLCAkaGFuZGxlX3JldHVybiA9IGZh
bHNlLCAkaXNfbWV0aG9kID0gZmFsc2UsICRkaWN0ID0gYXJyYXkoKSkKKyAgICB7CisgICAgICAg
IGdsb2JhbCAkbWF0Y2hlcjsKKworICAgICAgICBpZiAoJGNhbGxhYmxlLT52YXJhcmdzKSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCd2YXJhcmdzIG1ldGhvZHMgbm90IHN1cHBv
cnRlZCcpOworICAgICAgICB9CisKKyAgICAgICAgJGluZm8gPSBuZXcgV3JhcHBlcl9JbmZvKCk7
CisgICAgICAgIC8qCisgICAgICAgICAqIFNsaWdodCBoYWNrIHRoYXQgcmVsaWVzIG9uIGJvdGgg
cGFyYW1ldGVycyBiZWluZyBmYWxzZSB3aGVuIHVzZWQgdG8KKyAgICAgICAgICogd3JpdGUgb3V0
IGEgY29uc3RydWN0b3IuCisgICAgICAgICAqLworICAgICAgICBpZiAoISRoYW5kbGVfcmV0dXJu
ICYmICEkaXNfbWV0aG9kKSB7CisgICAgICAgICAgICAkaW5mby0+ZXJyb3JfYWN0aW9uID0gIlBI
UEdfVEhST1dfQ09OU1RSVUNUX0VYQ0VQVElPTigkZGljdFtjbGFzc10pIjsKKyAgICAgICAgfQor
CisgICAgICAgIC8qIG5lZWQgdGhlIGV4dHJhIGNvbW1hIGZvciBtZXRob2RzICovCisgICAgICAg
IGlmICgkaXNfbWV0aG9kKSB7CisgICAgICAgICAgICAkaW5mby0+YXJnX2xpc3RbXSA9ICcnOwor
ICAgICAgICB9CisKKyAgICAgICAgZm9yZWFjaCAoJGNhbGxhYmxlLT5wYXJhbXMgYXMgJHBhcmFt
c19hcnJheSkgeworICAgICAgICAgICAgbGlzdCgkcGFyYW1fdHlwZSwgJHBhcmFtX25hbWUsICRw
YXJhbV9kZWZhdWx0LCAkcGFyYW1fbnVsbCkgPSAkcGFyYW1zX2FycmF5OworCisgICAgICAgICAg
ICBpZiAoaXNzZXQoJHBhcmFtX2RlZmF1bHQpICYmIHN0cnBvcygkaW5mby0+c3BlY2lmaWVycywg
J3wnKSA9PT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAkaW5mby0+YWRkX3BhcnNlX2xpc3Qo
J3wnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgJGhhbmRsZXIgPSAkbWF0Y2hlci0+
Z2V0KCRwYXJhbV90eXBlKTsKKyAgICAgICAgICAgICRoYW5kbGVyLT53cml0ZV9wYXJhbSgkcGFy
YW1fdHlwZSwgJHBhcmFtX25hbWUsICRwYXJhbV9kZWZhdWx0LCAkcGFyYW1fbnVsbCwgJGluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgJGRpY3RbJ3JldHVybiddID0gJyc7CisgICAgICAgIGlm
ICgkaGFuZGxlX3JldHVybikgeworICAgICAgICAgICAgaWYgKCRjYWxsYWJsZS0+cmV0dXJuX3R5
cGUgIT09IG51bGwgJiYKKyAgICAgICAgICAgICAgICAkY2FsbGFibGUtPnJldHVybl90eXBlICE9
ICdub25lJykgeworICAgICAgICAgICAgICAgICRkaWN0WydyZXR1cm4nXSA9ICdwaHBfcmV0dmFs
ID0gJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRoYW5kbGVyID0gJG1hdGNoZXItPmdl
dCgkY2FsbGFibGUtPnJldHVybl90eXBlKTsKKyAgICAgICAgICAgICRoYW5kbGVyLT53cml0ZV9y
ZXR1cm4oJGNhbGxhYmxlLT5yZXR1cm5fdHlwZSwgJGNhbGxhYmxlLT5jYWxsZXJfb3duc19yZXR1
cm4sICRpbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc3NldCgkY2FsbGFibGUtPmRl
cHJlY2F0ZWQpKSB7CisgICAgICAgICAgICAkaW5mby0+cHJlX2NvZGVbXSA9IHNwcmludGYoVGVt
cGxhdGVzOjpkZXByZWNhdGlvbl9tc2csICRjYWxsYWJsZS0+ZGVwcmVjYXRlZCA/ICciJy4kY2Fs
bGFibGUtPmRlcHJlY2F0ZWQuJyInIDogJ05VTEwnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghaXNzZXQoJGRpY3RbJ25hbWUnXSkpIHsKKyAgICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAk
Y2FsbGFibGUtPm5hbWU7CisgICAgICAgIH0KKyAgICAgICAgJGRpY3RbJ2NuYW1lJ10gPSAkY2Fs
bGFibGUtPmNfbmFtZTsKKyAgICAgICAgJGRpY3RbJ3Zhcl9saXN0J10gPSAkaW5mby0+Z2V0X3Zh
cl9saXN0KCk7CisgICAgICAgICRkaWN0WydzcGVjcyddID0gJGluZm8tPnNwZWNpZmllcnM7Cisg
ICAgICAgICRkaWN0WydwYXJzZV9saXN0J10gPSAkaW5mby0+Z2V0X3BhcnNlX2xpc3QoKTsKKyAg
ICAgICAgJGRpY3RbJ2FyZ19saXN0J10gPSAkaW5mby0+Z2V0X2FyZ19saXN0KCk7CisgICAgICAg
ICRkaWN0WydwcmVfY29kZSddID0gJGluZm8tPmdldF9wcmVfY29kZSgpOworICAgICAgICAkZGlj
dFsncG9zdF9jb2RlJ10gPSAkaW5mby0+Z2V0X3Bvc3RfY29kZSgpOworCisgICAgICAgIGlmICgh
ZW1wdHkoJGRpY3RbJ2N0b3Jfd2l0aF9wcm9wcyddKSkgeworICAgICAgICAgICAgJGRpY3RbJ25f
cGFyYW1zJ10gPSBjb3VudCgoYXJyYXkpJGNhbGxhYmxlLT5wYXJhbXMpOworICAgICAgICAgICAg
JGRpY3RbJ25fYXJncyddID0gJGRpY3RbJ25fcGFyYW1zJ10gKyAxOworICAgICAgICAgICAgJHBy
b3BfbmFtZXMgPSAnJzsKKyAgICAgICAgICAgIGZvcmVhY2ggKCRjYWxsYWJsZS0+cHJvcGVydGll
cyBhcyAkcHJvcCkgeworICAgICAgICAgICAgICAgICRwcm9wX25hbWVzIC49ICciJyAuICRwcm9w
WzBdIC4gJyIsICc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkZGljdFsncHJvcHMnXSA9
ICRwcm9wX25hbWVzOworICAgICAgICAgICAgJG4gPSAwOworICAgICAgICAgICAgZm9yICgkaSA9
IDA7ICRpIDwgY291bnQoJGluZm8tPnBhcnNlX2xpc3QpOyAkaSsrKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCRpbmZvLT5wYXJzZV9saXN0WyRpXSAmJiAkaW5mby0+cGFyc2VfbGlzdFskaV17MH0g
PT0gJyYnKSB7CisgICAgICAgICAgICAgICAgICAgICRpbmZvLT5wYXJzZV9saXN0WyRpXSA9ICIm
cGhwX2FyZ3NbJG5dIjsKKyAgICAgICAgICAgICAgICAgICAgJG4rKzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkZGljdFsnc3BlY3MnXSA9IHByZWdfcmVw
bGFjZSgnLChbXnwhL10pLCcsICdeJDEnLCAkZGljdFsnc3BlY3MnXSk7CisgICAgICAgICAgICAk
ZGljdFsncGFyc2VfbGlzdCddID0gJGluZm8tPmdldF9wYXJzZV9saXN0KCk7CisgICAgICAgICAg
ICAkZGljdFsncHJlX2NvZGUnXSA9ICcnOworICAgICAgICAgICAgJGRpY3RbJ3Bvc3RfY29kZSdd
ID0gJyc7CisKKyAgICAgICAgICAgIC8vIFJlcGxhY2UgYW55IHJlbW92ZWQgZGVwcmVjYXRpb24g
bWVzc2FnZXMKKyAgICAgICAgICAgIGlmIChpc3NldCgkY2FsbGFibGUtPmRlcHJlY2F0ZWQpKSB7
CisgICAgICAgICAgICAgICAgJGRpY3RbJ3ByZV9jb2RlJ10gPSBzcHJpbnRmKFRlbXBsYXRlczo6
ZGVwcmVjYXRpb25fbXNnLCAkY2FsbGFibGUtPmRlcHJlY2F0ZWQgPyAnIicuJGNhbGxhYmxlLT5k
ZXByZWNhdGVkLiciJyA6ICdOVUxMJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gYXByaW50ZigkdGVtcGxhdGUsICRkaWN0KTsKKyAgICB9CisKKworICAgIGZ1
bmN0aW9uIHdyaXRlX21ldGhvZHMoJG9iamVjdCkKKyAgICB7CisgICAgICAgICR0aGlzLT5sb2df
cHJpbnQoIiAgJS0yMHMgIiwgIm1ldGhvZHMiKTsKKworICAgICAgICAkbnVtX3dyaXR0ZW4gPSAk
bnVtX3NraXBwZWQgPSAwOworICAgICAgICAkbWV0aG9kX2VudHJpZXMgPSBhcnJheSgpOworCisg
ICAgICAgICRtZXRob2RzID0gJHRoaXMtPnBhcnNlci0+ZmluZF9tZXRob2RzKCRvYmplY3QpOwor
CisgICAgICAgICRkaWN0WydjbGFzcyddID0gJG9iamVjdC0+Y19uYW1lOworICAgICAgICAkZGlj
dFsnc2NvcGUnXSA9ICRvYmplY3QtPmNfbmFtZTsKKyAgICAgICAgJGRpY3RbJ3R5cGVjb2RlJ10g
PSAkb2JqZWN0LT50eXBlY29kZTsKKworICAgICAgICBzd2l0Y2ggKCRvYmplY3QtPmRlZl90eXBl
KSB7CisgICAgICAgICAgICBjYXNlICdvYmplY3QnOgorICAgICAgICAgICAgY2FzZSAnaW50ZXJm
YWNlJzoKKyAgICAgICAgICAgICAgICAkZGljdFsnY2FzdCddID0gcHJlZ19yZXBsYWNlKCchX1RZ
UEVfIScsICdfJywgJG9iamVjdC0+dHlwZWNvZGUsIDEpOworICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICBjYXNlICdib3hlZCc6CisgICAgICAgICAgICBjYXNlICdwb2ludGVy
JzoKKyAgICAgICAgICAgICAgICAkZGljdFsnY2FzdCddID0gJG9iamVjdC0+Y19uYW1lIC4gJyAq
JzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJ1bmhhbmRsZWQgZGVmaW5pdGlvbiB0eXBl
Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAkb2JqZWN0
LT5tZXRob2RzID0gYXJyYXkoKTsKKyAgICAgICAgJG1ldGhvZGFyZ2luZm9zID0gJyc7CisKKyAg
ICAgICAgZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG1ldGhvZCkgeworICAgICAgICAgICAgJG1ldGhv
ZF9uYW1lID0gJG1ldGhvZC0+Y19uYW1lOworICAgICAgICAgICAgCisgICAgICAgICAgICAvKiBz
a2lwIGlnbm9yZWQgbWV0aG9kcyAqLworICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMt
PmlzX2lnbm9yZWQoJG1ldGhvZF9uYW1lKSkgY29udGludWU7CisKKyAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVuYykgPSAkdGhp
cy0+Z2VuUmVmbGVjdGlvbkFyZ0luZm8oJG1ldGhvZCwgJG9iamVjdCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKCgkb3ZlcnJpZGVuID0gJHRoaXMtPm92ZXJyaWRlcy0+
aXNfb3ZlcnJpZGVuKCRtZXRob2RfbmFtZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3Qo
JG1ldGhvZF9uYW1lLCAkbWV0aG9kX292ZXJyaWRlLCAkZmxhZ3MpID0gJHRoaXMtPm92ZXJyaWRl
cy0+Z2V0X292ZXJyaWRlKCRtZXRob2RfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
aXNzZXQoJG1ldGhvZF9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2RfbmFt
ZSA9ICRtZXRob2QtPm5hbWU7CisgICAgICAgICAgICAgICAgICAgICRtZXRob2Rfb3ZlcnJpZGUg
PSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0aWMgJDEoJG9iamVj
dC0+aW5fbW9kdWxlJG9iamVjdC0+bmFtZSwgJG1ldGhvZF9uYW1lKSIsICRtZXRob2Rfb3ZlcnJp
ZGUpOworICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG1ldGhvZF9v
dmVycmlkZSwgJG1ldGhvZC0+Y19uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9l
bnRyaWVzWyRtZXRob2RfbmFtZV0gPSBhcnJheSgkb2JqZWN0LT5pbl9tb2R1bGUgLiAkb2JqZWN0
LT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRtZXRob2RfbmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzID8gICRmbGFn
cyA6ICgkbWV0aG9kLT5zdGF0aWMgPyAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQycg
OiAnWkVORF9BQ0NfUFVCTElDJykpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5pc19kZXByZWNhdGVkKCRtZXRob2Qt
PmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2QtPmRlcHJlY2F0ZWQg
PSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZGVwcmVjYXRlZCgkbWV0aG9kLT5jX25hbWUpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgkbWV0aG9kLT5zdGF0
aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHRoaXMtPndyaXRlX2NhbGxh
YmxlKCRtZXRob2QsIFRlbXBsYXRlczo6ZnVuY3Rpb25fYm9keSwgdHJ1ZSwgZmFsc2UsICRkaWN0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRmbGFncyA9ICdaRU5EX0FDQ19QVUJMSUN8WkVO
RF9BQ0NfU1RBVElDJzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICR0ZW1wbGF0ZSA9ICR0aGlzLT50ZW1wbGF0ZV9tYXBbJG9iamVjdC0+ZGVm
X3R5cGVdWydtZXRob2QnXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHRoaXMt
PndyaXRlX2NhbGxhYmxlKCRtZXRob2QsICR0ZW1wbGF0ZSwgdHJ1ZSwgdHJ1ZSwgJGRpY3QpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgJGZsYWdzID0gJ1pFTkRfQUNDX1BVQkxJQyc7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgk
Y29kZSk7CisgICAgICAgICAgICAgICAgICAgICRtZXRob2RfZW50cmllc1skbWV0aG9kLT5uYW1l
XSA9IGFycmF5KCRvYmplY3QtPmluX21vZHVsZSAuICRvYmplY3QtPm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2Qt
Pm5hbWUsICRyZWZsZWN0aW9uX2Z1bmMsICRmbGFncyk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlcyAg
JS0xMXMgJXM6OiVzXG4iLCAkb3ZlcnJpZGVuID8gIiUlIjoiICAiLCAibWV0aG9kIiwgJG9iamVj
dC0+Y19uYW1lLCAkbWV0aG9kLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAkbnVtX3dyaXR0ZW4r
KzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbIm1ldGhvZHMiXS0+d3JpdHRlbigpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkYXJnaW5mbyA9PT0gbnVsbCkg
eworICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5tZXRob2RzWyRtZXRob2QtPm5hbWVdID0g
MTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkbWV0aG9k
YXJnaW5mb3MgLj0gJGFyZ2luZm87CisgICAgICAgICAgICAgICAgICAgICRvYmplY3QtPm1ldGhv
ZHNbJG1ldGhvZC0+bmFtZV0gPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
Y2F0Y2ggKEV4Y2VwdGlvbiAkZSkgeworICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoIm5v
dGdlbiIsICIgICUtMTFzICVzOjolczogJXNcbiIsICJtZXRob2QiLCAkb2JqZWN0LT5jX25hbWUs
ICRtZXRob2QtPm5hbWUsICRlLT5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICRudW1f
c2tpcHBlZCsrOworICAgICAgICAgICAgICAgICR0aGlzLT5jb3ZlclsibWV0aG9kcyJdLT5za2lw
cGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoJHRoaXMtPm92
ZXJyaWRlcy0+aGF2ZV9leHRyYV9tZXRob2RzKCRvYmplY3QtPmNfbmFtZSkpIHsKKyAgICAgICAg
ICAgIGZvcmVhY2ggKCR0aGlzLT5vdmVycmlkZXMtPmdldF9leHRyYV9tZXRob2RzKCRvYmplY3Qt
PmNfbmFtZSkgYXMgJG1ldGhvZF9uYW1lID0+ICRvdmVycmlkZSkgeworICAgICAgICAgICAgICAg
IGxpc3QoJG1ldGhvZF9ib2R5LCAkZmxhZ3MpID0gJG92ZXJyaWRlOworICAgICAgICAgICAgICAg
IGxpc3QoJGFyZ2luZm8sICRyZWZsZWN0aW9uX2Z1bmMpID0gJHRoaXMtPmdlblJlZmxlY3Rpb25B
cmdJbmZvKG51bGwsICRvYmplY3QsICRtZXRob2RfbmFtZSk7CisKKyAgICAgICAgICAgICAgICAk
bWV0aG9kX2JvZHkgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0
aWMgJDEoJG9iamVjdC0+Y19uYW1lLCAkbWV0aG9kX25hbWUpIiwgJG1ldGhvZF9ib2R5KTsKKyAg
ICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG1ldGhvZF9ib2R5LCAkb2JqZWN0
LT5jX25hbWUsICRtZXRob2RfbmFtZSk7CisgICAgICAgICAgICAgICAgJG1ldGhvZF9lbnRyaWVz
WyRtZXRob2RfbmFtZV0gPSBhcnJheSgkb2JqZWN0LT5jX25hbWUsICRtZXRob2RfbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWZs
ZWN0aW9uX2Z1bmMsICRmbGFncyA/ICRmbGFncyA6ICdaRU5EX0FDQ19QVUJMSUMnKTsKKyAgICAg
ICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJXMgICUtMTFzICVzOjolc1xuIiwgIiUl
IiwgIm1ldGhvZCIsICRvYmplY3QtPmNfbmFtZSwgJG1ldGhvZF9uYW1lKTsKKyAgICAgICAgICAg
ICAgICAkbnVtX3dyaXR0ZW4rKzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbIm1ldGhv
ZHMiXS0+d3JpdHRlbigpOworCisgICAgICAgICAgICAgICAgaWYgKCRhcmdpbmZvID09PSBudWxs
KSB7CisgICAgICAgICAgICAgICAgICAgICRvYmplY3QtPm1ldGhvZHNbJG1ldGhvZF9uYW1lXSA9
IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJG1ldGhv
ZGFyZ2luZm9zIC49ICRhcmdpbmZvOworICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5tZXRo
b2RzWyRtZXRob2RfbmFtZV0gPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiglZCB3cml0dGVuLCAlZCBz
a2lwcGVkKVxuIiwgJG51bV93cml0dGVuLCAkbnVtX3NraXBwZWQpOworCisgICAgICAgIHJldHVy
biBhcnJheSgkbWV0aG9kX2VudHJpZXMsICRtZXRob2RhcmdpbmZvcyk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gd3JpdGVfY29uc3RydWN0b3IoJG9iamVjdCkKKyAgICB7CisgICAgICAgICR0aGlz
LT5sb2dfcHJpbnQoIiAgJS0yMHMgIiwgImNvbnN0cnVjdG9ycyIpOworICAgICAgICAkbnVtX3dy
aXR0ZW4gPSAkbnVtX3NraXBwZWQgPSAwOworCisgICAgICAgICRjdG9ycyA9ICR0aGlzLT5wYXJz
ZXItPmZpbmRfY29uc3RydWN0b3IoJG9iamVjdCwgJHRoaXMtPm92ZXJyaWRlcyk7CisKKyAgICAg
ICAgJGN0b3JfZGVmcyA9IGFycmF5KCk7CisgICAgICAgICRjdG9yX2FyZ2luZm9zID0gJyc7CisK
KyAgICAgICAgaWYgKCRjdG9ycykgeworICAgICAgICAgICAgJGRpY3RbJ2NsYXNzJ10gPSAkb2Jq
ZWN0LT5jX25hbWU7CisgICAgICAgICAgICAkZGljdFsndHlwZWNvZGUnXSA9ICRvYmplY3QtPnR5
cGVjb2RlOworICAgICAgICAgICAgJGZpcnN0ID0gMTsKKworICAgICAgICAgICAgZm9yZWFjaCAo
JGN0b3JzIGFzICRjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMt
PmlzX2RlcHJlY2F0ZWQoJGN0b3ItPmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJGN0
b3ItPmRlcHJlY2F0ZWQgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZGVwcmVjYXRlZCgkY3Rvci0+
Y19uYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJGN0b3JfbmFtZSA9
ICRjdG9yLT5jX25hbWU7CisgICAgICAgICAgICAgICAgaWYgKCRmaXJzdCkgeworICAgICAgICAg
ICAgICAgICAgICAkY3Rvcl9mZV9uYW1lID0gJ19fY29uc3RydWN0JzsKKyAgICAgICAgICAgICAg
ICAgICAgJGZsYWdzID0gJ1pFTkRfQUNDX1BVQkxJQyc7CisgICAgICAgICAgICAgICAgICAgICR0
ZW1wbGF0ZV9uYW1lID0gJ2NvbnN0cnVjdG9yJzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEk
Y3Rvci0+Y2FsbGVyX293bnNfcmV0dXJuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkZGlj
dFsncG9zdF9jcmVhdGVfY29kZSddID0gIlx0Z19vYmplY3RfcmVmKHdyYXBwZWRfb2JqKTsiOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gcmVtb3ZlIGNsYXNzIG5hbWUgZnJvbSB0aGUgY29uc3RydWN0b3IgbmFt
ZSwgaS5lLiB0dXJuCisgICAgICAgICAgICAgICAgICAgIC8vIGd0a19idXR0b25fbmV3X3dpdGhf
bW5lbW9uaWMgaW50byBuZXdfd2l0aF9tbmVtb25pYworICAgICAgICAgICAgICAgICAgICAkY3Rv
cl9mZV9uYW1lID0gc3Vic3RyKCRjdG9yX25hbWUsIHN0cmxlbihjb252ZXJ0X3R5cGVuYW1lKCRj
dG9yLT5pc19jb25zdHJ1Y3Rvcl9vZikpKTsKKyAgICAgICAgICAgICAgICAgICAgJGZsYWdzID0g
J1pFTkRfQUNDX1BVQkxJQ3xaRU5EX0FDQ19TVEFUSUMnOworICAgICAgICAgICAgICAgICAgICAk
dGVtcGxhdGVfbmFtZSA9ICdzdGF0aWNfY29uc3RydWN0b3InOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICRkaWN0WydjdG9yX3dpdGhfcHJvcHMnXSA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIC8qIFVzZSBzaW1wbGUgbm8tcHJvcCBjb25zdHJ1Y3RvciBvbmx5IGZvciBk
ZWZhdWx0IGNvbnN0cnVjdG9ycworICAgICAgICAgICAgICAgICAgIHdpdGggbm8gcGFyYW1ldGVy
cy4gKi8KKyAgICAgICAgICAgICAgICBpZiAoJG9iamVjdC0+ZGVmX3R5cGUgPT0gJ29iamVjdCcg
JiYgISRjdG9yLT5wYXJhbXMgJiYgJGZpcnN0KSB7CisgICAgICAgICAgICAgICAgICAgICR0ZW1w
bGF0ZSA9IFRlbXBsYXRlczo6Y29uc3RydWN0b3Jfd2l0aG91dF9wcm9wczsKKyAgICAgICAgICAg
ICAgICAgICAgJGRpY3RbJ2N0b3Jfd2l0aF9wcm9wcyddID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCRvYmplY3QtPmRlZl90eXBlID09ICdvYmplY3QnICYmICRjdG9yLT5wcm9w
ZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0ZSA9IFRlbXBsYXRlczo6Y29u
c3RydWN0b3Jfd2l0aF9wcm9wczsKKyAgICAgICAgICAgICAgICAgICAgJGRpY3RbJ2N0b3Jfd2l0
aF9wcm9wcyddID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAkdGVtcGxhdGUgPSAkdGhpcy0+dGVtcGxhdGVfbWFwWyRvYmplY3QtPmRlZl90eXBl
XVskdGVtcGxhdGVfbmFtZV07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVu
YykgPSAkdGhpcy0+Z2VuUmVmbGVjdGlvbkFyZ0luZm8oJGN0b3IsICRvYmplY3QsICRjdG9yX2Zl
X25hbWUpOworCisgICAgICAgICAgICAgICAgICAgIGlmICgoJG92ZXJyaWRlbiA9ICR0aGlzLT5v
dmVycmlkZXMtPmlzX292ZXJyaWRlbigkY3Rvcl9uYW1lKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxpc3QoLCAkY3Rvcl9vdmVycmlkZSwgJGN0b3JfZmxhZ3MpID0gJHRoaXMtPm92ZXJy
aWRlcy0+Z2V0X292ZXJyaWRlKCRjdG9yX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFlbXB0eSgkY3Rvcl9mbGFncykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZs
YWdzID0gJGN0b3JfZmxhZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAkY3Rvcl9vdmVycmlk
ZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywgInN0YXRpYyAkMSgkY3Rv
ci0+aXNfY29uc3RydWN0b3Jfb2YsICRjdG9yX2ZlX25hbWUpIiwgJGN0b3Jfb3ZlcnJpZGUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRlKCRjdG9yX292ZXJy
aWRlLCAkY3Rvci0+Y19uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAkY3Rvcl9mZV9uYW1lOworICAgICAg
ICAgICAgICAgICAgICAgICAgJGNvZGUgPSAkdGhpcy0+d3JpdGVfY2FsbGFibGUoJGN0b3IsICR0
ZW1wbGF0ZSwgZmFsc2UsIGZhbHNlLCAkZGljdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAk
dGhpcy0+ZnAtPndyaXRlKCRjb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgICRjdG9yX2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjptZXRob2RfZW50
cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN0b3ItPmlz
X2NvbnN0cnVjdG9yX29mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRjdG9yX2ZlX25hbWUsICRyZWZsZWN0aW9uX2Z1bmMsICRmbGFncyk7CisgICAgICAgICAg
ICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlcyAgJS0xMXMgJXM6OiVzXG4iLCAkb3Zl
cnJpZGVuPyIlJSI6IiAgIiwgImNvbnN0cnVjdG9yIiwgJG9iamVjdC0+Y19uYW1lLCAkY3Rvcl9m
ZV9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7CisgICAgICAgICAg
ICAgICAgICAgICR0aGlzLT5jb3ZlclsiY3RvcnMiXS0+d3JpdHRlbigpOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRhcmdpbmZvICE9PSBudWxsKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkY3Rvcl9hcmdpbmZvcyAuPSAkYXJnaW5mbzsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkg
eworICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJub3RnZW4iLCAiICAlLTExcyAl
czo6JXM6ICVzXG4iLCAiY29uc3RydWN0b3IiLCAkb2JqZWN0LT5jX25hbWUsICRjdG9yX2ZlX25h
bWUsICRlLT5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICAgICAkbnVtX3NraXBwZWQr
KzsKKyAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJjdG9ycyJdLT5za2lwcGVkKCk7
CisgICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgY2xhc3MgYXMgbm9uLWluc3RhbnRpYWJsZSBk
aXJlY3RseSBpZiB3ZSB3ZXJlIHRyeWluZworICAgICAgICAgICAgICAgICAgICAvLyB0byBnZW5l
cmF0ZSBkZWZhdWx0IGNvbnN0cnVjdG9yCisgICAgICAgICAgICAgICAgICAgIGlmICgkY3Rvcl9m
ZV9uYW1lID09ICdfX2NvbnN0cnVjdCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjdG9y
X2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlvbl9lbnRyeSwgJGN0b3JfZmVfbmFt
ZSwgJ25vX2RpcmVjdF9jb25zdHJ1Y3RvcicsICRjdG9yX2ZlX25hbWUsICdub19kaXJlY3RfY29u
c3RydWN0b3InKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAkZmlyc3QgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhhdmVfZXh0cmFfbWV0aG9kcygk
b2JqZWN0LT5jX25hbWUpKSB7CisgICAgICAgICAgICAgICAgJGN0b3JfbmFtZSA9ICdfX2NvbnN0
cnVjdCc7CisgICAgICAgICAgICAgICAgJGV4dHJhcyA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9l
eHRyYV9tZXRob2RzKCRvYmplY3QtPmNfbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzc2V0
KCRleHRyYXNbJGN0b3JfbmFtZV0pKSB7CisgICAgICAgICAgICAgICAgICAgICRjdG9yX2JvZHkg
PSAkZXh0cmFzWyRjdG9yX25hbWVdOworICAgICAgICAgICAgICAgICAgICAkY3Rvcl9ib2R5ID0g
cHJlZ19yZXBsYWNlKCchXi4qKFBIUF9NRVRIT0QpLiokIW0nLCAic3RhdGljICQxKCRvYmplY3Qt
PmNfbmFtZSwgJGN0b3JfbmFtZSkiLCAkY3Rvcl9ib2R5KTsKKyAgICAgICAgICAgICAgICAgICAg
JHRoaXMtPndyaXRlX292ZXJyaWRlKCRjdG9yX2JvZHksICRvYmplY3QtPmNfbmFtZSwgJGN0b3Jf
bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICRjdG9yX2RlZnNbXSA9IHNwcmludGYoVGVtcGxh
dGVzOjptZXRob2RfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJG9iamVjdC0+Y19uYW1lLCAkY3Rvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdOVUxMJywgJ1pFTkRfQUNDX1BVQkxJQycpOworICAgICAg
ICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJSUlJSAgJS0xMXMgJXM6OiVzXG4i
LCAiY29uc3RydWN0b3IiLCAkb2JqZWN0LT5jX25hbWUsICRjdG9yX25hbWUpOworICAgICAgICAg
ICAgICAgICAgICAkbnVtX3dyaXR0ZW4rKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIG1hcmsgY2xhc3MgYXMgbm9uLWluc3RhbnRp
YWJsZSBkaXJlY3RseSwgb25seSBpZiBpdCdzIG5vdAorICAgICAgICAgICAgICAgIC8vIEdPYmpl
Y3QuIEZvciBHT2JqZWN0J3Mgd2UgbGV0IGl0IGNoYWluIHVwIHRvIEdPYmplY3QKKyAgICAgICAg
ICAgICAgICAvLyBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgICAgIGlmICgkb2JqZWN0LT5kZWZf
dHlwZSAhPSAnb2JqZWN0JykgeworICAgICAgICAgICAgICAgICAgICAkY3Rvcl9kZWZzW10gPSBz
cHJpbnRmKFRlbXBsYXRlczo6ZnVuY3Rpb25fZW50cnksICdfX2NvbnN0cnVjdCcsICdub19kaXJl
Y3RfY29uc3RydWN0b3InLCAnX19jb25zdHJ1Y3QnLCAnbm9fZGlyZWN0X2NvbnN0cnVjdG9yJyk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
JHRoaXMtPmxvZ19wcmludCgiKCVkIHdyaXR0ZW4sICVkIHNraXBwZWQpXG4iLCAkbnVtX3dyaXR0
ZW4sICRudW1fc2tpcHBlZCk7CisgICAgICAgIHJldHVybiBhcnJheSgkY3Rvcl9kZWZzLCAkY3Rv
cl9hcmdpbmZvcyk7CisgICAgfS8vZnVuY3Rpb24gd3JpdGVfY29uc3RydWN0b3IoJG9iamVjdCkK
KworICAgIGZ1bmN0aW9uIHdyaXRlX2NsYXNzZXMoKQorICAgIHsKKyAgICAgICAgJHJlZ2lzdGVy
X2NsYXNzZXMgPSAnJzsKKworICAgICAgICBpZiAoJHRoaXMtPnBhcnNlci0+ZnVuY3Rpb25zIHx8
ICR0aGlzLT5wYXJzZXItPmVudW1zKSB7CisgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJc
biVzXG4lc1xuIiwgJHRoaXMtPnByZWZpeCwgc3RyX3JlcGVhdCgnficsIDUwKSk7CisgICAgICAg
ICAgICAkZnVuY19kZWZzID0gJHRoaXMtPndyaXRlX2Z1bmN0aW9ucygpOworCisgICAgICAgICAg
ICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfY2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdjZScgPT4g
JHRoaXMtPmxwcmVmaXggLiAnX2NlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2NsYXNzJyA9PiAkdGhpcy0+cHJlZml4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWV0aG9kcycgPT4gJGZ1bmNfZGVmcyA/
ICR0aGlzLT5scHJlZml4IC4gJ19tZXRob2RzJyA6ICdOVUxMJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudCcgPT4gJ05VTEwnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VfZmxhZ3MnID0+IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9waW5m
bycgPT4gJ05VTEwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY3JlYXRlX2Z1bmMnID0+ICdOVUxMJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3R5cGVjb2RlJyA9PiAwKSk7CisgICAgICAgIH0KKworICAg
ICAgICAvKiBHSW50ZXJmYWNlJ3MgKi8KKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG5cbiIg
LiAkdGhpcy0+bWFrZV9oZWFkZXIoIkludGVyZmFjZXMiLCA1MCwgJy0nKSk7CisgICAgICAgIGZv
cmVhY2ggKCR0aGlzLT5wYXJzZXItPmludGVyZmFjZXMgYXMgJGludGVyZmFjZSkgeworICAgICAg
ICAgICAgJHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRpbnRlcmZhY2UpOworICAgICAg
ICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMgLj0gYXByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2lu
dGVyZmFjZSwgJHJlZ19pbmZvKTsKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5o
YXZlX3Bvc3RfcmVnaXN0cmF0aW9uKCRpbnRlcmZhY2UtPmNfbmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdp
c3RyYXRpb24oJGludGVyZmFjZS0+Y19uYW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLyogc2l6ZSBjaGVjayBnb2VzIGhlcmUgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAt
PmNoZWNrX3NpemUoKSkgeworICAgICAgICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcs
IHdyaXRlIG91dCBlbmQKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYo
VGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR0aGlzLT5scHJlZml4IC4gJHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisgICAgICAg
ICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMgPSAnJzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+
ZnAtPm5ld19maWxlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEk
dGhpcy0+cGFyc2VyLT5pbnRlcmZhY2VzKSB7CisgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50
KCIgIC0tIG5vbmUgLS0gICIpOworICAgICAgICB9CisKKyAgICAgICAgLyogR09iamVjdCdzICov
CisgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIlxuXG4iIC4gJHRoaXMtPm1ha2VfaGVhZGVyKCJP
YmplY3RzIiwgNTAsICctJykpOworICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5vYmpl
Y3RzIGFzICRvYmplY3QpIHsKKyAgICAgICAgICAgIC8qIHNraXAgaWdub3JlZCBvYmplY3RzICov
CisgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aXNfaWdub3JlZCgkb2JqZWN0LT5j
X25hbWUpKSB7CisgICAgICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG4lcyAlc1xuIiwg
JG9iamVjdC0+Y19uYW1lLCAiaXMgaWdub3JlZCBpbiB0aGUgb3ZlcnJpZGVzIGZpbGUiKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRyZWdf
aW5mbyA9ICR0aGlzLT53cml0ZV9jbGFzcygkb2JqZWN0KTsKKyAgICAgICAgICAgICRyZWdpc3Rl
cl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFzcywgJHJlZ19pbmZv
KTsKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX3Bvc3RfcmVnaXN0cmF0
aW9uKCRvYmplY3QtPmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3Nl
cyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdpc3RyYXRpb24oJG9iamVjdC0+Y19u
YW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIHNpemUgY2hlY2sgZ29lcyBoZXJl
ICovCisgICAgICAgICAgICBpZiAoJHRoaXMtPmZwLT5jaGVja19zaXplKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyB3ZSBoaXQgc2l6ZSB0b28gYmlnLCB3cml0ZSBvdXQgZW5kCisgICAgICAgICAg
ICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfY2xhc3Nl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bHByZWZpeCAuICR0
aGlzLT5mcC0+Z2V0X2N1cnJlbnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkcmVnaXN0ZXJfY2xhc3NlcykpOworICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2Vz
ID0gJyc7CisgICAgICAgICAgICAgICAgJHRoaXMtPmZwLT5uZXdfZmlsZSgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghJHRoaXMtPnBhcnNlci0+b2JqZWN0cykgewor
ICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiICAtLSBub25lIC0tICAiKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8qIEdCb3hlZCAqLworICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcblxu
IiAuICR0aGlzLT5tYWtlX2hlYWRlcigiQm94ZWQgVHlwZXMiLCA1MCwgJy0nKSk7CisgICAgICAg
IGZvcmVhY2ggKCR0aGlzLT5wYXJzZXItPmJveGVkIGFzICRib3hlZCkgeworICAgICAgICAgICAg
JHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRib3hlZCk7CisgICAgICAgICAgICAkcmVn
aXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfYm94ZWQsICRyZWdf
aW5mbyk7CisgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aGF2ZV9wb3N0X3JlZ2lz
dHJhdGlvbigkYm94ZWQtPmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAkcmVnaXN0ZXJfY2xh
c3NlcyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdpc3RyYXRpb24oJGJveGVkLT5j
X25hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogc2l6ZSBjaGVjayBnb2VzIGhl
cmUgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAtPmNoZWNrX3NpemUoKSkgeworICAgICAg
ICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcsIHdyaXRlIG91dCBlbmQKKyAgICAgICAg
ICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFz
c2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5scHJlZml4IC4g
JHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNz
ZXMgPSAnJzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPm5ld19maWxlKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEkdGhpcy0+cGFyc2VyLT5ib3hlZCkgewor
ICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiICAtLSBub25lIC0tICAiKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8qIEdQb2ludGVyICovCisgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIlxu
XG4iIC4gJHRoaXMtPm1ha2VfaGVhZGVyKCJQb2ludGVycyIsIDUwLCAnLScpKTsKKyAgICAgICAg
Zm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+cG9pbnRlcnMgYXMgJHBvaW50ZXIpIHsKKyAgICAgICAg
ICAgICRyZWdfaW5mbyA9ICR0aGlzLT53cml0ZV9jbGFzcygkcG9pbnRlcik7CisgICAgICAgICAg
ICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfcG9pbnRl
ciwgJHJlZ19pbmZvKTsKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX3Bv
c3RfcmVnaXN0cmF0aW9uKCRwb2ludGVyLT5jX25hbWUpKSB7CisgICAgICAgICAgICAgICAgJHJl
Z2lzdGVyX2NsYXNzZXMgLj0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X3Bvc3RfcmVnaXN0cmF0aW9u
KCRwb2ludGVyLT5jX25hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogc2l6ZSBj
aGVjayBnb2VzIGhlcmUgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAtPmNoZWNrX3NpemUo
KSkgeworICAgICAgICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcsIHdyaXRlIG91dCBl
bmQKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpy
ZWdpc3Rlcl9jbGFzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlz
LT5scHJlZml4IC4gJHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisgICAgICAgICAgICAgICAgJHJl
Z2lzdGVyX2NsYXNzZXMgPSAnJzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPm5ld19maWxl
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEkdGhpcy0+cGFyc2Vy
LT5wb2ludGVycykgeworICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiICAtLSBub25lIC0t
ICAiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHJlZ2lzdGVyIGFsbCBjbGFzc2VzICovCisg
ICAgICAgIGlmICgkcmVnaXN0ZXJfY2xhc3NlcyAhPT0gJycpIHsKKyAgICAgICAgICAgICAgICAk
dGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFzc2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxwcmVmaXggLiAk
dGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3NlcykpOworICAgICAgICB9CisKKyAgICAgICAgJHJl
Z2lzdGVyX2NsYXNzZXMgPSAnJzsKKyAgICAgICAgJHRvdGFsID0gJHRoaXMtPmZwLT5nZXRfdG90
YWwoKTsKKyAgICAgICAgJGN1cnJlbnQgPSAwOworICAgICAgICB3aGlsZSgkY3VycmVudCA8ICR0
b3RhbCkgeworICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49ICcJcGhwZ18nIC4g
JHRoaXMtPmxwcmVmaXggLiAkY3VycmVudCAuICJfcmVnaXN0ZXJfY2xhc3NlcyhUU1JNTFNfQyk7
XG4iOworICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKCd2b2lkIHBocGdf
JyAuICR0aGlzLT5scHJlZml4IC4gJGN1cnJlbnQgLiAiX3JlZ2lzdGVyX2NsYXNzZXMoVFNSTUxT
X0QpO1xuIik7CisgICAgICAgICAgICAgICAgJGN1cnJlbnQrKzsKKyAgICAgICAgfQorICAgICAg
ICAvKiB3cml0ZSB0aGUgIm1ldGEiIHJlZ2lzdGVyIGNsYXNzICovCisgICAgICAgICR0aGlzLT5m
cC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bHByZWZpeCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gd3JpdGVfcHJvcF9oYW5kbGVycygkb2JqZWN0KQor
ICAgIHsKKyAgICAgICAgZ2xvYmFsICRtYXRjaGVyOworCisgICAgICAgIGlmICghJG9iamVjdC0+
ZmllbGRzICYmICEkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX2V4dHJhX3Byb3BzKCRvYmplY3QtPmNf
bmFtZSkpIHsKKyAgICAgICAgICAgIHJldHVybiAnTlVMTCc7CisgICAgICAgIH0KKworICAgICAg
ICAkdGhpcy0+bG9nX3ByaW50KCIgICUtMjBzICIsICJwcm9wZXJ0eSBhY2Nlc3NvcnMiKTsKKyAg
ICAgICAgJG51bV93cml0dGVuID0gJG51bV9za2lwcGVkID0gMDsKKworICAgICAgICAkY2xhc3Mg
PSBzdHJ0b2xvd2VyKCRvYmplY3QtPmNfbmFtZSk7CisgICAgICAgICRwcm9wX2RlZnMgPSBhcnJh
eSgpOworICAgICAgICAkZGljdCA9IGFycmF5KCk7CisKKyAgICAgICAgc3dpdGNoICgkb2JqZWN0
LT5kZWZfdHlwZSkgeworICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgICAgICAgICAg
ICAkZGljdFsnY2FzdCddID0gcHJlZ19yZXBsYWNlKCchX1RZUEVfIScsICdfJywgJG9iamVjdC0+
dHlwZWNvZGUsIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNl
ICdib3hlZCc6CisgICAgICAgICAgICBjYXNlICdwb2ludGVyJzoKKyAgICAgICAgICAgICAgICAk
ZGljdFsnY2FzdCddID0gJG9iamVjdC0+Y19uYW1lIC4gJyAqJzsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXhjZXB0aW9uKCJ1bmhhbmRsZWQgZGVmaW5pdGlvbiB0eXBlIik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBmb3JlYWNoICgkb2JqZWN0LT5maWVsZHMgYXMg
JGZpZWxkKSB7CisgICAgICAgICAgICBsaXN0KCRmaWVsZF90eXBlLCAkZmllbGRfbmFtZSkgPSAk
ZmllbGQ7CisKKyAgICAgICAgICAgICRyZWFkX2Z1bmMgPSAiUEhQR19QUk9QX1JFQURfRk4oJG9i
amVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSkiOworICAgICAgICAgICAgJHdyaXRlX2Z1bmMgPSAn
TlVMTCc7CisgICAgICAgICAgICAkaW5mbyA9IG5ldyBXcmFwcGVyX0luZm8oKTsKKworICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aXNfcHJv
cF9vdmVycmlkZW4oJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgJG92ZXJyaWRlcyA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wcm9wX292ZXJyaWRl
KCRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAo
aXNzZXQoJG92ZXJyaWRlc1sncmVhZCddKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJHJl
YWRfb3ZlcnJpZGUgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQR19QUk9QX1JFQURFUikuKiQhbScs
ICIkMSgkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSIsICRvdmVycmlkZXNbJ3JlYWQnXSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJHJlYWRfb3Zl
cnJpZGUsICRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUsICdyZWFkJyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJSUlJSAgJS0xMXMgJXMtPiVzXG4i
LCAicmVhZGVyIGZvciIsICRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJHJlYWRfZnVuYyA9
ICdOVUxMJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAo
aXNzZXQoJG92ZXJyaWRlc1snd3JpdGUnXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR3
cml0ZV9vdmVycmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBHX1BST1BfV1JJVEVSKS4qJCFt
JywgInN0YXRpYyAkMSgkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSIsICRvdmVycmlkZXNb
J3dyaXRlJ10pOworICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRl
KCRvdmVycmlkZXNbJ3dyaXRlJ10sICRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUsICd3cml0
ZScpOworICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuICIsICIlJSUl
ICAlLTExcyAlcy0+JXNcbiIsICJ3cml0ZXIgZm9yIiwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRf
bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAkaGFuZGxlciA9ICRtYXRjaGVyLT5nZXQoJGZpZWxkX3R5cGUp
OworICAgICAgICAgICAgICAgICAgICAkaGFuZGxlci0+d3JpdGVfcmV0dXJuKCRmaWVsZF90eXBl
LCBmYWxzZSwgJGluZm8pOworCisgICAgICAgICAgICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAk
ZmllbGRfbmFtZTsKKworICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKGFwcmlu
dGYoVGVtcGxhdGVzOjpwcm9wX3JlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcnJheSgnY2xhc3MnID0+ICRvYmplY3QtPmNfbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4g
JGZpZWxkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Zhcl9saXN0JyA9PiAkaW5mby0+Z2V0X3Zhcl9saXN0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZV9jb2RlJyA9PiAk
aW5mby0+Z2V0X3ByZV9jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Bvc3RfY29kZScgPT4gJGluZm8tPmdldF9wb3N0X2NvZGUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv
cF9hY2Nlc3MnID0+IGFwcmludGYoJHRoaXMtPnRlbXBsYXRlX21hcFskb2JqZWN0LT5kZWZfdHlw
ZV1bJ3Byb3AnXSwgJGRpY3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApKSk7CisgICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdl
biIsICIgICAgJS0xMXMgJXMtPiVzXG4iLCAicmVhZGVyIGZvciIsICRvYmplY3QtPmNfbmFtZSwg
JGZpZWxkX25hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkcHJvcF9k
ZWZzW10gPSBzcHJpbnRmKFRlbXBsYXRlczo6cHJvcF9pbmZvX2VudHJ5LCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZF9uYW1lLCAkcmVhZF9mdW5jLCAkd3Jp
dGVfZnVuYyk7CisgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7CisgICAgICAgICAgICAg
ICAgJHRoaXMtPmNvdmVyWyJwcm9wcyJdLT53cml0dGVuKCk7CisgICAgICAgICAgICB9IGNhdGNo
IChFeGNlcHRpb24gJGUpIHsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJub3RnZW4i
LCAiICAlLTExcyAlcy0+JXM6ICVzXG4iLCAicmVhZGVyIGZvciIsICRvYmplY3QtPmNfbmFtZSwg
JGZpZWxkX25hbWUsICRlLT5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICRudW1fc2tp
cHBlZCsrOworICAgICAgICAgICAgICAgICR0aGlzLT5jb3ZlclsicHJvcHMiXS0+c2tpcHBlZCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlk
ZXMtPmhhdmVfZXh0cmFfcHJvcHMoJG9iamVjdC0+Y19uYW1lKSkgeworICAgICAgICAgICAgZm9y
ZWFjaCAoJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2V4dHJhX3Byb3BzKCRvYmplY3QtPmNfbmFtZSkg
YXMgJHByb3BfbmFtZSA9PiAkb3ZlcnJpZGVzKSB7CisKKyAgICAgICAgICAgICAgICAkcmVhZF9m
dW5jID0gIlBIUEdfUFJPUF9SRUFEX0ZOKCRvYmplY3QtPmNfbmFtZSwgJHByb3BfbmFtZSkiOwor
ICAgICAgICAgICAgICAgICR3cml0ZV9mdW5jID0gJ05VTEwnOworICAgICAgICAgICAgICAgICRp
bmZvID0gbmV3IFdyYXBwZXJfSW5mbygpOworCisgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRv
dmVycmlkZXNbJ3JlYWQnXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJHJlYWRfb3ZlcnJpZGUg
PSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQR19QUk9QX1JFQURFUikuKiQhbScsICIkMSgkb2JqZWN0
LT5jX25hbWUsICRwcm9wX25hbWUpIiwgJG92ZXJyaWRlc1sncmVhZCddKTsKKyAgICAgICAgICAg
ICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRlKCRyZWFkX292ZXJyaWRlLCAkb2JqZWN0LT5j
X25hbWUsICRwcm9wX25hbWUsICdyZWFkJywgJ2V4dHJhJyk7CisgICAgICAgICAgICAgICAgICAg
ICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAlLTExcyAlcy0+JXNcbiIsICJyZWFkZXIgZm9y
IiwgJG9iamVjdC0+Y19uYW1lLCAkcHJvcF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJHRo
aXMtPmNvdmVyWyJwcm9wcyJdLT53cml0dGVuKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgJHJlYWRfZnVuYyA9ICdOVUxMJzsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG92ZXJyaWRlc1snd3JpdGUnXSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgJHdyaXRlX292ZXJyaWRlID0gcHJlZ19yZXBsYWNlKCchXi4q
KFBIUEdfUFJPUF9XUklURVIpLiokIW0nLCAic3RhdGljICQxKCRvYmplY3QtPmNfbmFtZSwgJHBy
b3BfbmFtZSkiLCAkb3ZlcnJpZGVzWyd3cml0ZSddKTsKKyAgICAgICAgICAgICAgICAgICAgJHRo
aXMtPndyaXRlX292ZXJyaWRlKCRvdmVycmlkZXNbJ3dyaXRlJ10sICRvYmplY3QtPmNfbmFtZSwg
JHByb3BfbmFtZSwgJ3dyaXRlJywgJ2V4dHJhJyk7CisgICAgICAgICAgICAgICAgICAgICR0aGlz
LT5kaXZlcnQoImdlbiAiLCAiJSUlJSAgJS0xMXMgJXMtPiVzXG4iLCAid3JpdGVyIGZvciIsICRv
YmplY3QtPmNfbmFtZSwgJHByb3BfbmFtZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgJHByb3BfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6OnByb3BfaW5mb19lbnRy
eSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJvcF9uYW1lLCAk
cmVhZF9mdW5jLCAkd3JpdGVfZnVuYyk7CisgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7
CisgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJwcm9wcyJdLT53cml0dGVuKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIoJWQgd3Jp
dHRlbiwgJWQgc2tpcHBlZClcbiIsICRudW1fd3JpdHRlbiwgJG51bV9za2lwcGVkKTsKKworICAg
ICAgICBpZiAoJHByb3BfZGVmcykgeworICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJp
bnRmKFRlbXBsYXRlczo6cHJvcF9pbmZvX2hlYWRlciwgJGNsYXNzKSk7CisgICAgICAgICAgICAk
dGhpcy0+ZnAtPndyaXRlKGpvaW4oJycsICRwcm9wX2RlZnMpKTsKKyAgICAgICAgICAgICR0aGlz
LT5mcC0+d3JpdGUoVGVtcGxhdGVzOjpwcm9wX2luZm9fZm9vdGVyKTsKKyAgICAgICAgICAgIHJl
dHVybiAkY2xhc3MgLiAnX3Byb3BfaW5mbyc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICByZXR1cm4gJ05VTEwnOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gd3JpdGVf
b2JqZWN0X2hhbmRsZXJzKCRvYmplY3QpCisgICAgeworICAgICAgICAkaGFuZGxlcnMgPSBhcnJh
eSgpOworCisgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5oYW5kbGVycyBhcyAkaGFuZGxlcikgewor
ICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmlzX2hhbmRsZXJfb3ZlcnJpZGVuKCRv
YmplY3QtPmNfbmFtZSwgJGhhbmRsZXIpKSB7CisgICAgICAgICAgICAgICAgJG92ZXJyaWRlID0g
JHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2hhbmRsZXJfb3ZlcnJpZGUoJG9iamVjdC0+Y19uYW1lLCAk
aGFuZGxlcik7CisgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRlKCRvdmVycmlk
ZSwgJG9iamVjdC0+Y19uYW1lLCAkaGFuZGxlcik7CisgICAgICAgICAgICAgICAgJGhhbmRsZXJz
W10gPSAkaGFuZGxlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
JGhhbmRsZXJzKQorICAgICAgICAgICAgcmV0dXJuIGFycmF5KCdOVUxMJywgJycpOworCisgICAg
ICAgICRkaWN0WydjbGFzcyddID0gc3RydG9sb3dlcigkb2JqZWN0LT5pbl9tb2R1bGUgLiAkb2Jq
ZWN0LT5uYW1lKTsKKyAgICAgICAgc3dpdGNoICgkb2JqZWN0LT5kZWZfdHlwZSkgeworICAgICAg
ICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgICAgICAgICAgICAkZGljdFsnY3JlYXRlX2Z1bmMn
XSA9ICdwaHBnX2NyZWF0ZV9nb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAkZGljdFsnb3JpZ19o
YW5kbGVycyddID0gJ3BocGdfZ29iamVjdF9oYW5kbGVycyc7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgJ2JveGVkJzoKKyAgICAgICAgICAgICAgICAkZGljdFsn
Y3JlYXRlX2Z1bmMnXSA9ICdwaHBnX2NyZWF0ZV9nYm94ZWQnOworICAgICAgICAgICAgICAgICRk
aWN0WydvcmlnX2hhbmRsZXJzJ10gPSAncGhwX2d0a19oYW5kbGVycyc7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgJ3BvaW50ZXInOgorICAgICAgICAgICAgICAg
ICRkaWN0WydjcmVhdGVfZnVuYyddID0gJ3BocGdfY3JlYXRlX2dwb2ludGVyJzsKKyAgICAgICAg
ICAgICAgICAkZGljdFsnb3JpZ19oYW5kbGVycyddID0gJ3BocF9ndGtfaGFuZGxlcnMnOworICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBkZWZpbml0aW9uIHR5cGUiKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgICR0aGlzLT5mcC0+d3Jp
dGUoYXByaW50ZihUZW1wbGF0ZXM6OmN1c3RvbV9jcmVhdGVfZnVuYywgJGRpY3QpKTsKKyAgICAg
ICAgJGNyZWF0ZV9mdW5jID0gJ3BocGdfY3JlYXRlXycgLiAkZGljdFsnY2xhc3MnXTsKKworICAg
ICAgICAkZXh0cmFfcmVnX2luZm8gPSBhcHJpbnRmKFRlbXBsYXRlczo6Y3VzdG9tX2hhbmRsZXJz
X2luaXQsICRkaWN0KTsKKyAgICAgICAgZm9yZWFjaCAoJGhhbmRsZXJzIGFzICRoYW5kbGVyKSB7
CisgICAgICAgICAgICAkZGljdFsnaGFuZGxlciddID0gJGhhbmRsZXI7CisgICAgICAgICAgICAk
ZXh0cmFfcmVnX2luZm8gLj0gYXByaW50ZihUZW1wbGF0ZXM6OmN1c3RvbV9oYW5kbGVyX3NldCwg
JGRpY3QpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFycmF5KCRjcmVhdGVfZnVuYywg
JGV4dHJhX3JlZ19pbmZvKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWtlX21ldGhvZF9kZWZz
KCRjbGFzcywgJG1ldGhvZF9lbnRyaWVzKQorICAgIHsKKyAgICAgICAgJG1ldGhvZF9kZWZzID0g
YXJyYXkoKTsKKworICAgICAgICBpZiAoJGNsYXNzLT5kZWZfdHlwZSA9PSAnb2JqZWN0Jykgewor
ICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhvZF9lbnRyaWVzIGFzICRtZSkgeworICAgICAgICAg
ICAgICAgICRtZXRob2RfZGVmc1tdID0gdnNwcmludGYoVGVtcGxhdGVzOjptZXRob2RfZW50cnks
ICRtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJGNsYXNzLT5pbXBsZW1lbnRz
KSB7CisgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNsYXNzLT5pbXBsZW1lbnRzIGFzICRpbnRl
cmZhY2VfbmFtZSkgeworICAgICAgICAgICAgICAgICAgICAkaW50ZXJmYWNlID0gJHRoaXMtPnBh
cnNlci0+aW50ZXJmYWNlc1skaW50ZXJmYWNlX25hbWVdOworICAgICAgICAgICAgICAgICAgICAk
aWZhY2VfbWV0aG9kcyA9IGFycmF5X2RpZmZfa2V5KCRpbnRlcmZhY2UtPm1ldGhvZHMsICRtZXRo
b2RfZW50cmllcyk7CisgICAgICAgICAgICAgICAgICAgICRtZXRob2RfZGVmc1tdID0gIlxuXHQv
KioqICAgJGludGVyZmFjZV9uYW1lIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMgICAqKiovXG5c
biI7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgk
aWZhY2VfbWV0aG9kcyBhcyAkaWZhY2VfbWV0aG9kPT4kZHVtbXkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgkZHVtbXkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRyZWZsZWN0aW9uX2Z1bmMgPSAnTlVMTCc7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWZsZWN0aW9uX2Z1bmMgPSAnYXJn
aW5mb18nIC4gc3RydG9sb3dlcigkaW50ZXJmYWNlLT5pbl9tb2R1bGUpIC4gJ18nIC4gc3RydG9s
b3dlcigkaW50ZXJmYWNlLT5jX25hbWUpIC4gJ18nLiAkaWZhY2VfbWV0aG9kOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9kZWZzW10g
PSBzcHJpbnRmKFRlbXBsYXRlczo6YWxpYXNfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGludGVyZmFjZV9uYW1lLCAkaWZhY2VfbWV0aG9k
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZmFj
ZV9tZXRob2QsICRyZWZsZWN0aW9uX2Z1bmMsICdaRU5EX0FDQ19QVUJMSUMnKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmICgkY2xhc3MtPmRlZl90eXBlID09ICdib3hlZCcgfHwgJGNsYXNzLT5kZWZfdHlw
ZSA9PSAncG9pbnRlcicpIHsKKyAgICAgICAgICAgIGZvcmVhY2ggKCRtZXRob2RfZW50cmllcyBh
cyAkbWUpIHsKKyAgICAgICAgICAgICAgICAkbWV0aG9kX2RlZnNbXSA9IHZzcHJpbnRmKFRlbXBs
YXRlczo6bWV0aG9kX2VudHJ5LCAkbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKCRjbGFzcy0+ZGVmX3R5cGUgPT0gJ2ludGVyZmFjZScpIHsKKyAgICAgICAgICAgIGZvcmVh
Y2ggKCRtZXRob2RfZW50cmllcyBhcyAkbWUpIHsKKyAgICAgICAgICAgICAgICAkbWV0aG9kX2Rl
ZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjphYnNfbWV0aG9kX2VudHJ5LCAkbWVbMV0sICRtZVsw
XSwgJG1lWzFdLCAkbWVbMl0sICdaRU5EX0FDQ19QVUJMSUN8WkVORF9BQ0NfQUJTVFJBQ1QnKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAkbWV0aG9kX2RlZnM7
CisgICAgfQorCisgICAgZnVuY3Rpb24gd3JpdGVfY2xhc3MoJGNsYXNzKQorICAgIHsKKyAgICAg
ICAgJHRoaXMtPmxvZ19wcmludCgiXG4lc1xuJXNcbiIsICRjbGFzcy0+Y19uYW1lLCBzdHJfcmVw
ZWF0KCd+JywgNTApKTsKKworICAgICAgICAkY2xhc3NfbW9kdWxlID0gc3RydG9sb3dlcigkY2xh
c3MtPmluX21vZHVsZSk7CisgICAgICAgICRjbGFzc19sbmFtZSA9IHN0cnRvbG93ZXIoJGNsYXNz
LT5uYW1lKTsKKworICAgICAgICAkY3JlYXRlX2Z1bmMgPSAnTlVMTCc7CisgICAgICAgICRleHRy
YV9yZWdfaW5mbyA9ICcnOworICAgICAgICAkY3Rvcl9kZWZzID0gbnVsbDsKKyAgICAgICAgJHBy
b3BfaW5mbyA9ICdOVUxMJzsKKyAgICAgICAgJGN0b3JfYXJnaW5mbyA9ICcnOworCisgICAgICAg
IGlmICgkY2xhc3MtPmRlZl90eXBlICE9ICdpbnRlcmZhY2UnKSB7CisgICAgICAgICAgICAvKiBp
bnRlcmZhY2VzIGRvbid0IGhhdmUgdGhlc2UgKi8KKyAgICAgICAgICAgIGxpc3QoJGN0b3JfZGVm
cywgJGN0b3JfYXJnaW5mbykgPSAkdGhpcy0+d3JpdGVfY29uc3RydWN0b3IoJGNsYXNzKTsKKyAg
ICAgICAgICAgICRwcm9wX2luZm8gPSAkdGhpcy0+d3JpdGVfcHJvcF9oYW5kbGVycygkY2xhc3Mp
OworICAgICAgICAgICAgbGlzdCgkY3JlYXRlX2Z1bmMsICRleHRyYV9yZWdfaW5mbykgPSAkdGhp
cy0+d3JpdGVfb2JqZWN0X2hhbmRsZXJzKCRjbGFzcyk7CisgICAgICAgIH0KKworICAgICAgICBs
aXN0KCRtZXRob2RfZW50cmllcywgJG1ldGhvZF9hcmdpbmZvKSA9ICR0aGlzLT53cml0ZV9tZXRo
b2RzKCRjbGFzcyk7CisgICAgICAgIGtzb3J0KCRtZXRob2RfZW50cmllcyk7CisgICAgICAgICRt
ZXRob2RfZGVmcyAgICAgICAgICAgPSAkdGhpcy0+bWFrZV9tZXRob2RfZGVmcygkY2xhc3MsICRt
ZXRob2RfZW50cmllcyk7CisgICAgICAgIAorICAgICAgICAkYXJnaW5mbyA9ICRjdG9yX2FyZ2lu
Zm8gLiAkbWV0aG9kX2FyZ2luZm87CisKKyAgICAgICAgaWYgKCRjdG9yX2RlZnMpIHsKKyAgICAg
ICAgICAgICRtZXRob2RfZGVmcyAgICAgICAgICAgPSBhcnJheV9tZXJnZSgkY3Rvcl9kZWZzLCAk
bWV0aG9kX2RlZnMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCRtZXRob2RfZGVmcykgewor
ICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgkYXJnaW5mbyk7CisgICAgICAgICAgICAkdGhp
cy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlvbnNfZGVjbCwgc3RydG9sb3dl
cigkY2xhc3MtPmNfbmFtZSkpKTsKKyAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoam9pbign
JywgJG1ldGhvZF9kZWZzKSk7CisgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKFRlbXBsYXRl
czo6ZnVuY3Rpb25zX2RlY2xfZW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgkY2xhc3Mt
PmRlZl90eXBlID09ICdvYmplY3QnICYmICRjbGFzcy0+aW1wbGVtZW50cykgeworICAgICAgICAg
ICAgJGlmYWNlX2VudHJpZXMgPSBhcnJheSgpOworICAgICAgICAgICAgZm9yZWFjaCAoJGNsYXNz
LT5pbXBsZW1lbnRzIGFzICRpbnRlcmZhY2UpIHsKKyAgICAgICAgICAgICAgICAkaWZhY2VfZW50
cmllc1tdID0gc3RydG9sb3dlcigkaW50ZXJmYWNlKSAuICdfY2UnOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgJGV4dHJhX3JlZ19pbmZvIC49IGFwcmludGYoVGVtcGxhdGVzOjppbXBsZW1l
bnRfaW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJy
YXkoJ2NlJyA9PiAkY2xhc3MtPmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2lmYWNlcycgPT4gam9pbignLCAnLCAkaWZhY2VfZW50cmllcyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtX2lmYWNlcycgPT4g
Y291bnQoJGlmYWNlX2VudHJpZXMpKSk7CisgICAgICAgIH0KKyAgICAgICAgLyogRG8gbm90IHJl
Z2lzdGVyIGd0eXBlIGNvbnN0YW50cyBmb3IgaW50ZXJmYWNlcywgc2luY2UgaW50ZXJmYWNlcyB3
aWxsIAorICAgICAgICAgICBuZXZlciBiZSBpbnN0YW50aWF0ZWQgYW55d2F5LiAqLworICAgICAg
ICBpZiAoJGNsYXNzLT5kZWZfdHlwZSAhPSAnaW50ZXJmYWNlJykgeworICAgICAgICAgICAgJHRo
aXMtPmd0eXBlX2NvbnN0YW50cyAuPSBzcHJpbnRmKFRlbXBsYXRlczo6Z3R5cGVfY29uc3RhbnQs
ICRjbGFzcy0+Y2UsICRjbGFzcy0+dHlwZWNvZGUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGFycmF5KCdjZScgPT4gJGNsYXNzLT5jZSwKKyAgICAgICAgICAgICAgICAgICAgICdjbGFz
cycgPT4gJGNsYXNzLT5pbl9tb2R1bGUgLiAkY2xhc3MtPm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAnbWV0aG9kcycgPT4gJG1ldGhvZF9kZWZzID8gc3RydG9sb3dlcigkY2xhc3MtPmNfbmFt
ZSkgLiAnX21ldGhvZHMnIDogJ05VTEwnLAorICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudCcg
PT4gKCRjbGFzcy0+ZGVmX3R5cGUgPT0gJ29iamVjdCcgJiYgJGNsYXNzLT5wYXJlbnQpID8gc3Ry
dG9sb3dlcigkY2xhc3MtPnBhcmVudCkgLiAnX2NlJyA6ICdOVUxMJywKKyAgICAgICAgICAgICAg
ICAgICAgICdjZV9mbGFncycgPT4gJGNsYXNzLT5jZV9mbGFncyA/IGltcGxvZGUoJ3wnLCAkY2xh
c3MtPmNlX2ZsYWdzKSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAndHlwZWNvZGUnID0+ICRj
bGFzcy0+dHlwZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlX2Z1bmMnID0+ICRj
cmVhdGVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICdleHRyYV9yZWdfaW5mbycgPT4gJGV4
dHJhX3JlZ19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgJ3Byb3BpbmZvJyA9PiAkcHJvcF9p
bmZvKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3cml0ZV9jb25zdGFudHMoKQorICAgIHsKKyAg
ICAgICAgJGVudW1zX2NvZGUgPSAnJzsKKworICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2Vy
LT5lbnVtcyBhcyAkZW51bSkgeworICAgICAgICAgICAgaWYgKCRlbnVtLT50eXBlY29kZSA9PT0g
bnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBl
bnVtIHR5cGUiKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoICgkZW51bS0+dmFsdWVzIGFzICRu
aWNrID0+ICR2YWx1ZSkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgJGVudW1zX2NvZGUgLj0gc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lz
dGVyX2VudW0sICRlbnVtLT5kZWZfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRlbnVtLT50eXBlY29kZSwgJHRoaXMtPmxwcmVmaXggLiAnX2NlJyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYo
VGVtcGxhdGVzOjpyZWdpc3Rlcl9jb25zdGFudHMsICR0aGlzLT5scHJlZml4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGVudW1zX2NvZGUgLiAiXG4iIC4gJHRoaXMtPm92ZXJy
aWRlcy0+Z2V0X2NvbnN0YW50cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHRoaXMtPmd0eXBlX2NvbnN0YW50cykpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHdyaXRlX2Z1
bmN0aW9ucygpCisgICAgeworICAgICAgICAkZnVuY19kZWZzID0gYXJyYXkoKTsKKworICAgICAg
ICAkdGhpcy0+bG9nX3ByaW50KCIgICUtMjBzIiwgImZ1bmN0aW9ucyIpOworICAgICAgICAkbnVt
X3dyaXR0ZW4gPSAkbnVtX3NraXBwZWQgPSAwOworCisgICAgICAgICRkaWN0WydzY29wZSddID0g
JHRoaXMtPnByZWZpeDsKKyAgICAgICAgCisgICAgICAgICRmdW5jdGlvbl9hcmdpbmZvcyA9ICcn
OworICAgICAgICAKKyAgICAgICAgJG9iamVjdCA9IG5ldyBzdGRjbGFzczsKKyAgICAgICAgJG9i
amVjdC0+aW5fbW9kdWxlID0gJHRoaXMtPnByZWZpeDsKKyAgICAgICAgJG9iamVjdC0+Y19uYW1l
ID0gJHRoaXMtPnByZWZpeDsKKworICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5mdW5j
dGlvbnMgYXMgJGZ1bmN0aW9uKSB7CisgICAgICAgICAgICAkZnVuY19uYW1lID0gJGZ1bmN0aW9u
LT5uYW1lOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+bmFtZSA9PSAkZnVuY3Rpb24tPmNf
bmFtZSkgeworICAgICAgICAgICAgICAgICRmdW5jX25hbWUgPSBzdWJzdHIoJGZ1bmN0aW9uLT5u
YW1lLCBzdHJsZW4oJHRoaXMtPmxwcmVmaXgpICsgMSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkZGljdFsnbmFtZSddID0gJGZ1bmNfbmFtZTsKKworICAgICAgICAgICAgLyogc2tpcCBp
Z25vcmVkIG1ldGhvZHMgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5pc19p
Z25vcmVkKCRmdW5jdGlvbi0+Y19uYW1lKSkgY29udGludWU7CisKKyAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVuYykgPSAkdGhp
cy0+Z2VuUmVmbGVjdGlvbkFyZ0luZm8oJGZ1bmN0aW9uLCAkb2JqZWN0KTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoKCRvdmVycmlkZW4gPSAkdGhpcy0+b3ZlcnJpZGVz
LT5pc19vdmVycmlkZW4oJGZ1bmN0aW9uLT5jX25hbWUpKSkgeworICAgICAgICAgICAgICAgICAg
ICBsaXN0KCRmdW5jX25hbWUsICRmdW5jdGlvbl9vdmVycmlkZSwgJGZsYWdzKSA9ICR0aGlzLT5v
dmVycmlkZXMtPmdldF9vdmVycmlkZSgkZnVuY3Rpb24tPmNfbmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChlbXB0eSgkZnVuY19uYW1lKSB8fCAkZnVuY19uYW1lID09ICRmdW5jdGlvbi0+
Y19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmNfbmFtZSA9ICRmdW5jdGlvbi0+
bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uX292ZXJyaWRlID0gcHJlZ19yZXBs
YWNlKCchXi4qKFBIUF9NRVRIT0QpLiokIW0nLCAic3RhdGljICQxKCR0aGlzLT5wcmVmaXgsICRm
dW5jX25hbWUpIiwgJGZ1bmN0aW9uX292ZXJyaWRlKTsKKyAgICAgICAgICAgICAgICAgICAgJHRo
aXMtPndyaXRlX292ZXJyaWRlKCRmdW5jdGlvbl9vdmVycmlkZSwgJGZ1bmN0aW9uLT5jX25hbWUp
OworICAgICAgICAgICAgICAgICAgICAkZnVuY19kZWZzW10gPSBzcHJpbnRmKFRlbXBsYXRlczo6
bWV0aG9kX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICR0aGlzLT5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJGZ1bmNfbmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzID8gJGZsYWdzIDogJ1pFTkRf
QUNDX1BVQkxJQ3xaRU5EX0FDQ19TVEFUSUMnKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAkY29kZSA9ICR0aGlzLT53cml0ZV9jYWxsYWJsZSgkZnVuY3Rp
b24sIFRlbXBsYXRlczo6ZnVuY3Rpb25fYm9keSwgdHJ1ZSwgZmFsc2UsICRkaWN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgkY29kZSk7CisgICAgICAgICAgICAgICAg
ICAgICRmdW5jX2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjptZXRob2RfZW50cnksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY19uYW1lLCAkcmVm
bGVjdGlvbl9mdW5jLCAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQycpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJXMgICUt
MTFzICVzOjolc1xuIiwgJG92ZXJyaWRlbj8iJSUiOiIgICIsICJmdW5jdGlvbiIsICR0aGlzLT5w
cmVmaXgsICRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7
CisgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJmdW5jcyJdLT53cml0dGVuKCk7CisKKyAg
ICAgICAgICAgICAgICBpZiAoJGFyZ2luZm8gIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uX2FyZ2luZm9zIC49ICRhcmdpbmZvOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgeworICAgICAgICAgICAgICAgICR0aGlz
LT5kaXZlcnQoIm5vdGdlbiIsICIgICUtMTFzICVzOjolczogJXNcbiIsICJmdW5jdGlvbiIsICR0
aGlzLT5wcmVmaXgsICRmdW5jdGlvbi0+bmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7CisgICAgICAg
ICAgICAgICAgJG51bV9za2lwcGVkKys7CisgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJm
dW5jcyJdLT5za2lwcGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoJHRoaXMtPm92ZXJyaWRlcy0+aGF2ZV9leHRyYV9tZXRob2RzKCR0aGlzLT5wcmVmaXgpKSB7
CisgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZXh0cmFfbWV0aG9k
cygkdGhpcy0+cHJlZml4KSBhcyAkZnVuY19uYW1lID0+ICRvdmVycmlkZSkgeworICAgICAgICAg
ICAgICAgIGxpc3QoJGZ1bmNfYm9keSwgJGZsYWdzKSA9ICRvdmVycmlkZTsKKyAgICAgICAgICAg
ICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKSA9ICR0aGlzLT5nZW5SZWZsZWN0
aW9uQXJnSW5mbyhudWxsLCAkb2JqZWN0LCAkZnVuY19uYW1lKTsKKworICAgICAgICAgICAgICAg
ICRmdW5jX2JvZHkgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0
aWMgJDEoJHRoaXMtPnByZWZpeCwgJGZ1bmNfbmFtZSkiLCAkZnVuY19ib2R5KTsKKyAgICAgICAg
ICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGZ1bmNfYm9keSwgJHRoaXMtPnByZWZpeCwg
JGZ1bmNfbmFtZSk7CisgICAgICAgICAgICAgICAgJGZ1bmNfZGVmc1tdID0gc3ByaW50ZihUZW1w
bGF0ZXM6Om1ldGhvZF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICR0aGlzLT5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkZnVuY19uYW1lLCAkcmVmbGVjdGlvbl9mdW5jLCAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUND
X1NUQVRJQycpOworICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAl
LTExcyAlczo6JXNcbiIsICJmdW5jdGlvbiIsICR0aGlzLT5wcmVmaXgsICRmdW5jX25hbWUpOwor
ICAgICAgICAgICAgICAgICRudW1fd3JpdHRlbisrOworCisgICAgICAgICAgICAgICAgaWYgKCRh
cmdpbmZvICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbl9hcmdpbmZv
cyAuPSAkYXJnaW5mbzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBzb3J0KCRmdW5jX2RlZnMpOworICAgICAgICBpZiAoJGZ1bmNfZGVmcykg
eworICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgkZnVuY3Rpb25fYXJnaW5mb3MpOworICAg
ICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJpbnRmKFRlbXBsYXRlczo6ZnVuY3Rpb25zX2Rl
Y2wsIHN0cnRvbG93ZXIoJHRoaXMtPmxwcmVmaXgpKSk7CisgICAgICAgICAgICAkdGhpcy0+ZnAt
PndyaXRlKGpvaW4oJycsICRmdW5jX2RlZnMpKTsKKyAgICAgICAgICAgICR0aGlzLT5mcC0+d3Jp
dGUoVGVtcGxhdGVzOjpmdW5jdGlvbnNfZGVjbF9lbmQpOworICAgICAgICB9CisKKyAgICAgICAg
JHRoaXMtPmxvZ19wcmludCgiKCVkIHdyaXR0ZW4sICVkIHNraXBwZWQpXG4iLCAkbnVtX3dyaXR0
ZW4sICRudW1fc2tpcHBlZCk7CisgICAgICAgIHJldHVybiAkZnVuY19kZWZzOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHdyaXRlX3Byb3BfbGlzdHMoKQorICAgIHsKKyAgICAgICAgZ2xvYmFsICAk
Y2xhc3NfcHJvcF9saXN0X2hlYWRlciwKKyAgICAgICAgICAgICAgICAkY2xhc3NfcHJvcF9saXN0
X2Zvb3RlcjsKKyAgICAgICAgCisgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoIlxuIik7CisgICAg
ICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXItPm9iamVjdHMgYXMgJG9iamVjdCkgeworICAgICAg
ICAgICAgaWYgKGNvdW50KCRvYmplY3QtPmZpZWxkcykgPT0gMCkgY29udGludWU7CisKKyAgICAg
ICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZigkY2xhc3NfcHJvcF9saXN0X2hlYWRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydG9sb3dlcigkb2JqZWN0LT5pbl9t
b2R1bGUpIC4gJ18nIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydG9sb3dl
cigkb2JqZWN0LT5uYW1lKSkpOworICAgICAgICAgICAgZm9yZWFjaCAoJG9iamVjdC0+ZmllbGRz
IGFzICRmaWVsZF9kZWYpIHsKKyAgICAgICAgICAgICAgICBsaXN0KCwgJGZpZWxkX25hbWUpID0g
JGZpZWxkX2RlZjsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCJcdFwiJGZpZWxk
X25hbWVcIixcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0
ZSgkY2xhc3NfcHJvcF9saXN0X2Zvb3Rlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j
dGlvbiB3cml0ZV9jb3ZlcmFnZV9pbmZvKCkKKyAgICB7CisgICAgICAgICR0aGlzLT5sb2dfcHJp
bnQoIlxuXG4iKTsKKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgkdGhpcy0+bWFrZV9oZWFkZXIo
IiR0aGlzLT5wcmVmaXggQ292ZXJhZ2UiKSk7CisKKyAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNv
dmVyIGFzICRjb3ZlcmFnZSkgeworICAgICAgICAgICAgbGlzdCgkbmFtZSwgJHdyaXR0ZW4sICR0
b3RhbCwgJHBlcmNlbnQpID0gJGNvdmVyYWdlLT5nZXRfc3RhdHMoKTsKKyAgICAgICAgICAgIGlm
ICgkdG90YWwpIHsKKyAgICAgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIlLTIwczogJTUu
MWYlJSB3cml0dGVuICglZC8lZClcbiIsICRuYW1lLCAkcGVyY2VudCwgJHdyaXR0ZW4sICR0b3Rh
bCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICR0aGlzLT5sb2dfcHJp
bnQoIiUtMjBzOiBub25lIGZvdW5kXG4iLCAkbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG5cbiIpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHdyaXRlX2NsYXNzX2VudHJpZXMoKQorICAgIHsKKyAgICAgICAgJHRoaXMtPmZwLT53cml0
ZSgiXG4iKTsKKyAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+aW50ZXJmYWNlcyBhcyAk
aW50ZXJmYWNlKSB7CisgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRm
KFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICRpbnRlcmZhY2UtPmNlKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5vYmplY3RzIGFzICRvYmplY3QpIHsKKyAg
ICAgICAgICAgIGlmICghJHRoaXMtPm92ZXJyaWRlcy0+aXNfaWdub3JlZCgkb2JqZWN0LT5jX25h
bWUpKSB7CisgICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZV9oZWFkZXIoc3ByaW50ZihU
ZW1wbGF0ZXM6OmNsYXNzX2VudHJ5LCAkb2JqZWN0LT5jZSkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+Ym94ZWQgYXMgJGJveGVk
KSB7CisgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRmKFRlbXBsYXRl
czo6Y2xhc3NfZW50cnksICRib3hlZC0+Y2UpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcmVh
Y2ggKCR0aGlzLT5wYXJzZXItPnBvaW50ZXJzIGFzICRwb2ludGVyKSB7CisgICAgICAgICAgICAk
dGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRmKFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICRw
b2ludGVyLT5jZSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCR0aGlzLT5wYXJzZXItPmZ1
bmN0aW9ucyB8fCAkdGhpcy0+cGFyc2VyLT5lbnVtcykgeworICAgICAgICAgICAgJHRoaXMtPmZw
LT53cml0ZV9oZWFkZXIoc3ByaW50ZihUZW1wbGF0ZXM6OmNsYXNzX2VudHJ5LCAkdGhpcy0+bHBy
ZWZpeCAuICdfY2UnKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWtlX2hl
YWRlcigkc3RyaW5nLCAkd2lkdGggPSA3MiwgJGNoYXIgPSAnPScpCisgICAgeworICAgICAgICAk
cmVzID0gIlxuIiAuIHN0cl9yZXBlYXQoJGNoYXIsICR3aWR0aCkgLiAiXG4iOworICAgICAgICAk
cmVzIC49IHN0cl9wYWQoJHN0cmluZywgJHdpZHRoLCAiICIsIFNUUl9QQURfQk9USCkgLiAiXG4i
OworICAgICAgICAkcmVzIC49IHN0cl9yZXBlYXQoJGNoYXIsICR3aWR0aCkgLiAiXG4iOworCisg
ICAgICAgIHJldHVybiAkcmVzOworICAgIH0KKworICAgIGZ1bmN0aW9uIHdyaXRlX3NvdXJjZSgk
c2F2ZWZpbGUpCisgICAgeworICAgICAgICAkdGhpcy0+bm90X2dlbmVyYXRlZF9saXN0ID0gYXJy
YXkoKTsKKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgkdGhpcy0+bWFrZV9oZWFkZXIoIiR0aGlz
LT5wcmVmaXggU3VtbWFyeSIpKTsKKworICAgICAgICAkdGhpcy0+ZnAgPSBuZXcgTGluZU91dHB1
dCgkc2F2ZWZpbGUpOworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcigiI2luY2x1ZGUg
XCJwaHBfZ3RrLmhcIlxuIik7CisgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKCJcbiNp
ZiBIQVZFX1BIUF9HVEtcbiIpOworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcigkdGhp
cy0+b3ZlcnJpZGVzLT5nZXRfaGVhZGVycygpKTsKKyAgICAgICAgJHRoaXMtPndyaXRlX2NsYXNz
X2VudHJpZXMoKTsKKyAgICAgICAgJHRoaXMtPndyaXRlX2NsYXNzZXMoKTsKKyAgICAgICAgJHRo
aXMtPndyaXRlX2NvbnN0YW50cygpOworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2FsbCgiXG4j
ZW5kaWYgLyogSEFWRV9QSFBfR1RLICovXG4iKTsKKworICAgICAgICAkdGhpcy0+ZnAtPnNhdmUo
KTsKKworICAgICAgICAkdGhpcy0+bG9nKCJcblxuIik7CisgICAgICAgICR0aGlzLT5sb2coJHRo
aXMtPm1ha2VfaGVhZGVyKCIkdGhpcy0+cHJlZml4IEdlbmVyYXRlZCBJdGVtcyIpKTsKKyAgICAg
ICAgJHRoaXMtPmxvZygiJSUlJSAtIG92ZXJyaWRkZW5cblxuIik7CisgICAgICAgICR0aGlzLT5s
b2coIiVzIiwgJHRoaXMtPmRpdmVyc2lvbnNbImdlbiJdKTsKKworICAgICAgICAkdGhpcy0+bG9n
KCJcblxuIik7CisgICAgICAgICR0aGlzLT5sb2coJHRoaXMtPm1ha2VfaGVhZGVyKCIkdGhpcy0+
cHJlZml4IE5vdCBHZW5lcmF0ZWQgSXRlbXMiKSk7CisgICAgICAgIGlmICghZW1wdHkoJHRoaXMt
PmRpdmVyc2lvbnNbIm5vdGdlbiJdKSkgeworICAgICAgICAgICAgJHRoaXMtPmxvZygiJXMiLCAk
dGhpcy0+ZGl2ZXJzaW9uc1sibm90Z2VuIl0pOworICAgICAgICB9CisKKyAgICAgICAgJHRoaXMt
PndyaXRlX2NvdmVyYWdlX2luZm8oKTsKKyAgICAgICAgJHRoaXMtPndyaXRlX3VudXNlZF9pbmZv
KCk7CisgICAgfQorICAgIAorICAgIAorICAgIAorICAgIC8qKgorICAgICogICBnZW5lcmF0ZXMg
YW4gWkVORF9BUkdJTkZPIGVudHJ5IGZvciB0aGlzIG1ldGhvZAorICAgICogICBiYXNlZCBvbiB0
aGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBpdAorICAgICoKKyAgICAqICAgQHBhcmFtIE1ldGhv
ZCAkbWV0aG9kICAgICAgICAgICBUaGUgbWV0aG9kIChvciBjb25zdHJ1Y3RvcikgdG8gZ2VuZXJh
dGUgdGhlIGFyZ2luZm8gZm9yIChpZiBOVUxMLCB0aGVuIHdlIGNoZWNrIGZvciBvdmVycmlkZGVu
IG9ubHkpCisgICAgKiAgIEBwYXJhbSBDbGFzcyAgJGNsYXNzICAgICAgICAgICAgVGhlIGNsYXNz
IG9mIHRoZSBtZXRob2QKKyAgICAqICAgQHBhcmFtIHN0cmluZyAkZGV0X21ldGhvZF9uYW1lICBT
cGVjaWFsIGRldGVybWluZWQgbWV0aG9kIG5hbWUgaWYgaXQgY2FuJ3QgYmUgY2FsY3VsYXRlZCBm
cm9tIHRoZSBtZXRob2Qgb2JqZWN0CisgICAgKiAgIEByZXR1cm4gYXJyYXkgVGhlIGFyZ2luZm8g
KHN0cmluZykgYW5kIHRoZSBuYW1lIG9mIHRoZSByZWZsZWN0aW9uIGZ1bmN0aW9uCisgICAgKi8K
KyAgICBmdW5jdGlvbiBnZW5SZWZsZWN0aW9uQXJnSW5mbygkbWV0aG9kLCAkY2xhc3MsICRkZXRf
bWV0aG9kX25hbWUgPSBudWxsKQorICAgIHsKKyAgICAgICAgaWYgKCRkZXRfbWV0aG9kX25hbWUg
IT09IG51bGwpIHsKKyAgICAgICAgICAgICRsZW4gPSAyMCAtIHN0cmxlbigkZGV0X21ldGhvZF9u
YW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRsZW4gPSAyMCAtIHN0cmxlbigk
bWV0aG9kLT5uYW1lKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoJGxlbiA8IDApIHsgJGxlbiA9
IDA7IH0KKworICAgICAgICBpZiAoJG1ldGhvZCA9PT0gbnVsbCB8fCAoJG92ZXJyaWRlbiA9ICR0
aGlzLT5vdmVycmlkZXMtPmlzX292ZXJyaWRlbigkbWV0aG9kLT5jX25hbWUpKSkgeworICAgICAg
ICAgICAgLy9vdmVycmlkZGVuIGZ1bmN0aW9uIC0gZXh0cmEgYXJnaW5mbyBpbiBvdmVycmlkZSBm
aWxlPworICAgICAgICAgICAgJGNsYXNzX25hbWUgID0gJGNsYXNzLT5jX25hbWU7CisgICAgICAg
ICAgICBpZiAoJGRldF9tZXRob2RfbmFtZSAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICRt
ZXRob2RfbmFtZSA9ICRkZXRfbWV0aG9kX25hbWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICRvdmVycmlkZWluZm8gPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfb3ZlcnJp
ZGUoJG1ldGhvZC0+Y19uYW1lKTsKKyAgICAgICAgICAgICAgICAkbWV0aG9kX25hbWUgPSAkb3Zl
cnJpZGVpbmZvWzBdOworICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkbWV0aG9kX25hbWUpIHx8
ICRtZXRob2RfbmFtZSA9PSAkbWV0aG9kLT5jX25hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
JG1ldGhvZF9uYW1lID0gJG1ldGhvZC0+bmFtZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXNfZXh0cmFfYXJn
aW5mbygkY2xhc3NfbmFtZSwgJG1ldGhvZF9uYW1lKSkgeworICAgICAgICAgICAgICAgICRyZWZs
ZWN0aW9uX2Z1bmNuYW1lID0gZ3RrR2VuZXJhdG9yOjpnZXRSZWZsZWN0aW9uRnVuY05hbWUoJG1l
dGhvZCwgJGNsYXNzLCAkZGV0X21ldGhvZF9uYW1lKTsKKyAgICAgICAgICAgICAgICAkcmVmbGVj
dGlvbl9mdW5jID0gc3RyX3JlcGVhdCgnICcsICRsZW4pIC4gJHJlZmxlY3Rpb25fZnVuY25hbWU7
CisKKyAgICAgICAgICAgICAgICAkYXJnaW5mbyA9IHN0cl9yZXBsYWNlKCdBUkdJTkZPX05BTUUn
LCAkcmVmbGVjdGlvbl9mdW5jbmFtZSwgJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2V4dHJhX2FyZ2lu
Zm8oJGNsYXNzX25hbWUsICRtZXRob2RfbmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvL25vIGFyZ2luZm8KKyAgICAgICAgICAgICAgICAkcmVmbGVjdGlvbl9m
dW5jID0gc3RyX3JlcGVhdCgnICcsICRsZW4pIC4gJ05VTEwnOworICAgICAgICAgICAgICAgICRh
cmdpbmZvID0gbnVsbDsKKyAgICAgICAgICAgICAgICAvL3Zhcl9kdW1wKCdObyBhcmdpbmZvIGZv
ciBvdmVycmlkZGVuICcgLiAkcmVmbGVjdGlvbl9mdW5jbmFtZSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgfSBlbHNlIGlmIChjb3VudCgkbWV0aG9kLT5wYXJhbXMpID09IDApIHsKKyAgICAg
ICAgICAgICRyZWZsZWN0aW9uX2Z1bmMgPSBzdHJfcmVwZWF0KCcgJywgJGxlbikgLiAnTlVMTCc7
CisgICAgICAgICAgICAkYXJnaW5mbyA9IG51bGw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAkcmVmbGVjdGlvbl9mdW5jbmFtZSA9IGd0a0dlbmVyYXRvcjo6Z2V0UmVmbGVjdGlvbkZ1
bmNOYW1lKCRtZXRob2QsICRjbGFzcyk7CisgICAgICAgICAgICAkcmVmbGVjdGlvbl9mdW5jID0g
c3RyX3JlcGVhdCgnICcsICRsZW4pIC4gJHJlZmxlY3Rpb25fZnVuY25hbWU7CisKKyAgICAgICAg
ICAgICRwYXJhbV9jb3VudCA9IDA7CisgICAgICAgICAgICAkb3B0cGFyYW1fY291bnQgPSAwOwor
ICAgICAgICAgICAgJGFyZ3BhcmFtcyA9ICcnOworICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhv
ZC0+cGFyYW1zIGFzICRwYXJhbWluZm8pIHsKKyAgICAgICAgICAgICAgICAkcGFyYW1fY291bnQr
KzsKKyAgICAgICAgICAgICAgICBpZiAoJHBhcmFtaW5mb1syXSAhPT0gbnVsbCkgeworICAgICAg
ICAgICAgICAgICAgICAvL2lmIHRoaXMgaXMgc2V0LCB3ZSd2ZSBnb3QgYSBkZWZhdWx0IHZhbHVl
IC0+IG9wdGlvbmFsIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAkb3B0cGFyYW1fY291
bnQrKzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAkcGFyYW10eXBlID0g
c3RyX3JlcGxhY2UoJ2NvbnN0LScsICcnLCBzdHJfcmVwbGFjZSgnKicsICcnLCAkcGFyYW1pbmZv
WzBdKSk7CisgICAgICAgICAgICAgICAgaWYgKGd0a0dlbmVyYXRvcjo6aXNfcGhwX3R5cGUoJHBh
cmFtdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJGFyZ3BhcmFtcyAuPSBzcHJpbnRmKFRl
bXBsYXRlczo6cmVmbGVjdGlvbl9hcmcsICRwYXJhbWluZm9bMV0pOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRhcmdwYXJhbXMgLj0gc3ByaW50ZihUZW1w
bGF0ZXM6OnJlZmxlY3Rpb25fb2JqYXJnLCAkcGFyYW1pbmZvWzFdLCAkcGFyYW10eXBlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJG9wdHBhcmFt
X2NvdW50ID4gMCkgeworICAgICAgICAgICAgICAgIC8vd2l0aCBvcHRpb25hbCBjb3VudAorICAg
ICAgICAgICAgICAgICRhcmdpbmZvID0gc3ByaW50ZihUZW1wbGF0ZXM6OnJlZmxlY3Rpb25fYXJn
aW5mb2V4X2JlZ2luLCAkcmVmbGVjdGlvbl9mdW5jbmFtZSwgJHBhcmFtX2NvdW50IC0gJG9wdHBh
cmFtX2NvdW50KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy9zaW1w
bGUgb25lCisgICAgICAgICAgICAgICAgJGFyZ2luZm8gPSBzcHJpbnRmKFRlbXBsYXRlczo6cmVm
bGVjdGlvbl9hcmdpbmZvX2JlZ2luLCAkcmVmbGVjdGlvbl9mdW5jbmFtZSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICRhcmdpbmZvIC49ICRhcmdwYXJhbXM7CisgICAgICAgICAgICAk
YXJnaW5mbyAuPSBUZW1wbGF0ZXM6OnJlZmxlY3Rpb25fYXJnaW5mb19lbmQ7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGFycmF5KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKTsKKyAgICB9
Ly9mdW5jdGlvbiBnZW5SZWZsZWN0aW9uQXJnSW5mbygkbWV0aG9kLCAkY2xhc3MpCisKKworCisg
ICAgZnVuY3Rpb24gZ2V0UmVmbGVjdGlvbkZ1bmNOYW1lKCRtZXRob2QsICRjbGFzcywgJGRldF9t
ZXRob2RfbmFtZSA9IG51bGwpCisgICAgeworICAgICAgICBpZiAoJG1ldGhvZCA9PT0gbnVsbCkg
eworICAgICAgICAgICAgJG1ldGhvZCA9IG5ldyBzdGRjbGFzczsKKyAgICAgICAgICAgICRtZXRo
b2QtPm5hbWUgPSAkZGV0X21ldGhvZF9uYW1lOworICAgICAgICB9CisgICAgICAgIHJldHVybiAn
YXJnaW5mb18nIC4gc3RydG9sb3dlcigkY2xhc3MtPmluX21vZHVsZSkgLiAnXycgLiBzdHJ0b2xv
d2VyKCRjbGFzcy0+Y19uYW1lKSAuICdfJy4gJG1ldGhvZC0+bmFtZTsKKyAgICB9Ly9mdW5jdGlv
biBnZXRSZWZsZWN0aW9uRnVuY05hbWUoJG1ldGhvZCwgJGNsYXNzLCAkZGV0X21ldGhvZF9uYW1l
ID0gbnVsbCkKKworCisKKyAgICBmdW5jdGlvbiB3cml0ZV91bnVzZWRfaW5mbygpCisgICAgewor
ICAgICAgICAkdW51c2VkID0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X3VudXNlZF9hcmdpbmZvKCk7
CisgICAgICAgIAorICAgICAgICAkdW51c2VkX2NvdW50ID0gMDsKKyAgICAgICAgJG91dHB1dCA9
ICcnOworICAgICAgICBmb3JlYWNoICgkdW51c2VkIGFzICRjbGFzcyA9PiAkbWV0aG9kcykgewor
ICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG1ldGhvZCA9PiAkdHJ1ZSkgeworICAg
ICAgICAgICAgICAgICR1bnVzZWRfY291bnQrKzsKKyAgICAgICAgICAgICAgICBsaXN0KCRsaW5l
LCAkZmlsZW5hbWUpID0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2xpbmVfaW5mbygiJGNsYXNzLiRt
ZXRob2QuYXJnaW5mbyIpOworICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gJyAnIC4gc3RyX3Bh
ZCgkY2xhc3MgLiAnOjonIC4gJG1ldGhvZCwgNDApIC4gJyAnIC4gJGZpbGVuYW1lIC4gJyMnIC4g
JGxpbmUgLiAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgkdW51
c2VkX2NvdW50ID4gMCkgeworICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgnVW51c2VkIGFy
Z2luZm8gb3ZlcnJpZGVzOicgLiAiXG4iKTsKKyAgICAgICAgICAgICR0aGlzLT5sb2dfcHJpbnQo
JG91dHB1dCk7CisgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcblxuIik7CisgICAgICAg
IH0KKyAgICB9CisKKworCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB0eXBl
IGlzIGEgc2ltcGxlIHBocCB0eXBlCisgICAgICoKKyAgICAgKiBBbGwgdW5zdXBwb3J0ZWQgY2xh
c3NlcyBoYXZlIHRvIGJlIGhlcmUgYXMgcGhwNSBmdW5jdGlvbnMgd2VpcmQgaWYKKyAgICAgKiAg
cmVmbGVjdGlvbiBpcyB1c2VkIHdpdGggdGhpcyBvbmVzLi4uCisgICAgICogVXNlIGdlbmVyYXRv
ci9yZWZsZWN0aW9uX2NsYXNzX2NoZWNrZXIucGhwIHRvIG1pc3NpbmcgY2xhc3NlcywgYW5kCisg
ICAgICogIGFkZCB0aGVtIGhlcmUKKyAgICAgKgorICAgICAqIEBhY2Nlc3MgcHVibGljCisgICAg
ICogQHBhcmFtICBzdHJpbmcgJGluX3R5cGUgVGhlIEMgdHlwZS4KKyAgICAgKiBAcmV0dXJuIGJv
b2xlYW4gdHJ1ZSBpZiBpdHMgYSBzaW1wbGUgdHlwZQorICAgICAqLworICAgIGZ1bmN0aW9uIGlz
X3BocF90eXBlKCRpbl90eXBlKQorICAgIHsKKyAgICAgICAgLy8gS2V5ID0gQyBUeXBlLCBWYWwg
PSBQSFAgdHlwZQorICAgICAgICBzdGF0aWMgJHR5cGVfbWFwID0gYXJyYXkoJ25vbmUnICAgICAg
ICAgICA9PiAndm9pZCcsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFy
KicgICAgICAgICAgPT4gJ3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZ2NoYXIqJyAgICAgICAgID0+ICdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NvbnN0LWNoYXIqJyAgICA9PiAnc3RyaW5nJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb25zdC1nY2hhcionICAgPT4gJ3N0cmluZycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nJyAgICAgICAgID0+ICdzdHJpbmcnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpY19zdHJpbmcnICA9PiAnc3RyaW5n
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNpZ25lZC1jaGFyKicgPT4g
J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VjaGFyKicgICAg
ICAgID0+ICdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhcicgICAgICAgICAgID0+ICdjaGFyJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnY2hhcicgICAgICAgICAgPT4gJ2No
YXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1Y2hhcicgICAgICAgICA9
PiAnY2hhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdpbnQnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2ludCcgICAgICAgICAgID0+ICdpbnQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1aW50JyAgICAgICAgICA9PiAnaW50JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydCcgICAgICAgICAgPT4gJ2lu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3Nob3J0JyAgICAgICAgID0+
ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1c2hvcnQnICAgICAg
ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb25nJyAgICAg
ICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xvbmcn
ICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1
bG9uZycgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1aW50OCcgICAgICAgICA9PiAn
aW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnaW50OCcgICAgICAgICAg
PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VpbnQxNicgICAg
ICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpbnQxNicg
ICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndWlu
dDMyJyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Z2ludDMyJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3NpemUnICAgICAgICAgID0+
ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvL2FsbCBlbnVtZXJhdGlvbiBjbGFzc2VzIGhlcmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ3RrIGVudW1zCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnR3RrQWNjZWxGbGFncycgICAgICAgID0+ICdpbnQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0FuY2hvclR5cGUnICAgICAgICA9PiAnaW50
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtBcnJvd1R5cGUnICAgICAg
ICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrQXR0YWNo
T3B0aW9ucycgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0d0a0J1dHRvbkJveFN0eWxlJyAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHdGtCdXR0b25zVHlwZScgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnR3RrQ2FsZW5kYXJEaXNwbGF5T3B0aW9ucycgPT4gJ2ludCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrQ2VsbFJlbmRlcmVyU3RhdGUn
ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Nvcm5lclR5
cGUnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH
dGtDVHJlZUV4cGFuZGVyU3R5bGUnPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnR3RrQ1RyZWVMaW5lU3R5bGUnICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0d0a0N1cnZlVHlwZScgICAgICAgICA9PiAnaW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtEZWxldGVUeXBlJyAgICAgICAgPT4gJ2lu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrRGVzdHJveU5vdGlmeScg
ICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0RpYWxv
Z0ZsYWdzJyAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHdGtEaXJlY3Rpb25UeXBlJyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnR3RrRXhwYW5kZXJTdHlsZScgICAgID0+ICdpbnQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0d0a0ZpbGVDaG9vc2VyQWN0aW9uJyA9PiAnaW50JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtGdW5jdGlvbicgICAgICAgICAgPT4g
J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrSWNvbkxvb2t1cEZs
YWdzJyAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0lj
b25TaXplJyAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdHdGtJTVByZWVkaXRTdHlsZScgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnR3RrSU1TdGF0dXNTdHlsZScgICAgID0+ICdpbnQnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0p1c3RpZmljYXRpb24nICAgICA9PiAnaW50JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtNYXRjaFR5cGUnICAgICAgICAg
PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrTWVzc2FnZVR5
cGUnICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0
a01ldHJpY1R5cGUnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdHdGtNb3ZlbWVudFN0ZXAnICAgICAgPT4gJ2ludCcsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0d0a09yaWVudGF0aW9uJyAgICAgICA9PiAnaW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQYWNrRGlyZWN0aW9uJyAgICAgPT4gJ2lu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGFja1R5cGUnICAgICAg
ICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1BhdGhQ
cmlvcml0eVR5cGUnICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHdGtQYXRoVHlwZScgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnR3RrUG9saWN5VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bvc2l0aW9uVHlwZScgICAgICA9PiAnaW50JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmV2aWV3VHlwZScgICAgICAgPT4g
J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUHJvZ3Jlc3NCYXJP
cmllbnRhdGlvbicgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
R3RrUHJvZ3Jlc3NCYXJTdHlsZScgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0d0a1JlbGllZlN0eWxlJyAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdHdGtSZXNpemVNb2RlJyAgICAgICAgPT4gJ2ludCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU2Nyb2xsU3RlcCcgICAgICAgID0+ICdp
bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Njcm9sbFR5cGUnICAg
ICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTZWxl
Y3Rpb25Nb2RlJyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnR3RrU2hhZG93VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0d0a1NpZGVUeXBlJyAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdHdGtTaXplR3JvdXBNb2RlJyAgICAgPT4gJ2ludCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU3BpbkJ1dHRvblVwZGF0ZVBvbGlj
eScgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU3BpblR5
cGUnICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0d0a1N0YXRlVHlwZScgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHdGtTdG9ja0l0ZW0nICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnR3RrU3VibWVudURpcmVjdGlvbicgID0+ICdpbnQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1N1Ym1lbnVQbGFjZW1lbnQnICA9PiAn
aW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUZXh0RGlyZWN0aW9u
JyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVGV4
dFNlYXJjaEZsYWdzJyAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0d0a1RleHRXaW5kb3dUeXBlJyAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdHdGtUb29sYmFyU3R5bGUnICAgICAgPT4gJ2ludCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnR3RrVHJlZUNlbGxEYXRhRnVuYycgID0+ICdpbnQnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1RyZWVNb2RlbCcgICAgICAgICA9
PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUcmVlUGF0aCcg
ICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr
VHJlZVZpZXdDb2x1bW5TaXppbmcnID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0d0a1RyZWVWaWV3RHJvcFBvc2l0aW9uJyA9PiAnaW50JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdHdGtUeXBlJyAgICAgICAgICAgICAgPT4gJ2ludCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVUlNYW5hZ2VySXRlbVR5cGUnID0+
ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1VwZGF0ZVR5cGUn
ICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtW
aXNpYmlsaXR5JyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR3RrV2luZG93UG9zaXRpb24nICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0d0a1dpbmRvd1R5cGUnICAgICAgICA9PiAnaW50JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtXcmFwTW9kZScgICAgICAgICAgPT4gJ2ludCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU29ydFR5cGUnICAgICAgICAg
ID0+ICdpbnQnLAorCQkJCQkJCQkgLy8gMi4xMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0d0a1VuaXQnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHdGtUcmVlVmlld0dyaWRMaW5lcycgICAgICAgICAgPT4gJ2ludCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVGV4dEJ1ZmZlclRhcmdldEluZm8nICAg
ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Nl
bnNpdGl2aXR5VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0d0a1JlY2VudFNvcnRUeXBlJyAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtSZWNlbnRNYW5hZ2VyRXJyb3InICAgICAgICAg
ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1JlY2VudENo
b29zZXJFcnJvciAnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdHdGtQcmludFN0YXR1cycgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnR3RrUHJpbnRRdWFsaXR5JyAgICAgICAgICA9PiAnaW50JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludFBhZ2VzJyAgICAgICAg
PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUHJpbnRPcGVy
YXRpb25SZXN1bHQnICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0d0a1ByaW50T3BlcmF0aW9uQWN0aW9uJyAgICAgICAgICA9PiAnaW50JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludEVycm9yJyAgICAgICAgICA9
PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludER1cGxl
eCcgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
R3RrUGFnZVNldCcgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0d0a1BhZ2VPcmllbnRhdGlvbicgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnR3RrQ2VsbFJlbmRlcmVyQWNjZWxNb2RlJyAgICAgICAg
ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtBc3Npc3Rh
bnRQYWdlVHlwZScgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvL2dkayBlbnVtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dk
a0F4aXNVc2UnICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdHZGtCaXRtYXAnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnR2RrQnl0ZU9yZGVyJyAgICAgICAgID0+ICdpbnQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0NhcFN0eWxlJyAgICAgICAgICA9PiAnaW50
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtDb2xvcnNwYWNlJyAgICAg
ICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrQ3Vyc29y
VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0dka0Nyb3NzaW5nTW9kZScgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHZGtEcmFnQWN0aW9uJyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnR2RrRHJhZ1Byb3RvY29sJyAgICAgID0+ICdpbnQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0V2ZW50RXhwb3NlJyAgICAgICA9PiAn
aW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtFdmVudEtleScgICAg
ICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrRXZl
bnRTZWxlY3Rpb24nICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0dka0V2ZW50VHlwZScgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdHZGtFdmVudE1hc2snICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnR2RrRXh0ZW5zaW9uTW9kZScgICAgID0+ICdpbnQnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0dyYXZpdHknICAgICAgICAgICA9
PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtGaWxsJyAgICAg
ICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2Rr
RmlsbFJ1bGUnICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0dka0ZpbHRlclJldHVybicgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdHZGtGb250VHlwZScgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrRnVuY3Rpb24nICAgICAgICAgID0+ICdpbnQn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0dDVmFsdWVzTWFzaycgICAg
ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtHcmFiU3Rh
dHVzJyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
R2RrSW1hZ2VUeXBlJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0dka0lucHV0Q29uZGl0aW9uJyAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdHZGtJbnB1dFNvdXJjZScgICAgICAgPT4gJ2ludCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrSW5wdXRNb2RlJyAgICAgICAgID0+ICdp
bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0ludGVycFR5cGUnICAg
ICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtKb2lu
U3R5bGUnICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnR2RrTGluZVN0eWxlJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0dka01vZGlmaWVyVHlwZScgICAgICA9PiAnaW50JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdHZGtOYXRpdmVXaW5kb3cnICAgICAgPT4gJ2ludCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrTm90aWZ5VHlwZScgICAgICAgID0+
ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka092ZXJsYXBUeXBl
JyAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtP
d25lckNoYW5nZScgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR2RrUGl4YnVmQWxwaGFNb2RlJyAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0dka1Byb3BlcnR5U3RhdGUnICAgICA9PiAnaW50JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtQcm9wTW9kZScgICAgICAgICAgPT4gJ2ludCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrUmdiRGl0aGVyJyAgICAgICAg
ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1Njcm9sbERp
cmVjdGlvbicgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH
ZGtTZXR0aW5nQWN0aW9uJyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnR2RrU3Vid2luZG93TW9kZScgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0dka1Zpc2liaWxpdHlTdGF0ZScgICA9PiAnaW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtWaXN1YWxUeXBlJyAgICAgICAgPT4gJ2lu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrV2luZG93QXR0cmlidXRl
c1R5cGUnICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtX
aW5kb3dDbGFzcycgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR2RrV2luZG93RWRnZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0dka1dpbmRvd0hpbnRzJyAgICAgICA9PiAnaW50JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtXaW5kb3dTdGF0ZScgICAgICAgPT4gJ2ludCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrV2luZG93VHlwZUhpbnQnICAg
ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1dNRGVjb3Jh
dGlvbicgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH
ZGtXTUZ1bmN0aW9uJyAgICAgICAgPT4gJ2ludCcsCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGxpYnNleHkgZW51bXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdTZXh5SWNvbkVudHJ5UG9zaXRpb24nID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1NleHlTcGVsbEVycm9yJyAgICAgICAgPT4gJ2ludCcsCisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGd0a2V4dHJhIGVudW1zCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnR3RrSWNvbkxpc3RNb2RlJyAgICAgICAgICAgID0+ICdp
bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RQbGFuZScgICAg
ICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH
dGtQbG90QmFyVW5pdHMnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnR3RrUGxvdENhbnZhc0FjdGlvbicgICAgICAgID0+ICdpbnQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RDYW52YXNTZWxlY3Rpb24nICAg
ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90Q2Fu
dmFzUG9zJyAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnR3RrUGxvdENhbnZhc1NlbGVjdGlvbk1vZGUnID0+ICdpbnQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RDYW52YXNQbG90UG9zJyAgICAgICA9PiAnaW50
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90UHJvamVjdGlvbicg
ICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr
UGxvdFNjYWxlJyAgICAgICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0d0a1Bsb3RTeW1ib2xUeXBlJyAgICAgICAgICA9PiAnaW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90U3ltYm9sU3R5bGUnICAgICAgICAg
PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdEJvcmRl
clN0eWxlJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0d0a1Bsb3RMaW5lU3R5bGUnICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdHdGtQbG90Q29ubmVjdG9yJyAgICAgICAgICAgPT4gJ2ludCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdEVycm9yJyAgICAgICAg
ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bs
b3RPcmllbnRhdGlvbicgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdHdGtQbG90QXhpc1BvcycgICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdExhYmVsU3R5bGUnICAgICAgICAgID0+
ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RTY2FsZScg
ICAgICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHdGtQbG90UGFnZVNpemUnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnR3RrUGxvdFBhZ2VPcmllbnRhdGlvbicgICAgID0+ICdpbnQnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RVbml0cycgICAgICAgICAg
ICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTaGVl
dEF0dHJUeXBlJyAgICAgICAgICAgPT4gJ2ludCcsCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vUGFuZ28gZW51bXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdQYW5nb0FsaWdubWVudCcgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnUGFuZ29EaXJlY3Rpb24nICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvRWxsaXBzaXplTW9kZScgICA9PiAnaW50JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb0ZvbnRNYXNrJyAgICAgICAgPT4g
J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGFuZ29SZWN0YW5nbGUn
ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bhbmdv
U3RyZXRjaCcgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdQYW5nb1N0eWxlJyAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnUGFuZ29UYWJBbGlnbicgICAgICAgID0+ICdpbnQnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvVmFyaWFudCcgICAgICAgICA9PiAnaW50JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb1dlaWdodCcgICAgICAgICAg
PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGFuZ29XcmFwTW9k
ZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0F0ayBlbnVtcworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0F0a1JvbGUnICAgICAgICAgICAgICA9PiAnaW50JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdGtSZWxhdGlvblR5cGUnICAgICAgPT4g
J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXRrU3RhdGVUeXBlJyAg
ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F0a1Rl
eHRBdHRyaWJ1dGUnICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy9zb21lIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdHRGVzdHJveU5vdGlmeScgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnR0Vycm9yJyAgICAgICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0dTTGlzdCcgICAgICAgICAgICAgICA9PiAnaW50JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHVmFsdWUnICAgICAgICAgICAgICAg
PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdncG9pbnRlcicgICAgICAgICAgICAgPT4gJ2ludCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdnYm9vbGVhbicgICAgICAgPT4gJ2Jvb2wnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG91Ymxl
JyAgICAgICAgID0+ICdkb3VibGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2dkb3VibGUnICAgICAgICA9PiAnZG91YmxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmbG9hdCcgICAgICAgICAgPT4gJ2RvdWJsZScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZ2Zsb2F0JyAgICAgICAgID0+ICdkb3VibGUnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
R2RrRHJhd2FibGUqJyAgID0+ICdHZGtXaW5kb3cnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0dka0F0b20nICAgICAgICA9PiAnc3RyaW5nJyk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gaXNzZXQoJHR5cGVfbWFwWyRpbl90eXBlXSk7CisgICAgfS8vZnVuY3Rpb24gaXNf
cGhwX3R5cGUoJGluX3R5cGUpCit9CisKKy8qIHNpbXBsZSBmYXRhbF9lcnJvciBmdW5jdGlvbiAK
KyAgICAgICAgLSB1c2VmdWwgaW4gNC4yLjAtZGV2IGFuZCBsYXRlciBhcyBpdCB3aWxsIGFjdHVh
bGx5IGhhbHQgZXhlY3R1dGlvbiBvZiBtYWtlCisgICAgLSBuZWVkcyB0byBvdXRwdXQgdG8gc3Rk
ZXJyIGFzIHRoZSBkZWZhdWx0IHByaW50IHdvdWxkIGVuZCB1cCBpbnNpZGUgdGhlIGNvZGUKKyAg
ICAtIFRPRE8gLSB0aGUgbWFrZSBmaWxlIG91dHB1dHMgYW4gZW1wdHkgZmlsZSB0byBnZW5fWFhY
LmMsIHRoZXJlIG11c3QgYmUgYQorICAgICAgYmV0dGVyIHdheSAgdG8gZGVsZXRlIGl0Li4uIC0g
YnkgdXNpbmcgb3V0cHV0IGJ1ZmZlcmluZyBvciBzb210aGluZz8KKyovICAKK2Z1bmN0aW9uIGZh
dGFsX2Vycm9yKCRtZXNzYWdlKSB7CisgICAgJGZoID0gZm9wZW4oInBocDovL3N0ZGVyciIsICJ3
Iik7CisgICAgICAgIGZ3cml0ZSgkZmgsIlxuXG5cblxuCis9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgCisg
ICAgVGhlcmUgd2FzIGEgU2VyaW91cyBlcnJvciB3aXRoIHRoZSBQSFAtR1RLIGd0a0dlbmVyYXRv
ciBzY3JpcHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAKKyAgICAkbWVzc2FnZQorPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ICAgIAorICAgIFlvdSBzaG91bGQgdHlwZSB0aGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBjIHNv
dXJjZSBpcyBjb3JyZWN0bHkKKyAgICBnZW5lcmF0ZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gbWFr
ZSBhZ2Fpbi4KKyAgICAKKyAgICAjZmluZCAuIHwgZ3JlcCBkZWZzIHwgeGFyZ3MgdG91Y2gKKwor
ICAgIFxuXG5cblxuIik7CisgICAgZmNsb3NlKCRmaCk7CisgICAgZXhpdCgxKTsKK30KKworCisk
b2xkX2Vycm9yX3JlcG9ydGluZyA9IGVycm9yX3JlcG9ydGluZyhFX0FMTCk7CisKK2lmICghaXNz
ZXQoJF9TRVJWRVJbJ2FyZ3YnXSkpIAorICAgIGZhdGFsX2Vycm9yKCIKKyAgICAgICAgQ291bGQg
bm90IHJlYWQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmb3IgZ3RrZ2VuZXJhdG9yLnBocCAKKyAg
ICAgICAgUGxlYXNlIGVuc3VyZSB0aGF0IHRoaXMgb3B0aW9uIGlzIHNldCBpbiB5b3VyIHBocC5p
bmkKKyAgICAgICAgcmVnaXN0ZXJfYXJnY19hcmd2ID0gT24gICAgIAorICAgICIpOworCisKK2lm
IChpc3NldCgkX1NFUlZFUlsnYXJnYyddKSAmJgorICAgIGlzc2V0KCRfU0VSVkVSWydhcmd2J10p
KSB7CisgICAgJGFyZ2MgPSAkX1NFUlZFUlsnYXJnYyddOworICAgICRhcmd2ID0gJF9TRVJWRVJb
J2FyZ3YnXTsKK30KKworIAorJHJlc3VsdCA9IENvbnNvbGVfR2V0b3B0OjpnZXRvcHQoJGFyZ3Ys
ICdsOm86cDpjOnI6Zjp2OicpOworaWYgKCEkcmVzdWx0IHx8IGNvdW50KCRyZXN1bHRbMV0pIDwg
MikKKyAgICBkaWUoInVzYWdlOiBwaHAgZ3RrZ2VuZXJhdG9yLnBocCBbLWwgbG9nZmlsZV0gWy1v
IG92ZXJyaWRlc2ZpbGVdIFstcCBwcmVmaXhdIFstYyBmdW5jdGlvbmNsYXNzIF0gWy1yIHR5cGVz
ZmlsZV0gWy1mIHNhdmVmaWxlXSBbLXYgZ3RrbGlidmVyc2lvbl0gZGVmc2ZpbGVcbiIpOworCits
aXN0KCRvcHRzLCAkYXJndikgPSAkcmVzdWx0OworCiskcHJlZml4ID0gJ0d0ayc7CiskZnVuY3Rp
b25fY2xhc3MgPSBudWxsOworJG92ZXJyaWRlcyA9IG51bGw7CiskcmVnaXN0ZXJfZGVmcyA9IGFy
cmF5KCk7Ciskc2F2ZWZpbGUgPSAndG1wLmMnOworJGxvZ2ZpbGUgPSAncGhwOi8vc3RkZXJyJzsK
KyRndGt2ZXJzaW9uID0gJzIuNic7CisKK2ZvcmVhY2ggKCRvcHRzIGFzICRvcHQpIHsKKyAgICBs
aXN0KCRvcHRfc3BlYywgJG9wdF9hcmcpID0gJG9wdDsKKyAgICBpZiAoJG9wdF9zcGVjID09ICdv
JykgeworICAgICAgICAkb3ZlcnJpZGVzID0gJG9wdF9hcmc7CisgICAgfSBlbHNlIGlmICgkb3B0
X3NwZWMgPT0gJ3AnKSB7CisgICAgICAgICRwcmVmaXggPSAkb3B0X2FyZzsKKyAgICB9IGVsc2Ug
aWYgKCRvcHRfc3BlYyA9PSAnYycpIHsKKyAgICAgICAgJGZ1bmN0aW9uX2NsYXNzID0gJG9wdF9h
cmc7CisgICAgfSBlbHNlIGlmICgkb3B0X3NwZWMgPT0gJ3InKSB7CisgICAgICAgICRyZWdpc3Rl
cl9kZWZzW10gPSAkb3B0X2FyZzsKKyAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAnZicpIHsK
KyAgICAgICAgJHNhdmVmaWxlID0gJG9wdF9hcmc7CisgICAgfSBlbHNlIGlmICgkb3B0X3NwZWMg
PT0gJ2wnKSB7CisgICAgICAgICRsb2dmaWxlID0gJG9wdF9hcmc7CisgICAgfSBlbHNlIGlmICgk
b3B0X3NwZWMgPT0gJ3YnKSB7CisgICAgICAgICRndGt2ZXJzaW9uID0gJG9wdF9hcmc7CisgICAg
fQorfQorCitpZiAoZmlsZV9leGlzdHMoZGlybmFtZSgkYXJndlsxXSkgLiAnL2FyZ190eXBlcy5w
aHAnKSkgeworICAgIGluY2x1ZGUoZGlybmFtZSgkYXJndlsxXSkgLiAnL2FyZ190eXBlcy5waHAn
KTsKK30KKworJG92ZXJyaWRlcyA9IG5ldyBPdmVycmlkZXMoJG92ZXJyaWRlcywgJGd0a3ZlcnNp
b24pOworJHBhcnNlciA9IG5ldyBEZWZzX1BhcnNlcigkYXJndlsxXSwgJGd0a3ZlcnNpb24pOwor
JGdlbmVyYXRvciA9IG5ldyBndGtHZW5lcmF0b3IoJHBhcnNlciwgJG92ZXJyaWRlcywgJHByZWZp
eCwgJGZ1bmN0aW9uX2NsYXNzKTsKKyRnZW5lcmF0b3ItPnNldF9sb2dmaWxlKCRsb2dmaWxlKTsK
K2ZvcmVhY2ggKCRyZWdpc3Rlcl9kZWZzIGFzICRkZWZzKSB7CisgICAgJHR5cGVfcGFyc2VyID0g
bmV3IERlZnNfUGFyc2VyKCRkZWZzLCAkZ3RrdmVyc2lvbik7CisgICAgJHR5cGVfcGFyc2VyLT5z
dGFydF9wYXJzaW5nKCk7CisgICAgJGdlbmVyYXRvci0+cmVnaXN0ZXJfdHlwZXMoJHR5cGVfcGFy
c2VyKTsKK30KKyRwYXJzZXItPnN0YXJ0X3BhcnNpbmcoKTsKKyRnZW5lcmF0b3ItPnJlZ2lzdGVy
X3R5cGVzKCk7CiskZ2VuZXJhdG9yLT53cml0ZV9zb3VyY2UoJHNhdmVmaWxlKTsKKworZXJyb3Jf
cmVwb3J0aW5nKCRvbGRfZXJyb3JfcmVwb3J0aW5nKTsKKworLyogdmltOiBzZXQgZXQgc3RzPTQ6
ICovCis/PgpkaWZmIC0tZ2l0IGEvbWFpbi9waHBfZ3RrLmggYi9tYWluL3BocF9ndGsuaAppbmRl
eCBmNDVjODdjLi42MTNmN2FkIDEwMDY0NAotLS0gYS9tYWluL3BocF9ndGsuaAorKysgYi9tYWlu
L3BocF9ndGsuaApAQCAtNzcsNiArNzcsMTUgQEAKICMgZGVmaW5lIFBIUEdUS19QUk9QRVJUWV9F
TkQgLCBjb25zdCB6ZW5kX2xpdGVyYWwgKmtleSBUU1JNTFNfREMKICNlbmRpZgogCisvKiBnZXRf
cHJvcGVydHlfcHRyX3B0ciBoYWQgdHlwZSBhZGRlZCBpbiA1LjUqLworI2lmIFBIUF9WRVJTSU9O
X0lEID49IDUwNTAwCisjIGRlZmluZSBaRU5EX0dFVF9QUFRSX1RZUEVfREMgLCBpbnQgdHlwZQor
IyBkZWZpbmUgWkVORF9HRVRfUFBUUl9UWVBFX0NDICwgdHlwZQorI2Vsc2UKKyMgZGVmaW5lIFpF
TkRfR0VUX1BQVFJfVFlQRV9EQworIyBkZWZpbmUgWkVORF9HRVRfUFBUUl9UWVBFX0NDCisjZW5k
aWYKKwogI2lmIEhBVkVfUEhQX0dUSwogCiAjaW5jbHVkZSAiemVuZF9vYmplY3RzX0FQSS5oIgpA
QCAtMzA4LDcgKzMxNyw3IEBAIGludCBwaHBfZ3RrX3N0YXJ0dXBfZXh0ZW5zaW9ucyhwaHBfZ3Rr
X2V4dF9lbnRyeSAqKmV4dCwgaW50IGV4dF9jb3VudCwgaW50IG1vZHVsCiAKIHp2YWwgKnBocGdf
cmVhZF9wcm9wZXJ0eSh6dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciwgaW50IHR5cGUgUEhQR1RL
X1BST1BFUlRZX0VORCk7CiB2b2lkIHBocGdfd3JpdGVfcHJvcGVydHkoenZhbCAqb2JqZWN0LCB6
dmFsICptZW1iZXIsIHp2YWwgKnZhbHVlIFBIUEdUS19QUk9QRVJUWV9FTkQpOwotenZhbCAqKnBo
cGdfZ2V0X3Byb3BlcnR5X3B0cl9wdHIoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIgUEhQR1RL
X1BST1BFUlRZX0VORCk7Cit6dmFsICoqcGhwZ19nZXRfcHJvcGVydHlfcHRyX3B0cih6dmFsICpv
YmplY3QsIHp2YWwgKm1lbWJlciBaRU5EX0dFVF9QUFRSX1RZUEVfREMgUEhQR1RLX1BST1BFUlRZ
X0VORCk7CiBIYXNoVGFibGUqIHBocGdfZ2V0X3Byb3BlcnRpZXMoenZhbCAqb2JqZWN0IFRTUk1M
U19EQyk7CiBQSFBfR1RLX0FQSSB2b2lkIHBocGdfZ2V0X3Byb3BlcnRpZXNfaGVscGVyKHp2YWwg
Km9iamVjdCwgSGFzaFRhYmxlICpodCBUU1JNTFNfREMsIC4uLik7CiAKZGlmZiAtLWdpdCBhL21h
aW4vcGhwZ19zdXBwb3J0LmMgYi9tYWluL3BocGdfc3VwcG9ydC5jCmluZGV4IDZlYzY5ZWYuLmM1
YjNlOWIgMTAwNjQ0Ci0tLSBhL21haW4vcGhwZ19zdXBwb3J0LmMKKysrIGIvbWFpbi9waHBnX3N1
cHBvcnQuYwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgcGhwZ193cml0ZV9wcm9wZXJ0eSh6dmFs
ICpvYmplY3QsIHp2YWwgKm1lbWJlciwgenZhbCAqdmFsdWUgUEhQR1RLX1BST1BFUlRZCiAvKiB9
fX0gKi8KIAogLyoge3t7IHBocGdfZ2V0X3Byb3BlcnR5X3B0cl9wdHIoKSAqLwotenZhbCAqKnBo
cGdfZ2V0X3Byb3BlcnR5X3B0cl9wdHIoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIgUEhQR1RL
X1BST1BFUlRZX0VORCkKK3p2YWwgKipwaHBnX2dldF9wcm9wZXJ0eV9wdHJfcHRyKHp2YWwgKm9i
amVjdCwgenZhbCAqbWVtYmVyIFpFTkRfR0VUX1BQVFJfVFlQRV9EQyBQSFBHVEtfUFJPUEVSVFlf
RU5EKQogewogICAgIHBocGdfaGVhZF90ICpwb2ggPSBOVUxMOwogICAgIHp2YWwgdG1wX21lbWJl
cjsKQEAgLTE1NSw3ICsxNTUsNyBAQCB6dmFsICoqcGhwZ19nZXRfcHJvcGVydHlfcHRyX3B0cih6
dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciBQSFBHVEtfUFJPUEVSVFlfRU5EKQogCSNpZiBQSFBf
VkVSU0lPTl9JRCA8IDUwMzk5CiAJCXJlc3VsdCA9IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxl
cnMoKS0+Z2V0X3Byb3BlcnR5X3B0cl9wdHIob2JqZWN0LCBtZW1iZXIgVFNSTUxTX0NDKTsKIAkj
ZWxzZQotCQlyZXN1bHQgPSB6ZW5kX2dldF9zdGRfb2JqZWN0X2hhbmRsZXJzKCktPmdldF9wcm9w
ZXJ0eV9wdHJfcHRyKG9iamVjdCwgbWVtYmVyLCBOVUxMIFRTUk1MU19DQyk7CisJCXJlc3VsdCA9
IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKS0+Z2V0X3Byb3BlcnR5X3B0cl9wdHIob2Jq
ZWN0LCBtZW1iZXIgWkVORF9HRVRfUFBUUl9UWVBFX0NDLCBOVUxMIFRTUk1MU19DQyk7CiAJI2Vu
ZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS93aW4zMi9jb25maWcudzMyLmluIGIvd2luMzIvY29u
ZmlnLnczMi5pbgppbmRleCBmYWZhNjFlLi4yYzE5Y2I4IDEwMDY0NAotLS0gYS93aW4zMi9jb25m
aWcudzMyLmluCisrKyBiL3dpbjMyL2NvbmZpZy53MzIuaW4KQEAgLTEwLDYgKzEwLDcgQEAgTVNW
Q1ZFUlNbMTMxMF0gPSAnTVNWQzcuMSAoVmlzdWFsIEMrKyAyMDAzKSc7CiBNU1ZDVkVSU1sxNDAw
XSA9ICdNU1ZDOCAoVmlzdWFsIEMrKyAyMDA1KSc7DQogTVNWQ1ZFUlNbMTUwMF0gPSAnTVNWQzkg
KFZpc3VhbCBDKysgMjAwOCknOw0KIE1TVkNWRVJTWzE2MDBdID0gJ01TVkMxMCAoVmlzdWFsIEMr
KyAyMDEwKSc7DQorTVNWQ1ZFUlNbMTcwMF0gPSAnTVNWQzExIChWaXN1YWwgQysrIDIwMTIpJzsN
CiANCiBTVERPVVQuV3JpdGVCbGFua0xpbmVzKDEpOw==

--664b1a9984c02278f5843cc7ba629263cfe5c5ea--