IMAP URL document

Chris Newman (Chris.Newman@innosoft.com)
Wed, 30 Apr 1997 14:17:21 -0700 (PDT)


Date: Wed, 30 Apr 1997 14:17:21 -0700 (PDT)
From: Chris Newman <Chris.Newman@innosoft.com>
Subject: IMAP URL document
To: IMAP Discusson List <imap@cac.washington.edu>
Cc: IETF URI list <uri@bunyip.com>
Message-id: <Pine.SOL.3.95.970430140735.16628S-200000@eleanor.innosoft.com>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-1297389768-862435041=:16628
Content-Type: TEXT/PLAIN; charset=US-ASCII

Here's a new version of the IMAP URL document.  The following substantial
changes were made:

(1) Instead of imap://server/path;uidvalidity=foo;uid=foo;section=foo, it
now uses  imap://server/path;uidvalidity=foo/;uid=foo/;section=foo

This matches the relative URL resolution rules in the new URL internet
draft rather than the rules in RFC 1808.  It is also believed to work
better with the installed base of relative URL resolution.

(2) Removed cleartext passwords.

(3) Added UTF-8 requirement including an example and sample code in an
appendix.


These are sufficient changes to merit another last call, IMHO.  As this
spec is long overdue already, I'd appreciate feedback promptly.

Thanks.


---559023410-1297389768-862435041=:16628
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="imapurl.txt"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95.970430141721.16628T@eleanor.innosoft.com>
Content-Description: 

DQoNCg0KDQoNCg0KTmV0d29yayBXb3JraW5nIEdyb3VwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy4gTmV3bWFuDQpJbnRl
cm5ldCBEcmFmdDogSU1BUCBVUkwgU2NoZW1lICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5ub3NvZnQNCkRvY3VtZW50OiBkcmFmdC1uZXdt
YW4tdXJsLWltYXAtMDZiaXMudHh0ICAgICAgICAgICAgICAgICAgICAgICBN
YXkgMTk5Nw0KRXhwaXJlcyBpbiBzaXggbW9udGhzDQoNCg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElNQVAgVVJMIFNjaGVtZQ0KDQoNClN0YXR1
cyBvZiB0aGlzIG1lbW8NCg0KICAgICBUaGlzIGRvY3VtZW50IGlzIGFuIElu
dGVybmV0IERyYWZ0LiAgSW50ZXJuZXQgRHJhZnRzIGFyZSB3b3JraW5nDQog
ICAgIGRvY3VtZW50cyBvZiB0aGUgSW50ZXJuZXQgRW5naW5lZXJpbmcgVGFz
ayBGb3JjZSAoSUVURiksIGl0cyBBcmVhcywNCiAgICAgYW5kIGl0cyBXb3Jr
aW5nIEdyb3Vwcy4gIE5vdGUgdGhhdCBvdGhlciBncm91cHMgbWF5IGFsc28g
ZGlzdHJpYnV0ZQ0KICAgICB3b3JraW5nIGRvY3VtZW50cyBhcyBJbnRlcm5l
dCBEcmFmdHMuDQoNCiAgICAgSW50ZXJuZXQgRHJhZnRzIGFyZSBkcmFmdCBk
b2N1bWVudHMgdmFsaWQgZm9yIGEgbWF4aW11bSBvZiBzaXgNCiAgICAgbW9u
dGhzLiAgSW50ZXJuZXQgRHJhZnRzIG1heSBiZSB1cGRhdGVkLCByZXBsYWNl
ZCwgb3Igb2Jzb2xldGVkIGJ5DQogICAgIG90aGVyIGRvY3VtZW50cyBhdCBh
bnkgdGltZS4gIEl0IGlzIG5vdCBhcHByb3ByaWF0ZSB0byB1c2UgSW50ZXJu
ZXQNCiAgICAgRHJhZnRzIGFzIHJlZmVyZW5jZSBtYXRlcmlhbCBvciB0byBj
aXRlIHRoZW0gb3RoZXIgdGhhbiBhcyBhDQogICAgIGBgd29ya2luZyBkcmFm
dCcnIG9yIGBgd29yayBpbiBwcm9ncmVzc2BgLg0KDQogICAgIFRvIGxlYXJu
IHRoZSBjdXJyZW50IHN0YXR1cyBvZiBhbnkgSW50ZXJuZXQtRHJhZnQsIHBs
ZWFzZSBjaGVjayB0aGUNCiAgICAgMWlkLWFic3RyYWN0cy50eHQgbGlzdGlu
ZyBjb250YWluZWQgaW4gdGhlIEludGVybmV0LURyYWZ0cyBTaGFkb3cNCiAg
ICAgRGlyZWN0b3JpZXMgb24gZHMuaW50ZXJuaWMubmV0LCBuaWMubm9yZHUu
bmV0LCBmdHAuaXNpLmVkdSwgb3INCiAgICAgbXVubmFyaS5vei5hdS4NCg0K
ICAgICBBIHJldmlzZWQgdmVyc2lvbiBvZiB0aGlzIGRyYWZ0IGRvY3VtZW50
IHdpbGwgYmUgc3VibWl0dGVkIHRvIHRoZQ0KICAgICBSRkMgZWRpdG9yIGFz
IGEgUHJvcG9zZWQgU3RhbmRhcmQgZm9yIHRoZSBJbnRlcm5ldCBDb21tdW5p
dHkuDQogICAgIERpc2N1c3Npb24gYW5kIHN1Z2dlc3Rpb25zIGZvciBpbXBy
b3ZlbWVudCBhcmUgcmVxdWVzdGVkLiAgVGhpcw0KICAgICBkb2N1bWVudCB3
aWxsIGV4cGlyZSBzaXggbW9udGhzIGFmdGVyIHB1YmxpY2F0aW9uLiAgRGlz
dHJpYnV0aW9uIG9mDQogICAgIHRoaXMgZHJhZnQgaXMgdW5saW1pdGVkLg0K
DQoNCkFic3RyYWN0DQoNCiAgICAgSU1BUCBbSU1BUDRdIGlzIGEgcmljaCBw
cm90b2NvbCBmb3IgYWNjZXNzaW5nIHJlbW90ZSBtZXNzYWdlDQogICAgIHN0
b3Jlcy4gIEl0IHByb3ZpZGVzIGFuIGlkZWFsIG1lY2hhbmlzbSBmb3IgYWNj
ZXNzaW5nIHB1YmxpYw0KICAgICBtYWlsaW5nIGxpc3QgYXJjaGl2ZXMgYXMg
d2VsbCBhcyBwcml2YXRlIGFuZCBzaGFyZWQgbWVzc2FnZSBzdG9yZXMuDQog
ICAgIFRoaXMgZG9jdW1lbnQgZGVmaW5lcyBhIFVSTCBzY2hlbWUgZm9yIHJl
ZmVyZW5jaW5nIG9iamVjdHMgb24gYW4NCiAgICAgSU1BUCBzZXJ2ZXIuDQoN
Cg0KMS4gQ29udmVudGlvbnMgdXNlZCBpbiB0aGlzIGRvY3VtZW50DQoNCiAg
ICAgVGhlIGtleSB3b3JkcyAiTVVTVCIsICJNVVNUIE5PVCIsICJTSE9VTEQi
LCAiU0hPVUxEIE5PVCIsIGFuZCAiTUFZIg0KICAgICBpbiB0aGlzIGRvY3Vt
ZW50IGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyBkZWZpbmVkIGluICJLZXkg
d29yZHMgZm9yDQogICAgIHVzZSBpbiBSRkNzIHRvIEluZGljYXRlIFJlcXVp
cmVtZW50IExldmVscyIgW0tFWVdPUkRTXS4NCg0KDQoNCk5ld21hbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbUGFnZSAxXQ0KDA0KSW50ZXJuZXQgRHJhZnQgICAgICAgICAg
ICAgIElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAgICAgICAgICAgIE1heSAx
OTk3DQoNCg0KMi4gSU1BUCBzY2hlbWUNCg0KICAgICBUaGUgSU1BUCBVUkwg
c2NoZW1lIGlzIHVzZWQgdG8gZGVzaWduYXRlIG1haWxib3hlcywgbWVzc2Fn
ZXMsIE1JTUUNCiAgICAgYm9kaWVzIFtNSU1FXSwgYW5kIHNlYXJjaCBwcm9n
cmFtcyBvbiBJbnRlcm5ldCBob3N0cyBhY2Nlc3NpYmxlDQogICAgIHVzaW5n
IHRoZSBJTUFQIHByb3RvY29sLg0KDQogICAgIFRoZSBJTUFQIFVSTCBmb2xs
b3dzIHRoZSBjb21tb24gSW50ZXJuZXQgc2NoZW1lIHN5bnRheCBhcyBkZWZp
bmVkDQogICAgIGluIFJGQyAxNzM4IFtCQVNJQy1VUkxdIGV4Y2VwdCB0aGF0
IGNsZWFyIHRleHQgcGFzc3dvcmRzIGFyZSBub3QNCiAgICAgcGVybWl0dGVk
LiAgSWYgOjxwb3J0PiBpcyBvbWl0dGVkLCB0aGUgcG9ydCBkZWZhdWx0cyB0
byAxNDMuDQoNCiAgICAgQW4gSU1BUCBVUkwgdGFrZXMgb25lIG9mIHRoZSBm
b2xsb3dpbmcgZm9ybXM6DQoNCiAgICAgICAgIGltYXA6Ly88aXNlcnZlcj4v
PGVuY19saXN0X21haWxib3g+O1RZUEU9PGxpc3RfdHlwZT4NCiAgICAgICAg
IGltYXA6Ly88aXNlcnZlcj4vPGVuY19tYWlsYm94Plt1aWR2YWxpZGl0eV1b
PzxlbmNfc2VhcmNoPl0NCiAgICAgICAgIGltYXA6Ly88aXNlcnZlcj4vPGVu
Y19tYWlsYm94Plt1aWR2YWxpZGl0eV08aXVpZD5baXNlY3Rpb25dDQoNCiAg
ICAgVGhlIGZpcnN0IGZvcm0gaXMgdXNlZCB0byByZWZlciB0byBhIGxpc3Qg
b2YgbWFpbGJveGVzLCB0aGUgc2Vjb25kDQogICAgIGZvcm0gcmVmZXJzIHRv
IHRoZSBjb250ZW50cyBvZiBhIG1haWxib3ggb3IgYSBzZXQgb2YgbWVzc2Fn
ZXMNCiAgICAgcmVzdWx0aW5nIGZyb20gYSBzZWFyY2gsIGFuZCB0aGUgZmlu
YWwgZm9ybSByZWZlcnMgdG8gYSBzcGVjaWZpYw0KICAgICBtZXNzYWdlIG9y
IG1lc3NhZ2UgcGFydC4NCg0KDQozLiBJTUFQIFVzZXIgTmFtZSBhbmQgQXV0
aGVudGljYXRpb24gTWVjaGFuaXNtDQoNCiAgICAgQSB1c2VyIG5hbWUgYW5k
L29yIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSBtYXkgYmUgc3VwcGxpZWQu
ICBUaGV5DQogICAgIGFyZSB1c2VkIGluIHRoZSAiTE9HSU4iIG9yICJBVVRI
RU5USUNBVEUiIGNvbW1hbmRzIGFmdGVyIG1ha2luZyB0aGUNCiAgICAgY29u
bmVjdGlvbiB0byB0aGUgSU1BUCBzZXJ2ZXIuICBJZiBubyB1c2VyIG5hbWUg
b3IgYXV0aGVudGljYXRpb24NCiAgICAgbWVjaGFuaXNtIGlzIHN1cHBsaWVk
LCB0aGUgdXNlciBuYW1lICJhbm9ueW1vdXMiIGlzIHVzZWQgd2l0aCB0aGUN
CiAgICAgIkxPR0lOIiBjb21tYW5kIGFuZCB0aGUgcGFzc3dvcmQgaXMgc3Vw
cGxpZWQgYXMgdGhlIEludGVybmV0IGUtbWFpbA0KICAgICBhZGRyZXNzIG9m
IHRoZSBlbmQgdXNlciBhY2Nlc3NpbmcgdGhlIHJlc291cmNlLiAgSWYgdGhl
IFVSTA0KICAgICBzdXBwbGllcyBhIHVzZXIgbmFtZSwgdGhlIHByb2dyYW0g
aW50ZXJwcmV0aW5nIHRoZSBJTUFQIFVSTCBTSE9VTEQNCiAgICAgcmVxdWVz
dCBvbmUgZnJvbSB0aGUgdXNlciBpZiBuZWNlc3NhcnkuDQoNCiAgICAgQW4g
YXV0aGVudGljYXRpb24gbWVjaGFuaXNtIGNhbiBiZSBleHByZXNzZWQgYnkg
YWRkaW5nDQogICAgICI7QVVUSD08ZW5jX2F1dGhfdHlwZT4iIHRvIHRoZSBl
bmQgb2YgdGhlIHVzZXIgbmFtZS4gIFdoZW4gc3VjaCBhbg0KICAgICA8ZW5j
X2F1dGhfdHlwZT4gaXMgaW5kaWNhdGVkLCB0aGUgY2xpZW50IFNIT1VMRCBy
ZXF1ZXN0IGFwcHJvcHJpYXRlDQogICAgIGNyZWRlbnRpYWxzIGZyb20gdGhh
dCBtZWNoYW5pc20gYW5kIHVzZSB0aGUgIkFVVEhFTlRJQ0FURSIgY29tbWFu
ZA0KICAgICBpbnN0ZWFkIG9mIHRoZSAiTE9HSU4iIGNvbW1hbmQuICBJZiBu
byB1c2VyIG5hbWUgaXMgc3BlY2lmaWVkLCBvbmUNCiAgICAgU0hPVUxEIGJl
IG9idGFpbmVkIGZyb20gdGhlIG1lY2hhbmlzbSBvciByZXF1ZXN0ZWQgZnJv
bSB0aGUgdXNlciBhcw0KICAgICBhcHByb3ByaWF0ZS4NCg0KICAgICBUaGUg
c3RyaW5nICI7QVVUSD0qIiBpbmRpY2F0ZXMgdGhhdCB0aGUgY2xpZW50IFNI
T1VMRCBzZWxlY3QgYW4NCiAgICAgYXBwcm9wcmlhdGUgYXV0aGVudGljYXRp
b24gbWVjaGFuaXNtLiAgSXQgTUFZIHVzZSBhbnkgbWVjaGFuaXNtDQogICAg
IGxpc3RlZCBpbiB0aGUgQ0FQQUJJTElUWSBjb21tYW5kIG9yIHVzZSBhbiBv
dXQgb2YgYmFuZCBzZWN1cml0eQ0KICAgICBzZXJ2aWNlIHJlc3VsdGluZyBp
biBhIFBSRUFVVEggY29ubmVjdGlvbi4gIElmIG5vIHVzZXIgbmFtZSBpcw0K
ICAgICBzcGVjaWZpZWQgYW5kIG5vIGFwcHJvcHJpYXRlIGF1dGhlbnRpY2F0
aW9uIG1lY2hhbmlzbXMgYXJlDQogICAgIGF2YWlsYWJsZSwgdGhlIGNsaWVu
dCBTSE9VTEQgZmFsbCBiYWNrIHRvIGFub255bW91cyBsb2dpbiBhcw0KICAg
ICBkZXNjcmliZWQgYWJvdmUuICBUaGlzIGFsbG93cyBhIFVSTCB3aGljaCBn
cmFudHMgcmVhZC13cml0ZSBhY2Nlc3MNCg0KDQoNCk5ld21hbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbUGFnZSAyXQ0KDA0KSW50ZXJuZXQgRHJhZnQgICAgICAgICAgICAg
IElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAgICAgICAgICAgIE1heSAxOTk3
DQoNCg0KICAgICB0byBhdXRob3JpemVkIHVzZXJzLCBhbmQgcmVhZC1vbmx5
IGFub255bW91cyBhY2Nlc3MgdG8gb3RoZXIgdXNlcnMuDQoNCiAgICAgTm90
ZSB0aGF0IGlmIHVuc2FmZSBvciByZXNlcnZlZCBjaGFyYWN0ZXJzIHN1Y2gg
YXMgIiAiIG9yICI7IiBhcmUNCiAgICAgcHJlc2VudCBpbiB0aGUgdXNlciBu
YW1lIG9yIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSwgdGhleSBNVVNUIGJl
DQogICAgIGVuY29kZWQgYXMgZGVzY3JpYmVkIGluIFJGQyAxNzM4IFtCQVNJ
Qy1VUkxdLg0KDQoNCjQuIExpc3RzIG9mIG1haWxib3hlcw0KDQogICAgIEFu
IElNQVAgVVJMIHJlZmVycmluZyB0byBhIGxpc3Qgb2YgbWFpbGJveGVzIGhh
cyB0aGUgZm9sbG93aW5nDQogICAgIGZvcm06DQoNCiAgICAgICAgIGltYXA6
Ly88aXNlcnZlcj4vPGVuY19saXN0X21haWxib3g+O1RZUEU9PGxpc3RfdHlw
ZT4NCg0KICAgICBUaGUgPGxpc3RfdHlwZT4gbWF5IGJlIGVpdGhlciAiTElT
VCIgb3IgIkxTVUIiLCBhbmQgaXMgY2FzZQ0KICAgICBpbnNlbnNpdGl2ZS4g
IFRoZSBmaWVsZCAiO1RZUEU9PGxpc3RfdHlwZT4iIE1VU1QgYmUgaW5jbHVk
ZWQuDQoNCiAgICAgVGhlIDxlbmNfbGlzdF9tYWlsYm94PiBpcyBhbnkgYXJn
dW1lbnQgc3VpdGFibGUgZm9yIHRoZQ0KICAgICBsaXN0X21haWxib3ggZmll
bGQgb2YgdGhlIElNQVAgW0lNQVA0XSBMSVNUIG9yIExTVUIgY29tbWFuZHMu
ICBUaGUNCiAgICAgZmllbGQgPGVuY19saXN0X21haWxib3g+IG1heSBiZSBv
bWl0dGVkLCBpbiB3aGljaCBjYXNlIHRoZSBwcm9ncmFtDQogICAgIGludGVy
cHJldGluZyB0aGUgSU1BUCBVUkwgbWF5IHVzZSAiKiIgb3IgIiUiIGFzIHRo
ZQ0KICAgICA8ZW5jX2xpc3RfbWFpbGJveD4uICBUaGUgcHJvZ3JhbSBTSE9V
TEQgdXNlICIlIiBpZiBpdCBzdXBwb3J0cyBhDQogICAgIGhpZXJhcmNoaWNh
bCB2aWV3LCBvdGhlcndpc2UgaXQgU0hPVUxEIHVzZSAiKiIuDQoNCiAgICAg
Tm90ZSB0aGF0IGlmIHVuc2FmZSBvciByZXNlcnZlZCBjaGFyYWN0ZXJzIHN1
Y2ggYXMgIiAiIG9yICIlIiBhcmUNCiAgICAgcHJlc2VudCBpbiA8ZW5jX2xp
c3RfbWFpbGJveD4gdGhleSBNVVNUIGJlIGVuY29kZWQgYXMgZGVzY3JpYmVk
IGluDQogICAgIFJGQyAxNzM4IFtCQVNJQy1VUkxdLiAgSWYgdGhlIGNoYXJh
Y3RlciAiLyIgaXMgcHJlc2VudCBpbg0KICAgICBlbmNfbGlzdF9tYWlsYm94
LCBpdCBTSE9VTEQgTk9UIGJlIGVuY29kZWQuDQoNCg0KNS4gTGlzdHMgb2Yg
bWVzc2FnZXMNCg0KICAgICBBbiBJTUFQIFVSTCByZWZlcnJpbmcgdG8gYSBs
aXN0IG9mIG1lc3NhZ2VzIGhhcyB0aGUgZm9sbG93aW5nIGZvcm06DQoNCiAg
ICAgICAgIGltYXA6Ly88aXNlcnZlcj4vPGVuY19tYWlsYm94Plt1aWR2YWxp
ZGl0eV1bPzxlbmNfc2VhcmNoPl0NCg0KICAgICBUaGUgPGVuY19tYWlsYm94
PiBmaWVsZCBpcyB1c2VkIGFzIHRoZSBhcmd1bWVudCB0byB0aGUgSU1BUDQN
CiAgICAgIlNFTEVDVCIgY29tbWFuZC4gIE5vdGUgdGhhdCBpZiB1bnNhZmUg
b3IgcmVzZXJ2ZWQgY2hhcmFjdGVycyBzdWNoDQogICAgIGFzICIgIiwgIjsi
LCBvciAiPyIgYXJlIHByZXNlbnQgaW4gPGVuY19tYWlsYm94PiB0aGV5IE1V
U1QgYmUNCiAgICAgZW5jb2RlZCBhcyBkZXNjcmliZWQgaW4gUkZDIDE3Mzgg
W0JBU0lDLVVSTF0uICBJZiB0aGUgY2hhcmFjdGVyICIvIg0KICAgICBpcyBw
cmVzZW50IGluIGVuY19tYWlsYm94LCBpdCBTSE9VTEQgTk9UIGJlIGVuY29k
ZWQuDQoNCiAgICAgVGhlIFt1aWR2YWxpZGl0eV0gZmllbGQgaXMgb3B0aW9u
YWwuICBJZiBpdCBpcyBwcmVzZW50LCBpdCBNVVNUIGJlDQogICAgIHRoZSBh
cmd1bWVudCB0byB0aGUgSU1BUDQgVUlEVkFMSURJVFkgc3RhdHVzIHJlc3Bv
bnNlIGF0IHRoZSB0aW1lDQogICAgIHRoZSBVUkwgd2FzIGNyZWF0ZWQuICBU
aGlzIFNIT1VMRCBiZSB1c2VkIGJ5IHRoZSBwcm9ncmFtDQogICAgIGludGVy
cHJldGluZyB0aGUgSU1BUCBVUkwgdG8gZGV0ZXJtaW5lIGlmIHRoZSBVUkwg
aXMgc3RhbGUuDQoNCiAgICAgVGhlIFs/PGVuY19zZWFyY2g+XSBmaWVsZCBp
cyBvcHRpb25hbC4gIElmIGl0IGlzIG5vdCBwcmVzZW50LCB0aGUNCg0KDQoN
Ck5ld21hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbUGFnZSAzXQ0KDA0KSW50ZXJuZXQgRHJh
ZnQgICAgICAgICAgICAgIElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAgICAg
ICAgICAgIE1heSAxOTk3DQoNCg0KICAgICBjb250ZW50cyBvZiB0aGUgbWFp
bGJveCBTSE9VTEQgYmUgcHJlc2VudGVkIGJ5IHRoZSBwcm9ncmFtDQogICAg
IGludGVycHJldGluZyB0aGUgVVJMLiAgSWYgaXQgaXMgcHJlc2VudCwgaXQg
U0hPVUxEIGJlIHVzZWQgYXMgdGhlDQogICAgIGFyZ3VtZW50cyBmb2xsb3dp
bmcgYW4gSU1BUDQgU0VBUkNIIGNvbW1hbmQgd2l0aCB1bnNhZmUgY2hhcmFj
dGVycw0KICAgICBzdWNoIGFzICIgIiAod2hpY2ggYXJlIGxpa2VseSB0byBi
ZSBwcmVzZW50IGluIHRoZSA8ZW5jX3NlYXJjaD4pDQogICAgIGVuY29kZWQg
YXMgZGVzY3JpYmVkIGluIFJGQyAxNzM4IFtCQVNJQy1VUkxdLg0KDQoNCjYu
IEEgc3BlY2lmaWMgbWVzc2FnZSBvciBtZXNzYWdlIHBhcnQNCg0KICAgICBB
biBJTUFQIFVSTCByZWZlcnJpbmcgdG8gYSBzcGVjaWZpYyBtZXNzYWdlIG9y
IG1lc3NhZ2UgcGFydCBoYXMgdGhlDQogICAgIGZvbGxvd2luZyBmb3JtOg0K
DQogICAgICAgICBpbWFwOi8vPGlzZXJ2ZXI+LzxlbmNfbWFpbGJveD5bdWlk
dmFsaWRpdHldPGl1aWQ+W2lzZWN0aW9uXQ0KDQogICAgIFRoZSA8ZW5jX21h
aWxib3g+IGFuZCBbdWlkdmFsaWRpdHldIGFyZSBhcyBkZWZpbmVkIGFib3Zl
Lg0KDQogICAgIElmIFt1aWR2YWxpZGl0eV0gaXMgcHJlc2VudCBpbiB0aGlz
IGZvcm0sIGl0IFNIT1VMRCBiZSB1c2VkIGJ5IHRoZQ0KICAgICBwcm9ncmFt
IGludGVycHJldGluZyB0aGUgVVJMIHRvIGRldGVybWluZSBpZiB0aGUgVVJM
IGlzIHN0YWxlLg0KDQogICAgIFRoZSA8dWlkPiByZWZlcnMgdG8gYW4gSU1B
UDQgbWVzc2FnZSBVSUQsIGFuZCBTSE9VTEQgYmUgdXNlZCBhcyB0aGUNCiAg
ICAgPHNldD4gYXJndW1lbnQgdG8gdGhlIElNQVA0ICJVSUQgRkVUQ0giIGNv
bW1hbmQuDQoNCiAgICAgVGhlIFtpc2VjdGlvbl0gZmllbGQgaXMgb3B0aW9u
YWwuICBJZiBub3QgcHJlc2VudCwgdGhlIFVSTCByZWZlcnMNCiAgICAgdG8g
dGhlIGVudGlyZSBJbnRlcm5ldCBtZXNzYWdlIGFzIHJldHVybmVkIGJ5IHRo
ZSBJTUFQIGNvbW1hbmQgIlVJRA0KICAgICBGRVRDSCA8dWlkPiBCT0RZLlBF
RUtbXSIuICBJZiBwcmVzZW50LCB0aGUgVVJMIHJlZmVycyB0byB0aGUgb2Jq
ZWN0DQogICAgIHJldHVybmVkIGJ5IGEgIlVJRCBGRVRDSCA8dWlkPiBCT0RZ
LlBFRUtbPHNlY3Rpb24+XSIgY29tbWFuZC4gIFRoZQ0KICAgICB0eXBlIG9m
IHRoZSBvYmplY3QgbWF5IGJlIGRldGVybWluZWQgd2l0aCBhICJVSUQgRkVU
Q0ggPHVpZD4NCiAgICAgQk9EWVNUUlVDVFVSRSIgY29tbWFuZCBhbmQgbG9j
YXRpbmcgdGhlIGFwcHJvcHJpYXRlIHBhcnQgaW4gdGhlDQogICAgIHJlc3Vs
dGluZyBCT0RZU1RSVUNUVVJFLiAgTm90ZSB0aGF0IHVuc2FmZSBjaGFyYWN0
ZXJzIGluDQogICAgIFtpc2VjdGlvbl0sIHN1Y2ggYXMgIiAiIE1VU1QgYmUg
ZW5jb2RlZCBhcyBkZXNjcmliZWQgaW4gUkZDIDE3MzgNCiAgICAgW0JBU0lD
LVVSTF0uDQoNCg0KNy4gUmVsYXRpdmUgSU1BUCBVUkxzDQoNCiAgICAgUmVs
YXRpdmUgSU1BUCBVUkxzIGFyZSBwZXJtaXR0ZWQgYW5kIGFyZSByZXNvbHZl
ZCBhY2NvcmRpbmcgdG8gdGhlDQogICAgIHJ1bGVzIGRlZmluZWQgaW4gUkZD
IDE4MDggW1JFTC1VUkxdIHdpdGggb25lIGV4Y2VwdGlvbi4gIEluIElNQVAN
CiAgICAgVVJMcywgcGFyYW1ldGVycyBhcmUgdHJlYXRlZCBhcyBwYXJ0IG9m
IHRoZSBub3JtYWwgcGF0aCB3aXRoDQogICAgIHJlc3BlY3QgdG8gcmVsYXRp
dmUgVVJMIHJlc29sdXRpb24uICBUaGlzIGlzIGJlbGlldmVkIHRvIGJlIHRo
ZQ0KICAgICBiZWhhdmlvciBvZiB0aGUgaW5zdGFsbGVkIGJhc2UgYW5kIGlz
IGxpa2VseSB0byBiZSBkb2N1bWVudGVkIGluIGENCiAgICAgZnV0dXJlIHJl
dmlzaW9uIG9mIHRoZSByZWxhdGl2ZSBVUkwgc3BlY2lmaWNhdGlvbi4NCg0K
ICAgICBUaGUgZm9sbG93aW5nIG9ic2VydmF0aW9ucyBhcmUgYWxzbyBpbXBv
cnRhbnQ6DQoNCiAgICAgVGhlIDxpYXV0aD4gZ3JhbW1hciBlbGVtZW50IGlz
IGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgdXNlciBuYW1lIGZvcg0KICAgICBw
dXJwb3NlcyBvZiByZXNvbHZpbmcgcmVsYXRpdmUgSU1BUCBVUkxzLiAgVGhp
cyBtZWFucyB0aGF0IHVubGVzcyBhDQogICAgIG5ldyBsb2dpbi9zZXJ2ZXIg
c3BlY2lmaWNhdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUgcmVsYXRpdmUgVVJM
LCB0aGUNCiAgICAgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtIGlzIGluaGVy
aXRlZCBmcm9tIGEgYmFzZSBJTUFQIFVSTC4NCg0KDQoNCk5ld21hbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbUGFnZSA0XQ0KDA0KSW50ZXJuZXQgRHJhZnQgICAgICAgICAg
ICAgIElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAgICAgICAgICAgIE1heSAx
OTk3DQoNCg0KICAgICBVUkxzIGFsd2F5cyB1c2UgIi8iIGFzIHRoZSBoaWVy
YXJjaHkgZGVsaW1pdGVyIGZvciB0aGUgcHVycG9zZSBvZg0KICAgICByZXNv
bHZpbmcgcGF0aHMgaW4gcmVsYXRpdmUgVVJMcy4gIElNQVA0IHBlcm1pdHMg
dGhlIHVzZSBvZiBhbnkNCiAgICAgaGllcmFyY2h5IGRlbGltaXRlciBpbiBt
YWlsYm94IG5hbWVzLiAgRm9yIHRoaXMgcmVhc29uLCByZWxhdGl2ZQ0KICAg
ICBtYWlsYm94IHBhdGhzIHdpbGwgb25seSB3b3JrIGlmIHRoZSBtYWlsYm94
IHVzZXMgIi8iIGFzIHRoZQ0KICAgICBoaWVyYXJjaHkgZGVsaW1pdGVyLiAg
UmVsYXRpdmUgVVJMcyBtYXkgYmUgdXNlZCBvbiBtYWlsYm94ZXMgd2hpY2gN
CiAgICAgdXNlIG90aGVyIGRlbGltaXRlcnMsIGJ1dCBpbiB0aGF0IGNhc2Us
IHRoZSBlbnRpcmUgbWFpbGJveCBuYW1lDQogICAgIE1VU1QgYmUgc3BlY2lm
aWVkIGluIHRoZSByZWxhdGl2ZSBVUkwgb3IgaW5oZXJpdGVkIGFzIGEgd2hv
bGUgZnJvbQ0KICAgICB0aGUgYmFzZSBVUkwuDQoNCiAgICAgVGhlIGJhc2Ug
VVJMIGZvciBhIGxpc3Qgb2YgbWFpbGJveGVzIG9yIG1lc3NhZ2VzIHdoaWNo
IHdhcyByZWZlcnJlZA0KICAgICB0byBieSBhbiBJTUFQIFVSTCBpcyBhbHdh
eXMgdGhlIHJlZmVycmluZyBJTUFQIFVSTCBpdHNlbGYuICBUaGUNCiAgICAg
YmFzZSBVUkwgZm9yIGEgbWVzc2FnZSBvciBtZXNzYWdlIHBhcnQgd2hpY2gg
d2FzIHJlZmVycmVkIHRvIGJ5IGFuDQogICAgIElNQVAgVVJMIG1heSBiZSBt
b3JlIGNvbXBsaWNhdGVkIHRvIGRldGVybWluZS4gIFRoZSBwcm9ncmFtDQog
ICAgIGludGVycHJldGluZyB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgaGF2ZSB0
byBjaGVjayB0aGUgaGVhZGVycyBvZiB0aGUNCiAgICAgTUlNRSBlbnRpdHkg
YW5kIGFueSBlbmNsb3NpbmcgTUlNRSBlbnRpdGllcyBpbiBvcmRlciB0byBs
b2NhdGUgdGhlDQogICAgICJDb250ZW50LUJhc2UiIGFuZCAiQ29udGVudC1M
b2NhdGlvbiIgaGVhZGVycy4gIFRoZXNlIGhlYWRlcnMgYXJlDQogICAgIHVz
ZWQgdG8gZGV0ZXJtaW5lIHRoZSBiYXNlIFVSTCBhcyBkZWZpbmVkIGluIFtI
VFRQXS4gIEZvciBleGFtcGxlLA0KICAgICBpZiB0aGUgcmVmZXJyaW5nIElN
QVAgVVJMIGNvbnRhaW5zIGEgIi87U0VDVElPTj0xLjIiIHBhcmFtZXRlciwN
CiAgICAgdGhlbiB0aGUgTUlNRSBoZWFkZXJzIGZvciBzZWN0aW9uIDEuMiwg
Zm9yIHNlY3Rpb24gMSwgYW5kIGZvciB0aGUNCiAgICAgZW5jbG9zaW5nIG1l
c3NhZ2UgaXRzZWxmIFNIT1VMRCBiZSBjaGVja2VkIGluIHRoYXQgb3JkZXIg
Zm9yDQogICAgICJDb250ZW50LUJhc2UiIG9yICJDb250ZW50LUxvY2F0aW9u
IiBoZWFkZXJzLg0KDQoNCjguIE11bHRpbmF0aW9uYWwgQ29uc2lkZXJhdGlv
bnMNCg0KICAgICBJTUFQNCBbSU1BUDRdIHNlY3Rpb24gNS4xLjMgaW5jbHVk
ZXMgYSBjb252ZW50aW9uIGZvciBlbmNvZGluZw0KICAgICBub24tVVMtQVND
SUkgY2hhcmFjdGVycyBpbiBJTUFQIG1haWxib3ggbmFtZXMuICBCZWNhdXNl
IHRoaXMNCiAgICAgY29udmVudGlvbiBpcyBwcml2YXRlIHRvIElNQVAsIGl0
IGlzIG5lY2Vzc2FyeSB0byBjb252ZXJ0IElNQVAncw0KICAgICBlbmNvZGlu
ZyB0byBvbmUgdGhhdCBjYW4gYmUgbW9yZSBlYXNpbHkgaW50ZXJwcmV0ZWQg
YnkgYSBVUkwNCiAgICAgZGlzcGxheSBwcm9ncmFtLiAgRm9yIHRoaXMgcmVh
c29uLCBJTUFQJ3MgbW9kaWZpZWQgVVRGLTcgZW5jb2RpbmcNCiAgICAgZm9y
IG1haWxib3hlcyBNVVNUIGJlIGNvbnZlcnRlZCB0byBVVEYtOCBbVVRGOF0u
ICBTaW5jZSA4LWJpdA0KICAgICBjaGFyYWN0ZXJzIGFyZSBub3QgcGVybWl0
dGVkIGluIFVSTHMsIHRoZSBVVEYtOCBjaGFyYWN0ZXJzIGFyZQ0KICAgICBl
bmNvZGVkIGFzIHJlcXVpcmVkIGJ5IHRoZSBVUkwgc3BlY2lmaWNhdGlvbiBb
QkFTSUMtVVJMXS4gIFNhbXBsZQ0KICAgICBjb2RlIGlzIGluY2x1ZGVkIGlu
IEFwcGVuZGl4IEEgdG8gZGVtb25zdHJhdGUgdGhpcyBjb252ZXJzaW9uLg0K
DQoNCjkuIEV4YW1wbGVzDQoNCiAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxl
cyBkZW1vbnN0cmF0ZSBob3cgYW4gSU1BUDQgY2xpZW50IHByb2dyYW0NCiAg
ICAgbWlnaHQgdHJhbnNsYXRlIHZhcmlvdXMgSU1BUDQgVVJMIGludG8gYSBz
ZXJpZXMgb2YgSU1BUDQgY29tbWFuZHMuDQogICAgIENvbW1hbmRzIHNlbnQg
ZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgYXJlIHByZWZpeGVkIHdp
dGggIkM6IiwNCiAgICAgYW5kIHJlc3BvbnNlcyBzZW50IGZyb20gdGhlIHNl
cnZlciB0byB0aGUgY2xpZW50IGFyZSBwcmVmaXhlZCB3aXRoDQogICAgICJT
OiIuDQoNCg0KDQoNCg0KDQoNCg0KTmV3bWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQYWdl
IDVdDQoMDQpJbnRlcm5ldCBEcmFmdCAgICAgICAgICAgICAgSU1BUCBVUkwg
U2NoZW1lICAgICAgICAgICAgICAgICAgICAgTWF5IDE5OTcNCg0KDQogICAg
IFRoZSBVUkw6DQoNCiAgICAgIDxpbWFwOi8vbWluYmFyaS5vcmcvZ3JheS1j
b3VuY2lsO1VJRFZBTElESVRZPTM4NTc1OTA0NS87VUlEPTIwPg0KDQogICAg
IFJlc3VsdHMgaW4gdGhlIGZvbGxvd2luZyBjbGllbnQgY29tbWFuZHM6DQoN
CiAgICAgICAgIDxjb25uZWN0IHRvIG1pbmJhcmkub3JnLCBwb3J0IDE0Mz4N
CiAgICAgICAgIEM6IEEwMDEgTE9HSU4gQU5PTllNT1VTIHNoZXJpZGFuQGJh
Ynlsb241Lm9yZw0KICAgICAgICAgQzogQTAwMiBTRUxFQ1QgZ3JheS1jb3Vu
Y2lsDQogICAgICAgICA8Y2xpZW50IHZlcmlmaWVzIHRoZSBVSURWQUxJRElU
WSBtYXRjaGVzPg0KICAgICAgICAgQzogQTAwMyBVSUQgRkVUQ0ggMjAgQk9E
WS5QRUVLW10NCg0KICAgICBUaGUgVVJMOg0KDQogICAgICA8aW1hcDovL21p
Y2hhZWxAbWluYmFyaS5vcmcvdXNlcnMuKjt0eXBlPWxpc3Q+DQoNCiAgICAg
UmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIGNsaWVudCBjb21tYW5kczoNCg0K
ICAgICAgICAgPGNsaWVudCByZXF1ZXN0cyBwYXNzd29yZCBmcm9tIHVzZXI+
DQogICAgICAgICA8Y29ubmVjdCB0byBtaW5iYXJpLm9yZywgcG9ydCAxNDM+
DQogICAgICAgICBDOiBBMDAxIExPR0lOIE1JQ0hBRUwgemlwcGVyDQogICAg
ICAgICBDOiBBMDAyIExJU1QgIiIgdXNlcnMuKg0KDQogICAgIFRoZSBVUkw6
DQoNCiAgICAgIDxpbWFwOi8vcHN5LmVhcnRoL35wZXRlci8lRTYlOTclQTUl
RTYlOUMlQUMlRTglQUElOUUvJUU1JThGJUIwJUU1JThDJTk3Pg0KDQogICAg
IFJlc3VsdHMgaW4gdGhlIGZvbGxvd2luZyBjbGllbnQgY29tbWFuZHM6DQoN
CiAgICAgICAgIDxjb25uZWN0IHRvIHBzeS5lYXJ0aCwgcG9ydCAxNDM+DQog
ICAgICAgICBDOiBBMDAxIExPR0lOIEFOT05ZTU9VUyBiZXN0ZXJAcHN5Y29w
LnBzeS5lYXJ0aA0KICAgICAgICAgQzogQTAwMiBTRUxFQ1QgfnBldGVyLyZa
ZVZuTElxZS0vJlUsQlRGdy0NCiAgICAgICAgIDxjb21tYW5kcyB0aGUgY2xp
ZW50IHVzZXMgZm9yIHZpZXdpbmcgdGhlIGNvbnRlbnRzIG9mIGEgbWFpbGJv
eD4NCg0KICAgICBUaGUgVVJMOg0KDQogICAgICA8aW1hcDovLztBVVRIPUtF
UkJFUk9TX1Y0QG1pbmJhcmkub3JnL2dyYXktY291bmNpbC87dWlkPTIwLztz
ZWN0aW9uPTEuMj4NCg0KICAgICBSZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcg
Y2xpZW50IGNvbW1hbmRzOg0KDQogICAgICAgICA8Y29ubmVjdCB0byBtaW5i
YXJpLm9yZywgcG9ydCAxNDM+DQogICAgICAgICBDOiBBMDAxIEFVVEhFTlRJ
Q0FURSBLRVJCRVJPU19WNA0KICAgICAgICAgPGF1dGhlbnRpY2F0aW9uIGV4
Y2hhbmdlPg0KICAgICAgICAgQzogQTAwMiBTRUxFQ1QgZ3JheS1jb3VuY2ls
DQogICAgICAgICBDOiBBMDAzIFVJRCBGRVRDSCAyMCBCT0RZLlBFRUtbMS4y
XQ0KDQoNCg0KDQoNCg0KTmV3bWFuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDZdDQoM
DQpJbnRlcm5ldCBEcmFmdCAgICAgICAgICAgICAgSU1BUCBVUkwgU2NoZW1l
ICAgICAgICAgICAgICAgICAgICAgTWF5IDE5OTcNCg0KDQogICAgIElmIHRo
ZSBmb2xsb3dpbmcgcmVsYXRpdmUgVVJMIGlzIGxvY2F0ZWQgaW4gdGhhdCBi
b2R5IHBhcnQ6DQoNCiAgICAgIDw7c2VjdGlvbj0xLjQ+DQoNCiAgICAgVGhp
cyBjb3VsZCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBjbGllbnQgY29tbWFu
ZHM6DQoNCiAgICAgICAgIEM6IEEwMDQgVUlEIEZFVENIIDIwIChCT0RZLlBF
RUtbMS4yLk1JTUVdDQogICAgICAgICAgICAgICAgIEJPRFkuUEVFS1sxLk1J
TUVdDQogICAgICAgICAgICAgICAgIEJPRFkuUEVFS1tIRUFERVIuRklFTERT
IChDb250ZW50LUJhc2UgQ29udGVudC1Mb2NhdGlvbildKQ0KICAgICAgICAg
PENsaWVudCBsb29rcyBmb3IgQ29udGVudC1CYXNlIG9yIENvbnRlbnQtTG9j
YXRpb24gaGVhZGVycyBpbg0KICAgICAgICAgIHJlc3VsdC4gIElmIG5vIHN1
Y2ggaGVhZGVycywgdGhlbiBpdCBkb2VzIHRoZSBmb2xsb3dpbmc+DQogICAg
ICAgICBDOiBBMDA1IFVJRCBGRVRDSCAyMCBCT0RZLlBFRUtbMS40XQ0KDQog
ICAgIFRoZSBVUkw6DQoNCiAgICAgIDxpbWFwOi8vO0FVVEg9KkBtaW5iYXJp
Lm9yZy9ncmF5JTIwY291bmNpbD9TVUJKRUNUJTIwc2hhZG93cz4NCg0KICAg
ICBDb3VsZCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZzoNCg0KICAgICAgICAg
PGNvbm5lY3QgdG8gbWluYmFyaS5vcmcsIHBvcnQgMTQzPg0KICAgICAgICAg
QzogQTAwMSBDQVBBQklMSVRZDQogICAgICAgICBTOiAqIENBUEFCSUxJVFkg
SU1BUDRyZXYxIEFVVEg9R1NTQVBJDQogICAgICAgICBTOiBBMDAxIE9LDQog
ICAgICAgICBDOiBBMDAyIEFVVEhFTlRJQ0FURSBHU1NBUEkNCiAgICAgICAg
IDxhdXRoZW50aWNhdGlvbiBleGNoYW5nZT4NCiAgICAgICAgIFM6IEEwMDIg
T0sgdXNlciBsZW5uaWVyIGF1dGhlbnRpY2F0ZWQNCiAgICAgICAgIEM6IEEw
MDMgU0VMRUNUICJncmF5IGNvdW5jaWwiDQogICAgICAgICAuLi4NCiAgICAg
ICAgIEM6IEEwMDQgU0VBUkNIIFNVQkpFQ1Qgc2hhZG93cw0KICAgICAgICAg
UzogKiBTRUFSQ0ggOCAxMCAxMyAxNCAxNSAxNg0KICAgICAgICAgUzogQTAw
NCBPSyBTRUFSQ0ggY29tcGxldGVkDQogICAgICAgICBDOiBBMDA1IEZFVENI
IDgsMTAsMTM6MTYgQUxMDQogICAgICAgICAuLi4NCg0KICAgICBOT1RFOiBJ
biB0aGlzIGZpbmFsIGV4YW1wbGUsIHRoZSBjbGllbnQgaGFzIGltcGxlbWVu
dGF0aW9uIGRlcGVuZGVudA0KICAgICBjaG9pY2VzLiAgVGhlIGF1dGhlbnRp
Y2F0aW9uIG1lY2hhbmlzbSBjb3VsZCBiZSBhbnl0aGluZywgaW5jbHVkaW5n
DQogICAgIFBSRUFVVEguICBBbmQgdGhlIGZpbmFsIEZFVENIIGNvbW1hbmQg
Y291bGQgZmV0Y2ggbW9yZSBvciBsZXNzDQogICAgIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBtZXNzYWdlcywgZGVwZW5kaW5nIG9uIHdoYXQgaXQgd2lzaGVz
IHRvIGRpc3BsYXkNCiAgICAgdG8gdGhlIHVzZXIuDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpOZXdtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1BhZ2UgN10NCgwNCklu
dGVybmV0IERyYWZ0ICAgICAgICAgICAgICBJTUFQIFVSTCBTY2hlbWUgICAg
ICAgICAgICAgICAgICAgICBNYXkgMTk5Nw0KDQoNCjEwLiBBQk5GIGZvciBJ
TUFQIFVSTCBzY2hlbWUNCg0KICAgICBUaGlzIHVzZXMgQUJORiBhcyBkZWZp
bmVkIGluIFJGQyA4MjIgW0lNQUlMXS4gIFRlcm1pbmFscyBmcm9tIHRoZQ0K
ICAgICBCTkYgZm9yIElNQVAgW0lNQVBdIGFuZCBVUkxzIFtCQVNJQy1VUkxd
IGFyZSBhbHNvIHVzZWQuICBTdHJpbmdzDQogICAgIGFyZSBub3QgY2FzZSBz
ZW5zaXRpdmUgYW5kIGZyZWUgaW5zZXJ0aW9uIG9mIGxpbmVhci13aGl0ZS1z
cGFjZSBpcw0KICAgICBub3QgcGVybWl0dGVkLg0KDQogICAgIGFjaGFyICAg
ICAgICAgICAgPSB1Y2hhciAvICImIiAvICI9IiAvICJ+Ig0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7IHNlZSBbQkFTSUMtVVJMXSBmb3IgInVj
aGFyIiBkZWZpbml0aW9uDQoNCiAgICAgYmNoYXIgICAgICAgICAgICA9IGFj
aGFyIC8gIjoiIC8gIkAiIC8gIi8iDQoNCiAgICAgZW5jX2F1dGhfdHlwZSAg
ICA9IDEqYWNoYXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBl
bmNvZGVkIHZlcnNpb24gb2YgW0lNQVAtQVVUSF0gImF1dGhfdHlwZSINCg0K
ICAgICBlbmNfbGlzdF9tYWlsYm94ID0gMSpiY2hhcg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7IGVuY29kZWQgdmVyc2lvbiBvZiBbSU1BUDRd
ICJsaXN0X21haWxib3giDQoNCiAgICAgZW5jX21haWxib3ggICAgICA9IDEq
YmNoYXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBlbmNvZGVk
IHZlcnNpb24gb2YgW0lNQVA0XSAibWFpbGJveCINCg0KICAgICBlbmNfc2Vh
cmNoICAgICAgID0gMSpiY2hhcg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7IGVuY29kZWQgdmVyc2lvbiBvZiBzZWFyY2hfcHJvZ3JhbSBiZWxv
dw0KDQogICAgIGVuY19zZWN0aW9uICAgICAgPSAxKmJjaGFyDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsgZW5jb2RlZCB2ZXJzaW9uIG9mIHNl
Y3Rpb24gYmVsb3cNCg0KICAgICBlbmNfdXNlciAgICAgICAgID0gKmFjaGFy
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZW5jb2RlZCB2ZXJz
aW9uIG9mIFtJTUFQNF0gInVzZXJpZCINCg0KICAgICBpbWFwdXJsICAgICAg
ICAgID0gImltYXA6Ly8iIGlzZXJ2ZXIgIi8iIFsgaWNvbW1hbmQgXSBbIGlh
dXRoIF0NCg0KICAgICBpYXV0aCAgICAgICAgICAgID0gIjtBVVRIPSIgKCAi
KiIgLyBlbmNfYXV0aF90eXBlICkNCg0KICAgICBpY29tbWFuZCAgICAgICAg
ID0gaW1haWxib3hsaXN0IC8gaXBhdGggLyBpc2VhcmNoDQoNCiAgICAgaW1h
aWxib3hsaXN0ICAgICA9IFtlbmNfbGlzdF9tYWlsYm94XSBbICI7VFlQRT0i
IGxpc3RfdHlwZSBdDQoNCiAgICAgaXBhdGggICAgICAgICAgICA9IGVuY19t
YWlsYm94IFt1aWR2YWxpZGl0eV0gaXVpZCBbaXNlY3Rpb25dDQoNCiAgICAg
aXNlYXJjaCAgICAgICAgICA9IGVuY19tYWlsYm94IFsgIj8iIGVuY19zZWFy
Y2ggXSBbdWlkdmFsaWRpdHldDQoNCiAgICAgaXNlY3Rpb24gICAgICAgICA9
ICIvO1NFQ1RJT049IiBlbmNfc2VjdGlvbg0KDQogICAgIGlzZXJ2ZXIgICAg
ICAgICAgPSBbZW5jX3VzZXIgWyBpYXV0aCBdICJAIl0gaG9zdHBvcnQNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBTZWUgW0JBU0lDLVVSTF0g
Zm9yICJob3N0cG9ydCIgZGVmaW5pdGlvbg0KDQoNCg0KDQoNCk5ld21hbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbUGFnZSA4XQ0KDA0KSW50ZXJuZXQgRHJhZnQgICAgICAg
ICAgICAgIElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAgICAgICAgICAgIE1h
eSAxOTk3DQoNCg0KICAgICBpdWlkICAgICAgICAgICAgID0gIi87VUlEPSIg
bnpfbnVtYmVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgU2Vl
IFtJTUFQNF0gZm9yICJuel9udW1iZXIiIGRlZmluaXRpb24NCg0KICAgICBs
aXN0X3R5cGUgICAgICAgID0gIkxJU1QiIC8gIkxTVUIiDQoNCiAgICAgc2Vh
cmNoX3Byb2dyYW0gICA9IFsiQ0hBUlNFVCIgU1BBQ0UgYXN0cmluZyBTUEFD
RV0gMSNzZWFyY2hfa2V5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsgSU1BUDQgbGl0ZXJhbHMgbWF5IG5vdCBiZSB1c2VkDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsgU2VlIFtJTUFQNF0gZm9yICJhc3RyaW5n
IiBhbmQgInNlYXJjaF9rZXkiDQoNCiAgICAgc2VjdGlvbiAgICAgICAgICA9
IHNlY3Rpb25fdGV4dCAvIChuel9udW1iZXIgKlsiLiIgbnpfbnVtYmVyXQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiLiIgKHNlY3Rpb25fdGV4dCAv
ICJNSU1FIildKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IFNl
ZSBbSU1BUDRdIGZvciAic2VjdGlvbl90ZXh0IiBhbmQgIm56X251bWJlciIN
Cg0KICAgICB1aWR2YWxpZGl0eSAgICAgID0gIjtVSURWQUxJRElUWT0iIG56
X251bWJlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IFNlZSBb
SU1BUDRdIGZvciAibnpfbnVtYmVyIiBkZWZpbml0aW9uDQoNCg0KMTEuIFJl
ZmVyZW5jZXMNCg0KICAgICBbQkFTSUMtVVJMXSBCZXJuZXJzLUxlZSwgTWFz
aW50ZXIsIE1jQ2FoaWxsLCAiVW5pZm9ybSBSZXNvdXJjZQ0KICAgICBMb2Nh
dG9ycyAoVVJMKSIsIFJGQyAxNzM4LCBDRVJOLCBYZXJveCBDb3Jwb3JhdGlv
biwgVW5pdmVyc2l0eSBvZg0KICAgICBNaW5uZXNvdGEsIERlY2VtYmVyIDE5
OTQuDQoNCiAgICAgICAgIDxmdHA6Ly9kcy5pbnRlcm5pYy5uZXQvcmZjL3Jm
YzE3MzgudHh0Pg0KDQogICAgIFtJTUFQNF0gQ3Jpc3BpbiwgTS4sICJJbnRl
cm5ldCBNZXNzYWdlIEFjY2VzcyBQcm90b2NvbCAtIFZlcnNpb24NCiAgICAg
NHJldjEiLCBSRkMgMjA2MCwgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLCBE
ZWNlbWJlciAxOTk2Lg0KDQogICAgICAgICA8ZnRwOi8vZHMuaW50ZXJuaWMu
bmV0L3JmYy9yZmMyMDYwLnR4dD4NCg0KICAgICBbSU1BUC1BVVRIXSBNeWVy
cywgSi4sICJJTUFQNCBBdXRoZW50aWNhdGlvbiBNZWNoYW5pc20iLCBSRkMg
MTczMSwNCiAgICAgQ2FybmVnaWUtTWVsbG9uIFVuaXZlcnNpdHksIERlY2Vt
YmVyIDE5OTQuDQoNCiAgICAgICAgIDxmdHA6Ly9kcy5pbnRlcm5pYy5uZXQv
cmZjL3JmYzE3MzEudHh0Pg0KDQogICAgIFtIVFRQXSBGaWVsZGluZywgR2V0
dHlzLCBNb2d1bCwgRnJ5c3R5aywgQmVybmVycy1MZWUsICJIeXBlcnRleHQN
CiAgICAgVHJhbnNmZXIgUHJvdG9jb2wgLS0gSFRUUC8xLjEiLCBSRkMgMjA2
OCwgVUMgSXJ2aW5lLCBERUMsIE1JVC9MQ1MsDQogICAgIEphbnVhcnkgMTk5
Ny4NCg0KICAgICAgICAgPGZ0cDovL2RzLmludGVybmljLm5ldC9yZmMvcmZj
MjA2OC50eHQ+DQoNCiAgICAgW0lNQUlMXSBDcm9ja2VyLCAiU3RhbmRhcmQg
Zm9yIHRoZSBGb3JtYXQgb2YgQVJQQSBJbnRlcm5ldCBUZXh0DQogICAgIE1l
c3NhZ2VzIiwgU1REIDExLCBSRkMgODIyLCBVbml2ZXJzaXR5IG9mIERlbGF3
YXJlLCBBdWd1c3QgMTk4Mi4NCg0KICAgICAgICAgPGZ0cDovL2RzLmludGVy
bmljLm5ldC9yZmMvcmZjODIyLnR4dD4NCg0KDQoNCg0KDQoNCk5ld21hbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbUGFnZSA5XQ0KDA0KSW50ZXJuZXQgRHJhZnQgICAgICAg
ICAgICAgIElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAgICAgICAgICAgIE1h
eSAxOTk3DQoNCg0KICAgICBbS0VZV09SRFNdIEJyYWRuZXIsICJLZXkgd29y
ZHMgZm9yIHVzZSBpbiBSRkNzIHRvIEluZGljYXRlDQogICAgIFJlcXVpcmVt
ZW50IExldmVscyIsIFJGQyAyMTE5LCBIYXJ2YXJkIFVuaXZlcnNpdHksIE1h
cmNoIDE5OTcuDQoNCiAgICAgICAgIDxmdHA6Ly9kcy5pbnRlcm5pYy5uZXQv
cmZjL3JmYzIxMTkudHh0Pg0KDQogICAgIFtNSU1FXSBGcmVlZCwgTi4sIEJv
cmVuc3RlaW4sIE4uLCAiTXVsdGlwdXJwb3NlIEludGVybmV0IE1haWwNCiAg
ICAgRXh0ZW5zaW9ucyIsIFJGQyAyMDQ1LCBJbm5vc29mdCwgRmlyc3QgVmly
dHVhbCwgTm92ZW1iZXIgMTk5Ni4NCg0KICAgICAgICA8ZnRwOi8vZHMuaW50
ZXJuaWMubmV0L3JmYy9yZmMyMDQ1LnR4dD4NCg0KICAgICBbUkVMLVVSTF0g
RmllbGRpbmcsICJSZWxhdGl2ZSBVbmlmb3JtIFJlc291cmNlIExvY2F0b3Jz
IiwgUkZDIDE4MDgsDQogICAgIFVDIElydmluZSwgSnVuZSAxOTk1Lg0KDQog
ICAgICAgICA8ZnRwOi8vZHMuaW50ZXJuaWMubmV0L3JmYy9yZmMxODA4LnR4
dD4NCg0KICAgICBbVVRGOF0gWWVyZ2VhdSwgRi4gIlVURi04LCBhIHRyYW5z
Zm9ybWF0aW9uIGZvcm1hdCBvZiBVbmljb2RlIGFuZA0KICAgICBJU08gMTA2
NDYiLCBSRkMgMjA0NCwgQWxpcyBUZWNobm9sb2dpZXMsIE9jdG9iZXIgMTk5
Ni4NCg0KICAgICAgICAgPGZ0cDovL2RzLmludGVybmljLm5ldC9yZmMvcmZj
MjA0NC50eHQ+DQoNCg0KMTIuIFNlY3VyaXR5IENvbnNpZGVyYXRpb25zDQoN
CiAgICAgU2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgZGlzY3Vzc2VkIGluIHRo
ZSBJTUFQIHNwZWNpZmljYXRpb24gW0lNQVA0XQ0KICAgICBhbmQgdGhlIFVS
TCBzcGVjaWZpY2F0aW9uIFtCQVNJQy1VUkxdIGFyZSByZWxldmFudC4NCg0K
ICAgICBDbGllbnQgYXV0aG9ycyBTSE9VTEQgYmUgY2FyZWZ1bCB3aGVuIHNl
bGVjdGluZyBhbiBhdXRoZW50aWNhdGlvbg0KICAgICBtZWNoYW5pc20gaWYg
IjtBVVRIPSoiIGlzIHNwZWNpZmllZCB3aXRob3V0IGEgdXNlciBuYW1lLiAg
Q2xpZW50cw0KICAgICBTSE9VTEQgTk9UIGZhbGwgYmFjayB0byB0aGUgIkxP
R0lOIiBjb21tYW5kIHdpdGggYSB1c2VyIG90aGVyIHRoYW4NCiAgICAgImFu
b255bW91cyIuICBBIGNsaWVudCB3aGljaCB2aW9sYXRlcyB0aGlzIHJ1bGUg
aXMgdnVsbmVyYWJsZSB0byBhbg0KICAgICBhY3RpdmUgYXR0YWNrZXIgd2hp
Y2ggc3Bvb2ZzIHRoZSBzZXJ2ZXIgYW5kIGRvZXMgbm90IGRlY2xhcmUNCiAg
ICAgc3VwcG9ydCBmb3IgYW55IEFVVEhFTlRJQ0FURSBtZWNoYW5pc21zLg0K
DQogICAgIE1hbnkgZW1haWwgY2xpZW50cyBzdG9yZSB0aGUgcGxhaW4gdGV4
dCBwYXNzd29yZCBmb3IgbGF0ZXIgdXNlDQogICAgIGFmdGVyIGxvZ2dpbmcg
aW50byBhbiBJTUFQIHNlcnZlci4gIFN1Y2ggY2xpZW50cyBNVVNUIE5PVCB1
c2UgYQ0KICAgICBzdG9yZWQgcGFzc3dvcmQgaW4gcmVzcG9uc2UgdG8gYW4g
SU1BUCBVUkwgd2l0aG91dCBleHBsaWNpdA0KICAgICBwZXJtaXNzaW9uIGZy
b20gdGhlIHVzZXIgdG8gc3VwcGx5IHRoYXQgcGFzc3dvcmQgdG8gdGhlIHNw
ZWNpZmllZA0KICAgICBob3N0IG5hbWUuDQoNCg0KMTMuIEF1dGhvcidzIEFk
ZHJlc3MNCg0KICAgICBDaHJpcyBOZXdtYW4NCiAgICAgSW5ub3NvZnQgSW50
ZXJuYXRpb25hbCwgSW5jLg0KICAgICAxMDUwIEVhc3QgR2FydmV5IEF2ZS4g
U291dGgNCiAgICAgV2VzdCBDb3ZpbmEsIENBIDkxNzkwIFVTQQ0KDQogICAg
IEVtYWlsOiBjaHJpcy5uZXdtYW5AaW5ub3NvZnQuY29tDQoNCg0KDQpOZXdt
YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbUGFnZSAxMF0NCgwNCkludGVybmV0IERyYWZ0ICAg
ICAgICAgICAgICBJTUFQIFVSTCBTY2hlbWUgICAgICAgICAgICAgICAgICAg
ICBNYXkgMTk5Nw0KDQoNCkFwcGVuZGl4IEEuICBTYW1wbGUgY29kZQ0KDQpI
ZXJlIGlzIHNhbXBsZSBDIHNvdXJjZSBjb2RlIHRvIGNvbnZlcnQgYmV0d2Vl
biBVUkwgcGF0aHMgYW5kIElNQVANCm1haWxib3ggbmFtZXMsIHRha2luZyBp
bnRvIGFjY291bnQgbWFwcGluZyBiZXR3ZWVuIElNQVAncyBtb2RpZmllZCBV
VEYtNw0KW0lNQVBdIGFuZCBoZXgtZW5jb2RlZCBVVEYtOCB3aGljaCBpcyBt
b3JlIGFwcHJvcHJpYXRlIGZvciBVUkxzLiAgVGhpcw0KY29kZSBoYXMgbm90
IGJlZW4gcmlnb3JvdXNseSB0ZXN0ZWQgbm9yIGRvZXMgaXQgbmVjZXNzYXJp
bHkgYmVoYXZlDQpyZWFzb25hYmx5IHdpdGggaW52YWxpZCBpbnB1dCwgYnV0
IGl0IHNob3VsZCBzZXJ2ZSBhcyBhIHVzZWZ1bCBleGFtcGxlLg0KVGhpcyBj
b2RlIGp1c3QgY29udmVydHMgdGhlIG1haWxib3ggcG9ydGlvbiBvZiB0aGUg
VVJMIGFuZCBkb2VzIG5vdCBkZWFsDQp3aXRoIHBhcmFtZXRlcnMsIHF1ZXJ5
IG9yIHNlcnZlciBjb21wb25lbnRzIG9mIHRoZSBVUkwuDQoNCiNpbmNsdWRl
IDxzdGRpby5oPg0KI2luY2x1ZGUgPHN0cmluZy5oPg0KDQovKiBoZXhhZGVj
aW1hbCBsb29rdXAgdGFibGUgKi8NCnN0YXRpYyBjaGFyIGhleFtdID0gIjAx
MjM0NTY3ODlBQkNERUYiOw0KDQovKiBVUkwgdW5zYWZlIHByaW50YWJsZSBj
aGFyYWN0ZXJzICovDQpzdGF0aWMgY2hhciB1cmx1bnNhZmVbXSA9ICIgXCIj
JSYrOjs8PT4/QFtcXF1eYHt8fSI7DQoNCi8qIFVURjcgbW9kaWZpZWQgYmFz
ZTY0IGFscGhhYmV0ICovDQpzdGF0aWMgY2hhciBiYXNlNjRjaGFyc1tdID0N
CiAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXowMTIzNDU2Nzg5KywiOw0KI2RlZmluZSBVTkRFRklORUQg
NjQNCg0KLyogVVRGMTYgZGVmaW5pdGlvbnMgKi8NCiNkZWZpbmUgVVRGMTZN
QVNLICAgICAgIDB4MDNGRlVMDQojZGVmaW5lIFVURjE2U0hJRlQgICAgICAx
MA0KI2RlZmluZSBVVEYxNkhJR0hTVEFSVCAgMHhEODAwVUwNCiNkZWZpbmUg
VVRGMTZISUdIRU5EICAgIDB4REJGRlVMDQojZGVmaW5lIFVURjE2TE9TVEFS
VCAgICAweERDMDBVTA0KI2RlZmluZSBVVEYxNkxPRU5EICAgICAgMHhERkZG
VUwNCg0KLyogQ29udmVydCBhbiBJTUFQIG1haWxib3ggdG8gYSBVUkwgcGF0
aA0KICogIGRzdCBuZWVkcyB0byBoYXZlIHJvdWdobHkgNCB0aW1lcyB0aGUg
c3RvcmFnZSBzcGFjZSBvZiBzcmMNCiAqICAgIEhleCBlbmNvZGluZyBjYW4g
dHJpcGxlIHRoZSBzaXplIG9mIHRoZSBpbnB1dA0KICogICAgVVRGLTcgY2Fu
IGJlIHNsaWdodGx5IGRlbnNlciB0aGFuIFVURi04DQogKiAgICAgKHdvcnN0
IGNhc2U6IDggb2N0ZXRzIFVURi03IGJlY29tZXMgOSBvY3RldHMgVVRGLTgp
DQogKi8NCnZvaWQgTWFpbGJveFRvVVJMKGNoYXIgKmRzdCwgY2hhciAqc3Jj
KQ0Kew0KICAgIHVuc2lnbmVkIGNoYXIgYywgaSwgYml0Y291bnQ7DQogICAg
dW5zaWduZWQgbG9uZyB1Y3M0LCB1dGYxNiwgYml0YnVmOw0KICAgIHVuc2ln
bmVkIGNoYXIgYmFzZTY0WzI1Nl0sIHV0ZjhbNl07DQoNCiAgICAvKiBpbml0
aWFsaXplIG1vZGlmaWVkIGJhc2U2NCBkZWNvZGluZyB0YWJsZSAqLw0KICAg
IG1lbXNldChiYXNlNjQsIFVOREVGSU5FRCwgc2l6ZW9mIChiYXNlNjQpKTsN
CiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChiYXNlNjRjaGFycyk7ICsr
aSkgew0KICAgICAgICBiYXNlNjRbYmFzZTY0Y2hhcnNbaV1dID0gaTsNCg0K
DQoNCk5ld21hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtQYWdlIDExXQ0KDA0KSW50ZXJuZXQg
RHJhZnQgICAgICAgICAgICAgIElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAg
ICAgICAgICAgIE1heSAxOTk3DQoNCg0KICAgIH0NCg0KICAgIC8qIGxvb3Ag
dW50aWwgZW5kIG9mIHN0cmluZyAqLw0KICAgIHdoaWxlICgqc3JjICE9ICdc
MCcpIHsNCiAgICAgICAgYyA9ICpzcmMrKzsNCiAgICAgICAgLyogZGVhbCB3
aXRoIGxpdGVyYWwgY2hhcmFjdGVycyBhbmQgJi0gKi8NCiAgICAgICAgaWYg
KGMgIT0gJyYnIHx8ICpzcmMgPT0gJy0nKSB7DQogICAgICAgICAgICBpZiAo
YyA8ICcgJyB8fCBjID4gJ34nIHx8IHN0cmNocih1cmx1bnNhZmUsIGMpICE9
IE5VTEwpIHsNCiAgICAgICAgICAgICAgICAvKiBoZXggZW5jb2RlIGlmIG5l
Y2Vzc2FyeSAqLw0KICAgICAgICAgICAgICAgIGRzdFswXSA9ICclJzsNCiAg
ICAgICAgICAgICAgICBkc3RbMV0gPSBoZXhbYyA+PiA0XTsNCiAgICAgICAg
ICAgICAgICBkc3RbMl0gPSBoZXhbYyAmIDB4MGZdOw0KICAgICAgICAgICAg
ICAgIGRzdCArPSAzOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg
ICAgICAgICAvKiBlbmNvZGUgbGl0ZXJhbGx5ICovDQogICAgICAgICAgICAg
ICAgKmRzdCsrID0gYzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8q
IHNraXAgb3ZlciB0aGUgJy0nIGlmIHRoaXMgaXMgYW4gJi0gc2VxdWVuY2Ug
Ki8NCiAgICAgICAgICAgIGlmIChjID09ICcmJykgKytzcmM7DQogICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICAvKiBjb252ZXJ0IG1vZGlmaWVkIFVU
Ri03IC0+IFVURi0xNiAtPiBVQ1MtNCAtPiBVVEYtOCAtPiBIRVggKi8NCiAg
ICAgICAgICAgIGJpdGJ1ZiA9IDA7DQogICAgICAgICAgICBiaXRjb3VudCA9
IDA7DQogICAgICAgICAgICB1Y3M0ID0gMDsNCiAgICAgICAgICAgIHdoaWxl
ICgoYyA9IGJhc2U2NFsodW5zaWduZWQgY2hhcikgKnNyY10pICE9IFVOREVG
SU5FRCkgew0KICAgICAgICAgICAgICAgICsrc3JjOw0KICAgICAgICAgICAg
ICAgIGJpdGJ1ZiA9IChiaXRidWYgPDwgNikgfCBjOw0KICAgICAgICAgICAg
ICAgIGJpdGNvdW50ICs9IDY7DQogICAgICAgICAgICAgICAgLyogZW5vdWdo
IGJpdHMgZm9yIGEgVVRGLTE2IGNoYXJhY3Rlcj8gKi8NCiAgICAgICAgICAg
ICAgICBpZiAoYml0Y291bnQgPj0gMTYpIHsNCiAgICAgICAgICAgICAgICAg
ICAgYml0Y291bnQgLT0gMTY7DQogICAgICAgICAgICAgICAgICAgIHV0ZjE2
ID0gKGJpdGNvdW50ID8gYml0YnVmID4+IGJpdGNvdW50IDogYml0YnVmKSAm
IDB4ZmZmZjsNCiAgICAgICAgICAgICAgICAgICAgLyogY29udmVydCBVVEYx
NiB0byBVQ1M0ICovDQogICAgICAgICAgICAgICAgICAgIGlmICh1dGYxNiA+
PSBVVEYxNkhJR0hTVEFSVCAmJiB1dGYxNiA8PSBVVEYxNkhJR0hFTkQpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHVjczQgPSAodXRmMTYgJiBVVEYx
Nk1BU0spIDw8IFVURjE2U0hJRlQ7DQogICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1
dGYxNiA+PSBVVEYxNkxPU1RBUlQgJiYgdXRmMTYgPD0gVVRGMTZMT0VORCkg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgdWNzNCB8PSB1dGYxNiAmIFVU
RjE2TUFTSzsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIHVjczQgPSB1dGYxNjsNCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAvKiBjb252ZXJ0IFVU
Ri0xNiByYW5nZSBvZiBVQ1M0IHRvIFVURi04ICovDQogICAgICAgICAgICAg
ICAgICAgIGlmICh1Y3M0IDw9IDB4N2ZVTCkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgdXRmOFswXSA9IHVjczQ7DQogICAgICAgICAgICAgICAgICAg
ICAgICBpID0gMTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1
Y3M0IDw9IDB4N2ZmVUwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHV0
ZjhbMF0gPSAweGMwIHwgKHVjczQgPj4gNik7DQogICAgICAgICAgICAgICAg
ICAgICAgICB1dGY4WzFdID0gMHg4MCB8ICh1Y3M0ICYgMHgzZik7DQoNCg0K
DQpOZXdtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbUGFnZSAxMl0NCgwNCkludGVybmV0IERy
YWZ0ICAgICAgICAgICAgICBJTUFQIFVSTCBTY2hlbWUgICAgICAgICAgICAg
ICAgICAgICBNYXkgMTk5Nw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAg
IGkgPSAyOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVjczQg
PD0gMHhmZmZmVUwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHV0Zjhb
MF0gPSAweGUwIHwgKHVjczQgPj4gMTIpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgdXRmOFsxXSA9IDB4ODAgfCAoKHVjczQgPj4gNikgJiAweDNmKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjhbMl0gPSAweDgwIHwgKHVj
czQgJiAweDNmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAzOw0K
ICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg
ICAgICAgICAgdXRmOFswXSA9IDB4ZjAgfCAodWNzNCA+PiAxOCk7DQogICAg
ICAgICAgICAgICAgICAgICAgICB1dGY4WzFdID0gMHg4MCB8ICgodWNzNCA+
PiAxMikgJiAweDNmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHV0Zjhb
Ml0gPSAweDgwIHwgKCh1Y3M0ID4+IDYpICYgMHgzZik7DQogICAgICAgICAg
ICAgICAgICAgICAgICB1dGY4WzNdID0gMHg4MCB8ICh1Y3M0ICYgMHgzZik7
DQogICAgICAgICAgICAgICAgICAgICAgICBpID0gNDsNCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAvKiBjb252ZXJ0IHV0
ZjggdG8gaGV4ICovDQogICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IDA7
IGMgPCBpOyArK2MpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRzdFsw
XSA9ICclJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRzdFsxXSA9IGhl
eFt1dGY4W2NdID4+IDRdOw0KICAgICAgICAgICAgICAgICAgICAgICAgZHN0
WzJdID0gaGV4W3V0ZjhbY10gJiAweDBmXTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGRzdCArPSAzOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLyog
c2tpcCBvdmVyIHRyYWlsaW5nICctJyBpbiBtb2RpZmllZCBVVEYtNyBlbmNv
ZGluZyAqLw0KICAgICAgICAgICAgaWYgKCpzcmMgPT0gJy0nKSArK3NyYzsN
CiAgICAgICAgfQ0KICAgIH0NCiAgICAvKiB0ZXJtaW5hdGUgZGVzdGluYXRp
b24gc3RyaW5nICovDQogICAgKmRzdCA9ICdcMCc7DQp9DQoNCi8qIENvbnZl
cnQgaGV4IGNvZGVkIFVURi04IFVSTCBwYXRoIHRvIG1vZGlmaWVkIFVURi03
IElNQVAgbWFpbGJveA0KICogIGRzdCBzaG91bGQgYmUgYWJvdXQgdHdpY2Ug
dGhlIGxlbmd0aCBvZiBzcmMgdG8gZGVhbCB3aXRoIG5vbi1oZXggY29kZWQg
VVJMcw0KICovDQp2b2lkIFVSTHRvTWFpbGJveChjaGFyICpkc3QsIGNoYXIg
KnNyYykNCnsNCiAgICB1bnNpZ25lZCBpbnQgdXRmOHBvcywgdXRmOHRvdGFs
LCBpLCBjLCB1dGY3bW9kZSwgYml0c3RvZ28sIHV0ZjE2ZmxhZzsNCiAgICB1
bnNpZ25lZCBsb25nIHVjczQsIGJpdGJ1ZjsNCiAgICB1bnNpZ25lZCBjaGFy
IGhleHRhYlsyNTZdOw0KDQogICAgLyogaW5pdGlhbGl6ZSBoZXggbG9va3Vw
IHRhYmxlICovDQogICAgbWVtc2V0KGhleHRhYiwgMCwgc2l6ZW9mIChoZXh0
YWIpKTsNCiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChoZXgpOyArK2kp
IHsNCiAgICAgICAgaGV4dGFiW2hleFtpXV0gPSBpOw0KICAgICAgICBpZiAo
aXN1cHBlcihoZXhbaV0pKSBoZXh0YWJbdG9sb3dlcihoZXhbaV0pXSA9IGk7
DQogICAgfQ0KDQogICAgdXRmN21vZGUgPSAwOw0KICAgIHV0Zjh0b3RhbCA9
IDA7DQoNCg0KDQpOZXdtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUGFnZSAxM10NCgwNCklu
dGVybmV0IERyYWZ0ICAgICAgICAgICAgICBJTUFQIFVSTCBTY2hlbWUgICAg
ICAgICAgICAgICAgICAgICBNYXkgMTk5Nw0KDQoNCiAgICBiaXRzdG9nbyA9
IDA7DQogICAgd2hpbGUgKChjID0gKnNyYykgIT0gJ1wwJykgew0KICAgICAg
ICArK3NyYzsNCiAgICAgICAgLyogdW5kbyBoZXgtZW5jb2RpbmcgKi8NCiAg
ICAgICAgaWYgKGMgPT0gJyUnKSB7DQogICAgICAgICAgICBjID0gKGhleHRh
YltzcmNbMF1dIDw8IDQpIHwgaGV4dGFiW3NyY1sxXV07DQogICAgICAgICAg
ICBzcmMgKz0gMjsNCiAgICAgICAgfQ0KICAgICAgICAvKiBub3JtYWwgY2hh
cmFjdGVyPyAqLw0KICAgICAgICBpZiAoYyA+PSAnICcgJiYgYyA8PSAnficp
IHsNCiAgICAgICAgICAgIC8qIHN3aXRjaCBvdXQgb2YgVVRGLTcgbW9kZSAq
Lw0KICAgICAgICAgICAgaWYgKHV0Zjdtb2RlKSB7DQogICAgICAgICAgICAg
ICAgaWYgKGJpdHN0b2dvKSB7DQogICAgICAgICAgICAgICAgICAgICpkc3Qr
KyA9IGJhc2U2NGNoYXJzWyhiaXRidWYgPDwgKDYgLSBiaXRzdG9nbykpICYg
MHgzRl07DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICpk
c3QrKyA9ICctJzsNCiAgICAgICAgICAgICAgICB1dGY3bW9kZSA9IDA7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICAqZHN0KysgPSBjOw0KICAgICAg
ICAgICAgLyogZW5jb2RlICcmJyBhcyAnJi0nICovDQogICAgICAgICAgICBp
ZiAoYyA9PSAnJicpIHsNCiAgICAgICAgICAgICAgICAqZHN0KysgPSAnLSc7
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjb250aW51ZTsNCiAgICAg
ICAgfQ0KICAgICAgICAvKiBzd2l0Y2ggdG8gVVRGLTcgbW9kZSAqLw0KICAg
ICAgICBpZiAoIXV0Zjdtb2RlKSB7DQogICAgICAgICAgICAqZHN0KysgPSAn
Jic7DQogICAgICAgICAgICB1dGY3bW9kZSA9IDE7DQogICAgICAgIH0NCiAg
ICAgICAgLyogRW5jb2RlIFVTLUFTQ0lJIGNoYXJhY3RlcnMgYXMgdGhlbXNl
bHZlcyAqLw0KICAgICAgICBpZiAoYyA8IDB4ODApIHsNCiAgICAgICAgICAg
IHVjczQgPSBjOw0KICAgICAgICAgICAgdXRmOHRvdGFsID0gMTsNCiAgICAg
ICAgfSBlbHNlIGlmICh1dGY4dG90YWwpIHsNCiAgICAgICAgICAgIC8qIHNh
dmUgVVRGOCBiaXRzIGludG8gVUNTNCAqLw0KICAgICAgICAgICAgdWNzNCA9
ICh1Y3M0IDw8IDYpIHwgKGMgJiAweDNGVUwpOw0KICAgICAgICAgICAgaWYg
KCsrdXRmOHBvcyA8IHV0Zjh0b3RhbCkgew0KICAgICAgICAgICAgICAgIGNv
bnRpbnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAg
ICAgICAgICAgdXRmOHBvcyA9IDE7DQogICAgICAgICAgICBpZiAoYyA8IDB4
RTApIHsNCiAgICAgICAgICAgICAgICB1dGY4dG90YWwgPSAyOw0KICAgICAg
ICAgICAgICAgIHVjczQgPSBjICYgMHgxRjsNCiAgICAgICAgICAgIH0gZWxz
ZSBpZiAoYyA8IDB4RjApIHsNCiAgICAgICAgICAgICAgICB1dGY4dG90YWwg
PSAzOw0KICAgICAgICAgICAgICAgIHVjczQgPSBjICYgMHgwRjsNCg0KDQoN
Ck5ld21hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtQYWdlIDE0XQ0KDA0KSW50ZXJuZXQgRHJh
ZnQgICAgICAgICAgICAgIElNQVAgVVJMIFNjaGVtZSAgICAgICAgICAgICAg
ICAgICAgIE1heSAxOTk3DQoNCg0KICAgICAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgICAgICAvKiBOT1RFOiBjYW4ndCBjb252ZXJ0IFVURjggc2Vx
dWVuY2VzIGxvbmdlciB0aGFuIDQgKi8NCiAgICAgICAgICAgICAgICB1dGY4
dG90YWwgPSA0Ow0KICAgICAgICAgICAgICAgIHVjczQgPSBjICYgMHgwMzsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAg
ICB9DQogICAgICAgIC8qIGxvb3AgdG8gc3BsaXQgdWNzNCBpbnRvIHR3byB1
dGYxNiBjaGFycyBpZiBuZWNlc3NhcnkgKi8NCiAgICAgICAgdXRmOHRvdGFs
ID0gMDsNCiAgICAgICAgZG8gew0KICAgICAgICAgICAgaWYgKHVjczQgPiAw
eGZmZmZVTCkgew0KICAgICAgICAgICAgICAgIGJpdGJ1ZiA9IChiaXRidWYg
PDwgMTYpIHwgKCh1Y3M0ID4+IFVURjE2U0hJRlQpDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBVVEYxNkhJR0hTVEFS
VCk7DQogICAgICAgICAgICAgICAgdWNzNCA9ICh1Y3M0ICYgVVRGMTZNQVNL
KSArIFVURjE2TE9TVEFSVDsNCiAgICAgICAgICAgICAgICB1dGYxNmZsYWcg
PSAxOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBi
aXRidWYgPSAoYml0YnVmIDw8IDE2KSB8IHVjczQ7DQogICAgICAgICAgICAg
ICAgdXRmMTZmbGFnID0gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IGJpdHN0b2dvICs9IDE2Ow0KICAgICAgICAgICAgLyogc3BldyBvdXQgYmFz
ZTY0ICovDQogICAgICAgICAgICB3aGlsZSAoYml0c3RvZ28gPj0gNikgew0K
ICAgICAgICAgICAgICAgIGJpdHN0b2dvIC09IDY7DQogICAgICAgICAgICAg
ICAgKmRzdCsrID0gYmFzZTY0Y2hhcnNbKGJpdHN0b2dvID8gKGJpdGJ1ZiA+
PiBiaXRzdG9nbykgOiBiaXRidWYpDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiAweDNGXTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfSB3aGlsZSAodXRmMTZmbGFnKTsNCiAgICB9DQogICAgLyogaWYgaW4g
VVRGLTcgbW9kZSwgZmluaXNoIGluIEFTQ0lJICovDQogICAgaWYgKHV0Zjdt
b2RlKSB7DQogICAgICAgIGlmIChiaXRzdG9nbykgew0KICAgICAgICAgICAg
KmRzdCsrID0gYmFzZTY0Y2hhcnNbKGJpdGJ1ZiA8PCAoNiAtIGJpdHN0b2dv
KSkgJiAweDNGXTsNCiAgICAgICAgfQ0KICAgICAgICAqZHN0KysgPSAnLSc7
DQogICAgfQ0KICAgIC8qIHRpZSBvZmYgc3RyaW5nICovDQogICAgKmRzdCA9
ICdcMCc7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCk5ld21hbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtQYWdlIDE1XQ0KDA0KDQo=
---559023410-1297389768-862435041=:16628--