nroff

[email protected] ("Nathan Thompson") Tue, 8 Aug 2006 10:16:18 -0400
Newsgroups perl.ppt
Message-ID <[email protected]>
------=_Part_13296_2457140.1155046578388
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Half-expecting this to bounce.

Years ago I submitted this for the power tools project but it was dropped.
I stumbled across this now and I'm trying again - I think it's amusing.
See attached.
Thanks.

------=_Part_13296_2457140.1155046578388
Content-Type: application/octet-stream; name=nroff
Content-Transfer-Encoding: base64
X-Attachment-Id: f_eqmcv8bi
Content-Disposition: attachment; filename="nroff"

IyFwZXJsIC13DQojIFdobyB3b3VsZCB3cml0ZSBhIHZlcnNpb24gb2YgbnJvZmYgaW4gUGVybD8N
CiMgQ29weXJpZ2h0IDIwMDAgYnkgTmF0aGFuIFNjb3R0IFRob21wc29uIDxxdWltYnkgYXQgY2l0
eS1uZXQgZG90IGNvbT4uDQojIFlvdSBtYXkgZm9sZCwgc3BpbmRsZSBhbmQgbXV0aWxhdGUgYWNj
b3JkaW5nIHRvIHRoZSBHTlUgUHVibGljIExpY2Vuc2UNCiMgKHNlZSBodHRwOi8vd3d3LmdudS5v
cmcvIGZvciBkZXRhaWxzKS4NCiMgTWFudWFsIHBhZ2UgYXQgYm90dG9tLg0KIw0KIyAkSWQ6IG4g
MS4yIDIwMDAvMDcvMjYgMjA6MzE6MzggbnRob21wc28gRXhwIG50aG9tcHNvICQNCiMNCiMgSSBo
YXZlIHN0cml2ZW4gdG8gcmVtYWluIHRydWUgdG8gdHJvZmYncyAicmViYXJiYXRpdmUgaW5wdXQg
c3ludGF4LA0KIyBteXN0ZXJpb3VzIGFuZCB1bmRvY3VtZW50ZWQgcHJvcGVydGllcyBpbiBzb21l
IGFyZWFzLA0KIyBhbmQgYSB2b3JhY2lvdXMgYXBwZXRpdGUgZm9yIGNvbXB1dGVyIHJlc291cmNl
cyIuDQojDQojIFBvcnRpbmc6DQojICRNYWNyb1BhdGggaXMgdGhlIHN5c3RlbSBwYXRoIHRvIHRo
ZSBzdGFuZGFyZCBtYWNybyBmaWxlcw0KIyBpbmNsdWRlZCBieSB0aGUgLW0gc3dpdGNoICguZS5n
LiAtbWFuIGluY2x1ZGVzICcvdXNyL2xpYi90bWFjL3RtYWMuYW4nKS4NCiMgV2l0aCBsdWNrIGZl
dyBvdGhlciBzeXN0ZW0gZGVwZW5kZW5jaWVzIGV4aXN0Lg0KIw0KIyBDaGFyYWN0ZXIgU2V0Og0K
IyBBbnkgOC1iaXQgY2hhcmFjdGVyIHNldCBzaG91bGQgYmUgdXNhYmxlLg0KIyBZb3UgY2FuIGNo
YW5nZSB0aGUgJExFQURFUl9DSEFSICgiXDAwMSIsIFNPSCBpbiBBU0NJSSkuDQojIFJ1ZGltZW50
YXJ5IFVuaWNvZGUgc3VwcG9ydCBpcyBlbmFibGVkIGJ5IHRoZSAtdSBzd2l0Y2gsDQojIHdoaWNo
IGZvcmNlcyB0aGUgaW5wdXQgZmlsZXMgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgVVRGLTguDQojDQoj
IE91dHB1dCBEZXZpY2VzOg0KIyBUaGUgb3V0cHV0IGRldmljZSBpcyBqdXN0IGEgcGFja2FnZSBs
b2FkZWQgdmlhIHRoZSAnLVQnIHN3aXRjaA0KIyBzbyBuZXcgZGV2aWNlcyBjYW4gYmUgZWFzaWx5
IGFkZGVkLiAgVGhlIGRlZmF1bHQgaXMgcGxhaW4gdGV4dA0KIyAoc2VlIHRoZSBPdXRwdXQgcGFj
a2FnZSBpbiB0aGUgX19EQVRBX18gc2VjdGlvbi4pDQojIFN1cHBvcnQgZm9yIHRoZSBNZXJnZW50
aGFsZXIgTGlub3Ryb24gMjAyIGlzIGxlZnQgYXMgYW4gZXhlcmNpc2UuDQojDQojIFRvIERvOg0K
IyAqIEEgZmV3IG1vcmUgcmVxdWVzdHMgYW5kIGVzY2FwZXMsIGdlbmVyYWxseSBlYXN5Lg0KIyAq
IEdyb2ZmIGNvbXBhdGliaWxpdHkgLSB0aGlzIGlzIGEgYml0IGhhcmRlci4NCiMgKiBFcnJvciBj
aGVja2luZyBhbmQgbWVzc2FnZXMuICBQcmludCBiYWNrdHJhY2UuDQojICogRmFzdGVyIHBhcnNp
bmcuICBPbmUgcmVhc29uIHdoeSBsaW5lLW9yaWVudGVkIHBhcnNpbmcgaXMgd2llcmQgaXMgdGhh
dA0KIyAgIHBhcnNlZCBtb3Rpb25zLCBmb250LWlmaWVkIGNoYXJhY3RlcnMgYW5kIGNvbnRyb2wg
c2VxdWVuY2VzIGFyZQ0KIyAgIGZlZCBiYWNrIGludG8gdGhlIGlucHV0IGxpbmVzIHZpYSBkaXZl
cnNpb25zLg0KIyAgIFNpbmNlIFBlcmwgbm93IHN1cHBvcnRzIHdpZGUgKGludC1zaXplZCkgY2hh
cnMsIHRoZXNlIHRoaW5ncyBjb3VsZCBiZQ0KIyAgIGVuY29kZWQgaW4gd2lkZSBjaGFycyBzaW1p
bGFyIHRvIHRoZSBzY2hlbWUgaW4gdGhlIG9yaWdpbmFsIHRyb2ZmLA0KIyAgIG1ha2luZyBhbGxv
d2FuY2UgdG8gYWNjb21vZGF0ZSAxNi1iaXQgVW5pY29kZSBjaGFyYWN0ZXJzLg0KIyAqIFN1cHBv
cnQgZm9yIGZ1bGwgdHJvZmYgLSBhbiBhcHByb3ByaWF0ZSBQb3N0U2NyaXB0IG91dHB1dCBkZXZp
Y2UgYW5kDQojICAgc29tZSBjaGFuZ2VzIHRvIHN1cHBvcnQgcHJvcG9ydGlvbmFsIGZvbnRzIGFu
ZCB0aGUgbGlrZS4NCg0KdXNlIHN0cmljdDsNCg0KbXkgJE1hY3JvUGF0aCA9ICcvdXNyL2xpYi90
bWFjLyc7ICAgICAjIFdoZXJlIHRvIGZpbmQgdGhlICctbScgc3dpdGNoIG1hY3Jvcw0KbXkgJE91
dHB1dERldmljZSA9ICdscCc7DQpteSAkR3JvZmZDb21wYXRpYmxlOyAgICAgICAgICMgW2ZpeF0g
YSBmYWlyIGFtb3VudCBvZiB3b3JrIG5lZWRlZCB5ZXQgZm9yIHRoaXMNCm15ICRGb3JjZVVuaWNv
ZGU7DQpteSAkRGVidWc7DQpteSAkTEVBREVSX0NIQVIgPSAiXDAwMSI7DQpteSAkRVNDQVBFX0NI
QVIgPSAnXFwnOw0KbXkgJEVTQ0FQRSA9IHF1b3RlbWV0YSAkRVNDQVBFX0NIQVI7DQpteSAkQ09O
VFJPTCA9IHF1b3RlbWV0YSAnLic7DQpteSAkQUxUQ09OVFJPTCA9IHF1b3RlbWV0YSAnXCcnOw0K
bXkgJE9IWVBIRU4gPSAnJzsNCg0KIyBOdW1iZXJlZCBzZWN0aW9ucyBiZWxvdyByZWZlciB0byBz
ZWN0aW9ucyBpbiB0aGUgVHJvZmYgVXNlcidzIE1hbnVhbA0KIyAoSm9zZXBoIEYuIE9zc2FubmEs
IEJyaWFuIFcuIEtlcm5pZ2hhbiwgMTk5Mik7IGxvb2sgdGhlcmUgZm9yIGhpbnRzLg0KDQojIC0t
LSAxLjMgTnVtZXJpY2FsIFBhcmFtZXRlciBJbnB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCg0KcGFja2FnZSBQYXJhbTsNCg0KIyBBIFBhcmFtIGlzIHVzZWQg
Zm9yIHRoZSBwYXJhbWV0ZXJzIG9mIGJ1aWx0LWluIHJlcXVlc3RzLg0KIyBVc3VhbGx5IHRoZXNl
IGFyZSBzY2FsZWQgbnVtYmVycywgYW5kIGlmIG5vIG5ldyB2YWx1ZSBpcyBzcGVjaWZpZWQsDQoj
IHJldmVydCB0byB0aGUgcHJldmlvdXMgdmFsdWUgb3IgdGhlIGRlZmF1bHQuDQojIFNjYWxpbmcg
aXMgYWx3YXlzIGRvbmUgaWYgeW91IHNwZWNpZnkgZGVmYXVsdCBVTklUUy4NCiMgSWYgbm8gVU5J
VFMgYXJlIHNwZWNpZmllZCwgbm9uLW51bWVyaWMgdmFsdWVzIGNhbiBiZSB1c2VkLg0KIyBJZiBh
IERFRkFVTFQgaXMgZ2l2ZW4sIHRoYXQgdmFsdWUgaXMgdXNlZCB3aGVuIHJldmVydGluZyBpbnN0
ZWFkIG9mIHRoZQ0KIyBwcmV2aW91cyB2YWx1ZS4NCiMgRXhhbXBsZTogUGFyYW0tPm5ldyggVkFM
VUUgPT4gJzFpJywgVU5JVFMgPT4gJ3YnLCBERUZBVUxUID0+ICcxaScgKTsNCg0Kc3ViIG5ldw0K
ew0KICAgIG15ICRjbGFzcyA9IHNoaWZ0Ow0KICAgIG15ICRzZWxmID0gYmxlc3MoIHsgQF8gfSwg
KHJlZigkY2xhc3MpIHx8ICRjbGFzcykgKTsNCiAgICAkc2VsZi0+e1ZBTFVFfSA9IFNjYWxlOjpF
eHByKCAkc2VsZi0+e1ZBTFVFfSwgJHNlbGYtPntVTklUU30gKQ0KICAgICAgICBpZiBkZWZpbmVk
ICRzZWxmLT57VU5JVFN9Ow0KICAgICRzZWxmLT57REVGQVVMVH0gPSBTY2FsZTo6RXhwciggJHNl
bGYtPntERUZBVUxUfSwgJHNlbGYtPntVTklUU30gKQ0KICAgICAgICBpZiBkZWZpbmVkKCAkc2Vs
Zi0+e0RFRkFVTFR9ICkgYW5kIGRlZmluZWQoICRzZWxmLT57VU5JVFN9ICk7DQogICAgJHNlbGYt
PntPTER9ID0gJHNlbGYtPntWQUxVRX07DQogICAgJHNlbGY7DQp9DQoNCnN1YiBWYWx1ZSB7ICRf
WzBde1ZBTFVFfSB9DQpzdWIgQ2xvbmUgeyBibGVzcyggeyAleyRfWzBdfSB9LCByZWYoJF9bMF0p
ICkgfQ0KDQojIFJldmVydGluZyBzYXZlcyB0aGUgY3VycmVudCB2YWx1ZSwgY2hhbmdlcyB0byBk
ZWZhdWx0IG9yIHByZXZpb3VzIHZhbHVlDQoNCnN1YiBSZXZlcnQNCnsNCiAgICBteSAkc2VsZiA9
IHNoaWZ0Ow0KICAgICggJHNlbGYtPntPTER9LCAkc2VsZi0+e1ZBTFVFfSApID0gKCAkc2VsZi0+
e1ZBTFVFfSwNCiAgICAgICAgKCBkZWZpbmVkKCRzZWxmLT57REVGQVVMVH0pID8gJHNlbGYtPntE
RUZBVUxUfSA6ICRzZWxmLT57T0xEfSApICk7DQp9DQoNCiMgUmV2ZXJ0IGFuZCBhc3N1bWUgYSBu
ZXcgdmFsdWUgKGlmIGdpdmVuLikNCg0Kc3ViIFNldA0Kew0KICAgIG15ICRzZWxmID0gc2hpZnQ7
DQogICAgJHNlbGYtPlJldmVydCgpOw0KICAgIGlmICggZGVmaW5lZCAkX1swXSApDQogICAgew0K
CSRzZWxmLT57VkFMVUV9ID0gZGVmaW5lZCggJHNlbGYtPntVTklUU30gKQ0KCSAgICAgICAgICAg
ICAgID8gU2NhbGU6OkV4cHIoICRfWzBdLCAkc2VsZi0+e1VOSVRTfSApDQoJCSAgICAgICA6ICRf
WzBdOw0KICAgIH0NCn0NCg0KIyBJZiB0aGUgbmV3IHZhbHVlIGlzIGV4cGxpY2l0bHkgc2lnbmVk
LCBhZGQgaXQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuDQojIE90aGVyd2lzZSB0aGUgbmV3IHZhbHVl
IHJlcGxhY2VzIHRoZSBjdXJyZW50IHZhbHVlLg0KDQpzdWIgU2V0T3JBZGQNCnsNCiAgICBteSAk
c2VsZiA9IHNoaWZ0Ow0KICAgIG15ICRuID0gc2hpZnQ7DQogICAgJHNlbGYtPlNldCggJG4gKTsN
CiAgICAkc2VsZi0+e1ZBTFVFfSArPSAkc2VsZi0+e09MRH0gaWYgZGVmaW5lZCggJG4gKSBhbmQg
JG4gPX4gL15bLStdLzsNCn0NCg0KIyAtLS0gMS40IE51bWVyaWNhbCBFeHByZXNzaW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCnBhY2thZ2UgU2Nh
bGU7DQoNCnVzZSB2YXJzIHF3eyAlX3VuaXQgJV9vcCAkT1AgJE5VTSB9Ow0KDQolX3VuaXQgPSAo
DQogICAgJ2knID0+IHN1YiB7IHNoaWZ0KCkgKiBPdXRwdXQ6OlJlc29sdXRpb24oKSB9LA0KICAg
ICdjJyA9PiBzdWIgeyBzaGlmdCgpICogT3V0cHV0OjpSZXNvbHV0aW9uKCkgKiAxMDAgLyAyNTQg
fSwNCiAgICAnUCcgPT4gc3ViIHsgc2hpZnQoKSAqIE91dHB1dDo6UmVzb2x1dGlvbigpIC8gNiB9
LA0KICAgICdtJyA9PiBzdWIgeyBzaGlmdCgpICogRm9udDo6RW1TcGFjZSgpIH0sDQogICAgJ24n
ID0+IHN1YiB7IHNoaWZ0KCkgKiBGb250OjpFblNwYWNlKCkgfSwNCiAgICAncCcgPT4gc3ViIHsg
c2hpZnQoKSAqIE91dHB1dDo6UmVzb2x1dGlvbigpIC8gNzIgfSwNCiAgICAndScgPT4gc3ViIHsg
c2hpZnQoKSB9LA0KICAgICd2JyA9PiBzdWIgeyBzaGlmdCgpICogRW52OjpWKCkgfQ0KKTsNCg0K
JV9vcCA9ICgNCiAgICAnKycgID0+IHN1YiB7ICRfWzBdICsgJF9bMV0gfSwNCiAgICAnLScgID0+
IHN1YiB7ICRfWzBdIC0gJF9bMV0gfSwNCiAgICAnKicgID0+IHN1YiB7ICRfWzBdICogJF9bMV0g
fSwNCiAgICAnLycgID0+IHN1YiB7ICgkX1sxXSAhPSAwKSA/ICgkX1swXSAvICRfWzFdKSA6IDAg
fSwNCiAgICAnJScgID0+IHN1YiB7ICgkX1sxXSAhPSAwKSA/ICgkX1swXSAlICRfWzFdKSA6IDAg
fSwNCiAgICAnJicgID0+IHN1YiB7ICEhKCAkX1swXSAmJiAkX1sxXSApIH0sDQogICAgJzonICA9
PiBzdWIgeyAhISggJF9bMF0gfHwgJF9bMV0gKSB9LA0KICAgICc8JyAgPT4gc3ViIHsgISEoICRf
WzBdIDwgICRfWzFdICkgfSwNCiAgICAnPicgID0+IHN1YiB7ICEhKCAkX1swXSA+ICAkX1sxXSAp
IH0sDQogICAgJz0nICA9PiBzdWIgeyAhISggJF9bMF0gPT0gJF9bMV0gKSB9LA0KICAgICc9PScg
PT4gc3ViIHsgISEoICRfWzBdID09ICRfWzFdICkgfSwNCiAgICAnPD0nID0+IHN1YiB7ICEhKCAk
X1swXSA8PSAkX1sxXSApIH0sDQogICAgJz49JyA9PiBzdWIgeyAhISggJF9bMF0gPj0gJF9bMV0g
KSB9LA0KKTsNCg0Kc3ViIEZyb20NCnsNCiAgICBteSAoJG4sJHUpID0gQF87DQogICAgaW50KCBl
eGlzdHMoJF91bml0eyR1fSkgPyAkX3VuaXR7JHV9LT4oJG4pIDogJG4gKTsNCn0NCg0KIyBSb3Vu
ZCB0aGUgZ2l2ZW4gcG9zaXRpb24gdG8gYWxsb3dhYmxlIG91dHB1dCBkZXZpY2UgbW90aW9ucy4N
Cg0Kc3ViIFJvdW5kSG9yaXpvbnRhbA0Kew0KICAgIG15ICRuID0gc2hpZnQ7DQogICAgJG4gPSBp
bnQoICRuICsgT3V0cHV0OjpNaW5Ib3Jpem9udGFsKCkgLyAyICkgLSAoJG4gPCAwKTsNCiAgICAo
ICRuIC0gKCAkbiAlIE91dHB1dDo6TWluSG9yaXpvbnRhbCgpICkgKTsNCn0NCg0Kc3ViIFJvdW5k
VmVydGljYWwNCnsNCiAgICBteSAkbiA9IHNoaWZ0Ow0KICAgICRuID0gaW50KCAkbiArIE91dHB1
dDo6TWluVmVydGljYWwoKSAvIDIgKSAtICgkbiA8IDApOw0KICAgICggJG4gLSAoICRuICUgT3V0
cHV0OjpNaW5WZXJ0aWNhbCgpICkgKTsNCn0NCg0KIyBFdmFsdWF0ZSBhIG1vdGlvbiBleHByZXNz
aW9uICh0aG9zZSBzdGFydGluZyB3aXRoICd8JyBhcmUgYWJzb2x1dGUpLg0KDQpzdWIgVG9Ib3Jp
em9udGFsDQp7DQogICAgbXkgKCRuLCR1KSA9IEBfOw0KICAgICggKCAkbiA9fiBzL15cfC8vICkN
CiAgICAgPyAoIFJvdW5kSG9yaXpvbnRhbCggRXhwcigkbiwkdSkgKSAtIFBhcnNlOjpIb3Jpem9u
dGFsUG9zaXRpb24oKSApDQogICAgIDogUm91bmRIb3Jpem9udGFsKCBFeHByKCRuLCR1KSApICk7
DQp9DQoNCnN1YiBUb1ZlcnRpY2FsDQp7DQogICAgbXkgKCRuLCR1KSA9IEBfOw0KICAgICggKCAk
biA9fiBzL15cfC8vICkNCiAgICAgPyAoIFJvdW5kVmVydGljYWwoIEV4cHIoJG4sJHUpICkgLSBE
aXZlcnNpb246OlZlcnRpY2FsUG9zaXRpb24oKSApDQogICAgIDogUm91bmRWZXJ0aWNhbCggRXhw
cigkbiwkdSkgKSApOw0KfQ0KDQojICRpbnRlcm5hbF91bml0cyA9IEV4cHIoICRleHByZXNzaW9u
LCAkZGVmYXVsdF91bml0ICkNCiMgVGhlcmUgaXMgbm8gb3BlcmF0b3IgcHJlY2lkZW5jZSwganVz
dCBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24uDQojIElmIG5vIGRlZmF1bHQgdW5pdCBpcyBnaXZl
biwgZXhwbGljaXQgdW5pdHMgYXJlIGlnbm9yZWQuDQoNCiRPUCA9ICdbK1wtXC8qXCVcJjpdfFs8
Pj1dPT8nOw0KJE5VTSA9ICdbKy1dP1xkKlwuP1xkKyc7DQoNCnN1YiBFeHByDQp7DQogICAgbXkg
KCRlLCRkKSA9IEBfOw0KICAgIHJldHVybiAwIHVubGVzcyBkZWZpbmVkKCRlKSBhbmQgJGUgPX4g
L1xkLzsNCiAgICAkZSA9fiBzLyhcZCpcLj9cZCspKFtpY1BtbnB1dl0/KS9Gcm9tKCQxLCQyfHwk
ZCkvZWcgaWYgJGQ7DQogICAgJGUgPX4gcy9bQS1aYS16XS8vZzsgICAgICAgICMgeWVwLCBpZ25v
cmUgc3B1cmlvdXMgdW5pdHMNCiAgICAxIHdoaWxlICggJGUgPX4gcy9cKCgkTlVNKVwpLyQxL28g
fHwNCiAgICAgICAgICAgICAgJGUgPX4gcy8oJE5VTSkoJE9QKSgkTlVNKS8kX29weyQyfS0+KCQx
LCQzKS9lbyApOw0KICAgIHJldHVybiAwIHVubGVzcyAkZSA9fiAvXiROVU0kL287DQogICAgaW50
KCAkZSApOw0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnBhY2thZ2UgRW52Ow0KDQojIE1h
bnkgcGFyYW1ldGVycyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGVudmlyb25tZW50
Lg0KIyBUaGVyZSBhcmUgb25seSAzIGVudmlyb25tZW50cyAobnVtYmVyZWQgMCwxLDIsIHN1cnBy
aXNpbmdseSkNCiMgYW5kIHRoZSBjdXJyZW50IG51bWJlciBpcyBwdXNoZWQgb24gYSBzdGFjay4g
IFNlZSB0aGUgLmV2IG1hY3JvLg0KDQpzdWIgQ2hhbmdlVG8NCnsNCiAgICBteSAkbiA9IHNoaWZ0
Ow0KICAgIGlmICggZGVmaW5lZCAkbiBhbmQgJG4gPX4gL15cZC8gKQ0KICAgIHsNCiAgICAgICAg
cHVzaCggQEVudjo6X3N0YWNrLCAkbiApIGlmICggJG4gPj0gMCBhbmQgJG4gPD0gMiApOw0KICAg
IH0NCiAgICBlbHNpZiAoIEBFbnY6Ol9zdGFjayA+IDEgKQ0KICAgIHsNCiAgICAgICAgcG9wIEBF
bnY6Ol9zdGFjazsNCiAgICB9DQogICAgJEVudjo6X2N1cnJlbnQgPSAkRW52OjpfZW52aXJvbm1l
bnRbJEVudjo6X3N0YWNrWy0xXV07DQp9DQoNCiMgQVVUT0xPQUQgZ2l2ZXMgdXMgZnVuY3Rpb24t
bmFtZSBhY2Nlc3MgdG8gY3VycmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsDQojIGUuZy4gRW52
OjpGb250TmFtZSgpIC4NCg0Kc3ViIEFVVE9MT0FEDQp7DQogICAgZGllICJVbmRlZmluZWQ6ICRF
bnY6OkFVVE9MT0FEXG4iIA0KICAgICAgICB1bmxlc3MgZXhpc3RzICRFbnY6Ol9jdXJyZW50LT57
JEVudjo6QVVUT0xPQUR9Ow0KICAgICRFbnY6Ol9jdXJyZW50LT57JEVudjo6QVVUT0xPQUR9ID0g
c2hpZnQgaWYgQF87DQogICAgJEVudjo6X2N1cnJlbnQtPnskRW52OjpBVVRPTE9BRH07DQp9DQoN
CiMgVGhlIGVudmlyb25tZW50cyB3aWxsIGJlIGluaXRpYWxpemVkIGFmdGVyIHRoZSBvdXRwdXQg
ZGV2aWNlIGlzIGxvYWRlZCwNCiMgc2luY2UgYW55IHNjYWxlZCB2YWx1ZXMgZGVwZW5kIG9uIHRo
ZSBkZXZpY2UgcmVzb2x1dGlvbi4NCg0Kc3ViIEluaXQNCnsNCiAgICBmb3JlYWNoICggMCwxLDIg
KQ0KICAgIHsNCiAgICAgICAgJEVudjo6X2Vudmlyb25tZW50WyRfXSA9IHsNCiAgICAgICAgJ0Vu
djo6Rm9udE5hbWUnICAgICAgPT4gUGFyYW0tPm5ldyggVkFMVUUgPT4gJ1InICksDQogICAgICAg
ICdFbnY6OlRpdGxlTGVuZ3RoJyAgID0+IFBhcmFtLT5uZXcoIFZBTFVFID0+ICc2LjVpJywgVU5J
VFMgPT4gJ20nICksDQogICAgICAgICdFbnY6Ok5ld0xpbmVMZW5ndGgnID0+IFBhcmFtLT5uZXco
IFZBTFVFID0+ICc2LjVpJywgVU5JVFMgPT4gJ20nICksDQogICAgICAgICdFbnY6Ok5ld0luZGVu
dCcgICAgID0+IFBhcmFtLT5uZXcoIFZBTFVFID0+ICcwdScsICAgVU5JVFMgPT4gJ20nICksDQog
ICAgICAgICdFbnY6OkluZGVudCcgICAgICAgICAgICAgICAgICAgPT4gMCwNCiAgICAgICAgJ0Vu
djo6TmV3VGVtcEluZGVudCcgICAgICAgICAgICA9PiB1bmRlZiwNCiAgICAgICAgJ0Vudjo6VGVt
cEluZGVudCcgICAgICAgICAgICAgICA9PiB1bmRlZiwNCiAgICAgICAgJ0Vudjo6TGluZUxlbmd0
aCcgICAgICAgICAgICAgICA9PiBTY2FsZTo6RXhwcignNi41aScsJ3UnKSwNCiAgICAgICAgJ0Vu
djo6RWxlbWVudHMnICAgICAgICAgICAgICAgICA9PiBbXSwNCiAgICAgICAgJ0Vudjo6RWxlbWVu
dHNMZW5ndGgnICAgICAgICAgICA9PiAwLA0KICAgICAgICAnRW52OjpOb0ZpbGwnICAgICAgICAg
ICAgICAgICAgID0+IDAsDQogICAgICAgICdFbnY6Ok5vQWRqdXN0JyAgICAgICAgICAgICAgICAg
PT4gMCwNCiAgICAgICAgJ0Vudjo6QWRqdXN0VHlwZScgICAgICAgICAgICAgICA9PiAnYicsDQog
ICAgICAgICdFbnY6OklucHV0VHJhcENvdW50JyAgICAgICAgICAgPT4gMCwNCiAgICAgICAgJ0Vu
djo6SW5wdXRUcmFwTWFjcm8nICAgICAgICAgICA9PiB1bmRlZiwNCiAgICAgICAgJ0Vudjo6Q2Vu
dGVyZWRMaW5lcycgICAgICAgICAgICA9PiAwLA0KICAgICAgICAnRW52OjpUYWJTdG9wcycgICAg
ICAgICAgICAgICAgID0+IFtdLA0KICAgICAgICAnRW52OjpWZXJ0aWNhbFNwYWNlJyA9PiBQYXJh
bS0+bmV3KCBWQUxVRSA9PiAnMWkvNnUnLCBVTklUUyA9PiAncCcgKSwNCiAgICAgICAgJ0Vudjo6
Q0MnICAgICAgICAgICAgICAgICAgICAgICA9PiAnLicsDQogICAgICAgICdFbnY6OkMyJyAgICAg
ICAgICAgICAgICAgICAgICAgPT4gJ1wnJywNCiAgICAgICAgJ0Vudjo6VEMnICAgICAgICAgICAg
ICAgICAgICAgICA9PiB1bmRlZiwNCiAgICAgICAgJ0Vudjo6TEMnICAgICAgICAgICAgICAgICAg
ICAgICA9PiAnLicsDQogICAgICAgICdFbnY6OlVuZGVybGluZScgICAgICAgICAgICAgICAgPT4g
MCwNCiAgICAgICAgJ0Vudjo6U2F2ZWRGb250JyAgICAgICAgICAgICAgICA9PiB1bmRlZiwNCgkn
RW52OjpNYXJnaW5DaGFyJyAgICAgICAgICAgICAgID0+IHVuZGVmLA0KICAgICAgICAnRW52OjpN
YXJnaW5DaGFyU3BhY2UnICAgICAgICAgID0+IFNjYWxlOjpFeHByKCcwLjJpJywndScpLA0KCSdF
bnY6OkxpbmVCdWZmZXInICAgICAgICAgICAgICAgPT4gW10sDQogICAgICAgIH07DQogICAgfQ0K
ICAgIENoYW5nZVRvKCAwICk7DQp9DQoNCnN1YiBWIHsgVmVydGljYWxTcGFjZSgpLT5WYWx1ZSgp
IH0gICAgIyBBcyBpZiB3ZSBkb24ndCBoYXZlIGVub3VnaCBpbmRpcmVjdGlvbg0KDQojIC0tLSAy
LiBGb250IGFuZCBDaGFyYWN0ZXIgU2l6ZSBDb250cm9sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCg0KcGFja2FnZSBGb250Ow0KDQpzdWIgSW5pdCAgICAgICAgeyBARm9u
dDo6X21vdW50ZWQgPSBPdXRwdXQ6OkZvbnRzKCkgfQ0Kc3ViIE5hbWUgICAgICAgIHsgKCRGb250
OjpfbG9jYWwgfHwgRW52OjpGb250TmFtZSgpKS0+VmFsdWUoKSB9DQpzdWIgTG9jYWxpemUgICAg
eyAkRm9udDo6X2xvY2FsID0gRW52OjpGb250TmFtZSgpLT5DbG9uZSgpIH0NCnN1YiBVbmxvY2Fs
aXplICB7ICRGb250OjpfbG9jYWwgPSB1bmRlZiB9DQpzdWIgRW1TcGFjZSAgICAgeyBPdXRwdXQ6
OkVtU3BhY2UoIE5hbWUoKSApIH0NCnN1YiBFblNwYWNlICAgICB7IE91dHB1dDo6RW5TcGFjZSgg
TmFtZSgpICkgfQ0Kc3ViIENoYXJXaWR0aCAgIHsgT3V0cHV0OjpDaGFyV2lkdGgoIHNoaWZ0KCks
IE5hbWUoKSApIH0NCg0Kc3ViIENoYW5nZVRvDQp7DQogICAgbXkgJGZvbnQgPSBzaGlmdDsNCiAg
ICBpZiAoICFkZWZpbmVkKCRmb250KSBvciAoJGZvbnQgZXEgJ1AnKSApDQogICAgew0KICAgICAg
ICAoJEZvbnQ6Ol9sb2NhbCB8fCBFbnY6OkZvbnROYW1lKCkpLT5SZXZlcnQoKTsNCiAgICB9DQog
ICAgZWxzZQ0KICAgIHsNCiAgICAgICAgJGZvbnQgPSAkRm9udDo6X21vdW50ZWRbJGZvbnQtMV0g
aWYgKCAkZm9udCA9fiAvXlxkKyQvICk7DQogICAgICAgICRmb250ID0gJ1InIHVubGVzcyAkZm9u
dCA9fiAvXltSSUJTXSskLzsNCiAgICAgICAgKCRGb250OjpfbG9jYWwgfHwgRW52OjpGb250TmFt
ZSgpKS0+U2V0KCAkZm9udCApOw0KICAgIH0NCn0NCg0KTWFjcm86OkJ1aWx0aW4oICdmdCcsIDEs
IHN1YiB7ICAgICAgICAgICAgICAgICAgIyAuZnQgLSBjaGFuZ2UgZm9udA0KICAgIENoYW5nZVRv
KCBzaGlmdCApOyB9ICk7DQoNCk1hY3JvOjpCdWlsdGluKCAnZnAnLCAzLCBzdWIgeyAgICAgICAg
ICAgICAgICAgICMgLmZwIC0gY2hhbmdlIGZvbnQgcG9zaXRpb24NCiAgICAkRm9udDo6X21vdW50
ZWRbICRfWzBdIF0gPSAkX1sxXQ0KCWlmICggJF9bMF0gPiAxIGFuZCBkZWZpbmVkKCAkX1sxXSAp
ICk7IH0gKTsNCg0KJEZvbnQ6Ol91bmRlcmxpbmVfZm9udCA9ICdJJzsNCg0KTWFjcm86OkJ1aWx0
aW4oICd1bCcsIDEsIHN1YiB7ICAgICAgICAgICAgICAgICAgIyAudWwgLSB1bmRlcmxpbmUgTiBs
aW5lcw0KICAgIEVudjo6VW5kZXJsaW5lKCBAXyA/IHNoaWZ0IDogMSApOw0KICAgIEVudjo6U2F2
ZWRGb250KCBOYW1lKCkgKTsNCiAgICBDaGFuZ2VUbyggRW52OjpVbmRlcmxpbmUoKSA/ICRGb250
OjpfdW5kZXJsaW5lX2ZvbnQgOiB1bmRlZiApOyB9ICk7DQoNCk1hY3JvOjpCdWlsdGluKCAndWYn
LCAxLCBzdWIgeyAgICAgICAgICAgICAgICAgICMgLnVmIC0gdW5kZXJsaW5lIGZvbnQNCiAgICAk
Rm9udDo6X3VuZGVybGluZV9mb250ID0gQF8gPyBzaGlmdCA6ICdJJzsgfSApOw0KDQpzdWIgQ291
bnRMaW5lDQp7DQogICAgaWYgKCBteSAkbiA9IEVudjo6VW5kZXJsaW5lKCkgKQ0KICAgIHsNCiAg
ICAgICAgRW52OjpVbmRlcmxpbmUoIC0tJG4gKTsNCglDaGFuZ2VUbyggRW52OjpTYXZlZEZvbnQo
KSApIHVubGVzcyAkbjsNCiAgICB9DQp9DQoNCiMgLS0tIDMuIFBhZ2UgQ29udHJvbCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpwYWNr
YWdlIERpdmVyc2lvbjsNCg0KIyBBVVRPTE9BRCBnaXZlcyB1cyBmdW5jdGlvbi1uYW1lIGFjY2Vz
cyB0byB2YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQNCiMgZGl2ZXJzaW9uLCBlLmcuIERpdmVyc2lv
bjo6VmVydGljYWxQb3NpdGlvbigpIC4NCg0Kc3ViIEFVVE9MT0FEDQp7DQogICAgZGllICJVbmRl
ZmluZWQ6ICREaXZlcnNpb246OkFVVE9MT0FEXG4iDQogICAgICAgIHVubGVzcyBleGlzdHMgJERp
dmVyc2lvbjo6X3N0YWNrWy0xXXskRGl2ZXJzaW9uOjpBVVRPTE9BRH07DQogICAgJERpdmVyc2lv
bjo6X3N0YWNrWy0xXXskRGl2ZXJzaW9uOjpBVVRPTE9BRH0gPSBzaGlmdCBpZiBAXzsNCiAgICAk
RGl2ZXJzaW9uOjpfc3RhY2tbLTFdeyREaXZlcnNpb246OkFVVE9MT0FEfTsNCn0NCg0Kc3ViIERp
dmVydFRvDQp7DQogICAgcHVzaCBARGl2ZXJzaW9uOjpfc3RhY2ssIHsNCiAgICAgICAgJ0RpdmVy
c2lvbjo6Tm9TcGFjZScgICAgICAgICAgPT4gMCwNCiAgICAgICAgJ0RpdmVyc2lvbjo6TWFyaycg
ICAgICAgICAgICAgPT4gMCwNCiAgICAgICAgJ0RpdmVyc2lvbjo6VmVydGljYWxQb3NpdGlvbicg
PT4gMCwNCiAgICAgICAgJ0RpdmVyc2lvbjo6SGlnaFdhdGVyJyAgICAgICAgPT4gMCwNCiAgICAg
ICAgJ0RpdmVyc2lvbjo6TWFjcm9OYW1lJyAgICAgICAgPT4gJycsDQogICAgICAgICdEaXZlcnNp
b246OlRyYXAnICAgICAgICAgICAgID0+IHVuZGVmLA0KICAgICAgICAnRGl2ZXJzaW9uOjpMYXN0
VGV4dEJhc2VsaW5lJyA9PiAwLA0KICAgICAgICAnRGl2ZXJzaW9uOjpIZWlnaHQnICAgICAgICAg
ICA9PiAwLA0KICAgICAgICAnRGl2ZXJzaW9uOjpXaWR0aCcgICAgICAgICAgICA9PiAwLA0KICAg
IH07DQogICAgTWFjcm9OYW1lKHNoaWZ0KTsNCn07DQoNCkRpdmVydFRvKCk7ICAgICMgRXN0YWJs
aXNoIHRoZSAwdGggbGV2ZWwgZGl2ZXJzaW9uDQoNCnN1YiBMZXZlbCAgICAgIHsgJCNEaXZlcnNp
b246Ol9zdGFjayB9DQoNCnN1YiBFbmREaXZlcnQNCnsNCiAgICBSZWc6OlNldCggJ2RuJywgSGVp
Z2h0KCkgKTsNCiAgICBSZWc6OlNldCggJ2RsJywgV2lkdGgoKSApOw0KICAgIHBvcCBARGl2ZXJz
aW9uOjpfc3RhY2sgaWYgKCBMZXZlbCgpID4gMCApOw0KfQ0KDQpzdWIgT3V0cHV0DQp7DQogICAg
bXkgQGVsZW1lbnRzID0gQF87DQogICAgaWYgKCBMZXZlbCgpID4gMCApDQogICAgew0KICAgICAg
ICBteSAoJGhlaWdodCwgJHdpZHRoKSA9IChIZWlnaHQoKSwwKTsNCgltYXAgeyAkd2lkdGggKz0g
JF8tPldpZHRoKCk7ICRoZWlnaHQgKz0gJF8tPkhlaWdodCgpOyB9IEBlbGVtZW50czsNCglXaWR0
aCgkd2lkdGgpIGlmIFdpZHRoKCkgPCAkd2lkdGg7DQoJSGVpZ2h0KCRoZWlnaHQpOw0KICAgICAg
ICBNYWNybzo6QXBwZW5kKCBNYWNyb05hbWUoKSwgQGVsZW1lbnRzICk7DQogICAgfQ0KICAgIGVs
c2UNCiAgICB7DQogICAgICAgIGZvcmVhY2ggKCBAZWxlbWVudHMgKSB7ICRfLT5QcmludCgpOyB9
DQogICAgfQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhlIFBhZ2UgcGFja2FnZSBo
YW5kbGVzIHZlcnRpY2FsIG1vdGlvbnMsIHBhZ2UgdHJhcHMsIGFzc2VtYmxpbmcgbGluZXMNCiMg
aW50byB0aGVpciBwbGFjZXMgb24gdGhlIHBhZ2UuDQoNCnBhY2thZ2UgUGFnZTsNCg0Kc3ViIElu
aXQNCnsNCiAgICAkUGFnZTo6Rmlyc3RQYWdlID0gMTsNCiAgICAkUGFnZTo6X251bWJlciA9IDA7
DQogICAgIyBEZWZhdWx0IHVuaXQgZm9yIHBhZ2Ugb2Zmc2V0IGlzIG0sIE5PVCB2IGFzIGluIHRo
ZSBVc2VyJ3MgTWFudWFsDQogICAgJFBhZ2U6Ol9vZmZzZXQgPSBQYXJhbS0+bmV3KFZBTFVFID0+
IDAsIFVOSVRTID0+ICdtJyk7DQogICAgJFBhZ2U6Ol9sZW5ndGggPSBQYXJhbS0+bmV3KFZBTFVF
ID0+ICcxMWknLCBVTklUUyA9PiAndicsDQoJCQkJREVGQVVMVCA9PiAnMTFpJyk7DQp9DQpzdWIg
TnVtYmVyIHsgJFBhZ2U6Ol9udW1iZXIgfQ0Kc3ViIE9mZnNldCB7ICRQYWdlOjpfb2Zmc2V0LT5W
YWx1ZSgpIH0NCnN1YiBMZW5ndGggeyAkUGFnZTo6X2xlbmd0aC0+VmFsdWUoKSB9DQoNCnN1YiBC
ZWdpblBhZ2UNCnsNCiAgICBpZiAoIGRlZmluZWQgJFBhZ2U6Ol9uZXh0X251bWJlciApDQogICAg
ew0KICAgICAgICAoJFBhZ2U6Ol9udW1iZXIsICRQYWdlOjpfbmV4dF9udW1iZXIpID0gKCRQYWdl
OjpfbmV4dF9udW1iZXIsIHVuZGVmKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAg
KyskUGFnZTo6X251bWJlcjsNCiAgICB9DQogICAgUmVnOjpTZXQoICclJywgTnVtYmVyKCkgKTsN
CiAgICBEaXZlcnNpb246OlZlcnRpY2FsUG9zaXRpb24oMCk7DQogICAgRGl2ZXJzaW9uOjpIaWdo
V2F0ZXIoMCk7DQogICAgRGl2ZXJzaW9uOjpPdXRwdXQoIFBhcnNlOjpNYWtlTmV3UGFnZSgpICkg
dW5sZXNzICRQYWdlOjpGaXJzdFBhZ2U7DQogICAgUGFyc2U6OkVuZFBhZ2VFamVjdCgpOw0KICAg
ICRQYWdlOjpGaXJzdFBhZ2UgPSAwOw0KICAgIFRyYXA6OlNwcmluZ1RvcFRyYXAoKSB1bmxlc3Mg
SW5wdXQ6Ok5vTW9yZUZpbGVzKCk7DQp9DQoNCnN1YiBBZGRMaW5lDQp7DQogICAgbXkgQGVsZW1l
bnRzID0gQF87DQogICAgRGl2ZXJzaW9uOjpPdXRwdXQoIFBhcnNlOjpNYWtlTW90aW9uKCBPZmZz
ZXQoKSwgMCApICkgaWYgT2Zmc2V0KCk7DQogICAgZm9yZWFjaCBteSAkZWxlbWVudCAoIEBlbGVt
ZW50cyApDQogICAgew0KCWlmICggJGVsZW1lbnQtPklzQnJlYWsoKSApDQoJew0KCSAgICBNb3Zl
VmVydGljYWwoICRlbGVtZW50LT5IZWlnaHQoKSApOw0KCX0NCgllbHNlDQoJew0KCSAgICBEaXZl
cnNpb246Ok91dHB1dCggJGVsZW1lbnQgKTsNCgl9DQogICAgfQ0KICAgIERpdmVyc2lvbjo6TGFz
dFRleHRCYXNlbGluZSggRGl2ZXJzaW9uOjpWZXJ0aWNhbFBvc2l0aW9uKCkgKTsNCiAgICBSZWc6
OlNldCggJ25sJywgRGl2ZXJzaW9uOjpMYXN0VGV4dEJhc2VsaW5lKCkgKTsNCiAgICBEaXZlcnNp
b246OkhpZ2hXYXRlciggRGl2ZXJzaW9uOjpWZXJ0aWNhbFBvc2l0aW9uKCkgKQ0KICAgICAgICBp
ZiBEaXZlcnNpb246OkhpZ2hXYXRlcigpIDwgRGl2ZXJzaW9uOjpWZXJ0aWNhbFBvc2l0aW9uKCk7
DQogICAgRGl2ZXJzaW9uOjpOb1NwYWNlKDApOw0KfQ0KDQpzdWIgTW92ZVZlcnRpY2FsICAgICAg
ICAjIHJlbGF0aXZlIG1vdGlvbg0Kew0KICAgIHJldHVybiAwIGlmICRUcmFwOjpQZW5kaW5nOw0K
ICAgIG15ICRvZmZzZXQgPSBzaGlmdDsNCiAgICBpZiAoICRvZmZzZXQgPiAwICkNCiAgICB7DQog
ICAgICAgIGlmICggVHJhcDo6RGlzdGFuY2VUb05leHQoKSA8PSAkb2Zmc2V0IGFuZCBteSAkdHJh
cCA9IFRyYXA6Ok5leHQoKSApDQogICAgICAgIHsNCiAgICAgICAgICAgICRvZmZzZXQgPSBUcmFw
OjpEaXN0YW5jZVRvTmV4dCgpOw0KICAgICAgICAgICAgVHJhcDo6U3ByaW5nKCAkdHJhcCApOw0K
ICAgICAgICB9DQogICAgfQ0KICAgIG15ICRwb3MgPSAkb2Zmc2V0ICsgRGl2ZXJzaW9uOjpWZXJ0
aWNhbFBvc2l0aW9uKCk7IA0KICAgIGlmICggJHBvcyA8IDAgKQ0KICAgIHsNCiAgICAgICAgJG9m
ZnNldCA9IC0gRGl2ZXJzaW9uOjpWZXJ0aWNhbFBvc2l0aW9uKCk7DQogICAgICAgICRwb3MgPSAw
Ow0KICAgIH0NCiAgICBEaXZlcnNpb246OlZlcnRpY2FsUG9zaXRpb24oICRwb3MgKTsNCiAgICBE
aXZlcnNpb246Ok91dHB1dCggUGFyc2U6Ok1ha2VOZXdMaW5lKCAkb2Zmc2V0ICkgKSBpZiAkb2Zm
c2V0Ow0KICAgIEJlZ2luUGFnZSgpIGlmICggJHBvcyA+PSBMZW5ndGgoKSApOw0KfQ0KDQoNCk1h
Y3JvOjpCdWlsdGluKCAncGwnLCAxLCBzdWIgeyAgICAgICAgICAgICAgICAgICMgLnBsIC0gc2V0
IHBhZ2UgTGVuZ3RoDQogICAgJFBhZ2U6Ol9sZW5ndGgtPlNldE9yQWRkKCAkX1swXSApOyB9ICk7
DQoNCk1hY3JvOjpCdWlsdGluKCAnYnAnLCAxLCBzdWIgeyAJCQkjIC5icCAtIGJlZ2luIHBhZ2UN
CiAgICB1bmxlc3MgKCBEaXZlcnNpb246Ok5vU3BhY2UoKSBhbmQgKEBfID09IDApICkNCiAgICB7
DQoJIyBUcmlja3k6IGNhbGwgRm9yY2VQYWdlRWplY3QgYmVmb3JlIEJyZWFrLCBiZWNhdXNlIHRo
ZSBicmVhayBjb3VsZA0KCSMgc3ByaW5nIGEgcGFnZSB0cmFwIHRoYXQgY29uZmxpY3RzIHdpdGgg
dGhlIHBhZ2UgZWplY3Qgc2V0dXAuDQoJIyBBIGhpbnQgdGhhdCBvdXIgaW1wbGVtZW50YXRpb24g
aXMgbm90IGlkZWFsLg0KICAgICAgICBQYXJzZTo6Rm9yY2VQYWdlRWplY3QoKTsNCiAgICAgICAg
TGluZTo6QnJlYWsoKTsNCiAgICAgICAgaWYgKCBkZWZpbmVkICRfWzBdICkNCiAgICAgICAgew0K
ICAgICAgICAgICAgJFBhZ2U6Ol9uZXh0X251bWJlciA9ICRfWzBdOw0KICAgICAgICAgICAgJFBh
Z2U6Ol9uZXh0X251bWJlciArPSBQYWdlOjpOdW1iZXIoKSBpZiAkX1swXSA9fiAvXlstK10vOw0K
ICAgICAgICB9DQogICAgfQ0KfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ3BuJywgMSwgc3ViIHsg
ICAgICAgICAgICAgICAgICAjIC5wbiAtIHBhZ2UgbnVtYmVyDQogICAgaWYgKCBkZWZpbmVkICRf
WzBdICkNCiAgICB7DQogICAgICAgICRQYWdlOjpfbmV4dF9udW1iZXIgPSAkX1swXTsNCiAgICAg
ICAgJFBhZ2U6Ol9uZXh0X251bWJlciArPSBQYWdlOjpOdW1iZXIoKSBpZiAkX1swXSA9fiAvXlst
K10vOw0KICAgIH0NCn0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdwbycsIDEsIHN1YiB7CSAgICAg
ICAgICAgICAgICAjIC5wbyAtIHBhZ2Ugb2Zmc2V0DQogICAgJFBhZ2U6Ol9vZmZzZXQtPlNldE9y
QWRkKCAkX1swXSApOyB9ICk7DQoNCk1hY3JvOjpCdWlsdGluKCAnbmUnLCAxLCBzdWIgewkJCSMg
Lm5lIC0gTmVlZCB2ZXJ0aWNhbCBzcGFjZQ0KICAgIG15ICRuZWVkID0gU2NhbGU6OkV4cHIoICgg
ZGVmaW5lZCgkX1swXSkgPyAkX1swXSA6ICcxJyApLCAndicgKTsNCiAgICBNb3ZlVmVydGljYWwo
IFRyYXA6OkRpc3RhbmNlVG9OZXh0KCkgKQ0KICAgICAgICBpZiAoICRuZWVkID4gVHJhcDo6RGlz
dGFuY2VUb05leHQoKSApOw0KfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ21rJywgMSwgc3ViIHsJ
ICAgICAgICAgICAgICAgICMgLm1rIC0gbWFyayB2ZXJ0aWNhbCBwb3NpdGlvbg0KICAgIGlmICgg
ZGVmaW5lZCAkX1swXSApDQogICAgew0KICAgICAgICBSZWc6OlNldCggJF9bMF0sIERpdmVyc2lv
bjo6VmVydGljYWxQb3NpdGlvbigpICk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAg
IERpdmVyc2lvbjo6TWFyayggRGl2ZXJzaW9uOjpWZXJ0aWNhbFBvc2l0aW9uKCkgKTsNCiAgICB9
DQp9ICk7DQoNCk1hY3JvOjpCdWlsdGluKCAncnQnLCAxLCBzdWIgewkgICAgICAgICAgICAgICAg
IyAucnQgLSByZXR1cm4gdG8gbWFyaw0KICAgIG15ICRuID0gZGVmaW5lZCgkX1swXSkgPyBTY2Fs
ZTo6RXhwcigkX1swXSwndicpIA0KICAgICAgICA6ICggRGl2ZXJzaW9uOjpNYXJrKCkgLSBEaXZl
cnNpb246OlZlcnRpY2FsUG9zaXRpb24oKSApOw0KICAgIE1vdmVWZXJ0aWNhbCggJG4gKSBpZiAo
ICRuIDwgMCApOw0KfSApOw0KDQoNCiMgLS0tIDQuIFRleHQgRmlsbGluZywgQWRqdXN0aW5nIGFu
ZCBDZW50ZXJpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIFRoZSBMaW5l
IHBhY2thZ2UgaXMgYWxsIGFib3V0IGNvbXBvc2luZyBhbiBvdXRwdXQgbGluZSAtIGluZGVudGlu
ZywgZmlsbGluZywNCiMgYWRqdXN0aW5nLCBoYW5kbGluZyBoeXBoZW5zLg0KDQpwYWNrYWdlIExp
bmU7DQoNCnN1YiBJbmRlbnQgeyBkZWZpbmVkKEVudjo6VGVtcEluZGVudCgpKSA/IEVudjo6VGVt
cEluZGVudCgpIDogRW52OjpJbmRlbnQoKSB9IA0KDQojIFVwZGF0ZSBsaW5lIGRpbWVuc2lvbnMg
anVzdCBiZWZvcmUgY29tcG9zaW5nIGEgbGluZTsNCiMgaW5kZW50LCB0ZW1wb3JhcnkgaW5kZW50
IGFuZCBsaW5lIGxlbmd0aCBhcmUgZGVsYXllZCBpZiBhIGxpbmUgaXMNCiMgcGFydGlhbGx5IGNv
bGxlY3RlZC4NCg0Kc3ViIFVwZGF0ZURpbWVuc2lvbnMNCnsNCiAgICByZXR1cm4gaWYgRW52OjpF
bGVtZW50c0xlbmd0aCgpOw0KICAgIEVudjo6SW5kZW50KCBFbnY6Ok5ld0luZGVudCgpLT5WYWx1
ZSgpICk7DQogICAgRW52OjpUZW1wSW5kZW50KCBFbnY6Ok5ld1RlbXBJbmRlbnQoKSApOw0KICAg
IEVudjo6TGluZUxlbmd0aCggRW52OjpOZXdMaW5lTGVuZ3RoKCktPlZhbHVlKCkgKTsNCn0NCg0K
IyBGbHVzaCBhbnkgbGluZXMgYnVmZmVyZWQgZHVlIHRvIHBlbmRpbmcgcGFnZSB0cmFwcy4NCg0K
c3ViIEZsdXNoDQp7DQogICAgUGFnZTo6QWRkTGluZSggQHsgc2hpZnQoIEB7RW52OjpMaW5lQnVm
ZmVyKCl9ICkgfSApDQoJd2hpbGUgKCBAe0Vudjo6TGluZUJ1ZmZlcigpfSBhbmQgISAkVHJhcDo6
UGVuZGluZyApOw0KfQ0KDQojIEFkZCB0aGUgY29tcG9zZWQgbGluZSB0byB0aGUgdGhlIHBhZ2Ug
YW5kIHJlc2V0IGFsbCByZWxhdGVkIHZhcmlhYmxlcy4NCiMgQSBtYXJnaW4gY2hhcmFjdGVyLCBp
ZiBkZWZpbmVkLCBpcyBhZGRlZCBhdCB0aGlzIHBvaW50Lg0KIyBJZiBhIHBhZ2UgdHJhcCBpcyBw
ZW5kaW5nIGV4ZWN1dGlvbiwgd2UgYnVmZmVyIHRoZSBvdXRwdXQgZm9yIGxhdGVyLg0KDQpzdWIg
QWRkVG9QYWdlDQp7DQogICAgdW5zaGlmdCggQHtFbnY6OkVsZW1lbnRzKCl9LCBQYXJzZTo6TWFr
ZU1vdGlvbihJbmRlbnQoKSwgMCkgKSBpZiBJbmRlbnQoKTsNCiAgICBpZiAoIGRlZmluZWQoIEVu
djo6TWFyZ2luQ2hhcigpICkgYW5kIEVudjo6RWxlbWVudHNMZW5ndGgoKSApDQogICAgew0KICAg
ICAgICBteSAkc3BhY2UgPSBFbnY6OkxpbmVMZW5ndGgoKSAtIEluZGVudCgpIC0gRW52OjpFbGVt
ZW50c0xlbmd0aCgpDQoJICAgICAgICAgICsgRW52OjpNYXJnaW5DaGFyU3BhY2UoKTsNCgkkc3Bh
Y2UgPSAwIGlmICRzcGFjZSA8IDA7DQoJcHVzaCggQHtFbnY6OkVsZW1lbnRzKCl9LCBQYXJzZTo6
TWFrZU1vdGlvbiggJHNwYWNlLCAwICksDQoJICAgICAgRW52OjpNYXJnaW5DaGFyKCkgKTsNCiAg
ICB9DQogICAgcHVzaCBAe0Vudjo6RWxlbWVudHMoKX0sIFBhcnNlOjpNYWtlTmV3TGluZSgpOw0K
ICAgIHVubGVzcyAoICRUcmFwOjpQZW5kaW5nICkNCiAgICB7DQoJRmx1c2goKTsNCiAgICAgICAg
UGFnZTo6QWRkTGluZSggQHtFbnY6OkVsZW1lbnRzKCl9ICk7DQogICAgfQ0KICAgIGVsc2UNCiAg
ICB7DQoJcHVzaCggQHtFbnY6OkxpbmVCdWZmZXIoKX0sIFsgQHtFbnY6OkVsZW1lbnRzKCl9IF0g
KTsNCiAgICB9DQogICAgQHtFbnY6OkVsZW1lbnRzKCl9ID0gKCk7DQogICAgRW52OjpFbGVtZW50
c0xlbmd0aCggMCApOw0KICAgIEVudjo6TmV3VGVtcEluZGVudCggdW5kZWYgKTsNCiAgICBVcGRh
dGVEaW1lbnNpb25zKCk7DQp9DQoNCnN1YiBVbmNvbmRpdGlvbmFsQnJlYWsNCnsNCiAgICBGbHVz
aCgpOw0KICAgIGlmICggRW52OjpFbGVtZW50c0xlbmd0aCgpID4gMCApDQogICAgew0KICAgICAg
ICBFbnY6OkVsZW1lbnRzTGVuZ3RoKCBFbnY6OkVsZW1lbnRzTGVuZ3RoKCkgDQoJCQkgICAgIC0g
cG9wKCBAe0Vudjo6RWxlbWVudHMoKX0gKS0+V2lkdGgoKSApDQoJICAgIGlmICggRW52OjpFbGVt
ZW50cygpLT5bLTFdLT5Jc0FkanVzdGFibGUoKSApOw0KICAgICAgICBBZGp1c3RTbnVnKCkgdW5s
ZXNzIEVudjo6Tm9BZGp1c3QoKTsNCiAgICAgICAgQWRkVG9QYWdlKCk7DQogICAgfQ0KfQ0KDQpz
dWIgQnJlYWsNCnsNCiAgICBQYWdlOjpCZWdpblBhZ2UoKSBpZiAkUGFnZTo6Rmlyc3RQYWdlOw0K
ICAgIFVuY29uZGl0aW9uYWxCcmVhaygpIHVubGVzcyAkTGluZTo6U3VwcHJlc3NCcmVhazsNCn0N
Cg0KIyBDb21wb3NlIGFuIG91dHB1dCBsaW5lLCBmaWxsZWQgYW5kIGFkanVzdGVkIGFzIG5lY2Vz
c2FyeSwgZ2l2ZW4gZWxlbWVudHMNCiMgZnJvbSBpbnB1dCBsaW5lcy4NCg0Kc3ViIENvbXBvc2UN
CnsNCiAgICBteSBAZWxlbWVudHMgPSBAXzsNCiAgICBQYWdlOjpCZWdpblBhZ2UoKSBpZiAkUGFn
ZTo6Rmlyc3RQYWdlOw0KICAgIFVwZGF0ZURpbWVuc2lvbnMoKTsNCg0KICAgIGZvcmVhY2ggbXkg
JGVsZW1lbnQgKCBAZWxlbWVudHMgKQ0KICAgIHsNCiAgICAgICAgaWYgKCAkZWxlbWVudC0+SXNC
cmVhaygpICkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCBFbnY6OkNlbnRlcmVkTGluZXMo
KSA+IDAgKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEFkanVzdFNudWcoKTsNCiAg
ICAgICAgICAgICAgICBBZGRUb1BhZ2UoKTsNCiAgICAgICAgICAgICAgICBFbnY6OkNlbnRlcmVk
TGluZXMoIEVudjo6Q2VudGVyZWRMaW5lcygpIC0gMSApOw0KICAgICAgICAgICAgICAgIG5leHQ7
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNpZiAoIEVudjo6Tm9GaWxsKCkgb3IgKCBF
bnY6OkVsZW1lbnRzTGVuZ3RoKCkNCiAgICAgICAgICAgICAgICAgICBhbmQgRW52OjpFbGVtZW50
cygpLT5bMF0tPklzQWRqdXN0YWJsZSgpICkgKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIEFkZFRvUGFnZSgpOw0KICAgICAgICAgICAgICAgIG5leHQ7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICAkZWxlbWVudCA9IFBhcnNlOjpNYWtlU3BhY2UoKTsgIyBuZXdsaW5lIGJlY29t
ZXMgc3BhY2UgaW4gZmlsbCBtb2RlDQogICAgICAgIH0NCg0KICAgICAgICAjIEluIGZpbGwgbW9k
ZSwgZGl0Y2ggY29uc2VjdXRpdmUgc3BhY2VzOg0KICAgICAgICBuZXh0IGlmICghRW52OjpOb0Zp
bGwoKSBhbmQgJGVsZW1lbnQtPklzQWRqdXN0YWJsZSgpDQogICAgICAgICAgICBhbmQgQHtFbnY6
OkVsZW1lbnRzKCl9IGFuZCBFbnY6OkVsZW1lbnRzKCktPlstMV0tPklzQWRqdXN0YWJsZSgpKTsN
Cg0KICAgICAgICBwdXNoIEB7RW52OjpFbGVtZW50cygpfSwgJGVsZW1lbnQ7DQogICAgICAgIEVu
djo6RWxlbWVudHNMZW5ndGgoIEVudjo6RWxlbWVudHNMZW5ndGgoKSArICRlbGVtZW50LT5XaWR0
aCgpICk7DQogICAgICAgIG5leHQgaWYgRW52OjpOb0ZpbGwoKTsNCg0KCSMgSWYgdGhlIGNvbGxl
Y3RlZCBsaW5lIGlzIHRvbyBsb25nIGF0IHRoaXMgcG9pbnQsIGJhY2sgdXANCgkjIHRvIGEgYnJl
YWthYmxlIHBvaW50IGFuZCBvdXRwdXQsIGZpbGxpbmcgaWYgYXBwcm9wcmlhdGU6DQogICAgICAg
IGlmICggRW52OjpFbGVtZW50c0xlbmd0aCgpID4gRW52OjpMaW5lTGVuZ3RoKCkgLSBJbmRlbnQo
KSApDQogICAgICAgIHsNCiAgICAgICAgICAgIG15IEBzYXZlOw0KICAgICAgICAgICAgbXkgJHNh
dmVfbGVuZ3RoID0gMDsNCiAgICAgICAgICAgIHdoaWxlICggbXkgJGVsZW1lbnQgPSBwb3AgQHtF
bnY6OkVsZW1lbnRzKCl9ICkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBFbnY6OkVs
ZW1lbnRzTGVuZ3RoKEVudjo6RWxlbWVudHNMZW5ndGgoKS0kZWxlbWVudC0+V2lkdGgoKSk7DQog
ICAgICAgICAgICAgICAgaWYgKCBFbnY6OkVsZW1lbnRzTGVuZ3RoKCkgYW5kIA0KCQkgICAgICgg
JGVsZW1lbnQtPklzQWRqdXN0YWJsZSgpDQoJCSAgICAgICBvciAoIEVudjo6RWxlbWVudHMoKS0+
Wy0xXS0+VmFsdWUoKSBlcSAnLScNCgkJCSAgICBhbmQgJGVsZW1lbnQtPlZhbHVlKCkgPX4gL1x3
Lw0KCQkJICAgIGFuZCBkZWZpbmVkKCBFbnY6OkVsZW1lbnRzKCktPlstMl0gKQ0KCQkJICAgIGFu
ZCBFbnY6OkVsZW1lbnRzKCktPlstMl0tPlZhbHVlKCkgPX4gL1x3LyApICkgKQ0KCQl7DQogICAg
ICAgICAgICAgICAgICAgIEFkanVzdCgpIHVubGVzcyBFbnY6Ok5vQWRqdXN0KCk7DQogICAgICAg
ICAgICAgICAgICAgIEFkZFRvUGFnZSgpOw0KICAgICAgICAgICAgICAgICAgICBsYXN0IGlmICRl
bGVtZW50LT5Jc0FkanVzdGFibGUoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgdW5zaGlmdCBAc2F2ZSwgJGVsZW1lbnQ7DQogICAgICAgICAgICAgICAgJHNhdmVfbGVuZ3Ro
ICs9ICRlbGVtZW50LT5XaWR0aCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgQHtFbnY6
OkVsZW1lbnRzKCl9ID0gQHNhdmU7DQogICAgICAgICAgICBFbnY6OkVsZW1lbnRzTGVuZ3RoKCAk
c2F2ZV9sZW5ndGggKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0Kc3ViIEFkanVzdA0Kew0KICAg
IGlmICggRW52OjpBZGp1c3RUeXBlKCkgPX4gL1tscmNdLyApDQogICAgew0KICAgICAgICBBZGp1
c3RTbnVnKCk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIEFkanVzdFdpZGUoKTsN
CiAgICB9DQp9DQoNCnN1YiBBZGp1c3RTbnVnDQp7DQogICAgbXkgJGZpbGwgPSBFbnY6OkxpbmVM
ZW5ndGgoKSAtIEluZGVudCgpIC0gRW52OjpFbGVtZW50c0xlbmd0aCgpOw0KICAgIHJldHVybiBp
ZiAkZmlsbCA8PSAwOw0KICAgIGlmICggKEVudjo6Q2VudGVyZWRMaW5lcygpID4gMCkgb3IgRW52
OjpBZGp1c3RUeXBlKCkgPX4gL1tjcl0vICkNCiAgICB7DQoJJGZpbGwgPSBQb3J0aW9uV2lkdGgo
ICRmaWxsLCAyLCAwICkgdW5sZXNzIEVudjo6QWRqdXN0VHlwZSgpIGVxICdyJzsNCiAgICAgICAg
dW5zaGlmdCBAe0Vudjo6RWxlbWVudHMoKX0sIFBhcnNlOjpNYWtlTW90aW9uKCRmaWxsLDApOw0K
ICAgICAgICBFbnY6OkVsZW1lbnRzTGVuZ3RoKCBFbnY6OkVsZW1lbnRzTGVuZ3RoKCkgKyAkZmls
bCApOw0KICAgIH0NCiAgICAjIGVsc2UgYWRqdXN0IGxlZnQgLSBkbyBub3RoaW5nDQp9DQoNCnN1
YiBBZGp1c3RXaWRlDQp7DQogICAgbXkgJGZpbGwgPSBFbnY6OkxpbmVMZW5ndGgoKSAtIEluZGVu
dCgpIC0gRW52OjpFbGVtZW50c0xlbmd0aCgpOw0KICAgIHJldHVybiBpZiAkZmlsbCA8PSAwOw0K
ICAgIG15ICRzcGFjZXMgPSAwOw0KICAgIG1hcCB7ICsrJHNwYWNlcyBpZiAkXy0+SXNBZGp1c3Rh
YmxlKCkgfSBAe0Vudjo6RWxlbWVudHMoKX07DQogICAgbXkgJGkgPSAwOw0KICAgIGZvcmVhY2gg
KCBAe0Vudjo6RWxlbWVudHMoKX0gKQ0KICAgIHsNCiAgICAgICAgaWYgKCAkXy0+SXNBZGp1c3Rh
YmxlKCkgKQ0KICAgICAgICB7DQogICAgICAgICAgICAkXy0+QWRqdXN0V2lkdGgoICRfLT5XaWR0
aCgpICsgUG9ydGlvbldpZHRoKCAkZmlsbCwgJHNwYWNlcywNCiAgICAgICAgICAgICAgICAoJExp
bmU6Ol9sZWZ0d2FyZCA/ICRpIDogKCRzcGFjZXMtJGktMSkpICkgKTsNCiAgICAgICAgICAgICsr
JGk7DQogICAgICAgIH0NCiAgICB9DQogICAgJExpbmU6Ol9sZWZ0d2FyZCA9ICEgJExpbmU6Ol9s
ZWZ0d2FyZDsNCiAgICBFbnY6OkVsZW1lbnRzTGVuZ3RoKCBFbnY6OkVsZW1lbnRzTGVuZ3RoKCkg
KyAkZmlsbCApOw0KfQ0KDQpzdWIgUG9ydGlvbldpZHRoICAgICAjICRtaW5lIGlzIFswLi4kZGl2
aXNvci0xXQ0Kew0KICAgIG15ICgkd2lkdGgsJGRpdmlzb3IsJG1pbmUpID0gQF87DQogICAgbXkg
JHBpZWNlcyA9IGludCggJHdpZHRoIC8gT3V0cHV0OjpNaW5Ib3Jpem9udGFsKCkgKTsNCiAgICBt
eSAkcG9ydGlvbiA9IGludCgkcGllY2VzIC8gJGRpdmlzb3IpICsgKCRtaW5lIDwgKCRwaWVjZXMg
JSAkZGl2aXNvcikpOw0KICAgICgkcG9ydGlvbiAqIE91dHB1dDo6TWluSG9yaXpvbnRhbCgpKTsN
Cn0NCg0KTWFjcm86OkJ1aWx0aW4oICdicicsIDAsIHN1YiB7CQkJIyAuYnIgLSBicmVhaw0KICAg
IEJyZWFrKCk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdmaScsIDAsIHN1YiB7CQkJIyAuZmkg
LSBmaWxsDQogICAgQnJlYWsoKTsNCiAgICBFbnY6Ok5vRmlsbCggMCApOyB9ICk7DQoNCk1hY3Jv
OjpCdWlsdGluKCAnbmYnLCAwLCBzdWIgewkJCSMgLm5mIC0gbm8gZmlsbA0KICAgIEJyZWFrKCk7
DQogICAgRW52OjpOb0ZpbGwoIDEgKTsgfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ2FkJywgMSwg
c3ViIHsJCQkjIC5hZCAtIHNldCBhZGp1c3QNCiAgICBpZiAoIGRlZmluZWQgJF9bMF0gKQ0KICAg
IHsNCiAgICAgICAgbXkgJHR5cGUgPSAoICRfWzBdID1+IC9eXGQrJC8gKSA/IGNociggJF9bMF0g
KSA6ICRfWzBdOw0KICAgICAgICBFbnY6OkFkanVzdFR5cGUoICR0eXBlICkgaWYgKCAkdHlwZSA9
fiAvXltscmNibl0kLyApOw0KICAgIH0NCiAgICBFbnY6Ok5vQWRqdXN0KCAwICk7IH0gKTsNCg0K
TWFjcm86OkJ1aWx0aW4oICduYScsIDAsIHN1YiB7CQkJIyAubmEgLSBubyBhZGp1c3QNCiAgICBF
bnY6Ok5vQWRqdXN0KCAxICk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdjZScsIDEsIHN1YiB7
CQkJIyAuY2UgLSBjZW50ZXIgbGluZXMNCiAgICBCcmVhaygpOw0KICAgIEVudjo6Q2VudGVyZWRM
aW5lcyggZGVmaW5lZCgkX1swXSkgPyBTY2FsZTo6RXhwcigkX1swXSkgOiAxICk7IH0gKTsNCg0K
IyAtLS0gNS4gVmVydGljYWwgU3BhY2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCk1hY3JvOjpCdWlsdGluKCAndnMnLCAxLCBzdWIgeyAg
ICAgICAgICAgICAgICAgICMgLnZzIC0gdmVydCBiYXNlbGluZSBzcGFjZQ0KICAgIEVudjo6VmVy
dGljYWxTcGFjZSgpLT5TZXQoIHNoaWZ0ICk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdzcCcs
IDEsIHN1YiB7IAkJCSMgLnNwIC0gdmVydGljYWwgc3BhY2UNCiAgICBMaW5lOjpCcmVhaygpOw0K
ICAgIFBhZ2U6Ok1vdmVWZXJ0aWNhbChTY2FsZTo6VG9WZXJ0aWNhbCgoZGVmaW5lZCgkX1swXSkg
PyAkX1swXSA6IDEpLCAndicpKQ0KICAgICAgICB1bmxlc3MgRGl2ZXJzaW9uOjpOb1NwYWNlKCk7
IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdzdicsIDEsIHN1YiB7CQkJIyAuc3YgLSBTYXZlIHZl
cnRpY2FsIHNwYWNlDQogICAgbXkgJHNhdmUgPSBTY2FsZTo6RXhwciggKCBkZWZpbmVkKCRfWzBd
KSA/ICRfWzBdIDogJzEnICksICd2JyApOw0KICAgIGlmICggJHNhdmUgPiBUcmFwOjpEaXN0YW5j
ZVRvTmV4dCgpICkNCiAgICB7DQogICAgICAgICRQYWdlOjpfc2F2ZWRfc3BhY2UgPSAkc2F2ZTsN
CiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgUGFnZTo6TW92ZVZlcnRpY2FsKCAkc2F2
ZSApOw0KICAgICAgICAkUGFnZTo6X3NhdmVkX3NwYWNlID0gdW5kZWY7DQogICAgfQ0KfSApOw0K
DQpNYWNybzo6QnVpbHRpbiggJ29zJywgMCwgc3ViIHsJCQkjIC5vcyAtIG91dHB1dCBzYXZlZCBz
cGFjZQ0KICAgIGlmICggZGVmaW5lZCAkUGFnZTo6X3NhdmVkX3NwYWNlICkNCiAgICB7DQogICAg
ICAgIFBhZ2U6Ok1vdmVWZXJ0aWNhbCggJFBhZ2U6Ol9zYXZlZF9zcGFjZSApOw0KICAgICAgICAk
UGFnZTo6X3NhdmVkX3NwYWNlID0gdW5kZWY7DQogICAgfQ0KfSApOw0KDQpNYWNybzo6QnVpbHRp
biggJ25zJywgMCwgc3ViIHsJCQkjIC5ucyAtIE5vIHNwYWNpbmcNCiAgICBEaXZlcnNpb246Ok5v
U3BhY2UoMSk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdycycsIDAsIHN1YiB7CQkJIyAucnMg
LSBSZXN0b3JlIHNwYWNpbmcNCiAgICBEaXZlcnNpb246Ok5vU3BhY2UoMCk7IH0gKTsNCg0KIyAt
LS0gNi4gTGluZSBMZW5ndGggYW5kIEluZGVudGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQoNCk1hY3JvOjpCdWlsdGluKCAnbGwnLCAxLCBzdWIgeyAgICAg
ICAgICAgICAgICAgICMgLmxsIC0gc2V0IGxpbmUgbGVuZ3RoDQogICAgRW52OjpOZXdMaW5lTGVu
Z3RoKCktPlNldE9yQWRkKCAkX1swXSApOw0KICAgIEVudjo6TmV3TGluZUxlbmd0aCgpLT5TZXQo
IDAgKSBpZiBFbnY6Ok5ld0xpbmVMZW5ndGgoKS0+VmFsdWUoKSA8IDA7DQogICAgTGluZTo6VXBk
YXRlRGltZW5zaW9ucygpOw0KfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ2luJywgMSwgc3ViIHsg
ICAgICAgICAgICAgICAgICAjIC5pbiAtIHNldCBpbmRlbnQNCiAgICBMaW5lOjpCcmVhaygpOw0K
ICAgIEVudjo6TmV3SW5kZW50KCktPlNldE9yQWRkKCAkX1swXSApOw0KICAgIEVudjo6TmV3SW5k
ZW50KCktPlNldCggMCApIGlmIEVudjo6TmV3SW5kZW50KCktPlZhbHVlKCkgPCAwOw0KICAgIEVu
djo6TmV3VGVtcEluZGVudCggdW5kZWYgKTsgICAgICAgICAgICAgICAgICAgIyAuaW4gdHJ1bXBz
IC50aQ0KICAgIExpbmU6OlVwZGF0ZURpbWVuc2lvbnMoKTsNCn0gKTsNCg0KTWFjcm86OkJ1aWx0
aW4oICd0aScsIDEsIHN1YiB7ICAgICAgICAgICAgICAgICAgIyAudGkgLSBzZXQgdGVtcG9yYXJ5
IGluZGVudA0KICAgIExpbmU6OkJyZWFrKCk7DQogICAgbXkgJHZhbHVlOw0KICAgIGlmICggZGVm
aW5lZCAkX1swXSApDQogICAgew0KCSR2YWx1ZSA9IFNjYWxlOjpFeHByKCRfWzBdLCAnbScpOw0K
CSR2YWx1ZSArPSBFbnY6OkluZGVudCgpIGlmICggJF9bMF0gPX4gL15bLStdLyApOw0KCSR2YWx1
ZSA9IDAgaWYgJHZhbHVlIDwgMDsNCiAgICB9DQogICAgRW52OjpOZXdUZW1wSW5kZW50KCAkdmFs
dWUgKTsNCiAgICBMaW5lOjpVcGRhdGVEaW1lbnNpb25zKCk7DQp9ICk7DQoNCiMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIyBXaGVuIGFuIGlucHV0IGNoYXJhY3RlciBpcyBpbnRlcnByZXRlZCBhcyBw
YXJ0IG9mIHRoZSBkb2N1bWVudCB0ZXh0DQojIGl0IGJlY29tZXMgYSBQcmludEVsZW1lbnQsIHdp
dGggbW90aW9uIGFuZCBmb250IGluZm9ybWF0aW9uLg0KIyBBIFByaW50RWxlbWVudCBpcyBhbiBh
cnJheSBjb250YWluaW5nIGEgdmFsdWUsIHdpZHRoLCBoZWlnaHQgYW5kIGZvbnQuDQoNCnBhY2th
Z2UgUHJpbnRFbGVtZW50Ow0KDQpzdWIgbmV3DQp7DQogICAgbXkgJGNsYXNzID0gc2hpZnQ7DQog
ICAgYmxlc3MoIFsgQF8gXSwgKHJlZigkY2xhc3MpIHx8ICRjbGFzcykgKTsNCn0NCg0Kc3ViIENs
b25lICAgICAgICB7IGJsZXNzKCBbIEB7JF9bMF19IF0sIHJlZigkX1swXSkgKTsgfQ0Kc3ViIFZh
bHVlICAgICAgICB7ICRfWzBdWzBdIH0NCnN1YiBXaWR0aCAgICAgICAgeyAkX1swXVsxXSB9DQpz
dWIgSGVpZ2h0ICAgICAgIHsgJF9bMF1bMl0gfQ0Kc3ViIEZvbnQgICAgICAgICB7ICRfWzBdWzNd
IH0NCnN1YiBBZGp1c3RXaWR0aCAgeyAkX1swXVsxXSA9ICRfWzFdOyB9DQpzdWIgUHJpbnQgICAg
ICAgIHt9DQpzdWIgSXNBZGp1c3RhYmxlIHsgMCB9DQpzdWIgSXNCcmVhayAgICAgIHsgMCB9DQpz
dWIgSXNTcGFjZSAgICAgIHsgMCB9DQpzdWIgSXNIeXBoZW4gICAgIHsgMCB9DQpzdWIgSXNFcXVh
bFRvDQp7DQogICAgbXkgKCRtZSwkeW91KSA9IEBfOw0KICAgIGZvcmVhY2ggKCAwLi4zICkgeyBy
ZXR1cm4gMCB1bmxlc3MgJG1lLT5bJF9dIGVxICR5b3UtPlskX107IH0NCiAgICAxOw0KfQ0KDQpA
Q2hhckVsZW1lbnQ6OklTQSAgICAgID0gJ1ByaW50RWxlbWVudCc7DQpATW90aW9uRWxlbWVudDo6
SVNBICAgID0gJ1ByaW50RWxlbWVudCc7DQpAU3BhY2VFbGVtZW50OjpJU0EgICAgID0gJ1ByaW50
RWxlbWVudCc7DQpATmV3TGluZUVsZW1lbnQ6OklTQSAgID0gJ1ByaW50RWxlbWVudCc7DQpATmV3
UGFnZUVsZW1lbnQ6OklTQSAgID0gJ1ByaW50RWxlbWVudCc7DQpASHlwaGVuRWxlbWVudDo6SVNB
ICAgID0gJ1ByaW50RWxlbWVudCc7DQoNCnN1YiBTcGFjZUVsZW1lbnQ6OklzQWRqdXN0YWJsZSAg
eyAxIH0NCnN1YiBOZXdMaW5lRWxlbWVudDo6SXNCcmVhayAgICAgeyAxIH0NCnN1YiBOZXdQYWdl
RWxlbWVudDo6SXNCcmVhayAgICAgeyAxIH0NCnN1YiBTcGFjZUVsZW1lbnQ6OklzU3BhY2UgICAg
ICAgeyAxIH0NCnN1YiBNb3Rpb25FbGVtZW50OjpJc1NwYWNlICAgICAgeyAkX1swXS0+SGVpZ2h0
KCkgPT0gMCB9DQpzdWIgSHlwaGVuRWxlbWVudDo6SXNIeXBoZW4gICAgIHsgMSB9DQoNCnN1YiBD
aGFyRWxlbWVudDo6UHJpbnQNCnsNCiAgICBteSAkbWUgPSBzaGlmdDsNCiAgICBPdXRwdXQ6OkNo
YXIoICRtZS0+VmFsdWUoKSwgJG1lLT5XaWR0aCgpLCAkbWUtPkZvbnQoKSApOw0KfQ0Kc3ViIE1v
dGlvbkVsZW1lbnQ6OlByaW50ICAgeyBPdXRwdXQ6Ok1vdGlvbigkX1swXS0+V2lkdGgoKSwgJF9b
MF0tPkhlaWdodCgpKSB9DQpzdWIgU3BhY2VFbGVtZW50OjpQcmludCAgICB7IE91dHB1dDo6TW90
aW9uKCRfWzBdLT5XaWR0aCgpLCAwKSB9DQpzdWIgTmV3TGluZUVsZW1lbnQ6OlByaW50ICB7IE91
dHB1dDo6TmV3TGluZSgkX1swXS0+SGVpZ2h0KCkpIH0NCnN1YiBOZXdQYWdlRWxlbWVudDo6UHJp
bnQgIHsgT3V0cHV0OjpOZXdQYWdlKCkgfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnBhY2th
Z2UgUGFyc2U7DQoNCnN1YiBNYWtlTmV3UGFnZSB7IE5ld1BhZ2VFbGVtZW50LT5uZXcoICcnLCAw
LCAwLCAwICkgfQ0Kc3ViIE1ha2VIeXBoZW4gIHsgSHlwaGVuRWxlbWVudC0+bmV3KCAnJywgMCwg
MCwgMCApIH0NCg0Kc3ViIE1ha2VOZXdMaW5lDQp7DQogICAgbXkgJHZlcnQgPSBzaGlmdCB8fCBT
Y2FsZTo6Um91bmRWZXJ0aWNhbChFbnY6OlYoKSk7DQogICAgTmV3TGluZUVsZW1lbnQtPm5ldygg
JycsIDAsICR2ZXJ0LCAwICk7DQp9DQoNCnN1YiBNYWtlQ2hhcg0Kew0KICAgIG15ICRjID0gc2hp
ZnQ7DQogICAgbXkgJHdpZHRoID0gc2hpZnQgfHwgRm9udDo6Q2hhcldpZHRoKCRjKTsNCiAgICBt
eSAkZm9udCA9IEZvbnQ6Ok5hbWUoKTsNCiAgICBDaGFyRWxlbWVudC0+bmV3KCAkYywgJHdpZHRo
LCAwLCBGb250OjpOYW1lKCkgKTsNCn0NCg0Kc3ViIE1ha2VTcGFjZQ0Kew0KICAgIG15ICR3aWR0
aCA9IEZvbnQ6OkNoYXJXaWR0aCgnICcpOw0KICAgIFNwYWNlRWxlbWVudC0+bmV3KCAnJywgJHdp
ZHRoLCAwLCAwICk7DQp9DQoNCnN1YiBNYWtlTW90aW9uDQp7DQogICAgbXkgJHggPSBTY2FsZTo6
VG9Ib3Jpem9udGFsKCBzaGlmdCwgJ3UnICk7DQogICAgbXkgJHkgPSBTY2FsZTo6VG9WZXJ0aWNh
bCggc2hpZnQsICd1JyApOw0KICAgIE1vdGlvbkVsZW1lbnQtPm5ldyggJycsICR4LCAkeSwgMCAp
Ow0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUmVhZGluZyBpbnB1dC4NCiMgV2UgcmVh
ZCBvbmUgY2hhcmFjdGVyIChvciBvbmUgUHJpbnRFbGVtZW50KSBhdCBhIHRpbWUuICBTb3JyeS4N
Cg0KdXNlIHZhcnMgcXd7DQogICAgQF9wdXNoYmFjayAkX2VvbCAkX2NvcHlfbW9kZSAkX2NvbnRp
bnVlX3RleHQgJF9mb3JjZV90ZXh0ICRfaW50ZXJwb2xhdGUNCn07DQoNCiMgUmVhZENoYXIoKSwg
UGVla0NoYXIoKSBpbnRlcnByZXQgZXNjYXBlIHNlcXVlbmNlcy4NCiMgUmVhZFJhd0NoYXIoKSwg
UGVla1Jhd0NoYXIoKSBkbyBub3QgaW50ZXJwcmV0IGVzY2FwZSBzZXF1ZW5jZXMuDQojIEBfcHVz
aGJhY2sgaXMgdG8gYmUgdXNlZCBvbmx5IGZvciBleHBhbmRlZCBlc2NhcGUgc2VxdWVuY2VzLCBh
bmQgc28NCiMgY2hhcmFjdGVycyB0YWtlbiBmcm9tIHRoZXJlIGFyZSB0byBiZSBwcm90ZWN0ZWQg
YWdhaW5zdCBmdXJ0aGVyIGV4cGFuc2lvbi4NCg0Kc3ViIFJlYWRSYXdDaGFyICB7IEBfcHVzaGJh
Y2sgPyBzaGlmdChAX3B1c2hiYWNrKSA6IElucHV0OjpSZWFkQ2hhcigpIH0NCnN1YiBQZWVrUmF3
Q2hhciAgeyBAX3B1c2hiYWNrID8gJF9wdXNoYmFja1swXSA6IElucHV0OjpQZWVrQ2hhcigpIH0N
CnN1YiBJc01vcmVJbnB1dCAgeyAhSW5wdXQ6OklzRW1wdHkoKSBvciBAX3B1c2hiYWNrOyB9DQpz
dWIgU2tpcFNwYWNlICAgIHsgUmVhZFJhd0NoYXIoKSB3aGlsZSAoIFBlZWtSYXdDaGFyKCkgZXEg
JyAnICk7IH0NCnN1YiBJZ25vcmVMaW5lICAgeyAxIHVudGlsICggSXNOZXdsaW5lKCBSZWFkUmF3
Q2hhcigpICkgb3IgISBJc01vcmVJbnB1dCgpICk7IH0NCnN1YiBDb3B5TW9kZSAgICAgeyBAXyA/
ICgkX2NvcHlfbW9kZSA9IHNoaWZ0KSA6ICRfY29weV9tb2RlOyB9DQoNCiMgR2V0IGlucHV0IHdp
dGggZXNjYXBlIHNlcXVlbmNlIHN1YnN0aXR1dGlvbjoNCg0Kc3ViIFJlYWRDaGFyDQp7DQogICAg
bXkgJGM7DQogICAgdW5zaGlmdCggQF9wdXNoYmFjaywgR2V0RXNjYXBlU2VxdWVuY2UoKSApDQoJ
dW50aWwgKCBAX3B1c2hiYWNrIG9yICgkYyA9IElucHV0OjpSZWFkQ2hhcigpKSBuZSAkRVNDQVBF
X0NIQVIgKTsNCiAgICBAX3B1c2hiYWNrID8gc2hpZnQoIEBfcHVzaGJhY2sgKSA6ICRjOw0KfQ0K
DQpzdWIgUGVla0NoYXINCnsNCiAgICB1bnRpbCAoIEBfcHVzaGJhY2sgb3IgSW5wdXQ6OlBlZWtD
aGFyKCkgbmUgJEVTQ0FQRV9DSEFSICkNCiAgICB7DQogICAgICAgIElucHV0OjpSZWFkQ2hhcigp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEaXNjYXJkIGVzY2FwZQ0KICAgICAgICB1
bnNoaWZ0KCBAX3B1c2hiYWNrLCBHZXRFc2NhcGVTZXF1ZW5jZSgpICk7ICAgICMgTWF5YmUgcmVj
dXJzaW9uDQogICAgfQ0KICAgIFBlZWtSYXdDaGFyKCk7DQp9DQoNCnN1YiBJc05ld2xpbmUNCnsN
CiAgICBteSAkZSA9IHNoaWZ0Ow0KICAgICggJGUgZXEgIlxuIiBvciAoIHJlZigkZSkgYW5kICRl
LT5Jc0JyZWFrKCkgKSApOw0KfQ0KDQojIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBjaGFycyBv
ciBQcmludEVsZW1lbnRzIGFyZSBlcXVhbDoNCg0Kc3ViIEFyZUVxdWFsDQp7DQogICAgbXkgKCRh
LCAkYikgPSBAXzsNCiAgICByZXR1cm4gMSBpZiAkYSBlcSAkYjsNCiAgICByZXR1cm4gMSBpZiAo
IHJlZiAkYSBhbmQgcmVmICRiIGFuZCAkYS0+SXNFcXVhbFRvKCRiKSApOw0KICAgIDA7DQp9DQoN
CiMgUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGFycmF5cyBvZiBjaGFycyBhbmQgUHJpbnRFbGVt
ZW50cyBhcmUgZXF1YWw6DQoNCnN1YiBBcmVFcXVhbExpc3RzDQp7DQogICAgbXkgKCRhLCAkYikg
PSBAXzsNCiAgICByZXR1cm4gMCBpZiBAJGEgIT0gQCRiOw0KICAgIGZvcmVhY2ggKCAwIC4uICQj
JGEgKSB7IHJldHVybiAwIHVubGVzcyBBcmVFcXVhbCggJGEtPlskX10sICRiLT5bJF9dICk7IH0N
CiAgICAxOw0KfQ0KDQpzdWIgR2V0TWFjcm9OYW1lDQp7DQogICAgbXkgJG5hbWUgPSAnJzsNCiAg
ICBSZWFkUmF3Q2hhcigpIHdoaWxlIFBlZWtSYXdDaGFyKCkgPX4gL15bIFx0XSQvOyAgICMgc2tp
cCB0YWJzIHRvbw0KICAgIGlmICggJEdyb2ZmQ29tcGF0aWJsZSApDQogICAgew0KCSRuYW1lID0g
R2V0QXJnVG8oJyAnKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCgkkbmFtZSA9IFJlYWRDaGFy
KCkgaWYgUGVla0NoYXIoKSA9fiAvXlxTJC87DQoJJG5hbWUgLj0gUmVhZENoYXIoKSBpZiBQZWVr
Q2hhcigpID1+IC9eXFMkLzsNCiAgICB9DQogICAgJG5hbWU7DQp9DQoNCiMgR2F0aGVyVW50aWwo
JGVuZG1hcmtlciwkdGV4dG1vZGUpDQojIFJlYWQgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgZW5k
IG1hcmtlciBvciBuZXdsaW5lLA0KIyByZXR1cm4gYWxsIGJ1dCB0aGUgZW5kIG1hcmtlci4NCiMg
SWYgJHRleHRtb2RlIHR1cm4gcGxhaW4gY2hhcmFjdGVycyBpbnRvIFByaW50RWxlbWVudHMuDQoN
CnN1YiBHYXRoZXJVbnRpbA0Kew0KICAgIG15ICRlbmRtYXJrZXIgPSBzaGlmdDsNCiAgICBteSAk
dGV4dG1vZGUgPSBzaGlmdDsNCiAgICBteSAoQHBhcnRzLCAkZSwgJHByb3RlY3QpOw0KICAgIHdo
aWxlICggSXNNb3JlSW5wdXQoKSApDQogICAgew0KCSRwcm90ZWN0ID0gKCBAX3B1c2hiYWNrID4g
MCApOw0KCSRlID0gUmVhZENoYXIoKTsNCglsYXN0IGlmICEgJHByb3RlY3QgYW5kICggQXJlRXF1
YWwoJGUsJGVuZG1hcmtlcikgb3IgSXNOZXdsaW5lKCRlKSApOw0KCSRlID0gTWFrZUNoYXIoJGUp
IGlmICR0ZXh0bW9kZSBhbmQgISByZWYoJGUpOw0KCXB1c2ggQHBhcnRzLCAkZTsNCiAgICB9DQog
ICAgJF9lb2wgPSBJc05ld2xpbmUoJGUpOw0KICAgIEBwYXJ0czsNCn0NCg0KIyBNb3N0IGFyZ3Vt
ZW50cyBhcmUgZXhwZWN0ZWQgYXMgcGxhaW4gc3RyaW5ncy4NCg0Kc3ViIEdldEFyZ1RvDQp7DQog
ICAgam9pbiAnJywgbWFwIHsgcmVmKCRfKSA/ICcgJyA6ICRfIH0gR2F0aGVyVW50aWwoc2hpZnQs
MCk7DQp9DQoNCnN1YiBHZXRMaW5lIHsgR2V0QXJnVG8oIlxuIik7IH0NCg0KIyBHaXZlbiBhIGRl
bGltaXRlciwgcmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgc2VxdWVuY2UgdG8gZm9sbG93DQoNCnN1
YiBHZXRXaWR0aFVudGlsDQp7DQogICAgbXkgJHdpZHRoID0gMDsNCiAgICBGb250OjpMb2NhbGl6
ZSgpOw0KICAgIGZvcmVhY2ggKCBHYXRoZXJVbnRpbChzaGlmdCwxKSApIHsgJHdpZHRoICs9ICRf
LT5XaWR0aCgpOyB9DQogICAgRm9udDo6VW5sb2NhbGl6ZSgpOw0KICAgICR3aWR0aDsNCn0NCg0K
c3ViIEdldFByaW50Q2hhcg0Kew0KICAgIHJldHVybiBpZiBQZWVrQ2hhciBlcSAiXG4iOw0KICAg
IG15ICRlID0gUmVhZENoYXIoKTsNCiAgICAoIHJlZigkZSkgPyAkZSA6IE1ha2VDaGFyKCRlKSAp
Ow0KfQ0KDQpzdWIgR2V0WmVyb1dpZHRoQ2hhcg0Kew0KICAgIG15ICRlID0gR2V0UHJpbnRDaGFy
KCk7DQogICAgJGUtPkFkanVzdFdpZHRoKDApIGlmICRlOw0KICAgICRlOw0KfQ0KDQojIHJldHVy
biB0aGUgbmFtZSBpbiBhbiBlc2NhcGUgc2VxdWVuY2UgbGlrZSBcZyh4eCBvciBcZ3gNCg0Kc3Vi
IEdldEVzY05hbWUNCnsNCiAgICBteSAkYyA9IFJlYWRDaGFyKCk7DQogICAgJGMgPSBHZXRBcmdU
bygnXScpIGlmICRHcm9mZkNvbXBhdGlibGUgYW5kICRjIGVxICdbJzsNCiAgICByZXR1cm4gJGMg
dW5sZXNzICRjIGVxICcoJzsNCiAgICBSZWFkQ2hhcigpIC4gUmVhZENoYXIoKTsNCn0NCg0KIyBy
ZXR1cm4gdGhlIG5hbWUgYW5kIHNpZ24gaW4gYW4gZXNjYXBlIHNlcXVlbmNlIGxpa2UgXG4rKHh4
IG9yIFxuLXgNCg0Kc3ViIEdldFNpZ25lZEVzY05hbWUNCnsNCiAgICBteSAkaW5jciA9IChQZWVr
Q2hhcigpID1+IC9eWy0rXSQvKSA/IFJlYWRDaGFyKCkgOiAnJzsNCiAgICAoR2V0RXNjTmFtZSgp
LCAkaW5jcik7DQp9DQoNCnN1YiBHZXRGb250U2l6ZSAgIyBmb3IgdGhlIHZhcmlvdXMgXHMgZXNj
YXBlIHNlcXVlbmNlcw0Kew0KICAgIG15ICgkYywkaW5jcikgPSBHZXRTaWduZWRFc2NOYW1lKCk7
DQogICAgJGMgLj0gUmVhZENoYXIoKSBpZiAhJGluY3IgYW5kICRjID4gMCBhbmQgJGMgPCA0IGFu
ZCBQZWVrQ2hhcigpID1+IC9cZC87DQogICAgKCRjLCAkaW5jcik7DQp9DQoNCiMgRWF0IHRoZSBz
ZXF1ZW5jZSAoc2FucyBlc2NhcGUpOyBtYXliZSByZXR1cm4gYSBjaGFyIG9yIFByaW50RWxlbWVu
dC4NCg0Kc3ViIEdldEVzY2FwZVNlcXVlbmNlDQp7DQogICAgbG9jYWwgJF8gPSBSZWFkUmF3Q2hh
cigpOw0KICAgIHJldHVybiAkXyBpZiByZWYgJF87DQoNCiAgICAjIENvcHkgbW9kZSBlc2NhcGVz
IGZpcnN0Og0KDQogICAgL1wiLyAgICAgICAgYW5kIElnbm9yZUxpbmUoKSwgcmV0dXJuICJcbiI7
DQogICAgL1wqLyAgICAgICAgYW5kIE1hY3JvOjpJbnZva2UoR2V0RXNjTmFtZSgpLDEpLCAoJF9p
bnRlcnBvbGF0ZT0xKSwgcmV0dXJuOw0KICAgIC9cJC8gICAgICAgIGFuZCBJbnB1dDo6T3BlbkFy
Z04oUmVhZENoYXIoKSksIHJldHVybjsNCiAgICAvYS8gICAgICAgICBhbmQgcmV0dXJuICRMRUFE
RVJfQ0hBUjsNCiAgICAvbi8gICAgICAgICBhbmQgcmV0dXJuIHNwbGl0KC8vLFJlZzo6VmFsdWUo
R2V0U2lnbmVkRXNjTmFtZSgpKSk7DQogICAgL3QvICAgICAgICAgYW5kIHJldHVybiAiXHQiOw0K
ICAgIC9cbi8gICAgICAgIGFuZCByZXR1cm47DQogICAgL1wuLyAgICAgICAgYW5kIHJldHVybiAn
Lic7DQogICAgLyRFU0NBUEUvICAgYW5kIHJldHVybiAkRVNDQVBFX0NIQVI7DQogICAgcmV0dXJu
ICgkRVNDQVBFX0NIQVIsJF8pIGlmIENvcHlNb2RlKCk7DQoNCiAgICAvXCUvICAgICAgICBhbmQg
KCRPSFlQSEVOIG5lICcnKSBhbmQgcmV0dXJuIE1ha2VIeXBoZW4oKTsNCiAgICAvWyAwXS8gICAg
ICBhbmQgcmV0dXJuIE1ha2VNb3Rpb24oRm9udDo6Q2hhcldpZHRoKCQmKSwwKTsNCiAgICAvW3xe
XCZdLyAgICBhbmQgcmV0dXJuIE1ha2VNb3Rpb24oMCwwKTsNCiAgICAvYy8gICAgICAgICBhbmQg
KCRfY29udGludWVfdGV4dD0xKSwgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAg
L0MvICAgICAgICAgYW5kIHJldHVybiBNYWtlQ2hhcihHZXRBcmdUbyhSZWFkQ2hhcigpKSk7DQog
ICAgL2QvICAgICAgICAgYW5kIHJldHVybiBNYWtlTW90aW9uKDAsKEVudjo6VigpLzIpKTsNCiAg
ICAvZS8gICAgICAgICBhbmQgcmV0dXJuIE1ha2VDaGFyKCAkRVNDQVBFX0NIQVIgKTsNCiAgICAv
Zi8gICAgICAgICBhbmQgRm9udDo6Q2hhbmdlVG8oR2V0RXNjTmFtZSgpKSwgICAgICAgICAgICAg
ICByZXR1cm47DQogICAgL2cvICAgICAgICAgYW5kIHJldHVybiBzcGxpdCgvLyxSZWc6OkZvcm1h
dE9mKEdldEVzY05hbWUoKSkpOw0KICAgIC9oLyAgICAgICAgIGFuZCByZXR1cm4gTWFrZU1vdGlv
bihHZXRBcmdUbyhSZWFkQ2hhcigpKSwwKTsNCiAgICAvay8gICAgICAgICBhbmQgS2VlcChSZWFk
Q2hhcigpKSwgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgL3IvICAgICAg
ICAgYW5kIHJldHVybiBNYWtlTW90aW9uKDAsLUVudjo6VigpKTsNCiAgICAvdS8gICAgICAgICBh
bmQgcmV0dXJuIE1ha2VNb3Rpb24oMCwoLUVudjo6VigpLzIpKTsNCiAgICAvdi8gICAgICAgICBh
bmQgcmV0dXJuIE1ha2VNb3Rpb24oMCxHZXRBcmdUbyhSZWFkQ2hhcigpKSk7DQogICAgL3cvICAg
ICAgICAgYW5kIHJldHVybiBzcGxpdCgvLyxHZXRXaWR0aFVudGlsKFJlYWRDaGFyKCkpKTsNCiAg
ICAvei8gICAgICAgICBhbmQgcmV0dXJuIEdldFplcm9XaWR0aENoYXIoKTsNCiAgICAvXHsvICAg
ICAgICBhbmQgcHVzaChASWY6Ol9zdGFjaywgJElmOjpfa2VlcF9lbHNlKSwgICAgICAgICByZXR1
cm47DQogICAgL1x9LyAgICAgICAgYW5kICgkSWY6Ol9rZWVwX2Vsc2UgPSBwb3AgQElmOjpfc3Rh
Y2spLCAgICAgICAgcmV0dXJuOw0KDQogICAgIyBOb3QgKHlldD8pIHN1cHBvcnRlZDoNCg0KICAg
IC9bYkRIbExOb1NYeF0vIGFuZCBHYXRoZXJVbnRpbChSZWFkQ2hhcigpKSwgcmV0dXJuOw0KICAg
IC9wLyAgICAgICAgIGFuZCByZXR1cm47DQogICAgL3MvICAgICAgICAgYW5kIEdldEZvbnRTaXpl
KCksIHJldHVybjsNCg0KICAgICMgaGFuZGxlIGVzY2FwZWQgY2hhcnMgXCh4eCBvciBceCA6DQoN
CiAgICAvXCgvICAgICAgICBhbmQgcmV0dXJuIE1ha2VDaGFyKCBSZWFkQ2hhcigpIC4gUmVhZENo
YXIoKSApOw0KICAgIE1ha2VDaGFyKCRfKTsNCn0NCg0KIyBBcmd1bWVudHMgYXJlIHNlcGFyYXRl
ZCBieSBzcGFjZXMuICBJZiBkb3VibGUtcXVvdGVkLCB0aGV5IG1heSBiZSBudWxsDQojIG9yIGNv
bnRhaW4gc3BhY2VzIG9yIGNvbnRhaW4gYSAiIGJ5IGRvdWJsaW5nIGl0OyANCiMgZS5nLiAiIiIi
IGFtb3VudHMgdG8gYSBzaW5nbGUgIi4NCg0Kc3ViIEdldE1hY3JvQXJncw0Kew0KICAgIG15IEBh
bGw7DQogICAgbXkgQGFyZzsNCiAgICBDb3B5TW9kZSgxKTsNCiAgICB3aGlsZSAoIElzTW9yZUlu
cHV0KCkgKQ0KICAgIHsNCiAgICAgICAgQGFyZyA9ICgpOw0KCVNraXBTcGFjZSgpOw0KCWlmICgg
UGVla1Jhd0NoYXIoKSBlcSAnIicgKQ0KCXsNCgkgICAgd2hpbGUgKCBQZWVrUmF3Q2hhcigpIGVx
ICciJyApDQoJICAgIHsNCgkJcHVzaCBAYXJnLCBSZWFkUmF3Q2hhcigpOw0KCQlwdXNoIEBhcmcs
IEdhdGhlclVudGlsKCAnIicsIDAgKTsNCgkgICAgfQ0KCSAgICBzaGlmdCBAYXJnOw0KCSAgICBw
dXNoIEBhbGwsIFsgQGFyZyBdOw0KCX0NCgllbHNlDQoJew0KCSAgICBwdXNoIEBhcmcsIEdhdGhl
clVudGlsKCAnICcsIDAgKTsNCgkgICAgcHVzaCBAYWxsLCBbIEBhcmcgXSBpZiBAYXJnOw0KCX0N
CglsYXN0IGlmICRfZW9sOw0KICAgIH0NCiAgICBDb3B5TW9kZSgwKTsNCiAgICBAYWxsOw0KfQ0K
DQojIEFyZ3VtZW50cyBmb3IgYnVpbHRpbnMgYXJlIGNvbnNvbGlkYXRlZCBpbnRvIHBsYWluIHN0
cmluZ3M6DQoNCnN1YiBHZXRCdWlsdGluQXJncw0Kew0KICAgIG15ICRleHBlY3RlZCA9IHNoaWZ0
Ow0KICAgIHJldHVybiAoKSB1bmxlc3MgJGV4cGVjdGVkID49IDA7IA0KICAgIG15KCAkYXJnLCBA
YXJncyk7DQogICAgZG8gew0KCVNraXBTcGFjZSgpOw0KICAgICAgICAkYXJnID0gR2V0QXJnVG8o
JyAnKTsNCglwdXNoIEBhcmdzLCAkYXJnIGlmICRhcmcgbmUgJyc7DQogICAgfSB1bnRpbCAoICRf
ZW9sICk7DQogICAgQGFyZ3M7DQp9DQoNCnN1YiBHZXRNYWNyb1N0cmluZ0RlZg0Kew0KICAgIG15
ICRuYW1lID0gR2V0TWFjcm9OYW1lKCk7DQogICAgU2tpcFNwYWNlKCk7DQogICAgUmVhZFJhd0No
YXIoKSBpZiBQZWVrUmF3Q2hhcigpIGVxICciJzsNCiAgICBDb3B5TW9kZSgxKTsNCiAgICBteSBA
cGFydHMgPSBHYXRoZXJVbnRpbCgiXG4iKTsNCiAgICBDb3B5TW9kZSgwKTsNCiAgICAoJG5hbWUs
IEBwYXJ0cyk7DQp9DQoNCnVzZSB2YXJzIHF3eyAkX2lucHV0X3dpZHRoIEBfaW5wdXRfZWxlbWVu
dHMgfTsNCg0KJF9pbnB1dF93aWR0aCA9IDA7DQpAX2lucHV0X2VsZW1lbnRzID0gKCk7DQoNCnN1
YiBBZGRUZXh0DQp7DQogICAgZm9yZWFjaCAoIEBfICkgeyAkX2lucHV0X3dpZHRoICs9ICRfLT5X
aWR0aCgpOyB9DQogICAgcHVzaCBAX2lucHV0X2VsZW1lbnRzLCBAXyA7DQp9DQoNCnN1YiBIb3Jp
em9udGFsUG9zaXRpb24geyAkX2lucHV0X3dpZHRoIH0NCnN1YiBLZWVwICAgICAgICAgICAgICAg
eyBSZWc6OlNldCggc2hpZnQoKSwgSG9yaXpvbnRhbFBvc2l0aW9uKCkgKSB9DQoNCnN1YiBGbHVz
aA0Kew0KICAgIHVubGVzcyAoICRfY29udGludWVfdGV4dCApDQogICAgew0KCSMgUmVtb3ZlIGV4
dHJhIHRyYWlsaW5nIHNwYWNlcw0KCWZvcmVhY2ggKCByZXZlcnNlKCAwIC4uICQjX2lucHV0X2Vs
ZW1lbnRzICkgKQ0KCXsNCgkgICAgbmV4dCBpZiAkX2lucHV0X2VsZW1lbnRzWyRfXS0+SXNCcmVh
aygpOw0KCSAgICBsYXN0IHVubGVzcyAkX2lucHV0X2VsZW1lbnRzWyRfXS0+SXNTcGFjZSgpOw0K
CSAgICBzcGxpY2UoIEBfaW5wdXRfZWxlbWVudHMsICRfLCAxICk7DQoJfQ0KICAgIH0NCiAgICBM
aW5lOjpDb21wb3NlKCBAX2lucHV0X2VsZW1lbnRzICk7DQogICAgJF9pbnB1dF93aWR0aCA9IDA7
DQogICAgQF9pbnB1dF9lbGVtZW50cyA9ICgpOw0KfQ0KDQp1c2UgdmFycyBxd3sgJF90YWJfZmls
bCAkX3RhYl9pbmRleCAkX3RhYl9wb3MgfTsNCg0Kc3ViIEhhbmRsZVRhYg0Kew0KICAgIEZpbGxU
YWIoKSBpZiBkZWZpbmVkICRfdGFiX3BvczsNCiAgICAkX3RhYl9maWxsID0gKGRlZmluZWQoJF9b
MF0gYW5kICFyZWYoJF9bMF0pKSApDQoJPyBQYXJzZTo6TWFrZUNoYXIoJF9bMF0pIDogJF9bMF07
DQogICAgJF90YWJfaW5kZXggPSBzY2FsYXIgQF9pbnB1dF9lbGVtZW50czsNCiAgICAkX3RhYl9w
b3MgPSBIb3Jpem9udGFsUG9zaXRpb24oKTsNCiAgICBGaWxsVGFiKCkgdW5sZXNzIFRhYjo6RGVs
YXlUYWJGaWxsKCAkX3RhYl9wb3MgKTsNCn0NCg0Kc3ViIEZpbGxUYWINCnsNCiAgICBteSAkbmV4
dF93aWR0aCA9IEhvcml6b250YWxQb3NpdGlvbigpIC0gJF90YWJfcG9zOw0KICAgIG15ICR0YWJf
d2lkdGggPSBUYWI6OkRpc3RhbmNlVG9UYWIoICRfdGFiX3BvcywgJG5leHRfd2lkdGggKTsNCiAg
ICBpZiAoICRfdGFiX2ZpbGwgKQ0KICAgIHsNCglteSBAZmlsbCA9ICgkX3RhYl9maWxsLT5DbG9u
ZSgpKSB4IGludCgkdGFiX3dpZHRoLyRfdGFiX2ZpbGwtPldpZHRoKCkpOw0KCXNwbGljZSBAX2lu
cHV0X2VsZW1lbnRzLCAkX3RhYl9pbmRleCwgMCwgQGZpbGw7DQogICAgfQ0KICAgIGVsc2UNCiAg
ICB7DQoJc3BsaWNlIEBfaW5wdXRfZWxlbWVudHMsICRfdGFiX2luZGV4LCAwLCBNYWtlTW90aW9u
KCAkdGFiX3dpZHRoLCAwICk7DQogICAgfQ0KICAgICRfdGFiX3BvcyA9ICRfdGFiX2luZGV4ID0g
JF90YWJfZmlsbCA9IHVuZGVmOw0KICAgICRfaW5wdXRfd2lkdGggKz0gJHRhYl93aWR0aDsNCn0N
Cg0Kc3ViIEhhbmRsZUZpZWxkDQp7DQogICAgbXkgKEBwYXJ0cywkcGFkcyk7DQogICAgZm9yZWFj
aCAoIEdhdGhlclVudGlsKCAkRmllbGQ6OkRlbGltLCAwICkgKQ0KICAgIHsNCiAgICAgICAgcHVz
aCggQHBhcnRzLCAkXyApLCBuZXh0IGlmIHJlZigkXyk7DQogICAgICAgIC8kRmllbGQ6OlBhZC8g
YW5kICsrJHBhZHMgYW5kIHB1c2goIEBwYXJ0cywgTWFrZVNwYWNlKCkgKSBhbmQgbmV4dDsNCiAg
ICAgICAgcHVzaCBAcGFydHMsIE1ha2VDaGFyKCRfKTsNCiAgICB9DQogICAgbXkgJHdpZHRoOw0K
ICAgIGZvcmVhY2ggKCBAcGFydHMgKSB7ICR3aWR0aCArPSAkXy0+V2lkdGgoKTsgfQ0KICAgIG15
ICRmaWxsID0gVGFiOjpEaXN0YW5jZVRvVGFiKCBIb3Jpem9udGFsUG9zaXRpb24oKSwgMCApIC0g
JHdpZHRoOw0KICAgIG15ICRpID0gMDsNCiAgICBmb3JlYWNoICggQHBhcnRzICkNCiAgICB7DQog
ICAgICAgIGlmICggJF8tPklzQWRqdXN0YWJsZSgpICkNCiAgICAgICAgew0KICAgICAgICAgICAg
JF8tPkFkanVzdFdpZHRoKCAkXy0+V2lkdGgoKSArIA0KCQkJICAgIExpbmU6OlBvcnRpb25XaWR0
aCggJGZpbGwsICRwYWRzLCAkaSApICk7DQogICAgICAgICAgICArKyRpOw0KICAgICAgICB9DQog
ICAgfQ0KICAgIEFkZFRleHQoIEBwYXJ0cyApOw0KfQ0KDQpzdWIgSGFuZGxlVGV4dExpbmUNCnsN
CiAgICBteSAkZTsNCiAgICB3aGlsZSAoIElzTW9yZUlucHV0KCkgKQ0KICAgIHsNCgkkZSA9IFJl
YWRDaGFyKCk7DQoJaWYgKCAkX2ludGVycG9sYXRlICkNCgl7DQoJICAgIHVuc2hpZnQoIEBfcHVz
aGJhY2ssICRlICk7DQoJICAgICRfY29udGludWVfdGV4dCA9IDE7DQoJICAgIGxhc3Q7DQoJfQ0K
CWlmICggcmVmICRlICkNCgl7DQoJICAgIEFkZFRleHQoICRlICk7DQoJICAgIGxhc3QgaWYgJGUt
PklzQnJlYWsoKTsNCgl9DQoJZWxzZQ0KCXsNCiAgICAgICAgICAgIGlmICggJGUgZXEgIiAiICkN
CgkgICAgeyANCgkJQWRkVGV4dCggTWFrZVNwYWNlKCkgKTsNCgkgICAgfQ0KCSAgICBlbHNpZiAo
ICRlIGVxICJcbiIgKQ0KCSAgICB7DQoJCUZpbGxUYWIoKSBpZiBkZWZpbmVkICRfdGFiX3BvczsN
CgkJQWRkVGV4dCggTWFrZU5ld0xpbmUoKSApIHVubGVzcyAkX2NvbnRpbnVlX3RleHQ7DQoJCWxh
c3Q7DQoJICAgIH0NCgkgICAgZWxzaWYgKCAkZSBlcSAiXHQiICkNCgkgICAgew0KCQlIYW5kbGVU
YWIoIEVudjo6VEMoKSApOw0KCSAgICB9DQoJICAgIGVsc2lmICggJGUgZXEgJExFQURFUl9DSEFS
ICkNCgkgICAgew0KCQlIYW5kbGVUYWIoIEVudjo6TEMoKSApOw0KCSAgICB9DQoJICAgIGVsc2lm
ICggJGUgZXEgJE9IWVBIRU4gKQ0KCSAgICB7DQoJCUFkZFRleHQoIE1ha2VIeXBoZW4oKSApOw0K
CSAgICB9DQoJICAgIGVsc2lmICggJGUgZXEgJEZpZWxkOjpEZWxpbSApDQoJICAgIHsgDQoJCUhh
bmRsZUZpZWxkKCk7DQoJICAgIH0NCgkgICAgZWxzZQ0KCSAgICB7DQoJCUFkZFRleHQoIE1ha2VD
aGFyKCRlKSApOw0KCSAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgdW5sZXNzICggJF9pbnRl
cnBvbGF0ZSApDQogICAgew0KCUZsdXNoKCk7DQogICAgICAgIEZvbnQ6OkNvdW50TGluZSgpOyAg
ICAgICAgICAgICAgIyBjb3VudCBpbnB1dCBsaW5lcyBmb3IgdW5kZXJsaW5pbmcNCiAgICAgICAg
SW5wdXRUcmFwOjpDb3VudExpbmUoKTsgICAgICAgICAjIGNoZWNrIGZvciBpbnB1dCB0cmFwcyBs
YXN0DQogICAgfQ0KfQ0KDQp1c2UgdmFycyBxd3sgJF9mb3JjZV9wYWdlX2VqZWN0ICRfaW5wdXRf
bGV2ZWwgfTsNCg0Kc3ViIEZvcmNlUGFnZUVqZWN0DQp7DQogICAgdW5sZXNzICggJF9mb3JjZV9w
YWdlX2VqZWN0ICkNCiAgICB7DQoJJF9mb3JjZV9wYWdlX2VqZWN0ID0gMTsNCgkkX2lucHV0X2xl
dmVsID0gSW5wdXQ6OkxldmVsKCk7DQogICAgfQ0KfQ0KDQpzdWIgRW5kUGFnZUVqZWN0IHsgJF9m
b3JjZV9wYWdlX2VqZWN0ID0gMCB9DQoNCnN1YiBJbnRlcnByZXRJbnB1dA0Kew0KICAgIG15ICRl
Ow0KICAgIHdoaWxlICggSXNNb3JlSW5wdXQoKSBvciAkX2ZvcmNlX3BhZ2VfZWplY3QgKQ0KICAg
IHsNCiAgICAgICAgJFRyYXA6OlBlbmRpbmcgPSAwOw0KCSRfaW50ZXJwb2xhdGUgPSAwOw0KDQog
ICAgICAgICMgV2hpbGUgZm9yY2luZyBhIHBhZ2UgZWplY3Qgd2UgY2hlY2sgdGhlIGlucHV0IHN0
YWNrIGxldmVsDQogICAgICAgICMgdG8gYWxsb3cgb25seSBuZXcgdHJhcHMgdG8gYmUgaW50ZXJw
cmV0ZWQgd2hpbGUgZWplY3Rpbmc6DQoNCiAgICAgICAgaWYgKCAkX2ZvcmNlX3BhZ2VfZWplY3Qg
YW5kICggSW5wdXQ6OkxldmVsKCkgPT0gJF9pbnB1dF9sZXZlbCApICkNCgl7DQoJICAgIFBhZ2U6
Ok1vdmVWZXJ0aWNhbCggUGFnZTo6TGVuZ3RoKCktRGl2ZXJzaW9uOjpWZXJ0aWNhbFBvc2l0aW9u
KCkgKQ0KCQl1bmxlc3MgRGl2ZXJzaW9uOjpMZXZlbCgpOw0KCSAgICBuZXh0Ow0KCX0NCiAgICAg
ICAgaWYgKCBQZWVrQ2hhcigpID1+IC9eJENPTlRST0x8JEFMVENPTlRST0wkLyBhbmQgISAkX2Zv
cmNlX3RleHQgKQ0KCXsNCgkgICAgJExpbmU6OlN1cHByZXNzQnJlYWsgPSAoIFJlYWRDaGFyKCkg
PX4gL14kQUxUQ09OVFJPTCQvICk7DQogICAgICAgICAgICBteSAkbmFtZSA9IEdldE1hY3JvTmFt
ZSgpOw0KICAgICAgICAgICAgU2tpcFNwYWNlKCk7DQoJICAgIGlmICggJG5hbWUgbmUgJycgKQ0K
CSAgICB7DQoJICAgICAgICBNYWNybzo6SW52b2tlKCAkbmFtZSApOw0KICAgICAgICAgICAgfQ0K
CSAgICBlbHNlDQoJICAgIHsNCgkJSWdub3JlTGluZSgpOw0KCSAgICB9DQogICAgICAgIH0NCiAg
ICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkX2ZvcmNlX3RleHQgPSAkX2NvbnRp
bnVlX3RleHQgPSAwOw0KCSAgICBIYW5kbGVUZXh0TGluZSgpOw0KICAgICAgICB9DQogICAgfQ0K
fQ0KDQpzdWIgR2V0Q29uZGl0aW9uDQp7DQogICAgbXkgJG5vdCA9IFBlZWtSYXdDaGFyKCkgZXEg
JyEnOw0KICAgIFJlYWRSYXdDaGFyKCkgaWYgJG5vdDsNCiAgICBsb2NhbCAkXyA9IFBlZWtSYXdD
aGFyKCk7DQogICAgL15bZW90bl0kLyBhbmQgUmVhZFJhd0NoYXIoKTsNCiAgICAvXmUkLyBhbmQg
cmV0dXJuICghKChQYWdlOjpOdW1iZXIoKSAmIDEpIHhvciAkbm90KSk7DQogICAgL15vJC8gYW5k
IHJldHVybiAoKFBhZ2U6Ok51bWJlcigpICYgMSkgeG9yICRub3QpOw0KICAgIC9edCQvIGFuZCBy
ZXR1cm4gJG5vdDsNCiAgICAvXm4kLyBhbmQgcmV0dXJuICEgJG5vdDsNCiAgICBpZiAoIC9bXiRF
U0NBUEVcZFxzXChdLyApDQogICAgew0KCW15ICRkZWxpbSA9IFJlYWRSYXdDaGFyKCk7DQogICAg
ICAgIG15IEBvbmUgPSBHYXRoZXJVbnRpbCgkZGVsaW0pOw0KICAgICAgICBteSBAdHdvID0gR2F0
aGVyVW50aWwoJGRlbGltKTsNCiAgICAgICAgcmV0dXJuICggQXJlRXF1YWxMaXN0cyhcQG9uZSwg
XEB0d28pIHhvciAkbm90ICk7DQogICAgfQ0KICAgICgoU2NhbGU6OkV4cHIoR2V0QXJnVG8oJyAn
KSkgPiAwKSB4b3IgJG5vdCk7DQp9DQoNCnN1YiBQcm9jZXNzQ29uZGl0aW9uYWxCb2R5DQp7DQog
ICAgbXkgJHJldGFpbiA9IHNoaWZ0Ow0KICAgIFNraXBTcGFjZSgpOw0KICAgIHVubGVzcyAoICRy
ZXRhaW4gKSAjIHNraXAgb3ZlciBib2R5IGlmIGNvbmRpdGlvbiBpcyBmYWxzZQ0KICAgIHsNCglt
eSAkYyA9IFJlYWRSYXdDaGFyKCk7DQoJaWYgKCAkYyBlcSAkRVNDQVBFX0NIQVIgYW5kIFBlZWtS
YXdDaGFyKCkgZXEgJ3snICkNCgl7DQoJICAgIFJlYWRSYXdDaGFyKCk7DQogICAgICAgICAgICBt
eSAkbGV2ZWwgPSAxOw0KICAgICAgICAgICAgd2hpbGUgKCBkZWZpbmVkKCAkYyA9IFJlYWRSYXdD
aGFyKCkgKSApDQogICAgICAgICAgICB7DQoJCWlmICggJGMgZXEgJEVTQ0FQRV9DSEFSICkNCgkJ
ew0KCQkgICAgJGMgPSBSZWFkUmF3Q2hhcigpOw0KCQkgICAgbGFzdCBpZiAoICRjIGVxICd9JyBh
bmQgLS0kbGV2ZWwgPT0gMCApOw0KCQkgICAgKyskbGV2ZWwgaWYgJGMgZXEgJ3snOw0KCQl9DQog
ICAgICAgICAgICB9DQoJICAgIHdhcm4gIk1pc3NpbmcgXH0gaW4gY29uZGl0aW9uYWwuXG4iIGlm
ICRsZXZlbDsNCiAgICAgICAgfQ0KCUlnbm9yZUxpbmUoKTsNCiAgICB9DQp9DQoNCnN1YiBQcm9j
ZXNzVGl0bGUNCnsNCiAgICBteSAkZGVsaW0gPSBSZWFkQ2hhcigpOw0KICAgIG15IEB3aWR0aCA9
ICgwLDAsMCk7DQogICAgbXkgKEB0aXRsZSwkZSk7DQogICAgZm9yZWFjaCBteSAkbiAoIDAsMSwy
ICkNCiAgICB7DQoJd2hpbGUgKCBJc01vcmVJbnB1dCgpICkNCgl7DQoJICAgICRlID0gUmVhZENo
YXIoKTsNCgkgICAgbGFzdCBpZiBBcmVFcXVhbCgkZSwkZGVsaW0pIG9yIElzTmV3bGluZSgkZSk7
DQoJICAgIGlmICggQXJlRXF1YWwoJGUsICRUaXRsZTo6UEMpICkNCgkgICAgew0KCQlmb3JlYWNo
ICRlICggc3BsaXQoIC8vLCBSZWc6OlZhbHVlKCclJykgKSApDQoJCXsgDQoJCSAgICAkZSA9IE1h
a2VDaGFyKCRlKSB1bmxlc3MgcmVmKCRlKTsNCgkJICAgICR3aWR0aFskbl0gKz0gJGUtPldpZHRo
KCk7DQoJCSAgICBwdXNoIEB7JHRpdGxlWyRuXX0sICRlOw0KCQl9DQoJICAgIH0NCgkgICAgZWxz
ZQ0KCSAgICB7DQoJCSRlID0gTWFrZUNoYXIoJGUpIHVubGVzcyByZWYoJGUpOw0KCQkkd2lkdGhb
JG5dICs9ICRlLT5XaWR0aCgpOw0KCQlwdXNoIEB7JHRpdGxlWyRuXX0sICRlOw0KCSAgICB9DQog
ICAgICAgIH0NCglsYXN0IGlmIElzTmV3bGluZSgkZSk7DQogICAgfQ0KICAgIElnbm9yZUxpbmUo
KSB1bmxlc3MgSXNOZXdsaW5lKCRlKTsNCiAgICBteSAkZmlsbCA9IEVudjo6VGl0bGVMZW5ndGgo
KS0+VmFsdWUoKSAtICR3aWR0aFswXSAtICR3aWR0aFsxXSAtICR3aWR0aFsyXTsNCiAgICAkZmls
bCA9IDAgaWYgJGZpbGwgPCAwOw0KICAgIFBhZ2U6OkFkZExpbmUoIEB7JHRpdGxlWzBdfSwNCiAg
ICAgICAgICAgICAgICAgICBQYXJzZTo6TWFrZU1vdGlvbihMaW5lOjpQb3J0aW9uV2lkdGgoJGZp
bGwsMiwwKSwgMCksDQogICAgICAgICAgICAgICAgICAgQHskdGl0bGVbMV19LA0KICAgICAgICAg
ICAgICAgICAgIFBhcnNlOjpNYWtlTW90aW9uKExpbmU6OlBvcnRpb25XaWR0aCgkZmlsbCwyLDEp
LCAwKSwNCiAgICAgICAgICAgICAgICAgICBAeyR0aXRsZVsyXX0sIFBhcnNlOjpNYWtlTmV3TGlu
ZSgpICk7DQp9DQoNCnN1YiBHZXRNYWNyb0RlZg0Kew0KICAgIG15IEBlbmQgPSBzcGxpdCggLy8s
IHNoaWZ0ICk7DQogICAgQ29weU1vZGUoMSk7DQogICAgbXkgKEBwYXJ0cywgQGxpbmUpOw0KICAg
IHdoaWxlICggISBJbnB1dDo6SXNFbXB0eSgpICkNCiAgICB7DQoJQGxpbmUgPSBHYXRoZXJVbnRp
bCgiXG4iKTsNCglsYXN0IGlmIEFyZUVxdWFsTGlzdHMoIFxAZW5kLCBcQGxpbmUgKTsNCiAgICAg
ICAgcHVzaCBAcGFydHMsIEBsaW5lLCAiXG4iOw0KICAgIH0NCiAgICBDb3B5TW9kZSgwKTsNCiAg
ICBAcGFydHM7DQp9DQoNCnN1YiBUcmFuc2xhdGVDaGFycw0Kew0KICAgIG15IEBjaGFycyA9IEdh
dGhlclVudGlsKCJcbiIsMSk7DQogICAgd2hpbGUgKCBAY2hhcnMgKQ0KICAgIHsNCiAgICAgICAg
T3V0cHV0OjpNYXBDaGFyKCBzaGlmdChAY2hhcnMpLT5WYWx1ZSgpLA0KCQkJIChAY2hhcnMgPyBz
aGlmdChAY2hhcnMpLT5WYWx1ZSgpIDogJyAnKSApOw0KICAgIH0NCn0NCg0KIyAubGkgLSBhIERF
UFJFQ0FURUQgcm9mZiBjb21tYW5kOiB0cmVhdCB0aGUgbmV4dCBsaW5lIGFzIHRleHQuDQojIFVz
ZWQgaW4gdGhlIDd0aCBlZGl0aW9uIG1hbiBwYWdlcy4NCg0KTWFjcm86OkJ1aWx0aW4oICdsaScs
IDAsIHN1YiB7DQogICAgJF9mb3JjZV90ZXh0ID0gMTsNCn0gKTsNCg0KIyAtLS0gNy4gTWFjcm9z
LCBTdHJpbmdzLCBEaXZlcnNpb24sIGFuZCBQb3NpdGlvbiBUcmFwcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQoNCnBhY2thZ2UgTWFjcm87DQoNCiMgJU1hY3JvOjpfcmVxdWVzdCBwcm92aWRlcyB0
aGUgbmFtZXNwYWNlIGZvciBidWlsdGlucyBhbmQgbWFjcm9zLg0KIyBFYWNoIGlzIGEgYmxlc3Nl
ZCBhcnJheSwgd2hpY2ggZm9yIGJ1aWx0aW5zIGNvbnRhaW5zIGEgcmVmIHRvIGEgc3ViDQojIGFu
ZCBhIGNvdW50IG9mIGFyZ3VtZW50cyB0byBwYXJzZS4gIA0KIyBBIG1hY3JvIGlzIGFuIGFycmF5
IG9mIGNoYXJzIG9yIFByaW50RWxlbWVudHMuDQoNCiMgTWFjcm86OkJ1aWx0aW4oICRuYW1lLCAk
bnVtYmVyX29mX2FyZ3MsICRzdWIgKSBkZWZpbmVzIGEgYnVpbHQtaW4gcmVxdWVzdC4NCiMgVGhl
ICRudW1iZXJfb2ZfYXJncyBjb250cm9scyB0aGUgYXV0b21hdGljIHBhcnNpbmcgb2YgYXJndW1l
bnRzLg0KIyBJZiB5b3Ugc3BlY2lmeSAwIGFyZ3MsIHRoZSByZXN0IG9mIHRoZSBsaW5lIHdpbGwg
c3RpbGwgYmUgY29uc3VtZWQsDQojIHNvIHNwZWNpZnkgLTEgaWYgdGhlIGJ1aWx0aW4gd2lsbCBk
byBhIHNwZWNpYWwgcGFyc2Ugd2hlbiBpdCBpcyBydW4uDQoNCnN1YiBCdWlsdGluICAgeyAkTWFj
cm86Ol9yZXF1ZXN0eyRfWzBdfSA9IGJsZXNzKFsgJF9bMV0sICRfWzJdIF0sICdCdWlsdGluJyk7
IH0NCnN1YiBJc0RlZmluZWQgeyBkZWZpbmVkICRNYWNybzo6X3JlcXVlc3R7c2hpZnQoKX07IH0N
CnN1YiBJc01hY3JvICAgeyBJc0RlZmluZWQoJF9bMF0pIGFuZCByZWYoJE1hY3JvOjpfcmVxdWVz
dHskX1swXX0pIGVxICdNYWNybyc7IH0NCg0KIyBNYWNyb3MgYXJlICJydW4iIGJ5IGhvb2tpbmcg
dGhlbSB1cCBhcyBhbiBpbnB1dCBzb3VyY2UuDQojIFRoZSBmbGFnICRub19wYXJzZSBzdXBwcmVz
c2VzIHRoZSBwYXJzaW5nIG9mIGFyZ3VtZW50cyANCiMgZm9yIG1hY3JvcyBpbnZva2VkIGFzIHRy
YXBzIG9yIHN0cmluZyBpbnRlcnBvbGF0aW9uLg0KDQpzdWIgUnVuDQp7DQogICAgbXkgKCRtZSwk
bm9fcGFyc2UpID0gQF87DQogICAgbXkgJGEgPSBbIFBhcnNlOjpHZXRNYWNyb0FyZ3MoKSBdIHVu
bGVzcyAkbm9fcGFyc2U7DQogICAgbXkgJHQgPSBbIG1hcCggKHJlZigkXykgPyAkXy0+Q2xvbmUo
KSA6ICRfKSwgQCRtZSApIF07DQogICAgSW5wdXQ6OlB1c2hDb250ZXh0KCBNYWNyb0NvbnRleHQt
Pm5ldyggJHQsICRhICkgKTsNCn0NCg0KIyBCdWlsdGlucyBhcmUgcnVuIGltbWVkaWF0ZWx5IHdo
ZW4gaW52b2tlZDoNCg0Kc3ViIEJ1aWx0aW46OlJ1bg0Kew0KICAgIG15ICRtZSA9IHNoaWZ0Ow0K
ICAgIG15ICRub19wYXJzZSA9IHNoaWZ0Ow0KICAgIG15IEBhcmdzID0gUGFyc2U6OkdldEJ1aWx0
aW5BcmdzKCRtZS0+WzBdKSB1bmxlc3MgJG5vX3BhcnNlOw0KICAgICRtZS0+WzFdLT4oIEBhcmdz
ICk7DQp9DQoNCnN1YiBNYWNyb0NvbnRleHQ6Om5ldyAgICAgICB7IGJsZXNzKCB7VEVYVCA9PiAk
X1sxXSwgQVJHUyA9PiAkX1syXX0sICRfWzBdICkgfQ0Kc3ViIE1hY3JvQ29udGV4dDo6SXNFbXB0
eSAgIHsgISBAeyRfWzBde1RFWFR9fSB9DQpzdWIgTWFjcm9Db250ZXh0OjpQZWVrQ2hhciAgeyAk
X1swXS0+e1RFWFR9WzBdIH0NCnN1YiBNYWNyb0NvbnRleHQ6OlJlYWRDaGFyICB7IHNoaWZ0IEB7
JF9bMF0tPntURVhUfX0gfQ0Kc3ViIE1hY3JvQ29udGV4dDo6VG90YWxBcmdzIHsgcmVmKCRfWzBd
e0FSR1N9KSA/IHNjYWxhcihAeyRfWzBde0FSR1N9fSkgOiAwIH0NCg0Kc3ViIE1hY3JvQ29udGV4
dDo6T3BlbkFyZ04NCnsNCiAgICBteSAoJG1lLCRuKSA9IEBfOw0KICAgIGlmICggJG4gZXEgJyon
IGFuZCAkR3JvZmZDb21wYXRpYmxlICkNCiAgICB7DQogICAgICAgIGZvcmVhY2ggbXkgJGFyZyAo
IHJldmVyc2UgQHskbWUtPntBUkdTfX0gKQ0KCXsNCgkgICAgdW5zaGlmdCBAeyRtZS0+e1RFWFR9
fSwgbWFwKCAocmVmKCRfKSA/ICRfLT5DbG9uZSgpIDogJF8pLCBAJGFyZyApOw0KCSAgICB1bnNo
aWZ0IEB7JG1lLT57VEVYVH19LCAnICc7DQoJfQ0KCXNoaWZ0IEB7JG1lLT57VEVYVH19Ow0KICAg
IH0NCiAgICBlbHNpZiAoICRuID4gMCBhbmQgJG4gPD0gJG1lLT5Ub3RhbEFyZ3MoKSApDQogICAg
ew0KICAgICAgICBteSAkYXJnID0gJG1lLT57QVJHU31bJG4tMV07DQogICAgICAgIHVuc2hpZnQo
IEB7JG1lLT57VEVYVH19LCBtYXAoIChyZWYoJF8pID8gJF8tPkNsb25lKCkgOiAkXyksIEAkYXJn
ICkgKTsNCiAgICB9DQp9DQoNCiMgSW52b2tlKCRuYW1lLCRub19wYXJzZSkgcnVucyB0aGUgbmFt
ZWQgYnVpbHRpbiByZXF1ZXN0IG9yIG1hY3JvLg0KIyBUaGUgZmxhZyAkbm9fcGFyc2UgaW5kaWNh
dGVzIHRoaXMgaXMgYSB0cmFwIG9yIGludGVycG9sYXRlZCBtYWNybzoNCg0Kc3ViIEludm9rZQ0K
ew0KICAgIG15ICRuYW1lID0gc2hpZnQ7DQogICAgbXkgJG5vX3BhcnNlID0gc2hpZnQ7DQogICAg
aWYgKCBJc0RlZmluZWQoICRuYW1lICkgKQ0KICAgIHsNCgkkTWFjcm86Ol9yZXF1ZXN0eyRuYW1l
fS0+UnVuKCRub19wYXJzZSk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQoJUGFyc2U6Oklnbm9y
ZUxpbmUoKSB1bmxlc3MgJG5vX3BhcnNlOw0KICAgIH0NCn0NCg0Kc3ViIEFkZERlZmluaXRpb24N
CnsgDQogICAgbXkgJG5hbWUgPSBzaGlmdDsNCiAgICBteSAkZW5kID0gKCBkZWZpbmVkKCRfWzBd
KSA/ICIuJF9bMF0iIDogJy4uJyApOw0KICAgIG15IEBwYXJ0cyA9IFBhcnNlOjpHZXRNYWNyb0Rl
ZiggJGVuZCApOw0KICAgIHB1c2ggQHskTWFjcm86Ol9yZXF1ZXN0eyRuYW1lfX0sIEBwYXJ0cyBp
ZiBkZWZpbmVkICRuYW1lOw0KfQ0KDQpzdWIgQXBwZW5kDQp7IA0KICAgIG15ICRuYW1lID0gc2hp
ZnQ7DQogICAgcHVzaCggQHskTWFjcm86Ol9yZXF1ZXN0eyRuYW1lfX0sIEBfICkgaWYgZGVmaW5l
ZCAkbmFtZTsNCn0NCg0KQnVpbHRpbiggJ2lnJywgMSwgc3ViIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgIyAuaWcgLSBpZ25vcmUgaW5wdXQNCiAgICBteSAkZW5kID0gKCBkZWZpbmVkKCRfWzBd
KSA/ICIuJF9bMF0iIDogJy4uJyApOw0KICAgIFBhcnNlOjpHZXRNYWNyb0RlZiggJGVuZCApOyB9
ICk7DQoNCkJ1aWx0aW4oICdkZScsIDIsIHN1YiB7ICAgICAgICAgICAgICAgICAgICAgICAgICMg
LmRlIC0gZGVmaW5lIG1hY3JvDQogICAgJE1hY3JvOjpfcmVxdWVzdHskX1swXX0gPSBibGVzcyBb
XTsNCiAgICBBZGREZWZpbml0aW9uKCAkX1swXSwgJF9bMV0gKTsgfSApOw0KDQpCdWlsdGluKCAn
YW0nLCAyLCBzdWIgeyAgICAgICAgICAgICAgICAgICAgICAgICAjIC5hbSAtIGFwcGVuZCBtYWNy
bw0KICAgICRNYWNybzo6X3JlcXVlc3R7JF9bMF19ID0gYmxlc3MgW10gdW5sZXNzIElzTWFjcm8o
JF9bMF0pOw0KICAgIEFkZERlZmluaXRpb24oICRfWzBdLCAkX1sxXSApOyB9ICk7DQoNCkJ1aWx0
aW4oICdkcycsIC0xLCBzdWIgeyAgICAgICAgICAgICAgICAgICAgICAgICMgLmRzIC0gZGVmaW5l
IHN0cmluZw0KICAgIG15ICgkbmFtZSxAcGFydHMpID0gUGFyc2U6OkdldE1hY3JvU3RyaW5nRGVm
KCk7DQogICAgJE1hY3JvOjpfcmVxdWVzdHskbmFtZX0gPSBibGVzcyBbIEBwYXJ0cyBdOw0KfSAp
Ow0KDQpCdWlsdGluKCAnYXMnLCAtMSwgc3ViIHsgICAgICAgICAgICAgICAgICAgICAgICAjIC5h
cyAtIGFwcGVuZCBzdHJpbmcNCiAgICBteSAoJG5hbWUsQHBhcnRzKSA9IFBhcnNlOjpHZXRNYWNy
b1N0cmluZ0RlZigpOw0KICAgICRNYWNybzo6X3JlcXVlc3R7JG5hbWV9ID0gYmxlc3MgW10gdW5s
ZXNzIElzTWFjcm8oJG5hbWUpOw0KICAgIHB1c2ggQHskTWFjcm86Ol9yZXF1ZXN0eyRuYW1lfX0s
IEBwYXJ0czsNCn0gKTsNCg0KQnVpbHRpbiggJ3JtJywgMSwgc3ViIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgIyAucm0gLSByZW1vdmUgbWFjcm8NCiAgICBmb3JlYWNoIChAXykgeyBkZWxldGUg
JE1hY3JvOjpfcmVxdWVzdHskX307IH0gfSApOw0KDQpCdWlsdGluKCAncm4nLCAyLCBzdWIgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAjIC5ybiAtIHJlbmFtZSBtYWNybw0KICAgICRNYWNybzo6
X3JlcXVlc3R7JF9bMV19ID0gJE1hY3JvOjpfcmVxdWVzdHskX1swXX07DQogICAgZGVsZXRlICRN
YWNybzo6X3JlcXVlc3R7JF9bMF19OyB9ICk7DQoNCkJ1aWx0aW4oICdkaScsIDEsIHN1YiB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICMgLmRpIC0gZGl2ZXJ0IG91dHB1dA0KICAgIGlmICggJF9b
MF0gKQ0KICAgIHsNCiAgICAgICAgJE1hY3JvOjpfcmVxdWVzdHskX1swXX0gPSBibGVzcyBbXTsN
CiAgICAgICAgRGl2ZXJzaW9uOjpEaXZlcnRUbyggJF9bMF0gKTsNCiAgICB9DQogICAgZWxzZQ0K
ICAgIHsNCiAgICAgICAgRGl2ZXJzaW9uOjpFbmREaXZlcnQoKTsNCiAgICB9DQp9ICk7DQoNCkJ1
aWx0aW4oICdkYScsIDEsIHN1YiB7ICAgICAgICAgICAgICAgICAgICAgICAgICMgLmRhIC0gZGl2
ZXJ0LCBhcHBlbmRpbmcNCiAgICBpZiAoICRfWzBdICkNCiAgICB7DQogICAgICAgICRNYWNybzo6
X3JlcXVlc3R7JF9bMF19ID0gYmxlc3MgW10gdW5sZXNzIElzTWFjcm8oICRfWzBdICk7DQogICAg
ICAgIERpdmVyc2lvbjo6RGl2ZXJ0VG8oICRfWzBdICk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7
DQogICAgICAgIERpdmVyc2lvbjo6RW5kRGl2ZXJ0KCk7DQogICAgfQ0KfSApOw0KDQpCdWlsdGlu
KCAnd2gnLCAyLCBzdWIgeyAgICAgICAgICAgICAgICAgICAgICAgICAjIC53aCAtICh3aGVuKSBz
ZXQgcGFnZSB0cmFwDQogICAgbXkgJHdoZXJlID0gU2NhbGU6OkV4cHIoJF9bMF0sICd2Jyk7DQog
ICAgJHdoZXJlICs9IFBhZ2U6Okxlbmd0aCgpIGlmICR3aGVyZSA8IDA7DQogICAgVHJhcDo6U2V0
KCAkd2hlcmUsICRfWzFdICk7IH0gKTsNCg0KQnVpbHRpbiggJ2NoJywgMiwgc3ViIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgIyAuY2ggLSBjaGFuZ2UgcGFnZSB0cmFwDQogICAgbXkgJHdoZXJl
ID0gU2NhbGU6OkV4cHIoJF9bMV0sICd2Jyk7DQogICAgJHdoZXJlICs9IFBhZ2U6Okxlbmd0aCgp
IGlmICR3aGVyZSA8IDA7DQogICAgVHJhcDo6TW92ZSggJF9bMF0sICR3aGVyZSApIH0gKTsNCg0K
QnVpbHRpbiggJ2R0JywgMiwgc3ViIHsgICAgICAgICAgICAgICAgICAgICAgICAgIyAuZHQgLSBk
aXZlcnNpb24gdHJhcA0KICAgIGlmICggQF8gPT0gMiApDQogICAgew0KICAgICAgICBteSAkd2hl
cmUgPSBTY2FsZTo6RXhwcigkX1swXSwgJ3YnKTsNCiAgICAgICAgRGl2ZXJzaW9uOjpUcmFwKCB7
IFdIRVJFID0+ICR3aGVyZSwgV0hBVCA9PiAkX1sxXSB9ICk7DQogICAgfQ0KICAgIGVsc2UNCiAg
ICB7DQogICAgICAgIERpdmVyc2lvbjo6VHJhcCggdW5kZWYgKTsNCiAgICB9DQp9ICk7DQoNCkJ1
aWx0aW4oICdpdCcsIDIsIHN1YiB7ICAgICAgICAgICAgICAgICAgICAgICAgICMgLml0IC0gaW5w
dXQgbGluZSBjb3VudCB0cmFwDQogICAgSW5wdXRUcmFwOjpTZXQoU2NhbGU6OkV4cHIoJF9bMF0p
LCAkX1sxXSk7IH0gKTsNCg0KQnVpbHRpbiggJ2VtJywgMSwgc3ViIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgIyAuZW0gLSBlbmRpbmcgbWFjcm8NCiAgICAkbWFpbjo6RW5kTWFjcm8gPSAkX1sw
XSBpZiBkZWZpbmVkKCAkX1swXSApOyB9ICk7DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KcGFj
a2FnZSBJbnB1dFRyYXA7DQoNCiMgSW5wdXQgbGluZSBjb3VudCB0cmFwOiAgd2UgZGVjcmVtZW50
IHRoZSBnaXZlbiBjb3VudCBmb3IgZWFjaCBpbnB1dCBsaW5lLA0KIyBhbmQgc3ByaW5nIHRoZSB0
cmFwIHdoZW4gdGhlIGNvdW50IGlzIHplcm8uDQoNCnN1YiBTZXQNCnsNCiAgICBFbnY6OklucHV0
VHJhcENvdW50KCBzaGlmdCApOw0KICAgIEVudjo6SW5wdXRUcmFwTWFjcm8oIHNoaWZ0ICk7DQp9
DQoNCnN1YiBDb3VudExpbmUNCnsNCiAgICBpZiAoIGRlZmluZWQoIEVudjo6SW5wdXRUcmFwTWFj
cm8oKSApIGFuZCAoIEVudjo6SW5wdXRUcmFwQ291bnQoKSA+IDAgKSApDQogICAgew0KICAgICAg
ICBpZiAoIEVudjo6SW5wdXRUcmFwQ291bnQoIEVudjo6SW5wdXRUcmFwQ291bnQoKSAtIDEgKSA9
PSAwICkNCiAgICAgICAgew0KICAgICAgICAgICAgTWFjcm86Okludm9rZSggRW52OjpJbnB1dFRy
YXBNYWNybygpLCAxICk7DQoJICAgICRUcmFwOjpQZW5kaW5nID0gMTsNCiAgICAgICAgfQ0KICAg
IH0NCn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpwYWNrYWdlIFRyYXA7DQoNCiMgUGFnZSBv
ciBwb3NpdGlvbiB0cmFwcy4gIFRoZSBkb2N1bWVudGVkIGJlaGF2aW9yIGltcGxpZXMgdGhhdCB3
ZSBtdXN0DQojIHByZXNlcnZlIHRoZSBvcmRlciBpbiB3aGljaCB0cmFwcyBhcmUgY3JlYXRlZCwg
c28gd2UganVzdCBhcHBlbmQgbmV3DQojIHRyYXBzIHRvIHRoZSBsaXN0IGFuZCBzZWFyY2ggaXQg
aW4gdGhhdCBvcmRlci4NCiMgICAgIHRyYXAtPntXSEVSRX0gaXMgYSB2ZXJ0aWNhbCBwb3NpdGlv
biBpbiBpbnRlcm5hbCB1bml0cw0KIyAgICAgdHJhcC0+e1dIQVR9IGlzIG5hbWUgb2YgdGhlIG1h
Y3JvIHRvIHRyaWdnZXINCiMgVGhlcmUgaXMgYWxzbyB0aGUgZGl2ZXJzaW9uIHRyYXAsIGlmIGFu
eSwgd2l0aCB0aGUgY3VycmVudCBkaXZlcnNpb24uDQoNCiMgUmV0dXJuIGEgcmVmZXJlbmNlIHRv
IHRoZSBuZXh0IHRyYXAgYmV5b25kIHRoZSBjdXJyZW50IHBvc2l0aW9uDQoNCnN1YiBOZXh0DQp7
DQogICAgbXkgJHdoZXJlID0gRGl2ZXJzaW9uOjpWZXJ0aWNhbFBvc2l0aW9uKCk7DQogICAgbXkg
JG5leHQ7DQogICAgJG5leHQgPSBEaXZlcnNpb246OlRyYXAoKSANCglpZiAoIERpdmVyc2lvbjo6
VHJhcCgpIGFuZCAoIERpdmVyc2lvbjo6VHJhcCgpLT57V0hFUkV9ID4gJHdoZXJlICkNCgkgICAg
YW5kIE1hY3JvOjpJc0RlZmluZWQoIERpdmVyc2lvbjo6VHJhcCgpLT57V0hBVH0gKSApOw0KICAg
IGZvcmVhY2ggbXkgJHRyYXAgKCBAVHJhcDo6X2xpc3QgKQ0KICAgIHsNCiAgICAgICAgaWYgKCAo
ICR0cmFwLT57V0hFUkV9ID4gJHdoZXJlICkgDQoJICAgICYmICggISAkbmV4dCB8fCAoICR0cmFw
LT57V0hFUkV9IDwgJG5leHQtPntXSEVSRX0gKSApICkNCgl7DQoJICAgICRuZXh0ID0gJHRyYXAg
aWYgTWFjcm86OklzRGVmaW5lZCggJHRyYXAtPntXSEFUfSApOw0KCX0NCiAgICB9DQogICAgJG5l
eHQ7DQp9DQoNCiMgUmV0dXJuIHRoZSBkaXN0YW5jZSAoaW50ZXJuYWwgdW5pdHMpIHRvIHRoZSBu
ZXh0IHBhZ2UgdHJhcCBvciBwYWdlIGJvdHRvbQ0KDQpzdWIgRGlzdGFuY2VUb05leHQNCnsNCiAg
ICBteSAkdHJhcCA9IE5leHQoKTsNCiAgICBteSAkdGhlcmUgPSAkdHJhcCA/ICR0cmFwLT57V0hF
UkV9IDogUGFnZTo6TGVuZ3RoKCk7DQogICAgKCR0aGVyZSAtIERpdmVyc2lvbjo6VmVydGljYWxQ
b3NpdGlvbigpKTsNCn0NCg0KIyBTZXQoJHdoZXJlLCR3aGF0KQ0KIyBPbmx5IHNldCB0aGUgdHJh
cCBpZiAkd2hlcmUgaXMgbm90IGFscmVhZHkgdXNlZC4NCiMgSWYgJHdoYXQgaXMgbnVsbCwgZGVs
ZXRlIHRoZSB0cmFwIGF0ICR3aGVyZSAoaWYgYW55LikNCg0Kc3ViIFNldA0Kew0KICAgIG15ICgk
d2hlcmUsJHdoYXQpID0gQF87DQogICAgJHdoZXJlID0gU2NhbGU6OlJvdW5kVmVydGljYWwoJHdo
ZXJlKTsNCiAgICBteSAkaTsNCiAgICBmb3JlYWNoIG15ICR0cmFwICggQFRyYXA6Ol9saXN0ICkN
CiAgICB7DQogICAgICAgIGlmICggJHRyYXAtPntXSEVSRX0gPT0gJHdoZXJlICkNCiAgICAgICAg
ew0KICAgICAgICAgICAgc3BsaWNlKCBAVHJhcDo6X2xpc3QsICRpLCAxICkgdW5sZXNzIGRlZmlu
ZWQgJHdoYXQ7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCgkrKyRpOw0KICAgIH0N
CiAgICBwdXNoKCBAVHJhcDo6X2xpc3QsIHsgV0hFUkUgPT4gJHdoZXJlLCBXSEFUID0+ICR3aGF0
IH0gKSBpZiBkZWZpbmVkICR3aGF0Ow0KfQ0KDQpzdWIgTW92ZQ0Kew0KICAgIG15ICgkd2hhdCwk
d2hlcmUpID0gQF87DQogICAgJHdoZXJlID0gU2NhbGU6OlJvdW5kVmVydGljYWwoJHdoZXJlKTsN
CiAgICBteSAkaTsNCiAgICBmb3JlYWNoIG15ICR0cmFwICggQFRyYXA6Ol9saXN0ICkNCiAgICB7
DQogICAgICAgIGlmICggJHRyYXAtPntXSEFUfSBlcSAkd2hhdCApDQogICAgICAgIHsNCiAgICAg
ICAgICAgIGlmICggZGVmaW5lZCAkd2hlcmUgKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICR0cmFwLT57V0hFUkV9ID0gJHdoZXJlOw0KICAgICAgICAgICAgfQ0KCSAgICBlbHNlDQog
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3BsaWNlKCBAVHJhcDo6X2xpc3QsICRpLCAx
ICk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBsYXN0Ow0KICAgICAgICB9DQoJKyskaTsN
CiAgICB9DQp9DQoNCnN1YiBTcHJpbmcNCnsNCiAgICBteSAkdHJhcCA9IHNoaWZ0Ow0KICAgIE1h
Y3JvOjpJbnZva2UoICR0cmFwLT57V0hBVH0sIDEgKTsNCiAgICAkVHJhcDo6UGVuZGluZyA9IDE7
DQp9DQoNCnN1YiBTcHJpbmdUb3BUcmFwDQp7DQogICAgZm9yZWFjaCBteSAkdHJhcCAoIEBUcmFw
OjpfbGlzdCApDQogICAgew0KICAgICAgICBpZiAoICR0cmFwLT57V0hFUkV9ID09IDAgKQ0KCXsN
CgkgICAgU3ByaW5nKCAkdHJhcCApOw0KICAgICAgICAgICAgbGFzdDsNCgl9DQogICAgfQ0KfQ0K
DQojIC0tLSA4LiBOdW1iZXIgcmVnaXN0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnBhY2thZ2UgUmVnOw0KDQp1c2UgdmFycyBxd3sgJV9y
ZWcgJV9wcmVkZWZpbmVkICVfVGVuT2YgJV9GaXZlT2YgfTsNCg0KIyAkX3JlZ3tuYW1lfXtOVU19
IGlzIHRoZSB2YWx1ZSwNCiMgJF9yZWd7bmFtZX17SU5DUn0gaXMgdGhlIGluY3JlbWVudCwNCiMg
JF9yZWd7bmFtZX17Rk1UfSBpcyB0aGUgcHJpbnQgZm9ybWF0Lg0KDQpNYWNybzo6QnVpbHRpbigg
J25yJywgMywgc3ViIHsgCQkJIyAubnIgLSBkZWZpbmUgbnVtYmVyIHJlZ2lzdGVyDQogICAgbXkg
KCRuYW1lLCRleHByLCRpbmNyKSA9IEBfOw0KICAgICRleHByID0gMCB1bmxlc3MgJGV4cHI7DQog
ICAgJF9yZWd7JG5hbWV9e05VTX0gPSAwIHVubGVzcyBkZWZpbmVkICRfcmVneyRuYW1lfXtOVU19
Ow0KICAgICRfcmVneyRuYW1lfXtOVU19ID0gKCRleHByID1+IC9eWystXS8pDQogICAgICAgID8g
KCAkX3JlZ3skbmFtZX17TlVNfSArIFNjYWxlOjpFeHByKCRleHByLCd1JykgKQ0KICAgICAgICA6
IFNjYWxlOjpFeHByKCRleHByLCd1Jyk7DQogICAgJF9yZWd7JG5hbWV9e0lOQ1J9ID0gU2NhbGU6
OkV4cHIoJGluY3IsJ3UnKSBpZiBkZWZpbmVkICRpbmNyOw0KICAgICRfcmVneyRuYW1lfXtGTVR9
ID0gJzEnIHVubGVzcyAkX3JlZ3skbmFtZX17Rk1UfTsNCn0gKTsNCg0KTWFjcm86OkJ1aWx0aW4o
ICdycicsIDEsIHN1YiB7CQkJIyAucnIgLSByZW1vdmUgbnVtYmVyIHJlZ2lzdGVyDQogICAgZm9y
ZWFjaCAoQF8pIHsgZGVsZXRlICRfcmVneyRfWzBdfTsgfSB9ICk7DQoNCk1hY3JvOjpCdWlsdGlu
KCAnYWYnLCAyLCBzdWIgewkJCSMgLmFmIC0gYXNzaWduIGZvcm1hdA0KICAgICRfcmVneyRfWzBd
fXtGTVR9ID0gKCAkX1sxXSA9fiAvXihcZCt8W2lJYUFdKSQvICkNCiAgICAgICAgPyAkX1sxXSA6
ICcxJzsNCn0gKTsNCg0KJV9wcmVkZWZpbmVkID0gKCAgICAgICAgICAgICAgICAgICAjIFJlYWQt
b25seSByZWdpc3RlcnMNCiAgICAnJCQnID0+IHN1YiB7ICQkIH0sDQogICAgJy4kJyA9PiBzdWIg
eyBJbnB1dDo6VG90YWxBcmdzKCkgfSwgICAgIycNCiAgICAnLkEnID0+IHN1YiB7IDEgfSwNCiAg
ICAnLmMnID0+IHN1YiB7IElucHV0OjpMaW5lTnVtYmVyKCkgfSwNCiAgICAnLmQnID0+IHN1YiB7
IERpdmVyc2lvbjo6VmVydGljYWxQb3NpdGlvbigpIH0sDQogICAgJy5GJyA9PiBzdWIgeyBJbnB1
dDo6Tm93UGxheWluZygpIH0sDQogICAgJy5mJyA9PiBzdWIgeyBGb250OjpOYW1lKCkgfSwNCiAg
ICAnLmgnID0+IHN1YiB7IERpdmVyc2lvbjo6SGlnaHdhdGVyKCkgfSwNCiAgICAnLmknID0+IHN1
YiB7IEVudjo6SW5kZW50KCkgfSwNCiAgICAnLmonID0+IHN1YiB7IG9yZCggRW52OjpBZGp1c3RU
eXBlKCkgKSB9LA0KICAgICcubCcgPT4gc3ViIHsgRW52OjpMaW5lTGVuZ3RoKCkgfSwNCiAgICAn
Lm8nID0+IHN1YiB7IFBhZ2U6Ok9mZnNldCgpIH0sDQogICAgJy5wJyA9PiBzdWIgeyBQYWdlOjpM
ZW5ndGgoKSB9LA0KICAgICcuUicgPT4gc3ViIHsgMTAwMDAgfSwNCiAgICAnLnMnID0+IHN1YiB7
IDEwIH0sDQogICAgJy50JyA9PiBzdWIgeyBUcmFwOjpEaXN0YW5jZVRvTmV4dCgpIH0sDQogICAg
Jy5UJyA9PiBzdWIgeyAxIH0sDQogICAgJy51JyA9PiBzdWIgeyAhIEVudjo6Tm9GaWxsKCkgfSwN
CiAgICAnLnYnID0+IHN1YiB7IEVudjo6VigpIH0sDQogICAgJy56JyA9PiBzdWIgeyBEaXZlcnNp
b246Ok1hY3JvTmFtZSgpIH0sDQopOw0KDQpteSBAdGltZSA9IGxvY2FsdGltZSh0aW1lKCkpOw0K
U2V0KCAnZHcnLCAkdGltZVs2XSsxICk7DQpTZXQoICdkeScsICR0aW1lWzNdICk7DQpTZXQoICdt
bycsICR0aW1lWzRdKzEgKTsNClNldCggJ3lyJywgc3Vic3RyKCR0aW1lWzVdLC0yLDIpICk7ICAg
ICMganVzdCBsYXN0IDIgZGlnaXRzIG9mIHllYXINCg0Kc3ViIFZhbHVlDQp7DQogICAgbXkgKCRu
YW1lLCRpbmNyKSA9IEBfOw0KICAgIHJldHVybiBUb0Zvcm1hdCggJF9wcmVkZWZpbmVkeyRuYW1l
fS0+KCksICRfcmVneyRuYW1lfXtGTVR9ICkNCiAgICAgICAgaWYgZGVmaW5lZCAkX3ByZWRlZmlu
ZWR7JG5hbWV9Ow0KICAgICRfcmVneyRuYW1lfXtOVU19ID0gMCB1bmxlc3MgZGVmaW5lZCggJF9y
ZWd7JG5hbWV9e05VTX0gKTsNCiAgICBpZiAoICRpbmNyIGFuZCBkZWZpbmVkKCAkX3JlZ3skbmFt
ZX17SU5DUn0gKSApDQogICAgew0KICAgICAgICAkX3JlZ3skbmFtZX17TlVNfSArPSAkX3JlZ3sk
bmFtZX17SU5DUn0gaWYgJGluY3IgZXEgJysnOw0KICAgICAgICAkX3JlZ3skbmFtZX17TlVNfSAt
PSAkX3JlZ3skbmFtZX17SU5DUn0gaWYgJGluY3IgZXEgJy0nOw0KICAgIH0NCiAgICBteSAkdiA9
IFRvRm9ybWF0KCAkX3JlZ3skbmFtZX17TlVNfSwgJF9yZWd7JG5hbWV9e0ZNVH0gKTsNCiAgICAk
djsNCn0NCg0Kc3ViIEZvcm1hdE9mIHsgJF9yZWd7JF9bMF19e0ZNVH07IH0NCnN1YiBTZXQgICAg
ICB7ICRfcmVneyRfWzBdfXtOVU19ID0gJF9bMV07IH0NCg0KIyBUcm9mZiB1c2VzIHogYW5kIHcg
dG8gcmVwcmVzZW50IDEwMDAwIGFuZCA1MDAwIHJlc3BlY3RpdmVseS4NCg0KJV9UZW5PZiAgPSAo
ICdpJz0+J3gnLCAneCc9PidjJywgJ2MnPT4nbScsICdtJz0+J3onICk7DQolX0ZpdmVPZiA9ICgg
J2knPT4ndicsICd4Jz0+J2wnLCAnYyc9PidkJywgJ20nPT4ndycgKTsNCg0Kc3ViIFRvUm9tYW5O
dW1lcmFscw0Kew0KICAgIG15ICRuID0gaW50IHNoaWZ0Ow0KICAgIHJldHVybiAkbiBpZiAoJG4g
PiA5OTk5OSBvciAkbiA8IDApOw0KICAgIG15ICRyID0gam9pbignJywgcmV2ZXJzZSBtYXAoKCRf
IHggKGNob3AoJG4pfHwwKSksIHF3KGkgeCBjIG0geikpKTsNCiAgICAkciA9fiBzLyhbbWN4aV0p
XDF7OH0vJDEkX1Rlbk9meyQxfS9nOw0KICAgICRyID1+IHMvKFttY3hpXSlcMXs0fS8kX0ZpdmVP
ZnskMX0vZzsNCiAgICAkciA9fiBzLyhbbWN4aV0pXDF7M30vJDEkX0ZpdmVPZnskMX0vZzsNCiAg
ICAkciB8fCAnMCc7DQp9DQoNCnN1YiBUb0FiYw0Kew0KICAgIG15ICRuID0gaW50IHNoaWZ0Ow0K
ICAgIHJldHVybiAkbiBpZiAoJG4gPCAwKTsNCiAgICBteSAkczsNCiAgICB3aGlsZSAoICRuICkN
CiAgICB7DQogICAgICAgICRzID0gY2hyKCAoKCRuLTEpICUgMjYpICsgb3JkKCdhJykgKSAuICRz
Ow0KICAgICAgICAkbiA9IGludCgoJG4tMSkgLyAyNik7DQogICAgfQ0KICAgICRzIHx8ICcwJzsN
Cn0NCg0Kc3ViIFRvRm9ybWF0DQp7DQogICAgbXkgKCRuLCRmKSA9IEBfOw0KICAgICRuID0gJzAn
IHVubGVzcyAkbjsNCiAgICByZXR1cm4gJG4gdW5sZXNzICRmOw0KICAgIHJldHVybiBUb1JvbWFu
TnVtZXJhbHMoJG4pICAgICAgICAgIGlmICRmIGVxICdpJzsNCiAgICByZXR1cm4gdWMoIFRvUm9t
YW5OdW1lcmFscygkbikgKSAgICBpZiAkZiBlcSAnSSc7DQogICAgcmV0dXJuIFRvQWJjKCRuKSAg
ICAgICAgICAgICAgICAgICAgaWYgJGYgZXEgJ2EnOw0KICAgIHJldHVybiB1YyggVG9BYmMoJG4p
ICkgICAgICAgICAgICAgIGlmICRmIGVxICdBJzsNCiAgICBteSAkd2lkdGggPSBsZW5ndGgoJGYp
Ow0KICAgICggJHdpZHRoID8gc3ByaW50ZiggIiUwJHt3aWR0aH1kIiwgJG4gKSA6ICRuICk7DQp9
DQoNCiMgLS0tIDkuIFRhYnMsIExlYWRlcnMsIGFuZCBGaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpwYWNrYWdlIFRhYjsNCg0KIyBUYWJzIHdpbGwg
YmUgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIG91dHB1dCBkZXZpY2UgaXMgbG9hZGVkLA0KIyBzaW5j
ZSBzY2FsZWQgdmFsdWVzIGRlcGVuZCBvbiB0aGUgZGV2aWNlIHJlc29sdXRpb24uDQoNCnN1YiBJ
bml0DQp7DQogICAgJEZpZWxkOjpEZWxpbSA9ICRGaWVsZDo6UGFkID0gJyc7DQogICAgZm9yZWFj
aCAoIDAsMSwyICkNCiAgICB7DQogICAgICAgIEVudjo6Q2hhbmdlVG8oJF8pOw0KCVNldFRhYnMo
ICgnKzAuOGknKSB4IDEwICk7DQoJRW52OjpDaGFuZ2VUbygpOyAgICAgICAgICAgICAjIHBvcCBl
bnZpcm9ubWVudCBzdGFjaw0KICAgIH0NCn0NCg0Kc3ViIFNldFRhYnMNCnsNCiAgICBteSBAc3Rv
cHMgPSBAXzsNCiAgICBteSAkZGlzdGFuY2UgPSAwOw0KICAgIG15ICR0eXBlOw0KICAgIEB7RW52
OjpUYWJTdG9wcygpfSA9ICgpOw0KICAgIGZvcmVhY2ggbXkgJHMgKCBAc3RvcHMgKQ0KICAgIHsN
CiAgICAgICAgJHR5cGUgPSAnJzsNCiAgICAgICAgJHMgPX4gL14oLispKFtSQ10pJC8gYW5kICgk
cyA9ICQxKSBhbmQgKCR0eXBlID0gJDIpOw0KICAgICAgICAkZGlzdGFuY2UgPSAoICRzID1+IC9e
XCsvICkgDQogICAgICAgICAgICAgICAgICA/ICggJGRpc3RhbmNlICsgU2NhbGU6OkV4cHIoJHMs
J20nKSApDQogICAgICAgICAgICAgICAgICA6IFNjYWxlOjpFeHByKCRzLCdtJyk7DQogICAgICAg
IG5leHQgaWYgKCAkZGlzdGFuY2UgPD0gMCApOw0KICAgICAgICBwdXNoIEB7RW52OjpUYWJTdG9w
cygpfSwgeyBXSEVSRSA9PiAkZGlzdGFuY2UsIFRZUEUgPT4gJHR5cGUgfTsNCiAgICB9DQogICAg
QHtFbnY6OlRhYlN0b3BzKCl9ID0gc29ydCB7ICRhLT57V0hFUkV9IDw9PiAkYi0+e1dIRVJFfSB9
DQogICAgICAgICAgICAgICAgICAgICAgICAgQHtFbnY6OlRhYlN0b3BzKCl9Ow0KfQ0KDQpzdWIg
TmV4dFRhYg0Kew0KICAgIG15ICR3aGVyZSA9IHNoaWZ0Ow0KICAgIG15ICRuZXh0Ow0KICAgIGZv
cmVhY2ggbXkgJHRhYiAoIEB7RW52OjpUYWJTdG9wcygpfSApDQogICAgew0KICAgICAgICBpZiAo
ICR0YWItPntXSEVSRX0gPiAkd2hlcmUgKSANCgl7DQoJICAgICRuZXh0ID0gJHRhYjsNCiAgICAg
ICAgICAgIGxhc3Q7DQoJfQ0KICAgIH0NCiAgICAkbmV4dDsNCn0NCg0Kc3ViIERpc3RhbmNlVG9U
YWINCnsNCiAgICBteSAoJHdoZXJlLCR3aWR0aCkgPSBAXzsNCiAgICBteSAkdGFiID0gTmV4dFRh
Yigkd2hlcmUpIG9yIHJldHVybiAwOw0KICAgIG15ICRkaXN0YW5jZSA9ICR0YWItPntXSEVSRX0g
LSAkd2hlcmU7DQogICAgJGRpc3RhbmNlIC09ICR3aWR0aCAgICAgICAgIGlmICggJHRhYi0+e1RZ
UEV9IGVxICdSJyApOw0KICAgICRkaXN0YW5jZSAtPSAkd2lkdGgvMiAgICAgICBpZiAoICR0YWIt
PntUWVBFfSBlcSAnQycgKTsNCiAgICBTY2FsZTo6Um91bmRIb3Jpem9udGFsKCRkaXN0YW5jZSk7
DQp9DQoNCiMgTm9ybWFsIChsZWZ0IGp1c3RpZmllZCkgdGFicyBjYW4gYmUgZmlsbGVkIGFzIHdl
IGVuY291bnRlciB0aGVtLg0KIyBGb3Igb3RoZXIgdGFiIHR5cGVzIHdlIGRlbGF5IHVudGlsIHdl
IGdldCB0aGUgd2lkdGggb2YgdGhlIGZvbGxvd2luZyBzdHJpbmcuDQoNCnN1YiBEZWxheVRhYkZp
bGwNCnsNCiAgICBteSAkd2hlcmUgPSBzaGlmdDsNCiAgICBteSAkdGFiID0gTmV4dFRhYigkd2hl
cmUpIG9yIHJldHVybiAwOw0KICAgICggJHRhYi0+e1RZUEV9IGVxICdSJyApIG9yICggJHRhYi0+
e1RZUEV9IGVxICdDJyApOw0KfQ0KDQpNYWNybzo6QnVpbHRpbiggJ3RhJywgMSwgc3ViIHsJICAg
ICAgICAgICAgICAgICMgLnRhIC0gc2V0IHRhYnMNCiAgICBTZXRUYWJzKCBAXyApOyB9ICk7DQoN
Ck1hY3JvOjpCdWlsdGluKCAndGMnLCAxLCBzdWIgewkJCSMgLnRjIC0gdGFiIGZpbGwgY2hhcmFj
dGVyDQogICAgRW52OjpUQyggc2hpZnQgKTsgfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ2xjJywg
MSwgc3ViIHsJCQkjIC5sYyAtIGxlYWRlciBmaWxsIGNoYXJhY3Rlcg0KICAgIEVudjo6TEMoIHNo
aWZ0ICk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdmYycsIDIsIHN1YiB7CQkJIyAuZmMgLSBm
aWVsZCBkZWxpbSBjaGFyYWN0ZXINCiAgICBpZiAoIEBfICkNCiAgICB7DQoJJEZpZWxkOjpEZWxp
bSA9IHNoaWZ0Ow0KCSRGaWVsZDo6UGFkID0gc2hpZnQgfHwgJyAnOw0KICAgIH0NCiAgICBlbHNl
DQogICAgew0KCSRGaWVsZDo6RGVsaW0gPSAkRmllbGQ6OlBhZCA9ICcnOw0KICAgIH0NCn0gKTsN
Cg0KIyAtLS0gMTAuIElucHV0IGFuZCBPdXRwdXQgQ29udmVudGlvbnMgYW5kIENoYXJhY3RlciBU
cmFuc2xhdGlvbnMgLS0tLS0tLS0tLS0tDQoNCk1hY3JvOjpCdWlsdGluKCAnZWMnLCAxLCBzdWIg
ewkJCSMgLmVjIC0gZXNjYXBlIGNoYXJhY3Rlcg0KICAgICRFU0NBUEVfQ0hBUiA9IGRlZmluZWQo
ICRfWzBdICkgPyAkX1swXSA6ICdcXCc7DQogICAgJEVTQ0FQRSA9IHF1b3RlbWV0YSgkRVNDQVBF
X0NIQVIpOyB9ICk7DQoNCk1hY3JvOjpCdWlsdGluKCAnZW8nLCAwLCBzdWIgewkJCSMgLmVvIC0g
dHVybiBlc2NhcGUgb2ZmDQogICAgJEVTQ0FQRV9DSEFSID0gJEVTQ0FQRSA9ICcnOyB9ICk7DQoN
Ck1hY3JvOjpCdWlsdGluKCAnY2MnLCAxLCBzdWIgewkJCSMgLmNjIC0gY29udHJvbCBjaGFyYWN0
ZXINCiAgICBFbnY6OkNDKCBkZWZpbmVkKCAkX1swXSApID8gJF9bMF0gOiAnLicgKTsNCiAgICAk
Q09OVFJPTCA9IHF1b3RlbWV0YSBFbnY6OkNDKCk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdj
MicsIDEsIHN1YiB7CQkJIyAuYzIgLSBuby1icmVhayBjb250cm9sDQogICAgRW52OjpDMiggZGVm
aW5lZCggJF9bMF0gKSA/ICRfWzBdIDogJ1wnJyApOw0KICAgICRBTFRDT05UUk9MID0gcXVvdGVt
ZXRhIEVudjo6QzIoKTsgfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ3RyJywgLTEsIHN1YiB7CQkJ
IyAudHIgLSB0cmFuc2xhdGUgY2hhcmFjdGVycw0KICAgIFBhcnNlOjpUcmFuc2xhdGVDaGFycygp
OyB9ICk7DQoNCiMgLS0tIDEzLiBIeXBoZW5hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpNYWNybzo6QnVpbHRpbiggJ2hjJywg
MSwgc3ViIHsJCQkjIC5oYyAtIGh5cGhlbmF0aW9uIGNoYXJhY3Rlcg0KICAgICRPSFlQSEVOID0g
QF8gPyBzaGlmdCA6ICcnOyB9ICk7DQoNCiMgLS0tIDE0LiBUaHJlZS1QYXJ0IFRpdGxlcyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQokVGl0bGU6
OlBDID0gJyUnOw0KDQpNYWNybzo6QnVpbHRpbiggJ3RsJywgLTEsIHN1YiB7CQkJIyAudGwgLSB0
aHJlZS1wYXJ0IHRpdGxlDQogICAgUGFyc2U6OlByb2Nlc3NUaXRsZSgpOyB9ICk7DQoNCk1hY3Jv
OjpCdWlsdGluKCAnbHQnLCAxLCBzdWIgewkJCSMgLmx0IC0gbGVuZ3RoIG9mIHRpdGxlDQogICAg
RW52OjpUaXRsZUxlbmd0aCgpLT5TZXRPckFkZCggJF9bMF0gKTsgfSApOw0KDQpNYWNybzo6QnVp
bHRpbiggJ3BjJywgMSwgc3ViIHsJCQkjIC5wYyAtIHBhZ2UgbnVtYmVyIGNoYXJhY3Rlcg0KICAg
ICRUaXRsZTo6UEMgPSAkX1swXSBpZiBkZWZpbmVkICRfWzBdOyB9ICk7DQoNCiMgLS0tIDE2LiBD
b25kaXRpb25hbCBBY2NlcHRhbmNlIG9mIElucHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KDQpNYWNybzo6QnVpbHRpbiggJ2lmJywgLTEsIHN1YiB7CQkJIyAuaWYgLSBj
b25kaXRpb25hbA0KICAgIFBhcnNlOjpQcm9jZXNzQ29uZGl0aW9uYWxCb2R5KCBQYXJzZTo6R2V0
Q29uZGl0aW9uKCkgKTsNCiAgICAkSWY6Ol9rZWVwX2Vsc2UgPSAwOyB9ICk7DQoNCk1hY3JvOjpC
dWlsdGluKCAnaWUnLCAtMSwgc3ViIHsJCQkjIC5pZSAtIGlmLCBlbHNlDQogICAgJElmOjpfa2Vl
cF9lbHNlID0gISBQYXJzZTo6R2V0Q29uZGl0aW9uKCk7DQogICAgUGFyc2U6OlByb2Nlc3NDb25k
aXRpb25hbEJvZHkoICEgJElmOjpfa2VlcF9lbHNlICk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4o
ICdlbCcsIC0xLCBzdWIgewkJCSMgLmVsIC0gZWxzZQ0KICAgIFBhcnNlOjpQcm9jZXNzQ29uZGl0
aW9uYWxCb2R5KCAkSWY6Ol9rZWVwX2Vsc2UgKTsNCiAgICAkSWY6Ol9rZWVwX2Vsc2UgPSAwOyB9
ICk7DQoNCiMgLS0tIDE3LiBFbnZpcm9ubWVudCBTd2l0Y2hpbmcgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpNYWNybzo6QnVpbHRpbiggJ2V2JywgMSwg
c3ViIHsJCQkjIC5ldiAtIHN3aXRjaCBlbnZpcm9ubWVudA0KICAgIEVudjo6Q2hhbmdlVG8oIHNo
aWZ0ICk7IH0gKTsNCg0KIyAtLS0gMTguIEluc2VydGlvbnMgZnJvbSB0aGUgU3RhbmRhcmQgSW5w
dXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCk1hY3JvOjpCdWlsdGluKCAn
cmQnLCAxLCBzdWIgewkJCSMgLnJkIC0gcmVhZCBpbnRlcmFjdGl2ZWx5DQogICAgcHJpbnQoICRf
WzBdIHx8ICJcYSIgKTsNCiAgICBJbnB1dDo6T3BlbkZpbGUoICRJbnB1dDo6U1RESU4gKTsNCn0g
KTsNCg0KTWFjcm86OkJ1aWx0aW4oICdleCcsIDEsIHN1YiB7CQkJIyAuZXggLSBleGl0DQogICAg
SW5wdXQ6OkFiYW5kb24oKTsgfSApOw0KDQojIC0tLSAxOS4gSW5wdXQvT3V0cHV0IEZpbGUgU3dp
dGNoaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KTWFjcm86
OkJ1aWx0aW4oICdzbycsIDEsIHN1YiB7CQkJIyAuc28gLSBzd2l0Y2ggc291cmNlIGZpbGUNCiAg
ICBJbnB1dDo6T3BlbkZpbGUoICRfWzBdICkgaWYgZGVmaW5lZCggJF9bMF0gKTsgfSApOw0KDQpN
YWNybzo6QnVpbHRpbiggJ254JywgMSwgc3ViIHsgICAgICAgICAgICAgICAgICAjIC5ueCAtIG5l
eHQgc291cmNlIGZpbGUNCiAgICBJbnB1dDo6TmV4dEZpbGUoICRfWzBdICkgaWYgZGVmaW5lZCgg
JF9bMF0gKTsgfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ3N5JywgLTEsIHN1YiB7ICAgICAgICAg
ICAgICAgICAgIyAuc3kgLSBleGVjdXRlIHByb2dyYW0NCiAgICBzeXN0ZW0oIFBhcnNlOjpHZXRM
aW5lKCkgKTsgfSApOw0KDQpNYWNybzo6QnVpbHRpbiggJ3BpJywgLTEsIHN1YiB7ICAgICAgICAg
ICAgICAgICAgIyAucGkgLSBvdXRwdXQgdG8gcGlwZQ0KICAgIG9wZW4oIFNURE9VVCwgJ3wnLiBQ
YXJzZTo6R2V0TGluZSgpICk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdjZicsIDEsIHN1YiB7
ICAgICAgICAgICAgICAgICAgIyAuY2YgLSBjb3B5IGZpbGUgdG8gb3V0cHV0DQogICAgb3Blbigg
SU4sIHNoaWZ0KCkgKSBvciByZXR1cm47DQogICAgcHJpbnQgd2hpbGUgKDxJTj4pOyB9ICk7DQoN
CiMgLS0tIDIwLiBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIFtmaXhdIEhhbmRsZSBvdXIgb3duIHBhcnNpbmcg
Zm9yIG1hcmdpbiBjaGFyIGFyZ3VtZW50LCB1Z2gNCg0KTWFjcm86OkJ1aWx0aW4oICdtYycsIC0x
LCBzdWIgewkJCSMgLm1jIC0gbWFyZ2luIGNoYXJhY3Rlcg0KICAgIG15ICRjaGFyID0gUGFyc2U6
OkdldFByaW50Q2hhcigpOw0KICAgICRjaGFyID0gUGFyc2U6Ok1ha2VDaGFyKCRjaGFyKSBpZiBk
ZWZpbmVkKCAkY2hhciApIGFuZCAhcmVmKCAkY2hhciApOw0KICAgIEVudjo6TWFyZ2luQ2hhcigg
JGNoYXIgKTsNCiAgICBteSAkbiA9IFBhcnNlOjpHZXRCdWlsdGluQXJncygxKTsNCiAgICBFbnY6
Ok1hcmdpbkNoYXJTcGFjZSggU2NhbGU6OkV4cHIoJG4sJ20nKSApIGlmIGRlZmluZWQgJG47DQp9
ICk7DQoNCk1hY3JvOjpCdWlsdGluKCAndG0nLCAtMSwgc3ViIHsJCQkjIC50bSAtIHRleHQgbWVz
c2FnZQ0KICAgIHByaW50IFNUREVSUiBQYXJzZTo6R2V0TGluZSgpLCAiXG4iOyB9ICk7DQoNCk1h
Y3JvOjpCdWlsdGluKCAnYWInLCAtMSwgc3ViIHsJCQkjIC5hYiAtIGFib3J0DQogICAgcHJpbnQg
U1RERVJSIFBhcnNlOjpHZXRMaW5lKCksICJcbiI7DQogICAgZXhpdCgxKTsgfSApOw0KDQpNYWNy
bzo6QnVpbHRpbiggJ2ZsJywgMCwgc3ViIHsJCQkjIC5mbCAtIGZsdXNoIG91dHB1dCBidWZmZXIN
CiAgICBPdXRwdXQ6OkZsdXNoKCk7IH0gKTsNCg0KTWFjcm86OkJ1aWx0aW4oICdsZicsIDIsIHN1
YiB7CQkJIyAubGYgLSBsaW5lIGFuZCBmaWxlIG5hbWUNCiAgICBJbnB1dDo6U2V0TGluZSggJF9b
MF0sICRfWzFdICk7IH0gKTsNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpwYWNrYWdlIElucHV0
Ow0KDQojICAgICAgICAgRmlsZXMoQG5hbWVzKSAgICAgICAgICBTdXBwbHkgbmFtZXMgb2YgZmls
ZXMgdG8gcmVhZCAoaW4gb3JkZXIpDQojICAgICAgICAgT3BlbkZpbGUoJGZpbGVuYW1lKSAgICBP
cGVuLCBzYXZpbmcgY3VycmVudCBvcGVuIGZpbGUNCiMgICAgICAgICBOZXh0RmlsZSgkZmlsZW5h
bWUpICAgIFJlcGxhY2UgdGhlIGN1cnJlbnQgb3BlbiBmaWxlDQojICRuYW1lID0gTm93UGxheWlu
ZygpICAgICAgICAgICBDdXJyZW50IGZpbGVuYW1lDQojICRjaGFyID0gUmVhZENoYXIoKSAgICAg
ICAgICAgICBSZWFkIGZyb20gY3VycmVudCBmaWxlIG9yIG1hY3JvDQojICRkb25lID0gSXNFbXB0
eSgpICAgICAgICAgICAgICBUcnVlIHdoZW4gYWxsIGlucHV0IHJ1bnMgb3V0DQojICAgICAgICAg
QWJhbmRvbigpICAgICAgICAgICAgICBTdG9wIHJlYWRpbmcgYWxsIGlucHV0DQojICRuICAgID0g
TGluZU51bWJlcigpICAgICAgICAgICBOdW1iZXIgb2YgbGluZXMgcmVhZCBmcm9tIGN1cnJlbnQg
ZmlsZQ0KIyAgICAgICAgIFNldExpbmUoJG4sJGZpbGVuYW1lKSAgU2V0IHRoZSBjdXJyZW50IGxp
bmUgbnVtYmVyIGFuZCBmaWxlbmFtZQ0KIyAkbiAgICA9IExldmVsKCkgICAgICAgICAgICAgICAg
UmV0dXJuIG51bWJlciBvZiBpbnB1dCBzb3VyY2VzIG9uIHRoZSBzdGFjaw0KIyAgICAgICAgIFB1
c2hDb250ZXh0KCRjb250ZXh0KSAgUHVzaCB0aGUgZ2l2ZW4gRmlsZUNvbnRleHQgb3IgTWFjcm9D
b250ZXh0DQojICAgICAgICAgUG9wQ29udGV4dCgpICAgICAgICAgICBQb3AgdGhlIGN1cnJlbnQg
aW5wdXQgc291cmNlIChjb250ZXh0KQ0KIyAgICAgICAgIE9wZW5BcmdOKCRuKSAgICAgICAgICAg
T3BlbiB0aGUgTnRoIG1hY3JvIGFyZ3VtZW50IGZvciBpbnB1dA0KIyAgICAgICAgIFRvdGFsQXJn
cygpICAgICAgICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgbWFjcm8gYXJndW1lbnRzDQoNCiRJ
bnB1dDo6U1RESU4gPSAnKCpzdGFuZGFyZCBpbnB1dCopJzsNCg0KdXNlIHZhcnMgcXd7IEBfZmls
ZW5hbWVzIEBfc3RhY2sgJF9jb250ZXh0IH07DQoNCnN1YiBQdXNoQ29udGV4dA0Kew0KICAgIG15
ICRjID0gc2hpZnQ7DQogICAgcmV0dXJuIGlmICRjLT5Jc0VtcHR5KCk7DQogICAgJF9jb250ZXh0
ID0gJGM7DQogICAgcHVzaCBAX3N0YWNrLCAkX2NvbnRleHQ7DQp9DQoNCnN1YiBQb3BDb250ZXh0
DQp7DQogICAgcG9wIEBfc3RhY2s7DQogICAgJF9jb250ZXh0ID0gJF9zdGFja1stMV07DQp9DQoN
CnN1YiBUb3Btb3N0RmlsZSAgeyBncmVwKCAocmVmKCRfKSA9fiAvXkYvIGFuZCByZXR1cm4gJF8p
LCByZXZlcnNlIEBfc3RhY2sgKSB9DQpzdWIgVG9wbW9zdE1hY3JvIHsgZ3JlcCggKHJlZigkXykg
PX4gL15NLyBhbmQgcmV0dXJuICRfKSwgcmV2ZXJzZSBAX3N0YWNrICkgfQ0KDQpzdWIgT3BlbkZp
bGUNCnsNCiAgICBteSAkZiA9IEZpbGVDb250ZXh0LT5uZXcoIHNoaWZ0ICk7DQogICAgUHVzaENv
bnRleHQoICRmICkgaWYgJGY7DQp9DQoNCnN1YiBOZXh0RmlsZQ0Kew0KICAgIG15ICRuYW1lID0g
c2hpZnQ7DQogICAgaWYgKCBUb3Btb3N0RmlsZSgpICkNCiAgICB7DQoJVG9wbW9zdEZpbGUoKS0+
T3BlbiggJG5hbWUgKTsNCiAgICB9DQogICAgZWxzaWYgKCBteSAkZiA9IEZpbGVDb250ZXh0LT5u
ZXcoICRuYW1lICkgKQ0KICAgIHsNCgl1bnNoaWZ0IEBfc3RhY2ssICRmOyAgIyBtYWtlIHRoaXMg
dGhlIGJvdHRvbS1tb3N0IGNvbnRleHQNCiAgICB9DQp9DQoNCnN1YiBPcGVuSGFuZGxlDQp7DQog
ICAgbXkgJG5hbWUgPSBzaGlmdDsNCiAgICByZXR1cm4gKlNURElOIGlmICRuYW1lIGVxICRJbnB1
dDo6U1RESU47DQogICAgbG9jYWwgKkhBTkRMRTsNCiAgICB1bmxlc3MgKCBvcGVuKCAqSEFORExF
LCAkbmFtZSApICkNCiAgICB7DQogICAgICAgIHdhcm4gIkNhbid0IG9wZW4gZmlsZSAkbmFtZTog
JCFcbiI7DQoJcmV0dXJuOw0KICAgIH0JDQogICAgKkhBTkRMRTsNCn0NCg0Kc3ViIEZpbGVDb250
ZXh0OjpuZXcNCnsNCiAgICBteSAoJGNsYXNzLCRuYW1lKSA9IEBfOw0KICAgIG15ICRoYW5kbGUg
PSBJbnB1dDo6T3BlbkhhbmRsZSggJG5hbWUgKSBvciByZXR1cm47DQogICAgYmxlc3MoIHtIQU5E
TEUgPT4gJGhhbmRsZSwgTkFNRSA9PiAkbmFtZSwgTElORSA9PiAxLCBURVhUID0+IFtdfSwgJGNs
YXNzICk7DQp9DQoNCnN1YiBGaWxlQ29udGV4dDo6T3Blbg0Kew0KICAgIG15ICgkbWUsJG5hbWUp
ID0gQF87DQogICAgbXkgJGhhbmRsZSA9IElucHV0OjpPcGVuSGFuZGxlKCAkbmFtZSApIG9yIHJl
dHVybjsNCiAgICAleyRtZX0gPSAoIEhBTkRMRSA9PiAkaGFuZGxlLCBOQU1FID0+ICRuYW1lLCBM
SU5FID0+IDEsIFRFWFQgPT4gW10gKTsNCn0NCg0Kc3ViIEZpbGVDb250ZXh0OjpOZXh0TGluZQ0K
ew0KICAgIG15ICRtZSA9IHNoaWZ0Ow0KICAgIEB7JG1lLT57VEVYVH19ID0gJEZvcmNlVW5pY29k
ZSANCgk/IG1hcCggY2hyKCRfKSwgdW5wYWNrKCAiVSoiLCByZWFkbGluZSgkbWUtPntIQU5ETEV9
KSApICkNCgk6IHNwbGl0IC8vLCByZWFkbGluZSgkbWUtPntIQU5ETEV9KTsNCiAgICAkbWUtPntM
SU5FfSsrOw0KfQ0KDQpzdWIgRmlsZUNvbnRleHQ6OlJlYWRDaGFyDQp7DQogICAgbXkgJG1lID0g
c2hpZnQ7DQogICAgJG1lLT5OZXh0TGluZSgpIHVubGVzcyBAeyRtZS0+e1RFWFR9fTsNCiAgICBz
aGlmdCBAeyRtZS0+e1RFWFR9fTsNCn0NCg0Kc3ViIEZpbGVDb250ZXh0OjpQZWVrQ2hhcg0Kew0K
ICAgIG15ICRtZSA9IHNoaWZ0Ow0KICAgICRtZS0+TmV4dExpbmUoKSB1bmxlc3MgQHskbWUtPntU
RVhUfX07DQogICAgJG1lLT57VEVYVH1bMF07DQp9DQoNCnN1YiBGaWxlQ29udGV4dDo6SXNFbXB0
eSB7IGVvZiggJF9bMF17SEFORExFfSApIGFuZCAhQHskX1swXXtURVhUfX0gfQ0KDQpzdWIgUmVh
ZENoYXINCnsNCiAgICB1bnRpbCAoICRfY29udGV4dCApDQogICAgew0KCXJldHVybiAnJyB1bmxl
c3MgQF9maWxlbmFtZXM7DQoJT3BlbkZpbGUoIHNoaWZ0IEBfZmlsZW5hbWVzICk7DQogICAgfQ0K
ICAgIG15ICRjaGFyID0gJF9jb250ZXh0LT5SZWFkQ2hhcigpOw0KICAgIFBvcENvbnRleHQoKSBp
ZiAkX2NvbnRleHQtPklzRW1wdHkoKTsNCiAgICAkY2hhcjsNCn0NCg0Kc3ViIFBlZWtDaGFyDQp7
DQogICAgT3BlbkZpbGUoIHNoaWZ0IEBfZmlsZW5hbWVzICkgaWYgISAkX2NvbnRleHQgYW5kIEBf
ZmlsZW5hbWVzOw0KICAgICRfY29udGV4dCA/ICRfY29udGV4dC0+UGVla0NoYXIoKSA6ICcnOw0K
fQ0KDQpzdWIgQWJhbmRvbg0Kew0KICAgIHVuZGVmICRfY29udGV4dDsNCiAgICB1bmRlZiBAX3N0
YWNrOw0KICAgIHVuZGVmIEBfZmlsZW5hbWVzOw0KfQ0KDQpzdWIgU2V0TGluZQ0Kew0KICAgIGlm
ICggVG9wbW9zdEZpbGUoKSApDQogICAgew0KCVRvcG1vc3RGaWxlKCktPntMSU5FfSA9ICRfWzBd
OyAgIyBkaXJlY3QgbWFuaXB1bGF0aW9uOiBob3cgZXZpbA0KCVRvcG1vc3RGaWxlKCktPntOQU1F
fSA9ICRfWzFdIGlmIGRlZmluZWQgJF9bMV07DQogICAgfQ0KfQ0KDQpzdWIgQWRkRmlsZXMgICAg
eyBwdXNoIEBfZmlsZW5hbWVzLCBAXyB9DQpzdWIgSXNFbXB0eSAgICAgeyAhICggQF9zdGFjayBv
ciBAX2ZpbGVuYW1lcyApIH0NCnN1YiBOb01vcmVGaWxlcyB7ICEgKCBUb3Btb3N0RmlsZSgpIG9y
IEBfZmlsZW5hbWVzICkgfQ0Kc3ViIExldmVsICAgICAgIHsgc2NhbGFyIEBfc3RhY2sgfQ0Kc3Vi
IE5vd1BsYXlpbmcgIHsgVG9wbW9zdEZpbGUoKSA/IFRvcG1vc3RGaWxlKCktPntOQU1FfSA6ICcn
IH0NCnN1YiBMaW5lTnVtYmVyICB7IFRvcG1vc3RGaWxlKCkgPyBUb3Btb3N0RmlsZSgpLT57TElO
RX0gOiAwIH0NCnN1YiBPcGVuQXJnTiAgICB7IFRvcG1vc3RNYWNybygpLT5PcGVuQXJnTihzaGlm
dCkgaWYgVG9wbW9zdE1hY3JvKCk7IH0NCnN1YiBUb3RhbEFyZ3MgICB7IFRvcG1vc3RNYWNybygp
ID8gVG9wbW9zdE1hY3JvKCktPlRvdGFsQXJncygpIDogMCB9DQoNCiMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KcGFja2FnZSBtYWluOw0KDQpAQVJHViA9IG1hcCB7ICgkXyBlcSAnLScpID8gJElucHV0
OjpTVERJTiA6ICRfIH0gQEFSR1Y7DQoNCndoaWxlICggQEFSR1YgYW5kICRBUkdWWzBdID1+IC9e
LS8gKQ0Kew0KICAgICRfID0gc2hpZnQ7DQogICAgL14tZCQvICAgICAgICAgICAgICBhbmQgZG8g
eyAkRGVidWcgPSAkfCA9IDE7ICAgICAgICAgICAgICAgbmV4dDsgfTsNCiAgICAvXi1nJC8gICAg
ICAgICAgICAgIGFuZCBkbyB7ICsrJEdyb2ZmQ29tcGF0aWJsZTsgICAgICAgICAgICBuZXh0OyB9
Ow0KICAgIC9eLWkkLyAgICAgICAgICAgICAgYW5kIGRvIHsgcHVzaCBAQVJHViwgJElucHV0OjpT
VERJTjsgICAgIG5leHQ7IH07DQogICAgL14tciguKShcZCspLyAgICAgICBhbmQgZG8geyBSZWc6
OlNldCgkMSwkMik7ICAgICAgICAgICAgICAgbmV4dDsgfTsNCiAgICAvXi1tKC4rKS8gICAgICAg
ICAgIGFuZCBkbyB7IElucHV0OjpBZGRGaWxlcyggIiR7TWFjcm9QYXRofXRtYWMuJDEiICk7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OyB9Ow0KICAgIC9eLW4oXGQrKS8g
ICAgICAgICAgYW5kIGRvIHsgJFBhZ2U6Ol9udW1iZXItPlNldCgkMS0xKTsgICAgIG5leHQ7IH07
DQogICAgL14tVCguKykvICAgICAgICAgICBhbmQgZG8geyAkT3V0cHV0RGV2aWNlID0gJDE7ICAg
ICAgICAgICAgbmV4dDsgfTsNCiAgICAvXi11JC8gICAgICAgICAgICAgIGFuZCBkbyB7IGlmICgg
ZGVmaW5lZCAkXlYgKQ0KCQkJCSB7DQoJCQkJICAgICArKyRGb3JjZVVuaWNvZGU7DQoJCQkJIH0N
CgkJCQkgZWxzZQ0KCQkJCSB7DQoJCQkJICAgICB3YXJuKCAiLXUgc3dpdGNoIChVbmljb2RlKSBy
ZXF1aXJlcyAiLA0KCQkJCQkgICAiUGVybCB2ZXJzaW9uIDUuNiBvciBsYXRlclxuIiApOw0KCQkJ
CSB9DQoJCQkJIG5leHQ7DQoJCQkgICAgIH07DQogICAgd2FybiAiVW5rbm93biBvcHRpb246ICRf
XG4iOw0KfQ0KDQojIE5vdyB3ZSBsb2FkIHRoZSBvdXRwdXQgZGV2aWNlIChkZWZhdWx0IGlzICds
cCcpOg0KDQppZiAoICRPdXRwdXREZXZpY2UgPX4gL15scHxjb2wkLyApDQp7DQogICAgZXZhbCgg
am9pbiggJycsIDxEQVRBPiApICk7DQogICAgZGllICJDYW4ndCBsb2FkIGRlZmF1bHQgb3V0cHV0
IGRldmljZTogJEAiIGlmICRAOw0KICAgIE91dHB1dDo6T3ZlcnN0cmlrZSgwKSBpZiAkT3V0cHV0
RGV2aWNlIGVxICdjb2wnOw0KfQ0KZWxzaWYgKCAhIHJlcXVpcmUgJE91dHB1dERldmljZSApDQp7
DQogICAgZGllICJDYW4ndCBsb2FkIG91dHB1dCBkZXZpY2UgJE91dHB1dERldmljZTogJCFcbiI7
DQp9DQoNCiMgQW5kIG5vdyBpbml0aWFsaXplIHRob3NlIHRoaW5ncyB0aGF0IHNvbWVob3cgZGVw
ZW5kIG9uIHRoZSBvdXRwdXQgZGV2aWNlDQojIChtb3N0bHkgYmVjYXVzZSBvZiBzY2FsZWQgdmFs
dWVzLCB3aGljaCBkZXBlbmQgb24gZGV2aWNlIHJlc29sdXRpb24pOg0KDQpFbnY6OkluaXQoKTsN
CkZvbnQ6OkluaXQoKTsNClBhZ2U6OkluaXQoKTsNClRhYjo6SW5pdCgpOw0KDQpwdXNoIEBBUkdW
LCAkSW5wdXQ6OlNURElOIHVubGVzcyBAQVJHVjsgICAgIyBCeSBkZWZhdWx0IHJlYWQgc3RkaW4N
CklucHV0OjpBZGRGaWxlcyggQEFSR1YgKTsNCg0KUGFyc2U6OkludGVycHJldElucHV0KCk7DQpM
aW5lOjpVbmNvbmRpdGlvbmFsQnJlYWsoKTsNCmlmICggZGVmaW5lZCAkbWFpbjo6RW5kTWFjcm8g
KQ0Kew0KICAgIE1hY3JvOjpJbnZva2UoICRtYWluOjpFbmRNYWNybywgMSApOw0KICAgIFBhcnNl
OjpJbnRlcnByZXRJbnB1dCgpOw0KfQ0KaWYgKCBEaXZlcnNpb246OlZlcnRpY2FsUG9zaXRpb24o
KSA+IDAgKQ0Kew0KICAgIFBhcnNlOjpGb3JjZVBhZ2VFamVjdCgpOw0KICAgIFBhcnNlOjpJbnRl
cnByZXRJbnB1dCgpOw0KfQ0KDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpfX0RBVEFfXw0K
DQpwYWNrYWdlIE91dHB1dDsNCg0KIyBUaGlzIGlzIHRoZSBkZWZhdWx0IG91dHB1dCBkZXZpY2Us
IHByaW50aW5nIHBsYWluIHRleHQuDQojIFRoaXMgYnVmZmVycyBlYWNoIHBhZ2UgdG8gZWxpbWlu
YXRlIHJldmVyc2UgdmVydGljYWwgbW90aW9uLg0KDQojIFRoZSBzdGFuZGFyZCBPdXRwdXQgZGV2
aWNlIGludGVyZmFjZSBpczoNCiMgJHVuaXRzID0gUmVzb2x1dGlvbigpICAgICAgICAgICAgICBE
ZXZpY2UgdW5pdHMgcGVyIGluY2gNCiMgJHVuaXRzID0gTWluSG9yaXpvbnRhbCgpICAgICAgICAg
ICBNaW5pbXVtIGhvcml6b250YWwgbW92ZW1lbnQgKGRldmljZSB1bml0cykNCiMgJHVuaXRzID0g
TWluVmVydGljYWwoKSAgICAgICAgICAgICBNaW5pbXVtIHZlcnRpY2FsIG1vdmVtZW50IChkZXZp
Y2UgdW5pdHMpDQojICAgICAgICAgIENoYXIoJG5hbWUsJHdpZHRoLCRmb250KSAgUHV0IGNoYXJh
Y3RlciwgYWR2YW5jZSBjdXJyZW50IHBvc2l0aW9uDQojICAgICAgICAgIE1vdGlvbigkeCwkeSkg
ICAgICAgICAgICAgTW92ZSBjdXJyZW50IHBvc2l0aW9uIHJlbGF0aXZlDQojICAgICAgICAgIE5l
d0xpbmUoJHZlcnRpY2FsKSAgICAgICAgQWR2YW5jZSB0byBwYWdlIGxlZnQgd2l0aCB2ZXJ0aWNh
bCBtb3Rpb24NCiMgICAgICAgICAgTmV3UGFnZSgpICAgICAgICAgICAgICAgICBTdGFydCBhIG5l
dyBwYWdlIChmbHVzaGluZyBjdXJyZW50IHBhZ2UpDQojICAgICAgICAgIEZsdXNoKCkgICAgICAg
ICAgICAgICAgICAgRmx1c2ggY3VycmVudCBwYWdlDQojIEBuYW1lcyA9IEZvbnRzKCkgICAgICAg
ICAgICAgICAgICAgTmFtZXMgb2YgZm9udHMgaW4gbW91bnRlZCBvcmRlcg0KIyAkdW5pdHMgPSBD
aGFyV2lkdGgoJG5hbWUsJGZvbnQpICAgIFdpZHRoIG9mIGNoYXJhY3RlciBpbiBkZXZpY2UgdW5p
dHMNCiMgJHVuaXRzID0gU3RyaW5nV2lkdGgoJHN0ciwkZm9udCkgICBXaWR0aCBvZiBzdHJpbmcg
aW4gZGV2aWNlIHVuaXRzDQojICR1bml0cyA9IEVtU3BhY2UoJGZvbnQpICAgICAgICAgICAgV2lk
dGggb2YgYW4gRW0gc3BhY2UgaW4gZGV2aWNlIHVuaXRzDQojICR1bml0cyA9IEVuU3BhY2UoJGZv
bnQpICAgICAgICAgICAgV2lkdGggb2YgYW4gRW4gc3BhY2UgaW4gZGV2aWNlIHVuaXRzDQojICAg
ICAgICAgIE1hcENoYXIoJGZyb20sJHRvKSAgICAgICAgU3Vic3RpdHV0ZSBjaGFyYWN0ZXIgb24g
b3V0cHV0DQoNCnVzZSB2YXJzIHF3eyANCiAgICAkX292ZXJzdHJpa2UgJF9saW5lICRfY29sIEBf
YnVmZmVyICVfZm9udF9lZmZlY3QgJV90cmFuc2xhdGUgJV9mb250bWFwDQp9Ow0KDQokX292ZXJz
dHJpa2UgPSAxOw0KJF9saW5lID0gMDsNCiRfY29sID0gMDsNCg0Kc3ViIFJlc29sdXRpb24gICAg
eyAyNDAgfSAgICAgIyBkZXZpY2UgdW5pdHMgcGVyIGluY2gNCnN1YiBNaW5Ib3Jpem9udGFsIHsg
MjQgfSAgICAgICMgZGV2aWNlIHVuaXRzIHBlciBjaGFyYWN0ZXIgKDEvMTAgaW5jaCkNCnN1YiBN
aW5WZXJ0aWNhbCAgIHsgNDAgfSAgICAgICMgZGV2aWNlIHVuaXRzIHBlciBsaW5lICgxLzYgaW5j
aCkNCnN1YiBNYXhMaW5lcyAgICAgIHsgNjYgfSAgICAgICMgMTEgdmVydGljYWwgaW5jaGVzIG9u
IGEgcGFnZQ0Kc3ViIEVtU3BhY2UgICAgICAgeyBNaW5Ib3Jpem9udGFsKCkgfQ0Kc3ViIEVuU3Bh
Y2UgICAgICAgeyBNaW5Ib3Jpem9udGFsKCkgfQ0Kc3ViIE5ld0xpbmUgICAgICAgeyAkX2NvbD0w
OyBNb3Rpb24oMCxzaGlmdCgpKTsgfQ0Kc3ViIE5ld1BhZ2UgICAgICAgeyBGbHVzaCgpOyB9DQpz
dWIgRm9udHMgICAgICAgICB7IHF3eyBSIEkgQiBCSSBTIH0gfQ0Kc3ViIE92ZXJzdHJpa2UgICAg
eyAkX292ZXJzdHJpa2UgPSBzaGlmdCB9DQoNCnN1YiBGbHVzaA0Kew0KICAgIGZvcmVhY2ggbXkg
JG4gKCAwLi4oTWF4TGluZXMoKS0xKSApDQogICAgew0KICAgICAgICBtYXAoIHByaW50KCBkZWZp
bmVkKCRfKSA/ICRfIDogJyAnICksIEB7JF9idWZmZXJbJG5dfSApDQogICAgICAgICAgICBpZiBk
ZWZpbmVkKCAkX2J1ZmZlclskbl0gKTsNCglwcmludCAiXG4iOw0KICAgICAgICAkX2J1ZmZlclsk
bl0gPSBbXTsNCiAgICB9DQogICAgJF9saW5lID0gJF9jb2wgPSAwOw0KfQ0KDQolX2ZvbnRfZWZm
ZWN0ID0gKA0KICAgIEkgPT4gc3ViIHsgIl9cYiRfWzBdIiB9LA0KICAgIEIgPT4gc3ViIHsgIiRf
WzBdXGIkX1swXSIgfSwNCiAgICBCSSA9PiBzdWIgeyAiX1xiJF9bMF1cYiRfWzBdIiB9LA0KKTsN
Cg0Kc3ViIF9jaGFyDQp7DQogICAgbXkgKCRuYW1lLCAkd2lkdGgsICRmb250KSA9IEBfOw0KICAg
IGlmICggJG5hbWUgZXEgIlxiIiApDQogICAgew0KICAgICAgICAtLSRfY29sIGlmICRfY29sID4g
MDsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCglpZiAoICRfb3ZlcnN0cmlrZSApDQoJew0KCSAg
ICAkX2J1ZmZlclskX2xpbmVdWyRfY29sXSAuPSAiXGIiDQoJCWlmIGRlZmluZWQgJF9idWZmZXJb
JF9saW5lXVskX2NvbF07DQoJICAgIG15ICRlZmZlY3QgPSAkX2ZvbnRfZWZmZWN0eyRmb250fTsN
CgkgICAgJG5hbWUgPSAkZWZmZWN0LT4oJG5hbWUpIGlmICRlZmZlY3Q7DQoJICAgICRfYnVmZmVy
WyRfbGluZV1bJF9jb2xdIC49ICRuYW1lOw0KCX0NCgllbHNlDQoJew0KCSAgICAkX2J1ZmZlclsk
X2xpbmVdWyRfY29sXSA9ICRuYW1lOw0KCX0NCgkrKyRfY29sIGlmICR3aWR0aDsNCiAgICB9DQp9
DQoNCnN1YiBDaGFyDQp7DQogICAgbXkgKCRuYW1lLCAkd2lkdGgsICRmb250KSA9IEBfOw0KICAg
ICRuYW1lID0gJF90cmFuc2xhdGV7JG5hbWV9IGlmIGV4aXN0cyAkX3RyYW5zbGF0ZXskbmFtZX07
DQogICAgaWYgKCBsZW5ndGgoICRuYW1lICkgPiAxICkNCiAgICB7DQoJZm9yZWFjaCAoIHNwbGl0
KCAvLywgKCRfZm9udG1hcHskbmFtZX18fCcgJykgKSApDQogICAgICAgIHsNCiAgICAgICAgICAg
IF9jaGFyKCAkXywgJHdpZHRoLCAkZm9udCApOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVsc2UN
CiAgICB7DQogICAgICAgIF9jaGFyKCAkbmFtZSwgJHdpZHRoLCAkZm9udCApOw0KICAgIH0NCn0N
Cg0Kc3ViIE1vdGlvbiAgICAgICMgcmVsYXRpdmUsIG5vdCBhYnNvbHV0ZSBtb3Rpb24NCnsNCiAg
ICBteSAkY29sID0gaW50KCBzaGlmdCgpIC8gTWluSG9yaXpvbnRhbCgpICk7DQogICAgbXkgJGxp
bmUgPSBpbnQoIHNoaWZ0KCkgLyBNaW5WZXJ0aWNhbCgpICk7DQogICAgcmV0dXJuIHVubGVzcyAk
Y29sIG9yICRsaW5lOw0KICAgICRfbGluZSArPSAkbGluZTsNCiAgICAkX2xpbmUgPSAwIGlmICRf
bGluZSA8IDA7DQogICAgJF9jb2wgKz0gJGNvbDsNCiAgICAkX2NvbCA9IDAgaWYgJF9jb2wgPCAw
Ow0KfQ0KDQpzdWIgQ2hhcldpZHRoDQp7DQogICAgbXkgKCRuYW1lLCAkZm9udCkgPSBAXzsNCiAg
ICByZXR1cm4gLU1pbkhvcml6b250YWwoKSBpZiAkbmFtZSBlcSAiXGIiOw0KICAgICggKGxlbmd0
aCgkbmFtZSkgPiAxKSA/IFN0cmluZ1dpZHRoKCAkX2ZvbnRtYXB7ICRuYW1lIH0gKSANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBNaW5Ib3Jpem9udGFsKCkgKTsNCn0NCg0Kc3ViIFN0cmlu
Z1dpZHRoDQp7DQogICAgbXkgKCRzLCAkZm9udCkgPSBAXzsNCiAgICByZXR1cm4gMCB1bmxlc3Mg
ZGVmaW5lZCAkczsNCiAgICAkcyA9fiBzL1teXGJdW1xiXS8vZzsNCiAgICAoIGxlbmd0aCgkcykg
KiBNaW5Ib3Jpem9udGFsKCkgKTsNCn0NCg0Kc3ViIE1hcENoYXINCnsNCiAgICAkX3RyYW5zbGF0
ZXskX1swXX0gPSAkX1sxXTsNCn0NCg0KJV9mb250bWFwID0gKA0KICAgICdiYScgPT4gJ3wnLCAg
ICAnYmInID0+ICd8JywgICAgJ2J2JyA9PiAnfCcsICAgICdicicgPT4gJ3wnLA0KICAgICdydScg
PT4gJ18nLCAgICAndWwnID0+ICdfJywgICAgJ2RnJyA9PiAifFxiKyIsICdkZCcgPT4gIj1cYnwi
LA0KICAgICdlbScgPT4gJy0nLCAgICAnZW4nID0+ICctJywgICAgJ2h5JyA9PiAnLScsDQogICAg
J2J1JyA9PiAnKicsICAgICcqKicgPT4gJyonLA0KICAgICdjaScgPT4gJ28nLCAgICAnYyonID0+
ICJvXGIqIiwgJ2MrJyA9PiAib1xiKyIsDQogICAgJ2NvJyA9PiAnKEMpJywgICdyZycgPT4gJyhS
KScsICAndG0nID0+ICcodG0pJywNCiAgICAnZmYnID0+ICdmZicsICAgJ2ZpJyA9PiAnZmknLCAg
ICdmbCcgPT4gJ2ZsJywgICAnRmknID0+ICdmZmknLA0KICAgICdGbCcgPT4gJ2ZmbCcsICAnMTQn
ID0+ICcxLzQnLCAgJzEyJyA9PiAnMS8yJywgICczNCcgPT4gJzMvNCcsDQogICAgJ2YvJyA9PiAn
LycsICAgICdzaCcgPT4gJyMnLCAgICAnc2wnID0+ICcvJywgICAgJ3JzJyA9PiAnXFwnLA0KICAg
ICdwbCcgPT4gJysnLCAgICAnbWknID0+ICctJywgICAgJy0rJyA9PiAnLSsnLCAgICcrLScgPT4g
JystJywNCiAgICAnPD0nID0+ICc8PScsICAgJz49JyA9PiAnPj0nLCAgICc9PScgPT4gJz09Jywg
ICAnIT0nID0+ICchPScsDQogICAgJz1+JyA9PiAnPX4nLCAgICd+PScgPT4gJ349JywgICAnfn4n
ID0+ICd+PScsICAgJ2VxJyA9PiAnPScsICAgIA0KICAgICdvcicgPT4gJ3wnLCAgICAnYXQnID0+
ICdAJywNCiAgICAncmgnID0+ICctPicsICAgJ2xoJyA9PiAnPC0nLCAgICc+PicgPT4gJz4+Jywg
ICAnPDwnID0+ICc8PCcsDQogICAgJ2ZtJyA9PiAiJyIsICAgICdzZCcgPT4gIicnIiwgICAnaGEn
ID0+ICdeJywgICAgJ3RpJyA9PiAnficsDQogICAgJ2xCJyA9PiAnWycsICAgICdyQicgPT4gJ10n
LCAgICAnbEMnID0+ICd7JywgICAgJ3JDJyA9PiAnfScsDQopOw0KDQojIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCl9fRU5EX18NCg0KPWhlYWQxIE5BTUUNCg0KbnJvZmYgLSB0ZXh0IGZvcm1hdHRpbmcN
Cg0KPWhlYWQxIFNZTk9QU0lTDQoNCiAgbnJvZmYgWyBvcHRpb25zIF0gWyBmaWxlIF0gLi4uDQoN
Cj1oZWFkMSBERVNDUklQVElPTg0KDQpOcm9mZiBmb3JtYXRzIHRleHQgZm9yIHRlcm1pbmFscyBh
bmQgcHJpbnRlcnMgdGhhdCB1c2UgZml4ZWQtd2lkdGggZm9udHMuDQpJZiBubyBmaWxlIGlzIGdp
dmVuLCBucm9mZiByZWFkcyBmcm9tIHN0YW5kYXJkIGlucHV0Lg0KVGhlIGZpbGUgbmFtZSAnLScg
aXMgYWxzbyB0YWtlbiB0byBtZWFuIHN0YW5kYXJkIGlucHV0Lg0KUmVzdWx0cyBhcmUgcHJpbnRl
ZCB0byBzdGFuZGFyZCBvdXRwdXQuDQoNCk9wdGlvbnMgYXJlOg0KDQogIC1pICAgICAgICBSZWFk
IGZyb20gc3RhbmRhcmQgaW5wdXQgYWZ0ZXIgYWxsIG90aGVyIGZpbGVzLg0KDQogIC1tbmFtZSAg
ICBSZWFkIHRoZSBzdGFuZGFyZCBtYWNybyBmaWxlIC91c3IvbGliL3RtYWMvdG1hYy5uYW1lIGJl
Zm9yZSANCiAgICAgICAgICAgIHByb2Nlc3NpbmcgaW5wdXQuDQoNCiAgLW5OICAgICAgIFNldCBw
YWdlIG51bWJlcmluZyB0byBiZWdpbiBhdCBOLg0KDQogIC1yYU4gICAgICBTZXQgdGhlIG51bWJl
ciByZWdpc3RlciBuYW1lZCBieSB0aGUgc2luZ2xlIGNoYXJhY3RlciAnYScgdG8gTi4NCg0KICAt
VG5hbWUgICAgVXNlIHRoZSBvdXRwdXQgZGV2aWNlICduYW1lJy4NCiAgICAgICAgICAgIC1UbHAg
aXMgdGhlIGRlZmF1bHQsIGZvciBwbGFpbiB0ZXh0IHdpdGggb3ZlcnN0cmlraW5nLg0KICAgICAg
ICAgICAgLVRjb2wgaXMgcGxhaW4gdGV4dCB3aXRoIG92ZXJzdHJpa2luZyBzdXBwcmVzc2VkLg0K
DQogIC11ICAgICAgICBJbnRlcnByZXQgdGhlIGlucHV0IHRleHQgYXMgVVRGLTggKFVuaWNvZGUp
Lg0KDQo9aGVhZDEgU0VFIEFMU08NCg0KVHJvZmYgVXNlcidzIE1hbnVhbCwgSm9zZXBoIEYuIE9z
c2FubmEsIEJyaWFuIFcuIEtlcm5pZ2hhbiwgMTk5Mg0KDQo9aGVhZDEgQlVHUw0KDQpUaGVyZSBh
cmUgYWxtb3N0IG5vIGVycm9yIG1lc3NhZ2VzLg0KDQpEb24ndCBleHBlY3QgdG8gdXNlIHRoaXMg
d2l0aCBncm9mZiBtYWNyb3MuDQpUaGUgbWFueSBncm9mZiBleHRlbnNpb25zIGFyZSBub3Qgc3Vw
cG9ydGVkLg0KDQpCdWlsdGluIHJlcXVlc3RzIG5vdCB5ZXQgc3VwcG9ydGVkOg0KIGNvbnRpbnVv
dXMgdW5kZXJsaW5lICguY3UpLA0KIG9wdGlvbmFsIGh5cGhlbnMgYW5kIGF1dG9tYXRpYyBoeXBo
ZW5hdGlvbiAoLm5oLCAuaHksIC5odyksDQogbGluZSBzcGFjaW5nICgubHMpLA0KIG91dHB1dCBs
aW5lIG51bWJlcmluZyAoLm5tLCAubm4pLg0KDQpFc2NhcGUgc2VxdWVuY2VzIG5vdCB5ZXQgc3Vw
cG9ydGVkIGluY2x1ZGU6DQogdHJhbnNwYXJlbnQgb3V0cHV0IChcISksDQogYnJhY2tldCBidWls
ZGluZyAoXGIpLA0KIGxpbmUgZHJhd2luZyAoXGwsIFxMKSwNCiBjaGFyYWN0ZXIgbnVtYmVyIChc
TiksDQogb3ZlcnN0cmlrZSBjaGFyYWN0ZXJzIChcbyksDQogYnJlYWsgYW5kIHNwcmVhZCBvdXRw
dXQgbGluZSAoXHApLA0KIGV4dHJhIGxpbmUgKFx4KSwNCiBkZXZpY2UgY29udHJvbCAoXFgpLg0K
DQo9aGVhZDEgQVVUSE9SDQoNCk5hdGhhbiBTY290dCBUaG9tcHNvbiA8IHF1aW1ieSBhdCBjaXR5
LW5ldCBkb3QgY29tID4NCg==
------=_Part_13296_2457140.1155046578388--