Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2018-06-28 17:59:49

giampablo
Member
From: Italy
Registered: 2008-07-17
Posts: 86
Website

How to compile a textpattern plugin from github?

Can somebody be so kind to help me to compile for me a plugin from github?

In particular this one

Of course the result should be in the usual installable .txt format and 4.7.1 compatible.

I tried using ied_plugin_composer but I am not good at it.
Thank you

Offline

#2 2018-06-28 19:29:05

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,615
GitHub Twitter

Re: How to compile a textpattern plugin from github?

You can find the file you’re looking for here: https://github.com/Bloke/smd_access_keys/releases


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#3 2018-06-29 10:28:36

giampablo
Member
From: Italy
Registered: 2008-07-17
Posts: 86
Website

Re: How to compile a textpattern plugin from github?

Patrick,
I was referring to this release (sorry for my mistake):
github.com/Bloke/smd_access_keys

It should contain many fixes. Stef was doing some more tests before packaging an official release.
But since he is away for a period, I tried to compile by myself above release with no success.

Hope you can help me, thanks in advance

Offline

#4 2018-06-29 12:06:00

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 9,028
Website GitHub Mastodon Twitter

Re: How to compile a textpattern plugin from github?

giampablo wrote #312765:

Patrick,
I was referring to this release (sorry for my mistake):
github.com/Bloke/smd_access_keys

It should contain many fixes. Stef was doing some more tests before packaging an official release.
But since he is away for a period, I tried to compile by myself above release with no success.

Hope you can help me, thanks in advance

I’m hopeless at this but try

# Name: smd_access_keys v0.21a 
# Type: Public plugin
# 
# Author: Stef Dawson
# URL: http://stefdawson.com/
# Recommended load order: 5

# .....................................................................
# This is a plugin for Textpattern CMS - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# .....................................................................

YToxMTp7czo0OiJuYW1lIjtzOjE1OiJzbWRfYWNjZXNzX2tleXMiO3M6NjoiYXV0aG9yIjtz
OjExOiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZk
YXdzb24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuMjFhIjtzOjExOiJkZXNjcmlwdGlv
biI7czowOiIiO3M6NDoiY29kZSI7czo3ODE0NjoiPD9waHANCg0KLy8gVGhpcyBpcyBhIFBM
VUdJTiBURU1QTEFURSBmb3IgVGV4dHBhdHRlcm4gQ01TLg0KDQovLyBDb3B5IHRoaXMgZmls
ZSB0byBhIG5ldyBuYW1lIGxpa2UgYWJjX215cGx1Z2luLnBocC4gIEVkaXQgdGhlIGNvZGUs
IHRoZW4NCi8vIHJ1biB0aGlzIGZpbGUgYXQgdGhlIGNvbW1hbmQgbGluZSB0byBwcm9kdWNl
IGEgcGx1Z2luIGZvciBkaXN0cmlidXRpb246DQovLyAkIHBocCBhYmNfbXlwbHVnaW4ucGhw
ID4gYWJjX215cGx1Z2luLTAuMS50eHQNCg0KLy8gUGx1Z2luIG5hbWUgaXMgb3B0aW9uYWwu
ICBJZiB1bnNldCwgaXQgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgY3VycmVudA0KLy8g
ZmlsZSBuYW1lLiBQbHVnaW4gbmFtZXMgc2hvdWxkIHN0YXJ0IHdpdGggYSB0aHJlZSBsZXR0
ZXIgcHJlZml4IHdoaWNoIGlzDQovLyB1bmlxdWUgYW5kIHJlc2VydmVkIGZvciBlYWNoIHBs
dWdpbiBhdXRob3IgKCJhYmMiIGlzIGp1c3QgYW4gZXhhbXBsZSkuDQovLyBVbmNvbW1lbnQg
YW5kIGVkaXQgdGhpcyBsaW5lIHRvIG92ZXJyaWRlOg0KJHBsdWdpblsnbmFtZSddID0gJ3Nt
ZF9hY2Nlc3Nfa2V5cyc7DQoNCi8vIEFsbG93IHJhdyBIVE1MIGhlbHAsIGFzIG9wcG9zZWQg
dG8gVGV4dGlsZS4NCi8vIDAgPSBQbHVnaW4gaGVscCBpcyBpbiBUZXh0aWxlIGZvcm1hdCwg
bm8gcmF3IEhUTUwgYWxsb3dlZCAoZGVmYXVsdCkuDQovLyAxID0gUGx1Z2luIGhlbHAgaXMg
aW4gcmF3IEhUTUwuICBOb3QgcmVjb21tZW5kZWQuDQojICRwbHVnaW5bJ2FsbG93X2h0bWxf
aGVscCddID0gMTsNCg0KJHBsdWdpblsndmVyc2lvbiddID0gJzEuMC4wJzsNCiRwbHVnaW5b
J2F1dGhvciddID0gJ1N0ZWYgRGF3c29uJzsNCiRwbHVnaW5bJ2F1dGhvcl91cmknXSA9ICdo
dHRwOi8vc3RlZmRhd3Nvbi5jb20vJzsNCiRwbHVnaW5bJ2Rlc2NyaXB0aW9uJ10gPSAnUGVy
bWl0IGFjY2VzcyB0byBjb250ZW50IGZvciBhIGNlcnRhaW4gdGltZSBwZXJpb2QvbnVtYmVy
IG9mIGFjY2VzcyBhdHRlbXB0cyc7DQoNCi8vIFBsdWdpbiBsb2FkIG9yZGVyOg0KLy8gVGhl
IGRlZmF1bHQgdmFsdWUgb2YgNSB3b3VsZCBmaXQgbW9zdCBwbHVnaW5zLCB3aGlsZSBmb3Ig
aW5zdGFuY2UgY29tbWVudA0KLy8gc3BhbSBldmFsdWF0b3JzIG9yIFVSTCByZWRpcmVjdG9y
cyB3b3VsZCBwcm9iYWJseSB3YW50IHRvIHJ1biBlYXJsaWVyDQovLyAoMS4uLjQpIHRvIHBy
ZXBhcmUgdGhlIGVudmlyb25tZW50IGZvciBldmVyeXRoaW5nIGVsc2UgdGhhdCBmb2xsb3dz
Lg0KLy8gVmFsdWVzIDYuLi45IHNob3VsZCBiZSBjb25zaWRlcmVkIGZvciBwbHVnaW5zIHdo
aWNoIHdvdWxkIHdvcmsgbGF0ZS4NCi8vIFRoaXMgb3JkZXIgaXMgdXNlci1vdmVycmlkZWFi
bGUuDQokcGx1Z2luWydvcmRlciddID0gJzUnOw0KDQovLyBQbHVnaW4gJ3R5cGUnIGRlZmlu
ZXMgd2hlcmUgdGhlIHBsdWdpbiBpcyBsb2FkZWQNCi8vIDAgPSBwdWJsaWMgICAgICAgICAg
ICAgIDogb25seSBvbiB0aGUgcHVibGljIHNpZGUgb2YgdGhlIHdlYnNpdGUgKGRlZmF1bHQp
DQovLyAxID0gcHVibGljK2FkbWluICAgICAgICA6IG9uIGJvdGggdGhlIHB1YmxpYyBhbmQg
YWRtaW4gc2lkZQ0KLy8gMiA9IGxpYnJhcnkgICAgICAgICAgICAgOiBvbmx5IHdoZW4gaW5j
bHVkZV9wbHVnaW4oKSBvciByZXF1aXJlX3BsdWdpbigpIGlzIGNhbGxlZA0KLy8gMyA9IGFk
bWluICAgICAgICAgICAgICAgOiBvbmx5IG9uIHRoZSBhZG1pbiBzaWRlIChubyBBSkFYKQ0K
Ly8gNCA9IGFkbWluK2FqYXggICAgICAgICAgOiBvbmx5IG9uIHRoZSBhZG1pbiBzaWRlIChB
SkFYIHN1cHBvcnRlZCkNCi8vIDUgPSBwdWJsaWMrYWRtaW4rYWpheCAgIDogb24gYm90aCB0
aGUgcHVibGljIGFuZCBhZG1pbiBzaWRlIChBSkFYIHN1cHBvcnRlZCkNCiRwbHVnaW5bJ3R5
cGUnXSA9ICcxJzsNCg0KLy8gUGx1Z2luICJmbGFncyIgc2lnbmFsIHRoZSBwcmVzZW5jZSBv
ZiBvcHRpb25hbCBjYXBhYmlsaXRpZXMgdG8gdGhlIGNvcmUgcGx1Z2luIGxvYWRlci4NCi8v
IFVzZSBhbiBhcHByb3ByaWF0ZWx5IE9SLWVkIGNvbWJpbmF0aW9uIG9mIHRoZXNlIGZsYWdz
Lg0KLy8gVGhlIGZvdXIgaGlnaC1vcmRlciBiaXRzIDB4ZjAwMCBhcmUgYXZhaWxhYmxlIGZv
ciB0aGlzIHBsdWdpbidzIHByaXZhdGUgdXNlDQppZiAoIWRlZmluZWQoJ1BMVUdJTl9IQVNf
UFJFRlMnKSkgZGVmaW5lKCdQTFVHSU5fSEFTX1BSRUZTJywgMHgwMDAxKTsgLy8gVGhpcyBw
bHVnaW4gd2FudHMgdG8gcmVjZWl2ZSAicGx1Z2luX3ByZWZzLnskcGx1Z2luWyduYW1lJ119
IiBldmVudHMNCmlmICghZGVmaW5lZCgnUExVR0lOX0xJRkVDWUNMRV9OT1RJRlknKSkgZGVm
aW5lKCdQTFVHSU5fTElGRUNZQ0xFX05PVElGWScsIDB4MDAwMik7IC8vIFRoaXMgcGx1Z2lu
IHdhbnRzIHRvIHJlY2VpdmUgInBsdWdpbl9saWZlY3ljbGUueyRwbHVnaW5bJ25hbWUnXX0i
IGV2ZW50cw0KDQokcGx1Z2luWydmbGFncyddID0gJzMnOw0KDQovLyBQbHVnaW4gJ3RleHRw
YWNrJyBpcyBvcHRpb25hbC4gSXQgcHJvdmlkZXMgaTE4biBzdHJpbmdzIHRvIGJlIHVzZWQg
aW4gY29uanVuY3Rpb24gd2l0aCBnVHh0KCkuDQovLyBTeW50YXg6DQovLyAjIyBhcmJpdHJh
cnkgY29tbWVudA0KLy8gI0BldmVudA0KLy8gI0BsYW5ndWFnZSBJU08tTEFOR1VBR0UtQ09E
RQ0KLy8gYWJjX3N0cmluZ19uYW1lID0+IExvY2FsaXplZCBTdHJpbmcNCg0KJHBsdWdpblsn
dGV4dHBhY2snXSA9IDw8PEVPVA0KI0BsYW5ndWFnZSBlbiwgZW4tZ2IsIGVuLXVzDQojQGFk
bWluLXNpZGUNCnRhYl9zbWRfYWtleSA9PiBBY2Nlc3Mga2V5cw0KI0BzbWRfYWtleQ0Kc21k
X2FrZXlfYWNjZXNzZXMgPT4gQWNjZXNzIGF0dGVtcHRzDQpzbWRfYWtleV9idG5fbmV3ID0+
IE5ldyBrZXkNCnNtZF9ha2V5X2J0bl9wcmVmID0+IFByZWZzDQpzbWRfYWtleV9kZWxldGVk
ID0+IEtleXMgZGVsZXRlZDoge2RlbGV0ZWR9DQpzbWRfYWtleV9lcnJfYmFkX3Rva2VuID0+
IE1pc3Npbmcgb3IgbWFuZ2xlZCBhY2Nlc3Mga2V5DQpzbWRfYWtleV9lcnJfZXhwaXJlZCA9
PiBBY2Nlc3MgZXhwaXJlZA0Kc21kX2FrZXlfZXJyX2ZvcmJpZGRlbiA9PiBGb3JiaWRkZW4g
YWNjZXNzDQpzbWRfYWtleV9lcnJfaW52YWxpZF90b2tlbiA9PiBJbnZhbGlkIGFjY2VzcyBr
ZXkNCnNtZF9ha2V5X2Vycl9saW1pdCA9PiBBY2Nlc3MgbGltaXQgcmVhY2hlZA0Kc21kX2Fr
ZXlfZXJyX21pc3NpbmdfdGltZXN0YW1wID0+IE1pc3NpbmcgdGltZXN0YW1wDQpzbWRfYWtl
eV9lcnJfdW5hdXRob3JpemVkID0+IFVuYXV0aG9yaXplZCBhY2Nlc3MNCnNtZF9ha2V5X2Vy
cl91bmF2YWlsYWJsZSA9PiBOb3QgYXZhaWxhYmxlDQpzbWRfYWtleV9maWxlX2Rvd25sb2Fk
X2V4cGlyZXMgPT4gRmlsZSBkb3dubG9hZCBleHBpcnkgdGltZSAoc2Vjb25kcykNCnNtZF9h
a2V5X2dlbmVyYXRlZCA9PiBBY2Nlc3Mga2V5OiB7a2V5fQ0Kc21kX2FrZXlfbG9nX2lwID0+
IExvZyBJUCBhZGRyZXNzZXMNCnNtZF9ha2V5X21heCA9PiBNYXhpbXVtDQpzbWRfYWtleV9u
ZWVkX3BhZ2UgPT4gWW91IG5lZWQgdG8gZW50ZXIgYSBwYWdlIFVSTA0Kc21kX2FrZXlfcHJl
ZnNfc29tZV9leHBsYWluID0+IFRoaXMgaXMgZWl0aGVyIGEgbmV3IGluc3RhbGxhdGlvbiBv
ciBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4gdG8gb25lIHlvdSBoYWQgYmVm
b3JlLg0Kc21kX2FrZXlfcHJlZnNfc29tZV9vcHRzID0+IENsaWNrICJJbnN0YWxsIHRhYmxl
IiB0byBhZGQgb3IgdXBkYXRlIHRoZSB0YWJsZSBsZWF2aW5nIGFsbCBleGlzdGluZyBkYXRh
IHVudG91Y2hlZC4NCnNtZF9ha2V5X3ByZWZzX3NvbWVfdGJsID0+IE5vdCBhbGwgdGFibGUg
aW5mbyBhdmFpbGFibGUuDQpzbWRfYWtleV9zYWx0X2xlbmd0aCA9PiBTYWx0IGxlbmd0aCAo
Y2hhcmFjdGVycykNCnNtZF9ha2V5X3RhYl9uYW1lID0+IEFjY2VzcyBrZXlzDQpzbWRfYWtl
eV90YmxfaW5zdGFsbGVkID0+IFRhYmxlIGluc3RhbGxlZA0Kc21kX2FrZXlfdGJsX2luc3Rh
bGxfbGJsID0+IEluc3RhbGwgdGFibGUNCnNtZF9ha2V5X3RibF9ub3RfaW5zdGFsbGVkID0+
IFRhYmxlIG5vdCBpbnN0YWxsZWQNCnNtZF9ha2V5X3RibF9ub3RfcmVtb3ZlZCA9PiBUYWJs
ZSBub3QgcmVtb3ZlZA0Kc21kX2FrZXlfdGJsX3JlbW92ZWQgPT4gVGFibGUgcmVtb3ZlZA0K
c21kX2FrZXlfdGltZSA9PiBJc3N1ZWQNCnNtZF9ha2V5X3RyaWdnZXIgPT4gVHJpZ2dlcg0K
I0BsYW5ndWFnZSBpdA0KI0BhZG1pbi1zaWRlDQp0YWJfc21kX2FrZXkgPT4gQ2hpYXZpIGRp
IGFjY2Vzc28NCiNAc21kX2FrZXkNCnNtZF9ha2V5X2FjY2Vzc2VzID0+IFRlbnRhdGl2aSBk
aSBhY2Nlc3NvDQpzbWRfYWtleV9idG5fbmV3ID0+IE51b3ZhIGNoaWF2ZQ0Kc21kX2FrZXlf
YnRuX3ByZWYgPT4gUHJlZmVyZW56ZQ0Kc21kX2FrZXlfZGVsZXRlZCA9PiBDaGlhdmkgZWxp
bWluYXRlOiB7ZGVsZXRlZH0NCnNtZF9ha2V5X2Vycl9iYWRfdG9rZW4gPT4gQ2hpYXZpIG1h
bmNhbnRpIG8gZGV0ZXJpb3JhdGUNCnNtZF9ha2V5X2Vycl9leHBpcmVkID0+IEFjY2Vzc28g
c2NhZHV0bw0Kc21kX2FrZXlfZXJyX2ZvcmJpZGRlbiA9PiBBY2Nlc3NvIHZpZXRhdG8NCnNt
ZF9ha2V5X2Vycl9pbnZhbGlkX3Rva2VuID0+IENoaWF2ZSBkaSBhY2Nlc3NvIG5vbiB2YWxp
ZGENCnNtZF9ha2V5X2Vycl9saW1pdCA9PiBMaW1pdGUgZGkgYWNjZXNzbyByYWdnaXVudG8N
CnNtZF9ha2V5X2Vycl9taXNzaW5nX3RpbWVzdGFtcCA9PiBUaW1lc3RhbXAgbWFuY2FudGUN
CnNtZF9ha2V5X2Vycl91bmF1dGhvcml6ZWQgPT4gQWNjZXNzbyBub24gYXV0b3JpenphdG8N
CnNtZF9ha2V5X2Vycl91bmF2YWlsYWJsZSA9PiBOb24gZGlzcG9uaWJpbGUNCnNtZF9ha2V5
X2ZpbGVfZG93bmxvYWRfZXhwaXJlcyA9PiBTY2FkZW56YSBGaWxlIGRvd25sb2FkIChpbiBz
ZWNvbmRpKQ0Kc21kX2FrZXlfZ2VuZXJhdGVkID0+IENoaWF2ZSBkaSBhY2Nlc3NvOiB7a2V5
fQ0Kc21kX2FrZXlfbG9nX2lwID0+IFJlZ2lzdHJvIGluZGlyaXp6aSBJUA0Kc21kX2FrZXlf
bWF4ID0+IE1hc3NpbW8NCnNtZF9ha2V5X25lZWRfcGFnZSA9PiBEZXZpIGluc2VyaXJlIHVu
IFVSTCBkaSBwYWdpbmENCnNtZF9ha2V5X3ByZWZzX3NvbWVfZXhwbGFpbiA9PiBRdWVzdGEg
w6ggbyB1bmEgbnVvdmEgaW5zdGFsbGF6aW9uZSBvIHVuYSB2ZXJzaW9uZSBkZWwgcGx1Z2lu
IGRpdmVyc2EgZGEgcXVlbGxhIGNoZSBhdmV2aSBwcmltYS4NCnNtZF9ha2V5X3ByZWZzX3Nv
bWVfb3B0cyA9PiBDbGljY2Eg4oCcSW5zdGFsbGEgdGFiZWxsYeKAnSBwZXIgYWdnaXVuZ2Vy
ZSBvIGFnZ2lvcm5hcmUgbGEgdGFiZWxsYSBsYXNjaWFuZG8gaW50YXR0aSB0dXR0aSBpIGRh
dGkgZXNpc3RlbnRpLg0Kc21kX2FrZXlfcHJlZnNfc29tZV90YmwgPT4gSW5mbyB0YWJlbGxh
IG5vbiB0dXR0ZSBkaXNwb25pYmlsaS4NCnNtZF9ha2V5X3NhbHRfbGVuZ3RoID0+IGx1bmdo
ZXp6YSBzYWx0IChpbiBjYXJhdHRlcmkpDQpzbWRfYWtleV90YWJfbmFtZSA9PiBDaGlhdmkg
ZGkgYWNjZXNzbw0Kc21kX2FrZXlfdGJsX2luc3RhbGxlZCA9PiBUYWJlbGxhIGluc3RhbGxh
dGENCnNtZF9ha2V5X3RibF9pbnN0YWxsX2xibCA9PiBJbnN0YWxsYXppb25lIHRhYmVsbGEN
CnNtZF9ha2V5X3RibF9ub3RfaW5zdGFsbGVkID0+IFRhYmVsbGEgbm9uIGluc3RhbGxhdGEN
CnNtZF9ha2V5X3RibF9ub3RfcmVtb3ZlZCA9PiBUYWJlbGxhIG5vbiByaW1vc3NhDQpzbWRf
YWtleV90YmxfcmVtb3ZlZCA9PiBUYWJlbGxhIHJpbW9zc2ENCnNtZF9ha2V5X3RpbWUgPT4g
RW1lc3NhDQpzbWRfYWtleV90cmlnZ2VyID0+IFRyaWdnZXINCkVPVDsNCg0KaWYgKCFkZWZp
bmVkKCd0eHBpbnRlcmZhY2UnKSkNCiAgICAgICAgQGluY2x1ZGVfb25jZSgnemVtX3RwbC5w
aHAnKTsNCg0KIyAtLS0gQkVHSU4gUExVR0lOIENPREUgLS0tDQovKioNCiAqIHNtZF9hY2Nl
c3Nfa2V5cw0KICoNCiAqIEEgVGV4dHBhdHRlcm4gQ01TIHBsdWdpbiBmb3Igc2VjdXJlIHRv
a2VuaXplZCBhY2Nlc3MgdG8gcmVzb3VyY2VzLiBGZWF0dXJlczoNCiAqICAtPiBUaW1lLWJh
c2VkIG9yIGFjY2VzcyBhdHRlbXB0IGxpbWl0cw0KICogIC0+IFVudGFtcGVyYWJsZSBVUkwt
YmFzZWQga2V5cw0KICogIC0+IE9wdGlvbmFsIElQIGxvZ2dpbmcNCiAqDQogKiBAYXV0aG9y
IFN0ZWYgRGF3c29uDQogKiBAbGluayAgIGh0dHA6Ly9zdGVmZGF3c29uLmNvbS8NCiAqIEB0
b2RvIEFkZCBzaG9ydGN1dCB0byBzZW5kIGEgbmV3bHktZ2VuZXJhdGVkIGFkbWluLXNpZGUg
a2V5IHRvIGEgdXNlcj8gKGRyb3Bkb3duIG9mIHVzZXJzICsgZS1tYWlsIHRlbXBsYXRlIGlu
IHByZWZzPykNCiAqIEB0b2RvIEFkZCBhdXRvLWRlbGV0aW9uIG9mIGV4cGlyZWQga2V5cyBw
cmVmOg0KICogICAgICAgLT4gRmlsZSBkb3dubG9hZCBrZXlzIGNhbiBiZSBkZWxldGVkIG9u
IGFueSBrZXkgYWNjZXNzIChleHBpcnkgd2luZG93IGlzIGtub3duIHZpYSBwcmVmcykuDQog
KiAgICAgICAtPiBPdGhlciBrZXkgYWNjZXNzZXMgY2FuIG9ubHkgYmUgZGVsZXRlZCB3aGVu
IHRoYXQga2V5IGlzIHVzZWQuDQogKiAgICAgICAtPiBDb25maWd1cmFibGUgZ3JhY2UgcGVy
aW9kIGFmdGVyIGV4cGlyeSwgYmVmb3JlIGRlbGV0aW9uLg0KICogQHRvZG8gT2JmdXNjdGFl
ZCBVUkxzPw0KICogQHRvZG8gUXVlcnkgYW4gYWNjZXNzIGtleSBhbmQgc2VwYXJhdGUgaXQg
aW50byBpdHMgY29tcG9uZW50IHBhcnRzIGZvciBjb252ZW5pZW50IHRlc3RpbmcuDQogKiBA
dG9kbyBNYWtlIGEgc2luZ2xlIGtleSB0byBjb3ZlciAvY2F0ZWdvcnkvdHlwZSBVUkxzIHNv
bWVob3c/DQogKi8NCg0KdXNlIFRleHRwYXR0ZXJuXFNlYXJjaFxGaWx0ZXI7DQoNCmlmICh0
eHBpbnRlcmZhY2UgPT09ICdhZG1pbicpIHsNCiAgICBnbG9iYWwgJHNtZF9ha2V5X2V2ZW50
Ow0KDQogICAgJHNtZF9ha2V5X2V2ZW50ID0gJ3NtZF9ha2V5JzsNCg0KICAgIGFkZF9wcml2
cygkc21kX2FrZXlfZXZlbnQsICcxJyk7DQogICAgYWRkX3ByaXZzKCdwcmVmcy5zbWRfYWtl
eScsICcxLDIsMycpOw0KICAgIGFkZF9wcml2cygncGx1Z2luX3ByZWZzLnNtZF9hY2Nlc3Nf
a2V5cycsICcxJyk7DQoNCiAgICByZWdpc3Rlcl90YWIoJ2V4dGVuc2lvbnMnLCAkc21kX2Fr
ZXlfZXZlbnQsIGdUeHQoJ3NtZF9ha2V5X3RhYl9uYW1lJykpOw0KICAgIHJlZ2lzdGVyX2Nh
bGxiYWNrKCdzbWRfYWtleV9kaXNwYXRjaGVyJywgJHNtZF9ha2V5X2V2ZW50KTsNCiAgICBy
ZWdpc3Rlcl9jYWxsYmFjaygnc21kX2FrZXlfd2VsY29tZScsICdwbHVnaW5fbGlmZWN5Y2xl
LnNtZF9hY2Nlc3Nfa2V5cycpOw0KICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRfYWtleV9w
cmVmcycsICdwbHVnaW5fcHJlZnMuc21kX2FjY2Vzc19rZXlzJyk7DQp9IGVsc2VpZiAodHhw
aW50ZXJmYWNlID09PSAncHVibGljJykgew0KICAgIGlmIChjbGFzc19leGlzdHMoJ1xUZXh0
cGF0dGVyblxUYWdcUmVnaXN0cnknKSkgew0KICAgICAgICBUeHA6OmdldCgnXFRleHRwYXR0
ZXJuXFRhZ1xSZWdpc3RyeScpDQogICAgICAgICAgICAtPnJlZ2lzdGVyKCdzbWRfYWNjZXNz
X2Vycm9yJykNCiAgICAgICAgICAgIC0+cmVnaXN0ZXIoJ3NtZF9hY2Nlc3NfcHJvdGVjdCcp
DQogICAgICAgICAgICAtPnJlZ2lzdGVyKCdzbWRfaWZfYWNjZXNzX2Vycm9yJyk7DQogICAg
fQ0KDQogICAgLyoqDQogICAgICogVGFnOiBQcm90ZWN0IGEgcGFnZSByZXNvdXJjZS4NCiAg
ICAgKg0KICAgICAqIFRoZSByZXNvdXJjZSBpcyBwcm90ZWN0ZWQgZm9yIGEgZ2l2ZW4gdGlt
ZSBsaW1pdCBmcm9tIHRoZSBtb21lbnQgdGhlDQogICAgICogYWNjZXNzIHRva2VuIGhhcyBi
ZWVuIGdlbmVyYXRlZC4NCiAgICAgKg0KICAgICAqIEVtYmVkIHRoaXMgdGFnIGF0IHRoZSB0
b3Agb2YgdGhlIHBhZ2UgdG8gcHJvdGVjdCwgb3Igd3JhcCBpdCBhcm91bmQNCiAgICAgKiBw
YXJ0IG9mIGEgcGFnZSB0byBwcm90ZWN0LiBUaGUgdW5pcXVlIFVSTCB0byB1bmxvY2sgdGhl
IHJlc291cmNlDQogICAgICogaXMgZ2VuZXJhdGVkIGJ5IDx0eHA6c21kX2FjY2Vzc19rZXkg
Lz4uDQogICAgICoNCiAgICAgKiBAcGFyYW0gIGFycmF5ICRhdHRzICAocmVxKSBUYWcgYXR0
cmlidXRlIGxpc3QNCiAgICAgKiBAcGFyYW0gIGFycmF5ICR0aGluZyAob3B0KSBUYWcgY29u
dGFpbmVyIGNvbnRlbnQNCiAgICAgKiBAcmV0dXJuIEhUTUwgUHJvdGVjdGVkIHJlc291cmNl
IHwgZXJyb3INCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzbWRfYWNjZXNzX3Byb3RlY3QoJGF0
dHMsICR0aGluZyA9IG51bGwpDQogICAgew0KICAgICAgICBnbG9iYWwgJHNtZF9hY2Nlc3Nf
ZXJyb3IsICRzbWRfYWNjZXNzX2VycmNvZGUsICRzbWRfYWtleV9wcm90ZWN0ZWRfaW5mbywg
JHBlcm1saW5rX21vZGUsICRwbHVnaW5zOw0KDQogICAgICAgICRzbWRfYWtleV9wcmVmcyA9
IHNtZF9ha2V5X2dldF9wcmVmcygpOw0KDQogICAgICAgIGV4dHJhY3QobEF0dHMoYXJyYXko
DQogICAgICAgICAgICAndHJpZ2dlcicgICAgICA9PiAnc21kX2FrZXknLA0KICAgICAgICAg
ICAgJ3RyaWdnZXJfbW9kZScgPT4gJ2V4YWN0JywgLy8gZXhhY3QsIGJlZ2lucywgZW5kcywg
Y29udGFpbnMNCiAgICAgICAgICAgICdzaXRlX25hbWUnICAgID0+ICcxJywNCiAgICAgICAg
ICAgICdzZWN0aW9uX21vZGUnID0+ICcwJywNCiAgICAgICAgICAgICdmb3JjZScgICAgICAg
ID0+ICcwJywNCiAgICAgICAgICAgICdleHBpcmVzJyAgICAgID0+ICczNjAwJywgLy8gaW4g
c2Vjb25kcw0KICAgICAgICApLCAkYXR0cykpOw0KDQogICAgICAgIGlmIChzbWRfYWtleV90
YWJsZV9leGlzdCgxKSkgew0KICAgICAgICAgICAgJHVybCA9IHNlcnZlclNldCgnUkVRVUVT
VF9VUkknKTsNCg0KICAgICAgICAgICAgaWYgKCRzaXRlX25hbWUgJiYgKHN0cnBvcygkdXJs
LCBodSkgPT09IGZhbHNlKSkgew0KICAgICAgICAgICAgICAgICR1cmxwYXJ0cyA9IHBhcnNl
X3VybChodSk7DQogICAgICAgICAgICAgICAgLy8gQ2FuJ3QgdXNlIHJhdyBodSBzaW5jZSBp
dCBjb250YWlucyB0aGUgc3ViZGlyIChhcyBkb2VzIHRoZSBSRVFVRVNUX1VSSSkNCiAgICAg
ICAgICAgICAgICAvLyBzbyBkdXBsaWNhdGVzIHdvdWxkIG9jY3VyIGluIHRoZSBnZW5lcmF0
ZWQgVVJMLg0KICAgICAgICAgICAgICAgICR1cmwgPSAkdXJscGFydHNbJ3NjaGVtZSddIC4g
JzovLycgLiAkdXJscGFydHNbJ2hvc3QnXSAuICR1cmw7DQogICAgICAgICAgICB9DQoNCiAg
ICAgICAgICAgIGlmICgkc2VjdGlvbl9tb2RlID09ICcxJykgew0KICAgICAgICAgICAgICAg
ICRoYWx2ZXMgPSBleHBsb2RlKCc/JywgJHVybCk7DQogICAgICAgICAgICAgICAgJGhhbGYx
ID0gZXhwbG9kZSgnLycsICRoYWx2ZXNbMF0pOw0KICAgICAgICAgICAgICAgICRoYWxmMiA9
IChpc3NldCgkaGFsdmVzWzFdKSkgPyBleHBsb2RlKCcvJywgJGhhbHZlc1sxXSkgOiBhcnJh
eSgpOw0KDQogICAgICAgICAgICAgICAgJHBhcnRzID0gYXJyYXlfbWVyZ2UoJGhhbGYxLCAk
aGFsZjIpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkcGFydHMg
PSBleHBsb2RlKCcvJywgJHVybCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHRy
YWNlX2FkZCgnW3NtZF9hY2Nlc3Nfa2V5IFVSTCBlbGVtZW50czogJyAuIGpvaW4oJ3wnLCAk
cGFydHMpLiddJyk7DQoNCiAgICAgICAgICAgIC8vIExvb2sgZm9yIG9uZSBvZiB0aGUgdHJp
Z2dlcnMgaW4gdGhlIFVSTCBhbmQgYm9tYiBvdXQgaWYgd2UgZmluZCBpdC4NCiAgICAgICAg
ICAgICR0cmlnZ2VycyA9IGRvX2xpc3QoJHRyaWdnZXIpOw0KICAgICAgICAgICAgJHRyaWdn
ZXIgPSAkdHJpZ2dlcnNbMF07IC8vIEluaXRpYWxpc2UgdG8gdGhlIGZpcnN0IHZhbHVlIGlu
IGNhc2Ugbm8gb3RoZXJzIGFyZSBmb3VuZC4NCg0KICAgICAgICAgICAgJHRyaWdvZmYgPSBm
YWxzZTsNCg0KICAgICAgICAgICAgZm9yZWFjaCAoJHRyaWdnZXJzIGFzICR0cmlnKSB7DQog
ICAgICAgICAgICAgICAgc3dpdGNoICgkdHJpZ2dlcl9tb2RlKSB7DQogICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ2V4YWN0JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICR0cmlnb2Zm
ID0gYXJyYXlfc2VhcmNoKCR0cmlnLCAkcGFydHMpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgJHJlYWxUcmlnID0gJHRyaWc7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICAgICAgICAgICBjYXNlICdiZWdpbnMnOg0KICAgICAgICAgICAgICAgICAgICAg
ICAgJGNvdW50ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0
cyBhcyAkcGFydCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJwb3Mo
JHBhcnQsICR0cmlnKSA9PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkdHJpZ29mZiA9ICRjb3VudDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHJlYWxUcmlnID0gJHBhcnQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkY291bnQrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZHMn
Og0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50ID0gMDsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRyZSA9ICcvLisnLnByZWdfcXVvdGUoJHRyaWcpLickL2knOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCRyZSwgJHBhcnQpID09
PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cmlnb2ZmID0gJGNv
dW50Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVhbFRyaWcgPSAkcGFy
dDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3Vu
dCsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFpbnMnOg0KICAgICAgICAg
ICAgICAgICAgICAgICAgJGNvdW50ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZv
cmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRyZSA9ICcvLionLnByZWdfcXVvdGUoJHRyaWcpLicuKiQvaSc7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJHJlLCAkcGFydCkgPT09IDEpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRyaWdvZmYgPSAkY291bnQ7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWFsVHJpZyA9ICRwYXJ0Ow0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7DQogICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICgkdHJpZ29mZiAhPT0gZmFs
c2UpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgaXQgc28gc2V0IHRoZSB0cmln
Z2VyIHRvIGJlIHRoZSBjdXJyZW50IGl0ZW0gYW5kIGp1bXAgb3V0Lg0KICAgICAgICAgICAg
ICAgICAgICAkdHJpZ29mZiA9ICgkdHJpZ2dlciA9PSAnZmlsZV9kb3dubG9hZCcpID8gJHRy
aWdvZmYgKyAyIDogJHRyaWdvZmY7DQogICAgICAgICAgICAgICAgICAgICR0cmlnZ2VyID0g
JHJlYWxUcmlnOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHRyYWNlX2FkZCgnW3NtZF9hY2Nl
c3Nfa2V5IHRyaWdnZXI6ICcgLiAkdHJpZ2dlciAuICgkdHJpZ29mZiA/ICcgZm91bmQgYXQg
JyAuICR0cmlnb2ZmIDogJycpIC4gJ10nKTsNCg0KICAgICAgICAgICAgJHJldCA9IGZhbHNl
Ow0KICAgICAgICAgICAgJHNtZF9hY2Nlc3NfZXJyb3IgPSAkc21kX2FjY2Vzc19lcnJjb2Rl
ID0gJyc7DQogICAgICAgICAgICAkc21kX2FrZXlfc2FsdF9sZW5ndGggPSBnZXRfcHJlZign
c21kX2FrZXlfc2FsdF9sZW5ndGgnLCAkc21kX2FrZXlfcHJlZnNbJ3NtZF9ha2V5X3NhbHRf
bGVuZ3RoJ11bJ2RlZmF1bHQnXSk7DQogICAgICAgICAgICAkZG9pcCA9IGdldF9wcmVmKCdz
bWRfYWtleV9sb2dfaXAnLCAkc21kX2FrZXlfcHJlZnNbJ3NtZF9ha2V5X2xvZ19pcCddWydk
ZWZhdWx0J10pOw0KDQogICAgICAgICAgICBpZiAoJHRyaWdvZmYgIT09IGZhbHNlKSB7DQog
ICAgICAgICAgICAgICAgJHRva2lkeCA9ICR0cmlnb2ZmICsgMTsNCiAgICAgICAgICAgICAg
ICAkdGltZWlkeCA9ICR0cmlnb2ZmICsgMjsNCiAgICAgICAgICAgICAgICAkZXh0cmFpZHgg
PSAkdHJpZ29mZiArIDM7DQoNCiAgICAgICAgICAgICAgICAvLyBPSywgb24gYSB0cmlnZ2Vy
IHBhZ2UsIHNvIHJlYWQgdGhlIHRva2VuIGZyb20gdGhlIFVSTC4NCiAgICAgICAgICAgICAg
ICAkdG9rID0gKGlzc2V0KCRwYXJ0c1skdG9raWR4XSkgJiYgc3RybGVuKCRwYXJ0c1skdG9r
aWR4XSkgPT0gaW50dmFsKDMyICsgJHNtZF9ha2V5X3NhbHRfbGVuZ3RoKSkgPyAkcGFydHNb
JHRva2lkeF0gOiAwOw0KDQogICAgICAgICAgICAgICAgdHJhY2VfYWRkKCdbc21kX2FjY2Vz
c19rZXkgdG9rZW46ICcgLiAkdG9rIC4nXScpOw0KDQogICAgICAgICAgICAgICAgaWYgKCR0
b2spIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHRva2VuIGlzIHByZXNlbnQsIHNv
IHJlYWQgdGhlIHRpbWVzdGFtcCBmcm9tIHRoZSBVUkwuDQogICAgICAgICAgICAgICAgICAg
ICR0X2hleCA9IChpc3NldCgkcGFydHNbJHRpbWVpZHhdKSkgPyAkcGFydHNbJHRpbWVpZHhd
IDogMDsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBJcyB0aGVyZSBhIGRvd25sb2FkIGxp
bWl0PyBFeHRyYWN0IGl0IGlmIHNvLg0KICAgICAgICAgICAgICAgICAgICAkdGltZXBhcnRz
ID0gZG9fbGlzdCgkdF9oZXgsICcuJyk7DQogICAgICAgICAgICAgICAgICAgICRtYXggPSAo
aXNzZXQoJHRpbWVwYXJ0c1sxXSkpID8gJHRpbWVwYXJ0c1sxXSA6ICcwJzsNCiAgICAgICAg
ICAgICAgICAgICAgJG1heHRvayA9ICgkbWF4KSA/ICcuJy4kbWF4IDogJyc7DQogICAgICAg
ICAgICAgICAgICAgICR0X2hleCA9ICR0aW1lcGFydHNbMF07DQoNCiAgICAgICAgICAgICAg
ICAgICAgLy8gQW55IGV4dHJhIGluZm8/DQogICAgICAgICAgICAgICAgICAgICRleHRyYXMg
PSAoaXNzZXQoJHBhcnRzWyRleHRyYWlkeF0pKSA/IGFycmF5X3NsaWNlKCRwYXJ0cywgJGV4
dHJhaWR4KSA6IGFycmF5KCk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gUmVjcmVhdGUg
dGhlIG9yaWdpbmFsIHBhZ2UgVVJMLCBzYW5zIC90cmlnZ2VyL3Rva2VuL3RpbWUuDQogICAg
ICAgICAgICAgICAgICAgIGlmICgkdHJpZ2dlciA9PSAnZmlsZV9kb3dubG9hZCcpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICR0cmlnb2ZmKys7DQogICAgICAgICAgICAgICAgICAg
ICAgICAkdHJpZ2dlciA9ICcnOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAg
ICAgICAgICAgICAgLy8gZ2JwX3Blcm1hbmVudF9saW5rcyBzZXRzIG1lc3N5IG1vZGUgYmVo
aW5kIHRoZSBzY2VuZXMgYnV0IHN0aWxsIHVzZXMgbm9uLW1lc3N5IFVSTHMNCiAgICAgICAg
ICAgICAgICAgICAgLy8gc28gaXQgcmVxdWlyZXMgYW4gZXhjZXB0aW9uLg0KICAgICAgICAg
ICAgICAgICAgICAkZ2JwX3BsID0gKGlzX2FycmF5KCRwbHVnaW5zKSAmJiBpbl9hcnJheSgn
Z2JwX3Blcm1hbmVudF9saW5rcycsICRwbHVnaW5zKSk7DQoNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKCRwZXJtbGlua19tb2RlID09ICdtZXNzeScgJiYgISRnYnBfcGwpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHdhbnQgYSBzbGFzaCBiZXR3ZWVuIHNpdGUg
YW5kIHN0YXJ0IG9mIHF1ZXJ5IHBhcmFtcy4NCiAgICAgICAgICAgICAgICAgICAgICAgICRw
YWdlID0gcnRyaW0oam9pbignLycsIGFycmF5X3NsaWNlKCRwYXJ0cywgMCwgJHRyaWdvZmYt
MSkpLCAnLycpIC4gJHBhcnRzWyR0cmlnb2ZmLTFdOw0KICAgICAgICAgICAgICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2UgPSBydHJpbShqb2luKCcv
JywgYXJyYXlfc2xpY2UoJHBhcnRzLCAwLCAkdHJpZ29mZikpLCAnLycpOw0KICAgICAgICAg
ICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gSW4gY2FzZSB0aGUgVVJM
IGNvbnRhaW5zIG5vbi1hc2NpaSBjaGFycy4NCiAgICAgICAgICAgICAgICAgICAgJHBhZ2Ug
PSByYXd1cmxkZWNvZGUoJHBhZ2UpOw0KDQogICAgICAgICAgICAgICAgICAgIHRyYWNlX2Fk
ZCgnW3NtZF9hY2Nlc3Nfa2V5IHBhZ2UgfCB0aW1lc3RhbXAgfCBtYXggfCBleHRyYXM6ICcg
LiBqb2luKCd8JywgYXJyYXkoJHBhZ2UsICR0X2hleCwgJG1heCkrJGV4dHJhcykgLiAnXScp
Ow0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkdF9oZXgpIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFRoZSB0aW1lc3RhbXAgaXMgcHJlc2VudC4gTmV4dCwgZ2V0IHRoZSBz
ZWNyZXQga2V5Lg0KICAgICAgICAgICAgICAgICAgICAgICAgJHNlY3JldCA9IGZhbHNlOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgJHNlY3JpbmcgPSBzYWZlX3JvdygnKicsIFNNRF9B
S0VZUywgInBhZ2U9JyIuZG9TbGFzaCgkcGFnZSkuIicgQU5EIHRfaGV4ID0gJyIuZG9TbGFz
aCgkdF9oZXgpLiInIik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2Vjcmlu
Zykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNyZXQgPSAkc2VjcmluZ1sn
c2VjcmV0J107DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IHRo
ZSBzYWx0IGZyb20gdGhlIHRva2VuLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRw
bGVuID0gc3RybGVuKCRwYWdlKSAlIDMyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRzYWx0ID0gc3Vic3RyKCR0b2ssICRwbGVuLCAkc21kX2FrZXlfc2FsdF9sZW5ndGgpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2sgPSBzdWJzdHIoJHRvaywgMCwgJHBs
ZW4pLnN1YnN0cigkdG9rLCAkcGxlbiskc21kX2FrZXlfc2FsdF9sZW5ndGgpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRleHQgPSAoKCRleHRyYXMpID8gdXJsZGVjb2RlKGpv
aW4oJy8nLCAkZXh0cmFzKSkgOiAnJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBSZWdlbmVyYXRlIHRoZSBvcmlnaW5hbCB0b2tlbi4uLg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRjaGVja190b2tlbiA9IG1kNSgkc2FsdC4kc2VjcmV0LiRwYWdlLiR0
cmlnZ2VyLiR0X2hleC4kbWF4dG9rLiRleHQpOw0KDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhY2VfYWRkKCdbc21kX2FjY2Vzc19rZXkgcmVjb25zdHJ1Y3RlZCB0b2tlbjog
JyAuICRjaGVja190b2tlbiAuICddJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAuLi4gYW5kIGNvbXBhcmUgaXQgdG8gdGhlIG9uZSBpbiB0aGUgVVJMLg0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2hlY2tfdG9rZW4gPT0gJHRvaykgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2tlbiBpcyB2YWxpZC4gTm93IGNo
ZWNrIGlmIHRoZSBwYWdlIGhhcyBleHBpcmVkLg0KDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIElzIHRoZXJlIGFuIGV4cGxpY2l0IGFjY2VzcyBrZXkgZXhwaXJ5PyBF
eHRyYWN0IHRoYXQgaWYgc28uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0
aW1lcGFydHMgPSBkb19saXN0KCR0X2hleCwgJy0nKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHRfZXhwID0gKGlzc2V0KCR0aW1lcGFydHNbMV0pKSA/IGhleGRlYygk
dGltZXBhcnRzWzFdKSA6ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
dF9iZWcgPSAkdGltZXBhcnRzWzBdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICR0X2RlYyA9IGhleGRlYygkdF9iZWcpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkbm93ID0gdGltZSgpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEhhcyB0aGUgcmVzb3VyY2UgYmVjb21lIGF2YWlsYWJsZSB5ZXQ/DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm93IDwgJHRfZGVjKSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21kX2FjY2Vzc19lcnJvciA9ICdzbWRf
YWtleV9lcnJfdW5hdmFpbGFibGUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHNtZF9hY2Nlc3NfZXJyY29kZSA9IDQxMDsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEhhcyB0b2tlbidzIGV4cGlyeSBiZWVuIHJlYWNoZWQsIG9yIGlzICdub3cnIGdy
ZWF0ZXIgdGhhbiAndGhlbicgKHdoZW4gdG9rZW4gZ2VuZXJhdGVkKSArIGV4cGlyeSBwZXJp
b2Q/DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRfZXhwKSB7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRlc3RlciA9IHRy
dWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBhcmVf
dG8gPSAkdF9leHA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZXN0ZXIg
PSAoJGV4cGlyZXMgIT0gMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGNvbXBhcmVfdG8gPSAkdF9kZWMgKyAkZXhwaXJlczsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCR0ZXN0ZXIgJiYgKCRub3cgPiAkY29tcGFyZV90bykpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21kX2FjY2Vzc19lcnJvciA9
ICdzbWRfYWtleV9lcnJfZXhwaXJlZCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHNtZF9hY2Nlc3NfZXJyY29kZSA9IDQxMDsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRvd25sb2FkIGxpbWl0IGhhcyBi
ZWVuIGV4Y2VlZGVkLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICR2dV9xdHkgPSAkc2VjcmluZ1snYWNjZXNzZXMnXTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoJG1heCkgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHZ1X3F0eSA8ICRtYXgpIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXQgPSB0cnVlOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNtZF9h
Y2Nlc3NfZXJyb3IgPSAnc21kX2FrZXlfZXJyX2xpbWl0JzsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbWRfYWNjZXNzX2VycmNvZGUgPSA0
MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0ID0gdHJ1ZTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIGFjY2VzcyBj
b3VudGVyLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2dV9x
dHkrKzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdy
YWIgdGhlIElQIGFuZCBhZGQgaXQgdG8gdGhlIGxpc3Qgb2YgSVBzIHNvIGZhci4NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRvaXApIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlwcyA9IGRvX2xpc3Qo
JHNlY3JpbmdbJ2lwJ10sICcgJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRpcCA9IHJlbW90ZV9hZGRyKCk7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJGlwLCAkaXBzKSkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlwc1td
ID0gJGlwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpcHVwID0g
IiwgaXA9JyIuZG9TbGFzaCh0cmltKGpvaW4oJyAnLCAkaXBzKSkpLiInIjsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXB1cCA9ICcnOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNhZmVfdXBkYXRlKFNNRF9BS0VZUywgImFjY2Vzc2Vz
PSciLmRvU2xhc2goJHZ1X3F0eSkuIiciIC4gJGlwdXAsICJwYWdlPSciLmRvU2xhc2goJHBh
Z2UpLiInIEFORCB0X2hleCA9ICciLmRvU2xhc2goJHRfaGV4KS4iJyIpOw0KDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCB1cCB0aGUgZ2xvYmFs
IGFycmF5IHNvIDx0eHA6c21kX2FjY2Vzc19pbmZvPiBhbmQgPHR4cDppZl9zbWRfYWNjZXNz
X2luZm8+IHdvcmsuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHNtZF9ha2V5X3Byb3RlY3RlZF9pbmZvID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwYWdlJyAgICAgPT4gJHNlY3JpbmdbJ3BhZ2Un
XSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hleHRp
bWUnICA9PiAkc2VjcmluZ1sndF9oZXgnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2lzc3VlZCcgICA9PiAkc2VjcmluZ1sndGltZSddLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm93JyAgICAgID0+
ICRub3csDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdl
eHBpcmVzJyAgPT4gJGNvbXBhcmVfdG8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0cmlnZ2VyJyAgPT4gJHNlY3JpbmdbJ3RyaWdnYWgnXSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heGltdW0nICA9
PiAkc2VjcmluZ1snbWF4aW11bSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYWNjZXNzZXMnID0+ICR2dV9xdHksDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJGRvaXApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJHNtZF9ha2V5X3Byb3RlY3RlZF9pbmZvWydpcCddID0gJGlw
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV4dHJhcykgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21kX2FrZXlfcHJvdGVj
dGVkX2luZm9bJ2V4dHJhJ10gPSB1cmxkZWNvZGUoam9pbignLycsICRleHRyYXMpKTsNCg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgk
ZXh0cmFzIGFzICRpZHggPT4gJGV4dHJhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkc21kX2FrZXlfcHJvdGVjdGVkX2luZm9bJ2V4dHJh
XycuaW50dmFsKCRpZHgrMSldID0gdXJsZGVjb2RlKCRleHRyYSk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRzbWRfYWNjZXNzX2Vycm9yID0gJ3NtZF9ha2V5X2Vycl9pbnZhbGlkX3Rva2Vu
JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNtZF9hY2Nlc3NfZXJyY29k
ZSA9IDQwMzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNt
ZF9hY2Nlc3NfZXJyb3IgPSAnc21kX2FrZXlfZXJyX3VuYXV0aG9yaXplZCc7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHNtZF9hY2Nlc3NfZXJyY29kZSA9IDQwMTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0K
ICAgICAgICAgICAgICAgICAgICAgICAgJHNtZF9hY2Nlc3NfZXJyb3IgPSAnc21kX2FrZXlf
ZXJyX21pc3NpbmdfdGltZXN0YW1wJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzbWRf
YWNjZXNzX2VycmNvZGUgPSA0MDM7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAg
ICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICRzbWRfYWNjZXNzX2Vy
cm9yID0gJ3NtZF9ha2V5X2Vycl9iYWRfdG9rZW4nOw0KICAgICAgICAgICAgICAgICAgICAk
c21kX2FjY2Vzc19lcnJjb2RlID0gNDAzOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gSWYgd2UgYWx3YXlzIHdhbnQgdG8g
Zm9yYmlkIGFjY2VzcyB0byB0aGlzIHBhZ2UgcmVnYXJkbGVzcyBpZiB0aGUgdHJpZ2dlciBl
eGlzdHMuDQogICAgICAgICAgICAgICAgaWYgKCRmb3JjZSkgew0KICAgICAgICAgICAgICAg
ICAgICAkc21kX2FjY2Vzc19lcnJvciA9ICdzbWRfYWtleV9lcnJfZm9yYmlkZGVuJzsNCiAg
ICAgICAgICAgICAgICAgICAgJHNtZF9hY2Nlc3NfZXJyY29kZSA9IDQwMTsNCiAgICAgICAg
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gdHJ1ZTsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICgkc21k
X2FjY2Vzc19lcnJvciB8fCAkc21kX2FjY2Vzc19lcnJjb2RlKSB7DQogICAgICAgICAgICAg
ICAgdHJhY2VfYWRkKCdbc21kX2FjY2Vzc19rZXkgZXJyb3Igc3RhdGU6ICcgLiAkc21kX2Fj
Y2Vzc19lcnJjb2RlIC4gJ3wnIC4gJHNtZF9hY2Nlc3NfZXJyb3IgLiAnXScpOw0KDQogICAg
ICAgICAgICAgICAgaWYgKCR0aGluZyA9PT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAg
ICB0eHBfZGllKGdUeHQoJHNtZF9hY2Nlc3NfZXJyb3IpLCAkc21kX2FjY2Vzc19lcnJjb2Rl
KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAg
ICAgICAgIC8vIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQgaXQncyBiZWNhdXNlIHdlJ3JlIHVz
aW5nIGEgY29udGFpbmVyLg0KICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZSgkdGhpbmcs
IGVtcHR5KCRyZXQpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgIHRyaWdnZXJfZXJyb3IoZ1R4dCgnc21kX2FrZXlfdGJsX25vdF9pbnN0YWxsZWQn
KSwgRV9VU0VSX05PVElDRSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAg
KiBEaXNwbGF5IGFjY2VzcyBlcnJvciBpbmZvcm1hdGlvbi4NCiAgICAgKg0KICAgICAqIEBw
YXJhbSAgYXJyYXkgJGF0dHMgIChyZXEpIFRhZyBhdHRyaWJ1dGUgbGlzdA0KICAgICAqIEBw
YXJhbSAgYXJyYXkgJHRoaW5nIChvcHQpIFRhZyBjb250YWluZXIgY29udGVudA0KICAgICAq
IEByZXR1cm4gSFRNTA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNtZF9hY2Nlc3NfZXJyb3Io
JGF0dHMsICR0aGluZyA9IG51bGwpDQogICAgew0KICAgICAgICBnbG9iYWwgJHNtZF9hY2Nl
c3NfZXJyb3IsICRzbWRfYWNjZXNzX2VycmNvZGU7DQoNCiAgICAgICAgZXh0cmFjdChsQXR0
cyhhcnJheSgNCiAgICAgICAgICAgICdpdGVtJyAgICA9PiAnbWVzc2FnZScsDQogICAgICAg
ICAgICAnbWVzc2FnZScgPT4gJycsDQogICAgICAgICAgICAnd3JhcHRhZycgICAgPT4gJycs
DQogICAgICAgICAgICAnY2xhc3MnICAgICAgPT4gJycsDQogICAgICAgICAgICAnaHRtbF9p
ZCcgICAgPT4gJycsDQogICAgICAgICAgICAnYnJlYWsnICAgICAgPT4gJycsDQogICAgICAg
ICAgICAnYnJlYWtjbGFzcycgPT4gJycsDQogICAgICAgICksICRhdHRzKSk7DQoNCiAgICAg
ICAgJG91dCA9IGFycmF5KCk7DQogICAgICAgICRpdGVtcyA9IGRvX2xpc3QoJGl0ZW0pOw0K
DQogICAgICAgIGlmICgkc21kX2FjY2Vzc19lcnJjb2RlICYmIGluX2FycmF5KCdjb2RlJywg
JGl0ZW1zKSkgew0KICAgICAgICAgICAgJG91dFtdID0gJHNtZF9hY2Nlc3NfZXJyY29kZTsN
CiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkc21kX2FjY2Vzc19lcnJvciAmJiBpbl9hcnJh
eSgnbWVzc2FnZScsICRpdGVtcykpIHsNCiAgICAgICAgICAgICRvdXRbXSA9ICgkbWVzc2Fn
ZSkgPyAkbWVzc2FnZSA6IGdUeHQoJHNtZF9hY2Nlc3NfZXJyb3IpOw0KICAgICAgICB9DQoN
CiAgICAgICAgaWYgKCRvdXQpIHsNCiAgICAgICAgICAgIHJldHVybiBkb1dyYXAoJG91dCwg
JHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAkYnJlYWtjbGFzcywgJycsICcnLCAkaHRtbF9p
ZCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJyc7DQogICAgfQ0KDQogICAgLyoq
DQogICAgICogQ29uZGl0aW9uYWwgdGFnIGZvciBjaGVja2luZyBlcnJvciBzdGF0dXMgZnJv
bSBzbWRfYWNjZXNzX3Byb3RlY3QuDQogICAgICoNCiAgICAgKiBAcGFyYW0gIGFycmF5ICRh
dHRzICAocmVxKSBUYWcgYXR0cmlidXRlIGxpc3QNCiAgICAgKiBAcGFyYW0gIGFycmF5ICR0
aGluZyAob3B0KSBUYWcgY29udGFpbmVyIGNvbnRlbnQNCiAgICAgKiBAcmV0dXJuIEhUTUwN
CiAgICAgKi8NCiAgICBmdW5jdGlvbiBzbWRfaWZfYWNjZXNzX2Vycm9yKCRhdHRzLCAkdGhp
bmcgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgZ2xvYmFsICRzbWRfYWNjZXNzX2Vycm9yLCAk
c21kX2FjY2Vzc19lcnJjb2RlOw0KDQogICAgICAgIGV4dHJhY3QobEF0dHMoYXJyYXkoDQog
ICAgICAgICAgICAndHlwZScgICA9PiAnJywNCiAgICAgICAgICAgICdjb2RlJyAgID0+ICcn
LA0KICAgICAgICApLCAkYXR0cykpOw0KDQogICAgICAgICRlcnIgPSBhcnJheSgpOw0KICAg
ICAgICAkY29kZXMgPSBkb19saXN0KCRjb2RlKTsNCiAgICAgICAgJHR5cGVzID0gZG9fbGlz
dCgkdHlwZSk7DQoNCiAgICAgICAgaWYgKCRzbWRfYWNjZXNzX2Vycm9yKSB7DQogICAgICAg
ICAgICBpZiAoJGNvZGUgJiYgJHR5cGUpIHsNCiAgICAgICAgICAgICAgICAkZXJyWydjb2Rl
J10gPSAoaW5fYXJyYXkoJHNtZF9hY2Nlc3NfZXJyY29kZSwgJGNvZGVzKSkgPyB0cnVlIDog
ZmFsc2U7DQogICAgICAgICAgICAgICAgJGVyclsnbXNnJ10gPSAoaW5fYXJyYXkoJHNtZF9h
Y2Nlc3NfZXJyb3IsICR0eXBlcykpID8gdHJ1ZSA6IGZhbHNlOw0KICAgICAgICAgICAgfSBl
bHNlaWYgKCRjb2RlKSB7DQogICAgICAgICAgICAgICAgJGVyclsnY29kZSddID0gKGluX2Fy
cmF5KCRzbWRfYWNjZXNzX2VycmNvZGUsICRjb2RlcykpID8gdHJ1ZSA6IGZhbHNlOw0KICAg
ICAgICAgICAgfSBlbHNlaWYgKCR0eXBlKSB7DQogICAgICAgICAgICAgICAgJGVyclsnbXNn
J10gPSAoaW5fYXJyYXkoJHNtZF9hY2Nlc3NfZXJyb3IsICR0eXBlcykpID8gdHJ1ZSA6IGZh
bHNlOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkZXJyWydtc2cn
XSA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAkb3V0ID0g
aW5fYXJyYXkoZmFsc2UsICRlcnIpID8gZmFsc2UgOiB0cnVlOyAvLyBBTkQgbG9naWMNCg0K
ICAgICAgICByZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkb3V0KSk7DQogICAgfQ0K
fQ0KDQovLyBSZWdpc3RlciB0aGVzZSBhbGwgdGhlIHRpbWUsIHNpbmNlIHRoZXkncmUgdXNl
ZCBvbiB0aGUgYWRtaW4gc2lkZSB0b28uDQppZiAoY2xhc3NfZXhpc3RzKCdcVGV4dHBhdHRl
cm5cVGFnXFJlZ2lzdHJ5JykpIHsNCiAgICBUeHA6OmdldCgnXFRleHRwYXR0ZXJuXFRhZ1xS
ZWdpc3RyeScpDQogICAgICAgIC0+cmVnaXN0ZXIoJ3NtZF9hY2Nlc3NfaW5mbycpDQogICAg
ICAgIC0+cmVnaXN0ZXIoJ3NtZF9hY2Nlc3Nfa2V5Jyk7DQp9DQoNCmlmICghZGVmaW5lZCgn
U01EX0FLRVlTJykpIHsNCiAgICBkZWZpbmUoIlNNRF9BS0VZUyIsICdzbWRfYWtleXMnKTsN
Cn0NCg0KcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9hY2Nlc3NfcHJvdGVjdF9kb3dubG9hZCcs
ICdmaWxlX2Rvd25sb2FkJyk7DQoNCi8qKg0KICogQURNSU4gU0lERSBJTlRFUkZBQ0UNCiAq
ID09PT09PT09PT09PT09PT09PT09DQogKg0KICogSnVtcCBvZmYgcG9pbnQgZm9yIGV2ZW50
L3N0ZXBzLg0KICoNCiAqIEBwYXJhbSBzdHJpbmcgJGV2dCAocmVxKSBUZXh0cGF0dGVybiBl
dmVudA0KICogQHBhcmFtIHN0cmluZyAkc3RwIChyZXEpIFRleHRwYXR0ZXJuIHN0ZXANCiAq
Lw0KZnVuY3Rpb24gc21kX2FrZXlfZGlzcGF0Y2hlcigkZXZ0LCAkc3RwKQ0Kew0KICAgIGlm
ICghJHN0cCBvciAhaW5fYXJyYXkoJHN0cCwgYXJyYXkoDQogICAgICAgICAgICAnc21kX2Fr
ZXlfdGFibGVfaW5zdGFsbCcsDQogICAgICAgICAgICAnc21kX2FrZXlfdGFibGVfcmVtb3Zl
JywNCiAgICAgICAgICAgICdzbWRfYWtleV9jcmVhdGUnLA0KICAgICAgICAgICAgJ3NtZF9h
a2V5X211bHRpX2VkaXQnLA0KICAgICAgICAgICAgJ3NtZF9ha2V5X2NoYW5nZV9wYWdlYnkn
LA0KICAgICAgICApKSkgew0KICAgICAgICBzbWRfYWtleSgnJyk7DQogICAgfSBlbHNlICRz
dHAoKTsNCn0NCg0KLyoqDQogKiBCb290c3RyYXAgd2hlbiBwbHVnaW4gaW5zdGFsbGVkL2Rl
bGV0ZWQuDQogKg0KICogQHBhcmFtICBzdHJpbmcgJGV2dCAocmVxKSBUZXh0cGF0dGVybiBl
dmVudA0KICogQHBhcmFtICBzdHJpbmcgJHN0cCAocmVxKSBUZXh0cGF0dGVybiBzdGVwDQog
KiBAcmV0dXJuIHN0cmluZyBOb3RpZmljYXRpb24gbWVzc2FnZQ0KICovDQpmdW5jdGlvbiBz
bWRfYWtleV93ZWxjb21lKCRldnQsICRzdHApDQp7DQogICAgJG1zZyA9ICcnOw0KDQogICAg
c3dpdGNoICgkc3RwKSB7DQogICAgICAgIGNhc2UgJ2luc3RhbGxlZCc6DQogICAgICAgICAg
ICBzbWRfYWtleV90YWJsZV9pbnN0YWxsKDApOw0KICAgICAgICAgICAgJG1zZyA9ICdSZXN0
cmljdCB5b3VyIFRleHRwYXR0ZXJuIHdvcmxkIDotKSc7DQogICAgICAgICAgICBicmVhazsN
CiAgICAgICAgY2FzZSAnZGVsZXRlZCc6DQogICAgICAgICAgICBzbWRfYWtleV90YWJsZV9y
ZW1vdmUoMCk7DQogICAgICAgICAgICBicmVhazsNCiAgICB9DQoNCiAgICByZXR1cm4gJG1z
ZzsNCn0NCg0KLyoqDQogKiBNYWluIGFkbWluIGludGVyZmFjZQ0KICoNCiAqIEBwYXJhbSAg
c3RyaW5nICRtc2cgKG9wdCkgRmxhc2ggc3RhdHVzIG1lc3NhZ2UgdG8gZGlzcGxheQ0KICog
QHJldHVybiBIVE1MIFBhZ2UgY29udGVudA0KICovDQpmdW5jdGlvbiBzbWRfYWtleSgkbXNn
ID0gJycpDQp7DQogICAgZ2xvYmFsICRzbWRfYWtleV9ldmVudCwgJGxvZ2dpbmcsICRldmVu
dDsNCg0KICAgICRzbWRfYWtleV9wcmVmcyA9IHNtZF9ha2V5X2dldF9wcmVmcygpOw0KDQog
ICAgcGFnZXRvcChnVHh0KCdzbWRfYWtleV90YWJfbmFtZScpLCAkbXNnKTsNCg0KICAgIGlm
IChzbWRfYWtleV90YWJsZV9leGlzdCgxKSkgew0KICAgICAgICBleHRyYWN0KGdwc2EoYXJy
YXkoJ3BhZ2UnLCAnc29ydCcsICdkaXInLCAnY3JpdCcsICdzZWFyY2hfbWV0aG9kJykpKTsN
Cg0KICAgICAgICBpZiAoJHNvcnQgPT09ICcnKSB7DQogICAgICAgICAgICAkc29ydCA9IGdl
dF9wcmVmKCdzbWRfYWtleV9zb3J0X2NvbHVtbicsICd0aW1lJyk7DQogICAgICAgIH0gZWxz
ZSB7DQogICAgICAgICAgICBpZiAoIWluX2FycmF5KCRzb3J0LCBhcnJheSgncGFnZScsICd0
cmlnZ2FoJywgJ3RpbWUnLCAnZXhwaXJlcycsICdtYXhpbXVtJywgJ2FjY2Vzc2VzJywgJ2lw
JykpKSB7DQogICAgICAgICAgICAgICAgJHNvcnQgPSAndGltZSc7DQogICAgICAgICAgICB9
DQoNCiAgICAgICAgICAgIHNldF9wcmVmKCdzbWRfYWtleV9zb3J0X2NvbHVtbicsICRzb3J0
LCAnc21kX2FrZXknLCBQUkVGX0hJRERFTiwgJycsIDAsIFBSRUZfUFJJVkFURSk7DQogICAg
ICAgIH0NCg0KICAgICAgICBpZiAoJGRpciA9PT0gJycpIHsNCiAgICAgICAgICAgICRkaXIg
PSBnZXRfcHJlZignc21kX2FrZXlfc29ydF9kaXInLCAnZGVzYycpOw0KICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgJGRpciA9ICgkZGlyID09ICdhc2MnKSA/ICJhc2MiIDogImRl
c2MiOw0KICAgICAgICAgICAgc2V0X3ByZWYoJ3NtZF9ha2V5X3NvcnRfZGlyJywgJGRpciwg
J3NtZF9ha2V5JywgUFJFRl9ISURERU4sICcnLCAwLCBQUkVGX1BSSVZBVEUpOw0KICAgICAg
ICB9DQoNCiAgICAgICAgc3dpdGNoICgkc29ydCkgew0KICAgICAgICAgICAgY2FzZSAncGFn
ZSc6DQogICAgICAgICAgICAgICAgJHNvcnRfc3FsID0gJ3BhZ2UgJy4kZGlyLicsIHRpbWUg
ZGVzYyc7DQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAndHJpZ2dh
aCc6DQogICAgICAgICAgICAgICAgJHNvcnRfc3FsID0gJ3RyaWdnYWggJy4kZGlyLicsIHRp
bWUgZGVzYyc7DQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAnbWF4
aW11bSc6DQogICAgICAgICAgICAgICAgJHNvcnRfc3FsID0gJ21heGltdW0gJy4kZGlyLics
IHRpbWUgZGVzYyc7DQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAn
YWNjZXNzZXMnOg0KICAgICAgICAgICAgICAgICRzb3J0X3NxbCA9ICdhY2Nlc3NlcyAnLiRk
aXIuJywgdGltZSBkZXNjJzsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICBj
YXNlICdpcCc6DQogICAgICAgICAgICAgICAgJHNvcnRfc3FsID0gJ2lwICcuJGRpci4nLCB0
aW1lIGRlc2MnOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIGRlZmF1bHQ6
DQogICAgICAgICAgICAgICAgJHNvcnQgPSAndGltZSc7DQogICAgICAgICAgICAgICAgJHNv
cnRfc3FsID0gJ3RpbWUgJy4kZGlyOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0N
Cg0KICAgICAgICAkc3dpdGNoX2RpciA9ICgkZGlyID09ICdkZXNjJykgPyAnYXNjJyA6ICdk
ZXNjJzsNCiAgICAgICAgJHNob3dpcCA9IGdldF9wcmVmKCdzbWRfYWtleV9sb2dfaXAnLCAk
c21kX2FrZXlfcHJlZnNbJ3NtZF9ha2V5X2xvZ19pcCddWydkZWZhdWx0J10sIDEpOw0KDQog
ICAgICAgICRzZWFyY2hDb2xzID0gYXJyYXkoDQogICAgICAgICAgICAncGFnZScgPT4gYXJy
YXkoDQogICAgICAgICAgICAgICAgJ2NvbHVtbicgPT4gU01EX0FLRVlTLicucGFnZScsDQog
ICAgICAgICAgICAgICAgJ2xhYmVsJyAgPT4gZ1R4dCgncGFnZScpLA0KICAgICAgICAgICAg
KSwNCiAgICAgICAgICAgICd0cmlnZ2FoJyA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAn
Y29sdW1uJyA9PiBTTURfQUtFWVMuJy50cmlnZ2FoJywNCiAgICAgICAgICAgICAgICAnbGFi
ZWwnICA9PiBnVHh0KCdzbWRfYWtleV90cmlnZ2VyJyksDQogICAgICAgICAgICApLA0KICAg
ICAgICAgICAgJ3RpbWUnID0+IGFycmF5KA0KICAgICAgICAgICAgICAgICdjb2x1bW4nID0+
IFNNRF9BS0VZUy4nLnRpbWUnLA0KICAgICAgICAgICAgICAgICdsYWJlbCcgID0+IGdUeHQo
J3NtZF9ha2V5X3RpbWUnKSwNCiAgICAgICAgICAgICAgICAnb3B0aW9ucycgPT4gYXJyYXko
J2Nhc2Vfc2Vuc2l0aXZlJyA9PiB0cnVlKSwNCiAgICAgICAgICAgICksDQogICAgICAgICAg
ICAnbWF4aW11bScgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgJ2NvbHVtbicgPT4gU01E
X0FLRVlTLicubWF4aW11bScsDQogICAgICAgICAgICAgICAgJ2xhYmVsJyAgPT4gZ1R4dCgn
c21kX2FrZXlfbWF4JyksDQogICAgICAgICAgICAgICAgJ3R5cGUnICAgPT4gJ2ludGVnZXIn
LA0KICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICdhY2Nlc3NlcycgPT4gYXJyYXkoDQog
ICAgICAgICAgICAgICAgJ2NvbHVtbicgPT4gU01EX0FLRVlTLicuYWNjZXNzZXMnLA0KICAg
ICAgICAgICAgICAgICdsYWJlbCcgID0+IGdUeHQoJ3NtZF9ha2V5X2FjY2Vzc2VzJyksDQog
ICAgICAgICAgICAgICAgJ3R5cGUnICAgPT4gJ2ludGVnZXInLA0KICAgICAgICAgICAgKSwN
CiAgICAgICAgKTsNCg0KICAgICAgICBpZiAoJHNob3dpcCkgew0KICAgICAgICAgICAgJHNl
YXJjaENvbHNbJ2lwJ10gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAnY29sdW1uJyA9PiBT
TURfQUtFWVMuJy5pcCcsDQogICAgICAgICAgICAgICAgJ2xhYmVsJyAgPT4gJ0lQJywNCiAg
ICAgICAgICAgICk7DQogICAgICAgIH0NCg0KICAgICAgICAkc2VhcmNoID0gbmV3IEZpbHRl
cigkZXZlbnQsICRzZWFyY2hDb2xzKTsNCg0KICAgICAgICBsaXN0KCRjcml0ZXJpYSwgJGNy
aXQsICRzZWFyY2hfbWV0aG9kKSA9ICRzZWFyY2gtPmdldEZpbHRlcigpOw0KDQogICAgICAg
ICRzZWFyY2hfcmVuZGVyX29wdGlvbnMgPSBhcnJheSgncGxhY2Vob2xkZXInID0+ICdzZWFy
Y2hfYWNjZXNzX2tleXMnKTsNCiAgICAgICAgJHRvdGFsID0gc2FmZV9jb3VudChTTURfQUtF
WVMsICRjcml0ZXJpYSk7DQoNCiAgICAgICAgJHNlYXJjaEJsb2NrID0NCiAgICAgICAgICAg
IG4udGFnKA0KICAgICAgICAgICAgICAgICRzZWFyY2gtPnJlbmRlckZvcm0oJ3NtZF9ha2V5
JywgJHNlYXJjaF9yZW5kZXJfb3B0aW9ucyksDQogICAgICAgICAgICAgICAgJ2RpdicsIGFy
cmF5KA0KICAgICAgICAgICAgICAgICAgICAnY2xhc3MnID0+ICd0eHAtbGF5b3V0LTRjb2wt
M3NwYW4nLA0KICAgICAgICAgICAgICAgICAgICAnaWQnICAgID0+ICRldmVudC4nX2NvbnRy
b2wnLA0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICk7DQoNCiAgICAgICAgLy8g
U2V0IHVwIHRoZSBidXR0b25zLg0KICAgICAgICAkbmV3YnRuID0gJzxhIGNsYXNzPSJuYXZs
aW5rIHNtZF9ha2V5X2J0bl9uZXciIGhyZWY9IiMiPicuZ1R4dCgnc21kX2FrZXlfYnRuX25l
dycpLic8L2E+JzsNCiAgICAgICAgJHByZWZidG4gPSAnPGEgY2xhc3M9Im5hdmxpbmsiIGhy
ZWY9IicucHJlZnNfbGluaygpLiciPicuZ1R4dCgnc21kX2FrZXlfYnRuX3ByZWYnKS4nPC9h
Pic7DQoNCiAgICAgICAgJGNyZWF0ZUJsb2NrID0NCiAgICAgICAgICAgIG4udGFnKA0KICAg
ICAgICAgICAgICAgICRuZXdidG4uJHByZWZidG4sDQogICAgICAgICAgICAgICAgJ2Rpdics
IGFycmF5KCdjbGFzcycgPT4gJ3R4cC1jb250cm9sLXBhbmVsJykNCiAgICAgICAgICAgICk7
DQoNCiAgICAgICAgJGNvbnRlbnRCbG9jayA9ICcnOw0KDQogICAgICAgICRwYWdpbmF0b3Ig
PSBuZXcgXFRleHRwYXR0ZXJuXEFkbWluXFBhZ2luYXRvcigkZXZlbnQsICdzbWRfYWtleScp
Ow0KICAgICAgICAkbGltaXQgPSAkcGFnaW5hdG9yLT5nZXRMaW1pdCgpOw0KICAgICAgICBs
aXN0KCRwYWdlLCAkb2Zmc2V0LCAkbnVtUGFnZXMpID0gcGFnZXIoJHRvdGFsLCAkbGltaXQs
ICRwYWdlKTsNCg0KICAgICAgICBpZiAoJHRvdGFsIDwgMSAmJiAkY3JpdGVyaWEgIT0gMSkg
ew0KICAgICAgICAgICAgJGNvbnRlbnRCbG9jayAuPSBncmFmKA0KICAgICAgICAgICAgICAg
ICAgICBzcGFuKG51bGwsIGFycmF5KCdjbGFzcycgPT4gJ3VpLWljb24gdWktaWNvbi1pbmZv
JykpLicgJy4NCiAgICAgICAgICAgICAgICAgICAgZ1R4dCgnbm9fcmVzdWx0c19mb3VuZCcp
LA0KICAgICAgICAgICAgICAgICAgICBhcnJheSgnY2xhc3MnID0+ICdhbGVydC1ibG9jayBp
bmZvcm1hdGlvbicpDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgIC8vIFJldHJpZXZlIHRoZSBzZWNyZXQga2V5cmluZyB0YWJsZSBlbnRyaWVz
Lg0KICAgICAgICAgICAgJHNlY3JpbmcgPSBzYWZlX3Jvd3MoJyonLCBTTURfQUtFWVMsICIk
Y3JpdGVyaWEgb3JkZXIgYnkgJHNvcnRfc3FsIGxpbWl0ICRvZmZzZXQsICRsaW1pdCIpOw0K
DQogICAgICAgICAgICAkY29udGVudEJsb2NrIC49IHNjcmlwdF9qcyg8PDxFT0MNCmpRdWVy
eShmdW5jdGlvbigpIHsNCiAgICBqUXVlcnkoJyNzbWRfYWtleV9jb250YWluZXInKS5vbign
Y2xpY2snLCAnLnNtZF9ha2V5X2J0bl9uZXcnLCBmdW5jdGlvbihldikgew0KICAgICAgICBl
di5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICB2YXIgYm94ID0galF1ZXJ5KCIjc21kX2Fr
ZXlfY3JlYXRlIik7DQoNCiAgICAgICAgaWYgKGJveC5jc3MoJ2Rpc3BsYXknKSA9PSAnbm9u
ZScpIHsNCiAgICAgICAgICAgIGJveC5jc3MoJ2Rpc3BsYXknLCd0YWJsZS1yb3cnKTsNCiAg
ICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGJveC5oaWRlKCk7DQogICAgICAgIH0NCg0K
ICAgICAgICBqUXVlcnkoImlucHV0LnNtZF9mb2N1cyIpLmZvY3VzKCk7DQogICAgfSk7DQoN
CiAgICBqUXVlcnkoIiNzbWRfYWtleV9hZGQiKS5jbGljayhmdW5jdGlvbihldikgew0KICAg
ICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICBzdGVwID0gJyc7DQogICAgICAg
IGpRdWVyeSgiW25hbWU9c3RlcF0iKS52YWwoJ3NtZF9ha2V5X2NyZWF0ZScpOw0KICAgICAg
ICBqUXVlcnkoIiNzbWRfYWtleV9mb3JtIikuc3VibWl0KCk7DQogICAgfSk7DQp9KTsNCkVP
Qw0KICAgICAgICAgICAgKTsNCg0KICAgICAgICAgICAgLy8gQWNjZXNzIGtleSBsaXN0Lg0K
ICAgICAgICAgICAgJGhlYWRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAncGFnZScg
ICAgID0+ICdwYWdlJywNCiAgICAgICAgICAgICAgICAndHJpZ2dhaCcgID0+ICdzbWRfYWtl
eV90cmlnZ2VyJywNCiAgICAgICAgICAgICAgICAndGltZScgICAgID0+ICdzbWRfYWtleV90
aW1lJywNCiAgICAgICAgICAgICAgICAnZXhwaXJlcycgID0+ICdleHBpcmVzJywNCiAgICAg
ICAgICAgICAgICAnbWF4aW11bScgID0+ICdzbWRfYWtleV9tYXgnLA0KICAgICAgICAgICAg
ICAgICdhY2Nlc3NlcycgPT4gJ3NtZF9ha2V5X2FjY2Vzc2VzJywNCiAgICAgICAgICAgICk7
DQoNCiAgICAgICAgICAgIGlmICgkc2hvd2lwKSB7DQogICAgICAgICAgICAgICAgJGhlYWRl
cnNbJ2lwJ10gPSAnSVAnOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkZGF0ZXMg
PSBhcnJheSgndGltZScsICdleHBpcmVzJyk7DQoNCiAgICAgICAgICAgICRoZWFkX3JvdyA9
IGhDZWxsKA0KICAgICAgICAgICAgICAgIGZJbnB1dCgnY2hlY2tib3gnLCAnc2VsZWN0X2Fs
bCcsIDAsICcnLCAnJywgJycsICcnLCAnJywgJ3NlbGVjdF9hbGwnKSwNCiAgICAgICAgICAg
ICAgICAgICAgJycsICdjbGFzcz0idHhwLWxpc3QtY29sLW11bHRpLWVkaXQiIHNjb3BlPSJj
b2wiIHRpdGxlPSInLmdUeHQoJ3RvZ2dsZV9hbGxfc2VsZWN0ZWQnKS4nIicNCiAgICAgICAg
ICAgICk7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRoZWFkZXIgPT4g
JGNvbHVtbl9oZWFkKSB7DQogICAgICAgICAgICAgICAgaWYgKCRoZWFkZXIgPT0gJ2V4cGly
ZXMnKSB7DQogICAgICAgICAgICAgICAgICAgICRoZWFkX3JvdyAuPSBoY2VsbChnVHh0KCRj
b2x1bW5faGVhZCksICRoZWFkZXIsICcgY2xhc3M9ImRhdGUgdGltZSIgZGF0YS1jb2w9ImV4
cGlyZXMiJyk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAg
ICAgJGhlYWRfcm93IC49IGNvbHVtbl9oZWFkKGFycmF5KA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdvcHRpb25zJyA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NsYXNzJyA9PiB0cmltKCd0eHAtbGlzdC1jb2wtJy4kaGVhZGVyLigkaGVh
ZGVyID09ICRzb3J0ID8gIiAkZGlyIiA6ICcnKS4oaW5fYXJyYXkoJGhlYWRlciwgJGRhdGVz
KSA/ICcgZGF0ZScgOiAnJykpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFs
dWUnICAgPT4gJGNvbHVtbl9oZWFkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz
b3J0JyAgICA9PiAkaGVhZGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVu
dCcgICA9PiAnc21kX2FrZXknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGVw
JyAgICA9PiAnc21kX2FrZXknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19s
aW5rJyA9PiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXInICAgICA9
PiAkc3dpdGNoX2RpciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JpdCcgICAg
PT4gJGNyaXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZCcgID0+ICRz
ZWFyY2hfbWV0aG9kLA0KICAgICAgICAgICAgICAgICAgICAgICAgKSk7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkY29udGVudEJsb2NrIC49
IG4udGFnX3N0YXJ0KCdmb3JtJywgYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICdjbGFz
cycgID0+ICdtdWx0aV9lZGl0X2Zvcm0nLA0KICAgICAgICAgICAgICAgICAgICAnaWQnICAg
ICA9PiAnc21kX2FrZXlfZm9ybScsDQogICAgICAgICAgICAgICAgICAgICduYW1lJyAgID0+
ICdsb25nZm9ybScsDQogICAgICAgICAgICAgICAgICAgICdtZXRob2QnID0+ICdwb3N0JywN
CiAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgPT4gJ2luZGV4LnBocCcsDQogICAgICAg
ICAgICAgICAgKSkuDQogICAgICAgICAgICAgICAgbi50YWdfc3RhcnQoJ2RpdicsIGFycmF5
KCdjbGFzcycgPT4gJ3R4cC1saXN0dGFibGVzJykpLg0KICAgICAgICAgICAgICAgIG4udGFn
X3N0YXJ0KCd0YWJsZScsIGFycmF5KCdjbGFzcycgPT4gJ3R4cC1saXN0JykpLg0KICAgICAg
ICAgICAgICAgIG4udGFnX3N0YXJ0KCd0aGVhZCcpLg0KICAgICAgICAgICAgICAgIHRyKCRo
ZWFkX3JvdykuDQogICAgICAgICAgICAgICAgbi50YWdfZW5kKCd0aGVhZCcpOw0KDQogICAg
ICAgICAgICAkY29udGVudEJsb2NrIC49IG4udGFnX3N0YXJ0KCd0Ym9keScpOw0KDQogICAg
ICAgICAgICAvLyBOZXcgYWNjZXNzIGtleSByb3cuDQogICAgICAgICAgICAkY29udGVudEJs
b2NrIC49ICc8dHIgaWQ9InNtZF9ha2V5X2NyZWF0ZSIgY2xhc3M9InVpLWhlbHBlci1oaWRk
ZW4iPic7DQogICAgICAgICAgICAkY29udGVudEJsb2NrIC49IHRkKGZJbnB1dCgnc3VibWl0
JywgJ3NtZF9ha2V5X2FkZCcsIGdUeHQoJ2FkZCcpLCAnc21hbGxlcmJveCcsICcnLCAnJywg
JycsICcnLCAnc21kX2FrZXlfYWRkJykpDQogICAgICAgICAgICAgICAgLnRkKGZJbnB1dCgn
dGV4dCcsICdzbWRfYWtleV9uZXdwYWdlJywgJycsICdzbWRfZm9jdXMnLCAnJywgJycsICc1
MCcpKQ0KICAgICAgICAgICAgICAgIC50ZChmSW5wdXQoJ3RleHQnLCAnc21kX2FrZXlfdHJp
Z2dhaCcsICcnKSkNCiAgICAgICAgICAgICAgICAudGQoZklucHV0KCd0ZXh0JywgJ3NtZF9h
a2V5X3RpbWUnLCBzYWZlX3N0cmZ0aW1lKCclWS0lbS0lZCAlSDolTTolUycpLCAnJywgJycs
ICcnLCAnMjUnKSkNCiAgICAgICAgICAgICAgICAudGQoZklucHV0KCd0ZXh0JywgJ3NtZF9h
a2V5X2V4cGlyZXMnLCAnJywgJycsICcnLCAnJywgJzI1JykpDQogICAgICAgICAgICAgICAg
LnRkKGZJbnB1dCgndGV4dCcsICdzbWRfYWtleV9tYXhpbXVtJywgJycsICcnLCAnJywgJycs
ICc1JykpDQogICAgICAgICAgICAgICAgLnRkKCcmbmJzcDsnKQ0KICAgICAgICAgICAgICAg
IC4gKCgkc2hvd2lwKSA/IHRkKCcmbmJzcDsnKSA6ICcnKTsNCiAgICAgICAgICAgICRjb250
ZW50QmxvY2sgLj0gICc8L3RyPic7DQoNCiAgICAgICAgICAgIC8vIFJlbWFpbmluZyBhY2Nl
c3Mga2V5cy4NCiAgICAgICAgICAgIGZvcmVhY2ggKCRzZWNyaW5nIGFzICRzZWNpZHggPT4g
JGRhdGEpIHsNCiAgICAgICAgICAgICAgICBpZiAoJHNob3dpcCkgew0KICAgICAgICAgICAg
ICAgICAgICAkaXBzID0gZG9fbGlzdCgkZGF0YVsnaXAnXSwgJyAnKTsNCiAgICAgICAgICAg
ICAgICAgICAgJGlwbGlzdCA9IGFycmF5KCk7DQoNCiAgICAgICAgICAgICAgICAgICAgZm9y
ZWFjaCAoJGlwcyBhcyAkaXApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpcGxpc3Rb
XSA9ICgkbG9nZ2luZyA9PSAnbm9uZScpID8gJGlwIDogZUxpbmsoJ2xvZycsICdsb2dfbGlz
dCcsICdzZWFyY2hfbWV0aG9kJywgJ2lwJywgJGlwLCAnY3JpdCcsICRpcCk7DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAk
ZGtleSA9ICRkYXRhWydwYWdlJ10uJ3wnLiRkYXRhWyd0X2hleCddOw0KICAgICAgICAgICAg
ICAgICR0aW1lcGFydHMgPSBkb19saXN0KCRkYXRhWyd0X2hleCddLCAnLScpOw0KICAgICAg
ICAgICAgICAgICRleHBpcnkgPSAoaXNzZXQoJHRpbWVwYXJ0c1sxXSkpID8gaGV4ZGVjKCR0
aW1lcGFydHNbMV0pIDogJyc7DQoNCiAgICAgICAgICAgICAgICAkY29udGVudEJsb2NrIC49
IHRyKA0KICAgICAgICAgICAgICAgICAgICB0ZChmSW5wdXQoJ2NoZWNrYm94JywgJ3NlbGVj
dGVkW10nLCAkZGtleSwgJ2NoZWNrYm94JyksICcnLCAndHhwLWxpc3QtY29sLW11bHRpLWVk
aXQnKQ0KICAgICAgICAgICAgICAgICAgICAuIHRkKCc8YSBocmVmPSInLiRkYXRhWydwYWdl
J10uJyI+Jy4kZGF0YVsncGFnZSddLic8L2E+JywgJycsICdwYWdlJykNCiAgICAgICAgICAg
ICAgICAgICAgLiB0ZCgkZGF0YVsndHJpZ2dhaCddKQ0KICAgICAgICAgICAgICAgICAgICAu
IHRkKHNhZmVfc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNOiVTJywgJGRhdGFbJ3RpbWUnXSks
IDg1LCAnZGF0ZSB0aW1lJykNCiAgICAgICAgICAgICAgICAgICAgLiB0ZCggKCgkZXhwaXJ5
KSA/IHNhZmVfc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNOiVTJywgJGV4cGlyeSkgOiAnLScp
LCA4NSwgJ2RhdGUgdGltZScpDQogICAgICAgICAgICAgICAgICAgIC4gdGQoJGRhdGFbJ21h
eGltdW0nXSkNCiAgICAgICAgICAgICAgICAgICAgLiB0ZCgkZGF0YVsnYWNjZXNzZXMnXSkN
CiAgICAgICAgICAgICAgICAgICAgLiAoICgkc2hvd2lwKSA/IHRkKCB0cmltKGpvaW4oJyAn
LCAkaXBsaXN0KSksIDIwLCAnaXAnICkgOiAnJyApDQogICAgICAgICAgICAgICAgKTsNCiAg
ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJG11bHRpT3B0cyA9IGFycmF5KCdzbWRfYWtl
eV9kZWxldGUnID0+IGdUeHQoJ2RlbGV0ZScpKTsNCiAgICAgICAgICAgICRjb250ZW50Qmxv
Y2sgLj0gbi50YWdfZW5kKCd0Ym9keScpLg0KICAgICAgICAgICAgICAgIG4udGFnX2VuZCgn
dGFibGUnKS4NCiAgICAgICAgICAgICAgICBuLnRhZ19lbmQoJ2RpdicpLiAvLyBFbmQgb2Yg
LnR4cC1saXN0dGFibGVzLg0KICAgICAgICAgICAgICAgIG11bHRpX2VkaXQoJG11bHRpT3B0
cywgJ3NtZF9ha2V5JywgJ3NtZF9ha2V5X211bHRpX2VkaXQnLCAkcGFnZSwgJHNvcnQsICRk
aXIsICRjcml0LCAkc2VhcmNoX21ldGhvZCkuDQogICAgICAgICAgICAgICAgdElucHV0KCku
DQogICAgICAgICAgICAgICAgbi50YWdfZW5kKCdmb3JtJyk7DQogICAgICAgIH0NCg0KICAg
ICAgICAkcGFnZUJsb2NrID0gJHBhZ2luYXRvci0+cmVuZGVyKCkuDQogICAgICAgICAgICBu
YXZfZm9ybSgnc21kX2FrZXknLCAkcGFnZSwgJG51bVBhZ2VzLCAkc29ydCwgJGRpciwgJGNy
aXQsICRzZWFyY2hfbWV0aG9kLCAkdG90YWwsICRsaW1pdCk7DQoNCiAgICAgICAgJHRhYmxl
ID0gbmV3IFxUZXh0cGF0dGVyblxBZG1pblxUYWJsZSgkZXZlbnQpOw0KDQogICAgICAgIC8v
IE5vIEFqYXggdXBkYXRlcyBvciBpdCBicmVha3MgdGhlICdOZXcga2V5JyBidXR0b24gYWZ0
ZXIgYW4gQWpheCBjYWxsLg0KICAgICAgICAkaHRtbF9pZCA9ICcnOw0KICAgICAgICBlY2hv
ICR0YWJsZS0+cmVuZGVyKGNvbXBhY3QoJ3RvdGFsJywgJ2NyaXRlcmlhJywgJ2h0bWxfaWQn
KSwgJHNlYXJjaEJsb2NrLCAkY3JlYXRlQmxvY2ssICRjb250ZW50QmxvY2ssICRwYWdlQmxv
Y2spOw0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIFRhYmxlIG5vdCBpbnN0YWxsZWQuDQog
ICAgICAgICRvdXQgPSBuLic8ZGl2IGNsYXNzPSJ0eHAtbGF5b3V0Ij4nLg0KICAgICAgICAg
ICAgbi50YWcoDQogICAgICAgICAgICAgICAgaGVkKGdUeHQoJ3RhYl8nLiRldmVudCksIDEs
IGFycmF5KCdjbGFzcycgPT4gJ3R4cC1oZWFkaW5nJykpLA0KICAgICAgICAgICAgICAgICdk
aXYnLCBhcnJheSgnY2xhc3MnID0+ICd0eHAtbGF5b3V0LTRjb2wtYWx0JykNCiAgICAgICAg
ICAgICk7DQoNCiAgICAgICAgJG91dCAuPSB0YWdfc3RhcnQoJ2RpdicsIGFycmF5KA0KICAg
ICAgICAgICAgICAgICdjbGFzcycgPT4gJ3R4cC1sYXlvdXQtMWNvbCcsDQogICAgICAgICAg
ICAgICAgJ2lkJyAgICA9PiAkZXZlbnQuJ19jb250YWluZXInLA0KICAgICAgICAgICAgKSk7
DQoNCiAgICAgICAgJGJ0bkluc3RhbGwgPSAnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249
Ij9ldmVudD0nLiRzbWRfYWtleV9ldmVudC5hLidzdGVwPXNtZF9ha2V5X3RhYmxlX2luc3Rh
bGwiPicuZklucHV0KCdzdWJtaXQnLCAnc3VibWl0JywgZ1R4dCgnc21kX2FrZXlfdGJsX2lu
c3RhbGxfbGJsJyksICdzbWFsbGVyYm94JykuJzwvZm9ybT4nOw0KICAgICAgICAkb3V0IC49
IGdyYWYoc3Ryb25nKGdUeHQoJ3NtZF9ha2V5X3ByZWZzX3NvbWVfdGJsJykpKQ0KICAgICAg
ICAgICAgICAgIC5ncmFmKGdUeHQoJ3NtZF9ha2V5X3ByZWZzX3NvbWVfZXhwbGFpbicpKQ0K
ICAgICAgICAgICAgICAgIC5ncmFmKGdUeHQoJ3NtZF9ha2V5X3ByZWZzX3NvbWVfb3B0cycp
KTsNCiAgICAgICAgJG91dCAuPSAkYnRuSW5zdGFsbDsNCiAgICAgICAgJG91dCAuPSAnPC9k
aXY+Jw0KICAgICAgICAgICAgLic8L2Rpdj4nOw0KDQogICAgICAgIGVjaG8gJG91dDsNCiAg
ICB9DQp9DQoNCi8qKg0KICogQ2hhbmdlIGFuZCBzdG9yZSBxdHktcGVyLXBhZ2UgdmFsdWUu
DQogKi8NCmZ1bmN0aW9uIHNtZF9ha2V5X2NoYW5nZV9wYWdlYnkoKQ0Kew0KICAgIGV2ZW50
X2NoYW5nZV9wYWdlYnkoJ3NtZF9ha2V5Jyk7DQogICAgc21kX2FrZXkoKTsNCn0NCg0KLyoq
DQogKiBDcmVhdGUgYSBrZXkgZnJvbSB0aGUgYWRtaW4gc2lkZSdzICdOZXcga2V5JyBidXR0
b24uDQogKi8NCmZ1bmN0aW9uIHNtZF9ha2V5X2NyZWF0ZSgpDQp7DQogICAgZXh0cmFjdChn
cHNhKGFycmF5KCdzbWRfYWtleV9uZXdwYWdlJywgJ3NtZF9ha2V5X3RyaWdnYWgnLCAnc21k
X2FrZXlfdGltZScsICdzbWRfYWtleV9leHBpcmVzJywgJ3NtZF9ha2V5X21heGltdW0nKSkp
Ow0KDQogICAgaWYgKCRzbWRfYWtleV9uZXdwYWdlKSB7DQogICAgICAgIC8vIEp1c3QgY2Fs
bCB0aGUgcHVibGljIHRhZyB3aXRoIHRoZSByZWxldmFudCBvcHRpb25zLg0KICAgICAgICAk
a2V5ID0gc21kX2FjY2Vzc19rZXkoDQogICAgICAgICAgICBhcnJheSgNCiAgICAgICAgICAg
ICAgICAndXJsJyAgICAgPT4gJHNtZF9ha2V5X25ld3BhZ2UsDQogICAgICAgICAgICAgICAg
J3RyaWdnZXInID0+ICRzbWRfYWtleV90cmlnZ2FoLA0KICAgICAgICAgICAgICAgICdzdGFy
dCcgICA9PiAkc21kX2FrZXlfdGltZSwNCiAgICAgICAgICAgICAgICAnZXhwaXJlcycgPT4g
JHNtZF9ha2V5X2V4cGlyZXMsDQogICAgICAgICAgICAgICAgJ21heCcgICAgID0+ICRzbWRf
YWtleV9tYXhpbXVtLA0KICAgICAgICAgICAgKQ0KICAgICAgICApOw0KICAgICAgICAkbXNn
ID0gZ1R4dCgnc21kX2FrZXlfZ2VuZXJhdGVkJywgYXJyYXkoJ3trZXl9JyA9PiAka2V5KSk7
DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG1zZyA9IGFycmF5KGdUeHQoJ3NtZF9ha2V5X25l
ZWRfcGFnZScpLCBFX0VSUk9SKTsNCiAgICB9DQoNCiAgICBzbWRfYWtleSgkbXNnKTsNCn0N
Cg0KLyoqDQogKiBIYW5kbGUgc3VibWlzc2lvbiBvZiB0aGUgbXVsdGktZWRpdCBkcm9wZG93
biBvcHRpb25zLg0KICovDQpmdW5jdGlvbiBzbWRfYWtleV9tdWx0aV9lZGl0KCkNCnsNCiAg
ICAkc2VsZWN0ZWQgPSBncHMoJ3NlbGVjdGVkJyk7DQogICAgJG9wZXJhdGlvbiA9IGdwcygn
ZWRpdF9tZXRob2QnKTsNCiAgICAkZGVsID0gMDsNCiAgICAkbXNnID0gJyc7DQoNCiAgICBz
d2l0Y2ggKCRvcGVyYXRpb24pIHsNCiAgICAgICAgY2FzZSAnc21kX2FrZXlfZGVsZXRlJzoN
CiAgICAgICAgICAgIGlmICgkc2VsZWN0ZWQpIHsNCiAgICAgICAgICAgICAgICBmb3JlYWNo
ICgkc2VsZWN0ZWQgYXMgJHNlbCkgew0KICAgICAgICAgICAgICAgICAgICAkcGFydHMgPSBl
eHBsb2RlKCd8JywgJHNlbCk7DQogICAgICAgICAgICAgICAgICAgICRyZXQgPSBzYWZlX2Rl
bGV0ZShTTURfQUtFWVMsICJwYWdlID0gJyIgLiAkcGFydHNbMF0gLiAiJyBBTkQgdF9oZXgg
PSAnIiAuICRwYXJ0c1sxXSAuICInIik7DQogICAgICAgICAgICAgICAgICAgICRkZWwgPSAo
JHJldCkgPyAkZGVsKzEgOiAkZGVsOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgICAgICRtc2cgPSBnVHh0KCdzbWRfYWtleV9kZWxldGVkJywgYXJyYXkoJ3tkZWxldGVk
fScgPT4gJGRlbCkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICBicmVhazsNCiAgICB9DQoN
CiAgICBzbWRfYWtleSgkbXNnKTsNCn0NCg0KLyoqDQogKiBGZXRjaCB0aGUgYWRtaW4tc2lk
ZSBwcmVmcyBwYW5lbCBsaW5rLg0KICovDQpmdW5jdGlvbiBwcmVmc19saW5rKCkNCnsNCiAg
ICByZXR1cm4gJz9ldmVudD1wcmVmcyNwcmVmc19ncm91cF9zbWRfYWtleSc7DQp9DQoNCi8q
Kg0KICogSnVtcCB0byB0aGUgcHJlZnMgcGFuZWwuDQogKg0KICogQHJldHVybiBIVE1MIFBh
Z2Ugc3ViLWNvbnRlbnQuDQogKi8NCmZ1bmN0aW9uIHNtZF9ha2V5X3ByZWZzKCkNCnsNCiAg
ICAkbGluayA9IHByZWZzX2xpbmsoKTsNCg0KICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAk
bGluayk7DQp9DQoNCi8qKg0KICogRmV0Y2ggdGhlIHByZWZlcmVuY2Ugb3B0aW9uIGRlZmlu
aXRpb25zLg0KICoNCiAqIEByZXR1cm4gIGFycmF5DQogKi8NCmZ1bmN0aW9uIHNtZF9ha2V5
X2dldF9wcmVmcygpDQp7DQogICAgJHNtZF9ha2V5X3ByZWZzID0gYXJyYXkoDQogICAgICAg
ICdzbWRfYWtleV9maWxlX2Rvd25sb2FkX2V4cGlyZXMnID0+IGFycmF5KA0KICAgICAgICAg
ICAgJ2h0bWwnICAgICA9PiAndGV4dF9pbnB1dCcsDQogICAgICAgICAgICAndHlwZScgICAg
ID0+IFBSRUZfUExVR0lOLA0KICAgICAgICAgICAgJ3Bvc2l0aW9uJyA9PiAxMCwNCiAgICAg
ICAgICAgICdkZWZhdWx0JyAgPT4gJzM2MDAnLA0KICAgICAgICApLA0KICAgICAgICAnc21k
X2FrZXlfc2FsdF9sZW5ndGgnID0+IGFycmF5KA0KICAgICAgICAgICAgJ2h0bWwnICAgICA9
PiAndGV4dF9pbnB1dCcsDQogICAgICAgICAgICAndHlwZScgICAgID0+IFBSRUZfUExVR0lO
LA0KICAgICAgICAgICAgJ3Bvc2l0aW9uJyA9PiAyMCwNCiAgICAgICAgICAgICdkZWZhdWx0
JyAgPT4gJzgnLA0KICAgICAgICApLA0KICAgICAgICAnc21kX2FrZXlfbG9nX2lwJyA9PiBh
cnJheSgNCiAgICAgICAgICAgICdodG1sJyAgICAgPT4gJ3llc25vcmFkaW8nLA0KICAgICAg
ICAgICAgJ3R5cGUnICAgICA9PiBQUkVGX1BMVUdJTiwNCiAgICAgICAgICAgICdwb3NpdGlv
bicgPT4gMzAsDQogICAgICAgICAgICAnZGVmYXVsdCcgID0+ICcwJywNCiAgICAgICAgKSwN
CiAgICApOw0KDQogICAgcmV0dXJuICRzbWRfYWtleV9wcmVmczsNCn0NCg0KLyoqDQogKiBB
ZGQgdGhlIHNtZF9ha2V5cyB0YWJsZSBpZiBub3QgYWxyZWFkeSBpbnN0YWxsZWQuDQogKg0K
ICogQHBhcmFtIGJvb2wgJHNob3dwYW5lIChvcHQpIFdoZXRoZXIgdG8gb3BlcmF0ZSBzaWxl
bnRseSBvciBkaXNwbGF5IHRoZSBhZG1pbiBpbnRlcmZhY2Ugb24gY29tcGxldGlvbg0KICov
DQpmdW5jdGlvbiBzbWRfYWtleV90YWJsZV9pbnN0YWxsKCRzaG93cGFuZSA9ICcxJykNCnsN
CiAgICBnbG9iYWwgJERCOw0KDQogICAgJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9IDA7
DQogICAgJHJldCA9ICcnOw0KICAgICRzcWwgPSBhcnJheSgpOw0KDQogICAgLy8gVXNlICd0
cmlnZ2FoJyBhbmQgJ21heGltdW0nIGJlY2F1c2UgJ3RyaWdnZXInIGFuZCAnbWF4JyBhcmUg
cmVzZXJ2ZWQgd29yZHMuDQogICAgJHNxbFtdID0gIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJ
U1RTIGAiIC4gUEZYIC4gU01EX0FLRVlTIC4gImAgKA0KICAgICAgICBgcGFnZWAgdmFyY2hh
cigyNTUpIGRlZmF1bHQgJycsDQogICAgICAgIGB0X2hleGAgdmFyY2hhcigxNykgZGVmYXVs
dCAnJywNCiAgICAgICAgYHRpbWVgIGludCgxNCkgZGVmYXVsdCAwLA0KICAgICAgICBgc2Vj
cmV0YCB2YXJjaGFyKDUxMSkgZGVmYXVsdCAnJywNCiAgICAgICAgYHRyaWdnYWhgIHZhcmNo
YXIoMjU1KSBkZWZhdWx0ICcnLA0KICAgICAgICBgbWF4aW11bWAgaW50KDExKSBkZWZhdWx0
IDAsDQogICAgICAgIGBhY2Nlc3Nlc2AgaW50KDExKSBkZWZhdWx0IDAsDQogICAgICAgIGBp
cGAgdGV4dCwNCiAgICAgICAgUFJJTUFSWSBLRVkgKGBwYWdlYCxgdF9oZXhgKQ0KICAgICkg
RU5HSU5FPU15SVNBTSI7DQoNCiAgICBpZiAoZ3BzKCdkZWJ1ZycpKSB7DQogICAgICAgIGRt
cCgkc3FsKTsNCiAgICB9DQoNCiAgICBmb3JlYWNoICgkc3FsIGFzICRxcnkpIHsNCiAgICAg
ICAgJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQogICAgICAgIGlmICgkcmV0PT09ZmFsc2Up
IHsNCiAgICAgICAgICAgICRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10rKzsNCiAgICAgICAg
ICAgIGVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4gIiAuIG15
c3FsaV9lcnJvcigkREItPmxpbmspIC4gIjxiciAvPlxuIjsNCiAgICAgICAgICAgIGVjaG8g
IjwhLS1cbiAkcXJ5IFxuLS0+XG4iOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gU3Bp
dCBvdXQgcmVzdWx0cy4NCiAgICBpZiAoJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9PSAw
KSB7DQogICAgICAgIGlmICgkc2hvd3BhbmUpIHsNCiAgICAgICAgICAgICRtc2cgPSBnVHh0
KCdzbWRfYWtleV90YmxfaW5zdGFsbGVkJyk7DQogICAgICAgICAgICBzbWRfYWtleSgkbXNn
KTsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIGlmICgkc2hvd3BhbmUpIHsN
CiAgICAgICAgICAgICRtc2cgPSBnVHh0KCdzbWRfYWtleV90Ymxfbm90X2luc3RhbGxlZCcp
Ow0KICAgICAgICAgICAgc21kX2FrZXkoJG1zZyk7DQogICAgICAgIH0NCiAgICB9DQp9DQoN
Ci8qKg0KICogRHJvcCBzbWRfYWtleXMgdGFibGUgaWYgaW4gZGF0YWJhc2UuDQogKi8NCmZ1
bmN0aW9uIHNtZF9ha2V5X3RhYmxlX3JlbW92ZSgpDQp7DQogICAgZ2xvYmFsICREQjsNCg0K
ICAgICRyZXQgPSAnJzsNCiAgICAkc3FsID0gYXJyYXkoKTsNCiAgICAkR0xPQkFMU1sndHhw
X2Vycl9jb3VudCddID0gMDsNCg0KICAgIGlmIChzbWRfYWtleV90YWJsZV9leGlzdCgpKSB7
DQogICAgICAgICRzcWxbXSA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAiIC5QRlggLiBTTURf
QUtFWVMuICI7ICI7DQogICAgICAgIGlmIChncHMoJ2RlYnVnJykpIHsNCiAgICAgICAgICAg
IGRtcCgkc3FsKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZvcmVhY2ggKCRzcWwgYXMgJHFy
eSkgew0KICAgICAgICAgICAgJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQogICAgICAgICAg
ICBpZiAoJHJldD09PWZhbHNlKSB7DQogICAgICAgICAgICAgICAgJEdMT0JBTFNbJ3R4cF9l
cnJfY291bnQnXSsrOw0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4
cF9lcnJfY291bnQnXS4iLjwvYj4gIiAuIG15c3FsaV9lcnJvcigkREItPmxpbmspIC4gIjxi
ciAvPlxuIjsNCiAgICAgICAgICAgICAgICBlY2hvICI8IS0tXG4gJHFyeSBcbi0tPlxuIjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGlmICgkR0xPQkFMU1sn
dHhwX2Vycl9jb3VudCddID09IDApIHsNCiAgICAgICAgJG1zZyA9IGdUeHQoJ3NtZF9ha2V5
X3RibF9yZW1vdmVkJyk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG1zZyA9IGdUeHQoJ3Nt
ZF9ha2V5X3RibF9ub3RfcmVtb3ZlZCcpOw0KICAgICAgICBzbWRfYWtleSgkbXNnKTsNCiAg
ICB9DQp9DQoNCi8qKg0KICogQ2hlY2sgaWYgdGhlIHNtZF9ha2V5cyB0YWJsZSBleGlzdHMu
DQogKg0KICogQHBhcmFtICBib29sICR0eXBlIChvcHQpIEZ1bGwgY2hlY2sgKDEpLCBvciBj
b2x1bW4gY291bnQgY2hlY2sNCiAqIEByZXR1cm4gYm9vbCB8IGNvbHVtbiBjb3VudA0KICov
DQpmdW5jdGlvbiBzbWRfYWtleV90YWJsZV9leGlzdCgkdHlwZSA9ICcnKQ0Kew0KICAgIGds
b2JhbCAkcGx1Z2luc192ZXIsICREQjsNCg0KICAgIC8vIFVwZ3JhZGUgY2hlY2suDQogICAg
JHZlciA9IGdldF9wcmVmKCdzbWRfYWtleV9pbnN0YWxsZWRfdmVyc2lvbicsICcnKTsNCg0K
ICAgIGlmICghJHZlciB8fCAkcGx1Z2luc192ZXJbJ3NtZF9hY2Nlc3Nfa2V5cyddICE9ICR2
ZXIpIHsNCiAgICAgICAgLy8gSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIHRfaGV4IGZpZWxk
IHRvIGFsbG93IGZvciBleHBpcnkgdGltZXMuDQogICAgICAgICRyZXQgPSBAc2FmZV9maWVs
ZCgiQ0hBUkFDVEVSX01BWElNVU1fTEVOR1RIIiwgIklORk9STUFUSU9OX1NDSEVNQS5DT0xV
TU5TIiwgInRhYmxlX25hbWUgPSAnIiAuIFBGWCAuIFNNRF9BS0VZUyAuICInIEFORCB0YWJs
ZV9zY2hlbWEgPSAnIiAuICREQi0+ZGIgLiAiJyBBTkQgY29sdW1uX25hbWUgPSAndF9oZXgn
Iik7DQoNCiAgICAgICAgaWYgKCRyZXQgIT0gJzE3Jykgew0KICAgICAgICAgICAgc2FmZV9h
bHRlcihTTURfQUtFWVMsICJDSEFOR0UgYHRfaGV4YCBgdF9oZXhgIFZBUkNIQVIoIDE3ICkg
REVGQVVMVCAnJyIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gSW5jcmVhc2UgdGhlIHNp
emUgb2YgdGhlIHNlY3JldCBmaWVsZCB0byBhbGxvdyBmb3IgbG9uZ2VyIGtleXMuDQogICAg
ICAgICRyZXQgPSBAc2FmZV9maWVsZCgiQ0hBUkFDVEVSX01BWElNVU1fTEVOR1RIIiwgIklO
Rk9STUFUSU9OX1NDSEVNQS5DT0xVTU5TIiwgInRhYmxlX25hbWUgPSAnIiAuIFBGWCAuIFNN
RF9BS0VZUyAuICInIEFORCB0YWJsZV9zY2hlbWEgPSAnIiAuICREQi0+ZGIgLiAiJyBBTkQg
Y29sdW1uX25hbWUgPSAnc2VjcmV0JyIpOw0KDQogICAgICAgIGlmICgkcmV0ICE9ICc1MTEn
KSB7DQogICAgICAgICAgICBzYWZlX2FsdGVyKFNNRF9BS0VZUywgIkNIQU5HRSBgc2VjcmV0
YCBgc2VjcmV0YCBWQVJDSEFSKCA1MTEgKSBERUZBVUxUICcnIik7DQogICAgICAgIH0NCg0K
ICAgICAgICBzZXRfcHJlZignc21kX2FrZXlfaW5zdGFsbGVkX3ZlcnNpb24nLCAkcGx1Z2lu
c192ZXJbJ3NtZF9hY2Nlc3Nfa2V5cyddLCAnc21kX2FrZXknLCBQUkVGX0hJRERFTiwgJycs
IDApOw0KICAgIH0NCg0KICAgIGlmICgkdHlwZSA9PSAnMScpIHsNCiAgICAgICAgJHRibHMg
PSBhcnJheShTTURfQUtFWVMgPT4gOCk7DQogICAgICAgICRvdXQgPSBjb3VudCgkdGJscyk7
DQogICAgICAgIGZvcmVhY2ggKCR0YmxzIGFzICR0YmwgPT4gJGNvbHMpIHsNCiAgICAgICAg
ICAgIGlmIChjb3VudChAc2FmZV9zaG93KCdjb2x1bW5zJywgJHRibCkpID09ICRjb2xzKSB7
DQogICAgICAgICAgICAgICAgJG91dC0tOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog
ICAgICAgIHJldHVybiAoJG91dD09PTApID8gMSA6IDA7DQogICAgfSBlbHNlIHsNCiAgICAg
ICAgcmV0dXJuKEBzYWZlX3Nob3coJ2NvbHVtbnMnLCBTTURfQUtFWVMpKTsNCiAgICB9DQp9
DQoNCi8qKg0KICogQ2FsbGJhY2ssIGlzc3VlZCBqdXN0IGJlZm9yZSBhIGRvd25sb2FkIGlz
IGluaXRpYXRlZC4NCiAqDQogKiBAcGFyYW0gIHN0cmluZyAkZXZ0IChyZXEpIFRleHRwYXR0
ZXJuIGV2ZW50DQogKiBAcGFyYW0gIHN0cmluZyAkc3RwIChyZXEpIFRleHRwYXR0ZXJuIHN0
ZXANCiAgKi8NCmZ1bmN0aW9uIHNtZF9hY2Nlc3NfcHJvdGVjdF9kb3dubG9hZCgkZXZ0LCAk
c3RwKQ0Kew0KICAgIGdsb2JhbCAkaWQsICRmaWxlX2Vycm9yOw0KDQogICAgJHNtZF9ha2V5
X3ByZWZzID0gc21kX2FrZXlfZ2V0X3ByZWZzKCk7DQoNCiAgICBpZiAoc21kX2FrZXlfdGFi
bGVfZXhpc3QoMSkgJiYgIWlzc2V0KCRmaWxlX2Vycm9yKSkgew0KICAgICAgICAkZmlsZWlk
ID0gaW50dmFsKCRpZCk7DQoNCiAgICAgICAgLy8gSW4gY2FzZSB0aGUgcGFnZSB3YXMgY2Fs
bGVkIHdpdGggYSBib2d1cyBmaWxlbmFtZSwgZ2V0IHRoZSAidHJ1ZSIgZmlsZW5hbWUNCiAg
ICAgICAgLy8gZnJvbSB0aGUgZGF0YWJhc2UgYW5kIG1ha2UgdXAgdGhlIHZhbGlkIFVSTC4N
CiAgICAgICAgJHJlYWxfZmlsZSA9IHNhZmVfZmllbGQoImZpbGVuYW1lIiwgInR4cF9maWxl
IiwgImlkPSIuZG9TbGFzaCgkZmlsZWlkKSk7DQogICAgICAgICRwYWdlID0gZmlsZWRvd25s
b2FkdXJsKCRmaWxlaWQsICRyZWFsX2ZpbGUpOw0KICAgICAgICAkc2VjcmluZyA9IHNhZmVf
ZmllbGQoJ3BhZ2UnLCBTTURfQUtFWVMsICJwYWdlPSciLmRvU2xhc2goJHBhZ2UpLiInIik7
DQoNCiAgICAgICAgLy8gT25seSB3YW50IHRvIHByb3RlY3QgcGFnZXMgdGhhdCB3ZSd2ZSBn
ZW5lcmF0ZWQgdG9rZW5zIGZvci4NCiAgICAgICAgaWYgKCRzZWNyaW5nKSB7DQogICAgICAg
ICAgICAvLyBQYXNzIGluIGEgZGVmYXVsdCBleHBpcnkgZnJvbSB0aGUgcHJlZiwgYnV0IGl0
IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBrZXkncyBleHBpcnkuDQogICAgICAgICAgICBy
ZXR1cm4gc21kX2FjY2Vzc19wcm90ZWN0KA0KICAgICAgICAgICAgICAgIGFycmF5KA0KICAg
ICAgICAgICAgICAgICAgICAndHJpZ2dlcicgPT4gJ2ZpbGVfZG93bmxvYWQnLA0KICAgICAg
ICAgICAgICAgICAgICAnZm9yY2UnICAgPT4gJzEnLA0KICAgICAgICAgICAgICAgICAgICAn
ZXhwaXJlcycgPT4gZ2V0X3ByZWYoJ3NtZF9ha2V5X2ZpbGVfZG93bmxvYWRfZXhwaXJlcycs
ICRzbWRfYWtleV9wcmVmc1snc21kX2FrZXlfZmlsZV9kb3dubG9hZF9leHBpcmVzJ11bJ2Rl
ZmF1bHQnXSksDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIC8vIFJlbW90ZSBkb3dubG9hZCBub3QgZG9uZSAtIGxlYXZlIHRv
IFR4cCB0byBoYW5kbGUgZXJyb3Igb3IgImxvY2FsIiBmaWxlIGRvd25sb2FkLg0KICAgIHJl
dHVybjsNCn0NCg0KLyoqDQogKiBUYWc6IEdlbmVyYXRlIGFuIGFjY2VzcyB0b2tlbi4NCiAq
DQogKiBAcGFyYW0gIGFycmF5ICRhdHRzICAocmVxKSBUYWcgYXR0cmlidXRlIGxpc3QNCiAq
IEBwYXJhbSAgYXJyYXkgJHRoaW5nIChvcHQpIFRhZyBjb250YWluZXIgY29udGVudA0KICog
QHJldHVybiBIVE1MDQogKi8NCmZ1bmN0aW9uIHNtZF9hY2Nlc3Nfa2V5KCRhdHRzLCAkdGhp
bmcgPSBudWxsKQ0Kew0KICAgIGdsb2JhbCAkc21kX2FrZXlfaW5mbzsNCg0KICAgICRzbWRf
YWtleV9wcmVmcyA9IHNtZF9ha2V5X2dldF9wcmVmcygpOw0KDQogICAgLy8gSW4gY2FzZSB0
aGlzIHRhZyBpcyBjYWxsZWQgZnJvbSB0aGUgYWRtaW4gc2lkZSAtIG5lZWRzIHBhcnNlKCku
DQogICAgaW5jbHVkZV9vbmNlIHR4cGF0aC4nL3B1Ymxpc2gucGhwJzsNCg0KICAgIGV4dHJh
Y3QobEF0dHMoYXJyYXkoDQogICAgICAgICdzZWNyZXQnICAgICAgID0+ICcnLA0KICAgICAg
ICAndXJsJyAgICAgICAgICA9PiAnJywNCiAgICAgICAgJ3NpdGVfbmFtZScgICAgPT4gJzEn
LA0KICAgICAgICAnc2VjdGlvbl9tb2RlJyA9PiAnMCcsDQogICAgICAgICdzdGFydCcgICAg
ICAgID0+ICcnLA0KICAgICAgICAnZXhwaXJlcycgICAgICA9PiAnJywNCiAgICAgICAgJ3Ry
aWdnZXInICAgICAgPT4gJ3NtZF9ha2V5JywNCiAgICAgICAgJ21heCcgICAgICAgICAgPT4g
JycsDQogICAgICAgICdleHRyYScgICAgICAgID0+ICcnLA0KICAgICAgICAnZm9ybScgICAg
ICAgICA9PiAnJywNCiAgICAgICAgJ3N0cmVuZ3RoJyAgICAgPT4gJ1NNRF9TU0xfUkFORCcs
IC8vIG9yIFNNRF9NRDUsIG9yIHlvdXIgb3duIHNhbHQNCiAgICApLCAkYXR0cykpOw0KDQog
ICAgaWYgKHNtZF9ha2V5X3RhYmxlX2V4aXN0KDEpKSB7DQogICAgICAgICR0aGluZyA9IChl
bXB0eSgkZm9ybSkpID8gJHRoaW5nIDogZmV0Y2hfZm9ybSgkZm9ybSk7DQogICAgICAgICR0
aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8dHhwOnNtZF9hY2Nlc3NfaW5mbyBpdGVtPSJr
ZXkiIC8+JyA6ICR0aGluZzsNCg0KICAgICAgICAkdHJpZ2dlciA9IHRyaW0oJHRyaWdnZXIp
Ow0KICAgICAgICAkdHJpZ2dlciA9ICgkdHJpZ2dlciA9PSAnZmlsZV9kb3dubG9hZCcpID8g
JycgOiAkdHJpZ2dlcjsNCiAgICAgICAgJGhhc1NTTCA9IGZ1bmN0aW9uX2V4aXN0cygnb3Bl
bnNzbF9yYW5kb21fcHNldWRvX2J5dGVzJyk7DQoNCiAgICAgICAgJHNtZF9ha2V5X3NhbHRf
bGVuZ3RoID0gZ2V0X3ByZWYoJ3NtZF9ha2V5X3NhbHRfbGVuZ3RoJywgJHNtZF9ha2V5X3By
ZWZzWydzbWRfYWtleV9zYWx0X2xlbmd0aCddWydkZWZhdWx0J10pOw0KDQogICAgICAgIC8v
IFdpdGhvdXQgYSBVUkwsIGFzc3VtZSBjdXJyZW50IHBhZ2UuDQogICAgICAgICRwYWdlID0g
cnRyaW0oICgoJHVybCkgPyAkdXJsIDogc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpKSwgJy8n
KTsNCg0KICAgICAgICBpZiAoJHNpdGVfbmFtZSAmJiAoc3RycG9zKCRwYWdlLCAnaHR0cCcp
ICE9PSAwKSkgew0KICAgICAgICAgICAgLy8gQ2FuJ3QgdXNlIHJhdyBodSBzaW5jZSBpdCBj
b250YWlucyB0aGUgc3ViZGlyIChhcyBkb2VzIHRoZSBSRVFVRVNUX1VSSSkNCiAgICAgICAg
ICAgIC8vIHNvIGR1cGxpY2F0ZSBwb3J0aW9ucyB3b3VsZCBvY2N1ciBpbiB0aGUgZ2VuZXJh
dGVkIFVSTC4NCiAgICAgICAgICAgICR1cmxwYXJ0cyA9IHBhcnNlX3VybChodSk7DQogICAg
ICAgICAgICAkcGFnZSA9ICR1cmxwYXJ0c1snc2NoZW1lJ10gLiAnOi8vJyAuICR1cmxwYXJ0
c1snaG9zdCddIC4gJHBhZ2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoISRzZWNyZXQp
IHsNCiAgICAgICAgICAgIGlmICgkaGFzU1NMKSB7DQogICAgICAgICAgICAgICAgJHNlY3Jl
dCA9IGJpbjJoZXgob3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKCRzbWRfYWtleV9zYWx0
X2xlbmd0aCAqIDgpKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
JHNlY3JldCA9IHVuaXFpZCgnJywgdHJ1ZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0N
Cg0KICAgICAgICBpZiAoJHN0cmVuZ3RoID09PSAnU01EX1NTTF9SQU5EJyAmJiAkaGFzU1NM
KSB7DQogICAgICAgICAgICAvLyBOZWVkIHRvIGRpdmlkZSBieSAyIHRvIHJldGFpbiB0aGUg
c2FtZSBrZXkgbGVuZ3RoIGFzIHYwLjF4LCBiZWNhdXNlIGVhY2ggYnl0ZQ0KICAgICAgICAg
ICAgLy8gaGVyZSBwcm9kdWNlcyB0d28gaGV4IGNoYXJhY3RlcnMuDQogICAgICAgICAgICAk
c2FsdCA9IGJpbjJoZXgob3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKGZsb29yKCRzbWRf
YWtleV9zYWx0X2xlbmd0aCAvIDIpKSk7DQogICAgICAgIH0gZWxzZWlmICgkc3RyZW5ndGgg
PT09ICdTTURfTUQ1JykgIHsNCiAgICAgICAgICAgICRzYWx0ID0gc3Vic3RyKG1kNSh1bmlx
aWQobXRfcmFuZCgpLCB0cnVlKSksIDAsICRzbWRfYWtleV9zYWx0X2xlbmd0aCk7DQogICAg
ICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkc2FsdCA9IHN1YnN0cigkc3RyZW5ndGgsIDAs
ICRzbWRfYWtleV9zYWx0X2xlbmd0aCk7DQogICAgICAgIH0NCg0KICAgICAgICAkcGxlbiA9
IHN0cmxlbigkcGFnZSkgJSAzMjsgLy8gQmVjYXVzZSAzMiBpcyB0aGUgc2l6ZSBvZiBhbiBt
ZDUgc3RyaW5nIGFuZCB3ZSBkb24ndCB3YW50IHRvIGZhbGwgb2ZmIHRoZSBlbmQuDQoNCiAg
ICAgICAgLy8gR2VuZXJhdGUgYSB0aW1lc3RhbXAuIFRoZSBjbG9jayBzdGFydHMgdGlja2lu
ZyBmcm9tIHRoaXMgbW9tZW50Lg0KICAgICAgICAkdHMgPSAoJHN0YXJ0KSA/IHNhZmVfc3Ry
dG90aW1lKCRzdGFydCkgOiB0aW1lKCk7DQogICAgICAgICR0cyA9ICgkdHMgPT09IGZhbHNl
KSA/IHRpbWUoKSA6ICR0czsNCiAgICAgICAgJHRfaGV4ID0gZGVjaGV4KCR0cyk7DQoNCiAg
ICAgICAgLy8gQW55IGV4cGlyeSB0byBhZGQ/DQogICAgICAgIGlmICgkZXhwaXJlcykgew0K
ICAgICAgICAgICAgLy8gUmVsYXRpdmUgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IHRpbWUsIG9y
IGFuIGFic29sdXRlIGV4cGlyeT8NCiAgICAgICAgICAgICRyZWwgPSAoc3RycG9zKCRleHBp
cmVzLCAnKycpID09PSAwKSA/IHRydWUgOiBmYWxzZTsNCiAgICAgICAgICAgIGlmICgkcmVs
KSB7DQogICAgICAgICAgICAgICAgJGV4cCA9IHNhZmVfc3RydG90aW1lKCRleHBpcmVzLCAk
dHMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkZXhwID0gc2Fm
ZV9zdHJ0b3RpbWUoJGV4cGlyZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYg
KCRleHAgIT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgJHRfaGV4IC49ICctJyAuIGRl
Y2hleCgkZXhwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFVw
ZGF0ZS9pbnNlcnQgdGhlIHJlbWFpbmluZyBkYXRhLg0KICAgICAgICAkZXhpc3RzID0gc2Fm
ZV9maWVsZCgncGFnZScsIFNNRF9BS0VZUywgInBhZ2U9JyIuZG9TbGFzaCgkcGFnZSkuIicg
QU5EIHRfaGV4PSciLmRvU2xhc2goJHRfaGV4KS4iJyIpOw0KICAgICAgICAkbWF4aW5mbyA9
ICcnOw0KDQogICAgICAgIGlmICgkbWF4KSB7DQogICAgICAgICAgICAkbWF4aW5mbyA9ICIs
IG1heGltdW0gPSAnIi5kb1NsYXNoKCRtYXgpLiInLCBhY2Nlc3NlcyA9ICcwJyI7DQogICAg
ICAgIH0NCg0KICAgICAgICBpZiAoJGV4aXN0cykgew0KICAgICAgICAgICAgc2FmZV91cGRh
dGUoU01EX0FLRVlTLCAidHJpZ2dhaD0nIi5kb1NsYXNoKCR0cmlnZ2VyKS4iJywgdGltZT0n
Ii5kb1NsYXNoKCR0cykuIicsIHNlY3JldD0nIi5kb1NsYXNoKCRzZWNyZXQpLiInIiAuICRt
YXhpbmZvLCAicGFnZT0nIi5kb1NsYXNoKCRwYWdlKS4iJyBBTkQgdF9oZXg9JyIuZG9TbGFz
aCgkdF9oZXgpLiInIik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBzYWZlX2lu
c2VydChTTURfQUtFWVMsICJwYWdlPSciLmRvU2xhc2goJHBhZ2UpLiInLCB0X2hleD0nIi5k
b1NsYXNoKCR0X2hleCkuIicsIHRyaWdnYWg9JyIuZG9TbGFzaCgkdHJpZ2dlcikuIicsIHNl
Y3JldD0nIi5kb1NsYXNoKCRzZWNyZXQpLiInLCB0aW1lPSciLmRvU2xhc2goJHRzKS4iJyIg
LiAkbWF4aW5mbyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBUYWNrIG9uIG1heCBpZiBh
cHBsaWNhYmxlLg0KICAgICAgICAkbWF4X3NhZmUgPSAkbWF4Ow0KICAgICAgICAkbWF4ID0g
KCRtYXgpID8gJy4nLiRtYXggOiAnJzsNCg0KICAgICAgICAvLyBBbmQgYW55IGV4dHJhLg0K
ICAgICAgICAkZXh0cmF0b2sgPSAoJGV4dHJhKSA/ICcvJy4kZXh0cmEgOiAnJzsNCg0KICAg
ICAgICAvLyBDcmVhdGUgdGhlIHJhdyB0b2tlbi4uLg0KICAgICAgICAkdG9rZW4gPSBtZDUo
JHNhbHQuJHNlY3JldC4kcGFnZS4kdHJpZ2dlci4kdF9oZXguJG1heC4kZXh0cmEpOw0KICAg
ICAgICAvLyAuLi4gYW5kIGluc2VydCB0aGUgc2FsdCBwYXJ0d2F5IHRocm91Z2guDQogICAg
ICAgICRzYWx0eV90b2tlbiA9IHN1YnN0cigkdG9rZW4sIDAsICRwbGVuKSAuICRzYWx0IC4g
c3Vic3RyKCR0b2tlbiwgJHBsZW4pOw0KICAgICAgICAkdG9rZW5zZXAgPSAoJHNlY3Rpb25f
bW9kZSkgPyAnPycgOiAnLyc7DQogICAgICAgICRrZXkgPSAkcGFnZSAuICgoJHRyaWdnZXIp
ID8gJHRva2Vuc2VwIC4gJHRyaWdnZXIgOiAnJykgLiAnLycgLiAkc2FsdHlfdG9rZW4gLiAn
LycgLiAkdF9oZXggLiAkbWF4IC4gJGV4dHJhdG9rOw0KDQogICAgICAgICRzbWRfYWtleV9p
bmZvID0gYXJyYXkoDQogICAgICAgICAgICAnYWtfcGFnZScgICAgICA9PiAkcGFnZSwNCiAg
ICAgICAgICAgICdha19leHRyYScgICAgID0+ICRleHRyYSwNCiAgICAgICAgICAgICdha19o
ZXh0aW1lJyAgID0+ICR0X2hleCwNCiAgICAgICAgICAgICdha19pc3N1ZWQnICAgID0+ICR0
cywNCiAgICAgICAgICAgICdha19ub3cnICAgICAgID0+IHRpbWUoKSwNCiAgICAgICAgICAg
ICdha19leHBpcmVzJyAgID0+ICgkZXhwaXJlcykgPyAkZXhwIDogJycsDQogICAgICAgICAg
ICAnYWtfdHJpZ2dlcicgICA9PiAkdHJpZ2dlciwNCiAgICAgICAgICAgICdha19tYXhpbXVt
JyAgID0+ICRtYXhfc2FmZSwNCiAgICAgICAgICAgICdha19zZXBhcmF0b3InID0+ICR0b2tl
bnNlcCwNCiAgICAgICAgICAgICdha19rZXknICAgICAgID0+ICRrZXksDQogICAgICAgICk7
DQoNCiAgICAgICAgcmV0dXJuIHBhcnNlKCR0aGluZyk7DQogICAgfSBlbHNlIHsNCiAgICAg
ICAgdHJpZ2dlcl9lcnJvcihnVHh0KCdzbWRfYWtleV90Ymxfbm90X2luc3RhbGxlZCcpLCBF
X1VTRVJfTk9USUNFKTsNCiAgICB9DQp9DQoNCi8qKg0KICogRGlzcGxheSBwaWVjZXMgb2Yg
YWNjZXNzIGluZm9ybWF0aW9uLCBmb3IgY3VzdG9tIGZvcm1hdHRlZCBtZXNzYWdlcy4NCiAq
DQogKiBAcGFyYW0gIGFycmF5ICRhdHRzICAocmVxKSBUYWcgYXR0cmlidXRlIGxpc3QNCiAq
IEBwYXJhbSAgYXJyYXkgJHRoaW5nIChvcHQpIFRhZyBjb250YWluZXIgY29udGVudA0KICog
QHJldHVybiBIVE1MDQogKi8NCmZ1bmN0aW9uIHNtZF9hY2Nlc3NfaW5mbygkYXR0cywgJHRo
aW5nID0gbnVsbCkNCnsNCiAgICBnbG9iYWwgJHNtZF9ha2V5X3Byb3RlY3RlZF9pbmZvLCAk
c21kX2FrZXlfaW5mbzsNCg0KICAgIGV4dHJhY3QobEF0dHMoYXJyYXkoDQogICAgICAgICdp
dGVtJyAgICAgICA9PiAncGFnZScsDQogICAgICAgICdlc2NhcGUnICAgICA9PiAnaHRtbCcs
DQogICAgICAgICdmb3JtYXQnICAgICA9PiAnJVktJW0tJWQgJUg6JU06JVMnLA0KICAgICAg
ICAnd3JhcHRhZycgICAgPT4gJycsDQogICAgICAgICdjbGFzcycgICAgICA9PiAnJywNCiAg
ICAgICAgJ2h0bWxfaWQnICAgID0+ICcnLA0KICAgICAgICAnYnJlYWsnICAgICAgPT4gJycs
DQogICAgICAgICdicmVha2NsYXNzJyA9PiAnJywNCiAgICApLCAkYXR0cykpOw0KDQogICAg
JG91dCA9IGFycmF5KCk7DQogICAgJGl0ZW1zID0gZG9fbGlzdCgkaXRlbSk7DQoNCiAgICBm
b3JlYWNoICgkaXRlbXMgYXMgJGlkeCkgew0KICAgICAgICAkYWtfaWR4ID0gJ2FrXycuJGlk
eDsNCg0KICAgICAgICBpZiAoJHNtZF9ha2V5X3Byb3RlY3RlZF9pbmZvICYmIGFycmF5X2tl
eV9leGlzdHMoJGlkeCwgJHNtZF9ha2V5X3Byb3RlY3RlZF9pbmZvKSkgew0KICAgICAgICAg
ICAgJHZhbCA9ICgkZXNjYXBlID09ICdodG1sJykgPyBodG1sc3BlY2lhbGNoYXJzKCRzbWRf
YWtleV9wcm90ZWN0ZWRfaW5mb1skaWR4XSkgOiAkc21kX2FrZXlfcHJvdGVjdGVkX2luZm9b
JGlkeF07DQogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGlkeCwgYXJyYXkoJ3RpbWUnLCAn
bm93JywgJ2V4cGlyZXMnKSkgJiYgJGZvcm1hdCkgew0KICAgICAgICAgICAgICAgICR2YWwg
PSBzYWZlX3N0cmZ0aW1lKCRmb3JtYXQsICR2YWwpOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgJG91dFtdID0gJHZhbDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkc21kX2Fr
ZXlfaW5mbyAmJiBhcnJheV9rZXlfZXhpc3RzKCRha19pZHgsICRzbWRfYWtleV9pbmZvKSkg
ew0KICAgICAgICAgICAgJHZhbCA9ICgkZXNjYXBlID09ICdodG1sJykgPyBodG1sc3BlY2lh
bGNoYXJzKCRzbWRfYWtleV9pbmZvWyRha19pZHhdKSA6ICRzbWRfYWtleV9pbmZvWyRha19p
ZHhdOw0KICAgICAgICAgICAgaWYgKGluX2FycmF5KCRpZHgsIGFycmF5KCd0aW1lJywgJ25v
dycsICdleHBpcmVzJykpICYmICRmb3JtYXQpIHsNCiAgICAgICAgICAgICAgICAkdmFsID0g
c2FmZV9zdHJmdGltZSgkZm9ybWF0LCAkdmFsKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICRvdXRbXSA9ICR2YWw7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoJG91dCkg
ew0KICAgICAgICByZXR1cm4gZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFz
cywgJGJyZWFrY2xhc3MsICcnLCAnJywgJGh0bWxfaWQpOw0KICAgIH0NCg0KICAgIHJldHVy
biAnJzsNCn0NCiMgLS0tIEVORCBQTFVHSU4gQ09ERSAtLS0NCmlmICgwKSB7DQo/Pg0KPCEt
LQ0KIyAtLS0gQkVHSU4gUExVR0lOIEhFTFAgLS0tDQpoMS4gc21kX2FjY2Vzc19rZXlzDQoN
ClBlcm1pdCBhY2Nlc3MgdG8gZG93bmxvYWRzLCBwYWdlcyBvciBwYXJ0cyBvZiBwYWdlcyBm
b3IgYSBjZXJ0YWluIGNvbmZpZ3VyYWJsZSB0aW1lIHBlcmlvZCBhbmQvb3IgZm9yIGEgZGVm
aW5lZCBudW1iZXIgb2YgYWNjZXNzIGF0dGVtcHRzLiBUaGUgYWNjZXNzIGtleSBpcyB0YW1w
ZXItcHJvb2YuDQoNCmgyLiBJbnN0YWxsYXRpb24gLyB1bmluc3RhbGxhdGlvbg0KDQpwKGlt
cG9ydGFudCkuIFJlcXVpcmVzIFRYUCA0LjcuMCsNCg0KRG93bmxvYWQgdGhlIHBsdWdpbiBm
cm9tIGVpdGhlciAidGV4dHBhdHRlcm4ub3JnIjpodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3Bs
dWdpbnMvMTIyMi9zbWRfYWNjZXNzX2tleXMsIG9yIHRoZSAic29mdHdhcmUgcGFnZSI6aHR0
cDovL3N0ZWZkYXdzb24uY29tL3N3LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSBUWFAgX0Fk
bWluLT5QbHVnaW5zXyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVGhl
IHRhYmxlIHdpbGwgYmUgaW5zdGFsbGVkIGF1dG9tYXRpY2FsbHkgdW5sZXNzIHlvdSB1c2Ug
dGhlIHBsdWdpbiBmcm9tIHRoZSBjYWNoZSBkaXJlY3Rvcnk7IGluIHdoaWNoIGNhc2UsIHZp
c2l0IHRoZSBfRXh0ZW5zaW9ucy0+QWNjZXNzIGtleXNfIHRhYiBhbmQgY2xpY2sgdGhlIF9J
bnN0YWxsIHRhYmxlXyBidXR0b24gYmVmb3JlIHRyeWluZyB0byB1c2UgdGhlIHBsdWdpbi4N
Cg0KVG8gdW5pbnN0YWxsIHRoZSBwbHVnaW4sIGRlbGV0ZSBmcm9tIHRoZSBfQWRtaW4tPlBs
dWdpbnNfIHBhZ2UuIFRoZSBhY2Nlc3Mga2V5cyB0YWJsZSB3aWxsIGJlIGRlbGV0ZWQgYXV0
b21hdGljYWxseS4NCg0KVmlzaXQgdGhlICJmb3J1bSB0aHJlYWQiOmh0dHA6Ly9mb3J1bS50
ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0zNTk5NiBmb3IgbW9yZSBpbmZvIG9y
IHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi4N
Cg0KaDIuIE92ZXJ2aWV3DQoNClRoZSBwbHVnaW4gYWxsb3dzIHlvdSB0byBjcmVhdGUga2V5
cyBmb3IgYW55IFVSTCBhbmQgeW91IGNhbiB0aGVuIHByb3RlY3QgYWxsIG9yIHBhcnQgb2Yg
dGhhdCBVUkwgYnkgZWl0aGVyOg0KDQphKSB3cmFwcGluZyBhIHRhZyBhcm91bmQgdGhlIHBh
cnRzIHlvdSB3YW50IHByb3RlY3RpbmcNCmIpIHB1dHRpbmcgYSBwcm90ZWN0aW9uIHRhZyBh
dCB0aGUgdG9wIG9mIHRoZSBwYWdlIHRvIHByb3RlY3QgaXRzIGVudGlyZXR5DQpjKSBmbGFn
Z2luZyB0aGUgVVJMIGFzIGEgZmlsZV9kb3dubG9hZCB3aGVyZWJ5IGl0J3MgYXV0b21hdGlj
YWxseSByZXN0cmljdGVkIHRvIG9ubHkgdGhvc2UgaW4gcG9zc2Vzc2lvbiBvZiB0aGUga2V5
DQoNCkFuIGFjY2VzcyBrZXkgaXMgYSBsb25nIFVSTCB0aGF0IGxvb2tzIGxpa2UgdGhpczog
QHNpdGUuY29tL3NvbWUvcHJvdGVjdGVkL3VybC88dHJpZ2dlcj4vPHRva2VuPi88dGltZXN0
YW1wcz4uPG1heF9hY2Nlc3Nlcz5ALiBBbnkgZGV2aWF0aW9uIG9yIGFsdGVyYXRpb24gb2Yg
dGhlIHRva2VuIHJlc3VsdHMgaW4gcmVqZWN0aW9uLiBUaGUgc2VjcmV0IGtleSB1c2VkIHRv
IHByb3RlY3QgdGhlIHJlc291cmNlcyBjYW4gYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
YnkgdGhlIHBsdWdpbiBvciBzdXBwbGllZCBieSB5b3UuIEEgdXNlci1jb25maWd1cmFibGUg
c2FsdCBpcyBhcHBsaWVkIGFzIHdlbGwuIEZvciBiZXN0IHJlc3VsdHMsIGxldCB0aGUgcGx1
Z2luIGNob29zZSwgYmVjYXVzZSB0aGVuIG5vIHR3byBzZWNyZXQga2V5cy9zYWx0cyB3aWxs
IGV2ZXIgYmUgdGhlIHNhbWUsIGV2ZW4gaWYgdGhleSBwcm90ZWN0IHRoZSBleGFjdCBzYW1l
IHJlc291cmNlLg0KDQpZb3UgY2FuIHRpbWUtbGltaXQgdGhlIGFjY2VzcyB0byB0aGUgcmVz
b3VyY2UgaWYgeW91IGxpa2UgLS0gZnJvbSB0aGUgbW9tZW50IHRoZSBrZXkgaXMgZ2VuZXJh
dGVkIG9yIGZyb20gc29tZSBhcmJpdHJhcnkgcG9pbnQgaW4gdGhlIGZ1dHVyZSAtLSBhbmQv
b3IgeW91IGNhbiBsaW1pdCB0aGUgbnVtYmVyIG9mIGFjY2Vzc2VzICh2aWV3cy9kb3dubG9h
ZHMpIHRoYXQgcmVzb3VyY2UgY2FuIGhhdmUuIFdoZW4gdGhlIHJlc291cmNlIGhhcyBleHBp
cmVkLCBpdCdzIGdvbmUuDQoNCktleXMgY2FuIGJlIGdlbmVyYXRlZCBmcm9tIHRoZSBhZG1p
biBzaWRlIGludGVyZmFjZSAoX0V4dGVuc2lvbnMtPkFjY2VzcyBrZXlzXykgb3IgdmlhIGEg
cHVibGljIHRhZy4gVGhlIGxhdHRlciBhbGxvd3MgeW91IHRvIG9mZmVyIHNlbGYta2V5IGdl
bmVyYXRpb24sIHBlcmhhcHMgaW4gcmVzcG9uc2UgdG8gYSBtZW1fc2VsZl9yZWdpc3RlciBy
ZXF1ZXN0IG9yIHplbV9jb250YWN0X3JlYm9ybiBmb3JtIHN1Ym1pc3Npb24sIG9yIGZyb20g
YW4gYWRtaW4tc2lkZSBkYXNoYm9hcmQuDQoNCmgyLiBUYWc6IEA8dHhwOnNtZF9hY2Nlc3Nf
a2V5IC8+QA0KDQpHZW5lcmF0ZXMgYW4gYWNjZXNzIHRva2VuIGZvciBhIGdpdmVuIFVSTC4g
Q29uZmlndXJlIGl0IHVzaW5nIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoNCg0KOyAldXJs
JQ0KOiBUaGUgVVJMIG9mIHRoZSByZXNvdXJjZSB5b3Ugd2FudCB0byBwcm90ZWN0LiBDYW4g
YmUgZWl0aGVyIGEgZnVsbHktcXVhbGlmaWVkIFVSTCBvciByZWxhdGl2ZS4NCjogRGVmYXVs
dDogdGhlIGN1cnJlbnQgcGFnZQ0KOyAldHJpZ2dlciUNCjogVGhpcyBzdHJpbmcgaXMgYWRk
ZWQgdG8geW91ciB1cmwgc28gdGhlIHBsdWdpbiBrbm93cyBpdCBpcyBwcm90ZWN0ZWQgY29u
dGVudC4NCjogRGVmYXVsdDogQHNtZF9ha2V5QA0KOyAlc2l0ZV9uYW1lJQ0KOiBXaGV0aGVy
IHRvIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBzaXRlIG5hbWUgKGh0dHA6Ly9zaXRlLmNvbSkg
dG8gdGhlIFVSTCBvciBub3QuIENob29zZSBmcm9tOg0KOjogMDogbGVhdmUgdGhlIHNpdGUg
b3V0DQo6OiAxOiBhZGQgdGhlIHNpdGUgVVJMIChidXQgb25seSBpZiBpdHMgbm90IGluIHRo
ZSBVUkwgYWxyZWFkeSkNCjogRGVmYXVsdDogMQ0KOyAlc2VjdGlvbl9tb2RlJQ0KOiBJZiB5
b3UgYXJlIHRyeWluZyB0byBwcm90ZWN0IGEgc2VjdGlvbiBsYW5kaW5nIHBhZ2UgKGkuZS4g
bm90IGFuIGFydGljbGUpIHRoZW4geW91IHdpbGwgbGlrZWx5IHJlY2VpdmUgYSA0MDQgZXJy
b3Igd2hlbiB0cnlpbmcgdG8gYWNjZXNzIFVSTHMgdGhhdCBlbnRpcmVseSB1c2UgJy8nIGFz
IHRoZWlyIHNlcGFyYXRvci4gQnkgc2V0dGluZyBAc2VjdGlvbl9tb2RlPSIxIkAgeW91IHRl
bGwgdGhlIHBsdWdpbiB0byBzZXBhcmF0ZSB0aGUgcGFnZSBVUkwgZnJvbSB0aGUgYWNjZXNz
IGtleSBpbmZvcm1hdGlvbiB3aXRoIGEgJz8nIGluc3RlYWQuDQo6IE5vdGUgdGhpcyBtZWFu
cyB5b3UgY2Fubm90IHVzZSB0aGUgcGx1Z2luIHdpdGggdGhlIG1lc3N5IG1vZGUgVVJMIHN0
cnVjdHVyZSwgbm9yIGNhbiB5b3UgcGFzcyBhbnkgdHJhZGl0aW9uYWwgVVJMIHBhcmFtZXRl
cnMgdG8gdGhlIHBhZ2UuIFlvdSBjYW4sIGhvd2V2ZXIsIGVuY29kZSBzdWNoIHBhcmFtZXRl
cnMgaW50byB0aGUgQGV4dHJhQCBhcmVhIG9mIHRoZSBrZXkuDQo6IERlZmF1bHQ6IDANCjsg
JXNlY3JldCUNCjogQSBzZWNyZXQga2V5IHVzZWQgdG8gdW5sb2NrIHRoZSBwYWdlLiBDaG9v
c2UgYW55IHRleHQgeW91IHdpc2ggaGVyZSBvciBsZWF2ZSBibGFuayB0byBoYXZlIHRoZSBw
bHVnaW4gY2hvb3NlIGEgcmFuZG9tIG51bWJlciBmb3IgeW91Lg0KOyAlc3RyZW5ndGglDQo6
IFRoZSBtZWNoYW5pc20gdXNlZCB0byBnZW5lcmF0ZSB0aGUgc2FsdCwgb3IgdGhlIHNhbHQg
aXRzZWxmLiBJbiBhbGwgY2FzZXMsIHRoZSBzYWx0IGxlbmd0aCB3aWxsIGJlIGNvbnN0cmFp
bmVkIGJ5IHRoZSBwbHVnaW4gcHJlZmVyZW5jZSB2YWx1ZS4gQ2hvb3NlIGZyb20gdGhlIGZv
bGxvd2luZyBvcHRpb25zOg0KOiBAU01EX1NTTF9SQU5EQDogVXNlIFBIUCdzIGNyeXB0b2dy
YXBoaWNhbGx5LXNlY3VyZSBAb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKClAIGZ1bmN0
aW9uLCBpZiBhdmFpbGFibGUgKHJlcXVpcmVzIFBIUCA1LjMuMCspLiBJZiBpdCdzIG5vdCBh
dmFpbGFibGUsIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgU01EX01ENSBtZWNoYW5pc20uIEl0
IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBtaWdyYXRlIHRvIHRoaXMgc2NoZW1lIGlmIGF0
IGFsbCBwb3NzaWJsZS4NCjogQFNNRF9NRDVAOiBVc2Ugc3RhbmRhcmQgQG1kNSgpQCBhbmQg
QHVuaXFpZCgpQCBmdW5jdGlvbnMuIFRoZXNlIGFyZSAqbm90KiBjcnlwdG9ncmFwaGljYWxs
eSBzZWN1cmUsIGFuZCB3ZXJlIHRoZSBkZWZhdWx0IGZvciBwbHVnaW4gdmVyc2lvbnMgcHJp
b3IgdG8gdjAuMjAuDQo6IEA8eW91ciBvd24gc2FsdD5AOiBVc2UgeW91ciBvd24gc2FsdCB2
YWx1ZS4gVGhpcyBvcHRpb24gcGVybWl0cyB5b3UgdG8gZ2VuZXJhdGUgeW91ciBvd24gY3J5
cHRvZ3JhcGhpY2FsbHktc2VjdXJlIHNhbHQgaWYgeW91IHdpc2ggKGUuZy4gdG8gY29tcHV0
ZSBzb21lIHNhbHQgcHJpb3IgdG8gY2FsbGluZyB0aGlzIHRhZyBhbmQgaW5qZWN0aW5nIGl0
IGhlcmUpLiAqWW91ciBzYWx0IE1VU1QgY2hhbmdlIGV2ZXJ5IHRpbWUqIHVubGVzcyB5b3Ug
cmVhbGx5LCByZWFsbHkga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcsIGFuZCB0YWtlIHN1aXRh
YmxlIHByZWNhdXRpb25zLiBTZWUgIkV4YW1wbGUgNCI6I3NtZF9ha2V5X2VnNC4NCjsgJXN0
YXJ0JQ0KOiBBbiBFbmdsaXNoLWZvcm1hdHRlZCBkYXRlIHN0YW1wIGZyb20gd2hlbiB5b3Ug
d2FudCB0aGUgcmVzb3VyY2UgdG8gYmVjb21lIGF2YWlsYWJsZS4gSXQgaXMgb2Z0ZW4gYmVz
dCB0byB1c2UgQFlZWVktTU1NLUREIEhIOk1NOlNTQCBmb3JtYXQgYXMgaXQgaXMgdGhlIGxl
YXN0IGFtYmlndW91cy4NCjogRGVmYXVsdDogZW1wdHkgKGkuZS4gbm93KQ0KOyAlZXhwaXJl
cyUNCjogQW4gRW5nbGlzaC1mb3JtYXR0ZWQgZGF0ZSBzdGFtcCBhdCB3aGljaCB5b3Ugd2lz
aCB0aGUgcmVzb3VyY2UgdG8gZXhwaXJlLCBPUiBhbiBvZmZzZXQgYmVnaW5uaW5nIHdpdGgg
JysnLCBmb3IgZXhhbXBsZSBAZXhwaXJlcz0iKzI0IGhvdXJzIkANCjogRGVmYXVsdDogZW1w
dHkgKGkuZS4gbm8ga2V5IGV4cGlyeTogZ2V0IHRoZSBleHBpcnkgaW5mb3JtYXRpb24gZnJv
bSB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGl0c2VsZikNCjsgJW1heCUNCjogSWYgeW91IHdp
c2ggdG8gbGltaXQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIHJlc291cmNlIGNhbiBiZSBy
ZXF1ZXN0ZWQsIHNldCBpdHMgdmFsdWUgaGVyZS4NCjogRGVmYXVsdDogdW5zZXQgKGkuZS4g
dW5saW1pdGVkKQ0KOyAlZXh0cmElDQo6IElmIHlvdSB3YW50IHRvIGFkZCBhbnkgYWRkaXRp
b25hbCBpbmZvcm1hdGlvbiB0byB0aGUgVVJMIChhZnRlciB0aGUgdG9rZW4pIHRoZW4gc3Bl
Y2lmeSBpdCBoZXJlLiBJZiBzZXQsIGEgc2xhc2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgVVJM
IGFuZCB0aGVuIHlvdXIgZ2l2ZW4gY29udGVudCB3aWxsIGJlIGFwcGVuZGVkLiBJdCdzIHVw
IHRvIHlvdSB0byBlbnN1cmUgaXQgaXMgc3VpdGFibHkgZW5jb2RlZC4gTm90ZSB0aGF0IHlv
dSBjYW4gYWRkIG11bHRpcGxlIGl0ZW1zLCBzZXBhcmF0aW5nIGVhY2ggd2l0aCBhIHNsYXNo
IGNoYXJhY3RlciBpZiB5b3Ugd2lzaC4gQWRkaXRpb25hbCB2YWx1ZXMgYWRkZWQgdXNpbmcg
dGhpcyBhdHRyaWJ1dGUgYXJlIGRpcmVjdGx5IGFjY2Vzc2libGUgdXNpbmcgdGhlIEA8dHhw
OnNtZF9hY2Nlc3NfaW5mbyAvPkAgdGFnDQoNCkEgZmV3IHdvcmRzIGFib3V0IHRoaXMgdGFn
Og0KDQojIFRoZSBjbG9jayBzdGFydHMgdGlja2luZyB0aGUgbW9tZW50IHRoZSB0b2tlbiBp
cyBnZW5lcmF0ZWQgKG9yIGF0IHRoZSB0aW1lIGdpdmVuIGluIHRoZSBAc3RhcnRAIGF0dHJp
YnV0ZSkNCiMgWW91IGNhbiBwYXNzIHRoZSByZXR1cm5lZCBhY2Nlc3MgbGluayBhcm91bmQg
YXMgb2Z0ZW4gYXMgeW91IGxpa2UgdG8gYXMgbWFueSBwZW9wbGUgYXMgeW91IGxpa2UgYW5k
IGl0J2xsIGtlZXAgd29ya2luZyB1bnRpbCBpdHMgZXhwaXJ5L2FjY2VzcyBsaW1pdCBpcyBt
ZXQNCiMgRWFjaCB0aW1lIHlvdSBjcmVhdGUgYSBuZXcgdG9rZW4gKGV2ZW4gZm9yIHRoZSBz
YW1lIHBhZ2UpIGEgbmV3IGFjY2VzcyBjb3VudGVyIGlzIGdlbmVyYXRlZDsgYW55IHByZXZp
b3VzbHkgY3JlYXRlZCB0b2tlbnMgdGhhdCBzdGlsbCBoYXZlIGF2YWlsYWJsZSBhY2Nlc3Mg
YXR0ZW1wdHMgd2lsbCBjb250aW51ZSB0byBmdW5jdGlvbiB1bnRpbCB0aGUgbGltaXQgaXMg
cmVhY2hlZCBvciB0aGV5IGV4cGlyZQ0KIyBEaXJlY3QgVFhQIGZpbGUgZG93bmxvYWRzIGNh
biBiZSBwcm90ZWN0ZWQgdG9vLiBKdXN0IHN1cHBseSBAdHJpZ2dlcj0iZmlsZV9kb3dubG9h
ZCJAIGFuZCBAdXJsPSIvZmlsZV9kb3dubG9hZC88aWQ+LzxmaWxlbmFtZT4iQC4gWW91IHdp
bGwgdGhlbiBub3QgYmUgcGVybWl0dGVkIHRvIGFjY2VzcyB0aGUgc2l0ZS5jb20vZmlsZV9k
b3dubG9hZC88aWQ+IGxpbmsgd2l0aG91dCB0aGUgYWNjZXNzIHRva2VuIGJlaW5nIHByZXNl
bnQuIEZvciB0aGlzIHRvIGJlIGVmZmVjdGl2ZSB5b3Ugc2hvdWxkIG1vdmUgeW91ciBAL2Zp
bGVzQCBkaXJlY3Rvcnkgb3V0IG9mIGEgd2ViLWFjY2Vzc2libGUgbG9jYXRpb24gb3IgZW1w
bG95IGFuIC5odGFjY2VzcyBmaWxlIHRoYXQgZm9yYmlkcyBieXBhc3NpbmcgdGhlIEBzaXRl
LmNvbS9maWxlcy88ZmlsZW5hbWU+QCBVUkwgZm9ybWF0LiBOb3RlIHRoYXQgVFhQIG5vcm1h
bGx5IGFsbG93cyB5b3UgdG8gdHlwZSBhbnl0aGluZyBhZnRlciB0aGUgQC9pZC9AIGFzIGEg
ZmlsZW5hbWUgYW5kIHN0aWxsIHJldHJpZXZlIHRoZSBmaWxlOyBzbWRfYWNjZXNzX2tleSB3
aWxsIG5vdDogdGhlIGZpbGVuYW1lIG11c3QgbWF0Y2ggZXhhY3RseQ0KIyBJZiB0aGUgQHN0
YXJ0QCBkYXRlIGlzIG1hbmdsZWQgaW4gYW55IHdheSwgdGhlIGtleSB3aWxsIGJlIGdlbmVy
YXRlZCAnbm93Jw0KIyBJZiB0aGUgQGV4cGlyZXNAIGlzIG1hbmdsZWQgaW4gYW55IHdheSwg
bm8gZXB4aXJ5IHdpbGwgYmUgc2V0DQojIFlvdXIgc2VjcmV0IGtleSBpcyBzYWx0ZWQgdXNp
bmcgYSByYW5kb21seS1nZW5lcmF0ZWQgc2FsdCwgb3Igb25lIG9mIHlvdXIgb3duIGNob29z
aW5nLiBUaGUgZGVmYXVsdCBsZW5ndGggb2YgdGhlIHNhbHQgaXMgOCBjaGFyYWN0ZXJzIGJ1
dCB5b3UgY2FuICJhbHRlciB0aGlzIHZpYSBhIHByZWYiOiNzbWRfYWtleV9wcmVmcw0KIyBZ
b3UgbWF5IGNvbnRyb2wgdGhlIGV4cGlyeSB0aW1lIG9mIF9hbGxfIG9mIHlvdXIgZGlyZWN0
IGZpbGVfZG93bmxvYWQgVVJMcyBieSBhbHRlcmluZyBhICJwcmVmIjojc21kX2FrZXlfcHJl
ZnMNCg0KaDMuIEV4YW1wbGU6IENyZWF0aW5nIGEga2V5DQoNCmJjLiA8dHhwOnNtZF9hY2Nl
c3Nfa2V5DQogICAgIHVybD0iL211c2ljL25leHQtYmlnLWhpdCIgdHJpZ2dlcj0iZGVtbyIg
Lz4NCg0KVGhpcyBtaWdodCBnZW5lcmF0ZSBhbiBhY2Nlc3MtY29udHJvbGxlZCBVUkwgc3Vj
aCBhcyB0aGUgZm9sbG93aW5nIChuZXdsaW5lcyBqdXN0IGZvciBjbGFyaXR5KToNCg0KYmMu
IGh0dHA6Ly9zaXRlLmNvbS9tdXNpYy9uZXh0LWJpZy1oaXQvZGVtby8NCiAgICAgNDJjNTMx
ZDEzNDIzZWVjYWFhYjczYTJkZjQzYThiN2MzMzdhMzYwYS80ZDlkMTJhNQ0KDQpTZW5kIHRo
YXQgbGluayB0byB5b3VyIGZyaWVuZCBhbmQgc2hlJ2xsIGJlIGFibGUgdG8gbGlzdGVuIHRv
IHlvdXIgY29vbCBuZXcgZGVtbyBzb25nLg0KDQpoMi4gVGFnOiBAPHR4cDpzbWRfYWNjZXNz
X3Byb3RlY3QgLz5ADQoNCk9uY2UgeW91J3ZlIGdlbmVyYXRlZCBhIGtleSwgaXQncyB0aW1l
IHRvIHByb3RlY3QgYWxsIG9yIHBhcnQgb2YgeW91ciBjaG9zZW4gVVJMLg0KDQoqIFRvIHBy
b3RlY3QgYW4gZW50aXJlIHBhZ2UsIHB1dCB0aGUgQDx0eHA6c21kX2FjY2Vzc19wcm90ZWN0
PkAgdGFnIHJpZ2h0IGF0IHRoZSB0b3AsIGFib3ZlIHlvdXIgRE9DVFlQRQ0KKiBUbyBvbmx5
IHByb3RlY3QgcGFydCBvZiBhIHBhZ2UsIHdyYXAgdGhlIHByb3RlY3RlZCBjb250ZW50IHdp
dGggdGhlIHRhZw0KKiBGaWxlIGRvd25sb2FkcyBhcmUgYXV0b21hdGljYWxseSBwcm90ZWN0
ZWQgaWYgeW91IGhhdmUgZ2VuZXJhdGVkIGEga2V5IGZvciB0aGVtDQoNCkNvbmZpZ3VyZSB0
aGUgcGx1Z2luIHdpdGggdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOg0KDQo7ICV0cmlnZ2Vy
JQ0KOiBUaGUgc2FtZSB0cmlnZ2VyIHlvdSBzcGVjaWZpZWQgaW4geW91ciBAPHR4cDpzbWRf
YWNjZXNzX2tleSAvPkAgdGFnLiBZb3UgbWF5IHNwZWNpZnkgYSBwYXJ0aWFsIHRyaWdnZXIg
aWYgdXRpbGlzaW5nIEB0cmlnZ2VyX21vZGVALg0KOiBEZWZhdWx0OiBAc21kX2FrZXlADQo7
ICV0cmlnZ2VyX21vZGUlDQo6IFVzdWFsbHkgeW91J2xsIHdhbnQgdGhlIHRyaWdnZXIgdG8g
bWF0Y2ggZXhhY3RseSwgYnV0IHlvdSBtYXkgd2lzaCB0byBtYXRjaCBzb21lIHBhcnQgb2Yg
dGhlIHRyaWdnZXIgKGZvciBhIHByYWN0aWNhbCBleGFtcGxlIG9mIHRoaXMsIHNlZSAiZXhh
bXBsZSAzIjojc21kX2FrZXlfZWczKS4gQ2hvb3NlIGZyb206DQo6OiAqZXhhY3QqIDogKGRl
ZmF1bHQpIGluY29taW5nIHRva2VuJ3MgdHJpZ2dlciBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhl
IEB0cmlnZ2VyQCBhdHRyaWJ1dGUNCjo6ICpiZWdpbnMqIDogaW5jb21pbmcgdG9rZW4ncyB0
cmlnZ2VyIG11c3QgYmVnaW4gd2l0aCBAdHJpZ2dlckANCjo6ICplbmRzKiA6IGluY29taW5n
IHRva2VuJ3MgdHJpZ2dlciBtdXN0IGVuZCB3aXRoIEB0cmlnZ2VyQA0KOjogKmNvbnRhaW5z
KiA6IGluY29taW5nIHRva2VuJ3MgdHJpZ2dlciBtdXN0IGNvbnRhaW4gdGhlIHRleHQgZ2l2
ZW4gaW4gQHRyaWdnZXJADQo6IERlZmF1bHQ6IEBleGFjdEANCjsgJXNpdGVfbmFtZSUNCjog
QWRkIHRoZSBzaXRlIHByZWZpeCB0byB0aGUgVVJMIHdoZW4gdHJ5aW5nIHRvIGZpZ3VyZSBv
dXQgaWYgdGhlIHJlc291cmNlIGlzIHByb3RlY3RlZC4gVGhpcyBmdW5jdGlvbnMgaWRlbnRp
Y2FsbHkgdG8gdGhlIGF0dHJpYnV0ZSBpbiB0aGUgQDx0eHA6c21kX2FjY2Vzc19rZXkgLz5A
IHRhZyBhbmQsIGlkZWFsbHksIHRoZXkgc2hvdWxkIG1hdGNoLg0KOiBEZWZhdWx0OiAxICh5
ZXMpDQo7ICVzZWN0aW9uX21vZGUlDQo6IFdvcmtzIGluIGFuIGlkZW50aWNhbCBtYW5uZXIg
dG8gdGhlIGF0dHJpYnV0ZSBpbiB0aGUgQDx0eHA6c21kX2FjY2Vzc19rZXkgLz5AIHRhZyBh
bmQgdGhleSBzaG91bGQgbWF0Y2guDQo6IERlZmF1bHQ6IDAgKG5vKQ0KOyAlZm9yY2UlDQo6
IENvbnRyb2xzIGNvbnRlbnQgYXZhaWxhYmlsaXR5LiBUaGlzIGlzIG9uZSBtZXRob2Qgb2Yg
cHV0dGluZyB0aGUgdG9rZW4gZ2VuZXJhdGlvbiB0YWcgYW5kIHRoZSBwcm90ZWN0ZWQgY29u
dGVudCBvbiB0aGUgc2FtZSBwYWdlLiBDaG9vc2UgZnJvbToNCjo6IDA6IHBlcm1pdCB0aGUg
cmVzb3VyY2UgdG8gYmUgZGlyZWN0bHkgYWNjZXNzaWJsZQ0KOjogMTogdGhlIGNvbnRlbnQg
aXMgdW5hdmFpbGFibGUgZXZlbiBpZiB5b3UgX2Rvbid0XyBzcGVjaWZ5IHRoZSBhY2Nlc3Mg
dG9rZW4gaW4gdGhlIFVSTCAoZS5nLiBpZiB5b3UgZGlyZWN0bHkgdmlzaXQgQC9tdXNpYy9u
ZXh0LWJpZy1oaXRAKQ0KOiBEZWZhdWx0OiAwDQo7ICVleHBpcmVzJQ0KOiBUaGUgdGltZSwg
aW4gc2Vjb25kcywgYWZ0ZXIgd2hpY2ggdGhlIHJlc291cmNlIHdpbGwgY2Vhc2UgdG8gYmUg
YXZhaWxhYmxlLiBTZXQgdG8gMCBmb3IgdW5saW1pdGVkIHRpbWUuDQo6IElmIHlvdSBoYXZl
IHNldCBhbiBleHBpcnkgaW4gdGhlIGtleSBpdHNlbGYsIHRoaXMgYXR0cmlidXRlIGlzIGln
bm9yZWQgd2hlbiB0aGF0IGtleSBpcyBwcmVzZW50ZWQuDQo6IERlZmF1bHQ6IDM2MDAgKDEg
aG91cikNCg0KKGlmIHlvdSB3aXNoIHRvIGxvZyBJUCBhZGRyZXNzZXMgZm9yIGVhY2ggYWNj
ZXNzIGF0dGVtcHQgeW91IGNhbiBzZXQgdGhlICJwcmVmIjojc21kX2FrZXlfcHJlZnMpDQoN
CkluIG91ciBtdXNpYyBleGFtcGxlIHlvdSdsbCBwcm9iYWJseSB3YW50IHRvIHB1dCB0aGUg
Zm9sbG93aW5nIHRhZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlOg0KDQpiYy4gPHR4cDpzbWRf
YWNjZXNzX3Byb3RlY3QgZXhwaXJlcz0iODY0MDAiIHRyaWdnZXI9ImRlbW8iIGZvcmNlPSIx
IiAvPg0KDQpTbyBub2JvZHkgY2FuIHZpc2l0IHRoYXQgcGFnZSB1bmxlc3MgdGhleSBoYXZl
IGJlZW4gZ2l2ZW4gYSB2YWxpZCBhY2Nlc3MgdG9rZW4gVVJMLiBUaGUgc29uZyB3aWxsIGJl
IGF2YWlsYWJsZSBmb3IgbGlzdGVuaW5nIGZvciBqdXN0IG9uZSBkYXkgZnJvbSB0aGUgbW9t
ZW50IHRoZSB0b2tlbiBpcyBnZW5lcmF0ZWQuDQoNCkFsdGVybmF0aXZlbHksIHlvdSBtaWdo
dCBhbGxvdyBwZW9wbGUgdG8gc2VlIHRoZSBzdXJyb3VuZGluZyBwYWdlIGFuZCBqdXN0IHdy
YXAgdGhlIG1wMyBpdHNlbGYgd2l0aCB0aGUgdGFnOg0KDQpiYy4gPHR4cDpzbWRfYWNjZXNz
X3Byb3RlY3QgZXhwaXJlcz0iODY0MDAiIHRyaWdnZXI9ImRlbW8iPg0KICA8b2JqZWN0IHR5
cGU9Ii9hdWRpby9tcGVnIiBkYXRhPSIvbXVzaWMvbmV4dC1iaWctaGl0Lm1wMyIgLz4NCjwv
dHhwOnNtZF9hY2Nlc3NfcHJvdGVjdD4NCg0KTm90ZSB0aGF0IHlvdSBjYW4gcHJvdGVjdCBh
cyBtYW55IHBhcnRzIG9mIHRoZSBzYW1lIHBhZ2UgYXMgeW91IGxpa2UsIGRpZmZlcmluZyBv
bmx5IGluIHRoZSBAdHJpZ2dlckAuIFRoaXMgYWxsb3dzIHlvdSB0byB1bmxvY2sgdmFyaW91
cyBwYXJ0cyBvZiB5b3VyIHBhZ2VzIHRvIGRpZmZlcmVudCBwZW9wbGUgYW5kIHNldCBpbmRp
dmlkdWFsIGV4cGlyeSB0aW1lcyBmb3IgZWFjaCBwb3J0aW9uIG9mIHRoZSBwYWdlLCBvciBz
ZXQgZXhwaXJ5IHRpbWVzIGluIHRoZSBhY2Nlc3MgdG9rZW5zIHRoZW1zZWx2ZXMuDQoNCkFu
b3RoZXIgb3B0aW9uIGlzIGlzIHRvIGVsZWN0IHRvIGNyZWF0ZSB0aGUgYWNjZXNzIGtleSBk
aXJlY3RseSBmb3IgdGhlIGZpbGVfZG93bmxvYWQgaXRzZWxmLiBJZiB5b3UncmUgZmVlbGlu
ZyBwYXJhbm9pZCB5b3UgY291bGQgZG8gYm90aCA6LSkNCg0KaDIuIFRhZzogQDx0eHA6c21k
X2lmX2FjY2Vzc19lcnJvciAvPkANCg0KQ29uZGl0aW9uYWwgdGFnIHRoYXQgdHJpZ2dlcnMg
dGhlIGNvbnRhaW5lZCBjb250ZW50IGlmIGFjY2VzcyB3YXMgZGVuaWVkIGZvciBzb21lIHJl
YXNvbi4gIFN1cHBvcnRzIEA8dHhwOmVsc2UgLz5ALiBBdHRyaWJ1dGVzOg0KDQo7ICV0eXBl
JQ0KOiBDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93
aW5nIGFjY2VzcyB0eXBlcy4gVGhlIGNvcnJlc3BvbmRpbmcgSFRUUCBlcnJvciBzdGF0dXMg
Y29kZSB0aHJvd24gaXMgZ2l2ZW4gaW4gcGFyZW50aGVzZXM6DQo6OiAqc21kX2FrZXlfZXJy
X2JhZF90b2tlbiogKDQwMykgOiBpZiB0aGUgYWNjZXNzIHRva2VuIGluIHRoZSBVUkwgaXMg
dG9vIGxvbmcvc2hvcnQNCjo6ICpzbWRfYWtleV9lcnJfZXhwaXJlZCogKDQxMCkgOiAgaWYg
dGhlIHJlc291cmNlIGhhcyBwYXNzZWQgaXRzIGV4cGlyeQ0KOjogKnNtZF9ha2V5X2Vycl9m
b3JiaWRkZW4qICg0MDEpIDogdHJpZ2dlcmVkIGlmIHRoZSBAZm9yY2VAIGF0dHJpYnV0ZSBp
cyBzZXQgYW5kIGRpcmVjdCBhY2Nlc3MgaGFzIGJlZW4gcmVxdWVzdGVkDQo6OiAqc21kX2Fr
ZXlfZXJyX2ludmFsaWRfdG9rZW4qICg0MDMpIDogdGhlIGFjY2VzcyBrZXkgaW4gdGhlIFVS
TCBkb2Vzbid0IG1hdGNoIHRoZSBvbmUgdXNlZCB0byBwcm90ZWN0IHRoZSByZXNvdXJjZQ0K
OjogKnNtZF9ha2V5X2Vycl9saW1pdCogKDQxMCkgOiB0aGUgbnVtYmVyIG9mIHBlcm1pdHRl
ZCB2aWV3cyAoc3BlY2lmaWVkIHZpYSB0aGUgQG1heEAgYXR0cmlidXRlKSBoYXMgYmVlbiBl
eGNlZWRlZA0KOjogKnNtZF9ha2V5X2Vycl9taXNzaW5nX3RpbWVzdGFtcCogKDQwMykgOiB0
aGUgdGltZXN0YW1wIHBvcnRpb24gb2YgdGhlIGFjY2VzcyBrZXkgaXMgbWlzc2luZyBmcm9t
IHRoZSBVUkwNCjo6ICpzbWRfYWtleV9lcnJfdW5hdmFpbGFibGUqICg0MTApIDogdGhlIHJl
c291cmNlIGlzbid0IHlldCBhdmFpbGFibGUgKHRoZSBzdGFydCB0aW1lIGhhc24ndCBiZWVu
IHJlYWNoZWQpDQo6OiAqc21kX2FrZXlfZXJyX3VuYXV0aG9yaXplZCogKDQwMSkgOiB0aGUg
cmVzb3VyY2UgaXNuJ3Qgb25lIHRoYXQgaGFzIGJlZW4gcHJvdGVjdGVkIGJ5IHRoaXMgYWNj
ZXNzIGtleQ0KOyAlY29kZSUNCjogQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2Ygb25lIG9yIG1v
cmUgb2YgdGhlIGFjY2VzcyBjb2RlcyBnaXZlbiBpbiB0aGUgYWJvdmUgbGlzdA0KDQpXaXRo
b3V0IGFueSBhdHRyaWJ1dGVzLCB0aGUgdGFnIHRyaWdnZXJzIHRoZSBjb250YWluZWQgY29u
dGVudCBvbiBhbnkgZXJyb3IuIElmIHlvdSBzcGVjaWZ5IG1hbnkgQHR5cGVAcyB0aGVuIF9h
bnlfIG9mIHRoZSBsaXN0ZWQgdHlwZXMgdGhhdCBtYXRjaCB3aWxsIHJldHVybiB0cnVlLiBU
aGUgc2FtZSBnb2VzIGZvciBAY29kZUBzLiBJZiB5b3UgdXNlIHRoZSB0d28gaW4gdGFuZGVt
IHRoZW4gdGhlIGVycm9yIG11c3QgbWF0Y2ggb25lIG9mIHRoZSB0eXBlcyBBTkQgb25lIG9m
IHRoZSBjb2RlcyB0byByZXR1cm4gdHJ1ZS4NCg0KaDIuIFRhZzogQDx0eHA6c21kX2FjY2Vz
c19lcnJvciAvPkANCg0KRGlzcGxheSBhbiBhY2Nlc3MgZXJyb3IgbWVzc2FnZS9jb2RlLiBU
eXBpY2FsbHkgdXNlZCBpbnNpZGUgQDx0eHA6c21kX2lmX2FjY2Vzc19lcnJvcj5ALiBBdHRy
aWJ1dGVzOg0KDQo7ICVpdGVtJQ0KOiBXaGljaCBlcnJvciBpbmZvcm1hdGlvbiB0byBkaXNw
bGF5LiBDb21tYS1zZXBhcmF0ZSB0aGUgdmFsdWVzIGlmIHlvdSB3aXNoIHRvIHVzZSBib3Ro
LiBDaG9vc2UgZnJvbToNCjo6IEBtZXNzYWdlQDogdGhlIGVycm9yIHN0cmluZw0KOjogQGNv
ZGVAOiB0aGUgc3RhdHVzIGNvZGUNCjogRGVmYXVsdDogQG1lc3NhZ2VADQo7ICVtZXNzYWdl
JQ0KOiBEaXNwbGF5IHRoaXMgbWVzc2FnZSBpbnN0ZWFkIG9mIHRoZSBwbHVnaW4gZGVmYXVs
dCBtZXNzYWdlLg0KOyAld3JhcHRhZyUNCjogSFRNTCB0YWcgKHdpdGhvdXQgYW5nbGUgYnJh
Y2tldHMpIHRvIHdyYXAgYXJvdW5kIHRoZSBvdXRwdXQuDQo7ICVjbGFzcyUNCjogQ1NTIGNs
YXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWcuDQo7ICVodG1sX2lkJQ0KOiBIVE1M
IElEIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLg0KOyAlYnJlYWslDQo6IEhUTUwgdGFnICh3
aXRob3V0IGFuZ2xlIGJyYWNrZXRzKSB0byB3cmFwIGFyb3VuZCBlYWNoIGl0ZW0uDQo7ICVi
cmVha2NsYXNzJQ0KOiBDU1MgY2xhc3MgbmFtZSB0byBhcHBseSB0byBlYWNoIGJyZWFrIHRh
Zw0KDQpoMi4gVGFnOiBAPHR4cDpzbWRfYWNjZXNzX2luZm8gLz5ADQoNCkRpc3BsYXkgYWNj
ZXNzIGluZm9ybWF0aW9uIGZyb20gdGhlIGN1cnJlbnQgcHJvdGVjdGVkIHBhZ2UuIEF0dHJp
YnV0ZXM6DQoNCjsgJWl0ZW0lDQo6IE9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgaXRl
bXMgKGNvbW1hLWRlbGltaXRlZCk6DQo6OiAqcGFnZSogOiB0aGUgVVJMIHRoYXQgbWF0Y2hl
cyB0aGUgY3VycmVudCBhY2Nlc3Mga2V5DQo6OiAqdHJpZ2dlciogOiB0aGUgdHJpZ2dlciBm
b3IgdGhlIGN1cnJlbnQga2V5LCBhcyBnaXZlbiBpbiB0aGUgVVJMDQo6OiAqbWF4aW11bSog
OiB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWNjZXNzIGF0dGVtcHRzIGFsbG93ZWQgZm9yIHRo
aXMga2V5DQo6OiAqYWNjZXNzZXMqIDogdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGFjY2VzcyBh
dHRlbXB0cyB0aGF0IGhhdmUgYmVlbiBtYWRlIGZvciB0aGlzIGtleQ0KOjogKm5vdyogOiB0
aGUgcmF3IFVOSVggdGltZXN0YW1wIG9mIHRoZSB0aW1lIHRoZSBhY2Nlc3MgYXR0ZW1wdCB3
YXMgbWFkZQ0KOjogKmlzc3VlZCogOiB0aGUgcmF3IFVOSVggdGltZXN0YW1wIG9mIHdoZW4g
dGhlIGN1cnJlbnQga2V5IHdhcyBjcmVhdGVkDQo6OiAqZXhwaXJlcyogOiB0aGUgcmF3IFVO
SVggdGltZXN0YW1wIG9mIHdoZW4gdGhlIGN1cnJlbnQga2V5IGV4cGlyZXMNCjo6ICpoZXh0
aW1lKiA6IHRoZSBVTklYIHRpbWVzdGFtcCBvZiB3aGVuIHRoZSBjdXJyZW50IGtleSB3YXMg
Y3JlYXRlZCwgZW5jb2RlZCBhcyBhIGhleCBzdHJpbmcgKGFzIHVzZWQgaW4gdGhlIFVSTCkN
Cjo6ICppcCogOiB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgcmVtb3RlIGFkZHJlc3MgbWFraW5n
IHRoZSByZXF1ZXN0IChpZiBhdmFpbGFibGUpDQo6OiAqZXh0cmEqIDogdGhlIGZ1bGwgc3Ry
aW5nIGFzIGdpdmVuIGluIHRoZSBAZXh0cmFAIGF0dHJpYnV0ZQ0KOjogKmV4dHJhX04qICh3
aGVyZSBOIGlzIGFuIGludGVnZXIgYmVnaW5uaW5nIGF0IDEpIDogaWYgeW91IGhhdmUgc3Bl
Y2lmaWVkIG1hbnkgdmFsdWVzIGluIHlvdXIgQGV4dHJhQCwgZWFjaCBzZXBhcmF0ZWQgd2l0
aCBhIHNsYXNoLCB0aGlzIGRpc3BsYXlzIHRoZSBnaXZlbiBpbmRpdmlkdWFsIGl0ZW0NCjog
RGVmYXVsdDogQHBhZ2VADQo7ICVlc2NhcGUlDQo6IFdoZXRoZXIgdG8gZXNjYXBlIEhUTUwg
ZW50aXRpZXMgc3VjaCBhcyBAPEAsIEA+QCBhbmQgQCZAIGluIHRoZSBpdGVtLiBTZXQgQGVz
Y2FwZT0iIkAgdG8gdHVybiB0aGlzIG9mZi4NCjogRGVmdWFsdDogQGh0bWxADQo7ICVmb3Jt
YXQlDQo6IElmIGRpc3BsYXlpbmcgYSB0aW1lLXJlbGF0ZWQgaXRlbSAobm93LCBpc3N1ZWQs
IG9yIGV4cGlyZXMpIHlvdSBjYW4gZm9ybWF0IGl0IHVzaW5nIHRoZSAic3RyZnRpbWUoKSBm
b3JtYXR0aW5nIGNvZGVzIjpodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uc3Ry
ZnRpbWUucGhwLg0KOiBEZWZhdWx0OiBAJVktJW0tJWQgJUg6JU06JVNADQo7ICV3cmFwdGFn
JQ0KOiBIVE1MIHRhZyAod2l0aG91dCBhbmdsZSBicmFja2V0cykgdG8gd3JhcCBhcm91bmQg
dGhlIG91dHB1dC4NCjsgJWNsYXNzJSA6DQpDU1MgY2xhc3MgbmFtZSB0byBhcHBseSB0byB0
aGUgd3JhcHRhZy4NCjsgJWh0bWxfaWQlDQo6IEhUTUwgSUQgdG8gYXBwbHkgdG8gdGhlIHdy
YXB0YWcuDQo7ICVicmVhayUNCjogSFRNTCB0YWcgKHdpdGhvdXQgYW5nbGUgYnJhY2tldHMp
IHRvIHdyYXAgYXJvdW5kIGVhY2ggaXRlbS4NCjsgJWJyZWFrY2xhc3MlDQo6IENTUyBjbGFz
cyBuYW1lIHRvIGFwcGx5IHRvIGVhY2ggYnJlYWsgdGFnLg0KDQpoMi4gQWRtaW4gc2lkZSBp
bnRlcmZhY2UNCg0KVW5kZXIgX0V4dGVuc2lvbnMtPkFjY2VzcyBrZXlzXyB5b3Ugd2lsbCBz
ZWUgYSBsaXN0IG9mIGFsbCBrZXlzIHRoYXQgaGF2ZSBiZWVuIGdlbmVyYXRlZC4gWW91IGNh
biBzb3J0IHRoZSBsaXN0IChhc2NlbmRpbmcgb3IgZGVzY2VuZGluZykgYnkgY2xpY2tpbmcg
dGhlIGhlYWRpbmdzIG9yIHlvdSBjYW4gZmlsdGVyIHRoZW0gdXNpbmcgdGhlIHNlbGVjdCBs
aXN0IGFuZCB0ZXh0IGJveCBhdCB0aGUgdG9wLiBUaGUgdXN1YWwgbXVsdGktZWRpdCB0b29s
cy9jaGVja2JveGVzIGFyZSBhdmFpbGFibGUgdG8gYWxsb3cgeW91IHRvIGJhdGNoLWRlbGV0
ZSBrZXlzLg0KDQpJZiB5b3Ugd2FudCB0byBtYW51YWxseSBjcmVhdGUgYW4gYWNjZXNzIGtl
eSwgY2xpY2sgX05ldyBrZXlfIGFuZCBmaWxsIGluIGFzIG1hbnkgb2YgdGhlIHRleHQgYm94
ZXMgYXMgeW91IHdpc2guIFRoZSBvbmx5IG9uZSB0aGF0IGlzIG1hbmRhdG9yeSBpcyB0aGUg
X1BhZ2VfIGJveC4gWW91ciBhY2Nlc3Mga2V5IHdpbGwgYmUgZ2VuZXJhdGVkIGFuZCBkaXNw
bGF5ZWQgaW4gdGhlIG1lc3NhZ2UgYXJlYSBmb3IgeW91IHRvIGNvcHkgYW5kIHBhc3RlLg0K
DQpBIGZldyB0aGluZ3MgdG8gbm90ZSBhYm91dCB0aGUgbGlzdDoNCg0KKiBJZiB5b3UgaGF2
ZSBlbGVjdGVkIHRvIGxvZyBJUCBhZGRyZXNzZXMgKHNlZSAicHJlZnMiOiNzbWRfYWtleV9w
cmVmcykgdGhlIElQcyBvZiBhbGwga2V5LWJhc2VkIGFjY2VzcyBhdHRlbXB0cyBhcmUgbG9n
Z2VkLiBGdXJ0aGVyLCBpZiB5b3UgaGF2ZSBUWFAgdmlzaXRvciBsb2dnaW5nIGVuYWJsZWQs
IHRoZSBhZGRyZXNzZXMgaW4gdGhlICdJUCcgY29sdW1uIGFyZSBoeXBlcmxpbmtlZCB0byB0
aGUgVmlzaXRvciBMb2dzIHRvIHNob3cgeW91IGFsbCBhY2Nlc3NlcyBieSB0aGUgY2xpY2tl
ZCBJUC4gQWx0aG91Z2ggdGhlIHBsdWdpbiBjYW4gcG90ZW50aWFsbHkgaG9sZCBvdmVyIDE2
MDAgSVAgYWRkcmVzc2VzIHRoZSBpbnRlcmZhY2UgbWlnaHQgY3J1bWJsZSBiZWZvcmUgeW91
IHJlYWNoIHRoaXMgbGltaXQgc28gaXQncyBiZXN0IHRvIHRyeSBhbmQgbGltaXQgdGhlIG51
bWJlciBvZiBhY2Nlc3NlcyBwZXIga2V5IHRvIGtlZXAgdGhlIG51bWJlciBvZiBhdHRlbXB0
cyBsb3cgYW5kIG1ha2UgdGhlIGludGVyZmFjZSBtYW5hZ2VhYmxlDQoqIFRoZSBQYWdlIGlz
IGh5cGVybGlua2VkIHRvIHRoZSBwcm90ZWN0ZWQgVVJMIGJ1dCBpdCBkb2VzIF9ub3RfIGF0
dGVtcHQgdG8gYWNjZXNzIGl0IHdpdGggdGhlIGtleS4gSXQgaXMganVzdCBhIGNvbnZlbmll
bmNlIGZvciB5b3UgdG8gY2hlY2sgdGhhdCB0aGUgcGFnZSBpcyBwcm90ZWN0ZWQuIElmIHlv
dSB3YW50IHRvIGFjY2VzcyB0aGUgcGFnZSB2aWEgaXRzIGtleSB5b3UgY2FuIGRvIHNvIGZy
b20gdGhlIFZpc2l0b3IgTG9ncywgYXNzdW1pbmcgc29tZW9uZSBoYXMgdHJpZWQgYXQgbGVh
c3Qgb25jZSB0byBhY2Nlc3MgdGhlIHJlc291cmNlIC0tIHlvdSBjYW4ganVzdCBjbGljayB0
aGUgcmVsZXZhbnQgdmlzaXRvciBsb2cgUGFnZSBlbnRyeSB3aGljaCBjb250YWlucyB0aGUg
ZnVsbCBhY2Nlc3Mga2V5IFVSTA0KKiBUaGUgbnVtYmVyIG9mIGFjY2Vzc2VzIG1heSBleGNl
ZWQgdGhlIG1heGltdW0gcGVybWl0dGVkLiBUaGlzIGlzIGJlY2F1c2UgYXR0ZW1wdHMgYXJl
IGxvZ2dlZCBhbGwgdGhlIHRpbWUgdGhlIHJlc291cmNlIGlzIGF2YWlsYWJsZSAoaS5lLiBo
YXMgbm90IGV4cGlyZWQpLiBSZXN0IGFzc3VyZWQgaWYgdGhlIG1heGltdW0gYWNjZXNzIGxp
bWl0IGhhcyBiZWVuIHJlYWNoZWQsIHZpc2l0b3JzIHdpdGggdmFsaWQga2V5cyB3aWxsIE5P
VCBzZWUgdGhlIHByb3RlY3RlZCBjb250ZW50LCBldmVuIHRob3VnaCB0aGUgY291bnRlciB3
aWxsIGNvbnRpbnVlIHRvIGxvZyByZXF1ZXN0cy4gWW91IGNhbiB1c2UgdGhpcyBpbmZvcm1h
dGlvbiB0byBjaGVjayB0aGUgVFhQIFZpc2l0b3IgTG9ncyBmb3IgSVAgYWRkcmVzc2VzIHRo
YXQgdHJ5IHRvIGFjY2VzcyBhIHJlc291cmNlIGFmdGVyIHRoZSBsaW1pdCBoYXMgYmVlbiBy
ZWFjaGVkLiBBcyBzb29uIGFzIHRoZSByZXNvdXJjZSBleHBpcmVzLCBhY2Nlc3MgY291bnRp
bmcgY2Vhc2VzDQoqIFRoZSB0cmlnZ2VyIGZvciBmaWxlIGRvd25sb2FkcyBpcyBlbXB0eS4g
VGhpcyBpcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSB3YXkgdGhlIHBsdWdpbiBvcGVyYXRlcyBi
dXQgaXQgaGFzIGEgdXNlZnVsIGJvbnVzOiB5b3UgY2FuIGxlYXZlIHRoZSB0cmlnZ2VyIGJs
YW5rIGlmIHlvdXIgUGFnZSBVUkwgY29udGFpbnMgQC9maWxlX2Rvd25sb2FkQCAoYmVjYXVz
ZSB0aGUgdHJpZ2dlciBpdHNlbGYgaXMgdGhlIHByZXNlbmNlIG9mIEBmaWxlX2Rvd25sb2Fk
QCBpbiB0aGUgVVJMKQ0KDQpoMigjc21kX2FrZXlfcHJlZnMpLiBQcmVmZXJlbmNlcw0KDQpU
aGUgcGx1Z2luIGV4cG9zZXMgc29tZSBnbG9iYWwgcHJlZmVyZW5jZSBzZXR0aW5ncyB0aGF0
IGdvdmVybiBpdHMgb3BlcmF0aW9uOg0KDQo7ICVGaWxlIGRvd25sb2FkIGV4cGlyeSB0aW1l
JQ0KOiBUaW1lLCBpbiBzZWNvbmRzLCBhZnRlciB3aGljaCB5b3VyIGZpbGUgZG93bmxvYWRz
IHdpbGwgZXhwaXJlLCBmb2xsb3dpbmcgZ2VuZXJhdGlvbiBvZiBhbiBhY2Nlc3Mga2V5Lg0K
OiBEZWZhdWx0OiAzNjAwICgxIGhvdXIpDQo7ICVTYWx0IGxlbmd0aCUNCjogTnVtYmVyIG9m
IGNoYXJhY3RlcnMgdG8gdXNlIGFzIGEgc2FsdCBpbiB5b3VyIHNlY3JldCBrZXkuIFRoZSBk
ZWZhdWx0IGlzIHVzdWFsbHkgZmluZSBidXQgaWYgeW91IHdhbnQgdG8gYWx0ZXIgdGhpcyBm
b3IgZ3JlYXRlci9yZWR1Y2VkIHNlY3VyaXR5IHRoZW4gZG8gc28uIElNUE9SVEFOVDogaWYg
eW91IGNoYW5nZSB0aGlzIHZhbHVlLCBhbGwgeW91ciBleGlzdGluZyBhY2Nlc3Mga2V5cyBi
ZWNvbWUgaW5zdGFudGx5IGludmFsaWQuDQo6IERlZmF1bHQ6IDgNCjsgJUxvZyBJUCBhZGRy
ZXNzZXMlDQo6IFdoZXRoZXIgeW91IHdpc2ggdGhlIHBsdWdpbiB0byBsb2cgdGhlIElQIGFk
ZHJlc3Mgb2YgZWFjaCB2aXNpdG9yIHdobyB0cmllcyB0byBhY2Nlc3MgYSBwcm90ZWN0ZWQg
cmVzb3VyY2UNCjogRGVmYXVsdDogbm8NCg0KaDIoI3NtZF9ha2V5X2VnMSkuIEV4YW1wbGUg
MTogUHJvdGVjdCBwYXJ0IG9mIGEgcGFnZQ0KDQpiYy4gPHR4cDpzbWRfYWNjZXNzX3Byb3Rl
Y3QNCiAgICAgdHJpZ2dlcj0ibGVhZmxldHMiIGZvcmNlPSIxIiBleHBpcmVzPSI4NjQwMCI+
DQogICA8cD5Zb3VyIGxlYWZsZXQgY29udGVudHMgZ29lcyBoZXJlPC9wPg0KPHR4cDplbHNl
IC8+DQogICA8dHhwOnNtZF9pZl9hY2Nlc3NfZXJyb3INCiAgICAgdHlwZT0ic21kX2FrZXlf
ZXJyX2ZvcmJpZGRlbiI+DQogICAgICA8cD5CZWZvcmUgeW91IGNhbiBkb3dubG9hZCB0aGlz
IGl0ZW0sIHlvdSdsbCBuZWVkDQogICAgIGFuIGFjY2VzcyBrZXkuDQogICAgIDxhIGhyZWY9
Ijx0eHA6c21kX2FjY2Vzc19rZXkgbWF4PSI0Ig0KICAgICAgICB0cmlnZ2VyPSJsZWFmbGV0
cyIgLz4iPkhlcmUncyBvbmU8L2E+PC9wPg0KICAgPHR4cDplbHNlIC8+DQogICAgICA8dHhw
OnNtZF9hY2Nlc3NfZXJyb3IgaXRlbT0iY29kZSwgbWVzc2FnZSINCiAgICAgICAgICBicmVh
az0iYnIiIC8+DQogICA8L3R4cDpzbWRfaWZfYWNjZXNzX2Vycm9yPg0KPC90eHA6c21kX2Fj
Y2Vzc19wcm90ZWN0Pg0KDQpoMigjc21kX2FrZXlfZWcyKS4gRXhhbXBsZSAyOiBQcm90ZWN0
IG11bHRpcGxlIHJlc291cmNlcyB3aXRoIG9uZSB0YWcNCg0KYmMuIDx0eHA6c21kX2FjY2Vz
c19wcm90ZWN0DQogICAgIHRyaWdnZXI9ImxlYWZsZXQsIGJvb2siIGV4cGlyZXM9Ijg2NDAw
Ij4NCiAgIDxwPllvdXIgPHR4cDpzbWRfYWNjZXNzX2luZm8gaXRlbT0idHJpZ2dlciIgLz4N
CiAgICAgICAgICBjb250ZW50cyBnb2VzIGhlcmU8L3A+DQo8dHhwOmVsc2UgLz4NCiAgIDx0
eHA6c21kX2lmX2FjY2Vzc19lcnJvcj4NCiAgICAgIDx0eHA6c21kX2FjY2Vzc19lcnJvciBp
dGVtPSJjb2RlLCBtZXNzYWdlIg0KICAgICAgICAgIGJyZWFrPSJiciIgLz4NCiAgIDwvdHhw
OnNtZF9pZl9hY2Nlc3NfZXJyb3I+DQo8L3R4cDpzbWRfYWNjZXNzX3Byb3RlY3Q+DQoNCllv
dSBjYW4gdXNlIHNtZF9pZiwgb3IgYXNzaWduIHRoZSBvdXRwdXQgb2YgQDx0eHA6c21kX2Fj
Y2Vzc19pbmZvPkAgdG8gYSBAPHR4cDp2YXJpYWJsZT5AIGFuZCB1c2UgQDx0eHA6aWZfdmFy
aWFibGU+QCwgdG8gcGVyZm9ybSBjb25kaXRpb25hbCBkaXNwbGF5IG9mIGFjY2VzcyBrZXkg
aW5mb3JtYXRpb24uDQoNCmgyKCNzbWRfYWtleV9lZzMpLiBFeGFtcGxlIDM6IElzc3VlIGEg
cmVnaXN0cmF0aW9uIGFjdGl2YXRpb24gY29kZQ0KDQpJbiB5b3VyIHJlZ2lzdHJhdGlvbiBl
LW1haWwgZm9ybSwgeW91IGNvdWxkIHB1dCBzb21ldGhpbmcgbGlrZSB0aGlzOg0KDQpiYy4g
VGhhbmsgeW91IGZvciByZWdpc3RlcmluZyB3aXRoIDx0eHA6c2l0ZV9uYW1lIC8+Lg0KVG8g
YWN0aXZhdGUgeW91ciBhY2NvdW50LCBwbGVhc2UgdmlzaXQgdGhlIGZvbGxvd2luZw0KbGlu
ayB3aXRoaW4gdGhlIG5leHQgMjQgaG91cnM6DQo8dHhwOnNtZF9hY2Nlc3Nfa2V5IHVybD0i
L2FjY291bnQvYWN0aXZhdGUvIiBtYXg9IjEiDQogICAgIHRyaWdnZXI9J3VzZXJfaWQuPHR4
cDphdXRob3IgdGl0bGU9IjAiIC8+JyAvPg0KDQpPbmNlIHRoZSB2aXNpdG9yIGhhcyBzaWdu
ZWQgdXAgdGhleSBhcmUgZS1tYWlsZWQgYSB1bmlxdWUgYWNjZXNzIHRva2VuIHRvIHRoZSBA
L2FjY291bnQvYWN0aXZhdGVAIHBhZ2UuIFlvdSBjYW4gcHJvdGVjdCBpdCBsaWtlIHRoaXM6
DQoNCmJjLiA8dHhwOnNtZF9hY2Nlc3NfcHJvdGVjdCB0cmlnZ2VyPSJ1c2VyX2lkLiINCiAg
ICAgdHJpZ2dlcl9tb2RlPSJiZWdpbnMiIGV4cGlyZXM9Ijg2NDAwIiBmb3JjZT0iMSI+DQog
ICA8dHhwOmhpZGU+IEFjdGl2YXRpb24gYWN0aW9ucyBjb3VsZCBnbyBoZXJlIDwvdHhwOmhp
ZGU+DQogICA8cD5Db25ncmF0dWxhdGlvbnMsIHlvdXIgYWNjb3VudCBpcyBhY3RpdmF0ZWQu
PC9wPg0KPHR4cDplbHNlIC8+DQogICA8dHhwOnNtZF9hY2Nlc3NfZXJyb3IgLz4NCjwvdHhw
OnNtZF9hY2Nlc3NfcHJvdGVjdD4NCg0KSWYgbmVjZXNzYXJ5LCB5b3UgY291bGQgZW1wbG95
IEBzdHJfcmVwbGFjZSgpQCAob3IgQDx0eHA6cmFoX3JlcGxhY2UgLz5AKSB0byByZW1vdmUg
dGhlIEB1c2VyX2lkLkAgYW5kIGJlIGxlZnQgd2l0aCB0aGUgdXNlciBuYW1lIG9mIHRoZSBy
ZWdpc3RlcmVkIHVzZXIgbmFtZSwgc3VpdGFibGUgZm9yIGRpc3BsYXkuIEFsdGVybmF0aXZl
bHkgLS0gYW5kIHBlcmhhcHMgZWFzaWVyIC0tIHlvdSBjb3VsZCBwYXNzIHRoZSBhdXRob3Ig
YXMgYW4gQGV4dHJhQCBwYXJhbWV0ZXIgd2hlbiB0aGUga2V5IGlzIGdlbmVyYXRlZDoNCg0K
YmMuIDx0eHA6c21kX2FjY2Vzc19rZXkgdXJsPSIvYWNjb3VudC9hY3RpdmF0ZS8iIG1heD0i
MSINCiAgICAgdHJpZ2dlcj0idXNlcl9pZCIgZXh0cmE9Jzx0eHA6YXV0aG9yIHRpdGxlPSIw
IiAvPicgLz4NCg0KVGhpcyBhbGxvd3MgeW91IHRvIHVzZSB0aGUgZGVmYXVsdCBAdHJpZ2dl
cl9tb2RlQCBhbmQgaGFzIHRoZSBiZW5lZml0IHRoYXQgeW91IGNhbiBkaXJlY3RseSBhY2Nl
c3MgdGhlIGFkZGl0aW9uYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24gdXNpbmcgQDx0eHA6c21k
X2FjY2Vzc19pbmZvIGl0ZW09ImV4dHJhXzEiIC8+QC4NCg0KVGhlIEBleHRyYUAgYXR0cmli
dXRlIGlzIGV2ZW4gbW9yZSBwb3dlcmZ1bCBpZiB5b3UgcGFjayBtb3JlIGluZm9ybWF0aW9u
IGludG8gaXQ6IEBleHRyYT0nPHR4cDphdXRob3IgdGl0bGU9IjAiIC8+Lzx0eHA6c2VjdGlv
biAvPidALiBZb3UgY2FuIHJldHJpZXZlIGVhY2ggcGllY2UgaW5kaXZpZHVhbGx5Og0KDQoq
IEA8dHhwOnNtZF9hY2Nlc3NfaW5mbyBpdGVtPSJleHRyYSIgLz5AID0+IEBzZGF3c29uL2Fj
Y291bnRADQoqIEA8dHhwOnNtZF9hY2Nlc3NfaW5mbyBpdGVtPSJleHRyYV8xIiAvPkAgPT4g
QHNkYXdzb25ADQoqIEA8dHhwOnNtZF9hY2Nlc3NfaW5mbyBpdGVtPSJleHRyYV8yIiAvPkAg
PT4gQGFjY291bnRADQoNCk5vdGUgdGhhdCB5b3UgY2FuIG9ubHkgZXh0cmFjdCBlYWNoIHBp
ZWNlIGluZGl2aWR1YWxseSBpZiB5b3UgdXNlIGEgc2xhc2ggYXMgYSBzZXBhcmF0b3IgaW4g
eW91ciBAZXh0cmFAIGF0dHJpYnV0ZS4NCg0KaDIoI3NtZF9ha2V5X2VnNCkuIEV4YW1wbGUg
NDogVXNlIHRoZSBzYW1lIGtleQ0KDQpZb3Ugd2lsbCBvZnRlbiB1c2Ugc21kX2FjY2Vzc19r
ZXkgaW4gcmVzcG9uc2UgdG8gYSB1c2VyIGFjdGlvbiwgc3VjaCBhcyBwYXlpbmcgZm9yIGFj
Y2VzcyB0byBhIHJlc291cmNlLiBJbiB0aGlzIHNpdHVhdGlvbiwgeW91IHdvdWxkIG5vcm1h
bGx5IGVtYWlsIGFuIGFjY2VzcyBrZXkgdXBvbiBzdWNjZXNzZnVsIHBheW1lbnQuIEJ1dCBz
b21ldGltZXMgeW91IG1heSB3aXNoIHRvIHJldHVybiBjb250cm9sIHRvIHlvdXIgd2Vic2l0
ZSBhbmQgc2hvdyB0aGUgYWNjZXNzIGtleSBvbi1zY3JlZW4gc28gdGhlcmUgaXMgbm8gcGVy
bWFuZW50IHJlY29yZCBvZiBpdC4NCg0KVGhlIHRyb3VibGUgd2l0aCB0aGlzIGFwcHJvYWNo
IGlzIHRoYXQgaWYgdGhlIHBlcnNvbiByZWZyZXNoZXMgdGhlIHNjcmVlbiwgdGhleSB3aWxs
IGdldCBhIGRpZmZlcmVudCBhY2Nlc3Mga2V5IHRvIHRoZSBzYW1lIHJlc291cmNlLCB0aGVy
ZWJ5IGVmZmVjdGl2ZWx5IGhhdmluZyB0aGUgYWJpbGl0eSB0byBnZW5lcmF0ZSB1bmxpbWl0
ZWQga2V5cy4gVGhpcyBpcyB1bmRlc2lyYWJsZS4NCg0KRnJvbSB2MC4yMCBvbndhcmRzLCB5
b3UgbWF5IG5vdyBzcGVjaWZ5IHlvdXIgb3duIHNhbHQsIHdoaWNoIGNhbiBiZSB1c2VkIHRv
IGNyZWF0ZSBhIHN0YXRpYyBrZXkuIEJ1dCBpdCBjb21lcyB3aXRoIHNvbWUgaW1wb3J0YW50
IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zOg0KDQoqIFlvdXIgc2FsdCBpcyBpbmNsdWRlZCBp
biB0aGUgYWNjZXNzIGtleSBpdHNlbGYgYW5kIGlzIHRodXMgcGxhaW5seSB2aXNpYmxlLiBU
aGlzIGlzIG5vdCBub3JtYWxseSBhIHNlY3VyaXR5IGNvbmNlcm4gYmVjYXVzZSB0aGUgc2Vj
cmV0IGtleSBwcm90ZWN0cyB0aGUgdG9rZW4sIGJ1dCB0byBtYWtlIGEgZml4ZWQga2V5IHlv
dSBuZWVkIGEgc3RhdGljIHNlY3JldCBrZXkgdG9vLg0KKiBBIHN0YXRpYyBzZWNyZXQga2V5
ICptdXN0KiBzdGlsbCBiZSB1bmlxdWUgdG8gdGhlIHRyYW5zYWN0aW9uLiBOZXZlciBzaGFy
ZSBhIHNlY3JldCBrZXkgYmV0d2VlbiB0cmFuc2FjdGlvbnMgb3IgdXNlcnMgb3IgY29ubmVj
dGlvbnMuDQoqIFlvdSB3aWxsIGFsc28gbmVlZCB0byB1c2UgYSBzdGF0aWMgQHN0YXJ0QCBk
YXRlIGFuZCB0aW1lLiBJbiB0aGlzIHNpdHVhdGlvbiwgYSBnb29kIHZhbHVlIHRvIHVzZSB3
b3VsZCBiZSB0aGUgb3JkZXIgdGltZS4NCg0KVG8gdW5kZXJzdGFuZCB0aGlzIGZ1bGx5LCBp
dCdzIGltcG9ydGFudCB0byBncmFzcCBob3cgYW4gYWNjZXNzIHRva2VuIGlzIGdlbmVyYXRl
ZC4gSXQgY29uc2lzdHMgb2YgdGhyZWUgcGFydHM6DQoNCiogQSBzZWNyZXQga2V5IChyYW5k
b20gc3RyaW5nIG9mIGhleCBkaWdpdHMpLCB3aGljaCBpcyB1c3VhbGx5IGdlbmVyYXRlZCBh
dCBydW50aW1lIGFuZCBpcyB1bmlxdWUuDQoqIEEgc2FsdCAocmFuZG9tIHN0cmluZyBvZiBo
ZXggZGlnaXRzKSwgYWdhaW4sIHVuaXF1ZWx5IGdlbmVyYXRlZCBhdCBydW50aW1lLg0KKiBB
IHRpbWVzdGFtcCAoWVlZWS1NTS1ERCBISDptbTpzcykgd2hpY2ggZGVmYXVsdHMgdG8gJ25v
dycsIGkuZS4gdGhlIHZlcnkgaW5zdGFudCB0aGUgQDx0eHA6c21kX2FjY2Vzc19rZXkgLz5A
IHRhZyBpcyByZW5kZXJlZC4NCg0KQXNzdW1pbmcgdGhlIFVSTCBvZiB0aGUgcmVzb3VyY2Ug
ZG9lc24ndCBjaGFuZ2UsIGlmIGFsbCB0aHJlZSBvZiB0aGUgYWJvdmUgY29tcG9uZW50cyBh
cmUgaWRlbnRpY2FsIG9uIGVhY2ggcGFnZSByZXF1ZXN0LCB0aGUgc2FtZSBrZXkgd2lsbCBi
ZSBnZW5lcmF0ZWQuIEFzIHRoaXMgaXMgb3VyIGdvYWwsIGhlcmUsIGxldCdzIGRlc2lnbiBh
IHN5c3RlbSB0byBkbyB0aGF0Og0KDQoqIFNlY3JldCBrZXk6IGEgaGFzaCBvZiB0aGUgYnV5
ZXIncyB1c2VybmFtZSBhbmQgdGhlIHRyYW5zYWN0aW9uIElELCBwbHVzIGEgZml4ZWQgc2Vj
cmV0IHN0cmluZyBvZiB5b3VyIG93biBjaG9vc2luZy4NCiogU2FsdDogYSBoYXNoIG9mIHRo
ZSBidXllcidzIGVtYWlsIGFkZHJlc3MuIFRoZSBsZW5ndGggb2YgdGhpcyBtdXN0IGJlIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgaW4gdGhlIF9fU2FsdCBsZW5ndGhf
XyBwcmVmZXJlbmNlLCBvdGhlcndpc2UgdGhlIHRva2VuIHdpbGwgbm90IG1hdGNoLg0KKiBU
aW1lc3RhbXA6IHRoZSB0aW1lIG9mIHRoZSB0cmFuc2FjdGlvbi4NCg0KU28sIGZvciBhbnkg
Z2l2ZW4gdHJhbnNhY3Rpb24sIHRoZSBhYm92ZSB0aHJlZSBpdGVtcyBkbyBub3QgdmFyeSBh
bmQgd2lsbCB0aGVyZWZvcmUgZ2VuZXJhdGUgdGhlIHNhbWUga2V5LiBCdXQgYSB0cmFuc2Fj
dGlvbiB0aGF0IG9jY3VycyBmcm9tIHNvbWVvbmUgZWxzZSwgZXZlbiBpZiBpdCdzIGF0IHRo
ZSBleGFjdCBzYW1lIG1vbWVudCwgd2lsbCBwcm9kdWNlIGFuIGVudGlyZWx5IGRpZmZlcmVu
dCwgeWV0IGludmFyaWFudCwga2V5Lg0KDQpTbyBoZXJlJ3Mgc29tZSBub3QtdmVyeS1zdXBl
ci1zZWN1cmUgZXhhbXBsZSBjb2RlLCBhc3N1bWluZyB0aGF0IHlvdSBoYXZlIHRoZSBvcmRl
ciBpbmZvcm1hdGlvbiBwb3B1bGF0ZWQgaW4gc29tZSBQSFAgdmFyaWFibGVzLiBZb3UgcHJv
YmFibHkgd291bGRuJ3QgdXNlIEBtZDUoKUAgaGVyZSwgYnV0IHNvbWV0aGluZyBhbHRvZ2V0
aGVyIG1vcmUgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlOg0KDQpiYy4uIDx0eHA6dmFyaWFi
bGUgbmFtZT0ic2VjcmV0S2V5Ij48dHhwOnBocD5lY2hvIG1kNSgkdXNlcm5hbWUgLiAkdHhu
SWQgLiAiSSdtQUJhZFNlY3JldEtleSIpOzwvdHhwOnBocD48L3R4cDp2YXJpYWJsZT4NCjx0
eHA6dmFyaWFibGUgbmFtZT0ic2FsdCI+PHR4cDpwaHA+ZWNobyBtZDUoJGVtYWlsKTs8L3R4
cDpwaHA+PC90eHA6dmFyaWFibGU+DQo8dHhwOnZhcmlhYmxlIG5hbWU9InRpbWVzdGFtcCI+
PHR4cDpwaHA+ZWNobyAkb3JkZXJUaW1lOzwvdHhwOnBocD48L3R4cDp2YXJpYWJsZT4NCg0K
PHR4cDpzbWRfYWNjZXNzX2tleQ0KICAgdXJsPSc8dHhwOnNpdGVfdXJsIC8+PHR4cDpzZWN0
aW9uIC8+Jw0KICAgdHJpZ2dlcj0ibXktdHJpZ2dlciINCiAgIHNlY3JldD0nPHR4cDp2YXJp
YWJsZSBuYW1lPSJzZWNyZXRLZXkiIC8+Jw0KICAgc3RyZW5ndGg9Jzx0eHA6dmFyaWFibGUg
bmFtZT0ic2FsdCIgLz4nDQogICBzdGFydD0nPHR4cDp2YXJpYWJsZSBuYW1lPSJ0aW1lc3Rh
bXAiIC8+Jw0KICAgLz4NCg0KcC4gVGEgZGEhDQoNCmgyLiBBdXRob3INCg0KV3JpdHRlbiBi
eSAiU3RlZiBEYXdzb24iOmh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Lg0KIyAtLS0g
RU5EIFBMVUdJTiBIRUxQIC0tLQ0KLS0+DQo8P3BocA0KfQ0KPz4iO3M6NDoidHlwZSI7czox
OiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJoZWxw
IjtzOjA6IiI7czozOiJtZDUiO3M6MzI6IjgyMzg0MGRiMTEwYWU3ZTdjMDgzNGMwZjVmMjk2
MDQwIjt9

Yiannis
——————————
NeMe | hblack.art | EMAP | A Sea change | Toolkit of Care
I do my best editing after I click on the submit button.

Offline

#5 2018-06-29 12:59:49

giampablo
Member
From: Italy
Registered: 2008-07-17
Posts: 86
Website

Re: How to compile a textpattern plugin from github?

No, there must be some errors: help and options do not show up.

Also:
Parse error: syntax error, unexpected ‘<’, expecting end of file in /Applications/MAMP/htdocs/txp471/textpattern/lib/txplib_misc.php(1826) : eval()’d code on line 1

Thanks anyway, Colak

Offline

#6 2018-06-29 14:30:16

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 9,028
Website GitHub Mastodon Twitter

Re: How to compile a textpattern plugin from github?

Hi giampablo,

Try this… Apologies in advance as I do not really know what I am doing:)

# Name: smd_access_keys v0.21a (compressed)
# Type: Public plugin
# 
# Author: Stef Dawson
# URL: http://stefdawson.com/
# Recommended load order: 1

# .....................................................................
# This is a plugin for Textpattern CMS - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# .....................................................................

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
fP+r8MFXv289+vl/A+VAzEXhTQEA

Yiannis
——————————
NeMe | hblack.art | EMAP | A Sea change | Toolkit of Care
I do my best editing after I click on the submit button.

Offline

#7 2018-06-29 15:44:51

giampablo
Member
From: Italy
Registered: 2008-07-17
Posts: 86
Website

Re: How to compile a textpattern plugin from github?

colak wrote #312775:

Hi giampablo,
Try this… Apologies in advance as I do not really know what I am doing:)

Hi Yannis, a little step forward: Now the help link appears (not the file).
Unfortunately the Option link (i.e. the plugin configuration) is not there. So the plugin is useless.

Do not apologise! I appreciate a lot your friendly efforts.

I am experimenting another approach:
First, I installed the compiled v=20-beta.1
then I edited the code, pasting over the source code from GitHub (from #— BEGIN PLUGIN CODE up to #—END PLUGIN CODE) without <?php tags.
The plugin registration error is gone. So I may assume that the plugin should work… I am not sure.
I will play with what I have.

A compiled version by an experienced developer will work for sure.

Thanks

Offline

#8 2018-08-04 18:21:27

Destry
Member
From: Haut-Rhin
Registered: 2004-08-04
Posts: 4,909
Website

Re: How to compile a textpattern plugin from github?

It’s been a long time since I installed and used the plugin composer, but doesn’t that have compiling power? I could be wrong.

Offline

#9 2018-08-04 18:23:28

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 9,028
Website GitHub Mastodon Twitter

Re: How to compile a textpattern plugin from github?

Destry wrote #313254:

It’s been a long time since I installed and used the plugin composer, but doesn’t that have compiling power? I could be wrong.

Hi Destry
It does and it works just fine in the latest txp release.


Yiannis
——————————
NeMe | hblack.art | EMAP | A Sea change | Toolkit of Care
I do my best editing after I click on the submit button.

Offline

Board footer

Powered by FluxBB