delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2012/07/30/22:44:27

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:sender:date:x-google-sender-auth:message-id:subject
:from:to:content-type;
bh=9ug04qPEFhNjFZ2cxGzZE/ZJsReJKCtsnJt1OIUyg6A=;
b=ScqSF2g+8Ra1apt10EaqTJ9QxIoGZGR9kzpn0JAcF8BDHX7UGMtN2HSkQ7D8jAYDfM
DnwfH1LvqmH4HOZ4rJ2P7+6tXqFlSa1YNkaGorw9Wzeve2Mo3gR8Vet8NMUb5MrtEZBY
KSGIzhU0g0NEYqgerb+aObeNMPAh8wQk1RjzfLpHRVO+9WqErQKNvv+o1wzD5hZb+1Ug
oSd8oj0xDZDa+5Z7jPGmK13el9Ha0mwvB0h+Yw30CLZE4F1xfv7DMNUGyNPE5TJEoFsk
kUyOg81k+yYrhjRam7pYirA15UU+zZuEL7XSWToDeDuqAw/7GjUq3Eao4xp5DJgln0s3
tw5w==
MIME-Version: 1.0
Sender: silicon DOT on DOT inspiration AT gmail DOT com
Date: Tue, 31 Jul 2012 12:42:53 +1000
X-Google-Sender-Auth: kZvavB-GP0to8VxlkHnLJxRNudU
Message-ID: <CAKakQccB1G9rJWZc6WekqV8H0hA81j0RssMOUMGk4+_jKW6+0w@mail.gmail.com>
Subject: [geda-user] I've updated footgen to work with nanometer base units
From: Stephen Ecob <stephen DOT ecob AT sioi DOT com DOT au>
To: mail AT dlharmon DOT com, geda-user AT delorie DOT com
Reply-To: geda-user AT delorie DOT com

--f46d0407160b9866d604c6172244
Content-Type: text/plain; charset=ISO-8859-1

For those of you who use Darrell Harmon's very useful "footgen"
script, here's an updated version.
The changes are:

# Changed fundamental units from centimils to nanometers

# Changed flags from integers to strings (as per newer format)

# Changed a few hard coded distances from values such as
# 1000, 4000 or 3940 (centimils) to 1000000nm.  These hard
# coded distances are still ugly, but now at least they are
# metric ugly instead of imperial ugly

I haven't had time to carefully check all of the generated footprints,
only the ones I use.
Some of the footprints will be visibly different because of the
changes to hard coded distances in the script.
It would be nice if hard coded distances were removed, if you are
affected by the changes to them then perhaps you can tackle that task:)

Stephen Ecob
Silicon On Inspiration
Sydney Australia
www.sioi.com.au
Spartan 6 LX75 with 2GB DDR3 DIMM for $375:
http://www.sioi.com.au/shop/product_info.php/cPath/24/products_id/56

--f46d0407160b9866d604c6172244
Content-Type: application/octet-stream; name="footgen.py"
Content-Disposition: attachment; filename="footgen.py"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h5adqkht0

IyEvdXNyL2Jpbi9weXRob24KIyBwYWNrYWdlLnB5CiMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcg
RGFycmVsbCBIYXJtb24KIyBHZW5lcmF0ZXMgZm9vdHByaW50cyBmb3IgUENCIGZyb20gdGV4dCBk
ZXNjcmlwdGlvbgojIFRoZSBHUEwgYXBwbGllcyBvbmx5IHRvIHRoZSBweXRob24gc2NyaXB0cy4K
IyB0aGUgb3V0cHV0IG9mIHRoZSBwcm9ncmFtIGFuZCB0aGUgZm9vdHByaW50IGRlZmluaXRpb24g
ZmlsZXMKIyBhcmUgcHVibGljIGRvbWFpbgojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQoj
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZl
LCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCgojIEFkZGVkIGRpaCBwYXRjaCBmcm9tIERhdmlk
IENhcnIgLSA4LzI4LzIwMDUgRGFycmVsbCBIYXJtb24KCiMgMS82LzIwMDcKIyBCdWdmaXggZnJv
bSBEYXZpZCBDYXJyIHRvIGNvcnJlY3Qgcm93IGFuZCBjb2wgcmV2ZXJzYWwgaW4gQkdBIG9taXRi
YWxscwojIFNldmVyYWwgaW1wcm92ZW1lbnRzIHNlbnQgdG8gbWUgYnkgUGV0ZXIgQmF4ZW5kYWxl
LCB3aXRoIHNvbWUgbW9kaWZpY2F0aW9uCiMgYnkgRExIOiBTcXVhcmUgcGluIDEgb24gYWxsIHRo
cm91Z2ggaG9sZSwgb3B0aW9uYWwgaW5zaWRlIHNpbGtzY3JlZW4gb24KIyBTTyBwYXJ0cyB3aXRo
IGRpYWdvbmFsIGNvcm5lciBmb3IgcGluIDEsIHRvIGVuYWJsZSB1c2Ugc2lsa3N0eWxlID0gImlu
c2lkZSIsCiMgZGlzYWJsZWQgYnkgZGVmYXVsdCBvciB1c2Ugc2lsa3N0eWxlID0gIm5vbmUiCgoj
IDkvMjgvMjAwOAojIEFkZGVkIHBhdGNoIGJ5IERhdmlkIENhcnIgdG8gYWRkIHNpbGtzdHlsZT0i
Y29ybmVycyIgb3B0aW9uIG9uIHFmcAojIHNldCBzaWxrYm94d2lkdGggYW5kIHNpbGtib3hoZWln
aCBpZiB1c2luZyB0aGlzIHN0eWxlCgojIDkvMjgvMjAwOAojIEFkZGVkIHJlZmRlc3ggYW5kIHJl
ZmRlc3kgYXR0cmlidXRlcyB3aGljaCBhbGxvdyB0aGUgcmVmZXJlbmNlIGRlc2lnbmF0b3IgdG8g
YmUgcG9zaXRpb25lZCBhcyBkZXNpcmVkCiMgUHJldmlvdXNseSB0aGUgcmVmZXJlbmNlIGRlc2ln
bmF0b3Igd2FzIGxvY2F0ZWQgYXQgdGhlIG9yaWdpbi4gVGhpcyBpcyBzdGlsbCB0aGUgZGVmYXVs
dC4KCiMgOS8yOS8yMDA4CiMgQWxsb3cgbmVnYXRpdmUgbnVtYmVycyBpbiBmb290cHJpbnQgZGVm
aW5pdGlvbiBmaWxlCgojIDEwLzIyLzIwMDgKIyBhZGRlZCAic2tldyIgb3B0aW9uIHRvIFNPCiMg
dGFrZSBvdXQgZGVidWcgcHJpbnQgZm9yIGV4cGFuZGVkbGlzdAoKIyAyLzkvMjAwOSBETEgKIyBh
bGxvdyBleHBvc2VkIHBhZHMgb24gU08gcGFydHMKIyBhZGRlZCAicmVjdCIgb3B0aW9uCiMgaWYg
InJlY3QiIGlzIHNldCwgaXQgd2lsbCBjcmVhdGUgYSByZWN0YW5ndWxhciBleHBvc2VkIHBhZC4g
SXQgbXVzdCBiZSA+PSB0byB0aGUgZXAgdmFsdWUuCiMgSXQgc2V0cyB0aGUgaGVpZ2h0LCBhbmQg
aXMgb25seSBhdmFpbGFibGUgaW4gc28gYXQgdGhpcyB0aW1lLgoKIyAyLzI0LzIwMDkgRExICiMg
QWRkZWQgc3VwcG9ydCBmb3Igc2lsa2JveHdpZHRoIGFuZCBzaWxrYm94aGVpZ2h0IHRvIHNpcCwg
ZGlwCgojIDQvMjkvMjAwOQojIEFwcGxpZWQgYnVnZml4IHBhdGNoIGZvciBkaWggZnJvbSBMZXZl
bnRlIEtvdmFjcwojIEFwcGxpZWQgcGF0Y2ggYWRkaW5nIGRpaGYgKGRvdWJsZSByb3cgcmVjZXB0
YWNsZSkgZnJvbSBMZXZlbnRlIEtvdmFjcwoKIyAyMDEyMDczMSBTdGVwaGVuIEVjb2IKIyBDaGFu
Z2VkIGZ1bmRhbWVudGFsIHVuaXRzIGZyb20gY2VudGltaWxzIHRvIG5hbm9tZXRlcnMKIyBDaGFu
Z2VkIGZsYWdzIGZyb20gaW50ZWdlcnMgdG8gc3RyaW5ncyAoYXMgcGVyIG5ld2VyIGZvcm1hdCkK
IyBDaGFuZ2VkIGEgZmV3IGhhcmQgY29kZWQgZGlzdGFuY2VzIGZyb20gdmFsdWVzIHN1Y2ggYXMg
CiMgMTAwMCwgNDAwMCBvciAzOTQwIChjZW50aW1pbHMpIHRvIDEwMDAwMDBubS4gIFRoZXNlIGhh
cmQKIyBjb2RlZCBkaXN0YW5jZXMgYXJlIHN0aWxsIHVnbHksIGJ1dCBub3cgYXQgbGVhc3QgdGhl
eSBhcmUKIyBtZXRyaWMgdWdseSBpbnN0ZWFkIG9mIGltcGVyaWFsIHVnbHkKCiMgbGlzdCBvZiBh
dHRyaWJ1dGVzIHRvIGJlIGRlZmluZWQgaW4gZmlsZQpkZWYgZGVmYXR0cigpOgogICAgcmV0dXJu
IFtbImVsZW1lbnRkaXIiLCIiXSwKICAgICAgICAgICAgWyJwYXJ0IiwiIl0sXAogICAgICAgICAg
ICBbInR5cGUiLCIiXSxcCiAgICAgICAgICAgIFsicGluc2hpZ2giLCAwXSxcCiAgICAgICAgICAg
IFsicGlucyIsMF0sXAogICAgICAgICAgICBbInJvd3MiLDBdLFwKICAgICAgICAgICAgWyJjb2xz
IiwwXSxcCiAgICAgICAgICAgIFsicGl0Y2giLDBdLFwKICAgICAgICAgICAgWyJzaWxrb2Zmc2V0
IiwwXSxcCiAgICAgICAgICAgIFsic2lsa3dpZHRoIiwwXSxcCiAgICAgICAgICAgIFsic2lsa2Jv
eHdpZHRoIiwwXSxcCiAgICAgICAgICAgIFsic2lsa2JveGhlaWdodCIsMF0sXAogICAgICAgICAg
ICBbInNpbGtzdHlsZSIsIiJdLFwKICAgICAgICAgICAgWyJvbWl0YmFsbHMiLCIiXSxcCiAgICAg
ICAgICAgIFsicGFkZGlhIiwwXSxcCiAgICAgICAgICAgIFsiZGlhIiwwXSxcCiAgICAgICAgICAg
IFsibWFza2NsZWFyIiwwXSxcCiAgICAgICAgICAgIFsicG9seWNsZWFyIiwwXSxcCiAgICAgICAg
ICAgIFsiZXAiLDBdLFwKICAgICAgICAgICAgWyJyZWN0IiwwXSxcCiAgICAgICAgICAgIFsicGFk
d2lkdGgiLDBdLFwKICAgICAgICAgICAgWyJwYWRoZWlnaHQiLDBdLFwKICAgICAgICAgICAgWyJ0
YWJ3aWR0aCIsMF0sXAogICAgICAgICAgICBbInRhYmhlaWdodCIsMF0sXAogICAgICAgICAgICBb
IndpZHRoIiwwXSxcCiAgICAgICAgICAgIFsiaGVpZ2h0IiwwXSxcCiAgICAgICAgICAgIFsicmVm
ZGVzeCIsMF0sXAogICAgICAgICAgICBbInJlZmRlc3kiLDBdLFwKICAgICAgICAgICAgWyJza2V3
IiwwXSxcCiAgICAgICAgICAgIFsicmVjdCIsMF0sXAogICAgICAgICAgICBbImRyaWxsIiwwXV0K
CiMgQkdBIHJvdyBuYW1lcyAyMCB0b3RhbApyb3duYW1lID0gWydBJywgJ0InLCAnQycsICdEJywg
J0UnLCAnRicsICdHJywgJ0gnLCAnSicsXAogICAgICAgICAgICdLJywgJ0wnLCAnTScsICdOJywg
J1AnLCAnUicsICdUJywgJ1UnLCAnVicsICdXJywgJ1knXQoKIyBnZW5lcmF0ZSBiYWxsIG5hbWUg
ZnJvbSByb3cgYW5kIGNvbHVtbiAoZm9yIEJHQSkKZGVmIGJhbGxuYW1lKGNvbCwgcm93KToKICAg
IGJhbGwgPSAiIgogICAgIyBjYW4gaGFuZGxlIHVwIHRvIGJhbGwgWVkKICAgIHdoaWxlIHJvdz4y
MDoKICAgICAgICBiYWxsPXJvd25hbWVbKHJvdy8yMCkgLSAxXQogICAgICAgIHJvdyA9IHJvdyUy
MAogICAgcmV0dXJuIGJhbGwrcm93bmFtZVtyb3ctMV0rc3RyKGNvbCkKCiMgZmluZCBYIGFuZCBZ
IHBvc2l0aW9uIG9mIGJhbGwgZnJvbSBuYW1lCmRlZiBiYWxscG9zKGJhbGxfbmFtZSk6CiAgICBj
b2wgPSAiIgogICAgcm93ID0gMAogICAgZm9yIGNoYXIgaW4gYmFsbF9uYW1lOgogICAgICAgIGlm
IGNoYXIuaXNkaWdpdCgpOgogICAgICAgICAgICBjb2wgPSBjb2wrY2hhcgogICAgICAgIGlmIGNo
YXIuaXNhbHBoYSgpOgogICAgICAgICAgICByb3cgPSByb3cgKiAyMAogICAgICAgICAgICBjb3Vu
dCA9IDEKICAgICAgICAgICAgZm9yIHZhbCBpbiByb3duYW1lOgogICAgICAgICAgICAgICAgaWYg
dmFsPT1jaGFyOgogICAgICAgICAgICAgICAgICAgIHJvdyA9IHJvdyArIGNvdW50CiAgICAgICAg
ICAgICAgICBjb3VudCA9IGNvdW50ICsxCiAgICBjb2wgPSBpbnQoY29sKQogICAgcmV0dXJuIFtj
b2wscm93XQogICAgCiMgZXhwYW5kIEIxOkM1IHRvIGxpc3Qgb2YgYmFsbHMKZGVmIGV4cGFuZGV4
cHIoaW5wdXRidWYpOgogICAgIyBzaW5nbGUgYmFsbCBoYXMgbm8gOgogICAgaWYgaW5wdXRidWYu
ZmluZCgiOiIpPT0tMToKICAgICAgICByZXR1cm4gIiBcIiIgKyBpbnB1dGJ1ZiArICJcIiIKICAg
ICMgbXVsdGlwbGUgYmFsbHMKICAgIGV4cGFuZGVkID0gIiIKICAgIHBvczEgPSBiYWxscG9zKGlu
cHV0YnVmWzppbnB1dGJ1Zi5maW5kKCI6IildKQogICAgcG9zMiA9IGJhbGxwb3MoaW5wdXRidWZb
aW5wdXRidWYuZmluZCgiOiIpKzE6XSkKICAgICMgTWFrZSBzdXJlIG9yZGVyIGlzIGluY3JlYXNp
bmcgCiAgICBpZiBwb3MxWzBdPnBvczJbMF06CiAgICAgICAgdG1wID0gcG9zMVswXQogICAgICAg
IHBvczFbMF0gPSBwb3MyWzBdCiAgICAgICAgcG9zMlswXSA9IHRtcAogICAgaWYgcG9zMVsxXT5w
b3MyWzFdOgogICAgICAgIHRtcCA9IHBvczFbMV0KICAgICAgICBwb3MxWzFdID0gcG9zMlsxXQog
ICAgICAgIHBvczJbMV0gPSB0bXAKICAgIGZvciBjb2wgaW4gcmFuZ2UocG9zMVswXSwgcG9zMlsw
XSsxKToKICAgICAgICBmb3Igcm93IGluIHJhbmdlKHBvczFbMV0sIHBvczJbMV0rMSk6CiAgICAg
ICAgICAgIGV4cGFuZGVkID0gZXhwYW5kZWQgKyAiICIgKyJcIiIrIGJhbGxuYW1lKGNvbCwgcm93
KSsiXCIiCiAgICByZXR1cm4gZXhwYW5kZWQKCiMgZXhwYW5kIGxpc3Qgb2YgYmFsbHMgdG8gb21p
dApkZWYgZXhwYW5kb21pdGxpc3Qob21pdGxpc3QpOgogICAgZXhwYW5kZWRsaXN0ID0gIiIKICAg
IHRtcGJ1ZiA9ICIiCiAgICBpZiBub3Qgb21pdGxpc3Q6CiAgICAgICAgcmV0dXJuICIiCiAgICBm
b3IgY2hhcmFjdGVyIGluIG9taXRsaXN0OgogICAgICAgIGlmIGNoYXJhY3Rlci5pc2FscGhhKCkg
b3IgY2hhcmFjdGVyLmlzZGlnaXQoKSBvciBjaGFyYWN0ZXI9PSI6IjoKICAgICAgICAgICAgdG1w
YnVmID0gdG1wYnVmICsgY2hhcmFjdGVyCiAgICAgICAgZWxpZiBjaGFyYWN0ZXIgPT0gJywnOgog
ICAgICAgICAgICBleHBhbmRlZGxpc3QgPSBleHBhbmRlZGxpc3QgKyBleHBhbmRleHByKHRtcGJ1
ZikKICAgICAgICAgICAgdG1wYnVmID0gJycKICAgICNsYXN0IHZhbHVlIHdpbGwgYmUgaW4gdG1w
YnVmCiAgICBleHBhbmRlZGxpc3QgPSBleHBhbmRlZGxpc3QgKyBleHBhbmRleHByKHRtcGJ1ZikK
ICAgICMgZGVidWc6IHByaW50IGV4cGFuZGVkbGlzdAogICAgcmV0dXJuIGV4cGFuZGVkbGlzdAog
ICAgCmRlZiBmaW5kYXR0cihhdHRybGlzdCwgbmFtZSk6CiAgICBmb3IgYXR0cmlidXRlIGluIGF0
dHJsaXN0OgogICAgICAgIGlmIGF0dHJpYnV0ZVswXT09bmFtZToKICAgICAgICAgICAgcmV0dXJu
IGF0dHJpYnV0ZVsxXQogICAgcHJpbnQgIkF0dHJpYnV0ZSAlcyBub3QgZm91bmQiICUgbmFtZQog
ICAgcHJpbnQgYXR0cmxpc3QKICAgIHJldHVybiAwCgpkZWYgY2hhbmdlYXR0cihhdHRybGlzdCwg
bmFtZSwgbmV3dmFsKToKICAgIGZvciBhdHRyaWJ1dGUgaW4gYXR0cmxpc3Q6CiAgICAgICAgaWYg
YXR0cmlidXRlWzBdPT1uYW1lOgogICAgICAgICAgICBhdHRyaWJ1dGVbMV0gPSBuZXd2YWwKICAg
ICAgICAgICAgcmV0dXJuCiAgICBwcmludCAiQXR0cmlidXRlICVzIG5vdCBmb3VuZCIgJSBuYW1l
CiAgICBwcmludCBhdHRybGlzdAogICAgcmV0dXJuIDAKCiMgRm9ybWF0IG9mIHBhZCBsaW5lOgoj
IFBhZFstMTc1MDAgLTEzNTAwIC0xNzUwMCAtNzAwMCAyMDAwIDEwMDAgMzAwMCAiMSIgIjEiIDB4
MDAwMDAxODBdCiMgWDEgWTEgWDIgWTIgV2lkdGggcG9seWNsZWFyIG1hc2sgLi4uLgpkZWYgcGFk
KHgxLCB5MSwgeDIsIHkyLCB3aWR0aCwgY2xlYXIsIG1hc2ssIHBpbm5hbWUsIHNoYXBlKToKICAg
IGlmIHNoYXBlPT0icm91bmQiOgogICAgICAgIGZsYWdzID0gIiIKICAgIGVsc2U6CiAgICAgICAg
ZmxhZ3MgPSAic3F1YXJlIgogICAgcmV0dXJuICJcdFBhZFslZG5tICVkbm0gJWRubSAlZG5tICVk
bm0gJWRubSAlZG5tIFwiJXNcIiBcIiVzXCIgXCIlc1wiXVxuIlwKICAgICAgICAgICAlICh4MSwg
eTEsIHgyLCB5Miwgd2lkdGgsIGNsZWFyKjIsIG1hc2srd2lkdGgsIHBpbm5hbWUsIHBpbm5hbWUs
IGZsYWdzKQoKZGVmIHBhZGN0cih4LHksaGVpZ2h0LHdpZHRoLGNsZWFyLG1hc2sscGlubmFtZSk6
CiAgICBsaW5ld2lkdGggPSBtaW4oaGVpZ2h0LHdpZHRoKQogICAgbGluZWxlbmd0aCA9IGFicyho
ZWlnaHQtd2lkdGgpCiAgICBpZiBoZWlnaHQ+d2lkdGg6CiAgICAgICAgI3ZlcnRjYWwgcGFkCiAg
ICAgICAgeDEgPSB4CiAgICAgICAgeDIgPSB4CiAgICAgICAgeTEgPSB5IC0gbGluZWxlbmd0aC8y
CiAgICAgICAgeTIgPSB5ICsgbGluZWxlbmd0aC8yCiAgICBlbHNlOgogICAgICAgICNob3Jpem9u
dGFsIHBhZAogICAgICAgIHgxID0geCAtIGxpbmVsZW5ndGgvMgogICAgICAgIHgyID0geCArIGxp
bmVsZW5ndGgvMgogICAgICAgIHkxID0geQogICAgICAgIHkyID0geQogICAgcmV0dXJuIHBhZCh4
MSx5MSx4Mix5MixsaW5ld2lkdGgsY2xlYXIsbWFzayxwaW5uYW1lLCJzcXVhcmUiKSAgICAgICAg
CgojIGJhbGwgaXMgYSB6ZXJvIGxlbmd0aCByb3VuZCBwYWQKZGVmIGJhbGwoeCwgeSwgZGlhLCBj
bGVhciwgbWFzaywgbmFtZSk6CiAgICByZXR1cm4gcGFkKHgsIHksIHgsIHksIGRpYSwgY2xlYXIs
IG1hc2ssIG5hbWUsICJyb3VuZCIpCgojIGRyYXcgc2lsa3NjcmVlbiBsaW5lCmRlZiBzaWxrKHgx
LCB5MSwgeDIsIHkyLCB3aWR0aCk6CiAgICByZXR1cm4gIlx0RWxlbWVudExpbmUgWyVkbm0gJWRu
bSAlZG5tICVkbm0gJWRubV1cbiIgJSAoeDEsIHkxLCB4MiwgeTIsIHdpZHRoKQojIGRyYXcgc2ls
a3NjcmVlbiBib3gKZGVmIGJveCh4MSwgeTEsIHgyLCB5Miwgd2lkdGgpOgogICAgcmV0dXJuIHNp
bGsoeDEseTEseDIseTEsd2lkdGgpK1wKICAgICAgICAgICBzaWxrKHgyLHkxLHgyLHkyLHdpZHRo
KStcCiAgICAgICAgICAgc2lsayh4Mix5Mix4MSx5Mix3aWR0aCkrXAogICAgICAgICAgIHNpbGso
eDEseTIseDEseTEsd2lkdGgpCgojIGRyYXcgaW5zaWRlIGJveCAoUFJCKQojIGRyYXdzIHNpbGtz
Y3JlZW4gYm94IGZvciBTTyBvciBRRlAgdHlwZSBwYXJ0cyB3aXRoIG5vdGNoZWQgcGluICMxIGNv
cm5lcgpkZWYgaW5zaWRlYm94KHgxLCB5MSwgeDIsIHkyLCB3aWR0aCk6CiAgICByZXR1cm4gc2ls
ayh4MSx5MSx4Mix5MSx3aWR0aCkrXAogICAgICAgICAgIHNpbGsoeDIseTEseDIseTIrMTAwMCx3
aWR0aCkrXAogICAgICAgICAgIHNpbGsoeDIseTIrMTAwMCx4MisxMDAwLHkyLHdpZHRoKStcCiAg
ICAgICAgICAgc2lsayh4MisxMDAwLHkyLHgxLHkyLHdpZHRoKStcCiAgICAgICAgICAgc2lsayh4
MSx5Mix4MSx5MSx3aWR0aCkKCmRlZiBiZ2EoYXR0cmxpc3QpOgogICAgIyBkZWZpbml0aW9ucyBu
ZWVkZWQgdG8gZ2VuZXJhdGUgYmdhCiAgICBjb2xzID0gZmluZGF0dHIoYXR0cmxpc3QsICJjb2xz
IikKICAgIHJvd3MgPSBmaW5kYXR0cihhdHRybGlzdCwgInJvd3MiKQogICAgcGl0Y2ggPSBmaW5k
YXR0cihhdHRybGlzdCwgInBpdGNoIikKICAgIGJhbGxkaWEgPSBmaW5kYXR0cihhdHRybGlzdCwg
ImRpYSIpCiAgICBwb2x5Y2xlYXIgPSBmaW5kYXR0cihhdHRybGlzdCwgInBvbHljbGVhciIpCiAg
ICBtYXNrY2xlYXIgPSBmaW5kYXR0cihhdHRybGlzdCwgIm1hc2tjbGVhciIpCiAgICBzaWxrd2lk
dGggPSBmaW5kYXR0cihhdHRybGlzdCwgInNpbGt3aWR0aCIpCiAgICBzaWxrb2Zmc2V0ID0gZmlu
ZGF0dHIoYXR0cmxpc3QsICJzaWxrb2Zmc2V0IikKICAgIHNpbGtib3h3aWR0aCA9IGZpbmRhdHRy
KGF0dHJsaXN0LCAic2lsa2JveHdpZHRoIikKICAgIHNpbGtib3hoZWlnaHQgPSBmaW5kYXR0cihh
dHRybGlzdCwgInNpbGtib3hoZWlnaHQiKQogICAgcmVmZGVzeCA9IGZpbmRhdHRyKGF0dHJsaXN0
LCAicmVmZGVzeCIpCiAgICByZWZkZXN5ID0gZmluZGF0dHIoYXR0cmxpc3QsICJyZWZkZXN5IikK
ICAgIG9taXRsaXN0ID0gZXhwYW5kb21pdGxpc3QoZmluZGF0dHIoYXR0cmxpc3QsICJvbWl0YmFs
bHMiKSkKICAgIHdpZHRoID0gKGNvbHMtMSkqcGl0Y2grYmFsbGRpYQogICAgaGVpZ2h0ID0gKHJv
d3MtMSkqcGl0Y2grYmFsbGRpYQogICAgIyBlbnN1cmUgc2lsa3NjcmVlbiBkb2Vzbid0IG92ZXJs
YXAgYmFsbHMKICAgIGlmIHNpbGtib3h3aWR0aDx3aWR0aCBvciBzaWxrYm94aGVpZ2h0PGhlaWdo
dDoKICAgICAgICBzaWxrYm94eCA9IHdpZHRoLzIgKyBzaWxrb2Zmc2V0CiAgICAgICAgc2lsa2Jv
eHkgPSBoZWlnaHQvMiArIHNpbGtvZmZzZXQKICAgIGVsc2U6CiAgICAgICAgc2lsa2JveHggPSBz
aWxrYm94d2lkdGgvMgogICAgICAgIHNpbGtib3h5ID0gc2lsa2JveGhlaWdodC8yCiAgICBiZ2Fl
bHQgPSAiRWxlbWVudFtcIlwiIFwiRGVzY1wiIFwiTmFtZVwiIFwiVmFsXCIgMTAwMCAxMDAwICVk
bm0gJWRubSAwIDEwMCBcIlwiXVxuKFxuIiAlIChyZWZkZXN4LCAtMTAwMDAwMCAtIHJlZmRlc3kp
CiAgICAjIHNpbGtzY3JlZW4gb3V0bGluZQogICAgYmdhZWx0ID0gYmdhZWx0ICsgYm94KHNpbGti
b3h4LHNpbGtib3h5LC1zaWxrYm94eCwtc2lsa2JveHksc2lsa3dpZHRoKQogICAgIyBwaW4gMSBp
bmRpY2F0b3IgMW1tIGxvbmcgdGljawogICAgYmdhZWx0ID0gYmdhZWx0ICsgc2lsaygtc2lsa2Jv
eHgsIC1zaWxrYm94eSwgLShzaWxrYm94eCsxMDAwMDAwKSwgLShzaWxrYm94eSsxMDAwMDAwKSwg
c2lsa3dpZHRoKQogICAgIyBwb3NpdGlvbiBvZiBiYWxsIEExCiAgICB4b2ZmID0gLWludCgoY29s
cysxKSpwaXRjaC8yKQogICAgeW9mZiA9IC1pbnQoKHJvd3MrMSkqcGl0Y2gvMikKICAgIGZvciBy
b3cgaW4gcmFuZ2UoMSwgcm93cysxKToKICAgICAgICBmb3IgY29sIGluIHJhbmdlKDEsIDErY29s
cyk6CiAgICAgICAgICAgICMgZm91bmQgYnVnIGhlcmUgcm93LGNvbCByZXZlcnNlZAogICAgICAg
ICAgICBpZiBvbWl0bGlzdC5maW5kKCJcIiIrYmFsbG5hbWUoY29sLHJvdykrIlwiIik9PS0xOgog
ICAgICAgICAgICAgICAgeCA9IHhvZmYgKyAocGl0Y2gqY29sKQogICAgICAgICAgICAgICAgeSA9
IHlvZmYgKyAocGl0Y2gqcm93KQogICAgICAgICAgICAgICAgYmdhZWx0ID0gYmdhZWx0ICsgYmFs
bCh4LCB5LCBiYWxsZGlhLCBwb2x5Y2xlYXIsIG1hc2tjbGVhciwgYmFsbG5hbWUoY29sLHJvdykp
CiAgICByZXR1cm4gYmdhZWx0KyIpXG4iCgojIGRyYXcgYSByb3cgb2Ygc3F1YXJlIHBhZHMKIyBw
b3MgaXMgY2VudGVyIHBvc2l0aW9uCiMgd2hpY2h3YXkgY2FuIGJlIHVwIGRvd24gbGVmdCByaWdo
dApkZWYgcm93b2ZwYWRzKHBvcywgcGl0Y2gsIHdoaWNod2F5LCBwYWRsZW4sIHBhZGhlaWdodCwg
c3RhcnRudW0sIG51bXBhZHMsIG1hc2tjbGVhciwgcG9seWNsZWFyKToKICAgIHBhZHMgPSAiIgog
ICAgcm93bGVuID0gcGl0Y2ggKiAobnVtcGFkcyAtIDEpCiAgICBpZiB3aGljaHdheSA9PSAiZG93
biI6CiAgICAgICAgeCA9IHBvc1swXQogICAgICAgIHkgPSBwb3NbMV0gLSByb3dsZW4vMgogICAg
ICAgIGZvciBwYWRudW0gaW4gcmFuZ2UgKHN0YXJ0bnVtLCBzdGFydG51bStudW1wYWRzKToKICAg
ICAgICAgICAgcGFkcyA9IHBhZHMgKyBwYWRjdHIoeCx5LHBhZGhlaWdodCxwYWRsZW4scG9seWNs
ZWFyLG1hc2tjbGVhcixzdHIocGFkbnVtKSkKICAgICAgICAgICAgeSA9IHkgKyBwaXRjaAogICAg
ZWxpZiB3aGljaHdheSA9PSAidXAiOgogICAgICAgIHggPSBwb3NbMF0KICAgICAgICB5ID0gcG9z
WzFdICsgcm93bGVuLzIKICAgICAgICBmb3IgcGFkbnVtIGluIHJhbmdlIChzdGFydG51bSwgc3Rh
cnRudW0rbnVtcGFkcyk6CiAgICAgICAgICAgIHBhZHMgPSBwYWRzICsgcGFkY3RyKHgseSxwYWRo
ZWlnaHQscGFkbGVuLHBvbHljbGVhcixtYXNrY2xlYXIsc3RyKHBhZG51bSkpCiAgICAgICAgICAg
IHkgPSB5IC0gcGl0Y2gKICAgIGVsaWYgd2hpY2h3YXkgPT0gInJpZ2h0IjoKICAgICAgICB4ID0g
cG9zWzBdIC0gcm93bGVuLzIKICAgICAgICB5ID0gcG9zWzFdCiAgICAgICAgZm9yIHBhZG51bSBp
biByYW5nZSAoc3RhcnRudW0sIHN0YXJ0bnVtK251bXBhZHMpOgogICAgICAgICAgICBwYWRzID0g
cGFkcyArIHBhZGN0cih4LHkscGFkaGVpZ2h0LHBhZGxlbixwb2x5Y2xlYXIsbWFza2NsZWFyLHN0
cihwYWRudW0pKQogICAgICAgICAgICB4ID0geCArIHBpdGNoCiAgICBlbGlmIHdoaWNod2F5ID09
ICJsZWZ0IjoKICAgICAgICB4ID0gcG9zWzBdICsgcm93bGVuLzIKICAgICAgICB5ID0gcG9zWzFd
CiAgICAgICAgZm9yIHBhZG51bSBpbiByYW5nZSAoc3RhcnRudW0sIHN0YXJ0bnVtK251bXBhZHMp
OgogICAgICAgICAgICBwYWRzID0gcGFkcyArIHBhZGN0cih4LHkscGFkaGVpZ2h0LHBhZGxlbixw
b2x5Y2xlYXIsbWFza2NsZWFyLHN0cihwYWRudW0pKQogICAgICAgICAgICB4ID0geCAtIHBpdGNo
CiAgICByZXR1cm4gcGFkcwoKZGVmIHFmcChhdHRybGlzdCk6CiAgICBwaW5zID0gZmluZGF0dHIo
YXR0cmxpc3QsICJwaW5zIikKICAgIHBpbnNoaWdoID0gZmluZGF0dHIoYXR0cmxpc3QsICJwaW5z
aGlnaCIpCiAgICBwYWR3aWR0aCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicGFkd2lkdGgiKQogICAg
cGFkaGVpZ2h0ID0gZmluZGF0dHIoYXR0cmxpc3QsICJwYWRoZWlnaHQiKQogICAgcGl0Y2ggPSBm
aW5kYXR0cihhdHRybGlzdCwgInBpdGNoIikKICAgIHdpZHRoID0gZmluZGF0dHIoYXR0cmxpc3Qs
ICJ3aWR0aCIpCiAgICBoZWlnaHQgPSBmaW5kYXR0cihhdHRybGlzdCwgImhlaWdodCIpCiAgICBw
b2x5Y2xlYXIgPSBmaW5kYXR0cihhdHRybGlzdCwgInBvbHljbGVhciIpCiAgICBtYXNrY2xlYXIg
PSBmaW5kYXR0cihhdHRybGlzdCwgIm1hc2tjbGVhciIpCiAgICBzaWxrd2lkdGggPSBmaW5kYXR0
cihhdHRybGlzdCwgInNpbGt3aWR0aCIpCiAgICBzaWxrb2Zmc2V0ID0gZmluZGF0dHIoYXR0cmxp
c3QsICJzaWxrb2Zmc2V0IikKICAgIHNpbGtib3h3aWR0aCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAi
c2lsa2JveHdpZHRoIikKICAgIHNpbGtib3hoZWlnaHQgPSBmaW5kYXR0cihhdHRybGlzdCwgInNp
bGtib3hoZWlnaHQiKQogICAgc2lsa3N0eWxlID0gZmluZGF0dHIoYXR0cmxpc3QsICJzaWxrc3R5
bGUiKQogICAgZXAgPSBmaW5kYXR0cihhdHRybGlzdCwgImVwIikKICAgIHJlZmRlc3ggPSBmaW5k
YXR0cihhdHRybGlzdCwgInJlZmRlc3giKQogICAgcmVmZGVzeSA9IGZpbmRhdHRyKGF0dHJsaXN0
LCAicmVmZGVzeSIpCiAgICBxZnBlbHQgPSAiRWxlbWVudFtcIlwiIFwiRGVzY1wiIFwiTmFtZVwi
IFwiVmFsXCIgMTAwMCAxMDAwICVkbm0gJWRubSAwIDEwMCBcIlwiXVxuKFxuIiAlIChyZWZkZXN4
LCAtMTAwMDAwMCAtIHJlZmRlc3kpCiAgICBpZiBwaW5zaGlnaD09MDoKICAgICAgICBwaW5zaGln
aCA9IHBpbnMvNAogICAgICAgIHBpbnN3aWRlID0gcGlucy80CiAgICAgICAgaGVpZ2h0ID0gd2lk
dGgKICAgIGVsc2U6CiAgICAgICAgcGluc3dpZGUgPSAocGlucy0yKnBpbnNoaWdoKS8yCiAgICBp
ZiBwaW5zaGlnaDoKICAgICAgICAjIGRyYXcgbGVmdCBzaWRlCiAgICAgICAgcWZwZWx0ID0gcWZw
ZWx0ICsgcm93b2ZwYWRzKFstKHdpZHRoK3BhZHdpZHRoKS8yLDBdLCBwaXRjaCwgImRvd24iLCBw
YWR3aWR0aCxcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGhlaWdodCwg
MSwgcGluc2hpZ2gsIG1hc2tjbGVhciwgcG9seWNsZWFyKQogICAgICAgICMgZHJhdyByaWdodCBz
aWRlCiAgICAgICAgcWZwZWx0ID0gcWZwZWx0ICsgcm93b2ZwYWRzKFsod2lkdGgrcGFkd2lkdGgp
LzIsMF0sIHBpdGNoLCAidXAiLCBwYWR3aWR0aCxcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhZGhlaWdodCwgcGluc2hpZ2grcGluc3dpZGUrMSwgcGluc2hpZ2gsXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrY2xlYXIsIHBvbHljbGVhcikKICAg
IGlmIHBpbnN3aWRlOgogICAgICAgICMgZHJhdyBib3R0b20KICAgICAgICBxZnBlbHQgPSBxZnBl
bHQgKyByb3dvZnBhZHMoWzAsKGhlaWdodCtwYWR3aWR0aCkvMl0sIHBpdGNoLCAicmlnaHQiLCBw
YWRoZWlnaHQsXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWR3aWR0aCwg
cGluc2hpZ2grMSwgcGluc3dpZGUsIG1hc2tjbGVhciwgcG9seWNsZWFyKQogICAgICAgICMgZHJh
dyB0b3AKICAgICAgICBxZnBlbHQgPSBxZnBlbHQgKyByb3dvZnBhZHMoWzAsLShoZWlnaHQrcGFk
d2lkdGgpLzJdLCBwaXRjaCwgImxlZnQiLCBwYWRoZWlnaHQsXAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYWR3aWR0aCwgMipwaW5zaGlnaCtwaW5zd2lkZSsxLCBwaW5zd2lk
ZSwgbWFza2NsZWFyLCBwb2x5Y2xlYXIpCiAgICAjIGV4cG9zZWQgcGFkIHBhY2thZ2VzOgogICAg
aWYgZXA6CiAgICAgICAgcWZwZWx0ID1xZnBlbHQgKyBwYWQoMCwwLDAsMCxlcCxwb2x5Y2xlYXIs
bWFza2NsZWFyLHN0cihwaW5zKzEpLCJzcXVhcmUiKQogICAgaWYgc2lsa3N0eWxlID09ICJpbnNp
ZGUiOgogICAgICAgIHggPSB3aWR0aC8yIC0gc2lsa29mZnNldAogICAgICAgIHkgPSBoZWlnaHQv
MiAtIHNpbGtvZmZzZXQKICAgICAgICBxZnBlbHQgPSBxZnBlbHQgKyBib3goeCx5LC14LC15LHNp
bGt3aWR0aCkKICAgICAgICBxZnBlbHQgPSBxZnBlbHQgKyBzaWxrKC14LC15LC0oeCsxMDAwMDAw
KSwtKHkrMTAwMDAwMCksc2lsa3dpZHRoKQogICAgZWxpZiBzaWxrc3R5bGUgPT0gIm91dHNpZGUi
OgogICAgICAgIHggPSAod2lkdGgrMipwYWR3aWR0aCkvMiArIHNpbGtvZmZzZXQKICAgICAgICB5
ID0gKGhlaWdodCsyKnBhZHdpZHRoKS8yICsgc2lsa29mZnNldAogICAgICAgIHFmcGVsdCA9IHFm
cGVsdCArIGJveCh4LHksLXgsLXksc2lsa3dpZHRoKQogICAgICAgIHFmcGVsdCA9IHFmcGVsdCAr
IHNpbGsoLXgsLXksLSh4KzEwMDAwMDApLC0oeSsxMDAwMDAwKSxzaWxrd2lkdGgpCiAgICBlbGlm
IHNpbGtzdHlsZSA9PSAiY29ybmVycyI6CiAgICAgICAgeF9zdG9wID0gMC41KnBpdGNoKihwaW5z
d2lkZS0xKSArIC41KnBhZGhlaWdodCArIHNpbGt3aWR0aAogICAgICAgIHlfc3RvcCA9IDAuNSpw
aXRjaCoocGluc2hpZ2gtMSkgKyAuNSpwYWRoZWlnaHQgKyBzaWxrd2lkdGgKICAgICAgICB4ID0g
c2lsa2JveHdpZHRoLzIgKyBzaWxrd2lkdGgvMgogICAgICAgIHkgPSBzaWxrYm94aGVpZ2h0LzIg
KyBzaWxrd2lkdGgvMgogICAgICAgICNVTAogICAgICAgIHFmcGVsdCA9IHFmcGVsdCArIHNpbGso
LXgsLXksLXhfc3RvcCwteSxzaWxrd2lkdGgpCiAgICAgICAgcWZwZWx0ID0gcWZwZWx0ICsgc2ls
aygteCwteSwteCwteV9zdG9wLHNpbGt3aWR0aCkKICAgICAgICAjVVIKICAgICAgICBxZnBlbHQg
PSBxZnBlbHQgKyBzaWxrKHgsLXkseF9zdG9wLC15LHNpbGt3aWR0aCkKICAgICAgICBxZnBlbHQg
PSBxZnBlbHQgKyBzaWxrKHgsLXkseCwteV9zdG9wLHNpbGt3aWR0aCkKICAgICAgICAjTEwKICAg
ICAgICBxZnBlbHQgPSBxZnBlbHQgKyBzaWxrKC14LHksLXhfc3RvcCx5LHNpbGt3aWR0aCkKICAg
ICAgICBxZnBlbHQgPSBxZnBlbHQgKyBzaWxrKC14LHksLXgseV9zdG9wLHNpbGt3aWR0aCkKICAg
ICAgICAjTFIKICAgICAgICBxZnBlbHQgPSBxZnBlbHQgKyBzaWxrKHgseSx4X3N0b3AseSxzaWxr
d2lkdGgpCiAgICAgICAgcWZwZWx0ID0gcWZwZWx0ICsgc2lsayh4LHkseCx5X3N0b3Asc2lsa3dp
ZHRoKQogICAgICAgICNQaW4gMQogICAgICAgIHFmcGVsdCA9IHFmcGVsdCArIHNpbGsoLXgsLXks
LSh4KzEwMDAwMDApLC0oeSsxMDAwMDAwKSxzaWxrd2lkdGgpCgogICAgcmV0dXJuIHFmcGVsdCsi
KVxuIgoKIyBkZWYgcm93b2ZwYWRzKHBvcywgcGl0Y2gsIHdoaWNod2F5LCBwYWRsZW4sIHBhZGhl
aWdodCwgc3RhcnRudW0sIG51bXBhZHMsIG1hc2tjbGVhciwgcG9seWNsZWFyKToKIyB1c2VzIHBp
bnMsIHBhZHdpZHRoLCBwYWRoZWlnaHQsIHBpdGNoCmRlZiBzbyhhdHRybGlzdCk6CiAgICBwaW5z
ID0gZmluZGF0dHIoYXR0cmxpc3QsICJwaW5zIikKICAgIHBpdGNoID0gZmluZGF0dHIoYXR0cmxp
c3QsICJwaXRjaCIpCiAgICB3aWR0aCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAid2lkdGgiKQogICAg
cGFkd2lkdGggPSBmaW5kYXR0cihhdHRybGlzdCwgInBhZHdpZHRoIikKICAgIHBhZGhlaWdodCA9
IGZpbmRhdHRyKGF0dHJsaXN0LCAicGFkaGVpZ2h0IikKICAgIHBvbHljbGVhciA9IGZpbmRhdHRy
KGF0dHJsaXN0LCAicG9seWNsZWFyIikKICAgIG1hc2tjbGVhciA9IGZpbmRhdHRyKGF0dHJsaXN0
LCAibWFza2NsZWFyIikKICAgIHNpbGt3aWR0aCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAic2lsa3dp
ZHRoIikKICAgIHNpbGtvZmZzZXQgPSBmaW5kYXR0cihhdHRybGlzdCwgInNpbGtvZmZzZXQiKQog
ICAgc2lsa2JveGhlaWdodCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAic2lsa2JveGhlaWdodCIpCiAg
ICBzaWxrc3R5bGUgPSBmaW5kYXR0cihhdHRybGlzdCwgInNpbGtzdHlsZSIpCiAgICByZWZkZXN4
ID0gZmluZGF0dHIoYXR0cmxpc3QsICJyZWZkZXN4IikKICAgIHJlZmRlc3kgPSBmaW5kYXR0cihh
dHRybGlzdCwgInJlZmRlc3kiKQogICAgc2tldyA9IGZpbmRhdHRyKGF0dHJsaXN0LCAic2tldyIp
CiAgICBlcCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAiZXAiKQogICAgcmVjdCA9IGZpbmRhdHRyKGF0
dHJsaXN0LCAicmVjdCIpCiAgICBpZiBwaW5zICUgMjoKICAgICAgICBwcmludCAiT2RkIG51bWJl
ciBvZiBwaW5zOiB0aGF0IGlzIGEgcHJvYmxlbSIKICAgICAgICBwcmludCAiU2tpcHBpbmcgIiAr
IGZpbmRhdHRyKGF0dHJsaXN0LCAidHlwZSIpCiAgICAgICAgcmV0dXJuICIiCiAgICByb3dwb3Mg
PSAod2lkdGgrcGFkd2lkdGgpLzIKICAgIHNvZWx0ID0gIkVsZW1lbnRbXCJcIiBcIkRlc2NcIiBc
Ik5hbWVcIiBcIlZhbFwiIDEwMDAgMTAwMCAlZG5tICVkbm0gMCAxMDAgXCJcIl1cbihcbiIgJSAo
cmVmZGVzeCwgLTEwMDAwMDAgLSByZWZkZXN5KQogICAgc29lbHQgPSBzb2VsdCArIHJvd29mcGFk
cyhbLXJvd3Bvcywtc2tld10sIHBpdGNoLCAiZG93biIsIHBhZHdpZHRoLCBwYWRoZWlnaHQsIDEs
IHBpbnMvMiwgbWFza2NsZWFyLCBwb2x5Y2xlYXIpCiAgICBzb2VsdCA9IHNvZWx0ICsgcm93b2Zw
YWRzKFtyb3dwb3Msc2tld10sIHBpdGNoLCAidXAiLCBwYWR3aWR0aCwgcGFkaGVpZ2h0LCAxK3Bp
bnMvMiwgcGlucy8yLCBtYXNrY2xlYXIsIHBvbHljbGVhcikKICAgIHNpbGtib3hoZWlnaHQgPSBt
YXgocGl0Y2gqKHBpbnMtMikvMitwYWRoZWlnaHQrMipzaWxrb2Zmc2V0LHNpbGtib3hoZWlnaHQp
CiAgICAKICAgIHNpbGt5ID0gc2lsa2JveGhlaWdodC8yCiAgICBsZW4gPSAwCiAgICBwcmludCAi
RVAiICsgc3RyKGVwKQogICAgcHJpbnQgIkVQSEVJR0hUIiArIHN0cihyZWN0KQogICAgaWYgcmVj
dDoKICAgICAgICBsZW4gPSAocmVjdCAtIGVwKSAvIDIKICAgIGlmIGVwOgogICAgICAgIHNvZWx0
ID0gc29lbHQgKyBwYWQoMCxsZW4sMCwtbGVuLGVwLHBvbHljbGVhcixtYXNrY2xlYXIsc3RyKHBp
bnMrMSksInJlY3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
IyBJbnNpZGUgYm94IHdpdGggbm90Y2hlZCBjb3JuZXIgYXMgc3VibWl0dGVkIGluIHBhdGNoIGJ5
IFBSQgogICAgaWYoc2lsa3N0eWxlID09ICJpbnNpZGUiKToKICAgICAgICBzaWxreCA9IHdpZHRo
LzIgLSBzaWxrb2Zmc2V0CiAgICAgICAgc29lbHQgPSBzb2VsdCArIGluc2lkZWJveChzaWxreCxz
aWxreSwtc2lsa3gsLXNpbGt5LHNpbGt3aWR0aCkKICAgIGVsc2U6CiAgICAgICAgc2lsa3ggPSB3
aWR0aC8yICsgc2lsa29mZnNldCArIHBhZHdpZHRoCiAgICAgICAgc29lbHQgPSBzb2VsdCArIGJv
eChzaWxreCxzaWxreSwtc2lsa3gsLXNpbGt5LHNpbGt3aWR0aCkKICAgICAgICBzb2VsdCA9IHNv
ZWx0ICsgc2lsaygwLC1zaWxreSsxMDAwMDAwLC0xMDAwMDAwLC1zaWxreSxzaWxrd2lkdGgpCiAg
ICAgICAgc29lbHQgPSBzb2VsdCArIHNpbGsoMCwtc2lsa3krMTAwMDAwMCwxMDAwMDAwLC1zaWxr
eSxzaWxrd2lkdGgpCiAgICByZXR1cm4gc29lbHQrIilcbiIKCmRlZiB0d29wYWQoYXR0cmxpc3Qp
OgogICAgd2lkdGggPSBmaW5kYXR0cihhdHRybGlzdCwgIndpZHRoIikKICAgIHBhZHdpZHRoID0g
ZmluZGF0dHIoYXR0cmxpc3QsICJwYWR3aWR0aCIpCiAgICBwYWRoZWlnaHQgPSBmaW5kYXR0cihh
dHRybGlzdCwgInBhZGhlaWdodCIpCiAgICBwb2x5Y2xlYXIgPSBmaW5kYXR0cihhdHRybGlzdCwg
InBvbHljbGVhciIpCiAgICBtYXNrY2xlYXIgPSBmaW5kYXR0cihhdHRybGlzdCwgIm1hc2tjbGVh
ciIpCiAgICBzaWxrd2lkdGggPSBmaW5kYXR0cihhdHRybGlzdCwgInNpbGt3aWR0aCIpCiAgICBz
aWxrYm94d2lkdGggPSBmaW5kYXR0cihhdHRybGlzdCwgInNpbGtib3h3aWR0aCIpCiAgICBzaWxr
Ym94aGVpZ2h0ID0gZmluZGF0dHIoYXR0cmxpc3QsICJzaWxrYm94aGVpZ2h0IikKICAgIHNpbGtv
ZmZzZXQgPSBmaW5kYXR0cihhdHRybGlzdCwgInNpbGtvZmZzZXQiKQogICAgcmVmZGVzeCA9IGZp
bmRhdHRyKGF0dHJsaXN0LCAicmVmZGVzeCIpCiAgICByZWZkZXN5ID0gZmluZGF0dHIoYXR0cmxp
c3QsICJyZWZkZXN5IikKICAgIHR3b3BhZGVsdCA9ICJFbGVtZW50W1wiXCIgXCJEZXNjXCIgXCJO
YW1lXCIgXCJWYWxcIiAxMDAwIDEwMDAgJWRubSAlZG5tIDAgMTAwIFwiXCJdXG4oXG4iICUgKHJl
ZmRlc3gsIC0xMDAwMDAwIC0gcmVmZGVzeSkKICAgIHR3b3BhZGVsdCA9IHR3b3BhZGVsdCArIHJv
d29mcGFkcyhbMCwwXSwgd2lkdGgrcGFkd2lkdGgsICJyaWdodCIsIHBhZHdpZHRoLCBwYWRoZWln
aHQsIDEsIDIsIG1hc2tjbGVhciwgcG9seWNsZWFyKQogICAgc2lsa3ggPSBtYXgoKHdpZHRoKzIq
cGFkd2lkdGgpLzIgKyBzaWxrb2Zmc2V0LHNpbGtib3h3aWR0aC8yKQogICAgc2lsa3kgPSBtYXgo
cGFkaGVpZ2h0LzIgKyBzaWxrb2Zmc2V0LCBzaWxrYm94aGVpZ2h0LzIpCiAgICB0d29wYWRlbHQg
PSB0d29wYWRlbHQgKyBib3goc2lsa3gsc2lsa3ksLXNpbGt4LC1zaWxreSxzaWxrd2lkdGgpCiAg
ICByZXR1cm4gdHdvcGFkZWx0KyIpXG4iCgojIFNPVDIyMywgRERQQUssIFRPLTI2MywgZXRjCmRl
ZiB0YWJiZWQoYXR0cmxpc3QpOgogICAgcGlucyA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicGlucyIp
CiAgICB0YWJ3aWR0aCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAidGFid2lkdGgiKQogICAgdGFiaGVp
Z2h0ID0gZmluZGF0dHIoYXR0cmxpc3QsICJ0YWJoZWlnaHQiKQogICAgaGVpZ2h0ID0gZmluZGF0
dHIoYXR0cmxpc3QsICJoZWlnaHQiKQogICAgcGFkd2lkdGggPSBmaW5kYXR0cihhdHRybGlzdCwg
InBhZHdpZHRoIikKICAgIHBhZGhlaWdodCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicGFkaGVpZ2h0
IikKICAgIHBvbHljbGVhciA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicG9seWNsZWFyIikKICAgIG1h
c2tjbGVhciA9IGZpbmRhdHRyKGF0dHJsaXN0LCAibWFza2NsZWFyIikKICAgIHNpbGt3aWR0aCA9
IGZpbmRhdHRyKGF0dHJsaXN0LCAic2lsa3dpZHRoIikKICAgIHNpbGtvZmZzZXQgPSBmaW5kYXR0
cihhdHRybGlzdCwgInNpbGtvZmZzZXQiKQogICAgcGl0Y2ggPSBmaW5kYXR0cihhdHRybGlzdCwg
InBpdGNoIikKICAgIHJlZmRlc3ggPSBmaW5kYXR0cihhdHRybGlzdCwgInJlZmRlc3giKQogICAg
cmVmZGVzeSA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicmVmZGVzeSIpCiAgICB0b3RhbGhlaWdodCA9
IGhlaWdodCt0YWJoZWlnaHQrcGFkaGVpZ2h0CiAgICB0b3RhbHdpZHRoID0gbWF4KHRhYndpZHRo
LCAocGlucy0xKSpwaXRjaCtwYWR3aWR0aCkKICAgIHNpbGt4ID0gdG90YWx3aWR0aC8yICsgc2ls
a29mZnNldAogICAgc2lsa3kgPSB0b3RhbGhlaWdodC8yICsgc2lsa29mZnNldAogICAgdGFieSA9
IC0odG90YWxoZWlnaHQtdGFiaGVpZ2h0KS8yCiAgICBwYWRzeSA9IC0ocGFkaGVpZ2h0IC0gdG90
YWxoZWlnaHQpLzIKICAgIHRhYmJlZGVsdCA9ICJFbGVtZW50W1wiXCIgXCJEZXNjXCIgXCJOYW1l
XCIgXCJWYWxcIiAxMDAwIDEwMDAgJWRubSAlZG5tIDAgMTAwIFwiXCJdXG4oXG4iICUgKHJlZmRl
c3gsIC0xMDAwMDAwIC0gcmVmZGVzeSkKICAgIHRhYmJlZGVsdCA9IHRhYmJlZGVsdCArIHJvd29m
cGFkcyhbMCxwYWRzeV0sIHBpdGNoLCAicmlnaHQiLCBwYWR3aWR0aCwgcGFkaGVpZ2h0LCAxLCBw
aW5zLCBtYXNrY2xlYXIsIHBvbHljbGVhcikKICAgIHRhYmJlZGVsdCA9IHRhYmJlZGVsdCArIHBh
ZGN0cigwLHRhYnksdGFiaGVpZ2h0LHRhYndpZHRoLHBvbHljbGVhcixtYXNrY2xlYXIsc3RyKHBp
bnMrMSkpCiAgICB0YWJiZWRlbHQgPSB0YWJiZWRlbHQgKyBib3goc2lsa3gsc2lsa3ksLXNpbGt4
LC1zaWxreSxzaWxrd2lkdGgpCiAgICByZXR1cm4gdGFiYmVkZWx0KyIpXG4iCiMgIFBpblsxNzUw
MCAtMjQwMDAgNjQwMCAyMDAwIDY0MDAgMzUwMCAiIiAiMSIgMHgwMDAwMDAwMV0KIyB4LHkscGFk
ZGlhLHBvbHljbGVhcixtYXNrY2xlYXIsZHJpbGwsbmFtZSxuYW1lLGZsYWdzCgpkZWYgcGluKHgs
eSxkaWEsZHJpbGwsbmFtZSxwb2x5Y2xlYXIsbWFza2NsZWFyKToKICAgIGlmIG5hbWUgPT0gIjEi
OgogICAgICAgIHBpbmZsYWdzID0gIjB4MDAwMDAxMDAiCiAgICBlbHNlOgogICAgICAgIHBpbmZs
YWdzID0gIjB4MDAwMDAwMDAiCiAgICByZXR1cm4gIlx0UGluWyAlZG5tICVkbm0gJWRubSAlZG5t
ICVkbm0gJWRubSBcIiVzXCIgXCIlc1wiICVzXVxuIiAlICh4LHksZGlhLHBvbHljbGVhcioyLG1h
c2tjbGVhcitkaWEsZHJpbGwsbmFtZSxuYW1lLHBpbmZsYWdzKQoKZGVmIGRpcChhdHRybGlzdCk6
CiAgICBwaW5zID0gZmluZGF0dHIoYXR0cmxpc3QsICJwaW5zIikKICAgIGRyaWxsID0gZmluZGF0
dHIoYXR0cmxpc3QsICJkcmlsbCIpCiAgICBwYWRkaWEgPSBmaW5kYXR0cihhdHRybGlzdCwgInBh
ZGRpYSIpCiAgICB3aWR0aCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAid2lkdGgiKQogICAgcG9seWNs
ZWFyID0gZmluZGF0dHIoYXR0cmxpc3QsICJwb2x5Y2xlYXIiKQogICAgbWFza2NsZWFyID0gZmlu
ZGF0dHIoYXR0cmxpc3QsICJtYXNrY2xlYXIiKQogICAgc2lsa3dpZHRoID0gZmluZGF0dHIoYXR0
cmxpc3QsICJzaWxrd2lkdGgiKQogICAgcGl0Y2ggPSBmaW5kYXR0cihhdHRybGlzdCwgInBpdGNo
IikKICAgIHJlZmRlc3ggPSBmaW5kYXR0cihhdHRybGlzdCwgInJlZmRlc3giKQogICAgcmVmZGVz
eSA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicmVmZGVzeSIpCiAgICB5ID0gLShwaW5zLzItMSkqcGl0
Y2gvMgogICAgeCA9IHdpZHRoLzIKICAgIGRpcGVsdCA9ICJFbGVtZW50W1wiXCIgXCJEZXNjXCIg
XCJOYW1lXCIgXCJWYWxcIiAxMDAwIDEwMDAgJWRubSAlZG5tIDAgMTAwIFwiXCJdXG4oXG4iICUg
KHJlZmRlc3gsIC0xMDAwMDAwIC0gcmVmZGVzeSkKICAgIGZvciBwaW5udW0gaW4gcmFuZ2UgKDEs
MStwaW5zLzIpOgogICAgICAgIGRpcGVsdCA9IGRpcGVsdCArIHBpbigteCx5LHBhZGRpYSxkcmls
bCxzdHIocGlubnVtKSxwb2x5Y2xlYXIsbWFza2NsZWFyKQogICAgICAgIHkgPSB5ICsgcGl0Y2gK
ICAgIHkgPSB5IC0gcGl0Y2gKICAgIGZvciBwaW5udW0gaW4gcmFuZ2UgKDErcGlucy8yLCBwaW5z
KzEpOgogICAgICAgIGRpcGVsdCA9IGRpcGVsdCArIHBpbih4LHkscGFkZGlhLGRyaWxsLHN0cihw
aW5udW0pLHBvbHljbGVhcixtYXNrY2xlYXIpCiAgICAgICAgeSA9IHkgLSBwaXRjaAogICAgc2ls
a3kgPSBwaW5zKnBpdGNoLzQKICAgIHNpbGt4ID0gKHdpZHRoK3BpdGNoKS8yCiAgICBkaXBlbHQg
PSBkaXBlbHQgKyBib3goc2lsa3gsc2lsa3ksLXNpbGt4LC1zaWxreSxzaWxrd2lkdGgpCiAgICBk
aXBlbHQgPSBkaXBlbHQgKyBib3goLXNpbGt4LC1zaWxreSwtc2lsa3grcGl0Y2gsLXNpbGt5K3Bp
dGNoLHNpbGt3aWR0aCkKICAgIHJldHVybiBkaXBlbHQrIilcbiIKCmRlZiBkaWgoYXR0cmxpc3Qp
OgogICAgcGlucyA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicGlucyIpCiAgICBkcmlsbCA9IGZpbmRh
dHRyKGF0dHJsaXN0LCAiZHJpbGwiKQogICAgcGFkZGlhID0gZmluZGF0dHIoYXR0cmxpc3QsICJw
YWRkaWEiKQogICAgd2lkdGggPSBmaW5kYXR0cihhdHRybGlzdCwgIndpZHRoIikKICAgIHBvbHlj
bGVhciA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicG9seWNsZWFyIikKICAgIG1hc2tjbGVhciA9IGZp
bmRhdHRyKGF0dHJsaXN0LCAibWFza2NsZWFyIikKICAgIHNpbGt3aWR0aCA9IGZpbmRhdHRyKGF0
dHJsaXN0LCAic2lsa3dpZHRoIikKICAgIHBpdGNoID0gZmluZGF0dHIoYXR0cmxpc3QsICJwaXRj
aCIpCiAgICByZWZkZXN4ID0gZmluZGF0dHIoYXR0cmxpc3QsICJyZWZkZXN4IikKICAgIHJlZmRl
c3kgPSBmaW5kYXR0cihhdHRybGlzdCwgInJlZmRlc3kiKQogICAgc2lsa2JveHdpZHRoID0gZmlu
ZGF0dHIoYXR0cmxpc3QsICJzaWxrYm94d2lkdGgiKQogICAgc2lsa2JveGhlaWdodCA9IGZpbmRh
dHRyKGF0dHJsaXN0LCAic2lsa2JveGhlaWdodCIpCiAgICB5ID0gLShwaW5zLzItMSkqcGl0Y2gv
MgogICAgeCA9IHdpZHRoLzIKICAgIGRpaGVsdCA9ICJFbGVtZW50W1wiXCIgXCJEZXNjXCIgXCJO
YW1lXCIgXCJWYWxcIiAxMDAwIDEwMDAgJWRubSAlZG5tIDAgMTAwIFwiXCJdXG4oXG4iICUgKHJl
ZmRlc3gsIC0xMDAwMDAwIC0gcmVmZGVzeSkKICAgIGZvciBwaW5udW0gaW4gcmFuZ2UgKDEsMStw
aW5zLDIpOgogICAgICAgIGRpaGVsdCA9IGRpaGVsdCArIHBpbigteCx5LHBhZGRpYSxkcmlsbCxz
dHIocGlubnVtKSxwb2x5Y2xlYXIsbWFza2NsZWFyKQogICAgICAgIHkgPSB5ICsgcGl0Y2gKICAg
IHkgPSAtKHBpbnMvMi0xKSpwaXRjaC8yCiAgICBmb3IgcGlubnVtIGluIHJhbmdlICgyLDErcGlu
cywyKToKICAgICAgICBkaWhlbHQgPSBkaWhlbHQgKyBwaW4oeCx5LHBhZGRpYSxkcmlsbCxzdHIo
cGlubnVtKSxwb2x5Y2xlYXIsbWFza2NsZWFyKQogICAgICAgIHkgPSB5ICsgcGl0Y2gKICAgIHNp
bGt5ID0gbWF4KHBpbnMqcGl0Y2gvNCxzaWxrYm94aGVpZ2h0LzIpCiAgICBzaWxreCA9IG1heCgo
d2lkdGgrcGl0Y2gpLzIsc2lsa2JveHdpZHRoLzIpCiAgICBkaWhlbHQgPSBkaWhlbHQgKyBib3go
c2lsa3gsc2lsa3ksLXNpbGt4LC1zaWxreSxzaWxrd2lkdGgpCiAgICBkaWhlbHQgPSBkaWhlbHQg
KyBib3goLXNpbGt4LC1zaWxreSwtc2lsa3grcGl0Y2gsLXNpbGt5K3BpdGNoLHNpbGt3aWR0aCkK
ICAgIHJldHVybiBkaWhlbHQrIilcbiIKCmRlZiBkaWhmKGF0dHJsaXN0KToKICAgIHBpbnMgPSBm
aW5kYXR0cihhdHRybGlzdCwgInBpbnMiKQogICAgZHJpbGwgPSBmaW5kYXR0cihhdHRybGlzdCwg
ImRyaWxsIikKICAgIHBhZGRpYSA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicGFkZGlhIikKICAgIHdp
ZHRoID0gZmluZGF0dHIoYXR0cmxpc3QsICJ3aWR0aCIpCiAgICBwb2x5Y2xlYXIgPSBmaW5kYXR0
cihhdHRybGlzdCwgInBvbHljbGVhciIpCiAgICBtYXNrY2xlYXIgPSBmaW5kYXR0cihhdHRybGlz
dCwgIm1hc2tjbGVhciIpCiAgICBzaWxrd2lkdGggPSBmaW5kYXR0cihhdHRybGlzdCwgInNpbGt3
aWR0aCIpCiAgICBwaXRjaCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicGl0Y2giKQogICAgcmVmZGVz
eCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAicmVmZGVzeCIpCiAgICByZWZkZXN5ID0gZmluZGF0dHIo
YXR0cmxpc3QsICJyZWZkZXN5IikKICAgIHkgPSAtKHBpbnMvMi0xKSpwaXRjaC8yCiAgICB4ID0g
d2lkdGgvMgogICAgZGloZmVsdCA9ICJFbGVtZW50W1wiXCIgXCJEZXNjXCIgXCJOYW1lXCIgXCJW
YWxcIiAxMDAwIDEwMDAgJWRubSAlZG5tIDAgMTAwIFwiXCJdXG4oXG4iICUgKHJlZmRlc3gsIC0x
MDAwMDAwIC0gcmVmZGVzeSkKICAgIGZvciBwaW5udW0gaW4gcmFuZ2UgKDEsMStwaW5zLDIpOgog
ICAgICAgIGRpaGZlbHQgPSBkaWhmZWx0ICsgcGluKHgseSxwYWRkaWEsZHJpbGwsc3RyKHBpbm51
bSkscG9seWNsZWFyLG1hc2tjbGVhcikKICAgICAgICB5ID0geSArIHBpdGNoCiAgICB5ID0gLShw
aW5zLzItMSkqcGl0Y2gvMgogICAgZm9yIHBpbm51bSBpbiByYW5nZSAoMiwxK3BpbnMsMik6CiAg
ICAgICAgZGloZmVsdCA9IGRpaGZlbHQgKyBwaW4oLXgseSxwYWRkaWEsZHJpbGwsc3RyKHBpbm51
bSkscG9seWNsZWFyLG1hc2tjbGVhcikKICAgICAgICB5ID0geSArIHBpdGNoCiAgICBzaWxreSA9
IHBpbnMqcGl0Y2gvNAogICAgc2lsa3ggPSAod2lkdGgrcGl0Y2gpLzIKICAgIGRpaGZlbHQgPSBk
aWhmZWx0ICsgYm94KHNpbGt4LHNpbGt5LC1zaWxreCwtc2lsa3ksc2lsa3dpZHRoKQogICAgZGlo
ZmVsdCA9IGRpaGZlbHQgKyBib3goc2lsa3gsLXNpbGt5LC1zaWxreCtwaXRjaCwtc2lsa3krcGl0
Y2gsc2lsa3dpZHRoKQogICAgcmV0dXJuIGRpaGZlbHQrIilcbiIKICAgICAgICAgICAgCgpkZWYg
c2lwKGF0dHJsaXN0KToKICAgIHBpbnMgPSBmaW5kYXR0cihhdHRybGlzdCwgInBpbnMiKQogICAg
ZHJpbGwgPSBmaW5kYXR0cihhdHRybGlzdCwgImRyaWxsIikKICAgIHBhZGRpYSA9IGZpbmRhdHRy
KGF0dHJsaXN0LCAicGFkZGlhIikKICAgIHBvbHljbGVhciA9IGZpbmRhdHRyKGF0dHJsaXN0LCAi
cG9seWNsZWFyIikKICAgIG1hc2tjbGVhciA9IGZpbmRhdHRyKGF0dHJsaXN0LCAibWFza2NsZWFy
IikKICAgIHNpbGt3aWR0aCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAic2lsa3dpZHRoIikKICAgIHBp
dGNoID0gZmluZGF0dHIoYXR0cmxpc3QsICJwaXRjaCIpCiAgICByZWZkZXN4ID0gZmluZGF0dHIo
YXR0cmxpc3QsICJyZWZkZXN4IikKICAgIHJlZmRlc3kgPSBmaW5kYXR0cihhdHRybGlzdCwgInJl
ZmRlc3kiKQogICAgc2lsa2JveHdpZHRoID0gZmluZGF0dHIoYXR0cmxpc3QsICJzaWxrYm94d2lk
dGgiKQogICAgc2lsa2JveGhlaWdodCA9IGZpbmRhdHRyKGF0dHJsaXN0LCAic2lsa2JveGhlaWdo
dCIpCiAgICB5ID0gLShwaW5zLTEpKnBpdGNoLzIKICAgIHNpcGVsdCA9ICJFbGVtZW50W1wiXCIg
XCJEZXNjXCIgXCJOYW1lXCIgXCJWYWxcIiAxMDAwIDEwMDAgJWRubSAlZG5tIDAgMTAwIFwiXCJd
XG4oXG4iICUgKHJlZmRlc3gsIC0xMDAwMDAwIC0gcmVmZGVzeSkKICAgIGZvciBwaW5udW0gaW4g
cmFuZ2UgKDEsMStwaW5zKToKICAgICAgICBzaXBlbHQgPSBzaXBlbHQgKyBwaW4oMCx5LHBhZGRp
YSxkcmlsbCxzdHIocGlubnVtKSxwb2x5Y2xlYXIsbWFza2NsZWFyKQogICAgICAgIHkgPSB5ICsg
cGl0Y2gKICAgIHNpbGt5ID0gbWF4KHBpbnMqcGl0Y2gvMixzaWxrYm94aGVpZ2h0LzIpCiAgICBz
aWxreCA9IG1heChwaXRjaC8yLHNpbGtib3h3aWR0aC8yKQogICAgc2lwZWx0ID0gc2lwZWx0ICsg
Ym94KHNpbGt4LHNpbGt5LC1zaWxreCwtc2lsa3ksc2lsa3dpZHRoKQogICAgc2lwZWx0ID0gc2lw
ZWx0ICsgYm94KC1zaWxreCwtc2lsa3ksLXNpbGt4K3BpdGNoLC1zaWxreStwaXRjaCxzaWxrd2lk
dGgpCiAgICByZXR1cm4gc2lwZWx0KyIpXG4iCgpkZWYgZ2VucGFydChhdHRyaWJ1dGVzKToKICAg
IHBhcnR0eXBlID0gZmluZGF0dHIoYXR0cmlidXRlcywgInR5cGUiKQogICAgaWYgcGFydHR5cGU9
PSdiZ2EnOgogICAgICAgIHJldHVybiBiZ2EoYXR0cmlidXRlcykKICAgIGVsaWYgcGFydHR5cGU9
PSdxZnAnOgogICAgICAgIHJldHVybiBxZnAoYXR0cmlidXRlcykKICAgIGVsaWYgcGFydHR5cGU9
PSdzbyc6CiAgICAgICAgcmV0dXJuIHNvKGF0dHJpYnV0ZXMpCiAgICBlbGlmIHBhcnR0eXBlPT0n
dHdvcGFkJzoKICAgICAgICByZXR1cm4gdHdvcGFkKGF0dHJpYnV0ZXMpCiAgICBlbGlmIHBhcnR0
eXBlPT0ndGFiYmVkJzoKICAgICAgICByZXR1cm4gdGFiYmVkKGF0dHJpYnV0ZXMpCiAgICBlbGlm
IHBhcnR0eXBlID09ICdkaXAnOgogICAgICAgIHJldHVybiBkaXAoYXR0cmlidXRlcykKICAgIGVs
aWYgcGFydHR5cGUgPT0gJ2RpaCc6CiAgICAgICAgcmV0dXJuIGRpaChhdHRyaWJ1dGVzKQogICAg
ZWxpZiBwYXJ0dHlwZSA9PSAnZGloZic6CiAgICAgICAgcmV0dXJuIGRpaGYoYXR0cmlidXRlcykK
ICAgIGVsaWYgcGFydHR5cGUgPT0gJ3NpcCc6CiAgICAgICAgcmV0dXJuIHNpcChhdHRyaWJ1dGVz
KQogICAgZWxzZToKICAgICAgICBwcmludCAiVW5rbm93biB0eXBlICIrcGFydHR5cGUKICAgIHBy
aW50ICIiCiAgICByZXR1cm4gIiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAoKZGVmIGlucXVvdGVzKG9yaWdzdHJpbmcpOgogICAgcXVvdGVwb3MgPSBy
ZS5zZWFyY2goIlwiLipcIiIsIG9yaWdzdHJpbmcpCiAgICBpZiBxdW90ZXBvczoKICAgICAgICBy
ZXR1cm4gb3JpZ3N0cmluZ1txdW90ZXBvcy5zdGFydCgpKzE6cXVvdGVwb3MuZW5kKCktMV0KICAg
IHJldHVybiAiIgoKIyBjb252ZXJ0IHZhbHVlcyBmcm9tIHNvdXJjZSB1bml0cyBpbnRvIG5hbm9t
ZXRlcnMKZGVmIHN0cjJwY2J1bml0cyhkaXN0KToKICAgIG51bWJlciA9IHJlLnNlYXJjaCgnWy0/
MC05XC5dKycsIGRpc3QpCiAgICBpZiBudW1iZXI6CiAgICAgICAgdmFsID0gZmxvYXQobnVtYmVy
Lmdyb3VwKCkpCiAgICBlbHNlOgogICAgICAgIHJldHVybiAwCiAgICBpZiBkaXN0W251bWJlci5l
bmQoKTpdLmZpbmQoIm1tIikhPS0xOgogICAgICAgIHJldHVybiBpbnQoMC41ICsgMTAwMDAwMCAq
IHZhbCkKICAgIGVsaWYgZGlzdFtudW1iZXIuZW5kKCk6XS5maW5kKCJtaWwiKSE9LTE6CiAgICAg
ICAgcmV0dXJuIGludCgwLjUgKyB2YWwgKiAyNS40ICogMTAwMCkKICAgIGVsaWYgZGlzdFtudW1i
ZXIuZW5kKCk6XS5maW5kKCJpbiIpIT0tMToKICAgICAgICByZXR1cm4gaW50KDAuNSArIHZhbCAq
IDI1LjQgKiAxMDAwMDAwKQogICAgcmV0dXJuIGludCgwLjUgKyB2YWwpCgppbXBvcnQgc3lzCiNp
bXBvcnQgc3RyaW5nCmltcG9ydCByZQoKIyBvcGVuIGlucHV0IGZpbGUKaWYgc3lzLmFyZ3ZbMTpd
OgogICAgdHJ5OgogICAgICAgIGluX2ZpbGUgPSBvcGVuKHN5cy5hcmd2WzFdLCAncicpCiAgICBl
eGNlcHQgSU9FcnJvciwgbXNnOgogICAgICAgIHByaW50ICdDYW5cJ3Qgb3BlbiAiJXMiOicgJSBz
eXMuYXJndlsxXSwgbXNnCiAgICAgICAgc3lzLmV4aXQoMSkKZWxzZToKICAgIGluX2ZpbGUgPSBz
eXMuc3RkaW4KICAgIHByaW50ICJObyBmaWxlIGdpdmVuIHNvIHVzaW5nIHN0ZGluIgoKIyBsaXN0
IG9mIGF0dHJpYnV0ZXMgdG8gYmUgZGVmaW5lZCBpbiBmaWxlCmF0dHJpYnV0ZXMgPSBkZWZhdHRy
KCkKIyBtYWluIHByb2Nlc3NpbmcgbG9vcCBlbnRlciBwcm9jZXNzaW5nIGVsZW1lbnRzCmxpbmVu
dW0gPSAxCndoaWxlIDE6CiAgICB2YWxpZGxpbmUgPSAwCiAgICBsaW5lID0gaW5fZmlsZS5yZWFk
bGluZSgpCiAgICBsaW5lbnVtID0gbGluZW51bSArIDEKICAgIGlmIG5vdCBsaW5lOgogICAgICAg
IGJyZWFrCiAgICAjIHN0cmlwIGNvbW1lbnRzCiAgICBpZiBsaW5lLmZpbmQoIiMiKSA9PSAwOgog
ICAgICAgIGNvbnRpbnVlCiAgICBpZiBsaW5lLmZpbmQoIiMiKSE9LTE6CiAgICAgICAgbGluZSA9
IGxpbmVbOmxpbmUuZmluZCgiIyIpLTFdCiAgICAjIHN0cmlwIHdoaXRlc3BhY2UKICAgIGxpbmUg
PSBsaW5lLnN0cmlwKCkKICAgIGlmIGxpbmUgPT0gIiI6CiAgICAgICAgY29udGludWUKICAgIGlm
IGxpbmUuZmluZCgiY2xlYXJhbGwiKSE9LTE6CiAgICAgICAgYXR0cmlidXRlcyA9IGRlZmF0dHIo
KQogICAgICAgIGNvbnRpbnVlCiAgICBmb3IgYXR0cmlidXRlIGluIGF0dHJpYnV0ZXM6CiAgICAg
ICAgaWYgbGluZS5maW5kKGF0dHJpYnV0ZVswXSkhPS0xOgogICAgICAgICAgICBhdHRyaWJ1dGVb
MV09aW5xdW90ZXMobGluZSkKICAgICAgICAgICAgaWYgbm90IGF0dHJpYnV0ZVsxXToKICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZVsxXT1zdHIycGNidW5pdHMobGluZSkKICAgICAgICAgICAgdmFs
aWRsaW5lID0gMQogICAgICAgICAgICBicmVhawogICAgaWYgYXR0cmlidXRlWzBdID09ICJwYXJ0
IjoKICAgICAgICBmaWxlbmFtZSA9IGZpbmRhdHRyKGF0dHJpYnV0ZXMsImVsZW1lbnRkaXIiKSsi
LyIrZmluZGF0dHIoYXR0cmlidXRlcywicGFydCIpCiAgICAgICAgcHJpbnQgImdlbmVyYXRlZCAl
cyIgJSBmaWxlbmFtZQogICAgICAgIG91dHB1dF9maWxlID0gb3BlbihmaWxlbmFtZSwgInciKQog
ICAgICAgIG91dHB1dF9maWxlLndyaXRlKGdlbnBhcnQoYXR0cmlidXRlcykpCiAgICAgICAgb3V0
cHV0X2ZpbGUuY2xvc2UoKQogICAgICAgIHZhbGlkbGluZSA9IDEKICAgIGlmIG5vdCB2YWxpZGxp
bmU6CiAgICAgICAgcHJpbnQgIklnbm9yaW5nIGdhcmJhZ2UgYXQgbGluZSAlZCA6JXMiICUgKGxp
bmVudW0sIGxpbmUpCgkJCQpwcmludCAiJWQgbGluZXMgcmVhZCIgJSBsaW5lbnVtCnN5cy5leGl0
KDApCg==
--f46d0407160b9866d604c6172244
Content-Type: application/octet-stream; name=footprintdata
Content-Disposition: attachment; filename=footprintdata
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h5adqnhc1

IyBQQ0IgZm9vdHByaW50cwojIENvbnZlcnQgdG8gbmV3bGliIGJ5IHVzaW5nIGZvb3RnZW4ucHkK
IyBUaGlzIGZpbGUgaXMgbm90IGNvcHlyaWdodGVkCiMgWW91IG1heSB1c2UgdGhlc2UgZm9vdHBy
aW50cyBhcyB5b3Ugd2lzaC4KIyBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgZGF0YSBp
cyBhY2N1cmF0ZQojIGNoZWNrIHRoZSBkYXRhc2hlZXRzIGZvciB5b3VyIGNvbXBvbmVudHMKCmVs
ZW1lbnRkaXIgPSAiZWxlbWVudHMiCQkjIHdoZXJlIHRvIHB1dCBnZW5lcmF0ZWQgZmlsZXMKIyBw
dXQgYWxsIHJlZmVyZW5jZSBkZXNpZ25hdG9ycyAxbW0gYWJvdmUgb3JpZ2luCnJlZmRlc3ggPSAw
bW0KcmVmZGVzeSA9IDFtbQojIFhpbGlueCBCR0EgcGFja2FnZXMKIyBkYXRhIGZyb20gWEFQUDE1
NwojIEVudGVyZWQgYnkgRGFycmVsbCBIYXJtb24KIyB2YWx1ZXMgZm9yIGFsbCAxbW0gcGl0Y2gg
WGlsaW54IEJHQQoJdHlwZSA9ICJiZ2EiCglwaXRjaCA9IDFtbQoJc2lsa3dpZHRoID0gMTAgbWls
cwoJc2lsa29mZnNldCA9IDFtbQkJIyB1c2VkIGlmIHNpbGtib3ggaXMgaW52YWxpZAoJZGlhID0g
MC40bW0KCW1hc2tjbGVhciA9IDYgbWlsCQkjIHRvdGFsIGFkZGl0aW9uYWwgb3BlbmluZzogMyBt
aWxzIGZyb20gcGFkIHRvIG1hc2sKCXBvbHljbGVhciA9IDggbWlsCiMgWGlsaW54IEZUMjU2IDFt
bSBwaXRjaCBCR0EKCXNpbGtib3h3aWR0aCA9IDE3bW0KCXNpbGtib3hoZWlnaHQgPSAxN21tCgly
b3dzID0gMTYKCWNvbHMgPSAxNgpwYXJ0ICJGVDI1Ni5mcCIKCXJvd3MgPSAyMgoJY29scyA9IDIy
CgkjIHNvbWUgYmFsbHMgbWlzc2luZyBvbiBGRzQ1NgoJb21pdGJhbGxzID0gIkg4OlI4LEg4Okgx
NSxSODpSMTUsSDE1OlIxNSIKcGFydCAiRkc0NTYuZnAiCglyb3dzID0gMjYKCWNvbHMgPSAyNgoJ
b21pdGJhbGxzID0gIiIKcGFydCAiRkc2NzYuZnAiCglyb3dzID0gMzAKCWNvbHMgPSAzMApwYXJ0
ICJGRzkwMC5mcCIKCXJvd3MgPSAzNAoJY29scyA9IDM0CnBhcnQgIkZHMTE1Ni5mcCIKCiMgWGls
aW54IFZpcnRleC01IHBhY2thZ2VzLCBpbmZvIGZyb20gVUcxOTUgKHY0LjIpIGVudGVyZWQgYnkg
TC4gRG9vbGl0dGxlCgl0eXBlID0gImJnYSIKCXBpdGNoID0gMW1tCglkaWEgPSAwLjQ1bW0gICAg
IyBleHRyYXBvbGF0ZWQgZnJvbSBVRzExMiB0YWJsZSA1LTMKIyBzdGFydCBpbmRpdmlkdWFsIHBh
Y2thZ2VzCglyb3dzID0gMTgKCWNvbHMgPSAxOApwYXJ0ICJGRjMyMy5mcCIgICAgICAgICMgc3Ry
YW5nZSBidXQgdHJ1ZQpwYXJ0ICJGRjMyNC5mcCIKCXJvd3MgPSAyNgoJY29scyA9IDI2CglvbWl0
YmFsbHMgPSAiQTEsQjEsRzEsSDEsTjEsUDEsVzEsWTEsQUUxLEFGMSxKOSIKcGFydCAiRkY2NjUu
ZnAiCglvbWl0YmFsbHMgPSAiIgpwYXJ0ICJGRjY3Ni5mcCIKCXJvd3MgPSAzNAoJY29scyA9IDM0
CglvbWl0YmFsbHMgPSAiQTEsQTQsQTUsQTEwLEEzNCxFMSxGMSxMMSxNMSxVMSxWMSxBQzEsQUQx
LEFKMSxBSzEsQVAxLEFQNCxBUDUsQVAxMCxBUDM0IgpwYXJ0ICJGRjExMzYuZnAiCglvbWl0YmFs
bHMgPSAiQTM0LEFQMSxBUDM0IgpwYXJ0ICJGRjExNTMuZnAiCglyb3dzID0gNDIKCWNvbHMgPSA0
MgoJb21pdGJhbGxzID0gIkE0MixBMTgsQTEzLEExMixBNyxBNixBMSxEMSxKMSxLMSxSMSxUMSxB
QTEsQUIxLEFHMSxBSDEsQU4xLEFQMSxBVzEsQkIxLEJCNixCQjcsQkIxMixCQjEzLEJCMTgsQkI0
MiIKcGFydCAiRkYxNzM4LmZwIgoJb21pdGJhbGxzID0gIkExLEE0MixCQjEsQkI0MiIKcGFydCAi
RkYxNzYwLmZwIgoKIyBYaWxpbnggU3BhcnRhbiA2IHBhY2thZ2VzLCBpbmZvIGZyb20gVUczODUg
ZW50ZXJlZCBieSBTdGVwaGVuIEVjb2IKCXR5cGUgPSAiYmdhIgoJb21pdGJhbGxzID0gIiIKCXBp
dGNoID0gMC41bW0KCXNpbGtvZmZzZXQgPSAwLjc1bW0JCSMgdXNlZCBpZiBzaWxrYm94IGlzIGlu
dmFsaWQKCXNpbGtib3h3aWR0aCA9IDFtbQoJc2lsa2JveGhlaWdodCA9IDFtbQoJc2lsa3dpZHRo
ID0gNiBtaWxzCglkaWEgPSAwLjI3bW0gICAgIyBmcm9tIFVHMzkzCgltYXNrY2xlYXIgPSAwLjA4
bW0JCSMgdG90YWwgYWRkaXRpb25hbCBvcGVuaW5nIGZyb20gcGFkIHRvIG1hc2sKCXJvd3MgPSAx
NAoJY29scyA9IDE0CnBhcnQgIkNQRzE5Ni5mcCIKCXBpdGNoID0gMC44bW0KCXNpbGtvZmZzZXQg
PSAwLjltbQkJIyB1c2VkIGlmIHNpbGtib3ggaXMgaW52YWxpZAoJc2lsa3dpZHRoID0gNyBtaWxz
CglkaWEgPSAwLjM3bW0gICAgIyBmcm9tIFVHMzkzCgltYXNrY2xlYXIgPSAwLjFtbQkJIyB0b3Rh
bCBhZGRpdGlvbmFsIG9wZW5pbmcgZnJvbSBwYWQgdG8gbWFzawoJcm93cyA9IDE1Cgljb2xzID0g
MTUKcGFydCAiQ1NHMjI1LmZwIgoJcm93cyA9IDE4Cgljb2xzID0gMTgKcGFydCAiQ1NHMzI0LmZw
IgoJcm93cyA9IDIyCgljb2xzID0gMjIKcGFydCAiQ1NHNDg0LmZwIgoJcGl0Y2ggPSAxbW0KCXNp
bGtvZmZzZXQgPSAxLjBtbQkJIyB1c2VkIGlmIHNpbGtib3ggaXMgaW52YWxpZAoJc2lsa3dpZHRo
ID0gOCBtaWxzCglkaWEgPSAwLjRtbSAgICAjIGZyb20gVUczOTMKCW1hc2tjbGVhciA9IDAuMW1t
CQkjIHRvdGFsIGFkZGl0aW9uYWwgb3BlbmluZyBmcm9tIHBhZCB0byBtYXNrCglyb3dzID0gMTYK
CWNvbHMgPSAxNgpwYXJ0ICJGVEcyNTYuZnAiCglyb3dzID0gMjIKCWNvbHMgPSAyMgpwYXJ0ICJG
R0c0ODQuZnAiCglyb3dzID0gMjYKCWNvbHMgPSAyNgpwYXJ0ICJGR0c2NzYuZnAiCglyb3dzID0g
MzAKCWNvbHMgPSAzMApwYXJ0ICJGR0c5MDAuZnAiCgojIFFGUCB0eXBlIHBhcnRzCgl0eXBlICJx
ZnAiCQkjIHBpbnMgbXVzdCBiZSBkaXZpc2libGUgYnkgNAoJcGl0Y2ggPSAwLjUgbW0KCXBpbnMg
PSAxNDQKCXBhZHdpZHRoID0gMS42IG1tCgl3aWR0aCA9IDE5LjhtbQoJaGVpZ2h0ID0gMTkuOG1t
CglwYWRoZWlnaHQgPSAwLjMybW0KCW1hc2tjbGVhciA9IDAuMTRtbQkJIyB0b3RhbCBhZGRpdGlv
bmFsIG9wZW5pbmcgZnJvbSBwYWQgdG8gbWFzay4gU0VFOiB3YXMgMC4xOW1tIDIwMTIwNzMxCglz
aWxrc3R5bGUgPSAiaW5zaWRlIgoJc2lsa29mZnNldCA9IDAuNW1tCnBhcnQgIlRRRzE0NC5mcCIK
CXBpbnMgPSAxNzYKCXdpZHRoID0gMjQgbW0JCSMgZGlzdGFuY2UgaW5zaWRlIHBpbnMKCWhlaWdo
dCA9IDI0IG1tCglwYWR3aWR0aCA9IDEuNSBtbQoJcGFkaGVpZ2h0ID0gMC4yNSBtbQoJc2lsa29m
ZnNldCA9IDAuMjVtbSAJCSMgaW5zaWRlIHBhZHMgd2l0aCAxbW0gY2xlYXJhbmNlCnBhcnQgIkxR
RlAxNzYuZnAiCglwaW5zID0gNDgKCXdpZHRoID0gN21tCglwYWRoZWlnaHQgPSAwLjI3bW0KCXBh
ZHdpZHRoID0gMS4ybW0KCXNpbGtvZmZzZXQgPSAwLjI1bW0KcGFydCAiVFFGUDQ4LmZwIgoJI2Vw
ID0gMm1tCQkJIyAybW0gc3F1YXJlIGV4cG9zZWQgdGhlcm1hbCBwYWQKCWVwID0gNG1tCQkJIyBj
aGFuZ2VkIDUvMTMvMDQgRGFycmVsbCBIYXJtb24KcGFydCAiVFFGUDQ4RVAuZnAiCQkJCSMgQUQ5
OTU0IERhdGFzaGVldAoJZXAgPSAwCQkJCSMgdHVybiBvZmYgZXAKCXBpbnMgPSAxNgoJd2lkdGgg
PSAyLjltbQoJcGFkd2lkdGggPSAxbW0KCXBpdGNoID0gMC42NW1tCnBhcnQgIlFGTjE2LmZwIgoJ
ZXAgPSAybW0KCSMgQ2hlY2tlZCBhZ2FpbnN0IEFEWEwzMjAKcGFydCAiUUZOMTZFUC5mcCIKCWVw
ID0gMAoJcGlucyA9IDY0Cgl3aWR0aCA9IDhtbQoJcGl0Y2ggPSAwLjVtbQoJc2lsa2JveHdpZHRo
ID0gOS41bW0KCXNpbGtib3hoZWlnaHQgPSA5LjVtbQpwYXJ0ICJRRk42NC5mcCIKCWVwID0gNy4x
NW1tCnBhcnQgIlFGTjY0RVAuZnAiCgkjIHVzZWQgb24gTGluZWFyIFRlY2hub2xvZ3kncyBMVEMy
MjQ5IGFuZCByZWxhdGVkIGhpZ2ggc3BlZWQgQURDcwoJZXAgPSAzLjQ1bW0KCXBpbnMgPSAzMgoJ
cGl0Y2ggPSAwLjUwbW0KCXdpZHRoID0gNC4xMG1tCgloZWlnaHQgPSA0LjEwbW0KCXBhZHdpZHRo
ID0gMC43MG1tCglwYWRoZWlnaHQgPSAwLjI1bW0KCXNpbGtvZmZzZXQgPSAwLjFtbQoJc2lsa3dp
ZHRoID0gNiBtaWxzCnBhcnQgIlFGTjMyVUguZnAiCQoJIyB1c2VkIG9uIE5YUHMgTFBDMTExMSBm
YW1pbHkKCWVwID0gNC41bW0KCXBpbnMgPSAzMgoJcGl0Y2ggPSAwLjY1bW0KCXdpZHRoID0gNS40
MG1tCgloZWlnaHQgPSA1LjQwbW0KCXBhZHdpZHRoID0gMS4xNW1tCglwYWRoZWlnaHQgPSAwLjM1
bW0KCXNpbGtvZmZzZXQgPSAwLjJtbQoJc2lsa3dpZHRoID0gMTAgbWlscwpwYXJ0ICJIVlFGTjMz
LmZwIgoJIyB1c2VkIG9uIFRJIENDMjU0MAoJZXAgPSA0LjVtbQoJcGlucyA9IDQwCglwaXRjaCA9
IDAuNW1tCgl3aWR0aCA9IDUuMTBtbQoJaGVpZ2h0ID0gNS4xMG1tCglwYWR3aWR0aCA9IDEuMW1t
CglwYWRoZWlnaHQgPSAwLjI4bW0KCXNpbGtvZmZzZXQgPSAwLjJtbQoJc2lsa3dpZHRoID0gMTAg
bWlscwpwYXJ0ICJQVlFGTjQwLmZwIgoJIyB1c2VkIG9uIEludGVyc2lsIEFEQyBmYW1pbHkKCWVw
ID0gNm1tCglwaW5zID0gNzIKCXBpdGNoID0gMC41bW0KCXdpZHRoID0gOW1tCgloZWlnaHQgPSA5
bW0KCXBhZHdpZHRoID0gMC43bW0KCXBhZGhlaWdodCA9IDAuMjNtbQoJc2lsa29mZnNldCA9IDAu
Mm1tCglzaWxrd2lkdGggPSAxMCBtaWxzCnBhcnQgIlFGTjcyLmZwIgoJc2lsa2JveHdpZHRoID0g
MAoJc2lsa3dpZHRoID0gMTAgbWlscwoJIyB1c2VkIG9uIEN5cHJlc3MncyBDWTdDNjgwMTMtTEY1
NgoJZXAgPSA2bW0KCXBpbnMgPSA1NgoJcGl0Y2ggPSAwLjUwbW0KCXdpZHRoID0gNy4xMG1tCglo
ZWlnaHQgPSA3LjEwbW0KCXBhZHdpZHRoID0gMC43MG1tCglwYWRoZWlnaHQgPSAwLjI4bW0KCXNp
bGtzdHlsZSA9ICJvdXRzaWRlIgpwYXJ0ICJRRk41NkxGLmZwIgoJc2lsa29mZnNldCA9IDAuNW1t
CgllcCA9IDAKCXBpbnMgPSA2OAoKCXBpbnMgPSAxMDAKCSMgcmVjdGFuZ3VsYXIgcGFja2FnZQoJ
cGluc2hpZ2ggPSAzMAoJcGl0Y2ggPSAwLjY1bW0KCXdpZHRoID0gMTRtbQoJaGVpZ2h0ID0gMjBt
bQoJcGFkd2lkdGggPSAxLjNtbQoJcGFkaGVpZ2h0ID0gMC4zNW1tCglzaWxrc3R5bGUgPSAiaW5z
aWRlIgpwYXJ0ICJDWTdDNjgwMTNUUTEwMC5mcCIKCglwaW5zID0gNgoJdHlwZSAic28iCgl3aWR0
aCA9IDEuNW1tCglwaXRjaCA9IDAuNjVtbQoJcGFkaGVpZ2h0ID0gMC4zM21tCglwYWR3aWR0aCA9
IDEuNm1tCglzaWxrb2Zmc2V0ID0gMTUgbWlscwoJc2lsa2JveGhlaWdodCA9IDMuMW1tCglzaWxr
d2lkdGggPSAxMCBtaWxzCglzaWxrc3R5bGUgPSAiaW5zaWRlIgpwYXJ0ICJUU1NPUDYuZnAiCiMg
U09JQyBwYXJ0cwojIGRhdGEgZnJvbSBUSSBTQkZBMDE1QQojIGVudGVyZWQgYnkgRGFycmVsbCBI
YXJtb24KCXBpbnMgPSA4Cgl0eXBlICJzbyIKCXdpZHRoID0gOTMgbWlscwoJcGl0Y2ggPSA1MCBt
aWxzCglwYWRoZWlnaHQgPSAyMCBtaWxzCglwYWR3aWR0aCA9IDk0IG1pbHMKCXNpbGtvZmZzZXQg
PSAxNSBtaWxzCglzaWxrYm94aGVpZ2h0ID0gMC4yaW4KCXNpbGt3aWR0aCA9IDEwIG1pbHMKCXNp
bGtzdHlsZSA9ICJpbnNpZGUiCnBhcnQgIlNPLTguZnAiCglwaW5zID0gMTQKCXNpbGtib3hoZWln
aHQgPSAwLjM0NCBpbgpwYXJ0ICJTTy0xNC5mcCIKCXBpbnMgPSAxNgoJc2lsa2JveGhlaWdodCA9
IDAuMzk0IGluCnBhcnQgIlNPLTE2LmZwIgojIGNoYW5nZSB3aWR0aCB0byBiZWdpbiB3aWRlIHBh
cnRzCglwaW5zID0gMTYKCXdpZHRoID0gMjU4IG1pbHMKCXBhZHdpZHRoID0gOTkgbWlscwoJc2ls
a2JveGhlaWdodCA9IDAuNDEzIGluCnBhcnQgIlNPLTE2Vy5mcCIKCXBpbnMgPSAxOAoJc2lsa2Jv
eGhlaWdodCA9IDAuNDYzIGluCnBhcnQgIlNPLTE4Vy5mcCIKCXBpbnMgPSAyMAoJc2lsa2JveGhl
aWdodCA9IDAuNTEyIGluCnBhcnQgIlNPLTIwVy5mcCIKCXBpbnMgPSAyNAoJc2lsa2JveGhlaWdo
dCA9IDAuNjE0IGluCnBhcnQgIlNPLTI0Vy5mcCIKCXBpbnMgPSAyOAoJc2lsa2JveGhlaWdodCA9
IDAuNzEzIGluCnBhcnQgIlNPLTI4Vy5mcCIKCXBpbnMgPSA2CglwaXRjaCA9IDM3LjQgbWlscwoJ
d2lkdGggPSAwLjAzOCBpbgoJcGFkaGVpZ2h0ID0gMjAgbWlsCglwYWR3aWR0aCA9IDU4IG1pbAoJ
c2lsa2JveGhlaWdodCA9IDAuMTE4IGluCglzaWxrc3R5bGUgPSAib3V0c2lkZSIKcGFydCAiU09U
MjMtNi5mcCIKCXBhZHdpZHRoID0gNjggbWlsCglwaW5zID0gOAoJcGl0Y2ggPSAyNS42IG1pbHMK
CXdpZHRoID0gMC4wMTkgaW4KcGFydCAiU09UMjMtOC5mcCIKCXdpZHRoID0gMC4xMDEgaW4KCXBh
ZGhlaWdodCA9IDE1IG1pbAoJcGFkd2lkdGggPSA2NiBtaWwKCXNpbGtib3hoZWlnaHQgPSAwLjEy
MiBpbgoJc2lsa3N0eWxlID0gImluc2lkZSIKcGFydCAiTVNPUC04LmZwIgoJcGlucyA9IDIwCglw
YWR3aWR0aCA9IDg5IG1pbHMKCXdpZHRoID0gMC4xODEgaW4KCXNpbGtib3hoZWlnaHQgPSAwLjI5
NSBpbgpwYXJ0ICJTU09QLTIwLmZwIgoJcGlucyA9IDI0CglzaWxrYm94aGVpZ2h0ID0gMC4zNTUg
aW4KcGFydCAiU1NPUC0yNC5mcCIKCXBpbnMgPSAyOAoJc2lsa2JveGhlaWdodCA9IDAuNDEzIGlu
CnBhcnQgIlNTT1AtMjguZnAiCglwaXRjaCA9IDI1IG1pbAoJcGlucyA9IDE2Cgl3aWR0aCA9IDAu
MDkzIGluCglwYWR3aWR0aCA9IDk0IG1pbAoJc2lsa2JveGhlaWdodCA9IDAuMTk3IGluCnBhcnQg
IlNTT1AtMTYuZnAiCglwaW5zID0gNDgKCXBhZHdpZHRoID0gODkgbWlsCgl3aWR0aCA9IDAuMjc5
IGluCglzaWxrYm94aGVpZ2h0ID0gMC42MzAgaW4KcGFydCAiU1NPUC00OC5mcCIKCXBpbnMgPSA1
NgoJc2lsa2JveGhlaWdodCA9IDAuNzMwIGluCnBhcnQgIlNTT1AtNTYuZnAiCglwaW5zID0gNjYK
CXBhZHdpZHRoID0gMS4zMCBtbQoJcGl0Y2ggPSAwLjY1IG1tCgl3aWR0aCA9IDEwLjE2IG1tCglz
aWxrYm94aGVpZ2h0ID0gMjIuMjJtbQpwYXJ0ICJUU09QLTY2LmZwIgojIGFzIHVzZWQgb24gYSBN
Qzc0VkhDMUdUMDQsIERGIHN1ZmZpeDogU0MtODhBL1NPVC0zNTMvU0MtNzAKIyBleGNlcHQgeW91
J2xsIGhhdmUgdG8gcmVtb3ZlIHBpbiA1IGFuZCByZW5hbWUgcGluIDYgYXMgNS4KCXBpbnMgPSA2
CglwYWR3aWR0aCA9IDAuNDAgbW0KCXBpdGNoID0gMC42NSBtbQoJd2lkdGggPSAxLjQwIG1tCglw
YWR3aWR0aCA9IDAuOTAgbW0KCXNpbGtib3hoZWlnaHQgPSAyLjIwIG1tCnBhcnQgIlNDLTg4QS5m
cCIKCglwaW5zID0gMjAKCXBpdGNoID0gMC44IG1tCglwYWRoZWlnaHQgPSAwLjUgbW0KCXBhZHdp
ZHRoID0gMi4wIG1tCgl3aWR0aCA9IDYuMiBtbQoJc2tldyA9IDAuMiBtbQoJc2lsa2JveGhlaWdo
dCA9IDE0LjI1IG1tCnBhcnQgIlNGUC1iYXNlLmZwIiAgICAjIGluY29tcGxldGUsIG5lZWRzIG1v
dW50aW5nIGhvbGVzIGFuZCBtb3JlCiAgICAgICAgZXAgPSAzIG1tCglyZWN0ID0gNiBtbQpwYXJ0
ICJTRlAtYmFzZS5mcCIgICAgIyBpbmNvbXBsZXRlLCBuZWVkcyBtb3VudGluZyBob2xlcyBhbmQg
bW9yZQoJZXAgPSAwCglza2V3ID0gMAoJcGlucyA9IDE2CglwaXRjaCA9IDEuMG1tCglwYWRoZWln
aHQgPSAwLjdtbQoJcGFkd2lkdGggPSAxLjdtbQoJd2lkdGggPSA0LjNtbQoJc2lsa2JveGhlaWdo
dCA9IDguMG1tCnBhcnQgIlNvbG9TdGFja2VyLTE2LmZwIgojIFNPSSBwYXJ0IFMwMzcgNiBwaW4g
b3B0b2NvdXBsZXIKCXBpbnMgPSA2CglwYWR3aWR0aCA9IDEuNTZtbQoJd2lkdGggPSA3LjQ5bW0K
CXBhZGhlaWdodCA9IDEuNzhtbQoJcGl0Y2ggPSAyLjU0bW0KCXNpbGtzdHlsZSA9ICJpbnNpZGUi
CglzaWxrYm94aGVpZ2h0ID0gMG1tCglzaWxrYm94d2lkdGggPSAwbW0KCXNpbGtvZmZzZXQgPSAw
LjRtbQpwYXJ0ICJTMDM3LmZwIgojIEFEVDEtMVdUIDYgcGluIHRyYW5zZm9ybWVyCglwaW5zID0g
NgoJcGFkd2lkdGggPSAxMDBtaWwKCXdpZHRoID0gMTAwbWlsCglwYWRoZWlnaHQgPSA2NW1pbAoJ
cGl0Y2ggPSAxMDBtaWwKCXNpbGtzdHlsZSA9ICJpbnNpZGUiCglzaWxrYm94aGVpZ2h0ID0gMG1t
CglzaWxrYm94d2lkdGggPSAwbW0KCXNpbGtvZmZzZXQgPSAwLjRtbQpwYXJ0ICJBRFQxLmZwIgoJ
cGlucyA9IDQKCXBhZHdpZHRoID0gMi4xbW0KCXdpZHRoID0gNy4wbW0KCXBhZGhlaWdodCA9IDEu
NG1tCglwaXRjaCA9IDQuNDhtbQoJc2lsa3N0eWxlID0gImluc2lkZSIKCXNpbGtib3hoZWlnaHQg
PSAwbW0KCXNpbGtib3h3aWR0aCA9IDBtbQoJc2lsa29mZnNldCA9IDAuNW1tCnBhcnQgIlR5Y29C
dXR0b24uZnAiCglwYWR3aWR0aCA9IDEuNW1tCgl3aWR0aCA9IDAuN21tCglwYWRoZWlnaHQgPSAx
LjdtbQoJcGl0Y2ggPSAyLjU0bW0KCXNpbGtzdHlsZSA9ICJvdXRzaWRlIgoJc2lsa2JveGhlaWdo
dCA9IDBtbQoJc2lsa2JveHdpZHRoID0gMG1tCglzaWxrb2Zmc2V0ID0gMC41bW0KcGFydCAiUGVy
aWNvbU9zYy5mcCIKICAgICAJcmVjdCA9IDAKIyBlbmQgU09JQwoKIyBESVAgcGFydHMKCXR5cGUg
PSAiZGlwIgoJZHJpbGwgPSAzMCBtaWwKCXBhZGRpYSA9IDU1IG1pbAoJcGlucyA9IDgKCXdpZHRo
ID0gMC4zIGluCglwaXRjaCA9IDAuMSBpbgpwYXJ0ICJESVA4LmZwIgoJcGlucyA9IDE0CnBhcnQg
IkRJUDE0LmZwIgoJcGlucyA9IDE2CnBhcnQgIkRJUDE2LmZwIgoJcGlucyA9IDE4CnBhcnQgIkRJ
UDE4LmZwIgoJcGlucyA9IDIwCnBhcnQgIkRJUDIwLmZwIgoJcGlucyA9IDI0CnBhcnQgIkRJUDI0
Ti5mcCIKCXBpbnMgPSAyOApwYXJ0ICJESVAyOE4uZnAiCgl3aWR0aCA9IDAuNiBpbgpwYXJ0ICJE
SVAyOFcuZnAiCglwaW5zID0gMjQKcGFydCAiRElQMjRXLmZwIgoJcGlucyA9IDQwCnBhcnQgIkRJ
UDQwLmZwIgojIHRyYWRpdGlvbmFsICgxMDAgbWlsKSBkb3VibGUtcm93IGhlYWRlcnMKCXdpZHRo
ID0gMC4xIGluCglwaW5zID0gMTAKCWRyaWxsID0gNDAgbWlscwoJcGFkZGlhID0gNzAgbWlscwpw
YXJ0ICJIRFIxMC5mcCIKCXBpbnMgPSAxNgpwYXJ0ICJIRFIxNi5mcCIKCXBpbnMgPSAyMApwYXJ0
ICJIRFIyMC5mcCIKCXBpbnMgPSAyNgpwYXJ0ICJIRFIyNi5mcCIKCXBpbnMgPSAzNApwYXJ0ICJI
RFIzNC5mcCIKCXBpbnMgPSA0MApwYXJ0ICJIRFI0MC5mcCIKIyBzaW5nbGUtcm93IGhlYWRlcnMK
CXR5cGUgPSAic2lwIgoJcGlucyA9IDIKcGFydCAiU0lQMi5mcCIKCXBpbnMgPSAzCnBhcnQgIlNJ
UDMuZnAiCglwaW5zID0gNApwYXJ0ICJTSVA0LmZwIgoJcGlucyA9IDUKcGFydCAiU0lQNS5mcCIK
CXBpbnMgPSA2CnBhcnQgIlNJUDYuZnAiCglwaW5zID0gOApwYXJ0ICJTSVA4LmZwIgoJcGlucyA9
IDEwCnBhcnQgIlNJUDEwLmZwIgojIG1ldHJpYyAoMm1tKSBkb3VibGUtcm93IGhlYWRlcnMKCXR5
cGUgPSAiZGlwIgoJcGl0Y2ggPSAyIG1tCgl3aWR0aCA9IDIgbW0KCXBpbnMgPSAyCglkcmlsbCA9
IDMwIG1pbHMKCXBhZGRpYSA9IDYwIG1pbHMKcGFydCAiSERSMl8ybW0uZnAiCglwaW5zICA9IDgK
cGFydCAiSERSOF8ybW0uZnAiCglwaW5zID0gMTQKcGFydCAiSERSMTRfMm1tLmZwIgoJcGlucyA9
IDE2CnBhcnQgIkhEUjE2XzJtbS5mcCIKCXBpbnMgPSAyNApwYXJ0ICJIRFIyNF8ybW0uZnAiCgoK
I1RhYmJlZCBwYXJ0cwoJIyBwYXJhbWV0ZXJzIGNvbW1vbiB0byBhbGwgRERQQUsKCSMgZnJvbSBU
SSBTQkZBMDE1QQoJIyBFbnRlcmVkIGJ5IERhcnJlbGwgSGFybW9uCgl0eXBlID0gInRhYmJlZCIK
CXBhZGhlaWdodCA9IDUuMDhtbQoJdGFiaGVpZ2h0ID0gMTEuNDNtbQoJdGFid2lkdGggPSAxMi45
NW1tCgkjIGRpc3RhbmNlIGZyb20gcGFkcyB0byB0YWIgcGFkCgloZWlnaHQgPSAyLjE2bW0KCSMg
RERQQUszIHNwZWNpZmljCglwaXRjaCA9IDIuNTRtbQoJcGlucyA9IDMKCXBhZHdpZHRoID0gMS4z
NW1tCnBhcnQgPSAiRERQQUszLmZwIgoJIyBERFBBSyA1CglwaXRjaCA9IDEuNzBtbQoJcGFkd2lk
dGggPSAwLjk3bW0KCXBpbnMgPSA1CnBhcnQgPSAiRERQQUs1LmZwIgoJIyBERFBBSyA3CglwaXRj
aCA9IDEuMjdtbQoJcGFkd2lkdGggPSAwLjg5bW0KCXBpbnMgPSA3CnBhcnQgPSAiRERQQUs3LmZw
IgoJIyBTT1QyMjMKCXRhYndpZHRoID0gNC43Mm1tCgl0YWJoZWlnaHQgPSAyLjExbW0KCWhlaWdo
dCA9IDMuODltbQoJcGFkaGVpZ2h0ID0gMi4xMW1tCgkjIDMgcGluIHNwZWNpZmljCglwaW5zID0g
MwoJcGFkd2lkdGggPSAwLjgxbW0KCXBpdGNoID0gMi4zMG1tCnBhcnQgPSAiU09UMjIzLTMuZnAi
CglwaW5zID0gNQoJcGFkd2lkdGggPSAwLjUxbW0KCXBpdGNoID0gMS4yN21tCnBhcnQgPSAiU09U
MjIzLTUuZnAiCiMgU09JIHBhcnQgUzAyMCwgaHlicmlkIFNPVDIzIGFuZCBTT1Q1MjMKCXRhYndp
ZHRoID0gMC43bW0KCXRhYmhlaWdodCA9IDEuMW1tCgloZWlnaHQgPSAwLjhtbQoJcGFkaGVpZ2h0
ID0gMS4xbW0KCXBpbnMgPSAyCglwYWR3aWR0aCA9IDAuN21tCglwaXRjaCA9IDEuM21tCnBhcnQg
PSAiUzAyMC5mcCIKCgojIDAyMDEsIDA0MDIsIDA2MDMsIC4uLi4KCXR5cGUgInR3b3BhZCIKCXNp
bGtib3hoZWlnaHQgPSAwCglzaWxrYm94d2lkdGggPSAwCgl3aWR0aCA9IDAuMjUwbW0KCXBhZHdp
ZHRoID0gMC4yMjVtbQoJcGFkaGVpZ2h0ID0gMC4zMDBtbQoJc2lsa29mZnNldCA9IDYgbWlsCglz
aWxrd2lkdGggPSA1IG1pbApwYXJ0ICIwMjAxLmZwIgoJd2lkdGggPSAwLjVtbQoJcGFkd2lkdGgg
PSAwLjRtbQoJcGFkaGVpZ2h0ID0gMC41bW0KcGFydCAiMDQwMi5mcCIKI0h5YnJpZCAwNjAzLzA0
MDIgZm9vdHByaW50CglzaWxrd2lkdGggPSAxMCBtaWxzCgl3aWR0aCA9IDAuNW1tCglwYWR3aWR0
aCA9IDAuODVtbQoJcGFkaGVpZ2h0ID0gMC44bW0KcGFydCAiMDUwMy5mcCIKI0h5YnJpZCAwNjAz
LzA0MDIgZm9vdHByaW50Cgl3aWR0aCA9IDAuOG1tCglwYWR3aWR0aCA9IDAuN21tCglwYWRoZWln
aHQgPSAwLjhtbQpwYXJ0ICIwNjAzLmZwIgojSHlicmlkIDA4MDUvMDYwMyBmb290cHJpbnQKCXdp
ZHRoID0gMC44bW0KCXBhZHdpZHRoID0gMC45bW0KCXBhZGhlaWdodCA9IDEuMm1tCnBhcnQgIjA3
MDQuZnAiCiNIeWJyaWQgMDgwNS8wNjAzIGZvb3RwcmludAoJd2lkdGggPSAxbW0KCXBhZHdpZHRo
ID0gMC44bW0KCXBhZGhlaWdodCA9IDEuMm1tCnBhcnQgIjA4MDUuZnAiCgl3aWR0aCA9IDJtbQoJ
cGFkd2lkdGggPSAwLjhtbQoJcGFkaGVpZ2h0ID0gMS41bW0KcGFydCAiMTIwNi5mcCIKCSMgSEM0
OVVTTUQgWFRBTAoJc2lsa3dpZHRoID0gMTAgbWlsCgl3aWR0aCA9IDRtbQoJcGFkd2lkdGggPSA0
LjdtbQoJcGFkaGVpZ2h0ID0gMC44bW0KCXNpbGtib3hoZWlnaHQgPSA1bW0KcGFydCAiSEM0OVVT
TUQuZnAiCgkjIFRESyBTTEY3MDMyIGluZHVjdG9yCgl3aWR0aCA9IDQuOW1tCglwYWR3aWR0aCA9
IDEuNW1tCglwYWRoZWlnaHQgPSAyLjJtbQoJc2lsa2JveGhlaWdodCA9IDdtbQoJc2lsa2JveHdp
ZHRoID0gOG1tCnBhcnQgIlNMRjcwMzIuZnAiCgkjIENvRXYvVHljbyBEUyBzZXJpZXMgaW5kdWN0
b3IsIERTNjYzMAoJd2lkdGggPSAwLjE2MGluCglwYWR3aWR0aCA9IDAuMDU1aW4KCXBhZGhlaWdo
dCA9IDAuMTQwaW4KCXNpbGtib3hoZWlnaHQgPSAwLjE3N2luCglzaWxrYm94d2lkdGggPSAwaW4K
cGFydCAiRFM2NjMwLmZwIgkKICAgICAgICAjIE9TUkFNIExFRCAiMTIwNiIKICAgICAgICB3aWR0
aCA9IDIuMG1tCglwYWR3aWR0aCA9IDEuNW1tCglwYWRoZWlnaHQgPSAxLjVtbQoJc2lsa2JveGhl
aWdodCA9IDIuMG1tCglzaWxrYm94d2lkdGggPSAwaW4KcGFydCAiT1NSQU1fTEVEXzEyMDYuZnAi
Cg==
--f46d0407160b9866d604c6172244--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019