This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

libgcj/9696: read fail on gij or compiled when object contains user objects


>Number:         9696
>Category:       libgcj
>Synopsis:       read fail on gij or compiled when object contains user objects
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Feb 13 19:16:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Doug Parsons
>Release:        gcc 3.2.2
>Organization:
>Environment:
Linux Debian Potato 2.2 libc 2.3.1 Pent 200MMX
>Description:
After writing a object to file that contains a user defined object reference, in this case 
Printer pnt = new Printer();
cannot be read back in by GIJ or compiled code.

I have worked around the problem by having a class that only contains primitive types and arrays of primitive types.  
>How-To-Repeat:
Open files and run in ibm jvm. Run twice. Requires directory usr/local to be present. On first run error message will indicate that file cannot be read. On second run no message. Reads file written on first run. 
Erase file created in usr/local called "info" (bad choice of name).
Run program in GIJ twice. Will give error on all runs. 
Follow by running ibm jvm without removing file. Gives no error, indicating that the file was written properly but failing to read. When tracing the problem the object in SetupIO that was read in is not null, but upon returning to the main the assignment produces a null object. 
By removing the reference to the user object in Settings.java, remove line Printer pnt = new Printer();, the program will run with no error message.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-tar; name="Tst.tar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Tst.tar"

dXNyL3RzdC9Uc3QvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NTUAMDAwMDAw
MAAwMDAwMDAwADAwMDAwMDAwMDAwADA3NjIwMTA1NDM2ADAxMTc2MAAgNQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1
c3IvdHN0L1RzdC9GaXNoRHVtcC5jbGFzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAw
ADAwMDAwMDAAMDAwMDAwMDE0MDUAMDc2MjAxMDM1MzcAMDE0NTIzACAwAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMr+
ur4AAwAtADEBAAxUc3QvRmlzaER1bXAHAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAEaW5mbwEA
DkxUc3QvU2V0dGluZ3M7AQAEbWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlCAAF
AQALVHN0L1NldHVwSU8HAAsBAApvcGVuSW5GaWxlAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2
YS9sYW5nL09iamVjdDsMAA0ADgoADAAPAQAMVHN0L1NldHRpbmdzBwARDAAFAAYJAAIAEwEAEGph
dmEvbGFuZy9TeXN0ZW0HABUBAANvdXQBABVMamF2YS9pby9QcmludFN0cmVhbTsMABcAGAkAFgAZ
AQAwRXJyb3IgbG9hZGluZyBTZXR0aW5ncy4gRGVmYXVsdCBzZXR0aW5ncyBsb2FkZWQuCAAbAQAT
amF2YS9pby9QcmludFN0cmVhbQcAHQEAB3ByaW50bG4BABUoTGphdmEvbGFuZy9TdHJpbmc7KVYM
AB8AIAoAHgAhAQAGPGluaXQ+AQADKClWDAAjACQKABIAJQEAC29wZW5PdXRGaWxlAQAnKExqYXZh
L2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvU3RyaW5nOylJDAAnACgKAAwAKQEAHmphdmEvbGFuZy9O
dWxsUG9pbnRlckV4Y2VwdGlvbgcAKwEAD0xpbmVOdW1iZXJUYWJsZQoABAAlAQAKU291cmNlRmls
ZQEADUZpc2hEdW1wLmphdmEAIQACAAQAAAABAAgABQAGAAAAAgAJAAcACAABAAkAAABtAAIAAgAA
ADUSCrgAEMAAErMAFKcACEwBswAUsgAUxwAesgAaEhy2ACK7ABJZtwAmswAUsgAUEgq4ACo8sQAB
AAAACwAOACwAAQAtAAAAHgAHAAAADgAOAA8ADwAQABMAFAAZABYAIQAXACsAGAABACMAJAABAAkA
AAARAAEAAQAAAAUqtwAusQAAAAAAAQAvAAAAAgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3Iv
dHN0L1RzdC9Db25zb2xlLmphdmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDQ0NAAwMDAwMDAwADAw
MDAwMDAAMDAwMDAwMTAxMDQAMDc2MTc2MzA3MTYAMDE0MjI2ACAwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhY2th
Z2UgVHN0Ow0KcHVibGljIGNsYXNzIENvbnNvbGUNCnsgIC8qKg0KCSogcHJpbnQgYSBwcm9tcHQg
b24gdGhlIGNvbnNvbGUgYnV0IGRvbid0IHByaW50IGEgbmV3bGluZQ0KCSogQHBhcmFtIHByb21w
dCB0aGUgcHJvbXB0IHN0cmluZyB0byBkaXNwbGF5DQoJKi8NCg0KICAgcHVibGljIHN0YXRpYyB2
b2lkIHByaW50UHJvbXB0KFN0cmluZyBwcm9tcHQpDQogICB7ICBTeXN0ZW0ub3V0LnByaW50KHBy
b21wdCArICIgIik7DQoJICBTeXN0ZW0ub3V0LmZsdXNoKCk7DQogICB9ICAgICAgICAgDQogICAN
CiAgIC8qKg0KCSogcmVhZCBhIGNoYXIgb3Igc3RyaW5nIGZyb20gdGhlIGNvbnNvbGUuIFRoZSBz
dHJpbmcgaXMgDQoJKiB0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZQ0KCSogQHJldHVybiB0aGUgZmly
c3QgY2hhcmFjdGVyIGFzIGEgY2hhciAod2l0aG91dCB0aGUgbmV3bGluZSkNCgkqLw0KCQ0KDQog
ICBwdWJsaWMgc3RhdGljIGNoYXIgcmVhZENoYXIoKQ0KICAgew0KCWNoYXIgY2g9JyAnOw0KCXRy
eQ0KCQkgeyAgDQoJCWNoID0gKGNoYXIpIFN5c3RlbS5pbi5yZWFkKCk7DQoJCQkNCgkJIH0NCgkJ
IGNhdGNoKGphdmEuaW8uSU9FeGNlcHRpb24gZSkNCgkJIHsgIA0KCQkNCgkJIH0NCglyZXR1cm4g
Y2g7DQogICB9ICAgICAgICAgCQ0KICAgDQogICBwdWJsaWMgc3RhdGljIGNoYXIgcmVhZENoYXIo
U3RyaW5nIHByb21wdCkNCiAgIHsNCgkJcHJpbnRQcm9tcHQocHJvbXB0KTsNCgkJcmV0dXJuIHJl
YWRDaGFyKCk7DQogICB9ICAgICAgICAgDQoNCg0KDQogICAvKioNCgkqIHJlYWQgYSBjaGFyIG9y
IHN0cmluZyBmcm9tIHRoZSBjb25zb2xlLiBJdCBtdXN0IHN0YXJ0IHdpdGggVCBvciBGLg0KCSog
IFRoZSBzdHJpbmcgaXMgdGVybWluYXRlZCBieSBhIG5ld2xpbmUuICBJZiB0aGUgZmlyc3QgY2hh
cmFjdGVyDQoJKiAgaXMgYW4gZiwgdGhlIGJvb2xlYW4gZmFsc2UgaXMgcmV0dXJuZWQgb3IgdHJ1
ZSBmb3IgYSBULg0KCSogDQoJKi8NCg0KCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiByZWFkQm9vbGVh
bigpDQogICB7DQoJYm9vbGVhbiBkb25lID0gZmFsc2U7DQoJICBjaGFyIGNoPScgJzsgDQoJCWRv
IHsNCgkJCQ0KCQkgICANCgkJCXRyeQ0KCQkJeyAgDQoJCQkJY2ggPSAoY2hhcikgU3lzdGVtLmlu
LnJlYWQoKTsNCgkJCQkNCgkJCX0NCgkJCWNhdGNoIChqYXZhLmlvLklPRXhjZXB0aW9uIGUpDQoJ
CQl7DQoJCQl9DQoJCSANCgkJCWlmIChjaD09J1QnIHx8IGNoID09ICd0JyB8fCBjaCA9PSAnRicg
fHwgY2ggPT0gJ2YnKQ0KCQkJCSBkb25lID0gdHJ1ZTsNCgkJCQ0KCQl9IHdoaWxlICghZG9uZSk7
DQoNCgkgICAgaWYgKGNoPT0nVCcgfHwgY2ggPT0gJ3QnKQ0KCSAgICAgICAgcmV0dXJuIHRydWU7
DQoJICAgIGVsc2UNCgkgICAgICAgIHJldHVybiBmYWxzZTsgICAgDQoNCg0KICAgfSAgICAgDQog
ICAvKiogcmVhZHMgYSBCb29sZWFuIGZyb20gdGhlIGtleWJvYXJkDQoJKiAgIHJldHVybnMgdGhl
IEJvb2xlYW4NCgkqLyAgCQ0KICAgDQogICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVhZEJvb2xl
YW4oU3RyaW5nIHByb21wdCkNCiAgIHsNCgkJcHJpbnRQcm9tcHQocHJvbXB0KTsNCgkJcmV0dXJu
IHJlYWRCb29sZWFuKCk7DQogICB9ICAgICAgICAgDQoNCg0KDQogICANCgkNCiAgIA0KICAgLyoq
DQoJKiByZWFkIGEgc3RyaW5nIGZyb20gdGhlIGNvbnNvbGUuIFRoZSBzdHJpbmcgaXMgDQoJKiB0
ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZQ0KCSogQHJldHVybiB0aGUgaW5wdXQgc3RyaW5nICh3aXRo
b3V0IHRoZSBuZXdsaW5lKQ0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIFN0cmluZyByZWFkU3Ry
aW5nKCkNCiAgIHsgIGludCBjaDsNCgkgIFN0cmluZyByID0gIiI7DQoJICBib29sZWFuIGRvbmUg
PSBmYWxzZTsNCgkgIHdoaWxlICghZG9uZSkNCgkgIHsgIHRyeQ0KCQkgeyAgY2ggPSBTeXN0ZW0u
aW4ucmVhZCgpOw0KCQkJaWYgKGNoIDwgMCB8fCAoY2hhciljaCA9PSAnXG4nKQ0KCQkJICAgZG9u
ZSA9IHRydWU7DQoJCQllbHNlIGlmICgoY2hhciljaCAhPSAnXHInKSAvLyB3ZWlyZC0taXQgdXNl
ZCB0byBkbyBcclxuIHRyYW5zbGF0aW9uDQoJCQkgICByID0gciArIChjaGFyKSBjaDsNCgkJIH0N
CgkJIGNhdGNoKGphdmEuaW8uSU9FeGNlcHRpb24gZSkNCgkJIHsgIGRvbmUgPSB0cnVlOw0KCQkg
fQ0KCSAgfQ0KCSAgcmV0dXJuIHI7DQogICB9ICAgICAgICAgDQoNCiAgIC8qKg0KCSogcmVhZCBh
IHN0cmluZyBmcm9tIHRoZSBjb25zb2xlLiBUaGUgc3RyaW5nIGlzIA0KCSogdGVybWluYXRlZCBi
eSBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQgdGhlIHByb21wdCBzdHJpbmcgdG8gZGlzcGxh
eQ0KCSogQHJldHVybiB0aGUgaW5wdXQgc3RyaW5nICh3aXRob3V0IHRoZSBuZXdsaW5lKQ0KCSov
DQoJDQogICBwdWJsaWMgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nKFN0cmluZyBwcm9tcHQpDQog
ICB7ICBwcmludFByb21wdChwcm9tcHQpOw0KCSAgcmV0dXJuIHJlYWRTdHJpbmcoKTsNCiAgIH0g
ICAgICAgICANCg0KICAgLyoqDQoJKiByZWFkIGEgd29yZCBmcm9tIHRoZSBjb25zb2xlLiBUaGUg
d29yZCBpcyANCgkqIGFueSBzZXQgb2YgY2hhcmFjdGVycyB0ZXJtaW5hdGVkIGJ5IHdoaXRlc3Bh
Y2UNCgkqIEByZXR1cm4gdGhlICd3b3JkJyBlbnRlcmVkDQoJKi8NCgkNCiAgIHB1YmxpYyBzdGF0
aWMgU3RyaW5nIHJlYWRXb3JkKCkNCiAgIHsgIGludCBjaDsNCgkgIFN0cmluZyByID0gIiI7DQoJ
ICBib29sZWFuIGRvbmUgPSBmYWxzZTsNCgkgIHdoaWxlICghZG9uZSkNCgkgIHsgIHRyeQ0KCQkg
eyAgY2ggPSBTeXN0ZW0uaW4ucmVhZCgpOw0KCQkJaWYgKGNoIDwgMCANCgkJCSAgIHx8IGphdmEu
bGFuZy5DaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKChjaGFyKWNoKSkNCgkJCSAgIGRvbmUgPSB0cnVl
Ow0KCQkJZWxzZQ0KCQkJICAgciA9IHIgKyAoY2hhcikgY2g7DQoJCSB9DQoJCSBjYXRjaChqYXZh
LmlvLklPRXhjZXB0aW9uIGUpDQoJCSB7ICBkb25lID0gdHJ1ZTsNCgkJIH0NCgkgIH0NCgkgIHJl
dHVybiByOw0KICAgfSAgICAgICAgIA0KDQogICAvKioNCgkqIHJlYWQgYW4gaW50ZWdlciBmcm9t
IHRoZSBjb25zb2xlLiBUaGUgaW5wdXQgaXMgDQoJKiB0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZQ0K
CSogQHBhcmFtIHByb21wdCB0aGUgcHJvbXB0IHN0cmluZyB0byBkaXNwbGF5DQoJKiBAcmV0dXJu
IHRoZSBpbnB1dCB2YWx1ZSBhcyBhbiBpbnQNCgkqIEBleGNlcHRpb24gTnVtYmVyRm9ybWF0RXhj
ZXB0aW9uIGlmIGJhZCBpbnB1dA0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIGludCByZWFkSW50
KFN0cmluZyBwcm9tcHQpDQogICB7ICB3aGlsZSh0cnVlKQ0KCSAgeyAgcHJpbnRQcm9tcHQocHJv
bXB0KTsNCgkJIHRyeQ0KCQkgeyAgcmV0dXJuIEludGVnZXIudmFsdWVPZg0KCQkJICAgKHJlYWRT
dHJpbmcoKS50cmltKCkpLmludFZhbHVlKCk7DQoJCSB9IGNhdGNoKE51bWJlckZvcm1hdEV4Y2Vw
dGlvbiBlKQ0KCQkgeyAgU3lzdGVtLm91dC5wcmludGxuDQoJCQkgICAoIk5vdCBhbiBpbnRlZ2Vy
LiBQbGVhc2UgdHJ5IGFnYWluISIpOw0KCQkgfQ0KCSAgfQ0KICAgfSAgICAgICAgIA0KDQogICAv
KioNCgkqIHJlYWQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgZnJvbSB0aGUgY29uc29sZS4gDQoJ
KiBUaGUgaW5wdXQgaXMgdGVybWluYXRlZCBieSBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQg
dGhlIHByb21wdCBzdHJpbmcgdG8gZGlzcGxheQ0KCSogQHJldHVybiB0aGUgaW5wdXQgdmFsdWUg
YXMgYSBkb3VibGUNCgkqIEBleGNlcHRpb24gTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIGJhZCBp
bnB1dA0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIGRvdWJsZSByZWFkRG91YmxlKFN0cmluZyBw
cm9tcHQpDQogICB7ICB3aGlsZSh0cnVlKQ0KCSAgeyAgcHJpbnRQcm9tcHQocHJvbXB0KTsNCgkJ
IHRyeQ0KCQkgeyAgcmV0dXJuIERvdWJsZS52YWx1ZU9mDQoJCQkgICAocmVhZFN0cmluZygpLnRy
aW0oKSkuZG91YmxlVmFsdWUoKTsNCgkJIH0gY2F0Y2goTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUp
DQoJCSB7ICBTeXN0ZW0ub3V0LnByaW50bG4NCgkJICgiTm90IGEgZmxvYXRpbmcgcG9pbnQgbnVt
YmVyLiBQbGVhc2UgdHJ5IGFnYWluISIpOw0KCQkgfQ0KCSAgfQ0KICAgfSAgICAgICAgIA0KfQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1Nl
dHRpbmdzLmNsYXNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAw
MDAwMjU2MgAwNzYyMDEwNTAyNwAwMTQ2MDUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJv
b3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyv66vgADAC0ASwEADFRz
dC9TZXR0aW5ncwcAAQEAEGphdmEvbGFuZy9PYmplY3QHAAMBABRqYXZhL2lvL1NlcmlhbGl6YWJs
ZQcABQEACHBvcnROYW1lAQASTGphdmEvbGFuZy9TdHJpbmc7AQAHaG9tZURpcgEABnF1ZURpcgEA
B3F1ZUZpbGUBAAlxdWVJZ25vcmUBAAFaAQAKZmllbGROYW1lcwEAEkxqYXZhL3V0aWwvVmVjdG9y
OwEACGZpZWxkRW5kAQALZkhlYWRlclRlcm0BAApmaWVsZENvdW50AQABSQEADmZpZWxkU2VwYXJh
dG9yAQAFc3RhcnQBAARzdG9wAQAFbW9kZWwBAAY8aW5pdD4BAAMoKVYBAARDb2RlDAAYABkKAAQA
GwEAEGphdmEvdXRpbC9WZWN0b3IHAB0KAB4AGwwAFQAPCQACACABAANzZGYIACIBAAphZGRFbGVt
ZW50AQAVKExqYXZhL2xhbmcvT2JqZWN0OylWDAAkACUKAB4AJgEACy9kZXYvdGVybS9hCAAoDAAH
AAgJAAIAKgEACy91c3IvbG9jYWwvCAAsDAAJAAgJAAIALgwACgAICQACADABAANxdWUIADIMAAsA
CAkAAgA0DAAMAA0JAAIANgEAD0xpbmVOdW1iZXJUYWJsZQEABGluaXQBAAtUc3QvUHJpbnRlcgcA
OgoAOwAbAQAKZ2V0SG9tZURpcgEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAKc2V0SG9tZURpcgEA
FShMamF2YS9sYW5nL1N0cmluZzspVgEACWdldFF1ZURpcgEACXNldFF1ZURpcgEACmdldFF1ZUZp
bGUBAApzZXRRdWVGaWxlAQAMZ2V0UXVlSWdub3JlAQADKClaAQAMc2V0UXVlSWdub3JlAQAEKFop
VgEAClNvdXJjZUZpbGUBAA1TZXR0aW5ncy5qYXZhACEAAgAEAAEABgANAAIABwAIAAAAAgAJAAgA
AAACAAoACAAAAAIACwAIAAAAAgAMAA0AAAAAAA4ADwAAAAAAEAAPAAAAAAARAA8AAAAAABIAEwAA
AAAAFAAPAAAAAAAVAA8AAAAAABYADwAAAAAAFwAIAAAACgABABgAGQABABoAAACAAAMAAgAAAEQq
twAcKrsAHlm3AB+1ACEDPBsQGKIAEiq0ACESI7YAJ4QBAaf/7ioSKbUAKyoSLbUALyoSLbUAMSoS
M7UANSoEtQA3sQAAAAEAOAAAACoACgAEACMADwAkABEAJAAXACUAIAAkACYAJgAsACcAMgAoADgA
KQA+ACoAAQA5ABkAAQAaAAAAIQACAAIAAAAJuwA7WbcAPEyxAAAAAQA4AAAABgABAAAALgABAD0A
PgABABoAAAAdAAEAAQAAAAUqtAAvsAAAAAEAOAAAAAYAAQAAAEIAAQA/AEAAAQAaAAAAHgACAAIA
AAAGKiu1AC+xAAAAAQA4AAAABgABAAAASQABAEEAPgABABoAAAAdAAEAAQAAAAUqtAAxsAAAAAEA
OAAAAAYAAQAAAFIAAQBCAEAAAQAaAAAAHgACAAIAAAAGKiu1ADGxAAAAAQA4AAAABgABAAAAWQAB
AEMAPgABABoAAAAdAAEAAQAAAAUqtAA1sAAAAAEAOAAAAAYAAQAAAGIAAQBEAEAAAQAaAAAAHgAC
AAIAAAAGKiu1ADWxAAAAAQA4AAAABgABAAAAaQABAEUARgABABoAAAAdAAEAAQAAAAUqtAA3rAAA
AAEAOAAAAAYAAQAAAHIAAQBHAEgAAQAaAAAAHgACAAIAAAAGKhu1ADexAAAAAQA4AAAABgABAAAA
eQABAEkAAAACAEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNyL3RzdC9Uc3QvRmlzaER1
bXAuamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAw
NzA1ADA3NjIwMTAzNDU2ADAxNDMzNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsKCmltcG9y
dCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuKjsKCnB1YmxpYyBjbGFzcyBGaXNoRHVtcCB7
CglzdGF0aWMgU2V0dGluZ3MgaW5mbzsKCgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5n
W10gYXJncykgewoKCQoJCXRyeXsKCQlpbmZvID0gKFNldHRpbmdzKSBTZXR1cElPLm9wZW5JbkZp
bGUoImluZm8iKTsKCQl9Y2F0Y2goTnVsbFBvaW50ZXJFeGNlcHRpb24gZSl7CgkJCWluZm89bnVs
bDsKCQl9CgkJCgkJCgkJaWYgKGluZm8gPT0gbnVsbCkgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4o
CgkJCQkiRXJyb3IgbG9hZGluZyBTZXR0aW5ncy4gRGVmYXVsdCBzZXR0aW5ncyBsb2FkZWQuIik7
CgkJCWluZm8gPSBuZXcgU2V0dGluZ3MoKTsKCQkJaW50IGhvbGQgPSBTZXR1cElPLm9wZW5PdXRG
aWxlKGluZm8sICJpbmZvIik7CgkJfQoJCgoJCQoJfQoKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L0NvbnNvbGUu
Y2xhc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDA3NDAw
MAAwNzYyMDEwNTcxMQAwMTQ0MDMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ29uc29sZS5qYXZhAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDEwMTA0
ADA3NjE3NjMwNzE2ADAxMjAzMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsNCnB1YmxpYyBj
bGFzcyBDb25zb2xlDQp7ICAvKioNCgkqIHByaW50IGEgcHJvbXB0IG9uIHRoZSBjb25zb2xlIGJ1
dCBkb24ndCBwcmludCBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQgdGhlIHByb21wdCBzdHJp
bmcgdG8gZGlzcGxheQ0KCSovDQoNCiAgIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludFByb21wdChT
dHJpbmcgcHJvbXB0KQ0KICAgeyAgU3lzdGVtLm91dC5wcmludChwcm9tcHQgKyAiICIpOw0KCSAg
U3lzdGVtLm91dC5mbHVzaCgpOw0KICAgfSAgICAgICAgIA0KICAgDQogICAvKioNCgkqIHJlYWQg
YSBjaGFyIG9yIHN0cmluZyBmcm9tIHRoZSBjb25zb2xlLiBUaGUgc3RyaW5nIGlzIA0KCSogdGVy
bWluYXRlZCBieSBhIG5ld2xpbmUNCgkqIEByZXR1cm4gdGhlIGZpcnN0IGNoYXJhY3RlciBhcyBh
IGNoYXIgKHdpdGhvdXQgdGhlIG5ld2xpbmUpDQoJKi8NCgkNCg0KICAgcHVibGljIHN0YXRpYyBj
aGFyIHJlYWRDaGFyKCkNCiAgIHsNCgljaGFyIGNoPScgJzsNCgl0cnkNCgkJIHsgIA0KCQljaCA9
IChjaGFyKSBTeXN0ZW0uaW4ucmVhZCgpOw0KCQkJDQoJCSB9DQoJCSBjYXRjaChqYXZhLmlvLklP
RXhjZXB0aW9uIGUpDQoJCSB7ICANCgkJDQoJCSB9DQoJcmV0dXJuIGNoOw0KICAgfSAgICAgICAg
IAkNCiAgIA0KICAgcHVibGljIHN0YXRpYyBjaGFyIHJlYWRDaGFyKFN0cmluZyBwcm9tcHQpDQog
ICB7DQoJCXByaW50UHJvbXB0KHByb21wdCk7DQoJCXJldHVybiByZWFkQ2hhcigpOw0KICAgfSAg
ICAgICAgIA0KDQoNCg0KICAgLyoqDQoJKiByZWFkIGEgY2hhciBvciBzdHJpbmcgZnJvbSB0aGUg
Y29uc29sZS4gSXQgbXVzdCBzdGFydCB3aXRoIFQgb3IgRi4NCgkqICBUaGUgc3RyaW5nIGlzIHRl
cm1pbmF0ZWQgYnkgYSBuZXdsaW5lLiAgSWYgdGhlIGZpcnN0IGNoYXJhY3Rlcg0KCSogIGlzIGFu
IGYsIHRoZSBib29sZWFuIGZhbHNlIGlzIHJldHVybmVkIG9yIHRydWUgZm9yIGEgVC4NCgkqIA0K
CSovDQoNCglwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVhZEJvb2xlYW4oKQ0KICAgew0KCWJvb2xl
YW4gZG9uZSA9IGZhbHNlOw0KCSAgY2hhciBjaD0nICc7IA0KCQlkbyB7DQoJCQkNCgkJICAgDQoJ
CQl0cnkNCgkJCXsgIA0KCQkJCWNoID0gKGNoYXIpIFN5c3RlbS5pbi5yZWFkKCk7DQoJCQkJDQoJ
CQl9DQoJCQljYXRjaCAoamF2YS5pby5JT0V4Y2VwdGlvbiBlKQ0KCQkJew0KCQkJfQ0KCQkgDQoJ
CQlpZiAoY2g9PSdUJyB8fCBjaCA9PSAndCcgfHwgY2ggPT0gJ0YnIHx8IGNoID09ICdmJykNCgkJ
CQkgZG9uZSA9IHRydWU7DQoJCQkNCgkJfSB3aGlsZSAoIWRvbmUpOw0KDQoJICAgIGlmIChjaD09
J1QnIHx8IGNoID09ICd0JykNCgkgICAgICAgIHJldHVybiB0cnVlOw0KCSAgICBlbHNlDQoJICAg
ICAgICByZXR1cm4gZmFsc2U7ICAgIA0KDQoNCiAgIH0gICAgIA0KICAgLyoqIHJlYWRzIGEgQm9v
bGVhbiBmcm9tIHRoZSBrZXlib2FyZA0KCSogICByZXR1cm5zIHRoZSBCb29sZWFuDQoJKi8gIAkN
CiAgIA0KICAgcHVibGljIHN0YXRpYyBib29sZWFuIHJlYWRCb29sZWFuKFN0cmluZyBwcm9tcHQp
DQogICB7DQoJCXByaW50UHJvbXB0KHByb21wdCk7DQoJCXJldHVybiByZWFkQm9vbGVhbigpOw0K
ICAgfSAgICAgICAgIA0KDQoNCg0KICAgDQoJDQogICANCiAgIC8qKg0KCSogcmVhZCBhIHN0cmlu
ZyBmcm9tIHRoZSBjb25zb2xlLiBUaGUgc3RyaW5nIGlzIA0KCSogdGVybWluYXRlZCBieSBhIG5l
d2xpbmUNCgkqIEByZXR1cm4gdGhlIGlucHV0IHN0cmluZyAod2l0aG91dCB0aGUgbmV3bGluZSkN
CgkqLw0KCQ0KICAgcHVibGljIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZygpDQogICB7ICBpbnQg
Y2g7DQoJICBTdHJpbmcgciA9ICIiOw0KCSAgYm9vbGVhbiBkb25lID0gZmFsc2U7DQoJICB3aGls
ZSAoIWRvbmUpDQoJICB7ICB0cnkNCgkJIHsgIGNoID0gU3lzdGVtLmluLnJlYWQoKTsNCgkJCWlm
IChjaCA8IDAgfHwgKGNoYXIpY2ggPT0gJ1xuJykNCgkJCSAgIGRvbmUgPSB0cnVlOw0KCQkJZWxz
ZSBpZiAoKGNoYXIpY2ggIT0gJ1xyJykgLy8gd2VpcmQtLWl0IHVzZWQgdG8gZG8gXHJcbiB0cmFu
c2xhdGlvbg0KCQkJICAgciA9IHIgKyAoY2hhcikgY2g7DQoJCSB9DQoJCSBjYXRjaChqYXZhLmlv
LklPRXhjZXB0aW9uIGUpDQoJCSB7ICBkb25lID0gdHJ1ZTsNCgkJIH0NCgkgIH0NCgkgIHJldHVy
biByOw0KICAgfSAgICAgICAgIA0KDQogICAvKioNCgkqIHJlYWQgYSBzdHJpbmcgZnJvbSB0aGUg
Y29uc29sZS4gVGhlIHN0cmluZyBpcyANCgkqIHRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lDQoJKiBA
cGFyYW0gcHJvbXB0IHRoZSBwcm9tcHQgc3RyaW5nIHRvIGRpc3BsYXkNCgkqIEByZXR1cm4gdGhl
IGlucHV0IHN0cmluZyAod2l0aG91dCB0aGUgbmV3bGluZSkNCgkqLw0KCQ0KICAgcHVibGljIHN0
YXRpYyBTdHJpbmcgcmVhZFN0cmluZyhTdHJpbmcgcHJvbXB0KQ0KICAgeyAgcHJpbnRQcm9tcHQo
cHJvbXB0KTsNCgkgIHJldHVybiByZWFkU3RyaW5nKCk7DQogICB9ICAgICAgICAgDQoNCiAgIC8q
Kg0KCSogcmVhZCBhIHdvcmQgZnJvbSB0aGUgY29uc29sZS4gVGhlIHdvcmQgaXMgDQoJKiBhbnkg
c2V0IG9mIGNoYXJhY3RlcnMgdGVybWluYXRlZCBieSB3aGl0ZXNwYWNlDQoJKiBAcmV0dXJuIHRo
ZSAnd29yZCcgZW50ZXJlZA0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIFN0cmluZyByZWFkV29y
ZCgpDQogICB7ICBpbnQgY2g7DQoJICBTdHJpbmcgciA9ICIiOw0KCSAgYm9vbGVhbiBkb25lID0g
ZmFsc2U7DQoJICB3aGlsZSAoIWRvbmUpDQoJICB7ICB0cnkNCgkJIHsgIGNoID0gU3lzdGVtLmlu
LnJlYWQoKTsNCgkJCWlmIChjaCA8IDAgDQoJCQkgICB8fCBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlz
V2hpdGVzcGFjZSgoY2hhciljaCkpDQoJCQkgICBkb25lID0gdHJ1ZTsNCgkJCWVsc2UNCgkJCSAg
IHIgPSByICsgKGNoYXIpIGNoOw0KCQkgfQ0KCQkgY2F0Y2goamF2YS5pby5JT0V4Y2VwdGlvbiBl
KQ0KCQkgeyAgZG9uZSA9IHRydWU7DQoJCSB9DQoJICB9DQoJICByZXR1cm4gcjsNCiAgIH0gICAg
ICAgICANCg0KICAgLyoqDQoJKiByZWFkIGFuIGludGVnZXIgZnJvbSB0aGUgY29uc29sZS4gVGhl
IGlucHV0IGlzIA0KCSogdGVybWluYXRlZCBieSBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQg
dGhlIHByb21wdCBzdHJpbmcgdG8gZGlzcGxheQ0KCSogQHJldHVybiB0aGUgaW5wdXQgdmFsdWUg
YXMgYW4gaW50DQoJKiBAZXhjZXB0aW9uIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBpZiBiYWQgaW5w
dXQNCgkqLw0KCQ0KICAgcHVibGljIHN0YXRpYyBpbnQgcmVhZEludChTdHJpbmcgcHJvbXB0KQ0K
ICAgeyAgd2hpbGUodHJ1ZSkNCgkgIHsgIHByaW50UHJvbXB0KHByb21wdCk7DQoJCSB0cnkNCgkJ
IHsgIHJldHVybiBJbnRlZ2VyLnZhbHVlT2YNCgkJCSAgIChyZWFkU3RyaW5nKCkudHJpbSgpKS5p
bnRWYWx1ZSgpOw0KCQkgfSBjYXRjaChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkNCgkJIHsgIFN5
c3RlbS5vdXQucHJpbnRsbg0KCQkJICAgKCJOb3QgYW4gaW50ZWdlci4gUGxlYXNlIHRyeSBhZ2Fp
biEiKTsNCgkJIH0NCgkgIH0NCiAgIH0gICAgICAgICANCg0KICAgLyoqDQoJKiByZWFkIGEgZmxv
YXRpbmcgcG9pbnQgbnVtYmVyIGZyb20gdGhlIGNvbnNvbGUuIA0KCSogVGhlIGlucHV0IGlzIHRl
cm1pbmF0ZWQgYnkgYSBuZXdsaW5lDQoJKiBAcGFyYW0gcHJvbXB0IHRoZSBwcm9tcHQgc3RyaW5n
IHRvIGRpc3BsYXkNCgkqIEByZXR1cm4gdGhlIGlucHV0IHZhbHVlIGFzIGEgZG91YmxlDQoJKiBA
ZXhjZXB0aW9uIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBpZiBiYWQgaW5wdXQNCgkqLw0KCQ0KICAg
cHVibGljIHN0YXRpYyBkb3VibGUgcmVhZERvdWJsZShTdHJpbmcgcHJvbXB0KQ0KICAgeyAgd2hp
bGUodHJ1ZSkNCgkgIHsgIHByaW50UHJvbXB0KHByb21wdCk7DQoJCSB0cnkNCgkJIHsgIHJldHVy
biBEb3VibGUudmFsdWVPZg0KCQkJICAgKHJlYWRTdHJpbmcoKS50cmltKCkpLmRvdWJsZVZhbHVl
KCk7DQoJCSB9IGNhdGNoKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKQ0KCQkgeyAgU3lzdGVtLm91
dC5wcmludGxuDQoJCSAoIk5vdCBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4gUGxlYXNlIHRyeSBh
Z2FpbiEiKTsNCgkJIH0NCgkgIH0NCiAgIH0gICAgICAgICANCn0AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGaXNoRHVtcC5jbGFzcwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDE0MDUAMDc2MjAxMDM1
MzcAMDEyMzI2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVz
dGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMr+ur4AAwAtADEBAAxUc3QvRmlzaER1bXAHAAEBABBq
YXZhL2xhbmcvT2JqZWN0BwADAQAEaW5mbwEADkxUc3QvU2V0dGluZ3M7AQAEbWFpbgEAFihbTGph
dmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlCAAFAQALVHN0L1NldHVwSU8HAAsBAApvcGVuSW5GaWxl
AQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL09iamVjdDsMAA0ADgoADAAPAQAMVHN0
L1NldHRpbmdzBwARDAAFAAYJAAIAEwEAEGphdmEvbGFuZy9TeXN0ZW0HABUBAANvdXQBABVMamF2
YS9pby9QcmludFN0cmVhbTsMABcAGAkAFgAZAQAwRXJyb3IgbG9hZGluZyBTZXR0aW5ncy4gRGVm
YXVsdCBzZXR0aW5ncyBsb2FkZWQuCAAbAQATamF2YS9pby9QcmludFN0cmVhbQcAHQEAB3ByaW50
bG4BABUoTGphdmEvbGFuZy9TdHJpbmc7KVYMAB8AIAoAHgAhAQAGPGluaXQ+AQADKClWDAAjACQK
ABIAJQEAC29wZW5PdXRGaWxlAQAnKExqYXZhL2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvU3RyaW5n
OylJDAAnACgKAAwAKQEAHmphdmEvbGFuZy9OdWxsUG9pbnRlckV4Y2VwdGlvbgcAKwEAD0xpbmVO
dW1iZXJUYWJsZQoABAAlAQAKU291cmNlRmlsZQEADUZpc2hEdW1wLmphdmEAIQACAAQAAAABAAgA
BQAGAAAAAgAJAAcACAABAAkAAABtAAIAAgAAADUSCrgAEMAAErMAFKcACEwBswAUsgAUxwAesgAa
Ehy2ACK7ABJZtwAmswAUsgAUEgq4ACo8sQABAAAACwAOACwAAQAtAAAAHgAHAAAADgAOAA8ADwAQ
ABMAFAAZABYAIQAXACsAGAABACMAJAABAAkAAAARAAEAAQAAAAUqtwAusQAAAAAAAQAvAAAAAgAw
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGaXNoRHVtcC5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAMDEwMDQ0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDA3MDUAMDc2MjAxMDM0NTYA
MDEyMTQyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy
ICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhY2thZ2UgVHN0OwoKaW1wb3J0IGphdmEuaW8uKjsKaW1w
b3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIEZpc2hEdW1wIHsKCXN0YXRpYyBTZXR0aW5n
cyBpbmZvOwoKCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgoJCgkJ
dHJ5ewoJCWluZm8gPSAoU2V0dGluZ3MpIFNldHVwSU8ub3BlbkluRmlsZSgiaW5mbyIpOwoJCX1j
YXRjaChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKXsKCQkJaW5mbz1udWxsOwoJCX0KCQkKCQkKCQlp
ZiAoaW5mbyA9PSBudWxsKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigKCQkJCSJFcnJvciBsb2Fk
aW5nIFNldHRpbmdzLiBEZWZhdWx0IHNldHRpbmdzIGxvYWRlZC4iKTsKCQkJaW5mbyA9IG5ldyBT
ZXR0aW5ncygpOwoJCQlpbnQgaG9sZCA9IFNldHVwSU8ub3Blbk91dEZpbGUoaW5mbywgImluZm8i
KTsKCQl9CgkKCgkJCgl9Cgp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAUHJpbnRlci5jbGFzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAADAxMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA0NTM2ADA3NjIwMTA1NDM2ADAx
MjI0MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg
AHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADK/rq+AAMALQBaAQALVHN0L1ByaW50ZXIHAAEBABBqYXZhL2xh
bmcvT2JqZWN0BwADAQAUamF2YS9pby9TZXJpYWxpemFibGUHAAUBAApmaWVsZE5hbWVzAQASTGph
dmEvdXRpbC9WZWN0b3I7AQAIZmllbGRFbmQBAAtmSGVhZGVyVGVybQEACmZpZWxkQ291bnQBAAFJ
AQAOZmllbGRTZXBhcmF0b3IBAA1wYWdlU2VwYXJhdG9yAQAFc3RhcnQBAARzdG9wAQAFbW9kZWwB
ABJMamF2YS9sYW5nL1N0cmluZzsBAAhXSUxEQ0FSRAEABmZpbml0JAEAAygpVgEACVN5bnRoZXRp
YwEABENvZGUMABMADAkAAgAYAQAPTGluZU51bWJlclRhYmxlAQAFc2V0dXABAAMoKUkBAAY8aW5p
dD4MAB0AFQoABAAeDAAUABUKAAIAIAEAEGphdmEvdXRpbC9WZWN0b3IHACIKACMAHgwABwAICQAC
ACUBABFqYXZhL2xhbmcvSW50ZWdlcgcAJwEABChJKVYMAB0AKQoAKAAqAQAKYWRkRWxlbWVudAEA
FShMamF2YS9sYW5nL09iamVjdDspVgwALAAtCgAjAC4MAAkACAkAAgAwDAAKAAgJAAIAMgwACwAM
CQACADQMAA0ACAkAAgA2DAAOAAgJAAIAOAwADwAICQACADoMABAACAkAAgA8AQAEZm91cggAPgwA
EQASCQACAEABAA1nZXRGaWVsZE5hbWVzAQAUKClMamF2YS91dGlsL1ZlY3RvcjsBAA1zZXRGaWVs
ZE5hbWVzAQAVKExqYXZhL3V0aWwvVmVjdG9yOylWAQARZ2V0RmllbGRTZXBhcmF0b3IBABFzZXRG
aWVsZFNlcGFyYXRvcgEAEGdldFBhZ2VTZXBhcmF0b3IBABBzZXRQYWdlU2VwYXJhdG9yAQAIZ2V0
TW9kZWwBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwEACHNldE1vZGVsAQAVKExqYXZhL2xhbmcvU3Ry
aW5nOylWAQAIZ2V0U3RhcnQBAAhzZXRTdGFydAEAB2dldFN0b3ABAAdzZXRTdG9wAQANZ2V0Rmll
bGRDb3VudAEADXNldEZpZWxkQ291bnQBAAtnZXRGaWVsZEVuZAEAC3NldEZpZWxkRW5kAQANZ2V0
SGVhZGVyVGVybQEADXNldEhlYWRlclRlcm0BAApTb3VyY2VGaWxlAQAMUHJpbnRlci5qYXZhACEA
AgAEAAEABgAKAAAABwAIAAAAAAAJAAgAAAAAAAoACAAAAAAACwAMAAAAAAANAAgAAAAAAA4ACAAA
AAAADwAIAAAAAAAQAAgAAAAAABEAEgAAABAAEwAMAAAAFQACABQAFQACABYAAAAAABcAAAAgAAIA
AQAAAAgqEQPntQAZsQAAAAEAGgAAAAYAAQAAABIAAQAbABwAAQAXAAAAGgABAAEAAAACA6wAAAAB
ABoAAAAGAAEAAAAaAAEAHQAVAAEAFwAAAcsABAABAAABVyq3AB8qtwAhKrsAI1m3ACS1ACYqtAAm
uwAoWREA87cAK7YALyq0ACa7AChZEQCJtwArtgAvKrQAJrsAKFkRAVm3ACu2AC8quwAjWbcAJLUA
MSq0ADG7AChZEQFNtwArtgAvKrQAMbsAKFkRAw+3ACu2AC8quwAjWbcAJLUAMyq0ADO7AChZEBi3
ACu2AC8qEEy1ADUquwAjWbcAJLUANyq0ADe7AChZECK3ACu2AC8qtAA3uwAoWRArtwArtgAvKrsA
I1m3ACS1ADkqtAA5uwAoWRAKtwArtgAvKrQAObsAKFkQCrcAK7YALyq7ACNZtwAktQA7KrQAO7sA
KFkQIbcAK7YALyq0ADu7AChZEFi3ACu2AC8qtAA7uwAoWRBFtwArtgAvKrsAI1m3ACS1AD0qtAA9
uwAoWRAttwArtgAvKrQAPbsAKFkQTbcAK7YALyoSP7UAQbEAAAABABoAAABiABgACAAlABMAJgAk
ACcANQAoAEYAKwBRACwAYgAtAHMALwB+ADAAjgAzAJQANgCfADgArwA5AL8AOwDKAD0A2gA+AOoA
QAD1AEEBBQBCARUAQwElAEYBMABHAUAASAFQAEsAAQBCAEMAAQAXAAAAHQABAAEAAAAFKrQAJrAA
AAABABoAAAAGAAEAAABYAAEARABFAAEAFwAAAB4AAgACAAAABiortQAmsQAAAAEAGgAAAAYAAQAA
AF8AAQBGAEMAAQAXAAAAHQABAAEAAAAFKrQAN7AAAAABABoAAAAGAAEAAABoAAEARwBFAAEAFwAA
AB4AAgACAAAABiortQA3sQAAAAEAGgAAAAYAAQAAAG8AAQBIAEMAAQAXAAAAHQABAAEAAAAFKrQA
ObAAAAABABoAAAAGAAEAAAB4AAEASQBFAAEAFwAAAB4AAgACAAAABiortQA5sQAAAAEAGgAAAAYA
AQAAAH8AAQBKAEsAAQAXAAAAHQABAAEAAAAFKrQAQbAAAAABABoAAAAGAAEAAACIAAEATABNAAEA
FwAAAB4AAgACAAAABiortQBBsQAAAAEAGgAAAAYAAQAAAI8AAQBOAEMAAQAXAAAAHQABAAEAAAAF
KrQAO7AAAAABABoAAAAGAAEAAACYAAEATwBFAAEAFwAAAB4AAgACAAAABiortQA7sQAAAAEAGgAA
AAYAAQAAAJ8AAQBQAEMAAQAXAAAAHQABAAEAAAAFKrQAPbAAAAABABoAAAAGAAEAAACoAAEAUQBF
AAEAFwAAAB4AAgACAAAABiortQA9sQAAAAEAGgAAAAYAAQAAAK8AAQBSABwAAQAXAAAAHQABAAEA
AAAFKrQANawAAAABABoAAAAGAAEAAAC4AAEAUwApAAEAFwAAAB4AAgACAAAABiobtQA1sQAAAAEA
GgAAAAYAAQAAAL8AAQBUAEMAAQAXAAAAHQABAAEAAAAFKrQAMbAAAAABABoAAAAGAAEAAADIAAEA
VQBFAAEAFwAAAB4AAgACAAAABiortQAxsQAAAAEAGgAAAAYAAQAAAM8AAQBWAEMAAQAXAAAAHQAB
AAEAAAAFKrQAM7AAAAABABoAAAAGAAEAAADYAAEAVwBFAAEAFwAAAB4AAgACAAAABiortQAzsQAA
AAEAGgAAAAYAAQAAAN8AAQBYAAAAAgBZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAUHJpbnRlci5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA3NDA0ADA3NjIwMTA1NDI0ADAxMjA0NgAg
MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsKaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CglpbXBv
cnQgamF2YS5pby5TZXJpYWxpemFibGU7CgoKcHVibGljIGNsYXNzIFByaW50ZXIgaW1wbGVtZW50
cyBTZXJpYWxpemFibGV7CgoKCVZlY3RvciBmaWVsZE5hbWVzOyAgICAKCVZlY3RvciBmaWVsZEVu
ZDsJCglWZWN0b3IgZkhlYWRlclRlcm07ICAgIC8vCglpbnQgZmllbGRDb3VudDsJCQoJVmVjdG9y
IGZpZWxkU2VwYXJhdG9yOyAvLwoJVmVjdG9yIHBhZ2VTZXBhcmF0b3I7ICAvLwoJVmVjdG9yIHN0
YXJ0OyAgICAgICAgICAvLwoJVmVjdG9yIHN0b3A7ICAgICAgICAgICAvLwoJU3RyaW5nIG1vZGVs
OwkJCglmaW5hbCBpbnQgV0lMRENBUkQgPSA5OTk7IC8vRGVzaWduYXRlcyBhIHZhbHVlIGZvciBz
a2lwcGluZyBjb21wYXJlcy4KCgoKCglwdWJsaWMgaW50IHNldHVwKCl7CgkJCgkKCXJldHVybiAw
OwkKCX0KCgoKCgkvKioKCSAqIENvbnN0cnVjdG9yIGZvciBQcmludGVyCgkgKi8KCXB1YmxpYyBQ
cmludGVyKCkgewoJCXN1cGVyKCk7CgkJZmllbGROYW1lcyA9IG5ldyBWZWN0b3IoKTsKCQlmaWVs
ZE5hbWVzLmFkZEVsZW1lbnQobmV3IEludGVnZXIoMjQzKSk7CgkJZmllbGROYW1lcy5hZGRFbGVt
ZW50KG5ldyBJbnRlZ2VyKDEzNykpOwoJCWZpZWxkTmFtZXMuYWRkRWxlbWVudChuZXcgSW50ZWdl
cigzNDUpKTsKCgoJCWZpZWxkRW5kID0gbmV3IFZlY3RvcigpOwoJCWZpZWxkRW5kLmFkZEVsZW1l
bnQobmV3IEludGVnZXIoMzMzKSk7CgkJZmllbGRFbmQuYWRkRWxlbWVudChuZXcgSW50ZWdlcig3
ODMpKTsKCQkKCQlmSGVhZGVyVGVybSA9IG5ldyBWZWN0b3IoKTsKCQlmSGVhZGVyVGVybS5hZGRF
bGVtZW50KG5ldyBJbnRlZ2VyKDI0KSk7CgoKCQlmaWVsZENvdW50ID0gNzY7CgoKCQlmaWVsZFNl
cGFyYXRvciA9IG5ldyBWZWN0b3IoKTsKCQl7CgkJCWZpZWxkU2VwYXJhdG9yLmFkZEVsZW1lbnQo
bmV3IEludGVnZXIoMzQpKTsKCQkJZmllbGRTZXBhcmF0b3IuYWRkRWxlbWVudChuZXcgSW50ZWdl
cig0MykpOwoJCX0KCQlwYWdlU2VwYXJhdG9yID0gbmV3IFZlY3RvcigpOwoJCXsKCQkJcGFnZVNl
cGFyYXRvci5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDEwKSk7CgkJCXBhZ2VTZXBhcmF0b3IuYWRk
RWxlbWVudChuZXcgSW50ZWdlcigxMCkpOwoJCX0KCQlzdGFydCA9IG5ldyBWZWN0b3IoKTsKCQlz
dGFydC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDMzKSk7CgkJc3RhcnQuYWRkRWxlbWVudChuZXcg
SW50ZWdlcig4OCkpOwoJCXN0YXJ0LmFkZEVsZW1lbnQobmV3IEludGVnZXIoNjkpKTsKCgoJCXN0
b3AgPSBuZXcgVmVjdG9yKCk7CgkJc3RvcC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDQ1KSk7CgkJ
c3RvcC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDc3KSk7CgoKCQltb2RlbCA9ICJmb3VyIjsKCX0K
CgoKCgoKCS8qKgoJICogR2V0cyB0aGUgZmllbGROYW1lcwoJICogQHJldHVybiBSZXR1cm5zIGEg
VmVjdG9yCgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0RmllbGROYW1lcygpIHsKCQlyZXR1cm4gZmll
bGROYW1lczsKCX0KCS8qKgoJICogU2V0cyB0aGUgZmllbGROYW1lcwoJICogQHBhcmFtIGZpZWxk
TmFtZXMgVGhlIGZpZWxkTmFtZXMgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldEZpZWxkTmFt
ZXMoVmVjdG9yIGZpZWxkTmFtZXMpIHsKCQl0aGlzLmZpZWxkTmFtZXMgPSBmaWVsZE5hbWVzOwoJ
fQoKCgkvKioKCSAqIEdldHMgdGhlIGZpZWxkU2VwYXJhdG9yCgkgKiBAcmV0dXJuIFJldHVybnMg
YSBWZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRGaWVsZFNlcGFyYXRvcigpIHsKCQlyZXR1
cm4gZmllbGRTZXBhcmF0b3I7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkU2VwYXJhdG9yCgkg
KiBAcGFyYW0gZmllbGRTZXBhcmF0b3IgVGhlIGZpZWxkU2VwYXJhdG9yIHRvIHNldAoJICovCglw
dWJsaWMgdm9pZCBzZXRGaWVsZFNlcGFyYXRvcihWZWN0b3IgZmllbGRTZXBhcmF0b3IpIHsKCQl0
aGlzLmZpZWxkU2VwYXJhdG9yID0gZmllbGRTZXBhcmF0b3I7Cgl9CgoKCS8qKgoJICogR2V0cyB0
aGUgcGFnZVNlcGFyYXRvcgoJICogQHJldHVybiBSZXR1cm5zIGEgVmVjdG9yCgkgKi8KCXB1Ymxp
YyBWZWN0b3IgZ2V0UGFnZVNlcGFyYXRvcigpIHsKCQlyZXR1cm4gcGFnZVNlcGFyYXRvcjsKCX0K
CS8qKgoJICogU2V0cyB0aGUgcGFnZVNlcGFyYXRvcgoJICogQHBhcmFtIHBhZ2VTZXBhcmF0b3Ig
VGhlIHBhZ2VTZXBhcmF0b3IgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFBhZ2VTZXBhcmF0
b3IoVmVjdG9yIHBhZ2VTZXBhcmF0b3IpIHsKCQl0aGlzLnBhZ2VTZXBhcmF0b3IgPSBwYWdlU2Vw
YXJhdG9yOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIG1vZGVsCgkgKiBAcmV0dXJuIFJldHVybnMg
YSBTdHJpbmcKCSAqLwoJcHVibGljIFN0cmluZyBnZXRNb2RlbCgpIHsKCQlyZXR1cm4gbW9kZWw7
Cgl9CgkvKioKCSAqIFNldHMgdGhlIG1vZGVsCgkgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRv
IHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRNb2RlbChTdHJpbmcgbW9kZWwpIHsKCQl0aGlzLm1v
ZGVsID0gbW9kZWw7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgc3RhcnQKCSAqIEByZXR1cm4gUmV0
dXJucyBhIFZlY3RvcgoJICovCglwdWJsaWMgVmVjdG9yIGdldFN0YXJ0KCkgewoJCXJldHVybiBz
dGFydDsKCX0KCS8qKgoJICogU2V0cyB0aGUgc3RhcnQKCSAqIEBwYXJhbSBzdGFydCBUaGUgc3Rh
cnQgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFN0YXJ0KFZlY3RvciBzdGFydCkgewoJCXRo
aXMuc3RhcnQgPSBzdGFydDsKCX0KCgoJLyoqCgkgKiBHZXRzIHRoZSBzdG9wCgkgKiBAcmV0dXJu
IFJldHVybnMgYSBWZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRTdG9wKCkgewoJCXJldHVy
biBzdG9wOwoJfQoJLyoqCgkgKiBTZXRzIHRoZSBzdG9wCgkgKiBAcGFyYW0gc3RvcCBUaGUgc3Rv
cCB0byBzZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0U3RvcChWZWN0b3Igc3RvcCkgewoJCXRoaXMu
c3RvcCA9IHN0b3A7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgZmllbGRDb3VudAoJICogQHJldHVy
biBSZXR1cm5zIGEgaW50CgkgKi8KCXB1YmxpYyBpbnQgZ2V0RmllbGRDb3VudCgpIHsKCQlyZXR1
cm4gZmllbGRDb3VudDsKCX0KCS8qKgoJICogU2V0cyB0aGUgZmllbGRDb3VudAoJICogQHBhcmFt
IGZpZWxkQ291bnQgVGhlIGZpZWxkQ291bnQgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldEZp
ZWxkQ291bnQoaW50IGZpZWxkQ291bnQpIHsKCQl0aGlzLmZpZWxkQ291bnQgPSBmaWVsZENvdW50
OwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIGZpZWxkRW5kCgkgKiBAcmV0dXJuIFJldHVybnMgYSBW
ZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRGaWVsZEVuZCgpIHsKCQlyZXR1cm4gZmllbGRF
bmQ7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkRW5kCgkgKiBAcGFyYW0gZmllbGRFbmQgVGhl
IGZpZWxkRW5kIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRGaWVsZEVuZChWZWN0b3IgZmll
bGRFbmQpIHsKCQl0aGlzLmZpZWxkRW5kID0gZmllbGRFbmQ7Cgl9CgoKCS8qKgoJICogR2V0cyB0
aGUgaGVhZGVyVGVybQoJICogQHJldHVybiBSZXR1cm5zIGEgVmVjdG9yCgkgKi8KCXB1YmxpYyBW
ZWN0b3IgZ2V0SGVhZGVyVGVybSgpIHsKCQlyZXR1cm4gZkhlYWRlclRlcm07Cgl9CgkvKioKCSAq
IFNldHMgdGhlIGhlYWRlclRlcm0KCSAqIEBwYXJhbSBoZWFkZXJUZXJtIFRoZSBoZWFkZXJUZXJt
IHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRIZWFkZXJUZXJtKFZlY3RvciBoZWFkZXJUZXJt
KSB7CgkJZkhlYWRlclRlcm0gPSBoZWFkZXJUZXJtOwoJfQoKCn0KAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAU2V0dGluZ3MuY2xhc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQA
MDAwMDAwMAAwMDAwMDAwADAwMDAwMDAyNTYyADA3NjIwMTA1MDI3ADAxMjQxMAAgMAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAADK/rq+AAMALQBLAQAMVHN0L1NldHRpbmdzBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEA
FGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAIcG9ydE5hbWUBABJMamF2YS9sYW5nL1N0cmluZzsB
AAdob21lRGlyAQAGcXVlRGlyAQAHcXVlRmlsZQEACXF1ZUlnbm9yZQEAAVoBAApmaWVsZE5hbWVz
AQASTGphdmEvdXRpbC9WZWN0b3I7AQAIZmllbGRFbmQBAAtmSGVhZGVyVGVybQEACmZpZWxkQ291
bnQBAAFJAQAOZmllbGRTZXBhcmF0b3IBAAVzdGFydAEABHN0b3ABAAVtb2RlbAEABjxpbml0PgEA
AygpVgEABENvZGUMABgAGQoABAAbAQAQamF2YS91dGlsL1ZlY3RvcgcAHQoAHgAbDAAVAA8JAAIA
IAEAA3NkZggAIgEACmFkZEVsZW1lbnQBABUoTGphdmEvbGFuZy9PYmplY3Q7KVYMACQAJQoAHgAm
AQALL2Rldi90ZXJtL2EIACgMAAcACAkAAgAqAQALL3Vzci9sb2NhbC8IACwMAAkACAkAAgAuDAAK
AAgJAAIAMAEAA3F1ZQgAMgwACwAICQACADQMAAwADQkAAgA2AQAPTGluZU51bWJlclRhYmxlAQAE
aW5pdAEAC1RzdC9QcmludGVyBwA6CgA7ABsBAApnZXRIb21lRGlyAQAUKClMamF2YS9sYW5nL1N0
cmluZzsBAApzZXRIb21lRGlyAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAJZ2V0UXVlRGlyAQAJ
c2V0UXVlRGlyAQAKZ2V0UXVlRmlsZQEACnNldFF1ZUZpbGUBAAxnZXRRdWVJZ25vcmUBAAMoKVoB
AAxzZXRRdWVJZ25vcmUBAAQoWilWAQAKU291cmNlRmlsZQEADVNldHRpbmdzLmphdmEAIQACAAQA
AQAGAA0AAgAHAAgAAAACAAkACAAAAAIACgAIAAAAAgALAAgAAAACAAwADQAAAAAADgAPAAAAAAAQ
AA8AAAAAABEADwAAAAAAEgATAAAAAAAUAA8AAAAAABUADwAAAAAAFgAPAAAAAAAXAAgAAAAKAAEA
GAAZAAEAGgAAAIAAAwACAAAARCq3ABwquwAeWbcAH7UAIQM8GxAYogASKrQAIRIjtgAnhAEBp//u
KhIptQArKhIttQAvKhIttQAxKhIztQA1KgS1ADexAAAAAQA4AAAAKgAKAAQAIwAPACQAEQAkABcA
JQAgACQAJgAmACwAJwAyACgAOAApAD4AKgABADkAGQABABoAAAAhAAIAAgAAAAm7ADtZtwA8TLEA
AAABADgAAAAGAAEAAAAuAAEAPQA+AAEAGgAAAB0AAQABAAAABSq0AC+wAAAAAQA4AAAABgABAAAA
QgABAD8AQAABABoAAAAeAAIAAgAAAAYqK7UAL7EAAAABADgAAAAGAAEAAABJAAEAQQA+AAEAGgAA
AB0AAQABAAAABSq0ADGwAAAAAQA4AAAABgABAAAAUgABAEIAQAABABoAAAAeAAIAAgAAAAYqK7UA
MbEAAAABADgAAAAGAAEAAABZAAEAQwA+AAEAGgAAAB0AAQABAAAABSq0ADWwAAAAAQA4AAAABgAB
AAAAYgABAEQAQAABABoAAAAeAAIAAgAAAAYqK7UANbEAAAABADgAAAAGAAEAAABpAAEARQBGAAEA
GgAAAB0AAQABAAAABSq0ADesAAAAAQA4AAAABgABAAAAcgABAEcASAABABoAAAAeAAIAAgAAAAYq
G7UAN7EAAAABADgAAAAGAAEAAAB5AAEASQAAAAIASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABTZXR0aW5ncy5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDQ0NAAwMDAw
MDAwADAwMDAwMDAAMDAwMDAwMDM3NTAAMDc2MjAxMDUwMjAAMDEyMjEzACAwAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AHBhY2thZ2UgVHN0OwppbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CmltcG9ydCBqYXZhLmlv
Lio7CmltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwoKCi8qIENsYXNzIHRvIGhvbGQgdGhlIHNlbGVj
dGlvbnMgZW50ZXJlZCBpbiBieSB0aGUgY29uZmlnIGNsYXNzLgoqICBEYXRhIHN1Y2ggYXMgdGhl
IHNldHRpbmdzIGZvciB0aGUgbW9kZW0uCiovCgpwdWJsaWMgY2xhc3MgU2V0dGluZ3MgaW1wbGVt
ZW50cyBTZXJpYWxpemFibGUgewoKCgkKCXByaXZhdGUgU3RyaW5nIHBvcnROYW1lOwoJcHJpdmF0
ZSBTdHJpbmcgaG9tZURpcjsKCXByaXZhdGUgU3RyaW5nIHF1ZURpcjsKCXByaXZhdGUgU3RyaW5n
IHF1ZUZpbGU7Cglwcml2YXRlIGJvb2xlYW4gcXVlSWdub3JlOwoJVmVjdG9yIGZpZWxkTmFtZXM7
IAoJVmVjdG9yIGZpZWxkRW5kOwoJVmVjdG9yIGZIZWFkZXJUZXJtOyAKCWludCBmaWVsZENvdW50
OwkKCVZlY3RvciBmaWVsZFNlcGFyYXRvcjsKCVZlY3RvciBzdGFydDsgICAgICAgICAKCVZlY3Rv
ciBzdG9wOyAgICAgICAgICAKCVN0cmluZyBtb2RlbDsJCgoJLyoqCgkgKiBDb25zdHJ1Y3RvciBm
b3IgU2V0dGluZ3MKCSAqLwoJcHVibGljIFNldHRpbmdzKCkgewoJCXN1cGVyKCk7CgoJCXN0YXJ0
ID0gbmV3IFZlY3RvcigpOwoJCWZvciAoaW50IGk9MDtpPDI0O2krKykKCQlzdGFydC5hZGRFbGVt
ZW50KCJzZGYiKTsKCQlwb3J0TmFtZSA9ICgiL2Rldi90ZXJtL2EiKTsKCQlob21lRGlyID0gIi91
c3IvbG9jYWwvIjsKCQlxdWVEaXIgPSAiL3Vzci9sb2NhbC8iOwoJCXF1ZUZpbGUgPSAicXVlIjsK
CQlxdWVJZ25vcmUgPSB0cnVlOwoJfQoKCXB1YmxpYyB2b2lkIGluaXQoKXsKCVByaW50ZXIgcG50
ID0gbmV3IFByaW50ZXIoKTsKCX0KCgkvKioKCSAqIEdldHMgdGhlIHBvcnQKCSAqIEByZXR1cm4g
UmV0dXJucyBhIFBvcnRzCgkgKi8KCgoJLyoqCgkgKiBHZXRzIHRoZSBwcmludGVyCgkgKiBAcmV0
dXJuIFJldHVybnMgYSBQcmludGVyCgkgKi8KCgoJLyoqCgkgKiBHZXRzIHRoZSBob21lRGlyCgkg
KiBAcmV0dXJuIFJldHVybnMgYSBTdHJpbmcKCSAqLwoJcHVibGljIFN0cmluZyBnZXRIb21lRGly
KCkgewoJCXJldHVybiBob21lRGlyOwoJfQoJLyoqCgkgKiBTZXRzIHRoZSBob21lRGlyCgkgKiBA
cGFyYW0gaG9tZURpciBUaGUgaG9tZURpciB0byBzZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0SG9t
ZURpcihTdHJpbmcgaG9tZURpcikgewoJCXRoaXMuaG9tZURpciA9IGhvbWVEaXI7Cgl9CgoKCS8q
KgoJICogR2V0cyB0aGUgcXVlRGlyCgkgKiBAcmV0dXJuIFJldHVybnMgYSBTdHJpbmcKCSAqLwoJ
cHVibGljIFN0cmluZyBnZXRRdWVEaXIoKSB7CgkJcmV0dXJuIHF1ZURpcjsKCX0KCS8qKgoJICog
U2V0cyB0aGUgcXVlRGlyCgkgKiBAcGFyYW0gcXVlRGlyIFRoZSBxdWVEaXIgdG8gc2V0CgkgKi8K
CXB1YmxpYyB2b2lkIHNldFF1ZURpcihTdHJpbmcgcXVlRGlyKSB7CgkJdGhpcy5xdWVEaXIgPSBx
dWVEaXI7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgcXVlRmlsZQoJICogQHJldHVybiBSZXR1cm5z
IGEgU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0UXVlRmlsZSgpIHsKCQlyZXR1cm4gcXVl
RmlsZTsKCX0KCS8qKgoJICogU2V0cyB0aGUgcXVlRmlsZQoJICogQHBhcmFtIHF1ZUZpbGUgVGhl
IHF1ZUZpbGUgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFF1ZUZpbGUoU3RyaW5nIHF1ZUZp
bGUpIHsKCQl0aGlzLnF1ZUZpbGUgPSBxdWVGaWxlOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHF1
ZUlnbm9yZQoJICogQHJldHVybiBSZXR1cm5zIGEgYm9vbGVhbgoJICovCglwdWJsaWMgYm9vbGVh
biBnZXRRdWVJZ25vcmUoKSB7CgkJcmV0dXJuIHF1ZUlnbm9yZTsKCX0KCS8qKgoJICogU2V0cyB0
aGUgcXVlSWdub3JlCgkgKiBAcGFyYW0gcXVlSWdub3JlIFRoZSBxdWVJZ25vcmUgdG8gc2V0Cgkg
Ki8KCXB1YmxpYyB2b2lkIHNldFF1ZUlnbm9yZShib29sZWFuIHF1ZUlnbm9yZSkgewoJCXRoaXMu
cXVlSWdub3JlID0gcXVlSWdub3JlOwoJfQoKCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU2V0
dXBJTy5jbGFzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMDAwMAAw
MDAwMDAwADAwMDAwMDA0MzY1ADA3NjIwMTAzNjEzADAxMjE0MgAgMAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK/rq+
AAMALQB3AQALVHN0L1NldHVwSU8HAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAGPGluaXQ+AQAD
KClWAQAEQ29kZQwABQAGCgAEAAgBAAtvcGVuT3V0RmlsZQEAJyhMamF2YS9sYW5nL09iamVjdDtM
amF2YS9sYW5nL1N0cmluZzspSQEAB29zLm5hbWUIAAwBABBqYXZhL2xhbmcvU3lzdGVtBwAOAQAL
Z2V0UHJvcGVydHkBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwwAEAAR
CgAPABIBAAVMaW51eAgAFAEAEGphdmEvbGFuZy9TdHJpbmcHABYBAAZlcXVhbHMBABUoTGphdmEv
bGFuZy9PYmplY3Q7KVoMABgAGQoAFwAaAQAMamF2YS9pby9GaWxlBwAcAQAWamF2YS9sYW5nL1N0
cmluZ0J1ZmZlcgcAHgEACy91c3IvbG9jYWwvCAAgAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWDAAF
ACIKAB8AIwEABmFwcGVuZAEALChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdC
dWZmZXI7DAAlACYKAB8AJwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsMACkAKgoA
HwArCgAdACMBABhqYXZhL2lvL0ZpbGVPdXRwdXRTdHJlYW0HAC4BABEoTGphdmEvaW8vRmlsZTsp
VgwABQAwCgAvADEBAANvdXQBABVMamF2YS9pby9QcmludFN0cmVhbTsMADMANAkADwA1AQATamF2
YS9pby9QcmludFN0cmVhbQcANwEAB3ByaW50bG4BABUoTGphdmEvbGFuZy9PYmplY3Q7KVYMADkA
OgoAOAA7AQAaamF2YS9pby9PYmplY3RPdXRwdXRTdHJlYW0HAD0BABkoTGphdmEvaW8vT3V0cHV0
U3RyZWFtOylWDAAFAD8KAD4AQAEAC3dyaXRlT2JqZWN0DABCADoKAD4AQwEAE0Vycm9yIHdyaXRp
bmcgZmlsZSAIAEUBACogLiBQbGVhc2UgY2hlY2sgc3lzdGVtIGFuZCByZXJ1biBwcm9ncmFtLgoI
AEcBACwoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwwAJQBJCgAf
AEoMADkAIgoAOABMAQAFY2xvc2UMAE4ABgoALwBPCgA+AE8BAA9FcnJvciBjbG9zaW5nLgoIAFIB
AB1qYXZhL2lvL0ZpbGVOb3RGb3VuZEV4Y2VwdGlvbgcAVAEAE2phdmEvaW8vSU9FeGNlcHRpb24H
AFYBAA9MaW5lTnVtYmVyVGFibGUBAApvcGVuSW5GaWxlAQAmKExqYXZhL2xhbmcvU3RyaW5nOylM
amF2YS9sYW5nL09iamVjdDsBABdqYXZhL2lvL0ZpbGVJbnB1dFN0cmVhbQcAWwoAXAAxAQAZamF2
YS9pby9PYmplY3RJbnB1dFN0cmVhbQcAXgEAGChMamF2YS9pby9JbnB1dFN0cmVhbTspVgwABQBg
CgBfAGEBAApyZWFkT2JqZWN0AQAUKClMamF2YS9sYW5nL09iamVjdDsMAGMAZAoAXwBlAQAqVGhl
IGNvbmZpZ3VyYXRpb24gZmlsZSBoYXMgYmVlbiBjb3JydXB0ZWQuCABnAQAoQ29uZmlndXJhdGlv
biBmaWxlIGluZm8gY2Fubm90IGJlIGZvdW5kLggAaQEAJlRoZSBjb25maWd1cmF0aW9uIGZpbGUg
Y2Fubm90IGJlIHJlYWQuCABrCgBfAE8KAFwATwEAHWphdmEvaW8vT3B0aW9uYWxEYXRhRXhjZXB0
aW9uBwBvAQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24HAHEBACBqYXZhL2lvL1N0
cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbgcAcwEAClNvdXJjZUZpbGUBAAxTZXR1cElPLmphdmEAIQAC
AAQAAAAAAAMAAQAFAAYAAQAHAAAAEQABAAEAAAAFKrcACbEAAAAAAAkACgALAAEABwAAAUUABQAH
AAAAvRINuAATTQFOAToEAToFLBIVtgAbmQAfuwAdWbsAH1kSIbcAJCu2ACi2ACy3AC06BacADbsA
HVkrtwAtOgW7AC9ZGQW3ADJOpwAaOgayADYZBrYAPKcADToGsgA2GQa2ADy7AD5ZLbcAQToEGQQq
tgBEpwAlOgayADa7AB9ZEka3ACQrtgAoEki2ACgZBrYAS7YALLYATS22AFAZBLYAUacAHDoGsgA2
uwAfWRJTtwAkGQa2AEu2ACy2AE0ErAAEAD0ARwBKAFUAPQBHAFcAVwBhAHEAdABXAJYAnwCiAFcA
AQBYAAAAVgAVAAAAGAAGABkACAAaAAsAGwAOAB0AFwAfADMAIwA9ACcASgAoAEwAKABXACkAWQAp
AGEAKwBrACwAdAAtAHYALgCWADEAmgAyAKIAMwCkADMAuwA0AAkAWQBaAAEABwAAAVwABQAHAAAA
uBINuAATTAFNAU4BOgQBOgUrEhW2ABuZAB+7AB1ZuwAfWRIhtwAkKrYAKLYALLcALToFpwANuwAd
WSq3AC06BbsAXFkZBbcAXU67AF9ZLbcAYjoEGQS2AGZNpwA0OgayADYSaLYATacAJzoGsgA2Emq2
AE2nABo6BrIANhJstgBNpwANOgayADYSbLYATacABFcZBLYAbS22AG6nABw6BrIANrsAH1kSU7cA
JBkGtgBLtgAstgBNLLAABgA/AFkAXABwAD8AWQBpAHIAPwBZAHYAdAA/AFkAgwBXAD8AjQCQAAAA
kQCaAJ0AVwABAFgAAABiABgAAABAAAYAQQAIAEIACgBDAA0ARAAQAEUAGQBGADUASAA/AEoASQBL
AFMATABcAE0AXgBOAGkATwBrAFAAdgBRAHgAUgCDAFMAhQBUAJEAVwCWAFgAnQBZAJ8AWQC2AFoA
AQB1AAAAAgB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU2V0dXBJTy5q
YXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAw
ADAwMDAwMDA0MjIxADA3NjE3NjMwNzE2ADAxMTc2MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRz
dDsNCmltcG9ydCBqYXZhLmlvLio7DQoNDQpwdWJsaWMgY2xhc3MgU2V0dXBJTyB7DQoJLy8gTVVT
VCBjYXRjaCBhbnkgZXhjZXB0aW9uIHRoYXQgbWlnaHQgYmUgdGhyb3duISENCglwdWJsaWMgU2V0
dXBJTygpIHsNCgl9DQoNDQoNDQoNDQoJLyoqDQoJKiBPcGVucyBhbiBvdXRwdXQgZmlsZSBmb3Ig
d3JpdGluZyBvYmplY3RzDQoJKiByZXR1cm5zIGFuIE9iamVjdE91dHB1dFN0cmVhbSBvYmplY3QN
CgkqLw0KDQ0KCXB1YmxpYyBzdGF0aWMgaW50IG9wZW5PdXRGaWxlKE9iamVjdCBvYmosIFN0cmlu
ZyBzKSB7DQoNDQoJCVN0cmluZyBvc05hbWU9U3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIik7
DQoJCUZpbGVPdXRwdXRTdHJlYW0gT1MgPSBudWxsOw0KCQlPYmplY3RPdXRwdXRTdHJlYW0gT09T
ID0gbnVsbDsNCgkJRmlsZSBvdXRGaWxlID0gbnVsbDsNCgkJDQoJCWlmKG9zTmFtZS5lcXVhbHMo
IkxpbnV4IikpDQoJCXsNCgkJb3V0RmlsZSA9IG5ldyBGaWxlKCIvdXNyL2xvY2FsLyIgKyBzKTsN
CgkJfQ0KCQllbHNlDQoJCXsNCgkJb3V0RmlsZSA9IG5ldyBGaWxlKHMpOw0KCQl9DQoJCQ0KCQl0
cnl7DQoJCU9TID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0RmlsZSk7DQoJCX1jYXRjaChGaWxl
Tm90Rm91bmRFeGNlcHRpb24gZmUpe1N5c3RlbS5vdXQucHJpbnRsbihmZSk7IH0NCgkJY2F0Y2gg
KElPRXhjZXB0aW9uIGlvZSl7U3lzdGVtLm91dC5wcmludGxuKGlvZSk7IH0NCgkJdHJ5ew0KCQlP
T1MgPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKE9TKTsNCgkJT09TLndyaXRlT2JqZWN0KG9iaik7
DQoJCX1jYXRjaChJT0V4Y2VwdGlvbiBpZSl7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9y
IHdyaXRpbmcgZmlsZSAiK3MrIiAuIFBsZWFzZSBjaGVjayBzeXN0ZW0gYW5kIHJlcnVuIHByb2dy
YW0uXG4iK2llKTsNCgkJfQ0KCQl0cnl7DQoJCU9TLmNsb3NlKCk7DQoJCU9PUy5jbG9zZSgpOw0K
CQl9Y2F0Y2goSU9FeGNlcHRpb24gZSl7U3lzdGVtLm91dC5wcmludGxuKCJFcnJvciBjbG9zaW5n
LlxuIitlKTt9DQoJCXJldHVybiAxOw0KCX0NCg0NCgkvKioNCgkqIE9wZW5zIGFuIGlucHV0IGZp
bGUgZm9yIHJlYWRpbmcgb2JqZWN0cw0KCSogcmV0dXJucyBhbiBPYmplY3RJbnB1dFN0cmVhbSBv
YmplY3QNCgkqLw0KDQ0KCXB1YmxpYyBzdGF0aWMgT2JqZWN0IG9wZW5JbkZpbGUoU3RyaW5nIHMp
IC8vdGhyb3dzIEV4Y2VwdGlvbg0KCXsNCgkJU3RyaW5nIG9zTmFtZT1TeXN0ZW0uZ2V0UHJvcGVy
dHkoIm9zLm5hbWUiKTsNCgkJT2JqZWN0IG9iaiA9IG51bGw7DQoJCUZpbGVJbnB1dFN0cmVhbSBJ
UyA9IG51bGw7DQoJCU9iamVjdElucHV0U3RyZWFtIE9JUyA9IG51bGw7DQoJCUZpbGUgaW5GaWxl
ID0gbnVsbDsNCgkJaWYob3NOYW1lLmVxdWFscygiTGludXgiKSkNCgkJaW5GaWxlID0gbmV3IEZp
bGUoIi91c3IvbG9jYWwvIiArIHMpOw0KCQllbHNlDQoJCWluRmlsZSA9IG5ldyBGaWxlKHMpOw0K
CQl0cnkgew0KCQkJSVMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGluRmlsZSk7DQoJCQlPSVMgPSBu
ZXcgT2JqZWN0SW5wdXRTdHJlYW0oSVMpOw0KCQkJb2JqID0gKE9iamVjdCkgT0lTLnJlYWRPYmpl
Y3QoKTsNCgkJfSBjYXRjaCAoT3B0aW9uYWxEYXRhRXhjZXB0aW9uIG9lKSB7DQoJCQlTeXN0ZW0u
b3V0LnByaW50bG4oIlRoZSBjb25maWd1cmF0aW9uIGZpbGUgaGFzIGJlZW4gY29ycnVwdGVkLiIp
Ow0KCQl9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsNCgkJCVN5c3RlbS5vdXQu
cHJpbnRsbigiQ29uZmlndXJhdGlvbiBmaWxlIGluZm8gY2Fubm90IGJlIGZvdW5kLiIpOw0KCQl9
IGNhdGNoIChTdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24gc2UpIHsNCgkJCVN5c3RlbS5vdXQucHJp
bnRsbigiVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjYW5ub3QgYmUgcmVhZC4iKTsNCgkJfSBjYXRj
aCAoSU9FeGNlcHRpb24gaWUpIHsNCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiVGhlIGNvbmZpZ3Vy
YXRpb24gZmlsZSBjYW5ub3QgYmUgcmVhZC4iKTsNCgkJfSBmaW5hbGx5IHsNCgkJCXRyeXsNCgkJ
CSBPSVMuY2xvc2UoKTsNCgkJCSBJUy5jbG9zZSgpOw0KCQkJfWNhdGNoKElPRXhjZXB0aW9uIGUp
e1N5c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgY2xvc2luZy5cbiIrZSk7fQ0KCQkJcmV0dXJuIG9i
ajsNCgkJfQ0KCX0NCg0NCn0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNyL3RzdC9Uc3QvU2V0dGluZ3MuamF2
YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAzNzUwADA3
NjIwMTA1MDIwADAxNDQxMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsKaW1wb3J0IGphdmEu
aW8uU2VyaWFsaXphYmxlOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS51dGlsLlZlY3Rv
cjsKCgovKiBDbGFzcyB0byBob2xkIHRoZSBzZWxlY3Rpb25zIGVudGVyZWQgaW4gYnkgdGhlIGNv
bmZpZyBjbGFzcy4KKiAgRGF0YSBzdWNoIGFzIHRoZSBzZXR0aW5ncyBmb3IgdGhlIG1vZGVtLgoq
LwoKcHVibGljIGNsYXNzIFNldHRpbmdzIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKCgoJCglw
cml2YXRlIFN0cmluZyBwb3J0TmFtZTsKCXByaXZhdGUgU3RyaW5nIGhvbWVEaXI7Cglwcml2YXRl
IFN0cmluZyBxdWVEaXI7Cglwcml2YXRlIFN0cmluZyBxdWVGaWxlOwoJcHJpdmF0ZSBib29sZWFu
IHF1ZUlnbm9yZTsKCVZlY3RvciBmaWVsZE5hbWVzOyAKCVZlY3RvciBmaWVsZEVuZDsKCVZlY3Rv
ciBmSGVhZGVyVGVybTsgCglpbnQgZmllbGRDb3VudDsJCglWZWN0b3IgZmllbGRTZXBhcmF0b3I7
CglWZWN0b3Igc3RhcnQ7ICAgICAgICAgCglWZWN0b3Igc3RvcDsgICAgICAgICAgCglTdHJpbmcg
bW9kZWw7CQoKCS8qKgoJICogQ29uc3RydWN0b3IgZm9yIFNldHRpbmdzCgkgKi8KCXB1YmxpYyBT
ZXR0aW5ncygpIHsKCQlzdXBlcigpOwoKCQlzdGFydCA9IG5ldyBWZWN0b3IoKTsKCQlmb3IgKGlu
dCBpPTA7aTwyNDtpKyspCgkJc3RhcnQuYWRkRWxlbWVudCgic2RmIik7CgkJcG9ydE5hbWUgPSAo
Ii9kZXYvdGVybS9hIik7CgkJaG9tZURpciA9ICIvdXNyL2xvY2FsLyI7CgkJcXVlRGlyID0gIi91
c3IvbG9jYWwvIjsKCQlxdWVGaWxlID0gInF1ZSI7CgkJcXVlSWdub3JlID0gdHJ1ZTsKCX0KCglw
dWJsaWMgdm9pZCBpbml0KCl7CglQcmludGVyIHBudCA9IG5ldyBQcmludGVyKCk7Cgl9CgoJLyoq
CgkgKiBHZXRzIHRoZSBwb3J0CgkgKiBAcmV0dXJuIFJldHVybnMgYSBQb3J0cwoJICovCgoKCS8q
KgoJICogR2V0cyB0aGUgcHJpbnRlcgoJICogQHJldHVybiBSZXR1cm5zIGEgUHJpbnRlcgoJICov
CgoKCS8qKgoJICogR2V0cyB0aGUgaG9tZURpcgoJICogQHJldHVybiBSZXR1cm5zIGEgU3RyaW5n
CgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0SG9tZURpcigpIHsKCQlyZXR1cm4gaG9tZURpcjsKCX0K
CS8qKgoJICogU2V0cyB0aGUgaG9tZURpcgoJICogQHBhcmFtIGhvbWVEaXIgVGhlIGhvbWVEaXIg
dG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldEhvbWVEaXIoU3RyaW5nIGhvbWVEaXIpIHsKCQl0
aGlzLmhvbWVEaXIgPSBob21lRGlyOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHF1ZURpcgoJICog
QHJldHVybiBSZXR1cm5zIGEgU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0UXVlRGlyKCkg
ewoJCXJldHVybiBxdWVEaXI7Cgl9CgkvKioKCSAqIFNldHMgdGhlIHF1ZURpcgoJICogQHBhcmFt
IHF1ZURpciBUaGUgcXVlRGlyIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRRdWVEaXIoU3Ry
aW5nIHF1ZURpcikgewoJCXRoaXMucXVlRGlyID0gcXVlRGlyOwoJfQoKCgkvKioKCSAqIEdldHMg
dGhlIHF1ZUZpbGUKCSAqIEByZXR1cm4gUmV0dXJucyBhIFN0cmluZwoJICovCglwdWJsaWMgU3Ry
aW5nIGdldFF1ZUZpbGUoKSB7CgkJcmV0dXJuIHF1ZUZpbGU7Cgl9CgkvKioKCSAqIFNldHMgdGhl
IHF1ZUZpbGUKCSAqIEBwYXJhbSBxdWVGaWxlIFRoZSBxdWVGaWxlIHRvIHNldAoJICovCglwdWJs
aWMgdm9pZCBzZXRRdWVGaWxlKFN0cmluZyBxdWVGaWxlKSB7CgkJdGhpcy5xdWVGaWxlID0gcXVl
RmlsZTsKCX0KCgoJLyoqCgkgKiBHZXRzIHRoZSBxdWVJZ25vcmUKCSAqIEByZXR1cm4gUmV0dXJu
cyBhIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gZ2V0UXVlSWdub3JlKCkgewoJCXJldHVy
biBxdWVJZ25vcmU7Cgl9CgkvKioKCSAqIFNldHMgdGhlIHF1ZUlnbm9yZQoJICogQHBhcmFtIHF1
ZUlnbm9yZSBUaGUgcXVlSWdub3JlIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRRdWVJZ25v
cmUoYm9vbGVhbiBxdWVJZ25vcmUpIHsKCQl0aGlzLnF1ZUlnbm9yZSA9IHF1ZUlnbm9yZTsKCX0K
Cgp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1NldHVwSU8uY2xhc3MAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDM2NQAwNzYyMDEw
MzYxMwAwMTQzMzcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
dXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyv66vgADAC0AdwEAC1RzdC9TZXR1cElPBwABAQAQ
amF2YS9sYW5nL09iamVjdAcAAwEABjxpbml0PgEAAygpVgEABENvZGUMAAUABgoABAAIAQALb3Bl
bk91dEZpbGUBACcoTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9TdHJpbmc7KUkBAAdvcy5u
YW1lCAAMAQAQamF2YS9sYW5nL1N5c3RlbQcADgEAC2dldFByb3BlcnR5AQAmKExqYXZhL2xhbmcv
U3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsMABAAEQoADwASAQAFTGludXgIABQBABBqYXZhL2xh
bmcvU3RyaW5nBwAWAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaDAAYABkKABcAGgEA
DGphdmEvaW8vRmlsZQcAHAEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIHAB4BAAsvdXNyL2xvY2Fs
LwgAIAEAFShMamF2YS9sYW5nL1N0cmluZzspVgwABQAiCgAfACMBAAZhcHBlbmQBACwoTGphdmEv
bGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwwAJQAmCgAfACcBAAh0b1N0cmlu
ZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7DAApACoKAB8AKwoAHQAjAQAYamF2YS9pby9GaWxlT3V0
cHV0U3RyZWFtBwAuAQARKExqYXZhL2lvL0ZpbGU7KVYMAAUAMAoALwAxAQADb3V0AQAVTGphdmEv
aW8vUHJpbnRTdHJlYW07DAAzADQJAA8ANQEAE2phdmEvaW8vUHJpbnRTdHJlYW0HADcBAAdwcmlu
dGxuAQAVKExqYXZhL2xhbmcvT2JqZWN0OylWDAA5ADoKADgAOwEAGmphdmEvaW8vT2JqZWN0T3V0
cHV0U3RyZWFtBwA9AQAZKExqYXZhL2lvL091dHB1dFN0cmVhbTspVgwABQA/CgA+AEABAAt3cml0
ZU9iamVjdAwAQgA6CgA+AEMBABNFcnJvciB3cml0aW5nIGZpbGUgCABFAQAqIC4gUGxlYXNlIGNo
ZWNrIHN5c3RlbSBhbmQgcmVydW4gcHJvZ3JhbS4KCABHAQAsKExqYXZhL2xhbmcvT2JqZWN0OylM
amF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsMACUASQoAHwBKDAA5ACIKADgATAEABWNsb3NlDABOAAYK
AC8ATwoAPgBPAQAPRXJyb3IgY2xvc2luZy4KCABSAQAdamF2YS9pby9GaWxlTm90Rm91bmRFeGNl
cHRpb24HAFQBABNqYXZhL2lvL0lPRXhjZXB0aW9uBwBWAQAPTGluZU51bWJlclRhYmxlAQAKb3Bl
bkluRmlsZQEAJihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9PYmplY3Q7AQAXamF2YS9p
by9GaWxlSW5wdXRTdHJlYW0HAFsKAFwAMQEAGWphdmEvaW8vT2JqZWN0SW5wdXRTdHJlYW0HAF4B
ABgoTGphdmEvaW8vSW5wdXRTdHJlYW07KVYMAAUAYAoAXwBhAQAKcmVhZE9iamVjdAEAFCgpTGph
dmEvbGFuZy9PYmplY3Q7DABjAGQKAF8AZQEAKlRoZSBjb25maWd1cmF0aW9uIGZpbGUgaGFzIGJl
ZW4gY29ycnVwdGVkLggAZwEAKENvbmZpZ3VyYXRpb24gZmlsZSBpbmZvIGNhbm5vdCBiZSBmb3Vu
ZC4IAGkBACZUaGUgY29uZmlndXJhdGlvbiBmaWxlIGNhbm5vdCBiZSByZWFkLggAawoAXwBPCgBc
AE8BAB1qYXZhL2lvL09wdGlvbmFsRGF0YUV4Y2VwdGlvbgcAbwEAIGphdmEvbGFuZy9DbGFzc05v
dEZvdW5kRXhjZXB0aW9uBwBxAQAgamF2YS9pby9TdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24HAHMB
AApTb3VyY2VGaWxlAQAMU2V0dXBJTy5qYXZhACEAAgAEAAAAAAADAAEABQAGAAEABwAAABEAAQAB
AAAABSq3AAmxAAAAAAAJAAoACwABAAcAAAFFAAUABwAAAL0SDbgAE00BTgE6BAE6BSwSFbYAG5kA
H7sAHVm7AB9ZEiG3ACQrtgAotgAstwAtOgWnAA27AB1ZK7cALToFuwAvWRkFtwAyTqcAGjoGsgA2
GQa2ADynAA06BrIANhkGtgA8uwA+WS23AEE6BBkEKrYARKcAJToGsgA2uwAfWRJGtwAkK7YAKBJI
tgAoGQa2AEu2ACy2AE0ttgBQGQS2AFGnABw6BrIANrsAH1kSU7cAJBkGtgBLtgAstgBNBKwABAA9
AEcASgBVAD0ARwBXAFcAYQBxAHQAVwCWAJ8AogBXAAEAWAAAAFYAFQAAABgABgAZAAgAGgALABsA
DgAdABcAHwAzACMAPQAnAEoAKABMACgAVwApAFkAKQBhACsAawAsAHQALQB2AC4AlgAxAJoAMgCi
ADMApAAzALsANAAJAFkAWgABAAcAAAFcAAUABwAAALgSDbgAE0wBTQFOAToEAToFKxIVtgAbmQAf
uwAdWbsAH1kSIbcAJCq2ACi2ACy3AC06BacADbsAHVkqtwAtOgW7AFxZGQW3AF1OuwBfWS23AGI6
BBkEtgBmTacANDoGsgA2Emi2AE2nACc6BrIANhJqtgBNpwAaOgayADYSbLYATacADToGsgA2Emy2
AE2nAARXGQS2AG0ttgBupwAcOgayADa7AB9ZElO3ACQZBrYAS7YALLYATSywAAYAPwBZAFwAcAA/
AFkAaQByAD8AWQB2AHQAPwBZAIMAVwA/AI0AkAAAAJEAmgCdAFcAAQBYAAAAYgAYAAAAQAAGAEEA
CABCAAoAQwANAEQAEABFABkARgA1AEgAPwBKAEkASwBTAEwAXABNAF4ATgBpAE8AawBQAHYAUQB4
AFIAgwBTAIUAVACRAFcAlgBYAJ0AWQCfAFkAtgBaAAEAdQAAAAIAdgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1NldHVwSU8uamF2YQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAwMTAwNDQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDIyMQAwNzYxNzYzMDcxNgAw
MTQxNTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIg
IAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAcGFja2FnZSBUc3Q7DQppbXBvcnQgamF2YS5pby4qOw0KDQ0K
cHVibGljIGNsYXNzIFNldHVwSU8gew0KCS8vIE1VU1QgY2F0Y2ggYW55IGV4Y2VwdGlvbiB0aGF0
IG1pZ2h0IGJlIHRocm93biEhDQoJcHVibGljIFNldHVwSU8oKSB7DQoJfQ0KDQ0KDQ0KDQ0KCS8q
Kg0KCSogT3BlbnMgYW4gb3V0cHV0IGZpbGUgZm9yIHdyaXRpbmcgb2JqZWN0cw0KCSogcmV0dXJu
cyBhbiBPYmplY3RPdXRwdXRTdHJlYW0gb2JqZWN0DQoJKi8NCg0NCglwdWJsaWMgc3RhdGljIGlu
dCBvcGVuT3V0RmlsZShPYmplY3Qgb2JqLCBTdHJpbmcgcykgew0KDQ0KCQlTdHJpbmcgb3NOYW1l
PVN5c3RlbS5nZXRQcm9wZXJ0eSgib3MubmFtZSIpOw0KCQlGaWxlT3V0cHV0U3RyZWFtIE9TID0g
bnVsbDsNCgkJT2JqZWN0T3V0cHV0U3RyZWFtIE9PUyA9IG51bGw7DQoJCUZpbGUgb3V0RmlsZSA9
IG51bGw7DQoJCQ0KCQlpZihvc05hbWUuZXF1YWxzKCJMaW51eCIpKQ0KCQl7DQoJCW91dEZpbGUg
PSBuZXcgRmlsZSgiL3Vzci9sb2NhbC8iICsgcyk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCW91dEZp
bGUgPSBuZXcgRmlsZShzKTsNCgkJfQ0KCQkNCgkJdHJ5ew0KCQlPUyA9IG5ldyBGaWxlT3V0cHV0
U3RyZWFtKG91dEZpbGUpOw0KCQl9Y2F0Y2goRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGZlKXtTeXN0
ZW0ub3V0LnByaW50bG4oZmUpOyB9DQoJCWNhdGNoIChJT0V4Y2VwdGlvbiBpb2Upe1N5c3RlbS5v
dXQucHJpbnRsbihpb2UpOyB9DQoJCXRyeXsNCgkJT09TID0gbmV3IE9iamVjdE91dHB1dFN0cmVh
bShPUyk7DQoJCU9PUy53cml0ZU9iamVjdChvYmopOw0KCQl9Y2F0Y2goSU9FeGNlcHRpb24gaWUp
ew0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJFcnJvciB3cml0aW5nIGZpbGUgIitzKyIgLiBQbGVh
c2UgY2hlY2sgc3lzdGVtIGFuZCByZXJ1biBwcm9ncmFtLlxuIitpZSk7DQoJCX0NCgkJdHJ5ew0K
CQlPUy5jbG9zZSgpOw0KCQlPT1MuY2xvc2UoKTsNCgkJfWNhdGNoKElPRXhjZXB0aW9uIGUpe1N5
c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgY2xvc2luZy5cbiIrZSk7fQ0KCQlyZXR1cm4gMTsNCgl9
DQoNDQoJLyoqDQoJKiBPcGVucyBhbiBpbnB1dCBmaWxlIGZvciByZWFkaW5nIG9iamVjdHMNCgkq
IHJldHVybnMgYW4gT2JqZWN0SW5wdXRTdHJlYW0gb2JqZWN0DQoJKi8NCg0NCglwdWJsaWMgc3Rh
dGljIE9iamVjdCBvcGVuSW5GaWxlKFN0cmluZyBzKSAvL3Rocm93cyBFeGNlcHRpb24NCgl7DQoJ
CVN0cmluZyBvc05hbWU9U3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIik7DQoJCU9iamVjdCBv
YmogPSBudWxsOw0KCQlGaWxlSW5wdXRTdHJlYW0gSVMgPSBudWxsOw0KCQlPYmplY3RJbnB1dFN0
cmVhbSBPSVMgPSBudWxsOw0KCQlGaWxlIGluRmlsZSA9IG51bGw7DQoJCWlmKG9zTmFtZS5lcXVh
bHMoIkxpbnV4IikpDQoJCWluRmlsZSA9IG5ldyBGaWxlKCIvdXNyL2xvY2FsLyIgKyBzKTsNCgkJ
ZWxzZQ0KCQlpbkZpbGUgPSBuZXcgRmlsZShzKTsNCgkJdHJ5IHsNCgkJCUlTID0gbmV3IEZpbGVJ
bnB1dFN0cmVhbShpbkZpbGUpOw0KCQkJT0lTID0gbmV3IE9iamVjdElucHV0U3RyZWFtKElTKTsN
CgkJCW9iaiA9IChPYmplY3QpIE9JUy5yZWFkT2JqZWN0KCk7DQoJCX0gY2F0Y2ggKE9wdGlvbmFs
RGF0YUV4Y2VwdGlvbiBvZSkgew0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJUaGUgY29uZmlndXJh
dGlvbiBmaWxlIGhhcyBiZWVuIGNvcnJ1cHRlZC4iKTsNCgkJfSBjYXRjaCAoQ2xhc3NOb3RGb3Vu
ZEV4Y2VwdGlvbiBlKSB7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvbmZpZ3VyYXRpb24gZmls
ZSBpbmZvIGNhbm5vdCBiZSBmb3VuZC4iKTsNCgkJfSBjYXRjaCAoU3RyZWFtQ29ycnVwdGVkRXhj
ZXB0aW9uIHNlKSB7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBjb25maWd1cmF0aW9uIGZp
bGUgY2Fubm90IGJlIHJlYWQuIik7DQoJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGllKSB7DQoJCQlT
eXN0ZW0ub3V0LnByaW50bG4oIlRoZSBjb25maWd1cmF0aW9uIGZpbGUgY2Fubm90IGJlIHJlYWQu
Iik7DQoJCX0gZmluYWxseSB7DQoJCQl0cnl7DQoJCQkgT0lTLmNsb3NlKCk7DQoJCQkgSVMuY2xv
c2UoKTsNCgkJCX1jYXRjaChJT0V4Y2VwdGlvbiBlKXtTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9y
IGNsb3NpbmcuXG4iK2UpO30NCgkJCXJldHVybiBvYmo7DQoJCX0NCgl9DQoNDQp9AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1ByaW50ZXIuY2xhc3MAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDUzNgAwNzYyMDEwNTQzNgAwMTQ0MzcA
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAyv66vgADAC0AWgEAC1RzdC9QcmludGVyBwABAQAQamF2YS9sYW5nL09i
amVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAKZmllbGROYW1lcwEAEkxqYXZhL3V0
aWwvVmVjdG9yOwEACGZpZWxkRW5kAQALZkhlYWRlclRlcm0BAApmaWVsZENvdW50AQABSQEADmZp
ZWxkU2VwYXJhdG9yAQANcGFnZVNlcGFyYXRvcgEABXN0YXJ0AQAEc3RvcAEABW1vZGVsAQASTGph
dmEvbGFuZy9TdHJpbmc7AQAIV0lMRENBUkQBAAZmaW5pdCQBAAMoKVYBAAlTeW50aGV0aWMBAARD
b2RlDAATAAwJAAIAGAEAD0xpbmVOdW1iZXJUYWJsZQEABXNldHVwAQADKClJAQAGPGluaXQ+DAAd
ABUKAAQAHgwAFAAVCgACACABABBqYXZhL3V0aWwvVmVjdG9yBwAiCgAjAB4MAAcACAkAAgAlAQAR
amF2YS9sYW5nL0ludGVnZXIHACcBAAQoSSlWDAAdACkKACgAKgEACmFkZEVsZW1lbnQBABUoTGph
dmEvbGFuZy9PYmplY3Q7KVYMACwALQoAIwAuDAAJAAgJAAIAMAwACgAICQACADIMAAsADAkAAgA0
DAANAAgJAAIANgwADgAICQACADgMAA8ACAkAAgA6DAAQAAgJAAIAPAEABGZvdXIIAD4MABEAEgkA
AgBAAQANZ2V0RmllbGROYW1lcwEAFCgpTGphdmEvdXRpbC9WZWN0b3I7AQANc2V0RmllbGROYW1l
cwEAFShMamF2YS91dGlsL1ZlY3RvcjspVgEAEWdldEZpZWxkU2VwYXJhdG9yAQARc2V0RmllbGRT
ZXBhcmF0b3IBABBnZXRQYWdlU2VwYXJhdG9yAQAQc2V0UGFnZVNlcGFyYXRvcgEACGdldE1vZGVs
AQAUKClMamF2YS9sYW5nL1N0cmluZzsBAAhzZXRNb2RlbAEAFShMamF2YS9sYW5nL1N0cmluZzsp
VgEACGdldFN0YXJ0AQAIc2V0U3RhcnQBAAdnZXRTdG9wAQAHc2V0U3RvcAEADWdldEZpZWxkQ291
bnQBAA1zZXRGaWVsZENvdW50AQALZ2V0RmllbGRFbmQBAAtzZXRGaWVsZEVuZAEADWdldEhlYWRl
clRlcm0BAA1zZXRIZWFkZXJUZXJtAQAKU291cmNlRmlsZQEADFByaW50ZXIuamF2YQAhAAIABAAB
AAYACgAAAAcACAAAAAAACQAIAAAAAAAKAAgAAAAAAAsADAAAAAAADQAIAAAAAAAOAAgAAAAAAA8A
CAAAAAAAEAAIAAAAAAARABIAAAAQABMADAAAABUAAgAUABUAAgAWAAAAAAAXAAAAIAACAAEAAAAI
KhED57UAGbEAAAABABoAAAAGAAEAAAASAAEAGwAcAAEAFwAAABoAAQABAAAAAgOsAAAAAQAaAAAA
BgABAAAAGgABAB0AFQABABcAAAHLAAQAAQAAAVcqtwAfKrcAISq7ACNZtwAktQAmKrQAJrsAKFkR
APO3ACu2AC8qtAAmuwAoWREAibcAK7YALyq0ACa7AChZEQFZtwArtgAvKrsAI1m3ACS1ADEqtAAx
uwAoWREBTbcAK7YALyq0ADG7AChZEQMPtwArtgAvKrsAI1m3ACS1ADMqtAAzuwAoWRAYtwArtgAv
KhBMtQA1KrsAI1m3ACS1ADcqtAA3uwAoWRAitwArtgAvKrQAN7sAKFkQK7cAK7YALyq7ACNZtwAk
tQA5KrQAObsAKFkQCrcAK7YALyq0ADm7AChZEAq3ACu2AC8quwAjWbcAJLUAOyq0ADu7AChZECG3
ACu2AC8qtAA7uwAoWRBYtwArtgAvKrQAO7sAKFkQRbcAK7YALyq7ACNZtwAktQA9KrQAPbsAKFkQ
LbcAK7YALyq0AD27AChZEE23ACu2AC8qEj+1AEGxAAAAAQAaAAAAYgAYAAgAJQATACYAJAAnADUA
KABGACsAUQAsAGIALQBzAC8AfgAwAI4AMwCUADYAnwA4AK8AOQC/ADsAygA9ANoAPgDqAEAA9QBB
AQUAQgEVAEMBJQBGATAARwFAAEgBUABLAAEAQgBDAAEAFwAAAB0AAQABAAAABSq0ACawAAAAAQAa
AAAABgABAAAAWAABAEQARQABABcAAAAeAAIAAgAAAAYqK7UAJrEAAAABABoAAAAGAAEAAABfAAEA
RgBDAAEAFwAAAB0AAQABAAAABSq0ADewAAAAAQAaAAAABgABAAAAaAABAEcARQABABcAAAAeAAIA
AgAAAAYqK7UAN7EAAAABABoAAAAGAAEAAABvAAEASABDAAEAFwAAAB0AAQABAAAABSq0ADmwAAAA
AQAaAAAABgABAAAAeAABAEkARQABABcAAAAeAAIAAgAAAAYqK7UAObEAAAABABoAAAAGAAEAAAB/
AAEASgBLAAEAFwAAAB0AAQABAAAABSq0AEGwAAAAAQAaAAAABgABAAAAiAABAEwATQABABcAAAAe
AAIAAgAAAAYqK7UAQbEAAAABABoAAAAGAAEAAACPAAEATgBDAAEAFwAAAB0AAQABAAAABSq0ADuw
AAAAAQAaAAAABgABAAAAmAABAE8ARQABABcAAAAeAAIAAgAAAAYqK7UAO7EAAAABABoAAAAGAAEA
AACfAAEAUABDAAEAFwAAAB0AAQABAAAABSq0AD2wAAAAAQAaAAAABgABAAAAqAABAFEARQABABcA
AAAeAAIAAgAAAAYqK7UAPbEAAAABABoAAAAGAAEAAACvAAEAUgAcAAEAFwAAAB0AAQABAAAABSq0
ADWsAAAAAQAaAAAABgABAAAAuAABAFMAKQABABcAAAAeAAIAAgAAAAYqG7UANbEAAAABABoAAAAG
AAEAAAC/AAEAVABDAAEAFwAAAB0AAQABAAAABSq0ADGwAAAAAQAaAAAABgABAAAAyAABAFUARQAB
ABcAAAAeAAIAAgAAAAYqK7UAMbEAAAABABoAAAAGAAEAAADPAAEAVgBDAAEAFwAAAB0AAQABAAAA
BSq0ADOwAAAAAQAaAAAABgABAAAA2AABAFcARQABABcAAAAeAAIAAgAAAAYqK7UAM7EAAAABABoA
AAAGAAEAAADfAAEAWAAAAAIAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHVzci90c3QvVHN0L1ByaW50ZXIuamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAw
NDQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNzQwNAAwNzYyMDEwNTQyNAAwMTQyNDMAIDAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAcGFja2FnZSBUc3Q7CmltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwoJaW1wb3J0IGph
dmEuaW8uU2VyaWFsaXphYmxlOwoKCnB1YmxpYyBjbGFzcyBQcmludGVyIGltcGxlbWVudHMgU2Vy
aWFsaXphYmxlewoKCglWZWN0b3IgZmllbGROYW1lczsgICAgCglWZWN0b3IgZmllbGRFbmQ7CQoJ
VmVjdG9yIGZIZWFkZXJUZXJtOyAgICAvLwoJaW50IGZpZWxkQ291bnQ7CQkKCVZlY3RvciBmaWVs
ZFNlcGFyYXRvcjsgLy8KCVZlY3RvciBwYWdlU2VwYXJhdG9yOyAgLy8KCVZlY3RvciBzdGFydDsg
ICAgICAgICAgLy8KCVZlY3RvciBzdG9wOyAgICAgICAgICAgLy8KCVN0cmluZyBtb2RlbDsJCQoJ
ZmluYWwgaW50IFdJTERDQVJEID0gOTk5OyAvL0Rlc2lnbmF0ZXMgYSB2YWx1ZSBmb3Igc2tpcHBp
bmcgY29tcGFyZXMuCgoKCgoJcHVibGljIGludCBzZXR1cCgpewoJCQoJCglyZXR1cm4gMDsJCgl9
CgoKCgoJLyoqCgkgKiBDb25zdHJ1Y3RvciBmb3IgUHJpbnRlcgoJICovCglwdWJsaWMgUHJpbnRl
cigpIHsKCQlzdXBlcigpOwoJCWZpZWxkTmFtZXMgPSBuZXcgVmVjdG9yKCk7CgkJZmllbGROYW1l
cy5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDI0MykpOwoJCWZpZWxkTmFtZXMuYWRkRWxlbWVudChu
ZXcgSW50ZWdlcigxMzcpKTsKCQlmaWVsZE5hbWVzLmFkZEVsZW1lbnQobmV3IEludGVnZXIoMzQ1
KSk7CgoKCQlmaWVsZEVuZCA9IG5ldyBWZWN0b3IoKTsKCQlmaWVsZEVuZC5hZGRFbGVtZW50KG5l
dyBJbnRlZ2VyKDMzMykpOwoJCWZpZWxkRW5kLmFkZEVsZW1lbnQobmV3IEludGVnZXIoNzgzKSk7
CgkJCgkJZkhlYWRlclRlcm0gPSBuZXcgVmVjdG9yKCk7CgkJZkhlYWRlclRlcm0uYWRkRWxlbWVu
dChuZXcgSW50ZWdlcigyNCkpOwoKCgkJZmllbGRDb3VudCA9IDc2OwoKCgkJZmllbGRTZXBhcmF0
b3IgPSBuZXcgVmVjdG9yKCk7CgkJewoJCQlmaWVsZFNlcGFyYXRvci5hZGRFbGVtZW50KG5ldyBJ
bnRlZ2VyKDM0KSk7CgkJCWZpZWxkU2VwYXJhdG9yLmFkZEVsZW1lbnQobmV3IEludGVnZXIoNDMp
KTsKCQl9CgkJcGFnZVNlcGFyYXRvciA9IG5ldyBWZWN0b3IoKTsKCQl7CgkJCXBhZ2VTZXBhcmF0
b3IuYWRkRWxlbWVudChuZXcgSW50ZWdlcigxMCkpOwoJCQlwYWdlU2VwYXJhdG9yLmFkZEVsZW1l
bnQobmV3IEludGVnZXIoMTApKTsKCQl9CgkJc3RhcnQgPSBuZXcgVmVjdG9yKCk7CgkJc3RhcnQu
YWRkRWxlbWVudChuZXcgSW50ZWdlcigzMykpOwoJCXN0YXJ0LmFkZEVsZW1lbnQobmV3IEludGVn
ZXIoODgpKTsKCQlzdGFydC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDY5KSk7CgoKCQlzdG9wID0g
bmV3IFZlY3RvcigpOwoJCXN0b3AuYWRkRWxlbWVudChuZXcgSW50ZWdlcig0NSkpOwoJCXN0b3Au
YWRkRWxlbWVudChuZXcgSW50ZWdlcig3NykpOwoKCgkJbW9kZWwgPSAiZm91ciI7Cgl9CgoKCgoK
CgkvKioKCSAqIEdldHMgdGhlIGZpZWxkTmFtZXMKCSAqIEByZXR1cm4gUmV0dXJucyBhIFZlY3Rv
cgoJICovCglwdWJsaWMgVmVjdG9yIGdldEZpZWxkTmFtZXMoKSB7CgkJcmV0dXJuIGZpZWxkTmFt
ZXM7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkTmFtZXMKCSAqIEBwYXJhbSBmaWVsZE5hbWVz
IFRoZSBmaWVsZE5hbWVzIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRGaWVsZE5hbWVzKFZl
Y3RvciBmaWVsZE5hbWVzKSB7CgkJdGhpcy5maWVsZE5hbWVzID0gZmllbGROYW1lczsKCX0KCgoJ
LyoqCgkgKiBHZXRzIHRoZSBmaWVsZFNlcGFyYXRvcgoJICogQHJldHVybiBSZXR1cm5zIGEgVmVj
dG9yCgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0RmllbGRTZXBhcmF0b3IoKSB7CgkJcmV0dXJuIGZp
ZWxkU2VwYXJhdG9yOwoJfQoJLyoqCgkgKiBTZXRzIHRoZSBmaWVsZFNlcGFyYXRvcgoJICogQHBh
cmFtIGZpZWxkU2VwYXJhdG9yIFRoZSBmaWVsZFNlcGFyYXRvciB0byBzZXQKCSAqLwoJcHVibGlj
IHZvaWQgc2V0RmllbGRTZXBhcmF0b3IoVmVjdG9yIGZpZWxkU2VwYXJhdG9yKSB7CgkJdGhpcy5m
aWVsZFNlcGFyYXRvciA9IGZpZWxkU2VwYXJhdG9yOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHBh
Z2VTZXBhcmF0b3IKCSAqIEByZXR1cm4gUmV0dXJucyBhIFZlY3RvcgoJICovCglwdWJsaWMgVmVj
dG9yIGdldFBhZ2VTZXBhcmF0b3IoKSB7CgkJcmV0dXJuIHBhZ2VTZXBhcmF0b3I7Cgl9CgkvKioK
CSAqIFNldHMgdGhlIHBhZ2VTZXBhcmF0b3IKCSAqIEBwYXJhbSBwYWdlU2VwYXJhdG9yIFRoZSBw
YWdlU2VwYXJhdG9yIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRQYWdlU2VwYXJhdG9yKFZl
Y3RvciBwYWdlU2VwYXJhdG9yKSB7CgkJdGhpcy5wYWdlU2VwYXJhdG9yID0gcGFnZVNlcGFyYXRv
cjsKCX0KCgoJLyoqCgkgKiBHZXRzIHRoZSBtb2RlbAoJICogQHJldHVybiBSZXR1cm5zIGEgU3Ry
aW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0TW9kZWwoKSB7CgkJcmV0dXJuIG1vZGVsOwoJfQoJ
LyoqCgkgKiBTZXRzIHRoZSBtb2RlbAoJICogQHBhcmFtIG1vZGVsIFRoZSBtb2RlbCB0byBzZXQK
CSAqLwoJcHVibGljIHZvaWQgc2V0TW9kZWwoU3RyaW5nIG1vZGVsKSB7CgkJdGhpcy5tb2RlbCA9
IG1vZGVsOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHN0YXJ0CgkgKiBAcmV0dXJuIFJldHVybnMg
YSBWZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRTdGFydCgpIHsKCQlyZXR1cm4gc3RhcnQ7
Cgl9CgkvKioKCSAqIFNldHMgdGhlIHN0YXJ0CgkgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IHRv
IHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRTdGFydChWZWN0b3Igc3RhcnQpIHsKCQl0aGlzLnN0
YXJ0ID0gc3RhcnQ7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgc3RvcAoJICogQHJldHVybiBSZXR1
cm5zIGEgVmVjdG9yCgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0U3RvcCgpIHsKCQlyZXR1cm4gc3Rv
cDsKCX0KCS8qKgoJICogU2V0cyB0aGUgc3RvcAoJICogQHBhcmFtIHN0b3AgVGhlIHN0b3AgdG8g
c2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFN0b3AoVmVjdG9yIHN0b3ApIHsKCQl0aGlzLnN0b3Ag
PSBzdG9wOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIGZpZWxkQ291bnQKCSAqIEByZXR1cm4gUmV0
dXJucyBhIGludAoJICovCglwdWJsaWMgaW50IGdldEZpZWxkQ291bnQoKSB7CgkJcmV0dXJuIGZp
ZWxkQ291bnQ7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkQ291bnQKCSAqIEBwYXJhbSBmaWVs
ZENvdW50IFRoZSBmaWVsZENvdW50IHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRGaWVsZENv
dW50KGludCBmaWVsZENvdW50KSB7CgkJdGhpcy5maWVsZENvdW50ID0gZmllbGRDb3VudDsKCX0K
CgoJLyoqCgkgKiBHZXRzIHRoZSBmaWVsZEVuZAoJICogQHJldHVybiBSZXR1cm5zIGEgVmVjdG9y
CgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0RmllbGRFbmQoKSB7CgkJcmV0dXJuIGZpZWxkRW5kOwoJ
fQoJLyoqCgkgKiBTZXRzIHRoZSBmaWVsZEVuZAoJICogQHBhcmFtIGZpZWxkRW5kIFRoZSBmaWVs
ZEVuZCB0byBzZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0RmllbGRFbmQoVmVjdG9yIGZpZWxkRW5k
KSB7CgkJdGhpcy5maWVsZEVuZCA9IGZpZWxkRW5kOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIGhl
YWRlclRlcm0KCSAqIEByZXR1cm4gUmV0dXJucyBhIFZlY3RvcgoJICovCglwdWJsaWMgVmVjdG9y
IGdldEhlYWRlclRlcm0oKSB7CgkJcmV0dXJuIGZIZWFkZXJUZXJtOwoJfQoJLyoqCgkgKiBTZXRz
IHRoZSBoZWFkZXJUZXJtCgkgKiBAcGFyYW0gaGVhZGVyVGVybSBUaGUgaGVhZGVyVGVybSB0byBz
ZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0SGVhZGVyVGVybShWZWN0b3IgaGVhZGVyVGVybSkgewoJ
CWZIZWFkZXJUZXJtID0gaGVhZGVyVGVybTsKCX0KCgp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]