From w.moghrabi@servicemagic.eu  Fri Oct 20 19:16:26 2017
Received: (at 1135) by bugs.x2go.org; 20 Oct 2017 17:16:37 +0000
X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on
	ymir.das-netzwerkteam.de
X-Spam-Level: 
X-Spam-Status: No, score=-2.0 required=3.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,URIBL_BLOCKED autolearn=ham autolearn_force=no
	version=3.4.1
Received: from localhost (localhost [127.0.0.1])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTP id 553105DACB
	for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:26 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de
Received: from ymir.das-netzwerkteam.de ([127.0.0.1])
	by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id vAa7ElDC30yN for <1135@bugs.x2go.org>;
	Fri, 20 Oct 2017 19:16:20 +0200 (CEST)
Received: from zm-01.servicemagic.eu (zm-01.servicemagic.eu [176.31.236.17])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 73F945DAC9
	for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:19 +0200 (CEST)
Received: from localhost (localhost.localdomain [127.0.0.1])
	by zm-01.servicemagic.eu (Postfix) with ESMTP id 1E309814E14B0
	for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:19 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 zm-01.servicemagic.eu 1E309814E14B0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=servicemagic.eu;
	s=frmailing; t=1508519779;
	bh=TQ2nFd+k7fctG7kOID48SAvxb1b/KILaf75MbomFNRo=;
	h=Date:From:To:In-Reply-To:Subject:From;
	b=QOTLfG7/VJKZaMSeDzkN+DqDwI1kBJZQwcugHruTIJxRPXx4OeujKO82OeVcb+Wm2
	 AMy7e/+MZZ3UiicAC/faMNhGgN9hAAyiWsQ1apLDbosidrbSuMQUtHhSM3qO70DVtM
	 Jx/riijHv/E0ZIBnN/hFKNk4xXF70uvq/GeQlCNc=
X-Amavis-Modified: Mail body modified (using disclaimer) -
	zm-01.servicemagic.eu
X-Virus-Scanned: amavisd-new at servicemagic.eu
Received: from zm-01.servicemagic.eu ([127.0.0.1])
	by localhost (zm-01.servicemagic.eu [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id Z1vHRFy+r1UO for <1135@bugs.x2go.org>;
	Fri, 20 Oct 2017 19:16:15 +0200 (CEST)
Received: from zm-01.servicemagic.eu (localhost.localdomain [127.0.0.1])
	by zm-01.servicemagic.eu (Postfix) with ESMTP id 3F78F80AC259C
	for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:15 +0200 (CEST)
Date: Fri, 20 Oct 2017 19:16:15 +0200 (CEST)
From: Walid MOGHRABI <w.moghrabi@servicemagic.eu>
To: 1135@bugs.x2go.org
Message-ID: <1992364384.23212336.1508519775122.JavaMail.root@servicemagic.eu>
In-Reply-To: <879128570.23211901.1508519534421.JavaMail.root@servicemagic.eu>
Subject: MySQL session backend (fixed version)
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_23212334_788228192.1508519775114"
X-Originating-IP: [10.33.100.58]
X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC62 (Linux)/7.2.0_GA_2669)

------=_Part_23212334_788228192.1508519775114
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

package: x2goserver
priority: wishlist
tags: patch

This is a proposal patch for a MySQL session storage database backend for X2Go Server.

I did this simply because :

  1) I'm not used to PostgreSQL and much more skilled with MySQL
  2) I do believe MySQL is pretty common on Linux and is widely spread so I guess this can be useful for many other people willing to build a strong TCE setup and not willing to dig into PostgreSQL
  3) I find it a lot easier to build a multi-master replication scenario with MySQL than with PostgreSQL (but as I said, I'm much more skilled wih MySQL)

This backend is tightly inspired by the PostgreSQL backend and work exactly the same so this is a drop in replacement for it, it's running in my POC for months now and it has been proven very stable.
Feel free to test by yourself and report errors.


Regards,
Walid Moghrabi

TRAVAUX.COM
BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403
13591 AIX EN PROVENCE CEDEX 3

---
DISCLAIMER: This e-mail is private and confidential and may contain proprietary or legally privileged information. It is for the intended recipient only. If you have received this email in error, please notify the author by replying to it and then destroy it. If you are not the intended recipient you must not use, disclose, distribute, copy, print or rely on this e-mail or any attachment. Thank you
------=_Part_23212334_788228192.1508519775114
Content-Type: text/x-patch; name=MySQL-session-backend.patch
Content-Disposition: attachment; filename=MySQL-session-backend.patch
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL1gyR28vU2VydmVyL0RCLnBtIGIvWDJHby9TZXJ2ZXIvREIucG0KaW5kZXgg
NDFhMjJlOC4uYjI1MDFmMyAxMDA2NDQKLS0tIGEvWDJHby9TZXJ2ZXIvREIucG0KKysrIGIvWDJH
by9TZXJ2ZXIvREIucG0KQEAgLTM4LDYgKzM4LDcgQEAKIHVzZSBYMkdvOjpDb25maWcgcXcoIGdl
dF9zcWxjb25maWcgKTsKIHVzZSBYMkdvOjpMb2cgcXcoIGxvZ2xldmVsICk7CiB1c2UgWDJHbzo6
U2VydmVyOjpEQjo6UG9zdGdyZVNRTDsKK3VzZSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDsKIHVz
ZSBYMkdvOjpVdGlscyBxdyggc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCBzeXN0ZW1fY2Fw
dHVyZV9zdGRvdXRfb3V0cHV0ICk7CiBzZXRsb2dtYXNrKCBMT0dfVVBUTyhsb2dsZXZlbCgpKSAp
OwogCkBAIC01Niw3ICs1Nyw3IEBACiBteSAkZGJ1c2VyOwogbXkgJHNzbG1vZGU7CiAKLWlmICgk
YmFja2VuZCBuZSAncG9zdGdyZXMnICYmICRiYWNrZW5kIG5lICdzcWxpdGUnKQoraWYgKCRiYWNr
ZW5kIG5lICdwb3N0Z3JlcycgJiYgJGJhY2tlbmQgbmUgJ215c3FsJyAmJiAkYmFja2VuZCBuZSAn
c3FsaXRlJykKIHsKIAlkaWUgInVua25vd24gYmFja2VuZCAkYmFja2VuZCI7CiB9CkBAIC03Niw2
ICs3NywxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJzeXNfcm1z
ZXNzaW9uc3Jvb3QoJHNpZCk7CiAJfQorCWlmKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlY
MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfcm1zZXNzaW9uc3Jvb3QoJHNpZCk7CisJfQog
CWlmKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291
dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwg
InJtc2Vzc2lvbnNyb290IiwgIiRzaWQiKTsKQEAgLTg5LDYgKzk0LDEwIEBACiAJewogCQlYMkdv
OjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYnN5c19kZWxldGVtb3VudHMoJHNpZCk7CiAJfQor
CWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6
OmRic3lzX2RlbGV0ZW1vdW50cygkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUn
KQogCXsKIAkJc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGli
eDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImRlbGV0ZW1vdW50cyIsICIkc2lkIik7
CkBAIC0xMDMsNiArMTEyLDEwIEBACiAJewogCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6UG9z
dGdyZVNRTDo6ZGJzeXNfbGlzdHNlc3Npb25zcm9vdCgkc2VydmVyKTsKIAl9CisJaWYgKCRiYWNr
ZW5kIGVxICdteXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRi
c3lzX2xpc3RzZXNzaW9uc3Jvb3QoJHNlcnZlcik7CisJfQogCWlmKCRiYWNrZW5kIGVxICdzcWxp
dGUnKQogCXsKIAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1
dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImxp
c3RzZXNzaW9uc3Jvb3QiLCAiJHNlcnZlciIpKTsKQEAgLTExNSw2ICsxMjgsMTAgQEAKIAl7CiAJ
CXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYnN5c19saXN0c2Vzc2lvbnNy
b290X2FsbCgpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCXJldHVybiBY
MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfbGlzdHNlc3Npb25zcm9vdF9hbGwoKTsKKwl9
CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lz
dGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXIt
ZGItc3FsaXRlMy13cmFwcGVyIiwgImxpc3RzZXNzaW9uc3Jvb3RfYWxsIikpOwpAQCAtMTI5LDYg
KzE0NiwxMCBAQAogCXsKIAkJQG1vdW50cyA9IFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6
OmRic3lzX2dldG1vdW50cygkc2lkKTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJ
eworCQlAbW91bnRzID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRic3lzX2dldG1vdW50cygk
c2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJQG1vdW50cyA9IHNw
bGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGli
eDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldG1vdW50cyIsICIkc2lkIikpOwpA
QCAtMTQ2LDYgKzE2NywxMCBAQAogCXsKIAkJQG1vdW50cyA9IFgyR286OlNlcnZlcjo6REI6OlBv
c3RncmVTUUw6OmRiX2dldG1vdW50cygkc2lkKTsKIAl9CisJaWYoJGJhY2tlbmQgZXEgJ215c3Fs
JykKKwl7CisJCUBtb3VudHMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0bW91bnRz
KCRzaWQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAbW91bnRzID0g
c3BsaXQoIlxuIixzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s
aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiZ2V0bW91bnRzIiwgIiRzaWQiKSk7
CkBAIC0xNjMsNiArMTg4LDEwIEBACiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FM
OjpkYl9kZWxldGVtb3VudCgkc2lkLCAkcGF0aCk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlz
cWwnKQorCXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2RlbGV0ZW1vdW50KCRzaWQs
ICRwYXRoKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJc3lzdGVtX2Nh
cHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3Fs
aXRlMy13cmFwcGVyIiwgImRlbGV0ZW1vdW50IiwgIiRzaWQiLCAiJHBhdGgiKTsKQEAgLTE4MCw2
ICsyMDksMTAgQEAKIAl7CiAJCSRyZXNfb2sgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FM
OjpkYl9pbnNlcnRtb3VudCgkc2lkLCAkcGF0aCwgJGNsaWVudCk7CiAJfQorCWlmICgkYmFja2Vu
ZCBlcSAnbXlzcWwnKQorCXsKKwkJJHJlc19vayA9IFgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpk
Yl9pbnNlcnRtb3VudCgkc2lkLCAkcGF0aCwgJGNsaWVudCk7CisJfQogCWlmICgkYmFja2VuZCBl
cSAnc3FsaXRlJykKIAl7CiAJCWlmKCBzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJn
b19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiaW5zZXJ0bW91
bnQiLCAiJHNpZCIsICIkcGF0aCIsICIkY2xpZW50IikgZXEgIm9rIikKQEAgLTIwMCw2ICsyMzMs
MTAgQEAKIAl7CiAJCVgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2luc2VydHNlc3Np
b24oJGRpc3BsYXksICRzZXJ2ZXIsICRzaWQpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3Fs
JykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9pbnNlcnRzZXNzaW9uKCRkaXNw
bGF5LCAkc2VydmVyLCAkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK
IAkJbXkgJGVycj1zeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s
aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiaW5zZXJ0c2Vzc2lvbiIsICIkZGlz
cGxheSIsICIkc2VydmVyIiwgIiRzaWQiKTsKQEAgLTIyMSw2ICsyNTgsMTAgQEAKIAl7CiAJCVgy
R286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2luc2VydHNoYWRvd3Nlc3Npb24oJGRpc3Bs
YXksICRzZXJ2ZXIsICRzaWQsICRzaGFkcmVxX3VzZXIpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEg
J215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9pbnNlcnRzaGFkb3dz
ZXNzaW9uKCRkaXNwbGF5LCAkc2VydmVyLCAkc2lkLCAkc2hhZHJlcV91c2VyKTsKKwl9CiAJaWYg
KCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkgJGVycj1zeXN0ZW1fY2FwdHVyZV9tZXJn
ZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBw
ZXIiLCAiaW5zZXJ0c2hhZG93c2Vzc2lvbiIsICIkZGlzcGxheSIsICIkc2VydmVyIiwgIiRzaWQi
LCAiJHNoYWRyZXFfdXNlciIpOwpAQCAtMjQ3LDYgKzI4OCwxMCBAQAogCXsKIAkJWDJHbzo6U2Vy
dmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAkcGlk
LCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3BvcnQs
ICR0ZWtpZGF0YV9wb3J0KTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlY
MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAk
cGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3Bv
cnQsICR0ZWtpZGF0YV9wb3J0KTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK
IAkJbXkgJGVycj0gc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgv
bGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImNyZWF0ZXNlc3Npb24iLCAiJHNp
ZCIsICIkY29va2llIiwgIiRwaWQiLCAiJGNsaWVudCIsICIkZ3JfcG9ydCIsICIkc25kX3BvcnQi
LCAiJGZzX3BvcnQiLCAiJHRla2ljdHJsX3BvcnQiLCAiJHRla2lkYXRhX3BvcnQiKTsKQEAgLTI3
Myw2ICszMTgsMTEgQEAKIAkJIyBmb3IgUG9zdGdyZVNRTCB3ZSBjYW4gdXNlIHRoZSBub3JtYWwg
ZGJfY3JlYXRlc2Vzc2lvbiBjb2RlLi4uCiAJCVgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6
OmRiX2NyZWF0ZXNlc3Npb24oJHNpZCwgJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3BvcnQs
ICRzbmRfcG9ydCwgJGZzX3BvcnQsIC0xLCAtMSk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlz
cWwnKQorCXsKKwkJIyBmb3IgTXlTUUwgd2UgY2FuIHVzZSB0aGUgbm9ybWFsIGRiX2NyZWF0ZXNl
c3Npb24gY29kZS4uLgorCQlYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lv
bigkc2lkLCAkY29va2llLCAkcGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNf
cG9ydCwgLTEsIC0xKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkg
JGVycj1zeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4Mmdv
LXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiY3JlYXRlc2hhZG93c2Vzc2lvbiIsICIkc2lk
IiwgIiRjb29raWUiLCAiJHBpZCIsICIkY2xpZW50IiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIs
ICIkZnNfcG9ydCIsICIkc2hhZHJlcV91c2VyIik7CkBAIC0yOTMsNiArMzQzLDEwIEBACiAJewog
CQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9pbnNlcnRwb3J0KCRzZXJ2ZXIsICRz
aWQsICRzc2hwb3J0KTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlYMkdv
OjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfaW5zZXJ0cG9ydCgkc2VydmVyLCAkc2lkLCAkc3NocG9y
dCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCW15ICRlcnI9c3lzdGVt
X2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGIt
c3FsaXRlMy13cmFwcGVyIiwgImluc2VydHBvcnQiLCAiJHNlcnZlciIsICIkc2lkIiwgIiRzc2hw
b3J0Iik7CkBAIC0zMTMsNiArMzY3LDEwIEBACiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0
Z3JlU1FMOjpkYl9ybXBvcnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOwogCX0KKwlpZiAoJGJh
Y2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9ybXBv
cnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0
ZScpCiAJewogCQlzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s
aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAicm1wb3J0IiwgIiRzZXJ2ZXIiLCAi
JHNpZCIsICIkc3NocG9ydCIpOwpAQCAtMzMzLDYgKzM5MSwxMCBAQAogCXsKIAkJWDJHbzo6U2Vy
dmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfcmVzdW1lKCRjbGllbnQsICRzaWQsICRncl9wb3J0LCAk
c25kX3BvcnQsICRmc19wb3J0LCAkdGVraWN0cmxfcG9ydCwgJHRla2lkYXRhX3BvcnQpOwogCX0K
KwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FM
OjpkYl9yZXN1bWUoJGNsaWVudCwgJHNpZCwgJGdyX3BvcnQsICRzbmRfcG9ydCwgJGZzX3BvcnQs
ICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFfcG9ydCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAn
c3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9w
YXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJyZXN1bWUiLCAiJGNsaWVu
dCIsICIkc2lkIiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIsICIkZnNfcG9ydCIsICIkdGVraWN0
cmxfcG9ydCIsICIkdGVraWRhdGFfcG9ydCIpOwpAQCAtMzQ4LDYgKzQxMCwxMCBAQAogCXsKIAkJ
WDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfY2hhbmdlc3RhdHVzKCRzdGF0dXMsICRz
aWQpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6
REI6Ok15U1FMOjpkYl9jaGFuZ2VzdGF0dXMoJHN0YXR1cywgJHNpZCk7CisJfQogCWlmICgkYmFj
a2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4
MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJjaGFuZ2Vz
dGF0dXMiLCAiJHN0YXR1cyIsICIkc2lkIik7CkBAIC0zNjMsNiArNDI5LDEwIEBACiAJewogCQkk
c3RhdHVzID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0c3RhdHVzKCRzaWQp
OwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCSRzdGF0dXMgPSBYMkdvOjpT
ZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c3RhdHVzKCRzaWQpOworCX0KIAlpZiAoJGJhY2tlbmQg
ZXEgJ3NxbGl0ZScpCiAJewogCQkkc3RhdHVzPXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQo
IiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJnZXRz
dGF0dXMiLCAiJHNpZCIpOwpAQCAtMzgwLDYgKzQ1MCwxMCBAQAogCXsKIAkJQGRpc3BsYXlzID0g
WDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0ZGlzcGxheXMoJHNlcnZlcik7CiAJ
fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQGRpc3BsYXlzID0gWDJHbzo6U2Vy
dmVyOjpEQjo6TXlTUUw6OmRiX2dldGRpc3BsYXlzKCRzZXJ2ZXIpOworCX0KIAlpZiAoJGJhY2tl
bmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAZGlzcGxheXMgPSBzcGxpdCgiXG4iLHN5c3RlbV9jYXB0
dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0
ZTMtd3JhcHBlciIsICJnZXRkaXNwbGF5cyIsICIkc2VydmVyIikpOwpAQCAtMzk4LDYgKzQ3Miwx
MCBAQAogCXsKIAkJQHBvcnRzID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0
cG9ydHMoJHNlcnZlcik7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQHBv
cnRzID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldHBvcnRzKCRzZXJ2ZXIpOworCX0K
IAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAcG9ydHMgPSBzcGxpdCgiXG4iLHN5
c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVy
LWRiLXNxbGl0ZTMtd3JhcHBlciIsICJnZXRwb3J0cyIsICIkc2VydmVyIikpOwpAQCAtNDE0LDYg
KzQ5MiwxMCBAQAogCXsKIAkJQHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FM
OjpkYl9nZXRzZXJ2ZXJzKCk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJ
QHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c2VydmVycygpOworCX0K
IAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAc2VydmVycyA9IHNwbGl0KCJcbiIs
c3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2
ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldHNlcnZlcnMiKSk7CkBAIC00MzEsNiArNTEzLDEw
IEBACiAJewogCQkkYWdlbnQgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9nZXRh
Z2VudCgkc2lkKTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQkkYWdlbnQg
PSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0YWdlbnQoJHNpZCk7CisJfQogCWlmKCRi
YWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJJGFnZW50PXN5c3RlbV9jYXB0dXJlX21lcmdlZF9v
dXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIs
ICJnZXRhZ2VudCIsICIkc2lkIik7CkBAIC00NDcsNiArNTMzLDEwIEBACiAJewogCQkkZGlzcGxh
eSA9IFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2dldGRpc3BsYXkoJHNpZCk7CiAJ
fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJJGRpc3BsYXkgPSBYMkdvOjpTZXJ2
ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0ZGlzcGxheSgkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVx
ICdzcWxpdGUnKQogCXsKIAkJJGRpc3BsYXk9c3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgi
JHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldGRp
c3BsYXkiLCAiJHNpZCIpOwpAQCAtNDYyLDYgKzU1MiwxMCBAQAogCXsKIAkJcmV0dXJuIFgyR286
OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2xpc3RzZXNzaW9ucygkc2VydmVyKTsKIAl9CisJ
aWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6
TXlTUUw6OmRiX2xpc3RzZXNzaW9ucygkc2VydmVyKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdz
cWxpdGUnKQogCXsKIAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291
dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwg
Imxpc3RzZXNzaW9ucyIsICIkc2VydmVyIikpOwpAQCAtNDc0LDYgKzU2OCwxMCBAQAogCXsKIAkJ
cmV0dXJuIFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2xpc3RzZXNzaW9uc19hbGwo
KTsKIAl9CisJaWYoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCXJldHVybiBYMkdvOjpTZXJ2
ZXI6OkRCOjpNeVNRTDo6ZGJfbGlzdHNlc3Npb25zX2FsbCgpOworCX0KIAlpZiAoJGJhY2tlbmQg
ZXEgJ3NxbGl0ZScpCiAJewogCQlyZXR1cm4gc3BsaXQoIlxuIixzeXN0ZW1fY2FwdHVyZV9tZXJn
ZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBw
ZXIiLCAibGlzdHNlc3Npb25zX2FsbCIpKTsKQEAgLTQ4Nyw2ICs1ODUsMTAgQEAKIAl7CiAJCXJl
dHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9saXN0c2hhZG93c2Vzc2lvbnMo
JHNlcnZlcik7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJcmV0dXJuIFgy
R286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9saXN0c2hhZG93c2Vzc2lvbnMoJHNlcnZlcik7CisJ
fQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCXJldHVybiBzcGxpdCgiXG4iLHN5
c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVy
LWRiLXNxbGl0ZTMtd3JhcHBlciIsICJsaXN0c2hhZG93c2Vzc2lvbnMiLCAiJHNlcnZlciIpKTsK
QEAgLTQ5OSw2ICs2MDEsMTAgQEAKIAl7CiAJCXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0
Z3JlU1FMOjpkYl9saXN0c2hhZG93c2Vzc2lvbnNfYWxsKCk7CiAJfQorCWlmKCRiYWNrZW5kIGVx
ICdteXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2xpc3Rz
aGFkb3dzZXNzaW9uc19hbGwoKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK
IAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29f
bGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImxpc3RzaGFkb3dz
ZXNzaW9uc19hbGwiKSk7CmRpZmYgLS1naXQgYS9YMkdvL1NlcnZlci9EQi9NeVNRTC5wbSBiL1gy
R28vU2VydmVyL0RCL015U1FMLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjNhMWUxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9YMkdvL1NlcnZlci9EQi9NeVNRTC5wbQpAQCAt
MCwwICsxLDczOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBYMkdvIFByb2plY3QgLSBo
dHRwOi8vd2lraS54MmdvLm9yZworIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg
bm90LCB3cml0ZSB0byB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1
MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
IworIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBPbGVrc2FuZHIgU2huZXlkZXIgPG9sZWtzYW5k
ci5zaG5leWRlckBvYnZpb3VzbHktbmljZS5kZT4KKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTUg
SGVpbnotTWFya3VzIEdyYWVzaW5nIDxoZWluei1tLmdyYWVzaW5nQG9idmlvdXNseS1uaWNlLmRl
PgorCitwYWNrYWdlIFgyR286OlNlcnZlcjo6REI6Ok15U1FMOworCis9aGVhZDEgTkFNRQorCitY
MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTCAtIFgyR28gU2Vzc2lvbiBEYXRhYmFzZSBwYWNrYWdlIGZv
ciBQZXJsIChNeVNRTCBiYWNrZW5kKQorCis9aGVhZDEgREVTQ1JJUFRJT04KKworWDJHbzo6U2Vy
dmVyOjpEQjo6TXlTUUwgUGVybCBwYWNrYWdlIGZvciBYMkdvOjpTZXJ2ZXIuCisKKz1jdXQKKwor
dXNlIHN0cmljdDsKK3VzZSBEQkk7Cit1c2UgUE9TSVg7Cit1c2UgU3lzOjpTeXNsb2cgcXcoIDpz
dGFuZGFyZCA6bWFjcm9zICk7CisKK3VzZSBYMkdvOjpMb2cgcXcoIGxvZ2xldmVsICk7Cit1c2Ug
WDJHbzo6Q29uZmlnIHF3KCBnZXRfY29uZmlnIGdldF9zcWxjb25maWcgKTsKK3VzZSBYMkdvOjpV
dGlscyBxdyggc2FuaXRpemVyIHN5c3RlbV9jYXB0dXJlX3N0ZG91dF9vdXRwdXQgaXNfdHJ1ZSAp
OworCitzZXRsb2dtYXNrKCBMT0dfVVBUTyhsb2dsZXZlbCgpKSApOworCit1c2UgYmFzZSAnRXhw
b3J0ZXInOworCitvdXIgQEVYUE9SVD0oJ2RiX2xpc3RzZXNzaW9ucycsJ2RiX2xpc3RzZXNzaW9u
c19hbGwnLCAnZGJfZ2V0c2VydmVycycsICdkYl9nZXRhZ2VudCcsICdkYl9yZXN1bWUnLCAnZGJf
Y2hhbmdlc3RhdHVzJywgJ2RiX2dldHN0YXR1cycsCisgICAgICAgICAgICAgJ2RiX2dldGRpc3Bs
YXlzJywgJ2RiX2luc2VydHNlc3Npb24nLCAnZGJfaW5zZXJ0c2hhZG93c2Vzc2lvbicsICdkYl9n
ZXRwb3J0cycsICdkYl9pbnNlcnRwb3J0JywgJ2RiX3JtcG9ydCcsICdkYl9jcmVhdGVzZXNzaW9u
JywgJ2RiX2NyZWF0ZXNoYWRvd3Nlc3Npb24nLCAnZGJfaW5zZXJ0bW91bnQnLAorICAgICAgICAg
ICAgICdkYl9nZXRtb3VudHMnLCAnZGJfZGVsZXRlbW91bnQnLCAnZGJfZ2V0ZGlzcGxheScsICdk
YnN5c19nZXRtb3VudHMnLCAnZGJzeXNfbGlzdHNlc3Npb25zcm9vdCcsCisgICAgICAgICAgICAg
J2Ric3lzX2xpc3RzZXNzaW9uc3Jvb3RfYWxsJywgJ2Ric3lzX3Jtc2Vzc2lvbnNyb290JywgJ2Ri
c3lzX2RlbGV0ZW1vdW50cycsICdkYl9saXN0c2hhZG93c2Vzc2lvbnMnLCdkYl9saXN0c2hhZG93
c2Vzc2lvbnNfYWxsJywgKTsKKworbXkgKCR1bmFtZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVv
dGEsICRjb21tZW50LCAkZ2NvcywgJGhvbWVkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBnZXRwd3Vp
ZCgkPCk7CitteSAkcmVhbHVzZXI9JHVuYW1lOworCitteSAkaG9zdDsKK215ICRwb3J0OworbXkg
JGRiPSJ4MmdvX3Nlc3Npb25zIjsKKyNteSAkZGJwYXNzPSIiOworI215ICRkYnVzZXI9IngyZ29k
YnVzZXIiOworbXkgJGRicGFzczsKK215ICRkYnVzZXI7CitteSAkc3NsbW9kZTsKK215ICR3aXRo
X1RlS2k7CisKK3N1YiBpbml0X2RiCit7CisJIyB0aGUgJENvbmZpZyBpcyByZXF1aXJlZCBsYXRl
ciAoc2VlIGJlbG93Li4uKQorCW15ICRDb25maWcgPSBnZXRfY29uZmlnOworCSR3aXRoX1RlS2kg
PSBpc190cnVlKCRDb25maWctPnBhcmFtKCJ0ZWxla2luZXNpcy5lbmFibGUiKSk7CisKKwlpZiAo
ICEgKCAkZGJ1c2VyIGFuZCAkZGJwYXNzICkgKQorCXsKKwkJbXkgJFNxbENvbmZpZyA9IGdldF9z
cWxjb25maWc7CisJCW15ICR4MmdvX2xpYl9wYXRoPXN5c3RlbV9jYXB0dXJlX3N0ZG91dF9vdXRw
dXQoIngyZ29wYXRoIiwgImxpYmV4ZWMiKTsKKworCQlteSAkYmFja2VuZD0kU3FsQ29uZmlnLT5w
YXJhbSgiYmFja2VuZCIpOworCQlpZiAoICRiYWNrZW5kIG5lICJteXNxbCIgKQorCQl7CisJCQlk
aWUgIlgyR28gc2VydmVyIGlzIG5vdCBjb25maWd1cmVkIHRvIHVzZSB0aGUgTXlTUUwgc2Vzc2lv
biBkYiBiYWNrZW5kIjsKKwkJfQorCisJCSRob3N0PSRTcWxDb25maWctPnBhcmFtKCJteXNxbC5o
b3N0Iik7CisJCSRwb3J0PSRTcWxDb25maWctPnBhcmFtKCJteXNxbC5wb3J0Iik7CisJCWlmICgh
JGhvc3QpCisJCXsKKwkJCSRob3N0PSdsb2NhbGhvc3QnOworCQl9CisJCWlmICghJHBvcnQpCisJ
CXsKKwkJCSRwb3J0PSczMzA2JzsKKwkJfQorCQlteSAkcGFzc2ZpbGU7CisJCWlmICgkdW5hbWUg
ZXEgJ3Jvb3QnKQorCQl7CisJCQkkZGJ1c2VyPSd4MmdvZGJ1c2VyJzsKKwkJCSRwYXNzZmlsZT0i
L2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3gyZ29hZG1pbiI7CisJCX0KKwkJZWxzZQorCQl7
CisJCQkkZGJ1c2VyPSJ4MmdvdXNlcl8kdW5hbWUiOworCQkJJHBhc3NmaWxlPSIkaG9tZWRpci8u
eDJnby9zcWxwYXNzIjsKKwkJfQorCQlvcGVuIChGTCwiPCAkcGFzc2ZpbGUiKSBvciBkaWUgIkNh
bid0IHJlYWQgcGFzc3dvcmQgZmlsZSAkcGFzc2ZpbGU8YnI+IjsKKwkJJGRicGFzcz08Rkw+Owor
CQljbG9zZShGTCk7CisJCWNob21wKCRkYnBhc3MpOworCX0KKworCW15ICRkYmg9REJJLT5jb25u
ZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYnVz
ZXIiLCIkZGJwYXNzIix7UmFpc2VFcnJvciA9PiAxfSkgb3IgZGllICRfOworCisJcmV0dXJuICRk
Ymg7Cit9CisKK3N1YiBkYnN5c19ybXNlc3Npb25zcm9vdAoreworCW15ICRkYmggPSBpbml0X2Ri
KCk7CisJY2hlY2tfcm9vdCgpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNl
c3Npb25faWRcIiBtaXNzZWQiOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZGVsZXRlIGZyb20g
c2Vzc2lvbnMgIHdoZXJlIHNlc3Npb25faWQ9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7CisJ
aWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJybXNlc3Npb25zcm9vdCAo
TXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJy
KCkiKTsKKwkJZGllOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVy
biAxOworfQorCitzdWIgZGJzeXNfbGlzdHNlc3Npb25zcm9vdAoreworCW15ICRkYmggPSBpbml0
X2RiKCk7CisJY2hlY2tfcm9vdCgpOworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVu
dCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVw
YXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1
cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGltZSwgJyVZLSVt
LSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUsY2xpZW50LGdy
X3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGxh
c3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICB1
bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFNUChOT1coKSkg
LSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCwKKwkgICAgICAgICAg
ICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucwor
CSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc2VydmVyPT8gIG9yZGVyIGJ5IHN0YXR1cyBk
ZXNjIik7CisJJHN0aC0+ZXhlY3V0ZSgkc2VydmVyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpIHsKKwkJ
c3lzbG9nKCdlcnJvcicsICJsaXN0c2Vzc2lvbnNyb290IChNeVNRTCBzZXNzaW9uIGRiIGJhY2tl
bmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJ
bXkgQHNlc3Npb25zID0gZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMoJHN0aCk7CisJJHN0aC0+Zmlu
aXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gQHNlc3Npb25zOworfQorCitzdWIgZGJzeXNf
bGlzdHNlc3Npb25zcm9vdF9hbGwKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCWNoZWNrX3Jv
b3QoKTsKKwlteSBAc3RyaW5nczsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBhZ2Vu
dF9waWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLAorCSAgICAgICAgICAg
ICAgICAgICAgICAgREFURV9GT1JNQVQoaW5pdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwK
KwkgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSxjbGllbnQsZ3JfcG9ydCxzb3VuZF9wb3J0
LAorCSAgICAgICAgICAgICAgICAgICAgICAgREFURV9GT1JNQVQobGFzdF90aW1lLCAnJVktJW0t
JWRUJUg6JUk6JVMnKSwKKwkgICAgICAgICAgICAgICAgICAgICAgIHVuYW1lLAorCSAgICAgICAg
ICAgICAgICAgICAgICAgTU9EKFVOSVhfVElNRVNUQU1QKE5PVygpKSAtIFVOSVhfVElNRVNUQU1Q
KGluaXRfdGltZSksIDg2NDAwKSxmc19wb3J0LAorCSAgICAgICAgICAgICAgICAgICAgICAgdGVr
aWN0cmxfcG9ydCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJICAgICAgICAgICAgICAg
ICAgICAgICBvcmRlciBieSBzdGF0dXMgZGVzYyIpOworCSRzdGgtPmV4ZWN1dGUoKTsKKwlpZiAo
JHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImxpc3RzZXNzaW9uc3Jvb3RfYWxs
IChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5l
cnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQHNlc3Npb25zID0gZmV0Y2hyb3dfYXJyYXlfZGF0
YXNldHMoJHN0aCk7CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gQHNl
c3Npb25zOworfQorCitzdWIgZGJzeXNfZGVsZXRlbW91bnRzCit7CisJbXkgJGRiaCA9IGluaXRf
ZGIoKTsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlz
c2VkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZGVsZXRl
IGZyb20gbW91bnRzIHdoZXJlIHNlc3Npb25faWQ9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7
CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJkZWxldGVtb3VudHMg
KE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVy
cigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJl
dHVybiAxOworfQorCitzdWIgZGJfZ2V0bW91bnRzCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsK
KwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsK
Kwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNl
c3Npb25faWRcIiBtYWxmb3JtZWQiOworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkgQHN0cmluZ3M7
CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgY2xpZW50LCBwYXRoIGZyb20gbW91bnRz
IHdoZXJlIHNlc3Npb25faWQ9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7CisJaWYgKCRzdGgt
PmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJnZXRtb3VudHMgKE15U1FMIHNlc3Npb24g
ZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZTsK
Kwl9CisJbXkgQG1vdW50cyA9IGZldGNocm93X2FycmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgt
PmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIEBtb3VudHM7Cit9CisKK3N1YiBkYl9k
ZWxldGVtb3VudAoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBk
aWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcign
eDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVk
IjsKKwlteSAkcGF0aD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwicGF0aFwiIG1pc3NlZCI7CisJ
Y2hlY2tfdXNlcigkc2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRlbGV0ZSBmcm9tIG1v
dW50cyB3aGVyZSBzZXNzaW9uX2lkPT8gYW5kIHBhdGg9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNp
ZCwgJHBhdGgpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiZGVs
ZXRlbW91bnQgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6
ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAk
ZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfaW5zZXJ0bW91bnQKK3sKKwlteSAkZGJoID0g
aW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc
IiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFy
Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHBhdGg9c2hpZnQgb3IgZGll
ICJhcmd1bWVudCBcInBhdGhcIiBtaXNzZWQiOworCW15ICRjbGllbnQ9c2hpZnQgb3IgZGllICJh
cmd1bWVudCBcImNsaWVudFwiIG1pc3NlZCI7CisJY2hlY2tfdXNlcigkc2lkKTsKKwlteSAkc3Ro
PSRkYmgtPnByZXBhcmUoImluc2VydCBpbnRvIG1vdW50cyAoc2Vzc2lvbl9pZCxwYXRoLGNsaWVu
dCkgdmFsdWVzICAoPywgPywgPykiKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQsICRwYXRoLCAkY2xp
ZW50KTsKKwlteSAkc3VjY2VzcyA9IDA7CisJaWYoISAkc3RoLT5lcnIoKSkKKwl7CisJCSRzdWNj
ZXNzID0gMTsKKwl9IGVsc2UgeworCQlzeXNsb2coJ2RlYnVnJywgImluc2VydG1vdW50IChNeVNR
TCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSwg
dGhpcyBpc3N1ZSB3aWxsIGJlIGludGVycHJldGVkIGFzOiBTU0hGUyBzaGFyZSBhbHJlYWR5IG1v
dW50ZWQiKTsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gJHN1
Y2Nlc3M7Cit9CisKK3N1YiBkYl9pbnNlcnRzZXNzaW9uCit7CisJbXkgJGRiaCA9IGluaXRfZGIo
KTsKKwlteSAkZGlzcGxheT1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwiZGlzcGxheVwiIG1pc3Nl
ZCI7CisJJGRpc3BsYXkgPSBzYW5pdGl6ZXIoJ251bScsICRkaXNwbGF5KSBvciBkaWUgImFyZ3Vt
ZW50IFwiZGlzcGxheVwiIG1hbGZvcm1lZCI7CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFy
Z3VtZW50IFwic2VydmVyXCIgbWlzc2VkIjsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1l
bnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywg
JHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxmb3JtZWQiOworCWNoZWNr
X3VzZXIoJHNpZCk7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJpbnNlcnQgaW50byBzZXNzaW9u
cyAoZGlzcGxheSxzZXJ2ZXIsdW5hbWUsc2Vzc2lvbl9pZCwgaW5pdF90aW1lLCBsYXN0X3RpbWUp
IHZhbHVlcworCSAgICAgICAgICAgICAgICAgICAgICAgKD8sID8sID8sID8sIE5PVygpLCBOT1co
KSkiKTsKKwkkc3RoLT5leGVjdXRlKCRkaXNwbGF5LCAkc2VydmVyLCAkcmVhbHVzZXIsICRzaWQp
IG9yIGRpZSAkXzsKKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOwor
fQorCitzdWIgZGJfaW5zZXJ0c2hhZG93c2Vzc2lvbgoreworCW15ICRkYmggPSBpbml0X2RiKCk7
CisJbXkgJGRpc3BsYXk9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcImRpc3BsYXlcIiBtaXNzZWQi
OworCSRkaXNwbGF5ID0gc2FuaXRpemVyKCdudW0nLCAkZGlzcGxheSkgb3IgZGllICJhcmd1bWVu
dCBcImRpc3BsYXlcIiBtYWxmb3JtZWQiOworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1
bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50
IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRz
aWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkc2hh
ZHJlcV91c2VyID0gc2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNoYWRyZXFfdXNlclwiIG1pc3Nl
ZCI7CisJbXkgJGZha2Vfc2lkID0gJHNpZDsKKwkkZmFrZV9zaWQgPX4gcy8kc2hhZHJlcV91c2Vy
LS8kcmVhbHVzZXItLzsKKwljaGVja191c2VyKCRmYWtlX3NpZCk7CisJbXkgJHN0aD0kZGJoLT5w
cmVwYXJlKCJpbnNlcnQgaW50byBzZXNzaW9ucyAoZGlzcGxheSxzZXJ2ZXIsdW5hbWUsc2Vzc2lv
bl9pZCwgaW5pdF90aW1lLCBsYXN0X3RpbWUpIHZhbHVlcworCSAgICAgICAgICAgICAgICAgICAg
ICAgKD8sID8sID8sID8sIE5PVygpLCBOT1coKSkiKTsKKwkkc3RoLT5leGVjdXRlKCRkaXNwbGF5
LCAkc2VydmVyLCAkc2hhZHJlcV91c2VyLCAkc2lkKSBvciBkaWUgJF87CisJJHN0aC0+ZmluaXNo
KCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRiX2NyZWF0ZXNlc3Npb24K
K3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVu
dCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAk
c2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJGNv
b2tpZT1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJjb29raWVcIiBtaXNzZWQiOworCW15ICRwaWQ9
c2hpZnQgb3IgZGllImFyZ3VtZW50IFwicGlkXCIgbWlzc2VkIjsKKwkkcGlkID0gc2FuaXRpemVy
KCdudW0nLCAkcGlkKSBvciBkaWUgImFyZ3VtZW50IFwicGlkXCIgbWFsZm9ybWVkIjsKKwlteSAk
Y2xpZW50PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcImNsaWVudFwiIG1pc3NlZCI7CisJbXkgJGdy
X3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiZ3JfcG9ydFwiIG1pc3NlZCI7CisJJGdyX3Bv
cnQgPSBzYW5pdGl6ZXIoJ251bScsICRncl9wb3J0KSBvciBkaWUgImFyZ3VtZW50IFwiZ3JfcG9y
dFwiIG1hbGZvcm1lZCI7CisJbXkgJHNuZF9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInNu
ZF9wb3J0XCIgbWlzc2VkIjsKKwkkc25kX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRzbmRfcG9y
dCkgb3IgZGllICJhcmd1bWVudCBcInNuZF9wb3J0XCIgbWFsZm9ybWVkIjsKKwlteSAkZnNfcG9y
dD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJmc19wb3J0XCIgbWlzc2VkIjsKKwkkZnNfcG9ydCA9
IHNhbml0aXplcignbnVtJywgJGZzX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJmc19wb3J0XCIg
bWFsZm9ybWVkIjsKKwlteSAkdGVraWN0cmxfcG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi
dGVraWN0cmxfcG9ydFwiIG1pc3NlZCI7CisJJHRla2ljdHJsX3BvcnQgPSBzYW5pdGl6ZXIoJ3Bu
bnVtJywgJHRla2ljdHJsX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJ0ZWtpY3RybF9wb3J0XCIg
bWFsZm9ybWVkIjsKKwlteSAkdGVraWRhdGFfcG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi
dGVraWRhdGFfcG9ydFwiIG1pc3NlZCI7CisJJHRla2lkYXRhX3BvcnQgPSBzYW5pdGl6ZXIoJ3Bu
bnVtJywgJHRla2lkYXRhX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJ0ZWtpZGF0YV9wb3J0XCIg
bWFsZm9ybWVkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgi
dXBkYXRlIHNlc3Npb25zIHNldCBzdGF0dXM9J1InLGxhc3RfdGltZT1OT1coKSxjb29raWU9Pyxh
Z2VudF9waWQ9PywKKwkgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudD0/LGdyX3BvcnQ9Pyxz
b3VuZF9wb3J0PT8sZnNfcG9ydD0/LHRla2ljdHJsX3BvcnQ9Pyx0ZWtpZGF0YV9wb3J0PT8gd2hl
cmUgc2Vzc2lvbl9pZD0/IGFuZCB1bmFtZT0/Iik7CisJJHN0aC0+ZXhlY3V0ZSgkY29va2llLCAk
cGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3Bv
cnQsICR0ZWtpZGF0YV9wb3J0LCAkc2lkLCAkcmVhbHVzZXIpOworCWlmICgkc3RoLT5lcnIoKSkK
Kwl7CisJCXN5c2xvZygnZXJyb3InLCAiY3JlYXRlc2Vzc2lvbiAoTXlTUUwgc2Vzc2lvbiBkYiBi
YWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJ
fQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBk
Yl9jcmVhdGVzaGFkb3dzZXNzaW9uCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lk
PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0g
c2FuaXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc
IiBtYWxmb3JtZWQiOworCW15ICRjb29raWU9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiY29va2ll
XCIgbWlzc2VkIjsKKwlteSAkcGlkPXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInBpZFwiIG1pc3Nl
ZCI7CisJJHBpZCA9IHNhbml0aXplcignbnVtJywgJHBpZCkgb3IgZGllICJhcmd1bWVudCBcInBp
ZFwiIG1hbGZvcm1lZCI7CisJbXkgJGNsaWVudD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJjbGll
bnRcIiBtaXNzZWQiOworCW15ICRncl9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcImdyX3Bv
cnRcIiBtaXNzZWQiOworCSRncl9wb3J0ID0gc2FuaXRpemVyKCdudW0nLCAkZ3JfcG9ydCkgb3Ig
ZGllICJhcmd1bWVudCBcImdyX3BvcnRcIiBtYWxmb3JtZWQiOworCW15ICRzbmRfcG9ydD1zaGlm
dCBvciBkaWUiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1pc3NlZCI7CisJJHNuZF9wb3J0ID0gc2Fu
aXRpemVyKCdudW0nLCAkc25kX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1h
bGZvcm1lZCI7CisJbXkgJGZzX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiZnNfcG9ydFwi
IG1pc3NlZCI7CisJJGZzX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRmc19wb3J0KSBvciBkaWUg
ImFyZ3VtZW50IFwiZnNfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHNoYWRyZXFfdXNlciA9IHNo
aWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzaGFkcmVxX3VzZXJcIiBtaXNzZWQiOworCWNoZWNrX3Vz
ZXIoJHNpZCk7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJ1cGRhdGUgc2Vzc2lvbnMgc2V0IHN0
YXR1cz0nUicsbGFzdF90aW1lPU5PVygpLGNvb2tpZT0/LGFnZW50X3BpZD0/LAorCSAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50PT8sZ3JfcG9ydD0/LHNvdW5kX3BvcnQ9Pyxmc19wb3J0PT8s
dGVraWN0cmxfcG9ydD0tMSx0ZWtpZGF0YV9wb3J0PS0xIHdoZXJlIHNlc3Npb25faWQ9PyBhbmQg
dW5hbWU9PyIpOworCSRzdGgtPmV4ZWN1dGUoJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3Bv
cnQsICRzbmRfcG9ydCwgJGZzX3BvcnQsICRzaWQsICRzaGFkcmVxX3VzZXIpOworCWlmICgkc3Ro
LT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiY3JlYXRlc2hhZG93c2Vzc2lvbiAoTXlT
UUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCki
KTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJu
IDE7Cit9CisKK3N1YiBkYl9pbnNlcnRwb3J0Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlt
eSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15
ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRz
aWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lv
bl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHNzaHBvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc
InBvcnRcIiBtaXNzZWQiOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiaW5zZXJ0IGludG8gdXNl
ZF9wb3J0cyAoc2VydmVyLHNlc3Npb25faWQscG9ydCkgdmFsdWVzICAoPywgPywgPykiKTsKKwlj
aGVja191c2VyKCRzaWQpOworCSRzdGgtPmV4ZWN1dGUoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQp
OworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiaW5zZXJ0cG9ydCAo
TXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJy
KCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0
dXJuIDE7Cit9CisKK3N1YiBkYl9ybXBvcnQKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15
ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkg
JHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNp
ZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9u
X2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkc3NocG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi
cG9ydFwiIG1pc3NlZCI7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkZWxldGUgZnJvbSB1c2Vk
X3BvcnRzIHdoZXJlIHNlcnZlcj0/IGFuZCBzZXNzaW9uX2lkPT8gYW5kIHBvcnQ9PyIpOworCWNo
ZWNrX3VzZXIoJHNpZCk7CisJJHN0aC0+ZXhlY3V0ZSgkc2VydmVyLCAkc2lkLCAkc3NocG9ydCk7
CisJaWYgKCRzdGgtPmVycigpKSB7CisJCXN5c2xvZygnZXJyb3InLCAicm1wb3J0IChNeVNRTCBz
ZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOwor
CQlkaWUoKTsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsK
K30KKworc3ViIGRiX3Jlc3VtZQoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJGNsaWVu
dD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwiY2xpZW50XCIgbWlzc2VkIjsKKwlteSAkc2lkPXNo
aWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2Fu
aXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBt
YWxmb3JtZWQiOworCW15ICRncl9wb3J0PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJncl9wb3J0
XCIgbWlzc2VkIjsKKwkkZ3JfcG9ydCA9IHNhbml0aXplcignbnVtJywgJGdyX3BvcnQpIG9yIGRp
ZSAiYXJndW1lbnQgXCJncl9wb3J0XCIgbWFsZm9ybWVkIjsKKwlteSAkc25kX3BvcnQ9c2hpZnQg
b3IgZGllICJhcmd1bWVudCBcInNuZF9wb3J0XCIgbWlzc2VkIjsKKwkkc25kX3BvcnQgPSBzYW5p
dGl6ZXIoJ251bScsICRzbmRfcG9ydCkgb3IgZGllICJhcmd1bWVudCBcInNuZF9wb3J0XCIgbWFs
Zm9ybWVkIjsKKwlteSAkZnNfcG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwiZnNfcG9ydFwi
IG1pc3NlZCI7CisJJGZzX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRmc19wb3J0KSBvciBkaWUg
ImFyZ3VtZW50IFwiZnNfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHRla2ljdHJsX3BvcnQ9c2hp
ZnQgb3IgZGllImFyZ3VtZW50IFwidGVraWN0cmxfcG9ydFwiIG1pc3NlZCI7CisJJHRla2ljdHJs
X3BvcnQgPSBzYW5pdGl6ZXIoJ3BubnVtJywgJHRla2ljdHJsX3BvcnQpIG9yIGRpZSAiYXJndW1l
bnQgXCJ0ZWtpY3RybF9wb3J0XCIgbWFsZm9ybWVkIjsKKwlteSAkdGVraWRhdGFfcG9ydD1zaGlm
dCBvciBkaWUiYXJndW1lbnQgXCJ0ZWtpZGF0YV9wb3J0XCIgbWlzc2VkIjsKKwkkdGVraWRhdGFf
cG9ydCA9IHNhbml0aXplcigncG5udW0nLCAkdGVraWRhdGFfcG9ydCkgb3IgZGllICJhcmd1bWVu
dCBcInRla2lkYXRhX3BvcnRcIiBtYWxmb3JtZWQiOworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkg
JHN0aD0kZGJoLT5wcmVwYXJlKCJ1cGRhdGUgc2Vzc2lvbnMgc2V0IGxhc3RfdGltZT1OT1coKSxz
dGF0dXM9J1InLAorCSAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50PT8sZ3JfcG9ydD0/LHNv
dW5kX3BvcnQ9Pyxmc19wb3J0PT8sdGVraWN0cmxfcG9ydD0/LHRla2lkYXRhX3BvcnQ9PyB3aGVy
ZSBzZXNzaW9uX2lkID0gPyBhbmQgdW5hbWU9PyIpOworCSRzdGgtPmV4ZWN1dGUoJGNsaWVudCwg
JGdyX3BvcnQsICRzbmRfcG9ydCwgJGZzX3BvcnQsICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFf
cG9ydCwgJHNpZCwgJHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2co
J2Vycm9yJywgInJlc3VtZSAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBl
eGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOwor
CXVuZGVmICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBkYl9jaGFuZ2VzdGF0dXMKK3sKKwlt
eSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzdGF0dXM9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc
InN0YXR1c1wiIG1pc3NlZCI7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vz
c2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9y
IGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwljaGVja191c2VyKCRz
aWQpOworCisJIyB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiBub3Jt
YWwgc2Vzc2lvbnMgKCRyZWFsdXNlciA9PSAkZWZmZWN0aXZlX3VzZXIpCisJIyBfYW5kXyBkZXNr
dG9wIHNoYXJpbmcgc2Vzc2lvbiAoJHJlYWx1c2VyICE9ICRlZmZlY3RpdmVfdXNlcikuIFRodXMs
IGV4dHJhY3RpbmcgdGhlIGVmZmVjdGl2ZQorCSMgdXNlcm5hbWUgZnJvbSB0aGUgc2Vzc2lvbiBJ
RC4uLgorCW15ICRlZmZlY3RpdmVfdXNlciA9ICRzaWQ7CisJJGVmZmVjdGl2ZV91c2VyID1+IHMv
XC1bMC05XStcLVswLTldezEwfV8uKi8vOworCisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJ1cGRh
dGUgc2Vzc2lvbnMgc2V0IGxhc3RfdGltZT1OT1coKSwKKwkgICAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cz0/IHdoZXJlIHNlc3Npb25faWQgPSA/IGFuZCB1bmFtZT0/Iik7CisJJHN0aC0+ZXhl
Y3V0ZSgkc3RhdHVzLCAkc2lkLCAkZWZmZWN0aXZlX3VzZXIpOworCWlmICgkc3RoLT5lcnIoKSkK
Kwl7CisJCXN5c2xvZygnZXJyb3InLCAiY2hhbmdlc3RhdHVzIChNeVNRTCBzZXNzaW9uIGRiIGJh
Y2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9
CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRi
X2dldHN0YXR1cworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBk
aWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcign
eDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVk
IjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHN0
YXR1cyBmcm9tIHNlc3Npb25zIHdoZXJlIHNlc3Npb25faWQgPSA/Iik7CisJJHN0aC0+ZXhlY3V0
ZSgkc2lkKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImNoYW5n
ZXN0YXR1cyAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTog
JHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBkYXRhOworCW15ICRzdGF0dXM7CisJ
QGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheTsKKwl7CisJCSRzdGF0dXMgPSAkZGF0YVswXTsK
Kwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gJHN0YXR1czsKK30K
Kworc3ViIGRiX2dldGRpc3BsYXlzCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwkjaWdub3Jl
ICRzZXJ2ZXIKKwlteSBAc3RyaW5nczsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBk
aXNwbGF5IGZyb20gc2Vzc2lvbnMiKTsKKwkkc3RoLT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVy
cigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJnZXRkaXNwbGF5cyAoTXlTUUwgc2Vzc2lvbiBk
YiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7
CisJfQorCW15IEBkYXRhOworCW15ICRpPTA7CisJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hy
b3dfYXJyYXkpCisJeworCQkkc3RyaW5nc1skaSsrXT0nfCcuJGRhdGFbMF0uJ3wnOworCX0KKwkk
c3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBqb2luKCJcbiIsQHN0cmluZ3Mp
OworfQorCitzdWIgZGJfZ2V0cG9ydHMKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCSNpZ25v
cmUgJHNlcnZlcgorCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwi
IG1pc3NlZCI7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3Qg
cG9ydCBmcm9tIHVzZWRfcG9ydHMiKTsKKwkkc3RoLT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVy
cigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJnZXRwb3J0cyAoTXlTUUwgc2Vzc2lvbiBkYiBi
YWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJ
fQorCW15IEBkYXRhOworCW15ICRpPTA7CisJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3df
YXJyYXkpCisJeworCQkkc3RyaW5nc1skaSsrXT0nfCcuJGRhdGFbMF0uJ3wnOworCX0KKwkkc3Ro
LT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBqb2luKCJcbiIsQHN0cmluZ3MpOwor
fQorCitzdWIgZGJfZ2V0c2VydmVycworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgQHN0
cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3Qgc2VydmVyLGNvdW50KCopIGZy
b20gc2Vzc2lvbnMgd2hlcmUgc3RhdHVzICE9ICdGJyBncm91cCBieSBzZXJ2ZXIiKTsKKwkkc3Ro
LT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJn
ZXRzZXJ2ZXJzIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2Rl
OiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQGRhdGE7CisJbXkgJGk9MDsKKwl3
aGlsZSAoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkKKwl7CisJCUBzdHJpbmdzWyRpKytd
PUBkYXRhWzBdLiIgIi5AZGF0YVsxXTsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRi
aDsKKwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKworc3ViIGRiX2dldGFnZW50Cit7
CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQg
XCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywgJHNp
ZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxmb3JtZWQiOworCW15ICRhZ2Vu
dDsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IGFn
ZW50X3BpZCBmcm9tIHNlc3Npb25zCisJICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBzZXNz
aW9uX2lkPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7
CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0YWdlbnQgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg
ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBA
ZGF0YTsKKwlteSAkaT0wOworCWlmKEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJyYXkpCisJewor
CQkkYWdlbnQ9JGRhdGFbMF07CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJ
cmV0dXJuICRhZ2VudDsKK30KKworc3ViIGRiX2dldGRpc3BsYXkKK3sKKwlteSAkZGJoID0gaW5p
dF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBt
aXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3Vt
ZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJGRpc3BsYXk7CisJY2hlY2tfdXNl
cigkc2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBkaXNwbGF5IGZyb20gc2Vz
c2lvbnMKKwkgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHNlc3Npb25faWQgPT8iKTsKKwkk
c3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJy
b3InLCAiZ2V0ZGlzcGxheSAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBl
eGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBkYXRhOworCW15ICRp
PTA7CisJaWYoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkKKwl7CisJCSRkaXNwbGF5PSRk
YXRhWzBdOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAkZGlz
cGxheTsKK30KKworc3ViIGRiX2xpc3RzZXNzaW9ucworeworCW15ICRkYmggPSBpbml0X2RiKCk7
CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2VydmVyXCIgbWlzc2VkIjsK
KworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IGFnZW50X3Bp
ZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMsCisJICAgICAgICAgICAgICAg
ICAgICAgICBEQVRFX0ZPUk1BVChpbml0X3RpbWUsICclWS0lbS0lZFQlSDolSTolUycpLAorCSAg
ICAgICAgICAgICAgICAgICAgICAgY29va2llLGNsaWVudCxncl9wb3J0LHNvdW5kX3BvcnQsCisJ
ICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChsYXN0X3RpbWUsICclWS0lbS0lZFQl
SDolSTolUycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgdW5hbWUsCisJICAgICAgICAgICAg
ICAgICAgICAgICBNT0QoVU5JWF9USU1FU1RBTVAoTk9XKCkpIC0gVU5JWF9USU1FU1RBTVAoaW5p
dF90aW1lKSwgODY0MDApLGZzX3BvcnQsCisJICAgICAgICAgICAgICAgICAgICAgICB0ZWtpY3Ry
bF9wb3J0LHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAg
ICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCBzZXJ2ZXI9PyBhbmQgdW5hbWU9PworCSAgICAgICAg
ICAgICAgICAgICAgICAgYW5kICAoICBzZXNzaW9uX2lkIG5vdCBsaWtlICclWFNIQUQlJykgIG9y
ZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJJHN0aC0+ZXhlY3V0ZSgkc2VydmVyLCAkcmVhbHVzZXIp
OworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAibGlzdHNlc3Npb25z
IChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5l
cnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQHNlc3Npb25zID0gZmV0Y2hyb3dfYXJyYXlfZGF0
YXNldHMoJHN0aCk7CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gQHNl
c3Npb25zOworfQorCitzdWIgZGJfbGlzdHNlc3Npb25zX2FsbAoreworCW15ICRkYmggPSBpbml0
X2RiKCk7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdl
bnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1cywKKwkgICAgICAgICAg
ICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyks
CisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUsY2xpZW50LGdyX3BvcnQsc291bmRfcG9y
dCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGxhc3RfdGltZSwgJyVZLSVt
LSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICB1bmFtZSwKKwkgICAgICAg
ICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFNUChOT1coKSkgLSBVTklYX1RJTUVTVEFN
UChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIHRl
a2ljdHJsX3BvcnQsdGVraWRhdGFfcG9ydCBmcm9tICBzZXNzaW9ucworCSAgICAgICAgICAgICAg
ICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCB1bmFtZT0/IGFuZCAgKCAgc2Vzc2lvbl9p
ZCBub3QgbGlrZSAnJVhTSEFEJScpICBvcmRlciBieSBzdGF0dXMgZGVzYyIpOworCQorCSRzdGgt
PmV4ZWN1dGUoJHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vy
cm9yJywgImxpc3RzZXNzaW9uc19hbGwgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVk
IHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBAc2Vzc2lv
bnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkkc3RoLT5maW5pc2goKTsKKwl1
bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9CisKK3N1YiBkYl9saXN0c2hhZG93c2Vz
c2lvbnMKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGll
ICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0k
ZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2
ZXIsIHN0YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGlt
ZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUs
Y2xpZW50LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVf
Rk9STUFUKGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAg
ICAgICAgICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFN
UChOT1coKSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCBmcm9t
ICBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFu
ZCBzZXJ2ZXI9PyBhbmQgdW5hbWU9PworCSAgICAgICAgICAgICAgICAgICAgICAgYW5kICAoICBz
ZXNzaW9uX2lkIGxpa2UgJyVYU0hBRCUnKSAgb3JkZXIgYnkgc3RhdHVzIGRlc2MiKTsKKwkkc3Ro
LT5leGVjdXRlKCRzZXJ2ZXIsICRyZWFsdXNlcik7CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJ
c3lzbG9nKCdlcnJvcicsICJsaXN0c2Vzc2lvbnMgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg
ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBA
c2Vzc2lvbnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkkc3RoLT5maW5pc2go
KTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9CisKK3N1YiBkYl9saXN0c2hh
ZG93c2Vzc2lvbnNfYWxsCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSBAc3RyaW5nczsK
KwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRp
c3BsYXksIHNlcnZlciwgc3RhdHVzLAorCSAgICAgICAgICAgICAgICAgICAgICAgREFURV9GT1JN
QVQoaW5pdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwKKwkgICAgICAgICAgICAgICAgICAg
ICAgIGNvb2tpZSxjbGllbnQsZ3JfcG9ydCxzb3VuZF9wb3J0LAorCSAgICAgICAgICAgICAgICAg
ICAgICAgREFURV9GT1JNQVQobGFzdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwKKwkgICAg
ICAgICAgICAgICAgICAgICAgIHVuYW1lLAorCSAgICAgICAgICAgICAgICAgICAgICAgTU9EKFVO
SVhfVElNRVNUQU1QKE5PVygpKSAtIFVOSVhfVElNRVNUQU1QKGluaXRfdGltZSksIDg2NDAwKSxm
c19wb3J0IGZyb20gIHNlc3Npb25zIAorCSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3Rh
dHVzICE9J0YnIGFuZCB1bmFtZT0/IGFuZCAgKCAgc2Vzc2lvbl9pZCBsaWtlICclWFNIQUQlJykg
IG9yZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJCisJJHN0aC0+ZXhlY3V0ZSgkcmVhbHVzZXIpOwor
CWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAibGlzdHNlc3Npb25zX2Fs
bCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+
ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBzZXNzaW9ucyA9IGZldGNocm93X2FycmF5X2Rh
dGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIEBz
ZXNzaW9uczsKK30KKworc3ViIGNoZWNrX3Jvb3QKK3sKKwlpZiAoJHJlYWx1c2VyIG5lICJyb290
IikKKwl7CisJCWRpZSAiJHJlYWx1c2VyLCB5b3UgY2FuIG5vdCBkbyB0aGlzIGpvYiI7CisJfQor
fQorCitzdWIgY2hlY2tfdXNlcgoreworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc
InNlc3Npb25faWRcIiBtaXNzZWQiOworCXJldHVybiBpZiAkcmVhbHVzZXIgZXEgInJvb3QiOwor
CisJIyBzZXNzaW9uIGlkIGxvb2tzIGxpa2Ugc29tZXVzZXItNTEtMTMwNDAwNTg5NV9zdERnbm9t
ZS1zZXNzaW9uX2RwMjQKKwkjIGR1cmluZyBEQiBpbnNlcnRzZXNzaW9uIGl0IG9ubHkgbG9va3Mg
bGlrZSBzb21ldXNlci01MS0xMzA0MDA1ODk1CisKKwkjIGRlcml2ZSB0aGUgc2Vzc2lvbidzIHVz
ZXIgZnJvbSB0aGUgc2Vzc2lvbiBuYW1lL2lkCisJbXkgJHVzZXIgPSAiJHNpZCI7CisKKwkjIGhh
bmRsZSBBY3RpdmVEaXJlY3RvcnkgRG9tYWluIHVzZXIgYWNjb3VudHMgZ3JhY2VmdWxseQorCSRy
ZWFsdXNlciA9fiBzL1xcLy87CisKKwkjIHBlcmZvcm0gdGhlIHVzZXIgY2hlY2sKKwkkdXNlciA9
fiBzLygkcmVhbHVzZXItWzAtOV17Mix9LVswLTldezEwLH1fc3QoRHxSKS4qfC4qLVswLTldezIs
fS1bMC05XXsxMCx9X3N0UygwfDEpWFNIQUQkcmVhbHVzZXIuKikvJHJlYWx1c2VyLzsKKwkkdXNl
ciBlcSAkcmVhbHVzZXIgb3IgZGllICIkcmVhbHVzZXIgaXMgbm90IGF1dGhvcml6ZWQiOworfQor
CitzdWIgZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMKK3sKKwlteSAkc3RoID0gc2hpZnQ7CisJbXkg
QGxpbmVzOworCW15IEBkYXRhOworCXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5
KCkpCisJeworCQlwdXNoIEBsaW5lcywgam9pbignfCcsIEBkYXRhKTsKKwl9CisJcmV0dXJuIEBs
aW5lczsKK30KKworMTsKZGlmZiAtLWdpdCBhL3gyZ29zZXJ2ZXIvc2Jpbi94MmdvZGJhZG1pbiBi
L3gyZ29zZXJ2ZXIvc2Jpbi94MmdvZGJhZG1pbgppbmRleCBkM2M2MjY2Li5lNzQ2ZTQzIDEwMDc1
NQotLS0gYS94Mmdvc2VydmVyL3NiaW4veDJnb2RiYWRtaW4KKysrIGIveDJnb3NlcnZlci9zYmlu
L3gyZ29kYmFkbWluCkBAIC02Myw2ICs2Myw5IEBACiAKIG15ICRDb25maWcgPSBnZXRfc3FsY29u
ZmlnKCk7CiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTUUxpdGUgQmFj
a2VuZAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBpZiAoJENvbmZpZy0+cGFy
YW0oImJhY2tlbmQiKSBlcSAnc3FsaXRlJykKIHsKIAlteSAkdXNlcj0ieDJnb3VzZXIiOwpAQCAt
MjM2LDQ5NiArMjM5LDgyOSBAQAogCX0KIH0KIAotbXkgJGhvc3Q9JENvbmZpZy0+cGFyYW0oInBv
c3RncmVzLmhvc3QiKTsKLW15ICRwb3J0PSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5wb3J0Iik7
Ci1teSAkc3NsbW9kZT0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMuc3NsIik7Ci1pZiAoISRzc2xt
b2RlKQotewotCSRzc2xtb2RlPSJwcmVmZXIiOwotfQotbXkgJGRiYWRtaW49JENvbmZpZy0+cGFy
YW0oInBvc3RncmVzLmRiYWRtaW4iKTsKLW15ICR4MmdvYWRtaW49IngyZ29kYnVzZXIiOwotbXkg
JHgyZ29hZG1pbnBhc3M9YHB3Z2VuIDggMWA7Ci1jaG9tcCAoJHgyZ29hZG1pbnBhc3MpOwotbXkg
JGRiPSJ4MmdvX3Nlc3Npb25zIjsKIAotaWYgKCEkaG9zdCkKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyBNeVNRTCBCYWNrZW5kCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKK2lmICgkQ29uZmlnLT5wYXJhbSgiYmFja2VuZCIpIGVxICdteXNxbCcpCiB7Ci0J
JGhvc3Q9J2xvY2FsaG9zdCc7Ci19Ci1pZiAoISRwb3J0KQotewotCSRwb3J0PSc1NDMyJzsKLX0K
LWlmICghJGRiYWRtaW4pCi17Ci0JJGRiYWRtaW49J3Bvc3RncmVzJzsKLX0KLQotb3BlbiAoRkws
IjwgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3BnYWRtaW4gIikgb3IgZGllICJDYW4ndCBy
ZWFkIHBhc3N3b3JkIGZpbGUgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3BnYWRtaW4iOwot
bXkgJGRiYWRtaW5wYXNzPTxGTD47Ci1jbG9zZShGTCk7Ci1jaG9tcCgkZGJhZG1pbnBhc3MpOwot
Ci1pZiAoJHVwZGF0ZWRiKQotewotCSMgY2hlY2sgaWYgdGhlIERCIGFscmVhZHkgZXhpc3RzLCBp
ZiBub3QsIGNyZWF0ZSBpdC4uLgotCW15ICRkYmg7Ci0JdW50aWwgKAotCQkkZGJoID0gREJJLT5j
b25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0k
c3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDEsIFJh
aXNlRXJyb3IgPT4gMCwgUHJpbnRFcnJvciA9PiAwfSkKLQkpIHsKLQkJJGNyZWF0ZWRiID0gMTsK
LQkJbGFzdDsKLQl9OwotCWlmICghJGNyZWF0ZWRiKSB7Ci0JCSRkYmggPSBEQkktPmNvbm5lY3Qo
ImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2Rl
IiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pOwotCQlpZiAo
JGRiaCkgewotCQkJbXkgJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMDsKLQkJCW15ICRzdGhfdGVr
aWN0cmw7Ci0JCQlteSAkc3RoX3Rla2lkYXRhOwotCQkJbXkgJHN0aF91cGRhdGU7Ci0JCQl0cnkg
ewotCQkJCSRzdGhfdGVraWN0cmwgPSAkZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxlY3QgdGVraWN0cmxfcG9ydCBmcm9tIHNlc3Npb25zCi0JCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF90ZWtpY3RybC0+ZXhl
Y3V0ZSgpOwotCQkJfSBjYXRjaCB7Ci0JCQkJcHJpbnQgIkFERElORzogdGVraWN0cmxfcG9ydCBj
b2x1bW4gdG8gdGFibGUgc2Vzc2lvbnNcbiI7Ci0JCQkJJHN0aF90ZWtpY3RybCA9ICRkYmgtPnBy
ZXBhcmUoIgotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNl
c3Npb25zCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtp
Y3RybF9wb3J0IGludAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwotCQkJ
CSRzdGhfdGVraWN0cmwtPmV4ZWN1dGUoKSBvciBkaWU7Ci0JCQkJJHN0aF90ZWtpY3RybC0+Zmlu
aXNoKCk7Ci0JCQkJJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMTsKLQkJCX07Ci0JCQl0cnkgewot
CQkJCSRzdGhfdGVraWRhdGEgPSAkZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxlY3QgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCi0JCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF90ZWtpZGF0YS0+ZXhlY3V0
ZSgpOwotCQkJfSBjYXRjaCB7Ci0JCQkJcHJpbnQgIkFERElORzogdGVraWRhdGFfcG9ydCBjb2x1
bW4gdG8gdGFibGUgc2Vzc2lvbnNcbiI7Ci0JCQkJJHN0aF90ZWtpZGF0YT0kZGJoLT5wcmVwYXJl
KCIKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMK
LQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtpZGF0YV9wb3J0
IGludAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkJCQkkc3RoX3Rla2lk
YXRhLT5leGVjdXRlKCkgb3IgZGllOwotCQkJCSRzdGhfdGVraWRhdGEtPmZpbmlzaCgpOwotCQkJ
CSR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDE7Ci0JCQl9OwotCi0JCQlpZiAoJHVwZGF0ZV92aWV3
c19uX3J1bGVzKQotCQkJewotCQkJCXByaW50ICJVUERBVElORyBWSUVXOiBzZXNzaW9uc192aWV3
XG4iOwotCQkJCSRzdGhfdXBkYXRlPSRkYmgtPnByZXBhcmUoIgotCQkJCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgVklFVyBzZXNzaW9uc192aWV3IGFzCi0JCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QKLQkJCQkgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFnZW50X3BpZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMsIGlu
aXRfdGltZSwgY29va2llLCBjbGllbnQsIGdyX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VuZF9wb3J0LCBsYXN0X3RpbWUsIHVuYW1lLCBmc19wb3J0LCB0ZWtpY3RybF9w
b3J0LCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKLQkJCQkgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKLQkJCQkgICAgICAgICAgICAg
ICAgICAgICAgICAgICIpOwotCQkJCSRzdGhfdXBkYXRlLT5leGVjdXRlKCkgb3IgZGllOwotCQkJ
CXByaW50ICJVUERBVElORyBSVUxFOiB1cGRhdGVfc2Vzc192aWV3XG4iOwotCQkJCSRzdGhfdXBk
YXRlPSRkYmgtPnByZXBhcmUoIgotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
IG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQotCQkJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgVE8gc2Vzc2lvbnNfdmlldyBETyBJTlNURUFECi0JCQkJICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgc2Vzc2lvbnMgc2V0Ci0JCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXM9TkVXLnN0YXR1cywKLQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhc3RfdGltZT1ORVcubGFzdF90aW1lLAotCQkJCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29va2llPU5FVy5jb29raWUsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWVudD1ORVcuY2xpZW50LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JfcG9y
dD1ORVcuZ3JfcG9ydCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQ9
TkVXLnNvdW5kX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBmc19wb3J0PU5F
Vy5mc19wb3J0LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgdGVraWN0cmxfcG9ydD1O
RVcudGVraWN0cmxfcG9ydCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHRla2lkYXRh
X3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
ZXJlIHNlc3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2Vy
Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkJCQkkc3RoX3VwZGF0ZS0+ZXhl
Y3V0ZSgpIG9yIGRpZTsKLQkJCQkkc3RoX3VwZGF0ZS0+ZmluaXNoKCk7CisJbXkgJGhvc3Q9JENv
bmZpZy0+cGFyYW0oIm15c3FsLmhvc3QiKTsKKwlteSAkcG9ydD0kQ29uZmlnLT5wYXJhbSgibXlz
cWwucG9ydCIpOworCW15ICR1bmV0PSRDb25maWctPnBhcmFtKCJteXNxbC51bmV0Iik7CisJbXkg
JGRiYWRtaW49JENvbmZpZy0+cGFyYW0oIm15c3FsLmRiYWRtaW4iKTsKKwlteSAkeDJnb2FkbWlu
PSJ4MmdvZGJ1c2VyIjsKKwlteSAkeDJnb2FkbWlucGFzcz1gcHdnZW4gOCAxYDsKKwljaG9tcCAo
JHgyZ29hZG1pbnBhc3MpOworCW15ICRkYj0ieDJnb19zZXNzaW9ucyI7CisJCisJaWYgKCEkaG9z
dCkKKwl7CisJCSRob3N0PSdsb2NhbGhvc3QnOworCX0KKwlpZiAoISRwb3J0KQorCXsKKwkJJHBv
cnQ9JzMzMDYnOworCX0KKwlpZiAoISRkYmFkbWluKQorCXsKKwkJJGRiYWRtaW49J3Jvb3QnOwor
CX0KKwkKKwlvcGVuIChGTCwiPCAvZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMvbXlhZG1pbiAi
KSBvciBkaWUgIkNhbid0IHJlYWQgcGFzc3dvcmQgZmlsZSAvZXRjL3gyZ28veDJnb3NxbC9wYXNz
d29yZHMvbXlhZG1pbiI7CisJbXkgJGRiYWRtaW5wYXNzPTxGTD47CisJY2xvc2UoRkwpOworCWNo
b21wKCRkYmFkbWlucGFzcyk7CisJCisJaWYgKCR1cGRhdGVkYikKKwl7CisJCSMgY2hlY2sgaWYg
dGhlIERCIGFscmVhZHkgZXhpc3RzLCBpZiBub3QsIGNyZWF0ZSBpdC4uLgorCQlteSAkZGJoOwor
CQl1bnRpbCAoCisJCQkkZGJoID0gREJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRi
O2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VF
cnJvciA9PiAxfSkKKwkJKSB7CisJCQkkY3JlYXRlZGIgPSAxOworCQkJbGFzdDsKKwkJfTsKKwkJ
aWYgKCEkY3JlYXRlZGIpIHsKKwkJCSRkYmggPSBEQkktPmNvbm5lY3QoImRiaTpteXNxbDpkYXRh
YmFzZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3Mi
LHtSYWlzZUVycm9yID0+IDF9KTsKKwkJCWlmICgkZGJoKSB7CisJCQkJbXkgJHVwZGF0ZV92aWV3
c19uX3J1bGVzID0gMDsKKwkJCQlteSAkc3RoX3Rla2ljdHJsOworCQkJCW15ICRzdGhfdGVraWRh
dGE7CisJCQkJbXkgJHN0aF91cGRhdGU7CisJCQkJdHJ5IHsKKwkJCQkJJHN0aF90ZWtpY3RybCA9
ICRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxl
Y3QgdGVraWN0cmxfcG9ydCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2ljdHJsLT5leGVjdXRlKCk7CisJCQkJfSBjYXRj
aCB7CisJCQkJCXByaW50ICJBRERJTkc6IHRla2ljdHJsX3BvcnQgY29sdW1uIHRvIHRhYmxlIHNl
c3Npb25zXG4iOworCQkJCQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFyZSgiCisJCQkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCisJCQkJCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWN0cmxfcG9ydCBpbnQK
KwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWN0
cmwtPmV4ZWN1dGUoKSBvciBkaWU7CisJCQkJCSRzdGhfdGVraWN0cmwtPmZpbmlzaCgpOworCQkJ
CQkkdXBkYXRlX3ZpZXdzX25fcnVsZXMgPSAxOworCQkJCX07CisJCQkJdHJ5IHsKKwkJCQkJJHN0
aF90ZWtpZGF0YSA9ICRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxlY3QgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2lkYXRhLT5leGVjdXRlKCk7
CisJCQkJfSBjYXRjaCB7CisJCQkJCXByaW50ICJBRERJTkc6IHRla2lkYXRhX3BvcnQgY29sdW1u
IHRvIHRhYmxlIHNlc3Npb25zXG4iOworCQkJCQkkc3RoX3Rla2lkYXRhPSRkYmgtPnByZXBhcmUo
IgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMK
KwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWRhdGFfcG9y
dCBpbnQKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rl
a2lkYXRhLT5leGVjdXRlKCkgb3IgZGllOworCQkJCQkkc3RoX3Rla2lkYXRhLT5maW5pc2goKTsK
KwkJCQkJJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMTsKKwkJCQl9OwogCQkJfQorCQkJaWYgKCRk
YmgpIHsKKwkJCQl1bmRlZiAkZGJoOworCQkJfQorCQkJZXhpdCgwKTsKKwkJfSBlbHNlIHsKKwkJ
CXByaW50ICJObyBzZXNzaW9uIERCIGZvdW5kLiBVc2UgLS1jcmVhdGVkYiBpbnN0ZWFkIG9mIC0t
dXBkYXRlZGIuXG4iOwogCQl9Ci0JCWlmICgkZGJoKSB7Ci0JCQl1bmRlZiAkZGJoOwotCQl9CisJ
fQorCQorCWlmICgkY3JlYXRlZGIpCisJeworCQlteV9jcmVhdGVfZGF0YWJhc2UoKTsKKwkJbXlf
Y3JlYXRlX3RhYmxlcygpOwogCQlleGl0KDApOwotCX0gZWxzZSB7Ci0JCXByaW50ICJObyBzZXNz
aW9uIERCIGZvdW5kLiBVc2UgLS1jcmVhdGVkYiBpbnN0ZWFkIG9mIC0tdXBkYXRlZGIuXG4iOwog
CX0KLX0KLQotaWYgKCRjcmVhdGVkYikKLXsKLQljcmVhdGVfZGF0YWJhc2UoKTsKLQljcmVhdGVf
dGFibGVzKCk7Ci0JZXhpdCgwKTsKLX0KLQotaWYgKCRsaXN0dXNlcnMpCi17Ci0JbGlzdF91c2Vy
cygpOwotCWV4aXQoMCk7Ci19Ci0KLW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1l
PSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIs
ICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87Ci1pZiAoJGFkZHVz
ZXIpCi17Ci0JYWRkX3VzZXIoJGFkZHVzZXIpOwotfQotCi1pZiAoJGFkZGdyb3VwKQotewotCW15
ICgkbmFtZSwgJHBhc3N3ZCwgJGdpZCwgJG1lbWJlcnMpID0gZ2V0Z3JuYW0oICRhZGRncm91cCk7
Ci0JbXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7Ci0JZm9yZWFjaCAoQGdycF9t
ZW1iZXJzKQorCQorCWlmICgkbGlzdHVzZXJzKQogCXsKLQkJY2hvbXAoJF8pOwotCQlhZGRfdXNl
cigkXyk7CisJCW15X2xpc3RfdXNlcnMoKTsKKwkJZXhpdCgwKTsKIAl9Ci19Ci0KLWlmICgkcm11
c2VyKQotewotCXJtX3VzZXIoJHJtdXNlcik7Ci19Ci0KLWlmICgkcm1ncm91cCkKLXsKLQlteSAo
JG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdybmFtKCAkcm1ncm91cCk7Ci0J
bXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7Ci0JZm9yZWFjaCAoQGdycF9tZW1i
ZXJzKQorCQorCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRiO2hv
c3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VFcnJv
ciA9PiAxfSkgb3IgZGllICRfOworCWlmICgkYWRkdXNlcikKIAl7Ci0JCWNob21wKCRfKTsKLQkJ
cm1fdXNlcigkXyk7CisJCW15X2FkZF91c2VyKCRhZGR1c2VyKTsKIAl9Ci19Ci11bmRlZiAkZGJo
OwotCi1zdWIgbGlzdF91c2VycygpCi17Ci0JbXkgJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQZzpk
Ym5hbWU9cG9zdGdyZXM7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNzbG1vZGUiLCAi
JGRiYWRtaW4iLCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxfSkgb3IgZGllICRfOwot
CW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHJvbG5hbWUgZnJvbSBwZ19yb2xlcyB3aGVy
ZSByb2xuYW1lIGxpa2UgJ3gyZ291c2VyXyUnIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpb3IgZGllOwot
CXByaW50ZiAoIiUtMjBzIERCIHVzZXJcbiIsIlVOSVggdXNlciIpOwotCXByaW50ICItLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7Ci0JbXkgQGRhdGE7Ci0Jd2hpbGUg
KEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJyYXkpCisJCisJaWYgKCRhZGRncm91cCkKIAl7Ci0J
CUBkYXRhWzBdPX5zL3gyZ291c2VyXy8vOwotCQlwcmludGYgKCIlLTIwcyB4MmdvdXNlcl9AZGF0
YVswXVxuIixAZGF0YVswXSk7CisJCW15ICgkbmFtZSwgJHBhc3N3ZCwgJGdpZCwgJG1lbWJlcnMp
ID0gZ2V0Z3JuYW0oICRhZGRncm91cCk7CisJCW15IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1l
bWJlcnMpOworCQlmb3JlYWNoIChAZ3JwX21lbWJlcnMpCisJCXsKKwkJCWNob21wKCRfKTsKKwkJ
CW15X2FkZF91c2VyKCRfKTsKKwkJfQogCX0KLQkkc3RoLT5maW5pc2goKTsKKwkKKwlpZiAoJHJt
dXNlcikKKwl7CisJCW15X3JtX3VzZXIoJHJtdXNlcik7CisJfQorCQorCWlmICgkcm1ncm91cCkK
Kwl7CisJCW15ICgkbmFtZSwgJHBhc3N3ZCwgJGdpZCwgJG1lbWJlcnMpID0gZ2V0Z3JuYW0oICRy
bWdyb3VwKTsKKwkJbXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7CisJCWZvcmVh
Y2ggKEBncnBfbWVtYmVycykKKwkJeworCQkJY2hvbXAoJF8pOworCQkJbXlfcm1fdXNlcigkXyk7
CisJCX0KKwl9CiAJdW5kZWYgJGRiaDsKLX0KLQotc3ViIHJtX3VzZXIoKQotewotCW15ICR1c2Vy
PXNoaWZ0OwotCi0JcHJpbnQgKCJybSBEQiB1c2VyIFwieDJnb3VzZXJfJHVzZXJcIlxuIik7Ci0K
LQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIlJFVk9LRSBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9u
cywgdXNlZF9wb3J0cywgbW91bnRzIEZST00gXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+
ZXhlY3V0ZSgpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVH
RVMgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcsIHNlcnZlcnNfdmlldywgcG9ydHNfdmll
dyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCW15ICRz
dGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBPV05FRCBCWSBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkk
c3RoLT5leGVjdXRlKCk7Ci0KLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgVVNFUiBpZiBl
eGlzdHMgXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCSRzdGgtPmZp
bmlzaCgpOwotCi0JbXkgKCRuYW1lLCAkcGFzcywgJHVpZCwgJHBnaWQsICRxdW90YSwgJGNvbW1l
bnQsICRnY29zLCAkZGlyLCAkc2hlbGwsICRleHBpcmUpID0gZ2V0cHduYW0oJHVzZXIpOwotCWlm
ICghICR1aWQpCisJCisJc3ViIG15X2xpc3RfdXNlcnMoKQogCXsKLQkJcmV0dXJuOworCQlteSAk
ZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRkYjtob3N0PSRob3N0O3BvcnQ9
JHBvcnQiLCIkZGJhZG1pbiIsIiRkYmFkbWlucGFzcyIse1JhaXNlRXJyb3IgPT4gMX0pIG9yIGRp
ZSAkXzsKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgdXNlciBmcm9tIG15c3FsLnVz
ZXIgd2hlcmUgdXNlciBsaWtlICd4MmdvdXNlcl8lJyIpOworCQkkc3RoLT5leGVjdXRlKClvciBk
aWU7CisJCXByaW50ZiAoIiUtMjBzIERCIHVzZXJcbiIsIlVOSVggdXNlciIpOworCQlwcmludCAi
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOworCQlteSBAZGF0YTsK
KwkJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJyYXkpCisJCXsKKwkJCUBkYXRhWzBd
PX5zL3gyZ291c2VyXy8vOworCQkJcHJpbnRmICgiJS0yMHMgeDJnb3VzZXJfQGRhdGFbMF1cbiIs
QGRhdGFbMF0pOworCQl9CisJCSRzdGgtPmZpbmlzaCgpOworCQl1bmRlZiAkZGJoOwogCX0KLQlp
ZiAoIC1lICIkZGlyLy54MmdvL3NxbHBhc3MiICkKKwkKKwlzdWIgbXlfcm1fdXNlcigpCiAJewot
CQl1bmxpbmsoIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQlteSAkdXNlcj1zaGlmdDsKKwkKKwkJ
cHJpbnQgKCJybSBEQiB1c2VyIFwieDJnb3VzZXJfJHVzZXJcIlxuIik7CisKKwkJbXkgJHN0aD0k
ZGJoLT5wcmVwYXJlKCJEUk9QIFVTRVIgSUYgRVhJU1RTIGB4MmdvdXNlcl8kdXNlcmBAYCR1bmV0
YCIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSRzdGgtPmZpbmlzaCgpOworCisJCW15ICgkbmFt
ZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2NvcywgJGRpciwgJHNo
ZWxsLCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKKwkJaWYgKCEgJHVpZCkKKwkJeworCQkJ
cmV0dXJuOworCQl9CisJCWlmICggLWUgIiRkaXIvLngyZ28vc3FscGFzcyIgKQorCQl7CisJCQl1
bmxpbmsoIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQl9CisJfQorCQorCXN1YiBteV9hZGRfdXNl
cigpCisJeworCQlteSAkdXNlcj1zaGlmdDsKKworCQlteSAoJG5hbWUsICRwYXNzLCAkdWlkLCAk
cGdpZCwgJHF1b3RhLCAkY29tbWVudCwgJGdjb3MsICRkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBn
ZXRwd25hbSgkdXNlcik7CisJCWlmICghICRuYW1lKQorCQl7CisJCQlwcmludCAiQ2Fubm90IGZp
bmQgdXNlciAoJHVzZXIpXG4iOworCQkJcmV0dXJuOworCQl9IGVsc2lmICgkbmFtZSBlcSAicm9v
dCIpIHsKKwkJCXByaW50ICJUaGUgc3VwZXItdXNlciBcInJvb3RcIiBpcyBub3QgYWxsb3dlZCB0
byB1c2UgWDJHb1xuIjsKKwkJCXJldHVybjsKKwkJfQorCQkkcGFzcz1gcHdnZW4gOCAxYDsKKwkJ
Y2hvbXAoJHBhc3MpOworCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBVU0VSIElGIEVY
SVNUUyBgeDJnb3VzZXJfJHVzZXJgQGAkdW5ldGAiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRz
dGgtPntQcmludEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7CisKKwkJcHJpbnQgKCJjcmVh
dGUgREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCQkkc3RoPSRkYmgtPnByZXBhcmUo
IkNSRUFURSBVU0VSIGB4MmdvdXNlcl8kdXNlcmBAYCR1bmV0YCBJREVOVElGSUVEIEJZICckcGFz
cyciKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiR1JBTlQg
U0VMRUNULCBJTlNFUlQsIFVQREFURSwgREVMRVRFIE9OICogVE8gYHgyZ291c2VyXyR1c2VyYEBg
JHVuZXRgIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKworCQkkc3RoLT5maW5pc2goKTsKKwkKKwkJ
aWYgKCEgLWQgIiRkaXIvLngyZ28iICkKKwkJeworCQkJCWlmICggZGVmaW5lZCAoJkZpbGU6OlBh
dGg6Om1ha2VfcGF0aCkgKQorCQkJCXsKKwkJCQkJRmlsZTo6UGF0aDo6bWFrZV9wYXRoKCIkZGly
Ly54MmdvIik7CisJCQkJfQorCQkJCWVsc2lmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1rcGF0
aCkgKQorCQkJCXsKKwkJCQkJRmlsZTo6UGF0aDo6bWtwYXRoKCIkZGlyLy54MmdvIik7CisJCQkJ
fQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWRpZSAiVW5hYmxlIHRvIGNyZWF0ZSBmb2xkZXJzIHdp
dGggRmlsZTo6UGF0aCI7CisJCQkJfQorCQl9CisJCisJCSNzYXZlIHVzZXIgcGFzc3dvcmQKKwkJ
b3BlbiAoRkwsIj4gJGRpci8ueDJnby9zcWxwYXNzIikgb3IgZGllICJDYW4ndCBvcGVuIHBhc3N3
b3JkIGZpbGUgJGRpci8ueDJnby9zcWxwYXNzIjsKKwkJcHJpbnQgRkwgJHBhc3M7CisJCWNsb3Nl
KEZMKTsKKwkJY2htb2QoMDcwMCwiJGRpci8ueDJnbyIpOworCQljaG93bigkdWlkLCRwZ2lkLCIk
ZGlyLy54MmdvIik7CisJCWNobW9kKDA2MDAsIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQljaG93
bigkdWlkLCRwZ2lkLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwl9CisJCisJc3ViIG15X2NyZWF0
ZV90YWJsZXMoKQorCXsKKwkJJGRiaD1EQkktPmNvbm5lY3QoImRiaTpteXNxbDpkYXRhYmFzZT0k
ZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3MiLHtSYWlz
ZUVycm9yID0+IDF9KSBvciBkaWUgJF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAg
ICAgICAgICAgICAgICAgICAgICBDUkVBVEUgVEFCTEUgYHNlc3Npb25zYCAoCisJCSAgICAgICAg
ICAgICAgICAgICAgICBgc2Vzc2lvbl9pZGAgdmFyY2hhcig1MDApIE5PVCBOVUxMLAorCQkgICAg
ICAgICAgICAgICAgICAgICAgYGRpc3BsYXlgIGludCgxMSkgTk9UIE5VTEwsCisJCSAgICAgICAg
ICAgICAgICAgICAgICBgdW5hbWVgIHZhcmNoYXIoMTAwKSBOT1QgTlVMTCwKKwkJICAgICAgICAg
ICAgICAgICAgICAgIGBzZXJ2ZXJgIHZhcmNoYXIoMTAwKSBOT1QgTlVMTCwKKwkJICAgICAgICAg
ICAgICAgICAgICAgIGBjbGllbnRgIHZhcmNoYXIoMjApIERFRkFVTFQgTlVMTCwKKwkJICAgICAg
ICAgICAgICAgICAgICAgIGBzdGF0dXNgIGNoYXIoMSkgTk9UIE5VTEwgREVGQVVMVCAnUicsCisJ
CSAgICAgICAgICAgICAgICAgICAgICBgaW5pdF90aW1lYCBkYXRldGltZSBOT1QgTlVMTCBERUZB
VUxUIENVUlJFTlRfVElNRVNUQU1QLAorCQkgICAgICAgICAgICAgICAgICAgICAgYGxhc3RfdGlt
ZWAgZGF0ZXRpbWUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwKKwkJICAgICAg
ICAgICAgICAgICAgICAgIGBjb29raWVgIGNoYXIoNDUpIERFRkFVTFQgTlVMTCwKKwkJICAgICAg
ICAgICAgICAgICAgICAgIGBhZ2VudF9waWRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkgICAg
ICAgICAgICAgICAgICAgICAgYGdyX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkgICAg
ICAgICAgICAgICAgICAgICAgYHNvdW5kX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkg
ICAgICAgICAgICAgICAgICAgICAgYGZzX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkg
ICAgICAgICAgICAgICAgICAgICAgYHRla2ljdHJsX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxM
LAorCQkgICAgICAgICAgICAgICAgICAgICAgYHRla2lkYXRhX3BvcnRgIGludCgxMSkgREVGQVVM
VCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBzZXNzaW9uX2lk
YCksCisJCSAgICAgICAgICAgICAgICAgICAgICBVTklRVUUgS0VZIGBkaXNwbGF5X1VOSVFVRWAg
KGBkaXNwbGF5YCkpCisJCSAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0
ZSgpIG9yIGRpZTsKKworCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAg
ICAgQ1JFQVRFIFRBQkxFIGBtZXNzYWdlc2AgKAorCQkgICAgICAgICAgICAgICAgICAgYG1lc3Nf
aWRgIHZhcmNoYXIoMjApIE5PVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYG1lc2FnZWAg
bG9uZ3RleHQsCisJCSAgICAgICAgICAgICAgICAgICBQUklNQVJZIEtFWSAoYG1lc3NfaWRgKSkK
KwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQor
CQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxF
IGB1c2VyX21lc3NhZ2VzYCAoCisJCSAgICAgICAgICAgICAgICAgICBgbWVzc19pZGAgdmFyY2hh
cigyMCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBgdW5hbWVgIHZhcmNoYXIoMTAw
KSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZIChgbWVzc19pZGAp
KQorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJ
CisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBDUkVBVEUgVEFC
TEUgYHVzZWRfcG9ydHNgICgKKwkJICAgICAgICAgICAgICAgICAgIGBzZXJ2ZXJgIHZhcmNoYXIo
MTAwKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBzZXNzaW9uX2lkYCB2YXJjaGFy
KDUwMCkgREVGQVVMVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYHBvcnRgIGludCgxMSkg
Tk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBQUklNQVJZIEtFWSAoYHBvcnRgKSwKKwkJ
ICAgICAgICAgICAgICAgICAgIEtFWSBgdXNlZF9wb3J0c19zZXNzaW9uX2lkX2ZrZXlfaWR4YCAo
YHNlc3Npb25faWRgKSwKKwkJICAgICAgICAgICAgICAgICAgIENPTlNUUkFJTlQgYHVzZWRfcG9y
dHNfc2Vzc2lvbl9pZF9ma2V5YCBGT1JFSUdOIEtFWSAoYHNlc3Npb25faWRgKSBSRUZFUkVOQ0VT
IGBzZXNzaW9uc2AgKGBzZXNzaW9uX2lkYCkgT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIE5P
IEFDVElPTikKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3Ig
ZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgQ1JF
QVRFIFRBQkxFIGBtb3VudHNgICgKKwkJICAgICAgICAgICAgICAgICAgIGBpZGAgaW50KDExKSBO
T1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwKKwkJICAgICAgICAgICAgICAgICAgIGBzZXNzaW9uX2lk
YCB2YXJjaGFyKDUwMCkgREVGQVVMVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYHBhdGhg
IHZhcmNoYXIoNTEyKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBjbGllbnRgIHZh
cmNoYXIoMjApIE5PVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBp
ZGApLAorCQkgICAgICAgICAgICAgICAgICAgVU5JUVVFIEtFWSBgbW91bnRzX3BrZXlgIChgcGF0
aGAsYGNsaWVudGApLAorCQkgICAgICAgICAgICAgICAgICAgS0VZIGBtb3VudHNfc2Vzc2lvbl9p
ZF9ma2V5X2lkeGAgKGBzZXNzaW9uX2lkYCksCisJCSAgICAgICAgICAgICAgICAgICBDT05TVFJB
SU5UIGBtb3VudHNfc2Vzc2lvbl9pZF9ma2V5YCBGT1JFSUdOIEtFWSAoYHNlc3Npb25faWRgKSBS
RUZFUkVOQ0VTIGBzZXNzaW9uc2AgKGBzZXNzaW9uX2lkYCkgT04gVVBEQVRFIE5PIEFDVElPTikK
KwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQor
CQkkc3RoPSRkYmgtPnByZXBhcmUoIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OICogVE8gYCR4Mmdv
YWRtaW5gQGAkdW5ldGAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJJHN0aC0+Zmlu
aXNoKCk7CisJCXVuZGVmICRkYmg7CisJfQorCQorCXN1YiBteV9jcmVhdGVfZGF0YWJhc2UKKwl7
CisJCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9bXlzcWw7aG9zdD0k
aG9zdDtwb3J0PSRwb3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3MiLHtSYWlzZUVycm9yID0+
IDF9KSBvciBkaWUgJF87CisJCSNkcm9wIGRiIGlmIGV4aXN0cworCQlteSAkc3RoPSRkYmgtPnBy
ZXBhcmUoIkRST1AgREFUQUJBU0UgSUYgRVhJU1RTIGAkZGJgIik7CisJCSRzdGgtPmV4ZWN1dGUo
KTsKKwkJI2Ryb3AgeDJnb2FkbWluCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBVU0VSIElG
IEVYSVNUUyBgJHgyZ29hZG1pbmBAYCR1bmV0YCIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSNj
cmVhdGUgZGIKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJDUkVBVEUgREFUQUJBU0UgSUYgTk9UIEVY
SVNUUyBgJGRiYCIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQkjY3JlYXRlIHgyZ29h
ZG1pbgorCQkkc3RoPSRkYmgtPnByZXBhcmUoIkNSRUFURSBVU0VSIGAkeDJnb2FkbWluYEBgJHVu
ZXRgIElERU5USUZJRUQgQlkgJyR4MmdvYWRtaW5wYXNzJyIpOworCQkkc3RoLT5leGVjdXRlKCkg
b3IgZGllOworCQkjc2F2ZSB4MmdvYWRtaW4gcGFzc3dvcmQKKwkJb3BlbiAoRkwsIj4gL2V0Yy94
MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3gyZ29hZG1pbiAiKSBvciBkaWUgIkNhbid0IHdyaXRlIHBh
c3N3b3JkIGZpbGUgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3gyZ29hZG1pbiI7CisJCXBy
aW50IEZMICR4MmdvYWRtaW5wYXNzOworCQljbG9zZShGTCk7CisJCSRzdGgtPmZpbmlzaCgpOwor
CQl1bmRlZiAkZGJoOwogCX0KIH0KIAotc3ViIGFkZF91c2VyKCkKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjIFBvc3RncmVTUUwgQmFja2VuZAorIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCitpZiAoJENvbmZpZy0+cGFyYW0oImJhY2tlbmQiKSBlcSAncG9z
dGdyZXMnKQogewotCW15ICR1c2VyPXNoaWZ0OwotCW15ICgkbmFtZSwgJHBhc3MsICR1aWQsICRw
Z2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2NvcywgJGRpciwgJHNoZWxsLCAkZXhwaXJlKSA9IGdl
dHB3bmFtKCR1c2VyKTsKLQlpZiAoISAkbmFtZSkKKwlteSAkaG9zdD0kQ29uZmlnLT5wYXJhbSgi
cG9zdGdyZXMuaG9zdCIpOworCW15ICRwb3J0PSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5wb3J0
Iik7CisJbXkgJHNzbG1vZGU9JENvbmZpZy0+cGFyYW0oInBvc3RncmVzLnNzbCIpOworCWlmICgh
JHNzbG1vZGUpCiAJewotCQlwcmludCAiQ2Fubm90IGZpbmQgdXNlciAoJHVzZXIpXG4iOwotCQly
ZXR1cm47Ci0JfSBlbHNpZiAoJG5hbWUgZXEgInJvb3QiKSB7Ci0JCXByaW50ICJUaGUgc3VwZXIt
dXNlciBcInJvb3RcIiBpcyBub3QgYWxsb3dlZCB0byB1c2UgWDJHb1xuIjsKLQkJcmV0dXJuOwor
CQkkc3NsbW9kZT0icHJlZmVyIjsKIAl9Ci0JJHBhc3M9YHB3Z2VuIDggMWA7Ci0JY2hvbXAoJHBh
c3MpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04g
c2Vzc2lvbnMsIHVzZWRfcG9ydHMsIG1vdW50cyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOwot
CSRzdGgtPntXYXJufT0wOwotCSRzdGgtPntQcmludEVycm9yfT0wOwotCSRzdGgtPmV4ZWN1dGUo
KTsKLQotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNl
c3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBzZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgRlJPTSBc
IngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3RoLT57V2Fybn09MDsKLQkkc3RoLT57UHJpbnRFcnJv
cn09MDsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIkRST1Ag
T1dORUQgQlkgXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+e1dhcm59PTA7Ci0JJHN0aC0+
e1ByaW50RXJyb3J9PTA7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJl
KCJkcm9wIFVTRVIgaWYgZXhpc3RzIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPntXYXJu
fT0wOwotCSRzdGgtPntQcmludEVycm9yfT0wOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCXByaW50
ICgiY3JlYXRlIERCIHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKLQkkc3RoPSRkYmgtPnBy
ZXBhcmUoImNyZWF0ZSBVU0VSIFwieDJnb3VzZXJfJHVzZXJcIiBXSVRIIEVOQ1JZUFRFRCBQQVNT
V09SRCAnJHBhc3MnIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJl
KCJHUkFOVCBJTlNFUlQsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zLCB1c2VkX3BvcnRzLCBt
b3VudHMgVE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0
aD0kZGJoLT5wcmVwYXJlKCJHUkFOVCBTRUxFQ1QgT04gdXNlZF9wb3J0cyBUTyBcIngyZ291c2Vy
XyR1c2VyXCIiKTsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIkdS
QU5UIFNFTEVDVCwgVVBEQVRFLCBERUxFVEUgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcs
IHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBUTyBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3Ro
LT5leGVjdXRlKCk7Ci0JJHN0aC0+ZmluaXNoKCk7Ci0KLQlpZiAoISAtZCAiJGRpci8ueDJnbyIg
KQorCW15ICRkYmFkbWluPSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5kYmFkbWluIik7CisJbXkg
JHgyZ29hZG1pbj0ieDJnb2RidXNlciI7CisJbXkgJHgyZ29hZG1pbnBhc3M9YHB3Z2VuIDggMWA7
CisJY2hvbXAgKCR4MmdvYWRtaW5wYXNzKTsKKwlteSAkZGI9IngyZ29fc2Vzc2lvbnMiOworCQor
CWlmICghJGhvc3QpCiAJewotCQkJaWYgKCBkZWZpbmVkICgmRmlsZTo6UGF0aDo6bWFrZV9wYXRo
KSApCi0JCQl7Ci0JCQkJRmlsZTo6UGF0aDo6bWFrZV9wYXRoKCIkZGlyLy54MmdvIik7Ci0JCQl9
Ci0JCQllbHNpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjpta3BhdGgpICkKLQkJCXsKLQkJCQlG
aWxlOjpQYXRoOjpta3BhdGgoIiRkaXIvLngyZ28iKTsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJ
CQlkaWUgIlVuYWJsZSB0byBjcmVhdGUgZm9sZGVycyB3aXRoIEZpbGU6OlBhdGgiOwotCQkJfQor
CQkkaG9zdD0nbG9jYWxob3N0JzsKIAl9Ci0KLQkjc2F2ZSB1c2VyIHBhc3N3b3JkCi0Jb3BlbiAo
RkwsIj4gJGRpci8ueDJnby9zcWxwYXNzIikgb3IgZGllICJDYW4ndCBvcGVuIHBhc3N3b3JkIGZp
bGUgJGRpci8ueDJnby9zcWxwYXNzIjsKLQlwcmludCBGTCAkcGFzczsKKwlpZiAoISRwb3J0KQor
CXsKKwkJJHBvcnQ9JzU0MzInOworCX0KKwlpZiAoISRkYmFkbWluKQorCXsKKwkJJGRiYWRtaW49
J3Bvc3RncmVzJzsKKwl9CisJCisJb3BlbiAoRkwsIjwgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dv
cmRzL3BnYWRtaW4gIikgb3IgZGllICJDYW4ndCByZWFkIHBhc3N3b3JkIGZpbGUgL2V0Yy94Mmdv
L3gyZ29zcWwvcGFzc3dvcmRzL3BnYWRtaW4iOworCW15ICRkYmFkbWlucGFzcz08Rkw+OwogCWNs
b3NlKEZMKTsKLQljaG1vZCgwNzAwLCIkZGlyLy54MmdvIik7Ci0JY2hvd24oJHVpZCwkcGdpZCwi
JGRpci8ueDJnbyIpOwotCWNobW9kKDA2MDAsIiRkaXIvLngyZ28vc3FscGFzcyIpOwotCWNob3du
KCR1aWQsJHBnaWQsIiRkaXIvLngyZ28vc3FscGFzcyIpOwotfQotCi1zdWIgY3JlYXRlX3RhYmxl
cygpCi17Ci0JJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7
cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIs
e0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIgot
CSAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgc2Vzc2lvbnMoCi0JICAgICAgICAg
ICAgICAgICAgICAgIHNlc3Npb25faWQgdGV4dCBwcmltYXJ5IGtleSwKLQkgICAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheSBpbnRlZ2VyIG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICAg
ICB1bmFtZSB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGV4
dCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgICAgY2xpZW50IGluZXQsCi0JICAgICAg
ICAgICAgICAgICAgICAgIHN0YXR1cyBjaGFyKDEpIG5vdCBudWxsIGRlZmF1bHQgJ1InLAotCSAg
ICAgICAgICAgICAgICAgICAgICBpbml0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxsIGRlZmF1bHQg
bm93KCksCi0JICAgICAgICAgICAgICAgICAgICAgIGxhc3RfdGltZSB0aW1lc3RhbXAgbm90IG51
bGwgZGVmYXVsdCBub3coKSwKLQkgICAgICAgICAgICAgICAgICAgICAgY29va2llIGNoYXIoMzMp
LAotCSAgICAgICAgICAgICAgICAgICAgICBhZ2VudF9waWQgaW50LAotCSAgICAgICAgICAgICAg
ICAgICAgICBncl9wb3J0IGludCwKLQkgICAgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydCBp
bnQsCi0JICAgICAgICAgICAgICAgICAgICAgIGZzX3BvcnQgaW50LAotCSAgICAgICAgICAgICAg
ICAgICAgICB0ZWtpY3RybF9wb3J0IGludCwKLQkgICAgICAgICAgICAgICAgICAgICAgdGVraWRh
dGFfcG9ydCBpbnQsCi0JICAgICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4dCBOT1Qg
TlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKLQkgICAgICAgICAgICAgICAgICAgICAgdW5pcXVl
KGRpc3BsYXkpKQotCSAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkg
b3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3Jl
YXRlIFZJRVcgc2Vzc2lvbnNfdmlldyBhcwotCSAgICAgICAgICAgICAgICAgICBTRUxFQ1QKLQkg
ICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIs
IHN0YXR1cywgaW5pdF90aW1lLCBjb29raWUsIGNsaWVudCwgZ3JfcG9ydCwKLQkgICAgICAgICAg
ICAgICAgICAgc291bmRfcG9ydCwgbGFzdF90aW1lLCB1bmFtZSwgZnNfcG9ydCwgdGVraWN0cmxf
cG9ydCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCi0JICAgICAgICAgICAgICAgICAgIHdo
ZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0J
JHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZSBWSUVXIHNlcnZlcnNfdmlldyBhcwotCSAgICAgICAgICAgICAg
ICAgICBTRUxFQ1QKLQkgICAgICAgICAgICAgICAgICAgc2VydmVyLCBkaXNwbGF5LCBzdGF0dXMg
ZnJvbSBzZXNzaW9ucwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkg
b3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3Jl
YXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc19wcml2IEFTIE9OIFVQREFURQotCSAgICAg
ICAgICAgICAgICAgICBUTyBzZXNzaW9ucyB3aGVyZSAoT0xELmNyZWF0b3JfaWQgPD4gY3VycmVu
dF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IE5FVy5jcmVhdG9yX2lkKSBhbmQgY3VycmVudF91
c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJ
TkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQot
CSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBs
YWNlIFJVTEUgaW5zZXJ0X3Nlc3NfcHJpdiBBUyBPTiBJTlNFUlQKLQkgICAgICAgICAgICAgICAg
ICAgVE8gc2Vzc2lvbnMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBj
dXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElOU1RF
QUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3Ig
ZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRl
IG9yIHJlcGxhY2UgUlVMRSBkZWxldGVfc2Vzc19wcml2IEFTIE9OIERFTEVURQotCSAgICAgICAg
ICAgICAgICAgICBUTyBzZXNzaW9ucyB3aGVyZSBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3Vz
ZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAgICAgICAg
RE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1
dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAg
ICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9zZXNzX3ZpZXcgQVMgT04gVVBEQVRFCi0J
ICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAotCSAgICAgICAg
ICAgICAgICAgICB1cGRhdGUgc2Vzc2lvbnMgc2V0Ci0JICAgICAgICAgICAgICAgICAgIHN0YXR1
cz1ORVcuc3RhdHVzLAotCSAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGlt
ZSwKLQkgICAgICAgICAgICAgICAgICAgY29va2llPU5FVy5jb29raWUsCi0JICAgICAgICAgICAg
ICAgICAgIGFnZW50X3BpZD1ORVcuYWdlbnRfcGlkLAotCSAgICAgICAgICAgICAgICAgICBjbGll
bnQ9TkVXLmNsaWVudCwKLQkgICAgICAgICAgICAgICAgICAgZ3JfcG9ydD1ORVcuZ3JfcG9ydCwK
LQkgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydD1ORVcuc291bmRfcG9ydCwKLQkgICAgICAg
ICAgICAgICAgICAgZnNfcG9ydD1ORVcuZnNfcG9ydCwKLQkgICAgICAgICAgICAgICAgICAgdGVr
aWN0cmxfcG9ydD1ORVcudGVraWN0cmxfcG9ydCwKLQkgICAgICAgICAgICAgICAgICAgdGVraWRh
dGFfcG9ydD1ORVcudGVraWRhdGFfcG9ydAotCSAgICAgICAgICAgICAgICAgICB3aGVyZSBzZXNz
aW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlcgotCSAgICAg
ICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJo
LT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRhYmxlIG1lc3NhZ2VzKG1l
c3NfaWQgdmFyY2hhcigyMCkgcHJpbWFyeSBrZXksIG1lc3NhZ2UgdGV4dCkKLQkgICAgICAgICAg
ICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJl
cGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSB1c2VyX21lc3NhZ2VzKAot
CSAgICAgICAgICAgICAgICAgICBtZXNzX2lkIHRleHQgbm90IG51bGwsCi0JICAgICAgICAgICAg
ICAgICAgIHVuYW1lIHRleHQgbm90IG51bGwpCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRz
dGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAg
ICAgICAgICAgICBjcmVhdGUgdGFibGUgdXNlZF9wb3J0cygKLQkgICAgICAgICAgICAgICAgICAg
c2VydmVyIHRleHQgbm90IG51bGwsCi0JICAgICAgICAgICAgICAgICAgIHNlc3Npb25faWQgdGV4
dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSBjYXNjYWRlLAotCSAgICAgICAgICAgICAg
ICAgICBjcmVhdG9yX2lkIHRleHQgTk9UIE5VTEwgZGVmYXVsdCBjdXJyZW50X3VzZXIsCi0JICAg
ICAgICAgICAgICAgICAgIHBvcnQgaW50ZWdlciBwcmltYXJ5IGtleSkKLQkgICAgICAgICAgICAg
ICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFy
ZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBWSUVXIHBvcnRzX3ZpZXcgYXMKLQkgICAg
ICAgICAgICAgICAgICAgU0VMRUNUCi0JICAgICAgICAgICAgICAgICAgIHNlcnZlciwgcG9ydCBm
cm9tIHVzZWRfcG9ydHMKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgp
IG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZSBvciByZXBsYWNlIFJVTEUgaW5zZXJ0X3BvcnRfcHJpdiBBUyBPTiBJTlNFUlQKLQkgICAg
ICAgICAgICAgICAgICAgVE8gdXNlZF9wb3J0cyB3aGVyZSBORVcuY3JlYXRvcl9pZCA8PiBjdXJy
ZW50X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAg
ICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgt
PmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAg
ICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9wb3J0X3ByaXYgQVMgT04gVVBE
QVRFCi0JICAgICAgICAgICAgICAgICAgIFRPIHVzZWRfcG9ydHMgd2hlcmUgKE5FVy5jcmVhdG9y
X2lkIDw+IGN1cnJlbnRfdXNlciBvciBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIpIGFu
ZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElO
U1RFQUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkg
b3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3Jl
YXRlIG9yIHJlcGxhY2UgUlVMRSBkZWxldGVfcG9ydF9wcml2IEFTIE9OIERFTEVURQotCSAgICAg
ICAgICAgICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJl
bnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAg
ICAgICBETyBJTlNURUFEIE5PVEhJTkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+
ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZSB0YWJsZSBtb3VudHMoCi0JICAgICAgICAgICAgICAgICAgIHNlc3Npb25f
aWQgdGV4dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSByZXN0cmljdCwKLQkgICAgICAg
ICAgICAgICAgICAgcGF0aCB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICBjbGll
bnQgaW5ldCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9pZCB0ZXh0IE5P
VCBOVUxMIGRlZmF1bHQgY3VycmVudF91c2VyLAotCSAgICAgICAgICAgICAgICAgICBwcmltYXJ5
IGtleShwYXRoLGNsaWVudCkpCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1
dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAg
ICBjcmVhdGUgVklFVyBtb3VudHNfdmlldyBhcwotCSAgICAgICAgICAgICAgICAgICBTRUxFQ1QK
LQkgICAgICAgICAgICAgICAgICAgY2xpZW50LHBhdGgsIHNlc3Npb25faWQgZnJvbSBtb3VudHMK
LQkgICAgICAgICAgICAgICAgICAgd2hlcmUgY3JlYXRvcl9pZCA9IGN1cnJlbnRfdXNlcgotCSAg
ICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0k
ZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVM
RSBkZWxldGVfbW91bnRzX3ZpZXcgQVMgT04gREVMRVRFCi0JICAgICAgICAgICAgICAgICAgIFRP
IG1vdW50c192aWV3IERPIElOU1RFQUQKLQkgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20g
bW91bnRzCi0JICAgICAgICAgICAgICAgICAgIHdoZXJlIHNlc3Npb25faWQ9T0xELnNlc3Npb25f
aWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2VyIGFuZCBwYXRoPU9MRC5wYXRoCi0JICAgICAg
ICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgt
PnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIGlu
c2VydF9tb3VudF9wcml2IEFTIE9OIElOU0VSVAotCSAgICAgICAgICAgICAgICAgICBUTyBtb3Vu
dHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIg
PD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQgTk9USElORwot
CSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0
aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2Ug
UlVMRSB1cGRhdGVfbW91bnRfcHJpdiBBUyBPTiBVUERBVEUKLQkgICAgICAgICAgICAgICAgICAg
VE8gbW91bnRzIHdoZXJlIChORVcuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNy
ZWF0b3JfaWQgPD4gY3VycmVudF91c2VyKSBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWlu
JwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKLQkgICAgICAgICAgICAg
ICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFy
ZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgZGVsZXRlX21v
dW50X3ByaXYgQVMgT04gREVMRVRFCi0JICAgICAgICAgICAgICAgICAgIFRPIG1vdW50cyB3aGVy
ZSBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgy
Z29hZG1pbicKLQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAg
ICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgt
PnByZXBhcmUoIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zLCBtZXNzYWdlcywgdXNl
cl9tZXNzYWdlcywgdXNlZF9wb3J0cywgbW91bnRzIFRPICR4MmdvYWRtaW4iKTsKLQkkc3RoLT5l
eGVjdXRlKCkgb3IgZGllOwotCSRzdGgtPmZpbmlzaCgpOworCWNob21wKCRkYmFkbWlucGFzcyk7
CisJCisJaWYgKCR1cGRhdGVkYikKKwl7CisJCSMgY2hlY2sgaWYgdGhlIERCIGFscmVhZHkgZXhp
c3RzLCBpZiBub3QsIGNyZWF0ZSBpdC4uLgorCQlteSAkZGJoOworCQl1bnRpbCAoCisJCQkkZGJo
ID0gREJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7
c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0
ID0+IDEsIFJhaXNlRXJyb3IgPT4gMCwgUHJpbnRFcnJvciA9PiAwfSkKKwkJKSB7CisJCQkkY3Jl
YXRlZGIgPSAxOworCQkJbGFzdDsKKwkJfTsKKwkJaWYgKCEkY3JlYXRlZGIpIHsKKwkJCSRkYmgg
PSBEQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtz
c2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQg
PT4gMX0pOworCQkJaWYgKCRkYmgpIHsKKwkJCQlteSAkdXBkYXRlX3ZpZXdzX25fcnVsZXMgPSAw
OworCQkJCW15ICRzdGhfdGVraWN0cmw7CisJCQkJbXkgJHN0aF90ZWtpZGF0YTsKKwkJCQlteSAk
c3RoX3VwZGF0ZTsKKwkJCQl0cnkgeworCQkJCQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFy
ZSgiCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCB0ZWtpY3RybF9w
b3J0IGZyb20gc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7
CisJCQkJCSRzdGhfdGVraWN0cmwtPmV4ZWN1dGUoKTsKKwkJCQl9IGNhdGNoIHsKKwkJCQkJcHJp
bnQgIkFERElORzogdGVraWN0cmxfcG9ydCBjb2x1bW4gdG8gdGFibGUgc2Vzc2lvbnNcbiI7CisJ
CQkJCSRzdGhfdGVraWN0cmwgPSAkZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtpY3RybF9wb3J0IGludAorCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtpY3RybC0+ZXhlY3V0ZSgp
IG9yIGRpZTsKKwkJCQkJJHN0aF90ZWtpY3RybC0+ZmluaXNoKCk7CisJCQkJCSR1cGRhdGVfdmll
d3Nfbl9ydWxlcyA9IDE7CisJCQkJfTsKKwkJCQl0cnkgeworCQkJCQkkc3RoX3Rla2lkYXRhID0g
JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVj
dCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWRhdGEtPmV4ZWN1dGUoKTsKKwkJCQl9IGNhdGNo
IHsKKwkJCQkJcHJpbnQgIkFERElORzogdGVraWRhdGFfcG9ydCBjb2x1bW4gdG8gdGFibGUgc2Vz
c2lvbnNcbiI7CisJCQkJCSRzdGhfdGVraWRhdGE9JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbHRlciB0YWJsZSBzZXNzaW9ucworCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtpZGF0YV9wb3J0IGludAorCQkJCQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWRhdGEtPmV4ZWN1
dGUoKSBvciBkaWU7CisJCQkJCSRzdGhfdGVraWRhdGEtPmZpbmlzaCgpOworCQkJCQkkdXBkYXRl
X3ZpZXdzX25fcnVsZXMgPSAxOworCQkJCX07CisJCisJCQkJaWYgKCR1cGRhdGVfdmlld3Nfbl9y
dWxlcykKKwkJCQl7CisJCQkJCXByaW50ICJVUERBVElORyBWSUVXOiBzZXNzaW9uc192aWV3XG4i
OworCQkJCQkkc3RoX3VwZGF0ZT0kZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBWSUVXIHNlc3Npb25zX3ZpZXcgYXMKKwkJCQkJ
ICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QKKwkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLCBp
bml0X3RpbWUsIGNvb2tpZSwgY2xpZW50LCBncl9wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdW5kX3BvcnQsIGxhc3RfdGltZSwgdW5hbWUsIGZzX3BvcnQsIHRla2ljdHJs
X3BvcnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKKwkJCQkJICAgICAgICAg
ICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF91cGRhdGUtPmV4ZWN1dGUoKSBvciBkaWU7
CisJCQkJCXByaW50ICJVUERBVElORyBSVUxFOiB1cGRhdGVfc2Vzc192aWV3XG4iOworCQkJCQkk
c3RoX3VwZGF0ZT0kZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9zZXNzX3ZpZXcgQVMgT04gVVBEQVRFCisJ
CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgVE8gc2Vzc2lvbnNfdmlldyBETyBJTlNURUFE
CisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIHNlc3Npb25zIHNldAorCQkJ
CQkgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz1ORVcuc3RhdHVzLAorCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhc3RfdGltZT1ORVcubGFzdF90aW1lLAorCQkJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZT1ORVcuY29va2llLAorCQkJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFnZW50X3BpZD1ORVcuYWdlbnRfcGlkLAorCQkJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsaWVudD1ORVcuY2xpZW50LAorCQkJCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdyX3BvcnQ9TkVXLmdyX3BvcnQsCisJCQkJCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291bmRfcG9ydD1ORVcuc291bmRfcG9ydCwKKwkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAgICBmc19wb3J0PU5FVy5mc19wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRla2ljdHJsX3BvcnQ9TkVXLnRla2ljdHJsX3BvcnQsCisJCQkJCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVraWRhdGFfcG9ydD1ORVcudGVraWRhdGFfcG9ydAorCQkJCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoZXJlIHNlc3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNy
ZWF0b3JfaWQ9Y3VycmVudF91c2VyCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIik7
CisJCQkJCSRzdGhfdXBkYXRlLT5leGVjdXRlKCkgb3IgZGllOworCQkJCQkkc3RoX3VwZGF0ZS0+
ZmluaXNoKCk7CisJCQkJfQorCQkJfQorCQkJaWYgKCRkYmgpIHsKKwkJCQl1bmRlZiAkZGJoOwor
CQkJfQorCQkJZXhpdCgwKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ICJObyBzZXNzaW9uIERCIGZv
dW5kLiBVc2UgLS1jcmVhdGVkYiBpbnN0ZWFkIG9mIC0tdXBkYXRlZGIuXG4iOworCQl9CisJfQor
CQorCWlmICgkY3JlYXRlZGIpCisJeworCQljcmVhdGVfZGF0YWJhc2UoKTsKKwkJY3JlYXRlX3Rh
YmxlcygpOworCQlleGl0KDApOworCX0KKwkKKwlpZiAoJGxpc3R1c2VycykKKwl7CisJCWxpc3Rf
dXNlcnMoKTsKKwkJZXhpdCgwKTsKKwl9CisJCisJbXkgJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQ
ZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRk
YmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKKwlp
ZiAoJGFkZHVzZXIpCisJeworCQlhZGRfdXNlcigkYWRkdXNlcik7CisJfQorCQorCWlmICgkYWRk
Z3JvdXApCisJeworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdy
bmFtKCAkYWRkZ3JvdXApOworCQlteSBAZ3JwX21lbWJlcnM9c3BsaXQoJyAnLCRtZW1iZXJzKTsK
KwkJZm9yZWFjaCAoQGdycF9tZW1iZXJzKQorCQl7CisJCQljaG9tcCgkXyk7CisJCQlhZGRfdXNl
cigkXyk7CisJCX0KKwl9CisJCisJaWYgKCRybXVzZXIpCisJeworCQlybV91c2VyKCRybXVzZXIp
OworCX0KKwkKKwlpZiAoJHJtZ3JvdXApCisJeworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQs
ICRtZW1iZXJzKSA9IGdldGdybmFtKCAkcm1ncm91cCk7CisJCW15IEBncnBfbWVtYmVycz1zcGxp
dCgnICcsJG1lbWJlcnMpOworCQlmb3JlYWNoIChAZ3JwX21lbWJlcnMpCisJCXsKKwkJCWNob21w
KCRfKTsKKwkJCXJtX3VzZXIoJF8pOworCQl9CisJfQogCXVuZGVmICRkYmg7Ci19Ci0KLXN1YiBj
cmVhdGVfZGF0YWJhc2UKLXsKLQlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT1w
b3N0Z3Jlcztob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1p
biIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87Ci0JI2Ryb3Ag
ZGIgaWYgZXhpc3RzCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIGRhdGFiYXNlIGlmIGV4
aXN0cyB4MmdvX3Nlc3Npb25zIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCSNkcm9wIHgyZ29hZG1p
bgotCSRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCB1c2VyIGlmIGV4aXN0cyAkeDJnb2FkbWluIik7
Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCSNjcmVhdGUgZGIKLQkkc3RoPSRkYmgtPnByZXBhcmUoImNy
ZWF0ZSBkYXRhYmFzZSAkZGIiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCSNjcmVhdGUg
eDJnb2FkbWluCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVhdGUgVVNFUiAkeDJnb2FkbWluIFdJ
VEggRU5DUllQVEVEIFBBU1NXT1JEICckeDJnb2FkbWlucGFzcyciKTsKLQkkc3RoLT5leGVjdXRl
KCkgb3IgZGllOwotCSNzYXZlIHgyZ29hZG1pbiBwYXNzd29yZAotCW9wZW4gKEZMLCI+IC9ldGMv
eDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4gIikgb3IgZGllICJDYW4ndCB3cml0ZSBw
YXNzd29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4iOwotCXBy
aW50IEZMICR4MmdvYWRtaW5wYXNzOwotCWNsb3NlKEZMKTsKLQkkc3RoLT5maW5pc2goKTsKLQl1
bmRlZiAkZGJoOworCQorCXN1YiBsaXN0X3VzZXJzKCkKKwl7CisJCW15ICRkYmg9REJJLT5jb25u
ZWN0KCJkYmk6UGc6ZGJuYW1lPXBvc3RncmVzO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2Rl
PSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0p
IG9yIGRpZSAkXzsKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3Qgcm9sbmFtZSBmcm9t
IHBnX3JvbGVzIHdoZXJlIHJvbG5hbWUgbGlrZSAneDJnb3VzZXJfJSciKTsKKwkJJHN0aC0+ZXhl
Y3V0ZSgpb3IgZGllOworCQlwcmludGYgKCIlLTIwcyBEQiB1c2VyXG4iLCJVTklYIHVzZXIiKTsK
KwkJcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKwkJ
bXkgQGRhdGE7CisJCXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCQl7CisJ
CQlAZGF0YVswXT1+cy94MmdvdXNlcl8vLzsKKwkJCXByaW50ZiAoIiUtMjBzIHgyZ291c2VyX0Bk
YXRhWzBdXG4iLEBkYXRhWzBdKTsKKwkJfQorCQkkc3RoLT5maW5pc2goKTsKKwkJdW5kZWYgJGRi
aDsKKwl9CisJCisJc3ViIHJtX3VzZXIoKQorCXsKKwkJbXkgJHVzZXI9c2hpZnQ7CisJCisJCXBy
aW50ICgicm0gREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCQorCQlteSAkc3RoPSRk
YmgtPnByZXBhcmUoIlJFVk9LRSBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9ucywgdXNlZF9wb3J0
cywgbW91bnRzIEZST00gXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsK
KwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vz
c2lvbnNfdmlldywgbW91bnRzX3ZpZXcsIHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBGUk9NIFwi
eDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCW15ICRzdGg9JGRi
aC0+cHJlcGFyZSgiRFJPUCBPV05FRCBCWSBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+
ZXhlY3V0ZSgpOworCQorCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgVVNFUiBpZiBleGlz
dHMgXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkJJHN0aC0+Zmlu
aXNoKCk7CisJCisJCW15ICgkbmFtZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21t
ZW50LCAkZ2NvcywgJGRpciwgJHNoZWxsLCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKKwkJ
aWYgKCEgJHVpZCkKKwkJeworCQkJcmV0dXJuOworCQl9CisJCWlmICggLWUgIiRkaXIvLngyZ28v
c3FscGFzcyIgKQorCQl7CisJCQl1bmxpbmsoIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQl9CisJ
fQorCQorCXN1YiBhZGRfdXNlcigpCisJeworCQlteSAkdXNlcj1zaGlmdDsKKwkJbXkgKCRuYW1l
LCAkcGFzcywgJHVpZCwgJHBnaWQsICRxdW90YSwgJGNvbW1lbnQsICRnY29zLCAkZGlyLCAkc2hl
bGwsICRleHBpcmUpID0gZ2V0cHduYW0oJHVzZXIpOworCQlpZiAoISAkbmFtZSkKKwkJeworCQkJ
cHJpbnQgIkNhbm5vdCBmaW5kIHVzZXIgKCR1c2VyKVxuIjsKKwkJCXJldHVybjsKKwkJfSBlbHNp
ZiAoJG5hbWUgZXEgInJvb3QiKSB7CisJCQlwcmludCAiVGhlIHN1cGVyLXVzZXIgXCJyb290XCIg
aXMgbm90IGFsbG93ZWQgdG8gdXNlIFgyR29cbiI7CisJCQlyZXR1cm47CisJCX0KKwkJJHBhc3M9
YHB3Z2VuIDggMWA7CisJCWNob21wKCRwYXNzKTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJl
KCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnMsIHVzZWRfcG9ydHMsIG1vdW50cyBG
Uk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT57V2Fybn09MDsKKwkJJHN0aC0+e1By
aW50RXJyb3J9PTA7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVw
YXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcs
IHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkk
c3RoLT57V2Fybn09MDsKKwkJJHN0aC0+e1ByaW50RXJyb3J9PTA7CisJCSRzdGgtPmV4ZWN1dGUo
KTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJEUk9QIE9XTkVEIEJZIFwieDJnb3VzZXJf
JHVzZXJcIiIpOworCQkkc3RoLT57V2Fybn09MDsKKwkJJHN0aC0+e1ByaW50RXJyb3J9PTA7CisJ
CSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIFVTRVIgaWYg
ZXhpc3RzIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT57V2Fybn09MDsKKwkJJHN0aC0+
e1ByaW50RXJyb3J9PTA7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJcHJpbnQgKCJjcmVhdGUg
REIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCQkkc3RoPSRkYmgtPnByZXBhcmUoImNy
ZWF0ZSBVU0VSIFwieDJnb3VzZXJfJHVzZXJcIiBXSVRIIEVOQ1JZUFRFRCBQQVNTV09SRCAnJHBh
c3MnIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFO
VCBJTlNFUlQsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zLCB1c2VkX3BvcnRzLCBtb3VudHMg
VE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0k
ZGJoLT5wcmVwYXJlKCJHUkFOVCBTRUxFQ1QgT04gdXNlZF9wb3J0cyBUTyBcIngyZ291c2VyXyR1
c2VyXCIiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIkdS
QU5UIFNFTEVDVCwgVVBEQVRFLCBERUxFVEUgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcs
IHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBUTyBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0
aC0+ZXhlY3V0ZSgpOworCQkkc3RoLT5maW5pc2goKTsKKwkKKwkJaWYgKCEgLWQgIiRkaXIvLngy
Z28iICkKKwkJeworCQkJCWlmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1ha2VfcGF0aCkgKQor
CQkJCXsKKwkJCQkJRmlsZTo6UGF0aDo6bWFrZV9wYXRoKCIkZGlyLy54MmdvIik7CisJCQkJfQor
CQkJCWVsc2lmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1rcGF0aCkgKQorCQkJCXsKKwkJCQkJ
RmlsZTo6UGF0aDo6bWtwYXRoKCIkZGlyLy54MmdvIik7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7
CisJCQkJCWRpZSAiVW5hYmxlIHRvIGNyZWF0ZSBmb2xkZXJzIHdpdGggRmlsZTo6UGF0aCI7CisJ
CQkJfQorCQl9CisJCisJCSNzYXZlIHVzZXIgcGFzc3dvcmQKKwkJb3BlbiAoRkwsIj4gJGRpci8u
eDJnby9zcWxwYXNzIikgb3IgZGllICJDYW4ndCBvcGVuIHBhc3N3b3JkIGZpbGUgJGRpci8ueDJn
by9zcWxwYXNzIjsKKwkJcHJpbnQgRkwgJHBhc3M7CisJCWNsb3NlKEZMKTsKKwkJY2htb2QoMDcw
MCwiJGRpci8ueDJnbyIpOworCQljaG93bigkdWlkLCRwZ2lkLCIkZGlyLy54MmdvIik7CisJCWNo
bW9kKDA2MDAsIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQljaG93bigkdWlkLCRwZ2lkLCIkZGly
Ly54MmdvL3NxbHBhc3MiKTsKKwl9CisJCisJc3ViIGNyZWF0ZV90YWJsZXMoKQorCXsKKwkJJGRi
aD1EQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtz
c2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQg
PT4gMX0pIG9yIGRpZSAkXzsKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSBzZXNzaW9ucygKKwkJICAgICAgICAgICAgICAgICAg
ICAgIHNlc3Npb25faWQgdGV4dCBwcmltYXJ5IGtleSwKKwkJICAgICAgICAgICAgICAgICAgICAg
IGRpc3BsYXkgaW50ZWdlciBub3QgbnVsbCwKKwkJICAgICAgICAgICAgICAgICAgICAgIHVuYW1l
IHRleHQgbm90IG51bGwsCisJCSAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGV4dCBub3Qg
bnVsbCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCBpbmV0LAorCQkgICAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzIGNoYXIoMSkgbm90IG51bGwgZGVmYXVsdCAnUicsCisJCSAgICAg
ICAgICAgICAgICAgICAgICBpbml0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxsIGRlZmF1bHQgbm93
KCksCisJCSAgICAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxs
IGRlZmF1bHQgbm93KCksCisJCSAgICAgICAgICAgICAgICAgICAgICBjb29raWUgY2hhcigzMyks
CisJCSAgICAgICAgICAgICAgICAgICAgICBhZ2VudF9waWQgaW50LAorCQkgICAgICAgICAgICAg
ICAgICAgICAgZ3JfcG9ydCBpbnQsCisJCSAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wb3J0
IGludCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGZzX3BvcnQgaW50LAorCQkgICAgICAgICAg
ICAgICAgICAgICAgdGVraWN0cmxfcG9ydCBpbnQsCisJCSAgICAgICAgICAgICAgICAgICAgICB0
ZWtpZGF0YV9wb3J0IGludCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4
dCBOT1QgTlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKKwkJICAgICAgICAgICAgICAgICAgICAg
IHVuaXF1ZShkaXNwbGF5KSkKKwkJICAgICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5l
eGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAg
ICAgICAgICAgY3JlYXRlIFZJRVcgc2Vzc2lvbnNfdmlldyBhcworCQkgICAgICAgICAgICAgICAg
ICAgU0VMRUNUCisJCSAgICAgICAgICAgICAgICAgICBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRp
c3BsYXksIHNlcnZlciwgc3RhdHVzLCBpbml0X3RpbWUsIGNvb2tpZSwgY2xpZW50LCBncl9wb3J0
LAorCQkgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydCwgbGFzdF90aW1lLCB1bmFtZSwgZnNf
cG9ydCwgdGVraWN0cmxfcG9ydCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJCSAgICAg
ICAgICAgICAgICAgICB3aGVyZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCisJCSAgICAgICAg
ICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJo
LT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBWSUVXIHNlcnZlcnNfdmll
dyBhcworCQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCSAgICAgICAgICAgICAgICAgICBz
ZXJ2ZXIsIGRpc3BsYXksIHN0YXR1cyBmcm9tIHNlc3Npb25zCisJCSAgICAgICAgICAgICAgICAg
ICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJl
KCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nl
c3NfcHJpdiBBUyBPTiBVUERBVEUKKwkJICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zIHdo
ZXJlIChPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4g
TkVXLmNyZWF0b3JfaWQpIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAg
ICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIp
OworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgor
CQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSBpbnNlcnRfc2Vzc19w
cml2IEFTIE9OIElOU0VSVAorCQkgICAgICAgICAgICAgICAgICAgVE8gc2Vzc2lvbnMgd2hlcmUg
TkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4Mmdv
YWRtaW4nCisJCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAg
ICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRk
YmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVM
RSBkZWxldGVfc2Vzc19wcml2IEFTIE9OIERFTEVURQorCQkgICAgICAgICAgICAgICAgICAgVE8g
c2Vzc2lvbnMgd2hlcmUgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50
X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5P
VEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGll
OworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRl
IG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQorCQkgICAgICAg
ICAgICAgICAgICAgVE8gc2Vzc2lvbnNfdmlldyBETyBJTlNURUFECisJCSAgICAgICAgICAgICAg
ICAgICB1cGRhdGUgc2Vzc2lvbnMgc2V0CisJCSAgICAgICAgICAgICAgICAgICBzdGF0dXM9TkVX
LnN0YXR1cywKKwkJICAgICAgICAgICAgICAgICAgIGxhc3RfdGltZT1ORVcubGFzdF90aW1lLAor
CQkgICAgICAgICAgICAgICAgICAgY29va2llPU5FVy5jb29raWUsCisJCSAgICAgICAgICAgICAg
ICAgICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKKwkJICAgICAgICAgICAgICAgICAgIGNsaWVu
dD1ORVcuY2xpZW50LAorCQkgICAgICAgICAgICAgICAgICAgZ3JfcG9ydD1ORVcuZ3JfcG9ydCwK
KwkJICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQ9TkVXLnNvdW5kX3BvcnQsCisJCSAgICAg
ICAgICAgICAgICAgICBmc19wb3J0PU5FVy5mc19wb3J0LAorCQkgICAgICAgICAgICAgICAgICAg
dGVraWN0cmxfcG9ydD1ORVcudGVraWN0cmxfcG9ydCwKKwkJICAgICAgICAgICAgICAgICAgIHRl
a2lkYXRhX3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKKwkJICAgICAgICAgICAgICAgICAgIHdoZXJl
IHNlc3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2VyCisJ
CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ
JHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSBt
ZXNzYWdlcyhtZXNzX2lkIHZhcmNoYXIoMjApIHByaW1hcnkga2V5LCBtZXNzYWdlIHRleHQpCisJ
CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ
JHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSB1
c2VyX21lc3NhZ2VzKAorCQkgICAgICAgICAgICAgICAgICAgbWVzc19pZCB0ZXh0IG5vdCBudWxs
LAorCQkgICAgICAgICAgICAgICAgICAgdW5hbWUgdGV4dCBub3QgbnVsbCkKKwkJICAgICAgICAg
ICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgt
PnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRhYmxlIHVzZWRfcG9ydHMo
CisJCSAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGV4dCBub3QgbnVsbCwKKwkJICAgICAgICAg
ICAgICAgICAgIHNlc3Npb25faWQgdGV4dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSBj
YXNjYWRlLAorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9pZCB0ZXh0IE5PVCBOVUxMIGRl
ZmF1bHQgY3VycmVudF91c2VyLAorCQkgICAgICAgICAgICAgICAgICAgcG9ydCBpbnRlZ2VyIHBy
aW1hcnkga2V5KQorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBv
ciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBj
cmVhdGUgVklFVyBwb3J0c192aWV3IGFzCisJCSAgICAgICAgICAgICAgICAgICBTRUxFQ1QKKwkJ
ICAgICAgICAgICAgICAgICAgIHNlcnZlciwgcG9ydCBmcm9tIHVzZWRfcG9ydHMKKwkJICAgICAg
ICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRk
YmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVM
RSBpbnNlcnRfcG9ydF9wcml2IEFTIE9OIElOU0VSVAorCQkgICAgICAgICAgICAgICAgICAgVE8g
dXNlZF9wb3J0cyB3aGVyZSBORVcuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgYW5kIGN1cnJl
bnRfdXNlciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQg
Tk9USElORworCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBk
aWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVh
dGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9wb3J0X3ByaXYgQVMgT04gVVBEQVRFCisJCSAgICAg
ICAgICAgICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIChORVcuY3JlYXRvcl9pZCA8PiBjdXJy
ZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyKSBhbmQgY3VycmVudF91
c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RI
SU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsK
KwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv
ciByZXBsYWNlIFJVTEUgZGVsZXRlX3BvcnRfcHJpdiBBUyBPTiBERUxFVEUKKwkJICAgICAgICAg
ICAgICAgICAgIFRPIHVzZWRfcG9ydHMgd2hlcmUgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91
c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAgICAgICAg
ICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5l
eGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAg
ICAgICAgICAgY3JlYXRlIHRhYmxlIG1vdW50cygKKwkJICAgICAgICAgICAgICAgICAgIHNlc3Np
b25faWQgdGV4dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSByZXN0cmljdCwKKwkJICAg
ICAgICAgICAgICAgICAgIHBhdGggdGV4dCBub3QgbnVsbCwKKwkJICAgICAgICAgICAgICAgICAg
IGNsaWVudCBpbmV0IG5vdCBudWxsLAorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9pZCB0
ZXh0IE5PVCBOVUxMIGRlZmF1bHQgY3VycmVudF91c2VyLAorCQkgICAgICAgICAgICAgICAgICAg
cHJpbWFyeSBrZXkocGF0aCxjbGllbnQpKQorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRz
dGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAg
ICAgICAgICAgICAgICBjcmVhdGUgVklFVyBtb3VudHNfdmlldyBhcworCQkgICAgICAgICAgICAg
ICAgICAgU0VMRUNUCisJCSAgICAgICAgICAgICAgICAgICBjbGllbnQscGF0aCwgc2Vzc2lvbl9p
ZCBmcm9tIG1vdW50cworCQkgICAgICAgICAgICAgICAgICAgd2hlcmUgY3JlYXRvcl9pZCA9IGN1
cnJlbnRfdXNlcgorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBv
ciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBj
cmVhdGUgb3IgcmVwbGFjZSBSVUxFIGRlbGV0ZV9tb3VudHNfdmlldyBBUyBPTiBERUxFVEUKKwkJ
ICAgICAgICAgICAgICAgICAgIFRPIG1vdW50c192aWV3IERPIElOU1RFQUQKKwkJICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZSBmcm9tIG1vdW50cworCQkgICAgICAgICAgICAgICAgICAgd2hlcmUg
c2Vzc2lvbl9pZD1PTEQuc2Vzc2lvbl9pZCBhbmQgY3JlYXRvcl9pZD1jdXJyZW50X3VzZXIgYW5k
IHBhdGg9T0xELnBhdGgKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRl
KCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAg
ICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSBpbnNlcnRfbW91bnRfcHJpdiBBUyBPTiBJTlNFUlQK
KwkJICAgICAgICAgICAgICAgICAgIFRPIG1vdW50cyB3aGVyZSBORVcuY3JlYXRvcl9pZCA8PiBj
dXJyZW50X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAg
ICAgICAgICAgIERPIElOU1RFQUQgTk9USElORworCQkgICAgICAgICAgICAgICAgICAgIik7CisJ
CSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAg
ICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9tb3VudF9wcml2
IEFTIE9OIFVQREFURQorCQkgICAgICAgICAgICAgICAgICAgVE8gbW91bnRzIHdoZXJlIChORVcu
Y3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91
c2VyKSBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAg
ICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+
ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgZGVsZXRlX21vdW50X3ByaXYgQVMgT04g
REVMRVRFCisJCSAgICAgICAgICAgICAgICAgICBUTyBtb3VudHMgd2hlcmUgT0xELmNyZWF0b3Jf
aWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAg
ICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAg
ICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUo
IkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zLCBtZXNzYWdlcywgdXNlcl9tZXNzYWdl
cywgdXNlZF9wb3J0cywgbW91bnRzIFRPICR4MmdvYWRtaW4iKTsKKwkJJHN0aC0+ZXhlY3V0ZSgp
IG9yIGRpZTsKKwkJJHN0aC0+ZmluaXNoKCk7CisJCXVuZGVmICRkYmg7CisJfQorCQorCXN1YiBj
cmVhdGVfZGF0YWJhc2UKKwl7CisJCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1l
PXBvc3RncmVzO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFk
bWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKKwkJI2Ry
b3AgZGIgaWYgZXhpc3RzCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCBkYXRhYmFzZSBp
ZiBleGlzdHMgJGRiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkJI2Ryb3AgeDJnb2FkbWluCisJ
CSRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCB1c2VyIGlmIGV4aXN0cyAkeDJnb2FkbWluIik7CisJ
CSRzdGgtPmV4ZWN1dGUoKTsKKwkJI2NyZWF0ZSBkYgorCQkkc3RoPSRkYmgtPnByZXBhcmUoImNy
ZWF0ZSBkYXRhYmFzZSAkZGIiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJI2NyZWF0
ZSB4MmdvYWRtaW4KKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVhdGUgVVNFUiAkeDJnb2FkbWlu
IFdJVEggRU5DUllQVEVEIFBBU1NXT1JEICckeDJnb2FkbWlucGFzcyciKTsKKwkJJHN0aC0+ZXhl
Y3V0ZSgpIG9yIGRpZTsKKwkJI3NhdmUgeDJnb2FkbWluIHBhc3N3b3JkCisJCW9wZW4gKEZMLCI+
IC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4gIikgb3IgZGllICJDYW4ndCB3
cml0ZSBwYXNzd29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4i
OworCQlwcmludCBGTCAkeDJnb2FkbWlucGFzczsKKwkJY2xvc2UoRkwpOworCQkkc3RoLT5maW5p
c2goKTsKKwkJdW5kZWYgJGRiaDsKKwl9CiB9Cg==
------=_Part_23212334_788228192.1508519775114--

