svn commit: r19907 - trunk: . src/argouml-app src/argouml-app/META-INF src/argouml-app/src/org/argouml/application src/argouml-app/src/org/argouml/application/api src/argouml-app/src/org/argouml/application/events src/argouml-app/src/org/argouml/application/helpers src/argouml-app/src/org/argouml/cognitive src/argouml-app/src/org/argouml/cognitive/checklist src/argouml-app/src/org/argouml/cognitive/checklist/ui src/argouml-app/src/org/argouml/cognitive/critics src/argouml-app/src/org/argouml/cognitive/critics/ui src/argouml-app/src/org/argouml/cognitive/ui src/argouml-app/src/org/argouml/configuration src/argouml-app/src/org/argouml/gefext src/argouml-app/src/org/argouml/i18n src/argouml-app/src/org/argouml/kernel src/argouml-app/src/org/argouml/language/ui src/argouml-app/src/org/argouml/moduleloader src/argouml-app/src/org/argouml/notation src/argouml-app/src/

[email protected] Sun, 30 Dec 2012 05:06:04 -0800 (PST)
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
QXV0aG9yOiBjbG9zZXR0b3BfbmlnaHRseWJ1aWxkDQpEYXRlOiAyMDEyLTEyLTMwIDA1OjA2OjAx
LTA4MDANCk5ldyBSZXZpc2lvbjogMTk5MDcNCg0KTW9kaWZpZWQ6DQogICB0cnVuay9wb20ueG1s
DQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvTUVUQS1JTkYvTUFOSUZFU1QuTUYNCiAgIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9idWlsZC54bWwNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9wb20u
eG1sDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2FwcGxpY2F0aW9u
L01haW4uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBs
aWNhdGlvbi9TdGFydENyaXRpY3MuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9hcGkvQWJzdHJhY3RBcmdvSlBhbmVsLmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBwbGljYXRpb24vYXBpL0FyZ28u
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlv
bi9ldmVudHMvQXJnb0V2ZW50UHVtcC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL2FwcGxpY2F0aW9uL2hlbHBlcnMvUmVzb3VyY2VMb2FkZXJXcmFwcGVyLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL0Fn
ZW5jeS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25p
dGl2ZS9Dcml0aWMuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvRGVzaWduZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9jb2duaXRpdmUvUmVzb2x2ZWRDcml0aWMuamF2YQ0KICAgdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvVG9Eb0l0ZW0uamF2YQ0KICAgdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvVG9Eb0xpc3QuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvY2hl
Y2tsaXN0L0NoZWNrTWFuYWdlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL2NvZ25pdGl2ZS9jaGVja2xpc3QvdWkvVGFiQ2hlY2tsaXN0LmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL2NyaXRpY3MvU25v
b3plT3JkZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9j
b2duaXRpdmUvY3JpdGljcy91aS9Dcml0aWNCcm93c2VyRGlhbG9nLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL2NyaXRpY3MvdWkvVGFibGVN
b2RlbENyaXRpY3MuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvdWkvRGlzbWlzc1RvRG9JdGVtRGlhbG9nLmphdmENCiAgIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeURlY2lzaW9uLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3Vp
L1RvRG9CeUdvYWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvdWkvVG9Eb0J5T2ZmZW5kZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb0J5UG9zdGVyLmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeVBy
aW9yaXR5LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29n
bml0aXZlL3VpL1RvRG9CeVR5cGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb1BhbmUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb1BlcnNwZWN0aXZlLmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1dp
ekRlc2NyaXB0aW9uLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvY29uZmlndXJhdGlvbi9Db25maWd1cmF0aW9uRmFjdG9yeS5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbkhh
bmRsZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb25m
aWd1cmF0aW9uL0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzLmphdmENCiAgIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvZ2VmZXh0L0RlZmVycmVkQnVmZmVyZWRJbWFnZS5qYXZh
DQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2kxOG4vVHJhbnNsYXRv
ci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2tlcm5lbC9E
ZWZhdWx0VW5kb01hbmFnZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9rZXJuZWwvTWVtYmVyTGlzdC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL2tlcm5lbC9Qcm9maWxlQ29uZmlndXJhdGlvbi5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2tlcm5lbC9Qcm9qZWN0LmphdmENCiAg
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL1Byb2plY3RJbXBs
LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL1By
b2plY3RNYW5hZ2VyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvbGFuZ3VhZ2UvdWkvTGFuZ3VhZ2VDb21ib0JveC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL21vZHVsZWxvYWRlci9Nb2R1bGVMb2FkZXIyLmphdmENCiAg
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vTm90YXRpb24u
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9O
b3RhdGlvbk5hbWVJbXBsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvbm90YXRpb24vTm90YXRpb25Qcm92aWRlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL05vdGF0aW9uUHJvdmlkZXJGYWN0b3J5Mi5q
YXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL3By
b3ZpZGVycy9qYXZhL09wZXJhdGlvbk5vdGF0aW9uSmF2YS5qYXZhDQogICB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL3Byb3ZpZGVycy91bWwvQWJzdHJhY3RN
ZXNzYWdlTm90YXRpb25VbWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9ub3RhdGlvbi9wcm92aWRlcnMvdW1sL0F0dHJpYnV0ZU5vdGF0aW9uVW1sLmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vcHJvdmlk
ZXJzL3VtbC9NZXNzYWdlTm90YXRpb25VbWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi91aS9Ob3RhdGlvbkNvbWJvQm94LmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvb2NsL0FyZ29GYWNhZGUuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9BYnN0
cmFjdEZpbGVQZXJzaXN0ZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9wZXJzaXN0ZW5jZS9BcmdvUGFyc2VyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvRGlhZ3JhbU1lbWJlckZpbGVQZXJzaXN0
ZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0
ZW5jZS9Nb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9PbGRaYXJnb0ZpbGVQZXJzaXN0ZXIuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Q
R01MU3RhY2tQYXJzZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC9wZXJzaXN0ZW5jZS9Qcml2YXRlSGFuZGxlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL1Byb2ZpbGVDb25maWd1cmF0aW9uRmls
ZVBlcnNpc3Rlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L3BlcnNpc3RlbmNlL1NBWFBhcnNlckJhc2UuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Ub2RvUGFyc2VyLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvVW1sRmlsZVBlcnNpc3Rl
ci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3Rl
bmNlL1hNTFRva2VuVGFibGVCYXNlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvWG1pRmlsZVBlcnNpc3Rlci5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL1htbElucHV0U3RyZWFt
LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVu
Y2UvWmFyZ29GaWxlUGVyc2lzdGVyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvWmlwRmlsZVBlcnNpc3Rlci5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvRmlsZU1vZGVsTG9hZGVyLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9Qcm9m
aWxlRmFjYWRlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
cHJvZmlsZS9SZWFkZXJNb2RlbExvYWRlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvUmVzb3VyY2VNb2RlbExvYWRlci5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvU3RyZWFtTW9kZWxMb2Fk
ZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxl
L1VzZXJEZWZpbmVkUHJvZmlsZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL3Byb2ZpbGUvWmlwTW9kZWxMb2FkZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2luaXQvUHJvZmlsZUxvYWRlci5qYXZhDQog
ICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwv
RGVwZW5kZW5jeVJlc29sdmVyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9Qcm9maWxlTWFuYWdlckltcGwuamF2YQ0KICAgdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFsL1Byb2Zp
bGVNZXRhLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJv
ZmlsZS9pbnRlcm5hbC9Qcm9maWxlVU1MLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9vY2wvQ29tcHV0ZURlc2lnbk1hdGVyaWFs
cy5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUv
aW50ZXJuYWwvb2NsL0RlZmF1bHRPY2xFdmFsdWF0b3IuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFsL29jbC9FdmFsdWF0ZUV4cHJl
c3Npb24uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9m
aWxlL2ludGVybmFsL29jbC91bWwxNC9Nb2RlbEFjY2Vzc01vZGVsSW50ZXJwcmV0ZXIuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9BY3Rpb25DcmVhdGVF
ZGdlTW9kZWxFbGVtZW50LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvdWkvRGV0YWlsc1BhbmUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC91aS9EaXNwbGF5VGV4dFRyZWUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC91aS9IZWxwQm94LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvTG9hZFN3aW5nV29ya2VyLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvTG9va0FuZEZlZWxNZ3IuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9NdWx0aUVkaXRvclBhbmUu
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9Qcm9qZWN0
QnJvd3Nlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Vp
L1N0eWxlUGFuZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC91aS9TdHlsZVBhbmVsRmlnLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvdWkvU3dpbmdXb3JrZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Ny
Yy9vcmcvYXJnb3VtbC91aS9UYWJSZXN1bHRzLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdWkvVGFiVGV4dC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VpL1RyZWVNb2RlbENvbXBvc2l0ZS5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1pvb21TbGlkZXJCdXR0b24uamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9jbWQvQWN0aW9uR290
b0RpYWdyYW0uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91
aS9jbWQvQ21kU2V0UHJlZmVycmVkU2l6ZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VpL2NtZC9HZW5lcmljQXJnb01lbnVCYXIuamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9jbWQvTGFzdFJlY2VudGx5VXNlZE1l
bnVMaXN0LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkv
Y21kL1Nob3J0Y3V0TWdyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvdWkvZXhwbG9yZXIvQWN0aW9uRGVwbG95UHJvZmlsZS5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL0FjdGlvbkV4cG9ydFByb2Zp
bGVYTUkuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9l
eHBsb3Jlci9EbkRFeHBsb3JlclRyZWUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Ny
Yy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9FeHBsb3JlckV2ZW50QWRhcHRvci5qYXZhDQogICB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL0V4cGxvcmVy
UGVyc3BlY3RpdmUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC91aS9leHBsb3Jlci9FeHBsb3JlclBvcHVwLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvRXhwbG9yZXJUcmVlTW9kZWwuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9OYW1lT3Jk
ZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBs
b3Jlci9QZXJzcGVjdGl2ZUNvbmZpZ3VyYXRvci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL1BlcnNwZWN0aXZlTWFuYWdlci5qYXZhDQog
ICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL3J1bGVz
L0dvU3RhdGVNYWNoaW5lVG9TdGF0ZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL3VpL3RhcmdldG1hbmFnZXIvVGFyZ2V0TWFuYWdlci5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9jb2duaXRpdmUvY2hlY2tsaXN0
L1VNTENoZWNrSXRlbS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL3VtbC9jb2duaXRpdmUvY3JpdGljcy9DaGlsZEdlblVNTC5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9jb2duaXRpdmUvY3JpdGljcy9DckNpcmN1
bGFyQ29tcG9zaXRpb24uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91bWwvY29nbml0aXZlL2NyaXRpY3MvQ3JDaXJjdWxhckluaGVyaXRhbmNlLmphdmENCiAg
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2NvZ25pdGl2ZS9jcml0
aWNzL0NyRW1wdHlQYWNrYWdlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvdW1sL2NvZ25pdGl2ZS9jcml0aWNzL0NyTXVsdGlwbGVEZWVwSGlzdG9yeVN0YXRl
cy5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9jb2du
aXRpdmUvY3JpdGljcy9Dck11bHRpcGxlSW5pdGlhbFN0YXRlcy5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9jb2duaXRpdmUvY3JpdGljcy9Dck11bHRp
cGxlU2hhbGxvd0hpc3RvcnlTdGF0ZXMuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Ny
Yy9vcmcvYXJnb3VtbC91bWwvY29nbml0aXZlL2NyaXRpY3MvQ3JVTUwuamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvY29nbml0aXZlL2NyaXRpY3MvVU1M
V2l6YXJkLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1s
L2NvZ25pdGl2ZS9jcml0aWNzL1dpekFzc29jQ29tcG9zaXRlLmphdmENCiAgIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2NvZ25pdGl2ZS9jcml0aWNzL1dpekJyZWFr
Q2lyY3VsYXJDb21wLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdW1sL2NvZ25pdGl2ZS9jcml0aWNzL1dpek1FTmFtZS5qYXZhDQogICB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9jb2duaXRpdmUvY3JpdGljcy9XaXpNYW55TmFt
ZXMuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvY29n
bml0aXZlL2NyaXRpY3MvV2l6TmF2aWdhYmxlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdW1sL2NvZ25pdGl2ZS9jcml0aWNzL1dpek9wZXJOYW1lLmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vQXJn
b0RpYWdyYW1JbXBsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdW1sL2RpYWdyYW0vRGlhZ3JhbUFwcGVhcmFuY2UuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9EaWFncmFtVW5kb01hbmFnZXIuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9E
aWFncmFtVXRpbHMuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC91bWwvZGlhZ3JhbS9Qcm9qZWN0TWVtYmVyRGlhZ3JhbS5qYXZhDQogICB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL1VNTE11dGFibGVHcmFwaFN1cHBv
cnQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlh
Z3JhbS9hY3Rpdml0eS91aS9VTUxBY3Rpdml0eURpYWdyYW0uamF2YQ0KICAgdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9jb2xsYWJvcmF0aW9uL0NvbGxh
YkRpYWdyYW1HcmFwaE1vZGVsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvdW1sL2RpYWdyYW0vY29sbGFib3JhdGlvbi91aS9Db2xsYWJEaWFncmFtUmVuZGVy
ZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlh
Z3JhbS9jb2xsYWJvcmF0aW9uL3VpL1VNTENvbGxhYm9yYXRpb25EaWFncmFtLmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vZGVwbG95bWVu
dC9EZXBsb3ltZW50RGlhZ3JhbUdyYXBoTW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9kZXBsb3ltZW50L3VpL0RlcGxveW1lbnRE
aWFncmFtUmVuZGVyZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91bWwvZGlhZ3JhbS9kZXBsb3ltZW50L3VpL1VNTERlcGxveW1lbnREaWFncmFtLmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vbGF5
b3V0L0xheW91dEhlbHBlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3VtbC9kaWFncmFtL2xheW91dC9MYXlvdXRlZENvbnRhaW5lci5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL2xheW91dC9MYXlv
dXRlZE5vZGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91
bWwvZGlhZ3JhbS9sYXlvdXQvTGF5b3V0ZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9zdGF0ZS9TdGF0ZURpYWdyYW1HcmFwaE1vZGVs
LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdy
YW0vc3RhdGUvdWkvQnV0dG9uQWN0aW9uTmV3RWZmZWN0LmphdmENCiAgIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vc3RhdGUvdWkvQnV0dG9uQWN0aW9u
TmV3RXZlbnQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91
bWwvZGlhZ3JhbS9zdGF0ZS91aS9GaWdTdHViU3RhdGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9zdGF0ZS91aS9GaWdWZXJ0ZXguamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9z
dGF0ZS91aS9TdGF0ZURpYWdyYW1SZW5kZXJlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3N0YXRlL3VpL1VNTFN0YXRlRGlhZ3JhbS5q
YXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFt
L3N0YXRpY19zdHJ1Y3R1cmUvQ2xhc3NEaWFncmFtR3JhcGhNb2RlbC5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3N0YXRpY19zdHJ1Y3R1
cmUvbGF5b3V0L0NsYXNzZGlhZ3JhbUluaGVyaXRhbmNlRWRnZS5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3N0YXRpY19zdHJ1Y3R1cmUv
bGF5b3V0L0NsYXNzZGlhZ3JhbUxheW91dGVyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vc3RhdGljX3N0cnVjdHVyZS9sYXlvdXQvQ2xh
c3NkaWFncmFtTW9kZWxFbGVtZW50RmFjdG9yeS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3N0YXRpY19zdHJ1Y3R1cmUvdWkvQ2xhc3NE
aWFncmFtUmVuZGVyZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91bWwvZGlhZ3JhbS9zdGF0aWNfc3RydWN0dXJlL3VpL0ZpZ0NvbW1lbnQuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9zdGF0aWNf
c3RydWN0dXJlL3VpL0ZpZ0RhdGFUeXBlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vc3RhdGljX3N0cnVjdHVyZS91aS9GaWdFZGdlTm90
ZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFn
cmFtL3N0YXRpY19zdHJ1Y3R1cmUvdWkvRmlnSW50ZXJmYWNlLmphdmENCiAgIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vc3RhdGljX3N0cnVjdHVyZS91
aS9GaWdQYWNrYWdlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdW1sL2RpYWdyYW0vc3RhdGljX3N0cnVjdHVyZS91aS9GaWdTdGVyZW90eXBlRGVjbGFyYXRp
b24uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlh
Z3JhbS9zdGF0aWNfc3RydWN0dXJlL3VpL1NlbGVjdGlvbkNsYXNzLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vc3RhdGljX3N0cnVjdHVy
ZS91aS9TZWxlY3Rpb25Db21wYXJ0bWVudFRleHQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9zdGF0aWNfc3RydWN0dXJlL3VpL1NlbGVj
dGlvbkdlbmVyYWxpemFibGVFbGVtZW50LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vc3RhdGljX3N0cnVjdHVyZS91aS9VTUxDbGFzc0Rp
YWdyYW0uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwv
ZGlhZ3JhbS91aS9BYnN0cmFjdEFjdGlvbkNoZWNrQm94TWVudUl0ZW0uamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9BYnN0cmFjdEFj
dGlvblJhZGlvTWVudUl0ZW0uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC91bWwvZGlhZ3JhbS91aS9BY3Rpb25BZGRBbGxDbGFzc2VzRnJvbU1vZGVsLmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vdWkv
QWN0aW9uQWRkQ29uY3VycmVudFJlZ2lvbi5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL0FjdGlvbkFkZEV4aXN0aW5nRWRnZS5qYXZh
DQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3Vp
L0FjdGlvbkFkZEV4aXN0aW5nTm9kZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL0FjdGlvbkFkZEV4aXN0aW5nTm9kZXMuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9B
Y3Rpb25BZGRFeHRlbnNpb25Qb2ludC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL0FjdGlvbkFkZE1lc3NhZ2UuamF2YQ0KICAgdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9BY3Rpb25B
ZGROb3RlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1s
L2RpYWdyYW0vdWkvQWN0aW9uQWdncmVnYXRpb24uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9BY3Rpb25Db21wYXJ0bWVudERpc3Bs
YXkuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlh
Z3JhbS91aS9BY3Rpb25FZGdlc0Rpc3BsYXkuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9BY3Rpb25NdWx0aXBsaWNpdHkuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9B
Y3Rpb25TYXZlRGlhZ3JhbVRvQ2xpcGJvYXJkLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vdWkvQWN0aW9uU2V0TW9kZS5qYXZhDQogICB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL0FyZ29G
aWdHcm91cC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Vt
bC9kaWFncmFtL3VpL0RpYWdyYW1OYW1lRG9jdW1lbnQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9EbkRKR3JhcGguamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9GaWdB
c3NvY2lhdGlvbi5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L3VtbC9kaWFncmFtL3VpL0ZpZ0NvbXBhcnRtZW50LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vdWkvRmlnQ29tcGFydG1lbnRCb3guamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91
aS9GaWdFZGdlQXNzb2NpYXRpb25DbGFzcy5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL0ZpZ0VkZ2VNb2RlbEVsZW1lbnQuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9G
aWdOb2RlTW9kZWxFbGVtZW50LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvdW1sL2RpYWdyYW0vdWkvRmlnU2luZ2xlTGluZVRleHQuamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9GaWdTdGVyZW90
eXBlc0dyb3VwLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
dW1sL2RpYWdyYW0vdWkvTW9kZUFkZFRvRGlhZ3JhbS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL01vZGVDcmVhdGVBc3NvY2lhdGlv
bkNsYXNzLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1s
L2RpYWdyYW0vdWkvTW9kZUNyZWF0ZUdyYXBoRWRnZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL01vZGVMYWJlbERyYWcuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91aS9Q
YXRoSXRlbVBsYWNlbWVudC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3VtbC9kaWFncmFtL3VpL1NlbGVjdGlvbk5vZGVDbGFyaWZpZXJzMi5qYXZhDQogICB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL1NlbGVj
dGlvblJlcm91dGVFZGdlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvdW1sL2RpYWdyYW0vdWkvVGFiRGlhZ3JhbS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9kaWFncmFtL3VpL1VNTERpYWdyYW0uamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91c2VfY2Fz
ZS9Vc2VDYXNlRGlhZ3JhbUdyYXBoTW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91c2VfY2FzZS91aS9TdHlsZVBhbmVsRmlnVXNl
Q2FzZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC9k
aWFncmFtL3VzZV9jYXNlL3VpL1VNTFVzZUNhc2VEaWFncmFtLmphdmENCiAgIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vdXNlX2Nhc2UvdWkvVXNlQ2Fz
ZURpYWdyYW1SZW5kZXJlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3VtbC9nZW5lcmF0b3IvQWJzdHJhY3RTZWN0aW9uLmphdmENCiAgIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2dlbmVyYXRvci9HZW5lcmF0b3JNYW5hZ2Vy
LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL2dlbmVy
YXRvci9UZW1wRmlsZVV0aWxzLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvdW1sL2dlbmVyYXRvci91aS9DbGFzc0dlbmVyYXRpb25EaWFsb2cuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvcmV2ZW5nL0RpYWdyYW1J
bnRlcmZhY2UuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91
bWwvcmV2ZW5nL0ltcG9ydENsYXNzTG9hZGVyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdW1sL3JldmVuZy9JbXBvcnRlck1hbmFnZXIuamF2YQ0KICAgdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvQWJzdHJhY3RBY3Rpb25B
ZGRNb2RlbEVsZW1lbnQyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvdW1sL3VpL0Fic3RyYWN0QWN0aW9uTmF2aWdhdGUuamF2YQ0KICAgdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvQWN0aW9uQWRkRGlhZ3JhbS5qYXZhDQog
ICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9BY3Rpb25BZGRQ
YWNrYWdlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1s
L3VpL0FjdGlvbkNsYXNzRGlhZ3JhbS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL3VtbC91aS9BY3Rpb25EZWxldGVNb2RlbEVsZW1lbnRzLmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL0FjdGlvbkRlcGxveW1l
bnREaWFncmFtLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
dW1sL3VpL0FjdGlvbkdlbmVyYXRlQWxsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvdW1sL3VpL0FjdGlvbkdlbmVyYXRlT25lLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL0FjdGlvbkdlbmVyYXRlUHJvamVj
dENvZGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwv
dWkvQWN0aW9uSW1wb3J0RnJvbVNvdXJjZXMuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvQWN0aW9uTmV3RGlhZ3JhbS5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9BY3Rpb25TYXZlQWxsR3JhcGhp
Y3MuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkv
QWN0aW9uU2F2ZUdyYXBoaWNzLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvdW1sL3VpL0FjdGlvblNhdmVQcm9qZWN0LmphdmENCiAgIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL0FjdGlvblNhdmVQcm9qZWN0QXMuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvQWN0aW9uU2V0
U291cmNlUGF0aC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L3VtbC91aS9BY3Rpb25Vc2VDYXNlRGlhZ3JhbS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9MYWJlbGxlZExheW91dC5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9Qcm9wUGFuZWwuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvU2F2ZUdyYXBoaWNz
TWFuYWdlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Vt
bC91aS9Tb3VyY2VQYXRoVGFibGVNb2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VtbC91aS9UYWJDb25zdHJhaW50cy5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9UYWJQcm9wcy5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9UYWJTcmMuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvVGFiU3R5bGUuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvVGFiVGFn
Z2VkVmFsdWVzLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
dW1sL3VpL1RhYlRhZ2dlZFZhbHVlc01vZGVsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL1VNTENvbWJvQm94TW9kZWwyLmphdmENCiAgIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL1VNTENvbmRpdGlvbkV4cHJl
c3Npb25Nb2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L3VtbC91aS9VTUxFeHByZXNzaW9uQm9keUZpZWxkLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL1VNTE1vZGVsRWxlbWVudExpc3RNb2RlbDIuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvVU1MUGxh
aW5UZXh0RG9jdW1lbnQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91bWwvdWkvVU1MUmFkaW9CdXR0b25QYW5lbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9VTUxSZWN1cnJlbmNlRXhwcmVzc2lvbk1vZGVs
LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL1VN
TFN0ZXJlb3R5cGVMaXN0TW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC91bWwvdWkvVU1MVGltZUV4cHJlc3Npb25Nb2RlbC5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9iZWhhdmlvci9hY3Rpdml0eV9n
cmFwaHMvQWN0aW9uTmV3RW50cnlDYWxsQWN0aW9uLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL2JlaGF2aW9yL2FjdGl2aXR5X2dyYXBocy9BY3Rp
b25TZXRTeW5jaC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L3VtbC91aS9iZWhhdmlvci9jb21tb25fYmVoYXZpb3IvQWN0aW9uU2V0QWN0aW9uQXN5bmNocm9u
b3VzLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3Vp
L2JlaGF2aW9yL3N0YXRlX21hY2hpbmVzL0J1dHRvbkFjdGlvbk5ld0d1YXJkLmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL2JlaGF2aW9yL3N0YXRl
X21hY2hpbmVzL1VNTENoYW5nZUV4cHJlc3Npb25Nb2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9iZWhhdmlvci9zdGF0ZV9tYWNoaW5lcy9V
TUxTeW5jaFN0YXRlQm91bmREb2N1bWVudC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VtbC91aS9mb3VuZGF0aW9uL2NvcmUvQWN0aW9uQWRkQXR0cmlidXRl
LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL2Zv
dW5kYXRpb24vY29yZS9BY3Rpb25BZGRFbnVtZXJhdGlvbkxpdGVyYWwuamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvZm91bmRhdGlvbi9jb3JlL0Fj
dGlvbkFkZE9wZXJhdGlvbi5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3VtbC91aS9mb3VuZGF0aW9uL2NvcmUvQWN0aW9uU2V0QXNzb2NpYXRpb25FbmROYXZp
Z2FibGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwv
dWkvZm91bmRhdGlvbi9jb3JlL0FjdGlvblNldEFzc29jaWF0aW9uRW5kT3JkZXJpbmcuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvZm91bmRhdGlv
bi9jb3JlL0FjdGlvblNldEFzc29jaWF0aW9uRW5kVGFyZ2V0U2NvcGUuamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvZm91bmRhdGlvbi9jb3JlL0Fj
dGlvblNldEJlaGF2aW9yYWxGZWF0dXJlUXVlcnkuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvZm91bmRhdGlvbi9jb3JlL0FjdGlvblNldENoYW5n
ZWFiaWxpdHkuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91
bWwvdWkvZm91bmRhdGlvbi9jb3JlL0FjdGlvblNldENsYXNzQWN0aXZlLmphdmENCiAgIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdW1sL3VpL2ZvdW5kYXRpb24vY29yZS9B
Y3Rpb25TZXRFbGVtZW50T3duZXJzaGlwU3BlY2lmaWNhdGlvbi5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9mb3VuZGF0aW9uL2NvcmUvQWN0aW9u
U2V0R2VuZXJhbGl6YWJsZUVsZW1lbnRBYnN0cmFjdC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9mb3VuZGF0aW9uL2NvcmUvQWN0aW9uU2V0R2Vu
ZXJhbGl6YWJsZUVsZW1lbnRMZWFmLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvdW1sL3VpL2ZvdW5kYXRpb24vY29yZS9BY3Rpb25TZXRHZW5lcmFsaXphYmxl
RWxlbWVudFJvb3QuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC91bWwvdWkvZm91bmRhdGlvbi9jb3JlL0FjdGlvblNldE1vZGVsRWxlbWVudFZpc2liaWxpdHku
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91bWwvdWkvZm91
bmRhdGlvbi9jb3JlL0FjdGlvblNldE9wZXJhdGlvbkNvbmN1cnJlbmN5S2luZC5qYXZhDQogICB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9mb3VuZGF0aW9uL2Nv
cmUvQWN0aW9uU2V0UGFyYW1ldGVyRGlyZWN0aW9uS2luZC5qYXZhDQogICB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9mb3VuZGF0aW9uL2NvcmUvQWN0aW9uU2V0
U3RydWN0dXJhbEZlYXR1cmVUYXJnZXRTY29wZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VtbC91aS9mb3VuZGF0aW9uL2V4dGVuc2lvbl9tZWNoYW5pc21z
L0FjdGlvbk5ld1N0ZXJlb3R5cGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC91bWwvdWkvZm91bmRhdGlvbi9leHRlbnNpb25fbWVjaGFuaXNtcy9BY3Rpb25O
ZXdUYWdEZWZpbml0aW9uLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvdW1sL3VpL2ZvdW5kYXRpb24vZXh0ZW5zaW9uX21lY2hhbmlzbXMvVU1MVGFnRGVmaW5p
dGlvbkNvbWJvQm94TW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC91bWwvdXRpbC9uYW1lc3BhY2UvU3RyaW5nTmFtZXNwYWNlLmphdmENCiAgIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdXRpbC9BcmdvRnJhbWUuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91dGlsL0l0ZW1VSUQuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91dGlsL1Rvb2xCYXJVdGls
aXR5LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdXRpbC9U
b29scy5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3V0aWwv
bG9nZ2luZy9Bd3RFeGNlcHRpb25IYW5kbGVyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdXRpbC9vc2RlcC9PU1hBZGFwdGVyLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdXRpbC9vc2RlcC9TdGFydEJyb3dzZXIuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Rlc3RzL29yZy9hcmdvdW1sL2tlcm5lbC9UZXN0
UHJvamVjdE1hbmFnZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Rlc3RzL29yZy9h
cmdvdW1sL21vZGVsL1Rlc3RBR0hlbHBlcldpdGhNb2NrLmphdmENCiAgIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC9tb2RlbC9UZXN0QWN0aXZpdHlHcmFwaFN0YXRlTWFj
aGluZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMvb3JnL2FyZ291bWwvcHJv
ZmlsZS9Qcm9maWxlTW90aGVyLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0cy9v
cmcvYXJnb3VtbC9wcm9maWxlL1Rlc3RQcm9maWxlTWFuYWdlci5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvdGVzdHMvb3JnL2FyZ291bWwvcHJvZmlsZS9UZXN0UHJvZmlsZU1vdGhlci5q
YXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMvb3JnL2FyZ291bWwvcHJvZmlsZS9U
ZXN0UmVhZGVyTW9kZWxMb2FkZXIuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Rlc3Rz
L29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvVGVzdEZvcm1hdGluZ1N0cmF0ZWd5VU1MLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC91aS9jbWQvR1VJ
VGVzdEFjdGlvbkdvdG9EaWFncmFtLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0
cy9vcmcvYXJnb3VtbC91bWwvVGVzdFVVSURNYW5hZ2VyLmphdmENCiAgIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC91bWwvY29nbml0aXZlL2NyaXRpY3MvVGVzdENyVW5j
b252ZW50aW9uYWxBdHRyTmFtZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMv
b3JnL2FyZ291bWwvdW1sL2NvZ25pdGl2ZS9jcml0aWNzL1Rlc3RDclVuY29udmVudGlvbmFsQ2xh
c3NOYW1lLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC91
bWwvY29nbml0aXZlL2NyaXRpY3MvVGVzdENyVW5jb252ZW50aW9uYWxQYWNrTmFtZS5qYXZhDQog
ICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vVGVz
dERpYWdyYW1GYWN0b3J5LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0cy9vcmcv
YXJnb3VtbC91bWwvZGlhZ3JhbS9UZXN0RGlhZ3JhbVNldHRpbmdzLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9hY3Rpdml0eS91aS9U
ZXN0VU1MQWN0aXZpdHlEaWFncmFtLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0
cy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS9jb2xsYWJvcmF0aW9uL3VpL1Rlc3RVTUxDb2xsYWJv
cmF0aW9uRGlhZ3JhbS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMvb3JnL2Fy
Z291bWwvdW1sL2RpYWdyYW0vc3RhdGUvdWkvVGVzdFVNTFN0YXRlRGlhZ3JhbS5qYXZhDQogICB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMvb3JnL2FyZ291bWwvdW1sL2RpYWdyYW0vdXNlX2Nh
c2UvdWkvVGVzdEZpZ0Nsb25hYmxlLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0
cy9vcmcvYXJnb3VtbC91bWwvZGlhZ3JhbS91c2VfY2FzZS91aS9UZXN0VU1MVXNlQ2FzZURpYWdy
YW0uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Rlc3RzL29yZy9hcmdvdW1sL3VtbC91
aS9HVUlUZXN0QWN0aW9uT3BlblByb2plY3QuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3Rlc3RzL29yZy9hcmdvdW1sL3VtbC91aS9HVUlUZXN0QWN0aW9uU2F2ZUdyYXBoaWNzLmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC91bWwvdWkvVGVzdEFj
dGlvbkFjdGl2aXR5R3JhcGhEaWFncmFtLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90
ZXN0cy9vcmcvYXJnb3VtbC91bWwvdWkvVGVzdEFjdGlvbkNvbGxhYm9yYXRpb25EaWFncmFtLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC91bWwvdWkvVGVz
dEFjdGlvblN0YXRlRGlhZ3JhbS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMv
b3JnL2FyZ291bWwvdW1sL3VpL1Rlc3RTb3VyY2VQYXRoQ29udHJvbGxlci5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvdGVzdHMvb3JnL2FyZ291bWwvdW1sL3VpL2JlaGF2aW9yL2NvbW1v
bl9iZWhhdmlvci9UZXN0QWN0aW9uTmV3UmVjZXB0aW9uLmphdmENCiAgIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC90ZXN0cy9vcmcvYXJnb3VtbC91bWwvdXRpbC9uYW1lc3BhY2UvVGVzdFN0cmluZ05h
bWVzcGFjZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1idWlsZC9idWlsZC54bWwNCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtYWN0aXZpdHkyL01FVEEtSU5GL01BTklGRVNU
Lk1GDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdyYW1zLWFjdGl2aXR5Mi9idWlsZC54
bWwNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtYWN0aXZpdHkyL3BvbS54bWwN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtYWN0aXZpdHkyL3NyYy9vcmcvYXJn
b3VtbC9hY3Rpdml0eTIvQWN0aXZpdHlEaWFncmFtTW9kdWxlLmphdmENCiAgIHRydW5rL3NyYy9h
cmdvdW1sLWNvcmUtZGlhZ3JhbXMtYWN0aXZpdHkyL3NyYy9vcmcvYXJnb3VtbC9hY3Rpdml0eTIv
ZGlhZ3JhbS9BY3Rpdml0eURpYWdyYW1GYWN0b3J5LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWNvcmUtZGlhZ3JhbXMtYWN0aXZpdHkyL3NyYy9vcmcvYXJnb3VtbC9hY3Rpdml0eTIvZGlhZ3Jh
bS9BY3Rpdml0eURpYWdyYW1HcmFwaE1vZGVsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNv
cmUtZGlhZ3JhbXMtYWN0aXZpdHkyL3NyYy9vcmcvYXJnb3VtbC9hY3Rpdml0eTIvZGlhZ3JhbS9B
Y3Rpdml0eURpYWdyYW1SZW5kZXJlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRp
YWdyYW1zLWFjdGl2aXR5Mi9zcmMvb3JnL2FyZ291bWwvYWN0aXZpdHkyL2RpYWdyYW0vQmFzZURp
YWdyYW0uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1hY3Rpdml0eTIv
c3JjL29yZy9hcmdvdW1sL2FjdGl2aXR5Mi9kaWFncmFtL0ZpZ0Jhc2VQcmVzZW50YXRpb24uamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1hY3Rpdml0eTIvc3JjL29yZy9h
cmdvdW1sL2FjdGl2aXR5Mi9kaWFncmFtL0ZpZ0NvbXBvc2l0ZS5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1jb3JlLWRpYWdyYW1zLWFjdGl2aXR5Mi9zcmMvb3JnL2FyZ291bWwvYWN0aXZpdHky
L2RpYWdyYW0vRmlnTmFtZWRQZW50YWdvbi5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3Jl
LWRpYWdyYW1zLWFjdGl2aXR5Mi9zcmMvb3JnL2FyZ291bWwvYWN0aXZpdHkyL2RpYWdyYW0vRmln
TmFtZWRSUmVjdC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdyYW1zLWFjdGl2
aXR5Mi9zcmMvb3JnL2FyZ291bWwvYWN0aXZpdHkyL2RpYWdyYW0vRmlnTm90YXRpb24uamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1hY3Rpdml0eTIvc3JjL29yZy9hcmdv
dW1sL2FjdGl2aXR5Mi9kaWFncmFtL01vZGVQbGFjZURpYWdyYW1FbGVtZW50LmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtY2xhc3MyL01FVEEtSU5GL01BTklGRVNULk1G
DQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdyYW1zLWNsYXNzMi9idWlsZC54bWwNCiAg
IHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtY2xhc3MyL3BvbS54bWwNCiAgIHRydW5r
L3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtZGVwbG95bWVudDIvTUVUQS1JTkYvTUFOSUZFU1Qu
TUYNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtZGVwbG95bWVudDIvYnVpbGQu
eG1sDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdyYW1zLWRlcGxveW1lbnQyL3BvbS54
bWwNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtZGVwbG95bWVudDIvc3JjL29y
Zy9hcmdvdW1sL2RlcGxveW1lbnQyL0RlcGxveW1lbnREaWFncmFtTW9kdWxlLmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtZGVwbG95bWVudDIvc3JjL29yZy9hcmdvdW1s
L2RlcGxveW1lbnQyL2RpYWdyYW0vVU1MRGVwbG95bWVudERpYWdyYW0uamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zZXF1ZW5jZTIvTUVUQS1JTkYvTUFOSUZFU1QuTUYN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtc2VxdWVuY2UyL2J1aWxkLnhtbA0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zZXF1ZW5jZTIvcG9tLnhtbA0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zZXF1ZW5jZTIvc3JjL29yZy9hcmdvdW1s
L3NlcXVlbmNlMi9TZXF1ZW5jZURpYWdyYW1Nb2R1bGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291
bWwtY29yZS1kaWFncmFtcy1zZXF1ZW5jZTIvc3JjL29yZy9hcmdvdW1sL3NlcXVlbmNlMi9kaWFn
cmFtL0ZpZ0FjdGl2YXRpb24uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFt
cy1zZXF1ZW5jZTIvc3JjL29yZy9hcmdvdW1sL3NlcXVlbmNlMi9kaWFncmFtL0ZpZ01lc3NhZ2Uu
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zZXF1ZW5jZTIvc3JjL29y
Zy9hcmdvdW1sL3NlcXVlbmNlMi9kaWFncmFtL01vZGVDcmVhdGVNZXNzYWdlLmphdmENCiAgIHRy
dW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtc2VxdWVuY2UyL3NyYy9vcmcvYXJnb3VtbC9z
ZXF1ZW5jZTIvZGlhZ3JhbS9TZWxlY3Rpb25NZXNzYWdlLmphdmENCiAgIHRydW5rL3NyYy9hcmdv
dW1sLWNvcmUtZGlhZ3JhbXMtc2VxdWVuY2UyL3NyYy9vcmcvYXJnb3VtbC9zZXF1ZW5jZTIvZGlh
Z3JhbS9TZXF1ZW5jZURpYWdyYW1GYWN0b3J5LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNv
cmUtZGlhZ3JhbXMtc2VxdWVuY2UyL3NyYy9vcmcvYXJnb3VtbC9zZXF1ZW5jZTIvZGlhZ3JhbS9T
ZXF1ZW5jZURpYWdyYW1HcmFwaE1vZGVsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUt
ZGlhZ3JhbXMtc2VxdWVuY2UyL3NyYy9vcmcvYXJnb3VtbC9zZXF1ZW5jZTIvZGlhZ3JhbS9TZXF1
ZW5jZURpYWdyYW1SZW5kZXJlci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdy
YW1zLXNlcXVlbmNlMi9zcmMvb3JnL2FyZ291bWwvc2VxdWVuY2UyL2RpYWdyYW0vVU1MU2VxdWVu
Y2VEaWFncmFtLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtc2VxdWVu
Y2UyL3Rlc3RzL29yZy9hcmdvdW1sL3NlcXVlbmNlMi9kaWFncmFtL1Rlc3RGaWdNZXNzYWdlU3Bs
aW5lLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtc2VxdWVuY2UyL3Rl
c3RzL29yZy9hcmdvdW1sL3NlcXVlbmNlMi9kaWFncmFtL1Rlc3RVTUxTZXF1ZW5jZURpYWdyYW0u
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zdGF0ZTIvTUVUQS1JTkYv
TUFOSUZFU1QuTUYNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3JhbXMtc3RhdGUyL2J1
aWxkLnhtbA0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zdGF0ZTIvcG9tLnht
bA0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zdGF0ZTIvc3JjL29yZy9hcmdv
dW1sL3N0YXRlMi9TdGF0ZURpYWdyYW1Nb2R1bGUuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
Y29yZS1kaWFncmFtcy1zdGF0ZTIvc3JjL29yZy9hcmdvdW1sL3N0YXRlMi9kaWFncmFtL0ZpZ0Vu
dHJ5UG9pbnQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zdGF0ZTIv
c3JjL29yZy9hcmdvdW1sL3N0YXRlMi9kaWFncmFtL0ZpZ0V4aXRQb2ludC5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdyYW1zLXN0YXRlMi9zcmMvb3JnL2FyZ291bWwvc3RhdGUy
L2RpYWdyYW0vRmlnVmVydGV4LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtZGlhZ3Jh
bXMtc3RhdGUyL3NyYy9vcmcvYXJnb3VtbC9zdGF0ZTIvZGlhZ3JhbS9VTUxTdGF0ZURpYWdyYW0u
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1kaWFncmFtcy1zdHJ1Y3R1cmUyL01FVEEt
SU5GL01BTklGRVNULk1GDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdyYW1zLXN0cnVj
dHVyZTIvYnVpbGQueG1sDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLWRpYWdyYW1zLXN0cnVj
dHVyZTIvcG9tLnhtbA0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1ldW1sL01FVEEt
SU5GL01BTklGRVNULk1GDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLWV1bWwvYnVp
bGQueG1sDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLWV1bWwvcG9tLnhtbA0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1ldW1sL3NyYy9vcmcvYXJnb3VtbC9tb2RlbC9l
dW1sL0NvbmN1cnJlbmN5S2luZEVVTUxJbXBsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNv
cmUtbW9kZWwtZXVtbC9zcmMvb3JnL2FyZ291bWwvbW9kZWwvZXVtbC9Db3JlSGVscGVyRVVNTElt
cGwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1ldW1sL3NyYy9vcmcvYXJn
b3VtbC9tb2RlbC9ldW1sL0VVTUxNb2RlbEltcGxlbWVudGF0aW9uLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWNvcmUtbW9kZWwtZXVtbC9zcmMvb3JnL2FyZ291bWwvbW9kZWwvZXVtbC9GYWNh
ZGVFVU1MSW1wbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLWV1bWwvc3Jj
L29yZy9hcmdvdW1sL21vZGVsL2V1bWwvTW9kZWxFdmVudFB1bXBFVU1MSW1wbC5qYXZhDQogICB0
cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLWV1bWwvc3JjL29yZy9hcmdvdW1sL21vZGVsL2V1
bWwvU3RhdGVNYWNoaW5lc0hlbHBlckVVTUxJbXBsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWNvcmUtbW9kZWwtZXVtbC9zcmMvb3JnL2FyZ291bWwvbW9kZWwvZXVtbC9VbWxGYWN0b3J5RVVN
TEltcGwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1ldW1sL3NyYy9vcmcv
YXJnb3VtbC9tb2RlbC9ldW1sL1htaVJlYWRlckVVTUxJbXBsLmphdmENCiAgIHRydW5rL3NyYy9h
cmdvdW1sLWNvcmUtbW9kZWwtbWRyL01FVEEtSU5GL01BTklGRVNULk1GDQogICB0cnVuay9zcmMv
YXJnb3VtbC1jb3JlLW1vZGVsLW1kci9idWlsZC54bWwNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNv
cmUtbW9kZWwtbWRyL3BvbS54bWwNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtbW9kZWwtbWRy
L3NyYy9vcmcvYXJnb3VtbC9tb2RlbC9tZHIvQ29sbGFib3JhdGlvbnNIZWxwZXJNRFJJbXBsLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtbW9kZWwtbWRyL3NyYy9vcmcvYXJnb3VtbC9t
b2RlbC9tZHIvQ29yZUZhY3RvcnlNRFJJbXBsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNv
cmUtbW9kZWwtbWRyL3NyYy9vcmcvYXJnb3VtbC9tb2RlbC9tZHIvQ29yZUhlbHBlck1EUkltcGwu
amF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1tZHIvc3JjL29yZy9hcmdvdW1s
L21vZGVsL21kci9EYXRhVHlwZXNGYWN0b3J5TURSSW1wbC5qYXZhDQogICB0cnVuay9zcmMvYXJn
b3VtbC1jb3JlLW1vZGVsLW1kci9zcmMvb3JnL2FyZ291bWwvbW9kZWwvbWRyL0V4dGVuc2lvbk1l
Y2hhbmlzbXNIZWxwZXJNRFJJbXBsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtbW9k
ZWwtbWRyL3NyYy9vcmcvYXJnb3VtbC9tb2RlbC9tZHIvRmFjYWRlTURSSW1wbC5qYXZhDQogICB0
cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLW1kci9zcmMvb3JnL2FyZ291bWwvbW9kZWwvbWRy
L01EUk1vZGVsSW1wbGVtZW50YXRpb24uamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1t
b2RlbC1tZHIvc3JjL29yZy9hcmdvdW1sL21vZGVsL21kci9NZXNzYWdlU29ydE1EUkltcGwuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1tZHIvc3JjL29yZy9hcmdvdW1sL21v
ZGVsL21kci9Nb2RlbEV2ZW50UHVtcE1EUkltcGwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwt
Y29yZS1tb2RlbC1tZHIvc3JjL29yZy9hcmdvdW1sL21vZGVsL21kci9Nb2RlbE1hbmFnZW1lbnRG
YWN0b3J5TURSSW1wbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLW1kci9z
cmMvb3JnL2FyZ291bWwvbW9kZWwvbWRyL01vZGVsTWFuYWdlbWVudEhlbHBlck1EUkltcGwuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1tZHIvc3JjL29yZy9hcmdvdW1sL21v
ZGVsL21kci9TdGF0ZU1hY2hpbmVzRmFjdG9yeU1EUkltcGwuamF2YQ0KICAgdHJ1bmsvc3JjL2Fy
Z291bWwtY29yZS1tb2RlbC1tZHIvc3JjL29yZy9hcmdvdW1sL21vZGVsL21kci9VbWxGYWN0b3J5
TURSSW1wbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLW1kci9zcmMvb3Jn
L2FyZ291bWwvbW9kZWwvbWRyL1htaUhlYWRlclByb3ZpZGVySW1wbC5qYXZhDQogICB0cnVuay9z
cmMvYXJnb3VtbC1jb3JlLW1vZGVsLW1kci9zcmMvb3JnL2FyZ291bWwvbW9kZWwvbWRyL1htaVJl
YWRlckltcGwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1tZHIvc3JjL29y
Zy9hcmdvdW1sL21vZGVsL21kci9YbWlSZWZlcmVuY2VSZXNvbHZlckltcGwuamF2YQ0KICAgdHJ1
bmsvc3JjL2FyZ291bWwtY29yZS1tb2RlbC1tZHIvc3JjL29yZy9hcmdvdW1sL21vZGVsL21kci9Y
bWlXcml0ZXJNRFJJbXBsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtbW9kZWwtbWRy
L3Rlc3RzL29yZy9hcmdvdW1sL21vZGVsL21kci9BYnN0cmFjdE1EUk1vZGVsSW1wbGVtZW50YXRp
b25UZXN0Q2FzZS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLW1vZGVsLW1kci90ZXN0
cy9vcmcvYXJnb3VtbC9tb2RlbC9tZHIvVGVzdFJlYWRDb21wcmVzc2VkRmlsZXNBbmRIcmVmLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtbW9kZWwvYnVpbGQueG1sDQogICB0cnVuay9z
cmMvYXJnb3VtbC1jb3JlLW1vZGVsL3BvbS54bWwNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUt
bW9kZWwvc3JjL29yZy9hcmdvdW1sL21vZGVsL1VtbENoYW5nZUV2ZW50LmphdmENCiAgIHRydW5r
L3NyYy9hcmdvdW1sLWNvcmUtbm90YXRpb24vTUVUQS1JTkYvTUFOSUZFU1QuTUYNCiAgIHRydW5r
L3NyYy9hcmdvdW1sLWNvcmUtbm90YXRpb24vYnVpbGQueG1sDQogICB0cnVuay9zcmMvYXJnb3Vt
bC1jb3JlLW5vdGF0aW9uL3BvbS54bWwNCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtbm90YXRp
b24vc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uMi9Ob3RhdGlvbk1vZHVsZS5qYXZhDQogICB0cnVu
ay9zcmMvYXJnb3VtbC1jb3JlLXRyYW5zZm9ybWVyL01FVEEtSU5GL01BTklGRVNULk1GDQogICB0
cnVuay9zcmMvYXJnb3VtbC1jb3JlLXRyYW5zZm9ybWVyL2J1aWxkLnhtbA0KICAgdHJ1bmsvc3Jj
L2FyZ291bWwtY29yZS10cmFuc2Zvcm1lci9zcmMvb3JnL2FyZ291bWwvdHJhbnNmb3JtZXIvU2lt
cGxlU3RhdGVUcmFuc2Zvcm1lci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXRyYW5z
Zm9ybWVyL3NyYy9vcmcvYXJnb3VtbC90cmFuc2Zvcm1lci9UcmFuc2Zvcm1lck1vZHVsZS5qYXZh
DQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL01FVEEtSU5GL01B
TklGRVNULk1GDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL2J1
aWxkLnhtbA0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9wb20u
eG1sDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL3NyYy9vcmcv
YXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL21vZGVsL0dldHRlclNldHRlck1hbmFnZXIuamF2
YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9zcmMvb3JnL2Fy
Z291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy9tb2RlbC9HZXR0ZXJTZXR0ZXJNYW5hZ2VySW1wbC5q
YXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL3NyYy9vcmcv
YXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL21vZGVsL01ldGFEYXRhQ2FjaGUuamF2YQ0KICAg
dHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291bWwv
Y29yZS9wcm9wZXJ0eXBhbmVscy9tb2R1bGUvWG1sUHJvcGVydHlQYW5lbHNNb2R1bGUuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291
bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9BYnN0cmFjdEFjdGlvbkFkZE1vZGVsRWxlbWVudC5q
YXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL3NyYy9vcmcv
YXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL0V4cHJlc3Npb25Cb2R5RmllbGQuamF2YQ0K
ICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291
bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9FeHByZXNzaW9uTW9kZWwuamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291bWwvY29yZS9w
cm9wZXJ0eXBhbmVscy91aS9MYWJlbGxlZENvbXBvbmVudC5qYXZhDQogICB0cnVuay9zcmMvYXJn
b3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5
cGFuZWxzL3VpL1JhZGlvQnV0dG9uUGFuZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29y
ZS11bWxwcm9wZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91
aS9Sb3dTZWxlY3Rvci5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5
cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL1NpbXBsZUxpc3RN
b2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL3Ny
Yy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL1N3aW5nVUlGYWN0b3J5LmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1scHJvcGVydHlwYW5lbHMvc3JjL29yZy9hcmdv
dW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1MQ2FsbEFjdGlvbk9wZXJhdGlvbkNvbWJvQm94
TW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9z
cmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9VTUxDaGFuZ2VFeHByZXNzaW9u
TW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9z
cmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9VTUxDb21ib0JveE1vZGVsLmph
dmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1scHJvcGVydHlwYW5lbHMvc3JjL29yZy9h
cmdvdW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1MQ29tcG9uZW50SW5zdGFuY2VDbGFzc2lm
aWVyQ29tYm9Cb3hNb2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3Bl
cnR5cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL1VNTENvbmRp
dGlvbkV4cHJlc3Npb25Nb2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHBy
b3BlcnR5cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL1VNTEV4
cHJlc3Npb25Cb2R5RmllbGQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9w
ZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9VTUxFeHBy
ZXNzaW9uTW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBh
bmVscy9zcmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9VTUxFeHByZXNzaW9u
UGFuZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9z
cmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9VTUxHZW5lcmFsaXphdGlvblBv
d2VydHlwZUNvbWJvQm94TW9kZWwuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxw
cm9wZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9VTUxM
aW5rZWRMaXN0LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1scHJvcGVydHlwYW5l
bHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1MTW9kZWxFbGVtZW50
TGlzdE1vZGVsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1scHJvcGVydHlwYW5l
bHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1MTW9kZWxFbGVtZW50
TmFtZXNwYWNlQ29tYm9Cb3hNb2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVt
bHByb3BlcnR5cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL1VN
TE11dGFibGVMaW5rZWRMaXN0LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1scHJv
cGVydHlwYW5lbHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1MUGxh
aW5UZXh0RG9jdW1lbnQuamF2YQ0KICAgdHJ1bmsvc3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0
eXBhbmVscy9zcmMvb3JnL2FyZ291bWwvY29yZS9wcm9wZXJ0eXBhbmVscy91aS9VTUxSZWN1cnJl
bmNlRXhwcmVzc2lvbk1vZGVsLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1scHJv
cGVydHlwYW5lbHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1MU3R1
YlN0YXRlQ29tYm9Cb3hNb2RlbC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHBy
b3BlcnR5cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL1VNTFN5
bmNoU3RhdGVCb3VuZERvY3VtZW50LmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1s
cHJvcGVydHlwYW5lbHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1M
VGVtcGxhdGVQYXJhbWV0ZXJQYXJhbWV0ZXJDb21ib0JveE1vZGVsLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWNvcmUtdW1scHJvcGVydHlwYW5lbHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJv
cGVydHlwYW5lbHMvdWkvVU1MVGltZUV4cHJlc3Npb25Nb2RlbC5qYXZhDQogICB0cnVuay9zcmMv
YXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3Bl
cnR5cGFuZWxzL3VpL1VNTFZhbHVlU3BlY2lmaWNhdGlvbk1vZGVsLmphdmENCiAgIHRydW5rL3Ny
Yy9hcmdvdW1sLWNvcmUtdW1scHJvcGVydHlwYW5lbHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJv
cGVydHlwYW5lbHMvdWkvVU1MVmFsdWVTcGVjaWZpY2F0aW9uUGFuZWwuamF2YQ0KICAgdHJ1bmsv
c3JjL2FyZ291bWwtY29yZS11bWxwcm9wZXJ0eXBhbmVscy9zcmMvb3JnL2FyZ291bWwvY29yZS9w
cm9wZXJ0eXBhbmVscy91aS9VTUxWYWx1ZVNwZWNpZmljYXRpb25QYW5lbE9wdGlvbmFsLmphdmEN
CiAgIHRydW5rL3NyYy9hcmdvdW1sLWNvcmUtdW1scHJvcGVydHlwYW5lbHMvc3JjL29yZy9hcmdv
dW1sL2NvcmUvcHJvcGVydHlwYW5lbHMvdWkvVU1MVmFsdWVTcGVjaWZpY2F0aW9uVmFsdWVGaWVs
ZC5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3JlLXVtbHByb3BlcnR5cGFuZWxzL3NyYy9v
cmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3VpL1VNTFZhbHVlU3BlY2lmaWNhdGlvblZh
bHVlRmllbGRPcGFxdWVFeHByZXNzaW9uRGlhbG9nLmphdmENCiAgIHRydW5rL3NyYy9hcmdvdW1s
LWNvcmUtdW1scHJvcGVydHlwYW5lbHMvc3JjL29yZy9hcmdvdW1sL2NvcmUvcHJvcGVydHlwYW5l
bHMvdWkvWE1MUHJvcFBhbmVsRmFjdG9yeS5qYXZhDQogICB0cnVuay9zcmMvYXJnb3VtbC1jb3Jl
LXVtbHByb3BlcnR5cGFuZWxzL3NyYy9vcmcvYXJnb3VtbC9jb3JlL3Byb3BlcnR5cGFuZWxzL3Vp
L1htbFByb3BlcnR5UGFuZWwuamF2YQ0KICAgdHJ1bmsvdG9vbHMvbWF2ZW4vcGFyZW50cG9tLnht
bA0KDQpMb2c6DQpSZXBsYWNlZCBsb2c0aiB3aXRoIGphdmEubG9nZ2luZy4NCg0KQWxzbyBzb21l
IHN0eWxlIGZpeGVzLg0KDQpDb250cmlidXRlZC1ieTogUnVzaSBQb3BvdiAod2l0aCBzdHlsZSBm
aXhlcyBieSBMaW51cyBUb2xrZSkuDQpDaGFuZ2UtSWQ6IEk3ZDE0NjNkMTA3MzQwYWM3YjdlZjVm
YzEwMWVlZjkzY2Y5NjA1ZGFlDQoNCk1vZGlmaWVkOiB0cnVuay9wb20ueG1sDQpVcmw6IGh0dHA6
Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3BvbS54bWw/
dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIHRydW5rL3BvbS54bWwJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3BvbS54bWwJ
MjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMTEsNyArMTEsNyBAQA0KICAgPHBhcmVudD4N
CiAgICAgPGdyb3VwSWQ+b3JnLmFyZ291bWw8L2dyb3VwSWQ+DQogICAgIDxhcnRpZmFjdElkPnBh
cmVudHBvbTwvYXJ0aWZhY3RJZD4NCi0gICAgPHZlcnNpb24+MC4zNS4zPC92ZXJzaW9uPg0KKyAg
ICA8dmVyc2lvbj4wLjM1LjQ8L3ZlcnNpb24+DQogICAgIDxyZWxhdGl2ZVBhdGg+dG9vbHMvbWF2
ZW4vcGFyZW50cG9tLnhtbDwvcmVsYXRpdmVQYXRoPg0KICAgPC9wYXJlbnQ+DQogDQoNCk1vZGlm
aWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvTUVUQS1JTkYvTUFOSUZFU1QuTUYNClVybDogaHR0
cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL01FVEEtSU5GL01BTklGRVNULk1GP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIx
PTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvTUVUQS1JTkYvTUFOSUZFU1QuTUYJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9NRVRBLUlORi9NQU5JRkVTVC5NRgkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDAN
CkBAIC0xMzUsOCArMTM1LDcgQEANCiAgdHVkcmVzZGVuLm9jbC5wYXJzZXIubGV4ZXIsDQogIHR1
ZHJlc2Rlbi5vY2wucGFyc2VyLm5vZGUsDQogIHR1ZHJlc2Rlbi5vY2wucGFyc2VyLnBhcnNlcg0K
LVJlcXVpcmUtQnVuZGxlOiBvcmcuYXJnb3VtbC5jb3JlLmluZnJhLA0KLSBvcmcuYXJnb3VtbC5j
b3JlLm1vZGVsDQorUmVxdWlyZS1CdW5kbGU6IG9yZy5hcmdvdW1sLmNvcmUubW9kZWwNCiBFY2xp
cHNlLVJlZ2lzdGVyQnVkZHk6IG9yZy5hcmdvdW1sLmNvcmUuaW5mcmENCiBFY2xpcHNlLUJ1ZGR5
UG9saWN5OiByZWdpc3RlcmVkDQogQnVuZGxlLUNsYXNzUGF0aDogbGliL2NvbW1vbnMtbG9nZ2lu
Zy0xLjAuMi5qYXIsDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvYnVpbGQueG1s
DQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3Ry
dW5rL3NyYy9hcmdvdW1sLWFwcC9idWlsZC54bWw/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9
MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9idWlsZC54bWwJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9i
dWlsZC54bWwJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMTAsNyArMTAsNiBAQA0KICAg
ICAgIFVzZWQgZm9yIGdlbmVyYXRpbmcgY29kZS4NCiANCiBCdWlsZGluZyB0aGlzIHJlcXVpcmVz
Og0KLSAgICBpbmZyYQ0KICAgICBtb2RlbA0KIA0KICAgLS0+DQpAQCAtNjQsOSArNjMsNiBAQA0K
ICAgICAgIDxmaWxlc2V0IGRpcj0ibGliIj4NCiAgICAgICAgIDxpbmNsdWRlIG5hbWU9IiouamFy
Ii8+DQogICAgICAgPC9maWxlc2V0Pg0KLSAgICAgIDxmaWxlc2V0IGRpcj0iLi4vYXJnb3VtbC1j
b3JlLWluZnJhL2J1aWxkLyI+DQotICAgICAgICA8aW5jbHVkZSBuYW1lPSIqLmphciIvPg0KLSAg
ICAgIDwvZmlsZXNldD4NCiAgICAgICA8ZmlsZXNldCBkaXI9Ii4uL2FyZ291bWwtY29yZS1tb2Rl
bC9idWlsZC8iPg0KICAgICAgICAgPGluY2x1ZGUgbmFtZT0iKi5qYXIiLz4NCiAgICAgICA8L2Zp
bGVzZXQ+DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvcG9tLnhtbA0KVXJsOiBo
dHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMv
YXJnb3VtbC1hcHAvcG9tLnhtbD92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0x
OTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Bv
bS54bWwJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9wb20ueG1sCTIwMTIt
MTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTkyLDE0ICs5Miw2IEBADQogICAgICAgPHNjb3BlPmNv
bXBpbGU8L3Njb3BlPg0KICAgICA8L2RlcGVuZGVuY3k+DQogDQotICAgIDxkZXBlbmRlbmN5Pg0K
LSAgICAgIDxncm91cElkPmxvZzRqPC9ncm91cElkPg0KLSAgICAgIDxhcnRpZmFjdElkPmxvZzRq
PC9hcnRpZmFjdElkPg0KLSAgICAgIDx2ZXJzaW9uPjEuMi42LTY8L3ZlcnNpb24+DQotICAgICAg
PHR5cGU+amFyPC90eXBlPg0KLSAgICAgIDxzY29wZT5jb21waWxlPC9zY29wZT4NCi0gICAgPC9k
ZXBlbmRlbmN5Pg0KLQ0KICAgICA8IS0tIE1EUiB0aGluZ3MgLS0+DQogICAgIDxkZXBlbmRlbmN5
Pg0KICAgICAgIDxncm91cElkPm9yZy5hcmdvdW1sPC9ncm91cElkPg0KDQpNb2RpZmllZDogdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9NYWluLmphdmEN
ClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9NYWluLmphdmE/
dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBwbGlj
YXRpb24vTWFpbi5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL2FwcGxpY2F0aW9uL01haW4uamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4
MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0K
LSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAq
IENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl
cmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xp
cHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3Ry
aWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQ1LDE0ICs0NSwxMyBAQA0KIGltcG9y
dCBqYXZhLmF3dC5HcmFwaGljc0Vudmlyb25tZW50Ow0KIGltcG9ydCBqYXZhLmF3dC5SZWN0YW5n
bGU7DQogaW1wb3J0IGphdmEuaW8uRmlsZTsNCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsN
Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsNCiBpbXBvcnQgamF2YS5uZXQuSW5ldEFkZHJl
c3M7DQogaW1wb3J0IGphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uOw0KIGltcG9ydCBqYXZh
LnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247DQogaW1wb3J0
IGphdmEudXRpbC5MaXN0Ow0KLWltcG9ydCBqYXZhLnV0aWwuUHJvcGVydGllczsNCitpbXBvcnQg
amF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dl
cjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuSk9wdGlvblBhbmU7DQogaW1wb3J0IGphdmF4LnN3
aW5nLkpQYW5lbDsNCkBAIC02MCwxMCArNTksNiBAQA0KIGltcG9ydCBqYXZheC5zd2luZy5VSURl
ZmF1bHRzOw0KIGltcG9ydCBqYXZheC5zd2luZy5VSU1hbmFnZXI7DQogDQotaW1wb3J0IG9yZy5h
cGFjaGUubG9nNGouQmFzaWNDb25maWd1cmF0b3I7DQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGou
TGV2ZWw7DQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KLWltcG9ydCBvcmcuYXBh
Y2hlLmxvZzRqLlByb3BlcnR5Q29uZmlndXJhdG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBs
aWNhdGlvbi5hcGkuQXJnbzsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uYXBpLkNv
bW1hbmRMaW5lSW50ZXJmYWNlOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5zZWN1
cml0eS5BcmdvQXd0RXhjZXB0aW9uSGFuZGxlcjsNCkBAIC0xNTUsNyArMTUwLDcgQEANCiAgICAg
ICovDQogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsNCiAgICAg
ICAgIHRyeSB7DQotICAgICAgICAgICAgTE9HLmluZm8oIkFyZ29VTUwgU3RhcnRlZC4iKTsNCisg
ICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJBcmdvVU1MIFN0YXJ0ZWQuIik7DQogDQog
ICAgICAgICAgICAgU2ltcGxlVGltZXIgc3QgPSBuZXcgU2ltcGxlVGltZXIoKTsNCiAgICAgICAg
ICAgICBzdC5tYXJrKCJiZWdpbiIpOw0KQEAgLTI0MywyMCArMjM4LDE4IEBADQogICAgICAgICAg
ICAgVGhyZWFkIHBvc3RMb2FkVGhlYWQgPSBuZXcgVGhyZWFkKHBsKTsNCiAgICAgICAgICAgICBw
b3N0TG9hZFRoZWFkLnN0YXJ0KCk7DQogDQotICAgICAgICAgICAgTE9HLmluZm8oIiIpOw0KLSAg
ICAgICAgICAgIExPRy5pbmZvKCJwcm9maWxlIG9mIGxvYWQgdGltZSAjIyMjIyMjIyMjIyMiKTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJcbnByb2ZpbGUgb2YgbG9hZCB0aW1l
ICMjIyMjIyMjIyMjIyIpOw0KICAgICAgICAgICAgIGZvciAoRW51bWVyYXRpb24gaSA9IHN0LnJl
c3VsdCgpOyBpLmhhc01vcmVFbGVtZW50cygpOykgew0KLSAgICAgICAgICAgICAgICBMT0cuaW5m
byhpLm5leHRFbGVtZW50KCkpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8s
ICJ7MH0iLCBpLm5leHRFbGVtZW50KCkpOw0KICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBM
T0cuaW5mbygiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIik7DQotICAgICAgICAg
ICAgTE9HLmluZm8oIiIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIiMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIik7DQogDQogICAgICAgICAgICAgc3QgPSBu
dWxsOw0KICAgICAgICAgICAgIEFyZ29GcmFtZS5nZXRGcmFtZSgpLnNldEN1cnNvcigNCiAgICAg
ICAgICAgICAgICAgICAgIEN1cnNvci5nZXRQcmVkZWZpbmVkQ3Vyc29yKEN1cnNvci5ERUZBVUxU
X0NVUlNPUikpOw0KIA0KICAgICAgICAgICAgIC8vIEFuZHJlYXM6IGp1c3QgdGVtcG9yYXJ5OiBh
IHdhcm5pbmcgZGlhbG9nIGZvciB1bWwyLi4uDQotICAgICAgICAgICAgaWYgKHNob3dVbWwyd2Fy
bmluZyANCisgICAgICAgICAgICBpZiAoc2hvd1VtbDJ3YXJuaW5nDQogICAgICAgICAgICAgICAg
ICAgICAmJiBNb2RlbC5nZXRGYWNhZGUoKS5nZXRVbWxWZXJzaW9uKCkuc3RhcnRzV2l0aCgiMiIp
KSB7DQogICAgICAgICAgICAgICAgIEpPcHRpb25QYW5lLnNob3dNZXNzYWdlRGlhbG9nKCBBcmdv
RnJhbWUuZ2V0RnJhbWUoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICwgIllvdSBhcmUgcnVu
bmluZyBhbiBleHBlcmltZW50YWwgdmVyc2lvbiAiDQpAQCAtMjcwLDEyICsyNjMsOCBAQA0KICAg
ICAgICAgICAgIFRvb2xUaXBNYW5hZ2VyLnNoYXJlZEluc3RhbmNlKCkuc2V0RGlzbWlzc0RlbGF5
KDUwMDAwMDAwKTsNCiAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSB0KSB7DQogICAgICAgICAg
ICAgdHJ5IHsNCi0gICAgICAgICAgICAgICAgTE9HLmZhdGFsKCJGYXRhbCBlcnJvciBvbiBzdGFy
dHVwLiAgQXJnb1VNTCBmYWlsZWQgdG8gc3RhcnQiLCANCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0KTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJGYXRhbCBlcnJv
ciBvbiBzdGFydHVwLiAgQXJnb1VNTCBmYWlsZWQgdG8gc3RhcnQiLCB0KTsNCiAgICAgICAgICAg
ICB9IGZpbmFsbHkgew0KLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZhdGFs
IGVycm9yIG9uIHN0YXJ0dXAuICAiDQotICAgICAgICAgICAgICAgICAgICAgICAgKyAiQXJnb1VN
TCBmYWlsZWQgdG8gc3RhcnQuIik7DQotICAgICAgICAgICAgICAgIHQucHJpbnRTdGFja1RyYWNl
KCk7DQogICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDEpOw0KICAgICAgICAgICAgIH0NCiAg
ICAgICAgIH0NCkBAIC0zMzgsNyArMzI3LDcgQEANCiAgICAgICogUGFyc2UgY29tbWFuZCBsaW5l
IGFyZ3MuIFRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYWxsIG9wdGlvbnMgcHJlY2VkZSB0aGUNCiAg
ICAgICogbmFtZSBvZiBhIHByb2plY3QgZmlsZSB0byBsb2FkLiBTZXRzIHN0YXRpYyBmaWVsZHMg
dGhhdCBjYW4gYmUgcmVmZXJlbmNlZA0KICAgICAgKiBsYXRlci4NCi0gICAgICogDQorICAgICAq
DQogICAgICAqIEBwYXJhbSBhcmdzIGNvbW1hbmQgbGluZSBhcmdzDQogICAgICAqLw0KICAgICBw
cml2YXRlIHN0YXRpYyB2b2lkIHBhcnNlQ29tbWFuZExpbmUoU3RyaW5nW10gYXJncykgew0KQEAg
LTM3NSwxNCArMzY0LDE0IEBADQogICAgICAgICAgICAgICAgICAgICBpKys7DQogICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoYXJnc1tpXS5lcXVhbHNJZ25vcmVDYXNlKCItYmF0Y2giKSkgew0K
ICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSB0cnVlOw0KLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLW9wZW4iKSANCisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChhcmdzW2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1vcGVuIikNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBpICsgMSA8IGFyZ3MubGVuZ3RoKSB7DQogICAgICAgICAgICAg
ICAgICAgICBwcm9qZWN0TmFtZSA9IGFyZ3NbKytpXTsNCi0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChhcmdzW2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1wcmludCIpIA0KKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXByaW50IikNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBpICsgMSA8IGFyZ3MubGVuZ3RoKSB7DQogICAgICAgICAgICAg
ICAgICAgICAvLyBUT0RPOiBIdWdlIHNpZGUgZWZmZWN0LiAgSG9pc3Qgb3V0IG9mIHBhcnNlIC0g
dGZtDQogICAgICAgICAgICAgICAgICAgICAvLyBsZXQncyBsb2FkIHRoZSBwcm9qZWN0DQotICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgcHJvamVjdFRvQmVQcmludGVkID0gDQorICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgcHJvamVjdFRvQmVQcmludGVkID0NCiAgICAgICAgICAgICAgICAg
ICAgICAgICBQZXJzaXN0ZW5jZU1hbmFnZXIuZ2V0SW5zdGFuY2UoKS5maXhFeHRlbnNpb24oDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWysraV0pOw0KICAgICAgICAgICAg
ICAgICAgICAgUHJvamVjdEJyb3dzZXIuZ2V0SW5zdGFuY2UoKS5sb2FkUHJvamVjdCgNCkBAIC00
NjYsNyArNDU1LDcgQEANCiAgICAgICAgICAgICAgICAgREVGQVVMVF9NT0RFTF9JTVBMRU1FTlRB
VElPTik7DQogICAgICAgICBUaHJvd2FibGUgcmV0ID0gTW9kZWwuaW5pdGlhbGlzZShjbGFzc05h
bWUpOw0KICAgICAgICAgaWYgKHJldCAhPSBudWxsKSB7DQotICAgICAgICAgICAgTE9HLmZhdGFs
KCJNb2RlbCBjb21wb25lbnQgbm90IGNvcnJlY3RseSBpbml0aWFsaXplZC4iLCByZXQpOw0KKyAg
ICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiTW9kZWwgY29tcG9uZW50IG5vdCBjb3Jy
ZWN0bHkgaW5pdGlhbGl6ZWQuIiwgcmV0KTsNCiAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50
bG4oY2xhc3NOYW1lDQogICAgICAgICAgICAgICAgICAgICArICIgaXMgbm90IGEgd29ya2luZyBN
b2RlbCBpbXBsZW1lbnRhdGlvbi4iKTsNCiAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgxKTsNCkBA
IC01MjMsMTEgKzUxMiwxMCBAQA0KICAgICAgICAgaWYgKCEoIiIuZXF1YWxzKHMpKSkgew0KICAg
ICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKHMpOw0KICAgICAgICAgICAgIGlmIChmaWxl
LmV4aXN0cygpKSB7DQotICAgICAgICAgICAgICAgIExPRy5pbmZvKCJSZS1vcGVuaW5nIHByb2pl
Y3QgIiArIHMpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJSZS1vcGVu
aW5nIHByb2plY3QgezB9Iiwgcyk7DQogICAgICAgICAgICAgICAgIHJldHVybiBzOw0KICAgICAg
ICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgICAgIExPRy53YXJuKCJDYW5ub3QgcmUtb3Bl
biAiICsgcw0KLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiBiZWNhdXNlIGl0IGRvZXMgbm90
IGV4aXN0Iik7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIkNhbm5v
dCByZS1vcGVuIHswfSBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0Iiwgcyk7DQogICAgICAgICAg
ICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJuIG51bGw7DQpAQCAtNzE0LDEyICs3MDIs
MTIgQEANCiAgICAgfQ0KIA0KICAgICAvKioNCi0gICAgICogQ3JlYXRlIHRoZSAuYXJnb3VtbCBk
aXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdC4gDQotICAgICAqIFRoaXMgaXMgZG9uZSBoZXJl
IGJlY2F1c2UgaXQgbXVzdCBiZSBkb25lIGJlZm9yZSANCisgICAgICogQ3JlYXRlIHRoZSAuYXJn
b3VtbCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdC4NCisgICAgICogVGhpcyBpcyBkb25l
IGhlcmUgYmVjYXVzZSBpdCBtdXN0IGJlIGRvbmUgYmVmb3JlDQogICAgICAqIHNldHRpbmcgdGhl
IGxvZyBjb25maWd1cmF0aW9uLg0KICAgICAgKi8NCiAgICAgc3RhdGljIHsNCi0gICAgICAgIEZp
bGUgYXJnb0RpciA9IG5ldyBGaWxlKFN5c3RlbS5nZXRQcm9wZXJ0eSgidXNlci5ob21lIikgDQor
ICAgICAgICBGaWxlIGFyZ29EaXIgPSBuZXcgRmlsZShTeXN0ZW0uZ2V0UHJvcGVydHkoInVzZXIu
aG9tZSIpDQogICAgICAgICAgICAgICAgICsgRmlsZS5zZXBhcmF0b3IgKyAiLmFyZ291bWwiKTsN
CiAgICAgICAgIGlmICghYXJnb0Rpci5leGlzdHMoKSkgew0KICAgICAgICAgICAgIGFyZ29EaXIu
bWtkaXIoKTsNCkBAIC03NDAsOSArNzI4LDkgQEANCiAgICAgICovDQogICAgIHN0YXRpYyB7DQog
DQotICAgICAgICAvKiAgDQorICAgICAgICAvKg0KICAgICAgICAgICogSW5zdGFsbCB0aGUgdHJh
cCB0byAiZWF0IiBTZWN1cml0eUV4Y2VwdGlvbnMuDQotICAgICAgICAgKiANCisgICAgICAgICAq
DQogICAgICAgICAgKiBOT1RFOiBUaGlzIGlzIHRlbXBvcmFyeSBhbmQgd2lsbCBnbyBhd2F5IGlu
IGEgImZ1dHVyZSIgcmVsZWFzZQ0KICAgICAgICAgICogaHR0cDovL2J1Z3Muc3VuLmNvbS9idWdk
YXRhYmFzZS92aWV3X2J1Zy5kbz9idWdfaWQ9NDcxNDIzMg0KICAgICAgICAgICovDQpAQCAtNzYy
LDM4ICs3NTAsMzggQEANCiAgICAgICAgICAqIHtAbGluayBBcmdvfSBwZXJmb3JtIHRoZSBpbml0
aWFsaXphdGlvbi4NCiAgICAgICAgICAqLw0KIA0KLSAgICAgICAgLy8gSmF2YVdlYlN0YXJ0IHBy
b3BlcnRpZXMgZm9yIGxvZ3MgYXJlIDogDQorICAgICAgICAvLyBKYXZhV2ViU3RhcnQgcHJvcGVy
dGllcyBmb3IgbG9ncyBhcmUgOg0KICAgICAgICAgLy8gZGVwbG95bWVudC51c2VyLmxvZ2RpciAm
IGRlcGxveW1lbnQudXNlci50bXANCi0gICAgICAgIGlmIChTeXN0ZW0uZ2V0UHJvcGVydHkoImxv
ZzRqLmNvbmZpZ3VyYXRpb24iKSA9PSBudWxsKSB7DQotICAgICAgICAgICAgUHJvcGVydGllcyBw
cm9wcyA9IG5ldyBQcm9wZXJ0aWVzKCk7DQotICAgICAgICAgICAgSW5wdXRTdHJlYW0gc3RyZWFt
ID0gbnVsbDsNCi0gICAgICAgICAgICB0cnkgew0KLSAgICAgICAgICAgICAgICBzdHJlYW0gPSBU
aHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpDQotICAgICAgICAg
ICAgICAgICAgICAgICAgLmdldFJlc291cmNlQXNTdHJlYW0oREVGQVVMVF9MT0dHSU5HX0NPTkZJ
R1VSQVRJT04pOw0KLQ0KLSAgICAgICAgICAgICAgICBpZiAoc3RyZWFtICE9IG51bGwpIHsNCi0g
ICAgICAgICAgICAgICAgICAgIHByb3BzLmxvYWQoc3RyZWFtKTsNCi0gICAgICAgICAgICAgICAg
fQ0KLSAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvKSB7DQotICAgICAgICAgICAg
ICAgIGlvLnByaW50U3RhY2tUcmFjZSgpOw0KLSAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgt
MSk7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIFByb3BlcnR5Q29uZmlndXJhdG9y
LmNvbmZpZ3VyZShwcm9wcyk7DQotDQotICAgICAgICAgICAgaWYgKHN0cmVhbSA9PSBudWxsKSB7
DQotICAgICAgICAgICAgICAgIEJhc2ljQ29uZmlndXJhdG9yLmNvbmZpZ3VyZSgpOw0KLSAgICAg
ICAgICAgICAgICBMb2dnZXIuZ2V0Um9vdExvZ2dlcigpLmdldExvZ2dlclJlcG9zaXRvcnkoKS5z
ZXRUaHJlc2hvbGQoDQotICAgICAgICAgICAgICAgICAgICAgICAgTGV2ZWwuRVJST1IpOyAvLyBk
ZWZhdWx0IGxldmVsIGlzIERFQlVHDQotICAgICAgICAgICAgICAgIExvZ2dlci5nZXRSb290TG9n
Z2VyKCkuZXJyb3IoDQotICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBmaW5kIHZh
bGlkIGxvZzRqIHByb3BlcnRpZXMiDQotICAgICAgICAgICAgICAgICAgICAgICAgKyAiaW4gbG9n
NGouY29uZmlndXJhdGlvbiINCi0gICAgICAgICAgICAgICAgICAgICAgICArICJ1c2luZyBkZWZh
dWx0IGxvZ2dpbmcgY29uZmlndXJhdGlvbiIpOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIH0N
CisvLyAgICAgICAgaWYgKFN5c3RlbS5nZXRQcm9wZXJ0eSgibG9nNGouY29uZmlndXJhdGlvbiIp
ID09IG51bGwpIHsNCisvLyAgICAgICAgICAgIFByb3BlcnRpZXMgcHJvcHMgPSBuZXcgUHJvcGVy
dGllcygpOw0KKy8vICAgICAgICAgICAgSW5wdXRTdHJlYW0gc3RyZWFtID0gbnVsbDsNCisvLyAg
ICAgICAgICAgIHRyeSB7DQorLy8gICAgICAgICAgICAgICAgc3RyZWFtID0gVGhyZWFkLmN1cnJl
bnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKQ0KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgLmdldFJlc291cmNlQXNTdHJlYW0oREVGQVVMVF9MT0dHSU5HX0NPTkZJR1VSQVRJT04p
Ow0KKy8vDQorLy8gICAgICAgICAgICAgICAgaWYgKHN0cmVhbSAhPSBudWxsKSB7DQorLy8gICAg
ICAgICAgICAgICAgICAgIHByb3BzLmxvYWQoc3RyZWFtKTsNCisvLyAgICAgICAgICAgICAgICB9
DQorLy8gICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpbykgew0KKy8vICAgICAgICAg
ICAgICAgIGlvLnByaW50U3RhY2tUcmFjZSgpOw0KKy8vICAgICAgICAgICAgICAgIFN5c3RlbS5l
eGl0KC0xKTsNCisvLyAgICAgICAgICAgIH0NCisvLw0KKy8vICAgICAgICAgICAgUHJvcGVydHlD
b25maWd1cmF0b3IuY29uZmlndXJlKHByb3BzKTsNCisvLw0KKy8vICAgICAgICAgICAgaWYgKHN0
cmVhbSA9PSBudWxsKSB7DQorLy8gICAgICAgICAgICAgICAgQmFzaWNDb25maWd1cmF0b3IuY29u
ZmlndXJlKCk7DQorLy8gICAgICAgICAgICAgICAgTG9nZ2VyLmdldFJvb3RMb2dnZXIoKS5nZXRM
b2dnZXJSZXBvc2l0b3J5KCkuc2V0VGhyZXNob2xkKA0KKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgTGV2ZWwuRVJST1IpOyAvLyBkZWZhdWx0IGxldmVsIGlzIERFQlVHDQorLy8gICAgICAgICAg
ICAgICAgTG9nZ2VyLmdldFJvb3RMb2dnZXIoKS5lcnJvcigNCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICJGYWlsZWQgdG8gZmluZCB2YWxpZCBsb2c0aiBwcm9wZXJ0aWVzIg0KKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgKyAiaW4gbG9nNGouY29uZmlndXJhdGlvbiINCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICsgInVzaW5nIGRlZmF1bHQgbG9nZ2luZyBjb25maWd1cmF0aW9uIik7
DQorLy8gICAgICAgICAgICB9DQorLy8gICAgICAgIH0NCiANCiAgICAgICAgIC8vIGluaXRMb2dn
aW5nKCk7DQotICAgICAgICBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKE1haW4uY2xhc3MpOw0KKyAg
ICAgICAgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihNYWluLmNsYXNzLmdldE5hbWUoKSk7DQogICAg
IH0NCiANCiANCkBAIC04NTgsNyArODQ2LDcgQEANCiAgICAgICAgIHBiLnNldExvY2F0aW9uKHgs
IHkpOw0KICAgICAgICAgcGIuc2V0U2l6ZSh3LCBoKTsNCiAgICAgICAgIHBiLnNldEV4dGVuZGVk
U3RhdGUoQ29uZmlndXJhdGlvbi5nZXRCb29sZWFuKA0KLSAgICAgICAgICAgICAgICBBcmdvLktF
WV9TQ1JFRU5fTUFYSU1JWkVELCBmYWxzZSkgDQorICAgICAgICAgICAgICAgIEFyZ28uS0VZX1ND
UkVFTl9NQVhJTUlaRUQsIGZhbHNlKQ0KICAgICAgICAgICAgICAgICA/IEZyYW1lLk1BWElNSVpF
RF9CT1RIIDogRnJhbWUuTk9STUFMKTsNCiANCiAgICAgICAgIFVJTWFuYWdlci5wdXQoIkJ1dHRv
bi5mb2N1c0lucHV0TWFwIiwgbmV3IFVJRGVmYXVsdHMuTGF6eUlucHV0TWFwKA0KQEAgLTg2OCwx
OCArODU2LDE4IEBADQogICAgICAgICAgICAgICAgICAgICAiU1BBQ0UiLCAicHJlc3NlZCIsDQog
ICAgICAgICAgICAgICAgICAgICAicmVsZWFzZWQgU1BBQ0UiLCAicmVsZWFzZWQiDQogICAgICAg
ICAgICAgICAgIH0pDQotICAgICAgICApOyAgICAgICAgIA0KKyAgICAgICAgKTsNCiAgICAgICAg
IHJldHVybiBwYjsNCiAgICAgfQ0KIA0KICAgICAvKioNCiAgICAgICogUHVibGlzaCB0aGUgdmVy
c2lvbiBvZiB0aGUgQXJnb1VNTCBhcHBsaWNhdGlvbi4gPHA+DQotICAgICAqIA0KLSAgICAgKiBU
aGlzIGZ1bmN0aW9uIGlzIGludGVudGlvbmFsbHkgcHVibGljLCANCi0gICAgICogc2luY2UgYXBw
bGljYXRpb25zIGJ1aWx0IG9uIEFyZ29VTUwsIA0KLSAgICAgKiB0aGF0IGRvIG5vdCBtYWtlIHVz
ZSBvZiBNYWluLm1haW4oKSwgDQotICAgICAqIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kIHRo
ZW4gYWNjZXNzIEFyZ29VTUwncyB2ZXJzaW9uIA0KLSAgICAgKiBmcm9tIHRoZSBBcHBsaWNhdGlv
blZlcnNpb24gY2xhc3MuIA0KKyAgICAgKg0KKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVu
dGlvbmFsbHkgcHVibGljLA0KKyAgICAgKiBzaW5jZSBhcHBsaWNhdGlvbnMgYnVpbHQgb24gQXJn
b1VNTCwNCisgICAgICogdGhhdCBkbyBub3QgbWFrZSB1c2Ugb2YgTWFpbi5tYWluKCksDQorICAg
ICAqIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kIHRoZW4gYWNjZXNzIEFyZ29VTUwncyB2ZXJz
aW9uDQorICAgICAqIGZyb20gdGhlIEFwcGxpY2F0aW9uVmVyc2lvbiBjbGFzcy4NCiAgICAgICov
DQogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0VmVyc2lvbigpIHsNCiAgICAgICAgIEFyZ29W
ZXJzaW9uLmluaXQoKTsNCkBAIC04OTYsNyArODg0LDcgQEANCiAgICAgLyoqDQogICAgICAqIExv
Z2dlci4NCiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBM
b2dnZXIuZ2V0TG9nZ2VyKFBvc3RMb2FkLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoUG9zdExvYWQuY2xhc3MuZ2V0TmFtZSgp
KTsNCiANCiAgICAgLyoqDQogICAgICAqIFRoZSBsaXN0IG9mIGFjdGlvbnMgdG8gcGVyZm9ybS4N
CkBAIC05MjAsMTQgKzkwOCwxNCBAQA0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBUaHJl
YWQuc2xlZXAoMTAwMCk7DQogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsNCi0gICAg
ICAgICAgICBMT0cuZXJyb3IoInBvc3QgbG9hZCBubyBzbGVlcCIsIGV4KTsNCisgICAgICAgICAg
ICBMT0cubG9nKExldmVsLlNFVkVSRSwgInBvc3QgbG9hZCBubyBzbGVlcCIsIGV4KTsNCiAgICAg
ICAgIH0NCiAgICAgICAgIGZvciAoUnVubmFibGUgciA6IHBvc3RMb2FkQWN0aW9ucykgew0KICAg
ICAgICAgICAgIHIucnVuKCk7DQogICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAg
VGhyZWFkLnNsZWVwKDEwMCk7DQogICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7
DQotICAgICAgICAgICAgICAgIExPRy5lcnJvcigicG9zdCBsb2FkIG5vIHNsZWVwMiIsIGV4KTsN
CisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJwb3N0IGxvYWQgbm8gc2xl
ZXAyIiwgZXgpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgfQ0KQEAgLTk0MCw3
ICs5MjgsNyBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoTG9hZE1vZHVs
ZXMuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2Vy
LmdldExvZ2dlcihMb2FkTW9kdWxlcy5jbGFzcy5nZXROYW1lKCkpOw0KIA0KIA0KICAgICBwcml2
YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBPUFRJT05BTF9JTlRFUk5BTF9NT0RVTEVTID0gew0K
QEAgLTk1Nyw4ICs5NDUsOCBAQA0KICAgICAgICAgICAgICAgICBNb2R1bGVMb2FkZXIyLmFkZENs
YXNzKG1vZHVsZSk7DQogICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlv
biBlKSB7DQogICAgICAgICAgICAgICAgIC8qIFdlIGRvbid0IGNhcmUgaWYgb3B0aW9uYWwgbW9k
dWxlcyBhcmVuJ3QgZm91bmQuICovDQotICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygiTW9kdWxl
ICIgKyBtb2R1bGUgKyAiIG5vdCBmb3VuZCIpOw0KLSAgICAgICAgICAgIH0gICAgICAgICAgICAN
CisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiTW9kdWxlIHswfSBub3QgZm91
bmQiLCBtb2R1bGUpOw0KKyAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KQEAg
LTk2Nyw3ICs5NTUsNyBAQA0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgcnVuKCkgew0KICAg
ICAgICAgaHVudEZvckludGVybmFsTW9kdWxlcygpOw0KLSAgICAgICAgTE9HLmluZm8oIk1vZHVs
ZSBsb2FkaW5nIGRvbmUiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIk1vZHVsZSBs
b2FkaW5nIGRvbmUiKTsNCiAgICAgfQ0KIA0KIH0gLyogZW5kIGNsYXNzIExvYWRNb2R1bGVzICov
DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2FwcGxp
Y2F0aW9uL1N0YXJ0Q3JpdGljcy5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcv
c291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvYXBwbGljYXRpb24vU3RhcnRDcml0aWNzLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcm
cjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBwbGljYXRpb24vU3RhcnRDcml0aWNzLmphdmEJ
KG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBw
bGljYXRpb24vU3RhcnRDcml0aWNzLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAt
MSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5
cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChj
KSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFy
ZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExp
Y2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQg
aXMgYXZhaWxhYmxlIGF0DQpAQCAtMzgsNyArMzgsOSBAQA0KIA0KIHBhY2thZ2Ugb3JnLmFyZ291
bWwuYXBwbGljYXRpb247DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KK2lt
cG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcu
TG9nZ2VyOw0KKw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5hcGkuQXJnbzsNCiBp
bXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uaGVscGVycy5SZXNvdXJjZUxvYWRlcldyYXBw
ZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5EZXNpZ25lcjsNCkBAIC01OCw3ICs2
MCw4IEBADQogICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRl
IHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihTdGFydENyaXRpY3Mu
Y2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAg
IExvZ2dlci5nZXRMb2dnZXIoU3RhcnRDcml0aWNzLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAg
IC8qDQogICAgICAqIEBzZWUgamF2YS5sYW5nLlJ1bm5hYmxlI3J1bigpDQpAQCAtNzgsNyArODEs
NyBAQA0KICAgICAgICAgZm9yIChPYmplY3QgbW9kZWwgOiBwLmdldFVzZXJEZWZpbmVkTW9kZWxM
aXN0KCkpIHsNCiAgICAgICAgICAgICBNb2RlbC5nZXRQdW1wKCkuYWRkTW9kZWxFdmVudExpc3Rl
bmVyKGRzZ3IsIG1vZGVsKTsNCiAgICAgICAgIH0NCi0gICAgICAgIExPRy5pbmZvKCJzcGF3bmVk
IGNyaXRpcXVpbmcgdGhyZWFkIik7DQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJzcGF3
bmVkIGNyaXRpcXVpbmcgdGhyZWFkIik7DQogICAgICAgICBkc2dyLmdldERlY2lzaW9uTW9kZWwo
KS5zdGFydENvbnNpZGVyaW5nKFVNTERlY2lzaW9uLkNMQVNTX1NFTEVDVElPTik7DQogICAgICAg
ICBkc2dyLmdldERlY2lzaW9uTW9kZWwoKS5zdGFydENvbnNpZGVyaW5nKFVNTERlY2lzaW9uLkJF
SEFWSU9SKTsNCiAgICAgICAgIGRzZ3IuZ2V0RGVjaXNpb25Nb2RlbCgpLnN0YXJ0Q29uc2lkZXJp
bmcoVU1MRGVjaXNpb24uTkFNSU5HKTsNCkBAIC0xMDAsNCArMTAzLDMgQEANCiAgICAgfQ0KIA0K
IH0gLyogZW5kIGNsYXNzIFN0YXJ0Q3JpdGljcyAqLw0KLQ0KDQpNb2RpZmllZDogdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9hcGkvQWJzdHJhY3RBcmdv
SlBhbmVsLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3Nl
L2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlv
bi9hcGkvQWJzdHJhY3RBcmdvSlBhbmVsLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9
MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBwbGljYXRpb24vYXBpL0Fic3RyYWN0QXJnb0pQYW5l
bC5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL2FwcGxpY2F0aW9uL2FwaS9BYnN0cmFjdEFyZ29KUGFuZWwuamF2YQkyMDEyLTEyLTMwIDA1
OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cN
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg
bWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
RWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk
aXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00MSw2ICs0MSw4IEBADQogaW1w
b3J0IGphdmEuYXd0LkJvcmRlckxheW91dDsNCiBpbXBvcnQgamF2YS5hd3QuUG9pbnQ7DQogaW1w
b3J0IGphdmEuYXd0LlJlY3RhbmdsZTsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7
DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dp
bmcuSWNvbjsNCiBpbXBvcnQgamF2YXguc3dpbmcuSkRpYWxvZzsNCkBAIC00OCw3ICs1MCw2IEBA
DQogaW1wb3J0IGphdmF4LnN3aW5nLkpUYWJiZWRQYW5lOw0KIGltcG9ydCBqYXZheC5zd2luZy5T
d2luZ1V0aWxpdGllczsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1w
b3J0IG9yZy5hcmdvdW1sLmkxOG4uVHJhbnNsYXRvcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwudXRp
bC5BcmdvRnJhbWU7DQogaW1wb3J0IG9yZy50aWdyaXMuc3dpZGdldHMuT3JpZW50YWJsZTsNCkBA
IC02NSw3ICs2Niw3IEBADQogICogVE9ETzogU3Bhd25pbmcgb2Ygd2luZG93cyBkaXNhYmxlZCBp
biBzcGF3bigpPHA+DQogICoNCiAgKiBUaXRsZTogVGhpcyBKUGFuZWwga2VlcHMgdHJhY2sgb2Yg
aXRzIG93biB0aXRsZS48cD4NCi0gKiANCisgKg0KICAqIEljb246IFRoaXMgSlBhbmVsIGtlZXBz
IHRyYWNrIG9mIGl0cyBvd24gaWNvbjsgaS5lLiBhbiBhcnJvdyBwb2ludGluZyB0bw0KICAqIHRo
ZSBwYW5lbCB0aGF0IGl0IGdpdmVzIGRldGFpbHMgb2YuPHA+DQogICoNCkBAIC04MywxMiArODQs
MTIgQEANCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9DQotICAgICAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihBYnN0cmFjdEFy
Z29KUGFuZWwuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihBYnN0cmFjdEFyZ29K
UGFuZWwuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50
IE9WRVJMQVBQID0gMzA7DQogDQogICAgIHByaXZhdGUgU3RyaW5nIHRpdGxlID0gVHJhbnNsYXRv
ci5sb2NhbGl6ZSgidGFiLnVudGl0bGVkIik7DQotICAgIA0KKw0KICAgICBwcml2YXRlIEljb24g
aWNvbiA9IG51bGw7DQogDQogICAgIC8qKg0KQEAgLTE0OSw3ICsxNTAsNyBAQA0KICAgICAgICAg
dHJ5IHsNCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygpLm5ld0luc3RhbmNlKCk7
DQogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsNCi0gICAgICAgICAgICBMT0cuZXJy
b3IoImV4Y2VwdGlvbiBpbiBjbG9uZSgpIiwgZXgpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2
ZWwuU0VWRVJFLCAiZXhjZXB0aW9uIGluIGNsb25lKCkiLCBleCk7DQogICAgICAgICB9DQogICAg
ICAgICByZXR1cm4gbnVsbDsNCiAgICAgfQ0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9hcGkvQXJnby5qYXZhDQpVcmw6IGh0dHA6
Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBwbGljYXRpb24vYXBpL0FyZ28uamF2YT92aWV3PWRp
ZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9h
cGkvQXJnby5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL2FwcGxpY2F0aW9uL2FwaS9BcmdvLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0w
ODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29w
eXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs
cw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2Ug
UHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0
aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtMzgsOCArMzgsNiBAQA0KIA0KIHBhY2thZ2Ug
b3JnLmFyZ291bWwuYXBwbGljYXRpb24uYXBpOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRq
LkNhdGVnb3J5Ow0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxldmVsOw0KIGltcG9ydCBvcmcu
YXJnb3VtbC5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbktleTsNCiANCkBAIC0xNDIsNyArMTQwLDcgQEAN
CiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29uZmlndXJhdGlvbktleSBLRVlf
U0NSRUVOX01BWElNSVpFRCA9DQogICAgICAgICBDb25maWd1cmF0aW9uLm1ha2VLZXkoInNjcmVl
biIsICJtYXhpbWl6ZWQiKTsNCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBLZXkgZm9yIHNv
dXRod2VzdCBwYW5lIHdpZHRoLg0KICAgICAgKi8NCkBAIC0yNjAsNyArMjU4LDcgQEANCiAgICAg
ICovDQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29uZmlndXJhdGlvbktleSBLRVlfSU5QVVRf
U09VUkNFX0VOQ09ESU5HID0NCiAJQ29uZmlndXJhdGlvbi5tYWtlS2V5KCJpbXBvcnQiLCAiZmls
ZSIsICJlbmNvZGluZyIpOw0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEtleSB0byBzdG9y
ZSBzZXR0aW5nIG9mIHN0cmlwcGluZyBkaWFncmFtcyBvbiBYTUkgaW1wb3J0Lg0KICAgICAgKi8N
CkBAIC0yOTAsMTMgKzI4OCwxMyBAQA0KICAgICAgICAgQ29uZmlndXJhdGlvbi5tYWtlS2V5KCJs
b2NhbGUiKTsNCiANCiAgICAgLyoqDQotICAgICAqIEtleSBmb3Igc2VsZWN0aW5nIHRoZSBncmlk
IHNpemUgYW5kIGlmIGl0IHNob3dzIGxpbmVzLCBkb3RzIG9yIG5vbmUuIA0KKyAgICAgKiBLZXkg
Zm9yIHNlbGVjdGluZyB0aGUgZ3JpZCBzaXplIGFuZCBpZiBpdCBzaG93cyBsaW5lcywgZG90cyBv
ciBub25lLg0KICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBDb25maWd1cmF0aW9u
S2V5IEtFWV9HUklEID0NCiAgICAgICAgIENvbmZpZ3VyYXRpb24ubWFrZUtleSgiZ3JpZCIpOw0K
IA0KICAgICAvKioNCi0gICAgICogS2V5IGZvciBzZWxlY3RpbmcgdGhlIHNuYXAgc2l6ZS4gDQor
ICAgICAqIEtleSBmb3Igc2VsZWN0aW5nIHRoZSBzbmFwIHNpemUuDQogICAgICAqLw0KICAgICBw
dWJsaWMgc3RhdGljIGZpbmFsIENvbmZpZ3VyYXRpb25LZXkgS0VZX1NOQVAgPQ0KICAgICAgICAg
Q29uZmlndXJhdGlvbi5tYWtlS2V5KCJzbmFwIik7DQpAQCAtMzE2LDcgKzMxNCw3IEBADQogICAg
ICAqIGNvbnNvbGUgbG9nLiAodW51c2VkKQ0KICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRpYyBm
aW5hbCBTdHJpbmcgQVJHT19DT05TT0xFX1BSRUZJWCA9ICJhcmdvLmNvbnNvbGUucHJlZml4IjsN
Ci0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBOYW1lIG9mIHRoZSBUYWdEZWZpbml0aW9uIHdo
aWNoIGlzIHVzZWQgYXMgdGhlIHR5cGUgb2YgdGFnZ2VkIHZhbHVlcw0KICAgICAgKiBjb250YWlu
aW5nIGRvY3VtZW50YXRpb24gZm9yIGEgbW9kZWwgZWxlbWVudC4NCkBAIC0zNTQsNyArMzUyLDcg
QEANCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkVSU0lPTl9UQUcgPSAidmVyc2lv
biI7DQogDQogICAgIC8qKg0KLSAgICAgKiBBbHRlcm5hdGUgbmFtZSBmb3IgdGhlIFRhZ0RlZmlu
aXRpb24gd2hpY2ggcHJlc3VtYWJseSB3YXMgdXNlZCBhdCBzb21lIA0KKyAgICAgKiBBbHRlcm5h
dGUgbmFtZSBmb3IgdGhlIFRhZ0RlZmluaXRpb24gd2hpY2ggcHJlc3VtYWJseSB3YXMgdXNlZCBh
dCBzb21lDQogICAgICAqIHBvaW50IGluIHRoZSBwYXN0IHRvIGNvbnRhaW4gZG9jdW1lbnRhdGlv
biBmb3IgYSBtb2RlbCBlbGVtZW50LiAgT25seQ0KICAgICAgKiB1c2VkIGZvciBiYWNrd2FyZCBj
b21wYXRpYmlsdHkuDQogICAgICAqIEBkZXByZWNhdGVkIGZvciAwLjI1LjEgYnkgdGZtb3JyaXMg
LSBkb24ndCB1c2UgZm9yIG5ldyBjb2RlLg0KQEAgLTM2MywxOSArMzYxLDE5IEBADQogICAgIHB1
YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERPQ1VNRU5UQVRJT05fVEFHX0FMVCA9ICJqYXZhZG9j
cyI7DQogDQogICAgIC8qKg0KLSAgICAgKiBUaGUgc2NvcGUgb2YgdGhlIHNldHRpbmdzOiB0aGlz
IHNldHRpbmcgaXMgc3RvcmVkIA0KKyAgICAgKiBUaGUgc2NvcGUgb2YgdGhlIHNldHRpbmdzOiB0
aGlzIHNldHRpbmcgaXMgc3RvcmVkDQogICAgICAqIGluIHRoZSB1c2VyZGlyZWN0b3J5IGFuZCB2
YWxpZCBmb3IgdGhlIGFwcGxpY2F0aW9uLg0KICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRpYyBm
aW5hbCBpbnQgU0NPUEVfQVBQTElDQVRJT04gPSAwOw0KIA0KICAgICAvKioNCi0gICAgICogVGhl
IHNjb3BlIG9mIHRoZSBzZXR0aW5nOiB0aGlzIHNldHRpbmcgaXMgc3RvcmVkIHdpdGggdGhlIHBy
b2plY3QsIA0KLSAgICAgKiBpLmUuIGluIGUuZy4gYSB6YXJnbyBmaWxlLiBUaGlzIHNldHRpbmcg
d2lsbCBhbHNvIGFwcGx5IA0KLSAgICAgKiB3aGVuIHRoZSB6YXJnbyBmaWxlIGlzIG9wZW5lZCBi
eSBhbm90aGVyIHVzZXIsIA0KLSAgICAgKiBvbiBhbm90aGVyIGNvbXB1dGVyLiANCisgICAgICog
VGhlIHNjb3BlIG9mIHRoZSBzZXR0aW5nOiB0aGlzIHNldHRpbmcgaXMgc3RvcmVkIHdpdGggdGhl
IHByb2plY3QsDQorICAgICAqIGkuZS4gaW4gZS5nLiBhIHphcmdvIGZpbGUuIFRoaXMgc2V0dGlu
ZyB3aWxsIGFsc28gYXBwbHkNCisgICAgICogd2hlbiB0aGUgemFyZ28gZmlsZSBpcyBvcGVuZWQg
YnkgYW5vdGhlciB1c2VyLA0KKyAgICAgKiBvbiBhbm90aGVyIGNvbXB1dGVyLg0KICAgICAgKi8N
CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0NPUEVfUFJPSkVDVCA9IDE7DQotICAgIA0K
Kw0KICAgICAvKioNCiAgICAgICogRG9uJ3QgbGV0IHRoaXMgY2xhc3MgYmUgaW5zdGFudGlhdGVk
Lg0KICAgICAgKi8NCkBAIC00MTAsNyArNDA4LDggQEANCiANCiAgICAgc3RhdGljIHsNCiAJaWYg
KFN5c3RlbS5nZXRQcm9wZXJ0eShBUkdPX0NPTlNPTEVfU1VQUFJFU1MpICE9IG51bGwpIHsNCi0g
ICAgICAgICAgICBDYXRlZ29yeS5nZXRSb290KCkuZ2V0TG9nZ2VyUmVwb3NpdG9yeSgpLnNldFRo
cmVzaG9sZChMZXZlbC5PRkYpOw0KKy8vICAgICAgICAgICAgQ2F0ZWdvcnkuZ2V0Um9vdCgpLmdl
dExvZ2dlclJlcG9zaXRvcnkoKS5zZXRUaHJlc2hvbGQoTGV2ZWwuT0ZGKTsNCisvLyBUT0RPOiBG
aW5kIHRoZSBwcm9wZXIgaW1wbGVtZW50YXRpb24gaW4gamF2YS51dGlsLmxvZ2dpbmcgQVBJCSAg
ICANCiAJfQ0KICAgICB9DQogDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL2FwcGxpY2F0aW9uL2V2ZW50cy9BcmdvRXZlbnRQdW1wLmphdmENClVybDog
aHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9ldmVudHMvQXJnb0V2ZW50
UHVtcC5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL2FwcGxpY2F0aW9uL2V2ZW50cy9BcmdvRXZlbnRQdW1wLmphdmEJKG9yaWdpbmFsKQ0KKysr
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBwbGljYXRpb24vZXZlbnRz
L0FyZ29FdmVudFB1bXAuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEs
NiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAo
YykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkt
MjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBU
aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUg
YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2
MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFp
bGFibGUgYXQNCkBAIC00MCwxMCArNDAsMTEgQEANCiANCiBpbXBvcnQgamF2YS51dGlsLkFycmF5
TGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5n
LkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGph
dmF4LnN3aW5nLlN3aW5nVXRpbGl0aWVzOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxv
Z2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uYXBpLkFyZ29FdmVudExpc3Rl
bmVyOw0KIA0KIC8qKg0KQEAgLTU4LDcgKzU5LDggQEANCiAgICAgLyoqDQogICAgICAqIExvZ2dl
ci4NCiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dn
ZXIuZ2V0TG9nZ2VyKEFyZ29FdmVudFB1bXAuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBm
aW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoQXJnb0V2ZW50UHVt
cC5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvKioNCiAgICAgICogPGNvZGU+bGlzdGVuZXJz
PC9jb2RlPiBjb250YWlucyB0aGUgbGlzdCBvZiByZWdpc3RlciBsaXN0ZW5lcnMuDQpAQCAtMTc2
LDkgKzE3OCw5IEBADQogICAgIHByaXZhdGUgdm9pZCBoYW5kbGVGaXJlTm90YXRpb25FdmVudCgN
CiAgICAgICAgIGZpbmFsIEFyZ29Ob3RhdGlvbkV2ZW50IGV2ZW50LA0KICAgICAgICAgZmluYWwg
QXJnb05vdGF0aW9uRXZlbnRMaXN0ZW5lciBsaXN0ZW5lcikgew0KLSAgICAgICANCisNCiAgICAg
ICAgIC8vIE5vdGF0aW9uIGV2ZW50cyBhcmUgbGlrZWx5IHRvIGNhdXNlIEdFRi9Td2luZyBvcGVy
YXRpb25zLCBzbyB3ZQ0KLSAgICAgICAgLy8gZGlzcGF0Y2ggdGhlbSBvbiB0aGUgU3dpbmcgZXZl
bnQgdGhyZWFkIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCANCisgICAgICAgIC8vIGRpc3BhdGNo
IHRoZW0gb24gdGhlIFN3aW5nIGV2ZW50IHRocmVhZCBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQN
CiAgICAgICAgIC8vIHRoZSByZWNlaXZpbmcgbm90YXRpb25DaGFuZ2VkKCkgbWV0aG9kcyBkb24n
dCBuZWVkIHRvIGRlYWwgd2l0aCBpdA0KICAgICAgICAgaWYgKFN3aW5nVXRpbGl0aWVzLmlzRXZl
bnREaXNwYXRjaFRocmVhZCgpKSB7DQogICAgICAgICAgICAgZmlyZU5vdGF0aW9uRXZlbnRJbnRl
cm5hbChldmVudCwgbGlzdGVuZXIpOw0KQEAgLTE5NCwzMSArMTk2LDMxIEBADQogICAgIHByaXZh
dGUgdm9pZCBmaXJlTm90YXRpb25FdmVudEludGVybmFsKEFyZ29Ob3RhdGlvbkV2ZW50IGV2ZW50
LA0KICAgICAgICAgICAgIEFyZ29Ob3RhdGlvbkV2ZW50TGlzdGVuZXIgbGlzdGVuZXIpIHsNCiAg
ICAgICAgIHN3aXRjaCAoZXZlbnQuZ2V0RXZlbnRUeXBlKCkpIHsNCi0JY2FzZSBBcmdvRXZlbnRU
eXBlcy5OT1RBVElPTl9DSEFOR0VEIDoNCi0JICAgIGxpc3RlbmVyLm5vdGF0aW9uQ2hhbmdlZChl
dmVudCk7DQotCSAgICAvKiBSZW1hcms6IFRoZSBjb2RlIGluIA0KLQkgICAgICogUHJvamVjdFNl
dHRpbmdzLmluaXQoKSBjdXJyZW50bHkgcHJlc3VtZXMNCi0JICAgICAqIHRoYXQgbm9ib2R5IGlz
IHVzaW5nIHRoaXMgZXZlbnQuICovDQotCSAgICBicmVhazsNCisgICAgICAgIGNhc2UgQXJnb0V2
ZW50VHlwZXMuTk9UQVRJT05fQ0hBTkdFRCA6DQorICAgICAgICAgICAgbGlzdGVuZXIubm90YXRp
b25DaGFuZ2VkKGV2ZW50KTsNCisgICAgICAgICAgICAvKiBSZW1hcms6IFRoZSBjb2RlIGluDQor
ICAgICAgICAgICAgICogUHJvamVjdFNldHRpbmdzLmluaXQoKSBjdXJyZW50bHkgcHJlc3VtZXMN
CisgICAgICAgICAgICAgKiB0aGF0IG5vYm9keSBpcyB1c2luZyB0aGlzIGV2ZW50LiAqLw0KKyAg
ICAgICAgICAgIGJyZWFrOw0KIA0KLQljYXNlIEFyZ29FdmVudFR5cGVzLk5PVEFUSU9OX0FEREVE
IDoNCi0JICAgIGxpc3RlbmVyLm5vdGF0aW9uQWRkZWQoZXZlbnQpOw0KLQkgICAgYnJlYWs7DQor
ICAgICAgICBjYXNlIEFyZ29FdmVudFR5cGVzLk5PVEFUSU9OX0FEREVEIDoNCisgICAgICAgICAg
ICBsaXN0ZW5lci5ub3RhdGlvbkFkZGVkKGV2ZW50KTsNCisgICAgICAgICAgICBicmVhazsNCiAN
Ci0JY2FzZSBBcmdvRXZlbnRUeXBlcy5OT1RBVElPTl9SRU1PVkVEIDoNCi0JICAgIGxpc3RlbmVy
Lm5vdGF0aW9uUmVtb3ZlZChldmVudCk7DQotCSAgICBicmVhazsNCisgICAgICAgIGNhc2UgQXJn
b0V2ZW50VHlwZXMuTk9UQVRJT05fUkVNT1ZFRCA6DQorICAgICAgICAgICAgbGlzdGVuZXIubm90
YXRpb25SZW1vdmVkKGV2ZW50KTsNCisgICAgICAgICAgICBicmVhazsNCiANCi0JY2FzZSBBcmdv
RXZlbnRUeXBlcy5OT1RBVElPTl9QUk9WSURFUl9BRERFRCA6DQotCSAgICBsaXN0ZW5lci5ub3Rh
dGlvblByb3ZpZGVyQWRkZWQoZXZlbnQpOw0KLQkgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEFy
Z29FdmVudFR5cGVzLk5PVEFUSU9OX1BST1ZJREVSX0FEREVEIDoNCisgICAgICAgICAgICBsaXN0
ZW5lci5ub3RhdGlvblByb3ZpZGVyQWRkZWQoZXZlbnQpOw0KKyAgICAgICAgICAgIGJyZWFrOw0K
IA0KLQljYXNlIEFyZ29FdmVudFR5cGVzLk5PVEFUSU9OX1BST1ZJREVSX1JFTU9WRUQgOg0KLQkg
ICAgbGlzdGVuZXIubm90YXRpb25Qcm92aWRlclJlbW92ZWQoZXZlbnQpOw0KLQkgICAgYnJlYWs7
DQorICAgICAgICBjYXNlIEFyZ29FdmVudFR5cGVzLk5PVEFUSU9OX1BST1ZJREVSX1JFTU9WRUQg
Og0KKyAgICAgICAgICAgIGxpc3RlbmVyLm5vdGF0aW9uUHJvdmlkZXJSZW1vdmVkKGV2ZW50KTsN
CisgICAgICAgICAgICBicmVhazsNCiANCiAJZGVmYXVsdCA6DQotCSAgICBMT0cuZXJyb3IoIklu
dmFsaWQgZXZlbnQ6IiArIGV2ZW50LmdldEV2ZW50VHlwZSgpKTsNCisgICAgICAgICAgICBMT0cu
bG9nKExldmVsLlNFVkVSRSwgIkludmFsaWQgZXZlbnQ6IiArIGV2ZW50LmdldEV2ZW50VHlwZSgp
KTsNCiAJICAgIGJyZWFrOw0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtMjI3LDcgKzIyOSw3IEBA
DQogICAgICAqIEhhbmRsZSBmaXJpbmcgYSBkaWFncmFtIGFwcGVhcmFuY2UgZXZlbnQuDQogICAg
ICAqIDxwPg0KICAgICAgKiBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIG1hbmFnZWQgb24gYSBwZXIt
ZGlhZ3JhbSBvciBwZXItcHJvamVjdCBiYXNpcy4NCi0gICAgICogDQorICAgICAqDQogICAgICAq
IEBwYXJhbSBldmVudCBUaGUgZXZlbnQgdG8gYmUgZmlyZWQuDQogICAgICAqIEBwYXJhbSBsaXN0
ZW5lciBUaGUgbGlzdGVuZXIuDQogICAgICAqLw0KQEAgLTI0Miw3ICsyNDQsNyBAQA0KICAgICAg
ICAgICAgICAgICAgICAgZmlyZURpYWdyYW1BcHBlYXJhbmNlRXZlbnRJbnRlcm5hbChldmVudCwg
bGlzdGVuZXIpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfSk7DQotICAgICAg
ICB9ICAgICAgICANCisgICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICBwcml2YXRlIHZvaWQgZmly
ZURpYWdyYW1BcHBlYXJhbmNlRXZlbnRJbnRlcm5hbCgNCkBAIC0yNTMsNyArMjU1LDcgQEANCiAg
ICAgICAgICAgICBsaXN0ZW5lci5kaWFncmFtRm9udENoYW5nZWQoZXZlbnQpOw0KICAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICAgZGVmYXVsdCA6DQotICAgICAgICAgICAgTE9HLmVycm9yKCJJ
bnZhbGlkIGV2ZW50OiIgKyBldmVudC5nZXRFdmVudFR5cGUoKSk7DQorICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5TRVZFUkUsICJJbnZhbGlkIGV2ZW50OiIgKyBldmVudC5nZXRFdmVudFR5cGUo
KSk7DQogICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICB9DQogICAgIH0NCkBAIC0yNzcsNyAr
Mjc5LDcgQEANCiAgICAgICAgICAgICBicmVhazsNCiANCiAgICAgICAgIGRlZmF1bHQgOg0KLSAg
ICAgICAgICAgIExPRy5lcnJvcigiSW52YWxpZCBldmVudDoiICsgZXZlbnQuZ2V0RXZlbnRUeXBl
KCkpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiSW52YWxpZCBldmVudDoi
ICsgZXZlbnQuZ2V0RXZlbnRUeXBlKCkpOw0KICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg
fQ0KICAgICB9DQpAQCAtMzEyLDkgKzMxNCw5IEBADQogICAgICAgICBjYXNlIEFyZ29FdmVudFR5
cGVzLlNUQVRVU19QUk9KRUNUX01PRElGSUVEIDoNCiAgICAgICAgICAgICBsaXN0ZW5lci5wcm9q
ZWN0TW9kaWZpZWQoZXZlbnQpOw0KICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0K
Kw0KICAgICAgICAgZGVmYXVsdCA6DQotICAgICAgICAgICAgTE9HLmVycm9yKCJJbnZhbGlkIGV2
ZW50OiIgKyBldmVudC5nZXRFdmVudFR5cGUoKSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5TRVZFUkUsICJJbnZhbGlkIGV2ZW50OiIgKyBldmVudC5nZXRFdmVudFR5cGUoKSk7DQogICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgICB9DQogICAgIH0NCkBAIC0zMzgsNyArMzQwLDcgQEAN
CiAgICAgICAgICAgICBicmVhazsNCiANCiAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAg
TE9HLmVycm9yKCJJbnZhbGlkIGV2ZW50OiIgKyBldmVudC5nZXRFdmVudFR5cGUoKSk7DQorICAg
ICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJJbnZhbGlkIGV2ZW50OiIgKyBldmVudC5n
ZXRFdmVudFR5cGUoKSk7DQogICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICB9DQogICAgIH0N
CkBAIC0zNjYsNyArMzY4LDcgQEANCiAgICAgICAgICAgICBicmVhazsNCiANCiAgICAgICAgIGRl
ZmF1bHQ6DQotICAgICAgICAgICAgTE9HLmVycm9yKCJJbnZhbGlkIGV2ZW50OiIgKyBldmVudC5n
ZXRFdmVudFR5cGUoKSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJJbnZh
bGlkIGV2ZW50OiIgKyBldmVudC5nZXRFdmVudFR5cGUoKSk7DQogICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICB9DQogICAgIH0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvYXBwbGljYXRpb24vaGVscGVycy9SZXNvdXJjZUxvYWRlcldyYXBwZXIu
amF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3Vt
bC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2FwcGxpY2F0aW9uL2hlbHBl
cnMvUmVzb3VyY2VMb2FkZXJXcmFwcGVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9
MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvYXBwbGljYXRpb24vaGVscGVycy9SZXNvdXJjZUxvYWRl
cldyYXBwZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9hcHBsaWNhdGlvbi9oZWxwZXJzL1Jlc291cmNlTG9hZGVyV3JhcHBlci5qYXZh
CTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwIENvbnRyaWJ1
dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9y
cyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQg
dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBh
Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTks
NyArOSw3IEBADQogICogQ29udHJpYnV0b3JzOg0KICAqICAgIFRob21hcyBOZXVzdHVwbnkNCiAg
KiAgICBCb2IgVGFybGluZw0KLSAqICAgIA0KKyAqDQogICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQog
ICoNCiAgKiBTb21lIHBvcnRpb25zIG9mIHRoaXMgZmlsZSB3YXMgcHJldmlvdXNseSByZWxlYXNl
IHVzaW5nIHRoZSBCU0QgTGljZW5zZToNCkBAIC00NCwxMiArNDQsMTMgQEANCiBpbXBvcnQgamF2
YS51dGlsLkhhc2hNYXA7DQogaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7DQogaW1wb3J0IGph
dmEudXRpbC5NYXA7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBq
YXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5nLkljb247DQog
aW1wb3J0IGphdmF4LnN3aW5nLkltYWdlSWNvbjsNCiBpbXBvcnQgamF2YXguc3dpbmcuVUlNYW5h
Z2VyOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFy
Z291bWwuaTE4bi5UcmFuc2xhdG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5EYXRhVHlw
ZXNIZWxwZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLkludmFsaWRFbGVtZW50RXhjZXB0
aW9uOw0KQEAgLTYyLDcgKzYzLDcgQEANCiAgKiBOZWNlc3Nhcnkgc2luY2UgQXJnb1VNTCBuZWVk
cyBzb21lIGV4dHJhIGluaXQuDQogICoNCiAgKiBAc2luY2UgTm92IDI0LCAyMDAyDQotICogQGF1
dGhvciBqYWFwLmJyYW5kZXJob3JzdEB4czRhbGwubmwgDQorICogQGF1dGhvciBqYWFwLmJyYW5k
ZXJob3JzdEB4czRhbGwubmwNCiAgKiBAc3RlcmVvdHlwZSBzaW5nbGV0b24NCiAgKi8NCiBwdWJs
aWMgZmluYWwgY2xhc3MgUmVzb3VyY2VMb2FkZXJXcmFwcGVyIHsNCkBAIC03MSw3ICs3Miw3IEBA
DQogICAgICAqIExvZ2dlci4NCiAgICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExv
Z2dlciBMT0cgPQ0KLSAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihSZXNvdXJjZUxvYWRlcldyYXBw
ZXIuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihSZXNvdXJjZUxvYWRlcldyYXBw
ZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBzdGF0aWMgSW1hZ2VJY29uIGlu
aXRpYWxTdGF0ZUljb247DQogICAgIHByaXZhdGUgc3RhdGljIEltYWdlSWNvbiBkZWVwSWNvbjsN
CkBAIC0xNzksNyArMTgwLDcgQEANCiAgICAgICAgICAgICAgICAgLmFkZFJlc291cmNlTG9jYXRp
b24oIi9vcmcvYXJnb3VtbC9JbWFnZXMiKTsNCiAgICAgICAgIG9yZy50aWdyaXMuZ2VmLnV0aWwu
UmVzb3VyY2VMb2FkZXINCiAgICAgICAgICAgICAgICAgLmFkZFJlc291cmNlTG9jYXRpb24oIi9v
cmcvdGlncmlzL2dlZi9JbWFnZXMiKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgaW5pdGlhbFN0
YXRlSWNvbiA9IFJlc291cmNlTG9hZGVyLmxvb2t1cEljb25SZXNvdXJjZSgiSW5pdGlhbCIpOw0K
ICAgICAgICAgZGVlcEljb24gPSBSZXNvdXJjZUxvYWRlci5sb29rdXBJY29uUmVzb3VyY2UoIkRl
ZXBIaXN0b3J5Iik7DQogICAgICAgICBzaGFsbG93SWNvbiA9IFJlc291cmNlTG9hZGVyLmxvb2t1
cEljb25SZXNvdXJjZSgiU2hhbGxvd0hpc3RvcnkiKTsNCkBAIC0xOTQsOSArMTk1LDkgQEANCiAg
ICAgfQ0KIA0KICAgICAvKioNCi0gICAgICogVGhpcyBwdWJsaWMgb3BlcmF0aW9uIGlzIG5lZWRl
ZCANCisgICAgICogVGhpcyBwdWJsaWMgb3BlcmF0aW9uIGlzIG5lZWRlZA0KICAgICAgKiB0byBh
bGxvdyBtb2R1bGVzIHRvIGFkZCB0aGVpciBvd24gaW1hZ2VzLg0KLSAgICAgKiANCisgICAgICoN
CiAgICAgICogQHBhcmFtIGxvY2F0aW9uIHRoZSBwYXRoIHdlcmUgdGhlIGltYWdlcyBhcmUNCiAg
ICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhZGRSZXNvdXJjZUxvY2F0aW9uKFN0cmlu
ZyBsb2NhdGlvbikgew0KQEAgLTI1NiwxMCArMjU3LDEwIEBADQogICAgICAgICB9DQogDQogICAg
ICAgICBJY29uIGljb24gPSBpY29uQ2FjaGUuZ2V0KHZhbHVlLmdldENsYXNzKCkpOw0KLSAgICAg
ICAgDQorDQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUo
KS5pc0FQc2V1ZG9zdGF0ZSh2YWx1ZSkpIHsNCi0gICAgICAgICAgICAgICAgDQorDQogICAgICAg
ICAgICAgICAgIE9iamVjdCBraW5kID0gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0S2luZCh2YWx1ZSk7
DQogICAgICAgICAgICAgICAgIERhdGFUeXBlc0hlbHBlciBoZWxwZXIgPSBNb2RlbC5nZXREYXRh
VHlwZXNIZWxwZXIoKTsNCiAgICAgICAgICAgICAgICAgaWYgKGhlbHBlci5lcXVhbHNJTklUSUFM
S2luZChraW5kKSkgew0KQEAgLTI4Niw3ICsyODcsNyBAQA0KICAgICAgICAgICAgICAgICAvLyBp
ZiAoTVBzZXVkb3N0YXRlS2luZC5GSU5BTC5lcXVhbHMoa2luZCkpDQogICAgICAgICAgICAgICAg
IC8vIGljb24gPSBfRmluYWxTdGF0ZUljb247DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgICAg
IA0KKw0KICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FBYnN0cmFjdGlvbih2
YWx1ZSkpIHsNCiAgICAgICAgICAgICAgICAgaWNvbiA9IHJlYWxpemVJY29uOw0KICAgICAgICAg
ICAgIH0NCkBAIC0yOTgsMjcgKzI5OSwyOCBAQA0KICAgICAgICAgICAgICAgICAgICAgaWNvbiA9
IHNpZ25hbEljb247DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQotICAgICAg
ICAgICAgDQorDQogICAgICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUNvbW1lbnQo
dmFsdWUpKSB7DQogICAgICAgICAgICAgICAgIGljb24gPSBjb21tZW50SWNvbjsNCiAgICAgICAg
ICAgICB9DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgaWYgKGljb24gPT0gbnVsbCkg
ew0KLSAgICAgICAgICAgICAgICANCisNCiAgICAgICAgICAgICAgICAgU3RyaW5nIGNOYW1lID0g
TW9kZWwuZ2V0TWV0YVR5cGVzKCkuZ2V0TmFtZSh2YWx1ZSk7DQotICAgICAgICAgICAgICAgIA0K
Kw0KICAgICAgICAgICAgICAgICBpY29uID0gbG9va3VwSWNvblJlc291cmNlKGNOYW1lKTsNCiAg
ICAgICAgICAgICAgICAgaWYgKGljb24gPT0gbnVsbCkgew0KLSAgICAgICAgICAgICAgICAgICAg
TE9HLmRlYnVnKCJDYW4ndCBmaW5kIGljb24gZm9yICIgKyBjTmFtZSk7DQorICAgICAgICAgICAg
ICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDYW4ndCBmaW5kIGljb24gZm9yIHswfSIsIGNOYW1lKTsNCiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAoaWNvbkNhY2hlKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNhY2hlLnB1dCh2YWx1ZS5nZXRDbGFzcygpLCBp
Y29uKTsNCiAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgfQ0KLSAgICAg
ICAgICAgICAgICANCisNCiAgICAgICAgICAgICB9DQogICAgICAgICB9IGNhdGNoIChJbnZhbGlk
RWxlbWVudEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmRlYnVnKCJBdHRlbXB0ZWQg
dG8gZ2V0IGljb24gZm9yIGRlbGV0ZWQgZWxlbWVudCIpOw0KKyAgICAgICAgICAgIExPRy5sb2co
TGV2ZWwuRklORSwgIkF0dGVtcHRlZCB0byBnZXQgaWNvbiBmb3IgZGVsZXRlZCBlbGVtZW50Iik7
DQogICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4g
aWNvbjsNCkBAIC00ODksMTAgKzQ5MSwxMCBAQA0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJu
IGZvdW5kOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogRmluZCB0aGUgcGF0
aCB0byBhIGdpdmVuIGljb24gYW5kIHJldHVybiBpdCBhcyBhIFVSTC4NCi0gICAgICogDQorICAg
ICAqDQogICAgICAqIEBwYXJhbSBuYW1lIGJhc2UgbmFtZSBvZiB0aGUgaWNvbiB0byBzZWFyY2gg
Zm9yDQogICAgICAqIEBwYXJhbSBsb2FkZXIgY2xhc3MgbG9hZGVyIHRvIHVzZSBvciBudWxsIHRv
IHVzZSB0aGUgZGVmYXVsdCBjbGFzcyBsb2FkZXINCiAgICAgICogQHJldHVybiB0aGUgVVJMIHdo
ZXJlIHRoZSBpY29uIHdhcyBmb3VuZA0KQEAgLTUwMCwxMCArNTAyLDEwIEBADQogICAgIHB1Ymxp
YyBzdGF0aWMgVVJMIGxvb2t1cEljb25VcmwoU3RyaW5nIG5hbWUsIENsYXNzTG9hZGVyIGxvYWRl
cikgew0KICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyLmxvb2t1cEljb25VcmwobmFtZSwg
bG9hZGVyKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEZpbmQgdGhlIHBh
dGggdG8gYSBnaXZlbiBpY29uIGFuZCByZXR1cm4gaXQgYXMgYSBVUkwuDQotICAgICAqIA0KKyAg
ICAgKg0KICAgICAgKiBAcGFyYW0gbmFtZSBiYXNlIG5hbWUgb2YgdGhlIGljb24gdG8gc2VhcmNo
IGZvcg0KICAgICAgKiBAcmV0dXJuIHRoZSBVUkwgd2hlcmUgdGhlIGljb24gd2FzIGZvdW5kDQog
ICAgICAqLw0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvQWdlbmN5LmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9z
b3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvQWdlbmN5LmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYm
cjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL0FnZW5jeS5qYXZhCShvcmlnaW5hbCkNCisrKyB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9BZ2VuY3kuamF2
YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3Jz
IC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0g
c2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUg
YWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29t
cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDYsOCAr
NDYsOCBAQA0KIGltcG9ydCBqYXZhLnV0aWwuT2JzZXJ2YWJsZTsNCiBpbXBvcnQgamF2YS51dGls
Lk9ic2VydmVyOw0KIGltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KLQ0KLWltcG9ydCBvcmcuYXBhY2hl
LmxvZzRqLkxvZ2dlcjsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0
IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiAvKioNCiAgKiBBZ2VuY3kgbWFuYWdlcyBD
cml0aWNzLiAgU2luY2UgY2xhc3NlcyBhcmUgbm90IHJlYWxseSBmaXJzdCBjbGFzcw0KQEAgLTY3
LDkgKzY3LDkgQEANCiAgKiByZWxldmFudCB0byB0aG9zZSBtYW5pcHVsYXRpb25zIHRvIGJlIGFw
cGxpZWQuICBUaGlzIHRyYW5zaXRpb24gaXMNCiAgKiBzdGlsbCBoYWxmIGRvbmUuICBUcmlnZ2Vy
cyBhcmUgdGhlIGNyaXRpcXVpbmcgcmVxdWVzdHMuICBUaGUgY29kZQ0KICAqIGZvciB0cmlnZ2Vy
cyBpcyBjdXJyZW50bHkgZG9ybWFudCAobGF0ZW50PykuPHA+DQotICogDQorICoNCiAgKiBUT0RP
OiBUaGVyZSBpcyBhIHN0cm9uZyBkZXBlbmRlbmN5IGN5Y2xlIGJldHdlZW4gQWdlbmN5IGFuZCBE
ZXNpZ25lci4gIFRoZXkNCi0gKiBlaXRoZXIgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIHNpbmds
ZSBjbGFzcyBvciBwYXJ0aXRpb25lZCBkaWZmZXJlbnRseSwgDQorICogZWl0aGVyIG5lZWQgdG8g
YmUgbWVyZ2VkIGludG8gYSBzaW5nbGUgY2xhc3Mgb3IgcGFydGl0aW9uZWQgZGlmZmVyZW50bHks
DQogICogcGVyaGFwcyB1c2luZyBhbiBpbnRlcmZhY2UgdG8gYnJlYWsgdGhlIGN5Y2xlLiAgVGhl
IERlc2lnbmVyIHNpbmdsZXRvbiBnZXRzDQogICogcGFzc2VkIHRvIGFsbW9zdCBldmVyeSBzaW5n
bGUgcGFydCBvZiB0aGUgQ3JpdGljIHN1YnN5c3RlbSwgY3JlYXRpbmcgc3Ryb25nDQogICogY291
cGxpbmcgdGhyb3VnaG91dC4gLSB0Zm0gMjAwNzA2MjANCkBAIC04MCwxNiArODAsMTYgQEANCiAg
ICAgLyoqDQogICAgICAqIExvZ2dlci4NCiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIGZp
bmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKEFnZW5jeS5jbGFzcyk7DQorICAgIHBy
aXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKEFnZW5jeS5j
bGFzcy5nZXROYW1lKCkpOw0KIA0KIA0KICAgICAvKioNCiAgICAgICogQSByZWdpc3RyeSBvZiBh
bGwgY3JpdGljcyB0aGF0IGFyZSBjdXJyZW50bHkgbG9hZGVkIGludG8gdGhlDQogICAgICAqIGRl
c2lnbiBlbnZpcm9ubWVudC4NCiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIEhhc2h0YWJs
ZTxDbGFzcywgTGlzdDxDcml0aWM+PiBjcml0aWNSZWdpc3RyeSA9IA0KKyAgICBwcml2YXRlIHN0
YXRpYyBIYXNodGFibGU8Q2xhc3MsIExpc3Q8Q3JpdGljPj4gY3JpdGljUmVnaXN0cnkgPQ0KICAg
ICAgICAgbmV3IEhhc2h0YWJsZTxDbGFzcywgTGlzdDxDcml0aWM+PigxMDApOw0KLSAgICANCisN
CiAgICAgcHJpdmF0ZSBzdGF0aWMgTGlzdDxDcml0aWM+IGNyaXRpY3MgPSBuZXcgQXJyYXlMaXN0
PENyaXRpYz4oKTsNCiANCiAgICAgLyoqDQpAQCAtOTcsOCArOTcsOCBAQA0KICAgICAgKiBiZSBh
Y3RpdmUuDQogICAgICAqLw0KICAgICBwcml2YXRlIENvbnRyb2xNZWNoIGNvbnRyb2xNZWNoOw0K
LSAgICANCi0gICAgcHJpdmF0ZSBzdGF0aWMgSGFzaHRhYmxlPFN0cmluZywgQ3JpdGljPiBzaW5n
bGV0b25Dcml0aWNzID0gDQorDQorICAgIHByaXZhdGUgc3RhdGljIEhhc2h0YWJsZTxTdHJpbmcs
IENyaXRpYz4gc2luZ2xldG9uQ3JpdGljcyA9DQogICAgICAgICBuZXcgSGFzaHRhYmxlPFN0cmlu
ZywgQ3JpdGljPig0MCk7DQogDQogDQpAQCAtMTMwLDcgKzEzMCw3IEBADQogICAgICAqIHRoZUFn
ZW5jeSBpcyBhY3R1YWxseSBzdG9yZWQgaW4gPGNvZGU+RGVzaWduZXIudGhlRGVzaWduZXIoKTwv
Y29kZT4uDQogICAgICAqDQogICAgICAqIEBzZWUgRGVzaWduZXIjdGhlRGVzaWduZXINCi0gICAg
ICogDQorICAgICAqDQogICAgICAqIEByZXR1cm4gQWdlbmN5IHRoZSBBZ2VuY3kgaW5zdGFuY2UN
CiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgQWdlbmN5IHRoZUFnZW5jeSgpIHsNCkBAIC0x
ODIsNyArMTgyLDcgQEANCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgZG1DbGFzcyA9IENs
YXNzLmZvck5hbWUoZG1DbGFzc05hbWUpOw0KICAgICAgICAgfSBjYXRjaCAoamF2YS5sYW5nLkNs
YXNzTm90Rm91bmRFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgIExPRy5lcnJvcigiRXJyb3Ig
bG9hZGluZyBkbSAiICsgZG1DbGFzc05hbWUsIGUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2
ZWwuU0VWRVJFLCAiRXJyb3IgbG9hZGluZyBkbSAiICsgZG1DbGFzc05hbWUsIGUpOw0KICAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgIH0NCiAgICAgICAgIENyaXRpYyBjciA9IHNpbmdsZXRv
bkNyaXRpY3MuZ2V0KGNyQ2xhc3NOYW1lKTsNCkBAIC0xOTEsMTYgKzE5MSwxNiBAQA0KICAgICAg
ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgIGNyQ2xhc3MgPSBDbGFzcy5mb3JOYW1lKGNy
Q2xhc3NOYW1lKTsNCiAgICAgICAgICAgICB9IGNhdGNoIChqYXZhLmxhbmcuQ2xhc3NOb3RGb3Vu
ZEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAgIExPRy5lcnJvcigiRXJyb3IgbG9hZGlu
ZyBjciAiICsgY3JDbGFzc05hbWUsIGUpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVs
LlNFVkVSRSwgIkVycm9yIGxvYWRpbmcgY3IgIiArIGNyQ2xhc3NOYW1lLCBlKTsNCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB0cnkgew0KICAg
ICAgICAgICAgICAgICBjciA9IChDcml0aWMpIGNyQ2xhc3MubmV3SW5zdGFuY2UoKTsNCiAgICAg
ICAgICAgICB9IGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlKSB7DQot
ICAgICAgICAgICAgICAgIExPRy5lcnJvcigiRXJyb3IgaW5zdGFuY2F0aW5nIGNyICIgKyBjckNs
YXNzTmFtZSwgZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXJy
b3IgaW5zdGFuY2F0aW5nIGNyICIgKyBjckNsYXNzTmFtZSwgZSk7DQogICAgICAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgICAgICB9IGNhdGNoIChqYXZhLmxhbmcuSW5zdGFudGlhdGlvbkV4
Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAgIExPRy5lcnJvcigiRXJyb3IgaW5zdGFuY2F0
aW5nIGNyICIgKyBjckNsYXNzTmFtZSwgZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2
ZWwuU0VWRVJFLCAiRXJyb3IgaW5zdGFuY2F0aW5nIGNyICIgKyBjckNsYXNzTmFtZSwgZSk7DQog
ICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAgc2lu
Z2xldG9uQ3JpdGljcy5wdXQoY3JDbGFzc05hbWUsIGNyKTsNCkBAIC0yMjgsNyArMjI4LDcgQEAN
CiAgICAgICAgIGlmICghdGhlQ3JpdGljcy5jb250YWlucyhjcikpIHsNCiAgICAgICAgICAgICB0
aGVDcml0aWNzLmFkZChjcik7DQogICAgICAgICAgICAgbm90aWZ5U3RhdGljT2JzZXJ2ZXJzKGNy
KTsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIlJlZ2lzdGVyZWQ6ICIgKyB0aGVDcml0aWNzLnRv
U3RyaW5nKCkpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIlJlZ2lzdGVyZWQ6
IHswfSIsIHRoZUNyaXRpY3MgKTsNCiAgICAgICAgICAgICBjYWNoZWRDcml0aWNzLnJlbW92ZShj
bGF6eik7DQogICAgICAgICAgICAgYWRkQ3JpdGljKGNyKTsNCiAgICAgICAgIH0NCkBAIC0yNDIs
MjEgKzI0MiwyMSBAQA0KICAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXIoQ3JpdGljIGNy
LCBPYmplY3QgY2xhenopIHsNCiAgICAgICAgIHJlZ2lzdGVyKGNyLCAoQ2xhc3MpIGNsYXp6KTsN
CiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIFJlZ2lzdGVyIGEgY3JpdGljIGlu
IHRoZSBnbG9iYWwgdGFibGUgb2YgY3JpdGljcyB0aGF0IGhhdmUgYmVlbg0KICAgICAgKiBsb2Fk
ZWQuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gY3IgdGhlIGNyaXRpYyB0byBy
ZWdpc3Rlcg0KICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKENyaXRp
YyBjcikgew0KICAgICAgICAgU2V0PE9iamVjdD4gbWV0YXMgPSBjci5nZXRDcml0aWNpemVkRGVz
aWduTWF0ZXJpYWxzKCk7DQogICAgICAgICBmb3IgKE9iamVjdCBtZXRhIDogbWV0YXMpIHsNCi0g
ICAgICAgICAgICByZWdpc3RlcihjciwgbWV0YSk7ICAgICAgICAgICAgDQorICAgICAgICAgICAg
cmVnaXN0ZXIoY3IsIG1ldGEpOw0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0KLSAgICBwcml2
YXRlIHN0YXRpYyBIYXNodGFibGU8Q2xhc3MsIENvbGxlY3Rpb248Q3JpdGljPj4gY2FjaGVkQ3Jp
dGljcyA9IA0KKw0KKyAgICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGU8Q2xhc3MsIENvbGxlY3Rp
b248Q3JpdGljPj4gY2FjaGVkQ3JpdGljcyA9DQogICAgICAgICBuZXcgSGFzaHRhYmxlPENsYXNz
LCBDb2xsZWN0aW9uPENyaXRpYz4+KCk7DQogDQogICAgIC8qKg0KQEAgLTM1NSw3ICszNTUsNyBA
QA0KICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgYy5jcml0aXF1
ZShkbSwgZCk7DQogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgew0KLSAg
ICAgICAgICAgICAgICAgICAgTE9HLmVycm9yKCJEaXNhYmxpbmcgY3JpdGlxdWUgZHVlIHRvIGV4
Y2VwdGlvblxuIg0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJE
aXNhYmxpbmcgY3JpdGlxdWUgZHVlIHRvIGV4Y2VwdGlvblxuIg0KIAkJCSAgICAgICsgYyArICJc
biIgKyBkbSwNCiAJCQkgICAgICBleCk7DQogICAgICAgICAgICAgICAgICAgICBjLnNldEVuYWJs
ZWQoZmFsc2UpOw0KQEAgLTM3MSw4ICszNzEsOCBAQA0KICAgICAgKiBOb3RlOiBJIGFtIHNldHRp
bmcgZ2xvYmFsIGRhdGEsIGkuZS4gdGhlDQogICAgICAqIGlzRW5hYmxlZCBiaXQgaW4gZWFjaCBj
cml0aWMsIGJhc2VkIG9uIHRoZSBuZWVkcyBvZiBvbmUgZGVzaWduZXIuDQogICAgICAqIEkgZG9u
J3QgcmVhbGx5IHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBEZXNpZ25lci4NCi0gICAgICogV2hpY2gg
aXMgd2h5IGVhY2ggZGVzaWduZXIgDQotICAgICAqIChpZiB3ZSB3b3VsZCBzdXBwb3J0IG1vcmUg
dGhhbiBvbmUgZGVzaWduZXIpIA0KKyAgICAgKiBXaGljaCBpcyB3aHkgZWFjaCBkZXNpZ25lcg0K
KyAgICAgKiAoaWYgd2Ugd291bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIGRlc2lnbmVyKQ0KICAg
ICAgKiBoYXMgaGlzIG93biBBZ2VuY3kuDQogICAgICAqDQogICAgICAqIFRPRE86IHNob3VsZCBs
b29wIG92ZXIgc2ltcGxlciBsaXN0IG9mIGNyaXRpY3MsIG5vdCBDb21wb3VuZENyaXRpY3MNCg0K
TW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZl
L0NyaXRpYy5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dz
ZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZl
L0NyaXRpYy5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL2NvZ25pdGl2ZS9Dcml0aWMuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvQ3JpdGljLmphdmEJMjAxMi0xMi0z
MCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxv
dw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0K
ICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu
ZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlz
IGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQ1LDEwICs0NSwxMSBAQA0K
IGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLk9ic2VydmFibGU7DQog
aW1wb3J0IGphdmEudXRpbC5TZXQ7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0K
K2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5n
Lkljb247DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcu
YXJnb3VtbC5hcHBsaWNhdGlvbi5oZWxwZXJzLkFwcGxpY2F0aW9uVmVyc2lvbjsNCiBpbXBvcnQg
b3JnLmFyZ291bWwuYXBwbGljYXRpb24uaGVscGVycy5SZXNvdXJjZUxvYWRlcldyYXBwZXI7DQog
aW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5jcml0aWNzLlNub296ZU9yZGVyOw0KQEAgLTcw
LDE0ICs3MSwxNCBAQA0KICAqDQogICogQGF1dGhvciBKYXNvbiBSb2JiaW5zDQogICovDQotcHVi
bGljIGNsYXNzIENyaXRpYyANCi0gICAgZXh0ZW5kcyBPYnNlcnZhYmxlIA0KK3B1YmxpYyBjbGFz
cyBDcml0aWMNCisgICAgZXh0ZW5kcyBPYnNlcnZhYmxlDQogICAgIGltcGxlbWVudHMgUG9zdGVy
LCBTZXJpYWxpemFibGUgew0KIA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8N
Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIo
Q3JpdGljLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExv
Z2dlci5nZXRMb2dnZXIoQ3JpdGljLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8N
CiAgICAgLy8gY29uc3RhbnRzDQpAQCAtMTc0LDkgKzE3NSw5IEBADQogCWNsc05hbWUgPSBjbHNO
YW1lLnN1YnN0cmluZyhjbHNOYW1lLmxhc3RJbmRleE9mKCIuIikgKyAxKTsNCiAJU3RyaW5nIHNp
bmdsZVZlcnNpb25VUkwgPQ0KIAkgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgidGFiLmhlbHAucGF0
aC5tYW51YWxjcml0aWMiKQ0KLQkgICAgKyAibWFudWFsLSIgDQorCSAgICArICJtYW51YWwtIg0K
IAkgICAgKyBBcHBsaWNhdGlvblZlcnNpb24uZ2V0U3RhYmxlVmVyc2lvbigpDQotCSAgICArICIt
c2luZ2xlL2FyZ29tYW51YWwuaHRtbCI7IA0KKwkgICAgKyAiLXNpbmdsZS9hcmdvbWFudWFsLmh0
bWwiOw0KIAlyZXR1cm4gc2luZ2xlVmVyc2lvblVSTCArICIjY3JpdGljcy4iICsgY2xzTmFtZTsN
CiAgICAgfQ0KIA0KQEAgLTI0Nyw3ICsyNDgsNyBAQA0KICAgICAgKiBDb250cm9sIHJlY29yZHMg
dXNlZCBpbiBkZXRlcm1pbmluZyBpZiB0aGlzIENyaXRpYyBzaG91bGQgYmUNCiAgICAgICogYWN0
aXZlLg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBIYXNodGFibGU8U3RyaW5nLCBPYmplY3Q+IGNv
bnRyb2xSZWNzID0gDQorICAgIHByaXZhdGUgSGFzaHRhYmxlPFN0cmluZywgT2JqZWN0PiBjb250
cm9sUmVjcyA9DQogICAgICAgICBuZXcgSGFzaHRhYmxlPFN0cmluZywgT2JqZWN0PigpOw0KIA0K
ICAgICBwcml2YXRlIExpc3RTZXQ8U3RyaW5nPiBrbm93bGVkZ2VUeXBlcyA9IG5ldyBMaXN0U2V0
PFN0cmluZz4oKTsNCkBAIC0yODIsNyArMjgzLDcgQEANCiANCiAJbW9yZUluZm9VUkwgPSBkZWZh
dWx0TW9yZUluZm9VUkwoKTsNCiAJZGVzY3JpcHRpb24gPSBUcmFuc2xhdG9yLmxvY2FsaXplKCJt
aXNjLmNyaXRpYy5uby1kZXNjcmlwdGlvbiIpOw0KLQloZWFkbGluZSA9IFRyYW5zbGF0b3IubWVz
c2FnZUZvcm1hdCgibWlzYy5jcml0aWMuZGVmYXVsdC1oZWFkbGluZSIsIA0KKwloZWFkbGluZSA9
IFRyYW5zbGF0b3IubWVzc2FnZUZvcm1hdCgibWlzYy5jcml0aWMuZGVmYXVsdC1oZWFkbGluZSIs
DQogCSAgICAgICAgbmV3IE9iamVjdFtdIHtnZXRDbGFzcygpLmdldE5hbWUoKX0pOw0KIAlwcmlv
cml0eSA9IFRvRG9JdGVtLk1FRF9QUklPUklUWTsNCiAgICAgfQ0KQEAgLTM4MCwxMyArMzgxLDEz
IEBADQogCS8vIGxpbmUgaW4gdGhlIHdob2xlIG9mIEFyZ29VTUwuIEl0IGFsbG9jYXRlcyBhcHBy
b3hpbWF0ZWx5IDE4JSBvZg0KIAkvLyBhbGwgbWVtb3J5IGFsbG9jYXRlZC4NCiAJLy8gU3VnZ2Vz
dGlvbnMgZm9yIHNvbHV0aW9uczoNCi0JLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSBMT0cuZGVidWco
U3RyaW5nLCBTdHJpbmcpIG1ldGhvZCB0aGF0IGNhbg0KKyAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMg
YSBMT0cubG9nKExldmVsLkZJTkUsU3RyaW5nLCBTdHJpbmcpIG1ldGhvZCB0aGF0IGNhbg0KIAkv
LyBiZSB1c2VkIGluc3RlYWQuDQogCS8vIFVzZSB0d28gY2FsbHMuDQogCS8vIEZvciBub3cgSSAo
TGludXMpIGp1c3QgY29tbWVudCBpdCBvdXQuDQotCS8vIExPRy5kZWJ1ZygiYXBwbHlpbmcgY3Jp
dGljOiAiICsgX2hlYWRsaW5lKTsNCisgIC8vIExPRy5sb2coTGV2ZWwuRklORSwgImFwcGx5aW5n
IGNyaXRpYzogIiArIF9oZWFkbGluZSk7DQogCWlmIChwcmVkaWNhdGUoZG0sIGRzZ3IpKSB7DQot
CSAgICAvLyBMT0cuZGVidWcoInByZWRpY2F0ZSgpIHJldHVybmVkIHRydWUsIGNyZWF0aW5nIFRv
RG9JdGVtIik7DQorICAgICAgLy8gTE9HLmxvZyhMZXZlbC5GSU5FLCAicHJlZGljYXRlKCkgcmV0
dXJuZWQgdHJ1ZSwgY3JlYXRpbmcgVG9Eb0l0ZW0iKTsNCiAJICAgIFRvRG9JdGVtIGl0ZW0gPSB0
b0RvSXRlbShkbSwgZHNncik7DQogCSAgICBwb3N0SXRlbShpdGVtLCBkbSwgZHNncik7DQogCX0N
CkBAIC00NDcsNyArNDQ4LDcgQEANCiAgICAgICovDQogICAgIHB1YmxpYyBib29sZWFuIHN0aWxs
VmFsaWQoVG9Eb0l0ZW0gaSwgRGVzaWduZXIgZHNncikgew0KIAlpZiAoIWlzQWN0aXZlKCkpIHsN
Ci0JICAgIExPRy53YXJuKCJnb3QgdG8gc3RpbGx2YWxpZCB3aGlsZSBub3QgYWN0aXZlIik7DQor
ICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAiZ290IHRvIHN0aWxsdmFsaWQgd2hpbGUgbm90
IGFjdGl2ZSIpOw0KIAkgICAgcmV0dXJuIGZhbHNlOw0KIAl9DQogCWlmIChpLmdldE9mZmVuZGVy
cygpLnNpemUoKSAhPSAxKSB7DQpAQCAtNDc4LDcgKzQ3OSw3IEBADQogICAgIHB1YmxpYyBMaXN0
PERlY2lzaW9uPiBnZXRTdXBwb3J0ZWREZWNpc2lvbnMoKSB7DQogICAgICAgICByZXR1cm4gc3Vw
cG9ydGVkRGVjaXNpb25zOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogQHBh
cmFtIGQgdGhlIGRlY2lzaW9uDQogICAgICAqLw0KQEAgLTY0OSw4ICs2NTAsOCBAQA0KICAgICAg
ICAgICAgIG5vdGlmeU9ic2VydmVycyh0aGlzKTsNCiAJfQ0KICAgICB9DQotICAgIA0KLSAgICAN
CisNCisNCiANCiAgICAgLyoqDQogICAgICAqIEFkZCBzb21lIGF0dHJpYnV0ZSB1c2VkIGJ5IENv
bnRyb2xNZWNoIHRvIGRldGVybWluZSBpZiB0aGlzDQpAQCAtNjg5LDcgKzY5MCw3IEBADQogICAg
ICAqIEByZXR1cm4gdHJ1ZSBpZiBlbmFibGVkDQogICAgICAqLw0KICAgICBwdWJsaWMgYm9vbGVh
biBpc0VuYWJsZWQoKSB7DQotICAgICAgICBpZiAodGhpcy5nZXRDcml0aWNOYW1lKCkgIT0gbnVs
bCANCisgICAgICAgIGlmICh0aGlzLmdldENyaXRpY05hbWUoKSAhPSBudWxsDQogICAgICAgICAg
ICAgICAgICYmIHRoaXMuZ2V0Q3JpdGljTmFtZSgpLmVxdWFscygiQ3JOb0d1YXJkIikpIHsNCiAg
ICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsNCiAgICAgICAgIH0NCkBAIC03
MjcsOCArNzI4LDggQEANCiAgICAgICogQ2hlY2tzIGlmIHRoZSBjcml0aWMgaXMgY3VycmVudGx5
IHNub296ZWQuDQogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY3JpdGljIGlzIHNub296ZWQN
CiAgICAgICovDQotICAgIHB1YmxpYyBib29sZWFuIGlzU25vb3plZCgpIHsgDQotICAgICAgICBy
ZXR1cm4gc25vb3plT3JkZXIoKS5nZXRTbm9vemVkKCk7IA0KKyAgICBwdWJsaWMgYm9vbGVhbiBp
c1Nub296ZWQoKSB7DQorICAgICAgICByZXR1cm4gc25vb3plT3JkZXIoKS5nZXRTbm9vemVkKCk7
DQogICAgIH0NCiANCiAgICAgLyoqDQpAQCAtNzk0LDkgKzc5NSw5IEBADQogICAgICAgICAgICAg
ICAgIGluaXRXaXphcmQodyk7DQogICAgICAgICAgICAgICAgIHJldHVybiB3Ow0KICAgICAgICAg
ICAgIH0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gaWxsRXgpIHsNCi0gICAgICAgICAg
ICAgICAgTE9HLmVycm9yKCJDb3VsZCBub3QgYWNjZXNzIHdpemFyZDogIiwgaWxsRXgpOw0KKyAg
ICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkNvdWxkIG5vdCBhY2Nlc3Mgd2l6
YXJkOiAiLCBpbGxFeCk7DQogICAgICAgICAgICAgfSBjYXRjaCAoSW5zdGFudGlhdGlvbkV4Y2Vw
dGlvbiBpbnN0RXgpIHsNCi0gICAgICAgICAgICAgICAgTE9HLmVycm9yKCJDb3VsZCBub3QgaW5z
dGFudGlhdGUgd2l6YXJkOiAiLCBpbnN0RXgpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExl
dmVsLlNFVkVSRSwgIkNvdWxkIG5vdCBpbnN0YW50aWF0ZSB3aXphcmQ6ICIsIGluc3RFeCk7DQog
ICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJuIG51bGw7DQpAQCAtOTgw
LDE0ICs5ODEsMTQgQEANCiANCiAgICAgLyoqDQogICAgICAqICBHZXQgdGhlIGRlc2lnbiBtYXRl
cmlhbHMgdG8gYmUgY3JpdGljaXplZCBieSB0aGlzIGNyaXRpYw0KLSAgICAgKiANCisgICAgICoN
CiAgICAgICogQHJldHVybiB0aGUgZGVzaWduIG1hdGVyaWFscw0KICAgICAgKi8NCiAgICAgcHVi
bGljIFNldDxPYmplY3Q+IGdldENyaXRpY2l6ZWREZXNpZ25NYXRlcmlhbHMoKSB7DQogICAgICAg
ICBTZXQ8T2JqZWN0PiByZXQgPSBuZXcgSGFzaFNldDxPYmplY3Q+KCk7DQogICAgICAgICByZXR1
cm4gcmV0Ow0KICAgICB9DQotICAgICAgICANCisNCiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAgICAvLyBkZXNp
Z24gZmVlZGJhY2sNCiANCkBAIC0xMDAwLDcgKzEwMDEsNyBAQA0KICAgICAgKg0KICAgICAgKiBU
T0RPOiBDcml0aWMncyBtYXkgd2FudCB0byBhZGQgbmV3IGZpZWxkcyB0byBhDQogICAgICAqIFRv
RG9JdGVtIHRvIG1ha2Ugc3RpbGxWYWxpZCBtb3JlIGVmZmljZW50Lg0KLSAgICAgKiANCisgICAg
ICoNCiAgICAgICogQHNlZSBDcml0aWMjY3JpdGlxdWUNCiAgICAgICoNCiAgICAgICogQHBhcmFt
IGRtIHRoZSBvZmZlbmRlcg0KQEAgLTEwMjIsNyArMTAyMyw3IEBADQogICAgICAqIHByb2JsZW0g
Y2FuIGJlIGZpeGVkLiBUaGUgZml4SXQoKSBtZXRob2QgYWN0dWFsbHkgZG9lcyB0aGUgZml4Lg0K
ICAgICAgKg0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Qb3N0ZXIjY2FuRml4
SXQob3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9JdGVtKQ0KLSAgICAgKiBBbHNvIA0KKyAgICAg
KiBBbHNvDQogICAgICAqIEBzZWUgQ3JpdGljI2ZpeEl0DQogICAgICAqLw0KICAgICBwdWJsaWMg
Ym9vbGVhbiBjYW5GaXhJdChUb0RvSXRlbSBpdGVtKSB7DQpAQCAtMTAzNSw3ICsxMDM2LDcgQEAN
CiAgICAgcHVibGljIHZvaWQgZml4SXQoVG9Eb0l0ZW0gaXRlbSwgT2JqZWN0IGFyZykgew0KICAg
ICB9DQogDQotICAgIA0KKw0KICAgICAvKg0KICAgICAgKiBSZXBseSBhIHN0cmluZyB0aGF0IGRl
c2NyaWJlcyB0aGlzIENyaXRpYy4gSWRlbnRpY2FsIHRvIGdldENyaXRpY05hbWUoKQ0KICAgICAg
Kg0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2du
aXRpdmUvRGVzaWduZXIuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJj
ZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2Nv
Z25pdGl2ZS9EZXNpZ25lci5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIy
PTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9EZXNpZ25lci5qYXZhCShvcmlnaW5hbCkNCisrKyB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9EZXNpZ25lci5q
YXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0K
ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRv
cnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMg
LSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRo
ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNj
b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00NSwx
MSArNDUsMTIgQEANCiBpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOw0KIGltcG9ydCBqYXZh
LnV0aWwuTGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7DQoraW1wb3J0IGphdmEu
dXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQog
DQogaW1wb3J0IGphdmF4LnN3aW5nLkFjdGlvbjsNCiBpbXBvcnQgamF2YXguc3dpbmcuSWNvbjsN
CiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmFwcGxpY2F0aW9uLmFwaS5BcmdvOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb25maWd1cmF0aW9u
LkNvbmZpZ3VyYXRpb247DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvbmZpZ3VyYXRpb24uQ29uZmln
dXJhdGlvbktleTsNCkBAIC02OCwxMCArNjksMTAgQEANCiAgKg0KICAqIEN1cnJlbnRseSAoYWxt
b3N0KSBldmVyeXRoaW5nIGlzIGhhcmRjb2RlZC4gV2hhdCBjYW4gYmUgY29uZmlndXJhYmxlPz88
cD4NCiAgKg0KLSAqIFRoZSBUb0RvTGlzdCBpcyBkZXBlbmRlbnQgb24gdGhpcyBjbGFzcywgDQor
ICogVGhlIFRvRG9MaXN0IGlzIGRlcGVuZGVudCBvbiB0aGlzIGNsYXNzLA0KICAqIGkuZS4gZWFj
aCBkZXNpZ25lciBoYXMgaXRzIFRvRG9MaXN0LjxwPg0KLSAqIA0KLSAqIEVhY2ggZGVzaWduZXIg
aGFzIGhpcyBvd24gQWdlbmN5LCANCisgKg0KKyAqIEVhY2ggZGVzaWduZXIgaGFzIGhpcyBvd24g
QWdlbmN5LA0KICAqIHdoaWNoIGlzIHRoZSBvbmx5IGNsYXNzIHRoYXQga25vd3MgYWxsIHRoZSBj
cml0aWNzLjxwPg0KICAqDQogICogVGhpcyBjbGFzcyBsaXN0ZW5zIHRvIHByb3BlcnR5IGNoYW5n
ZXMgZnJvbSAuLi4/PHA+DQpAQCAtODAsMTEgKzgxLDExIEBADQogICogaW1wbGVtZW50cyB0aGUg
UG9zdGVyIGludGVyZmFjZS48cD4NCiAgKg0KICAqIFRPRE86IFRoZXJlIGlzIGEgc3Ryb25nIGRl
cGVuZGVuY3kgY3ljbGUgYmV0d2VlbiBBZ2VuY3kgYW5kIERlc2lnbmVyLiAgVGhleQ0KLSAqIGVp
dGhlciBuZWVkIHRvIGJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIGNsYXNzIG9yIHBhcnRpdGlvbmVk
IGRpZmZlcmVudGx5LCANCisgKiBlaXRoZXIgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIHNpbmds
ZSBjbGFzcyBvciBwYXJ0aXRpb25lZCBkaWZmZXJlbnRseSwNCiAgKiBwZXJoYXBzIHVzaW5nIGFu
IGludGVyZmFjZSB0byBicmVhayB0aGUgY3ljbGUuICBUaGUgRGVzaWduZXIgc2luZ2xldG9uIGdl
dHMNCiAgKiBwYXNzZWQgdG8gYWxtb3N0IGV2ZXJ5IHNpbmdsZSBwYXJ0IG9mIHRoZSBDcml0aWMg
c3Vic3lzdGVtLCBjcmVhdGluZyBzdHJvbmcNCiAgKiBjb3VwbGluZyB0aHJvdWdob3V0LiAtIHRm
bSAyMDA3MDYyMA0KLSAqIA0KKyAqDQogICogQGF1dGhvciBKYXNvbiBSb2JiaW5zDQogICovDQog
cHVibGljIGZpbmFsIGNsYXNzIERlc2lnbmVyDQpAQCAtOTQsNyArOTUsOCBAQA0KICAgICAvKioN
CiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9n
Z2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoRGVzaWduZXIuY2xhc3MpOw0KKyAgICBwcml2YXRl
IHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRGVz
aWduZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIHRoZSBzaW5nbGV0
b24gb2YgdGhpcyBjbGFzcy4NCkBAIC0yNDIsNyArMjQ0LDcgQEANCiAgICAgICAgIHRvRG9MaXN0
LnNwYXduVmFsaWRpdHlDaGVja2VyKHRoaXMpOw0KIA0KICAgICAgICAgdXNlcldvcmtpbmcgPSBm
YWxzZTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgY3JpdGlxdWluZ0ludGVydmFsID0gODAwMDsN
CiAgICAgICAgIGNyaXRpcXVlQ1BVUGVyY2VudCA9IDEwOw0KIA0KQEAgLTMwOSw3ICszMTEsNyBA
QA0KICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMud2FpdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElu
dGVycnVwdGVkRXhjZXB0aW9uIGlnbm9yZSkgew0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMT0cuZXJyb3IoIkludGVycnVwdGVkRXhjZXB0aW9uISEhIiwgaWdub3JlKTsNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJJbnRlcnJ1cHRlZEV4
Y2VwdGlvbiEhISIsIGlnbm9yZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICB9DQpAQCAtMzc0LDcgKzM3Niw3IEBA
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gY2F0Y2ggKEludmFsaWRFbGVtZW50RXhjZXB0aW9uIGUpIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxldCBhIHRyYW5zaWVudCBlcnJvciBr
aWxsIHRoZSB0aHJlYWQNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPRy53YXJu
KCJFbGVtZW50ICIgKyBkbQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmxv
ZyhMZXZlbC5XQVJOSU5HLCAiRWxlbWVudCAiICsgZG0NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKyAiY2F1c2VkIGFuIEludmFsaWRFbGVtZW50RXhjZXB0aW9uLiAg
Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJJZ25vcmluZyBm
b3IgdGhpcyBwYXNzLiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQpAQCAtMzkw
LDE1ICszOTIsMTUgQEANCiAgICAgICAgICAgICAgICAgbG9uZyBzbGVlcER1cmF0aW9uID0NCiAg
ICAgICAgICAgICAgICAgICAgIE1hdGgubWluKGN5Y2xlRHVyYXRpb24gLSBjcml0aXF1ZUR1cmF0
aW9uLCAzMDAwKTsNCiAgICAgICAgICAgICAgICAgc2xlZXBEdXJhdGlvbiA9IE1hdGgubWF4KHNs
ZWVwRHVyYXRpb24sIDEwMDApOw0KLSAgICAgICAgICAgICAgICBMT0cuZGVidWcoInNsZWVwRHVy
YXRpb249ICIgKyBzbGVlcER1cmF0aW9uKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5GSU5FLCAic2xlZXBEdXJhdGlvbj0gezB9Iiwgc2xlZXBEdXJhdGlvbik7DQogICAgICAgICAg
ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoc2xlZXBEdXJh
dGlvbik7DQogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGln
bm9yZSkgew0KLSAgICAgICAgICAgICAgICAgICAgTE9HLmVycm9yKCJJbnRlcnJ1cHRlZEV4Y2Vw
dGlvbiEhISIsIGlnbm9yZSk7DQorICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNF
VkVSRSwgIkludGVycnVwdGVkRXhjZXB0aW9uISEhIiwgaWdub3JlKTsNCiAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQot
ICAgICAgICAgICAgTE9HLmVycm9yKCJDcml0aWMgdGhyZWFkIGtpbGxlZCBieSBleGNlcHRpb24i
LCBlKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkNyaXRpYyB0aHJlYWQg
a2lsbGVkIGJ5IGV4Y2VwdGlvbiIsIGUpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpAQCAtNDIy
LDcgKzQyNCw3IEBADQogICAgICAgICBpZiAoInJlbW92ZSIuZXF1YWxzKHJlYXNvbikpIHsNCiAg
ICAgICAgICAgICByZXR1cm47DQogICAgICAgICB9DQotICAgICAgICBMT0cuZGVidWcoImNyaXRp
cXVlQVNBUDoiICsgZG0pOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiY3JpdGlxdWVB
U0FQOiB7MH0iLCBkbSk7DQogICAgICAgICBpbnQgYWRkUXVldWVJbmRleCA9IGFkZFF1ZXVlLmlu
ZGV4T2YoZG0pOw0KICAgICAgICAgaWYgKGFkZFF1ZXVlSW5kZXggPT0gLTEpIHsNCiAgICAgICAg
ICAgICBhZGRRdWV1ZS5hZGQoZG0pOw0KQEAgLTQ1OSw3ICs0NjEsNyBAQA0KICAgICAgICAgaWYg
KHBjcyA9PSBudWxsKSB7DQogICAgICAgICAgICAgcGNzID0gbmV3IFByb3BlcnR5Q2hhbmdlU3Vw
cG9ydCh0aGVEZXNpZ25lcigpKTsNCiAgICAgICAgIH0NCi0gICAgICAgIExPRy5kZWJ1ZygiYWRk
UHJvcGVydHlDaGFuZ2VMaXN0ZW5lcigiICsgcGNsICsgIikiKTsNCisgICAgICAgIExPRy5sb2co
TGV2ZWwuRklORSwgImFkZFByb3BlcnR5Q2hhbmdlTGlzdGVuZXIoezB9KSIsIHBjbCk7DQogICAg
ICAgICBwY3MuYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcihwY2wpOw0KICAgICB9DQogDQpAQCAt
NDcxLDcgKzQ3Myw3IEBADQogICAgICAqLw0KICAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVtb3Zl
TGlzdGVuZXIoUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciBwKSB7DQogICAgICAgICBpZiAocGNzICE9
IG51bGwpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoInJlbW92ZVByb3BlcnR5Q2hhbmdlTGlz
dGVuZXIoKSIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInJlbW92ZVByb3Bl
cnR5Q2hhbmdlTGlzdGVuZXIoKSIpOw0KICAgICAgICAgICAgIHBjcy5yZW1vdmVQcm9wZXJ0eUNo
YW5nZUxpc3RlbmVyKHApOw0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtNjY0LDcgKzY2Niw3IEBA
DQogICAgIHB1YmxpYyBMaXN0PEdvYWw+IGdldEdvYWxMaXN0KCkgew0KICAgICAgICAgcmV0dXJu
IGdvYWxzLmdldEdvYWxMaXN0KCk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAg
KiBUaGlzIG1ldGhvZCByZXR1cm5zIHRydWUuPHA+DQogICAgICAqDQpAQCAtNjk1LDEwICs2OTcs
MTAgQEANCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5jb2duaXRpdmUuUG9zdGVy
I2dldFN1cHBvcnRlZERlY2lzaW9ucygpDQogICAgICAqLw0KLSAgICBwdWJsaWMgTGlzdDxEZWNp
c2lvbj4gZ2V0U3VwcG9ydGVkRGVjaXNpb25zKCkgeyANCi0gICAgICAgIHJldHVybiB1bnNwZWNp
ZmllZERlY2lzaW9uOyANCisgICAgcHVibGljIExpc3Q8RGVjaXNpb24+IGdldFN1cHBvcnRlZERl
Y2lzaW9ucygpIHsNCisgICAgICAgIHJldHVybiB1bnNwZWNpZmllZERlY2lzaW9uOw0KICAgICB9
DQotICAgIA0KKw0KICAgICAvKg0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Q
b3N0ZXIjc3VwcG9ydHMob3JnLmFyZ291bWwuY29nbml0aXZlLkdvYWwpDQogICAgICAqLw0KQEAg
LTcwOSwxMCArNzExLDEwIEBADQogICAgIC8qDQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29n
bml0aXZlLlBvc3RlciNnZXRTdXBwb3J0ZWRHb2FscygpDQogICAgICAqLw0KLSAgICBwdWJsaWMg
TGlzdDxHb2FsPiBnZXRTdXBwb3J0ZWRHb2FscygpIHsgDQotICAgICAgICByZXR1cm4gdW5zcGVj
aWZpZWRHb2FsOyANCisgICAgcHVibGljIExpc3Q8R29hbD4gZ2V0U3VwcG9ydGVkR29hbHMoKSB7
DQorICAgICAgICByZXR1cm4gdW5zcGVjaWZpZWRHb2FsOw0KICAgICB9DQotICAgIA0KKw0KICAg
ICAvKg0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Qb3N0ZXIjY29udGFpbnNL
bm93bGVkZ2VUeXBlKGphdmEubGFuZy5TdHJpbmcpDQogICAgICAqLw0KQEAgLTgzMSwyMCArODMz
LDIwIEBADQogICAgIC8qDQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29nbml0aXZlLlBvc3Rl
ciNzbm9vemUoKQ0KICAgICAgKi8NCi0gICAgcHVibGljIHZvaWQgc25vb3plKCkgeyANCisgICAg
cHVibGljIHZvaWQgc25vb3plKCkgew0KICAgICAgICAgLyogZG8gbm90aGluZyAqLw0KICAgICB9
DQogDQogICAgIC8qDQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29nbml0aXZlLlBvc3RlciN1
bnNub296ZSgpDQogICAgICAqLw0KLSAgICBwdWJsaWMgdm9pZCB1bnNub296ZSgpIHsgDQorICAg
IHB1YmxpYyB2b2lkIHVuc25vb3plKCkgew0KICAgICAgICAgLyogZG8gbm90aGluZyAqLw0KICAg
ICB9DQogDQogICAgIC8qKg0KICAgICAgKiBSZXBseSB0aGUgQWdlbmN5IG9iamVjdCB0aGF0IGlz
IGhlbHBpbmcgdGhpcyBEZXNpZ25lci4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEByZXR1
cm4gbXkgYWdlbmN5DQogICAgICAqLw0KICAgICBwdWJsaWMgQWdlbmN5IGdldEFnZW5jeSgpIHsN
Cg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0
aXZlL1Jlc29sdmVkQ3JpdGljLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9z
b3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvUmVzb2x2ZWRDcml0aWMuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZy
MT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvUmVzb2x2ZWRDcml0aWMuamF2YQko
b3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2du
aXRpdmUvUmVzb2x2ZWRDcml0aWMuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0x
LDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmln
aHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAy
MDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBt
YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vu
c2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMg
YXZhaWxhYmxlIGF0DQpAQCAtNDAsOCArNDAsOSBAQA0KIA0KIGltcG9ydCBqYXZhLnV0aWwuQXJy
YXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dp
bmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQg
b3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnV0aWwuSXRlbVVJ
RDsNCiANCiAvLyBUT0RPOiBNYXliZSB0aGUgZXhjZXB0aW9uIHN0cmluZ3Mgc2hvdWxkIGJlIGlu
dGVybmF0aW9uYWxpemVkDQpAQCAtNTYsNyArNTcsOCBAQA0KICAgICAvKioNCiAgICAgICogVGhl
IGxvZ2dlci4NCiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cg
PSBMb2dnZXIuZ2V0TG9nZ2VyKFJlc29sdmVkQ3JpdGljLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBz
dGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFJlc29s
dmVkQ3JpdGljLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIC8qKg0KICAgICAgKiBUaGUgbmFt
ZSBvZiB0aGUgY3JpdGljLg0KQEAgLTg0LDcgKzg2LDcgQEANCiAgICAgICAgICAgICBvZmZlbmRl
cnMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KLSAgICAN
CisNCiAgICAgLyoqDQogICAgICAqIFNhbWUgYXMge0BsaW5rICNSZXNvbHZlZENyaXRpYyhDcml0
aWMsTGlzdFNldCxib29sZWFuKX0uDQogICAgICAqDQpAQCAtMTE3LDcgKzExOSw4IEBADQogCSAg
ICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7DQogCX0NCiANCi0JLy9MT0cu
ZGVidWcoIkFkZGluZyByZXNvbHV0aW9uIGZvcjogIiArIGMuZ2V0Q2xhc3MoKSArICIgIiArIGNh
bkNyZWF0ZSk7DQorICAgICAgICAvLyBMT0cubG9nKExldmVsLkZJTkUsDQorICAgICAgICAvLyAg
ICAgICAgICJBZGRpbmcgcmVzb2x1dGlvbiBmb3I6ICIgKyBjLmdldENsYXNzKCkgKyAiICIgKyBj
YW5DcmVhdGUpOw0KIA0KIAl0cnkgew0KIAkgICAgaWYgKG9mZnMgIT0gbnVsbCAmJiBvZmZzLnNp
emUoKSA+IDApIHsNCkBAIC0yNjQsNyArMjY3LDggQEANCiAJCSAgICBmYWlsID0gZmFpbCArICIs
ICIgKyBvYmouZ2V0Q2xhc3MoKS50b1N0cmluZygpOw0KIAkJfQ0KIA0KLQkJTE9HLndhcm4oIk9m
ZmVuZGVyICIgKyBvYmouZ2V0Q2xhc3MoKSArICIgdW5yZXNvbHZhYmxlIik7DQorICAgICAgICAg
ICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywNCisgICAgICAgICAgICAgICAgICAgICAgICAi
T2ZmZW5kZXIgezB9IHVucmVzb2x2YWJsZSIsIG9iai5nZXRDbGFzcygpKTsNCiANCiAJCS8vIFVz
ZSB0aGlzIGZvciBmYXN0IGZhaWwgaW5zdGVhZC4NCiAJCS8vIFNhY3JpZmljZWQgZm9yIGNvbXBs
ZXRlIGZhaWwuIGQwMG1zdA0KQEAgLTMxOCw0ICszMjIsMyBAQA0KIAlyZXR1cm4gc2IudG9TdHJp
bmcoKTsNCiAgICAgfQ0KIH0NCi0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvY29nbml0aXZlL1RvRG9JdGVtLmphdmENClVybDogaHR0cDovL2FyZ291
bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvVG9Eb0l0ZW0uamF2YT92aWV3PWRpZmYmcGF0aHJl
dj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvVG9Eb0l0ZW0uamF2
YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9j
b2duaXRpdmUvVG9Eb0l0ZW0uamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYg
KzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5
LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4g
VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRl
IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2Ug
djEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZh
aWxhYmxlIGF0DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL2NvZ25pdGl2ZS9Ub0RvTGlzdC5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5v
cmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvY29nbml0aXZlL1RvRG9MaXN0LmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9
MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL1RvRG9MaXN0LmphdmEJKG9yaWdpbmFs
KQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL1Rv
RG9MaXN0LmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAv
KiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAg
Q29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTIgQ29u
dHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9n
cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJs
ZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAq
IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0
DQpAQCAtNDcsMjEgKzQ3LDIyIEBADQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KIGltcG9ydCBq
YXZhLnV0aWwuT2JzZXJ2YWJsZTsNCiBpbXBvcnQgamF2YS51dGlsLlNldDsNCitpbXBvcnQgamF2
YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsN
CiANCiBpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuRXZlbnRMaXN0ZW5lckxpc3Q7DQogDQotaW1w
b3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5pMThuLlRy
YW5zbGF0b3I7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLkludmFsaWRFbGVtZW50RXhjZXB0
aW9uOw0KIA0KIC8qKg0KICAqIEltcGxlbWVudHMgYSBsaXN0IG9mIFRvRG9JdGVtJ3MuDQogICog
PHA+DQotICogDQorICoNCiAgKiBJdCBzcGF3bnMgYSAic3dlZXBlciIgdGhyZWFkIHRoYXQgcGVy
aW9kaWNhbGx5IGdvZXMgdGhyb3VnaCB0aGUgbGlzdCBhbmQNCiAgKiBlbGltaW5hdGVzIFRvRG9J
dGVtJ3MgdGhhdCBhcmUgbm8gbG9uZ2VyIHZhbGlkLg0KICAqIDxwPg0KLSAqIA0KKyAqDQogICog
T25lIGRpZmZpY3VsdHkgZGVzaWduZXJzIGZhY2UgaXMga2VlcGluZyB0cmFjayBvZiBhbGwgdGhl
IG15cmlhZCBkZXRhaWxzIG9mDQogICogdGhlaXIgdGFzay4gSXQgaXMgYWxsIHRvbyBlYXN5IHRv
IHNraXAgYSBzdGVwIGluIHRoZSBkZXNpZ24gcHJvY2VzcywgbGVhdmUNCiAgKiBwYXJ0IG9mIHRo
ZSBkZXNpZ24gdW5zcGVjaWZpZWQsIG9yIG1ha2UgYSBtaXN0YWtlIHRoYXQgcmVxdWlyZXMgcmV2
aXNpb24uDQpAQCAtNzIsMTMgKzczLDEzIEBADQogICogbGlzdCBwYW5lIGFsbG93IHRoZSBkZXNp
Z25lciB0byBvcmdhbml6ZSBpdGVtcyBpbiBkaWZmZXJlbnQgd2F5czogYnkNCiAgKiBwcmlvcml0
eSwgYnkgZGVjaXNpb24gc3VwcG9ydGVkLCBieSBvZmZlbmRpbmcgZGVzaWduIGVsZW1lbnQsIGV0
Yy4NCiAgKiA8cD4NCi0gKiANCisgKg0KICAqIEl0ZW1zIGFyZSBzaG93biB1bmRlciBhbGwgYXBw
bGljYWJsZSBoZWFkaW5ncy4NCiAgKiA8cD4NCi0gKiANCisgKg0KICAqIFRoaXMgY2xhc3MgaXMg
ZGVwZW5kZW50IG9uIERlc2lnbmVyLg0KICAqIDxwPg0KLSAqIA0KKyAqDQogICogQHNlZSBEZXNp
Z25lciNpbmZvcm0NCiAgKiBAYXV0aG9yIEphc29uIFJvYmJpbnMNCiAgKi8NCkBAIC04Niw3ICs4
Nyw4IEBADQogICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRl
IHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihUb0RvTGlzdC5jbGFz
cyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9n
Z2VyLmdldExvZ2dlcihUb0RvTGlzdC5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvKioNCiAg
ICAgICogTnVtYmVyIG9mIHNlY29uZHMgdGhyZWFkIHNob3VsZCBzbGVlcCBiZXR3ZWVuIHBhc3Nl
cw0KQEAgLTk5LDkgKzEwMSw5IEBADQogICAgIHByaXZhdGUgTGlzdDxUb0RvSXRlbT4gaXRlbXM7
DQogDQogICAgIHByaXZhdGUgU2V0PFRvRG9JdGVtPiBpdGVtU2V0Ow0KLSAgICANCisNCiAgICAg
LyoqDQotICAgICAqIFRoZXNlIGFyZSBjb21wdXRlZCB3aGVuIG5lZWRlZC4gDQorICAgICAqIFRo
ZXNlIGFyZSBjb21wdXRlZCB3aGVuIG5lZWRlZC4NCiAgICAgICovDQogICAgIC8vIFRPRE86IE9m
ZmVuZGVycyBuZWVkIHRvIGJlIG1vcmUgc3Ryb25nbHkgdHlwZWQuIC0gdGZtIDIwMDcwNjMwDQog
ICAgIHByaXZhdGUgdm9sYXRpbGUgTGlzdFNldCBhbGxPZmZlbmRlcnM7DQpAQCAtMTQwLDcgKzE0
Miw3IEBADQogICAgICAqICh3YWl0aW5nKS4NCiAgICAgICovDQogICAgIHByaXZhdGUgYm9vbGVh
biBpc1BhdXNlZDsNCi0gICAgDQorDQogICAgIHByaXZhdGUgT2JqZWN0IHBhdXNlZE11dGV4ID0g
bmV3IE9iamVjdCgpOw0KIA0KICAgICAvKioNCkBAIC0xNTAsNyArMTUyLDcgQEANCiANCiAgICAg
ICAgIGl0ZW1zID0gQ29sbGVjdGlvbnMuc3luY2hyb25pemVkTGlzdChuZXcgQXJyYXlMaXN0PFRv
RG9JdGVtPigxMDApKTsNCiAgICAgICAgIGl0ZW1TZXQgPSBDb2xsZWN0aW9ucy5zeW5jaHJvbml6
ZWRTZXQobmV3IEhhc2hTZXQ8VG9Eb0l0ZW0+KDEwMCkpOw0KLSAgICAgICAgcmVzb2x2ZWRJdGVt
cyA9IA0KKyAgICAgICAgcmVzb2x2ZWRJdGVtcyA9DQogICAgICAgICAgICAgQ29sbGVjdGlvbnMu
c3luY2hyb25pemVkU2V0KG5ldyBMaW5rZWRIYXNoU2V0PFJlc29sdmVkQ3JpdGljPigxMDApKTsN
CiAgICAgICAgIGxpc3RlbmVyTGlzdCA9IG5ldyBFdmVudExpc3RlbmVyTGlzdCgpOw0KICAgICAg
ICAgbG9uZ2VzdFRvRG9MaXN0ID0gMDsNCkBAIC0xNTksNyArMTYxLDcgQEANCiANCiAgICAgLyoq
DQogICAgICAqIFN0YXJ0IGEgVGhyZWFkIHRvIGRlbGV0ZSBvbGQgaXRlbXMgZnJvbSB0aGUgVG9E
b0xpc3QuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gZCB0aGUgZGVzaWduZXIN
CiAgICAgICovDQogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzcGF3blZhbGlkaXR5Q2hl
Y2tlcihEZXNpZ25lciBkKSB7DQpAQCAtMTc3LDcgKzE3OSw3IEBADQogICAgICAqLw0KICAgICBw
dWJsaWMgdm9pZCBydW4oKSB7DQogICAgICAgICBmaW5hbCBMaXN0PFRvRG9JdGVtPiByZW1vdmVz
ID0gbmV3IEFycmF5TGlzdDxUb0RvSXRlbT4oKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgd2hp
bGUgKHRydWUpIHsNCiANCiAgICAgICAgICAgICAvLyB0aGUgdmFsaWRpdHkgY2hlY2tpbmcgdGhy
ZWFkIHNob3VsZCB3YWl0IGlmIGRpc2FibGVkLg0KQEAgLTE4Niw3ICsxODgsNyBAQA0KICAgICAg
ICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXVzZWRNdXRl
eC53YWl0KCk7DQogICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2Vw
dGlvbiBpZ25vcmUpIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIkludGVy
cnVwdGVkRXhjZXB0aW9uISEhIiwgaWdub3JlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBM
T0cubG9nKExldmVsLlNFVkVSRSwgIkludGVycnVwdGVkRXhjZXB0aW9uISEhIiwgaWdub3JlKTsN
CiAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
IH0NCkBAIC0xOTYsNyArMTk4LDcgQEANCiAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAg
ICAgICBUaHJlYWQuc2xlZXAoU0xFRVBfU0VDT05EUyAqIDEwMDApOw0KICAgICAgICAgICAgIH0g
Y2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGlnbm9yZSkgew0KLSAgICAgICAgICAgICAgICBM
T0cuZXJyb3IoIkludGVycnVwdGVkRXhjZXB0aW9uISEhIiwgaWdub3JlKTsNCisgICAgICAgICAg
ICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiEhISIsIGln
bm9yZSk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtMjE4LDEwICsy
MjAsMTAgQEANCiAgICAgICogVmFsaWRpdHlDaGVja2luZ1RocmVhZCwgYW5kIGl0IGNhbiBiZSBj
YWxsZWQgYnkgdGhlIHVzZXIgcHJlc3NpbmcgYQ0KICAgICAgKiBidXR0b24gdmlhIGZvcmNlVmFs
aWRpdHlDaGVjaygpLg0KICAgICAgKiA8cD4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIDxl
bT5XYXJuaW5nOiBGcmFnaWxlIGNvZGUhPC9lbT4gTm8gbWV0aG9kIHRoYXQgdGhpcyBtZXRob2Qg
Y2FsbHMgY2FuDQogICAgICAqIHN5bmNocm9uaXplZCB0aGUgRGVzaWduZXIsIG90aGVyd2lzZSB0
aGVyZSB3aWxsIGJlIGRlYWRsb2NrLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFt
IHJlbW92ZXMgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIHRvIGJlIHJlbW92ZWQNCiAgICAg
ICovDQogICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgZm9yY2VWYWxpZGl0eUNoZWNrKA0K
QEAgLTI0MCw3ICsyNDIsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhjZXB0
aW9uIHJhaXNlZCBpbiBUb0RvIGxpc3QgY2xlYW5pbmciKTsNCiAgICAgICAgICAgICAgICAgICAg
IGJ1Zi5hcHBlbmQoIlxuIik7DQogICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGl0ZW0u
dG9TdHJpbmcoKSk7DQotICAgICAgICAgICAgICAgICAgICBMT0cuZXJyb3IoYnVmLnRvU3RyaW5n
KCksIGV4KTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLGJ1Zi50
b1N0cmluZygpLCBleCk7DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgaWYg
KCF2YWxpZCkgew0KICAgICAgICAgICAgICAgICAgICAgbnVtTm90VmFsaWQrKzsNCkBAIC0yOTEs
NyArMjkzLDcgQEANCiANCiAgICAgLyoqDQogICAgICAqIHNldHMgdGhlIHBhdXNlIHN0YXRlLg0K
LSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHBhdXNlZCBpZiBzZXQgdG8gZmFsc2Us
IGNhbGxzIHJlc3VtZSgpIGFsc28gdG8gc3RhcnQgd29ya2luZw0KICAgICAgKi8NCiAgICAgcHVi
bGljIHZvaWQgc2V0UGF1c2VkKGJvb2xlYW4gcGF1c2VkKSB7DQpAQCAtMzc0LDcgKzM3Niw3IEBA
DQogDQogICAgIC8qKg0KICAgICAgKiBAcmV0dXJuIHRoZSBzZXQgb2Ygb2ZmZW5kZXJzDQotICAg
ICAqIA0KKyAgICAgKg0KICAgICAgKiBUT0RPOiBUaGUgcmV0dXJuIHZhbHVlIG5lZWRzIHRvIGJl
IG1vcmUgc3Ryb25nbHkgdHlwZWQuIC0gdGZtIC0gMjAwNzA2MzANCiAgICAgICovDQogICAgIHB1
YmxpYyBMaXN0U2V0IGdldE9mZmVuZGVycygpIHsNCkBAIC00NTksNyArNDYxLDcgQEANCiAgICAg
ICAgICAgICAgICAgLy8gY2F0LmRlYnVnKCJDaGVja2luZyBmb3IgaW5oaWJpdG9ycyAiICsgcmMp
Ow0KICAgICAgICAgICAgICAgICB3aGlsZSAoZWxlbXMuaGFzTmV4dCgpKSB7DQogICAgICAgICAg
ICAgICAgICAgICBpZiAoZWxlbXMubmV4dCgpLmVxdWFscyhyYykpIHsNCi0gICAgICAgICAgICAg
ICAgICAgICAgICBMT0cuZGVidWcoIlRvRG9JdGVtIG5vdCBhZGRlZCBiZWNhdXNlIGl0IHdhcyBy
ZXNvbHZlZCIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwg
IlRvRG9JdGVtIG5vdCBhZGRlZCBiZWNhdXNlIGl0IHdhcyByZXNvbHZlZCIpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgfQ0KQEAgLTU3MCw3ICs1NzIsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogQWRk
IHRoZSBnaXZlbiByZXNvbHZlZCBjcml0aWMgdG8gdGhlIGxpc3Qgb2YgcmVzb2x2ZWQgY3JpdGlj
cy4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSByYyB0aGUgcmVzb2x2ZWQgY3Jp
dGljDQogICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgc3VjY2Vzc2Z1bGx5IGFk
ZGVkOyA8Y29kZT5mYWxzZTwvY29kZT4NCiAgICAgICogICAgICAgICBvdGhlcndpc2UNCkBAIC01
ODMsNyArNTg1LDcgQEANCiAgICAgICogUmVtb3ZlIGFsbCB0b2RvIGl0ZW1zLg0KICAgICAgKi8N
CiAgICAgcHVibGljIHZvaWQgcmVtb3ZlQWxsRWxlbWVudHMoKSB7DQotICAgICAgICBMT0cuZGVi
dWcoInJlbW92aW5nIGFsbCB0b2RvIGl0ZW1zIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJ
TkUsICJyZW1vdmluZyBhbGwgdG9kbyBpdGVtcyIpOw0KICAgICAgICAgTGlzdDxUb0RvSXRlbT4g
b2xkSXRlbXMgPSBuZXcgQXJyYXlMaXN0PFRvRG9JdGVtPihpdGVtcyk7DQogICAgICAgICBpdGVt
cy5jbGVhcigpOw0KICAgICAgICAgaXRlbVNldC5jbGVhcigpOw0KQEAgLTY1NCw3ICs2NTYsNyBA
QA0KICAgICAgKiBAcGFyYW0gbCB0aGUgbGlzdGVuZXIgdG8gYmUgYWRkZWQNCiAgICAgICovDQog
ICAgIHB1YmxpYyB2b2lkIGFkZFRvRG9MaXN0TGlzdGVuZXIoVG9Eb0xpc3RMaXN0ZW5lciBsKSB7
DQotICAgICAgICAvLyBFdmVudExpc3RlbmVyTGlzdC5hZGQoKSBpcyBzeW5jaHJvbml6ZWQsIHNv
IHdlIGRvbid0IG5lZWQgdG8gDQorICAgICAgICAvLyBFdmVudExpc3RlbmVyTGlzdC5hZGQoKSBp
cyBzeW5jaHJvbml6ZWQsIHNvIHdlIGRvbid0IG5lZWQgdG8NCiAgICAgICAgIC8vIHN5bmNocm9u
aXplIG91cnNlbHZlcw0KICAgICAgICAgbGlzdGVuZXJMaXN0LmFkZChUb0RvTGlzdExpc3RlbmVy
LmNsYXNzLCBsKTsNCiAgICAgfQ0KQEAgLTY2Myw3ICs2NjUsNyBAQA0KICAgICAgKiBAcGFyYW0g
bCB0aGUgbGlzdGVuZXIgdG8gYmUgcmVtb3ZlZA0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQg
cmVtb3ZlVG9Eb0xpc3RMaXN0ZW5lcihUb0RvTGlzdExpc3RlbmVyIGwpIHsNCi0gICAgICAgIC8v
IEV2ZW50TGlzdGVuZXJMaXN0LnJlbW92ZSgpIGlzIHN5bmNocm9uaXplZCwgc28gd2UgZG9uJ3Qg
bmVlZCB0byANCisgICAgICAgIC8vIEV2ZW50TGlzdGVuZXJMaXN0LnJlbW92ZSgpIGlzIHN5bmNo
cm9uaXplZCwgc28gd2UgZG9uJ3QgbmVlZCB0bw0KICAgICAgICAgLy8gc3luY2hyb25pemUgb3Vy
c2VsdmVzDQogICAgICAgICBsaXN0ZW5lckxpc3QucmVtb3ZlKFRvRG9MaXN0TGlzdGVuZXIuY2xh
c3MsIGwpOw0KICAgICB9DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL2NvZ25pdGl2ZS9jaGVja2xpc3QvQ2hlY2tNYW5hZ2VyLmphdmENClVybDogaHR0
cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvY2hlY2tsaXN0L0NoZWNrTWFuYWdl
ci5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L2NvZ25pdGl2ZS9jaGVja2xpc3QvQ2hlY2tNYW5hZ2VyLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL2NoZWNrbGlzdC9D
aGVja01hbmFnZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBA
QA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIg
Q29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBw
cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWls
YWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0K
ICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxl
IGF0DQpAQCAtMzksOCArMzksOCBAQA0KIHBhY2thZ2Ugb3JnLmFyZ291bWwuY29nbml0aXZlLmNo
ZWNrbGlzdDsNCiANCiBpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7DQotaW1wb3J0IGphdmEu
dXRpbC5IYXNodGFibGU7DQogaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsNCitpbXBvcnQg
amF2YS51dGlsLkhhc2h0YWJsZTsNCiANCiAvKioNCiAgKiBUaGUgQ2hlY2tNYW5hZ2VyIGtlZXBz
IHRyYWNrIG9mIHdoaWNoIENoZWNrbGlzdHMgc2hvdWxkIGJlDQoNCk1vZGlmaWVkOiB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9jaGVja2xpc3QvdWkvVGFi
Q2hlY2tsaXN0LmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJv
d3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRp
dmUvY2hlY2tsaXN0L3VpL1RhYkNoZWNrbGlzdC5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3
JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9jaGVja2xpc3QvdWkvVGFiQ2hl
Y2tsaXN0LmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwvY29nbml0aXZlL2NoZWNrbGlzdC91aS9UYWJDaGVja2xpc3QuamF2YQkyMDEyLTEy
LTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJl
bG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93
DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55
aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRo
aXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDgsNiArNDgsOCBAQA0K
IGltcG9ydCBqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQ7DQogaW1wb3J0IGphdmEuYmVh
bnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcjsNCiBpbXBvcnQgamF2YS5iZWFucy5WZXRvYWJsZUNo
YW5nZUxpc3RlbmVyOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQg
amF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGltcG9ydCBqYXZheC5zd2luZy5KTGFiZWw7
DQogaW1wb3J0IGphdmF4LnN3aW5nLkpTY3JvbGxQYW5lOw0KQEAgLTU4LDcgKzYwLDYgQEANCiBp
bXBvcnQgamF2YXguc3dpbmcudGFibGUuQWJzdHJhY3RUYWJsZU1vZGVsOw0KIGltcG9ydCBqYXZh
eC5zd2luZy50YWJsZS5UYWJsZUNvbHVtbjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5M
b2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9uLmFwaS5BYnN0cmFjdEFyZ29K
UGFuZWw7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5UcmFuc2xhdG9yOw0KIGltcG9y
dCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuY2hlY2tsaXN0LkNoZWNrSXRlbTsNCkBAIC0xMTksNyAr
MTIwLDcgQEANCiAJYWRkKG5ldyBKTGFiZWwoVHJhbnNsYXRvci5sb2NhbGl6ZSgidGFiLmNoZWNr
bGlzdC53YXJuaW5nIikpLA0KIAkgICAgQm9yZGVyTGF5b3V0Lk5PUlRIKTsNCiAJYWRkKHNwLCBC
b3JkZXJMYXlvdXQuQ0VOVEVSKTsNCi0JDQorDQogCWFkZENvbXBvbmVudExpc3RlbmVyKHRoaXMp
Ow0KICAgICB9DQogDQpAQCAtMjc2LDcgKzI3Nyw3IEBADQogICAgICAgICAvLyBVcGRhdGUgb3Vy
IG1vZGVsIHdpdGggb3VyIHNhdmVkIHRhcmdldA0KICAgICAgICAgc2V0VGFyZ2V0SW50ZXJuYWwo
dGFyZ2V0KTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoNCiAgICAgICogQHNlZSBqYXZhLmF3
dC5ldmVudC5Db21wb25lbnRMaXN0ZW5lciNjb21wb25lbnRIaWRkZW4oamF2YS5hd3QuZXZlbnQu
Q29tcG9uZW50RXZlbnQpDQogICAgICAqLw0KQEAgLTMwNyw3ICszMDgsNyBAQA0KICAgICAgKiBM
b2dnZXIuDQogICAgICAqLw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0N
Ci0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoVGFibGVNb2RlbENoZWNrbGlzdC5jbGFzcyk7DQor
ICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFRhYmxlTW9kZWxDaGVja2xpc3QuY2xhc3MuZ2V0TmFt
ZSgpKTsNCiANCiAgICAgLy8vLy8vLy8vLy8vLy8vLw0KICAgICAvLyBpbnN0YW5jZSB2YXJhYmxl
cw0KQEAgLTM1MCw3ICszNTEsNyBAQA0KIA0KICAgICAvLy8vLy8vLy8vLy8vLy8vDQogICAgIC8v
IFRhYmxlTW9kZWwgaW1wbGVtZXRhdGlvbg0KLSAgICANCisNCiAgICAgLyoNCiAgICAgICogQHNl
ZSBqYXZheC5zd2luZy50YWJsZS5UYWJsZU1vZGVsI2dldENvbHVtbkNvdW50KCkNCiAgICAgICov
DQpAQCAtNDMxLDcgKzQzMiw5IEBADQogICAgICAqLw0KICAgICBAT3ZlcnJpZGUNCiAgICAgcHVi
bGljIHZvaWQgc2V0VmFsdWVBdChPYmplY3QgYVZhbHVlLCBpbnQgcm93SW5kZXgsIGludCBjb2x1
bW5JbmRleCkgIHsNCi0JTE9HLmRlYnVnKCJzZXR0aW5nIHRhYmxlIHZhbHVlICIgKyByb3dJbmRl
eCArICIsICIgKyBjb2x1bW5JbmRleCk7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsDQor
ICAgICAgICAgICAgICAgICJzZXR0aW5nIHRhYmxlIHZhbHVlIHswfSwgezF9IiwNCisgICAgICAg
ICAgICAgICAgbmV3IE9iamVjdFtde3Jvd0luZGV4LCBjb2x1bW5JbmRleH0pOw0KIAlpZiAoY29s
dW1uSW5kZXggIT0gMCkgew0KIAkgICAgcmV0dXJuOw0KIAl9DQpAQCAtNDc2LDQgKzQ3OSw0IEBA
DQogICAgICAgICBmaXJlVGFibGVTdHJ1Y3R1cmVDaGFuZ2VkKCk7DQogICAgICAgICBwYW5lbC5y
ZXNpemVDb2x1bW5zKCk7DQogICAgIH0NCi19IA0KK30NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL2NyaXRpY3MvU25vb3plT3JkZXIu
amF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3Vt
bC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9jcml0aWNz
L1Nub296ZU9yZGVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5
MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvY29nbml0aXZlL2NyaXRpY3MvU25vb3plT3JkZXIuamF2YQkob3JpZ2luYWwp
DQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvY3Jp
dGljcy9Tbm9vemVPcmRlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiAr
MSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAo
YykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkt
MjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBU
aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUg
YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2
MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFp
bGFibGUgYXQNCkBAIC00MCw4ICs0MCw4IEBADQogDQogaW1wb3J0IGphdmEuaW8uU2VyaWFsaXph
YmxlOw0KIGltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCi0NCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0
ai5Mb2dnZXI7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZh
LnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogLyoqDQogICogQSBDcml0aWMgY2FuIGJlIGRpc2Fi
bGVkIGZvciBhIGNlcnRhaW4gYW1vdW50IG9mIHRpbWUgYnkgZ2l2aW5nIGl0DQpAQCAtNTksNyAr
NTksOCBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJpdmF0
ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoU25vb3plT3JkZXIu
Y2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAg
IExvZ2dlci5nZXRMb2dnZXIoU25vb3plT3JkZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAg
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLw0KICAgICAvLyBjb25zdGFudHMNCkBAIC0xNDEsNyArMTQyLDcgQEANCiAJbG9uZyBu
ID0gKGdldE5vdygpKS5nZXRUaW1lKCk7DQogCXNub296ZVVudGlsLnNldFRpbWUobiArIGludGVy
dmFsKTsNCiAJc25vb3plQWdhaW4uc2V0VGltZShuICsgaW50ZXJ2YWwgKyBJTklUSUFMX0lOVEVS
VkFMX01TKTsNCi0JTE9HLmluZm8oIlNldHRpbmcgc25vb3plIG9yZGVyIHRvOiAiICsgc25vb3pl
VW50aWwudG9TdHJpbmcoKSk7DQorCUxPRy5sb2coTGV2ZWwuSU5GTywgIlNldHRpbmcgc25vb3pl
IG9yZGVyIHRvOiB7MH0iLCBzbm9vemVVbnRpbCk7DQogICAgIH0NCiANCiAgICAgLyoqDQoNCk1v
ZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9j
cml0aWNzL3VpL0NyaXRpY0Jyb3dzZXJEaWFsb2cuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50
aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9jcml0aWNzL3VpL0NyaXRpY0Jyb3dzZXJEaWFsb2cuamF2
YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2du
aXRpdmUvY3JpdGljcy91aS9Dcml0aWNCcm93c2VyRGlhbG9nLmphdmEJKG9yaWdpbmFsKQ0KKysr
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL2NyaXRpY3Mv
dWkvQ3JpdGljQnJvd3NlckRpYWxvZy5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAg
LTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHly
aWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJl
IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGlj
ZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBp
cyBhdmFpbGFibGUgYXQNCkBAIC01MCw2ICs1MCw4IEBADQogaW1wb3J0IGphdmEuYXd0LmV2ZW50
Lkl0ZW1MaXN0ZW5lcjsNCiBpbXBvcnQgamF2YS51dGlsLk9ic2VydmFibGU7DQogaW1wb3J0IGph
dmEudXRpbC5PYnNlcnZlcjsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1w
b3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuQm9y
ZGVyRmFjdG9yeTsNCiBpbXBvcnQgamF2YXguc3dpbmcuSkJ1dHRvbjsNCkBAIC02Nyw3ICs2OSw2
IEBADQogaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50LlRhYmxlTW9kZWxMaXN0ZW5lcjsNCiBpbXBv
cnQgamF2YXguc3dpbmcudGV4dC5Eb2N1bWVudDsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0
ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Dcml0aWM7DQogaW1wb3J0
IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvSXRlbTsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29n
bml0aXZlLlRyYW5zbGF0b3I7DQpAQCAtODksNyArOTAsNyBAQA0KICAgICAgICAgICAgICAgIFRh
YmxlTW9kZWxMaXN0ZW5lciwNCiAgICAgICAgICAgICAgICBPYnNlcnZlciB7DQogICAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KLQlMb2dnZXIuZ2V0TG9nZ2VyKENyaXRpY0Jy
b3dzZXJEaWFsb2cuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihDcml0aWNCcm93
c2VyRGlhbG9nLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIHByaXZhdGUgc3RhdGljIGludCBu
dW1Dcml0aWNCcm93c2VyID0gMDsNCiANCkBAIC0xNjcsMTEgKzE2OCwxMSBAQA0KIAlKUGFuZWwg
bWFpbkNvbnRlbnQgPSBuZXcgSlBhbmVsKCk7DQogCW1haW5Db250ZW50LnNldExheW91dChuZXcg
Qm9yZGVyTGF5b3V0KDEwLCAxMCkpOw0KICAgICAgICAgQm9yZGVyU3BsaXRQYW5lIGJzcCA9IG5l
dyBCb3JkZXJTcGxpdFBhbmUoKTsNCi0gICAgICAgDQorDQogCS8vIENyaXRpY3MgVGFibGUNCiAJ
SlBhbmVsIHRhYmxlUGFuZWwgPSBuZXcgSlBhbmVsKG5ldyBCb3JkZXJMYXlvdXQoNSwgNSkpOw0K
ICAgICAgICAgdGFibGUgPSBuZXcgVGFibGVDcml0aWNzKG5ldyBUYWJsZU1vZGVsQ3JpdGljcyhm
YWxzZSksIHRoaXMsIHRoaXMpOw0KLSAgICAgICAgY3JpdGljc0xhYmVsLnNldFRleHQoY3JpdGlj
c0xhYmVsLmdldFRleHQoKSArICIgKCIgDQorICAgICAgICBjcml0aWNzTGFiZWwuc2V0VGV4dChj
cml0aWNzTGFiZWwuZ2V0VGV4dCgpICsgIiAoIg0KICAgICAgICAgICAgICAgICArIHRhYmxlLmdl
dE1vZGVsKCkuZ2V0Um93Q291bnQoKSArICIpIik7DQogICAgICAgICB0YWJsZVBhbmVsLmFkZChj
cml0aWNzTGFiZWwsIEJvcmRlckxheW91dC5OT1JUSCk7DQogCUpTY3JvbGxQYW5lIHRhYmxlU1Ag
PSBuZXcgSlNjcm9sbFBhbmUodGFibGUpOw0KQEAgLTE4MSwxMyArMTgyLDEzIEBADQogCS8vIGlz
IHVzZWQgaW4gcGFjaygpDQogCXRhYmxlU1Auc2V0UHJlZmVycmVkU2l6ZSh0YWJsZS5nZXRJbml0
aWFsU2l6ZSgpKTsNCiAgICAgICAgIGJzcC5hZGQodGFibGVQYW5lbCwgQm9yZGVyU3BsaXRQYW5l
LkNFTlRFUik7DQotICAgICAgICANCisNCiAJLy8gQ3JpdGljIERldGFpbHMgcGFuZWwNCiAgICAg
ICAgIEpQYW5lbCBkZXRhaWxzUGFuZWwgPSBuZXcgSlBhbmVsKG5ldyBHcmlkQmFnTGF5b3V0KCkp
Ow0KICAgICAgICAgZGV0YWlsc1BhbmVsLnNldEJvcmRlcihCb3JkZXJGYWN0b3J5LmNyZWF0ZVRp
dGxlZEJvcmRlcigNCiAgICAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGlhbG9nLmJyb3dzZS50aXRsZWQtYm9yZGVyLmNyaXRpYy1k
ZXRhaWxzIikpKTsNCi0gICAgICAgIA0KKw0KIAlHcmlkQmFnQ29uc3RyYWludHMgbGFiZWxDb25z
dHJhaW50cyA9IG5ldyBHcmlkQmFnQ29uc3RyYWludHMoKTsNCiAJbGFiZWxDb25zdHJhaW50cy5h
bmNob3IgPSBHcmlkQmFnQ29uc3RyYWludHMuRUFTVDsNCiAgICAgICAgIGxhYmVsQ29uc3RyYWlu
dHMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5CT1RIOw0KQEAgLTI3NSw3ICsyNzYsNyBAQA0K
IAlkZXRhaWxzUGFuZWwuYWRkKG5ldyBKTGFiZWwoIiIpLCBsYWJlbENvbnN0cmFpbnRzKTsNCiAJ
ZGV0YWlsc1BhbmVsLmFkZChidXR0b25QYW5lbCwgZmllbGRDb25zdHJhaW50cyk7DQogICAgICAg
ICBic3AuYWRkKGRldGFpbHNQYW5lbCwgQm9yZGVyU3BsaXRQYW5lLkVBU1QpOw0KLSAgICAgICAg
DQorDQogCXRoaXMuYWRkTGlzdGVuZXJzKCk7DQogICAgICAgICB0aGlzLmVuYWJsZUZpZWxkc0Fu
ZEJ1dHRvbnMoKTsNCiANCkBAIC0zMDQsNyArMzA1LDcgQEANCiAgICAgICAgIHByaW9yaXR5LnNl
dEVuYWJsZWQoZmFsc2UpOw0KICAgICAgICAgZGVzYy5zZXRFZGl0YWJsZShmYWxzZSk7DQogICAg
ICAgICBtb3JlSW5mby5zZXRFZGl0YWJsZShmYWxzZSk7DQotICAgICAgICANCisNCiAgICAgICAg
IGdvQnV0dG9uLnNldEVuYWJsZWQoZmFsc2UpOw0KICAgICAgICAgd2FrZUJ1dHRvbi5zZXRFbmFi
bGVkKGZhbHNlKTsNCiAgICAgICAgIGFkdmFuY2VkQnV0dG9uLnNldEVuYWJsZWQodHJ1ZSk7DQpA
QCAtMzE0LDcgKzMxNSw3IEBADQogICAgICAgICB1c2VDbGFyLnNldFNlbGVjdGVkSXRlbShudWxs
KTsNCiAgICAgICAgIHVzZUNsYXIucmVwYWludCgpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAv
KioNCiAgICAgICogQHBhcmFtIHQgdGhlIG5ldyB0YXJnZXQNCiAgICAgICovDQpAQCAtMzU1LDE1
ICszNTYsMTUgQEANCiAgICAgICovDQogICAgIHByb3RlY3RlZCB2b2lkIHVwZGF0ZUJ1dHRvbnNF
bmFibGVkKCkgew0KICAgICAgICAgdGhpcy5jb25maWdCdXR0b24uc2V0RW5hYmxlZChmYWxzZSk7
DQotICAgICAgICB0aGlzLmdvQnV0dG9uLnNldEVuYWJsZWQodGhpcy50YXJnZXQgIT0gbnVsbCAN
Ci0gICAgICAgICAgICAgICAgJiYgdGhpcy50YXJnZXQuZ2V0TW9yZUluZm9VUkwoKSAhPSBudWxs
IA0KKyAgICAgICAgdGhpcy5nb0J1dHRvbi5zZXRFbmFibGVkKHRoaXMudGFyZ2V0ICE9IG51bGwN
CisgICAgICAgICAgICAgICAgJiYgdGhpcy50YXJnZXQuZ2V0TW9yZUluZm9VUkwoKSAhPSBudWxs
DQogICAgICAgICAgICAgICAgICYmIHRoaXMudGFyZ2V0LmdldE1vcmVJbmZvVVJMKCkubGVuZ3Ro
KCkgPiAwKTsNCiAgICAgICAgIHRoaXMubmV0d29ya0J1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTsN
CiAgICAgICAgIHRoaXMud2FrZUJ1dHRvbi5zZXRFbmFibGVkKHRoaXMudGFyZ2V0ICE9IG51bGwN
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHRoaXMudGFyZ2V0LmlzU25vb3pl
ZCgpIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAodGhpcy50YXJnZXQuaXNT
bm9vemVkKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhdGhp
cy50YXJnZXQuaXNFbmFibGVkKCkpKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSB2
b2lkIHNldFRhcmdldEhlYWRsaW5lKCkgew0KIAlpZiAodGFyZ2V0ID09IG51bGwpIHsNCiAJICAg
IHJldHVybjsNCkBAIC00MDgsNyArNDA5LDcgQEANCiAgICAgfQ0KIA0KICAgICBwcml2YXRlIHZv
aWQgc2V0VGFyZ2V0VXNlQ2xhcmlmaWVycygpIHsNCi0JTE9HLmRlYnVnKCJzZXR0aW5nIGNsYXJp
ZmllciB1c2FnZSBydWxlIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJzZXR0aW5n
IGNsYXJpZmllciB1c2FnZSBydWxlIik7DQogICAgIH0NCiANCiAgICAgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KQEAgLTQy
NSwxMSArNDI2LDExIEBADQogCSAgICByZXR1cm47DQogCX0NCiAJaWYgKGUuZ2V0U291cmNlKCkg
PT0gbmV0d29ya0J1dHRvbikgew0KLQkgICAgTE9HLmRlYnVnKCJUT0RPOiBuZXR3b3JrISIpOw0K
KyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIlRPRE86IG5ldHdvcmshIik7DQogCSAg
ICByZXR1cm47DQogCX0NCiAJaWYgKGUuZ2V0U291cmNlKCkgPT0gY29uZmlnQnV0dG9uKSB7DQot
CSAgICBMT0cuZGVidWcoIlRPRE86IGNvbmZpZyEiKTsNCisgICAgICAgICAgICBMT0cubG9nKExl
dmVsLkZJTkUsICJUT0RPOiBjb25maWchIik7DQogCSAgICByZXR1cm47DQogCX0NCiAJaWYgKGUu
Z2V0U291cmNlKCkgPT0gd2FrZUJ1dHRvbikgew0KQEAgLTQ0Miw3ICs0NDMsOCBAQA0KICAgICAg
ICAgICAgIHRhYmxlLnNldEFkdmFuY2VkKHRydWUpOw0KICAgICAgICAgICAgIGFkdmFuY2VkQnV0
dG9uLnNldEVuYWJsZWQoZmFsc2UpOw0KICAgICAgICAgfQ0KLQlMT0cuZGVidWcoInVua25vd24g
c3JjIGluIENyaXRpY0Jyb3dzZXJEaWFsb2c6ICIgKyBlLmdldFNvdXJjZSgpKTsNCisgICAgICAg
IExPRy5sb2coTGV2ZWwuRklORSwNCisgICAgICAgICAgICAgICAgInVua25vd24gc3JjIGluIENy
aXRpY0Jyb3dzZXJEaWFsb2c6IHswfSIsIGUuZ2V0U291cmNlKCkpOw0KICAgICB9DQogDQogICAg
IC8qDQpAQCAtNDU0LDEwICs0NTYsMTAgQEANCiAJfQ0KIAlPYmplY3Qgc3JjID0gbHNlLmdldFNv
dXJjZSgpOw0KIAlpZiAoc3JjICE9IHRhYmxlLmdldFNlbGVjdGlvbk1vZGVsKCkpIHsNCi0JICAg
IExPRy5kZWJ1Zygic3JjID0gIiArIHNyYyk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5G
SU5FLCAic3JjID0gezB9Iiwgc3JjKTsNCiAJICAgIHJldHVybjsNCiAJfQ0KLQlMT0cuZGVidWco
ImdvdCB2YWx1ZUNoYW5nZWQgZnJvbSAiICsgc3JjKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwu
RklORSwgImdvdCB2YWx1ZUNoYW5nZWQgZnJvbSB7MH0iLCBzcmMpOw0KIAlpbnQgcm93ID0gdGFi
bGUuZ2V0U2VsZWN0ZWRSb3coKTsNCiAgICAgICAgIGlmICh0aGlzLnRhcmdldCAhPSBudWxsKSB7
DQogICAgICAgICAgICAgdGhpcy50YXJnZXQuZGVsZXRlT2JzZXJ2ZXIodGhpcyk7DQpAQCAtNDcw
LDE5ICs0NzIsMTkgQEANCiANCiAgICAgLyoNCiAgICAgICogVXBkYXRlcyB0aGUgYnV0dG9uIGlm
IHRoZSBjdXJyZW50IHJvdyBjaGFuZ2VzDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAc2Vl
IGphdmF4LnN3aW5nLmV2ZW50LlRhYmxlTW9kZWxMaXN0ZW5lciN0YWJsZUNoYW5nZWQoamF2YXgu
c3dpbmcuZXZlbnQuVGFibGVNb2RlbEV2ZW50KQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQg
dGFibGVDaGFuZ2VkKFRhYmxlTW9kZWxFdmVudCBlKSB7DQogICAgICAgICB1cGRhdGVCdXR0b25z
RW5hYmxlZCgpOw0KICAgICAgICAgdGFibGUucmVwYWludCgpOw0KICAgICB9DQotICAgIA0KKw0K
ICAgICAvKg0KICAgICAgKiBAc2VlIGphdmF4LnN3aW5nLmV2ZW50LkRvY3VtZW50TGlzdGVuZXIj
aW5zZXJ0VXBkYXRlKGphdmF4LnN3aW5nLmV2ZW50LkRvY3VtZW50RXZlbnQpDQogICAgICAqLw0K
ICAgICBwdWJsaWMgdm9pZCBpbnNlcnRVcGRhdGUoRG9jdW1lbnRFdmVudCBlKSB7DQotCUxPRy5k
ZWJ1ZyhnZXRDbGFzcygpLmdldE5hbWUoKSArICIgaW5zZXJ0Iik7DQorICAgICAgICBMT0cubG9n
KExldmVsLkZJTkUsICJ7MH0gaW5zZXJ0IiwgZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOw0KIAlEb2N1
bWVudCBoRG9jID0gaGVhZGxpbmUuZ2V0RG9jdW1lbnQoKTsNCiAJRG9jdW1lbnQgbWlEb2MgPSBt
b3JlSW5mby5nZXREb2N1bWVudCgpOw0KIAlEb2N1bWVudCBkRG9jID0gZGVzYy5nZXREb2N1bWVu
dCgpOw0KQEAgLTUwNiw3ICs1MDgsNyBAQA0KICAgICAgKiBAc2VlIGphdmF4LnN3aW5nLmV2ZW50
LkRvY3VtZW50TGlzdGVuZXIjY2hhbmdlZFVwZGF0ZShqYXZheC5zd2luZy5ldmVudC5Eb2N1bWVu
dEV2ZW50KQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgY2hhbmdlZFVwZGF0ZShEb2N1bWVu
dEV2ZW50IGUpIHsNCi0JTE9HLmRlYnVnKGdldENsYXNzKCkuZ2V0TmFtZSgpICsgIiBjaGFuZ2Vk
Iik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJ7MH0gY2hhbmdlZCIsIGdldENsYXNz
KCkuZ2V0TmFtZSgpKTsNCiAJLy8gQXBwYXJlbnRseSwgdGhpcyBtZXRob2QgaXMgbmV2ZXIgY2Fs
bGVkLg0KICAgICB9DQogDQpAQCAtNTIxLDEzICs1MjMsMTMgQEANCiAJZWxzZSBpZiAoc3JjID09
IHVzZUNsYXIpIHsNCiAJICAgIHNldFRhcmdldFVzZUNsYXJpZmllcnMoKTsNCiAJfSBlbHNlIHsN
Ci0JICAgIExPRy5kZWJ1ZygidW5rbm93biBpdGVtU3RhdGVDaGFuZ2VkIHNyYzogIiArIHNyYyk7
DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAidW5rbm93biBpdGVtU3RhdGVDaGFu
Z2VkIHNyYzogezB9Iiwgc3JjKTsNCiAJfQ0KICAgICB9DQogDQogICAgIC8qDQogICAgICAqIFJl
ZnJlc2ggdGhlIHRhYmxlIHdoZW4gYSBjcml0aXF1ZSBpcyBlbmFibGVkL2Rpc2FibGVkDQotICAg
ICAqIA0KKyAgICAgKg0KICAgICAgKiBAc2VlIGphdmEudXRpbC5PYnNlcnZlciN1cGRhdGUoamF2
YS51dGlsLk9ic2VydmFibGUsIGphdmEubGFuZy5PYmplY3QpDQogICAgICAqLw0KICAgICBwdWJs
aWMgdm9pZCB1cGRhdGUoT2JzZXJ2YWJsZSBvLCBPYmplY3QgYXJnKSB7DQoNCk1vZGlmaWVkOiB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9jcml0aWNzL3Vp
L1RhYmxlTW9kZWxDcml0aWNzLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9z
b3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvY3JpdGljcy91aS9UYWJsZU1vZGVsQ3JpdGljcy5qYXZhP3ZpZXc9ZGlmZiZw
YXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS9jcml0aWNz
L3VpL1RhYmxlTW9kZWxDcml0aWNzLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL2NyaXRpY3MvdWkvVGFibGVNb2RlbENy
aXRpY3MuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8q
ICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29u
dHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJp
YnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFt
IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdo
aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpA
QCAtNDUsMjggKzQ1LDI5IEBADQogaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOw0KIGltcG9y
dCBqYXZhLnV0aWwuSXRlcmF0b3I7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBq
YXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2Vy
Ow0KIA0KIGltcG9ydCBqYXZheC5zd2luZy5Td2luZ1V0aWxpdGllczsNCiBpbXBvcnQgamF2YXgu
c3dpbmcudGFibGUuQWJzdHJhY3RUYWJsZU1vZGVsOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxv
ZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29nbml0aXZlLkFnZW5jeTsNCiBpbXBv
cnQgb3JnLmFyZ291bWwuY29nbml0aXZlLkNyaXRpYzsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29n
bml0aXZlLlRyYW5zbGF0b3I7DQogDQogLyoqDQogICogVGhlIFRhYmxlIE1vZGVsIGZyb20gdGhl
IENyaXRpY3MgQnJvd3NlciBkaWFsb2cuIDxwPg0KLSAqIA0KKyAqDQogICogVGhpcyBjbGFzcyB1
c2VkIHRvIGJlIHBhcnQgb2YgdGhlIENyaXRpY0Jyb3dzZXJEaWFsb2cuamF2YSBmaWxlLiA8cD4N
Ci0gKiANCi0gKiBJbiBhZHZhbmNlZCBtb2RlLCB0aGlzIG1vZGVsIGFsc28gaGFuZGxlcyANCisg
Kg0KKyAqIEluIGFkdmFuY2VkIG1vZGUsIHRoaXMgbW9kZWwgYWxzbyBoYW5kbGVzDQogICogcHJp
b3JpdHksIHN1cHBvcnRlZERlY2lzaW9ucywga25vd2xlZGdlVHlwZXMuDQogICovDQogY2xhc3Mg
VGFibGVNb2RlbENyaXRpY3MgZXh0ZW5kcyBBYnN0cmFjdFRhYmxlTW9kZWwNCiAgICAgaW1wbGVt
ZW50cyBWZXRvYWJsZUNoYW5nZUxpc3RlbmVyIHsNCiANCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9DQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFRhYmxlTW9kZWxDcml0
aWNzLmNsYXNzKTsNCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoVGFibGVNb2RlbENyaXRpY3Mu
Y2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBMaXN0PENyaXRpYz4gY3JpdGljczsN
CiAgICAgcHJpdmF0ZSBib29sZWFuIGFkdmFuY2VkOw0KQEAgLTc2LDcgKzc3LDcgQEANCiAgICAg
ICoNCiAgICAgICogQHBhcmFtIGFkdmFuY2VkTW9kZSB0cnVlIGlmIHdlIHNob3cgYWR2YW5jZWQg
Y29sdW1ucw0KICAgICAgKi8NCi0gICAgcHVibGljIFRhYmxlTW9kZWxDcml0aWNzKGJvb2xlYW4g
YWR2YW5jZWRNb2RlKSB7IA0KKyAgICBwdWJsaWMgVGFibGVNb2RlbENyaXRpY3MoYm9vbGVhbiBh
ZHZhbmNlZE1vZGUpIHsNCiAgICAgICAgIGNyaXRpY3MgPSBuZXcgQXJyYXlMaXN0PENyaXRpYz4o
QWdlbmN5LmdldENyaXRpY0xpc3QoKSk7DQogICAgICAgICAvLyBTZXQgaW5pdGlhbCBzb3J0aW5n
IG9uIENyaXRpYyBIZWFkbGluZQ0KICAgICAgICAgQ29sbGVjdGlvbnMuc29ydChjcml0aWNzLCBu
ZXcgQ29tcGFyYXRvcjxDcml0aWM+KCkgew0KQEAgLTk5LDggKzEwMCw4IEBADQogICAgIC8qDQog
ICAgICAqIEBzZWUgamF2YXguc3dpbmcudGFibGUuVGFibGVNb2RlbCNnZXRDb2x1bW5Db3VudCgp
DQogICAgICAqLw0KLSAgICBwdWJsaWMgaW50IGdldENvbHVtbkNvdW50KCkgeyANCi0gICAgICAg
IHJldHVybiBhZHZhbmNlZCA/IDYgOiAzOyANCisgICAgcHVibGljIGludCBnZXRDb2x1bW5Db3Vu
dCgpIHsNCisgICAgICAgIHJldHVybiBhZHZhbmNlZCA/IDYgOiAzOw0KICAgICB9DQogDQogICAg
IC8qDQpAQCAtMTk3LDcgKzE5OCw3IEBADQogICAgICAgICB9DQogICAgICAgICB0aHJvdyBuZXcg
SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7DQogICAgIH0NCi0gICAgDQorDQogICAgIHByaXZh
dGUgU3RyaW5nIGxpc3RUb1N0cmluZyhMaXN0IGwpIHsNCiAgICAgICAgIFN0cmluZ0J1ZmZlciBi
dWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7DQogICAgICAgICBJdGVyYXRvciBpID0gbC5pdGVyYXRv
cigpOw0KQEAgLTIxNyw3ICsyMTgsOSBAQA0KICAgICAgKiBAc2VlIGphdmF4LnN3aW5nLnRhYmxl
LlRhYmxlTW9kZWwjc2V0VmFsdWVBdChqYXZhLmxhbmcuT2JqZWN0LCBpbnQsIGludCkNCiAgICAg
ICovDQogICAgIHB1YmxpYyB2b2lkIHNldFZhbHVlQXQoT2JqZWN0IGFWYWx1ZSwgaW50IHJvd0lu
ZGV4LCBpbnQgY29sdW1uSW5kZXgpICB7DQotICAgICAgICBMT0cuZGVidWcoInNldHRpbmcgdGFi
bGUgdmFsdWUgIiArIHJvd0luZGV4ICsgIiwgIiArIGNvbHVtbkluZGV4KTsNCisgICAgICAgIExP
Ry5sb2coTGV2ZWwuRklORSwNCisgICAgICAgICAgICAgICAgInNldHRpbmcgdGFibGUgdmFsdWUg
ezB9LCB7MX0iLA0KKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117cm93SW5kZXgsIGNvbHVt
bkluZGV4fSk7DQogICAgICAgICBpZiAoY29sdW1uSW5kZXggIT0gMCkgew0KICAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgIH0NCkBAIC0yMzIsNyArMjM1LDcgQEANCiANCiAgICAgLyoNCiAg
ICAgICogVE9ETzogV2h5IGlzIHRoaXMgaGVyZT8gV2hvIGlzIGNhbGxpbmcgdGhpcz8NCi0gICAg
ICogDQorICAgICAqDQogICAgICAqIEBzZWUgamF2YS5iZWFucy5WZXRvYWJsZUNoYW5nZUxpc3Rl
bmVyI3ZldG9hYmxlQ2hhbmdlKGphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VFdmVudCkNCiAgICAg
ICovDQogICAgIHB1YmxpYyB2b2lkIHZldG9hYmxlQ2hhbmdlKFByb3BlcnR5Q2hhbmdlRXZlbnQg
cGNlKSB7DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L2NvZ25pdGl2ZS91aS9EaXNtaXNzVG9Eb0l0ZW1EaWFsb2cuamF2YQ0KVXJsOiBodHRwOi8vYXJn
b3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS91aS9EaXNtaXNzVG9Eb0l0ZW1EaWFsb2cuamF2
YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2du
aXRpdmUvdWkvRGlzbWlzc1RvRG9JdGVtRGlhbG9nLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL0Rpc21pc3NUb0Rv
SXRlbURpYWxvZy5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBA
DQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAw
OSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBD
b250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHBy
b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxh
YmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQog
ICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUg
YXQNCkBAIC00Myw2ICs0Myw4IEBADQogaW1wb3J0IGphdmEuYXd0Lkluc2V0czsNCiBpbXBvcnQg
amF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7DQogaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlv
bkxpc3RlbmVyOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2
YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGltcG9ydCBqYXZheC5zd2luZy5CdXR0b25Hcm91
cDsNCiBpbXBvcnQgamF2YXguc3dpbmcuSkxhYmVsOw0KQEAgLTUyLDcgKzU0LDYgQEANCiBpbXBv
cnQgamF2YXguc3dpbmcuSlNjcm9sbFBhbmU7DQogaW1wb3J0IGphdmF4LnN3aW5nLkpUZXh0QXJl
YTsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdv
dW1sLmNvZ25pdGl2ZS5EZXNpZ25lcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29nbml0aXZlLlRv
RG9JdGVtOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xpc3Q7DQpAQCAtNjgs
NyArNjksNyBAQA0KIHB1YmxpYyBjbGFzcyBEaXNtaXNzVG9Eb0l0ZW1EaWFsb2cgZXh0ZW5kcyBB
cmdvRGlhbG9nIHsNCiANCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQot
ICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKERpc21pc3NUb0RvSXRlbURpYWxvZy5jbGFzcyk7DQor
ICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKERpc21pc3NUb0RvSXRlbURpYWxvZy5jbGFzcy5nZXRO
YW1lKCkpOw0KIA0KICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogICAgIC8vIGluc3RhbmNlIHZhcmlhYmxlcw0KQEAg
LTE3Miw3ICsxNzMsOCBAQA0KICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbihlKTsNCiAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICBlbHNlIHsNCi0gICAgICAgICAgICAgICAg
ICAgIExPRy53YXJuKCJEaXNzbWlzc1RvRG9JdGVtRGlhbG9nOiBVbmtub3duIGFjdGlvbjogIiAr
IGUpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiRGlzc21pc3NUb0RvSXRlbURpYWxvZzogVW5rbm93biBh
Y3Rpb246ICIgKyBlKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAg
ICAgIH0pOw0KQEAgLTI0OSw3ICsyNTEsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgRGVzaWdu
ZXIuTU9ERUxfVE9ET0lURU1fRElTTUlTU0VELCBudWxsLCBudWxsKTsNCiAgICAgICAgIH0NCiAg
ICAgICAgIGNhdGNoIChVbnJlc29sdmFibGVFeGNlcHRpb24gdXJlKSB7DQotICAgICAgICAgICAg
TE9HLmVycm9yKCJSZXNvbHZlIGZhaWxlZCAodXJlKTogIiwgdXJlKTsNCisgICAgICAgICAgICBM
T0cubG9nKExldmVsLlNFVkVSRSwgIlJlc29sdmUgZmFpbGVkICh1cmUpOiAiLCB1cmUpOw0KICAg
ICAgICAgICAgIEpPcHRpb25QYW5lLnNob3dNZXNzYWdlRGlhbG9nKA0KIAkJICAgIHRoaXMsDQog
CQkgICAgdXJlLmdldE1lc3NhZ2UoKSwNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeURlY2lzaW9uLmphdmENClVybDog
aHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb0J5RGVjaXNpb24u
amF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9j
b2duaXRpdmUvdWkvVG9Eb0J5RGVjaXNpb24uamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb0J5RGVjaXNpb24u
amF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQN
CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0
b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3Jz
IC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0
aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFj
Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtMzks
OCArMzksOSBAQA0KIHBhY2thZ2Ugb3JnLmFyZ291bWwuY29nbml0aXZlLnVpOw0KIA0KIGltcG9y
dCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1w
b3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0
ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5EZWNpc2lvbjsNCiBpbXBv
cnQgb3JnLmFyZ291bWwuY29nbml0aXZlLkRlc2lnbmVyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5j
b2duaXRpdmUuVG9Eb0l0ZW07DQpAQCAtNTMsNyArNTQsNyBAQA0KIHB1YmxpYyBjbGFzcyBUb0Rv
QnlEZWNpc2lvbiBleHRlbmRzIFRvRG9QZXJzcGVjdGl2ZQ0KICAgICBpbXBsZW1lbnRzIFRvRG9M
aXN0TGlzdGVuZXIgew0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCi0g
ICAgICAgIExvZ2dlci5nZXRMb2dnZXIoVG9Eb0J5RGVjaXNpb24uY2xhc3MpOw0KKyAgICAgICAg
TG9nZ2VyLmdldExvZ2dlcihUb0RvQnlEZWNpc2lvbi5jbGFzcy5nZXROYW1lKCkpOw0KIA0KIA0K
ICAgICAvKioNCkBAIC03Miw3ICs3Myw3IEBADQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29n
bml0aXZlLlRvRG9MaXN0TGlzdGVuZXIjdG9Eb0l0ZW1zQ2hhbmdlZChvcmcuYXJnb3VtbC5jb2du
aXRpdmUuVG9Eb0xpc3RFdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIHRvRG9JdGVt
c0NoYW5nZWQoVG9Eb0xpc3RFdmVudCB0ZGUpIHsNCi0JTE9HLmRlYnVnKCJ0b0RvSXRlbUNoYW5n
ZWQiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInRvRG9JdGVtQ2hhbmdlZCIpOw0K
ICAgICAgICAgTGlzdDxUb0RvSXRlbT4gaXRlbXMgPSB0ZGUuZ2V0VG9Eb0l0ZW1MaXN0KCk7DQog
CU9iamVjdFtdIHBhdGggPSBuZXcgT2JqZWN0WzJdOw0KIAlwYXRoWzBdID0gRGVzaWduZXIudGhl
RGVzaWduZXIoKS5nZXRUb0RvTGlzdCgpOw0KQEAgLTEwOSw3ICsxMTAsNyBAQA0KICAgICAgKiBA
c2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdExpc3RlbmVyI3RvRG9JdGVtc0FkZGVk
KG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdEV2ZW50KQ0KICAgICAgKi8NCiAgICAgcHVi
bGljIHZvaWQgdG9Eb0l0ZW1zQWRkZWQoVG9Eb0xpc3RFdmVudCB0ZGUpIHsNCi0JTE9HLmRlYnVn
KCJ0b0RvSXRlbUFkZGVkIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJ0b0RvSXRl
bUFkZGVkIik7DQogCUxpc3Q8VG9Eb0l0ZW0+IGl0ZW1zID0gdGRlLmdldFRvRG9JdGVtTGlzdCgp
Ow0KIAlPYmplY3RbXSBwYXRoID0gbmV3IE9iamVjdFsyXTsNCiAJcGF0aFswXSA9IERlc2lnbmVy
LnRoZURlc2lnbmVyKCkuZ2V0VG9Eb0xpc3QoKTsNCkBAIC0xNDYsMTQgKzE0NywxNCBAQA0KICAg
ICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdExpc3RlbmVyI3RvRG9JdGVt
c1JlbW92ZWQob3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9MaXN0RXZlbnQpDQogICAgICAqLw0K
ICAgICBwdWJsaWMgdm9pZCB0b0RvSXRlbXNSZW1vdmVkKFRvRG9MaXN0RXZlbnQgdGRlKSB7DQot
CUxPRy5kZWJ1ZygidG9Eb0l0ZW1SZW1vdmVkIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJ
TkUsICJ0b0RvSXRlbVJlbW92ZWQiKTsNCiAJTGlzdDxUb0RvSXRlbT4gaXRlbXMgPSB0ZGUuZ2V0
VG9Eb0l0ZW1MaXN0KCk7DQogCU9iamVjdFtdIHBhdGggPSBuZXcgT2JqZWN0WzJdOw0KIAlwYXRo
WzBdID0gRGVzaWduZXIudGhlRGVzaWduZXIoKS5nZXRUb0RvTGlzdCgpOw0KIA0KICAgICAgICAg
Zm9yIChEZWNpc2lvbiBkZWMgOiBEZXNpZ25lci50aGVEZXNpZ25lcigpLmdldERlY2lzaW9uTW9k
ZWwoKQ0KICAgICAgICAgICAgICAgICAuZ2V0RGVjaXNpb25MaXN0KCkpIHsNCi0JICAgIExPRy5k
ZWJ1ZygidG9Eb0l0ZW1SZW1vdmVkIHVwZGF0aW5nIGRlY2lzaW9uIG5vZGUhIik7DQorICAgICAg
ICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAidG9Eb0l0ZW1SZW1vdmVkIHVwZGF0aW5nIGRlY2lz
aW9uIG5vZGUhIik7DQogCSAgICBib29sZWFuIGFueUluRGVjID0gZmFsc2U7DQogICAgICAgICAg
ICAgZm9yIChUb0RvSXRlbSBpdGVtIDogaXRlbXMpIHsNCiAJCWlmIChpdGVtLnN1cHBvcnRzKGRl
YykpIHsNCkBAIC0yMjMsNSArMjI0LDMgQEANCiAgICAgLy8gICB9DQogDQogfSAvKiBlbmQgY2xh
c3MgVG9Eb0J5RGVjaXNpb24gKi8NCi0NCi0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeUdvYWwuamF2YQ0KVXJsOiBo
dHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS91aS9Ub0RvQnlHb2FsLmphdmE/
dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0
aXZlL3VpL1RvRG9CeUdvYWwuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb0J5R29hbC5qYXZhCTIwMTItMTIt
MzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVs
b3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cN
CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp
bmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhp
cyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC0zOCw3ICszOCw5IEBADQog
DQogcGFja2FnZSBvcmcuYXJnb3VtbC5jb2duaXRpdmUudWk7DQogDQotaW1wb3J0IG9yZy5hcGFj
aGUubG9nNGouTG9nZ2VyOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBv
cnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KKw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2du
aXRpdmUuRGVzaWduZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Hb2FsOw0KIGlt
cG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0l0ZW07DQpAQCAtNTIsNyArNTQsNyBAQA0K
IHB1YmxpYyBjbGFzcyBUb0RvQnlHb2FsIGV4dGVuZHMgVG9Eb1BlcnNwZWN0aXZlDQogICAgIGlt
cGxlbWVudHMgVG9Eb0xpc3RMaXN0ZW5lciB7DQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExv
Z2dlciBMT0cgPQ0KLSAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihUb0RvQnlHb2FsLmNsYXNzKTsN
CisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoVG9Eb0J5R29hbC5jbGFzcy5nZXROYW1lKCkpOw0K
IA0KIA0KICAgICAvKioNCkBAIC03MSw3ICs3Myw3IEBADQogICAgICAqIEBzZWUgb3JnLmFyZ291
bWwuY29nbml0aXZlLlRvRG9MaXN0TGlzdGVuZXIjdG9Eb0l0ZW1zQ2hhbmdlZChvcmcuYXJnb3Vt
bC5jb2duaXRpdmUuVG9Eb0xpc3RFdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIHRv
RG9JdGVtc0NoYW5nZWQoVG9Eb0xpc3RFdmVudCB0ZGUpIHsNCi0JTE9HLmRlYnVnKCJ0b0RvSXRl
bXNDaGFuZ2VkIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJ0b0RvSXRlbXNDaGFu
Z2VkIik7DQogCU9iamVjdFtdIHBhdGggPSBuZXcgT2JqZWN0WzJdOw0KIAlwYXRoWzBdID0gRGVz
aWduZXIudGhlRGVzaWduZXIoKS5nZXRUb0RvTGlzdCgpOw0KIA0KQEAgLTEwNiw3ICsxMDgsNyBA
QA0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdExpc3RlbmVyI3Rv
RG9JdGVtc0FkZGVkKG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdEV2ZW50KQ0KICAgICAg
Ki8NCiAgICAgcHVibGljIHZvaWQgdG9Eb0l0ZW1zQWRkZWQoVG9Eb0xpc3RFdmVudCB0ZGUpIHsN
Ci0JTE9HLmRlYnVnKCJ0b0RvSXRlbUFkZGVkIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJ
TkUsICJ0b0RvSXRlbUFkZGVkIik7DQogCU9iamVjdFtdIHBhdGggPSBuZXcgT2JqZWN0WzJdOw0K
IAlwYXRoWzBdID0gRGVzaWduZXIudGhlRGVzaWduZXIoKS5nZXRUb0RvTGlzdCgpOw0KIA0KQEAg
LTE0MiwxMiArMTQ0LDEyIEBADQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29nbml0aXZlLlRv
RG9MaXN0TGlzdGVuZXIjdG9Eb0l0ZW1zUmVtb3ZlZChvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9E
b0xpc3RFdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIHRvRG9JdGVtc1JlbW92ZWQo
VG9Eb0xpc3RFdmVudCB0ZGUpIHsNCi0JTE9HLmRlYnVnKCJ0b0RvSXRlbUFkZGVkIik7DQorICAg
ICAgICBMT0cubG9nKExldmVsLkZJTkUsICJ0b0RvSXRlbUFkZGVkIik7DQogCU9iamVjdFtdIHBh
dGggPSBuZXcgT2JqZWN0WzJdOw0KIAlwYXRoWzBdID0gRGVzaWduZXIudGhlRGVzaWduZXIoKS5n
ZXRUb0RvTGlzdCgpOw0KIA0KICAgICAgICAgZm9yIChHb2FsIGcgOiBEZXNpZ25lci50aGVEZXNp
Z25lcigpLmdldEdvYWxMaXN0KCkpIHsNCi0JICAgIExPRy5kZWJ1ZygidG9Eb0l0ZW1SZW1vdmVk
IHVwZGF0aW5nIGRlY2lzaW9uIG5vZGUhIik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5G
SU5FLCAidG9Eb0l0ZW1SZW1vdmVkIHVwZGF0aW5nIGRlY2lzaW9uIG5vZGUhIik7DQogCSAgICBi
b29sZWFuIGFueUluR29hbCA9IGZhbHNlOw0KICAgICAgICAgICAgIGZvciAoVG9Eb0l0ZW0gaXRl
bSA6IHRkZS5nZXRUb0RvSXRlbUxpc3QoKSkgew0KIAkJaWYgKGl0ZW0uc3VwcG9ydHMoZykpIHsN
CkBAIC0xNzAsNSArMTcyLDMgQEANCiANCiANCiB9DQotDQotDQoNCk1vZGlmaWVkOiB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS91aS9Ub0RvQnlPZmZlbmRl
ci5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdv
dW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1Rv
RG9CeU9mZmVuZGVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5
MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeU9mZmVuZGVyLmphdmEJKG9yaWdpbmFsKQ0K
KysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1Rv
RG9CeU9mZmVuZGVyLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYg
QEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAy
MDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEy
IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMg
cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFp
bGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAN
CiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJs
ZSBhdA0KQEAgLTM5LDggKzM5LDkgQEANCiBwYWNrYWdlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS51
aTsNCiANCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5n
LkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9y
Zy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuRGVz
aWduZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5MaXN0U2V0Ow0KIGltcG9ydCBv
cmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0l0ZW07DQpAQCAtNTQsNyArNTUsOCBAQA0KIHB1Ymxp
YyBjbGFzcyBUb0RvQnlPZmZlbmRlciBleHRlbmRzIFRvRG9QZXJzcGVjdGl2ZQ0KICAgICAgICAg
aW1wbGVtZW50cyBUb0RvTGlzdExpc3RlbmVyIHsNCiANCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoVG9Eb0J5T2ZmZW5kZXIuY2xhc3MpOw0K
KyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5n
ZXRMb2dnZXIoVG9Eb0J5T2ZmZW5kZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQog
ICAgICAqIFRoZSBjb25zdHJ1Y3Rvci4NCkBAIC03Miw3ICs3NCw3IEBADQogICAgICAqIEBzZWUg
b3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9MaXN0TGlzdGVuZXIjdG9Eb0l0ZW1zQ2hhbmdlZChv
cmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RFdmVudCkNCiAgICAgICovDQogICAgIHB1Ymxp
YyB2b2lkIHRvRG9JdGVtc0NoYW5nZWQoVG9Eb0xpc3RFdmVudCB0ZGUpIHsNCi0gICAgICAgIExP
Ry5kZWJ1ZygidG9Eb0l0ZW1zQ2hhbmdlZCIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5F
LCAidG9Eb0l0ZW1zQ2hhbmdlZCIpOw0KICAgICAgICAgTGlzdDxUb0RvSXRlbT4gaXRlbXMgPSB0
ZGUuZ2V0VG9Eb0l0ZW1MaXN0KCk7DQogICAgICAgICBPYmplY3RbXSBwYXRoID0gbmV3IE9iamVj
dFsyXTsNCiAgICAgICAgIHBhdGhbMF0gPSBEZXNpZ25lci50aGVEZXNpZ25lcigpLmdldFRvRG9M
aXN0KCk7DQpAQCAtMTE5LDcgKzEyMSw3IEBADQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29n
bml0aXZlLlRvRG9MaXN0TGlzdGVuZXIjdG9Eb0l0ZW1zQWRkZWQob3JnLmFyZ291bWwuY29nbml0
aXZlLlRvRG9MaXN0RXZlbnQpDQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCB0b0RvSXRlbXNB
ZGRlZChUb0RvTGlzdEV2ZW50IHRkZSkgew0KLSAgICAgICAgTE9HLmRlYnVnKCJ0b0RvSXRlbUFk
ZGVkIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJ0b0RvSXRlbUFkZGVkIik7DQog
ICAgICAgICBMaXN0PFRvRG9JdGVtPiBpdGVtcyA9IHRkZS5nZXRUb0RvSXRlbUxpc3QoKTsNCiAg
ICAgICAgIE9iamVjdFtdIHBhdGggPSBuZXcgT2JqZWN0WzJdOw0KICAgICAgICAgcGF0aFswXSA9
IERlc2lnbmVyLnRoZURlc2lnbmVyKCkuZ2V0VG9Eb0xpc3QoKTsNCkBAIC0xNjgsNyArMTcwLDcg
QEANCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RMaXN0ZW5lciN0
b0RvSXRlbXNSZW1vdmVkKG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdEV2ZW50KQ0KICAg
ICAgKi8NCiAgICAgcHVibGljIHZvaWQgdG9Eb0l0ZW1zUmVtb3ZlZChUb0RvTGlzdEV2ZW50IHRk
ZSkgew0KLSAgICAgICAgTE9HLmRlYnVnKCJ0b0RvSXRlbVJlbW92ZWQiKTsNCisgICAgICAgIExP
Ry5sb2coTGV2ZWwuRklORSwgInRvRG9JdGVtUmVtb3ZlZCIpOw0KICAgICAgICAgTGlzdDxUb0Rv
SXRlbT4gaXRlbXMgPSB0ZGUuZ2V0VG9Eb0l0ZW1MaXN0KCk7DQogICAgICAgICBPYmplY3RbXSBw
YXRoID0gbmV3IE9iamVjdFsyXTsNCiAgICAgICAgIHBhdGhbMF0gPSBEZXNpZ25lci50aGVEZXNp
Z25lcigpLmdldFRvRG9MaXN0KCk7DQpAQCAtMTkyLDcgKzE5NCw3IEBADQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgfQ0KIA0KLSAgICAgICAgICAgICAg
ICBMT0cuZGVidWcoInRvRG9JdGVtUmVtb3ZlZCB1cGRhdGluZyBQcmlvcml0eU5vZGUiKTsNCisg
ICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAidG9Eb0l0ZW1SZW1vdmVkIHVwZGF0
aW5nIFByaW9yaXR5Tm9kZSIpOw0KICAgICAgICAgICAgICAgICBwYXRoWzFdID0gb2ZmOw0KICAg
ICAgICAgICAgICAgICAvLyBmaXJlVHJlZU5vZGVzQ2hhbmdlZCh0aGlzLCBwYXRoLCBjaGlsZElu
ZGljZXMsIGNoaWxkcmVuKTsNCiAgICAgICAgICAgICAgICAgZmlyZVRyZWVTdHJ1Y3R1cmVDaGFu
Z2VkKHBhdGgpOw0KQEAgLTIwNyw0ICsyMDksMyBAQA0KICAgICB9DQogDQogfSAvKiBlbmQgY2xh
c3MgVG9Eb0J5T2ZmZW5kZXIgKi8NCi0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeVBvc3Rlci5qYXZhDQpVcmw6IGh0
dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeVBvc3Rlci5qYXZh
P3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25p
dGl2ZS91aS9Ub0RvQnlQb3N0ZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb0J5UG9zdGVyLmphdmEJMjAx
Mi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNl
ZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBi
ZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t
cGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmll
cyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTM5LDggKzM5LDkg
QEANCiBwYWNrYWdlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS51aTsNCiANCiBpbXBvcnQgamF2YS51
dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZh
LnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2Vy
Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuRGVzaWduZXI7DQogaW1wb3J0IG9yZy5h
cmdvdW1sLmNvZ25pdGl2ZS5MaXN0U2V0Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUu
UG9zdGVyOw0KQEAgLTU1LDcgKzU2LDcgQEANCiBwdWJsaWMgY2xhc3MgVG9Eb0J5UG9zdGVyIGV4
dGVuZHMgVG9Eb1BlcnNwZWN0aXZlDQogICAgIGltcGxlbWVudHMgVG9Eb0xpc3RMaXN0ZW5lciB7
DQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KLSAgICAgICAgTG9nZ2Vy
LmdldExvZ2dlcihUb0RvQnlQb3N0ZXIuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dl
cihUb0RvQnlQb3N0ZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIFRo
ZSBjb25zdHJ1Y3Rvci4NCkBAIC03MywxMiArNzQsMTIgQEANCiAgICAgICogQHNlZSBvcmcuYXJn
b3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RMaXN0ZW5lciN0b0RvSXRlbXNDaGFuZ2VkKG9yZy5hcmdv
dW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdEV2ZW50KQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQg
dG9Eb0l0ZW1zQ2hhbmdlZChUb0RvTGlzdEV2ZW50IHRkZSkgew0KLQlMT0cuZGVidWcoInRvRG9J
dGVtc0NoYW5nZWQiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInRvRG9JdGVtc0No
YW5nZWQiKTsNCiAgICAgICAgIExpc3Q8VG9Eb0l0ZW0+IGl0ZW1zID0gdGRlLmdldFRvRG9JdGVt
TGlzdCgpOw0KIAlPYmplY3RbXSBwYXRoID0gbmV3IE9iamVjdFsyXTsNCiAJcGF0aFswXSA9IERl
c2lnbmVyLnRoZURlc2lnbmVyKCkuZ2V0VG9Eb0xpc3QoKTsNCiANCi0JTGlzdFNldDxQb3N0ZXI+
IGFsbFBvc3RlcnMgPSANCisJTGlzdFNldDxQb3N0ZXI+IGFsbFBvc3RlcnMgPQ0KIAkgICAgRGVz
aWduZXIudGhlRGVzaWduZXIoKS5nZXRUb0RvTGlzdCgpLmdldFBvc3RlcnMoKTsNCiAgICAgICAg
IHN5bmNocm9uaXplZCAoYWxsUG9zdGVycykgew0KICAgICAgICAgICAgIGZvciAoUG9zdGVyIHAg
OiBhbGxQb3N0ZXJzKSB7DQpAQCAtMTE1LDEyICsxMTYsMTIgQEANCiAgICAgICogQHNlZSBvcmcu
YXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RMaXN0ZW5lciN0b0RvSXRlbXNBZGRlZChvcmcuYXJn
b3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RFdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lk
IHRvRG9JdGVtc0FkZGVkKFRvRG9MaXN0RXZlbnQgdGRlKSB7DQotCUxPRy5kZWJ1ZygidG9Eb0l0
ZW1BZGRlZCIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAidG9Eb0l0ZW1BZGRlZCIp
Ow0KIAlMaXN0PFRvRG9JdGVtPiBpdGVtcyA9IHRkZS5nZXRUb0RvSXRlbUxpc3QoKTsNCiAJT2Jq
ZWN0W10gcGF0aCA9IG5ldyBPYmplY3RbMl07DQogCXBhdGhbMF0gPSBEZXNpZ25lci50aGVEZXNp
Z25lcigpLmdldFRvRG9MaXN0KCk7DQogDQotCUxpc3RTZXQ8UG9zdGVyPiBhbGxQb3N0ZXJzID0g
DQorCUxpc3RTZXQ8UG9zdGVyPiBhbGxQb3N0ZXJzID0NCiAJICAgIERlc2lnbmVyLnRoZURlc2ln
bmVyKCkuZ2V0VG9Eb0xpc3QoKS5nZXRQb3N0ZXJzKCk7DQogCXN5bmNocm9uaXplZCAoYWxsUG9z
dGVycykgew0KICAgICAgICAgICAgIGZvciAoUG9zdGVyIHAgOiBhbGxQb3N0ZXJzKSB7DQpAQCAt
MTU3LDkgKzE1OCw5IEBADQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9M
aXN0TGlzdGVuZXIjdG9Eb0l0ZW1zUmVtb3ZlZChvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xp
c3RFdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIHRvRG9JdGVtc1JlbW92ZWQoVG9E
b0xpc3RFdmVudCB0ZGUpIHsNCi0JTE9HLmRlYnVnKCJ0b0RvSXRlbVJlbW92ZWQiKTsNCisgICAg
ICAgIExPRy5sb2coTGV2ZWwuRklORSwgInRvRG9JdGVtUmVtb3ZlZCIpOw0KICAgICAgICAgTGlz
dDxUb0RvSXRlbT4gaXRlbXMgPSB0ZGUuZ2V0VG9Eb0l0ZW1MaXN0KCk7DQotICAgICAgICANCisN
CiAJT2JqZWN0W10gcGF0aCA9IG5ldyBPYmplY3RbMl07DQogCXBhdGhbMF0gPSBEZXNpZ25lci50
aGVEZXNpZ25lcigpLmdldFRvRG9MaXN0KCk7DQogDQpAQCAtMTkxLDUgKzE5MiwzIEBADQogICAg
IH0NCiANCiB9DQotDQotDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL2NvZ25pdGl2ZS91aS9Ub0RvQnlQcmlvcml0eS5qYXZhDQpVcmw6IGh0dHA6Ly9h
cmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeVByaW9yaXR5LmphdmE/dmll
dz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZl
L3VpL1RvRG9CeVByaW9yaXR5LmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9CeVByaW9yaXR5LmphdmEJMjAx
Mi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNl
ZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBi
ZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t
cGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmll
cyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTM5LDggKzM5LDkg
QEANCiBwYWNrYWdlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS51aTsNCiANCiBpbXBvcnQgamF2YS51
dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZh
LnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2Vy
Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuRGVzaWduZXI7DQogaW1wb3J0IG9yZy5h
cmdvdW1sLmNvZ25pdGl2ZS5Ub0RvSXRlbTsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29nbml0aXZl
LlRvRG9MaXN0RXZlbnQ7DQpAQCAtNTMsNyArNTQsNyBAQA0KIHB1YmxpYyBjbGFzcyBUb0RvQnlQ
cmlvcml0eSBleHRlbmRzIFRvRG9QZXJzcGVjdGl2ZQ0KICAgICBpbXBsZW1lbnRzIFRvRG9MaXN0
TGlzdGVuZXIgew0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCi0gICAg
ICAgIExvZ2dlci5nZXRMb2dnZXIoVG9Eb0J5UHJpb3JpdHkuY2xhc3MpOw0KKyAgICAgICAgTG9n
Z2VyLmdldExvZ2dlcihUb0RvQnlQcmlvcml0eS5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAv
KioNCiAgICAgICogVGhlIGNvbnN0cnVjdG9yLg0KQEAgLTcxLDcgKzcyLDcgQEANCiAgICAgICog
QHNlZSBvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RMaXN0ZW5lciN0b0RvSXRlbXNDaGFu
Z2VkKG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdEV2ZW50KQ0KICAgICAgKi8NCiAgICAg
cHVibGljIHZvaWQgdG9Eb0l0ZW1zQ2hhbmdlZChUb0RvTGlzdEV2ZW50IHRkZSkgew0KLQlMT0cu
ZGVidWcoInRvRG9JdGVtQ2hhbmdlZCIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAi
dG9Eb0l0ZW1DaGFuZ2VkIik7DQogICAgICAgICBMaXN0PFRvRG9JdGVtPiBpdGVtcyA9IHRkZS5n
ZXRUb0RvSXRlbUxpc3QoKTsNCiAJT2JqZWN0W10gcGF0aCA9IG5ldyBPYmplY3RbMl07DQogCXBh
dGhbMF0gPSBEZXNpZ25lci50aGVEZXNpZ25lcigpLmdldFRvRG9MaXN0KCk7DQpAQCAtMTExLDcg
KzExMiw3IEBADQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9MaXN0TGlz
dGVuZXIjdG9Eb0l0ZW1zQWRkZWQob3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9MaXN0RXZlbnQp
DQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCB0b0RvSXRlbXNBZGRlZChUb0RvTGlzdEV2ZW50
IHRkZSkgew0KLQlMT0cuZGVidWcoInRvRG9JdGVtQWRkZWQiKTsNCisgICAgICAgIExPRy5sb2co
TGV2ZWwuRklORSwgInRvRG9JdGVtQWRkZWQiKTsNCiAJTGlzdDxUb0RvSXRlbT4gaXRlbXMgPSB0
ZGUuZ2V0VG9Eb0l0ZW1MaXN0KCk7DQogCU9iamVjdFtdIHBhdGggPSBuZXcgT2JqZWN0WzJdOw0K
IAlwYXRoWzBdID0gRGVzaWduZXIudGhlRGVzaWduZXIoKS5nZXRUb0RvTGlzdCgpOw0KQEAgLTE1
MSw3ICsxNTIsNyBAQA0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlz
dExpc3RlbmVyI3RvRG9JdGVtc1JlbW92ZWQob3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9MaXN0
RXZlbnQpDQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCB0b0RvSXRlbXNSZW1vdmVkKFRvRG9M
aXN0RXZlbnQgdGRlKSB7DQotCUxPRy5kZWJ1ZygidG9Eb0l0ZW1SZW1vdmVkIik7DQorICAgICAg
ICBMT0cubG9nKExldmVsLkZJTkUsICJ0b0RvSXRlbVJlbW92ZWQiKTsNCiAgICAgICAgIExpc3Q8
VG9Eb0l0ZW0+IGl0ZW1zID0gdGRlLmdldFRvRG9JdGVtTGlzdCgpOw0KIAlPYmplY3RbXSBwYXRo
ID0gbmV3IE9iamVjdFsyXTsNCiAJcGF0aFswXSA9IERlc2lnbmVyLnRoZURlc2lnbmVyKCkuZ2V0
VG9Eb0xpc3QoKTsNCkBAIC0xNzAsNyArMTcxLDcgQEANCiAJICAgIGlmICghYW55SW5QcmkpIHsN
CiAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgfQ0KLQkgICAgTE9HLmRl
YnVnKCJ0b0RvSXRlbVJlbW92ZWQgdXBkYXRpbmcgUHJpb3JpdHlOb2RlIik7DQorICAgICAgICAg
ICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAidG9Eb0l0ZW1SZW1vdmVkIHVwZGF0aW5nIFByaW9yaXR5
Tm9kZSIpOw0KIAkgICAgcGF0aFsxXSA9IHBuOw0KIAkgICAgLy9maXJlVHJlZU5vZGVzQ2hhbmdl
ZCh0aGlzLCBwYXRoLCBjaGlsZEluZGljZXMsIGNoaWxkcmVuKTsNCiAJICAgIGZpcmVUcmVlU3Ry
dWN0dXJlQ2hhbmdlZChwYXRoKTsNCkBAIC0xODMsNiArMTg0LDMgQEANCiAgICAgcHVibGljIHZv
aWQgdG9Eb0xpc3RDaGFuZ2VkKFRvRG9MaXN0RXZlbnQgdGRlKSB7IH0NCiANCiB9DQotDQotDQot
DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25p
dGl2ZS91aS9Ub0RvQnlUeXBlLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9z
b3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9jb2duaXRpdmUvdWkvVG9Eb0J5VHlwZS5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIx
PTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS91aS9Ub0RvQnlUeXBlLmphdmEJKG9y
aWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0
aXZlL3VpL1RvRG9CeVR5cGUuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYg
KzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5
LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4g
VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRl
IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2Ug
djEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZh
aWxhYmxlIGF0DQpAQCAtMzksOCArMzksOSBAQA0KIHBhY2thZ2Ugb3JnLmFyZ291bWwuY29nbml0
aXZlLnVpOw0KIA0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLmxv
Z2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBv
cnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2
ZS5EZXNpZ25lcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9JdGVtOw0KIGlt
cG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RFdmVudDsNCkBAIC01Myw3ICs1NCw3
IEBADQogcHVibGljIGNsYXNzIFRvRG9CeVR5cGUgZXh0ZW5kcyBUb0RvUGVyc3BlY3RpdmUNCiAg
ICAgaW1wbGVtZW50cyBUb0RvTGlzdExpc3RlbmVyIHsNCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9DQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFRvRG9CeVR5cGUuY2xh
c3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihUb0RvQnlUeXBlLmNsYXNzLmdldE5hbWUo
KSk7DQogDQogICAgIC8qKg0KICAgICAgKiBUaGUgY29uc3RydWN0b3IuDQpAQCAtNzIsNyArNzMs
NyBAQA0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdExpc3RlbmVy
I3RvRG9JdGVtc0NoYW5nZWQob3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9MaXN0RXZlbnQpDQog
ICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCB0b0RvSXRlbXNDaGFuZ2VkKFRvRG9MaXN0RXZlbnQg
dGRlKSB7DQotCUxPRy5kZWJ1ZygidG9Eb0l0ZW1zQ2hhbmdlZCIpOw0KKyAgICAgICAgTE9HLmxv
ZyhMZXZlbC5GSU5FLCAidG9Eb0l0ZW1zQ2hhbmdlZCIpOw0KICAgICAgICAgTGlzdDxUb0RvSXRl
bT4gaXRlbXMgPSB0ZGUuZ2V0VG9Eb0l0ZW1MaXN0KCk7DQogCU9iamVjdFtdIHBhdGggPSBuZXcg
T2JqZWN0WzJdOw0KIAlwYXRoWzBdID0gRGVzaWduZXIudGhlRGVzaWduZXIoKS5nZXRUb0RvTGlz
dCgpOw0KQEAgLTEwOSw3ICsxMTAsNyBAQA0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLmNvZ25p
dGl2ZS5Ub0RvTGlzdExpc3RlbmVyI3RvRG9JdGVtc0FkZGVkKG9yZy5hcmdvdW1sLmNvZ25pdGl2
ZS5Ub0RvTGlzdEV2ZW50KQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgdG9Eb0l0ZW1zQWRk
ZWQoVG9Eb0xpc3RFdmVudCB0ZGUpIHsNCi0JTE9HLmRlYnVnKCJ0b0RvSXRlbUFkZGVkIik7DQor
ICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJ0b0RvSXRlbUFkZGVkIik7DQogICAgICAgICBM
aXN0PFRvRG9JdGVtPiBpdGVtcyA9IHRkZS5nZXRUb0RvSXRlbUxpc3QoKTsNCiAJT2JqZWN0W10g
cGF0aCA9IG5ldyBPYmplY3RbMl07DQogCXBhdGhbMF0gPSBEZXNpZ25lci50aGVEZXNpZ25lcigp
LmdldFRvRG9MaXN0KCk7DQpAQCAtMTQ2LDcgKzE0Nyw3IEBADQogICAgICAqIEBzZWUgb3JnLmFy
Z291bWwuY29nbml0aXZlLlRvRG9MaXN0TGlzdGVuZXIjdG9Eb0l0ZW1zUmVtb3ZlZChvcmcuYXJn
b3VtbC5jb2duaXRpdmUuVG9Eb0xpc3RFdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lk
IHRvRG9JdGVtc1JlbW92ZWQoVG9Eb0xpc3RFdmVudCB0ZGUpIHsNCi0JTE9HLmRlYnVnKCJ0b0Rv
SXRlbVJlbW92ZWQiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInRvRG9JdGVtUmVt
b3ZlZCIpOw0KICAgICAgICAgTGlzdDxUb0RvSXRlbT4gaXRlbXMgPSB0ZGUuZ2V0VG9Eb0l0ZW1M
aXN0KCk7DQogCU9iamVjdFtdIHBhdGggPSBuZXcgT2JqZWN0WzJdOw0KIAlwYXRoWzBdID0gRGVz
aWduZXIudGhlRGVzaWduZXIoKS5nZXRUb0RvTGlzdCgpOw0KQEAgLTE2Miw3ICsxNjMsNyBAQA0K
IAkgICAgaWYgKCFhbnlJbktUKSB7DQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAg
ICAgICAgIH0NCi0JICAgIExPRy5kZWJ1ZygidG9Eb0l0ZW1SZW1vdmVkIHVwZGF0aW5nIFByaW9y
aXR5Tm9kZSIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInRvRG9JdGVtUmVt
b3ZlZCB1cGRhdGluZyBQcmlvcml0eU5vZGUiKTsNCiAJICAgIHBhdGhbMV0gPSBrdG47DQogCSAg
ICAvL2ZpcmVUcmVlTm9kZXNDaGFuZ2VkKHRoaXMsIHBhdGgsIGNoaWxkSW5kaWNlcywgY2hpbGRy
ZW4pOw0KIAkgICAgZmlyZVRyZWVTdHJ1Y3R1cmVDaGFuZ2VkKHBhdGgpOw0KQEAgLTE3NSw1ICsx
NzYsMyBAQA0KICAgICBwdWJsaWMgdm9pZCB0b0RvTGlzdENoYW5nZWQoVG9Eb0xpc3RFdmVudCB0
ZGUpIHsgfQ0KIA0KIH0NCi0NCi0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1RvRG9QYW5lLmphdmENClVybDogaHR0cDovL2Fy
Z291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb1BhbmUuamF2YT92aWV3PWRpZmYm
cGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9E
b1BhbmUuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb1BhbmUuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4
MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJp
Z2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K
ICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVi
bGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u
LCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDgsNiArNDgsOCBAQA0KIGltcG9ydCBqYXZhLnRl
eHQuTWVzc2FnZUZvcm1hdDsNCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCiBpbXBvcnQg
amF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9y
dCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5nLkJvcmRl
ckZhY3Rvcnk7DQogaW1wb3J0IGphdmF4LnN3aW5nLkpDb21ib0JveDsNCkBAIC02MSw3ICs2Myw2
IEBADQogaW1wb3J0IGphdmF4LnN3aW5nLnRyZWUuVHJlZU1vZGVsOw0KIGltcG9ydCBqYXZheC5z
d2luZy50cmVlLlRyZWVQYXRoOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsN
CiBpbXBvcnQgb3JnLmFyZ291bWwuY29nbml0aXZlLkRlc2lnbmVyOw0KIGltcG9ydCBvcmcuYXJn
b3VtbC5jb2duaXRpdmUuVG9Eb0l0ZW07DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5U
b0RvTGlzdDsNCkBAIC0xMDQsNyArMTA1LDggQEANCiAgICAgLyoqDQogICAgICAqIExvZ2dlci4N
CiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIu
Z2V0TG9nZ2VyKFRvRG9QYW5lLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9n
Z2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFRvRG9QYW5lLmNsYXNzLmdldE5h
bWUoKSk7DQogDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBXQVJOX1RIUkVTSE9MRCA9
IDUwOw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUxBUk1fVEhSRVNIT0xEID0gMTAw
Ow0KQEAgLTEzMSwxNCArMTMzLDE0IEBADQogICAgIC8qKg0KICAgICAgKiBDb25zdHJ1Y3QgdGhl
IFRvRG9QYW5lLg0KICAgICAgKiBAcGFyYW0gc3BsYXNoIFVudXNlZCBwYXJhbWV0ZXIgZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQGRlcHJl
Y2F0ZWQgZm9yIDAuMzEuNyBieSB0Zm1vcnJpcy4gIFVzZSAwLWFyZyBjb25zdHJ1Y3Rvci4NCiAg
ICAgICovDQogICAgIEBEZXByZWNhdGVkDQogICAgIHB1YmxpYyBUb0RvUGFuZShAU3VwcHJlc3NX
YXJuaW5ncygidW51c2VkIikgU3BsYXNoU2NyZWVuIHNwbGFzaCkgew0KICAgICAgICAgdGhpcygp
Ow0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogQ29uc3RydWN0IHRoZSBUb0Rv
UGFuZS4NCiAgICAgICovDQpAQCAtMjAzLDcgKzIwNSw3IEBADQogICAgIHB1YmxpYyBMaXN0PFRv
RG9QZXJzcGVjdGl2ZT4gZ2V0UGVyc3BlY3RpdmVMaXN0KCkgew0KICAgICAgICAgcmV0dXJuIHBl
cnNwZWN0aXZlczsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEBwYXJhbSBw
ZXJzIHRoZSBwZXJzcGVjdGl2ZXMNCiAgICAgICovDQpAQCAtMjI4LDcgKzIzMCw3IEBADQogICAg
ICAgICB9DQogICAgICAgICB1cGRhdGVUcmVlKCk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8q
Kg0KICAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IHBlcnNwZWN0aXZlcw0KICAgICAgKi8NCkBA
IC0zMDAsMTMgKzMwMiwxMyBAQA0KICAgICAgKiBAc2VlIGphdmF4LnN3aW5nLmV2ZW50LlRyZWVT
ZWxlY3Rpb25MaXN0ZW5lciN2YWx1ZUNoYW5nZWQoamF2YXguc3dpbmcuZXZlbnQuVHJlZVNlbGVj
dGlvbkV2ZW50KQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgdmFsdWVDaGFuZ2VkKFRyZWVT
ZWxlY3Rpb25FdmVudCBlKSB7DQotICAgICAgICBMT0cuZGVidWcoIlRvRG9QYW5lIHZhbHVlQ2hh
bmdlZCIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiVG9Eb1BhbmUgdmFsdWVDaGFu
Z2VkIik7DQogICAgICAgICAvL1RPRE86IHNob3VsZCBmaXJlIGl0cyBvd24gZXZlbnQgYW5kIFBy
b2plY3RCcm93c2VyDQogICAgICAgICAvL3Nob3VsZCByZWdpc3RlciBhIGxpc3RlbmVyIC0gdGZt
DQogICAgICAgICBPYmplY3Qgc2VsID0gZ2V0U2VsZWN0ZWRPYmplY3QoKTsNCiAgICAgICAgIFBy
b2plY3RCcm93c2VyLmdldEluc3RhbmNlKCkuc2V0VG9Eb0l0ZW0oc2VsKTsNCi0gICAgICAgIExP
Ry5kZWJ1ZygibGFzdHNlbGVjdGlvbjogIiArIGxhc3RTZWwpOw0KLQlMT0cuZGVidWcoInNlbDog
IiArIHNlbCk7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJsYXN0c2VsZWN0aW9uOiB7
MH0iLCBsYXN0U2VsKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInNlbDogezB9Iiwg
c2VsKTsNCiAgICAgICAgIGlmIChsYXN0U2VsIGluc3RhbmNlb2YgVG9Eb0l0ZW0pIHsNCiAJICAg
ICgoVG9Eb0l0ZW0pIGxhc3RTZWwpLmRlc2VsZWN0KCk7DQogCX0NCkBAIC0zMjEsMjggKzMyMywy
OCBAQA0KICAgICAvKg0KICAgICAgKiBAc2VlIGphdmEuYXd0LmV2ZW50Lk1vdXNlTGlzdGVuZXIj
bW91c2VQcmVzc2VkKGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQpDQogICAgICAqLw0KLSAgICBw
dWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7IA0KKyAgICBwdWJsaWMgdm9p
ZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7DQogICAgICAgICAvLyBFbXB0eSBpbXBsZW1l
bnRhdGlvbi4NCiAgICAgfQ0KIA0KICAgICAvKg0KICAgICAgKiBAc2VlIGphdmEuYXd0LmV2ZW50
Lk1vdXNlTGlzdGVuZXIjbW91c2VSZWxlYXNlZChqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50KQ0K
ICAgICAgKi8NCi0gICAgcHVibGljIHZvaWQgbW91c2VSZWxlYXNlZChNb3VzZUV2ZW50IGUpIHsg
IA0KKyAgICBwdWJsaWMgdm9pZCBtb3VzZVJlbGVhc2VkKE1vdXNlRXZlbnQgZSkgew0KICAgICAg
ICAgLy8gRW1wdHkgaW1wbGVtZW50YXRpb24uDQogICAgIH0NCiANCiAgICAgLyoNCiAgICAgICog
QHNlZSBqYXZhLmF3dC5ldmVudC5Nb3VzZUxpc3RlbmVyI21vdXNlRW50ZXJlZChqYXZhLmF3dC5l
dmVudC5Nb3VzZUV2ZW50KQ0KICAgICAgKi8NCi0gICAgcHVibGljIHZvaWQgbW91c2VFbnRlcmVk
KE1vdXNlRXZlbnQgZSkgeyAgDQorICAgIHB1YmxpYyB2b2lkIG1vdXNlRW50ZXJlZChNb3VzZUV2
ZW50IGUpIHsNCiAgICAgICAgIC8vIEVtcHR5IGltcGxlbWVudGF0aW9uLg0KICAgICB9DQogDQog
ICAgIC8qDQogICAgICAqIEBzZWUgamF2YS5hd3QuZXZlbnQuTW91c2VMaXN0ZW5lciNtb3VzZUV4
aXRlZChqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50KQ0KICAgICAgKi8NCi0gICAgcHVibGljIHZv
aWQgbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKSB7IA0KKyAgICBwdWJsaWMgdm9pZCBtb3VzZUV4
aXRlZChNb3VzZUV2ZW50IGUpIHsNCiAgICAgICAgIC8vIEVtcHR5IGltcGxlbWVudGF0aW9uLg0K
ICAgICB9DQogDQpAQCAtMzc0LDcgKzM3Niw3IEBADQogICAgICAqIFRoaXMgaXMgbmVjZXNzYXJ5
IGJlY2F1c2UgZXZlbnQgbm90aWZpY2F0aW9uIG9mIFRvRG9MaXN0ZW5lciBldmVudHMgaXMNCiAg
ICAgICogbGlrZWx5IHRvIGJlIGNvbWluZyBmcm9tIHRoZSBUb0RvIFZhbGlkaXR5IENoZWNrZXIg
dGhyZWFkIHJ1bm5pbmcgaW4gdGhlDQogICAgICAqIGJhY2tncm91bmQuDQotICAgICAqIA0KKyAg
ICAgKg0KICAgICAgKiBAcGFyYW0gdGFzayBhIFJ1bm5hYmxlIHRhc2sgd2hvJ3MgcnVuKCkgbWV0
aG9kIHdpbGwgYmUgaW52b2tlZA0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSB2b2lkIHN3aW5nSW52
b2tlKFJ1bm5hYmxlIHRhc2spIHsNCkBAIC0zODQsNyArMzg2LDcgQEANCiAgICAgICAgICAgICBT
d2luZ1V0aWxpdGllcy5pbnZva2VMYXRlcih0YXNrKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KLSAg
ICANCisNCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9Eb0xp
c3RMaXN0ZW5lciN0b0RvSXRlbXNDaGFuZ2VkKG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlz
dEV2ZW50KQ0KICAgICAgKi8NCkBAIC00MTAsNyArNDEyLDcgQEANCiAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICBMaXN0PFRvRG9JdGVtPiBpdGVtcyA9IHRkZS5nZXRUb0RvSXRl
bUxpc3QoKTsNCiAgICAgICAgICAgICAgICAgZm9yIChUb0RvSXRlbSB0b2RvIDogaXRlbXMpIHsN
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0b2RvLmdldFByaW9yaXR5KCkgDQorICAgICAgICAg
ICAgICAgICAgICBpZiAodG9kby5nZXRQcmlvcml0eSgpDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID49IFRvRG9JdGVtLklOVEVSUlVQVElWRV9QUklPUklUWSkgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGtlZXAgbmFnZ2luZyB1bnRpbCB0aGUgdXNlciBzb2x2ZXMgdGhlIHBy
b2JsZW06DQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzZWVtcyBhIG5pY2Ugd2F5
IHRvIG5hZzoNCkBAIC00MjIsNyArNDI0LDcgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICB9
KTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5j
b2duaXRpdmUuVG9Eb0xpc3RMaXN0ZW5lciN0b0RvSXRlbXNSZW1vdmVkKG9yZy5hcmdvdW1sLmNv
Z25pdGl2ZS5Ub0RvTGlzdEV2ZW50KQ0KICAgICAgKi8NCkBAIC00OTEsNyArNDkzLDcgQEANCiAg
ICAgICAgIGlmIChjdXJQZXJzcGVjdGl2ZSA9PSBudWxsKSB7DQogICAgICAgICAgICAgdHJlZS5z
ZXRWaXNpYmxlKGZhbHNlKTsNCiAJfSBlbHNlIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIlRv
RG9QYW5lIHNldHRpbmcgdHJlZSBtb2RlbCIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwu
RklORSwgIlRvRG9QYW5lIHNldHRpbmcgdHJlZSBtb2RlbCIpOw0KICAgICAgICAgICAgIGN1clBl
cnNwZWN0aXZlLnNldFJvb3Qocm9vdCk7DQogICAgICAgICAgICAgdHJlZS5zZXRTaG93c1Jvb3RI
YW5kbGVzKHRydWUpOw0KICAgICAgICAgICAgIHRyZWUuc2V0TW9kZWwoY3VyUGVyc3BlY3RpdmUp
Ow0KQEAgLTUxNyw3ICs1MTksNyBAQA0KICAgICAgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aCBpbiB0
aGUgdHJlZSBvZiB0aGUgc2VsZWN0ZWQgaXRlbQ0KICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRp
YyB2b2lkIG15U2luZ2xlQ2xpY2soDQotICAgICAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVu
dXNlZCIpIGludCByb3csIA0KKyAgICAgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQi
KSBpbnQgcm93LA0KICAgICAgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKSBUcmVl
UGF0aCBwYXRoKSB7DQogICAgICAgICBjbGlja3NJblRvRG9QYW5lKys7DQogICAgIH0NCkBAIC01
MzAsNyArNTMyLDcgQEANCiAgICAgICogQHBhcmFtIHBhdGggdGhlIHBhdGggaW4gdGhlIHRyZWUg
b2YgdGhlIHNlbGVjdGVkIGl0ZW0NCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIG15RG91Ymxl
Q2xpY2soDQotICAgICAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpIGludCByb3cs
IA0KKyAgICAgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKSBpbnQgcm93LA0KICAg
ICAgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKSBUcmVlUGF0aCBwYXRoKSB7DQog
ICAgICAgICBkYmxDbGlja3NJblRvRG9QYW5lKys7DQogICAgICAgICBpZiAoZ2V0U2VsZWN0ZWRP
YmplY3QoKSA9PSBudWxsKSB7DQpAQCAtNTQzLDcgKzU0NSw3IEBADQogDQogICAgICAgICAvL1RP
RE86IHNob3VsZCBmaXJlIGl0cyBvd24gZXZlbnQgYW5kIFByb2plY3RCcm93c2VyDQogICAgICAg
ICAvL1RPRE86IHNob3VsZCByZWdpc3RlciBhIGxpc3RlbmVyDQotICAgICAgICBMT0cuZGVidWco
IjI6ICIgKyBnZXRTZWxlY3RlZE9iamVjdCgpLnRvU3RyaW5nKCkpOw0KKyAgICAgICAgTE9HLmxv
ZyhMZXZlbC5GSU5FLCAiMjogezB9IiwgZ2V0U2VsZWN0ZWRPYmplY3QoKSApOw0KICAgICB9DQog
DQogICAgIC8qKg0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC9jb2duaXRpdmUvdWkvVG9Eb1BlcnNwZWN0aXZlLmphdmENClVybDogaHR0cDovL2FyZ291
bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9jb2duaXRpdmUvdWkvVG9Eb1BlcnNwZWN0aXZlLmphdmE/dmlldz1k
aWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3Vp
L1RvRG9QZXJzcGVjdGl2ZS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL2NvZ25pdGl2ZS91aS9Ub0RvUGVyc3BlY3RpdmUuamF2YQkyMDEy
LTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2Vl
IGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJl
bG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w
YW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVz
IHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDAsOCArNDAsOSBA
QA0KIA0KIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlz
dDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5s
b2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1w
b3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvSXRlbTsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
dWkuVHJlZU1vZGVsQ29tcG9zaXRlOw0KIA0KQEAgLTU1LDcgKzU2LDggQEANCiAgICAgLyoqDQog
ICAgICAqIExvZ2dlci4NCiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dl
ciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFRvRG9QZXJzcGVjdGl2ZS5jbGFzcyk7DQorICAgIHBy
aXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dl
cihUb0RvUGVyc3BlY3RpdmUuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAg
ICAvLyBpbnN0YW5jZSB2YXJpYWJsZXMNCkBAIC0xNjMsNyArMTY1LDcgQEANCiAgICAgICAgIGlm
IChub2RlID09IG51bGwpIHsNCiAJICAgIHJldHVybjsNCiAJfQ0KLSAgICAgICAgTE9HLmRlYnVn
KCJhZGRGbGF0Q2hpbGRyZW4iKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImFkZEZs
YXRDaGlsZHJlbiIpOw0KICAgICAgICAgLy8gaGFjayBmb3IgdG8gZG8gaXRlbXMgb25seSwgc2hv
dWxkIGNoZWNrIGlzTGVhZihub2RlKSwgYnV0IHRoYXQNCiAgICAgICAgIC8vIGluY2x1ZGVzIGVt
cHR5IGZvbGRlcnMuIFJlYWxseSBJIG5lZWQgYWx3YXlzTGVhZihub2RlKS4NCiAgICAgICAgIGlm
ICgobm9kZSBpbnN0YW5jZW9mIFRvRG9JdGVtKSAmJiAhZmxhdENoaWxkcmVuLmNvbnRhaW5zKG5v
ZGUpKSB7DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L2NvZ25pdGl2ZS91aS9XaXpEZXNjcmlwdGlvbi5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRp
Z3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1dpekRlc2NyaXB0aW9uLmphdmE/dmlldz1kaWZmJnBh
dGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1dpekRl
c2NyaXB0aW9uLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvY29nbml0aXZlL3VpL1dpekRlc2NyaXB0aW9uLmphdmEJMjAxMi0xMi0zMCAw
NTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0K
KyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt
YXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBF
Y2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp
c3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQwLDExICs0MCwxMiBAQA0KIA0K
IGltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7DQogaW1wb3J0IGphdmEudGV4dC5NZXNzYWdl
Rm9ybWF0Ow0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51
dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGltcG9ydCBqYXZheC5zd2luZy5KU2Nyb2xsUGFuZTsN
CiBpbXBvcnQgamF2YXguc3dpbmcuSlRleHRBcmVhOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxv
ZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29nbml0aXZlLkNyaXRpYzsNCiBpbXBv
cnQgb3JnLmFyZ291bWwuY29nbml0aXZlLkRlY2lzaW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5j
b2duaXRpdmUuR29hbDsNCkBAIC02NSw3ICs2Niw4IEBADQogICAgIC8qKg0KICAgICAgKiBMb2dn
ZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9n
Z2VyLmdldExvZ2dlcihXaXpEZXNjcmlwdGlvbi5jbGFzcyk7DQorICAgIHByaXZhdGUgc3RhdGlj
IGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihXaXpEZXNjcmlw
dGlvbi5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogICAgIC8vIGluc3RhbmNl
IHZhcmlhYmxlcw0KQEAgLTc5LDcgKzgxLDcgQEANCiAgICAgICovDQogICAgIHB1YmxpYyBXaXpE
ZXNjcmlwdGlvbigpIHsNCiAJc3VwZXIoKTsNCi0JTE9HLmluZm8oIm1ha2luZyBXaXpEZXNjcmlw
dGlvbiIpOw0KKwlMT0cubG9nKExldmVsLklORk8sICJtYWtpbmcgV2l6RGVzY3JpcHRpb24iKTsN
CiANCiAJZGVzY3JpcHRpb24uc2V0TGluZVdyYXAodHJ1ZSk7DQogCWRlc2NyaXB0aW9uLnNldFdy
YXBTdHlsZVdvcmQodHJ1ZSk7DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbkZhY3RvcnkuamF2YQ0KVXJs
OiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlv
bkZhY3RvcnkuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb25GYWN0b3J5LmphdmEJKG9yaWdpbmFs
KQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29uZmlndXJhdGlv
bi9Db25maWd1cmF0aW9uRmFjdG9yeS5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAg
LTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHly
aWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJl
IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGlj
ZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBp
cyBhdmFpbGFibGUgYXQNCkBAIC0zOSw3ICszOSw3IEBADQogDQogcGFja2FnZSBvcmcuYXJnb3Vt
bC5jb25maWd1cmF0aW9uOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCitp
bXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIC8qKg0KICAqIEEgZmFjdG9yeSBv
YmplY3QgdGhhdCBwcm92aWRlcyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLg0KQEAgLTcyLDkg
KzcyLDEwIEBADQogICAgICAgICAgICAgICAgIG5ld0ZhY3RvcnkgPQ0KICAgICAgICAgICAgICAg
ICAgICAgKElDb25maWd1cmF0aW9uRmFjdG9yeSkgQ2xhc3MuZm9yTmFtZShuYW1lKS5uZXdJbnN0
YW5jZSgpOw0KICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAg
ICAgICAgIExvZ2dlci5nZXRMb2dnZXIoQ29uZmlndXJhdGlvbkZhY3RvcnkuY2xhc3MpLg0KLSAg
ICAgICAgICAgICAgICAgICAgd2FybigiQ2FuJ3QgY3JlYXRlIGNvbmZpZ3VyYXRpb24gZmFjdG9y
eSAiDQotICAgICAgICAgICAgICAgICAgICAgICAgKyBuYW1lICsgIiwgdXNpbmcgZGVmYXVsdCBm
YWN0b3J5Iik7DQorICAgICAgICAgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoQ29uZmlndXJhdGlv
bkZhY3RvcnkuY2xhc3MuZ2V0TmFtZSgpKS4NCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmco
IkNhbid0IGNyZWF0ZSBjb25maWd1cmF0aW9uIGZhY3RvcnkgIg0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArIG5hbWUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCB1c2lu
ZyBkZWZhdWx0IGZhY3RvcnkiKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAg
ICBpZiAobmV3RmFjdG9yeSA9PSBudWxsKSB7DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJhdGlvbkhhbmRsZXIu
amF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3Vt
bC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvbmZpZ3VyYXRpb24vQ29u
ZmlndXJhdGlvbkhhbmRsZXIuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZy
Mj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb25IYW5kbGVyLmphdmEJ
KG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29u
ZmlndXJhdGlvbi9Db25maWd1cmF0aW9uSGFuZGxlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEt
MDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0K
LSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmln
aHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz
DQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQ
dWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp
b24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00Miw4ICs0Miw4IEBADQogaW1wb3J0IGphdmEu
YmVhbnMuUHJvcGVydHlDaGFuZ2VTdXBwb3J0Ow0KIGltcG9ydCBqYXZhLmlvLkZpbGU7DQogaW1w
b3J0IGphdmEubmV0LlVSTDsNCi0NCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQor
aW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2lu
Zy5Mb2dnZXI7DQogDQogLyoqDQogICogICBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgdXNlciBjb25m
aWd1cmF0aW9uIGJhc2VkIHVwb24gcHJvcGVydGllcy4NCkBAIC05Nyw3ICs5Nyw3IEBADQogICAg
ICAqIExvZ2dlci4NCiAgICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBM
T0cgPQ0KLSAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihDb25maWd1cmF0aW9uSGFuZGxlci5jbGFz
cyk7DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKENvbmZpZ3VyYXRpb25IYW5kbGVyLmNsYXNz
LmdldE5hbWUoKSk7DQogDQogICAgIC8qKg0KICAgICAgKiBBbm9ueW1vdXMgY29uc3RydWN0b3Ig
YWxsb3dzIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4NCkBAIC00MzYsNyArNDM2LDcgQEANCiAgICAg
ICAgIGlmIChwY2wgPT0gbnVsbCkgew0KICAgICAgICAgICAgIHBjbCA9IG5ldyBQcm9wZXJ0eUNo
YW5nZVN1cHBvcnQodGhpcyk7DQogICAgICAgICB9DQotICAgICAgICBMT0cuZGVidWcoImFkZFBy
b3BlcnR5Q2hhbmdlTGlzdGVuZXIoIiArIHAgKyAiKSIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZl
bC5GSU5FLCAiYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcih7MH0pIiwgcCk7DQogICAgICAgICBw
Y2wuYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcihwKTsNCiAgICAgfQ0KIA0KQEAgLTQ0Nyw3ICs0
NDcsNyBAQA0KICAgICAgKi8NCiAgICAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlTGlzdGVuZXIo
UHJvcGVydHlDaGFuZ2VMaXN0ZW5lciBwKSB7DQogICAgICAgICBpZiAocGNsICE9IG51bGwpIHsN
Ci0gICAgICAgICAgICBMT0cuZGVidWcoInJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIoKSIp
Ow0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInJlbW92ZVByb3BlcnR5Q2hhbmdl
TGlzdGVuZXIoKSIpOw0KICAgICAgICAgICAgIHBjbC5yZW1vdmVQcm9wZXJ0eUNoYW5nZUxpc3Rl
bmVyKHApOw0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtNDYzLDggKzQ2Myw3IEBADQogICAgICAg
ICBpZiAocGNsID09IG51bGwpIHsNCiAgICAgICAgICAgICBwY2wgPSBuZXcgUHJvcGVydHlDaGFu
Z2VTdXBwb3J0KHRoaXMpOw0KICAgICAgICAgfQ0KLSAgICAgICAgTE9HLmRlYnVnKCJhZGRQcm9w
ZXJ0eUNoYW5nZUxpc3RlbmVyKCINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg
a2V5LmdldEtleSgpICsgIikiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImFkZFBy
b3BlcnR5Q2hhbmdlTGlzdGVuZXIoezB9KSIsIGtleS5nZXRLZXkoKSk7DQogICAgICAgICBwY2wu
YWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcihrZXkuZ2V0S2V5KCksIHApOw0KICAgICB9DQogDQpA
QCAtNDc3LDggKzQ3Niw3IEBADQogICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlbW92ZUxpc3RlbmVy
KENvbmZpZ3VyYXRpb25LZXkga2V5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIHApIHsNCiAgICAgICAgIGlmIChwY2wgIT0gbnVs
bCkgew0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygicmVtb3ZlUHJvcGVydHlDaGFuZ2VMaXN0ZW5l
cigiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBrZXkuZ2V0S2V5KCkg
KyAiKSIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInJlbW92ZVByb3BlcnR5
Q2hhbmdlTGlzdGVuZXIoezB9KSIsIGtleS5nZXRLZXkoKSk7DQogICAgICAgICAgICAgcGNsLnJl
bW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIoa2V5LmdldEtleSgpLCBwKTsNCiAgICAgICAgIH0N
CiAgICAgfQ0KQEAgLTU3Nyw1ICs1NzUsMyBAQA0KICAgICAgKi8NCiAgICAgcHVibGljIGFic3Ry
YWN0IHZvaWQgcmVtb3ZlKFN0cmluZyBrZXkpOw0KIH0NCi0NCi0NCg0KTW9kaWZpZWQ6IHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29uZmlndXJhdGlvbi9Db25maWd1cmF0
aW9uUHJvcGVydGllcy5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNl
L2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvY29u
ZmlndXJhdGlvbi9Db25maWd1cmF0aW9uUHJvcGVydGllcy5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2
PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2NvbmZpZ3VyYXRpb24vQ29uZmlndXJh
dGlvblByb3BlcnRpZXMuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9jb25maWd1cmF0aW9uL0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzLmph
dmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQog
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9y
cyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAt
IHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhl
IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2Nv
bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQ1LDEz
ICs0NSwxMyBAQA0KIGltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KIGltcG9ydCBqYXZhLm5l
dC5VUkw7DQogaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOw0KLQ0KLWltcG9ydCBvcmcuYXBh
Y2hlLmxvZzRqLkxvZ2dlcjsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1w
b3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiAvKioNCi0gKiBUaGlzIGNsYXNzIHBy
b3ZpZGVzIGEgdXNlciBjb25maWd1cmF0aW9uIGJhc2VkIHVwb24gDQorICogVGhpcyBjbGFzcyBw
cm92aWRlcyBhIHVzZXIgY29uZmlndXJhdGlvbiBiYXNlZCB1cG9uDQogICogdGhlIHByb3BlcnRp
ZXMgZmlsZSAiYXJnby51c2VyLnByb3BlcnRpZXMiIGluIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3Rv
cnkuDQotICogDQorICoNCiAgKiBAYXV0aG9yIFRoaWVycnkgTGFjaA0KICAqLw0KIGNsYXNzIENv
bmZpZ3VyYXRpb25Qcm9wZXJ0aWVzIGV4dGVuZHMgQ29uZmlndXJhdGlvbkhhbmRsZXIgew0KQEAg
LTU5LDcgKzU5LDcgQEANCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBz
dGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKENvbmZp
Z3VyYXRpb25Qcm9wZXJ0aWVzLmNsYXNzKTsNCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoQ29u
ZmlndXJhdGlvblByb3BlcnRpZXMuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAg
ICAqIFRoZSBsb2NhdGlvbiBvZiBBcmdvJ3MgZGVmYXVsdCBwcm9wZXJ0aWVzIHJlc291cmNlLg0K
QEAgLTg3LDEwICs4NywxMiBAQA0KICAgICAgICAgUHJvcGVydGllcyBkZWZhdWx0cyA9IG5ldyBQ
cm9wZXJ0aWVzKCk7DQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIGRlZmF1bHRzLmxvYWQo
Z2V0Q2xhc3MoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKHByb3BlcnR5TG9jYXRpb24pKTsNCi0gICAg
ICAgICAgICBMT0cuZGVidWcoIkNvbmZpZ3VyYXRpb24gbG9hZGVkIGZyb20gIiArIHByb3BlcnR5
TG9jYXRpb24pOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwNCisgICAgICAgICAg
ICAgICAgICAgICJDb25maWd1cmF0aW9uIGxvYWRlZCBmcm9tIHswfSIsIHByb3BlcnR5TG9jYXRp
b24pOw0KICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGlvZSkgew0KICAgICAgICAgICAgIC8v
IFRPRE86ICBXaGF0IHNob3VsZCB3ZSBkbyBoZXJlPw0KLSAgICAgICAgICAgIExPRy53YXJuKCJD
b25maWd1cmF0aW9uIG5vdCBsb2FkZWQgZnJvbSAiICsgcHJvcGVydHlMb2NhdGlvbiwgaW9lKTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsDQorICAgICAgICAgICAgICAgICAg
ICAiQ29uZmlndXJhdGlvbiBub3QgbG9hZGVkIGZyb20gIiArIHByb3BlcnR5TG9jYXRpb24sIGlv
ZSk7DQogICAgICAgICB9DQogICAgICAgICBwcm9wZXJ0eUJ1bmRsZSA9IG5ldyBQcm9wZXJ0aWVz
KGRlZmF1bHRzKTsNCiAgICAgfQ0KQEAgLTEwMSw3ICsxMDMsNyBAQA0KICAgICAgKiBAcmV0dXJu
IGEgZ2VuZXJpYyBwYXRoIHN0cmluZy4NCiAgICAgICovDQogICAgIHB1YmxpYyBTdHJpbmcgZ2V0
RGVmYXVsdFBhdGgoKSB7DQotICAgICAgICByZXR1cm4gU3lzdGVtLmdldFByb3BlcnR5KCJ1c2Vy
LmhvbWUiKSANCisgICAgICAgIHJldHVybiBTeXN0ZW0uZ2V0UHJvcGVydHkoInVzZXIuaG9tZSIp
DQogICAgICAgICAgICAgKyAiLy5hcmdvdW1sL2FyZ28udXNlci5wcm9wZXJ0aWVzIjsNCiAgICAg
fQ0KIA0KQEAgLTExNSw5ICsxMTcsOSBAQA0KIA0KICAgICAvKioNCiAgICAgICogQ29weSBhIGZp
bGUgZnJvbSBzb3VyY2UgdG8gZGVzdGluYXRpb24uDQotICAgICAqIA0KKyAgICAgKg0KICAgICAg
KiBUT0RPOiBQZXJoYXBzIGJlbG9uZ3MgaW4gYSB1dGlsaXRpZXMgY2xhc3Mgb2Ygc29tZSBzb3J0
Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIGZp
bGUgdG8gYmUgY29waWVkDQogICAgICAqIEBwYXJhbSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBmaWxl
DQogICAgICAqIEByZXR1cm4gc3VjY2VzcyBzdGF0dXMgZmxhZw0KQEAgLTEzNSw3OCArMTM3LDgy
IEBADQogICAgICAgICAgICAgZm9zLmNsb3NlKCk7DQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
DQogICAgICAgICB9IGNhdGNoIChmaW5hbCBGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgew0KLSAg
ICAgICAgICAgIExPRy5lcnJvcigiRmlsZSBub3QgZm91bmQgd2hpbGUgY29weWluZyIsIGUpOw0K
KyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRmlsZSBub3QgZm91bmQgd2hpbGUg
Y29weWluZyIsIGUpOw0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgIH0gY2F0
Y2ggKGZpbmFsIElPRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIklPIGVy
cm9yIGNvcHlpbmcgZmlsZSIsIGUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJF
LCAiSU8gZXJyb3IgY29weWluZyBmaWxlIiwgZSk7DQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgICAgICAgfSBjYXRjaCAoZmluYWwgU2VjdXJpdHlFeGNlcHRpb24gZSkgew0KLSAgICAg
ICAgICAgIExPRy5lcnJvcigiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjb3B5IHRoZXNlIGZpbGVz
IiwgZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJZb3UgYXJlIG5vdCBh
bGxvd2VkIHRvIGNvcHkgdGhlc2UgZmlsZXMiLCBlKTsNCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgICAgICB9DQogICAgIH0NCiANCiAgICAgLyoqDQogICAgICAqIExvYWQgdGhlIGNv
bmZpZ3VyYXRpb24gZnJvbSBhIHNwZWNpZmllZCBsb2NhdGlvbi4gPHA+DQotICAgICAqIA0KLSAg
ICAgKiBCZWZvcmUgdmVyc2lvbiAwLjI1LjQsIEFyZ29VTUwgdXNlZCB0byBzdG9yZSB0aGUgDQor
ICAgICAqDQorICAgICAqIEJlZm9yZSB2ZXJzaW9uIDAuMjUuNCwgQXJnb1VNTCB1c2VkIHRvIHN0
b3JlIHRoZQ0KICAgICAgKiBwcm9wZXJ0aWVzIGZpbGUgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24u
IEEgdXNlciB3aG8NCi0gICAgICogdXBncmFkZXMgaGlzIEFyZ29VTUwgdG8gYSBuZXdlciB2ZXJz
aW9uLCANCisgICAgICogdXBncmFkZXMgaGlzIEFyZ29VTUwgdG8gYSBuZXdlciB2ZXJzaW9uLA0K
ICAgICAgKiB3b3VsZCBub3QgbGlrZSB0byBsb29zZSBoaXMgc2V0dGluZ3MuDQotICAgICAqIEhl
bmNlLCBpbiBjYXNlIGEgcHJvcGVydGllcyBmaWxlIGRvZXMgbm90IGV4aXN0IA0KKyAgICAgKiBI
ZW5jZSwgaW4gY2FzZSBhIHByb3BlcnRpZXMgZmlsZSBkb2VzIG5vdCBleGlzdA0KICAgICAgKiAo
aW4gdGhlIG5ldyBsb2NhdGlvbiksDQogICAgICAqIHRoaXMgY29kZSBhdHRlbXB0cyB0byBjb3B5
IHRoZSBmaWxlDQogICAgICAqIGZyb20gdGhlIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IGxvY2F0
aW9uLiA8cD4NCi0gICAgICogDQotICAgICAqIEluIHRoaXMgdXBncmFkZSBjYXNlLCB0aGUgcHJv
cGVydGllcyBmaWxlIA0KKyAgICAgKg0KKyAgICAgKiBJbiB0aGlzIHVwZ3JhZGUgY2FzZSwgdGhl
IHByb3BlcnRpZXMgZmlsZQ0KICAgICAgKiBpcyBjb3BpZWQsIG5vdCBtb3ZlZC4NCiAgICAgICog
UmF0aW9uYWxlOiBzZWUgaXNzdWUgNTM2NC4gPHA+DQotICAgICAqIA0KKyAgICAgKg0KICAgICAg
KiBUaGUgbWVhbmluZyBvZiB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBzaW1wbHkgc3VjY2Vzcw0K
LSAgICAgKiBpbiBsb2FkaW5nIHRoZSBwcm9wZXJ0aWVzIGZpbGUsIA0KLSAgICAgKiBidXQgaXQg
aW5kaWNhdGVzIGlmIHdlIG1heSBzYXZlIHRoZSBwcm9wZXJ0aWVzIA0KKyAgICAgKiBpbiBsb2Fk
aW5nIHRoZSBwcm9wZXJ0aWVzIGZpbGUsDQorICAgICAqIGJ1dCBpdCBpbmRpY2F0ZXMgaWYgd2Ug
bWF5IHNhdmUgdGhlIHByb3BlcnRpZXMNCiAgICAgICogb24gdG9wIG9mIHRoaXMgZmlsZSBsYXRl
ci4NCi0gICAgICogSGVuY2UsIGluIGNhc2UgYSBwcm9wZXJ0aWVzIGZpbGUgZGlkIG5vdCBleGlz
dCANCi0gICAgICogKG5vdCBpbiB0aGUgbmV3IGxvY2F0aW9uLCBub3IgaW4gdGhlIG9sZCBsb2Nh
dGlvbiksIA0KLSAgICAgKiB0aGVuIGEgbmV3IGVtcHR5IGZpbGUgaXMgY3JlYXRlZCwgDQorICAg
ICAqIEhlbmNlLCBpbiBjYXNlIGEgcHJvcGVydGllcyBmaWxlIGRpZCBub3QgZXhpc3QNCisgICAg
ICogKG5vdCBpbiB0aGUgbmV3IGxvY2F0aW9uLCBub3IgaW4gdGhlIG9sZCBsb2NhdGlvbiksDQor
ICAgICAqIHRoZW4gYSBuZXcgZW1wdHkgZmlsZSBpcyBjcmVhdGVkLA0KICAgICAgKiBhbmQgaW4g
dGhpcyBjYXNlIHRoZSByZXR1cm4gdmFsdWUgaXMgdHJ1ZS4gPHA+DQotICAgICAqIA0KKyAgICAg
Kg0KICAgICAgKiBSZXR1cm5pbmcgZmFsc2UgaGVyZSB3b3VsZCBtZWFuIHRoYXQgbm8gcHJvcGVy
dGllcw0KLSAgICAgKiB3aWxsIGJlIHNhdmVkIGF0IGFsbC4gDQorICAgICAqIHdpbGwgYmUgc2F2
ZWQgYXQgYWxsLg0KICAgICAgKg0KICAgICAgKiBAcGFyYW0gZmlsZSAgdGhlIHBhdGggdG8gbG9h
ZCB0aGUgY29uZmlndXJhdGlvbiBmcm9tLg0KICAgICAgKg0KLSAgICAgKiBAcmV0dXJuIHRydWUg
aWYgdGhlIGdpdmVuIGZpbGUtbG9jYXRpb24gbWF5IGJlIHVzZWQgDQorICAgICAqIEByZXR1cm4g
dHJ1ZSBpZiB0aGUgZ2l2ZW4gZmlsZS1sb2NhdGlvbiBtYXkgYmUgdXNlZA0KICAgICAgKiBmb3Ig
d3JpdGluZyB0aGUgcHJvcGVydGllcyBsYXRlci4NCiAgICAgICovDQogICAgIHB1YmxpYyBib29s
ZWFuIGxvYWRGaWxlKEZpbGUgZmlsZSkgew0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBp
ZiAoIWZpbGUuZXhpc3RzKCkpIHsNCi0gICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIHRoZSBv
bGRlciBwcm9wZXJ0aWVzIGZpbGUgYW5kIA0KKyAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3Ig
dGhlIG9sZGVyIHByb3BlcnRpZXMgZmlsZSBhbmQNCiAgICAgICAgICAgICAgICAgLy8gY29weSBp
dCBvdmVyIGlmIHBvc3NpYmxlDQogDQotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZG9uZSBm
b3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb246IA0KKyAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGRvbmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9u
Og0KICAgICAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBhcmdvLnVzZXIucHJvcGVydGllcw0KICAg
ICAgICAgICAgICAgICAvLyB3cml0dGVuIGJlZm9yZSAwLjI1LjQgdG8gdGhlIG5ldyBsb2NhdGlv
biwgaWYgaXQgZXhpc3RzLg0KICAgICAgICAgICAgICAgICBmaW5hbCBGaWxlIG9sZEZpbGUgPSBu
ZXcgRmlsZShnZXRPbGREZWZhdWx0UGF0aCgpKTsNCi0gICAgICAgICAgICAgICAgaWYgKG9sZEZp
bGUuZXhpc3RzKCkgJiYgb2xkRmlsZS5pc0ZpbGUoKSAmJiBvbGRGaWxlLmNhblJlYWQoKSANCisg
ICAgICAgICAgICAgICAgaWYgKG9sZEZpbGUuZXhpc3RzKCkgJiYgb2xkRmlsZS5pc0ZpbGUoKSAm
JiBvbGRGaWxlLmNhblJlYWQoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICYmIGZpbGUuZ2V0
UGFyZW50RmlsZSgpLmNhbldyaXRlKCkpIHsNCi0gICAgICAgICAgICAgICAgICAgIC8vIGNvcHkg
dG8gbmV3IGZpbGUgYW5kIGxldCB0aGUgcmVndWxhciBsb2FkIGNvZGUgDQorICAgICAgICAgICAg
ICAgICAgICAvLyBjb3B5IHRvIG5ldyBmaWxlIGFuZCBsZXQgdGhlIHJlZ3VsYXIgbG9hZCBjb2Rl
DQogICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGUgYWN0dWFsIGxvYWQNCiAgICAgICAgICAg
ICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcmVzdWx0ID0gY29weUZpbGUob2xkRmlsZSwgZmlsZSk7
DQogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7DQotICAgICAgICAgICAgICAgICAg
ICAgICAgTE9HLmluZm8oIkNvbmZpZ3VyYXRpb24gY29waWVkIGZyb20gIiANCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgb2xkRmlsZSArICIgdG8gIiArIGZpbGUpOw0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIGNvcGllZCBmcm9tIHswfSB0byB7MX0iLA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtde29sZEZpbGUsIGZp
bGV9KTsNCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgICAgICAg
ICAgICAgTE9HLmVycm9yKCJFcnJvciBjb3B5aW5nIG9sZCBjb25maWd1cmF0aW9uIHRvIG5ldywg
Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAic2VlIHByZXZpb3VzIGxvZyBtZXNz
YWdlcyIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIGNvcHlpbmcgb2xkIGNvbmZp
Z3VyYXRpb24gdG8gbmV3LCAiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJz
ZWUgcHJldmlvdXMgbG9nIG1lc3NhZ2VzIik7DQogICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbGUuY3JlYXRlTmV3RmlsZSgpOw0KICAgICAgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICAgICAgICAg
IExPRy5lcnJvcigiQ291bGQgbm90IGNyZWF0ZSB0aGUgcHJvcGVydGllcyBmaWxlIGF0OiAiIA0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBmaWxlLmdldEFic29sdXRlUGF0aCgp
LCBlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgY3JlYXRlIHRoZSBwcm9w
ZXJ0aWVzIGZpbGUgYXQ6ICINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZmls
ZS5nZXRBYnNvbHV0ZVBhdGgoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUp
Ow0KICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgfQ0KQEAgLTIxNCwxOCArMjIwLDIxIEBADQogICAgICAgICAgICAgaWYgKGZpbGUuZXhpc3Rz
KCkgJiYgZmlsZS5pc0ZpbGUoKSAmJiBmaWxlLmNhblJlYWQoKSkgew0KICAgICAgICAgICAgICAg
ICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlCdW5kbGUubG9hZChuZXcgRmls
ZUlucHV0U3RyZWFtKGZpbGUpKTsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5pbmZvKCJDb25m
aWd1cmF0aW9uIGxvYWRlZCBmcm9tICIgKyBmaWxlKTsNCisgICAgICAgICAgICAgICAgICAgIExP
Ry5sb2coTGV2ZWwuSU5GTywgIkNvbmZpZ3VyYXRpb24gbG9hZGVkIGZyb20gezB9IiwgZmlsZSk7
DQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgfSBj
YXRjaCAoZmluYWwgSU9FeGNlcHRpb24gZSkgew0KICAgICAgICAgICAgICAgICAgICAgaWYgKGNh
bkNvbXBsYWluKSB7DQotICAgICAgICAgICAgICAgICAgICAgICAgTE9HLndhcm4oIlVuYWJsZSB0
byBsb2FkIGNvbmZpZ3VyYXRpb24gIiArIGZpbGUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAg
IExPRy5sb2coTGV2ZWwuV0FSTklORywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJVbmFibGUgdG8gbG9hZCBjb25maWd1cmF0aW9uIHswfSIsIGZpbGUpOw0KICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgY2FuQ29tcGxhaW4gPSBmYWxzZTsNCiAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0gY2F0Y2ggKGZpbmFs
IFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkEgc2VjdXJp
dHkgZXhjZXB0aW9uIG9jY3VycmVkIHRyeWluZyB0byBsb2FkIg0KLSAgICAgICAgICAgICAgICAr
ICIgdGhlIGNvbmZpZ3VyYXRpb24sIGNoZWNrIHlvdXIgc2VjdXJpdHkgc2V0dGluZ3MiLCBlKTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAg
ICJBIHNlY3VyaXR5IGV4Y2VwdGlvbiBvY2N1cnJlZCB0cnlpbmcgdG8gbG9hZCINCisgICAgICAg
ICAgICAgICAgICAgICsgIiB0aGUgY29uZmlndXJhdGlvbiwgY2hlY2sgeW91ciBzZWN1cml0eSBz
ZXR0aW5ncyIsDQorICAgICAgICAgICAgICAgICAgICBlKTsNCiAgICAgICAgIH0NCiAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICAgfQ0KQEAgLTI0MSwxMSArMjUwLDEyIEBADQogICAgICAgICB0
cnkgew0KICAgICAgICAgICAgIHByb3BlcnR5QnVuZGxlLnN0b3JlKG5ldyBGaWxlT3V0cHV0U3Ry
ZWFtKGZpbGUpLA0KICAgICAgICAgICAgICAgICAgICAgIkFyZ29VTUwgcHJvcGVydGllcyIpOw0K
LSAgICAgICAgICAgIExPRy5pbmZvKCJDb25maWd1cmF0aW9uIHNhdmVkIHRvICIgKyBmaWxlKTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJDb25maWd1cmF0aW9uIHNhdmVkIHRv
IHswfSIsIGZpbGUpOw0KICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgfSBjYXRj
aCAoRXhjZXB0aW9uIGUpIHsNCiAgICAgICAgICAgICBpZiAoY2FuQ29tcGxhaW4pIHsNCi0gICAg
ICAgICAgICAgICAgTE9HLndhcm4oIlVuYWJsZSB0byBzYXZlIGNvbmZpZ3VyYXRpb24gIiArIGZp
bGUgKyAiXG4iKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gc2F2ZSBjb25maWd1cmF0aW9uIHswfSIs
IGZpbGUpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBjYW5Db21wbGFpbiA9IGZhbHNl
Ow0KICAgICAgICAgfQ0KQEAgLTI2MywxMSArMjczLDExIEBADQogICAgIHB1YmxpYyBib29sZWFu
IGxvYWRVUkwoVVJMIHVybCkgew0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBwcm9wZXJ0
eUJ1bmRsZS5sb2FkKHVybC5vcGVuU3RyZWFtKCkpOw0KLSAgICAgICAgICAgIExPRy5pbmZvKCJD
b25maWd1cmF0aW9uIGxvYWRlZCBmcm9tICIgKyB1cmwgKyAiXG4iKTsNCisgICAgICAgICAgICBM
T0cubG9nKExldmVsLklORk8sICJDb25maWd1cmF0aW9uIGxvYWRlZCBmcm9tIHswfSIsIHVybCk7
DQogICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24g
ZSkgew0KICAgICAgICAgICAgIGlmIChjYW5Db21wbGFpbikgew0KLSAgICAgICAgICAgICAgICBM
T0cud2FybigiVW5hYmxlIHRvIGxvYWQgY29uZmlndXJhdGlvbiAiICsgdXJsICsgIlxuIik7DQor
ICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIlVuYWJsZSB0byBsb2FkIGNv
bmZpZ3VyYXRpb24gezB9IiwgdXJsKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAgY2Fu
Q29tcGxhaW4gPSBmYWxzZTsNCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQpAQCAtMjgyLDcg
KzI5Miw3IEBADQogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2F2ZSB3YXMgc3VjY2Vzc2Z1
bCwgZmFsc2UgaWYgbm90Lg0KICAgICAgKi8NCiAgICAgcHVibGljIGJvb2xlYW4gc2F2ZVVSTChV
UkwgdXJsKSB7DQotICAgICAgICAvLyBMT0cuaW5mbygiQ29uZmlndXJhdGlvbiBzYXZlZCB0byAi
ICsgdXJsICsgIlxuIik7DQorICAgICAgICAvLyBMT0cubG9nKExldmVsLklORk8sICJDb25maWd1
cmF0aW9uIHNhdmVkIHRvIHswfVxuIiwgdXJsKTsNCiAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICAgfQ0KIA0KQEAgLTMxMSw3ICszMjEsNyBAQA0KICAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZh
bHVlIHRvIHNldCB0aGUga2V5IHRvLg0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgc2V0VmFs
dWUoU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlKSB7DQotICAgICAgICBMT0cuZGVidWcoImtleSAn
IiArIGtleSArICInIHNldCB0byAnIiArIHZhbHVlICsgIiciKTsNCisgICAgICAgIExPRy5sb2co
TGV2ZWwuRklORSwgImtleSB7MH0gc2V0IHRvIHsxfSIsIG5ldyBPYmplY3RbXXtrZXksIHZhbHVl
fSk7DQogICAgICAgICBwcm9wZXJ0eUJ1bmRsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTsNCiAg
ICAgfQ0KIA0KQEAgLTMyNCw0ICszMzQsMyBAQA0KICAgICAgICAgcHJvcGVydHlCdW5kbGUucmVt
b3ZlKGtleSk7DQogICAgIH0NCiB9DQotDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL2dlZmV4dC9EZWZlcnJlZEJ1ZmZlcmVkSW1hZ2UuamF2YQ0KVXJs
OiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2dlZmV4dC9EZWZlcnJlZEJ1ZmZlcmVkSW1h
Z2UuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9nZWZleHQvRGVmZXJyZWRCdWZmZXJlZEltYWdlLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvZ2VmZXh0L0RlZmVycmVkQnVmZmVyZWRJ
bWFnZS5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyog
JElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250
cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmli
dXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0g
YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hp
Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBA
IC01MCwyOCArNTAsMjkgQEANCiBpbXBvcnQgamF2YS5hd3QuaW1hZ2UuU2FtcGxlTW9kZWw7DQog
aW1wb3J0IGphdmEuYXd0LmltYWdlLldyaXRhYmxlUmFzdGVyOw0KIGltcG9ydCBqYXZhLnV0aWwu
VmVjdG9yOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51
dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsN
CiBpbXBvcnQgb3JnLnRpZ3Jpcy5nZWYuYmFzZS5FZGl0b3I7DQogDQogLyoqDQotICogUmVuZGVy
ZWQgR0VGIGltYWdlIHdoaWNoIHVzZXMgYSBiYW5kIGJ1ZmZlciB0byBtaW5pbWl6ZSBtZW1vcnkg
dXNhZ2UgZm9yIA0KKyAqIFJlbmRlcmVkIEdFRiBpbWFnZSB3aGljaCB1c2VzIGEgYmFuZCBidWZm
ZXIgdG8gbWluaW1pemUgbWVtb3J5IHVzYWdlIGZvcg0KICAqIGhpZ2ggcmVzb2x1dGlvbiBpbWFn
ZXMuICBJbWFnZSBpcyByZW5kZXJlZCBvbiBkZW1hbmQgaW4gbXVsdGlwbGUgcGFzc2VzDQogICog
YXMgZ2V0RGF0YSBpcyBjYWxsZWQuDQogICogPHA+DQogICogTk9URTogT25seSB0aGUgbWV0aG9k
cyB3aGljaCBhcmUgY2FsbGVkIGJ5IEltYWdlSU8ud3JpdGUgaGF2ZSBiZWVuIHRlc3RlZA0KLSAq
IGFuZCBwcm92ZW4gdG8gd29yayAoZ2V0TWluWC9ZLCBnZXRXaWR0aCwgZ2V0SGVpZ2h0LCAmIGdl
dERhdGEpLiAgVGhpcyBpcyANCisgKiBhbmQgcHJvdmVuIHRvIHdvcmsgKGdldE1pblgvWSwgZ2V0
V2lkdGgsIGdldEhlaWdodCwgJiBnZXREYXRhKS4gIFRoaXMgaXMNCiAgKiA8ZW0+bm90PC9lbT4g
YSBnZW5lcmFsIHB1cnBvc2UgUmVuZGVyZWRJbWFnZSBpbXBsZW1lbnRhdGlvbiwgc28geW91IGFy
ZSBvbg0KICAqIHlvdXIgb3duIHdpdGggYW55IG90aGVycy4NCi0gKiANCisgKg0KICAqIEBhdXRo
b3IgVG9tIE1vcnJpcyA8dGZtb3JyaXNAZ21haWwuY29tPg0KICAqIEBzaW5jZSBBcmdvVU1MIDAu
MjYNCiAgKi8NCiBwdWJsaWMgY2xhc3MgRGVmZXJyZWRCdWZmZXJlZEltYWdlIGltcGxlbWVudHMg
UmVuZGVyZWRJbWFnZSB7DQotICAgIA0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIg
TE9HID0gDQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKERlZmVycmVkQnVmZmVyZWRJbWFnZS5j
bGFzcyk7DQotICAgIA0KKw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0N
CisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRGVmZXJyZWRCdWZmZXJlZEltYWdlLmNsYXNzLmdl
dE5hbWUoKSk7DQorDQogICAgIC8qKg0KICAgICAgKiBSR0IgdmFsdWVzIGZvciBiYWNrZ3JvdW5k
IGNvbG9yIGZvciBpbWFnZS4gU2V0IGFzIHRyYW5zcGFyZW50LiBDaG9zZW4NCiAgICAgICogYmVj
YXVzZSBpdCdzIHVubGlrZWx5IHRvIGJlIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLCBhbmQgbGVhdmVz
IHRoZSBkaWFncmFtDQpAQCAtNzksMjggKzgwLDI4IEBADQogICAgICAqLw0KICAgICBwdWJsaWMg
c3RhdGljIGZpbmFsIGludCBUUkFOU1BBUkVOVF9CR19DT0xPUiA9IDB4MDBlZmVmZWY7DQogDQot
ICAgIC8qKiANCisgICAgLyoqDQogICAgICAqIEJhY2tncm91bmQgY29sb3INCiAgICAgICovDQog
ICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29sb3IgQkFDS0dST1VORF9DT0xPUiA9DQogICAgICAg
ICAgICAgbmV3IENvbG9yKFRSQU5TUEFSRU5UX0JHX0NPTE9SLCB0cnVlKTsNCi0gICAgDQorDQog
ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBCVUZGRVJfSEVJR0hUID0gMzI7DQotIA0KKw0K
ICAgICBwcml2YXRlIGludCB4LCB5Ow0KICAgICBwcml2YXRlIGludCB3aWR0aDsNCiAgICAgcHJp
dmF0ZSBpbnQgaGVpZ2h0Ow0KICAgICBwcml2YXRlIGludCBzY2FsZTsNCiAgICAgcHJpdmF0ZSBC
dWZmZXJlZEltYWdlIGltYWdlOw0KICAgICBwcml2YXRlIEVkaXRvciBlZGl0b3I7DQotICAgIA0K
Kw0KICAgICBwcml2YXRlIGludCBzY2FsZWRCdWZmZXJIZWlnaHQ7DQogICAgIHByaXZhdGUgaW50
IHkxLCB5MjsNCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgRGVm
ZXJyZWRCdWZmZXJlZEltYWdlIHdoaWNoIHdpbGwgdXNlIEdFRiB0byByZW5kZXIgdGhlDQogICAg
ICAqIGN1cnJlbnQgZGlhZ3JhbSBvbiBkZW1hbmQuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAg
KiBAcGFyYW0gZHJhd2luZ0FyZWEgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBhcmVhIHRvIGJl
IGRyYXduDQogICAgICAqIEBwYXJhbSBpbWFnZVR5cGUgVHlwZSBvZiBpbWFnZSB0byBiZSBjcmVh
dGVkIChlLmcuIFRZUEVfSU5UX0FSR0IpLiBNdXN0DQogICAgICAqICAgICAgICAgICAgICAgIGJl
IG9uIGFuIGltYWdlIHR5cGUgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IEJ1ZmZlcmVkSW1hZ2UNCkBA
IC0xMTAsNyArMTExLDcgQEANCiAgICAgICovDQogICAgIHB1YmxpYyBEZWZlcnJlZEJ1ZmZlcmVk
SW1hZ2UoUmVjdGFuZ2xlIGRyYXdpbmdBcmVhLCBpbnQgaW1hZ2VUeXBlLA0KICAgICAgICAgICAg
IEVkaXRvciBlZCwgaW50IHNjYWxlRmFjdG9yKSB7DQotICAgICAgICANCisNCiAgICAgICAgIGVk
aXRvciA9IGVkOw0KICAgICAgICAgc2NhbGUgPSBzY2FsZUZhY3RvcjsNCiANCkBAIC0xMjUsNyAr
MTI2LDcgQEANCiAgICAgICAgIHdpZHRoID0gd2lkdGggICogc2NhbGU7DQogICAgICAgICBoZWln
aHQgPSBoZWlnaHQgICogc2NhbGU7DQogICAgICAgICBzY2FsZWRCdWZmZXJIZWlnaHQgPSBCVUZG
RVJfSEVJR0hUICogc2NhbGU7DQotICAgICAgICANCisNCiAgICAgICAgIC8vIENyZWF0ZSBvdXIg
YmFuZGJ1ZmZlciB3aGljaCBpcyBqdXN0IGEgc21hbGwgc2xpY2Ugb2YgdGhlIGltYWdlDQogICAg
ICAgICAvLyBUT0RPOiBXZSB1c2VkIGEgZml4ZWQgaGVpZ2h0IGJ1ZmZlciBub3csIGJ1dCB3ZSBj
b3VsZCBiZSBzbWFydGVyIGFuZA0KICAgICAgICAgLy8gY29tcHV0ZSBhIGhlaWdodCB3aGljaCB3
b3VsZCBmaXQgaW4gc29tZSBtZW1vcnkgYnVkZ2V0LCBhbGxvd2luZyB1cw0KQEAgLTEzNywyMyAr
MTM4LDIzIEBADQogICAgICAgICB5MSA9IHk7DQogICAgICAgICB5MiA9IHkxOw0KICAgICB9DQot
ICAgIA0KKw0KIA0KICAgICBwdWJsaWMgUmFzdGVyIGdldERhdGEoKSB7DQotICAgICAgICBMT0cu
ZGVidWcoImdldERhdGEgd2l0aCBubyBwYXJhbXMiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwu
RklORSwgImdldERhdGEgd2l0aCBubyBwYXJhbXMiKTsNCiAgICAgICAgIHJldHVybiBnZXREYXRh
KG5ldyBSZWN0YW5nbGUoeCwgeSwgd2lkdGgsIGhlaWdodCkpOw0KICAgICB9DQotICAgIA0KKw0K
ICAgICBwdWJsaWMgUmFzdGVyIGdldERhdGEoUmVjdGFuZ2xlIGNsaXApIHsNCi0vLyAgICAgICAg
TE9HLmRlYnVnKCJnZXREYXRhIFJlY3RhbmdsZSA9ICIgKyBjbGlwKTsNCisvLyAgICAgICAgTE9H
LmxvZyhMZXZlbC5GSU5FLCAiZ2V0RGF0YSBSZWN0YW5nbGUgPSAiICsgY2xpcCk7DQogICAgICAg
ICBpZiAoIWlzUmFzdGVyVmFsaWQoY2xpcCkpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIlJh
c3RlciBub3QgdmFsaWQsIGNvbXB1dGluZyBuZXcgcmFzdGVyIik7DQorICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5GSU5FLCAiUmFzdGVyIG5vdCB2YWxpZCwgY29tcHV0aW5nIG5ldyByYXN0ZXIi
KTsNCiAgICAgICAgICAgICBjb21wdXRlUmFzdGVyKGNsaXApOw0KICAgICAgICAgfQ0KICAgICAg
ICAgUmVjdGFuZ2xlIG9DbGlwID0gb2Zmc2V0V2luZG93KGNsaXApOw0KICAgICAgICAgUmFzdGVy
IHJhcyA9IGltYWdlLmdldERhdGEob0NsaXApOw0KICAgICAgICAgUmFzdGVyIHRyYW5zbGF0ZWRS
YXN0ZXIgPSByYXMuY3JlYXRlVHJhbnNsYXRlZENoaWxkKGNsaXAueCwgY2xpcC55KTsNCi0vLyAg
ICAgICAgTE9HLmRlYnVnKCJnZXREYXRhIHJldHVybmluZyByYXN0ZXIgPSAiICsgdHJhbnNsYXRl
ZFJhc3Rlcik7DQorLy8gICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImdldERhdGEgcmV0dXJu
aW5nIHJhc3RlciA9ICIgKyB0cmFuc2xhdGVkUmFzdGVyKTsNCiAgICAgICAgIHJldHVybiB0cmFu
c2xhdGVkUmFzdGVyOw0KICAgICB9DQogDQpAQCAtMTczLDEyICsxNzQsMTIgQEANCiAgICAgICog
UmFzdGVyaXplIHRoZSBuZXh0IHNsaWNlIGluIHRoZSBiYW5kIGJ1ZmZlci4gUmFzdGVyIHdpbGwg
YmUgdGhlIGZ1bGwNCiAgICAgICogd2lkdGggb2YgdGhlIGltYWdlIGFuZCBiYXNlZCB2ZXJ0aWNh
bGx5IGF0IHRoZSBZIHZhbHVlIG9mIHRoZSBjdXJyZW50DQogICAgICAqIGNsaXAgcmVjdGFuZ2xl
Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGNsaXAgY2xpcCByZWN0YW5nbGUg
b2YgaW50ZXJlc3QNCiAgICAgICovDQogICAgIHByaXZhdGUgdm9pZCBjb21wdXRlUmFzdGVyKFJl
Y3RhbmdsZSBjbGlwKSB7DQotICAgICAgICBMT0cuZGVidWcoIkNvbXB1dGluZyByYXN0ZXIgZm9y
IHJlY3RhbmdsZSAiICsgY2xpcCk7DQotICAgICAgICANCisgICAgICAgIExPRy5sb2coTGV2ZWwu
RklORSwgIkNvbXB1dGluZyByYXN0ZXIgZm9yIHJlY3RhbmdsZSB7MH0iLCBjbGlwKTsNCisNCiAg
ICAgICAgIC8vIENyZWF0ZSBhIG5ldyBncmFwaGljcyBjb250ZXh0IHNvIHdlIHN0YXJ0IHdpdGgg
ZnJlc2ggdHJhbnNmb3Jtcw0KICAgICAgICAgR3JhcGhpY3MyRCBncmFwaGljcyA9IGltYWdlLmNy
ZWF0ZUdyYXBoaWNzKCk7DQogICAgICAgICBncmFwaGljcy5zY2FsZSgxLjAgKiBzY2FsZSwgMS4w
ICogc2NhbGUpOw0KQEAgLTE5OCw3ICsxOTksNyBAQA0KIA0KICAgICAgICAgLy8gQXNrIEdFRiB0
byBwcmludCBhIGJhbmQgb2YgdGhlIGRpYWdyYW0gKHRyYW5zbGF0ZWQgJiBjbGlwcGVkKQ0KICAg
ICAgICAgZWRpdG9yLnByaW50KGdyYXBoaWNzKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgLy8g
TWFrZSBzdXJlIGl0IGlzbid0IGNhY2hpbmcgYW55dGhpbmcgdGhhdCBzaG91bGQgYmUgd3JpdHRl
bg0KICAgICAgICAgZ3JhcGhpY3MuZGlzcG9zZSgpOw0KICAgICB9DQpAQCAtMjA2LDIwICsyMDcs
MjAgQEANCiAgICAgLyoqDQogICAgICAqIFJldHVybiBhIG5ldyBjbGlwIHJlY3RhbmdsZSB3aGlj
aCBpcyBvZmZzZXQgYnkgdGhlIGJhc2Ugb2Ygb3VyIGJhbmQNCiAgICAgICogYnVmZmVyLg0KLSAg
ICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGNsaXAgY2xpcHBpbmcgcmVjdGFuZ2xlDQog
ICAgICAqIEByZXR1cm4gYWRqdXN0ZWQgY2xpcHBpbmcgcmVjdGFuZ2xlDQogICAgICAqLw0KICAg
ICBwcml2YXRlIFJlY3RhbmdsZSBvZmZzZXRXaW5kb3coUmVjdGFuZ2xlIGNsaXApIHsNCiAgICAg
ICAgIGludCBiYXNlWSA9IGNsaXAueSAtIHkxOw0KLSAgICAgICAgcmV0dXJuIG5ldyBSZWN0YW5n
bGUoY2xpcC54LCBiYXNlWSwgY2xpcC53aWR0aCwgDQorICAgICAgICByZXR1cm4gbmV3IFJlY3Rh
bmdsZShjbGlwLngsIGJhc2VZLCBjbGlwLndpZHRoLA0KICAgICAgICAgICAgICAgICBNYXRoLm1p
bihjbGlwLmhlaWdodCwgc2NhbGVkQnVmZmVySGVpZ2h0IC0gYmFzZVkpKTsNCiAgICAgfQ0KIA0K
IA0KICAgICAvKioNCiAgICAgICogTm90IGltcGxlbWVudGVkDQotICAgICAqIA0KKyAgICAgKg0K
ICAgICAgKiB7QGluaGVyaXREb2N9DQogICAgICAqIEBzZWUgamF2YS5hd3QuaW1hZ2UuUmVuZGVy
ZWRJbWFnZSNjb3B5RGF0YShqYXZhLmF3dC5pbWFnZS5Xcml0YWJsZVJhc3RlcikNCiAgICAgICov
DQpAQCAtMjMyLDcgKzIzMyw3IEBADQogICAgIC8qKg0KICAgICAgKiBOb3QgaW1wbGVtZW50ZWQu
DQogICAgICAqIHtAaW5oZXJpdERvY30NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBzZWUg
amF2YS5hd3QuaW1hZ2UuUmVuZGVyZWRJbWFnZSNnZXRTb3VyY2VzKCkNCiAgICAgICovDQogICAg
IHB1YmxpYyBWZWN0b3I8UmVuZGVyZWRJbWFnZT4gZ2V0U291cmNlcygpIHsNCkBAIC0yNDQsMzkg
KzI0NSwzOSBAQA0KICAgICB9DQogDQogICAgIHB1YmxpYyBpbnQgZ2V0TWluWCgpIHsNCi0gICAg
ICAgIExPRy5kZWJ1ZygiZ2V0TWluWCA9IDAiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklO
RSwgImdldE1pblggPSAwIik7DQogICAgICAgICByZXR1cm4gMDsNCiAgICAgfQ0KIA0KICAgICBw
dWJsaWMgaW50IGdldE1pblkoKSB7DQotICAgICAgICBMT0cuZGVidWcoImdldE1pblkgPSAwIik7
DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJnZXRNaW5ZID0gMCIpOw0KICAgICAgICAg
cmV0dXJuIDA7DQogICAgIH0NCiANCiAgICAgcHVibGljIGludCBnZXRNaW5UaWxlWCgpIHsNCi0g
ICAgICAgIExPRy5kZWJ1ZygiZ2V0TWluVGlsZVggPSAwIik7DQorICAgICAgICBMT0cubG9nKExl
dmVsLkZJTkUsICJnZXRNaW5UaWxlWCA9IDAiKTsNCiAgICAgICAgIHJldHVybiAwOw0KICAgICB9
DQogDQogICAgIHB1YmxpYyBpbnQgZ2V0TWluVGlsZVkoKSB7DQotICAgICAgICBMT0cuZGVidWco
ImdldE1pblRpbGVZID0gMCIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiZ2V0TWlu
VGlsZVkgPSAwIik7DQogICAgICAgICByZXR1cm4gMDsNCiAgICAgfQ0KLSAgICANCisNCiAgICAg
cHVibGljIGludCBnZXROdW1YVGlsZXMoKSB7DQotICAgICAgICBMT0cuZGVidWcoImdldE51bVhU
aWxlcyA9IDEiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImdldE51bVhUaWxlcyA9
IDEiKTsNCiAgICAgICAgIHJldHVybiAxOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCi0g
ICAgICogVW50ZXN0ZWQuIE5vdCBndWFyYW50ZWVkIHRvIHdvcmsuIA0KKyAgICAgKiBVbnRlc3Rl
ZC4gTm90IGd1YXJhbnRlZWQgdG8gd29yay4NCiAgICAgICoge0Bpbmhlcml0RG9jfQ0KLSAgICAg
KiANCisgICAgICoNCiAgICAgICogQHNlZSBqYXZhLmF3dC5pbWFnZS5SZW5kZXJlZEltYWdlI2dl
dE51bVlUaWxlcygpDQogICAgICAqLw0KICAgICBwdWJsaWMgaW50IGdldE51bVlUaWxlcygpIHsN
CiAgICAgICAgIGludCB0aWxlcyA9IChnZXRIZWlnaHQoKSArIHNjYWxlZEJ1ZmZlckhlaWdodCAt
IDEpIC8gc2NhbGVkQnVmZmVySGVpZ2h0Ow0KLSAgICAgICAgTE9HLmRlYnVnKCJnZXROdW1ZVGls
ZXMgPSAiICsgdGlsZXMpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiZ2V0TnVtWVRp
bGVzID0gezB9IiwgdGlsZXMpOw0KICAgICAgICAgcmV0dXJuIHRpbGVzOw0KICAgICB9DQogDQpA
QCAtMjk0LDE3ICsyOTUsMTcgQEANCiANCiANCiAgICAgLyoqDQotICAgICAqIFVudGVzdGVkLiBO
b3QgZ3VhcmFudGVlZCB0byB3b3JrLiANCisgICAgICogVW50ZXN0ZWQuIE5vdCBndWFyYW50ZWVk
IHRvIHdvcmsuDQogICAgICAqIHtAaW5oZXJpdERvY30NCi0gICAgICogDQorICAgICAqDQogICAg
ICAqIEBzZWUgamF2YS5hd3QuaW1hZ2UuUmVuZGVyZWRJbWFnZSNnZXROdW1ZVGlsZXMoKQ0KICAg
ICAgKi8NCiANCiAgICAgcHVibGljIFJhc3RlciBnZXRUaWxlKGludCB0aWxlWCwgaW50IHRpbGVZ
KSB7DQotICAgICAgICBMT0cuZGVidWcoImdldFRpbGUgeD0iICsgdGlsZVggKyAiIHkgPSAiICsg
dGlsZVkpOw0KLSAgICAgICAgaWYgKHRpbGVYIDwgZ2V0TWluVGlsZVgoKSANCisgICAgICAgIExP
Ry5sb2coTGV2ZWwuRklORSwgImdldFRpbGUgeD17MH0sIHkgPSB7MX0iLCBuZXcgT2JqZWN0W117
dGlsZVgsIHRpbGVZfSk7DQorICAgICAgICBpZiAodGlsZVggPCBnZXRNaW5UaWxlWCgpDQogICAg
ICAgICAgICAgICAgIHx8IHRpbGVYID49IGdldE1pblRpbGVYKCkgKyBnZXROdW1YVGlsZXMoKQ0K
LSAgICAgICAgICAgICAgICB8fCB0aWxlWSA8IGdldE1pblRpbGVZKCkgDQorICAgICAgICAgICAg
ICAgIHx8IHRpbGVZIDwgZ2V0TWluVGlsZVkoKQ0KICAgICAgICAgICAgICAgICB8fCB0aWxlWSA+
PSBnZXRNaW5UaWxlWSgpICsgZ2V0TnVtWVRpbGVzKCkpIHsNCiAgICAgICAgICAgICB0aHJvdyBu
ZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbigpOw0KICAgICAgICAgfQ0KQEAgLTMxNiwzMiAr
MzE3LDMyIEBADQogICAgIH0NCiANCiAgICAgcHVibGljIGludCBnZXRUaWxlR3JpZFhPZmZzZXQo
KSB7DQotICAgICAgICBMT0cuZGVidWcoImdldFRpbGVHcmlkWE9mZnNldCA9IDAiKTsNCisgICAg
ICAgIExPRy5sb2coTGV2ZWwuRklORSwgImdldFRpbGVHcmlkWE9mZnNldCA9IDAiKTsNCiAgICAg
ICAgIHJldHVybiAwOw0KICAgICB9DQogDQogICAgIHB1YmxpYyBpbnQgZ2V0VGlsZUdyaWRZT2Zm
c2V0KCkgew0KLSAgICAgICAgTE9HLmRlYnVnKCJnZXRUaWxlR3JpZFlPZmZzZXQgPSAwIik7DQor
ICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJnZXRUaWxlR3JpZFlPZmZzZXQgPSAwIik7DQog
ICAgICAgICByZXR1cm4gMDsNCiAgICAgfQ0KIA0KICAgICBwdWJsaWMgaW50IGdldFRpbGVXaWR0
aCgpIHsNCi0gICAgICAgIExPRy5kZWJ1ZygiZ2V0VGlsZVdpZHRoID0gIiArIHdpZHRoKTsNCisg
ICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImdldFRpbGVXaWR0aCA9IHswfSIsIHdpZHRoKTsN
CiAgICAgICAgIHJldHVybiB3aWR0aDsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHVibGljIGlu
dCBnZXRUaWxlSGVpZ2h0KCkgew0KLSAgICAgICAgTE9HLmRlYnVnKCJnZXRUaWxlSGVpZ2h0ID0g
IiArIHNjYWxlZEJ1ZmZlckhlaWdodCk7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJn
ZXRUaWxlSGVpZ2h0ID0gezB9Iiwgc2NhbGVkQnVmZmVySGVpZ2h0KTsNCiAgICAgICAgIHJldHVy
biBzY2FsZWRCdWZmZXJIZWlnaHQ7DQogICAgIH0NCiANCiAgICAgcHVibGljIGludCBnZXRXaWR0
aCgpIHsNCi0gICAgICAgIExPRy5kZWJ1ZygiZ2V0V2lkdGggPSAiICsgd2lkdGgpOw0KKyAgICAg
ICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiZ2V0V2lkdGggPSB7MH0iLCB3aWR0aCk7DQogICAgICAg
ICByZXR1cm4gd2lkdGg7DQogICAgIH0NCi0gICAgDQorDQogICAgIHB1YmxpYyBpbnQgZ2V0SGVp
Z2h0KCkgew0KLSAgICAgICAgTE9HLmRlYnVnKCJnZXRIZWlnaHQgPSAiICsgaGVpZ2h0KTsNCisg
ICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImdldEhlaWdodCA9ICIgKyBoZWlnaHQpOw0KICAg
ICAgICAgcmV0dXJuIGhlaWdodDsNCiAgICAgfQ0KIH0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvaTE4bi9UcmFuc2xhdG9yLmphdmENClVybDogaHR0
cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9pMThuL1RyYW5zbGF0b3IuamF2YT92aWV3PWRpZmYm
cGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9pMThuL1RyYW5zbGF0b3Iu
amF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9pMThuL1RyYW5zbGF0b3IuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYg
KzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5
LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4g
VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRl
IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2Ug
djEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZh
aWxhYmxlIGF0DQpAQCAtNDcsOCArNDcsOSBAQA0KIGltcG9ydCBqYXZhLnV0aWwuTWFwOw0KIGlt
cG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOw0KIGltcG9ydCBqYXZhLnV0
aWwuUmVzb3VyY2VCdW5kbGU7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2lt
cG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9n
NGouTG9nZ2VyOw0KIGltcG9ydCBvcmcudGlncmlzLmdlZi51dGlsLkxvY2FsaXplcjsNCiANCiAv
KioNCkBAIC02Miw3ICs2Myw4IEBADQogICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAq
Lw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dl
cihUcmFuc2xhdG9yLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExP
RyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFRyYW5zbGF0b3IuY2xhc3MuZ2V0TmFtZSgp
KTsNCiANCiAgICAgLyoqDQogICAgICAqIFdoZXJlIHdlIHNlYXJjaCBmb3IgYnVuZGxlcy4NCkBA
IC03Nyw3ICs3OSw3IEBADQogICAgIC8qKg0KICAgICAgKiBTdG9yZSBvZiBDbGFzc0xvYWRlcnMg
d2hlcmUgd2UgY291bGQgZmluZCB0aGUgYnVuZGxlcy4NCiAgICAgICovDQotICAgIHByaXZhdGUg
c3RhdGljIExpc3Q8Q2xhc3NMb2FkZXI+IGNsYXNzTG9hZGVycyA9IA0KKyAgICBwcml2YXRlIHN0
YXRpYyBMaXN0PENsYXNzTG9hZGVyPiBjbGFzc0xvYWRlcnMgPQ0KICAgICAgICAgbmV3IEFycmF5
TGlzdDxDbGFzc0xvYWRlcj4oKTsNCiANCiAgICAgLyoqDQpAQCAtODksNyArOTEsNyBAQA0KICAg
ICAgKiBVc2VkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yaWdpbmFsIHN5c3RlbSBkZWZhdWx0IGxv
Y2FsZQ0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBzdGF0aWMgTG9jYWxlIHN5c3RlbURlZmF1bHRM
b2NhbGU7DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVGhpcyBjbGFzcyBzaG91bGQgb25s
eSBiZSB1c2VkIGluIGEgc3RhdGljIGNvbnRleHQgc28gbWFrZQ0KICAgICAgKiB0aGUgY29uc3Ry
dWN0b3IgcHJpdmF0ZS4NCkBAIC0xMDIsNyArMTA0LDcgQEANCiAgICAgICogQWx0ZXJuYXRlIGlu
aXRpYWxpemF0aW9uIGVudHJ5IHBvaW50IGZvciB1c2UgYnkgQXJnb0VjbGlwc2UuDQogICAgICAq
IEl0IGxlYXZlcyBvdXQgdGVsbGluZyBHRUYgYWJvdXQgYnVuZGxlcyB0aGF0IGl0IHdvbid0IGJl
IGFibGUNCiAgICAgICogdG8gYWNjZXNzLiA8cD4NCi0gICAgICogDQorICAgICAqDQogICAgICAq
IE5PVEU6IFRoaXMgbXVzdCBiZSBjYWxsZWQgKmJlZm9yZSogYW55IG90aGVyIG1ldGhvZHMgYXJl
IGNhbGxlZCB0bw0KICAgICAgKiB3b3JrIHByb3Blcmx5Lg0KICAgICAgKg0KQEAgLTExNSw3ICsx
MTcsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogSW5pdGlhbGl6ZSB0aGUgbG9jYWxlLg0KLSAg
ICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGxvY2FsZSBhIHN0cmluZyB3aXRoIHRoZSBs
b2NhbGUNCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0KFN0cmluZyBsb2Nh
bGUpIHsNCkBAIC0yMDQsNyArMjA2LDcgQEANCiAgICAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUg
b2YgdGhlIG5ldyBsb2NhbGUNCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRM
b2NhbGUoU3RyaW5nIG5hbWUpIHsNCi0gICAgICAgIC8qIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUg
SlVuaXQgdGVzdHMuIA0KKyAgICAgICAgLyogVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBKVW5pdCB0
ZXN0cy4NCiAgICAgICAgICAqIE90aGVyd2lzZSBhICJhc3NlcnQgaW5pdGlhbGl6ZWQiIHdvdWxk
IHN1ZmZpY2UuICovDQogICAgICAgICBpZiAoIWluaXRpYWxpemVkKSB7DQogICAgICAgICAgICAg
aW5pdCgiZW4iKTsNCkBAIC0yMzUsNyArMjM3LDcgQEANCiAgICAgICogUmV0dXJucyB0aGUgb3Jp
Z2luYWwgdmFsdWUgb2YgdGhlIGRlZmF1bHQgbG9jYWxlIGZvciB0aGlzIGluc3RhbmNlDQogICAg
ICAqIG9mIHRoZSBKYXZhIFZpcnR1YWwgTWFjaGluZSAod2hpY2ggaXMgaW5kZXBlbmRlbnQgZnJv
bSB0aGUgc2VsZWN0ZWQNCiAgICAgICogY29uZmlndXJhdGlvbikuDQotICAgICAqIA0KKyAgICAg
Kg0KICAgICAgKiBAcmV0dXJuIHRoZSBvcmlnaW5hbCBzeXN0ZW0gZGVmYXVsdCBsb2NhbGUNCiAg
ICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgTG9jYWxlIGdldFN5c3RlbURlZmF1bHRMb2NhbGUo
KSB7DQpAQCAtMjY1LDI1ICsyNjcsMjkgQEANCiAgICAgICAgIFN0cmluZyByZXNvdXJjZSA9IEJV
TkRMRVNfUEFUSCArICIuIiArIG5hbWU7DQogICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUg
PSBudWxsOw0KICAgICAgICAgdHJ5IHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIkxvYWRpbmcg
IiArIHJlc291cmNlKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJMb2FkaW5n
IHswfSIsIHJlc291cmNlKTsNCiAgICAgICAgICAgICBMb2NhbGUgbG9jYWxlID0gTG9jYWxlLmdl
dERlZmF1bHQoKTsNCiAgICAgICAgICAgICBidW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5k
bGUocmVzb3VyY2UsIGxvY2FsZSk7DQogICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VF
eGNlcHRpb24gZTEpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIlJlc291cmNlICIgKyByZXNv
dXJjZQ0KLQkJICAgICAgKyAiIG5vdCBmb3VuZCBpbiB0aGUgZGVmYXVsdCBjbGFzcyBsb2FkZXIu
Iik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLA0KKyAgICAgICAgICAgICAgICAg
ICAgIlJlc291cmNlIHswfSBub3QgZm91bmQgaW4gdGhlIGRlZmF1bHQgY2xhc3MgbG9hZGVyLiIs
DQorICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSk7DQogDQogCSAgICBJdGVyYXRvciBpdGVy
ID0gY2xhc3NMb2FkZXJzLml0ZXJhdG9yKCk7DQogCSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkp
IHsNCiAJCUNsYXNzTG9hZGVyIGNsID0gKENsYXNzTG9hZGVyKSBpdGVyLm5leHQoKTsNCiAJCXRy
eSB7DQotCQkgICAgTE9HLmRlYnVnKCJMb2FkaW5nICIgKyByZXNvdXJjZSArICIgZnJvbSAiICsg
Y2wpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwNCisgICAgICAgICAgICAgICAg
ICAgICJMb2FkaW5nIHswfSBmcm9tIHsxfSIsDQorICAgICAgICAgICAgICAgICAgICBuZXcgT2Jq
ZWN0W117cmVzb3VyY2UsIGNsfSk7DQogCQkgICAgYnVuZGxlID0NCiAJCQlSZXNvdXJjZUJ1bmRs
ZS5nZXRCdW5kbGUocmVzb3VyY2UsDQogCQkJCQkJIExvY2FsZS5nZXREZWZhdWx0KCksDQogCQkJ
CQkJIGNsKTsNCiAJCSAgICBicmVhazsNCiAJCX0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2Vw
dGlvbiBlMikgew0KLQkJICAgIExPRy5kZWJ1ZygiUmVzb3VyY2UgIiArIHJlc291cmNlICsgIiBu
b3QgZm91bmQgaW4gIiArIGNsKTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwu
RklORSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlc291cmNlICIgKyByZXNvdXJj
ZSArICIgbm90IGZvdW5kIGluICIgKyBjbCk7DQogCQl9DQogCSAgICB9DQogICAgICAgICB9DQpA
QCAtMzM1LDcgKzM0MSw3IEBADQogICAgICAqIEByZXR1cm4gVGhlIGxvY2FsaXplZCBTdHJpbmcu
DQogICAgICAqLw0KICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBsb2NhbGl6ZShTdHJpbmcga2V5
KSB7DQotICAgICAgICAvKiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIEpVbml0IHRlc3RzLiANCisg
ICAgICAgIC8qIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgSlVuaXQgdGVzdHMuDQogICAgICAgICAg
KiBPdGhlcndpc2UgYSAiYXNzZXJ0IGluaXRpYWxpemVkIiB3b3VsZCBzdWZmaWNlLiAqLw0KICAg
ICAgICAgaWYgKCFpbml0aWFsaXplZCkgew0KICAgICAgICAgICAgIGluaXQoImVuIik7DQpAQCAt
MzU0LDE1ICszNjAsMTYgQEANCiANCiAgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IGJ1
bmRsZXMuZ2V0KG5hbWUpOw0KICAgICAgICAgaWYgKGJ1bmRsZSA9PSBudWxsKSB7DQotICAgICAg
ICAgICAgTE9HLmRlYnVnKCJCdW5kbGUgKCIgKyBuYW1lICsgIikgZm9yIHJlc291cmNlICINCi0g
ICAgICAgICAgICAgICAgICAgICsga2V5ICsgIiBub3QgZm91bmQuIik7DQorICAgICAgICAgICAg
TE9HLmxvZyhMZXZlbC5GSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgIkJ1bmRsZSAoezB9KSBm
b3IgcmVzb3VyY2UgezF9IG5vdCBmb3VuZC4iLA0KKyAgICAgICAgICAgICAgICAgICAgbmV3IE9i
amVjdFtde25hbWUsIGtleX0pOw0KICAgICAgICAgICAgIHJldHVybiBrZXk7DQogICAgICAgICB9
DQogDQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIHJldHVybiBidW5kbGUuZ2V0U3RyaW5n
KGtleSk7DQogICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgew0K
LSAgICAgICAgICAgIExPRy5kZWJ1ZygiUmVzb3VyY2UgIiArIGtleSArICIgbm90IGZvdW5kLiIp
Ow0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIlJlc291cmNlIHswfSBub3QgZm91
bmQuIiwga2V5KTsNCiAgICAgICAgICAgICByZXR1cm4ga2V5Ow0KICAgICAgICAgfQ0KICAgICB9
DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2tlcm5l
bC9EZWZhdWx0VW5kb01hbmFnZXIuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3Jn
L3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL2tlcm5lbC9EZWZhdWx0VW5kb01hbmFnZXIuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkw
NyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9rZXJuZWwvRGVmYXVsdFVuZG9NYW5hZ2VyLmph
dmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
a2VybmVsL0RlZmF1bHRVbmRvTWFuYWdlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0K
QEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENv
cHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICog
YXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMg
TGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFu
ZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00NSw0OSArNDUsNTAgQEANCiBpbXBvcnQgamF2YS51dGls
Lkxpc3Q7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7DQogaW1wb3J0IGphdmEudXRp
bC5TdGFjazsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEu
dXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7
DQogaW1wb3J0IG9yZy5hcmdvdW1sLmkxOG4uVHJhbnNsYXRvcjsNCiANCiAvKioNCiAgKiBNYW5h
Z2VzIGEgc3RhY2tzIG9mIENvbW1hbmRzIHRvIHVuZG8gYW5kIHJlZG8uIFRoaXMgRGVmYXVsdFVu
ZG9NYW5hZ2VyIGlzDQogICogb25seSB0ZW1wb3JhcmlseSBhIHNpbmdsZXRvbiB1bnRpbCBjaGFu
Z2VzIGFyZSBtYWRlIHRvIEdFRi4NCi0gKiANCisgKg0KICAqIEBhdXRob3IgQm9iIFRhcmxpbmcN
CiAgKi8NCiBjbGFzcyBEZWZhdWx0VW5kb01hbmFnZXIgaW1wbGVtZW50cyBVbmRvTWFuYWdlciB7
DQotICAgIA0KKw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCi0gICAg
ICAgIExvZ2dlci5nZXRMb2dnZXIoRGVmYXVsdFVuZG9NYW5hZ2VyLmNsYXNzKTsNCisgICAgICAg
IExvZ2dlci5nZXRMb2dnZXIoRGVmYXVsdFVuZG9NYW5hZ2VyLmNsYXNzLmdldE5hbWUoKSk7DQog
DQogICAgIC8qKg0KICAgICAgKiBUaGUgbnVtYmVyIG9mIHVuZG9hYmxlIGNvbW1hbmRzIHRvIHN0
b3JlLiBXaGVuIHNldCB0byB6ZXJvIHVuZG8gaXMNCiAgICAgICogZGlzYWJsZWQgZW50aXJlbHku
DQogICAgICAqLw0KICAgICBwcml2YXRlIGludCB1bmRvTWF4ID0gMDsNCi0gICAgDQorDQogICAg
IHByaXZhdGUgQXJyYXlMaXN0PFByb3BlcnR5Q2hhbmdlTGlzdGVuZXI+IGxpc3RlbmVycyA9DQog
ICAgICAgICBuZXcgQXJyYXlMaXN0PFByb3BlcnR5Q2hhbmdlTGlzdGVuZXI+KCk7DQotICAgIA0K
Kw0KICAgICAvKioNCiAgICAgICogU2V0IHdoZW4gYSBuZXcgdXNlciBpbnRlcmFjdGlvbiBiZWdp
bnMNCiAgICAgICovDQogICAgIHByaXZhdGUgYm9vbGVhbiBuZXdJbnRlcmFjdGlvbiA9IHRydWU7
DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVGhlIHByb2plY3QgdG8gd2hpY2ggdGhpcyB1
bmRvIG1hbmFnZXIgcmVsYXRlcw0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBmaW5hbCBQcm9qZWN0
IHByb2plY3Q7DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogQSBkZXNjcmlwdGlvbiBvZiB0
aGUgdXNlciBpbnRlcmFjdGlvbiB0YWtpbmcgcGxhY2UuDQogICAgICAqIE9mdGVuIHRoaXMgaXMg
dGhlIGxhYmVsIG9mIGFuIEFjdGlvbi4NCiAgICAgICovDQogICAgIHByaXZhdGUgU3RyaW5nIG5l
d0ludGVyYWN0aW9uTGFiZWw7DQotICAgIA0KKw0KICAgICBwcml2YXRlIFVuZG9TdGFjayB1bmRv
U3RhY2sgPSBuZXcgVW5kb1N0YWNrKCk7DQogICAgIHByaXZhdGUgUmVkb1N0YWNrIHJlZG9TdGFj
ayA9IG5ldyBSZWRvU3RhY2soKTsNCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBAZGVwcmVj
YXRlZCBpbiAwLjMyIGFscGhhIGJ5IEJvYiBUYXJsaW5nIHVzZSBEZWZhdWx0VW5kb01hbmFnZXIo
UHJvamVjdCkNCiAgICAgICovDQpAQCAtMTAyLDEyICsxMDMsMTIgQEANCiAgICAgICAgIHN1cGVy
KCk7DQogICAgICAgICBwcm9qZWN0ID0gbnVsbDsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgRGVm
YXVsdFVuZG9NYW5hZ2VyKFByb2plY3QgcHJvamVjdCkgew0KICAgICAgICAgc3VwZXIoKTsNCiAg
ICAgICAgIHRoaXMucHJvamVjdCA9IHByb2plY3Q7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8q
Kg0KICAgICAgKiBAZGVwcmVjYXRlZCBpbiAwLjMyIGFscGhhIGJ5IEJvYiBUYXJsaW5nIHVzZSBE
ZWZhdWx0VW5kb01hbmFnZXIoUHJvamVjdCkNCiAgICAgICovDQpAQCAtMTE1LDEyICsxMTYsMTIg
QEANCiAgICAgcHVibGljIHN0YXRpYyBVbmRvTWFuYWdlciBnZXRJbnN0YW5jZSgpIHsNCiAgICAg
ICAgIHJldHVybiBJTlNUQU5DRTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHVibGljIHN5bmNo
cm9uaXplZCBPYmplY3QgZXhlY3V0ZShDb21tYW5kIGNvbW1hbmQpIHsNCiAgICAgICAgIGFkZENv
bW1hbmQoY29tbWFuZCk7DQogICAgICAgICByZXR1cm4gY29tbWFuZC5leGVjdXRlKCk7DQogICAg
IH0NCi0gICAgDQorDQogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBhZGRDb21tYW5kKENv
bW1hbmQgY29tbWFuZCkgew0KIA0KICAgICAgICAgLy8gVE9ETzogT25jZSB0aGUgZGVmYXVsdCBj
b25zdHJ1Y3RvciBpcyBkZWxldGVkIHdlIG9ubHkgc2V0IGRpcnR5IGZsYWcNCkBAIC0xMjksMTEg
KzEzMCwxMSBAQA0KICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICBQcm9qZWN0TWFuYWdl
ci5nZXRNYW5hZ2VyKCkuc2V0U2F2ZUVuYWJsZWQodHJ1ZSk7DQogICAgICAgICB9DQotICAgICAg
ICANCisNCiAgICAgICAgIGlmICh1bmRvTWF4ID09IDApIHsNCiAgICAgICAgICAgICByZXR1cm47
DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIGlmICghY29tbWFuZC5pc1VuZG9h
YmxlKCkpIHsNCiAgICAgICAgICAgICB1bmRvU3RhY2suY2xlYXIoKTsNCiAgICAgICAgICAgICBu
ZXdJbnRlcmFjdGlvbiA9IHRydWU7DQpAQCAtMTUzLDcgKzE1NCw3IEBADQogICAgICAgICB9DQog
ICAgICAgICBtYWNyb0NvbW1hbmQuYWRkQ29tbWFuZChjb21tYW5kKTsNCiAgICAgfQ0KLSAgICAN
CisNCiAgICAgcHVibGljIHZvaWQgc2V0VW5kb01heChpbnQgbWF4KSB7DQogICAgICAgICB1bmRv
TWF4ID0gbWF4Ow0KICAgICB9DQpAQCAtMTY3LDUyICsxNjgsNTIgQEANCiAgICAgICAgIH0NCiAg
ICAgICAgIHJlZG9TdGFjay5wdXNoKGNvbW1hbmQpOw0KICAgICB9DQotICAgIA0KKw0KIA0KICAg
ICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVkbygpIHsNCiAgICAgICAgIGZpbmFsIEludGVy
YWN0aW9uIGNvbW1hbmQgPSByZWRvU3RhY2sucG9wKCk7DQogICAgICAgICBjb21tYW5kLmV4ZWN1
dGUoKTsNCiAgICAgICAgIHVuZG9TdGFjay5wdXNoKGNvbW1hbmQpOw0KICAgICB9DQotICAgIA0K
Kw0KICAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc3RhcnRJbnRlcmFjdGlvbihTdHJpbmcg
bGFiZWwpIHsNCi0gICAgICAgIExPRy5kZWJ1ZygiU3RhcnRpbmcgaW50ZXJhY3Rpb24gIiArIGxh
YmVsKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIlN0YXJ0aW5nIGludGVyYWN0aW9u
IHswfSIsIGxhYmVsKTsNCiAgICAgICAgIHRoaXMubmV3SW50ZXJhY3Rpb25MYWJlbCA9IGxhYmVs
Ow0KICAgICAgICAgbmV3SW50ZXJhY3Rpb24gPSB0cnVlOw0KICAgICB9DQotIA0KKw0KICAgICBw
dWJsaWMgdm9pZCBhZGRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyKFByb3BlcnR5Q2hhbmdlTGlzdGVu
ZXIgbGlzdGVuZXIpIHsNCiAgICAgICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpOw0KICAgICB9
DQotICAgIA0KKw0KICAgICBwdWJsaWMgdm9pZCByZW1vdmVQcm9wZXJ0eUNoYW5nZUxpc3RlbmVy
KFByb3BlcnR5Q2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIpIHsNCiAgICAgICAgIGxpc3RlbmVycy5y
ZW1vdmUobGlzdGVuZXIpOw0KICAgICB9DQotICAgIA0KKw0KICAgICBwcml2YXRlIHZvaWQgZmly
ZShmaW5hbCBTdHJpbmcgcHJvcGVydHksIGZpbmFsIE9iamVjdCB2YWx1ZSkgew0KICAgICAgICAg
Zm9yIChQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIGxpc3RlbmVyIDogbGlzdGVuZXJzKSB7DQogICAg
ICAgICAgICAgbGlzdGVuZXIucHJvcGVydHlDaGFuZ2UoDQogICAgICAgICAgICAgICAgICAgICBu
ZXcgUHJvcGVydHlDaGFuZ2VFdmVudCh0aGlzLCBwcm9wZXJ0eSwgIiIsIHZhbHVlKSk7DQogICAg
ICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBBbiBJbnRlcmFjdCBp
cyBhIENvbW1hbmQgdGhlIGNvbnRhaW5zIGEgbGlzdCBvZiBzdWItY29tbWFuZHMuIEl0DQogICAg
ICAqIHJlcHJlc2VudHMgYSBzaW5nbGUgdXNlciBpbnRlcmFjdGlvbiBhbmQgY29udGFpbnMgYWxs
IHRoZSBjb21tYW5kcw0KICAgICAgKiBleGVjdXRlZCBhcyBwYXJ0IG9mIHRoYXQgaW50ZXJhY3Rp
b24uDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAYXV0aG9yIEJvYg0KICAgICAgKi8NCiAg
ICAgY2xhc3MgSW50ZXJhY3Rpb24gZXh0ZW5kcyBBYnN0cmFjdENvbW1hbmQgew0KLSAgICAgICAg
DQorDQogICAgICAgICBwcml2YXRlIExpc3Q8Q29tbWFuZD4gY29tbWFuZHMgPSBuZXcgQXJyYXlM
aXN0PENvbW1hbmQ+KCk7DQotICAgICAgICANCisNCiAgICAgICAgIHByaXZhdGUgU3RyaW5nIGxh
YmVsOw0KLSAgICAgICAgDQorDQogICAgICAgICBJbnRlcmFjdGlvbihTdHJpbmcgbGJsKSB7DQog
ICAgICAgICAgICAgbGFiZWwgPSBsYmw7DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAg
ICAgIHB1YmxpYyB2b2lkIHVuZG8oKSB7DQogICAgICAgICAgICAgZmluYWwgTGlzdEl0ZXJhdG9y
PENvbW1hbmQ+IGl0ID0NCiAgICAgICAgICAgICAgICAgY29tbWFuZHMubGlzdEl0ZXJhdG9yKGNv
bW1hbmRzLnNpemUoKSk7DQpAQCAtMjIwLDcgKzIyMSw3IEBADQogICAgICAgICAgICAgICAgIGl0
LnByZXZpb3VzKCkudW5kbygpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCi0gICAgICAg
IA0KKw0KICAgICAgICAgcHVibGljIE9iamVjdCBleGVjdXRlKCkgew0KICAgICAgICAgICAgIGZp
bmFsIEl0ZXJhdG9yPENvbW1hbmQ+IGl0ID0gY29tbWFuZHMuaXRlcmF0b3IoKTsNCiAgICAgICAg
ICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7DQpAQCAtMjI4LDcgKzIyOSw3IEBADQogICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICAgfQ0KLSAgICAgICAg
DQorDQogICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1VuZG9hYmxlKCkgew0KICAgICAgICAgICAg
IGZpbmFsIEl0ZXJhdG9yPENvbW1hbmQ+IGl0ID0gY29tbWFuZHMuaXRlcmF0b3IoKTsNCiAgICAg
ICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7DQpAQCAtMjM5LDcgKzI0MCw3IEBADQogICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgfQ0KLSAgICAg
ICAgDQorDQogICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1JlZG9hYmxlKCkgew0KICAgICAgICAg
ICAgIGZpbmFsIEl0ZXJhdG9yPENvbW1hbmQ+IGl0ID0gY29tbWFuZHMuaXRlcmF0b3IoKTsNCiAg
ICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7DQpAQCAtMjUwLDExICsyNTEsMTEgQEAN
CiAgICAgICAgICAgICB9DQogICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICB9DQot
ICAgICAgICANCisNCiAgICAgICAgIHByaXZhdGUgdm9pZCBhZGRDb21tYW5kKENvbW1hbmQgY29t
bWFuZCkgew0KICAgICAgICAgICAgIGNvbW1hbmRzLmFkZChjb21tYW5kKTsNCiAgICAgICAgIH0N
Ci0gICAgICAgIA0KKw0KICAgICAgICAgLy8gVE9ETzogaTE4bg0KICAgICAgICAgcHJpdmF0ZSBT
dHJpbmcgZ2V0VW5kb0xhYmVsKCkgew0KICAgICAgICAgICAgIGlmIChpc1VuZG9hYmxlKCkpIHsN
CkBAIC0yNjMsNyArMjY0LDcgQEANCiAgICAgICAgICAgICAgICAgcmV0dXJuICJDYW4ndCBVbmRv
ICIgKyBsYWJlbDsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQotICAgICAgICANCisNCiAg
ICAgICAgIC8vIFRPRE86IGkxOG4NCiAgICAgICAgIHByaXZhdGUgU3RyaW5nIGdldFJlZG9MYWJl
bCgpIHsNCiAgICAgICAgICAgICBpZiAoaXNSZWRvYWJsZSgpKSB7DQpAQCAtMjcyLDE5ICsyNzMs
MTkgQEANCiAgICAgICAgICAgICAgICAgcmV0dXJuICJDYW4ndCBSZWRvICIgKyBsYWJlbDsNCiAg
ICAgICAgICAgICB9DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIExpc3Q8Q29t
bWFuZD4gZ2V0Q29tbWFuZHMoKSB7DQogICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheUxpc3Q8
Q29tbWFuZD4gKGNvbW1hbmRzKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KLSAgICANCisNCiAgICAg
cHJpdmF0ZSBhYnN0cmFjdCBjbGFzcyBJbnRlcmFjdGlvblN0YWNrIGV4dGVuZHMgU3RhY2s8SW50
ZXJhY3Rpb24+IHsNCi0gICAgICAgIA0KKw0KICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbGFiZWxQ
cm9wZXJ0eTsNCiAgICAgICAgIHByaXZhdGUgU3RyaW5nIGFkZGVkUHJvcGVydHk7DQogICAgICAg
ICBwcml2YXRlIFN0cmluZyByZW1vdmVkUHJvcGVydHk7DQogICAgICAgICBwcml2YXRlIFN0cmlu
ZyBzaXplUHJvcGVydHk7DQotICAgICAgICANCisNCiAgICAgICAgIHB1YmxpYyBJbnRlcmFjdGlv
blN0YWNrKA0KICAgICAgICAgICAgICAgICBTdHJpbmcgbGFiZWxQcm9wLA0KICAgICAgICAgICAg
ICAgICBTdHJpbmcgYWRkZWRQcm9wLA0KQEAgLTI5NSw3ICsyOTYsNyBAQA0KICAgICAgICAgICAg
IHJlbW92ZWRQcm9wZXJ0eSA9IHJlbW92ZWRQcm9wOw0KICAgICAgICAgICAgIHNpemVQcm9wZXJ0
eSA9IHNpemVQcm9wOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBwdWJsaWMg
SW50ZXJhY3Rpb24gcHVzaChJbnRlcmFjdGlvbiBpdGVtKSB7DQogICAgICAgICAgICAgc3VwZXIu
cHVzaChpdGVtKTsNCiAgICAgICAgICAgICBmaXJlTGFiZWwoKTsNCkBAIC0zMDMsNyArMzA0LDcg
QEANCiAgICAgICAgICAgICBmaXJlKHNpemVQcm9wZXJ0eSwgc2l6ZSgpKTsNCiAgICAgICAgICAg
ICByZXR1cm4gaXRlbTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgcHVibGlj
IEludGVyYWN0aW9uIHBvcCgpIHsNCiAgICAgICAgICAgICBJbnRlcmFjdGlvbiBpdGVtID0gc3Vw
ZXIucG9wKCk7DQogICAgICAgICAgICAgZmlyZUxhYmVsKCk7DQpAQCAtMzExLDE2ICszMTIsMTYg
QEANCiAgICAgICAgICAgICBmaXJlKHNpemVQcm9wZXJ0eSwgc2l6ZSgpKTsNCiAgICAgICAgICAg
ICByZXR1cm4gaXRlbTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgcHJpdmF0
ZSB2b2lkIGZpcmVMYWJlbCgpIHsNCiAgICAgICAgICAgICBmaXJlKGxhYmVsUHJvcGVydHksIGdl
dExhYmVsKCkpOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBwcm90ZWN0ZWQg
YWJzdHJhY3QgU3RyaW5nIGdldExhYmVsKCk7DQogICAgIH0NCi0gICAgDQorDQogICAgIHByaXZh
dGUgY2xhc3MgVW5kb1N0YWNrIGV4dGVuZHMgSW50ZXJhY3Rpb25TdGFjayB7DQotICAgICAgICAN
CisNCiAgICAgICAgIHB1YmxpYyBVbmRvU3RhY2soKSB7DQogICAgICAgICAgICAgc3VwZXIoDQog
ICAgICAgICAgICAgICAgICAgICAidW5kb0xhYmVsIiwNCkBAIC0zMjgsNyArMzI5LDcgQEANCiAg
ICAgICAgICAgICAgICAgICAgICJ1bmRvUmVtb3ZlZCIsDQogICAgICAgICAgICAgICAgICAgICAi
dW5kb1NpemUiKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgcHVibGljIElu
dGVyYWN0aW9uIHB1c2goSW50ZXJhY3Rpb24gaXRlbSkgew0KICAgICAgICAgICAgIHN1cGVyLnB1
c2goaXRlbSk7DQogICAgICAgICAgICAgaWYgKGl0ZW0uaXNVbmRvYWJsZSgpKSB7DQpAQCAtMzM2
LDcgKzMzNyw3IEBADQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIHJldHVybiBpdGVtOw0K
ICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBwdWJsaWMgSW50ZXJhY3Rpb24gcG9w
KCkgew0KICAgICAgICAgICAgIEludGVyYWN0aW9uIGl0ZW0gPSBzdXBlci5wb3AoKTsNCiAgICAg
ICAgICAgICBpZiAoc2l6ZSgpID09IDAgfHwgIXBlZWsoKS5pc1VuZG9hYmxlKCkpIHsNCkBAIC0z
NDQsMTMgKzM0NSwxMyBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICByZXR1cm4gaXRl
bTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgcHVibGljIHZvaWQgY2xlYXIo
KSB7DQogICAgICAgICAgICAgc3VwZXIuY2xlYXIoKTsNCiAgICAgICAgICAgICBmaXJlKCJ1bmRv
U2l6ZSIsIHNpemUoKSk7DQogICAgICAgICAgICAgZmlyZSgidW5kb2FibGUiLCBmYWxzZSk7DQog
ICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0TGFi
ZWwoKSB7DQogICAgICAgICAgICAgaWYgKGVtcHR5KCkpIHsNCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFRyYW5zbGF0b3IubG9jYWxpemUoImFjdGlvbi51bmRvIik7DQpAQCAtMzU5LDE4ICszNjAs
MTggQEANCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAg
IHByaXZhdGUgY2xhc3MgUmVkb1N0YWNrIGV4dGVuZHMgSW50ZXJhY3Rpb25TdGFjayB7DQotICAg
ICAgICANCisNCiAgICAgICAgIHB1YmxpYyBSZWRvU3RhY2soKSB7DQogICAgICAgICAgICAgc3Vw
ZXIoDQotICAgICAgICAgICAgICAgICAgICAicmVkb0xhYmVsIiwgDQotICAgICAgICAgICAgICAg
ICAgICAicmVkb0FkZGVkIiwgDQotICAgICAgICAgICAgICAgICAgICAicmVkb1JlbW92ZWQiLCAN
CisgICAgICAgICAgICAgICAgICAgICJyZWRvTGFiZWwiLA0KKyAgICAgICAgICAgICAgICAgICAg
InJlZG9BZGRlZCIsDQorICAgICAgICAgICAgICAgICAgICAicmVkb1JlbW92ZWQiLA0KICAgICAg
ICAgICAgICAgICAgICAgInJlZG9TaXplIik7DQogICAgICAgICB9DQotICAgICAgICANCi0gICAg
ICAgIA0KKw0KKw0KICAgICAgICAgcHVibGljIEludGVyYWN0aW9uIHB1c2goSW50ZXJhY3Rpb24g
aXRlbSkgew0KICAgICAgICAgICAgIHN1cGVyLnB1c2goaXRlbSk7DQogICAgICAgICAgICAgaWYg
KGl0ZW0uaXNSZWRvYWJsZSgpKSB7DQpAQCAtMzc4LDcgKzM3OSw3IEBADQogICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgIHJldHVybiBpdGVtOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQog
ICAgICAgICBwdWJsaWMgSW50ZXJhY3Rpb24gcG9wKCkgew0KICAgICAgICAgICAgIEludGVyYWN0
aW9uIGl0ZW0gPSBzdXBlci5wb3AoKTsNCiAgICAgICAgICAgICBpZiAoc2l6ZSgpID09IDAgfHwg
IXBlZWsoKS5pc1JlZG9hYmxlKCkpIHsNCkBAIC0zODYsMTMgKzM4NywxMyBAQA0KICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICByZXR1cm4gaXRlbTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0K
Kw0KICAgICAgICAgcHVibGljIHZvaWQgY2xlYXIoKSB7DQogICAgICAgICAgICAgc3VwZXIuY2xl
YXIoKTsNCiAgICAgICAgICAgICBmaXJlKCJyZWRvU2l6ZSIsIHNpemUoKSk7DQogICAgICAgICAg
ICAgZmlyZSgicmVkb2FibGUiLCBmYWxzZSk7DQogICAgICAgICB9DQotICAgICAgICANCisNCiAg
ICAgICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0TGFiZWwoKSB7DQogICAgICAgICAgICAgaWYgKGVt
cHR5KCkpIHsNCiAgICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zbGF0b3IubG9jYWxpemUoImFj
dGlvbi5yZWRvIik7DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL2tlcm5lbC9NZW1iZXJMaXN0LmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlz
Lm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9rZXJuZWwvTWVtYmVyTGlzdC5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIx
PTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2tlcm5lbC9NZW1iZXJMaXN0LmphdmEJKG9yaWdpbmFs
KQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL01lbWJl
ckxpc3QuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8q
ICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29u
dHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJp
YnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFt
IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdo
aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpA
QCAtNDMsOCArNDMsOSBAQA0KIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQogaW1wb3J0IGph
dmEudXRpbC5MaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdEl0ZXJhdG9yOw0KK2ltcG9ydCBq
YXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2Vy
Ow0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291
bWwudW1sLlByb2plY3RNZW1iZXJNb2RlbDsNCiBpbXBvcnQgb3JnLmFyZ291bWwudW1sLmNvZ25p
dGl2ZS5Qcm9qZWN0TWVtYmVyVG9kb0xpc3Q7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVtbC5kaWFn
cmFtLkFyZ29EaWFncmFtOw0KQEAgLTUyLDM0ICs1MywzNCBAQA0KIA0KIC8qKg0KICAqIExpc3Qg
b2YgUHJvamVjdE1lbWJlcnMuIDxwPg0KLSAqIA0KLSAqIDxwPlRoZSBwcm9qZWN0IG1lbWJlcnMg
YXJlIGdyb3VwZWQgaW50byA0IGNhdGVnb3JpZXM6IA0KKyAqDQorICogPHA+VGhlIHByb2plY3Qg
bWVtYmVycyBhcmUgZ3JvdXBlZCBpbnRvIDQgY2F0ZWdvcmllczoNCiAgKiBtb2RlbCwgZGlhZ3Jh
bXMsIHRoZSB0b2RvIGl0ZW0gbGlzdCBhbmQgdGhlIHByb2ZpbGUgY29uZmlndXJhdGlvbi4gPHA+
DQogICoNCi0gKiA8cD5UaGUgcHVycG9zZSBvZiB0aGVzZSBjYXRlZ29yaWVzIGlzIHRvIG1ha2Ug
c3VyZSB0aGF0IG1lbWJlcnMgYXJlIHJlYWQgDQotICogYW5kIHdyaXR0ZW4gaW4gdGhlIGNvcnJl
Y3Qgb3JkZXIuIA0KLSAqIA0KKyAqIDxwPlRoZSBwdXJwb3NlIG9mIHRoZXNlIGNhdGVnb3JpZXMg
aXMgdG8gbWFrZSBzdXJlIHRoYXQgbWVtYmVycyBhcmUgcmVhZA0KKyAqIGFuZCB3cml0dGVuIGlu
IHRoZSBjb3JyZWN0IG9yZGVyLg0KKyAqDQogICogPHA+V2hlbiByZWFkaW5nIHRoZSB0b2RvIGl0
ZW1zIGl0IHdpbGwgZmFpbCBpZiB0aGUgZGlhZ3JhbXMgZWxlbWVudHMgb3IgbW9kZWwNCiAgKiBl
bGVtZW50cyBoYXZlIG5vdCB5ZXQgYmVlbiByZWFkIHRoYXQgdGhleSByZWZlciB0by4gV2hlbiBy
ZWFkaW5nIGRpYWdyYW1zDQogICogdGhhdCB3aWxsIGZhaWwgaWYgdGhlIG1vZGVsIGVsZW1lbnRz
IGRvbid0IHlldCBleGlzdCB0aGF0IHRoZXkgcmVmZXIgdG8uDQogICogV2hlbiBsb2FkaW5nIHRo
ZSBtb2RlbCB0aGF0IG1heSBmYWlsIGlmIHRoZSBjb3JyZWN0IHByb2ZpbGUgaGFzIG5vdCBiZWVu
DQogICogbG9hZGVkLg0KLSAqIA0KKyAqDQogICogPHA+SGVuY2UsIHRoZSBzYXZlIChhbmQgdGhl
cmVmb3JlIGxvYWQpIG9yZGVyIGlzIHByb2ZpbGUsIG1vZGVsLCBkaWFncmFtcywNCiAgKiB0b2Rv
IGl0ZW1zLg0KICAqDQogICogPHA+VGhpcyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBvbmx5IG9u
ZSBwcm9maWxlIGNvbmZpZ3VyYXRpb24sIG9uZSBtb2RlbA0KICAqIG1lbWJlciwgbXVsdGlwbGUg
ZGlhZ3JhbSBtZW1iZXJzLCBvbmUgdG9kbyBsaXN0IG1lbWJlci4NCi0gKiANCisgKg0KICAqIDxw
PkNvbW1lbnRzIGJ5IG12dzogPHA+DQotICogVGhpcyBjbGFzcyBzaG91bGQgYmUgcmV3b3JrZWQg
dG8gYmUgaW5kZXBlbmRlbnQgDQotICogb2YgdGhlIG9yZy5hcmdvdW1sLnVtbCBwYWNrYWdlLiBU
aGF0IGNhbiBiZSBkb25lIGJ5IGV4dGVuZGluZyB0aGUgDQotICogUHJvamVjdE1lbWJlciBpbnRl
cmZhY2Ugd2l0aCBmdW5jdGlvbnMgcmV0dXJuaW5nIHRoZSBzb3J0aW5nIG9yZGVyLCANCisgKiBU
aGlzIGNsYXNzIHNob3VsZCBiZSByZXdvcmtlZCB0byBiZSBpbmRlcGVuZGVudA0KKyAqIG9mIHRo
ZSBvcmcuYXJnb3VtbC51bWwgcGFja2FnZS4gVGhhdCBjYW4gYmUgZG9uZSBieSBleHRlbmRpbmcg
dGhlDQorICogUHJvamVjdE1lbWJlciBpbnRlcmZhY2Ugd2l0aCBmdW5jdGlvbnMgcmV0dXJuaW5n
IHRoZSBzb3J0aW5nIG9yZGVyLA0KICAqIGFuZCBpZiBtdWx0aXBsZSBlbnRyaWVzIG9mIHRoZSBz
YW1lIHR5cGUgYXJlIGFsbG93ZWQuIDxwPg0KLSAqIA0KLSAqIEluIHByZXBhcmF0aW9uLCB0aGlz
IGNsYXNzIGlzIG1hZGUgc2ltcGxlciBieSBkZXByZWNhdGluZyANCisgKg0KKyAqIEluIHByZXBh
cmF0aW9uLCB0aGlzIGNsYXNzIGlzIG1hZGUgc2ltcGxlciBieSBkZXByZWNhdGluZw0KICAqIGFs
bCBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBMaXN0IGludGVyZmFjZS4NCi0g
KiANCisgKg0KICAqIEBhdXRob3IgQm9iIFRhcmxpbmcNCiAgKi8NCiBjbGFzcyBNZW1iZXJMaXN0
IGltcGxlbWVudHMgTGlzdDxQcm9qZWN0TWVtYmVyPiB7DQpAQCAtODcsMTEgKzg4LDEyIEBADQog
ICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBm
aW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihNZW1iZXJMaXN0LmNsYXNzKTsNCisg
ICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0
TG9nZ2VyKE1lbWJlckxpc3QuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBBYnN0
cmFjdFByb2plY3RNZW1iZXIgbW9kZWw7DQogDQotICAgIHByaXZhdGUgTGlzdDxQcm9qZWN0TWVt
YmVyRGlhZ3JhbT4gZGlhZ3JhbU1lbWJlcnMgPSANCisgICAgcHJpdmF0ZSBMaXN0PFByb2plY3RN
ZW1iZXJEaWFncmFtPiBkaWFncmFtTWVtYmVycyA9DQogICAgICAgICBuZXcgQXJyYXlMaXN0PFBy
b2plY3RNZW1iZXJEaWFncmFtPigxMCk7DQogDQogICAgIHByaXZhdGUgQWJzdHJhY3RQcm9qZWN0
TWVtYmVyIHRvZG9MaXN0Ow0KQEAgLTEwMSw3ICsxMDMsNyBAQA0KICAgICAgKiBUaGUgY29uc3Ry
dWN0b3IuDQogICAgICAqLw0KICAgICBwdWJsaWMgTWVtYmVyTGlzdCgpIHsNCi0gICAgICAgIExP
Ry5pbmZvKCJDcmVhdGluZyBhIG1lbWJlciBsaXN0Iik7DQorICAgICAgICBMT0cubG9nKExldmVs
LklORk8sICJDcmVhdGluZyBhIG1lbWJlciBsaXN0Iik7DQogICAgIH0NCiANCiAgICAgcHVibGlj
IHN5bmNocm9uaXplZCBib29sZWFuIGFkZChQcm9qZWN0TWVtYmVyIG1lbWJlcikgew0KQEAgLTEy
NSw3ICsxMjcsNyBAQA0KICAgICB9DQogDQogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVh
biByZW1vdmUoT2JqZWN0IG1lbWJlcikgew0KLSAgICAgICAgTE9HLmluZm8oIlJlbW92aW5nIGEg
bWVtYmVyIik7DQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJSZW1vdmluZyBhIG1lbWJl
ciIpOw0KICAgICAgICAgaWYgKG1lbWJlciBpbnN0YW5jZW9mIEFyZ29EaWFncmFtKSB7DQogICAg
ICAgICAgICAgcmV0dXJuIHJlbW92ZURpYWdyYW0oKEFyZ29EaWFncmFtKSBtZW1iZXIpOw0KICAg
ICAgICAgfQ0KQEAgLTEzNCwxNyArMTM2LDE4IEBADQogICAgICAgICAgICAgbW9kZWwgPSBudWxs
Ow0KICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgfSBlbHNlIGlmICh0b2RvTGlz
dCA9PSBtZW1iZXIpIHsNCi0gICAgICAgICAgICBMT0cuaW5mbygiUmVtb3ZpbmcgdG9kbyBsaXN0
Iik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiUmVtb3ZpbmcgdG9kbyBsaXN0
Iik7DQogICAgICAgICAgICAgc2V0VG9kb0xpc3QobnVsbCk7DQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7DQogICAgICAgICB9IGVsc2UgaWYgKHByb2ZpbGVDb25maWd1cmF0aW9uID09IG1lbWJl
cikgew0KLSAgICAgICAgICAgIExPRy5pbmZvKCJSZW1vdmluZyBwcm9maWxlIGNvbmZpZ3VyYXRp
b24iKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJSZW1vdmluZyBwcm9maWxl
IGNvbmZpZ3VyYXRpb24iKTsNCiAgICAgICAgICAgICBwcm9maWxlQ29uZmlndXJhdGlvbiA9IG51
bGw7DQogICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgIGZpbmFsIGJvb2xlYW4gcmVtb3ZlZCA9IGRpYWdyYW1NZW1iZXJzLnJlbW92ZShtZW1i
ZXIpOw0KICAgICAgICAgICAgIGlmICghcmVtb3ZlZCkgew0KLSAgICAgICAgICAgICAgICBMT0cu
d2FybigiRmFpbGVkIHRvIHJlbW92ZSBkaWFncmFtIG1lbWJlciAiICsgbWVtYmVyKTsNCisgICAg
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQgdG8gcmVtb3ZlIGRpYWdyYW0gbWVtYmVyICIgKyBtZW1iZXIpOw0KICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICByZXR1cm4gcmVtb3ZlZDsNCiAgICAgICAgIH0NCkBAIC0x
NjMsMTEgKzE2NiwxMSBAQA0KICAgICB9DQogDQogICAgIC8qKg0KLSAgICAgKiBAcmV0dXJuIHRo
ZSBsaXN0IG9mIG1lbWJlcnMgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBuZWVkIHRvIGJlIHdyaXR0
ZW4gDQorICAgICAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgbWVtYmVycyBpbiB0aGUgb3JkZXIgdGhh
dCB0aGV5IG5lZWQgdG8gYmUgd3JpdHRlbg0KICAgICAgKiAgICAgICAgIG91dCBpbi4NCiAgICAg
ICovDQogICAgIHByaXZhdGUgTGlzdDxQcm9qZWN0TWVtYmVyPiBidWlsZE9yZGVyZWRNZW1iZXJM
aXN0KCkgew0KLSAgICAgICAgTGlzdDxQcm9qZWN0TWVtYmVyPiB0ZW1wID0gDQorICAgICAgICBM
aXN0PFByb2plY3RNZW1iZXI+IHRlbXAgPQ0KICAgICAgICAgICAgIG5ldyBBcnJheUxpc3Q8UHJv
amVjdE1lbWJlcj4oc2l6ZSgpKTsNCiAgICAgICAgIGlmIChwcm9maWxlQ29uZmlndXJhdGlvbiAh
PSBudWxsKSB7DQogICAgICAgICAgICAgdGVtcC5hZGQocHJvZmlsZUNvbmZpZ3VyYXRpb24pOw0K
QEAgLTE4MSw3ICsxODQsNyBAQA0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJuIHRlbXA7DQog
ICAgIH0NCi0gICAgDQorDQogICAgIHByaXZhdGUgYm9vbGVhbiByZW1vdmVEaWFncmFtKEFyZ29E
aWFncmFtIGQpIHsNCiAgICAgICAgIGZvciAoUHJvamVjdE1lbWJlckRpYWdyYW0gcG1kIDogZGlh
Z3JhbU1lbWJlcnMpIHsNCiAgICAgICAgICAgICBpZiAocG1kLmdldERpYWdyYW0oKSA9PSBkKSB7
DQpAQCAtMTkwLDcgKzE5Myw3IEBADQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAg
ICAgICAgICAgIH0NCiAgICAgICAgIH0NCi0gICAgICAgIExPRy5kZWJ1ZygiRmFpbGVkIHRvIHJl
bW92ZSBkaWFncmFtICIgKyBkKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIkZhaWxl
ZCB0byByZW1vdmUgZGlhZ3JhbSB7MH0iLCBkKTsNCiAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICAgfQ0KIA0KQEAgLTIyMiw3ICsyMjUsNyBAQA0KICAgICB9DQogDQogICAgIHB1YmxpYyBzeW5j
aHJvbml6ZWQgdm9pZCBjbGVhcigpIHsNCi0gICAgICAgIExPRy5pbmZvKCJDbGVhcmluZyBtZW1i
ZXJzIik7DQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJDbGVhcmluZyBtZW1iZXJzIik7
DQogICAgICAgICBpZiAobW9kZWwgIT0gbnVsbCkgew0KICAgICAgICAgICAgIG1vZGVsLnJlbW92
ZSgpOw0KICAgICAgICAgfQ0KQEAgLTI1NCw3ICsyNTcsNyBAQA0KICAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJvZmlsZUNvbmZpZ3VyYXRpb247DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0K
LSAgICAgICAgDQorDQogICAgICAgICBpZiAoaSA9PSAoZGlhZ3JhbU1lbWJlcnMuc2l6ZSgpICsg
MSkpIHsNCiAgICAgICAgICAgICByZXR1cm4gcHJvZmlsZUNvbmZpZ3VyYXRpb247DQogICAgICAg
ICB9DQpAQCAtMjg1LDcgKzI4OCw3IEBADQogICAgIH0NCiANCiAgICAgcHJpdmF0ZSB2b2lkIHNl
dFRvZG9MaXN0KEFic3RyYWN0UHJvamVjdE1lbWJlciBtZW1iZXIpIHsNCi0gICAgICAgIExPRy5p
bmZvKCJTZXR0aW5nIHRvZG9MaXN0IHRvICIgKyBtZW1iZXIpOw0KKyAgICAgICAgTE9HLmxvZyhM
ZXZlbC5JTkZPLCAiU2V0dGluZyB0b2RvTGlzdCB0byB7MH0iLCBtZW1iZXIpOw0KICAgICAgICAg
dG9kb0xpc3QgPSBtZW1iZXI7DQogICAgIH0NCiANCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL1Byb2ZpbGVDb25maWd1cmF0aW9uLmphdmEN
ClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9rZXJuZWwvUHJvZmlsZUNvbmZpZ3Vy
YXRpb24uamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC9rZXJuZWwvUHJvZmlsZUNvbmZpZ3VyYXRpb24uamF2YQkob3JpZ2luYWwpDQorKysgdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9rZXJuZWwvUHJvZmlsZUNvbmZpZ3Vy
YXRpb24uamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8q
ICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29u
dHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJp
YnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFt
IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdo
aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpA
QCAtNDYsOCArNDYsOSBAQA0KIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQogaW1wb3J0IGph
dmEudXRpbC5MaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwu
bG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KLWlt
cG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGlj
YXRpb24uZXZlbnRzLkFyZ29FdmVudFB1bXA7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0
aW9uLmV2ZW50cy5BcmdvRXZlbnRUeXBlczsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRp
b24uZXZlbnRzLkFyZ29Qcm9maWxlRXZlbnQ7DQpAQCAtNjMsOCArNjQsOCBAQA0KIGltcG9ydCBv
cmcuYXJnb3VtbC5wcm9maWxlLlByb2ZpbGVGYWNhZGU7DQogDQogLyoqDQotICogICBUaGlzIGNs
YXNzIGNhcHR1cmVzIHJlcHJlc2VudHMgdGhlIHVuaXF1ZSBhY2Nlc3MgcG9pbnQgZm9yIHRoZSAN
Ci0gKiAgIGNvbmZpZ3VyYWJpbGl0eSBhbGxvd2VkIGJ5IHRoZSB1c2Ugb2YgcHJvZmlsZXMuIA0K
KyAqICAgVGhpcyBjbGFzcyBjYXB0dXJlcyByZXByZXNlbnRzIHRoZSB1bmlxdWUgYWNjZXNzIHBv
aW50IGZvciB0aGUNCisgKiAgIGNvbmZpZ3VyYWJpbGl0eSBhbGxvd2VkIGJ5IHRoZSB1c2Ugb2Yg
cHJvZmlsZXMuDQogICoNCiAgKiAgIEBhdXRob3IgbWF1cmVsaW8xMjM0DQogICovDQpAQCAtNzIs
OCArNzMsOCBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlcg0KLSAgICAgICAgICAgIC5nZXRM
b2dnZXIoUHJvZmlsZUNvbmZpZ3VyYXRpb24uY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBm
aW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoUHJvZmlsZUNvbmZp
Z3VyYXRpb24uY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBGb3JtYXRpbmdTdHJh
dGVneSBmb3JtYXRpbmdTdHJhdGVneTsNCiANCkBAIC04NCwyNCArODUsMjQgQEANCiAgICAgcHJp
dmF0ZSBMaXN0PFByb2ZpbGU+IHByb2ZpbGVzID0gbmV3IEFycmF5TGlzdDxQcm9maWxlPigpOw0K
IA0KICAgICBwcml2YXRlIExpc3Q8T2JqZWN0PiBwcm9maWxlTW9kZWxzID0gbmV3IEFycmF5TGlz
dDxPYmplY3Q+KCk7DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVGhlIGV4dGVuc2lvbiB1
c2VkIGluIHNlcmlhbGl6YXRpb24gYW5kIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0VHlwZSgpfQ0K
ICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhURU5TSU9OID0gInBy
b2ZpbGUiOw0KLSAgICANCisNCiANCiAgICAgLyoqDQogICAgICAqIFRoZSBjb25maWd1cmF0aW9u
IGtleSBmb3IgdGhlIGRlZmF1bHQgc3RlcmVvdHlwZSB2aWV3Lg0KICAgICAgKi8NCi0gICAgcHVi
bGljIHN0YXRpYyBmaW5hbCBDb25maWd1cmF0aW9uS2V5IEtFWV9ERUZBVUxUX1NURVJFT1RZUEVf
VklFVyA9IA0KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbmZpZ3VyYXRpb25LZXkgS0VZX0RF
RkFVTFRfU1RFUkVPVFlQRV9WSUVXID0NCiAgICAgICAgIENvbmZpZ3VyYXRpb24ubWFrZUtleSgi
cHJvZmlsZXMiLCAic3RlcmVvdHlwZVZpZXciKTsNCi0gICAgDQorDQogICAgIC8qKg0KLSAgICAg
KiBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgdGhpcyBjbGFzcy4gU2V0cyB0aGUgZGVmYXVs
dCBwcm9maWxlcyBhcyANCi0gICAgICogZ2l2ZW4gYnkge0BsaW5rIG9yZy5hcmdvdW1sLnByb2Zp
bGUuUHJvZmlsZU1hbmFnZXJ9IGFzIHRoZSBwcm9maWxlcyBvZiANCisgICAgICogVGhlIGRlZmF1
bHQgY29uc3RydWN0b3IgZm9yIHRoaXMgY2xhc3MuIFNldHMgdGhlIGRlZmF1bHQgcHJvZmlsZXMg
YXMNCisgICAgICogZ2l2ZW4gYnkge0BsaW5rIG9yZy5hcmdvdW1sLnByb2ZpbGUuUHJvZmlsZU1h
bmFnZXJ9IGFzIHRoZSBwcm9maWxlcyBvZg0KICAgICAgKiB0aGUgcHJvamVjdC4NCi0gICAgICog
DQorICAgICAqDQogICAgICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0IHRoYXQgY29udGFp
bnMgdGhpcyBjb25maWd1cmF0aW9uDQogICAgICAqLw0KICAgICBwdWJsaWMgUHJvZmlsZUNvbmZp
Z3VyYXRpb24oUHJvamVjdCBwcm9qZWN0KSB7DQpAQCAtMTE3LDE1ICsxMTgsMTUgQEANCiANCiAg
ICAgICAgIHVwZGF0ZVN0cmF0ZWdpZXMoKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQot
ICAgICAqIFRoZSBjb25zdHJ1Y3RvciBmb3IgcHJlLWRlZmluZWQgcHJvZmlsZSBjb25maWd1cmF0
aW9ucywgc3VjaCBhcyB3aGVuIGEgDQorICAgICAqIFRoZSBjb25zdHJ1Y3RvciBmb3IgcHJlLWRl
ZmluZWQgcHJvZmlsZSBjb25maWd1cmF0aW9ucywgc3VjaCBhcyB3aGVuIGENCiAgICAgICogcHJv
amVjdCBpcyByZWFkIGZyb20gYSBzYXZlZCBmaWxlLg0KICAgICAgKiBAcGFyYW0gcHJvamVjdCB0
aGUgcHJvamVjdCB0aGF0IGNvbnRhaW5zIHRoaXMgY29uZmlndXJhdGlvbg0KLSAgICAgKiBAcGFy
YW0gY29uZmlndXJlZFByb2ZpbGVzIHRoZSB7QGxpbmsgUHJvZmlsZX1zIHRoYXQgd2lsbCBiZSB0
aGUgcHJvamVjdCANCisgICAgICogQHBhcmFtIGNvbmZpZ3VyZWRQcm9maWxlcyB0aGUge0BsaW5r
IFByb2ZpbGV9cyB0aGF0IHdpbGwgYmUgdGhlIHByb2plY3QNCiAgICAgICogICAgICAgIHByb2Zp
bGVzDQogICAgICAqLw0KLSAgICBwdWJsaWMgUHJvZmlsZUNvbmZpZ3VyYXRpb24oUHJvamVjdCBw
cm9qZWN0LCANCisgICAgcHVibGljIFByb2ZpbGVDb25maWd1cmF0aW9uKFByb2plY3QgcHJvamVj
dCwNCiAgICAgICAgICAgICBDb2xsZWN0aW9uPFByb2ZpbGU+IGNvbmZpZ3VyZWRQcm9maWxlcykg
ew0KICAgICAgICAgc3VwZXIoRVhURU5TSU9OLCBwcm9qZWN0KTsNCiAgICAgICAgIExpc3QgYyA9
IHByb2plY3QuZ2V0VXNlckRlZmluZWRNb2RlbExpc3QoKTsNCkBAIC0xMzUsMTEgKzEzNiwxMSBA
QA0KICAgICAgICAgfQ0KICAgICAgICAgdXBkYXRlU3RyYXRlZ2llcygpOw0KICAgICB9DQotICAg
IA0KKw0KICAgICBwcml2YXRlIHZvaWQgdXBkYXRlU3RyYXRlZ2llcygpIHsNCiAgICAgICAgIGZv
ciAoUHJvZmlsZSBwcm9maWxlIDogcHJvZmlsZXMpIHsNCi0gICAgICAgICAgICBhY3RpdmF0ZUZv
cm1hdGluZ1N0cmF0ZWd5KHByb2ZpbGUpOyAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICBh
Y3RpdmF0ZURlZmF1bHRUeXBlU3RyYXRlZ3kocHJvZmlsZSk7ICAgICAgICAgICAgICAgIA0KKyAg
ICAgICAgICAgIGFjdGl2YXRlRm9ybWF0aW5nU3RyYXRlZ3kocHJvZmlsZSk7DQorICAgICAgICAg
ICAgYWN0aXZhdGVEZWZhdWx0VHlwZVN0cmF0ZWd5KHByb2ZpbGUpOw0KICAgICAgICAgfQ0KICAg
ICB9DQogDQpAQCAtMTU2LDExICsxNTcsMTEgQEANCiAgICAgcHVibGljIERlZmF1bHRUeXBlU3Ry
YXRlZ3kgZ2V0RGVmYXVsdFR5cGVTdHJhdGVneSgpIHsNCiAgICAgICAgIHJldHVybiBkZWZhdWx0
VHlwZVN0cmF0ZWd5Ow0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCi0gICAgICogVXBkYXRl
cyB0aGUgY3VycmVudCBzdHJhdGVneSB0byB0aGUgc3RyYXRlZ3kgcHJvdmlkZWQgYnkgdGhlIA0K
KyAgICAgKiBVcGRhdGVzIHRoZSBjdXJyZW50IHN0cmF0ZWd5IHRvIHRoZSBzdHJhdGVneSBwcm92
aWRlZCBieSB0aGUNCiAgICAgICogcGFzc2VkIHByb2ZpbGUuIFRoZSBwcm9maWxlIHNob3VsZCBo
YXZlIGJlZW4gcHJldmlvdXNseSByZWdpc3RlcmVkLg0KLSAgICAgKiANCisgICAgICoNCiAgICAg
ICogQHBhcmFtIHByb2ZpbGUgdGhlIHByb2ZpbGUgcHJvdmlkaW5nIHRoZSBjdXJyZW50IGRlZmF1
bHQgdHlwZSBzdHJhdGVneQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgYWN0aXZhdGVEZWZh
dWx0VHlwZVN0cmF0ZWd5KFByb2ZpbGUgcHJvZmlsZSkgew0KQEAgLTE2OSwxMSArMTcwLDExIEBA
DQogICAgICAgICAgICAgdGhpcy5kZWZhdWx0VHlwZVN0cmF0ZWd5ID0gcHJvZmlsZS5nZXREZWZh
dWx0VHlwZVN0cmF0ZWd5KCk7DQogICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIC8q
Kg0KLSAgICAgKiBVcGRhdGVzIHRoZSBjdXJyZW50IHN0cmF0ZWd5IHRvIHRoZSBzdHJhdGVneSBw
cm92aWRlZCBieSB0aGUgDQorICAgICAqIFVwZGF0ZXMgdGhlIGN1cnJlbnQgc3RyYXRlZ3kgdG8g
dGhlIHN0cmF0ZWd5IHByb3ZpZGVkIGJ5IHRoZQ0KICAgICAgKiBwYXNzZWQgcHJvZmlsZS4gVGhl
IHByb2ZpbGUgc2hvdWxkIGhhdmUgYmVlbiBwcmV2aW91c2x5IHJlZ2lzdGVyZWQuDQotICAgICAq
IA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gcHJvZmlsZSB0aGUgcHJvZmlsZSBwcm92aWRpbmcg
dGhlIGN1cnJlbnQgZm9ybWF0aW5nIHN0cmF0ZWd5DQogICAgICAqLw0KICAgICBwdWJsaWMgdm9p
ZCBhY3RpdmF0ZUZvcm1hdGluZ1N0cmF0ZWd5KFByb2ZpbGUgcHJvZmlsZSkgew0KQEAgLTE5Miw3
ICsxOTMsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogQXBwbGllcyBhIG5ldyBwcm9maWxlIHRv
IHRoaXMgY29uZmlndXJhdGlvbi4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBw
IHRoZSBwcm9maWxlIHRvIGJlIGFwcGxpZWQNCiAgICAgICogQGRlcHJlY2F0ZWQgZm9yIDAuMjku
MiwgYmVjYXVzZSBzaW5jZSBVTUwyIGEgcHJvZmlsZSBtdXN0IGJlIGFwcGxpZWQgdG8NCiAgICAg
ICogYSBtb2RlbA0KQEAgLTIwNSw3ICsyMDYsNyBAQA0KICAgICAvKioNCiAgICAgICogQXBwbGll
cyBhIG5ldyBwcm9maWxlIHRvIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgdG8gdGhlIGdpdmVuIG1v
ZGVsIChvcg0KICAgICAgKiBvdGhlciBwcm9maWxlLCB3aGljaCBjb3VsZCBiZSBsYXRlciBhIGNv
bGxlY3Rpb24pLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHAgdGhlIHByb2Zp
bGUgdG8gYmUgYXBwbGllZA0KICAgICAgKiBAcGFyYW0gbSB0aGUgbW9kZWwgKG9yIHByb2ZpbGUp
IHRvIHdoaWNoIHRoZSBwcm9maWxlIHdpbGwgYmUgYXBwbGllZA0KICAgICAgKi8NCkBAIC0yMjAs
OSArMjIxLDExIEBADQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgcHJvZmls
ZU1vZGVscy5hZGRBbGwocC5nZXRQcm9maWxlUGFja2FnZXMoKSk7DQogICAgICAgICAgICAgfSBj
YXRjaCAoUHJvZmlsZUV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAgIExPRy53YXJuKCJF
cnJvciByZXRyaWV2aW5nIHByb2ZpbGUncyAiICsgcCArICIgcGFja2FnZXMuIiwgZSk7DQorICAg
ICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywNCisgICAgICAgICAgICAgICAgICAg
ICAgICAiRXJyb3IgcmV0cmlldmluZyBwcm9maWxlJ3MgIiArIHAgKyAiIHBhY2thZ2VzLiIsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgZSk7DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgICAg
IA0KKw0KICAgICAgICAgICAgIEZpZ05vZGVTdHJhdGVneSBmbnMgPSBwLmdldEZpZ3VyZVN0cmF0
ZWd5KCk7DQogICAgICAgICAgICAgaWYgKGZucyAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAg
IGZpZ05vZGVTdHJhdGVnaWVzLmFkZChmbnMpOw0KQEAgLTIzOCw3ICsyNDEsNyBAQA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicHJvZmlsZSIsIG51bGwsIHApKSk7DQogICAgICAgICB9
DQogICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAvKioNCiAgICAgICogQHJldHVybiB0aGUgbGlz
dCBvZiBtb2RlbHMgb2YgdGhlIGN1cnJlbnRseSBhcHBsaWVkIHByb2ZpbGUuDQogICAgICAqLw0K
QEAgLTI0OCw3ICsyNTEsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogUmVtb3ZlcyB0aGUgcGFz
c2VkIHByb2ZpbGUgZnJvbSB0aGlzIGNvbmZpZ3VyYXRpb24uDQotICAgICAqIA0KKyAgICAgKg0K
ICAgICAgKiBAcGFyYW0gcCB0aGUgcHJvZmlsZSB0byBiZSBhcHBsaWVkDQogICAgICAqIEBkZXBy
ZWNhdGVkIGZvciAwLjI5LjIsIGJlY2F1c2Ugc2luY2UgVU1MMiBhIHByb2ZpbGUgbXVzdCBiZSB1
bmFwcGxpZWQNCiAgICAgICogZnJvbSBhIG1vZGVsDQpAQCAtMjYxLDcgKzI2NCw3IEBADQogICAg
IC8qKg0KICAgICAgKiBSZW1vdmVzIHRoZSBwYXNzZWQgcHJvZmlsZSBmcm9tIHRoZSBjb25maWd1
cmF0aW9uIGFuZCB1bmFwcGxpZXMgaXQgZnJvbQ0KICAgICAgKiB0aGUgZ2l2ZW4gbW9kZWwgKG9y
IG90aGVyIHByb2ZpbGUsIHdoaWNoIGNvdWxkIGJlIGxhdGVyIGEgY29sbGVjdGlvbikuDQotICAg
ICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gcCB0aGUgcHJvZmlsZSB0byBiZSByZW1vdmVk
L3VuYXBwbGllZA0KICAgICAgKiBAcGFyYW0gbSB0aGUgbW9kZWwgKG9yIHByb2ZpbGUpIHRvIHdo
aWNoIHRoZSBwcm9maWxlIHdpbGwgYmUgdW5hcHBsaWVkDQogICAgICAqLw0KQEAgLTI3Myw3ICsy
NzYsNyBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBwcm9maWxlTW9kZWxzLnJlbW92
ZUFsbChwLmdldFByb2ZpbGVQYWNrYWdlcygpKTsNCiAgICAgICAgIH0gY2F0Y2ggKFByb2ZpbGVF
eGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgIExPRy5lcnJvcigiRXhjZXB0aW9uIiwgZSk7DQor
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJFeGNlcHRpb24iLCBlKTsNCiAgICAg
ICAgIH0NCiANCiAgICAgICAgIEZpZ05vZGVTdHJhdGVneSBmbnMgPSBwLmdldEZpZ3VyZVN0cmF0
ZWd5KCk7DQpAQCAtMzAxLDcgKzMwNCw3IEBADQogICAgICAgICAgICAgICAgIEFyZ29FdmVudFR5
cGVzLlBST0ZJTEVfUkVNT1ZFRCwgbmV3IFByb3BlcnR5Q2hhbmdlRXZlbnQodGhpcywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAicHJvZmlsZSIsIHAsIG51bGwpKSk7DQogICAgIH0NCi0gICAg
DQorDQogICAgIHByaXZhdGUgRmlnTm9kZVN0cmF0ZWd5IGNvbXBvc2l0ZUZpZ05vZGVTdHJhdGVn
eSA9IG5ldyBGaWdOb2RlU3RyYXRlZ3koKSB7DQogDQogCXB1YmxpYyBJbWFnZSBnZXRJY29uRm9y
U3RlcmVvdHlwZShPYmplY3QgZWxlbWVudCkgew0KQEAgLTMxNywxNCArMzIwLDE0IEBADQogCSAg
ICB9DQogCSAgICByZXR1cm4gbnVsbDsNCiAJfQ0KLQkNCisNCiAgICAgfTsNCi0gICAgDQorDQog
ICAgIC8qKg0KICAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IEZpZ05vZGVTdHJhdGVneQ0KICAg
ICAgKi8NCiAgICAgcHVibGljIEZpZ05vZGVTdHJhdGVneSBnZXRGaWdOb2RlU3RyYXRlZ3koKSB7
DQotCXJldHVybiBjb21wb3NpdGVGaWdOb2RlU3RyYXRlZ3k7IA0KKwlyZXR1cm4gY29tcG9zaXRl
RmlnTm9kZVN0cmF0ZWd5Ow0KICAgICB9DQogDQogICAgIC8qKg0KQEAgLTMzNiw5ICszMzksOSBA
QA0KICAgICB9DQogDQogICAgIC8qKg0KLSAgICAgKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgYXJl
IGFsd2F5cyBjb25zaXN0ZW50LCB0aGVyZSdzIG5vIG5lZWQgDQorICAgICAqIE9iamVjdHMgb2Yg
dGhpcyBjbGFzcyBhcmUgYWx3YXlzIGNvbnNpc3RlbnQsIHRoZXJlJ3Mgbm8gbmVlZA0KICAgICAg
KiB0byByZXBhaXIgdGhlbS4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEByZXR1cm4gdGhl
IGVtcHR5IHN0cmluZy4NCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdE1l
bWJlciNyZXBhaXIoKQ0KICAgICAgKi8NCkBAIC0zNTcsMTYgKzM2MCwxNiBAQA0KIA0KIA0KICAg
ICAvKioNCi0gICAgICogRmluZCBhIHN0ZXJlb3R5cGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB3aGlj
aCBpcyBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbiANCisgICAgICogRmluZCBhIHN0ZXJlb3R5cGUg
d2l0aCB0aGUgZ2l2ZW4gbmFtZSB3aGljaCBpcyBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbg0KICAg
ICAgKiBlbGVtZW50Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIG5hbWUgbmFt
ZSBvZiBzdGVyZW90eXBlIHRvIGxvb2sgZm9yDQogICAgICAqIEBwYXJhbSBlbGVtZW50IG1vZGVs
IGVsZW1lbnQgdG8gd2hpY2ggdGhlIHN0ZXJlb3R5cGUgbXVzdCBiZSBhcHBsaWNhYmxlDQogICAg
ICAqIEByZXR1cm4gdGhlIHN0ZXJlb3R5cGUgb3IgbnVsbCBpZiBub25lIGZvdW5kDQogICAgICAq
Lw0KICAgICBwdWJsaWMgT2JqZWN0IGZpbmRTdGVyZW90eXBlRm9yT2JqZWN0KFN0cmluZyBuYW1l
LCBPYmplY3QgZWxlbWVudCkgew0KICAgICAgICAgSXRlcmF0b3IgaXRlciA9IG51bGw7DQotICAg
ICAgICANCisNCiAgICAgICAgIGZvciAoT2JqZWN0IG1vZGVsIDogcHJvZmlsZU1vZGVscykgew0K
ICAgICAgICAgICAgIGl0ZXIgPSBNb2RlbC5nZXRGYWNhZGUoKS5nZXRPd25lZEVsZW1lbnRzKG1v
ZGVsKS5pdGVyYXRvcigpOw0KIA0KQEAgLTM4OSw3ICszOTIsNyBAQA0KIA0KICAgICAvKioNCiAg
ICAgICogU2VhcmNoIGZvciB0aGUgZ2l2ZW4gdHlwZSBpbiBhbGwgb2YgdGhlIHByb2ZpbGUgbW9k
ZWxzLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIG5hbWUgbmFtZSBvZiB0eXBl
IHRvIGJlIGZvdW5kDQogICAgICAqIEByZXR1cm4gdGhlIHR5cGUgb3IgbnVsbA0KICAgICAgKi8N
CkBAIC00MDUsMTAgKzQwOCwxMCBAQA0KIA0KICAgICAvKioNCiAgICAgICogRmluZHMgYSB0eXBl
IGluIGEgbW9kZWwgYnkgbmFtZQ0KLSAgICAgKiANCi0gICAgICogRklYTUU6IGR1cGxpY2F0ZWQg
ZnJvbSB0aGUgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSBpbiANCisgICAgICoNCisgICAgICog
RklYTUU6IGR1cGxpY2F0ZWQgZnJvbSB0aGUgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSBpbg0K
ICAgICAgKiBvcmcuYXJnb3VtbC5wcm9maWxlLmludGVybmFsLk1vZGVsVXRpbHMuDQotICAgICAq
IA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gcyB0aGUgdHlwZSBuYW1lDQogICAgICAqIEBwYXJh
bSBtb2RlbCB0aGUgbW9kZWwNCiAgICAgICogQHJldHVybiB0aGUgdHlwZSBvciA8Y29kZT5udWxs
PC9jb2RlPiBpZiB0aGUgdHlwZSBoYXMgbm90IGJlZW4gZm91bmQuDQpAQCAtNDQzLDExICs0NDYs
MTEgQEANCiAgICAgfQ0KIA0KICAgICAvKioNCi0gICAgICogRmluZCBhbGwgdGhlIG1vZGVsIGVs
ZW1lbnRzIGluIHRoZSBjb25maWd1cmVkIHtAbGluayBQcm9maWxlfXMgDQorICAgICAqIEZpbmQg
YWxsIHRoZSBtb2RlbCBlbGVtZW50cyBpbiB0aGUgY29uZmlndXJlZCB7QGxpbmsgUHJvZmlsZX1z
DQogICAgICAqIG9mIHRoZSBnaXZlbiBtZXRhIHR5cGUuDQotICAgICAqIA0KKyAgICAgKg0KICAg
ICAgKiBAcGFyYW0gbWV0YVR5cGUgdGhlIG1ldGEgdHlwZSBvZiB0aGUgbW9kZWwgZWxlbWVudHMg
dG8gZmluZA0KLSAgICAgKiBAcmV0dXJuIGEge0BsaW5rIENvbGxlY3Rpb259IGNvbnRhaW5pbmcg
dGhlIG1vZGVsIGVsZW1lbnRzIHRoYXQgDQorICAgICAqIEByZXR1cm4gYSB7QGxpbmsgQ29sbGVj
dGlvbn0gY29udGFpbmluZyB0aGUgbW9kZWwgZWxlbWVudHMgdGhhdA0KICAgICAgKiAgICAgICAg
IGFyZSBvZiB0aGUgZ2l2ZW4gbWV0YSB0eXBlDQogICAgICAqLw0KICAgICBAU3VwcHJlc3NXYXJu
aW5ncygidW5jaGVja2VkIikNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwva2VybmVsL1Byb2plY3QuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdy
aXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL2tlcm5lbC9Qcm9qZWN0LmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9
MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL1Byb2plY3QuamF2YQkob3JpZ2luYWwpDQor
KysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9rZXJuZWwvUHJvamVjdC5q
YXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0K
ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDEwIENvbnRyaWJ1
dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEyIENvbnRyaWJ1dG9y
cyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQg
dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBh
Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTY2
OCw0ICs2NjgsNCBAQA0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgc2V0RGlydHkoYm9vbGVh
biBpc0RpcnR5KTsNCiANCi19DQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCit9DQoNCk1v
ZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2tlcm5lbC9Qcm9q
ZWN0SW1wbC5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dz
ZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL1By
b2plY3RJbXBsLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3Jn
L2FyZ291bWwva2VybmVsL1Byb2plY3RJbXBsLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL1Byb2plY3RJbXBsLmphdmEJMjAx
Mi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgQ29udHJpYnV0b3JzIC0g
c2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTIgQ29udHJpYnV0b3JzIC0gc2Vl
IGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj
b21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFu
aWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNTYsMTUgKzU2
LDE2IEBADQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTWFwOw0K
IGltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsN
CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hl
LmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uYXBpLkFyZ287
DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9uLmhlbHBlcnMuQXBwbGljYXRpb25WZXJz
aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247DQog
aW1wb3J0IG9yZy5hcmdvdW1sLmkxOG4uVHJhbnNsYXRvcjsNCitpbXBvcnQgb3JnLmFyZ291bWwu
bW9kZWwuRGVmYXVsdHM7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLkludmFsaWRFbGVtZW50
RXhjZXB0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5Nb2RlbDsNCi1pbXBvcnQgb3Jn
LmFyZ291bWwubW9kZWwuRGVmYXVsdHM7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnByb2ZpbGUuUHJv
ZmlsZTsNCiBpbXBvcnQgb3JnLmFyZ291bWwucHJvZmlsZS5Qcm9maWxlRmFjYWRlOw0KIGltcG9y
dCBvcmcuYXJnb3VtbC51aS50YXJnZXRtYW5hZ2VyLlRhcmdldE1hbmFnZXI7DQpAQCAtODUsNyAr
ODYsOCBAQA0KICAqLw0KIHB1YmxpYyBjbGFzcyBQcm9qZWN0SW1wbCBpbXBsZW1lbnRzIGphdmEu
aW8uU2VyaWFsaXphYmxlLCBQcm9qZWN0IHsNCiANCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwg
TG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoUHJvamVjdEltcGwuY2xhc3MpOw0KKyAgICBw
cml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dn
ZXIoUHJvamVjdEltcGwuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIERl
ZmF1bHQgbmFtZSBmb3IgYSBwcm9qZWN0Lg0KQEAgLTEzNSw3ICsxMzcsNyBAQA0KICAgICAgKiBJ
bnN0YW5jZXMgb2YgdGhlIFVNTCBtb2RlbC4NCiAgICAgICovDQogICAgIHByaXZhdGUgZmluYWwg
TGlzdCBtb2RlbHMgPSBuZXcgQXJyYXlMaXN0KCk7DQotICAgIA0KKw0KICAgICBwcml2YXRlIE9i
amVjdCByb290Ow0KICAgICBwcml2YXRlIGZpbmFsIENvbGxlY3Rpb24gcm9vdHMgPSBuZXcgSGFz
aFNldCgpOw0KIA0KQEAgLTE0Myw3ICsxNDUsNyBAQA0KICAgICAgKiBJbnN0YW5jZXMgb2YgdGhl
IFVNTCBkaWFncmFtcy4NCiAgICAgICovDQogICAgIHByaXZhdGUgZmluYWwgTGlzdDxBcmdvRGlh
Z3JhbT4gZGlhZ3JhbXMgPSBuZXcgQXJyYXlMaXN0PEFyZ29EaWFncmFtPigpOw0KLSAgICANCisN
CiAgICAgcHJpdmF0ZSBPYmplY3QgY3VycmVudE5hbWVzcGFjZTsNCiAgICAgcHJpdmF0ZSBNYXA8
U3RyaW5nLCBPYmplY3Q+IHV1aWRSZWZzOw0KICAgICBwcml2YXRlIHRyYW5zaWVudCBWZXRvYWJs
ZUNoYW5nZVN1cHBvcnQgdmV0b1N1cHBvcnQ7DQpAQCAtMTU0LDE0ICsxNTYsMTQgQEANCiAgICAg
ICogVGhlIGFjdGl2ZSBkaWFncmFtLCBwb2ludGVyIHRvIGEgZGlhZ3JhbSBpbiB0aGUgbGlzdCB3
aXRoIGRpYWdyYW1zLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBBcmdvRGlhZ3JhbSBhY3RpdmVE
aWFncmFtOw0KLSAgICANCisNCiAgICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBkaWFncmFtIHRvIHNo
b3cgYnkgZGVmYXVsdCBhZnRlciBsb2FkaW5nIGEgcHJvamVjdC4gKi8NCiAgICAgcHJpdmF0ZSBT
dHJpbmcgc2F2ZWREaWFncmFtTmFtZTsNCiANCiAgICAgLyoqDQogICAgICAqIENhY2hlIGZvciB0
aGUgZGVmYXVsdCBtb2RlbC4NCiAgICAgICovDQotICAgIHByaXZhdGUgSGFzaE1hcDxTdHJpbmcs
IE9iamVjdD4gZGVmYXVsdE1vZGVsVHlwZUNhY2hlID0gDQorICAgIHByaXZhdGUgSGFzaE1hcDxT
dHJpbmcsIE9iamVjdD4gZGVmYXVsdE1vZGVsVHlwZUNhY2hlID0NCiAgICAgICAgIG5ldyBIYXNo
TWFwPFN0cmluZywgT2JqZWN0PigpOw0KIA0KICAgICBwcml2YXRlIGZpbmFsIENvbGxlY3Rpb24g
dHJhc2hjYW4gPSBuZXcgQXJyYXlMaXN0KCk7DQpAQCAtMTcxLDcgKzE3Myw3IEBADQogICAgIHBy
aXZhdGUgVW5kb01hbmFnZXIgdW5kb01hbmFnZXIgPSBuZXcgRGVmYXVsdFVuZG9NYW5hZ2VyKHRo
aXMpOw0KIA0KICAgICBwcml2YXRlIGJvb2xlYW4gZGlydHkgPSBmYWxzZTsNCi0gICAgDQorDQog
ICAgIC8qKg0KICAgICAgKiBDb25zdHJ1Y3Rvci4NCiAgICAgICoNCkBAIC0yMTAsNyArMjEyLDcg
QEANCiANCiAgICAgICAgIGhpc3RvcnlGaWxlID0gIiI7DQogDQotICAgICAgICBMT0cuaW5mbygi
bWFraW5nIGVtcHR5IHByb2plY3Qgd2l0aCBlbXB0eSBtb2RlbCIpOw0KKyAgICAgICAgTE9HLmxv
ZyhMZXZlbC5JTkZPLCAibWFraW5nIGVtcHR5IHByb2plY3Qgd2l0aCBlbXB0eSBtb2RlbCIpOw0K
ICAgICAgICAgYWRkU2VhcmNoUGF0aCgiUFJPSkVDVF9ESVIiKTsNCiAgICAgfQ0KIA0KQEAgLTIy
Niw3ICsyMjgsNyBAQA0KICAgICBwdWJsaWMgaW50IGdldFByb2plY3RUeXBlKCkgew0KICAgICAg
ICAgcmV0dXJuIHByb2plY3RUeXBlOw0KICAgICB9DQotICAgIA0KKw0KICAgICBwdWJsaWMgdm9p
ZCBzZXRQcm9qZWN0VHlwZShpbnQgcHJvamVjdFR5cGUpIHsNCiAgICAgICAgIHRoaXMucHJvamVj
dFR5cGUgPSBwcm9qZWN0VHlwZTsNCiAgICAgfQ0KQEAgLTI0NCwyMyArMjQ2LDE5IEBADQogICAg
ICAqIEBwYXJhbSB0aGVVcmkgdGhlIFVSSSBmb3IgdGhlIHByb2plY3QNCiAgICAgICovDQogICAg
IHB1YmxpYyB2b2lkIHNldFVyaShVUkkgdGhlVXJpKSB7DQotICAgICAgICBpZiAoTE9HLmlzRGVi
dWdFbmFibGVkKCkpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIlNldHRpbmcgcHJvamVjdCBV
UkkgZnJvbSBcIiIgKyB1cmkNCi0gICAgICAgICAgICAgICAgICAgICAgKyAiXCIgdG8gXCIiICsg
dGhlVXJpICsgIlwiLiIpOw0KLSAgICAgICAgfQ0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5F
LA0KKyAgICAgICAgICAgICAgICAiU2V0dGluZyBwcm9qZWN0IFVSSSBmcm9tIFwiezB9XCIgdG8g
XCJ7MX1cIi4iLA0KKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117dXJpLCB0aGVVcml9KTsN
CisNCiAgICAgICAgIHVyaSA9IHRoZVVyaTsNCiAgICAgfQ0KIA0KICAgICBwdWJsaWMgdm9pZCBz
ZXRGaWxlKGZpbmFsIEZpbGUgZmlsZSkgew0KICAgICAgICAgVVJJIHRoZVByb2plY3RVcmkgPSBm
aWxlLnRvVVJJKCk7DQogDQotICAgICAgICBpZiAoTE9HLmlzRGVidWdFbmFibGVkKCkpIHsNCi0g
ICAgICAgICAgICBMT0cuZGVidWcoIlNldHRpbmcgcHJvamVjdCBmaWxlIG5hbWUgZnJvbSBcIiIN
Ci0gICAgICAgICAgICAgICAgICAgICAgKyB1cmkNCi0gICAgICAgICAgICAgICAgICAgICAgKyAi
XCIgdG8gXCIiDQotICAgICAgICAgICAgICAgICAgICAgICsgdGhlUHJvamVjdFVyaQ0KLSAgICAg
ICAgICAgICAgICAgICAgICArICJcIi4iKTsNCi0gICAgICAgIH0NCisgICAgICAgIExPRy5sb2co
TGV2ZWwuRklORSwNCisgICAgICAgICAgICAgICAgIlNldHRpbmcgcHJvamVjdCBmaWxlIG5hbWUg
ZnJvbSBcInswfVwiIHRvIFwiezF9XCIuIiwNCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtd
e3VyaSwgdGhlUHJvamVjdFVyaX0pOw0KIA0KICAgICAgICAgdXJpID0gdGhlUHJvamVjdFVyaTsN
CiAgICAgfQ0KQEAgLTI3OSw3ICsyNzcsOCBAQA0KIA0KIA0KICAgICBwdWJsaWMgTGlzdDxQcm9q
ZWN0TWVtYmVyPiBnZXRNZW1iZXJzKCkgew0KLSAgICAgICAgTE9HLmluZm8oIkdldHRpbmcgdGhl
IG1lbWJlcnMgdGhlcmUgYXJlICIgKyBtZW1iZXJzLnNpemUoKSk7DQorICAgICAgICBMT0cubG9n
KExldmVsLklORk8sDQorICAgICAgICAgICAgICAgICJHZXR0aW5nIHRoZSBtZW1iZXJzIHRoZXJl
IGFyZSB7MH0iLCBtZW1iZXJzLnNpemUoKSk7DQogICAgICAgICByZXR1cm4gbWVtYmVyczsNCiAg
ICAgfQ0KIA0KQEAgLTI5Myw3ICsyOTIsNyBAQA0KICAgICAgICAgICAgIHRyeSB7DQogICAgICAg
ICAgICAgICAgIGQuc2V0TmFtZShkLmdldE5hbWUoKSArICIgIiArIHNlcmlhbCk7DQogICAgICAg
ICAgICAgfSBjYXRjaCAoUHJvcGVydHlWZXRvRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICAg
ICAgc2VyaWFsKys7ICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIHNlcmlhbCsrOw0KICAg
ICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIFByb2plY3RNZW1iZXIgcG0gPSBuZXcg
UHJvamVjdE1lbWJlckRpYWdyYW0oZCwgdGhpcyk7DQpAQCAtMzA4LDcgKzMwNyw4IEBADQogICAg
IHByaXZhdGUgdm9pZCBhZGRUb2RvTWVtYmVyKFByb2plY3RNZW1iZXJUb2RvTGlzdCBwbSkgew0K
ICAgICAgICAgLy8gQWRkaW5nIGEgdG9kbyBtZW1iZXIgcmVtb3ZlcyBhbnkgZXhpc3Rpbmcgb25l
Lg0KICAgICAgICAgbWVtYmVycy5hZGQocG0pOw0KLSAgICAgICAgTE9HLmluZm8oIkFkZGVkIHRv
ZG8gbWVtYmVyLCB0aGVyZSBhcmUgbm93ICIgKyBtZW1iZXJzLnNpemUoKSk7DQorICAgICAgICBM
T0cubG9nKExldmVsLklORk8sDQorICAgICAgICAgICAgICAgICJBZGRlZCB0b2RvIG1lbWJlciwg
dGhlcmUgYXJlIG5vdyB7MH0iLCBtZW1iZXJzLnNpemUoKSk7DQogICAgIH0NCiANCiANCkBAIC0z
MTgsMjMgKzMxOCwyMyBAQA0KICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRF
eGNlcHRpb24oDQogICAgICAgICAgICAgICAgICAgICAiQSBtb2RlbCBtZW1iZXIgbXVzdCBiZSBz
dXBwbGllZCIpOw0KICAgICAgICAgfSBlbHNlIGlmIChtIGluc3RhbmNlb2YgQXJnb0RpYWdyYW0p
IHsNCi0gICAgICAgICAgICBMT0cuaW5mbygiQWRkaW5nIGRpYWdyYW0gbWVtYmVyIik7DQorICAg
ICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiQWRkaW5nIGRpYWdyYW0gbWVtYmVyIik7DQog
ICAgICAgICAgICAgYWRkRGlhZ3JhbU1lbWJlcigoQXJnb0RpYWdyYW0pIG0pOw0KICAgICAgICAg
fSBlbHNlIGlmIChtIGluc3RhbmNlb2YgUHJvamVjdE1lbWJlclRvZG9MaXN0KSB7DQotICAgICAg
ICAgICAgTE9HLmluZm8oIkFkZGluZyB0b2RvIG1lbWJlciIpOw0KKyAgICAgICAgICAgIExPRy5s
b2coTGV2ZWwuSU5GTywgIkFkZGluZyB0b2RvIG1lbWJlciIpOw0KICAgICAgICAgICAgIGFkZFRv
ZG9NZW1iZXIoKFByb2plY3RNZW1iZXJUb2RvTGlzdCkgbSk7DQogICAgICAgICB9IGVsc2UgaWYg
KE1vZGVsLmdldEZhY2FkZSgpLmlzQU1vZGVsKG0pKSB7DQotICAgICAgICAgICAgTE9HLmluZm8o
IkFkZGluZyBtb2RlbCBtZW1iZXIiKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8s
ICJBZGRpbmcgbW9kZWwgbWVtYmVyIik7DQogICAgICAgICAgICAgYWRkTW9kZWxNZW1iZXIobSk7
DQogICAgICAgICB9IGVsc2UgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQVByb2ZpbGUobSkpIHsN
Ci0gICAgICAgICAgICBMT0cuaW5mbygiQWRkaW5nIHByb2ZpbGUgbW9kZWwgbWVtYmVyIik7DQor
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiQWRkaW5nIHByb2ZpbGUgbW9kZWwgbWVt
YmVyIik7DQogICAgICAgICAgICAgYWRkTW9kZWxNZW1iZXIobSk7DQogICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oDQogICAg
ICAgICAgICAgICAgICAgICAiVGhlIG1lbWJlciBtdXN0IGJlIGEgVU1MIG1vZGVsIHRvZG8gbWVt
YmVyIG9yIGRpYWdyYW0uIg0KICAgICAgICAgICAgICAgICAgICAgKyAiSXQgaXMgIiArIG0uZ2V0
Q2xhc3MoKS5nZXROYW1lKCkpOw0KICAgICAgICAgfQ0KLSAgICAgICAgTE9HLmluZm8oIlRoZXJl
IGFyZSBub3cgIiArIG1lbWJlcnMuc2l6ZSgpICsgIiBtZW1iZXJzIik7DQorICAgICAgICBMT0cu
bG9nKExldmVsLklORk8sICJUaGVyZSBhcmUgbm93IHswfSBtZW1iZXJzIiwgbWVtYmVycy5zaXpl
KCkpOw0KICAgICB9DQogDQogICAgIC8qKg0KQEAgLTM1OSwxMCArMzU5LDEwIEBADQogICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgIC8vIGdvdCBwYXN0IHRoZSB2ZXRvLCBhZGQgdGhlIG1lbWJl
cg0KICAgICAgICAgICAgIFByb2plY3RNZW1iZXIgcG0gPSBuZXcgUHJvamVjdE1lbWJlck1vZGVs
KG0sIHRoaXMpOw0KLSAgICAgICAgICAgIExPRy5pbmZvKCJBZGRpbmcgbW9kZWwgbWVtYmVyIHRv
IHN0YXJ0IG9mIG1lbWJlciBsaXN0Iik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZP
LCAiQWRkaW5nIG1vZGVsIG1lbWJlciB0byBzdGFydCBvZiBtZW1iZXIgbGlzdCIpOw0KICAgICAg
ICAgICAgIG1lbWJlcnMuYWRkKHBtKTsNCiAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAg
TE9HLmluZm8oIkF0dGVtcHRlZCB0byBsb2FkIDIgbW9kZWxzIik7DQorICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5JTkZPLCAiQXR0ZW1wdGVkIHRvIGxvYWQgMiBtb2RlbHMiKTsNCiAgICAgICAg
ICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKA0KICAgICAgICAgICAgICAg
ICAgICAgIkF0dGVtcHRlZCB0byBsb2FkIDIgbW9kZWxzIik7DQogICAgICAgICB9DQpAQCAtMzc3
LDcgKzM3Nyw3IEBADQogCX0NCiAgICAgICAgIGlmICghbW9kZWxzLmNvbnRhaW5zKG1vZGVsKSkg
ew0KICAgICAgICAgICAgIHNldFJvb3QobW9kZWwpOw0KLSAgICAgICAgfSAgICAgICAgDQorICAg
ICAgICB9DQogICAgIH0NCiANCiAgICAgcHJpdmF0ZSB2b2lkIGFkZE1vZGVsSW50ZXJuYWwoZmlu
YWwgT2JqZWN0IG1vZGVsKSB7DQpAQCAtMzg2LDcgKzM4Niw3IEBADQogICAgICAgICBzZXRDdXJy
ZW50TmFtZXNwYWNlKG1vZGVsKTsNCiAgICAgICAgIHNldFNhdmVFbmFibGVkKHRydWUpOw0KICAg
ICAgICAgaWYgKG1vZGVscy5zaXplKCkgPiAxIHx8IHJvb3RzLnNpemUoKSA+IDEpIHsNCi0gICAg
ICAgICAgICBMT0cuZGVidWcoIk11bHRpcGxlIHJvb3RzL21vZGVscyIpOw0KKyAgICAgICAgICAg
IExPRy5sb2coTGV2ZWwuRklORSwgIk11bHRpcGxlIHJvb3RzL21vZGVscyIpOw0KICAgICAgICAg
fQ0KICAgICB9DQogDQpAQCAtMzk2LDEyICszOTYsMTMgQEANCiAgICAgICovDQogICAgIHByb3Rl
Y3RlZCB2b2lkIHJlbW92ZVByb2plY3RNZW1iZXJEaWFncmFtKEFyZ29EaWFncmFtIGQpIHsNCiAg
ICAgICAgIGlmIChhY3RpdmVEaWFncmFtID09IGQpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWco
IkRlbGV0aW5nIGFjdGl2ZSBkaWFncmFtICIgKyBkKTsNCisgICAgICAgICAgICBMT0cubG9nKExl
dmVsLkZJTkUsICJEZWxldGluZyBhY3RpdmUgZGlhZ3JhbSB7MH0iLCBkKTsNCiAgICAgICAgICAg
ICBBcmdvRGlhZ3JhbSBkZWZhdWx0RGlhZ3JhbSA9IG51bGw7DQogICAgICAgICAgICAgaWYgKGRp
YWdyYW1zLnNpemUoKSA9PSAxKSB7DQogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIGRlbGV0aW5n
IHRoZSBsYXN0IGRpYWdyYW0gc28gbGV0cyBjcmVhdGUgYSBuZXcgb25lDQogICAgICAgICAgICAg
ICAgIC8vIFRPRE86IE9uY2Ugd2UgZ28gTURJIHdlIHdvbid0IG5lZWQgdGhpcy4NCi0gICAgICAg
ICAgICAgICAgTE9HLmRlYnVnKCJEZWxldGluZyBsYXN0IGRpYWdyYW0gLSBjcmVhdGluZyBuZXcg
ZGVmYXVsdCBkaWFnIik7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRpbmcgbGFzdCBkaWFncmFtIC0gY3JlYXRpbmcg
bmV3IGRlZmF1bHQgZGlhZyIpOw0KICAgICAgICAgICAgICAgICBPYmplY3QgcHJvamVjdFJvb3Qg
PSBnZXRSb290KCk7DQogICAgICAgICAgICAgICAgIGlmICghTW9kZWwuZ2V0VW1sRmFjdG9yeSgp
LmlzUmVtb3ZlZChwcm9qZWN0Um9vdCkpIHsNCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRE
aWFncmFtID0gRGlhZ3JhbUZhY3RvcnkuZ2V0SW5zdGFuY2UoKQ0KQEAgLTQxMiwxNSArNDEzLDE3
IEBADQogICAgICAgICAgICAgICAgIC8vIE1ha2UgdGhlIHRvcG1vc3QgZGlhZ3JhbSAodGhhdCBp
cyBub3QgdGhlIG9uZSBiZWluZyBkZWxldGVkKQ0KICAgICAgICAgICAgICAgICAvLyBjdXJyZW50
Lg0KICAgICAgICAgICAgICAgICBkZWZhdWx0RGlhZ3JhbSA9IGRpYWdyYW1zLmdldCgwKTsNCi0g
ICAgICAgICAgICAgICAgTE9HLmRlYnVnKCJDYW5kaWRhdGUgZGVmYXVsdCBkaWFncmFtIGlzICIg
KyBkZWZhdWx0RGlhZ3JhbSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwN
CisgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuZGlkYXRlIGRlZmF1bHQgZGlhZ3JhbSBpcyB7
MH0iLCBkZWZhdWx0RGlhZ3JhbSk7DQogICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGlhZ3Jh
bSA9PSBkKSB7DQogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGlhZ3JhbSA9IGRpYWdyYW1z
LmdldCgxKTsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygiU3dpdGNoaW5nIGRlZmF1
bHQgZGlhZ3JhbSB0byAiICsgZGVmYXVsdERpYWdyYW0pOw0KKyAgICAgICAgICAgICAgICAgICAg
TE9HLmxvZyhMZXZlbC5GSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dpdGNo
aW5nIGRlZmF1bHQgZGlhZ3JhbSB0byB7MH0iLCBkZWZhdWx0RGlhZ3JhbSk7DQogICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAgYWN0aXZlRGlhZ3JhbSA9IGRl
ZmF1bHREaWFncmFtOw0KICAgICAgICAgICAgIFRhcmdldE1hbmFnZXIuZ2V0SW5zdGFuY2UoKS5z
ZXRUYXJnZXQoYWN0aXZlRGlhZ3JhbSk7DQotICAgICAgICAgICAgTE9HLmRlYnVnKCJOZXcgYWN0
aXZlIGRpYWdyYW0gaXMgIiArIGRlZmF1bHREaWFncmFtKTsNCisgICAgICAgICAgICBMT0cubG9n
KExldmVsLkZJTkUsICJOZXcgYWN0aXZlIGRpYWdyYW0gaXMgezB9IiwgZGVmYXVsdERpYWdyYW0p
Ow0KICAgICAgICAgfQ0KIA0KICAgICAgICAgcmVtb3ZlRGlhZ3JhbShkKTsNCkBAIC00MjgsNyAr
NDMxLDcgQEANCiAgICAgICAgIGQucmVtb3ZlKCk7DQogICAgICAgICBzZXRTYXZlRW5hYmxlZCh0
cnVlKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEVuYWJsZXMgdGhlIHNh
dmUgYWN0aW9uIGlmIHRoaXMgcHJvamVjdCBpcyB0aGUgY3VycmVudCBwcm9qZWN0DQogICAgICAq
IEBwYXJhbSBlbmFibGUgdHJ1ZSB0byBlbmFibGUNCkBAIC01MzYsNyArNTM5LDggQEANCiAgICAg
ICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICByZXN1bHQuYWRkQWxsKHByb2ZpbGUuZ2V0
UHJvZmlsZVBhY2thZ2VzKCkpOw0KICAgICAgICAgICAgIH0gY2F0Y2ggKG9yZy5hcmdvdW1sLnBy
b2ZpbGUuUHJvZmlsZUV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAgIExPRy5lcnJvcigi
RXhjZXB0aW9uIHdoZW4gZmV0Y2hpbmcgbW9kZWxzIGZyb20gcHJvZmlsZSAiDQorICAgICAgICAg
ICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICJF
eGNlcHRpb24gd2hlbiBmZXRjaGluZyBtb2RlbHMgZnJvbSBwcm9maWxlICINCiAgICAgICAgICAg
ICAgICAgICAgICAgICArIHByb2ZpbGUuZ2V0RGlzcGxheU5hbWUoKSwgZSk7DQogICAgICAgICAg
ICAgfQ0KICAgICAgICAgfQ0KQEAgLTU0OSw3ICs1NTMsNyBAQA0KICAgICAgKiBJZiB0aGVyZSBp
c24ndCBleGFjdGx5IG9uZSBtb2RlbCwgPGNvZGU+bnVsbDwvY29kZT4gaXMgcmV0dXJuZWQuDQog
ICAgICAqDQogICAgICAqIEByZXR1cm4gdGhlIG1vZGVsLg0KLSAgICAgKiBAZGVwcmVjYXRlZCBm
b3IgMC4yNS40IGJ5IHRmbW9ycmlzLiAgVXNlIA0KKyAgICAgKiBAZGVwcmVjYXRlZCBmb3IgMC4y
NS40IGJ5IHRmbW9ycmlzLiAgVXNlDQogICAgICAqIHtAbGluayAjZ2V0VXNlckRlZmluZWRNb2Rl
bExpc3QoKX0gb3Ige0BsaW5rICNnZXRNb2RlbHMoKX0uDQogICAgICAqIEBzZWUgb3JnLmFyZ291
bWwua2VybmVsLlByb2plY3QjZ2V0TW9kZWwoKQ0KICAgICAgKi8NCkBAIC02MTcsNyArNjIxLDcg
QEANCiAgICAgICAgIH0NCiAgICAgICAgIHJldHVybiBudWxsOw0KICAgICB9DQotICAgIA0KKw0K
IA0KICAgICBwdWJsaWMgT2JqZWN0IGdldERlZmF1bHRSZXR1cm5UeXBlKCkgew0KICAgICAgICAg
aWYgKHByb2ZpbGVDb25maWd1cmF0aW9uLmdldERlZmF1bHRUeXBlU3RyYXRlZ3koKSAhPSBudWxs
KSB7DQpAQCAtNjQ1LDcgKzY0OSw3IEBADQogICAgICAgICBjbHMgPSBmaW5kVHlwZUluRGVmYXVs
dE1vZGVsKHMpOw0KIA0KICAgICAgICAgaWYgKGNscyA9PSBudWxsICYmIGRlZmluZU5ldykgew0K
LSAgICAgICAgICAgIExPRy5kZWJ1ZygibmV3IFR5cGUgZGVmaW5lZCEiKTsNCisgICAgICAgICAg
ICBMT0cubG9nKExldmVsLkZJTkUsICJuZXcgVHlwZSBkZWZpbmVkISIpOw0KICAgICAgICAgICAg
IGNscyA9DQogICAgICAgICAgICAgICAgIE1vZGVsLmdldENvcmVGYWN0b3J5KCkuYnVpbGRDbGFz
cyhnZXRDdXJyZW50TmFtZXNwYWNlKCkpOw0KICAgICAgICAgICAgIE1vZGVsLmdldENvcmVIZWxw
ZXIoKS5zZXROYW1lKGNscywgcyk7DQpAQCAtODA2LDggKzgxMCw4IEBADQogDQogICAgIHB1Ymxp
YyBPYmplY3QgZ2V0SW5pdGlhbFRhcmdldCgpIHsNCiAgICAgICAgIGlmIChzYXZlZERpYWdyYW1O
YW1lICE9IG51bGwpIHsNCi0gICAgICAgICAgICAvKiBIZW5jZSwgYSBkaWFncmFtIG5hbWUgd2Fz
IHNhdmVkIGluIHRoZSBwcm9qZWN0IA0KLSAgICAgICAgICAgICAqIHRoYXQgd2UgYXJlIGxvYWRp
bmcuIFNvLCB3ZSB1c2UgdGhpcyBuYW1lIA0KKyAgICAgICAgICAgIC8qIEhlbmNlLCBhIGRpYWdy
YW0gbmFtZSB3YXMgc2F2ZWQgaW4gdGhlIHByb2plY3QNCisgICAgICAgICAgICAgKiB0aGF0IHdl
IGFyZSBsb2FkaW5nLiBTbywgd2UgdXNlIHRoaXMgbmFtZQ0KICAgICAgICAgICAgICAqIHRvIHJl
dHJpZXZlIGFueSBtYXRjaGluZyBkaWFncmFtLiAqLw0KICAgICAgICAgICAgIHJldHVybiBnZXRE
aWFncmFtKHNhdmVkRGlhZ3JhbU5hbWUpOw0KICAgICAgICAgfQ0KQEAgLTgxNiw3ICs4MjAsNyBA
QA0KICAgICAgICAgICAgIHJldHVybiBkaWFncmFtcy5nZXQoMCk7DQogICAgICAgICB9DQogICAg
ICAgICBpZiAobW9kZWxzLnNpemUoKSA+IDApIHsNCi0gICAgICAgICAgICAvKiBJZiB0aGVyZSB3
YXMgbm8gZGlhZ3JhbSBhdCBhbGwsIA0KKyAgICAgICAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBk
aWFncmFtIGF0IGFsbCwNCiAgICAgICAgICAgICAgKiB0aGVuIHVzZSB0aGUgKGZpcnN0KSBVTUwg
bW9kZWwuICovDQogICAgICAgICAgICAgcmV0dXJuIG1vZGVscy5pdGVyYXRvcigpLm5leHQoKTsN
CiAgICAgICAgIH0NCkBAIC04NDIsMTMgKzg0NiwxNCBAQA0KICAgICAgICAgICAgIGRpYWdyYW0u
cG9zdExvYWQoKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGxvbmcgZW5kVGltZSA9IFN5c3RlbS5j
dXJyZW50VGltZU1pbGxpcygpOw0KLSAgICAgICAgTE9HLmRlYnVnKCJEaWFncmFtIHBvc3QgbG9h
ZCB0b29rICIgKyAoZW5kVGltZSAtIHN0YXJ0VGltZSkgKyAiIG1zZWMuIik7DQotICAgICAgICAN
CisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwNCisgICAgICAgICAgICAgICAgIkRpYWdyYW0g
cG9zdCBsb2FkIHRvb2sgezB9IG1zZWMuIiwgKGVuZFRpbWUgLSBzdGFydFRpbWUpKTsNCisNCiAg
ICAgICAgIC8vIGlzc3VlIDE3MjU6IHRoZSByb290IGlzIG5vdCBzZXQsIHdoaWNoIGxlYWRzIHRv
IHByb2JsZW1zDQogICAgICAgICAvLyB3aXRoIGRpc3BsYXlpbmcgcHJvcCBwYW5lbHMNCiAgICAg
ICAgIE9iamVjdCBtb2RlbCA9IGdldE1vZGVsKCk7DQogDQotICAgICAgICBMT0cuaW5mbygiU2V0
dGluZyByb290IG1vZGVsIHRvICIgKyBtb2RlbCk7DQorICAgICAgICBMT0cubG9nKExldmVsLklO
Rk8sICJTZXR0aW5nIHJvb3QgbW9kZWwgdG8gezB9IiwgbW9kZWwpOw0KIA0KICAgICAgICAgc2V0
Um9vdChtb2RlbCk7DQogDQpAQCAtOTIyLDE1ICs5MjcsMTcgQEANCiAgICAgICAgICAgICAoKEZp
Zykgb2JqKS5kZWxldGVGcm9tTW9kZWwoKTsNCiAgICAgICAgICAgICAvLyBJZiB3ZSBkZWxldGUg
YSBGaWdFZGdlDQogICAgICAgICAgICAgLy8gb3IgRmlnTm9kZSB3ZSBhY3R1YWxseSBjYWxsIHRo
aXMgbWV0aG9kIHdpdGggdGhlIG93bmVyIG5vdA0KLSAgICAgICAgICAgIC8vIHRoZSBGaWcgaXRz
ZWxmLiBIb3dldmVyLCB0aGlzIG1ldGhvZCANCisgICAgICAgICAgICAvLyB0aGUgRmlnIGl0c2Vs
Zi4gSG93ZXZlciwgdGhpcyBtZXRob2QNCiAgICAgICAgICAgICAvLyBpcyBjYWxsZWQgYnkgQWN0
aW9uRGVsZXRlTW9kZWxFbGVtZW50cw0KICAgICAgICAgICAgIC8vIGZvciBwcmltaXRpdmUgRmln
cyAod2l0aG91dCBvd25lcikuDQotICAgICAgICAgICAgTE9HLmluZm8oIlJlcXVlc3QgdG8gZGVs
ZXRlIGEgRmlnICIgKyBvYmouZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOw0KKyAgICAgICAgICAgIExP
Ry5sb2coTGV2ZWwuSU5GTywNCisgICAgICAgICAgICAgICAgICAgICJSZXF1ZXN0IHRvIGRlbGV0
ZSBhIEZpZyB7MH0iLCBvYmouZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOw0KICAgICAgICAgfSBlbHNl
IGlmIChvYmogaW5zdGFuY2VvZiBDb21tZW50RWRnZSkgew0KICAgICAgICAgICAgIC8vIFRPRE86
IFdoeSBpcyB0aGlzIGEgc3BlY2lhbCBjYXNlPyAtIHRmbQ0KICAgICAgICAgICAgIENvbW1lbnRF
ZGdlIGNlID0gKENvbW1lbnRFZGdlKSBvYmo7DQotICAgICAgICAgICAgTE9HLmluZm8oIlJlbW92
aW5nIHRoZSBsaW5rIGZyb20gIiArIGNlLmdldEFubm90YXRlZEVsZW1lbnQoKQ0KLSAgICAgICAg
ICAgICAgICAgICAgKyAiIHRvICIgKyBjZS5nZXRDb21tZW50KCkpOw0KKw0KKyAgICAgICAgICAg
IExPRy5sb2coTGV2ZWwuSU5GTywgIlJlbW92aW5nIHRoZSBsaW5rIGZyb20gezB9IHRvIHsxfSIs
DQorICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117Y2UuZ2V0QW5ub3RhdGVkRWxlbWVu
dCgpLCBjZS5nZXRDb21tZW50KCl9KTsNCiAgICAgICAgICAgICBjZS5kZWxldGUoKTsNCiAgICAg
ICAgIH0NCiAgICAgfQ0KQEAgLTk0OCw5ICs5NTUsOSBAQA0KICAgICAgICAgaWYgKGRlZmF1bHRN
b2RlbFR5cGVDYWNoZS5jb250YWluc0tleShuYW1lKSkgew0KICAgICAgICAgICAgIHJldHVybiBk
ZWZhdWx0TW9kZWxUeXBlQ2FjaGUuZ2V0KG5hbWUpOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQor
DQogICAgICAgICBPYmplY3QgcmVzdWx0ID0gcHJvZmlsZUNvbmZpZ3VyYXRpb24uZmluZFR5cGUo
bmFtZSk7DQotICAgICAgICANCisNCiAgICAgICAgIGRlZmF1bHRNb2RlbFR5cGVDYWNoZS5wdXQo
bmFtZSwgcmVzdWx0KTsNCiAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgIH0NCkBAIC0xMDAy
LDcgKzEwMDksOCBAQA0KICAgICAgICAgYm9vbGVhbiBtb2RlbEZvdW5kID0gZmFsc2U7DQogICAg
ICAgICBmb3IgKE9iamVjdCBlbGVtZW50IDogZWxlbWVudHMpIHsNCiAgICAgICAgICAgICBpZiAo
IU1vZGVsLmdldEZhY2FkZSgpLmlzQVBhY2thZ2UoZWxlbWVudCkpIHsNCi0gICAgICAgICAgICAg
ICAgTE9HLndhcm4oIlRvcCBsZXZlbCBlbGVtZW50IG90aGVyIHRoYW4gcGFja2FnZSBmb3VuZCAt
ICIgDQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywNCisgICAgICAgICAg
ICAgICAgICAgICAgICAiVG9wIGxldmVsIGVsZW1lbnQgb3RoZXIgdGhhbiBwYWNrYWdlIGZvdW5k
IC0gIg0KICAgICAgICAgICAgICAgICAgICAgICAgICsgTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0TmFt
ZShlbGVtZW50KSk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRG
YWNhZGUoKS5pc0FNb2RlbChlbGVtZW50KQ0KQEAgLTEwNTAsNyArMTA1OCw3IEBADQogICAgICAg
ICByZXR1cm4gdXVpZFJlZnM7DQogICAgIH0NCiANCi0gICAgDQorDQogICAgIHB1YmxpYyB2b2lk
IHNldFNlYXJjaFBhdGgoZmluYWwgTGlzdDxTdHJpbmc+IHRoZVNlYXJjaHBhdGgpIHsNCiAgICAg
ICAgIHNlYXJjaHBhdGguY2xlYXIoKTsNCiAgICAgICAgIHNlYXJjaHBhdGguYWRkQWxsKHRoZVNl
YXJjaHBhdGgpOw0KQEAgLTEwNzMsNyArMTA4MSw3IEBADQogICAgIHB1YmxpYyB2b2lkIHNldEFj
dGl2ZURpYWdyYW0oZmluYWwgQXJnb0RpYWdyYW0gdGhlRGlhZ3JhbSkgew0KICAgICAgICAgYWN0
aXZlRGlhZ3JhbSA9IHRoZURpYWdyYW07DQogICAgIH0NCi0gICAgDQorDQogICAgIHB1YmxpYyB2
b2lkIHNldFNhdmVkRGlhZ3JhbU5hbWUoU3RyaW5nIGRpYWdyYW1OYW1lKSB7DQogICAgICAgICBz
YXZlZERpYWdyYW1OYW1lID0gZGlhZ3JhbU5hbWU7DQogICAgIH0NCkBAIC0xMDg4LDcgKzEwOTYs
NyBAQA0KICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgIE1vZGVsLmdldFVtbEZh
Y3RvcnkoKS5kZWxldGVFeHRlbnQocm9vdHMuaXRlcmF0b3IoKS5uZXh0KCkpOw0KICAgICAgICAg
ICAgIH0gY2F0Y2ggKEludmFsaWRFbGVtZW50RXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICAg
ICAgTE9HLndhcm4oIkV4dGVudCBkZWxldGVkIGEgc2Vjb25kIHRpbWUiKTsNCisgICAgICAgICAg
ICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAiRXh0ZW50IGRlbGV0ZWQgYSBzZWNvbmQgdGlt
ZSIpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICByb290cy5jbGVhcigpOw0KICAgICAg
ICAgfQ0KQEAgLTExNDksNyArMTE1Nyw3IEBADQogICAgIHB1YmxpYyBVbmRvTWFuYWdlciBnZXRV
bmRvTWFuYWdlcigpIHsNCiAgICAgICAgIHJldHVybiB1bmRvTWFuYWdlcjsNCiAgICAgfQ0KLSAg
ICAgICAgDQorDQogICAgIHB1YmxpYyBQcm9maWxlQ29uZmlndXJhdGlvbiBnZXRQcm9maWxlQ29u
ZmlndXJhdGlvbigpIHsNCiAgICAgICAgIHJldHVybiBwcm9maWxlQ29uZmlndXJhdGlvbjsNCiAg
ICAgfQ0KQEAgLTExNjYsNyArMTE3NCw3IEBADQogICAgICAgICAgICAgLy8gYW5kIHRoZXJlJ3Mg
bm8gb3RoZXIgd2F5IHRvIGFkZCBhbm90aGVyIG9uZQ0KICAgICAgICAgICAgIG1lbWJlcnMuYWRk
KHBjKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgUHJvZmlsZUZhY2FkZS5h
cHBseUNvbmZpZ3VyYXRpb24ocGMpOw0KICAgICB9DQogDQpAQCAtMTE3Niw3ICsxMTg0LDcgQEAN
CiAvLyAgICAgICAgcmV0dXJuIGRpcnR5Ow0KICAgICAgICAgcmV0dXJuIFByb2plY3RNYW5hZ2Vy
LmdldE1hbmFnZXIoKS5pc1NhdmVBY3Rpb25FbmFibGVkKCk7DQogICAgIH0NCi0gICAgDQorDQog
ICAgIHB1YmxpYyB2b2lkIHNldERpcnR5KGJvb2xlYW4gaXNEaXJ0eSkgew0KICAgICAgICAgLy8g
VE9ETzogUGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gdW50aWwgc3VwcG9ydCBmb3IgdHJhY2tp
bmcgb24NCiAgICAgICAgIC8vIGEgcGVyLXByb2plY3QgYmFzaXMgaXMgaW1wbGVtZW50ZWQNCg0K
TW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwva2VybmVsL1By
b2plY3RNYW5hZ2VyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2Uv
YnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9rZXJu
ZWwvUHJvamVjdE1hbmFnZXIuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZy
Mj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9rZXJuZWwvUHJvamVjdE1hbmFnZXIuamF2YQkob3JpZ2luYWwpDQor
KysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9rZXJuZWwvUHJvamVjdE1h
bmFnZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC00NSwxMSArNDUsMTIgQEAN
CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQogaW1wb3J0IGphdmEudXRpbC5MaW5rZWRM
aXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcu
TGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2
YXguc3dpbmcuQWN0aW9uOw0KIGltcG9ydCBqYXZheC5zd2luZy5ldmVudC5FdmVudExpc3RlbmVy
TGlzdDsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5h
cmdvdW1sLmNvZ25pdGl2ZS5EZXNpZ25lcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuaTE4bi5UcmFu
c2xhdG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5Nb2RlbDsNCkBAIC03MSw4ICs3Miw4
IEBADQogICogb2YgcHJvamVjdHMgbGlrZSBvbmUgd291bGQgZXhwZWN0LiBUaGlzIGNvdWxkIGJl
IGEgbmljZSBleHRlbnNpb24NCiAgKiBmb3IgdGhlIGZ1dHVyZSBvZiBBcmdvVU1MLiAgQXMgc29v
biBhcyB0aGUgY3VycmVudCBwcm9qZWN0IGlzDQogICogY2hhbmdlZCwgYSBwcm9wZXJ0eSBjaGFu
Z2VkIGV2ZW50IGlzIGZpcmVkLiA8cD4NCi0gKiANCi0gKiBUT0RPOiBNb3ZlIGV2ZXJ5dGhpbmcg
cmVsYXRlZCB0byB0aGUgY3JlYXRpb24gb2YgYSBwcm9qZWN0IA0KKyAqDQorICogVE9ETzogTW92
ZSBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGNyZWF0aW9uIG9mIGEgcHJvamVjdA0KICAqIGlu
dG8gdGhlIFByb2plY3RGYWN0b3J5Lg0KICAqDQogICogQHNpbmNlIE5vdiAxNywgMjAwMg0KQEAg
LTg1LDEwICs4NiwxMCBAQA0KICAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdGhhdCBk
ZWZpbmVzIHRoZSBjdXJyZW50IHByb2plY3QuICBUaGUgdmFsdWVzDQogICAgICAqIHBhc3NlZCBh
cmUgUHJvamVjdHMsIG5vdCBTdHJpbmdzLiAgVGhlICduYW1lJyBoZXJlIHJlZmVycyB0byB0aGUg
bmFtZQ0KICAgICAgKiBvZiB0aGlzIHByb3BlcnR5LCBub3QgdGhlIG5hbWUgb2YgdGhlIHByb2pl
Y3QuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAZGVwcmVjYXRlZCBmb3IgMC4yNy4yIGJ5
IHRmbW9ycmlzLiBMaXN0ZW5lcnMgb2YgdGhpcyBldmVudCB3aGljaCBleHBlY3QNCiAgICAgICog
ICAgICAgICAgICAgaXQgdG8gaW5kaWNhdGUgYSBuZXcgcHJvamVjdCBiZWluZyBvcGVuZWQgc2hv
dWxkIGxpc3RlbiBmb3INCi0gICAgICogICAgICAgICAgICAge0BsaW5rICNPUEVOX1BST0pFQ1RT
X1BST1BFUlRZfS4gTGlzdGVuZXJzIHdobyB0aGluayANCisgICAgICogICAgICAgICAgICAge0Bs
aW5rICNPUEVOX1BST0pFQ1RTX1BST1BFUlRZfS4gTGlzdGVuZXJzIHdobyB0aGluaw0KICAgICAg
KiAgICAgICAgICAgICB0aGV5IG5lZWQgdG8ga25vdyBhIHNpbmdsZSBnbG9iYWwgY3VycmVudCBw
cm9qZWN0IG5lZWQNCiAgICAgICogICAgICAgICAgICAgdG8gYmUgY2hhbmdlZCB0byBkZWFsIHdp
dGggdGhpbmdzIG9uIGEgcGVyLXByb2plY3QgYmFzaXMuDQogICAgICAqLw0KQEAgLTEwMSw3ICsx
MDIsOCBAQA0KICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BFTl9Q
Uk9KRUNUU19QUk9QRVJUWSA9ICJvcGVuUHJvamVjdHMiOw0KIA0KLSAgICBwcml2YXRlIHN0YXRp
YyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihQcm9qZWN0TWFuYWdlci5jbGFz
cyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9n
Z2VyLmdldExvZ2dlcihQcm9qZWN0TWFuYWdlci5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAv
KioNCiAgICAgICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLg0KQEAgLTEx
Miw3ICsxMTQsNyBAQA0KICAgICAgKiBUaGUgcHJvamVjdCB0aGF0IGlzIHZpc2libGUgaW4gdGhl
IHByb2plY3Ricm93c2VyLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBzdGF0aWMgUHJvamVjdCBj
dXJyZW50UHJvamVjdDsNCi0gICAgDQorDQogICAgIHByaXZhdGUgc3RhdGljIExpbmtlZExpc3Q8
UHJvamVjdD4gb3BlblByb2plY3RzID0gbmV3IExpbmtlZExpc3Q8UHJvamVjdD4oKTsNCiANCiAg
ICAgLyoqDQpAQCAtMTIyLDcgKzEyNCw3IEBADQogICAgIHByaXZhdGUgYm9vbGVhbiBjcmVhdGlu
Z0N1cnJlbnRQcm9qZWN0Ow0KIA0KICAgICBwcml2YXRlIEFjdGlvbiBzYXZlQWN0aW9uOw0KLSAg
ICANCisNCiAgICAgLyoqDQogICAgICAqIFRoZSBsaXN0ZW5lciBsaXN0Lg0KICAgICAgKi8NCkBA
IC0yMTEsNyArMjEzLDcgQEANCiAgICAgICogPHA+DQogICAgICAqIElmIHRoZSBhcmd1bWVudCBp
cyBudWxsLCB0aGVuIHRoZSBjdXJyZW50IHByb2plY3Qgd2lsbCBiZSBmb3Jnb3R0ZW4NCiAgICAg
ICogYWJvdXQuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gbmV3UHJvamVjdCBU
aGUgbmV3IHByb2plY3QuDQogICAgICAqIEBkZXByZWNhdGVkIGZvciAwLjI3LjIgYnkgdGZtb3Jy
aXMuIFRoZXJlIGlzIG5vIGxvbmdlciB0aGUgY29uY2VwdCBvZiBhDQogICAgICAqICAgICAgICAg
ICAgIHNpbmdsZSBnbG9iYWwgImN1cnJlbnQiIHByb2plY3QuIEluIHRoZSBmdXR1cmUsIG11bHRp
cGxlDQpAQCAtMjUzLDcgKzI1NSw3IEBADQogICAgICAqIHdoaWNoIHRoZXkgY2FuIGRpc2NvdmVy
IGJ5IHRyYXZlcnNpbmcgdGhlaXIgY29udGFpbmluZyBlbGVtZW50cyAoZS5nLg0KICAgICAgKiBG
aWctPkRpYWdyYW0tPkRpYWdyYW1TZXR0aW5ncykuDQogICAgICAqIDxwPg0KLSAgICAgKiANCisg
ICAgICoNCiAgICAgICogQHJldHVybiBQcm9qZWN0IHRoZSBjdXJyZW50IHByb2plY3Qgb3IgbnVs
bCBpZiBub25lDQogICAgICAqIEBkZXByZWNhdGVkIGZvciAwLjI3LjIgYnkgdGZtb3JyaXMuIFRo
ZXJlIGlzIG5vIGxvbmdlciB0aGUgY29uY2VwdCBvZiBhDQogICAgICAqICAgICAgICAgICAgIHNp
bmdsZSBnbG9iYWwgImN1cnJlbnQiIHByb2plY3QuIEluIHRoZSBmdXR1cmUsIG11bHRpcGxlDQpA
QCAtMjY5LDcgKzI3MSw3IEBADQogICAgIHB1YmxpYyBQcm9qZWN0IGdldEN1cnJlbnRQcm9qZWN0
KCkgew0KICAgICAgICAgcmV0dXJuIGN1cnJlbnRQcm9qZWN0Ow0KICAgICB9DQotICAgIA0KKw0K
ICAgICAvKioNCiAgICAgICogQHJldHVybiBhIGxpc3Qgb2YgdGhlIGN1cnJlbnRseSBvcGVuIFBy
b2plY3RzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUNCiAgICAgICogb3BlbmVkDQpAQCAtMjc5LDkg
KzI4MSw5IEBADQogICAgICAgICBpZiAoY3VycmVudFByb2plY3QgIT0gbnVsbCkgew0KICAgICAg
ICAgICAgIHJlc3VsdC5hZGQoY3VycmVudFByb2plY3QpOw0KICAgICAgICAgfQ0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsgICAgICAgIA0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgfQ0K
LSAgICANCisNCiAgICAgLyoqDQogICAgICAqIE1ha2VzIGFuIGVtcHR5IHByb2plY3QuDQogICAg
ICAqIEByZXR1cm4gUHJvamVjdCB0aGUgZW1wdHkgcHJvamVjdA0KQEAgLTI5NiwyMSArMjk4LDIx
IEBADQogICAgICAqIEhpc3RvcmljYWxseSBuZXcgcHJvamVjdHMgaGF2ZSBiZWVuIGNyZWF0ZWQg
d2l0aCB0d28gZGVmYXVsdCBkaWFncmFtcw0KICAgICAgKiAoQ2xhc3MgYW5kIFVzZSBDYXNlKS4g
Tk9URTogQXJnb1VNTCBjdXJyZW50bHkgcmVxdWlyZXMgYXQgbGVhc3Qgb25lDQogICAgICAqIGRp
YWdyYW0gZm9yIHByb3BlciBvcGVyYXRpb24uDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBA
cGFyYW0gYWRkRGVmYXVsdERpYWdyYW1zDQogICAgICAqICAgICAgICAgICAgaWYgdHJ1ZSB0aGUg
cHJvamVjdCB3aWxsIGJlIGJlIGNyZWF0ZWQgd2l0aCB0aGUgdHdvIHN0YW5kYXJkDQogICAgICAq
ICAgICAgICAgICAgZGVmYXVsdCBkaWFncmFtcyAoQ2xhc3MgYW5kIFVzZSBDYXNlKQ0KICAgICAg
KiBAcmV0dXJuIFByb2plY3QgdGhlIG5ld2x5IGNyZWF0ZWQgcHJvamVjdA0KICAgICAgKi8NCi0g
ICAgcHVibGljIFByb2plY3QgbWFrZUVtcHR5UHJvamVjdChmaW5hbCBib29sZWFuIGFkZERlZmF1
bHREaWFncmFtcykgeyAgICANCisgICAgcHVibGljIFByb2plY3QgbWFrZUVtcHR5UHJvamVjdChm
aW5hbCBib29sZWFuIGFkZERlZmF1bHREaWFncmFtcykgew0KICAgICAgICAgZmluYWwgQ29tbWFu
ZCBjbWQgPSBuZXcgTm9uVW5kb2FibGVDb21tYW5kKCkgew0KIA0KICAgICAgICAgICAgIEBPdmVy
cmlkZQ0KICAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgZXhlY3V0ZSgpIHsNCiAgICAgICAgICAg
ICAgICAgTW9kZWwuZ2V0UHVtcCgpLnN0b3BQdW1waW5nRXZlbnRzKCk7DQotICAgICAgICAgICAg
ICAgIA0KKw0KICAgICAgICAgICAgICAgICBjcmVhdGluZ0N1cnJlbnRQcm9qZWN0ID0gdHJ1ZTsN
Ci0gICAgICAgICAgICAgICAgTE9HLmluZm8oIm1ha2luZyBlbXB0eSBwcm9qZWN0Iik7DQorICAg
ICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIm1ha2luZyBlbXB0eSBwcm9qZWN0Iik7
DQogICAgICAgICAgICAgICAgIFByb2plY3QgbmV3UHJvamVjdCA9IG5ldyBQcm9qZWN0SW1wbCgp
Ow0KICAgICAgICAgICAgICAgICBjcmVhdGVEZWZhdWx0TW9kZWwobmV3UHJvamVjdCk7DQogICAg
ICAgICAgICAgICAgIGlmIChhZGREZWZhdWx0RGlhZ3JhbXMpIHsNCkBAIC0zNDIsNyArMzQ0LDcg
QEANCiAgICAgICogSGlzdG9yaWNhbGx5IG5ldyBwcm9qZWN0cyBoYXZlIGJlZW4gY3JlYXRlZCB3
aXRoIHR3byBkZWZhdWx0IGRpYWdyYW1zDQogICAgICAqIChDbGFzcyBhbmQgVXNlIENhc2UpLiBO
T1RFOiBBcmdvVU1MIGN1cnJlbnRseSByZXF1aXJlcyBhdCBsZWFzdCBvbmUNCiAgICAgICogZGlh
Z3JhbSBmb3IgcHJvcGVyIG9wZXJhdGlvbi4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBw
YXJhbSBhZGREZWZhdWx0RGlhZ3JhbXMNCiAgICAgICogICAgICAgICAgICBpZiB0cnVlIHRoZSBw
cm9qZWN0IHdpbGwgYmUgYmUgY3JlYXRlZCB3aXRoIHRoZSBzdGFuZGFyZA0KICAgICAgKiAgICAg
ICAgICAgIGRlZmF1bHQgZGlhZ3JhbSAoQ2xhc3MpDQpAQCAtMzU0LDkgKzM1Niw5IEBADQogICAg
ICAgICAgICAgQE92ZXJyaWRlDQogICAgICAgICAgICAgcHVibGljIE9iamVjdCBleGVjdXRlKCkg
ew0KICAgICAgICAgICAgICAgICBNb2RlbC5nZXRQdW1wKCkuc3RvcFB1bXBpbmdFdmVudHMoKTsN
Ci0gICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAgIGNyZWF0aW5nQ3VycmVudFBy
b2plY3QgPSB0cnVlOw0KLSAgICAgICAgICAgICAgICBMT0cuaW5mbygibWFraW5nIGVtcHR5IHBy
b2ZpbGUgcHJvamVjdCIpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJt
YWtpbmcgZW1wdHkgcHJvZmlsZSBwcm9qZWN0Iik7DQogICAgICAgICAgICAgICAgIFByb2plY3Qg
bmV3UHJvamVjdCA9IG5ldyBQcm9qZWN0SW1wbChQcm9qZWN0LlBST0ZJTEVfUFJPSkVDVCk7DQog
ICAgICAgICAgICAgICAgIGNyZWF0ZURlZmF1bHRQcm9maWxlKG5ld1Byb2plY3QpOw0KICAgICAg
ICAgICAgICAgICBpZiAoYWRkRGVmYXVsdERpYWdyYW1zKSB7DQpAQCAtMzc5LDcgKzM4MSw3IEBA
DQogICAgIC8qKg0KICAgICAgKiBBcHBseSBhbGwgcHJvZmlsZXMgZnJvbSB0aGUgcHJvZmlsZSBj
b25maWd1cmF0aW9uIHRvIGEgbW9kZWwgKGNhbiBiZSBhDQogICAgICAqIHByb2ZpbGUgdG9vKS4N
Ci0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0IHdp
dGggdGhlIHByb2ZpbGUgY29uZmlndXJhdGlvbi4NCiAgICAgICogQHBhcmFtIG1vZGVsIFRoZSBt
b2RlbCB0byBhcHBseSB0aGUgcHJvZmlsZXMgdG8uDQogICAgICAqLw0KQEAgLTM5NCw4ICszOTYs
OSBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwbHlQcm9maWxlKG1vZGVsLCBw
cm9maWxlKTsNCiAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgfSBjYXRj
aCAoUHJvZmlsZUV4Y2VwdGlvbiBwZSkgew0KLSAgICAgICAgICAgICAgICAgICAgTE9HLndhcm4o
IkZhaWxlZCB0byBnZXQgcHJvZmlsZSBwYWNrYWdlcyBmcm9tIHByb2ZpbGUgIg0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICArIHAuZ2V0RGlzcGxheU5hbWUoKSk7DQorICAgICAgICAgICAg
ICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQgdG8gZ2V0IHByb2ZpbGUgcGFja2FnZXMgZnJvbSBwcm9maWxlIHswfSIsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHApOw0KICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgfQ0KICAgICAgICAgfQ0KQEAgLTQwNCwxNyArNDA3LDE3IEBADQogICAgIC8qKg0K
ICAgICAgKiBDcmVhdGUgdGhlIGRlZmF1bHQgZGlhZ3JhbXMgZm9yIHRoZSBwcm9qZWN0LiBDdXJy
ZW50bHkgYSBDbGFzcyBEaWFncmFtDQogICAgICAqIGFuZCBhIFVzZUNhc2UgZGlhZ3JhbS4NCi0g
ICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0IHRvIGNy
ZWF0ZSB0aGUgZGlhZ3JhbXMgaW4uDQogICAgICAqLw0KICAgICBwcml2YXRlIHZvaWQgY3JlYXRl
RGVmYXVsdERpYWdyYW1zKFByb2plY3QgcHJvamVjdCkgew0KLSAgICAgICAgTE9HLmRlYnVnKCJD
cmVhdGluZyBkZWZhdWx0IGRpYWdyYW1zIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUs
ICJDcmVhdGluZyBkZWZhdWx0IGRpYWdyYW1zIik7DQogICAgICAgICBPYmplY3QgbW9kZWwgPSBw
cm9qZWN0LmdldFJvb3RzKCkuaXRlcmF0b3IoKS5uZXh0KCk7DQogICAgICAgICBEaWFncmFtRmFj
dG9yeSBkZiA9IERpYWdyYW1GYWN0b3J5LmdldEluc3RhbmNlKCk7DQogICAgICAgICBBcmdvRGlh
Z3JhbSBkID0gY3JlYXRlQ2xhc3NEaWFncmFtKHByb2plY3QpOw0KLSAgICAgICAgTE9HLmRlYnVn
KCJDcmVhdGluZyB1c2UgY2FzZSBkaWFncmFtIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJ
TkUsICJDcmVhdGluZyB1c2UgY2FzZSBkaWFncmFtIik7DQogICAgICAgICBwcm9qZWN0LmFkZE1l
bWJlcihkZi5jcmVhdGUoDQotICAgICAgICAgICAgICAgIERpYWdyYW1GYWN0b3J5LkRpYWdyYW1U
eXBlLlVzZUNhc2UsIG1vZGVsLCANCisgICAgICAgICAgICAgICAgRGlhZ3JhbUZhY3RvcnkuRGlh
Z3JhbVR5cGUuVXNlQ2FzZSwgbW9kZWwsDQogICAgICAgICAgICAgICAgIHByb2plY3QuZ2V0UHJv
amVjdFNldHRpbmdzKCkuZ2V0RGVmYXVsdERpYWdyYW1TZXR0aW5ncygpKSk7DQogICAgICAgICBw
cm9qZWN0LmFkZE1lbWJlcihuZXcgUHJvamVjdE1lbWJlclRvZG9MaXN0KCIiLA0KICAgICAgICAg
ICAgICAgICBwcm9qZWN0KSk7DQpAQCAtNDI0LDE2ICs0MjcsMTYgQEANCiANCiAgICAgLyoqDQog
ICAgICAqIENyZWF0ZSBhIGNsYXNzIGRpYWdyYW1zIGZvciB0aGUgcHJvamVjdC4NCi0gICAgICog
DQorICAgICAqDQogICAgICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0IHRvIGNyZWF0ZSB0
aGUgZGlhZ3JhbSBpbi4NCiAgICAgICogQHJldHVybiB0aGUgY3JlYXRlZCBjbGFzcyBkaWFncmFt
DQogICAgICAqLw0KICAgICBwcml2YXRlIEFyZ29EaWFncmFtIGNyZWF0ZUNsYXNzRGlhZ3JhbShQ
cm9qZWN0IHByb2plY3QpIHsNCi0gICAgICAgIExPRy5kZWJ1ZygiQ3JlYXRpbmcgY2xhc3MgZGlh
Z3JhbSIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiQ3JlYXRpbmcgY2xhc3MgZGlh
Z3JhbSIpOw0KICAgICAgICAgT2JqZWN0IG1vZGVsID0gcHJvamVjdC5nZXRSb290cygpLml0ZXJh
dG9yKCkubmV4dCgpOw0KICAgICAgICAgRGlhZ3JhbUZhY3RvcnkgZGYgPSBEaWFncmFtRmFjdG9y
eS5nZXRJbnN0YW5jZSgpOw0KICAgICAgICAgQXJnb0RpYWdyYW0gZCA9IGRmLmNyZWF0ZShEaWFn
cmFtRmFjdG9yeS5EaWFncmFtVHlwZS5DbGFzcywNCi0gICAgICAgICAgICAgICAgbW9kZWwsIA0K
KyAgICAgICAgICAgICAgICBtb2RlbCwNCiAgICAgICAgICAgICAgICAgcHJvamVjdC5nZXRQcm9q
ZWN0U2V0dGluZ3MoKS5nZXREZWZhdWx0RGlhZ3JhbVNldHRpbmdzKCkpOw0KICAgICAgICAgcHJv
amVjdC5hZGRNZW1iZXIoZCk7DQogICAgICAgICByZXR1cm4gZDsNCkBAIC00NDEsMTEgKzQ0NCwx
MSBAQA0KIA0KICAgICAvKioNCiAgICAgICogQ3JlYXRlIGEgdG9kbyBsaXN0IGZvciB0aGUgcHJv
amVjdC4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9q
ZWN0IHRvIGNyZWF0ZSB0aGUgdG9kbyBsaXN0IGluLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSB2
b2lkIGNyZWF0ZVRvZG9MaXN0KFByb2plY3QgcHJvamVjdCkgew0KLSAgICAgICAgTE9HLmRlYnVn
KCJDcmVhdGluZyB0b2RvIGxpc3QiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIkNy
ZWF0aW5nIHRvZG8gbGlzdCIpOw0KICAgICAgICAgcHJvamVjdC5hZGRNZW1iZXIobmV3IFByb2pl
Y3RNZW1iZXJUb2RvTGlzdCgiIiwNCiAgICAgICAgICAgICAgICAgcHJvamVjdCkpOw0KICAgICB9
DQpAQCAtNDUzLDcgKzQ1Niw3IEBADQogICAgIC8qKg0KICAgICAgKiBDcmVhdGUgdGhlIHRvcCBs
ZXZlbCBtb2RlbCBmb3IgdGhlIHByb2plY3QgYW5kIHNldCBpdCBhcyBhIHJvb3QgYW5kIHRoZQ0K
ICAgICAgKiBjdXJyZW50IG5hbWVzcGFjZS4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBw
YXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0IHRvIGNyZWF0ZSB0aGUgbW9kZWwgaW4uDQogICAgICAq
Lw0KICAgICBwcml2YXRlIHZvaWQgY3JlYXRlRGVmYXVsdE1vZGVsKFByb2plY3QgcHJvamVjdCkg
ew0KQEAgLTQ3Miw3ICs0NzUsNyBAQA0KICAgICAvKioNCiAgICAgICogQ3JlYXRlIHRoZSB0b3Ag
bGV2ZWwgcHJvZmlsZSBmb3IgdGhlIHByb2plY3QgYW5kIHNldCBpdCBhcyBhIHJvb3QgYW5kIHRo
ZQ0KICAgICAgKiBjdXJyZW50IG5hbWVzcGFjZS4NCi0gICAgICogDQorICAgICAqDQogICAgICAq
IEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0IHRvIGNyZWF0ZSB0aGUgbW9kZWwgaW4uDQogICAg
ICAqLw0KICAgICBwcml2YXRlIHZvaWQgY3JlYXRlRGVmYXVsdFByb2ZpbGUoUHJvamVjdCBwcm9q
ZWN0KSB7DQpAQCAtNDg3LDEwICs0OTAsMTAgQEANCiAgICAgICAgIC8vIGZpbmFsbHksIGFwcGx5
IHByb2ZpbGUgY29uZmlndXJhdGlvbiB0byB0aGUgbW9kZWwNCiAgICAgICAgIGFwcGx5UHJvZmls
ZUNvbmZpZ3VyYXRpb24ocHJvamVjdCwgbW9kZWwpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAv
KioNCiAgICAgICogU2V0IHRoZSBzYXZlIGFjdGlvbi4NCi0gICAgICogDQorICAgICAqDQogICAg
ICAqIEBwYXJhbSBzYXZlIHRoZSBhY3Rpb24gdG8gYmUgdXNlZA0KICAgICAgKi8NCiAgICAgcHVi
bGljIHZvaWQgc2V0U2F2ZUFjdGlvbihBY3Rpb24gc2F2ZSkgew0KQEAgLTUwMCw3ICs1MDMsNyBA
QA0KICAgICAgICAgLy8gc2F2ZSBidXR0b24vbWVudSBpdGVtIGV0Yy4NCiAgICAgICAgIERlc2ln
bmVyLnNldFNhdmVBY3Rpb24oc2F2ZSk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAg
ICAgKiBAcmV0dXJuIHRydWUgaXMgdGhlIHNhdmUgYWN0aW9uIGlzIGN1cnJlbnRseSBlbmFibGVk
DQogICAgICAqIDxwPg0KQEAgLTUxNSw3ICs1MTgsNyBAQA0KICAgICAgKiBjdXJyZW50IHByb2pl
Y3QncyBzYXZlIHN0YXRlIGhhcyBjaGFuZ2VkLiBUaGVyZSBhcmUgMiByZWNlaXZlcnM6DQogICAg
ICAqIHRoZSBTYXZlUHJvamVjdCB0b29sIGljb24gYW5kIHRoZSB0aXRsZSBiYXIgKGZvciBzaG93
aW5nIGEgKikuDQogICAgICAqIDxwPg0KLSAgICAgKiBAZGVwcmVjYXRlZCBmb3IgMC4yNy4yIGJ5
IHRmbW9ycmlzLiAgVXNlIA0KKyAgICAgKiBAZGVwcmVjYXRlZCBmb3IgMC4yNy4yIGJ5IHRmbW9y
cmlzLiAgVXNlDQogICAgICAqIHtAbGluayBQcm9qZWN0I3NldERpcnR5KGJvb2xlYW4pfS4NCiAg
ICAgICovDQogICAgIHB1YmxpYyB2b2lkIHNldFNhdmVFbmFibGVkKGJvb2xlYW4gbmV3VmFsdWUp
IHsNCkBAIC01MjcsNyArNTMwLDcgQEANCiAgICAgcHJpdmF0ZSB2b2lkIGFkZFByb2plY3QoUHJv
amVjdCBuZXdQcm9qZWN0KSB7DQogICAgICAgICBvcGVuUHJvamVjdHMuYWRkTGFzdChuZXdQcm9q
ZWN0KTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIFJlbW92ZSB0aGUgcHJv
amVjdC4NCiAgICAgICoNCkBAIC01MzUsNyArNTM4LDcgQEANCiAgICAgICovDQogICAgIHB1Ymxp
YyB2b2lkIHJlbW92ZVByb2plY3QoUHJvamVjdCBvbGRQcm9qZWN0KSB7DQogICAgICAgICBvcGVu
UHJvamVjdHMucmVtb3ZlKG9sZFByb2plY3QpOw0KLSAgICAgICAgDQorDQogICAgICAgICAvLyBU
T0RPOiBUaGlzIGNvZGUgY2FuIGJlIHJlbW92ZWQgd2hlbiBnZXRDdXJyZW50UHJvamVjdCBpcyBy
ZW1vdmVkDQogICAgICAgICBpZiAoY3VycmVudFByb2plY3QgPT0gb2xkUHJvamVjdCkgew0KICAg
ICAgICAgICAgIGlmIChvcGVuUHJvamVjdHMuc2l6ZSgpID4gMCkgew0KDQpNb2RpZmllZDogdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9sYW5ndWFnZS91aS9MYW5ndWFnZUNv
bWJvQm94LmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3Nl
L2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9sYW5ndWFnZS91
aS9MYW5ndWFnZUNvbWJvQm94LmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYm
cjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvbGFuZ3VhZ2UvdWkvTGFuZ3VhZ2VDb21ib0JveC5qYXZhCShvcmln
aW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL2xhbmd1YWdl
L3VpL0xhbmd1YWdlQ29tYm9Cb3guamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0x
LDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmln
aHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAy
MDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBt
YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vu
c2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMg
YXZhaWxhYmxlIGF0DQpAQCAtNDAsMTAgKzQwLDExIEBADQogDQogaW1wb3J0IGphdmEuYXd0LkRp
bWVuc2lvbjsNCiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOw0KK2ltcG9ydCBqYXZhLnV0aWwu
bG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGlt
cG9ydCBqYXZheC5zd2luZy5KQ29tYm9Cb3g7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGou
TG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5ldmVudHMuQXJnb0V2ZW50
UHVtcDsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uZXZlbnRzLkFyZ29FdmVudFR5
cGVzOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5ldmVudHMuQXJnb0dlbmVyYXRv
ckV2ZW50Ow0KQEAgLTYwLDcgKzYxLDggQEANCiAgICAgaW1wbGVtZW50cyBBcmdvR2VuZXJhdG9y
RXZlbnRMaXN0ZW5lciB7DQogDQogICAgIC8qKiBsb2dnZXIgKi8NCi0gICAgcHJpdmF0ZSBzdGF0
aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoTGFuZ3VhZ2VDb21ib0JveC5j
bGFzcyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAg
TG9nZ2VyLmdldExvZ2dlcihMYW5ndWFnZUNvbWJvQm94LmNsYXNzLmdldE5hbWUoKSk7DQogDQog
ICAgIC8qKg0KICAgICAgKiBUaGUgY29uc3RydWN0b3IuDQpAQCAtOTcsNyArOTksNyBAQA0KICAg
ICAgICAgICAgICAgICBMYW5ndWFnZSBsbCA9IChMYW5ndWFnZSkgaXRlcmF0b3IubmV4dCgpOw0K
ICAgICAgICAgICAgICAgICBhZGRJdGVtKGxsKTsNCiAgICAgICAgICAgICB9IGNhdGNoIChFeGNl
cHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIlVuZXhwZWN0ZWQgZXhjZXB0
aW9uIiwgZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiVW5leHBl
Y3RlZCBleGNlcHRpb24iLCBlKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAg
ICBzZXRWaXNpYmxlKHRydWUpOw0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Ny
Yy9vcmcvYXJnb3VtbC9tb2R1bGVsb2FkZXIvTW9kdWxlTG9hZGVyMi5qYXZhDQpVcmw6IGh0dHA6
Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbW9kdWxlbG9hZGVyL01vZHVsZUxvYWRlcjIuamF2YT92
aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9tb2R1bGVs
b2FkZXIvTW9kdWxlTG9hZGVyMi5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL21vZHVsZWxvYWRlci9Nb2R1bGVMb2FkZXIyLmphdmEJMjAx
Mi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNl
ZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBi
ZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t
cGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmll
cyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTYwLDggKzYwLDkg
QEANCiBpbXBvcnQgamF2YS51dGlsLmphci5KYXJFbnRyeTsNCiBpbXBvcnQgamF2YS51dGlsLmph
ci5KYXJGaWxlOw0KIGltcG9ydCBqYXZhLnV0aWwuamFyLk1hbmlmZXN0Ow0KK2ltcG9ydCBqYXZh
LnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0K
IA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
YXBwbGljYXRpb24uYXBpLkFic3RyYWN0QXJnb0pQYW5lbDsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
YXBwbGljYXRpb24uYXBpLkFyZ287DQogaW1wb3J0IG9yZy5hcmdvdW1sLmkxOG4uVHJhbnNsYXRv
cjsNCkBAIC04Miw3ICs4Myw4IEBADQogICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAq
Lw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dl
cihNb2R1bGVMb2FkZXIyLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2Vy
IExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKE1vZHVsZUxvYWRlcjIuY2xhc3MuZ2V0
TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIFRoaXMgbWFwIGNvbnRhaW5zIHRoZSBtb2R1
bGUgbG9hZGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb2R1bGUuPHA+DQpAQCAtOTAsMTAgKzky
LDEwIEBADQogICAgICAqIFRoZSBrZXlzIGlzIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBtb2R1bGVz
Lg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBNYXA8TW9kdWxlSW50ZXJmYWNlLCBNb2R1bGVTdGF0
dXM+IG1vZHVsZVN0YXR1czsNCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBMaXN0IG9mIGxv
Y2F0aW9ucyB0aGF0IHdlJ3ZlIHNlYXJjaGVkIGFuZC9vciBsb2FkZWQgbW9kdWxlcw0KLSAgICAg
KiBmcm9tLiAgVGhpcyBpcyBmb3IgaW5mb3JtYXRpb24gcHVycG9zZXMgb25seSB0byBhbGxvdyBp
dCB0byANCisgICAgICogZnJvbS4gIFRoaXMgaXMgZm9yIGluZm9ybWF0aW9uIHB1cnBvc2VzIG9u
bHkgdG8gYWxsb3cgaXQgdG8NCiAgICAgICogYmUgZGlzcGxheWVkIGluIHRoZSBzZXR0aW5ncyBF
bnZpcm9ubWVudCB0YWIuDQogICAgICAqLw0KICAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBleHRl
bnNpb25Mb2NhdGlvbnMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsNCkBAIC0xMjIsNyArMTI0
LDcgQEANCiAgICAgICogQ29uc3RydWN0b3IgZm9yIHRoaXMgb2JqZWN0Lg0KICAgICAgKi8NCiAg
ICAgcHJpdmF0ZSBNb2R1bGVMb2FkZXIyKCkgew0KLQltb2R1bGVTdGF0dXMgPSBuZXcgSGFzaE1h
cDxNb2R1bGVJbnRlcmZhY2UsIE1vZHVsZVN0YXR1cz4oKTsNCisgICAgICAgIG1vZHVsZVN0YXR1
cyA9IG5ldyBIYXNoTWFwPE1vZHVsZUludGVyZmFjZSwgTW9kdWxlU3RhdHVzPigpOw0KICAgICAg
ICAgY29tcHV0ZUV4dGVuc2lvbkxvY2F0aW9ucygpOw0KICAgICB9DQogDQpAQCAtMTMyLDcgKzEz
NCw3IEBADQogICAgICAqIEByZXR1cm4gdGhlIGluc3RhbmNlDQogICAgICAqLw0KICAgICBwdWJs
aWMgc3RhdGljIE1vZHVsZUxvYWRlcjIgZ2V0SW5zdGFuY2UoKSB7DQotCXJldHVybiBJTlNUQU5D
RTsNCisgICAgICAgIHJldHVybiBJTlNUQU5DRTsNCiAgICAgfQ0KIA0KICAgICAvKioNCkBAIC0x
NjAsNyArMTYyLDcgQEANCiAgICAgICogQHJldHVybiBBIENvbGxlY3Rpb24gb2YgYWxsIGF2YWls
YWJsZSBtb2R1bGVzLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBDb2xsZWN0aW9uPE1vZHVsZUlu
dGVyZmFjZT4gYXZhaWxhYmxlTW9kdWxlcygpIHsNCi0JcmV0dXJuIENvbGxlY3Rpb25zLnVubW9k
aWZpYWJsZUNvbGxlY3Rpb24obW9kdWxlU3RhdHVzLmtleVNldCgpKTsNCisgICAgICAgIHJldHVy
biBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVDb2xsZWN0aW9uKG1vZHVsZVN0YXR1cy5rZXlTZXQo
KSk7DQogICAgIH0NCiANCiAgICAgLy8gQWNjZXNzIG1ldGhvZHMgZm9yIHByb2dyYW0gaW5mcmFz
dHJ1Y3R1cmUuDQpAQCAtMTczLDcgKzE3NSw3IEBADQogICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICBzb21lIG9mIHRoZSBtb2R1bGVzIGlzIGFsbG93ZWQgdG8gZmFpbC4NCiAgICAgICovDQog
ICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBkb0xvYWQoYm9vbGVhbiBmYWlsaW5nQWxsb3dlZCkgew0K
LQlnZXRJbnN0YW5jZSgpLmRvSW50ZXJuYWwoZmFpbGluZ0FsbG93ZWQpOw0KKyAgICAgICAgZ2V0
SW5zdGFuY2UoKS5kb0ludGVybmFsKGZhaWxpbmdBbGxvd2VkKTsNCiAgICAgfQ0KIA0KICAgICAv
LyBBY2Nlc3MgbWV0aG9kcyBmb3IgbW9kdWxlcyB0aGF0IG5lZWQgdG8gcXVlcnkgYWJvdXQgdGhl
IHN0YXR1cyBvZg0KQEAgLTE4NSw3ICsxODcsNyBAQA0KICAgICAgKiBAcGFyYW0gbmFtZSBpcyB0
aGUgbW9kdWxlIG5hbWUgb2YgdGhlIHF1ZXJpZWQgbW9kdWxlDQogICAgICAqLw0KICAgICBwdWJs
aWMgc3RhdGljIGJvb2xlYW4gaXNFbmFibGVkKFN0cmluZyBuYW1lKSB7DQotCXJldHVybiBnZXRJ
bnN0YW5jZSgpLmlzRW5hYmxlZEludGVybmFsKG5hbWUpOw0KKyAgICAgICAgcmV0dXJuIGdldElu
c3RhbmNlKCkuaXNFbmFibGVkSW50ZXJuYWwobmFtZSk7DQogICAgIH0NCiANCiAgICAgLy8gQWNj
ZXNzIG1ldGhvZHMgZm9yIHRoZSBHVUkgdGhhdCB0aGUgdXNlciB1c2VzIHRvIGVuYWJsZSBhbmQg
ZGlzYWJsZQ0KQEAgLTE5NywxMyArMTk5LDEzIEBADQogICAgICAqIEByZXR1cm4gYWxsIHRoZSBu
YW1lcy4NCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgQ29sbGVjdGlvbjxTdHJpbmc+IGFs
bE1vZHVsZXMoKSB7DQotCUNvbGxlY3Rpb248U3RyaW5nPiBjb2xsID0gbmV3IEhhc2hTZXQ8U3Ry
aW5nPigpOw0KKyAgICAgICAgQ29sbGVjdGlvbjxTdHJpbmc+IGNvbGwgPSBuZXcgSGFzaFNldDxT
dHJpbmc+KCk7DQogDQotCWZvciAoTW9kdWxlSW50ZXJmYWNlIG1mIDogZ2V0SW5zdGFuY2UoKS5h
dmFpbGFibGVNb2R1bGVzKCkpIHsNCi0JICAgIGNvbGwuYWRkKG1mLmdldE5hbWUoKSk7DQotCX0N
CisgICAgICAgIGZvciAoTW9kdWxlSW50ZXJmYWNlIG1mIDogZ2V0SW5zdGFuY2UoKS5hdmFpbGFi
bGVNb2R1bGVzKCkpIHsNCisgICAgICAgICAgICBjb2xsLmFkZChtZi5nZXROYW1lKCkpOw0KKyAg
ICAgICAgfQ0KIA0KLQlyZXR1cm4gY29sbDsNCisgICAgICAgIHJldHVybiBjb2xsOw0KICAgICB9
DQogDQogICAgIC8qKg0KQEAgLTIxMyw3ICsyMTUsNyBAQA0KICAgICAgKiBAcmV0dXJuIDxjb2Rl
PnRydWU8L2NvZGU+IGlmIHRoZSBtb2R1bGUgaXMgc2VsZWN0ZWQuDQogICAgICAqLw0KICAgICBw
dWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTZWxlY3RlZChTdHJpbmcgbmFtZSkgew0KLQlyZXR1cm4g
Z2V0SW5zdGFuY2UoKS5pc1NlbGVjdGVkSW50ZXJuYWwobmFtZSk7DQorICAgICAgICByZXR1cm4g
Z2V0SW5zdGFuY2UoKS5pc1NlbGVjdGVkSW50ZXJuYWwobmFtZSk7DQogICAgIH0NCiANCiAgICAg
LyoqDQpAQCAtMjI0LDE4ICsyMjYsMTggQEANCiAgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9j
b2RlPiBpZiB0aGUgbW9kdWxlIGlzIHNlbGVjdGVkLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBi
b29sZWFuIGlzU2VsZWN0ZWRJbnRlcm5hbChTdHJpbmcgbmFtZSkgew0KLQlNYXAuRW50cnk8TW9k
dWxlSW50ZXJmYWNlLCBNb2R1bGVTdGF0dXM+IGVudHJ5ID0gZmluZE1vZHVsZShuYW1lKTsNCisg
ICAgICAgIE1hcC5FbnRyeTxNb2R1bGVJbnRlcmZhY2UsIE1vZHVsZVN0YXR1cz4gZW50cnkgPSBm
aW5kTW9kdWxlKG5hbWUpOw0KIA0KLQlpZiAoZW50cnkgIT0gbnVsbCkgew0KLQkgICAgTW9kdWxl
U3RhdHVzIHN0YXR1cyA9IGVudHJ5LmdldFZhbHVlKCk7DQorICAgICAgICBpZiAoZW50cnkgIT0g
bnVsbCkgew0KKyAgICAgICAgICAgIE1vZHVsZVN0YXR1cyBzdGF0dXMgPSBlbnRyeS5nZXRWYWx1
ZSgpOw0KIA0KLQkgICAgaWYgKHN0YXR1cyA9PSBudWxsKSB7DQotCQlyZXR1cm4gZmFsc2U7DQot
CSAgICB9DQorICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBudWxsKSB7DQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsNCisgICAgICAgICAgICB9DQogDQotCSAgICByZXR1cm4gc3RhdHVz
LmlzU2VsZWN0ZWQoKTsNCi0JfQ0KLQlyZXR1cm4gZmFsc2U7DQorICAgICAgICAgICAgcmV0dXJu
IHN0YXR1cy5pc1NlbGVjdGVkKCk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgIH0NCiANCiAgICAgLyoqDQpAQCAtMjQ1LDcgKzI0Nyw3IEBADQogICAgICAqIEBwYXJh
bSB2YWx1ZSBTZWxlY3RlZCBvciBub3QuDQogICAgICAqLw0KICAgICBwdWJsaWMgc3RhdGljIHZv
aWQgc2V0U2VsZWN0ZWQoU3RyaW5nIG5hbWUsIGJvb2xlYW4gdmFsdWUpIHsNCi0JZ2V0SW5zdGFu
Y2UoKS5zZXRTZWxlY3RlZEludGVybmFsKG5hbWUsIHZhbHVlKTsNCisgICAgICAgIGdldEluc3Rh
bmNlKCkuc2V0U2VsZWN0ZWRJbnRlcm5hbChuYW1lLCB2YWx1ZSk7DQogICAgIH0NCiANCiAgICAg
LyoqDQpAQCAtMjU2LDEzICsyNTgsMTMgQEANCiAgICAgICogQHBhcmFtIHZhbHVlIFNlbGVjdGVk
IG9yIG5vdC4NCiAgICAgICovDQogICAgIHByaXZhdGUgdm9pZCBzZXRTZWxlY3RlZEludGVybmFs
KFN0cmluZyBuYW1lLCBib29sZWFuIHZhbHVlKSB7DQotCU1hcC5FbnRyeTxNb2R1bGVJbnRlcmZh
Y2UsIE1vZHVsZVN0YXR1cz4gZW50cnkgPSBmaW5kTW9kdWxlKG5hbWUpOw0KKyAgICAgICAgTWFw
LkVudHJ5PE1vZHVsZUludGVyZmFjZSwgTW9kdWxlU3RhdHVzPiBlbnRyeSA9IGZpbmRNb2R1bGUo
bmFtZSk7DQogDQotCWlmIChlbnRyeSAhPSBudWxsKSB7DQotCSAgICBNb2R1bGVTdGF0dXMgc3Rh
dHVzID0gZW50cnkuZ2V0VmFsdWUoKTsNCisgICAgICAgIGlmIChlbnRyeSAhPSBudWxsKSB7DQor
ICAgICAgICAgICAgTW9kdWxlU3RhdHVzIHN0YXR1cyA9IGVudHJ5LmdldFZhbHVlKCk7DQogDQot
CSAgICBzdGF0dXMuc2V0U2VsZWN0ZWQodmFsdWUpOw0KLQl9DQorICAgICAgICAgICAgc3RhdHVz
LnNldFNlbGVjdGVkKHZhbHVlKTsNCisgICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICAvKioNCkBA
IC0yODUsMTMgKzI4NywxMyBAQA0KICAgICAgKiBAcmV0dXJuIFRoZSBkZXNjcmlwdGlvbi4NCiAg
ICAgICovDQogICAgIHByaXZhdGUgU3RyaW5nIGdldERlc2NyaXB0aW9uSW50ZXJuYWwoU3RyaW5n
IG5hbWUpIHsNCi0JTWFwLkVudHJ5PE1vZHVsZUludGVyZmFjZSwgTW9kdWxlU3RhdHVzPiBlbnRy
eSA9IGZpbmRNb2R1bGUobmFtZSk7DQorICAgICAgICBNYXAuRW50cnk8TW9kdWxlSW50ZXJmYWNl
LCBNb2R1bGVTdGF0dXM+IGVudHJ5ID0gZmluZE1vZHVsZShuYW1lKTsNCiANCi0JaWYgKGVudHJ5
ID09IG51bGwpIHsNCi0JICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk1v
ZHVsZSBkb2VzIG5vdCBleGlzdC4iKTsNCi0JfQ0KKyAgICAgICAgaWYgKGVudHJ5ID09IG51bGwp
IHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJNb2R1
bGUgZG9lcyBub3QgZXhpc3QuIik7DQorICAgICAgICB9DQogDQotCU1vZHVsZUludGVyZmFjZSBt
b2R1bGUgPSBlbnRyeS5nZXRLZXkoKTsNCisgICAgICAgIE1vZHVsZUludGVyZmFjZSBtb2R1bGUg
PSBlbnRyeS5nZXRLZXkoKTsNCiAgICAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdC
dWZmZXIoKTsNCiAgICAgICAgIFN0cmluZyBkZXNjID0gbW9kdWxlLmdldEluZm8oTW9kdWxlSW50
ZXJmYWNlLkRFU0NSSVBUSU9OKTsNCiAgICAgICAgIGlmIChkZXNjICE9IG51bGwpIHsNCkBAIC0z
MjAsMzQgKzMyMiwzNiBAQA0KICAgICAgKiB0dXJuaW5nIG9uLg0KICAgICAgKi8NCiAgICAgcHJp
dmF0ZSB2b2lkIGRvSW50ZXJuYWwoYm9vbGVhbiBmYWlsaW5nQWxsb3dlZCkgew0KLQlodW50Rm9y
TW9kdWxlcygpOw0KKyAgICAgICAgaHVudEZvck1vZHVsZXMoKTsNCiANCi0JYm9vbGVhbiBzb21l
TW9kdWxlU3VjY2VlZGVkOw0KLQlkbyB7DQotCSAgICBzb21lTW9kdWxlU3VjY2VlZGVkID0gZmFs
c2U7DQorICAgICAgICBib29sZWFuIHNvbWVNb2R1bGVTdWNjZWVkZWQ7DQorICAgICAgICBkbyB7
DQorICAgICAgICAgICAgc29tZU1vZHVsZVN1Y2NlZWRlZCA9IGZhbHNlOw0KIA0KLQkgICAgZm9y
IChNb2R1bGVJbnRlcmZhY2UgbW9kdWxlIDogZ2V0SW5zdGFuY2UoKS5hdmFpbGFibGVNb2R1bGVz
KCkpIHsNCisgICAgICAgICAgICBmb3IgKE1vZHVsZUludGVyZmFjZSBtb2R1bGUgOiBnZXRJbnN0
YW5jZSgpLmF2YWlsYWJsZU1vZHVsZXMoKSkgew0KIA0KLQkJTW9kdWxlU3RhdHVzIHN0YXR1cyA9
IG1vZHVsZVN0YXR1cy5nZXQobW9kdWxlKTsNCisgICAgICAgICAgICAgICAgTW9kdWxlU3RhdHVz
IHN0YXR1cyA9IG1vZHVsZVN0YXR1cy5nZXQobW9kdWxlKTsNCiANCi0JCWlmIChzdGF0dXMgPT0g
bnVsbCkgew0KLQkJICAgIGNvbnRpbnVlOw0KLQkJfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3Rh
dHVzID09IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAg
ICAgICAgICB9DQogDQotCQlpZiAoIXN0YXR1cy5pc0VuYWJsZWQoKSAmJiBzdGF0dXMuaXNTZWxl
Y3RlZCgpKSB7DQotCQkgICAgdHJ5IHsNCi0JCSAgICAgICAgaWYgKG1vZHVsZS5lbmFibGUoKSkg
ew0KLQkJICAgICAgICAgICAgc29tZU1vZHVsZVN1Y2NlZWRlZCA9IHRydWU7DQotCQkgICAgICAg
ICAgICBzdGF0dXMuc2V0RW5hYmxlZCgpOw0KLQkJICAgICAgICB9DQotCQkgICAgfQ0KLQkJICAg
IC8vIENhdGNoIGFsbCBleGNlcHRpb25zIGFuZCBlcnJvcnMsIGhvd2V2ZXIgc2V2ZXJlDQotCQkg
ICAgY2F0Y2ggKFRocm93YWJsZSBlKSB7ICAgICAgICAgICAgICAgICAgICAgICANCi0JCSAgICAg
ICAgTE9HLmVycm9yKCJFeGNlcHRpb24gb3IgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvICINCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImVuYWJsZSBtb2R1bGUgIiArIG1vZHVsZS5n
ZXROYW1lKCksIGUpOw0KKyAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc0VuYWJsZWQoKSAm
JiBzdGF0dXMuaXNTZWxlY3RlZCgpKSB7DQorICAgICAgICAgICAgICAgICAgICB0cnkgew0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2R1bGUuZW5hYmxlKCkpIHsNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc29tZU1vZHVsZVN1Y2NlZWRlZCA9IHRydWU7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXR1cy5zZXRFbmFibGVkKCk7DQorICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAg
Ly8gQ2F0Y2ggYWxsIGV4Y2VwdGlvbnMgYW5kIGVycm9ycywgaG93ZXZlciBzZXZlcmUNCisJCSAg
ICBjYXRjaCAoVGhyb3dhYmxlIGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBMT0cubG9n
KExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGNlcHRp
b24gb3IgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvICINCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgImVuYWJsZSBtb2R1bGUgIiArIG1vZHVsZS5nZXROYW1lKCksDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlKTsNCiAJCSAgICB9DQogCQl9IGVsc2UgaWYgKHN0YXR1
cy5pc0VuYWJsZWQoKSAmJiAhc3RhdHVzLmlzU2VsZWN0ZWQoKSkgew0KLQkJICAgIHRyeSB7IA0K
KwkJICAgIHRyeSB7DQogCQkgICAgICAgIGlmIChtb2R1bGUuZGlzYWJsZSgpKSB7DQogCQkgICAg
ICAgICAgICBzb21lTW9kdWxlU3VjY2VlZGVkID0gdHJ1ZTsNCiAJCSAgICAgICAgICAgIHN0YXR1
cy5zZXREaXNhYmxlZCgpOw0KQEAgLTM1NSw4ICszNTksMTAgQEANCiAJCSAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAvLyBDYXRjaCBhbGwgZXhjZXB0aW9ucyBhbmQgZXJyb3JzLCBob3dldmVy
IHNldmVyZQ0KIAkJICAgIGNhdGNoIChUaHJvd2FibGUgZSkgew0KLQkJICAgICAgICBMT0cuZXJy
b3IoIkV4Y2VwdGlvbiBvciBlcnJvciB3aGlsZSB0cnlpbmcgdG8gIg0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKyAiZGlzYWJsZSBtb2R1bGUgIiArIG1vZHVsZS5nZXROYW1lKCks
IGUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4Y2VwdGlvbiBvciBlcnJvciB3aGlsZSB0
cnlpbmcgdG8gIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiZGlzYWJsZSBt
b2R1bGUgIiArIG1vZHVsZS5nZXROYW1lKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlKTsNCiAJCSAgICB9DQogCQl9DQogCSAgICB9DQpAQCAtMzg4LDExICszOTQsMTMgQEAN
CiAJCX0NCiANCiAJCWlmIChzdGF0dXMuaXNTZWxlY3RlZCgpKSB7DQotCQkgICAgTE9HLndhcm4o
Ik1vZHVsZUxvYWRlciB3YXMgbm90IGFibGUgdG8gZW5hYmxlIG1vZHVsZSAiDQotCQkgICAgICAg
ICAgICAgKyBtb2R1bGUuZ2V0TmFtZSgpKTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2co
TGV2ZWwuV0FSTklORywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZUxvYWRl
ciB3YXMgbm90IGFibGUgdG8gZW5hYmxlIG1vZHVsZSAiDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgbW9kdWxlLmdldE5hbWUoKSk7DQogCQl9IGVsc2Ugew0KLQkJICAgIExPRy53YXJu
KCJNb2R1bGVMb2FkZXIgd2FzIG5vdCBhYmxlIHRvIGRpc2FibGUgbW9kdWxlICINCi0JCSAgICAg
ICAgICAgICArIG1vZHVsZS5nZXROYW1lKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxv
ZyhMZXZlbC5XQVJOSU5HLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlTG9h
ZGVyIHdhcyBub3QgYWJsZSB0byBkaXNhYmxlIG1vZHVsZSAiDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICsgbW9kdWxlLmdldE5hbWUoKSk7DQogCQl9DQogCSAgICB9DQogCX0NCkBAIC00
NTksMTkgKzQ2NywyMCBAQA0KICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAg
ICAgICAgYWRkQ2xhc3MoY2xhc3NOYW1lKTsNCiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoQ2xh
c3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cuZXJyb3Io
IkNvdWxkIG5vdCBsb2FkIG1vZHVsZSBmcm9tIGNsYXNzICIgKyBjbGFzc05hbWUpOw0KKyAgICAg
ICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDb3VsZCBub3QgbG9hZCBtb2R1bGUgZnJvbSBjbGFzcyAiICsgY2xhc3NOYW1l
KTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAg
fQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEZpbmQgYW5kIGVuYWJsZSBtb2R1bGVzIGZy
b20gb3VyICJleHQiIGRpcmVjdG9yeSBhbmQgZnJvbSB0aGUNCiAgICAgICogZGlyZWN0b3J5IHNw
ZWNpZmllZCBpbiAiYXJnby5leHQuZGlyIi48cD4NCiAgICAgICovDQogICAgIHByaXZhdGUgdm9p
ZCBodW50Rm9yTW9kdWxlc0Zyb21FeHRlbnNpb25EaXIoKSB7DQogICAgICAgICBmb3IgKFN0cmlu
ZyBsb2NhdGlvbiA6IGV4dGVuc2lvbkxvY2F0aW9ucykgew0KLSAgICAgICAgICAgIGh1bnRNb2R1
bGVzRnJvbU5hbWVkRGlyZWN0b3J5KGxvY2F0aW9uKTsgICAgICAgICAgICANCisgICAgICAgICAg
ICBodW50TW9kdWxlc0Zyb21OYW1lZERpcmVjdG9yeShsb2NhdGlvbik7DQogICAgICAgICB9DQog
ICAgIH0NCiANCkBAIC00OTksNyArNTA4LDcgQEANCiAgICAgICAgIFN0cmluZyBhcmdvSG9tZSA9
IG51bGw7DQogDQogICAgICAgICBpZiAoYXJnb1Jvb3QgIT0gbnVsbCkgew0KLSAgICAgICAgICAg
IExPRy5pbmZvKCJhcmdvUm9vdCBpcyAiICsgYXJnb1Jvb3QpOw0KKyAgICAgICAgICAgIExPRy5s
b2coTGV2ZWwuSU5GTywgImFyZ29Sb290IGlzIHswfSIsIGFyZ29Sb290KTsNCiAgICAgICAgICAg
ICBpZiAoYXJnb1Jvb3Quc3RhcnRzV2l0aChGSUxFX1BSRUZJWCkpIHsNCiAgICAgICAgICAgICAg
ICAgYXJnb0hvbWUgPQ0KICAgICAgICAgICAgICAgICAgICAgbmV3IEZpbGUoYXJnb1Jvb3Quc3Vi
c3RyaW5nKEZJTEVfUFJFRklYLmxlbmd0aCgpKSkNCkBAIC01MDksMTUgKzUxOCwxNiBAQA0KICAg
ICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICB0cnkgew0KLSAgICAgICAgICAgICAgICBhcmdv
SG9tZSA9IGphdmEubmV0LlVSTERlY29kZXIuZGVjb2RlKGFyZ29Ib21lLCANCisgICAgICAgICAg
ICAgICAgYXJnb0hvbWUgPSBqYXZhLm5ldC5VUkxEZWNvZGVyLmRlY29kZShhcmdvSG9tZSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICBBcmdvLmdldEVuY29kaW5nKCkpOw0KICAgICAgICAgICAg
IH0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAg
ICAgICBMT0cud2FybigiRW5jb2RpbmcgIiANCi0gICAgICAgICAgICAgICAgICAgICAgICArIEFy
Z28uZ2V0RW5jb2RpbmcoKSANCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5H
LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICJFbmNvZGluZyAiDQorICAgICAgICAgICAgICAg
ICAgICAgICAgKyBBcmdvLmdldEVuY29kaW5nKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAr
ICIgaXMgdW5rbm93bi4iKTsNCiAgICAgICAgICAgICB9DQogDQotICAgICAgICAgICAgTE9HLmlu
Zm8oImFyZ29Ib21lIGlzICIgKyBhcmdvSG9tZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5JTkZPLCAiYXJnb0hvbWUgaXMgezB9IiwgYXJnb0hvbWUpOw0KICAgICAgICAgfQ0KIA0KICAg
ICAgICAgaWYgKGFyZ29Ib21lICE9IG51bGwpIHsNCkBAIC01MzYsNyArNTQ2LDcgQEANCiAgICAg
ICAgICAgICBleHRlbnNpb25Mb2NhdGlvbnMuYWRkKGV4dGRpcik7DQogICAgICAgICB9DQogICAg
IH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBHZXQgdGhlIGxpc3Qgb2YgbG9jYXRpb25z
IHRoYXQgd2UndmUgbG9hZGVkIGV4dGVuc2lvbiBtb2R1bGVzIGZyb20uDQogICAgICAqIEByZXR1
cm4gQSBsaXN0IG9mIHRoZSBwYXRocyB3ZSd2ZSBsb2FkZWQgZnJvbS4NCkBAIC01NjksMTIgKzU3
OSwxMiBAQA0KIAkgICAgICAgICAgICAgICAgdHJ5IHsNCiAJICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzSmFyRmlsZShjbGFzc2xvYWRlciwgZmlsZSk7DQogCSAgICAgICAgICAgICAgICB9IGNh
dGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsNCi0JICAgICAgICAgICAgICAgICAgICBM
T0cuZXJyb3IoIlRoZSBjbGFzcyBpcyBub3QgZm91bmQuIiwgZSk7DQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiVGhlIGNsYXNzIGlzIG5vdCBmb3Vu
ZC4iLCBlKTsNCiAJICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogCSAgICAgICAgICAgICAg
ICB9DQogCQkgICAgfQ0KIAkJfSBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKSB7DQotCQkgICAgTE9H
LmVycm9yKCJDYW5ub3Qgb3BlbiBKYXIgZmlsZSAiICsgZmlsZSwgaW9lKTsNCisgICAgICAgICAg
ICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiQ2Fubm90IG9wZW4gSmFyIGZpbGUgIiAr
IGZpbGUsIGlvZSk7DQogCQl9DQogCSAgICB9DQogCX0NCkBAIC01OTQsMTIgKzYwNCwxMiBAQA0K
ICAgICBwcml2YXRlIHZvaWQgcHJvY2Vzc0phckZpbGUoQ2xhc3NMb2FkZXIgY2xhc3Nsb2FkZXIs
IEZpbGUgZmlsZSkNCiAgICAgICAgIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsNCiAN
Ci0JTE9HLmluZm8oIk9wZW5pbmcgamFyIGZpbGUgIiArIGZpbGUpOw0KKyAgICAgICAgTE9HLmxv
ZyhMZXZlbC5JTkZPLCAiT3BlbmluZyBqYXIgZmlsZSB7MH0iLCBmaWxlKTsNCiAgICAgICAgIEph
ckZpbGUgamFyZmlsZTsNCiAJdHJ5IHsNCiAJICAgIGphcmZpbGUgPSBuZXcgSmFyRmlsZShmaWxl
KTsNCiAJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KLQkgICAgTE9HLmVycm9yKCJVbmFibGUg
dG8gb3BlbiAiICsgZmlsZSwgZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUs
ICJVbmFibGUgdG8gb3BlbiAiICsgZmlsZSwgZSk7DQogICAgICAgICAgICAgcmV0dXJuOw0KIAl9
DQogDQpAQCAtNjA5LDE5ICs2MTksMTkgQEANCiAgICAgICAgICAgICBpZiAobWFuaWZlc3QgPT0g
bnVsbCkgew0KICAgICAgICAgICAgICAgICAvLyBXZSBleHBlY3QgYWxsIGV4dGVuc2lvbnMgdG8g
aGF2ZSBhIG1hbmlmZXN0IGV2ZW4gdGhvdWdoIHdlDQogICAgICAgICAgICAgICAgIC8vIGNhbiBv
cGVyYXRlIHdpdGhvdXQgb25lIGlmIG5lY2Vzc2FyeS4NCi0gICAgICAgICAgICAgICAgTE9HLndh
cm4oZmlsZSArICIgZG9lcyBub3QgaGF2ZSBhIG1hbmlmZXN0Iik7DQorICAgICAgICAgICAgICAg
IExPRy5sb2coTGV2ZWwuV0FSTklORyxmaWxlICsgIiBkb2VzIG5vdCBoYXZlIGEgbWFuaWZlc3Qi
KTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQot
ICAgICAgICAgICAgTE9HLmVycm9yKCJVbmFibGUgdG8gcmVhZCBtYW5pZmVzdCBvZiAiICsgZmls
ZSwgZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJVbmFibGUgdG8gcmVh
ZCBtYW5pZmVzdCBvZiAiICsgZmlsZSwgZSk7DQogICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICAvLyBUT0RPOiBJdCBpcyBhIHBlcmZvcm1hbmNl
IGRyYWluIHRvIGxvYWQgYWxsIGNsYXNzZXMgYXQgc3RhcnR1cCB0aW1lLg0KICAgICAgICAgLy8g
VGhleSBzaG91bGQgYmUgbGF6eSBsb2FkZWQgd2hlbiBuZWVkZWQuICBJbnN0ZWFkIG9mIHNjYW5u
aW5nIGFsbA0KLSAgICAgICAgLy8gY2xhc3NlcyBmb3Igb25lcyB3aGljaCBpbXBsZW1lbnQgb3Vy
IGxvYWRhYmxlIG1vZHVsZSBpbnRlcmZhY2UsIHdlIA0KKyAgICAgICAgLy8gY2xhc3NlcyBmb3Ig
b25lcyB3aGljaCBpbXBsZW1lbnQgb3VyIGxvYWRhYmxlIG1vZHVsZSBpbnRlcmZhY2UsIHdlDQog
ICAgICAgICAvLyBzaG91bGQgdXNlIGEgbWFuaWZlc3QgZW50cnkgb3IgYSBzcGVjaWFsIG5hbWUv
bmFtZSBwYXR0ZXJuIHRoYXQgd2UNCiAgICAgICAgIC8vIGxvb2sgZm9yIHRvIGZpbmQgdGhlIHNp
bmdsZSBtYWluIG1vZHVsZSBjbGFzcyB0byBsb2FkIGhlcmUuICAtIHRmbQ0KLQkNCisNCiAgICAg
ICAgIGJvb2xlYW4gbG9hZGVkQ2xhc3MgPSBmYWxzZTsNCiAgICAgICAgIGlmIChtYW5pZmVzdCA9
PSBudWxsKSB7DQogICAgICAgICAgICAgRW51bWVyYXRpb248SmFyRW50cnk+IGphckVudHJpZXMg
PSBqYXJmaWxlLmVudHJpZXMoKTsNCkBAIC02NDQsMTIgKzY1NCwxMyBAQA0KICAgICAgICAgLy8g
QWRkIHRoaXMgdG8gc2VhcmNoIGxpc3QgZm9yIEkxOE4gcHJvcGVydGllcw0KICAgICAgICAgLy8g
KERvbmUgZm9yIGJvdGggbW9kdWxlcyAmIGxvY2FsaXplZCBwcm9wZXJ0eSBmaWxlIHNldHMpDQog
ICAgICAgICBUcmFuc2xhdG9yLmFkZENsYXNzTG9hZGVyKGNsYXNzbG9hZGVyKTsNCi0gICAgICAg
IA0KKw0KICAgICAgICAgLy8gSWYgaXQgZGlkbid0IGhhdmUgYSBsb2FkYWJsZSBtb2R1bGUgY2xh
c3MgYW5kIGl0IGRvZXNuJ3QgbG9vayBsaWtlDQogICAgICAgICAvLyBhIGxvY2FsaXplZCBwcm9w
ZXJ0eSBzZXQsIHdhcm4gdGhlIHVzZXIgdGhhdCBzb21ldGhpbmcgZnVubnkgaXMgaW4NCiAgICAg
ICAgIC8vIHRoZWlyIGV4dGVuc2lvbiBkaXJlY3RvcnkNCiAgICAgICAgIGlmICghbG9hZGVkQ2xh
c3MgJiYgIWZpbGUuZ2V0TmFtZSgpLmNvbnRhaW5zKCJhcmdvdW1sLWkxOG4tIikpIHsNCi0gICAg
ICAgICAgICBMT0cuZXJyb3IoIkZhaWxlZCB0byBmaW5kIGFueSBsb2FkYWJsZSBBcmdvVU1MIG1v
ZHVsZXMgaW4gamFyICINCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAg
ICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZmluZCBhbnkgbG9hZGFibGUgQXJnb1VNTCBtb2R1
bGVzIGluIGphciAiDQogICAgICAgICAgICAgICAgICAgICArIGZpbGUpOw0KICAgICAgICAgfQ0K
ICAgICB9DQpAQCAtNjU3LDcgKzY2OCw3IEBADQogICAgIC8qKg0KICAgICAgKiBQcm9jZXNzIGEg
SkFSIGZpbGUgZW50cnksIGF0dGVtcHRpbmcgdG8gbG9hZCBhbnl0aGluZyB0aGF0IGxvb2tzIGxp
a2UgYQ0KICAgICAgKiBKYXZhIGNsYXNzLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBh
cmFtIGNsYXNzbG9hZGVyDQogICAgICAqICAgICAgICAgICAgdGhlIGNsYXNzbG9hZGVyIHRvIHVz
ZSB3aGVuIGxvYWRpbmcgdGhlIGNsYXNzDQogICAgICAqIEBwYXJhbSBjbmFtZQ0KQEAgLTcwMiwy
OCArNzEzLDMzIEBADQogICAgIHByaXZhdGUgYm9vbGVhbiBhZGRDbGFzcyhDbGFzc0xvYWRlciBj
bGFzc0xvYWRlciwgU3RyaW5nIGNsYXNzbmFtZSkNCiAgICAgICAgIHRocm93cyBDbGFzc05vdEZv
dW5kRXhjZXB0aW9uIHsNCiANCi0gICAgICAgIExPRy5pbmZvKCJMb2FkaW5nIG1vZHVsZSAiICsg
Y2xhc3NuYW1lKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIkxvYWRpbmcgbW9kdWxl
ICIgKyBjbGFzc25hbWUpOw0KICAgICAgICAgQ2xhc3MgbW9kdWxlQ2xhc3M7DQogICAgICAgICB0
cnkgew0KICAgICAgICAgICAgIG1vZHVsZUNsYXNzID0gY2xhc3NMb2FkZXIubG9hZENsYXNzKGNs
YXNzbmFtZSk7DQogICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9y
IGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIlVuc3VwcG9ydGVkIEphdmEgY2xhc3MgdmVy
c2lvbiBmb3IgIiArIGNsYXNzbmFtZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZF
UkUsDQorICAgICAgICAgICAgICAgICAgICAiVW5zdXBwb3J0ZWQgSmF2YSBjbGFzcyB2ZXJzaW9u
IGZvciAiICsgY2xhc3NuYW1lKTsNCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
ICB9IGNhdGNoIChOb0NsYXNzRGVmRm91bmRFcnJvciBlKSB7DQotICAgICAgICAgICAgTE9HLmVy
cm9yKCJVbmFibGUgdG8gZmluZCByZXF1aXJlZCBjbGFzcyB3aGlsZSBsb2FkaW5nICINCisgICAg
ICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICJVbmFi
bGUgdG8gZmluZCByZXF1aXJlZCBjbGFzcyB3aGlsZSBsb2FkaW5nICINCiAgICAgICAgICAgICAg
ICAgICAgICsgY2xhc3NuYW1lICsgIiAtIG1heSBpbmRpY2F0ZSBhbiBvYnNvbGV0ZSINCi0gICAg
ICAgICAgICAgICAgICAgICsgIiBleHRlbnNpb24gbW9kdWxlIG9yIGFuIHVucmVzb2x2ZWQgZGVw
ZW5kZW5jeSIsIGUpOw0KKyAgICAgICAgICAgICAgICAgICAgKyAiIGV4dGVuc2lvbiBtb2R1bGUg
b3IgYW4gdW5yZXNvbHZlZCBkZXBlbmRlbmN5IiwNCisgICAgICAgICAgICAgICAgICAgIGUpOw0K
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSBl
KSB7DQogICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDbGFzc05vdEZvdW5kRXhjZXB0aW9u
KSB7DQogICAgICAgICAgICAgICAgIHRocm93IChDbGFzc05vdEZvdW5kRXhjZXB0aW9uKSBlOw0K
ICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBMT0cuZXJyb3IoIlVuZXhwZWN0ZWQgZXJyb3Ig
d2hpbGUgbG9hZGluZyAiICsgY2xhc3NuYW1lLCBlKTsNCisgICAgICAgICAgICBMT0cubG9nKExl
dmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIGVycm9yIHdoaWxl
IGxvYWRpbmcgIiArIGNsYXNzbmFtZSwNCisgICAgICAgICAgICAgICAgICAgIGUpOw0KICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAg
aWYgKCFNb2R1bGVJbnRlcmZhY2UuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShtb2R1bGVDbGFzcykp
IHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIlRoZSBjbGFzcyAiICsgY2xhc3NuYW1lICsgIiBp
cyBub3QgYSBtb2R1bGUuIik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiVGhl
IGNsYXNzIHswfSBpcyBub3QgYSBtb2R1bGUuIiwgY2xhc3NuYW1lKTsNCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgICAgICB9DQogDQpAQCAtNzMyLDI2ICs3NDgsMzQgQEANCiAgICAg
ICAgICAgICBkZWZhdWx0Q29uc3RydWN0b3IgPQ0KICAgICAgICAgICAgICAgICAgICAgbW9kdWxl
Q2xhc3MuZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcihuZXcgQ2xhc3NbXSB7fSk7DQogICAgICAgICB9
IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmVycm9yKCJU
aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgIiArIGNsYXNzbmFtZQ0KLSAgICAgICAg
ICAgICAgICAgICAgICArICIgaXMgbm90IGFjY2Vzc2FibGUuIiwNCi0gICAgICAgICAgICAgICAg
ICAgICAgZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAg
ICAgICAgICAgICAiVGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzICIgKyBjbGFzc25h
bWUNCisgICAgICAgICAgICAgICAgICAgICsgIiBpcyBub3QgYWNjZXNzYWJsZS4iLA0KKyAgICAg
ICAgICAgICAgICAgICAgZSk7DQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAg
fSBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJy
b3IoIlRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyAiICsgY2xhc3NuYW1lDQotICAg
ICAgICAgICAgICAgICAgICAgICsgIiBpcyBub3QgZm91bmQuIiwgZSk7DQorICAgICAgICAgICAg
TE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICAgICAiVGhlIGRlZmF1bHQg
Y29uc3RydWN0b3IgZm9yIGNsYXNzICIgKyBjbGFzc25hbWUNCisgICAgICAgICAgICAgICAgICAg
ICsgIiBpcyBub3QgZm91bmQuIiwNCisgICAgICAgICAgICAgICAgICAgIGUpOw0KICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgIH0gY2F0Y2ggKE5vQ2xhc3NEZWZGb3VuZEVycm9y
IGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIlVuYWJsZSB0byBmaW5kIHJlcXVpcmVkIGNs
YXNzIHdoaWxlIGxvYWRpbmcgIg0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0K
KyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBmaW5kIHJlcXVpcmVkIGNsYXNzIHdoaWxl
IGxvYWRpbmcgIg0KICAgICAgICAgICAgICAgICAgICAgKyBjbGFzc25hbWUgKyAiIC0gbWF5IGlu
ZGljYXRlIGFuIG9ic29sZXRlIg0KLSAgICAgICAgICAgICAgICAgICAgKyAiIGV4dGVuc2lvbiBt
b2R1bGUgb3IgYW4gdW5yZXNvbHZlZCBkZXBlbmRlbmN5IiwgZSk7DQorICAgICAgICAgICAgICAg
ICAgICArICIgZXh0ZW5zaW9uIG1vZHVsZSBvciBhbiB1bnJlc29sdmVkIGRlcGVuZGVuY3kiLA0K
KyAgICAgICAgICAgICAgICAgICAgZSk7DQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIlVu
ZXhwZWN0ZWQgZXJyb3Igd2hpbGUgbG9hZGluZyAiICsgY2xhc3NuYW1lLCBlKTsNCisgICAgICAg
ICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICJVbmV4cGVj
dGVkIGVycm9yIHdoaWxlIGxvYWRpbmcgIiArIGNsYXNzbmFtZSwNCisgICAgICAgICAgICAgICAg
ICAgIGUpOw0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgIH0NCiANCiAgICAg
ICAgIGlmICghTW9kaWZpZXIuaXNQdWJsaWMoZGVmYXVsdENvbnN0cnVjdG9yLmdldE1vZGlmaWVy
cygpKSkgew0KLSAgICAgICAgICAgIExPRy5lcnJvcigiVGhlIGRlZmF1bHQgY29uc3RydWN0b3Ig
Zm9yIGNsYXNzICIgKyBjbGFzc25hbWUNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVS
RSwNCisgICAgICAgICAgICAgICAgICAgICJUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xh
c3MgIiArIGNsYXNzbmFtZQ0KICAgICAgICAgICAgICAgICAgICAgKyAiIGlzIG5vdCBwdWJsaWMu
ICBOb3QgbG9hZGVkLiIpOw0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgIH0N
CkBAIC03NTksNDEgKzc4Myw1NCBAQA0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBtb2R1
bGVJbnN0YW5jZSA9IGRlZmF1bHRDb25zdHJ1Y3Rvci5uZXdJbnN0YW5jZShuZXcgT2JqZWN0W117
fSk7DQogICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgew0KLSAg
ICAgICAgICAgIExPRy5lcnJvcigiVGhlIGNvbnN0cnVjdG9yIGZvciBjbGFzcyAiICsgY2xhc3Nu
YW1lDQotICAgICAgICAgICAgICAgICAgICArICIgaXMgY2FsbGVkIHdpdGggaW5jb3JyZWN0IGFy
Z3VtZW50LiIsIGUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAgICAg
ICAgICAgICAgICAgICAgIlRoZSBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgIiArIGNsYXNzbmFtZQ0K
KyAgICAgICAgICAgICAgICAgICAgKyAiIGlzIGNhbGxlZCB3aXRoIGluY29ycmVjdCBhcmd1bWVu
dC4iLA0KKyAgICAgICAgICAgICAgICAgICAgZSk7DQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgICAgICAgfSBjYXRjaCAoSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiBlKSB7DQotICAgICAg
ICAgICAgTE9HLmVycm9yKCJUaGUgY29uc3RydWN0b3IgZm9yIGNsYXNzICIgKyBjbGFzc25hbWUN
Ci0gICAgICAgICAgICAgICAgICAgICsgIiB0aHJldyBhbiBleGNlcHRpb24uIiwgZSk7DQorICAg
ICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICAgICAiVGhl
IGNvbnN0cnVjdG9yIGZvciBjbGFzcyAiICsgY2xhc3NuYW1lDQorICAgICAgICAgICAgICAgICAg
ICArICIgdGhyZXcgYW4gZXhjZXB0aW9uLiIsDQorICAgICAgICAgICAgICAgICAgICBlKTsNCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNjZXNz
RXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIlRoZSBjb25zdHJ1Y3RvciBm
b3IgY2xhc3MgIiArIGNsYXNzbmFtZQ0KLSAgICAgICAgICAgICAgICAgICAgKyAiIGlzIG5vdCBh
Y2Nlc3NpYmxlLiIsIGUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAg
ICAgICAgICAgICAgICAgICAgIlRoZSBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgIiArIGNsYXNzbmFt
ZQ0KKyAgICAgICAgICAgICAgICAgICAgKyAiIGlzIG5vdCBhY2Nlc3NpYmxlLiIsDQorICAgICAg
ICAgICAgICAgICAgICBlKTsNCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICB9
IGNhdGNoIChJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cu
ZXJyb3IoIlRoZSBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgIiArIGNsYXNzbmFtZQ0KLSAgICAgICAg
ICAgICAgICAgICAgKyAiIGNhbm5vdCBiZSBjYWxsZWQuIiwgZSk7DQorICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICAgICAiVGhlIGNvbnN0cnVjdG9y
IGZvciBjbGFzcyAiICsgY2xhc3NuYW1lDQorICAgICAgICAgICAgICAgICAgICArICIgY2Fubm90
IGJlIGNhbGxlZC4iLA0KKyAgICAgICAgICAgICAgICAgICAgZSk7DQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgICAgICAgfSBjYXRjaCAoTm9DbGFzc0RlZkZvdW5kRXJyb3IgZSkgew0K
LSAgICAgICAgICAgIExPRy5lcnJvcigiVW5hYmxlIHRvIGZpbmQgcmVxdWlyZWQgY2xhc3Mgd2hp
bGUgaW5zdGFudGlhdGluZyAiDQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQor
ICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGZpbmQgcmVxdWlyZWQgY2xhc3Mgd2hpbGUg
aW5zdGFudGlhdGluZyAiDQogICAgICAgICAgICAgICAgICAgICArIGNsYXNzbmFtZSArICIgLSBt
YXkgaW5kaWNhdGUgYW4gb2Jzb2xldGUiDQotICAgICAgICAgICAgICAgICAgICArICIgZXh0ZW5z
aW9uIG1vZHVsZSBvciBhbiB1bnJlc29sdmVkIGRlcGVuZGVuY3kiLCBlKTsNCisgICAgICAgICAg
ICAgICAgICAgICsgIiBleHRlbnNpb24gbW9kdWxlIG9yIGFuIHVucmVzb2x2ZWQgZGVwZW5kZW5j
eSIsDQorICAgICAgICAgICAgICAgICAgICBlKTsNCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgew0KLSAgICAgICAgICAgIExPRy5lcnJv
cigiVW5leHBlY3RlZCBlcnJvciB3aGlsZSBpbnN0YW50aWF0aW5nICIgKyBjbGFzc25hbWUsIGUp
Ow0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAgICAgICAgICAgICAgICAg
ICAgIlVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgaW5zdGFudGlhdGluZyAiICsgY2xhc3NuYW1lLA0K
KyAgICAgICAgICAgICAgICAgICAgZSk7DQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICAgfQ0KIA0KICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjaGVjayBzaG91bGQgaGF2ZSBi
ZWVuIHNhdGlzZmllZCBiZWZvcmUgd2UNCiAgICAgICAgIC8vIGluc3RhbnRpYXRlZCB0aGUgbW9k
dWxlLCBidXQgZG91YmxlIGNoZWNrIGFnYWluDQogICAgICAgICBpZiAoIShtb2R1bGVJbnN0YW5j
ZSBpbnN0YW5jZW9mIE1vZHVsZUludGVyZmFjZSkpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3Io
IlRoZSBjbGFzcyAiICsgY2xhc3NuYW1lICsgIiBpcyBub3QgYSBtb2R1bGUuIik7DQorICAgICAg
ICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICAgICAiVGhlIGNs
YXNzICIgKyBjbGFzc25hbWUgKyAiIGlzIG5vdCBhIG1vZHVsZS4iKTsNCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgICAgICB9DQogICAgICAgICBNb2R1bGVJbnRlcmZhY2UgbWYgPSAo
TW9kdWxlSW50ZXJmYWNlKSBtb2R1bGVJbnN0YW5jZTsNCiANCiAgICAgICAgIGFkZE1vZHVsZSht
Zik7DQotICAgICAgICBMT0cuaW5mbygiU3VjY2VzZnVsbHkgbG9hZGVkIG1vZHVsZSAiICsgY2xh
c3NuYW1lKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIlN1Y2Nlc2Z1bGx5IGxvYWRl
ZCBtb2R1bGUgezB9IiwgY2xhc3NuYW1lKTsNCiAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICB9
DQogDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL25v
dGF0aW9uL05vdGF0aW9uLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3Vy
Y2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9u
b3RhdGlvbi9Ob3RhdGlvbi5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIy
PTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL05vdGF0aW9uLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vTm90YXRpb24uamF2
YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3Jz
IC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0g
c2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUg
YWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29t
cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDEsMTAg
KzQxLDExIEBADQogaW1wb3J0IGphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VFdmVudDsNCiBpbXBv
cnQgamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyOw0KIGltcG9ydCBqYXZhLnV0aWwu
TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRp
bC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuSWNvbjsNCiANCi1pbXBv
cnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0
aW9uLmV2ZW50cy5BcmdvRXZlbnRQdW1wOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlv
bi5ldmVudHMuQXJnb0V2ZW50VHlwZXM7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9u
LmV2ZW50cy5BcmdvTm90YXRpb25FdmVudDsNCkBAIC02MSw3ICs2Miw4IEBADQogICovDQogcHVi
bGljIGZpbmFsIGNsYXNzIE5vdGF0aW9uIGltcGxlbWVudHMgUHJvcGVydHlDaGFuZ2VMaXN0ZW5l
ciB7DQogDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0
TG9nZ2VyKE5vdGF0aW9uLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2Vy
IExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKE5vdGF0aW9uLmNsYXNzLmdldE5hbWUo
KSk7DQogDQogICAgIC8vIFRPRE86IERvIHdlIGhhdmUgYW55IHBvdGVudGlhbCBjb25zdW1lcnMg
b2YgdGhlIHVudmVyc2lvbmVkIG5hbWUgb3V0c2lkZQ0KICAgICAvLyBvZiB0aGUgbm90YXRpb24g
c3Vic3lzdGVtPw0KQEAgLTc0LDcgKzc2LDcgQEANCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0
aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfTk9UQVRJT04gPSBERUZBVUxUX05PVEFUSU9OX05BTUUg
KyAiICINCiAgICAgICAgICAgICArIERFRkFVTFRfTk9UQVRJT05fVkVSU0lPTjsNCi0gICAgDQor
DQogICAgIC8qKg0KICAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCBBcmdvVU1MIG5vdGF0
aW9uLiAgVGhpcyBub3RhdGlvbiBpcw0KICAgICAgKiBwYXJ0IG9mIEFyZ29VTUwgY29yZSBkaXN0
cmlidXRpb24uDQpAQCAtMTg1LDcgKzE4Nyw5IEBADQogICAgICAqIEBwYXJhbSBuIHRoZSBOb3Rh
dGlvbk5hbWUgdGhhdCB3aWxsIGJlY29tZSBkZWZhdWx0DQogICAgICAqLw0KICAgICBwdWJsaWMg
c3RhdGljIHZvaWQgc2V0RGVmYXVsdE5vdGF0aW9uKE5vdGF0aW9uTmFtZSBuKSB7DQotICAgICAg
ICBMT0cuaW5mbygiZGVmYXVsdCBub3RhdGlvbiBzZXQgdG8gIiArIG4uZ2V0Q29uZmlndXJhdGlv
blZhbHVlKCkpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAg
ICAiZGVmYXVsdCBub3RhdGlvbiBzZXQgdG8gezB9Iiwgbi5nZXRDb25maWd1cmF0aW9uVmFsdWUo
KSk7DQorDQogICAgICAgICBDb25maWd1cmF0aW9uLnNldFN0cmluZygNCiAgICAgICAgICAgICBL
RVlfREVGQVVMVF9OT1RBVElPTiwNCiAgICAgICAgICAgICBuLmdldENvbmZpZ3VyYXRpb25WYWx1
ZSgpKTsNCkBAIC0yMTYsNyArMjIwLDcgQEANCiAgICAgICAgIGlmIChuID09IG51bGwpIHsNCiAg
ICAgICAgICAgICBuID0gTm90YXRpb25OYW1lSW1wbC5maW5kTm90YXRpb24oREVGQVVMVF9OT1RB
VElPTik7DQogCX0NCi0gICAgICAgIExPRy5kZWJ1ZygiZGVmYXVsdCBub3RhdGlvbiBpcyAiICsg
bi5nZXRDb25maWd1cmF0aW9uVmFsdWUoKSk7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUs
ICJkZWZhdWx0IG5vdGF0aW9uIGlzIHswfSIsIG4uZ2V0Q29uZmlndXJhdGlvblZhbHVlKCkpOw0K
ICAgICAgICAgcmV0dXJuIG47DQogICAgIH0NCiANCkBAIC0yMzksMTEgKzI0Myw5IEBADQogICAg
ICAqIEBzZWUgamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyI3Byb3BlcnR5Q2hhbmdl
KGphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VFdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2
b2lkIHByb3BlcnR5Q2hhbmdlKFByb3BlcnR5Q2hhbmdlRXZlbnQgcGNlKSB7DQotICAgICAgICBM
T0cuaW5mbygNCi0gICAgICAgICAgICAiTm90YXRpb24gY2hhbmdlOiINCi0gICAgICAgICAgICAg
ICAgKyBwY2UuZ2V0T2xkVmFsdWUoKQ0KLSAgICAgICAgICAgICAgICArICIgdG8gIg0KLSAgICAg
ICAgICAgICAgICArIHBjZS5nZXROZXdWYWx1ZSgpKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwu
SU5GTywgIk5vdGF0aW9uIGNoYW5nZTogezB9IHRvIHsxfSIsDQorICAgICAgICAgICAgICAgIG5l
dyBPYmplY3RbXXtwY2UuZ2V0T2xkVmFsdWUoKSwgcGNlLmdldE5ld1ZhbHVlKCl9KTsNCisNCiAg
ICAgICAgIEFyZ29FdmVudFB1bXAuZmlyZUV2ZW50KA0KICAgICAgICAgICAgIG5ldyBBcmdvTm90
YXRpb25FdmVudChBcmdvRXZlbnRUeXBlcy5OT1RBVElPTl9DSEFOR0VELCBwY2UpKTsNCiAgICAg
fQ0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3Rh
dGlvbi9Ob3RhdGlvbk5hbWVJbXBsLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9y
Zy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC9ub3RhdGlvbi9Ob3RhdGlvbk5hbWVJbXBsLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5
MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vTm90YXRpb25OYW1lSW1wbC5q
YXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L25vdGF0aW9uL05vdGF0aW9uTmFtZUltcGwuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDAN
CkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBD
b3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0
IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAq
IGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGlj
IExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBh
bmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDIsMTAgKzQyLDExIEBADQogaW1wb3J0IGphdmEudXRp
bC5Db2xsZWN0aW9uczsNCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQogaW1wb3J0IGphdmEudXRp
bC5MaXN0SXRlcmF0b3I7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9y
dCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5nLkljb247
DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3Vt
bC5hcHBsaWNhdGlvbi5ldmVudHMuQXJnb0V2ZW50UHVtcDsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
YXBwbGljYXRpb24uZXZlbnRzLkFyZ29FdmVudFR5cGVzOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5h
cHBsaWNhdGlvbi5ldmVudHMuQXJnb05vdGF0aW9uRXZlbnQ7DQpAQCAtNjYsMTUgKzY3LDE2IEBA
DQogICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRp
YyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihOb3RhdGlvbk5hbWVJbXBsLmNs
YXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBM
b2dnZXIuZ2V0TG9nZ2VyKE5vdGF0aW9uTmFtZUltcGwuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAg
ICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsNCiAgICAgcHJpdmF0ZSBTdHJpbmcgdmVyc2lvbjsNCiAg
ICAgcHJpdmF0ZSBJY29uIGljb247DQogDQotICAgIC8qKiBUaGUgb25lIGFuZCBvbmx5IGxpc3Qg
b2Ygbm90YXRpb25zIGF2YWlsYWJsZSANCisgICAgLyoqIFRoZSBvbmUgYW5kIG9ubHkgbGlzdCBv
ZiBub3RhdGlvbnMgYXZhaWxhYmxlDQogICAgICAqIGluIHRoZSBydW5uaW5nIEFyZ29VTUwgYXBw
bGljYXRpb24uICovDQotICAgIHByaXZhdGUgc3RhdGljIEFycmF5TGlzdDxOb3RhdGlvbk5hbWU+
IG5vdGF0aW9ucyA9IA0KKyAgICBwcml2YXRlIHN0YXRpYyBBcnJheUxpc3Q8Tm90YXRpb25OYW1l
PiBub3RhdGlvbnMgPQ0KICAgICAgICAgbmV3IEFycmF5TGlzdDxOb3RhdGlvbk5hbWU+KCk7DQog
DQogICAgIC8qKg0KQEAgLTIxNiw3ICsyMTgsNyBAQA0KIAl9DQogICAgICAgICByZXR1cm4gbm47
DQogICAgIH0NCi0gICAgDQorDQogICAgIHN0YXRpYyBib29sZWFuIHJlbW92ZU5vdGF0aW9uKE5v
dGF0aW9uTmFtZSB0aGVOb3RhdGlvbikgIHsNCiAgICAgICAgIHJldHVybiBub3RhdGlvbnMucmVt
b3ZlKHRoZU5vdGF0aW9uKTsNCiAgICAgfQ0KQEAgLTI0Nyw3ICsyNDksNyBAQA0KIAkJfQ0KIAkg
ICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCiAJICAgICAgICAvLyBUT0RPOiBEb2N1bWVudCB3
aHkgd2UgY2F0Y2ggdGhpcy4NCi0JICAgICAgICBMT0cuZXJyb3IoIlVuZXhwZWN0ZWQgZXhjZXB0
aW9uIiwgZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiVW5leHBl
Y3RlZCBleGNlcHRpb24iLCBlKTsNCiAJICAgIH0NCiAJfQ0KIAlyZXR1cm4gbnVsbDsNCg0KTW9k
aWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vTm90
YXRpb25Qcm92aWRlci5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNl
L2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90
YXRpb24vTm90YXRpb25Qcm92aWRlci5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5
OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL05vdGF0aW9uUHJvdmlkZXIuamF2YQkob3Jp
Z2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlv
bi9Ob3RhdGlvblByb3ZpZGVyLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2
ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0
IChjKSAyMDA5LTIwMTAgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChj
KSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFy
ZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExp
Y2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQg
aXMgYXZhaWxhYmxlIGF0DQpAQCAtNDIsOCArNDIsOSBAQA0KIGltcG9ydCBqYXZhLmJlYW5zLlBy
b3BlcnR5Q2hhbmdlTGlzdGVuZXI7DQogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQogaW1w
b3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZl
bDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KLWltcG9ydCBvcmcuYXBh
Y2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwubW9kZWwuQWRkQXNzb2NpYXRp
b25FdmVudDsNCiBpbXBvcnQgb3JnLmFyZ291bWwubW9kZWwuRGVsZXRlSW5zdGFuY2VFdmVudDsN
CiBpbXBvcnQgb3JnLmFyZ291bWwubW9kZWwuTW9kZWw7DQpAQCAtNTcsMTIgKzU4LDEzIEBADQog
ICogYnkgcGFyc2luZyB0aGUgdGV4dC4NCiAgKiBBZGRpdGlvbmFsbHksIGEgaGVscCB0ZXh0IGZv
ciB0aGUgcGFyc2luZyBpcyBwcm92aWRlZCwNCiAgKiBzbyB0aGF0IHRoZSB1c2VyIGtub3dzIHRo
ZSBzeW50YXguDQotICogDQorICoNCiAgKiBAYXV0aG9yIE1pY2hpZWwgdmFuIGRlciBXdWxwDQog
ICovDQogcHVibGljIGFic3RyYWN0IGNsYXNzIE5vdGF0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBQ
cm9wZXJ0eUNoYW5nZUxpc3RlbmVyIHsNCiANCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9n
Z2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoTm90YXRpb25Qcm92aWRlci5jbGFzcyk7DQorICAg
IHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdldExv
Z2dlcihOb3RhdGlvblByb3ZpZGVyLmNsYXNzLmdldE5hbWUoKSk7DQogICAgIHByaXZhdGUgTm90
YXRpb25SZW5kZXJlciByZW5kZXJlcjsNCiANCiAgICAgLyoqDQpAQCAtODIsNyArODQsNyBAQA0K
ICAgICAvKioNCiAgICAgICogUGFyc2VzIHRoZSBnaXZlbiB0ZXh0LCBhbmQgYWRhcHRzIHRoZSBt
b2RlbEVsZW1lbnQgYW5kDQogICAgICAqIG1heWJlIHJlbGF0ZWQgZWxlbWVudHMgYWNjb3JkaW5n
bHkuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gbW9kZWxFbGVtZW50IHRoZSBt
b2RlbGVsZW1lbnQgdG8gYWRhcHQNCiAgICAgICogQHBhcmFtIHRleHQgdGhlIHN0cmluZyBnaXZl
biBieSB0aGUgdXNlciB0byBiZSBwYXJzZWQNCiAgICAgICogdG8gYWRhcHQgdGhlIG1vZGVsDQpA
QCAtOTEsNTQgKzkzLDU0IEBADQogDQogICAgIC8qKg0KICAgICAgKiBHZW5lcmF0ZSBhIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGdpdmVuIG1vZGVsIGVsZW1lbnQuDQotICAgICAqIA0K
KyAgICAgKg0KICAgICAgKiBAcGFyYW0gbW9kZWxFbGVtZW50IHRoZSBiYXNlIFVNTCBlbGVtZW50
DQogICAgICAqIEBwYXJhbSBzZXR0aW5ncyBzZXR0aW5ncyB0aGF0IGNvbnRyb2wgcmVuZGVyaW5n
IG9mIHRoZSB0ZXh0DQogICAgICAqIEByZXR1cm4gdGhlIHN0cmluZyB3cml0dGVuIGluIHRoZSBj
b3JyZWN0IG5vdGF0aW9uDQogICAgICAqLw0KICAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIHRv
U3RyaW5nKE9iamVjdCBtb2RlbEVsZW1lbnQsDQogICAgICAgICAgICAgTm90YXRpb25TZXR0aW5n
cyBzZXR0aW5ncyk7DQotICAgIA0KKw0KICAgICAvKioNCi0gICAgICogSW5pdGlhbGl6ZSB0aGUg
YXBwcm9wcmlhdGUgbW9kZWwgY2hhbmdlIGxpc3RlbmVycyANCisgICAgICogSW5pdGlhbGl6ZSB0
aGUgYXBwcm9wcmlhdGUgbW9kZWwgY2hhbmdlIGxpc3RlbmVycw0KICAgICAgKiBmb3IgdGhlIGdp
dmVuIG1vZGVsZWxlbWVudCB0byB0aGUgZ2l2ZW4gbGlzdGVuZXIuDQotICAgICAqIE92ZXJydWxl
IHRoaXMgd2hlbiB5b3UgbmVlZCBtb3JlIHRoYW4gDQorICAgICAqIE92ZXJydWxlIHRoaXMgd2hl
biB5b3UgbmVlZCBtb3JlIHRoYW4NCiAgICAgICogbGlzdGVuaW5nIHRvIGFsbCBldmVudHMgZnJv
bSB0aGUgYmFzZSBtb2RlbGVsZW1lbnQuDQotICAgICAqIA0KLSAgICAgKiBAcGFyYW0gbW9kZWxF
bGVtZW50IHRoZSBtb2RlbGVsZW1lbnQgdGhhdCB3ZSBwcm92aWRlIA0KKyAgICAgKg0KKyAgICAg
KiBAcGFyYW0gbW9kZWxFbGVtZW50IHRoZSBtb2RlbGVsZW1lbnQgdGhhdCB3ZSBwcm92aWRlDQog
ICAgICAqIG5vdGF0aW9uIGZvcg0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgaW5pdGlhbGlz
ZUxpc3RlbmVyKE9iamVjdCBtb2RlbEVsZW1lbnQpIHsNCiAgICAgICAgIGFkZEVsZW1lbnRMaXN0
ZW5lcihtb2RlbEVsZW1lbnQpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICog
Q2xlYW4gb3V0IHRoZSBsaXN0ZW5lcnMgcmVnaXN0ZXJlZCBiZWZvcmUuDQogICAgICAqIDxwPg0K
LSAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyB0byByZW1vdmUgYWxsIGxpc3Rl
bmVycyANCisgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgdG8gcmVtb3ZlIGFs
bCBsaXN0ZW5lcnMNCiAgICAgICogdGhhdCB3ZXJlIHJlbWVtYmVyZWQgYnkgdGhlIHV0aWxpdHkg
ZnVuY3Rpb25zIGJlbG93Lg0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgY2xlYW5MaXN0ZW5l
cigpIHsNCiAgICAgICAgIHJlbW92ZUFsbEVsZW1lbnRMaXN0ZW5lcnMoKTsNCiAgICAgfQ0KLSAg
ICANCisNCiAgICAgLyoqDQogICAgICAqIFVwZGF0ZSB0aGUgc2V0IG9mIGxpc3RlbmVycyBiYXNl
ZCBvbiB0aGUgZ2l2ZW4gZXZlbnQuIDxwPg0KLSAgICAgKiANCi0gICAgICogVGhlIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24ganVzdCByZW1vdmVzIGFsbCBsaXN0ZW5lcnMsIGFuZCB0aGVuIA0KLSAg
ICAgKiByZS1pbml0aWFsaXplcyBjb21wbGV0ZWx5IC0gdGhpcyBpcyBtZXRob2QgMS4gDQotICAg
ICAqIEEgbW9yZSBlZmZpY2llbnQgd2F5IHdvdWxkIGJlIHRvIGRpc3NlY3QgDQorICAgICAqDQor
ICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGp1c3QgcmVtb3ZlcyBhbGwgbGlzdGVu
ZXJzLCBhbmQgdGhlbg0KKyAgICAgKiByZS1pbml0aWFsaXplcyBjb21wbGV0ZWx5IC0gdGhpcyBp
cyBtZXRob2QgMS4NCisgICAgICogQSBtb3JlIGVmZmljaWVudCB3YXkgd291bGQgYmUgdG8gZGlz
c2VjdA0KICAgICAgKiB0aGUgcHJvcGVydHlDaGFuZ2VFdmVudCwgYW5kIG9ubHkgYWRhcHQgdGhl
IGxpc3RlbmVycw0KICAgICAgKiB0aGF0IG5lZWQgdG8gYmUgYWRhcHRlZCAtIHRoaXMgaXMgbWV0
aG9kIDIuIDxwPg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogTWV0aG9kIDIgaXMgZXhwbGFp
bmVkIGJ5IHRoZSBjb2RlIGJlbG93IHRoYXQgaXMgY29tbWVudGVkIG91dC4NCiAgICAgICogTWV0
aG9kIDEgaXMgdGhlIGVhc2llc3QgdG8gaW1wbGVtZW50LCBzaW5jZSBhdCBldmVyeSBhcnJpdmFs
IG9mIGFuIGV2ZW50LA0KLSAgICAgKiB3ZSBqdXN0IHJlbW92ZSBhbGwgb2xkIGxpc3RlbmVycywg
YW5kIHRoZW4gaW5zcGVjdCB0aGUgY3VycmVudCBtb2RlbCwgDQotICAgICAqIGFuZCBhZGQgbGlz
dGVuZXJzIHdoZXJlIHdlIG5lZWQgdGhlbS4gSS5lLiB0aGUgYWR2YW50YWdlIGlzIA0KLSAgICAg
KiB0aGF0IHdlIG9ubHkgbmVlZCB0byB0cmF2ZXJzZSB0aGUgbW9kZWwgc3RydWN0dXJlIGluIG9u
ZSBsb2NhdGlvbiwgaS5lLiANCisgICAgICogd2UganVzdCByZW1vdmUgYWxsIG9sZCBsaXN0ZW5l
cnMsIGFuZCB0aGVuIGluc3BlY3QgdGhlIGN1cnJlbnQgbW9kZWwsDQorICAgICAqIGFuZCBhZGQg
bGlzdGVuZXJzIHdoZXJlIHdlIG5lZWQgdGhlbS4gSS5lLiB0aGUgYWR2YW50YWdlIGlzDQorICAg
ICAqIHRoYXQgd2Ugb25seSBuZWVkIHRvIHRyYXZlcnNlIHRoZSBtb2RlbCBzdHJ1Y3R1cmUgaW4g
b25lIGxvY2F0aW9uLCBpLmUuDQogICAgICAqIHRoZSBpbml0aWFsaXNlTGlzdGVuZXIoKSBtZXRo
b2QuDQotICAgICAqIA0KLSAgICAgKiBAcGFyYW0gbW9kZWxFbGVtZW50IHRoZSBtb2RlbGVsZW1l
bnQgdGhhdCB3ZSBwcm92aWRlIA0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gbW9kZWxFbGVtZW50
IHRoZSBtb2RlbGVsZW1lbnQgdGhhdCB3ZSBwcm92aWRlDQogICAgICAqIG5vdGF0aW9uIGZvcg0K
ICAgICAgKiBAcGFyYW0gcGNlIHRoZSByZWNlaXZlZCBldmVudCwgdGhhdCB3ZSBiYXNlIHRoZSBj
aGFuZ2VzIG9uDQogICAgICAqLw0KQEAgLTE0OCwxNiArMTUwLDE2IEBADQogICAgICAgICAvLyAm
JiBldmVudC5wcm9wZXJ0eU5hbWUgPSAicGFyYW1ldGVyIg0KICAgICAgICAgLy8gICAgIGlmIGV2
ZW50IGluc3RhbmNlb2YgQWRkQXNzb2NpYXRpb25FdmVudA0KICAgICAgICAgLy8gICAgICAgICBH
ZXQgdGhlIHBhcmFtZXRlciBpbnN0YW5jZSBmcm9tIGV2ZW50Lm5ld1ZhbHVlDQotICAgICAgICAv
LyAgICAgICAgIENhbGwgbW9kZWwgdG8gYWRkIGxpc3RlbmVyIG9uIHBhcmFtZXRlciBvbiBjaGFu
Z2UgDQorICAgICAgICAvLyAgICAgICAgIENhbGwgbW9kZWwgdG8gYWRkIGxpc3RlbmVyIG9uIHBh
cmFtZXRlciBvbiBjaGFuZ2UNCiAgICAgICAgIC8vICAgICAgICAgICAgIG9mICJuYW1lIiwgInR5
cGUiDQogICAgICAgICAvLyAgICAgZWxzZSBpZiBldmVudCBpbnN0YW5jZW9mIFJlbW92ZUFzc29j
aWF0aW9uRXZlbnQNCiAgICAgICAgIC8vICAgICAgICAgR2V0IHRoZSBwYXJhbWV0ZXIgaW5zdGFu
Y2UgZnJvbSBldmVudC5vbGRWYWx1ZQ0KLSAgICAgICAgLy8gICAgICAgICBDYWxsIG1vZGVsIHRv
IHJlbW92ZSBsaXN0ZW5lciBvbiBwYXJhbWV0ZXIgb24gY2hhbmdlIA0KKyAgICAgICAgLy8gICAg
ICAgICBDYWxsIG1vZGVsIHRvIHJlbW92ZSBsaXN0ZW5lciBvbiBwYXJhbWV0ZXIgb24gY2hhbmdl
DQogICAgICAgICAvLyAgICAgICAgICAgICBvZiAibmFtZSIsICJ0eXBlIg0KICAgICAgICAgLy8g
ICAgIGVuZCBpZg0KLSAgICAgICAgLy8gZW5kIGlmIA0KKyAgICAgICAgLy8gZW5kIGlmDQogICAg
ICAgICBpZiAoTW9kZWwuZ2V0VW1sRmFjdG9yeSgpLmlzUmVtb3ZlZChtb2RlbEVsZW1lbnQpKSB7
DQotICAgICAgICAgICAgTE9HLndhcm4oIkVuY291bnRlcmVkIGRlbGV0ZWQgb2JqZWN0IGR1cmlu
ZyBkZWxldGUgb2YgIiANCisgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsICJFbmNv
dW50ZXJlZCBkZWxldGVkIG9iamVjdCBkdXJpbmcgZGVsZXRlIG9mICINCiAgICAgICAgICAgICAg
ICAgICAgICsgbW9kZWxFbGVtZW50KTsNCiAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICB9
DQpAQCAtMTY4LDE5ICsxNzAsMTkgQEANCiAgICAgcHVibGljIHZvaWQgcHJvcGVydHlDaGFuZ2Uo
UHJvcGVydHlDaGFuZ2VFdmVudCBldnQpIHsNCiAgICAgICAgIGlmIChyZW5kZXJlciAhPSBudWxs
KSB7DQogICAgICAgICAgICAgT2JqZWN0IG93bmVyID0gcmVuZGVyZXIuZ2V0T3duZXIodGhpcyk7
DQotICAgICAgICAgICAgaWYgKChvd25lciA9PSBldnQuZ2V0U291cmNlKCkpIA0KKyAgICAgICAg
ICAgIGlmICgob3duZXIgPT0gZXZ0LmdldFNvdXJjZSgpKQ0KICAgICAgICAgICAgICAgICAgICAg
JiYgKGV2dCBpbnN0YW5jZW9mIERlbGV0ZUluc3RhbmNlRXZlbnQpKSB7DQogICAgICAgICAgICAg
ICAgIHJldHVybjsNCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAgaWYgKG93bmVyICE9IG51
bGwpIHsNCiAgICAgICAgICAgICAgICAgaWYgKE1vZGVsLmdldFVtbEZhY3RvcnkoKS5pc1JlbW92
ZWQob3duZXIpKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cud2FybigiRW5jb3VudGVyZWQg
ZGVsZXRlZCBvYmplY3QgZHVyaW5nIGRlbGV0ZSBvZiAiIA0KKyAgICAgICAgICAgICAgICAgICAg
TE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAiRW5jb3VudGVyZWQgZGVsZXRlZCBvYmplY3QgZHVyaW5n
IGRlbGV0ZSBvZiAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3duZXIpOw0KICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgIHJlbmRlcmVyLm5vdGF0aW9uUmVuZGVyaW5nQ2hhbmdlZCh0aGlzLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgIHRvU3RyaW5nKG93bmVyLCByZW5kZXJlci5nZXROb3RhdGlvblNldHRp
bmdzKHRoaXMpKSk7DQotICAgICAgICAgICAgICAgIGlmIChldnQgaW5zdGFuY2VvZiBBZGRBc3Nv
Y2lhdGlvbkV2ZW50IA0KKyAgICAgICAgICAgICAgICBpZiAoZXZ0IGluc3RhbmNlb2YgQWRkQXNz
b2NpYXRpb25FdmVudA0KICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGV2dCBpbnN0YW5jZW9m
IFJlbW92ZUFzc29jaWF0aW9uRXZlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxp
c2VMaXN0ZW5lcihvd25lcik7DQogICAgICAgICAgICAgICAgIH0NCkBAIC0xOTAsMTUgKzE5Miwx
NSBAQA0KIA0KICAgICAvKg0KICAgICAgKiBBZGQgYW4gZWxlbWVudCBsaXN0ZW5lciBhbmQgcmVt
ZW1iZXIgdGhlIHJlZ2lzdHJhdGlvbi4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJh
bSBlbGVtZW50DQogICAgICAqICAgICAgICAgICAgZWxlbWVudCB0byBsaXN0ZW4gZm9yIGNoYW5n
ZXMgb24NCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5tb2RlbC5Nb2RlbEV2ZW50UHVtcCNhZGRN
b2RlbEV2ZW50TGlzdGVuZXIoUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciwgT2JqZWN0LCBTdHJpbmcp
DQogICAgICAqLw0KLSAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBhZGRFbGVtZW50TGlzdGVuZXIo
UHJvcGVydHlDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lciwgDQorICAgIHByb3RlY3RlZCBmaW5hbCB2
b2lkIGFkZEVsZW1lbnRMaXN0ZW5lcihQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIGxpc3RlbmVyLA0K
ICAgICAgICAgICAgIE9iamVjdCBlbGVtZW50KSB7DQogICAgICAgICBpZiAoTW9kZWwuZ2V0VW1s
RmFjdG9yeSgpLmlzUmVtb3ZlZChlbGVtZW50KSkgew0KLSAgICAgICAgICAgIExPRy53YXJuKCJF
bmNvdW50ZXJlZCBkZWxldGVkIG9iamVjdCBkdXJpbmcgZGVsZXRlIG9mICIgKyBlbGVtZW50KTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsICJFbmNvdW50ZXJlZCBkZWxldGVk
IG9iamVjdCBkdXJpbmcgZGVsZXRlIG9mICIgKyBlbGVtZW50KTsNCiAgICAgICAgICAgICByZXR1
cm47DQogICAgICAgICB9DQogICAgICAgICBPYmplY3RbXSBlbnRyeSA9IG5ldyBPYmplY3RbXSB7
ZWxlbWVudCwgbnVsbH07DQpAQCAtMjA2LDI1ICsyMDgsMjUgQEANCiAgICAgICAgICAgICBsaXN0
ZW5lcnMuYWRkKGVudHJ5KTsNCiAgICAgICAgICAgICBNb2RlbC5nZXRQdW1wKCkuYWRkTW9kZWxF
dmVudExpc3RlbmVyKGxpc3RlbmVyLCBlbGVtZW50KTsNCiAgICAgICAgIH0gZWxzZSB7DQotICAg
ICAgICAgICAgTE9HLndhcm4oIkF0dGVtcHRlZCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uIG9mIGV2
ZW50IGxpc3RlbmVyIg0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIkF0dGVt
cHRlZCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uIG9mIGV2ZW50IGxpc3RlbmVyIg0KICAgICAgICAg
ICAgICAgICAgICAgKyAiIC0gRWxlbWVudDogIiArIGVsZW1lbnQgKyAiIExpc3RlbmVyOiAiICsg
bGlzdGVuZXIpOw0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCi0gICAg
ICogVXRpbGl0eSBmdW5jdGlvbiB0byBhZGQgYSBsaXN0ZW5lciBmb3IgYW4gYXJyYXkgb2YgcHJv
cGVydHkgbmFtZXMgDQorICAgICAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gYWRkIGEgbGlzdGVuZXIg
Zm9yIGFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzDQogICAgICAqIGFuZCByZW1lbWJlciB0aGUg
cmVnaXN0cmF0aW9uLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGVsZW1lbnQg
ZWxlbWVudCB0byBsaXN0ZW4gZm9yIGNoYW5nZXMgb24NCiAgICAgICovDQogICAgIHB1YmxpYyBm
aW5hbCB2b2lkIGFkZEVsZW1lbnRMaXN0ZW5lcihPYmplY3QgZWxlbWVudCkgew0KICAgICAgICAg
YWRkRWxlbWVudExpc3RlbmVyKHRoaXMsIGVsZW1lbnQpOw0KICAgICB9DQotICAgIA0KKw0KICAg
ICAvKg0KLSAgICAgKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGFkZCBhIGxpc3RlbmVyIGZvciBhIGdp
dmVuIHByb3BlcnR5IG5hbWUgDQorICAgICAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gYWRkIGEgbGlz
dGVuZXIgZm9yIGEgZ2l2ZW4gcHJvcGVydHkgbmFtZQ0KICAgICAgKiBhbmQgcmVtZW1iZXIgdGhl
IHJlZ2lzdHJhdGlvbi4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBlbGVtZW50
DQogICAgICAqICAgICAgICAgICAgZWxlbWVudCB0byBsaXN0ZW4gZm9yIGNoYW5nZXMgb24NCiAg
ICAgICogQHBhcmFtIHByb3BlcnR5DQpAQCAtMjMyLDEwICsyMzQsMTAgQEANCiAgICAgICogQHNl
ZSBvcmcuYXJnb3VtbC5tb2RlbC5Nb2RlbEV2ZW50UHVtcCNhZGRNb2RlbEV2ZW50TGlzdGVuZXIo
UHJvcGVydHlDaGFuZ2VMaXN0ZW5lciwNCiAgICAgICogICAgICBPYmplY3QsIFN0cmluZykNCiAg
ICAgICovDQotICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIGFkZEVsZW1lbnRMaXN0ZW5lcihQcm9w
ZXJ0eUNoYW5nZUxpc3RlbmVyIGxpc3RlbmVyLCANCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQg
YWRkRWxlbWVudExpc3RlbmVyKFByb3BlcnR5Q2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIsDQogICAg
ICAgICAgICAgT2JqZWN0IGVsZW1lbnQsIFN0cmluZyBwcm9wZXJ0eSkgew0KICAgICAgICAgaWYg
KE1vZGVsLmdldFVtbEZhY3RvcnkoKS5pc1JlbW92ZWQoZWxlbWVudCkpIHsNCi0gICAgICAgICAg
ICBMT0cud2FybigiRW5jb3VudGVyZWQgZGVsZXRlZCBvYmplY3QgZHVyaW5nIGRlbGV0ZSBvZiAi
ICsgZWxlbWVudCk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAiRW5jb3Vu
dGVyZWQgZGVsZXRlZCBvYmplY3QgZHVyaW5nIGRlbGV0ZSBvZiAiICsgZWxlbWVudCk7DQogICAg
ICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgfQ0KICAgICAgICAgT2JqZWN0W10gZW50cnkgPSBu
ZXcgT2JqZWN0W10ge2VsZW1lbnQsIHByb3BlcnR5fTsNCkBAIC0yNDMsMTUgKzI0NSwxNSBAQA0K
ICAgICAgICAgICAgIGxpc3RlbmVycy5hZGQoZW50cnkpOw0KICAgICAgICAgICAgIE1vZGVsLmdl
dFB1bXAoKS5hZGRNb2RlbEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGVsZW1lbnQsIHByb3BlcnR5
KTsNCiAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgTE9HLmRlYnVnKCJBdHRlbXB0ZWQg
ZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBvZiBldmVudCBsaXN0ZW5lciINCi0gICAgICAgICAgICAg
ICAgICAgICsgIiAtIEVsZW1lbnQ6ICIgKyBlbGVtZW50ICsgIiBMaXN0ZW5lcjogIiArIGxpc3Rl
bmVyKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJBdHRlbXB0ZWQgZHVwbGlj
YXRlIHJlZ2lzdHJhdGlvbiBvZiBldmVudCBsaXN0ZW5lciINCisgICAgICAgICAgICAgICAgICAg
ICsgIiAtIEVsZW1lbnQ6IHswfSBMaXN0ZW5lcjogezF9IiwgbmV3IE9iamVjdFtde2VsZW1lbnQs
IGxpc3RlbmVyfSk7DQogICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KLSAg
ICAgKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGFkZCBhIGxpc3RlbmVyIGZvciBhbiBhcnJheSBvZiBw
cm9wZXJ0eSBuYW1lcyANCisgICAgICogVXRpbGl0eSBmdW5jdGlvbiB0byBhZGQgYSBsaXN0ZW5l
ciBmb3IgYW4gYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMNCiAgICAgICogYW5kIHJlbWVtYmVyIHRo
ZSByZWdpc3RyYXRpb24uDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gZWxlbWVu
dCBlbGVtZW50IHRvIGxpc3RlbiBmb3IgY2hhbmdlcyBvbg0KICAgICAgKiBAcGFyYW0gcHJvcGVy
dHkgbmFtZSBvZiBwcm9wZXJ0eSB0byBsaXN0ZW4gZm9yIGNoYW5nZXMgb2YNCiAgICAgICovDQpA
QCAtMjYwLDkgKzI2Miw5IEBADQogICAgIH0NCiANCiAgICAgLyoNCi0gICAgICogVXRpbGl0eSBm
dW5jdGlvbiB0byBhZGQgYSBsaXN0ZW5lciBmb3IgYW4gYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMg
DQorICAgICAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gYWRkIGEgbGlzdGVuZXIgZm9yIGFuIGFycmF5
IG9mIHByb3BlcnR5IG5hbWVzDQogICAgICAqIGFuZCByZW1lbWJlciB0aGUgcmVnaXN0cmF0aW9u
Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGVsZW1lbnQNCiAgICAgICogICAg
ICAgICAgICBlbGVtZW50IHRvIGxpc3RlbiBmb3IgY2hhbmdlcyBvbg0KICAgICAgKiBAcGFyYW0g
cHJvcGVydHkNCkBAIC0yNzAsMTAgKzI3MiwxMCBAQA0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1s
Lm1vZGVsLk1vZGVsRXZlbnRQdW1wI2FkZE1vZGVsRXZlbnRMaXN0ZW5lcihQcm9wZXJ0eUNoYW5n
ZUxpc3RlbmVyLA0KICAgICAgKiAgICAgIE9iamVjdCwgU3RyaW5nKQ0KICAgICAgKi8NCi0gICAg
cHJvdGVjdGVkIGZpbmFsIHZvaWQgYWRkRWxlbWVudExpc3RlbmVyKFByb3BlcnR5Q2hhbmdlTGlz
dGVuZXIgbGlzdGVuZXIsIA0KKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBhZGRFbGVtZW50TGlz
dGVuZXIoUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lciwNCiAgICAgICAgICAgICBPYmpl
Y3QgZWxlbWVudCwgU3RyaW5nW10gcHJvcGVydHkpIHsNCiAgICAgICAgIGlmIChNb2RlbC5nZXRV
bWxGYWN0b3J5KCkuaXNSZW1vdmVkKGVsZW1lbnQpKSB7DQotICAgICAgICAgICAgTE9HLndhcm4o
IkVuY291bnRlcmVkIGRlbGV0ZWQgb2JqZWN0IGR1cmluZyBkZWxldGUgb2YgIiArIGVsZW1lbnQp
Ow0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIkVuY291bnRlcmVkIGRlbGV0
ZWQgb2JqZWN0IGR1cmluZyBkZWxldGUgb2YgIiArIGVsZW1lbnQpOw0KICAgICAgICAgICAgIHJl
dHVybjsNCiAgICAgICAgIH0NCiAgICAgICAgIE9iamVjdFtdIGVudHJ5ID0gbmV3IE9iamVjdFtd
IHtlbGVtZW50LCBwcm9wZXJ0eX07DQpAQCAtMjgxLDUxICsyODMsNTIgQEANCiAgICAgICAgICAg
ICBsaXN0ZW5lcnMuYWRkKGVudHJ5KTsNCiAgICAgICAgICAgICBNb2RlbC5nZXRQdW1wKCkuYWRk
TW9kZWxFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBlbGVtZW50LCBwcm9wZXJ0eSk7DQogICAgICAg
ICB9IGVsc2Ugew0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygiQXR0ZW1wdGVkIGR1cGxpY2F0ZSBy
ZWdpc3RyYXRpb24gb2YgZXZlbnQgbGlzdGVuZXIiDQorICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5GSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCBkdXBsaWNhdGUgcmVnaXN0
cmF0aW9uIG9mIGV2ZW50IGxpc3RlbmVyIg0KICAgICAgICAgICAgICAgICAgICAgKyAiIC0gRWxl
bWVudDogIiArIGVsZW1lbnQgKyAiIExpc3RlbmVyOiAiICsgbGlzdGVuZXIpOw0KICAgICAgICAg
fQ0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCi0gICAgICogVXRpbGl0eSBmdW5jdGlvbiB0
byBhZGQgYSBsaXN0ZW5lciBmb3IgYW4gYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgDQorICAgICAq
IFV0aWxpdHkgZnVuY3Rpb24gdG8gYWRkIGEgbGlzdGVuZXIgZm9yIGFuIGFycmF5IG9mIHByb3Bl
cnR5IG5hbWVzDQogICAgICAqIGFuZCByZW1lbWJlciB0aGUgcmVnaXN0cmF0aW9uLg0KLSAgICAg
KiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGVsZW1lbnQgZWxlbWVudCB0byBsaXN0ZW4gZm9y
IGNoYW5nZXMgb24NCi0gICAgICogQHBhcmFtIHByb3BlcnR5IGFycmF5IG9mIHByb3BlcnR5IG5h
bWVzIChTdHJpbmdzKSANCisgICAgICogQHBhcmFtIHByb3BlcnR5IGFycmF5IG9mIHByb3BlcnR5
IG5hbWVzIChTdHJpbmdzKQ0KICAgICAgKiB0byBsaXN0ZW4gZm9yIGNoYW5nZXMgb2YNCiAgICAg
ICovDQogICAgIHB1YmxpYyBmaW5hbCB2b2lkIGFkZEVsZW1lbnRMaXN0ZW5lcihPYmplY3QgZWxl
bWVudCwgU3RyaW5nW10gcHJvcGVydHkpIHsNCiAgICAgICAgIGFkZEVsZW1lbnRMaXN0ZW5lcih0
aGlzLCBlbGVtZW50LCBwcm9wZXJ0eSk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qDQotICAg
ICAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gcmVtb3ZlIGFuIGVsZW1lbnQgbGlzdGVuZXIgDQorICAg
ICAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gcmVtb3ZlIGFuIGVsZW1lbnQgbGlzdGVuZXINCiAgICAg
ICogYW5kIGFkYXB0IHRoZSByZW1lbWJlcmVkIGxpc3Qgb2YgcmVnaXN0cmF0aW9uLg0KLSAgICAg
KiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGVsZW1lbnQNCiAgICAgICogICAgICAgICAgICBl
bGVtZW50IHRvIGxpc3RlbiBmb3IgY2hhbmdlcyBvbg0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1s
Lm1vZGVsLk1vZGVsRXZlbnRQdW1wI2FkZE1vZGVsRXZlbnRMaXN0ZW5lcihQcm9wZXJ0eUNoYW5n
ZUxpc3RlbmVyLCBPYmplY3QsIFN0cmluZykNCiAgICAgICovDQotICAgIHByb3RlY3RlZCBmaW5h
bCB2b2lkIHJlbW92ZUVsZW1lbnRMaXN0ZW5lcihQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIGxpc3Rl
bmVyLCANCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgcmVtb3ZlRWxlbWVudExpc3RlbmVyKFBy
b3BlcnR5Q2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIsDQogICAgICAgICAgICAgT2JqZWN0IGVsZW1l
bnQpIHsNCiAgICAgICAgIGxpc3RlbmVycy5yZW1vdmUobmV3IE9iamVjdFtdIHtlbGVtZW50LCBu
dWxsfSk7DQogICAgICAgICBNb2RlbC5nZXRQdW1wKCkucmVtb3ZlTW9kZWxFdmVudExpc3RlbmVy
KGxpc3RlbmVyLCBlbGVtZW50KTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQotICAgICAq
IFV0aWxpdHkgZnVuY3Rpb24gdG8gcmVtb3ZlIGFuIGVsZW1lbnQgbGlzdGVuZXIgDQorICAgICAq
IFV0aWxpdHkgZnVuY3Rpb24gdG8gcmVtb3ZlIGFuIGVsZW1lbnQgbGlzdGVuZXINCiAgICAgICog
YW5kIGFkYXB0IHRoZSByZW1lbWJlcmVkIGxpc3Qgb2YgcmVnaXN0cmF0aW9uLg0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogQHBhcmFtIGVsZW1lbnQgZWxlbWVudCB0byBsaXN0ZW4gZm9yIGNo
YW5nZXMgb24NCiAgICAgICovDQogICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlbW92ZUVsZW1lbnRM
aXN0ZW5lcihPYmplY3QgZWxlbWVudCkgew0KICAgICAgICAgcmVtb3ZlRWxlbWVudExpc3RlbmVy
KHRoaXMsIGVsZW1lbnQpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKg0KLSAgICAgKiBVdGls
aXR5IGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgYWxsIGxpc3RlbmVycyANCisgICAgICogVXRpbGl0
eSBmdW5jdGlvbiB0byB1bnJlZ2lzdGVyIGFsbCBsaXN0ZW5lcnMNCiAgICAgICogcmVnaXN0ZXJl
ZCB0aHJvdWdoIGFkZEVsZW1lbnRMaXN0ZW5lci4NCi0gICAgICogDQorICAgICAqDQogICAgICAq
IEBzZWUgI2FkZEVsZW1lbnRMaXN0ZW5lcihPYmplY3QsIFN0cmluZykNCiAgICAgICovDQogICAg
IHByb3RlY3RlZCBmaW5hbCB2b2lkIHJlbW92ZUFsbEVsZW1lbnRMaXN0ZW5lcnMoDQpAQCAtMzQ3
LDkgKzM1MCw5IEBADQogICAgICAgICB9DQogICAgICAgICBsaXN0ZW5lcnMuY2xlYXIoKTsNCiAg
ICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQotICAgICAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gdW5y
ZWdpc3RlciBhbGwgbGlzdGVuZXJzIA0KKyAgICAgKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIHVucmVn
aXN0ZXIgYWxsIGxpc3RlbmVycw0KICAgICAgKiByZWdpc3RlcmVkIHRocm91Z2ggYWRkRWxlbWVu
dExpc3RlbmVyLg0KICAgICAgKi8NCiAgICAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlQWxsRWxl
bWVudExpc3RlbmVycygpIHsNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvbm90YXRpb24vTm90YXRpb25Qcm92aWRlckZhY3RvcnkyLmphdmENClVybDog
aHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9Ob3RhdGlvblByb3ZpZGVyRmFj
dG9yeTIuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC9ub3RhdGlvbi9Ob3RhdGlvblByb3ZpZGVyRmFjdG9yeTIuamF2YQkob3JpZ2luYWwpDQor
KysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9Ob3RhdGlv
blByb3ZpZGVyRmFjdG9yeTIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYg
KzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDktMjAxMCBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJl
IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGlj
ZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBp
cyBhdmFpbGFibGUgYXQNCkBAIC00MiwyMSArNDIsMjEgQEANCiBpbXBvcnQgamF2YS5sYW5nLnJl
ZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsNCiBpbXBvcnQgamF2YS51dGlsLkhhc2hN
YXA7DQogaW1wb3J0IGphdmEudXRpbC5NYXA7DQotDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGou
TG9nZ2VyOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51
dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIC8qKg0KLSAqICBUaGUgTm90YXRpb25Qcm92aWRlckZh
Y3RvcnkyIGlzIGEgc2luZ2xldG9uLCANCi0gKiAgc2luY2UgaXQgaXMgdGhlIGFjY2Vzc3BvaW50
IGZvciBhbGwgRmlncyANCi0gKiAgdG8gYWNjZXNzIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9u
IG9mIG1vZGVsb2JqZWN0cywgDQorICogIFRoZSBOb3RhdGlvblByb3ZpZGVyRmFjdG9yeTIgaXMg
YSBzaW5nbGV0b24sDQorICogIHNpbmNlIGl0IGlzIHRoZSBhY2Nlc3Nwb2ludCBmb3IgYWxsIEZp
Z3MNCisgKiAgdG8gYWNjZXNzIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIG1vZGVsb2Jq
ZWN0cywNCiAgKiAgYW5kIHNpbmNlIHBsdWdpbiBtb2R1bGVzIGNhbiBhZGQgZXh0cmEgbGFuZ3Vh
Z2VzLg0KLSAqICANCisgKg0KICAqIEBhdXRob3IgTWljaGllbA0KICAqLw0KIHB1YmxpYyBmaW5h
bCBjbGFzcyBOb3RhdGlvblByb3ZpZGVyRmFjdG9yeTIgew0KIA0KLSAgICBwcml2YXRlIHN0YXRp
YyBmaW5hbCBMb2dnZXIgTE9HID0gDQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKE5vdGF0aW9u
UHJvdmlkZXJGYWN0b3J5Mi5jbGFzcyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dl
ciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihOb3RhdGlvblByb3ZpZGVyRmFjdG9y
eTIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIFRZUEVfTkFNRSB0aGUg
bmFtZSBvZiB0aGUgbW9kZWxlbGVtZW50LCBlLmcuIGNsYXNzLCBwYWNrYWdlLCBzdGF0ZQ0KQEAg
LTEwMiwzMyArMTAyLDMzIEBADQogICAgICAqIFRZUEVfTk9ERUlOU1RBTkNFIHRoZSB0ZXh0IHNo
b3duIG9uIGEgY29tcG9uZW50SW5zdGFuY2UuDQogICAgICAqLw0KICAgICBwdWJsaWMgc3RhdGlj
IGZpbmFsIGludCBUWVBFX05PREVJTlNUQU5DRSA9IDk7DQotICAgIA0KKw0KICAgICAvKioNCi0g
ICAgICogVFlQRV9UWVBFX09CSkVDVEZMT1dTVEFURV9UWVBFIHRoZSB0ZXh0IHNob3duIG9uIGEg
DQorICAgICAqIFRZUEVfVFlQRV9PQkpFQ1RGTE9XU1RBVEVfVFlQRSB0aGUgdGV4dCBzaG93biBv
biBhDQogICAgICAqIG9iamVjdGZsb3dzdGF0ZSdzIHR5cGUsIGkuZS4gaXRzIGNsYXNzaWZpZXIg
bmFtZS4NCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfT0JKRUNU
RkxPV1NUQVRFX1RZUEUgPSAxMDsNCiANCiAgICAgLyoqDQotICAgICAqIFRZUEVfT0JKRUNURkxP
V1NUQVRFX1NUQVRFIHRoZSB0ZXh0IHNob3duIG9uIGEgDQorICAgICAqIFRZUEVfT0JKRUNURkxP
V1NUQVRFX1NUQVRFIHRoZSB0ZXh0IHNob3duIG9uIGENCiAgICAgICogb2JqZWN0Zmxvd3N0YXRl
J3Mgc3RhdGUuDQogICAgICAqLw0KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX09C
SkVDVEZMT1dTVEFURV9TVEFURSA9IDExOw0KIA0KICAgICAvKioNCi0gICAgICogVFlQRV9DQUxM
U1RBVEUgdGhlIHRleHQgc2hvd24gb24gYSANCisgICAgICogVFlQRV9DQUxMU1RBVEUgdGhlIHRl
eHQgc2hvd24gb24gYQ0KICAgICAgKiBjYWxsc3RhdGUncyBzdGF0ZS4NCiAgICAgICovDQogICAg
IHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfQ0FMTFNUQVRFID0gMTI7DQogDQogICAgIC8q
Kg0KLSAgICAgKiBUWVBFX0NMQVNTSUZJRVJST0xFIHRoZSB0ZXh0IHNob3duIG9uIGEgDQorICAg
ICAqIFRZUEVfQ0xBU1NJRklFUlJPTEUgdGhlIHRleHQgc2hvd24gb24gYQ0KICAgICAgKiBjbGFz
c2lmaWVycm9sZS4NCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVf
Q0xBU1NJRklFUlJPTEUgPSAxMzsNCi0gICAgDQorDQogICAgIC8qKg0KLSAgICAgKiBUWVBFX01F
U1NBR0UgdGhlIHRleHQgc2hvd24gb24gYSBNZXNzYWdlIA0KKyAgICAgKiBUWVBFX01FU1NBR0Ug
dGhlIHRleHQgc2hvd24gb24gYSBNZXNzYWdlDQogICAgICAqIGluIGEgQ29sbGFib3JhdGlvbnMg
ZGlhZ3JhbS4NCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfTUVT
U0FHRSA9IDE0Ow0KQEAgLTE2NSw3ICsxNjUsNyBAQA0KICAgICBwdWJsaWMgc3RhdGljIGZpbmFs
IGludCBUWVBFX0VOVU1FUkFUSU9OX0xJVEVSQUwgPSAyMDsNCiANCiAgICAgLyoqDQotICAgICAq
IFRZUEVfTUVTU0FHRSB0aGUgdGV4dCBzaG93biBvbiBhIE1lc3NhZ2UgDQorICAgICAqIFRZUEVf
TUVTU0FHRSB0aGUgdGV4dCBzaG93biBvbiBhIE1lc3NhZ2UNCiAgICAgICogaW4gYSBDb2xsYWJv
cmF0aW9ucyBkaWFncmFtLg0KICAgICAgKi8NCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQg
VFlQRV9TRF9NRVNTQUdFID0gMjE7DQpAQCAtMjA5LDEyICsyMDksMTIgQEANCiAgICAgICogR2V0
IGEgTm90YXRpb25Qcm92aWRlciBmb3IgdGhlIGN1cnJlbnQgcHJvamVjdC4NCiAgICAgICogPHA+
DQogICAgICAqIElmIHRoZXJlIGlzIGFueSByZWFzb24gZm9yIGZhaWx1cmUsIG51bGwgaXMgcmV0
dXJuZWQgLSBubw0KLSAgICAgKiBleGNlcHRpb24gaXMgdGhyb3duLiANCisgICAgICogZXhjZXB0
aW9uIGlzIHRocm93bi4NCiAgICAgICogVGhlIGNhbGxlciBpcyBzdXBwb3NlZCB0byBkZWFsIHdp
dGggcmVjZWl2aW5nIG51bGwuDQogICAgICAqIDxwPg0KLSAgICAgKiBVc2UgdGhpcyBmdW5jdGlv
biB3aGVuIHlvdSBkbyBub3Qgd2FudCB0byBtb25pdG9yIG1vZGVsIA0KKyAgICAgKiBVc2UgdGhp
cyBmdW5jdGlvbiB3aGVuIHlvdSBkbyBub3Qgd2FudCB0byBtb25pdG9yIG1vZGVsDQogICAgICAq
IGNoYW5nZXMgd2hpY2ggbWF5IGNhdXNlIHRoZSBzdHJpbmcgdG8gY2hhbmdlLg0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogQHBhcmFtIHR5cGUgdGhlIHByb3ZpZGVyIHR5cGUNCiAgICAgICog
QHBhcmFtIG9iamVjdCB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyDQogICAgICAqIEBwYXJhbSBu
YW1lIHRoZSBuYW1lIG9mIHRoZSBub3RhdGlvbiBsYW5ndWFnZSB0byB1c2UNCkBAIC0yMzUsMzkg
KzIzNSwzOSBAQA0KICAgICAgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsN
CiAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2h5IGFyZW4ndCB3ZSB0aHJvd2luZyBhbiBleGNl
cHRpb24gaGVyZT8NCiAgICAgICAgICAgICAJLy8gUmV0dXJuaW5nIG51bGwgcmVzdWx0cyBpbiBO
UEUgYW5kIG5vIGV4cGxhbmF0aW9uIHdoeS4NCi0gICAgICAgICAgICAgICAgTE9HLmVycm9yKCJF
eGNlcHRpb24gY2F1Z2h0IiwgZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VW
RVJFLCAiRXhjZXB0aW9uIGNhdWdodCIsIGUpOw0KICAgICAgICAgICAgIH0gY2F0Y2ggKE5vU3Vj
aE1ldGhvZEV4Y2VwdGlvbiBlKSB7DQogICAgICAgICAgICAgICAgIC8vIFRPRE86IFdoeSBhcmVu
J3Qgd2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGhlcmU/DQogICAgICAgICAgICAgCS8vIFJldHVy
bmluZyBudWxsIHJlc3VsdHMgaW4gTlBFIGFuZCBubyBleHBsYW5hdGlvbiB3aHkuDQotICAgICAg
ICAgICAgICAgIExPRy5lcnJvcigiRXhjZXB0aW9uIGNhdWdodCIsIGUpOw0KKyAgICAgICAgICAg
ICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiBjYXVnaHQiLCBlKTsNCiAgICAg
ICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgew0KICAgICAgICAg
ICAgICAgICAvLyBUT0RPOiBXaHkgYXJlbid0IHdlIHRocm93aW5nIGFuIGV4Y2VwdGlvbiBoZXJl
Pw0KICAgICAgICAgICAgIAkvLyBSZXR1cm5pbmcgbnVsbCByZXN1bHRzIGluIE5QRSBhbmQgbm8g
ZXhwbGFuYXRpb24gd2h5Lg0KLSAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiBj
YXVnaHQiLCBlKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJFeGNl
cHRpb24gY2F1Z2h0IiwgZSk7DQogICAgICAgICAgICAgfSBjYXRjaCAoSW5zdGFudGlhdGlvbkV4
Y2VwdGlvbiBlKSB7DQogICAgICAgICAgICAgICAgIC8vIFRPRE86IFdoeSBhcmVuJ3Qgd2UgdGhy
b3dpbmcgYW4gZXhjZXB0aW9uIGhlcmU/DQogICAgICAgICAgICAgCS8vIFJldHVybmluZyBudWxs
IHJlc3VsdHMgaW4gTlBFIGFuZCBubyBleHBsYW5hdGlvbiB3aHkuDQotICAgICAgICAgICAgICAg
IExPRy5lcnJvcigiRXhjZXB0aW9uIGNhdWdodCIsIGUpOw0KKyAgICAgICAgICAgICAgICBMT0cu
bG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiBjYXVnaHQiLCBlKTsNCiAgICAgICAgICAgICB9
IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGUpIHsNCiAgICAgICAgICAgICAgICAgLy8g
VE9ETzogV2h5IGFyZW4ndCB3ZSB0aHJvd2luZyBhbiBleGNlcHRpb24gaGVyZT8NCiAgICAgICAg
ICAgICAJLy8gUmV0dXJuaW5nIG51bGwgcmVzdWx0cyBpbiBOUEUgYW5kIG5vIGV4cGxhbmF0aW9u
IHdoeS4NCi0gICAgICAgICAgICAgICAgTE9HLmVycm9yKCJFeGNlcHRpb24gY2F1Z2h0IiwgZSk7
DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXhjZXB0aW9uIGNhdWdo
dCIsIGUpOw0KICAgICAgICAgICAgIH0gY2F0Y2ggKEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24g
ZSkgew0KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBXaHkgYXJlbid0IHdlIHRocm93aW5nIGFu
IGV4Y2VwdGlvbiBoZXJlPw0KICAgICAgICAgICAgIAkvLyBSZXR1cm5pbmcgbnVsbCByZXN1bHRz
IGluIE5QRSBhbmQgbm8gZXhwbGFuYXRpb24gd2h5Lg0KLSAgICAgICAgICAgICAgICBMT0cuZXJy
b3IoIkV4Y2VwdGlvbiBjYXVnaHQiLCBlKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5TRVZFUkUsICJFeGNlcHRpb24gY2F1Z2h0IiwgZSk7DQogICAgICAgICAgICAgfQ0KICAgICAg
ICAgfQ0KICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAq
IEdldCBhIE5vdGF0aW9uUHJvdmlkZXIgZm9yIHRoZSBjdXJyZW50IHByb2plY3QuIA0KKyAgICAg
KiBHZXQgYSBOb3RhdGlvblByb3ZpZGVyIGZvciB0aGUgY3VycmVudCBwcm9qZWN0Lg0KICAgICAg
KiBUaGlzIGFsc28gaW5pdGlhbGl6ZXMgdGhlIGxpc3RlbmVycy4NCiAgICAgICogPHA+DQotICAg
ICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4geW91IHdhbnQgdG8gbW9uaXRvciBtb2RlbCANCisg
ICAgICogVXNlIHRoaXMgZnVuY3Rpb24gd2hlbiB5b3Ugd2FudCB0byBtb25pdG9yIG1vZGVsDQog
ICAgICAqIGNoYW5nZXMgd2hpY2ggbWF5IGNhdXNlIHRoZSBzdHJpbmcgdG8gY2hhbmdlLg0KLSAg
ICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHR5cGUgdGhlIHByb3ZpZGVyIHR5cGUNCiAg
ICAgICogQHBhcmFtIG9iamVjdCB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyDQogICAgICAqIEBw
YXJhbSBuciB0aGUgZmlnIHRoYXQgcmVmcmVzaGVzIGFmdGVyIHRoZSBOb3RhdGlvblByb3ZpZGVy
IGhhcyBjaGFuZ2VkDQpAQCAtMjc1LDcgKzI3NSw3IEBADQogICAgICAqIEByZXR1cm4gdGhlIHBy
b3ZpZGVyDQogICAgICAqLw0KICAgICBwdWJsaWMgTm90YXRpb25Qcm92aWRlciBnZXROb3RhdGlv
blByb3ZpZGVyKGludCB0eXBlLA0KLSAgICAgICAgICAgIE9iamVjdCBvYmplY3QsIE5vdGF0aW9u
UmVuZGVyZXIgbnIsIA0KKyAgICAgICAgICAgIE9iamVjdCBvYmplY3QsIE5vdGF0aW9uUmVuZGVy
ZXIgbnIsDQogICAgICAgICAgICAgTm90YXRpb25OYW1lIG5hbWUpIHsNCiANCiAgICAgICAgIE5v
dGF0aW9uUHJvdmlkZXIgcCA9IGdldE5vdGF0aW9uUHJvdmlkZXIodHlwZSwgb2JqZWN0LCBuYW1l
KTsNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90
YXRpb24vcHJvdmlkZXJzL2phdmEvT3BlcmF0aW9uTm90YXRpb25KYXZhLmphdmENClVybDogaHR0
cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9wcm92aWRlcnMvamF2YS9PcGVyYXRp
b25Ob3RhdGlvbkphdmEuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0x
OTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Ny
Yy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9wcm92aWRlcnMvamF2YS9PcGVyYXRpb25Ob3RhdGlvbkph
dmEuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC9ub3RhdGlvbi9wcm92aWRlcnMvamF2YS9PcGVyYXRpb25Ob3RhdGlvbkphdmEuamF2YQky
MDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMCBDb250cmlidXRv
cnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMg
LSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRo
ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNj
b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00Miw4
ICs0Miw5IEBADQogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KIGltcG9ydCBqYXZhLnV0
aWwuSXRlcmF0b3I7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwu
bG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KLWlt
cG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGlj
YXRpb24uZXZlbnRzLkFyZ29FdmVudFB1bXA7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0
aW9uLmV2ZW50cy5BcmdvRXZlbnRUeXBlczsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRp
b24uZXZlbnRzLkFyZ29IZWxwRXZlbnQ7DQpAQCAtNTMsNyArNTQsNyBAQA0KIA0KIC8qKg0KICAq
IFRoZSBub3RhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIG9yIHJlY2VwdGlvbi4NCi0gKiANCisgKg0K
ICAqIEBhdXRob3IgbWljaGllbA0KICAqLw0KIHB1YmxpYyBjbGFzcyBPcGVyYXRpb25Ob3RhdGlv
bkphdmEgZXh0ZW5kcyBPcGVyYXRpb25Ob3RhdGlvbiB7DQpAQCAtNjEsMTIgKzYyLDEyIEBADQog
ICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBm
aW5hbCBMb2dnZXIgTE9HID0gDQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKE9wZXJhdGlvbk5v
dGF0aW9uSmF2YS5jbGFzcyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cg
PQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihPcGVyYXRpb25Ob3RhdGlvbkphdmEuY2xhc3Mu
Z2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIFRoZSBjb25zdHJ1Y3Rvci4NCi0gICAg
ICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBvcGVyYXRpb24gdGhlIG9wZXJhdGlvbiB3ZSBy
ZXByZXNlbnQNCiAgICAgICovDQogICAgIHB1YmxpYyBPcGVyYXRpb25Ob3RhdGlvbkphdmEoT2Jq
ZWN0IG9wZXJhdGlvbikgew0KQEAgLTg4LDcgKzg5LDcgQEANCiAgICAgcHVibGljIFN0cmluZyBn
ZXRQYXJzaW5nSGVscCgpIHsNCiAgICAgICAgIHJldHVybiAiUGFyc2luZyBpbiBKYXZhIG5vdCB5
ZXQgc3VwcG9ydGVkIjsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgQE92ZXJyaWRlDQogICAgIHB1
YmxpYyBTdHJpbmcgdG9TdHJpbmcoT2JqZWN0IG1vZGVsRWxlbWVudCwgTm90YXRpb25TZXR0aW5n
cyBzZXR0aW5ncykgew0KICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKG1vZGVsRWxlbWVudCk7DQpA
QCAtOTksNyArMTAwLDcgQEANCiAgICAgICAgIFN0cmluZyBuYW1lU3RyID0gbnVsbDsNCiAgICAg
ICAgIGJvb2xlYW4gY29uc3RydWN0b3IgPSBmYWxzZTsNCiANCi0gICAgICAgIEl0ZXJhdG9yIGl0
cyA9IA0KKyAgICAgICAgSXRlcmF0b3IgaXRzID0NCiAgICAgICAgICAgICBNb2RlbC5nZXRGYWNh
ZGUoKS5nZXRTdGVyZW90eXBlcyhtb2RlbEVsZW1lbnQpLml0ZXJhdG9yKCk7DQogICAgICAgICBT
dHJpbmcgbmFtZSA9ICIiOw0KICAgICAgICAgd2hpbGUgKGl0cy5oYXNOZXh0KCkpIHsNCkBAIC0x
MTcsNyArMTE4LDcgQEANCiAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgbmFtZVN0ciA9
IE1vZGVsLmdldEZhY2FkZSgpLmdldE5hbWUobW9kZWxFbGVtZW50KTsNCiAgICAgICAgIH0NCi0g
ICAgICAgIA0KKw0KICAgICAgICAgYm9vbGVhbiBpc1JlY2VwdGlvbiA9IE1vZGVsLmdldEZhY2Fk
ZSgpLmlzQVJlY2VwdGlvbihtb2RlbEVsZW1lbnQpOw0KIA0KICAgICAgICAgaWYgKCFpc1JlY2Vw
dGlvbikgew0KQEAgLTEyOSw3ICsxMzAsNyBAQA0KICAgICAgICAgc2IuYXBwZW5kKE5vdGF0aW9u
VXRpbGl0eUphdmEuZ2VuZXJhdGVWaXNpYmlsaXR5KG1vZGVsRWxlbWVudCkpOw0KIA0KICAgICAg
ICAgLy8gcGljayBvdXQgcmV0dXJuIHR5cGUNCi0gICAgICAgIENvbGxlY3Rpb24gcmV0dXJuUGFy
YW1zID0gDQorICAgICAgICBDb2xsZWN0aW9uIHJldHVyblBhcmFtcyA9DQogICAgICAgICAgICAg
TW9kZWwuZ2V0Q29yZUhlbHBlcigpLmdldFJldHVyblBhcmFtZXRlcnMobW9kZWxFbGVtZW50KTsN
CiAgICAgICAgIE9iamVjdCBycDsNCiAgICAgICAgIGlmIChyZXR1cm5QYXJhbXMuc2l6ZSgpID09
IDApIHsNCkBAIC0xMzgsNyArMTM5LDggQEANCiAgICAgICAgICAgICBycCA9IHJldHVyblBhcmFt
cy5pdGVyYXRvcigpLm5leHQoKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChyZXR1cm5QYXJh
bXMuc2l6ZSgpID4gMSkgIHsNCi0gICAgICAgICAgICBMT0cud2FybigiSmF2YSBnZW5lcmF0b3Ig
b25seSBoYW5kbGVzIG9uZSByZXR1cm4gcGFyYW1ldGVyIg0KKyAgICAgICAgICAgIExPRy5sb2co
TGV2ZWwuV0FSTklORywNCisgICAgICAgICAgICAgICAgICAgICJKYXZhIGdlbmVyYXRvciBvbmx5
IGhhbmRsZXMgb25lIHJldHVybiBwYXJhbWV0ZXIiDQogICAgICAgICAgICAgICAgICAgICArICIg
LSBGb3VuZCAiICsgcmV0dXJuUGFyYW1zLnNpemUoKQ0KICAgICAgICAgICAgICAgICAgICAgKyAi
IGZvciAiICsgTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0TmFtZShtb2RlbEVsZW1lbnQpKTsNCiAgICAg
ICAgIH0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
bm90YXRpb24vcHJvdmlkZXJzL3VtbC9BYnN0cmFjdE1lc3NhZ2VOb3RhdGlvblVtbC5qYXZhDQpV
cmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vcHJvdmlkZXJzL3VtbC9B
YnN0cmFjdE1lc3NhZ2VOb3RhdGlvblVtbC5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIx
PTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL3Byb3ZpZGVycy91bWwvQWJzdHJhY3RN
ZXNzYWdlTm90YXRpb25VbWwuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9wcm92aWRlcnMvdW1sL0Fic3RyYWN0TWVzc2Fn
ZU5vdGF0aW9uVW1sLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYg
QEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAy
MDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEy
IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMg
cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFp
bGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAN
CiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJs
ZSBhdA0KQEAgLTQ0LDggKzQ0LDkgQEANCiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOw0KIGlt
cG9ydCBqYXZhLnV0aWwuTGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNl
cHRpb247DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0
aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0K
IGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5ldmVudHMuQXJnb0V2ZW50UHVtcDsNCiBp
bXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uZXZlbnRzLkFyZ29FdmVudFR5cGVzOw0KIGlt
cG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5ldmVudHMuQXJnb0hlbHBFdmVudDsNCkBAIC01
OSwxMSArNjAsMTEgQEANCiAvKioNCiAgKiBUaGlzIGFic3RyYWN0IGNsYXNzIHByb3ZpZGVzIHRo
ZSBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3INCiAgKiB0aGUgVU1MIG5vdGF0aW9uIG9mIG1lc3Nh
Z2VzLjxici8+DQotICogSXQgaXMgZXh0ZW5kZWQgYnkge0BsaW5rIE1lc3NhZ2VOb3RhdGlvblVt
bH0sIHdpdGggdGhlIA0KLSAqIG5vdGF0aW9uIG9mIG1lc3NhZ2VzIGFzIHNlZW4gaW4gY29sbGFi
b3JhdGlvbiBkaWFncmFtcywgDQotICogYW5kIHtAbGluayBTRE1lc3NhZ2VOb3RhdGlvblVtbH0s
IHdpdGggdGhlIG5vdGF0aW9uIG9mIA0KKyAqIEl0IGlzIGV4dGVuZGVkIGJ5IHtAbGluayBNZXNz
YWdlTm90YXRpb25VbWx9LCB3aXRoIHRoZQ0KKyAqIG5vdGF0aW9uIG9mIG1lc3NhZ2VzIGFzIHNl
ZW4gaW4gY29sbGFib3JhdGlvbiBkaWFncmFtcywNCisgKiBhbmQge0BsaW5rIFNETWVzc2FnZU5v
dGF0aW9uVW1sfSwgd2l0aCB0aGUgbm90YXRpb24gb2YNCiAgKiBtZXNzYWdlcyBhcyBzZWVuIGlu
IHNlcXVlbmNlIGRpYWdyYW1zLjxwPg0KLSAqIA0KKyAqDQogICogVGhlIE1lc3NhZ2Ugbm90YXRp
b24gc3ludGF4IGlzIGEgbGluZSBvZiB0aGUgZm9sbG93aW5nIGZvcm0sDQogICogd2hpY2ggd2Ug
Y2FuIGdlbmVyYXRlIGFuZCBwYXJzZTogPHA+DQogICoNCkBAIC05NCwzNiArOTUsMzYgQEANCiAg
KiBhbGxvd3MgYSBudW1iZXIgcG9zc2libHkgZm9sbG93ZWQgYnkgYSBzZXF1ZW5jZSBvZiBsZXR0
ZXJzIGluIHRoZSByYW5nZQ0KICAqICdhJyAtICd6Jywgc2VxZWxlbSwgd2hpY2ggZG9lcyBub3Qg
YWxsb3cgYSByZWN1cnJlbmNlLCBhbmQgbWVzc2FnZSwgd2hpY2gNCiAgKiBkb2VzIGFsbG93IG9u
ZSByZWN1cnJlbmNlIG5lYXIgc2VxX2V4cHIuIDxwPg0KLSAqIA0KKyAqDQogICogKGZvcm1lcmx5
LCB0aGUgc3VwcG9ydGVkIHN5bnRheCB3YXM6IG5hbWU6IGFjdGlvbiApIDxwPg0KICAqDQogICog
R2VuZXJhdGluZyBhIHN0cmluZyBmcm9tIHRoZSBtb2RlbCBoYXMgc29tZSBleHRyYSBmdW5jdGlv
bmFsaXR5Og0KLSAqIElmIG9idGFpbmluZyB0aGUgU2NyaXB0IG9mIHRoZSBBY3Rpb24gcmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcsIA0KKyAqIElmIG9idGFpbmluZyB0aGUgU2NyaXB0IG9mIHRoZSBB
Y3Rpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcsDQogICogdGhlbiBhbiBhbHRlcm5hdGl2ZSBy
ZXByZXNlbnRhdGlvbiBpcyBnaXZlbjoNCi0gKiBJZiB0aGUgYWN0aW9uIGlzIGEgQ2FsbEFjdGlv
biwgdXNlIHRoZSBuYW1lIG9mIGl0cyBPcGVyYXRpb24sIA0KKyAqIElmIHRoZSBhY3Rpb24gaXMg
YSBDYWxsQWN0aW9uLCB1c2UgdGhlIG5hbWUgb2YgaXRzIE9wZXJhdGlvbiwNCiAgKiBhbmQgaWYg
aXQgaXMgYSBTZW5kQWN0aW9uLCB0aGUgbmFtZSBvZiBpdHMgU2lnbmFsLg0KICAqIElmIGFsc28g
dGhpcyByZXR1cm5zIG5vIHN0cmluZywgdGhlbiB3ZSBkaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBN
ZXNzYWdlLiA8cD4NCi0gKiANCisgKg0KICAqICBSYXRpb25hbGU6DQotICogIFRoaXMgYWxsb3dz
IEFyZ29VTUwgdG8gc2hvdyBzb21ldGhpbmcgb24gdGhlIGRpYWdyYW0gd2l0aCBvbGRlciBwcm9q
ZWN0cywgDQorICogIFRoaXMgYWxsb3dzIEFyZ29VTUwgdG8gc2hvdyBzb21ldGhpbmcgb24gdGhl
IGRpYWdyYW0gd2l0aCBvbGRlciBwcm9qZWN0cywNCiAgKiAgd2hpY2ggb25seSBoYWQgdGhlIG5h
bWUgb2YgdGhlIE1lc3NhZ2UgZmlsbGVkIGluIGJ5IHRoZSB1c2VyLg0KICAqICBUaGlzIGFsc28g
bWF5IGltcHJvdmUgdGhlIGRpYWdyYW1zIGZvciBpbXBvcnRlZCBYTUkuPHA+DQogICoNCi0gKiBQ
YXJzaW5nIGEgdGV4dCB0aGF0IGlzIGdlbmVyYXRlZCBieSBvbmUgb2YgdGhlIGJhY2t1cCBzY2Vu
YXJpb3MsIA0KKyAqIFBhcnNpbmcgYSB0ZXh0IHRoYXQgaXMgZ2VuZXJhdGVkIGJ5IG9uZSBvZiB0
aGUgYmFja3VwIHNjZW5hcmlvcywNCiAgKiBjYXVzZXMgaXQgdG8gYmUgd3JpdHRlbiBiYWNrIGlu
IHRoZSBzY3JpcHQgb2YgdGhlIEFjdGlvbi4NCi0gKiBIZW5jZSwgZWRpdGluZyB0aGUgdGV4dCBv
biB0aGUgZGlhZ3JhbSBvbmx5IG9uY2UgDQorICogSGVuY2UsIGVkaXRpbmcgdGhlIHRleHQgb24g
dGhlIGRpYWdyYW0gb25seSBvbmNlDQogICogY2F1c2VzIHRoZSBBY3Rpb24gU2NyaXB0IHRvIGJl
IHVzZWQgZnJvbSB0aGVuIG9uLiA8cD4NCi0gKiANCisgKg0KICAqIFN1cHBvcnRlZCBvcGVyYXRp
b25zIGZvciB0aGUgcGFyc2VyOiA8cD4NCiAgKiA8dWw+DQotICogPGxpPkxvY2F0aW5nIGFuIE9w
ZXJhdGlvbiBieSBuYW1lIGFuZCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyAtIA0KKyAqIDxsaT5M
b2NhdGluZyBhbiBPcGVyYXRpb24gYnkgbmFtZSBhbmQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMg
LQ0KICAqIHRoZSBvcGVyYXRpb24gaXMgaG9va2VkIHRvIHRoZSBDYWxsQWN0aW9uIG9mIHRoZSBN
ZXNzYWdlLg0KICAqIDxsaT5DcmVhdGUgYW4gT3BlcmF0aW9uIHdpdGggZ2l2ZW4gbmFtZSAobm8g
YXJndW1lbnRzKS4NCiAgKiA8bGk+Q2hhbmdlIHRoZSBvcmRlciBvZiBtZXNzYWdlcyAocHJlZGVj
ZXNzb3Ivc3VjY2Vzc29yKS4NCiAgKiA8bGk+UmV2ZXJ0aW5nIHRoZSBkaXJlY3Rpb24gb2YgYSBt
ZXNzYWdlLg0KICAqIDxsaT5ldGMuDQogICogPC91bD4NCi0gKiANCisgKg0KICAqIEBzZWUgTWVz
c2FnZU5vdGF0aW9uVW1sDQogICogQHNlZSBTRE1lc3NhZ2VOb3RhdGlvblVtbA0KICAqIEBzaW5j
ZSAwLjI4LmFscGhhMQ0KQEAgLTEzMiw4ICsxMzMsOCBAQA0KIHB1YmxpYyBhYnN0cmFjdCBjbGFz
cyBBYnN0cmFjdE1lc3NhZ2VOb3RhdGlvblVtbCBleHRlbmRzIE1lc3NhZ2VOb3RhdGlvbiB7DQog
DQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KLSAgICAgICAgTG9nZ2Vy
LmdldExvZ2dlcihBYnN0cmFjdE1lc3NhZ2VOb3RhdGlvblVtbC5jbGFzcyk7DQotICAgIA0KKyAg
ICAgICAgTG9nZ2VyLmdldExvZ2dlcihBYnN0cmFjdE1lc3NhZ2VOb3RhdGlvblVtbC5jbGFzcy5n
ZXROYW1lKCkpOw0KKw0KICAgICAvKioNCiAgICAgICogVGhlIGxpc3Qgb2YgQ3VzdG9tU2VwYXJh
dG9ycyB0byB1c2Ugd2hlbiB0b2tlbml6aW5nIHBhcmFtZXRlcnMuDQogICAgICAqLw0KQEAgLTE1
Nyw3ICsxNTgsNyBAQA0KICAgICAgICAgcGFyYW1ldGVyQ3VzdG9tU2VwID0gaW5pdFBhcmFtZXRl
clNlcGFyYXRvcnMoKTsNCiAgICAgfQ0KIA0KLSAgICBwcm90ZWN0ZWQgU3RyaW5nIHRvU3RyaW5n
KGZpbmFsIE9iamVjdCB1bWxNZXNzYWdlLCANCisgICAgcHJvdGVjdGVkIFN0cmluZyB0b1N0cmlu
ZyhmaW5hbCBPYmplY3QgdW1sTWVzc2FnZSwNCiAgICAgICAgICAgICBib29sZWFuIHNob3dTZXF1
ZW5jZU51bWJlcnMpIHsNCiAgICAgICAgIEl0ZXJhdG9yIGl0Ow0KICAgICAgICAgQ29sbGVjdGlv
biB1bWxQcmVkZWNlc3NvcnM7DQpAQCAtMTY1LDggKzE2Niw4IEBADQogICAgICAgICBPYmplY3Qg
dW1sQWN0aXZhdG9yOyAvLyB0aGlzIGlzIGEgTWVzc2FnZSBVTUwgb2JqZWN0DQogICAgICAgICBN
c2dQdHIgcHRyOw0KICAgICAgICAgaW50IGxwbjsNCi0gICAgICAgIA0KLSAgICAgICAgLyogU3Vw
cG9ydGVkIGZvcm1hdDogDQorDQorICAgICAgICAvKiBTdXBwb3J0ZWQgZm9ybWF0Og0KICAgICAg
ICAgICogICAgIHByZWRlY2Vzc29ycyBudW1iZXIgIjoiIGFjdGlvbg0KICAgICAgICAgICogVGhl
IDMgcGFydHMgb2YgdGhlIHN0cmluZyB0byBnZW5lcmF0ZTogKi8NCiAgICAgICAgIFN0cmluZ0J1
aWxkZXIgcHJlZGVjZXNzb3JzID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsgLy8gaW5jbHVkZXMgdGhl
ICIvIg0KQEAgLTIyMiwxNSArMjIzLDE1IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgTW9k
ZWwuZ2V0RmFjYWRlKCkuZ2V0UmVjdXJyZW5jZSh1bWxBY3Rpb24pKQ0KICAgICAgICAgICAgICAg
ICAgICAgKyAiICINCiAgICAgICAgICAgICAgICAgICAgICsgbnVtYmVyOw0KLSAgICAgICAgICAg
ICAgICAvKiBUT0RPOiBUaGUgcmVjdXJyZW5jZSBnb2VzIGluIGZyb250IG9mIHRoZSBhY3Rpb24/
IA0KKyAgICAgICAgICAgICAgICAvKiBUT0RPOiBUaGUgcmVjdXJyZW5jZSBnb2VzIGluIGZyb250
IG9mIHRoZSBhY3Rpb24/DQogICAgICAgICAgICAgICAgICAqIERvZXMgdGhpcyBub3QgY29udHJh
ZGljdCB0aGUgaGVhZGVyIEphdmFEb2M/ICovDQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0K
ICAgICAgICAgYWN0aW9uID0gTm90YXRpb25VdGlsaXR5VW1sLmdlbmVyYXRlQWN0aW9uU2VxdWVu
Y2UodW1sQWN0aW9uKTsNCiAgICAgICAgIGlmICgiIi5lcXVhbHMoYWN0aW9uKSB8fCBhY3Rpb24u
dHJpbSgpLnN0YXJ0c1dpdGgoIigiKSkgew0KICAgICAgICAgICAgIC8qIElmIHRoZSBzY3JpcHQg
b2YgdGhlIEFjdGlvbiBpcyBlbXB0eSwNCi0gICAgICAgICAgICAgKiAob3Igb25seSBzcGVjaWZp
ZXMgYXJndW1lbnRzIGFuZCBubyBtZXRob2QgbmFtZSkgDQotICAgICAgICAgICAgICogdGhlbiB3
ZSBnZW5lcmF0ZSBhIHN0cmluZyBiYXNlZCBvbiANCisgICAgICAgICAgICAgKiAob3Igb25seSBz
cGVjaWZpZXMgYXJndW1lbnRzIGFuZCBubyBtZXRob2QgbmFtZSkNCisgICAgICAgICAgICAgKiB0
aGVuIHdlIGdlbmVyYXRlIGEgc3RyaW5nIGJhc2VkIG9uDQogICAgICAgICAgICAgICogYSBkaWZm
ZXJlbnQgbW9kZWwgZWxlbWVudDogKi8NCiAgICAgICAgICAgICBhY3Rpb24gPSBnZXRJbml0aWF0
b3JPZkFjdGlvbih1bWxBY3Rpb24pOw0KICAgICAgICAgICAgIGlmICgiIi5lcXVhbHMoYWN0aW9u
KSkgew0KQEAgLTI3NywxMiArMjc4LDEyIEBADQogICAgICAgICB9DQogICAgICAgICByZXR1cm4g
cmVzdWx0Ow0KICAgICB9DQotICAgIA0KKw0KICAgICBwcm90ZWN0ZWQgTGlzdDxDdXN0b21TZXBh
cmF0b3I+IGluaXRQYXJhbWV0ZXJTZXBhcmF0b3JzKCkgew0KICAgICAgICAgTGlzdDxDdXN0b21T
ZXBhcmF0b3I+IHNlcGFyYXRvcnMgPSBuZXcgQXJyYXlMaXN0PEN1c3RvbVNlcGFyYXRvcj4oKTsN
CiAgICAgICAgIHNlcGFyYXRvcnMuYWRkKE15VG9rZW5pemVyLlNJTkdMRV9RVU9URURfU0VQQVJB
VE9SKTsNCiAgICAgICAgIHNlcGFyYXRvcnMuYWRkKE15VG9rZW5pemVyLkRPVUJMRV9RVU9URURf
U0VQQVJBVE9SKTsNCi0gICAgICAgIHNlcGFyYXRvcnMuYWRkKE15VG9rZW5pemVyLlBBUkVOX0VY
UFJfU1RSSU5HX1NFUEFSQVRPUik7ICAgICAgICANCisgICAgICAgIHNlcGFyYXRvcnMuYWRkKE15
VG9rZW5pemVyLlBBUkVOX0VYUFJfU1RSSU5HX1NFUEFSQVRPUik7DQogICAgICAgICByZXR1cm4g
c2VwYXJhdG9yczsNCiAgICAgfQ0KIA0KQEAgLTMwNSwzMCArMzA2LDMwIEBADQogDQogICAgIC8q
Kg0KICAgICAgKiBHZW5lcmF0ZSB0aGUgImludG5vIiBvZiB0aGUgZ2l2ZW4gTWVzc2FnZS4gPHA+
DQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBJZiB0aGUgcHJlZGVjZXNzb3Igb2YgdGhlIGdp
dmVuIG1lc3NhZ2UgaGFzIG9ubHkgb25lIHN1Y2Nlc3NvciwgdGhlbg0KICAgICAgKiB3ZSByZXR1
cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZWdlci4gPHA+DQog
ICAgICAqIElmIHRoZSBwcmVkZWNlc3NvciBvZiB0aGUgZ2l2ZW4gbWVzc2FnZSBoYXMgbW9yZSB0
aGFuIG9uZSBzdWNjZXNzb3IsIHRoZW4NCi0gICAgICogdGhpcyBpcyBhIGNhc2Ugb2YgcGFyYWxs
ZWwgZXhlY3V0aW9uIG9mIG1lc3NhZ2VzLCBlLmcuIA0KKyAgICAgKiB0aGlzIGlzIGEgY2FzZSBv
ZiBwYXJhbGxlbCBleGVjdXRpb24gb2YgbWVzc2FnZXMsIGUuZy4NCiAgICAgICogTWVzc2FnZSAz
LjFhIGFuZCBNZXNzYWdlIDMuMWIgYXJlIGNvbmN1cnJlbnQgd2l0aGluIGFjdGl2YXRpb24gMy4x
Lg0KLSAgICAgKiBIZW5jZSBJbiB0aGlzIGNhc2Ugd2UgdXNlIGEgc3ludGF4IGxpa2U6IDFhLCAx
YiwgMWMuIA0KLSAgICAgKiAgDQotICAgICAqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZmlyc3Qgc3Vj
Y2Vzc29yIA0KLSAgICAgKiBpbiB0aGUgb3JkZXJlZCBsaXN0IG9mIHN1Y2Nlc3NvcnMgdGhhdCBo
YXMgbW9yZSB0aGFuIG9uZSBlbnRyeSANCisgICAgICogSGVuY2UgSW4gdGhpcyBjYXNlIHdlIHVz
ZSBhIHN5bnRheCBsaWtlOiAxYSwgMWIsIDFjLg0KKyAgICAgKg0KKyAgICAgKiBUaGlzIG1lYW5z
IHRoYXQgdGhlIGZpcnN0IHN1Y2Nlc3Nvcg0KKyAgICAgKiBpbiB0aGUgb3JkZXJlZCBsaXN0IG9m
IHN1Y2Nlc3NvcnMgdGhhdCBoYXMgbW9yZSB0aGFuIG9uZSBlbnRyeQ0KICAgICAgKiB3aWxsIGdl
dCB0aGUgcG9zdGZpeCBhLCB0aGUgc2Vjb25kIGIsIGV0Yy4NCi0gICAgICogIA0KKyAgICAgKg0K
ICAgICAgKiBUT0RPOiBEb2N1bWVudCBleGNlcHRpb25hbCBiZWhhdmlvdXIuDQotICAgICAqIA0K
LSAgICAgKiBAcGFyYW0gdW1sTWVzc2FnZSB0aGUgVU1MIG1lc3NhZ2Ugb2JqZWN0IHRvIGdlbmVy
YXRlIA0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gdW1sTWVzc2FnZSB0aGUgVU1MIG1lc3NhZ2Ug
b2JqZWN0IHRvIGdlbmVyYXRlDQogICAgICAqIHRoZSBzZXF1ZW5jZSBudW1iZXIgZm9yDQogICAg
ICAqIEBwYXJhbSB1bWxQcmVkZWNlc3NvciB0aGUgaW1tZWRpYXRlIHByZWRlY2Vzc29yIG1lc3Nh
Z2UgKFVNTCBvYmplY3QpDQogICAgICAqIHRoYXQgaGFzIHRoZSBnaXZlbiBtZXNzYWdlIGFzIHN1
Y2Nlc3Nvcg0KLSAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIGludGVnZXIgcG9zaXRpb24gb2Yg
dGhlIGdpdmVuIG1lc3NhZ2UgDQorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgaW50ZWdlciBw
b3NpdGlvbiBvZiB0aGUgZ2l2ZW4gbWVzc2FnZQ0KICAgICAgKiB3aXRoaW4gaXRzIHNlcXVlbmNl
DQotICAgICAqIEByZXR1cm4gdGhlIGdlbmVyYXRlZCBzZXF1ZW5jZSBleHByZXNzaW9uIHN0cmlu
ZywgDQorICAgICAqIEByZXR1cm4gdGhlIGdlbmVyYXRlZCBzZXF1ZW5jZSBleHByZXNzaW9uIHN0
cmluZywNCiAgICAgICogb3IgbnVsbCBpZiB0aGUgZ2l2ZW4gTWVzc2FnZSB3YXMgbnVsbA0KICAg
ICAgKi8NCi0gICAgcHJvdGVjdGVkIFN0cmluZyBnZW5lcmF0ZU1lc3NhZ2VOdW1iZXIoT2JqZWN0
IHVtbE1lc3NhZ2UsIA0KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGdlbmVyYXRlTWVzc2FnZU51bWJl
cihPYmplY3QgdW1sTWVzc2FnZSwNCiAgICAgICAgICAgICBPYmplY3QgdW1sUHJlZGVjZXNzb3Is
DQogICAgICAgICAgICAgaW50IHBvc2l0aW9uKSB7DQogICAgICAgICBJdGVyYXRvciBpdDsNCkBA
IC0zNzQsNyArMzc1LDcgQEANCiAgICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIGludCBmaW5k
TXNnT3JkZXJCcmVhayhTdHJpbmcgcykgew0KICAgICAgICAgaW50IGksIHQ7DQotICAgIA0KKw0K
ICAgICAgICAgdCA9IHMubGVuZ3RoKCk7DQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdDsgaSsr
KSB7DQogICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSk7DQpAQCAtMzg2LDggKzM4Nyw4
IEBADQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAqIEdlbmVyYXRlcyB0aGUgdGV4dHVhbCBu
dW1iZXIgb2YgYSBnaXZlbiBNZXNzYWdlLCBjYWxsZWQgc2VxX2V4cHIuIA0KLSAgICAgKiBUaGUg
c2VxX2V4cHIgaXMgYSBzdHJpbmcgb2YgbnVtYmVycyBzZXBhcmF0ZWQgYnkgcG9pbnRzIA0KKyAg
ICAgKiBHZW5lcmF0ZXMgdGhlIHRleHR1YWwgbnVtYmVyIG9mIGEgZ2l2ZW4gTWVzc2FnZSwgY2Fs
bGVkIHNlcV9leHByLg0KKyAgICAgKiBUaGUgc2VxX2V4cHIgaXMgYSBzdHJpbmcgb2YgbnVtYmVy
cyBzZXBhcmF0ZWQgYnkgcG9pbnRzDQogICAgICAqIHdoaWNoIGRlc2NyaWJlcyB0aGUgbWVzc2Fn
ZSdzIG9yZGVyDQogICAgICAqIGFuZCBsZXZlbCBpbiBhIGNvbGxhYm9yYXRpb24uPHA+DQogICAg
ICAqDQpAQCAtNDA2LDEwICs0MDcsMTAgQEANCiANCiAgICAgLyoqDQogICAgICAqIENvdW50IHRo
ZSBudW1iZXIgb2Ygc3VjY2Vzc29ycyBvZiB0aGUgZ2l2ZW4gTWVzc2FnZS4gPHA+DQotICAgICAq
IA0KKyAgICAgKg0KICAgICAgKiBTdWNjZXNzb3JzIGhhdmUgdGhlIHNhbWUgQWN0aXZhdG9yIGFz
IHRoZSBnaXZlbiBtZXNzYWdlLg0KICAgICAgKiBUaGlzIEFjdGl2YXRvciBtYXkgYmUgbnVsbC4N
Ci0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBVTUwgTWVzc2Fn
ZSBvYmplY3QNCiAgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NvcnM6IDAuLm4N
CiAgICAgICovDQpAQCAtNDM4LDcgKzQzOSw3IEBADQogICAgICAgICBpZiAoZXhwciA9PSBudWxs
KSB7DQogICAgICAgICAgICAgcmV0dXJuICIiOw0KICAgICAgICAgfQ0KLSAgICANCisNCiAgICAg
ICAgIHJldHVybiBNb2RlbC5nZXRGYWNhZGUoKS5nZXRCb2R5KGV4cHIpLnRvU3RyaW5nKCk7DQog
ICAgIH0NCiANCkBAIC03NDUsNyArNzQ2LDcgQEANCiANCiAgICAgICAgIHByaW50RGVidWdJbmZv
KHMsIGZuYW1lLCBndWFyZCwgcGFyYW1FeHByLCB2YXJuYW1lLCBwcmVkZWNlc3NvcnMsDQogICAg
ICAgICAgICAgICAgIHNlcW5vLCBwYXJhbGxlbGwsIGl0ZXJhdGl2ZSk7DQotICAgICAgICANCisN
CiAgICAgICAgIC8qIE5vdyBhcHBseSB0aGUgY2hhbmdlcyB0byB0aGUgbW9kZWw6ICovDQogDQog
ICAgICAgICBidWlsZEFjdGlvbih1bWxNZXNzYWdlKTsNCkBAIC03NzIsNyArNzczLDcgQEANCiAg
ICAgcHJpdmF0ZSB2b2lkIHByaW50RGVidWdJbmZvKFN0cmluZyBzLCBTdHJpbmcgZm5hbWUsIFN0
cmluZ0J1aWxkZXIgZ3VhcmQsDQogICAgICAgICAgICAgU3RyaW5nIHBhcmFtRXhwciwgU3RyaW5n
QnVpbGRlciB2YXJuYW1lLCBMaXN0PExpc3Q+IHByZWRlY2Vzc29ycywNCiAgICAgICAgICAgICBM
aXN0PEludGVnZXI+IHNlcW5vLCBib29sZWFuIHBhcmFsbGVsbCwgYm9vbGVhbiBpdGVyYXRpdmUp
IHsNCi0gICAgICAgIGlmIChMT0cuaXNEZWJ1Z0VuYWJsZWQoKSkgew0KKyAgICAgICAgaWYgKExP
Ry5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7DQogICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1
ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsNCiAgICAgICAgICAgICBidWYuYXBwZW5kKCJQYXJzZU1l
c3NhZ2U6ICIgKyBzICsgIlxuIik7DQogICAgICAgICAgICAgYnVmLmFwcGVuZCgiTWVzc2FnZTog
Iik7DQpAQCAtNzk5LDcgKzgwMCw3IEBADQogICAgICAgICAgICAgICAgICAgICArIHBhcmFsbGVs
bCArICJcbiIpOw0KICAgICAgICAgICAgIGJ1Zi5hcHBlbmQodmFybmFtZSArICIgOj0gIiArIGZu
YW1lICsgIiAoICIgKyBwYXJhbUV4cHIgKyAiICkiDQogICAgICAgICAgICAgICAgICAgICArICJc
biIpOw0KLSAgICAgICAgICAgIExPRy5kZWJ1ZyhidWYpOw0KKyAgICAgICAgICAgIExPRy5sb2co
TGV2ZWwuRklORSwgInswfSIsIGJ1Zik7DQogICAgICAgICB9DQogICAgIH0NCiANCkBAIC04NDgs
NyArODQ5LDcgQEANCiANCiAgICAgLyoqDQogICAgICAqIFNldCB0aGUgcHJlZGVjZXNzb3JzIG9m
IHRoZSBnaXZlbiBNZXNzYWdlLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHVt
bE1lc3NhZ2UgdGhlIGdpdmVuIFVNTCBNZXNzYWdlIG9iamVjdCB0byBiZSBhZGFwdGVkDQogICAg
ICAqIEBwYXJhbSBwcmVkZWNlc3NvcnMgdGhlIGdpdmVuIHByZWRlY2Vzc29ycyBhcyBwYXJzZWQN
CiAgICAgICogQHBhcmFtIGhhc1ByZWRlY2Vzc29ycyB0cnVlIGlmIHRoZXJlIGFyZSBzb21lLCBp
ZiBmYWxzZSB3ZSBkbyBub3RoaW5nDQpAQCAtOTAyLDE1ICs5MDMsMTUgQEANCiANCiAgICAgLyoq
DQogICAgICAqIFVwZGF0ZSB0aGUgbW9kZWwgd2l0aCB0aGUgb3BlcmF0aW9uIG5hbWUuIDxwPg0K
LSAgICAgKiANCisgICAgICoNCiAgICAgICogVGhlIGdpdmVuIG9wZXJhdGlvbiBuYW1lIGlzIGxv
Y2F0ZWQgb24gdGhlIHJlY2VpdmVyIG9mIHRoZSBnaXZlbiBtZXNzYWdlLg0KLSAgICAgKiBJZiBh
biBvcGVyYXRpb24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSANCisgICAgICogSWYgYW4gb3BlcmF0aW9u
IHdpdGggdGhlIGdpdmVuIG5hbWUNCiAgICAgICogYW5kIGEgbWF0Y2hpbmcgbnVtYmVyIG9mIGFy
Z3VtZW50cyBpcyBsb2NhdGVkLA0KICAgICAgKiB0aGVuIHRoZSBDYWxsQWN0aW9uIG9mIHRoZSBt
ZXNzYWdlIGlzIGFkYXB0ZWQgYWNjb3JkaW5nbHkuDQotICAgICAqICAgDQorICAgICAqDQogICAg
ICAqIEBwYXJhbSB1bWxNZXNzYWdlIHRoZSBtZXNzYWdlIG9mIHdoaWNoIHRoZSBDYWxsQWN0aW9u
IGlzIHRvIGJlIGFkYXB0ZWQNCiAgICAgICogQHBhcmFtIGZuYW1lIHRoZSBuYW1lIG9mIHRoZSBv
cGVyYXRpb24gdG8gYmUgdXNlZA0KLSAgICAgKiBAcGFyYW0gcmVmaW5kT3BlcmF0aW9uIHRydWUg
aWYgd2UgaGF2ZSB0byBzZXQgdGhlIG9wZXJhdGlvbiANCisgICAgICogQHBhcmFtIHJlZmluZE9w
ZXJhdGlvbiB0cnVlIGlmIHdlIGhhdmUgdG8gc2V0IHRoZSBvcGVyYXRpb24NCiAgICAgICogb2Yg
dGhlIENhbGxBY3Rpb24NCiAgICAgICogQHRocm93cyBQYXJzZUV4Y2VwdGlvbiBpZiB0aGUgb3Bl
cmF0aW9uIHN5bnRheCBjYW4gbm90IGJlIHBhcnNlZA0KICAgICAgKi8NCkBAIC05OTgsMTAgKzk5
OSwxMCBAQA0KIA0KICAgICAgICAgICAgIHJvb3QgPSBudWxsOw0KICAgICAgICAgICAgIGlmIChw
bmFtZS5sZW5ndGgoKSA+IDApIHsNCi0gICAgICAgICAgICAgICAgcm9vdCA9IGZpbmRNc2coTW9k
ZWwuZ2V0RmFjYWRlKCkuZ2V0U2VuZGVyKHVtbE1lc3NhZ2UpLCANCisgICAgICAgICAgICAgICAg
cm9vdCA9IGZpbmRNc2coTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0U2VuZGVyKHVtbE1lc3NhZ2UpLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgIHBuYW1lLnRvU3RyaW5nKCkpOw0KICAgICAgICAgICAg
ICAgICBpZiAocm9vdCA9PSBudWxsKSB7DQotICAgICAgICAgICAgICAgICAgICByb290ID0gZmlu
ZE1zZyhNb2RlbC5nZXRGYWNhZGUoKS5nZXRSZWNlaXZlcih1bWxNZXNzYWdlKSwgDQorICAgICAg
ICAgICAgICAgICAgICByb290ID0gZmluZE1zZyhNb2RlbC5nZXRGYWNhZGUoKS5nZXRSZWNlaXZl
cih1bWxNZXNzYWdlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5hbWUudG9TdHJp
bmcoKSk7DQogICAgICAgICAgICAgICAgICAgICBpZiAocm9vdCAhPSBudWxsKSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgc3dhcFJvbGVzID0gdHJ1ZTsNCkBAIC0xMTU2LDE3ICsxMTU3LDE3
IEBADQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAqIFN0b3JlIHRoZSBnaXZlbiBmdW5jdGlv
biBuYW1lIGFuZCByZXR1cm4gdmFyaWFibGUgbmFtZSANCisgICAgICogU3RvcmUgdGhlIGdpdmVu
IGZ1bmN0aW9uIG5hbWUgYW5kIHJldHVybiB2YXJpYWJsZSBuYW1lDQogICAgICAqIGluIHRoZSBz
Y3JpcHQgb2YgdGhlIGFjdGlvbiBvZiB0aGUgZ2l2ZW4gbWVzc2FnZS4gPHA+DQotICAgICAqIA0K
KyAgICAgKg0KICAgICAgKiBDb25zdHJhaW50OiB0aGUgZ2l2ZW4gTWVzc2FnZSBzaGFsbCBoYXZl
IGFuIEFjdGlvbi4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSB1bWxNZXNzYWdl
IHRoZSBnaXZlbiBVTUwgTWVzc2FnZSBvYmplY3QgdG8gYWRhcHQNCiAgICAgICogQHBhcmFtIGZu
YW1lIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbg0KICAgICAgKiBAcGFyYW0gdmFybmFtZSB0aGUg
cmV0dXJuIHZhcmlhYmxlIG5hbWUNCi0gICAgICogQHBhcmFtIHJlZmluZE9wZXJhdGlvbiBpZiBm
YWxzZSwgdGhlbiB3ZSBtYXkgcmV0dXJuIHRydWUgb3IgZmFsc2UuIA0KKyAgICAgKiBAcGFyYW0g
cmVmaW5kT3BlcmF0aW9uIGlmIGZhbHNlLCB0aGVuIHdlIG1heSByZXR1cm4gdHJ1ZSBvciBmYWxz
ZS4NCiAgICAgICogSWYgdHJ1ZSwgd2UgcmV0dXJuIHRydWUuDQotICAgICAqIEByZXR1cm4gdHJ1
ZSBpZiB3ZSBzdG9yZWQgdGhlIGZuYW1lIGFuZCB2YXJuYW1lIA0KKyAgICAgKiBAcmV0dXJuIHRy
dWUgaWYgd2Ugc3RvcmVkIHRoZSBmbmFtZSBhbmQgdmFybmFtZQ0KICAgICAgKiBpbiB0aGUgQWN0
aW9uIG9mIHRoZSBNZXNzYWdlDQogICAgICAqLw0KICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBoYW5k
bGVGdW5jdGlvbk5hbWUoT2JqZWN0IHVtbE1lc3NhZ2UsIFN0cmluZyBmbmFtZSwNCkBAIC0xMTk4
LDEyICsxMTk5LDEyIEBADQogICAgIC8qKg0KICAgICAgKiBGaWxsIGluIHRoZSB2YXJpYWJsZSBu
YW1lIGlmIGl0IGlzIGJsYW5rLiAgPHA+DQogICAgICAqIFRoZSB2YXJpYWJsZSBuYW1lIGlzIHRo
ZSBwYXJ0IGluIGZyb250IG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLg0KLSAgICAgKiANCisg
ICAgICoNCiAgICAgICogQHBhcmFtIHVtbE1lc3NhZ2UgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gZmls
bCB0aGUgdmFyaWFibGUgbmFtZSBmb3INCi0gICAgICogQHBhcmFtIHZhcm5hbWUgaWYgbnVsbCwg
dGhlbiB3ZSBnZXQgdGhlIHZhcmlhYmxlIG5hbWUgZnJvbSB0aGUgbW9kZWwuIA0KLSAgICAgKiBA
cGFyYW0gbWF5RGVsZXRlRXhwciBpZiB0cnVlLCB0aGVuIHdlIG1heSBkZWxldGUgdGhlIHZhcmlh
YmxlLCANCisgICAgICogQHBhcmFtIHZhcm5hbWUgaWYgbnVsbCwgdGhlbiB3ZSBnZXQgdGhlIHZh
cmlhYmxlIG5hbWUgZnJvbSB0aGUgbW9kZWwuDQorICAgICAqIEBwYXJhbSBtYXlEZWxldGVFeHBy
IGlmIHRydWUsIHRoZW4gd2UgbWF5IGRlbGV0ZSB0aGUgdmFyaWFibGUsDQogICAgICAqIGFuZCBo
ZW5jZSB3ZSByZXR1cm4gYW4gZW1wdHkgc3RyaW5nDQotICAgICAqIEByZXR1cm4gdGhlIG9yaWdp
bmFsIHZhcmlhYmxlIG5hbWUsIG9yIGlmIGl0IHdhcyBudWxsLCANCisgICAgICogQHJldHVybiB0
aGUgb3JpZ2luYWwgdmFyaWFibGUgbmFtZSwgb3IgaWYgaXQgd2FzIG51bGwsDQogICAgICAqIGEg
dmFyaWFibGUgbmFtZSBnZW5lcmF0ZWQgZnJvbSB0aGUgbW9kZWwNCiAgICAgICovDQogICAgIHBy
b3RlY3RlZCBTdHJpbmdCdWlsZGVyIGZpbGxCbGFua1ZhcmlhYmxlTmFtZShPYmplY3QgdW1sTWVz
c2FnZSwNCkBAIC0xMjM0LDE0ICsxMjM1LDE0IEBADQogDQogICAgIC8qKg0KICAgICAgKiBGaWxs
IGluIHRoZSBmdW5jdGlvbiBuYW1lIGlmIGl0IGlzIGJsYW5rLiA8cD4NCi0gICAgICogDQorICAg
ICAqDQogICAgICAqIFRoZSBmbmFtZSBpcyB0aGUgcGFydCBvZiB0aGUgc2NyaXB0IGFmdGVyIHRo
ZSBhc3NpZ25tZW50IG9wZXJhdG9yLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFt
IHVtbE1lc3NhZ2UgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gZmlsbCB0aGUgZm5hbWUgZm9yDQotICAg
ICAqIEBwYXJhbSBmbmFtZSBpZiBudWxsLCB0aGVuIHdlIGdldCB0aGUgZm5hbWUgZnJvbSB0aGUg
bW9kZWwuIA0KLSAgICAgKiBAcGFyYW0gbWF5RGVsZXRlRXhwciBpZiB0cnVlLCB0aGVuIHdlIG1h
eSBkZWxldGUgdGhlIGZ1bmN0aW9uLCANCisgICAgICogQHBhcmFtIGZuYW1lIGlmIG51bGwsIHRo
ZW4gd2UgZ2V0IHRoZSBmbmFtZSBmcm9tIHRoZSBtb2RlbC4NCisgICAgICogQHBhcmFtIG1heURl
bGV0ZUV4cHIgaWYgdHJ1ZSwgdGhlbiB3ZSBtYXkgZGVsZXRlIHRoZSBmdW5jdGlvbiwNCiAgICAg
ICogYW5kIGhlbmNlIHdlIHJldHVybiBhbiBlbXB0eSBzdHJpbmcNCi0gICAgICogQHJldHVybiB0
aGUgb3JpZ2luYWwgZm5hbWUsIG9yIGlmIGl0IHdhcyBudWxsLCANCisgICAgICogQHJldHVybiB0
aGUgb3JpZ2luYWwgZm5hbWUsIG9yIGlmIGl0IHdhcyBudWxsLA0KICAgICAgKiBhIGZuYW1lIGdl
bmVyYXRlZCBmcm9tIHRoZSBtb2RlbA0KICAgICAgKi8NCiAgICAgcHJvdGVjdGVkIFN0cmluZyBm
aWxsQmxhbmtGdW5jdGlvbk5hbWUoT2JqZWN0IHVtbE1lc3NhZ2UsIFN0cmluZyBmbmFtZSwNCkBA
IC0xMjc0LDE3ICsxMjc1LDE3IEBADQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAqIFN0b3Jl
IHRoZSBwYXJzZWQgZ3VhcmQgaW4gdGhlIFVNTCBvYmplY3RzIHJlbGF0ZWQgdG8gdGhlIGdpdmVu
IE1lc3NhZ2UuIA0KLSAgICAgKiANCisgICAgICogU3RvcmUgdGhlIHBhcnNlZCBndWFyZCBpbiB0
aGUgVU1MIG9iamVjdHMgcmVsYXRlZCB0byB0aGUgZ2l2ZW4gTWVzc2FnZS4NCisgICAgICoNCiAg
ICAgICogQHBhcmFtIHVtbE1lc3NhZ2UgdGhlIFVNTCBNZXNzYWdlIG9iamVjdA0KICAgICAgKiBA
cGFyYW0gZ3VhcmQgdGhlIGd1YXJkIGV4cHJlc3Npb24gc3RyaW5nDQogICAgICAqIEBwYXJhbSBw
YXJhbGxlbGwgdHJ1ZSBpZiBwYXJhbGxlbCBleGVjdXRpb24gd2FzIGluZGljYXRlZA0KLSAgICAg
KiBAcGFyYW0gaXRlcmF0aXZlIHRydWUgaWYgdGhpcyBpcyBhbiBpdGVyYXRpdmUgZXhwcmVzc2lv
biwgDQorICAgICAqIEBwYXJhbSBpdGVyYXRpdmUgdHJ1ZSBpZiB0aGlzIGlzIGFuIGl0ZXJhdGl2
ZSBleHByZXNzaW9uLA0KICAgICAgKiBhcyBvcHBvc2VkIHRvIGEgY29uZGl0aW9uDQogICAgICAq
Lw0KICAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVHdWFyZChPYmplY3QgdW1sTWVzc2FnZSwgU3Ry
aW5nQnVpbGRlciBndWFyZCwNCiAgICAgICAgICAgICBib29sZWFuIHBhcmFsbGVsbCwgYm9vbGVh
biBpdGVyYXRpdmUpIHsNCi0gICAgICAgIC8qIFN0b3JlIHRoZSBndWFyZCwgaS5lLiBjb25kaXRp
b24gb3IgaXRlcmF0aW9uIGV4cHJlc3Npb24sIA0KKyAgICAgICAgLyogU3RvcmUgdGhlIGd1YXJk
LCBpLmUuIGNvbmRpdGlvbiBvciBpdGVyYXRpb24gZXhwcmVzc2lvbiwNCiAgICAgICAgICAqIGlu
IHRoZSByZWN1cnJlbmNlIGZpZWxkIG9mIHRoZSBBY3Rpb246ICovDQogICAgICAgICBpZiAoZ3Vh
cmQgIT0gbnVsbCkgew0KICAgICAgICAgICAgIGd1YXJkID0gbmV3IFN0cmluZ0J1aWxkZXIoIlsi
ICsgZ3VhcmQudG9TdHJpbmcoKS50cmltKCkgKyAiXSIpOw0KQEAgLTEzMDYsNyArMTMwNyw3IEBA
DQogICAgIC8qKg0KICAgICAgKiBCdWlsZCBhIENhbGxBY3Rpb24gZm9yIHRoZSBnaXZlbiBVTUwg
TWVzc2FnZQ0KICAgICAgKiBpZiBpdCBkaWQgbm90IGhhdmUgYW4gQWN0aW9uIHlldC4NCi0gICAg
ICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSB1bWxNZXNzYWdlIHRoZSBVTUwgTWVzc2FnZSBv
YmplY3QgdG8gY3JlYXRlIGFuIEFjdGlvbiBmb3INCiAgICAgICovDQogICAgIHByb3RlY3RlZCB2
b2lkIGJ1aWxkQWN0aW9uKE9iamVjdCB1bWxNZXNzYWdlKSB7DQpAQCAtMTMyMSwxNSArMTMyMiwx
NSBAQA0KICAgICB9DQogDQogICAgIC8qKg0KLSAgICAgKiBUT0RPOiBUaGlzIG5hbWUgb2YgdGhl
IGV4cHJlc3Npb24gbGFuZ3VhZ2Ugc2hvdWxkIGJlIA0KKyAgICAgKiBUT0RPOiBUaGlzIG5hbWUg
b2YgdGhlIGV4cHJlc3Npb24gbGFuZ3VhZ2Ugc2hvdWxkIGJlDQogICAgICAqIGNvbmZpZ3VyYWJs
ZSBieSB0aGUgdXNlci4gPHA+DQotICAgICAqIA0KLSAgICAgKiBBY2NvcmRpbmcgdG8gdGhlIFVN
TCBzdGFuZGFyZCwgDQotICAgICAqIHRoZSBleHByZXNzaW9uIGxhbmd1YWdlIHNob3VsZCBiZSB0
aGUgc2FtZSANCisgICAgICoNCisgICAgICogQWNjb3JkaW5nIHRvIHRoZSBVTUwgc3RhbmRhcmQs
DQorICAgICAqIHRoZSBleHByZXNzaW9uIGxhbmd1YWdlIHNob3VsZCBiZSB0aGUgc2FtZQ0KICAg
ICAgKiBmb3IgYWxsIGVsZW1lbnRzIGluIG9uZSBkaWFncmFtLiA8cD4NCi0gICAgICogDQorICAg
ICAqDQogICAgICAqIFVNTCBpcyBub3QgYSBzZW5zaWJsZSBkZWZhdWx0IC0gdXN1YWxseSB0aGlz
IGlzIHNvbWUgcHNldWRvLWxhbmd1YWdlLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHJl
dHVybiB0aGUgbmFtZSBvZiB0aGUgZXhwcmVzc2lvbiBsYW5ndWFnZQ0KICAgICAgKi8NCiAgICAg
cHJpdmF0ZSBTdHJpbmcgZ2V0RXhwcmVzc2lvbkxhbmd1YWdlKCkgew0KQEAgLTEzMzcsNyArMTMz
OCw3IEBADQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAqIFdhbGtzIGEgY2FsbCB0cmVlIGZy
b20gYSA8Y29kZT5yb290PC9jb2RlPiBub2RlIA0KKyAgICAgKiBXYWxrcyBhIGNhbGwgdHJlZSBm
cm9tIGEgPGNvZGU+cm9vdDwvY29kZT4gbm9kZQ0KICAgICAgKiBmb2xsb3dpbmcgdGhlIGRpcmVj
dGlvbnMgZ2l2ZW4gaW4gPGNvZGU+cGF0aDwvY29kZT4NCiAgICAgICogdG8gYSBkZXN0aW5hdGlv
biBub2RlLiBJZiB0aGUgZGVzdGluYXRpb24gbm9kZSBjYW5ub3QgYmUgcmVhY2hlZCwgdGhlbg0K
ICAgICAgKiBudWxsIGlzIHJldHVybmVkLg0KQEAgLTEzNTMsMTIgKzEzNTQsMTIgQEANCiAgICAg
ICAgICAgICBpZiAocGF0aC5nZXQoaSkgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICBidiA9
IE1hdGgubWF4KCgoSW50ZWdlcikgcGF0aC5nZXQoaSkpLmludFZhbHVlKCkgLSAxLCAwKTsNCiAg
ICAgICAgICAgICB9DQotICAgIA0KKw0KICAgICAgICAgICAgIGludCBzdiA9IDA7DQogICAgICAg
ICAgICAgaWYgKHBhdGguZ2V0KGkgKyAxKSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgIHN2
ID0gTWF0aC5tYXgoKChJbnRlZ2VyKSBwYXRoLmdldChpICsgMSkpLmludFZhbHVlKCksIDApOw0K
ICAgICAgICAgICAgIH0NCi0gICAgDQorDQogICAgICAgICAgICAgcm9vdCA9IHdhbGsocm9vdCwg
YnYgLSAxLCB0cnVlKTsNCiAgICAgICAgICAgICBpZiAocm9vdCA9PSBudWxsKSB7DQogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxsOw0KQEAgLTE0NzMsNyArMTQ3NCw3IEBADQogICAgICAgICBm
b3IgKDsgaSA8IGxlbjspIHsNCiAgICAgICAgICAgICBpbnQgaWJ2LCBpc3Y7DQogICAgICAgICAg
ICAgaW50IGpidiwganN2Ow0KLSAgICANCisNCiAgICAgICAgICAgICBpYnYgPSAwOw0KICAgICAg
ICAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgY2hhciBjID0g
bjEuY2hhckF0KGkpOw0KQEAgLTE0OTIsNyArMTQ5Myw3IEBADQogICAgICAgICAgICAgICAgIGlz
diAqPSAyNjsNCiAgICAgICAgICAgICAgICAgaXN2ICs9IGMgLSAnYSc7DQogICAgICAgICAgICAg
fQ0KLSAgICANCisNCiAgICAgICAgICAgICBqYnYgPSAwOw0KICAgICAgICAgICAgIGZvciAoOyBq
IDwgamxlbjsgaisrKSB7DQogICAgICAgICAgICAgICAgIGNoYXIgYyA9IG4yLmNoYXJBdChqKTsN
CkBAIC0xNTExLDE2ICsxNTEyLDE2IEBADQogICAgICAgICAgICAgICAgIGpzdiAqPSAyNjsNCiAg
ICAgICAgICAgICAgICAganN2ICs9IGMgLSAnYSc7DQogICAgICAgICAgICAgfQ0KLSAgICANCisN
CiAgICAgICAgICAgICBpZiAoaWJ2ICE9IGpidiB8fCBpc3YgIT0ganN2KSB7DQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICB9DQotICAgIA0KKw0KICAgICAgICAg
ICAgIGlmIChpIDwgbGVuICYmIG4xLmNoYXJBdChpKSAhPSAnLicpIHsNCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBpKys7DQotICAg
IA0KKw0KICAgICAgICAgICAgIGlmIChqIDwgamxlbiAmJiBuMi5jaGFyQXQoaikgIT0gJy4nKSB7
DQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICB9DQpAQCAtMTU0
Nyw3ICsxNTQ4LDcgQEANCiAgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHBhcnNlTXNnT3JkZXIoU3Ry
aW5nIHMpIHsNCiAgICAgICAgIGludCBpLCB0Ow0KICAgICAgICAgaW50IHYgPSAwOw0KLSAgICAN
CisNCiAgICAgICAgIHQgPSBzLmxlbmd0aCgpOw0KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHQ7
IGkrKykgew0KICAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOw0KQEAgLTE1NTcsNyAr
MTU1OCw3IEBADQogICAgICAgICAgICAgdiAqPSAyNjsNCiAgICAgICAgICAgICB2ICs9IGMgLSAn
YSc7DQogICAgICAgICB9DQotICAgIA0KKw0KICAgICAgICAgcmV0dXJuIHY7DQogICAgIH0NCiAN
CkBAIC0xNjQ1LDEzICsxNjQ2LDEzIEBADQogICAgIC8qKg0KICAgICAgKiBGaW5kcyB0aGUgbWVz
c2FnZXMgaW4gQ29sbGVjdGlvbiBjIHRoYXQgaGFzIG1lc3NhZ2UgYSBhcyBhY3RpdmF0b3IuDQog
ICAgICAqLw0KLSAgICBwcml2YXRlIENvbGxlY3Rpb248T2JqZWN0PiBmaWx0ZXJXaXRoQWN0aXZh
dG9yKENvbGxlY3Rpb24gYywgDQorICAgIHByaXZhdGUgQ29sbGVjdGlvbjxPYmplY3Q+IGZpbHRl
cldpdGhBY3RpdmF0b3IoQ29sbGVjdGlvbiBjLA0KICAgICAgICAgICAgIE9iamVjdC8qTU1lc3Nh
Z2UqL2EpIHsNCiAgICAgICAgIExpc3Q8T2JqZWN0PiB2ID0gbmV3IEFycmF5TGlzdDxPYmplY3Q+
KCk7DQogICAgICAgICBmb3IgKE9iamVjdCBtc2cgOiBjKSB7DQogICAgICAgICAgICAgaWYgKE1v
ZGVsLmdldEZhY2FkZSgpLmdldEFjdGl2YXRvcihtc2cpID09IGEpIHsNCiAgICAgICAgICAgICAg
ICAgdi5hZGQobXNnKTsNCi0gICAgICAgICAgICB9ICAgICAgICAgICAgDQorICAgICAgICAgICAg
fQ0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJuIHY7DQogICAgIH0NCkBAIC0xNjY1LDcgKzE2
NjYsNyBAQA0KICAgICAgKiAgICAgICAgICAgIE1NZXNzYWdlDQogICAgICAqLw0KICAgICBwcml2
YXRlIHZvaWQgaW5zZXJ0U3VjY2Vzc29yKE9iamVjdCBtLCBPYmplY3QgcywgaW50IHApIHsNCi0g
ICAgICAgIExpc3Q8T2JqZWN0PiBzdWNjZXNzb3JzID0gDQorICAgICAgICBMaXN0PE9iamVjdD4g
c3VjY2Vzc29ycyA9DQogICAgICAgICAgICAgbmV3IEFycmF5TGlzdDxPYmplY3Q+KE1vZGVsLmdl
dEZhY2FkZSgpLmdldFN1Y2Nlc3NvcnMobSkpOw0KICAgICAgICAgaWYgKHN1Y2Nlc3NvcnMuc2l6
ZSgpID4gcCkgew0KICAgICAgICAgICAgIHN1Y2Nlc3NvcnMuYWRkKHAsIHMpOw0KQEAgLTE2NzYs
MTAgKzE2NzcsMTAgQEANCiAgICAgfQ0KIA0KICAgICAvKioNCi0gICAgICogRmluZHMgYWxsIG9w
ZXJhdGlvbnMgaW4gYSBnaXZlbiBjb2xsZWN0aW9uIG9mIGNsYXNzaWZpZXJzIA0KLSAgICAgKiB3
aXRoIHRoZSBnaXZlbiBuYW1lIA0KLSAgICAgKiBhbmQgdGhlIGdpdmVuIG51bWJlciBvZiBwYXJh
bWV0ZXJzLiANCi0gICAgICogSWYgbm8gb3BlcmF0aW9uIGlzIGZvdW5kLCBvbmUgaXMgY3JlYXRl
ZCBpbiB0aGUgZmlyc3QgZ2l2ZW4gQ2xhc3NpZmllci4gDQorICAgICAqIEZpbmRzIGFsbCBvcGVy
YXRpb25zIGluIGEgZ2l2ZW4gY29sbGVjdGlvbiBvZiBjbGFzc2lmaWVycw0KKyAgICAgKiB3aXRo
IHRoZSBnaXZlbiBuYW1lDQorICAgICAqIGFuZCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHBhcmFtZXRl
cnMuDQorICAgICAqIElmIG5vIG9wZXJhdGlvbiBpcyBmb3VuZCwgb25lIGlzIGNyZWF0ZWQgaW4g
dGhlIGZpcnN0IGdpdmVuIENsYXNzaWZpZXIuDQogICAgICAqIFRoZSBhcHBsaWNhYmxlIG9wZXJh
dGlvbnMgYXJlIHJldHVybmVkLg0KICAgICAgKg0KICAgICAgKiBAcGFyYW0gY2xhc3NpZmllcnMg
dGhlIGNvbGxlY3Rpb24gb2YgY2xhc3NpZmllcnMgdG8gc2VhcmNoIGZvciBvcGVyYXRpb25zDQpA
QCAtMTY4OCwxNCArMTY4OSwxNCBAQA0KICAgICAgKiBAcmV0dXJuIGEgbGlzdCBvZiB0aGUgc291
Z2h0IG9wZXJhdGlvbnMNCiAgICAgICogQHRocm93cyBQYXJzZUV4Y2VwdGlvbiBpZiB0aGUgb3Bl
cmF0aW9uIHN5bnRheCBjYW4gbm90IGJlIHBhcnNlZA0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBM
aXN0IGdldE9wZXJhdGlvbihDb2xsZWN0aW9uIGNsYXNzaWZpZXJzLCBTdHJpbmcgbmFtZSwgaW50
IHBhcmFtcykgDQorICAgIHByaXZhdGUgTGlzdCBnZXRPcGVyYXRpb24oQ29sbGVjdGlvbiBjbGFz
c2lmaWVycywgU3RyaW5nIG5hbWUsIGludCBwYXJhbXMpDQogICAgICAgICB0aHJvd3MgUGFyc2VF
eGNlcHRpb24gew0KICAgICAgICAgTGlzdDxPYmplY3Q+IG9wZXJhdGlvbnMgPSBuZXcgQXJyYXlM
aXN0PE9iamVjdD4oKTsNCi0gICAgDQorDQogICAgICAgICBpZiAobmFtZSA9PSBudWxsIHx8IG5h
bWUubGVuZ3RoKCkgPT0gMCkgew0KICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25zOw0KICAg
ICAgICAgfQ0KLSAgICANCisNCiAgICAgICAgIGZvciAoT2JqZWN0IGNsZiA6IGNsYXNzaWZpZXJz
KSB7DQogICAgICAgICAgICAgQ29sbGVjdGlvbiBvZSA9IE1vZGVsLmdldEZhY2FkZSgpLmdldEZl
YXR1cmVzKGNsZik7DQogICAgICAgICAgICAgZm9yIChPYmplY3Qgb3BlcmF0aW9uIDogb2UpIHsN
CkBAIC0xNzE1LDcgKzE3MTYsNyBAQA0KICAgICAgICAgaWYgKG9wZXJhdGlvbnMuc2l6ZSgpID4g
MCkgew0KICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25zOw0KICAgICAgICAgfQ0KLSAgICAN
CisNCiAgICAgICAgIEl0ZXJhdG9yIGl0ID0gY2xhc3NpZmllcnMuaXRlcmF0b3IoKTsNCiAgICAg
ICAgIGlmIChpdC5oYXNOZXh0KCkpIHsNCiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGV4cHIg
PSBuZXcgU3RyaW5nQnVpbGRlcihuYW1lICsgIigiKTsNCkBAIC0xNzM1LDcgKzE3MzYsNyBAQA0K
ICAgICAgICAgICAgICAgICBQcm9qZWN0TWFuYWdlci5nZXRNYW5hZ2VyKCkNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAuZ2V0Q3VycmVudFByb2plY3QoKS5nZXREZWZhdWx0UmV0dXJuVHlwZSgp
Ow0KICAgICAgICAgICAgIE9iamVjdCBvcCA9IE1vZGVsLmdldENvcmVGYWN0b3J5KCkuYnVpbGRP
cGVyYXRpb24oY2xzLCByZXR1cm5UeXBlKTsNCi0gICAgDQorDQogICAgICAgICAgICAgbmV3IE9w
ZXJhdGlvbk5vdGF0aW9uVW1sKG9wKS5wYXJzZU9wZXJhdGlvbigNCiAgICAgICAgICAgICAgICAg
ICAgICAgICBleHByLnRvU3RyaW5nKCksIG9wKTsNCiAgICAgICAgICAgICBvcGVyYXRpb25zLmFk
ZChvcCk7DQpAQCAtMTc1Nyw5ICsxNzU4LDkgQEANCiAgICAgfQ0KIA0KICAgICAvKioNCi0gICAg
ICogUmVjdXJzaXZlbHkgY291bnQgdGhlIG51bWJlciBvZiBwcmVkZWNlc3NvcnMgb2YgdGhlIGdp
dmVuIE1lc3NhZ2UsIA0KKyAgICAgKiBSZWN1cnNpdmVseSBjb3VudCB0aGUgbnVtYmVyIG9mIHBy
ZWRlY2Vzc29ycyBvZiB0aGUgZ2l2ZW4gTWVzc2FnZSwNCiAgICAgICogYW5kIHJldHVybiAoYSBw
b2ludGVyIHRvKSB0aGUgZmlyc3QgTWVzc2FnZSBpbiB0aGUgY2hhaW4uDQotICAgICAqIA0KKyAg
ICAgKg0KICAgICAgKiBAcGFyYW0gdW1sTWVzc2FnZSB0aGUgVU1MIE1lc3NhZ2UgdG8gY291bnQg
dGhlIHByZWRlY2Vzc29ycyBmb3INCiAgICAgICogQHBhcmFtIHB0ciBhbiBvYmplY3QgdG8gY29u
dGFpbiB0aGUgcmV0dXJuZWQgZmlyc3QgTWVzc2FnZQ0KICAgICAgKiBAcmV0dXJuIHRoZSBudW1i
ZXIgb2YgbWVzc2FnZXMgaW4gdGhlIGNoYWluDQpAQCAtMTc3Niw5ICsxNzc3LDkgQEANCiAgICAg
ICAgIH0NCiANCiAgICAgICAgIGFjdGl2YXRvciA9IE1vZGVsLmdldEZhY2FkZSgpLmdldEFjdGl2
YXRvcih1bWxNZXNzYWdlKTsNCi0gICAgICAgIGZvciAoT2JqZWN0IHByZWRlY2Vzc29yIA0KKyAg
ICAgICAgZm9yIChPYmplY3QgcHJlZGVjZXNzb3INCiAgICAgICAgICAgICAgICAgOiBNb2RlbC5n
ZXRGYWNhZGUoKS5nZXRQcmVkZWNlc3NvcnModW1sTWVzc2FnZSkpIHsNCi0gICAgICAgICAgICBp
ZiAoTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0QWN0aXZhdG9yKHByZWRlY2Vzc29yKSANCisgICAgICAg
ICAgICBpZiAoTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0QWN0aXZhdG9yKHByZWRlY2Vzc29yKQ0KICAg
ICAgICAgICAgICAgICAgICAgIT0gYWN0aXZhdG9yKSB7DQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOw0KICAgICAgICAgICAgIH0NCkBAIC0xNzk2LDUgKzE3OTcsNSBAQA0KIA0KICAgICAgICAg
cmV0dXJuIE1hdGgubWF4KHByZSwgbG9jYWwpOw0KICAgICB9DQotICAgIA0KKw0KIH0NCg0KTW9k
aWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vcHJv
dmlkZXJzL3VtbC9BdHRyaWJ1dGVOb3RhdGlvblVtbC5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1s
LnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvbm90YXRpb24vcHJvdmlkZXJzL3VtbC9BdHRyaWJ1dGVOb3RhdGlvblVt
bC5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L25vdGF0aW9uL3Byb3ZpZGVycy91bWwvQXR0cmlidXRlTm90YXRpb25VbWwuamF2YQkob3JpZ2lu
YWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9w
cm92aWRlcnMvdW1sL0F0dHJpYnV0ZU5vdGF0aW9uVW1sLmphdmEJMjAxMi0xMi0zMCAwNTowNjow
MS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
DQotICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTEgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQor
ICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h
dGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVj
bGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz
dHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDIsOCArNDIsOSBAQA0KIGltcG9y
dCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCiBpbXBvcnQg
amF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247DQoraW1wb3J0IGphdmEudXRpbC5sb2dn
aW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0
IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlv
bi5ldmVudHMuQXJnb0V2ZW50UHVtcDsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24u
ZXZlbnRzLkFyZ29FdmVudFR5cGVzOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5l
dmVudHMuQXJnb0hlbHBFdmVudDsNCkBAIC02MSw3ICs2Miw3IEBADQogDQogLyoqDQogICogVGhl
IG5vdGF0aW9uIGZvciBhbiBhdHRyaWJ1dGUgZm9yIFVNTC4NCi0gKiANCisgKg0KICAqIEBhdXRo
b3IgTWljaGllbA0KICAqLw0KIHB1YmxpYyBjbGFzcyBBdHRyaWJ1dGVOb3RhdGlvblVtbCBleHRl
bmRzIEF0dHJpYnV0ZU5vdGF0aW9uIHsNCkBAIC02OSw5ICs3MCw5IEBADQogICAgIC8qKg0KICAg
ICAgKiBUaGUgc3RhbmRhcmQgZXJyb3IgZXRjLiBsb2dnZXINCiAgICAgICovDQotICAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSANCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIo
QXR0cmlidXRlTm90YXRpb25VbWwuY2xhc3MpOw0KLSAgICANCisgICAgcHJpdmF0ZSBzdGF0aWMg
ZmluYWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKEF0dHJpYnV0ZU5v
dGF0aW9uVW1sLmNsYXNzLmdldE5hbWUoKSk7DQorDQogICAgIC8qKg0KICAgICAgKiBUaGUgY29u
c3RydWN0b3IuDQogICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIFVNTCBvYmplY3QNCkBAIC04
NSw3ICs4Niw3IEBADQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBwYXJzZShPYmplY3QgbW9k
ZWxFbGVtZW50LCBTdHJpbmcgdGV4dCkgew0KICAgICAgICAgdHJ5IHsNCi0gICAgICAgICAgICBw
YXJzZUF0dHJpYnV0ZUZpZyhNb2RlbC5nZXRGYWNhZGUoKS5nZXRPd25lcihtb2RlbEVsZW1lbnQp
LCANCisgICAgICAgICAgICBwYXJzZUF0dHJpYnV0ZUZpZyhNb2RlbC5nZXRGYWNhZGUoKS5nZXRP
d25lcihtb2RlbEVsZW1lbnQpLA0KICAgICAgICAgICAgICAgICAgICAgbW9kZWxFbGVtZW50LCB0
ZXh0KTsNCiAgICAgICAgIH0gY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIHBlKSB7DQogICAgICAgICAg
ICAgU3RyaW5nIG1zZyA9ICJzdGF0dXNtc2cuYmFyLmVycm9yLnBhcnNpbmcuYXR0cmlidXRlIjsN
CkBAIC05NCw3ICs5NSw3IEBADQogICAgICAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihwZS5n
ZXRFcnJvck9mZnNldCgpKSwNCiAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgIEFyZ29FdmVu
dFB1bXAuZmlyZUV2ZW50KG5ldyBBcmdvSGVscEV2ZW50KA0KLSAgICAgICAgICAgICAgICAgICAg
QXJnb0V2ZW50VHlwZXMuSEVMUF9DSEFOR0VELCB0aGlzLCANCisgICAgICAgICAgICAgICAgICAg
IEFyZ29FdmVudFR5cGVzLkhFTFBfQ0hBTkdFRCwgdGhpcywNCiAgICAgICAgICAgICAgICAgICAg
IFRyYW5zbGF0b3IubWVzc2FnZUZvcm1hdChtc2csIGFyZ3MpKSk7DQogICAgICAgICB9DQogICAg
IH0NCkBAIC0xMTgsNyArMTE5LDcgQEANCiAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICB9
DQogDQotICAgICAgICAvKiBUT0RPOiBXZSBzaG91bGQgaGF2ZSBhbGwgdGhlIGluZm9ybWF0aW9u
IHRoYXQgaXMgcmVxdWlyZWQgaW4gdGhlIA0KKyAgICAgICAgLyogVE9ETzogV2Ugc2hvdWxkIGhh
dmUgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHJlcXVpcmVkIGluIHRoZQ0KICAgICAgICAg
ICogTm90YXRpb25TZXR0aW5ncyBvYmplY3QgKi8NCiAgICAgICAgIFByb2plY3QgcHJvamVjdCA9
IFByb2plY3RNYW5hZ2VyLmdldE1hbmFnZXIoKS5nZXRDdXJyZW50UHJvamVjdCgpOw0KIA0KQEAg
LTE0NiwxNCArMTQ3LDE0IEBADQogICAgICAgICAgICAgaWYgKHMubGVuZ3RoKCkgPiAwKSB7DQog
ICAgICAgICAgICAgICAgIC8vIHllcywgdGhlcmUgYXJlIG1vcmU6DQogICAgICAgICAgICAgICAg
IE9iamVjdCBhdHRyVHlwZSA9IHByb2plY3QuZ2V0RGVmYXVsdEF0dHJpYnV0ZVR5cGUoKTsNCi0g
ICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAgIE9iamVjdCBuZXdBdHRyaWJ1dGUg
PSBNb2RlbC5nZXRVbWxGYWN0b3J5KCkuYnVpbGROb2RlKA0KICAgICAgICAgICAgICAgICAgICAg
ICAgIE1vZGVsLmdldE1ldGFUeXBlcygpLmdldEF0dHJpYnV0ZSgpKTsNCi0gICAgICAgICAgICAg
ICAgDQorDQogICAgICAgICAgICAgICAgIE1vZGVsLmdldENvcmVIZWxwZXIoKS5zZXRUeXBlKG5l
d0F0dHJpYnV0ZSwgYXR0clR5cGUpOw0KLSAgICAgICAgICAgICAgICANCisNCiAgICAgICAgICAg
ICAgICAgaWYgKG5ld0F0dHJpYnV0ZSAhPSBudWxsKSB7DQotICAgICAgICAgICAgICAgICAgICAv
KiBXZSBuZWVkIHRvIHNldCB0aGUgbmFtZXNwYWNlL293bmVyIA0KKyAgICAgICAgICAgICAgICAg
ICAgLyogV2UgbmVlZCB0byBzZXQgdGhlIG5hbWVzcGFjZS9vd25lcg0KICAgICAgICAgICAgICAg
ICAgICAgICogb2YgdGhlIG5ldyBhdHRyaWJ1dGUgYmVmb3JlIHBhcnNpbmc6ICovDQogICAgICAg
ICAgICAgICAgICAgICBpZiAoaSAhPSAtMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgIE1v
ZGVsLmdldENvcmVIZWxwZXIoKS5hZGRGZWF0dXJlKA0KQEAgLTE2NCw3ICsxNjUsNyBAQA0KICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZUF0dHJpYnV0ZShzLCBuZXdBdHRyaWJ1dGUpOw0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSAxc3QgYXR0cmlidXRlIGlzIHN0YXRpYywgDQor
ICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgdGhlIDFzdCBhdHRyaWJ1dGUgaXMgc3RhdGlj
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZW4gdGhlIG5ldyBvbmVzLCB0b28uICov
DQogICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWwuZ2V0Q29yZUhlbHBlcigpLnNldFN0YXRp
YygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0F0dHJpYnV0ZSwNCkBAIC0x
OTAsNyArMTkxLDcgQEANCiAgICAgICogPC9wcmU+DQogICAgICAqDQogICAgICAqIDx1bD4NCi0g
ICAgICogPGxpPlRoZSAvIGZvciBkZXJpdmVkIGlzIG9wdGlvbmFsIGJ1dCBoYXMgdG8gYmUgdGhl
IGZpcnN0IG5vbi13aGl0ZSANCisgICAgICogPGxpPlRoZSAvIGZvciBkZXJpdmVkIGlzIG9wdGlv
bmFsIGJ1dCBoYXMgdG8gYmUgdGhlIGZpcnN0IG5vbi13aGl0ZQ0KICAgICAgKiBjaGFyYWN0ZXIu
DQogICAgICAqIDxsaT5JZiBvbmx5IG9uZSBvZiB2aXNpYmlsaXR5IGFuZCBuYW1lIGlzIGdpdmVu
LCB0aGVuIGl0IGlzIGFzc3VtZWQgdG8NCiAgICAgICogYmUgdGhlIG5hbWUgYW5kIHRoZSB2aXNp
YmlsaXR5IGlzIGxlZnQgdW5jaGFuZ2VkLg0KQEAgLTIxOCw3ICsyMTksNyBAQA0KICAgICAgKiB0
eXBlIG5hbWUgWz0gaW5pdF0gWztdICkNCiAgICAgICoNCiAgICAgICogQHBhcmFtIHRleHQgICAg
VGhlIFN0cmluZyB0byBwYXJzZS4NCi0gICAgICogQHBhcmFtIGF0dHJpYnV0ZSBUaGUgYXR0cmli
dXRlIHRvIG1vZGlmeSB0byBjb21wbHkgDQorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0
dHJpYnV0ZSB0byBtb2RpZnkgdG8gY29tcGx5DQogICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zIGluIHMuDQogICAgICAqIEB0aHJvd3MgUGFyc2VF
eGNlcHRpb24NCiAgICAgICogICAgICAgICAgICAgd2hlbiBpdCBkZXRlY3RzIGFuIGVycm9yIGlu
IHRoZSBhdHRyaWJ1dGUgc3RyaW5nLiBTZWUgYWxzbw0KQEAgLTI1MiwxNSArMjUzLDE1IEBADQog
ICAgICAgICB9DQogDQogICAgICAgICAvKiBIYW5kbGUgVmlzaWJpbGl0eTogKi8NCi0gICAgICAg
IGlmICh0ZXh0Lmxlbmd0aCgpID4gMCANCi0gICAgICAgICAgICAgICAgJiYgTm90YXRpb25VdGls
aXR5VW1sLlZJU0lCSUxJVFlDSEFSUy5pbmRleE9mKHRleHQuY2hhckF0KDApKSANCisgICAgICAg
IGlmICh0ZXh0Lmxlbmd0aCgpID4gMA0KKyAgICAgICAgICAgICAgICAmJiBOb3RhdGlvblV0aWxp
dHlVbWwuVklTSUJJTElUWUNIQVJTLmluZGV4T2YodGV4dC5jaGFyQXQoMCkpDQogICAgICAgICAg
ICAgICAgICAgICA+PSAwKSB7DQogICAgICAgICAgICAgdmlzaWJpbGl0eSA9IHRleHQuc3Vic3Ry
aW5nKDAsIDEpOw0KICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygxKTsNCiAgICAg
ICAgIH0NCiANCiAgICAgICAgIHRyeSB7DQotICAgICAgICAgICAgc3QgPSBuZXcgTXlUb2tlbml6
ZXIodGV4dCwgDQorICAgICAgICAgICAgc3QgPSBuZXcgTXlUb2tlbml6ZXIodGV4dCwNCiAgICAg
ICAgICAgICAgICAgICAgICIgLFx0LDw8LFx1MDBBQixcdTAwQkIsPj4sWyxdLDosPSx7LH0sXFws
IiwNCiAgICAgICAgICAgICAgICAgICAgIE5vdGF0aW9uVXRpbGl0eVVtbC5hdHRyaWJ1dGVDdXN0
b21TZXApOw0KICAgICAgICAgICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpIHsNCkBAIC0y
NzUsNyArMjc2LDcgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQodG9r
ZW4pOw0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RlcmVvdHlwZSAhPSBudWxsKSB7DQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyBtc2cgPSANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1z
ZyA9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2luZy5lcnJvci5hdHRy
aWJ1dGUudHdvLXNldHMtc3RlcmVvdHlwZXMiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oVHJhbnNsYXRvci5sb2NhbGl6ZShtc2cpLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0LmdldFRva2VuSW5kZXgoKSk7DQpA
QCAtMjk0LDcgKzI5NSw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5k
KHRva2VuKTsNCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG11bHRpcGxpY2l0eSAhPSBudWxsKSB7DQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyBtc2cgPSANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIG1zZyA9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2luZy5lcnJv
ci5hdHRyaWJ1dGUudHdvLW11bHRpcGxpY2l0aWVzIjsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IFBhcnNlRXhjZXB0aW9uKFRyYW5zbGF0b3IubG9jYWxpemUobXNnKSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5nZXRUb2tlbkluZGV4KCkp
Ow0KQEAgLTMzMSw3ICszMzIsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgiPSIuZXF1YWxzKHRva2VuKSkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHZhbHVlICE9IG51bGwpIHsNCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtc2cgPSANCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtc2cgPQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXJzaW5nLmVycm9yLmF0dHJpYnV0ZS5wcm9wLXR3by12YWx1ZXMi
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0W10gYXJncyA9IHtwcm9w
dmFsdWV9Ow0KIA0KQEAgLTM1NCw3ICszNTUsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgaGFz
RXEgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgiPSIuZXF1YWxzKHRva2Vu
KSkgew0KICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsNCi0gICAgICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gDQorICAgICAgICAgICAgICAgICAgICAgICAg
U3RyaW5nIG1zZyA9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJzaW5nLmVycm9y
LmF0dHJpYnV0ZS50d28tZGVmYXVsdC12YWx1ZXMiOw0KICAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IG5ldyBQYXJzZUV4Y2VwdGlvbihUcmFuc2xhdG9yLmxvY2FsaXplKG1zZyksIHN0DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0VG9rZW5JbmRleCgpKTsNCkBAIC00
MjQsMjEgKzQyNSwyMiBAQA0KICAgICAgICAgfSBjYXRjaCAoTm9TdWNoRWxlbWVudEV4Y2VwdGlv
biBuc2VlKSB7DQogICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJwYXJzaW5nLmVycm9yLmF0dHJp
YnV0ZS51bmV4cGVjdGVkLWVuZC1hdHRyaWJ1dGUiOw0KICAgICAgICAgICAgIHRocm93IG5ldyBQ
YXJzZUV4Y2VwdGlvbihUcmFuc2xhdG9yLmxvY2FsaXplKG1zZyksIHRleHQubGVuZ3RoKCkpOw0K
LSAgICAgICAgfSANCisgICAgICAgIH0NCiAgICAgICAgIC8vIGNhdGNoICYgcmV0aHJvdyBpcyBu
b3QgbmVjZXNzYXJ5IGlmIHdlIGRvbid0IGRvIG5vdGhpbmcgKHBlbnlhc2tpdG8pDQogICAgICAg
ICAvLyBjYXRjaCAoUGFyc2VFeGNlcHRpb24gcHJlKSB7DQogICAgICAgICAvLyAgICAgIHRocm93
IHByZTsNCiAgICAgICAgIC8vIH0NCiANCi0gICAgICAgIGlmIChMT0cuaXNEZWJ1Z0VuYWJsZWQo
KSkgew0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygiUGFyc2VBdHRyaWJ1dGUgW25hbWU6ICIgKyBu
YW1lIA0KLSAgICAgICAgICAgICAgICAgICAgKyAiIHZpc2liaWxpdHk6ICIgKyB2aXNpYmlsaXR5
IA0KLSAgICAgICAgICAgICAgICAgICAgKyAiIHR5cGU6ICIgKyB0eXBlICsgIiB2YWx1ZTogIiAr
IHZhbHVlIA0KKyAgICAgICAgaWYgKExPRy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7DQorICAg
ICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiUGFyc2VBdHRyaWJ1dGUgW25hbWU6ICIgKyBu
YW1lDQorICAgICAgICAgICAgICAgICAgICArICIgdmlzaWJpbGl0eTogIiArIHZpc2liaWxpdHkN
CisgICAgICAgICAgICAgICAgICAgICsgIiB0eXBlOiAiICsgdHlwZSArICIgdmFsdWU6ICIgKyB2
YWx1ZQ0KICAgICAgICAgICAgICAgICAgICAgKyAiIHN0ZXJlbzogIiArIHN0ZXJlb3R5cGUNCiAg
ICAgICAgICAgICAgICAgICAgICsgIiBtdWx0OiAiICsgbXVsdGlwbGljaXR5KTsNCiAgICAgICAg
ICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpICsgMSA8IHByb3BlcnRpZXMuc2l6ZSgpOyBpICs9IDIpIHsNCi0gICAgICAgICAg
ICAgICAgICAgIExPRy5kZWJ1ZygiXHRQcm9wZXJ0eSBbbmFtZTogIiArIHByb3BlcnRpZXMuZ2V0
KGkpICsgIiA9ICINCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx0UHJvcGVydHkgW25hbWU6ICIgKyBwcm9wZXJ0
aWVzLmdldChpKSArICIgPSAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcHJvcGVy
dGllcy5nZXQoaSArIDEpICsgIl0iKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
IH0NCkBAIC00ODIsNyArNDg0LDcgQEANCiANCiAgICAgcHJpdmF0ZSB2b2lkIGRlYWxXaXRoVmFs
dWUoT2JqZWN0IGF0dHJpYnV0ZSwgU3RyaW5nQnVpbGRlciB2YWx1ZSkgew0KICAgICAgICAgaWYg
KHZhbHVlICE9IG51bGwpIHsNCi0gICAgICAgICAgICBQcm9qZWN0IHByb2plY3QgPSANCisgICAg
ICAgICAgICBQcm9qZWN0IHByb2plY3QgPQ0KICAgICAgICAgICAgICAgICBQcm9qZWN0TWFuYWdl
ci5nZXRNYW5hZ2VyKCkuZ2V0Q3VycmVudFByb2plY3QoKTsNCiAgICAgICAgICAgICBQcm9qZWN0
U2V0dGluZ3MgcHMgPSBwcm9qZWN0LmdldFByb2plY3RTZXR0aW5ncygpOw0KICAgICAgICAgICAg
IE9iamVjdCBpbml0RXhwciA9IE1vZGVsLmdldERhdGFUeXBlc0ZhY3RvcnkoKS5jcmVhdGVFeHBy
ZXNzaW9uKA0KQEAgLTUwMCw3ICs1MDIsNyBAQA0KICAgICAgICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgICAgICAgIG5zID0gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0Um9vdChhdHRyaWJ1dGUpOw0K
ICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBNb2RlbC5nZXRDb3JlSGVscGVyKCkuc2V0VHlw
ZShhdHRyaWJ1dGUsIA0KKyAgICAgICAgICAgIE1vZGVsLmdldENvcmVIZWxwZXIoKS5zZXRUeXBl
KGF0dHJpYnV0ZSwNCiAgICAgICAgICAgICAgICAgICAgIE5vdGF0aW9uVXRpbGl0eVVtbC5nZXRU
eXBlKHR5cGUudHJpbSgpLCBucykpOw0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtNTQ0LDEyICs1
NDYsMTIgQEANCiAgICAgICogRGVwZW5kaW5nIG9uIHNldHRpbmdzIGluIE5vdGF0aW9uLCB2aXNp
YmlsaXR5LCBtdWx0aXBsaWNpdHksDQogICAgICAqIHR5cGUtZXhwcmVzc2lvbiwgaW5pdGlhbCB2
YWx1ZSBhbmQgcHJvcGVydGllcyBhcmUgc2hvd24vbm90IHNob3duLg0KICAgICAgKi8NCi0gICAg
cHJpdmF0ZSBTdHJpbmcgdG9TdHJpbmcoT2JqZWN0IG1vZGVsRWxlbWVudCwgYm9vbGVhbiB1c2VH
dWlsbGVtZXRzLCANCisgICAgcHJpdmF0ZSBTdHJpbmcgdG9TdHJpbmcoT2JqZWN0IG1vZGVsRWxl
bWVudCwgYm9vbGVhbiB1c2VHdWlsbGVtZXRzLA0KICAgICAgICAgICAgIGJvb2xlYW4gc2hvd1Zp
c2liaWxpdHksIGJvb2xlYW4gc2hvd011bHRpcGxpY2l0eSwgYm9vbGVhbiBzaG93VHlwZXMsDQog
ICAgICAgICAgICAgYm9vbGVhbiBzaG93SW5pdGlhbFZhbHVlcywgYm9vbGVhbiBzaG93UHJvcGVy
dGllcykgew0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBTdHJpbmcgZGVyaXZlZCA9ICIi
Ow0KLSAgICAgICAgICAgIE9iamVjdCB0diA9IE1vZGVsLmdldEZhY2FkZSgpLmdldFRhZ2dlZFZh
bHVlKG1vZGVsRWxlbWVudCwgDQorICAgICAgICAgICAgT2JqZWN0IHR2ID0gTW9kZWwuZ2V0RmFj
YWRlKCkuZ2V0VGFnZ2VkVmFsdWUobW9kZWxFbGVtZW50LA0KICAgICAgICAgICAgICAgICAgICAg
RmFjYWRlLkRFUklWRURfVEFHKTsNCiAgICAgICAgICAgICBpZiAodHYgIT0gbnVsbCkgew0KICAg
ICAgICAgICAgICAgICBTdHJpbmcgdGFnID0gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0VmFsdWVPZlRh
Zyh0dik7DQpAQCAtNTU3LDggKzU1OSw4IEBADQogICAgICAgICAgICAgICAgICAgICBkZXJpdmVk
ID0gIi8iOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgICAg
IA0KLSAgICAgICAgICAgIFN0cmluZyBzdGVyZW8gPSBOb3RhdGlvblV0aWxpdHlVbWwuZ2VuZXJh
dGVTdGVyZW90eXBlKG1vZGVsRWxlbWVudCwgDQorDQorICAgICAgICAgICAgU3RyaW5nIHN0ZXJl
byA9IE5vdGF0aW9uVXRpbGl0eVVtbC5nZW5lcmF0ZVN0ZXJlb3R5cGUobW9kZWxFbGVtZW50LA0K
ICAgICAgICAgICAgICAgICAgICAgdXNlR3VpbGxlbWV0cyk7DQogICAgICAgICAgICAgU3RyaW5n
IG5hbWUgPSBNb2RlbC5nZXRGYWNhZGUoKS5nZXROYW1lKG1vZGVsRWxlbWVudCk7DQogICAgICAg
ICAgICAgU3RyaW5nIG11bHRpcGxpY2l0eSA9IGdlbmVyYXRlTXVsdGlwbGljaXR5KA0KQEAgLTYw
Miw3ICs2MDQsNyBAQA0KICAgICAgICAgICAgIGlmIChzaG93SW5pdGlhbFZhbHVlcykgew0KICAg
ICAgICAgICAgICAgICBPYmplY3QgaXYgPSBNb2RlbC5nZXRGYWNhZGUoKS5nZXRJbml0aWFsVmFs
dWUobW9kZWxFbGVtZW50KTsNCiAgICAgICAgICAgICAgICAgaWYgKGl2ICE9IG51bGwpIHsNCi0g
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBpbml0aWFsVmFsdWUgPSANCisgICAgICAgICAgICAg
ICAgICAgIFN0cmluZyBpbml0aWFsVmFsdWUgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgIChT
dHJpbmcpIE1vZGVsLmdldEZhY2FkZSgpLmdldEJvZHkoaXYpOw0KICAgICAgICAgICAgICAgICAg
ICAgaWYgKGluaXRpYWxWYWx1ZSAhPSBudWxsICYmIGluaXRpYWxWYWx1ZS5sZW5ndGgoKSA+IDAp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIiA9ICIpLmFwcGVuZChpbml0
aWFsVmFsdWUpLmFwcGVuZCgiICIpOw0KQEAgLTYzNSw3ICs2MzcsNyBAQA0KICAgICAgICAgICAg
IHJldHVybiAiIjsNCiAgICAgICAgIH0NCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSBz
dGF0aWMgU3RyaW5nIGdlbmVyYXRlTXVsdGlwbGljaXR5KE9iamVjdCBtKSB7DQogICAgICAgICBp
ZiAobSA9PSBudWxsIHx8ICIxIi5lcXVhbHMoTW9kZWwuZ2V0RmFjYWRlKCkudG9TdHJpbmcobSkp
KSB7DQogICAgICAgICAgICAgcmV0dXJuICIiOw0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9wcm92aWRlcnMvdW1sL01lc3NhZ2VOb3Rh
dGlvblVtbC5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dz
ZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24v
cHJvdmlkZXJzL3VtbC9NZXNzYWdlTm90YXRpb25VbWwuamF2YT92aWV3PWRpZmYmcGF0aHJldj0x
OTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3RhdGlvbi9wcm92aWRlcnMvdW1sL01l
c3NhZ2VOb3RhdGlvblVtbC5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL3Byb3ZpZGVycy91bWwvTWVzc2FnZU5vdGF0aW9u
VW1sLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAk
SWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRy
aWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1
dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBh
bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGlj
aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAg
LTM4LDIyICszOCwxNCBAQA0KIA0KIHBhY2thZ2Ugb3JnLmFyZ291bWwubm90YXRpb24ucHJvdmlk
ZXJzLnVtbDsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9y
Zy5hcmdvdW1sLm5vdGF0aW9uLk5vdGF0aW9uU2V0dGluZ3M7DQogDQogLyoqDQotICogVGhlIFVN
TCBub3RhdGlvbiBmb3IgYSBtZXNzYWdlLCBhcyBzaG93biBvbiBhIGNvbGxhYm9yYXRpb24gZGlh
Z3JhbS4gDQotICogDQorICogVGhlIFVNTCBub3RhdGlvbiBmb3IgYSBtZXNzYWdlLCBhcyBzaG93
biBvbiBhIGNvbGxhYm9yYXRpb24gZGlhZ3JhbS4NCisgKg0KICAqIEBhdXRob3IgbWljaGllbA0K
ICAqLw0KIHB1YmxpYyBjbGFzcyBNZXNzYWdlTm90YXRpb25VbWwgZXh0ZW5kcyBBYnN0cmFjdE1l
c3NhZ2VOb3RhdGlvblVtbCB7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgc3RhbmRhcmQgZXJy
b3IgZXRjLiBsb2dnZXINCi0gICAgICovDQotICAgIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0N
Ci0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoTWVzc2FnZU5vdGF0aW9uVW1sLmNsYXNzKTsNCi0N
CiAgICAgLyoqDQogICAgICAqIFRoZSBjb25zdHJ1Y3Rvci4NCiAgICAgICoNCg0KTW9kaWZpZWQ6
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRpb24vdWkvTm90YXRp
b25Db21ib0JveC5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jy
b3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvbm90YXRp
b24vdWkvTm90YXRpb25Db21ib0JveC5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5
OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL25vdGF0aW9uL3VpL05vdGF0aW9uQ29tYm9Cb3guamF2YQko
b3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9ub3Rh
dGlvbi91aS9Ob3RhdGlvbkNvbWJvQm94LmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpA
QCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29w
eXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAo
YykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBh
cmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBM
aWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5k
IGlzIGF2YWlsYWJsZSBhdA0KQEAgLTM5LDEwICszOSwxMSBAQA0KIHBhY2thZ2Ugb3JnLmFyZ291
bWwubm90YXRpb24udWk7DQogaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsNCiBpbXBvcnQgamF2
YS51dGlsLkxpc3RJdGVyYXRvcjsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQor
aW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcu
SkNvbWJvQm94Ow0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQg
b3JnLmFyZ291bWwuYXBwbGljYXRpb24uZXZlbnRzLkFyZ29FdmVudFB1bXA7DQogaW1wb3J0IG9y
Zy5hcmdvdW1sLmFwcGxpY2F0aW9uLmV2ZW50cy5BcmdvRXZlbnRUeXBlczsNCiBpbXBvcnQgb3Jn
LmFyZ291bWwuYXBwbGljYXRpb24uZXZlbnRzLkFyZ29Ob3RhdGlvbkV2ZW50Ow0KQEAgLTYzLDcg
KzY0LDggQEANCiAgICAgLyoqDQogICAgICAqIExvZ2dlci4NCiAgICAgICovDQotICAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKE5vdGF0aW9uQ29t
Ym9Cb3guY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisg
ICAgICAgIExvZ2dlci5nZXRMb2dnZXIoTm90YXRpb25Db21ib0JveC5jbGFzcy5nZXROYW1lKCkp
Ow0KIA0KICAgICAvKioNCiAgICAgICogVGhlIGluc3RhbmNlLg0KQEAgLTEwMiwxNCArMTA0LDE0
IEBADQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBub3RhdGlvbkNoYW5nZWQoQXJnb05vdGF0
aW9uRXZlbnQgZXZlbnQpIHsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoNCiAgICAgICogQHNl
ZSBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5ldmVudHMuQXJnb05vdGF0aW9uRXZlbnRMaXN0ZW5l
ciNub3RhdGlvbkFkZGVkKG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9uLmV2ZW50cy5BcmdvTm90YXRp
b25FdmVudCkNCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIG5vdGF0aW9uQWRkZWQoQXJnb05v
dGF0aW9uRXZlbnQgZXZlbnQpIHsNCiAgICAgICAgIHJlZnJlc2goKTsNCiAgICAgfQ0KLSAgICAN
CisNCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5ldmVudHMu
QXJnb05vdGF0aW9uRXZlbnRMaXN0ZW5lciNub3RhdGlvblJlbW92ZWQob3JnLmFyZ291bWwuYXBw
bGljYXRpb24uZXZlbnRzLkFyZ29Ob3RhdGlvbkV2ZW50KQ0KICAgICAgKi8NCkBAIC0xNDAsNyAr
MTQyLDcgQEANCiAgICAgICAgICAgICAgICAgTm90YXRpb25OYW1lIG5uID0gKE5vdGF0aW9uTmFt
ZSkgaXRlcmF0b3IubmV4dCgpOw0KICAgICAgICAgICAgICAgICBhZGRJdGVtKG5uKTsNCiAgICAg
ICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICBMT0cuZXJy
b3IoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIiwgZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2co
TGV2ZWwuU0VWRVJFLCAiVW5leHBlY3RlZCBleGNlcHRpb24iLCBlKTsNCiAgICAgICAgICAgICB9
DQogICAgICAgICB9DQogICAgICAgICBzZXRWaXNpYmxlKHRydWUpOw0KDQpNb2RpZmllZDogdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9vY2wvQXJnb0ZhY2FkZS5qYXZhDQpV
cmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvb2NsL0FyZ29GYWNhZGUuamF2YT92aWV3
PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9vY2wvQXJnb0Zh
Y2FkZS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL29jbC9BcmdvRmFjYWRlLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAt
MSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJp
Z2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykg
MjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUg
bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNl
bnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlz
IGF2YWlsYWJsZSBhdA0KQEAgLTQwLDggKzQwLDkgQEANCiANCiBpbXBvcnQgamF2YS51dGlsLkNv
bGxlY3Rpb247DQogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsNCitpbXBvcnQgamF2YS51dGls
LmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1p
bXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmtlcm5l
bC5Qcm9qZWN0Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdE1hbmFnZXI7DQog
aW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLk1vZGVsOw0KQEAgLTExMCw3ICsxMTEsNyBAQA0KICAg
ICAvKioNCiAgICAgICogTG9nZ2VyIGZvciB0aGUgQXJnb0FueSBjbGFzcy4NCiAgICAgICovDQot
ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKEFy
Z29BbnkuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9n
Z2VyLmdldExvZ2dlcihBcmdvQW55LmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIHByaXZhdGUg
T2JqZWN0IGNsYXNzaWZpZXI7DQogDQpAQCAtMTkwLDcgKzE5MSw3IEBADQogCQkgICAgJiYgKE1v
ZGVsLmdldEZhY2FkZSgpLmdldFVwcGVyKG11bHRpcGxpY2l0eSkgPiAxDQogCQkJfHwgTW9kZWwu
Z2V0RmFjYWRlKCkuZ2V0VXBwZXIobXVsdGlwbGljaXR5KQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID09IC0xKSkgew0KLQkJICAgIGlmIChNb2RlbC5nZXRFeHRlbnNpb25NZWNoYW5pc21z
SGVscGVyKCkuaGFzU3RlcmVvdHlwZShhZSwgDQorCQkgICAgaWYgKE1vZGVsLmdldEV4dGVuc2lv
bk1lY2hhbmlzbXNIZWxwZXIoKS5oYXNTdGVyZW90eXBlKGFlLA0KIAkJICAgICAgICAgICAgIm9y
ZGVyZWQiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VxdWVuY2UgPSB0cnVlOw0K
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCkBAIC0yOTcsMjIgKzI5OCwyMiBAQA0KIAkg
ICAgfQ0KIAl9DQogDQotICAgICAgICBDb2xsZWN0aW9uIHJldHVyblBhcmFtcyA9IA0KKyAgICAg
ICAgQ29sbGVjdGlvbiByZXR1cm5QYXJhbXMgPQ0KICAgICAgICAgICAgIE1vZGVsLmdldENvcmVI
ZWxwZXIoKS5nZXRSZXR1cm5QYXJhbWV0ZXJzKGZvdW5kT3ApOw0KICAgICAgICAgT2JqZWN0IHJw
Ow0KICAgICAgICAgaWYgKHJldHVyblBhcmFtcy5zaXplKCkgPT0gMCkgew0KICAgICAgICAgICAg
IHJwID0gbnVsbDsNCiAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgcnAgPSByZXR1cm5Q
YXJhbXMuaXRlcmF0b3IoKS5uZXh0KCk7DQotICAgICAgICB9IA0KKyAgICAgICAgfQ0KICAgICAg
ICAgaWYgKHJldHVyblBhcmFtcy5zaXplKCkgPiAxKSAgew0KLSAgICAgICAgICAgIExPRy53YXJu
KCJPQ0wgY29tcGlsZXIgb25seSBoYW5kbGVzIG9uZSByZXR1cm4gcGFyYW1ldGVyIg0KKyAgICAg
ICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIk9DTCBjb21waWxlciBvbmx5IGhhbmRsZXMg
b25lIHJldHVybiBwYXJhbWV0ZXIiDQogICAgICAgICAgICAgICAgICAgICArICIgLSBGb3VuZCAi
ICsgcmV0dXJuUGFyYW1zLnNpemUoKQ0KICAgICAgICAgICAgICAgICAgICAgKyAiIGZvciAiICsg
TW9kZWwuZ2V0RmFjYWRlKCkuZ2V0TmFtZShmb3VuZE9wKSk7DQogICAgICAgICB9DQogDQogCWlm
IChycCA9PSBudWxsIHx8IE1vZGVsLmdldEZhY2FkZSgpLmdldFR5cGUocnApID09IG51bGwpIHsN
Ci0JICAgIExPRy53YXJuKCJXQVJOSU5HOiBzdXBwb3NpbmcgcmV0dXJuIHR5cGUgdm9pZCEiKTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsICJXQVJOSU5HOiBzdXBwb3Npbmcg
cmV0dXJuIHR5cGUgdm9pZCEiKTsNCiAJICAgIHJldHVybiBuZXcgQXJnb0FueShudWxsKTsNCiAJ
fQ0KIAlPYmplY3QgcmV0dXJuVHlwZSA9IE1vZGVsLmdldEZhY2FkZSgpLmdldFR5cGUocnApOw0K
QEAgLTM2OSw4ICszNzAsOSBAQA0KICAgICAgKiBAc2VlIHR1ZHJlc2Rlbi5vY2wuY2hlY2sudHlw
ZXMuVHlwZSNoYXNTdGF0ZShqYXZhLmxhbmcuU3RyaW5nKQ0KICAgICAgKi8NCiAgICAgcHVibGlj
IGJvb2xlYW4gaGFzU3RhdGUoU3RyaW5nIG5hbWUpIHsNCi0JTE9HLndhcm4oIkFyZ29BbnkuaGFz
U3RhdGUoKSBoYXMgYmVlbiBjYWxsZWQsIGJ1dCBpcyAiDQotCQkgKyAibm90IGltcGxlbWVudGVk
IHlldCEiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywNCisgICAgICAgICAgICAg
ICAgIkFyZ29BbnkuaGFzU3RhdGUoKSBoYXMgYmVlbiBjYWxsZWQsIGJ1dCBpcyAiDQorICAgICAg
ICAgICAgICAgICsgIm5vdCBpbXBsZW1lbnRlZCB5ZXQhIik7DQogCXJldHVybiBmYWxzZTsNCiAg
ICAgfQ0KIA0KQEAgLTQyMiw3ICs0MjQsNyBAQA0KICAgICAgICAgICAgICAgICBNb2RlbC5nZXRG
YWNhZGUoKS5nZXRQYXJhbWV0ZXJzKG9wZXJhdGlvbik7DQogCWlmICghTW9kZWwuZ2V0RmFjYWRl
KCkuaXNSZXR1cm4oDQogICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uUGFyYW1ldGVy
cy5pdGVyYXRvcigpLm5leHQoKSkpIHsNCi0JICAgIExPRy53YXJuKA0KKyAgICAgICAgICAgIExP
Ry5sb2coTGV2ZWwuV0FSTklORywNCiAgICAgICAgICAgICAgICAgIkFyZ29GYWNhZGUkQXJnb0Fu
eSBleHBlY3RzIHRoZSBmaXJzdCBvcGVyYXRpb24gcGFyYW1ldGVyICINCiAJCSsgInRvIGJlIHRo
ZSByZXR1cm4gdHlwZTsgdGhpcyBpc24ndCB0aGUgY2FzZSINCiAJICAgICk7DQoNCk1vZGlmaWVk
OiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL0Fic3Ry
YWN0RmlsZVBlcnNpc3Rlci5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291
cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
cGVyc2lzdGVuY2UvQWJzdHJhY3RGaWxlUGVyc2lzdGVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9
MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvQWJzdHJhY3RGaWxl
UGVyc2lzdGVyLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvQWJzdHJhY3RGaWxlUGVyc2lzdGVyLmphdmEJMjAxMi0x
Mi0zMCAwNTowNjowMS0wODAwDQpAQCAtNDYsMTEgKzQ2LDEyIEBADQogaW1wb3J0IGphdmEuaW8u
SU9FeGNlcHRpb247DQogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KIGltcG9ydCBqYXZhLnV0
aWwuTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51
dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGltcG9ydCBqYXZheC5zd2luZy5ldmVudC5FdmVudExp
c3RlbmVyTGlzdDsNCiBpbXBvcnQgamF2YXguc3dpbmcuZmlsZWNob29zZXIuRmlsZUZpbHRlcjsN
CiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsNCiBpbXBvcnQgb3JnLmFyZ291bWwua2VybmVs
LlByb2ZpbGVDb25maWd1cmF0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVj
dDsNCkBAIC03MCwyMSArNzEsMjEgQEANCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RG
aWxlUGVyc2lzdGVyIGV4dGVuZHMgRmlsZUZpbHRlcg0KICAgICAgICAgaW1wbGVtZW50cyBQcm9q
ZWN0RmlsZVBlcnNpc3RlciB7DQogDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBM
T0cgPSANCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoQWJzdHJhY3RGaWxlUGVyc2lzdGVyLmNs
YXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBM
b2dnZXIuZ2V0TG9nZ2VyKEFic3RyYWN0RmlsZVBlcnNpc3Rlci5jbGFzcy5nZXROYW1lKCkpOw0K
IA0KICAgICAvKioNCi0gICAgICogTWFwIG9mIHBlcnNpc3RlcnMgYnkgdGFyZ2V0IGNsYXNzDQor
ICAgICAqIE1hcCBvZiBwZXJzaXN0ZXJzIGJ5IHRhcmdldCBjbGFzcy4NCiAgICAgICovDQotICAg
IHByaXZhdGUgc3RhdGljIE1hcDxDbGFzcywgQ2xhc3M8PyBleHRlbmRzIE1lbWJlckZpbGVQZXJz
aXN0ZXI+PiANCi0gICAgcGVyc2lzdGVyc0J5Q2xhc3MgPSANCisgICAgcHJpdmF0ZSBzdGF0aWMg
TWFwPENsYXNzLCBDbGFzczw/IGV4dGVuZHMgTWVtYmVyRmlsZVBlcnNpc3Rlcj4+DQorICAgIHBl
cnNpc3RlcnNCeUNsYXNzID0NCiAgICAgICAgIG5ldyBIYXNoTWFwPENsYXNzLCBDbGFzczw/IGV4
dGVuZHMgTWVtYmVyRmlsZVBlcnNpc3Rlcj4+KCk7DQogDQogICAgIC8qKg0KLSAgICAgKiBNYXAg
b2YgcGVyc2lzdGVycyBieSB0YWcgLyBmaWxlIGV4dGVuc2lvbg0KKyAgICAgKiBNYXAgb2YgcGVy
c2lzdGVycyBieSB0YWcgLyBmaWxlIGV4dGVuc2lvbi4NCiAgICAgICovDQotICAgIHByaXZhdGUg
c3RhdGljIE1hcDxTdHJpbmcsIENsYXNzPD8gZXh0ZW5kcyBNZW1iZXJGaWxlUGVyc2lzdGVyPj4g
DQotICAgIHBlcnNpc3RlcnNCeVRhZyA9IA0KKyAgICBwcml2YXRlIHN0YXRpYyBNYXA8U3RyaW5n
LCBDbGFzczw/IGV4dGVuZHMgTWVtYmVyRmlsZVBlcnNpc3Rlcj4+DQorICAgIHBlcnNpc3RlcnNC
eVRhZyA9DQogICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsIENsYXNzPD8gZXh0ZW5kcyBNZW1i
ZXJGaWxlUGVyc2lzdGVyPj4oKTsNCiANCiAgICAgc3RhdGljIHsNCkBAIC05Nyw5ICs5OCw5IEBA
DQogICAgICAgICByZWdpc3RlclBlcnNpc3RlcihQcm9qZWN0TWVtYmVyTW9kZWwuY2xhc3MsICJ4
bWkiLA0KICAgICAgICAgICAgICAgICBNb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIuY2xhc3MpOw0K
ICAgICB9DQotICAgIA0KKw0KICAgICBwcml2YXRlIEV2ZW50TGlzdGVuZXJMaXN0IGxpc3RlbmVy
TGlzdCA9IG5ldyBFdmVudExpc3RlbmVyTGlzdCgpOw0KLSAgICANCisNCiAgICAgLy8gVGhpcyBj
YW4gYmUgbWFkZSBwdWJsaWMgdG8gYWxsb3cgb3RoZXJzIHRvIGV4dGVuZCB0aGVpciBvd24gcGVy
c2lzdGVycw0KICAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHJlZ2lzdGVyUGVyc2lzdGVyKENs
YXNzIHRhcmdldCwgU3RyaW5nIHRhZywNCiAgICAgICAgICAgICBDbGFzczw/IGV4dGVuZHMgTWVt
YmVyRmlsZVBlcnNpc3Rlcj4gcGVyc2lzdGVyKSB7DQpAQCAtMTMyLDI4ICsxMzMsMjggQEANCiAg
ICAgfQ0KIA0KICAgICAvKioNCi0gICAgICogU2F2aW5nIGluIGEgc2FmZSB3YXkgbWVhbnM6IFJl
dGFpbiB0aGUgcHJldmlvdXMgcHJvamVjdCANCisgICAgICogU2F2aW5nIGluIGEgc2FmZSB3YXkg
bWVhbnM6IFJldGFpbiB0aGUgcHJldmlvdXMgcHJvamVjdA0KICAgICAgKiBmaWxlIGV2ZW4gd2hl
biB0aGUgc2F2ZSBvcGVyYXRpb24gY2F1c2VzIGFuDQotICAgICAqIGV4Y2VwdGlvbiBpbiB0aGUg
bWlkZGxlLiANCisgICAgICogZXhjZXB0aW9uIGluIHRoZSBtaWRkbGUuDQogICAgICAqIEFsc28g
Y3JlYXRlIGEgYmFja3VwIGZpbGUgYWZ0ZXIgc2F2aW5nLg0KLSAgICAgKiANCi0gICAgICogU2Vl
IGlzc3VlIDYwMTIgLSBvdXIgbWV0aG9kIG9mIHNhdmluZyBpbiBhIHNhZmUgd2F5IGRvZXMgbm90
IA0KLSAgICAgKiB3b3JrIG9uIGEgU2hhcmVQb2ludCBkcml2ZS4gDQorICAgICAqDQorICAgICAq
IFNlZSBpc3N1ZSA2MDEyIC0gb3VyIG1ldGhvZCBvZiBzYXZpbmcgaW4gYSBzYWZlIHdheSBkb2Vz
IG5vdA0KKyAgICAgKiB3b3JrIG9uIGEgU2hhcmVQb2ludCBkcml2ZS4NCiAgICAgICogSGVuY2Ug
d2UgY2FuIGNvbmZpZ3VyZSBBcmdvVU1MIHRvIHNhdmUgdW5zYWZlLCB0b28uLi4NCi0gICAgICog
DQorICAgICAqDQogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB3ZSBzaG91bGQgYmUgY2FyZWZ1bA0K
ICAgICAgKi8NCiAgICAgcHJvdGVjdGVkIGJvb2xlYW4gdXNlU2FmZVNhdmVzKCkgew0KICAgICAg
ICAgYm9vbGVhbiByZXN1bHQgPSBDb25maWd1cmF0aW9uLmdldEJvb2xlYW4oDQogICAgICAgICAg
ICAgICAgICAgICAgICAgUGVyc2lzdGVuY2VNYW5hZ2VyLlVTRV9TQUZFX1NBVkVTLCB0cnVlKTsN
CiANCi0gICAgICAgIC8qIG1ha2Ugc3VyZSB0aGlzIHNldHRpbmcgZXhpc3RzIGluIHRoZSBjb25m
aWd1cmF0aW9uIGZpbGUgDQorICAgICAgICAvKiBtYWtlIHN1cmUgdGhpcyBzZXR0aW5nIGV4aXN0
cyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlDQogICAgICAgICAgKiB0byBmYWNpbGl0YXRlIGNo
YW5naW5nOiAqLw0KICAgICAgICAgQ29uZmlndXJhdGlvbi5zZXRCb29sZWFuKFBlcnNpc3RlbmNl
TWFuYWdlci5VU0VfU0FGRV9TQVZFUywgcmVzdWx0KTsNCi0gICAgICAgIA0KKw0KICAgICAgICAg
cmV0dXJuIHJlc3VsdDsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIENvcGll
cyBvbmUgZmlsZSBzcmMgdG8gYW5vdGhlciwgcmFpc2luZyBmaWxlIGV4Y2VwdGlvbnMNCiAgICAg
ICogaWYgdGhlcmUgYXJlIHNvbWUgcHJvYmxlbXMuDQpAQCAtMjcxLDcgKzI3Miw3IEBADQogICAg
ICAqIEBzZWUgb3JnLmFyZ291bWwucGVyc2lzdGVuY2UuUHJvamVjdEZpbGVQZXJzaXN0ZXIjc2F2
ZSgNCiAgICAgICogb3JnLmFyZ291bWwua2VybmVsLlByb2plY3QsIGphdmEuaW8uRmlsZSkNCiAg
ICAgICovDQotICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNhdmUoUHJvamVjdCBwcm9qZWN0LCBGaWxl
IGZpbGUpIHRocm93cyBTYXZlRXhjZXB0aW9uLCANCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2F2
ZShQcm9qZWN0IHByb2plY3QsIEZpbGUgZmlsZSkgdGhyb3dzIFNhdmVFeGNlcHRpb24sDQogICAg
IEludGVycnVwdGVkRXhjZXB0aW9uIHsNCiAgICAgICAgIHByZVNhdmUocHJvamVjdCwgZmlsZSk7
DQogICAgICAgICBkb1NhdmUocHJvamVjdCwgZmlsZSk7DQpAQCAtMzc2LDEyICszNzcsMTIgQEAN
CiAgICAgLyoqDQogICAgICAqIFJldHVybnMgdHJ1ZSBpZiBhIEZpbGVDaG9vc2VyIHNob3VsZCB2
aXN1YWxpemUgYW4gaWNvbiBmb3IgdGhlDQogICAgICAqIHBlcnNpc3Rlci4NCi0gICAgICogDQot
ICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGVyc2lzdGVyIGlzIGFzc29jaWF0ZWQgdG8gYW4g
aWNvbiANCisgICAgICoNCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBwZXJzaXN0ZXIgaXMg
YXNzb2NpYXRlZCB0byBhbiBpY29uDQogICAgICAqLw0KICAgICBwdWJsaWMgYWJzdHJhY3QgYm9v
bGVhbiBoYXNBbkljb24oKTsNCiANCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBHZXQgYSBN
ZW1iZXJGaWxlUGVyc2lzdGVyIGJhc2VkIG9uIGEgZ2l2ZW4gUHJvamVjdE1lbWJlci4NCiAgICAg
ICoNCkBAIC0zOTUsNyArMzk2LDcgQEANCiAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAg
LyoNCiAgICAgICAgICAgICAgKiBUT0RPOiBOb3Qgc3VyZSB3ZSBuZWVkIHRvIGRvIHRoaXMsIGJ1
dCBqdXN0IHRvIGJlIHNhZmUgZm9yIG5vdy4NCi0gICAgICAgICAgICAgKi8gICAgICAgDQorICAg
ICAgICAgICAgICovDQogICAgICAgICAgICAgZm9yIChDbGFzcyBjbGF6eiA6IHBlcnNpc3RlcnNC
eUNsYXNzLmtleVNldCgpKSB7DQogICAgICAgICAgICAgICAgIGlmIChjbGF6ei5pc0Fzc2lnbmFi
bGVGcm9tKHBtLmdldENsYXNzKCkpKSB7DQogICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZXIg
PSBwZXJzaXN0ZXJzQnlDbGFzcy5nZXQoY2xhenopOw0KQEAgLTQxNyw3ICs0MTgsNyBAQA0KICAg
ICAgKiBAcmV0dXJuIHRoZSBwZXJzaXN0ZXINCiAgICAgICovDQogICAgIHByb3RlY3RlZCBNZW1i
ZXJGaWxlUGVyc2lzdGVyIGdldE1lbWJlckZpbGVQZXJzaXN0ZXIoU3RyaW5nIHRhZykgew0KLSAg
ICAgICAgQ2xhc3M8PyBleHRlbmRzIE1lbWJlckZpbGVQZXJzaXN0ZXI+IHBlcnNpc3RlciA9IA0K
KyAgICAgICAgQ2xhc3M8PyBleHRlbmRzIE1lbWJlckZpbGVQZXJzaXN0ZXI+IHBlcnNpc3RlciA9
DQogICAgICAgICAgICAgcGVyc2lzdGVyc0J5VGFnLmdldCh0YWcpOw0KICAgICAgICAgaWYgKHBl
cnNpc3RlciAhPSBudWxsKSB7DQogICAgICAgICAgICAgcmV0dXJuIG5ld1BlcnNpc3RlcihwZXJz
aXN0ZXIpOw0KQEAgLTQzMCwxNyArNDMxLDE3IEBADQogICAgICAgICB0cnkgew0KICAgICAgICAg
ICAgIHJldHVybiBjbGF6ei5uZXdJbnN0YW5jZSgpOw0KICAgICAgICAgfSBjYXRjaCAoSW5zdGFu
dGlhdGlvbkV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmVycm9yKCJFeGNlcHRpb24g
aW5zdGFudGlhdGluZyBmaWxlIHBlcnNpc3RlciAiICsgY2xhenosIGUpOw0KKyAgICAgICAgICAg
IExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXhjZXB0aW9uIGluc3RhbnRpYXRpbmcgZmlsZSBwZXJz
aXN0ZXIgIiArIGNsYXp6LCBlKTsNCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAg
IH0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgIExPRy5l
cnJvcigiRXhjZXB0aW9uIGluc3RhbnRpYXRpbmcgZmlsZSBwZXJzaXN0ZXIgIiArIGNsYXp6LCBl
KTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiBpbnN0YW50
aWF0aW5nIGZpbGUgcGVyc2lzdGVyICIgKyBjbGF6eiwgZSk7DQogICAgICAgICAgICAgcmV0dXJu
IG51bGw7DQogICAgICAgICB9DQogICAgIH0NCi0gICAgDQotICAgIC8vIFRPRE86IERvY3VtZW50
IA0KKw0KKyAgICAvLyBUT0RPOiBEb2N1bWVudA0KICAgICBjbGFzcyBQcm9ncmVzc01nciBpbXBs
ZW1lbnRzIFByb2dyZXNzTGlzdGVuZXIgew0KLSAgICAgICAgDQorDQogICAgICAgICAvKioNCiAg
ICAgICAgICAqIFRoZSBwZXJjZW50YWdlIGNvbXBsZXRlbmVzcyBvZiBwaGFzZXMgY29tcGxldGUu
DQogICAgICAgICAgKiBEb2VzIG5vdCBpbmNsdWRlIHBhcnQtY29tcGxldGVkIHBoYXNlcy4NCkBA
IC00NTksNyArNDYwLDcgQEANCiAgICAgICAgICAqIHZlcnNpb24gYW5kIG9uZSBwYWhzZSBmb3Ig
dGhlIGZpbmFsIGxvYWQuDQogICAgICAgICAgKi8NCiAgICAgICAgIHByaXZhdGUgaW50IG51bWJl
ck9mUGhhc2VzOw0KLSAgICAgICAgDQorDQogICAgICAgICBwdWJsaWMgdm9pZCBzZXRQZXJjZW50
UGhhc2VzQ29tcGxldGUoaW50IGFQZXJjZW50UGhhc2VzQ29tcGxldGUpIHsNCiAgICAgICAgICAg
ICB0aGlzLnBlcmNlbnRQaGFzZXNDb21wbGV0ZSA9IGFQZXJjZW50UGhhc2VzQ29tcGxldGU7DQog
ICAgICAgICB9DQpAQCAtNDc1LDcgKzQ3Niw3IEBADQogICAgICAgICBwdWJsaWMgaW50IGdldE51
bWJlck9mUGhhc2VzKCkgew0KICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bWJlck9mUGhhc2Vz
Ow0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBwcm90ZWN0ZWQgdm9pZCBuZXh0
UGhhc2UoKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24gew0KICAgICAgICAgICAgIFRocmVh
ZFV0aWxzLmNoZWNrSWZJbnRlcnJ1cHRlZCgpOw0KICAgICAgICAgICAgICsrcGhhc2VzQ29tcGxl
dGVkOw0KQEAgLTQ4MywxMCArNDg0LDEwIEBADQogICAgICAgICAgICAgICAgIChwaGFzZXNDb21w
bGV0ZWQgKiAxMDApIC8gbnVtYmVyT2ZQaGFzZXM7DQogICAgICAgICAgICAgZmlyZVByb2dyZXNz
RXZlbnQocGVyY2VudFBoYXNlc0NvbXBsZXRlKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0K
ICAgICAgICAgLyoqDQogICAgICAgICAgKiBDYWxsZWQgd2hlbiBhIFByb2dyZXNzRXZlbnQgaXMg
ZmlyZWQuDQotICAgICAgICAgKiAgDQorICAgICAgICAgKg0KICAgICAgICAgICogQHNlZSBvcmcu
YXJnb3VtbC50YXNrbWdtdC5Qcm9ncmVzc0xpc3RlbmVyI3Byb2dyZXNzKG9yZy5hcmdvdW1sLnRh
c2ttZ210LlByb2dyZXNzRXZlbnQpDQogICAgICAgICAgKiBAdGhyb3dzIEludGVycnVwdGVkRXhj
ZXB0aW9uICAgICBpZiB0aHJlYWQgaXMgaW50ZXJydXB0ZWQNCiAgICAgICAgICAqLw0KQEAgLTQ5
OCwxMyArNDk5LDEzIEBADQogICAgICAgICAgICAgbG9uZyBwcm9wb3J0aW9uID0gKHBvc2l0aW9u
ICogcGVyY2VudFBoYXNlc0xlZnQpIC8gbGVuZ3RoOw0KICAgICAgICAgICAgIGZpcmVQcm9ncmVz
c0V2ZW50KHBlcmNlbnRQaGFzZXNDb21wbGV0ZSArIHByb3BvcnRpb24pOw0KICAgICAgICAgfQ0K
LSAgICAgICAgDQorDQogICAgICAgICAvKioNCiAgICAgICAgICAqIEluZm9ybSBsaXN0ZW5lcnMg
b2YgYW55IHByb2dyZXNzIG5vdGlmaWNhdGlvbnMuDQogICAgICAgICAgKiBAcGFyYW0gcGVyY2Vu
dCB0aGUgY3VycmVudCBwZXJjZW50YWdlIHByb2dyZXNzLg0KICAgICAgICAgICogQHRocm93cyBJ
bnRlcnJ1cHRlZEV4Y2VwdGlvbiAgICAgaWYgdGhyZWFkIGlzIGludGVycnVwdGVkDQogICAgICAg
ICAgKi8NCi0gICAgICAgIHByb3RlY3RlZCB2b2lkIGZpcmVQcm9ncmVzc0V2ZW50KGxvbmcgcGVy
Y2VudCkgDQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBmaXJlUHJvZ3Jlc3NFdmVudChsb25nIHBl
cmNlbnQpDQogICAgICAgICAgICAgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIHsNCiAgICAg
ICAgICAgICBQcm9ncmVzc0V2ZW50IGV2ZW50ID0gbnVsbDsNCiAgICAgICAgICAgICAvLyBHdWFy
YW50ZWVkIHRvIHJldHVybiBhIG5vbi1udWxsIGFycmF5DQpAQCAtNTIwLDYgKzUyMSw2IEBADQog
ICAgICAgICAgICAgICAgICAgICAoKFByb2dyZXNzTGlzdGVuZXIpIGxpc3RlbmVyc1tpICsgMV0p
LnByb2dyZXNzKGV2ZW50KTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCi0g
ICAgICAgIH0gICAgICAgIA0KKyAgICAgICAgfQ0KICAgICB9DQogfQ0KDQpNb2RpZmllZDogdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9BcmdvUGFyc2Vy
LmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291
bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Bcmdv
UGFyc2VyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2Fy
Z291bWwvcGVyc2lzdGVuY2UvQXJnb1BhcnNlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL0FyZ29QYXJzZXIuamF2
YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3Jz
IC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0g
c2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUg
YWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29t
cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDEsOCAr
NDEsOSBAQA0KIGltcG9ydCBqYXZhLmlvLlJlYWRlcjsNCiBpbXBvcnQgamF2YS51dGlsLkFycmF5
TGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5n
LkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9y
Zy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVj
dDsNCiBpbXBvcnQgb3JnLmFyZ291bWwua2VybmVsLlByb2plY3RTZXR0aW5nczsNCiBpbXBvcnQg
b3JnLmFyZ291bWwubm90YXRpb24uTm90YXRpb25TZXR0aW5nczsNCkBAIC01MiwyMSArNTMsMjIg
QEANCiANCiANCiAvKioNCi0gKiBQYXJzZXIgZm9yIEFyZ29VTUwgcHJvamVjdCBkZXNjcmlwdGlv
biBmaWxlICguYXJnbykNCisgKiBQYXJzZXIgZm9yIEFyZ29VTUwgcHJvamVjdCBkZXNjcmlwdGlv
biBmaWxlICguYXJnbykuDQogICovDQogY2xhc3MgQXJnb1BhcnNlciBleHRlbmRzIFNBWFBhcnNl
ckJhc2Ugew0KIA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoQXJnb1BhcnNl
ci5jbGFzcyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAg
ICAgTG9nZ2VyLmdldExvZ2dlcihBcmdvUGFyc2VyLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAg
IHByaXZhdGUgUHJvamVjdCBwcm9qZWN0Ow0KIA0KICAgICBwcml2YXRlIFByb2plY3RTZXR0aW5n
cyBwczsNCi0gICAgDQorDQogICAgIHByaXZhdGUgRGlhZ3JhbVNldHRpbmdzIGRpYWdyYW1EZWZh
dWx0czsNCi0gICAgDQorDQogICAgIHByaXZhdGUgTm90YXRpb25TZXR0aW5ncyBub3RhdGlvblNl
dHRpbmdzOw0KIA0KICAgICBwcml2YXRlIEFyZ29Ub2tlblRhYmxlIHRva2VucyA9IG5ldyBBcmdv
VG9rZW5UYWJsZSgpOw0KQEAgLTEyOCw4ICsxMzAsMTEgQEANCiAgICAgfQ0KIA0KICAgICBwcml2
YXRlIHZvaWQgcHJlUmVhZChQcm9qZWN0IHRoZVByb2plY3QpIHsNCi0gICAgICAgIExPRy5pbmZv
KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsNCi0gICAgICAgIExP
Ry5pbmZvKCI9PSBSRUFESU5HIFBST0pFQ1QgIiArIHRoZVByb2plY3QpOw0KKyAgICAgICAgTE9H
LmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAiPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XG4iDQorICAgICAgICAgICAgICAgICsgIj09IFJFQURJTkcgUFJP
SkVDVCB7MH0iLA0KKyAgICAgICAgICAgICAgICB0aGVQcm9qZWN0KTsNCisNCiAgICAgICAgIHBy
b2plY3QgPSB0aGVQcm9qZWN0Ow0KICAgICAgICAgcHMgPSBwcm9qZWN0LmdldFByb2plY3RTZXR0
aW5ncygpOw0KICAgICAgICAgZGlhZ3JhbURlZmF1bHRzID0gcHMuZ2V0RGVmYXVsdERpYWdyYW1T
ZXR0aW5ncygpOw0KQEAgLTEzNyw4ICsxNDIsOCBAQA0KICAgICB9DQogDQogICAgIHByaXZhdGUg
dm9pZCBsb2dFcnJvcihTdHJpbmcgcHJvamVjdE5hbWUsIFNBWEV4Y2VwdGlvbiBlKSB7DQotICAg
ICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiByZWFkaW5nIHByb2plY3Q9PT09PT09PT09PT09PT09
IiwgZSk7DQotICAgICAgICBMT0cuZXJyb3IocHJvamVjdE5hbWUpOw0KKyAgICAgICAgTE9HLmxv
ZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICJFeGNlcHRpb24gcmVhZGluZyBwcm9q
ZWN0ID09PT09PT09PT09PT09PT0iK3Byb2plY3ROYW1lLCBlKTsNCiAgICAgfQ0KIA0KICAgICAv
KioNCkBAIC0xNjQsNyArMTY5LDggQEANCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIGhhbmRs
ZVN0YXJ0RWxlbWVudChYTUxFbGVtZW50IGUpIHRocm93cyBTQVhFeGNlcHRpb24gew0KICAgICAg
ICAgaWYgKERCRykgew0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygiTk9URTogQXJnb1BhcnNlciBo
YW5kbGVTdGFydFRhZzoiICsgZS5nZXROYW1lKCkpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2
ZWwuRklORSwNCisgICAgICAgICAgICAgICAgICAgICJOT1RFOiBBcmdvUGFyc2VyIGhhbmRsZVN0
YXJ0VGFnOiB7MH0iLCBlLmdldE5hbWUoKSk7DQogICAgICAgICB9DQogICAgICAgICBzd2l0Y2gg
KHRva2Vucy50b1Rva2VuKGUuZ2V0TmFtZSgpLCB0cnVlKSkgew0KICAgICAgICAgY2FzZSBBcmdv
VG9rZW5UYWJsZS5UT0tFTl9BUkdPOg0KQEAgLTE3OCw3ICsxODQsNyBAQA0KICAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICBpZiAoREJHKSB7DQotICAg
ICAgICAgICAgICAgIExPRy53YXJuKCJXQVJOSU5HOiB1bmtub3duIHRhZzoiICsgZS5nZXROYW1l
KCkpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsICJXQVJOSU5HOiB1
bmtub3duIHRhZzoiICsgZS5nZXROYW1lKCkpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICBicmVhazsNCiAgICAgICAgIH0NCkBAIC0xOTEsNyArMTk3LDggQEANCiAgICAgQFN1cHByZXNz
V2FybmluZ3MoImRlcHJlY2F0aW9uIikNCiAgICAgcHVibGljIHZvaWQgaGFuZGxlRW5kRWxlbWVu
dChYTUxFbGVtZW50IGUpIHRocm93cyBTQVhFeGNlcHRpb24gew0KICAgICAgICAgaWYgKERCRykg
ew0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygiTk9URTogQXJnb1BhcnNlciBoYW5kbGVFbmRUYWc6
IiArIGUuZ2V0TmFtZSgpICsgIi4iKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUs
DQorICAgICAgICAgICAgICAgICAgICAiTk9URTogQXJnb1BhcnNlciBoYW5kbGVFbmRUYWc6IHsw
fSIsIGUuZ2V0TmFtZSgpKTsNCiAgICAgICAgIH0NCiAgICAgICAgIHN3aXRjaCAodG9rZW5zLnRv
VG9rZW4oZS5nZXROYW1lKCksIGZhbHNlKSkgew0KICAgICAgICAgY2FzZSBBcmdvVG9rZW5UYWJs
ZS5UT0tFTl9NRU1CRVI6DQpAQCAtMjY4LDcgKzI3NSw4IEBADQogICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgIGlmIChEQkcpIHsNCi0gICAgICAgICAg
ICAgICAgTE9HLndhcm4oIldBUk5JTkc6IHVua25vd24gZW5kIHRhZzoiICsgZS5nZXROYW1lKCkp
Ow0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsDQorICAgICAgICAgICAg
ICAgICAgICAgICAgIldBUk5JTkc6IHVua25vd24gZW5kIHRhZzoiICsgZS5nZXROYW1lKCkpOw0K
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgIH0NCkBAIC00ODEs
NyArNDg5LDggQEANCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgZGlhZ3JhbURlZmF1bHRz
LnNldEZvbnRTaXplKEludGVnZXIucGFyc2VJbnQoZHN3KSk7DQogICAgICAgICB9IGNhdGNoIChO
dW1iZXJGb3JtYXRFeGNlcHRpb24gZTEpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIk51bWJl
ckZvcm1hdEV4Y2VwdGlvbiB3aGlsZSBwYXJzaW5nIEZvbnQgU2l6ZSIsIGUxKTsNCisgICAgICAg
ICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICJOdW1iZXJG
b3JtYXRFeGNlcHRpb24gd2hpbGUgcGFyc2luZyBGb250IFNpemUiLCBlMSk7DQogICAgICAgICB9
DQogICAgIH0NCiANCkBAIC01MDQsMTAgKzUxMywxMCBAQA0KICAgICAgICAgZGlhZ3JhbURlZmF1
bHRzLnNldFNob3dCaWRpcmVjdGlvbmFsQXJyb3dzKCENCiAgICAgICAgICAgICAgICAgQm9vbGVh
bi5wYXJzZUJvb2xlYW4oaGlkZUJpZGlyZWN0aW9uYWxBcnJvd3MpKTsNCiAgICAgfQ0KLSAgICAN
Ci0gICAgDQorDQorDQogICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUFjdGl2ZURpYWdyYW0oWE1M
RWxlbWVudCBlKSB7DQotICAgICAgICAvKiBBdCB0aGlzIHN0YWdlIGR1cmluZyBsb2FkaW5nLCB0
aGUgZGlhZ3JhbXMgYXJlIA0KKyAgICAgICAgLyogQXQgdGhpcyBzdGFnZSBkdXJpbmcgbG9hZGlu
ZywgdGhlIGRpYWdyYW1zIGFyZQ0KICAgICAgICAgICogbm90IGNyZWF0ZWQgeWV0IC0gc28gd2Ug
aGF2ZSB0byBzdG9yZSB0aGlzIG5hbWUgZm9yIGxhdGVyIHVzZS4gKi8NCiAgICAgICAgIHByb2pl
Y3Quc2V0U2F2ZWREaWFncmFtTmFtZShlLmdldFRleHQoKS50cmltKCkpOw0KICAgICB9DQoNCk1v
ZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNl
L0RpYWdyYW1NZW1iZXJGaWxlUGVyc2lzdGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGln
cmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9EaWFncmFtTWVtYmVyRmlsZVBlcnNpc3Rlci5qYXZhP3Zp
ZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3Rl
bmNlL0RpYWdyYW1NZW1iZXJGaWxlUGVyc2lzdGVyLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvRGlhZ3JhbU1lbWJl
ckZpbGVQZXJzaXN0ZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEs
NiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMp
IDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIw
MTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhp
cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2
YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEu
MA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxh
YmxlIGF0DQpAQCAtNDYsOCArNDYsOSBAQA0KIGltcG9ydCBqYXZhLm5ldC5VUkw7DQogaW1wb3J0
IGphdmEudXRpbC5IYXNoTWFwOw0KIGltcG9ydCBqYXZhLnV0aWwuTWFwOw0KK2ltcG9ydCBqYXZh
LnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0K
IA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
YXBwbGljYXRpb24uYXBpLkFyZ287DQogaW1wb3J0IG9yZy5hcmdvdW1sLmtlcm5lbC5Qcm9qZWN0
Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdE1lbWJlcjsNCkBAIC02NCwxOCAr
NjUsMTggQEANCiAgKiBAYXV0aG9yIEJvYiBUYXJsaW5nDQogICovDQogY2xhc3MgRGlhZ3JhbU1l
bWJlckZpbGVQZXJzaXN0ZXIgZXh0ZW5kcyBNZW1iZXJGaWxlUGVyc2lzdGVyIHsNCi0gICAgDQor
DQogICAgIC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KICAgICBwcml2YXRlIHN0YXRp
YyBmaW5hbCBMb2dnZXIgTE9HID0NCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRGlhZ3JhbU1l
bWJlckZpbGVQZXJzaXN0ZXIuY2xhc3MpOw0KLSAgICANCisgICAgICAgIExvZ2dlci5nZXRMb2dn
ZXIoRGlhZ3JhbU1lbWJlckZpbGVQZXJzaXN0ZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCisNCiAgICAg
LyoqDQogICAgICAqIFRoZSB0ZWUgZmlsZSBmb3IgcGVyc2lzdGVuY2UuDQogICAgICAqLw0KICAg
ICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEdNTF9URUUgPSAiL29yZy9hcmdvdW1sL3Bl
cnNpc3RlbmNlL1BHTUwudGVlIjsNCi0gICAgDQorDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFs
IE1hcDxTdHJpbmcsIFN0cmluZz4gQ0xBU1NfVFJBTlNMQVRJT05TID0NCiAgICAgICAgIG5ldyBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPigpOw0KIA0KQEAgLTg5LDcgKzkwLDcgQEANCiAgICAgICAg
ICAgICB0aHJvdyBuZXcgT3BlbkV4Y2VwdGlvbigiSS9PIGVycm9yIG9uIHN0cmVhbSBjbG9zZSIs
IGUpOw0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0KKw0KICAgICBAT3ZlcnJpZGUNCiAgICAg
cHVibGljIHZvaWQgbG9hZChQcm9qZWN0IHByb2plY3QsIElucHV0U291cmNlIGlucHV0U291cmNl
KQ0KICAgICAgICAgdGhyb3dzIE9wZW5FeGNlcHRpb24gew0KQEAgLTEwMSwxMiArMTAyLDEyIEBA
DQogICAgICAgICAgICAgLy8ga2V5ZWQgYnkgdGhlaXIgVVVJRC4gVGhpcyBpcyB1c2VkIHRvIGFs
bG9jYXRlDQogICAgICAgICAgICAgLy8gZmlncyB0byB0aGVpciBvd25lciB1c2luZyB0aGUgImhy
ZWYiIGF0dHJpYnV0ZQ0KICAgICAgICAgICAgIC8vIGluIFBHTUwuDQotICAgICAgICAgICAgRGlh
Z3JhbVNldHRpbmdzIGRlZmF1bHRTZXR0aW5ncyA9IA0KKyAgICAgICAgICAgIERpYWdyYW1TZXR0
aW5ncyBkZWZhdWx0U2V0dGluZ3MgPQ0KICAgICAgICAgICAgICAgICBwcm9qZWN0LmdldFByb2pl
Y3RTZXR0aW5ncygpLmdldERlZmF1bHREaWFncmFtU2V0dGluZ3MoKTsNCiAgICAgICAgICAgICAv
LyBUT0RPOiBXZSBuZWVkIHRoZSBwcm9qZWN0IHNwZWNpZmljIGRpYWdyYW0gc2V0dGluZ3MgaGVy
ZQ0KICAgICAgICAgICAgIFBHTUxTdGFja1BhcnNlciBwYXJzZXIgPSBuZXcgUEdNTFN0YWNrUGFy
c2VyKHByb2plY3QuZ2V0VVVJRFJlZnMoKSwNCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRT
ZXR0aW5ncyk7DQotICAgICAgICAgICAgTE9HLmluZm8oIkFkZGluZyB0cmFuc2xhdGlvbnMgcmVn
aXN0ZXJlZCBieSBtb2R1bGVzIik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAi
QWRkaW5nIHRyYW5zbGF0aW9ucyByZWdpc3RlcmVkIGJ5IG1vZHVsZXMiKTsNCiAgICAgICAgICAg
ICBmb3IgKE1hcC5FbnRyeTxTdHJpbmcsIFN0cmluZz4gdHJhbnNsYXRpb24NCiAgICAgICAgICAg
ICAgICAgICAgIDogQ0xBU1NfVFJBTlNMQVRJT05TLmVudHJ5U2V0KCkpIHsNCiAgICAgICAgICAg
ICAgICAgcGFyc2VyLmFkZFRyYW5zbGF0aW9uKA0KQEAgLTEyMiw5ICsxMjMsOSBAQA0KICAgICAg
ICAgICAgIHRocm93IG5ldyBPcGVuRXhjZXB0aW9uKGUpOw0KICAgICAgICAgfQ0KICAgICB9DQot
ICAgIA0KKw0KICAgICBAT3ZlcnJpZGUNCi0gICAgcHVibGljIHZvaWQgbG9hZChQcm9qZWN0IHBy
b2plY3QsIFVSTCB1cmwpIHRocm93cyBPcGVuRXhjZXB0aW9uIHsgICANCisgICAgcHVibGljIHZv
aWQgbG9hZChQcm9qZWN0IHByb2plY3QsIFVSTCB1cmwpIHRocm93cyBPcGVuRXhjZXB0aW9uIHsN
CiAgICAgICAgIGxvYWQocHJvamVjdCwgbmV3IElucHV0U291cmNlKHVybC50b0V4dGVybmFsRm9y
bSgpKSk7DQogICAgIH0NCiANCkBAIC0xNDksMTIgKzE1MCwxMiBAQA0KICAgICAgICAgfQ0KICAg
ICAgICAgT3V0cHV0U3RyZWFtV3JpdGVyIG91dHB1dFdyaXRlcjsNCiAgICAgICAgIHRyeSB7DQot
ICAgICAgICAgICAgb3V0cHV0V3JpdGVyID0gDQorICAgICAgICAgICAgb3V0cHV0V3JpdGVyID0N
CiAgICAgICAgICAgICAgICAgbmV3IE91dHB1dFN0cmVhbVdyaXRlcihvdXRTdHJlYW0sIEFyZ28u
Z2V0RW5jb2RpbmcoKSk7DQogICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhj
ZXB0aW9uIGUxKSB7DQogICAgICAgICAgICAgdGhyb3cgbmV3IFNhdmVFeGNlcHRpb24oIkJhZCBl
bmNvZGluZyIsIGUxKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgdHJ5IHsN
CiAgICAgICAgICAgICAvLyBXQVJOSU5HOiB0aGUgT3V0cHV0U3RyZWFtIHZlcnNpb24gb2YgdGhp
cyBkb2Vzbid0IHdvcmshIC0gdGZtDQogICAgICAgICAgICAgZXhwYW5kZXIuZXhwYW5kKG91dHB1
dFdyaXRlciwgZGlhZ3JhbU1lbWJlci5nZXREaWFncmFtKCkpOw0KQEAgLTE2Nyw3ICsxNjgsNyBA
QA0KICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2F2ZUV4Y2VwdGlvbihlKTsNCiAgICAgICAg
ICAgICB9DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgfQ0KIA0KICAgICAvKioNCg0K
TW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVu
Y2UvTW9kZWxNZW1iZXJGaWxlUGVyc2lzdGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGln
cmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Nb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIuamF2YT92aWV3
PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5j
ZS9Nb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Nb2RlbE1lbWJlckZpbGVQ
ZXJzaXN0ZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0K
IC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkt
MjAxMSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAx
MiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlz
IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZh
aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4w
DQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFi
bGUgYXQNCkBAIC00OCw4ICs0OCw5IEBADQogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KIGlt
cG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9y
dCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9n
Z2VyOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFy
Z291bWwuYXBwbGljYXRpb24uYXBpLkFyZ287DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0
aW9uLmhlbHBlcnMuQXBwbGljYXRpb25WZXJzaW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb25m
aWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247DQpAQCAtNzEsMTcgKzcyLDE3IEBADQogICogVGhlIGZp
bGUgcGVyc2lzdGVyIGZvciB0aGUgVU1MIG1vZGVsLg0KICAqIEBhdXRob3IgQm9iIFRhcmxpbmcN
CiAgKi8NCi1jbGFzcyBNb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIgZXh0ZW5kcyBNZW1iZXJGaWxl
UGVyc2lzdGVyIA0KK2NsYXNzIE1vZGVsTWVtYmVyRmlsZVBlcnNpc3RlciBleHRlbmRzIE1lbWJl
ckZpbGVQZXJzaXN0ZXINCiAgICAgaW1wbGVtZW50cyBYbWlFeHRlbnNpb25QYXJzZXIgew0KIA0K
ICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCi0gICAgICAgIExvZ2dlci5n
ZXRMb2dnZXIoTW9kZWxNZW1iZXJGaWxlUGVyc2lzdGVyLmNsYXNzKTsNCisgICAgICAgIExvZ2dl
ci5nZXRMb2dnZXIoTW9kZWxNZW1iZXJGaWxlUGVyc2lzdGVyLmNsYXNzLmdldE5hbWUoKSk7DQog
DQogICAgIHByaXZhdGUgT2JqZWN0IGN1ck1vZGVsOw0KICAgICBwcml2YXRlIEhhc2hNYXA8U3Ry
aW5nLCBPYmplY3Q+IHVVSURSZWZzOw0KIA0KICAgICBwcml2YXRlIENvbGxlY3Rpb24gZWxlbWVu
dHNSZWFkOw0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIExvYWRzIGEgbW9kZWwgKFhNSSBv
bmx5KSBmcm9tIGEgVVJMLiBCRSBBRFZJU0VEIHRoaXMNCiAgICAgICogbWV0aG9kIGhhcyBhIHNp
ZGUgZWZmZWN0LiBJdCBzZXRzIF9VVUlEUkVGUyB0byB0aGUgbW9kZWwuPHA+DQpAQCAtOTIsMTAg
KzkzLDEwIEBADQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBsb2FkKFByb2plY3QgcHJvamVj
dCwgVVJMIHVybCkNCiAgICAgICAgIHRocm93cyBPcGVuRXhjZXB0aW9uIHsNCi0gICAgICAgIA0K
Kw0KICAgICAgICAgbG9hZChwcm9qZWN0LCBuZXcgSW5wdXRTb3VyY2UodXJsLnRvRXh0ZXJuYWxG
b3JtKCkpKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIExvYWRzIGEgbW9k
ZWwgKFhNSSBvbmx5KSBmcm9tIGFuIGlucHV0IHN0cmVhbS4gQkUgQURWSVNFRCB0aGlzDQogICAg
ICAqIG1ldGhvZCBoYXMgYSBzaWRlIGVmZmVjdC4gSXQgc2V0cyBfVVVJRFJFRlMgdG8gdGhlIG1v
ZGVsLjxwPg0KQEAgLTEwOSw3ICsxMTAsNyBAQA0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQg
bG9hZChQcm9qZWN0IHByb2plY3QsIElucHV0U3RyZWFtIGlucHV0U3RyZWFtKQ0KICAgICAgICAg
dGhyb3dzIE9wZW5FeGNlcHRpb24gew0KLSAgICAgICAgDQorDQogICAgICAgICBsb2FkKHByb2pl
Y3QsIG5ldyBJbnB1dFNvdXJjZShpbnB1dFN0cmVhbSkpOw0KICAgICB9DQogDQpAQCAtMTI5LDcg
KzEzMCw3IEBADQogICAgICAgICAgICAgcmVhZE1vZGVscyhzb3VyY2UpOw0KICAgICAgICAgICAg
IG1tb2RlbCA9IGdldEN1ck1vZGVsKCk7DQogICAgICAgICB9IGNhdGNoIChPcGVuRXhjZXB0aW9u
IGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIlVtbEV4Y2VwdGlvbiBjYXVnaHQiLCBlKTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIlVtbEV4Y2VwdGlvbiBjYXVnaHQi
LCBlKTsNCiAgICAgICAgICAgICB0aHJvdyBlOw0KICAgICAgICAgfQ0KICAgICAgICAgLy8gVGhp
cyBzaG91bGQgcHJvYmFibHkgYmUgaW5zaWRlIHhtaVJlYWRlci5wYXJzZQ0KQEAgLTE2MCw3ICsx
NjEsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogU2F2ZSB0aGUgcHJvamVjdCBtb2RlbCB0byBY
TUkuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLnBlcnNpc3Rl
bmNlLk1lbWJlckZpbGVQZXJzaXN0ZXIjc2F2ZShQcm9qZWN0TWVtYmVyLCBPdXRwdXRTdHJlYW0p
DQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBzYXZlKFByb2plY3RNZW1iZXIgbWVtYmVyLCBP
dXRwdXRTdHJlYW0gb3V0U3RyZWFtKQ0KQEAgLTE3MCw5ICsxNzEsOSBAQA0KICAgICAgICAgT2Jq
ZWN0IG1vZGVsID0gcG1tLmdldE1vZGVsKCk7DQogDQogICAgICAgICB0cnkgew0KLSAgICAgICAg
ICAgIFhtaVdyaXRlciB4bWlXcml0ZXIgPSANCi0gICAgICAgICAgICAgICAgTW9kZWwuZ2V0WG1p
V3JpdGVyKG1vZGVsLCBvdXRTdHJlYW0sIA0KLSAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxp
Y2F0aW9uVmVyc2lvbi5nZXRWZXJzaW9uKCkgKyAiKCIgDQorICAgICAgICAgICAgWG1pV3JpdGVy
IHhtaVdyaXRlciA9DQorICAgICAgICAgICAgICAgIE1vZGVsLmdldFhtaVdyaXRlcihtb2RlbCwg
b3V0U3RyZWFtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uVmVyc2lvbi5n
ZXRWZXJzaW9uKCkgKyAiKCINCiAgICAgICAgICAgICAgICAgICAgICAgICArIFVtbEZpbGVQZXJz
aXN0ZXIuUEVSU0lTVEVOQ0VfVkVSU0lPTiArICIpIik7DQogDQogICAgICAgICAgICAgeG1pV3Jp
dGVyLndyaXRlKCk7DQpAQCAtMTg0LDkgKzE4NSw5IEBADQogICAgICAgICB9DQogDQogICAgIH0N
Ci0gICAgDQorDQogICAgIHB1YmxpYyB2b2lkIHBhcnNlKFN0cmluZyBsYWJlbCwgU3RyaW5nIHht
aUV4dGVuc2lvblN0cmluZykgew0KLSAgICAgICAgTE9HLmluZm8oIlBhcnNpbmcgYW4gZXh0ZW5z
aW9uIGZvciAiICsgbGFiZWwpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiUGFyc2lu
ZyBhbiBleHRlbnNpb24gZm9yIHswfSIsIGxhYmVsKTsNCiAgICAgfQ0KIA0KIA0KQEAgLTIwMSw3
ICsyMDIsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogUmV0dXJuIFhNSSBpZCB0byBvYmplY3Qg
bWFwIGZvciB0aGUgbW9zdCByZWNlbnRseSByZWFkIFhNSSBmaWxlLg0KLSAgICAgKiANCisgICAg
ICoNCiAgICAgICogQHJldHVybiB0aGUgVVVJRA0KICAgICAgKi8NCiAgICAgcHVibGljIEhhc2hN
YXA8U3RyaW5nLCBPYmplY3Q+IGdldFVVSURSZWZzKCkgew0KQEAgLTIyMCwxNSArMjIxLDE3IEBA
DQogICAgICAqLw0KICAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVhZE1vZGVscyhVUkwg
dXJsLA0KICAgICAgICAgICAgIFhtaUV4dGVuc2lvblBhcnNlciB4bWlFeHRlbnNpb25QYXJzZXIp
IHRocm93cyBPcGVuRXhjZXB0aW9uIHsNCi0gICAgICAgIExPRy5pbmZvKCI9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsNCi0gICAgICAgIExPRy5pbmZvKCI9PSBSRUFE
SU5HIE1PREVMICIgKyB1cmwpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAg
ICAgICAgICAgICAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iDQor
ICAgICAgICAgICAgICAgICsiPT0gUkVBRElORyBNT0RFTCB7MH0iLCB1cmwpOw0KKw0KICAgICAg
ICAgdHJ5IHsNCiAgICAgICAgICAgICAvLyBUT0RPOiBXaGF0IHByb2dyZXNzTWdyIGlzIHRvIGJl
IHVzZWQgaGVyZT8gV2hlcmUgZG9lcw0KICAgICAgICAgICAgIC8vICAgICAgIGl0IGNvbWUgZnJv
bT8NCiAgICAgICAgICAgICBJbnB1dFNvdXJjZSBzb3VyY2UgPQ0KICAgICAgICAgICAgICAgICBu
ZXcgSW5wdXRTb3VyY2UobmV3IFhtaUlucHV0U3RyZWFtKA0KICAgICAgICAgICAgICAgICAgICAg
dXJsLm9wZW5TdHJlYW0oKSwgeG1pRXh0ZW5zaW9uUGFyc2VyLCAxMDAwMDAsIG51bGwpKTsNCi0g
ICAgICAgICAgICANCisNCiAgICAgICAgICAgICBzb3VyY2Uuc2V0U3lzdGVtSWQodXJsLnRvU3Ry
aW5nKCkpOw0KICAgICAgICAgICAgIHJlYWRNb2RlbHMoc291cmNlKTsNCiAgICAgICAgIH0gY2F0
Y2ggKElPRXhjZXB0aW9uIGV4KSB7DQpAQCAtMjM4LDcgKzI0MSw3IEBADQogDQogICAgIC8qKg0K
ICAgICAgKiBSZWFkIGEgWE1JIGZpbGUgZnJvbSB0aGUgZ2l2ZW4gaW5wdXRzb3VyY2UuDQotICAg
ICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gc291cmNlIFRoZSBJbnB1dFNvdXJjZS4gVGhl
IHN5c3RlbUlkIG9mIHRoZSBpbnB1dCBzb3VyY2Ugc2hvdWxkIGJlDQogICAgICAqICAgICAgICAg
ICAgICAgIHNldCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIHRvIHJlc29sdmUgZXh0ZXJuYWwgcmVm
ZXJlbmNlcy4NCiAgICAgICogQHRocm93cyBPcGVuRXhjZXB0aW9uIElmIGFuIGVycm9yIG9jY3Vy
IHdoaWxlIHJlYWRpbmcgdGhlIHNvdXJjZQ0KQEAgLTI0OSw3ICsyNTIsNyBAQA0KICAgICAgICAg
WG1pUmVhZGVyIHJlYWRlciA9IG51bGw7DQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIHJl
YWRlciA9IE1vZGVsLmdldFhtaVJlYWRlcigpOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAg
ICAgIGlmIChDb25maWd1cmF0aW9uLmdldEJvb2xlYW4oQXJnby5LRVlfWE1JX1NUUklQX0RJQUdS
QU1TLCBmYWxzZSkpIHsNCiAgICAgICAgICAgICAgICAgLy8gVE9ETzogTm90IGltcGxlbWVudGVk
IGJ5IGVVTUwNCiAgICAgICAgICAgICAgICAgcmVhZGVyLnNldElnbm9yZWRFbGVtZW50cyhuZXcg
U3RyaW5nW10geyJVTUw6RGlhZ3JhbSJ9KTsNCkBAIC0yNTgsNyArMjYxLDcgQEANCiAgICAgICAg
ICAgICB9DQogDQogICAgICAgICAgICAgTGlzdDxTdHJpbmc+IHNlYXJjaFBhdGggPSByZWFkZXIu
Z2V0U2VhcmNoUGF0aCgpOw0KLSAgICAgICAgICAgIFN0cmluZyBwYXRoTGlzdCA9IA0KKyAgICAg
ICAgICAgIFN0cmluZyBwYXRoTGlzdCA9DQogICAgICAgICAgICAgICAgIFN5c3RlbS5nZXRQcm9w
ZXJ0eSgib3JnLmFyZ291bWwubW9kZWwubW9kdWxlc19zZWFyY2hfcGF0aCIpOw0KICAgICAgICAg
ICAgIGlmIChwYXRoTGlzdCAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgIFN0cmluZ1tdIHBh
dGhzID0gcGF0aExpc3Quc3BsaXQoIiwiKTsNCkBAIC0yNjksNyArMjcyLDcgQEANCiAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICByZWFkZXIuYWRkU2VhcmNo
UGF0aChzb3VyY2UuZ2V0U3lzdGVtSWQoKSk7DQotICAgICAgICAgICAgDQorDQogICAgICAgICAg
ICAgY3VyTW9kZWwgPSBudWxsOw0KICAgICAgICAgICAgIGVsZW1lbnRzUmVhZCA9IHJlYWRlci5w
YXJzZShzb3VyY2UsIGZhbHNlKTsNCiAgICAgICAgICAgICBpZiAoZWxlbWVudHNSZWFkICE9IG51
bGwgJiYgIWVsZW1lbnRzUmVhZC5pc0VtcHR5KCkpIHsNCkBAIC0yNzksMTQgKzI4MiwxOCBAQA0K
ICAgICAgICAgICAgICAgICB3aGlsZSAoZWxlbWVudHMuaGFzTmV4dCgpKSB7DQogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50ID0gZWxlbWVudHMubmV4dCgpOw0KICAgICAgICAgICAgICAgICAg
ICAgaWYgKGZhY2FkZS5pc0FNb2RlbChjdXJyZW50KSkgew0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIExPRy5pbmZvKCJMb2FkZWQgbW9kZWwgJyIgKyBmYWNhZGUuZ2V0TmFtZShjdXJyZW50KQ0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiciKTsNCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoTE9HLmlzTG9nZ2FibGUoTGV2ZWwuSU5GTykpIHsNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJMb2FkZWQgbW9kZWwgezB9IiwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWNhZGUuZ2V0TmFtZShjdXJyZW50KSk7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJNb2RlbCA9
PSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ck1vZGVsID0gY3VycmVu
dDsNCiAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGZhY2FkZS5pc0FQcm9maWxlKGN1cnJlbnQpKSB7DQotICAgICAgICAgICAgICAgICAg
ICAgICAgTE9HLmluZm8oIkxvYWRlZCBwcm9maWxlICciICsgZmFjYWRlLmdldE5hbWUoY3VycmVu
dCkNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICInIik7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkxvYWRlZCBwcm9maWxlICciICsgZmFjYWRlLmdldE5hbWUoY3VycmVudCkN
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiciKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY3VyTW9kZWwgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdXJNb2RlbCA9IGN1cnJlbnQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
QEAgLTI5NCw3ICszMDEsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogYWRkIHN0
ZXJlb3R5cGUgYXBwbGljYXRpb24gKGVDb3JlIEFueVR5cGU/KQ0KICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIHVVSURSZWZzID0gDQorICAgICAgICAgICAg
dVVJRFJlZnMgPQ0KICAgICAgICAgICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4o
cmVhZGVyLmdldFhNSVVVSURUb09iamVjdE1hcCgpKTsNCiAgICAgICAgIH0gY2F0Y2ggKFhtaUV4
Y2VwdGlvbiBleCkgew0KICAgICAgICAgICAgIHRocm93IG5ldyBYbWlGb3JtYXRFeGNlcHRpb24o
ZXgpOw0KQEAgLTMwMywzMSArMzEwLDMxIEBADQogICAgICAgICAgICAgLy8gdG8gaGFuZGxlIGRp
ZmZlcmVudGx5PyAgRG9uJ3QgdGhpbmsgc28uICAtIHRmbQ0KICAgICAgICAgICAgIHRocm93IG5l
dyBYbWlGb3JtYXRFeGNlcHRpb24oZXgpOw0KICAgICAgICAgfQ0KLSAgICAgICAgTE9HLmluZm8o
Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOw0KKyAgICAgICAgTE9H
LmxvZyhMZXZlbC5JTkZPLCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Iik7DQogICAgIH0NCiANCiAgICAgLyoqDQogICAgICAqIENyZWF0ZSBhbmQgcmVnaXN0ZXIgZGlh
Z3JhbXMgZm9yIGFjdGl2aXR5IGFuZCBzdGF0ZW1hY2hpbmVzIGluIHRoZQ0KICAgICAgKiBtb2Rl
bChzKSBvZiB0aGUgcHJvamVjdC4gSWYgbm8gb3RoZXIgZGlhZ3JhbXMgYXJlIGNyZWF0ZWQsIGEg
ZGVmYXVsdA0KICAgICAgKiBDbGFzcyBEaWFncmFtIHdpbGwgYmUgY3JlYXRlZC4gQXJnb1VNTCBj
dXJyZW50bHkgcmVxdWlyZXMgYXQgbGVhc3Qgb25lDQotICAgICAqIGRpYWdyYW0gZm9yIHByb3Bl
ciBvcGVyYXRpb24uIA0KLSAgICAgKiANCisgICAgICogZGlhZ3JhbSBmb3IgcHJvcGVyIG9wZXJh
dGlvbi4NCisgICAgICoNCiAgICAgICogVE9ETzogTW92ZSB0byBYbWlGaWxlUGVyc2lzdGVyIChw
cm90ZWN0ZWQpDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gcHJvamVjdA0KICAg
ICAgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0DQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBy
ZWdpc3RlckRpYWdyYW1zKFByb2plY3QgcHJvamVjdCkgew0KICAgICAgICAgcmVnaXN0ZXJEaWFn
cmFtc0ludGVybmFsKHByb2plY3QsIGVsZW1lbnRzUmVhZCwgdHJ1ZSk7DQogICAgIH0NCi0gICAg
DQorDQogDQogICAgIC8qKg0KICAgICAgKiBJbnRlcm5hbCBtZXRob2QgY3JlYXRlIGRpYWdyYW1z
IGZvciBhY3Rpdml0eSBncmFwaHMgYW5kIHN0YXRlIG1hY2hpbmVzLg0KICAgICAgKiBJdCBleGlz
dHMgc29sZXkgdG8gY29udGFpbiBjb21tb24gZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSB0d28gcHVi
bGljDQogICAgICAqIG1ldGhvZHMuICBJdCBjYW4gYmUgbWVyZ2VkIGludG8gaXRzIGNhbGxlciB3
aGVuIHRoZSBkZXByZWNhdGVkIHZlcnNpb24NCiAgICAgICogb2YgdGhlIHB1YmxpYyBtZXRob2Qg
Z29lcyBhd2F5Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHByb2plY3QNCiAg
ICAgICogICAgICAgICAgICBUaGUgcHJvamVjdA0KICAgICAgKiBAcGFyYW0gZWxlbWVudHMNCkBA
IC0zNTksMjAgKzM2NiwzMSBAQA0KICAgICAgICAgICAgICAgICBuYW1lc3BhY2UgPSBmYWNhZGUu
Z2V0Q29udGV4dChzdGF0ZW1hY2hpbmUpOw0KICAgICAgICAgICAgICAgICBNb2RlbC5nZXRDb3Jl
SGVscGVyKCkuc2V0TmFtZXNwYWNlKHN0YXRlbWFjaGluZSwgbmFtZXNwYWNlKTsNCiAgICAgICAg
ICAgICB9DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgQXJnb0RpYWdyYW0gZGlhZ3Jh
bSA9IG51bGw7DQogICAgICAgICAgICAgaWYgKGZhY2FkZS5pc0FBY3Rpdml0eUdyYXBoKHN0YXRl
bWFjaGluZSkpIHsNCi0gICAgICAgICAgICAgICAgTE9HLmluZm8oIkNyZWF0aW5nIGFjdGl2aXR5
IGRpYWdyYW0gZm9yICINCi0gICAgICAgICAgICAgICAgICAgICAgICArIGZhY2FkZS5nZXRVTUxD
bGFzc05hbWUoc3RhdGVtYWNoaW5lKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICsgIjw8IiAr
IGZhY2FkZS5nZXROYW1lKHN0YXRlbWFjaGluZSkgKyAiPj4iKTsNCisgICAgICAgICAgICAgICAg
aWYgKExPRy5pc0xvZ2dhYmxlKExldmVsLklORk8pKSB7DQorICAgICAgICAgICAgICAgICAgICBM
T0cubG9nKExldmVsLklORk8sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGlu
ZyBhY3Rpdml0eSBkaWFncmFtIGZvciB7MH08PHsxfT4+IiwNCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IE9iamVjdFtdIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhY2FkZS5nZXRVTUxDbGFzc05hbWUoc3RhdGVtYWNoaW5lKSwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhY2FkZS5nZXROYW1lKHN0YXRlbWFjaGluZSkNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7DQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgZGlhZ3JhbSA9IGRpYWdyYW1GYWN0b3J5LmNyZWF0ZURpYWdyYW0oDQogICAgICAgICAgICAg
ICAgICAgICAgICAgRGlhZ3JhbVR5cGUuQWN0aXZpdHksDQogICAgICAgICAgICAgICAgIAluYW1l
c3BhY2UsDQogICAgICAgICAgICAgICAgIAlzdGF0ZW1hY2hpbmUpOw0KICAgICAgICAgICAgIH0g
ZWxzZSB7DQotICAgICAgICAgICAgICAgIExPRy5pbmZvKCJDcmVhdGluZyBzdGF0ZSBkaWFncmFt
IGZvciAiDQotICAgICAgICAgICAgICAgICAgICAgICAgKyBmYWNhZGUuZ2V0VU1MQ2xhc3NOYW1l
KHN0YXRlbWFjaGluZSkNCi0gICAgICAgICAgICAgICAgICAgICAgICArICI8PCIgKyBmYWNhZGUu
Z2V0TmFtZShzdGF0ZW1hY2hpbmUpICsgIj4+Iik7DQorICAgICAgICAgICAgICAgIGlmIChMT0cu
aXNMb2dnYWJsZShMZXZlbC5JTkZPKSkgew0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhM
ZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRpbmcgYWN0aXZp
dHkgZGlhZ3JhbSBmb3IgezB9PDx7MX0+PiIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBPYmplY3RbXSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNhZGUu
Z2V0VU1MQ2xhc3NOYW1lKHN0YXRlbWFjaGluZSksDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWNhZGUuZ2V0TmFtZShzdGF0ZW1hY2hpbmUpDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOw0KKyAgICAgICAgICAgICAgICB9DQorDQogICAgICAgICAgICAgICAgIGRp
YWdyYW0gPSBkaWFncmFtRmFjdG9yeS5jcmVhdGVEaWFncmFtKA0KICAgICAgICAgICAgICAgICAg
ICAgICAgIERpYWdyYW1UeXBlLlN0YXRlLA0KICAgICAgICAgICAgICAgICAJbmFtZXNwYWNlLA0K
QEAgLTM4MSwxMyArMzk5LDEzIEBADQogICAgICAgICAgICAgaWYgKGRpYWdyYW0gIT0gbnVsbCkg
ew0KICAgICAgICAgICAgICAgICBwcm9qZWN0LmFkZE1lbWJlcihkaWFncmFtKTsNCiAgICAgICAg
ICAgICB9DQotICAgICAgICAgICAgDQorDQogICAgICAgICB9DQogICAgICAgICAvLyBJU1NVRSAz
NTE2IDogTWFrZSBzdXJlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBkaWFncmFtIGJlY2F1c2UNCiAg
ICAgICAgIC8vIEFyZ29VTUwgcmVxdWlyZXMgaXQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uDQogICAg
ICAgICBpZiAoYXRMZWFzdE9uZSAmJiBwcm9qZWN0LmdldERpYWdyYW1Db3VudCgpIDwgMSkgew0K
ICAgICAgICAgICAgIEFyZ29EaWFncmFtIGQgPSBkaWFncmFtRmFjdG9yeS5jcmVhdGUoDQotICAg
ICAgICAgICAgICAgICAgICBEaWFncmFtVHlwZS5DbGFzcywgY3VyTW9kZWwsIA0KKyAgICAgICAg
ICAgICAgICAgICAgRGlhZ3JhbVR5cGUuQ2xhc3MsIGN1ck1vZGVsLA0KICAgICAgICAgICAgICAg
ICAgICAgcHJvamVjdC5nZXRQcm9qZWN0U2V0dGluZ3MoKS5nZXREZWZhdWx0RGlhZ3JhbVNldHRp
bmdzKCkpOw0KICAgICAgICAgICAgIHByb2plY3QuYWRkTWVtYmVyKGQpOw0KICAgICAgICAgfQ0K
DQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0
ZW5jZS9PbGRaYXJnb0ZpbGVQZXJzaXN0ZXIuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdy
aXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL3BlcnNpc3RlbmNlL09sZFphcmdvRmlsZVBlcnNpc3Rlci5qYXZhP3ZpZXc9ZGlm
ZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL09s
ZFphcmdvRmlsZVBlcnNpc3Rlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL09sZFphcmdvRmlsZVBlcnNpc3Rlci5q
YXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTQ4LDEwICs0OCwxMSBAQA0KIGltcG9y
dCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCiBp
bXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2
ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiBpbXBvcnQgamF2YS51dGls
LnppcC5aaXBFbnRyeTsNCiBpbXBvcnQgamF2YS51dGlsLnppcC5aaXBPdXRwdXRTdHJlYW07DQog
DQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5h
cHBsaWNhdGlvbi5oZWxwZXJzLkFwcGxpY2F0aW9uVmVyc2lvbjsNCiBpbXBvcnQgb3JnLmFyZ291
bWwuaTE4bi5UcmFuc2xhdG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdDsN
CkBAIC03MSw3ICs3Miw3IEBADQogICAgICAqIExvZ2dlci4NCiAgICAgICovDQogICAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KLQlMb2dnZXIuZ2V0TG9nZ2VyKE9sZFphcmdv
RmlsZVBlcnNpc3Rlci5jbGFzcyk7DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKE9sZFphcmdv
RmlsZVBlcnNpc3Rlci5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvKioNCiAgICAgICogVGhp
cyBpcyB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIEFyZ29VTUwgdGVlIGZpbGUgd2hpY2ggZG9lcyBu
b3QgY29udGFpbg0KQEAgLTc5LDcgKzgwLDcgQEANCiAgICAgICovDQogICAgIHByaXZhdGUgc3Rh
dGljIGZpbmFsIFN0cmluZyBBUkdPX01JTklfVEVFID0NCiAgICAgICAgICIvb3JnL2FyZ291bWwv
cGVyc2lzdGVuY2UvYXJnby50ZWUiOw0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIFRoZSBj
b25zdHJ1Y3Rvci4NCiAgICAgICovDQpAQCAtOTIsMTQgKzkzLDE0IEBADQogICAgIHByb3RlY3Rl
ZCBTdHJpbmcgZ2V0RGVzYygpIHsNCiAgICAgICAgIHJldHVybiBUcmFuc2xhdG9yLmxvY2FsaXpl
KCJjb21ib2JveC5maWxlZmlsdGVyLnphcmdvIik7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8q
DQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwucGVyc2lzdGVuY2UuQWJzdHJhY3RGaWxlUGVyc2lz
dGVyI2lzU2F2ZUVuYWJsZWQoKQ0KICAgICAgKi8NCiAgICAgcHVibGljIGJvb2xlYW4gaXNTYXZl
RW5hYmxlZCgpIHsNCiAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICB9DQotICAgIA0KKw0KICAg
ICAvKioNCiAgICAgICogU2F2ZSB0aGUgcHJvamVjdCBpbiAiLnphcmdvIiBmb3JtYXQuDQogICAg
ICAqDQpAQCAtMTE0LDE3ICsxMTUsMTcgQEANCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5wZXJz
aXN0ZW5jZS5Qcm9qZWN0RmlsZVBlcnNpc3RlciNzYXZlKA0KICAgICAgKiAgICAgIG9yZy5hcmdv
dW1sLmtlcm5lbC5Qcm9qZWN0LCBqYXZhLmlvLkZpbGUpDQogICAgICAqLw0KLSAgICBwdWJsaWMg
dm9pZCBkb1NhdmUoUHJvamVjdCBwcm9qZWN0LCBGaWxlIGZpbGUpIHRocm93cyBTYXZlRXhjZXB0
aW9uLCANCisgICAgcHVibGljIHZvaWQgZG9TYXZlKFByb2plY3QgcHJvamVjdCwgRmlsZSBmaWxl
KSB0aHJvd3MgU2F2ZUV4Y2VwdGlvbiwNCiAgICAgSW50ZXJydXB0ZWRFeGNlcHRpb24gew0KIA0K
LSAgICAgICAgLyogUmV0YWluIHRoZSBwcmV2aW91cyBwcm9qZWN0IGZpbGUgZXZlbiB3aGVuIHRo
ZSBzYXZlIG9wZXJhdGlvbiANCisgICAgICAgIC8qIFJldGFpbiB0aGUgcHJldmlvdXMgcHJvamVj
dCBmaWxlIGV2ZW4gd2hlbiB0aGUgc2F2ZSBvcGVyYXRpb24NCiAgICAgICAgICAqIGNyYXNoZXMg
aW4gdGhlIG1pZGRsZS4gQWxzbyBjcmVhdGUgYSBiYWNrdXAgZmlsZSBhZnRlciBzYXZpbmcuICov
DQogICAgICAgICBib29sZWFuIGRvU2FmZVNhdmVzID0gdXNlU2FmZVNhdmVzKCk7DQogDQogICAg
ICAgICBQcm9ncmVzc01nciBwcm9ncmVzc01nciA9IG5ldyBQcm9ncmVzc01ncigpOw0KICAgICAg
ICAgcHJvZ3Jlc3NNZ3Iuc2V0TnVtYmVyT2ZQaGFzZXMoNCk7DQogICAgICAgICBwcm9ncmVzc01n
ci5uZXh0UGhhc2UoKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgRmlsZSBsYXN0QXJjaGl2ZUZp
bGUgPSBuZXcgRmlsZShmaWxlLmdldEFic29sdXRlUGF0aCgpICsgIn4iKTsNCiAgICAgICAgIEZp
bGUgdGVtcEZpbGUgPSBudWxsOw0KIA0KQEAgLTE2OSwxNyArMTcwLDE3IEBADQogICAgICAgICAg
ICAgd3JpdGVyLmZsdXNoKCk7DQogDQogICAgICAgICAgICAgc3RyZWFtLmNsb3NlRW50cnkoKTsN
Ci0gICAgICAgICAgICANCisNCiAgICAgICAgICAgICBpbnQgY291bnRlciA9IDA7DQogICAgICAg
ICAgICAgaW50IHNpemUgPSBwcm9qZWN0LmdldE1lbWJlcnMoKS5zaXplKCk7DQogICAgICAgICAg
ICAgQ29sbGVjdGlvbjxTdHJpbmc+IG5hbWVzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7DQog
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsNCiAgICAgICAgICAg
ICAgICAgUHJvamVjdE1lbWJlciBwcm9qZWN0TWVtYmVyID0gcHJvamVjdC5nZXRNZW1iZXJzKCku
Z2V0KGkpOw0KICAgICAgICAgICAgICAgICBpZiAoIShwcm9qZWN0TWVtYmVyLmdldFR5cGUoKS5l
cXVhbHNJZ25vcmVDYXNlKCJ4bWkiKSkpIHsNCi0gICAgICAgICAgICAgICAgICAgIGlmIChMT0cu
aXNJbmZvRW5hYmxlZCgpKSB7DQotICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmluZm8oIlNh
dmluZyBtZW1iZXI6ICIgDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHByb2pl
Y3QuZ2V0TWVtYmVycygpLmdldChpKS5nZXRaaXBOYW1lKCkpOw0KLSAgICAgICAgICAgICAgICAg
ICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICBMT0cubG9n
KExldmVsLklORk8sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTYXZpbmcgbWVtYmVy
OiB7MH0iLCBwcm9qZWN0TWVtYmVyLmdldFppcE5hbWUoKSk7DQorDQogICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcgbmFtZSA9IHByb2plY3RNZW1iZXIuZ2V0WmlwTmFtZSgpOw0KICAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG5hbWU7DQogICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAobmFtZXMuY29udGFpbnMobmFtZSkpIHsNCkBAIC0xOTUsMTQgKzE5NiwxNSBA
QA0KICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNsb3NlRW50cnkoKTsNCiAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICANCisNCiAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgew0KICAgICAgICAgICAgICAgICBQcm9qZWN0
TWVtYmVyIHByb2plY3RNZW1iZXIgPSBwcm9qZWN0LmdldE1lbWJlcnMoKS5nZXQoaSk7DQogICAg
ICAgICAgICAgICAgIGlmIChwcm9qZWN0TWVtYmVyLmdldFR5cGUoKS5lcXVhbHNJZ25vcmVDYXNl
KCJ4bWkiKSkgew0KLSAgICAgICAgICAgICAgICAgICAgaWYgKExPRy5pc0luZm9FbmFibGVkKCkp
IHsNCi0gICAgICAgICAgICAgICAgICAgICAgICBMT0cuaW5mbygiU2F2aW5nIG1lbWJlciBvZiB0
eXBlOiAiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHByb2plY3QuZ2V0TWVt
YmVycygpLmdldChpKS5nZXRUeXBlKCkpOw0KLSAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAg
ICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8s
DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTYXZpbmcgbWVtYmVyIG9mIHR5cGU6IHsw
fSIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RNZW1iZXIuZ2V0VHlwZSgp
KTsNCisNCiAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5wdXROZXh0RW50cnkoDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBaaXBFbnRyeShwcm9qZWN0TWVtYmVyLmdldFppcE5h
bWUoKSkpOw0KICAgICAgICAgICAgICAgICAgICAgT2xkTW9kZWxNZW1iZXJGaWxlUGVyc2lzdGVy
IHBlcnNpc3RlciA9DQpAQCAtMjI0LDEzICsyMjYsMTMgQEANCiAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICBpZiAodGVtcEZpbGUuZXhpc3RzKCkpIHsNCiAgICAgICAgICAgICAg
ICAgICAgIHRlbXBGaWxlLmRlbGV0ZSgpOw0KLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAg
DQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgcHJv
Z3Jlc3NNZ3IubmV4dFBoYXNlKCk7DQogDQogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkg
ew0KLSAgICAgICAgICAgIExPRy5lcnJvcigiRXhjZXB0aW9uIG9jY3VyZWQgZHVyaW5nIHNhdmUg
YXR0ZW1wdCIsIGUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXhjZXB0
aW9uIG9jY3VyZWQgZHVyaW5nIHNhdmUgYXR0ZW1wdCIsIGUpOw0KICAgICAgICAgICAgIHRyeSB7
DQogICAgICAgICAgICAgICAgIHdyaXRlci5jbG9zZSgpOw0KICAgICAgICAgICAgIH0gY2F0Y2gg
KEV4Y2VwdGlvbiBleCkgew0KQEAgLTI1MSwxNiArMjUzLDE2IEBADQogICAgICAgICB0cnkgew0K
ICAgICAgICAgICAgIHdyaXRlci5jbG9zZSgpOw0KICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRp
b24gZXgpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkZhaWxlZCB0byBjbG9zZSBzYXZlIG91
dHB1dCB3cml0ZXIiLCBleCk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJG
YWlsZWQgdG8gY2xvc2Ugc2F2ZSBvdXRwdXQgd3JpdGVyIiwgZXgpOw0KICAgICAgICAgfQ0KICAg
ICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVGhlIC56YXJnbyBzYXZlIGZvcm1hdCBp
cyBhYmxlIHRvIHNhdmUuIFdlIG11c3Qgb3ZlcnJpZGUNCiAgICAgICogVW1sRmlsZVBlcnNpc3Rl
ciB3aGljaCBoYXMgdHVybmVkIHRoaXMgb2ZmIChzdWdnZXN0cyBhIG5lZWQgZm9yIHNvbWUNCiAg
ICAgICogcmVmYWN0b3JpbmcgaGVyZSkNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5wZXJzaXN0
ZW5jZS5BYnN0cmFjdEZpbGVQZXJzaXN0ZXIjaXNTYXZlRW5hYmxlZCgpDQotICAgICAqIA0KKyAg
ICAgKg0KICAgICAgKiBAcmV0dXJuIGJvb2xlYW4NCiAgICAgICovDQogICAgIHB1YmxpYyBib29s
ZWFuIGlzTG9hZEVuYWJsZWQoKSB7DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL1BHTUxTdGFja1BhcnNlci5qYXZhDQpVcmw6IGh0
dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvUEdNTFN0YWNrUGFyc2VyLmph
dmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVy
c2lzdGVuY2UvUEdNTFN0YWNrUGFyc2VyLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvUEdNTFN0YWNrUGFyc2VyLmph
dmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQog
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9y
cyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAt
IHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhl
IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2Nv
bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTUwLDgg
KzUwLDkgQEANCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQogaW1wb3J0IGphdmEudXRpbC5NYXA7
DQogaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7DQoraW1wb3J0IGphdmEudXRpbC5s
b2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1w
b3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5N
b2RlbDsNCiBpbXBvcnQgb3JnLmFyZ291bWwudW1sLmRpYWdyYW0uQXJnb0RpYWdyYW07DQogaW1w
b3J0IG9yZy5hcmdvdW1sLnVtbC5kaWFncmFtLkRpYWdyYW1FZGdlU2V0dGluZ3M7DQpAQCAtODEs
MTIgKzgyLDEzIEBADQogLyoqDQogICogVGhlIFBHTUwgUGFyc2VyLg0KICAqIDxwPg0KLSAqIA0K
KyAqDQogICogVGhpcyByZXBsYWNlcyBtdWNoIG9mIHRoZSBpZGVudGljYWxseSBuYW1lZCBjbGFz
cyBmcm9tIEdFRi4NCiAgKi8NCiBjbGFzcyBQR01MU3RhY2tQYXJzZXIgZXh0ZW5kcyBvcmcudGln
cmlzLmdlZi5wZXJzaXN0ZW5jZS5wZ21sLlBHTUxTdGFja1BhcnNlciB7DQogDQotICAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFBHTUxTdGFja1Bh
cnNlci5jbGFzcyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAg
ICAgICAgTG9nZ2VyLmdldExvZ2dlcihQR01MU3RhY2tQYXJzZXIuY2xhc3MuZ2V0TmFtZSgpKTsN
CiANCiAgICAgcHJpdmF0ZSBMaXN0PEVkZ2VEYXRhPiBmaWdFZGdlcyA9IG5ldyBBcnJheUxpc3Q8
RWRnZURhdGE+KDUwKTsNCiANCkBAIC0xMjksNyArMTMxLDcgQEANCiAgICAgLyoqDQogICAgICAq
IENvbnN0cnVjdCBhIFBHTUwgcGFyc2VyIHdpdGggdGhlIGdpdmVuIEhSRUYvT2JqZWN0IG1hcCBh
bmQgZGVmYXVsdA0KICAgICAgKiBkaWFncmFtIHNldHRpbmdzLg0KLSAgICAgKiANCisgICAgICoN
CiAgICAgICogQHBhcmFtIG1vZGVsRWxlbWVudHNCeVV1aWQgbWFwIG9mIEhSRUYgaWRzIHRvIG9i
amVjdHMgdXNlZCB0byBhc3NvY2lhdGUNCiAgICAgICogICAgICAgICAgICBGaWdzIHdpdGggdGhl
aXIgb3duaW5nIG1vZGVsIGVsZW1lbnRzDQogICAgICAqIEBwYXJhbSBkZWZhdWx0U2V0dGluZ3Mg
ZGVmYXVsdCBkaWFncmFtIHNldHRpbmdzIHRvIHVzZSBmb3IgbmV3bHkgY3JlYXRlZA0KQEAgLTE1
OSw3ICsxNjEsNyBAQA0KICAgICAgICAgaWYgKGhyZWYgIT0gbnVsbCkgew0KICAgICAgICAgICAg
IG93bmVyID0gZmluZE93bmVyKGhyZWYpOw0KICAgICAgICAgICAgIGlmIChvd25lciA9PSBudWxs
KSB7DQotICAgICAgICAgICAgICAgIExPRy53YXJuKCJGb3VuZCBocmVmIG9mICIgKyBocmVmDQor
ICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIkZvdW5kIGhyZWYgb2YgIiAr
IGhyZWYNCiAgICAgICAgICAgICAgICAgICAgICAgICArICIgd2l0aCBubyBtYXRjaGluZyBlbGVt
ZW50IGluIG1vZGVsIik7DQogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICAg
ICAgIH0NCkBAIC0yMDIsNyArMjA0LDcgQEANCiAgICAgICAgICAgICBGaWdHcm91cCBncm91cCA9
IChGaWdHcm91cCkgZjsNCiAgICAgICAgICAgICBTdHJpbmcgY2xzTmFtZUJvdW5kcyA9IGF0dHJM
aXN0LmdldFZhbHVlKCJkZXNjcmlwdGlvbiIpOw0KICAgICAgICAgICAgIGlmIChjbHNOYW1lQm91
bmRzICE9IG51bGwpIHsNCi0gICAgICAgICAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gDQor
ICAgICAgICAgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9DQogICAgICAgICAgICAgICAgICAg
ICBuZXcgU3RyaW5nVG9rZW5pemVyKGNsc05hbWVCb3VuZHMsICIsO1tdICIpOw0KICAgICAgICAg
ICAgICAgICAvLyBEaXNjYXJkIGNsYXNzIG5hbWUsIHggeSB3IGgNCiAgICAgICAgICAgICAgICAg
aWYgKHN0Lmhhc01vcmVFbGVtZW50cygpKSB7DQpAQCAtMjM5LDcgKzI0MSw3IEBADQogICAgICAg
ICBpZiAoaHJlZiAhPSBudWxsICYmICFocmVmLmVxdWFscygiIikpIHsNCiAgICAgICAgICAgICBP
YmplY3QgbW9kZWxFbGVtZW50ID0gZmluZE93bmVyKGhyZWYpOw0KICAgICAgICAgICAgIGlmICht
b2RlbEVsZW1lbnQgPT0gbnVsbCkgew0KLSAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIkNhbid0
IGZpbmQgaHJlZiBvZiAiICsgaHJlZik7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwu
U0VWRVJFLCAiQ2FuJ3QgZmluZCBocmVmIG9mICIgKyBocmVmKTsNCiAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IFNBWEV4Y2VwdGlvbigiRm91bmQgaHJlZiBvZiAiICsgaHJlZg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICsgIiB3aXRoIG5vIG1hdGNoaW5nIGVsZW1lbnQgaW4gbW9kZWwiKTsN
CiAgICAgICAgICAgICB9DQpAQCAtMjUyLDggKzI1NCw5IEBADQogICAgICAgICAgICAgICAgICAg
ICBmLnNldE93bmVyKG1vZGVsRWxlbWVudCk7DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICB9IGVsc2Ugew0KLSAgICAgICAgICAgICAgICBMT0cuZGVidWcoIklnbm9yaW5nIGhyZWYg
b24gIiArIGYuZ2V0Q2xhc3MoKS5nZXROYW1lKCkNCi0gICAgICAgICAgICAgICAgICAgICAgICAr
ICIgYXMgaXQncyBhbHJlYWR5IHNldCIpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVs
LkZJTkUsDQorICAgICAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIGhyZWYgb24gezB9IGFz
IGl0J3MgYWxyZWFkeSBzZXQiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYuZ2V0Q2xhc3Mo
KS5nZXROYW1lKCkpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgfQ0KQEAgLTI2
Niw3ICsyNjksNyBAQA0KICAgICAgKiBuYW1lLiBUaGUgY3VycmVudCBhcHBsaWNhYmxlIG5hbWVz
IGFyZSBvcGVyYXRpb25zVmlzaWJsZSBhbmQNCiAgICAgICogYXR0cmlidXRlc1Zpc2libGUgYW5k
IGFyZSB1c2VkIHRvIHNob3cgb3IgaGlkZSB0aGUgY29tcGFydG1lbnRzIHdpdGhpbg0KICAgICAg
KiBDbGFzcyBhbmQgSW50ZXJmYWNlLiBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIHRydWUuDQotICAg
ICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gc3QgVGhlIFN0cmlua1Rva2VuaXplciBwb3Np
dGlvbmVkIGF0IHRoZSBmaXJzdCBzdHlsZSBpZGVudGlmaWVyDQogICAgICAqIEByZXR1cm4gYSBt
YXAgb2YgYXR0cmlidXRlcw0KICAgICAgKi8NCkBAIC0yOTQsMTAgKzI5NywxMCBAQA0KICAgICAv
KioNCiAgICAgICogU2V0IHRoZSBmaWcgc3R5bGUgYXR0cmlidXRlcy4NCiAgICAgICogPHA+DQot
ICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBUT0RPOiBUaGlzIHNob3VsZCBtb3ZlIGludG8gdGhl
IHJlbmRlciBmYWN0b3JpZXMgYXMgZGVzY3JpYmVkIGluIGlzc3VlDQogICAgICAqIDg1OS4NCi0g
ICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBmaWcgdGhlIGZpZyB0byBzdHlsZS4NCiAg
ICAgICogQHBhcmFtIGF0dHJpYnV0ZU1hcCBhIG1hcCBvZiBuYW1lIHZhbHVlIHBhaXJzDQogICAg
ICAqLw0KQEAgLTM0MCw3ICszNDMsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogUmVhZCBhbmQg
cGFyc2UgdGhlIGlucHV0IHN0cmVhbSB0byBjcmVhdGUgYSBuZXcgZGlhZ3JhbSBhbmQgcmV0dXJu
IGl0Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGlzIHRoZSBpbnB1dCBzdHJl
YW0NCiAgICAgICogQHBhcmFtIGNsb3NlU3RyZWFtIHRydWUgdG8gY2xvc2UgdGhlIHN0cmVhbSB3
aGVuIHBhcnNpbmcgaXMgY29tcGxldGUNCiAgICAgICogQHJldHVybiB0aGUgZGlhZ3JhbSBjcmVh
dGVkIGFzIGEgcmVzdWx0IG9mIHRoZSBwYXJzZQ0KQEAgLTM2Niw3ICszNjksNyBAQA0KIA0KICAg
ICAvKioNCiAgICAgICogUmVhZCBhbmQgcGFyc2UgdGhlIGlucHV0IHN0cmVhbSB0byBjcmVhdGUg
YSBuZXcgZGlhZ3JhbSBhbmQgcmV0dXJuIGl0Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICog
QHBhcmFtIGlzIHRoZSBpbnB1dCBzdHJlYW0NCiAgICAgICogQHBhcmFtIGNsb3NlU3RyZWFtIHRy
dWUgdG8gY2xvc2UgdGhlIHN0cmVhbSB3aGVuIHBhcnNpbmcgaXMgY29tcGxldGUNCiAgICAgICog
QHJldHVybiB0aGUgZGlhZ3JhbSBjcmVhdGVkIGFzIGEgcmVzdWx0IG9mIHRoZSBwYXJzZQ0KQEAg
LTM5OCw3ICs0MDEsNyBAQA0KICAgICAgKiBkaWFncmFtLiBUaGlzIG1ldGhvZCB0aGVuIGF0dGFj
aGVzIHRoZSBlZGdlcyB0byB0aGUgY29ycmVjdCBub2RlLA0KICAgICAgKiBpbmNsdWRpbmcgdGhl
IG5vZGVzIGNvbnRhaW5lZCB3aXRoaW4gZWRnZXMgYWxsb3dpbmcgZWRnZSB0byBlZGdlDQogICAg
ICAqIGNvbm5lY3Rpb25zIGZvciBjb21tZW50IGVkZ2VzLCBhc3NvY2lhdGlvbiBjbGFzc2VzIGFu
ZCBkZXBlbmRlbmNpZXMuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gZCB0aGUg
RGlhZ3JhbQ0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSB2b2lkIGF0dGFjaEVkZ2VzKERpYWdyYW0g
ZCkgew0KQEAgLTQ0MCw3ICs0NDMsOCBAQA0KIA0KICAgICAgICAgICAgIGlmIChzb3VyY2VQb3J0
RmlnID09IG51bGwgfHwgZGVzdFBvcnRGaWcgPT0gbnVsbA0KICAgICAgICAgICAgICAgICAgICAg
fHwgc291cmNlRmlnTm9kZSA9PSBudWxsIHx8IGRlc3RGaWdOb2RlID09IG51bGwpIHsNCi0gICAg
ICAgICAgICAgICAgTE9HLmVycm9yKCJDYW4ndCBmaW5kIG5vZGVzIGZvciBGaWdFZGdlOiAiICsg
ZWRnZS5nZXRJZCgpICsgIjoiDQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJF
LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBmaW5kIG5vZGVzIGZvciBGaWdFZGdl
OiAiICsgZWRnZS5nZXRJZCgpICsgIjoiDQogICAgICAgICAgICAgICAgICAgICAgICAgKyBlZGdl
LnRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgICAgICBlZGdlLnJlbW92ZUZyb21EaWFncmFtKCk7
DQogICAgICAgICAgICAgfSBlbHNlIHsNCkBAIC00NjYsNyArNDcwLDcgQEANCiAgICAgLy8gVE9E
TzogTW92ZSB0byBHRUYNCiAgICAgLyoqDQogICAgICAqIFN0b3JlIGRhdGEgb2YgYSBGaWdFZGdl
IHRvZ2V0aGVyIHdpdGggdGhlIGlkJ3Mgb2Ygbm9kZXMgdG8gY29ubmVjdCB0bw0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogQHBhcmFtIGZpZ0VkZ2UgVGhlIEZpZ0VkZ2UNCiAgICAgICogQHBh
cmFtIHNvdXJjZVBvcnRGaWdJZCBUaGUgaWQgb2YgdGhlIHNvdXJjZSBwb3J0DQogICAgICAqIEBw
YXJhbSBkZXN0UG9ydEZpZ0lkIFRoZSBpZCBvZiB0aGUgZGVzdGluYXRpb24gcG9ydA0KQEAgLTQ4
Myw3ICs0ODcsNyBAQA0KICAgICAvLyBUT0RPOiBNb3ZlIHRvIEdFRg0KICAgICAvKioNCiAgICAg
ICogR2V0IHRoZSBGaWdOb2RlIHRoYXQgdGhlIGZpZyBpZCByZXByZXNlbnRzLg0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogQHBhcmFtIGZpZ0lkIChJbiB0aGUgZm9ybSBGaWd4LnkueikNCiAg
ICAgICogQHJldHVybiB0aGUgRmlnTm9kZSB3aXRoIHRoZSBnaXZlbiBpZA0KICAgICAgKiBAdGhy
b3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBpZiB0aGUgZmlnSWQgc3VwcGxpZWQgaXMgbm90IG9m
IGEgRmlnTm9kZQ0KQEAgLTUwOSw3ICs1MTMsOCBAQA0KICAgICAgICAgICAgIGlmIChmIGluc3Rh
bmNlb2YgRmlnTm9kZSkgew0KICAgICAgICAgICAgICAgICByZXR1cm4gKEZpZ05vZGUpIGY7DQog
ICAgICAgICAgICAgfSBlbHNlIHsNCi0gICAgICAgICAgICAgICAgTE9HLmVycm9yKCJGaWdJRCAi
ICsgZmlnSWQgKyAiIGlzIG5vdCBhIG5vZGUsIGVkZ2UgaWdub3JlZCIpOw0KKyAgICAgICAgICAg
ICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAiRmln
SUQgIiArIGZpZ0lkICsgIiBpcyBub3QgYSBub2RlLCBlZGdlIGlnbm9yZWQiKTsNCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KQEAgLTUx
OCw3ICs1MjMsNyBAQA0KICAgICAvLyBUT0RPOiBNb3ZlIHRvIEdFRg0KICAgICAvKioNCiAgICAg
ICogR2V0IHRoZSBGaWcgZnJvbSB0aGUgRmlnTm9kZSB0aGF0IGlzIHRoZSBwb3J0Lg0KLSAgICAg
KiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGZpZ05vZGUgdGhlIEZpZ05vZGUNCiAgICAgICog
QHJldHVybiB0aGUgRmlnIHRoYXQgaXMgdGhlIHBvcnQgb24gdGhlIGdpdmVuIEZpZ05vZGUNCiAg
ICAgICovDQpAQCAtNTUyLDcgKzU1Nyw3IEBADQogDQogICAgICAgICAvKioNCiAgICAgICAgICAq
IENvbnN0cnVjdG9yDQotICAgICAgICAgKiANCisgICAgICAgICAqDQogICAgICAgICAgKiBAcGFy
YW0gZWRnZSBUaGUgRmlnRWRnZQ0KICAgICAgICAgICogQHBhcmFtIHNvdXJjZVBvcnRJZCBUaGUg
aWQgb2YgdGhlIHNvdXJjZSBwb3J0DQogICAgICAgICAgKiBAcGFyYW0gZGVzdFBvcnRJZCBUaGUg
aWQgb2YgdGhlIGRlc3RpbmF0aW9uIHBvcnQNCkBAIC01NzcsNyArNTgyLDcgQEANCiANCiAgICAg
ICAgIC8qKg0KICAgICAgICAgICogR2V0IHRoZSBpZCBvZiB0aGUgZGVzdGluYXRpb24gRmlnTm9k
ZQ0KLSAgICAgICAgICogDQorICAgICAgICAgKg0KICAgICAgICAgICogQHJldHVybiB0aGUgaWQN
CiAgICAgICAgICAqLw0KICAgICAgICAgcHVibGljIFN0cmluZyBnZXREZXN0RmlnTm9kZUlkKCkg
ew0KQEAgLTU4Niw3ICs1OTEsNyBAQA0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAgKiBHZXQg
dGhlIGlkIG9mIHRoZSBkZXN0aW5hdGlvbiBwb3J0DQotICAgICAgICAgKiANCisgICAgICAgICAq
DQogICAgICAgICAgKiBAcmV0dXJuIHRoZSBpZA0KICAgICAgICAgICovDQogICAgICAgICBwdWJs
aWMgU3RyaW5nIGdldERlc3RQb3J0RmlnSWQoKSB7DQpAQCAtNTk1LDcgKzYwMCw3IEBADQogDQog
ICAgICAgICAvKioNCiAgICAgICAgICAqIEdldCB0aGUgRmlnRWRnZQ0KLSAgICAgICAgICogDQor
ICAgICAgICAgKg0KICAgICAgICAgICogQHJldHVybiB0aGUgRmlnRWRnZQ0KICAgICAgICAgICov
DQogICAgICAgICBwdWJsaWMgRmlnRWRnZSBnZXRGaWdFZGdlKCkgew0KQEAgLTYwNCw3ICs2MDks
NyBAQA0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAgKiBHZXQgdGhlIGlkIG9mIHRoZSBzb3Vy
Y2UgRmlnTm9kZQ0KLSAgICAgICAgICogDQorICAgICAgICAgKg0KICAgICAgICAgICogQHJldHVy
biB0aGUgaWQNCiAgICAgICAgICAqLw0KICAgICAgICAgcHVibGljIFN0cmluZyBnZXRTb3VyY2VG
aWdOb2RlSWQoKSB7DQpAQCAtNjEzLDcgKzYxOCw3IEBADQogDQogICAgICAgICAvKioNCiAgICAg
ICAgICAqIEdldCB0aGUgaWQgb2YgdGhlIHNvdXJjZSBwb3J0DQotICAgICAgICAgKiANCisgICAg
ICAgICAqDQogICAgICAgICAgKiBAcmV0dXJuIHRoZSBpZA0KICAgICAgICAgICovDQogICAgICAg
ICBwdWJsaWMgU3RyaW5nIGdldFNvdXJjZVBvcnRGaWdJZCgpIHsNCkBAIC02MzEsNyArNjM2LDcg
QEANCiAgICAgICogPHA+DQogICAgICAqIElmIHdlIGZhaWwgdG8gZmluZCBhbnkgb2YgdGhlIGNv
bnN0cnVjdG9ycyB0aGF0IHdlIGtub3cgYWJvdXQsIHdlJ2xsIGNhbGwNCiAgICAgICogR0VGJ3Mg
dmVyc2lvbiBvZiB0aGlzIG1ldGhvZCB0byBzZWUgaWYgaXQgY2FuIGZpbmQgYSBjb25zdHJ1Y3Rv
ci4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBjbGFzc05hbWUgZnVsbHkgcXVh
bGlmaWVkIG5hbWUgb2YgY2xhc3MgdG8gaW5zdGFudGlhdGUNCiAgICAgICogQHBhcmFtIGhyZWYg
c3RyaW5nIHJlcHJlc2VudGluZyBVVUlEIG9mIG93bmluZyBlbGVtZW50DQogICAgICAqIEBwYXJh
bSBib3VuZHMgcG9zaXRpb24gYW5kIHNpemUgb2YgZmlndXJlDQpAQCAtNjQ1LDcgKzY1MCw3IEBA
DQogICAgICAgICAgICAgZmluYWwgUmVjdGFuZ2xlIGJvdW5kcywgZmluYWwgQXR0cmlidXRlcyBh
dHRyaWJ1dGVzKQ0KICAgICAgICAgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQogDQotICAgICAgICBm
aW5hbCBEaWFncmFtU2V0dGluZ3Mgb2xkU2V0dGluZ3MgPSANCisgICAgICAgIGZpbmFsIERpYWdy
YW1TZXR0aW5ncyBvbGRTZXR0aW5ncyA9DQogICAgICAgICAgICAgKChBcmdvRGlhZ3JhbSkgZ2V0
RGlhZ3JhbSgpKS5nZXREaWFncmFtU2V0dGluZ3MoKTsNCiANCiAgICAgICAgIEZpZyBmID0gbnVs
bDsNCkBAIC03NTEsNyArNzU2LDggQEANCiANCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dHJ1Y3Rvci5zZXRBY2Nlc3NpYmxlKHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGYg
PSAoRmlnKSBjb25zdHJ1Y3Rvci5uZXdJbnN0YW5jZShwYXJhbWV0ZXJzKTsNCi0gICAgICAgICAg
ICAgICAgICAgICAgICBMT0cud2FybigiRmlnIGNyZWF0ZWQgYnkgb2xkIHN0eWxlIGNvbnN0cnVj
dG9yICINCisgICAgICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlnIGNyZWF0ZWQgYnkgb2xkIHN0eWxl
IGNvbnN0cnVjdG9yICINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZi5nZXRD
bGFzcygpLmdldE5hbWUoKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAg
ICAgICAgICAgICAgICAgICB9DQpAQCAtNzcwLDcgKzc3Niw4IEBADQogICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gR0VGJ3MgaGFuZGxpbmcgaWYgd2UgY291bGRuJ3QgZmluZCBhbiBhcHByb3ByaWF0
ZQ0KICAgICAgICAgLy8gY29uc3RydWN0b3INCiAgICAgICAgIGlmIChmID09IG51bGwpIHsNCi0g
ICAgICAgICAgICBMT0cud2FybigiTm8gQXJnb1VNTCBjb25zdHJ1Y3RvciBmb3VuZCBmb3IgIiAr
IGNsYXNzTmFtZQ0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywNCisgICAgICAg
ICAgICAgICAgICAgICJObyBBcmdvVU1MIGNvbnN0cnVjdG9yIGZvdW5kIGZvciAiICsgY2xhc3NO
YW1lDQogICAgICAgICAgICAgICAgICAgICArICIgZmFsbGluZyBiYWNrIHRvIEdFRidzIGRlZmF1
bHQgY29uc3RydWN0b3JzIik7DQogICAgICAgICAgICAgZiA9IHN1cGVyLmNvbnN0cnVjdEZpZyhj
bGFzc05hbWUsIGhyZWYsIGJvdW5kcywgYXR0cmlidXRlcyk7DQogICAgICAgICB9DQpAQCAtNzgx
LDIwICs3ODgsMjIgQEANCiAgICAgLyoqDQogICAgICAqIEdpdmVuIHRoZSBocmVmIGV4dHJhY3Rl
ZCBmcm9tIHRoZSBQR01MIHJldHVybiB0aGUgbW9kZWwgZWxlbWVudCB3aXRoIHRoYXQNCiAgICAg
ICogdXVpZC4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBjbGFzc05hbWUgVXNl
ZCBvbmx5IGZvciBsb2dnaW5nIHNob3VsZCB0aGUgaHJlZiBub3QgYmUgZm91bmQNCiAgICAgICog
QHBhcmFtIGhyZWYgVGhlIGhyZWYNCiAgICAgICogQHJldHVybg0KICAgICAgKi8NCiAgICAgcHJp
dmF0ZSBPYmplY3QgZ2V0T3duZXIoU3RyaW5nIGNsYXNzTmFtZSwgU3RyaW5nIGlkKSB7DQogICAg
ICAgICBpZiAoaWQgPT0gbnVsbCkgew0KLSAgICAgICAgICAgIExPRy53YXJuKCJUaGVyZSBpcyBu
byBocmVmIGF0dHJpYnV0ZSBwcm92aWRlZCBmb3IgYSAiICsgY2xhc3NOYW1lDQorICAgICAgICAg
ICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLA0KKyAgICAgICAgICAgICAgICAgICAgIlRoZXJlIGlz
IG5vIGhyZWYgYXR0cmlidXRlIHByb3ZpZGVkIGZvciBhICIgKyBjbGFzc05hbWUNCiAgICAgICAg
ICAgICAgICAgICAgICsgIiBzbyB0aGUgZGlhZ3JhbSBlbGVtZW50IGlzIGlnbm9yZWQgb24gbG9h
ZCIpOw0KICAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICAgfQ0KICAgICAgICAgZmlu
YWwgT2JqZWN0IG93bmVyID0gZmluZE93bmVyKGlkKTsNCiAgICAgICAgIGlmIChvd25lciA9PSBu
dWxsKSB7DQotICAgICAgICAgICAgTE9HLndhcm4oIlRoZSBocmVmICIgKyBpZCArICIgaXMgbm90
IGZvdW5kIGZvciBhICIgKyBjbGFzc05hbWUNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLldB
Uk5JTkcsDQorICAgICAgICAgICAgICAgICAgICAiVGhlIGhyZWYgIiArIGlkICsgIiBpcyBub3Qg
Zm91bmQgZm9yIGEgIiArIGNsYXNzTmFtZQ0KICAgICAgICAgICAgICAgICAgICAgKyAiIHNvIHRo
ZSBkaWFncmFtIGVsZW1lbnQgaXMgaWdub3JlZCBvbiBsb2FkIik7DQogICAgICAgICAgICAgcmV0
dXJuIG51bGw7DQogICAgICAgICB9DQpAQCAtODE4LDcgKzgyNyw3IEBADQogICAgICAqIDxsaT5k
aWFncmFtLnNldFNob3dTaW5nbGVNdWx0aXBsaWNpdHkoKSAoPyF3aHkgZG9lcyBHRUYgY2FyZSBh
Ym91dA0KICAgICAgKiBtdWx0aXBsaWNpdHk/ISkNCiAgICAgICogPC91bD4NCi0gICAgICogDQor
ICAgICAqDQogICAgICAqIEBwYXJhbSBkaWFncmFtIHRoZSBuZXcgZGlhZ3JhbQ0KICAgICAgKiBA
c2VlIG9yZy50aWdyaXMuZ2VmLnBlcnNpc3RlbmNlLnBnbWwuUEdNTFN0YWNrUGFyc2VyI3NldERp
YWdyYW0ob3JnLnRpZ3Jpcy5nZWYuYmFzZS5EaWFncmFtKQ0KICAgICAgKi8NCg0KTW9kaWZpZWQ6
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvUHJpdmF0
ZUhhbmRsZXIuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93
c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3Rl
bmNlL1ByaXZhdGVIYW5kbGVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYm
cjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvUHJpdmF0ZUhhbmRsZXIuamF2YQkob3JpZ2lu
YWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5j
ZS9Qcml2YXRlSGFuZGxlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiAr
MSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAo
YykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkt
MjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBU
aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUg
YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2
MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFp
bGFibGUgYXQNCkBAIC0zNSwxMSArMzUsMTMgQEANCiAvLyBQUk9WSURFRCBIRVJFVU5ERVIgSVMg
T04gQU4gIkFTIElTIiBCQVNJUywgQU5EIFRIRSBVTklWRVJTSVRZIE9GDQogLy8gQ0FMSUZPUk5J
QSBIQVMgTk8gT0JMSUdBVElPTlMgVE8gUFJPVklERSBNQUlOVEVOQU5DRSwgU1VQUE9SVCwNCiAv
LyBVUERBVEVTLCBFTkhBTkNFTUVOVFMsIE9SIE1PRElGSUNBVElPTlMuDQorDQogcGFja2FnZSBv
cmcuYXJnb3VtbC5wZXJzaXN0ZW5jZTsNCiANCiBpbXBvcnQgamF2YS51dGlsLlN0cmluZ1Rva2Vu
aXplcjsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRp
bC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQog
aW1wb3J0IG9yZy5hcmdvdW1sLnVtbC5kaWFncmFtLnVpLlBhdGhJdGVtUGxhY2VtZW50Ow0KIGlt
cG9ydCBvcmcuYXJnb3VtbC51dGlsLklJdGVtVUlEOw0KIGltcG9ydCBvcmcuYXJnb3VtbC51dGls
Lkl0ZW1VSUQ7DQpAQCAtNjksNyArNzEsOCBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0K
ICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5n
ZXRMb2dnZXIoUHJpdmF0ZUhhbmRsZXIuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5h
bCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoUHJpdmF0ZUhhbmRsZXIu
Y2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIFRoZSBjb25zdHJ1Y3Rvci4N
CkBAIC04Niw3ICs4OSw3IEBADQogICAgICAqIElmIHRoZSBjb250YWluaW5nIG9iamVjdCBpcyBh
IHR5cGUgZm9yIHdoaWNoIHRoZSBwcml2YXRlIGVsZW1lbnQNCiAgICAgICogbWlnaHQgY29udGFp
biBhbiBJdGVtVUlELCBleHRyYWN0IHRoZSBJdGVtVUlEIGlmIGl0IGV4aXN0cyBhbmQgYXNzaWdu
IGl0DQogICAgICAqIHRvIHRoZSBvYmplY3QuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBA
cGFyYW0gY29udGVudHMNCiAgICAgICogQGV4Y2VwdGlvbiBTQVhFeGNlcHRpb24NCiAgICAgICov
DQpAQCAtMTI4LDE5ICsxMzEsMTkgQEANCiAgICAgICAgIC8vIEhhbmRsZSBvdGhlciB1c2VzIG9m
IDxwcml2YXRlPiBjb250ZW50cw0KICAgICAgICAgc3VwZXIuZ290RWxlbWVudChjb250ZW50cyk7
DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBQcm9jZXNzIHN0YXJ0aW5nIGVs
ZW1lbnRzIHdpdGhpbiB0aGUgcHJpdmF0ZSB0YWcuDQogICAgICAqIFRoaXMgbWV0aG9kIGhhbmRs
ZXMgYWxsIGF0dHJpYnV0ZXMgd2l0aGluIHRhZ3Mgd2l0aGluIHByaXZhdGUgbWV0aG9kcy4NCiAg
ICAgICogVGhlIG9ubHkgc3BlY2lmaWMgdGFncyB3ZSBoYW5kbGUgaGVyZSBhdCB0aGUgbW9tZW50
IGFyZSBwYXRoaXRlbXMuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBUaGUgc3RyYXRlZ3kg
Zm9yIGhhbmRsaW5nIHBhdGhpdGVtcyBpcyBhcyBmb2xsb3dzOg0KICAgICAgKiA8dWw+DQotICAg
ICAqICA8bGk+RGF0YSBpcyBzYXZlZCBmb3IgZWFjaCBwYXRoIGl0ZW0gdXNpbmcgb25lIDxhcmdv
dW1sOnBhdGhpdGVtIC4uLiAvPiANCisgICAgICogIDxsaT5EYXRhIGlzIHNhdmVkIGZvciBlYWNo
IHBhdGggaXRlbSB1c2luZyBvbmUgPGFyZ291bWw6cGF0aGl0ZW0gLi4uIC8+DQogICAgICAqICAg
ICAgdGFnIHBlciBwYXRoIGl0ZW0uDQotICAgICAqICA8bGk+VGhlIGNvZGUgdGhhdCBkZWZpbmVz
IHdoYXQgaXMgc3RvcmVkIGlzIGluIA0KKyAgICAgKiAgPGxpPlRoZSBjb2RlIHRoYXQgZGVmaW5l
cyB3aGF0IGlzIHN0b3JlZCBpcyBpbg0KICAgICAgKiAgICAgIG9yZy5hcmdvdW1sLnBlcnNpc3Rl
bmNlLlBHTUwudGVlDQotICAgICAqICA8bGk+RWFjaCA8YXJnb3VtbDpwYXRoaXRlbT4gdGFnIHN0
b3JlcyANCisgICAgICogIDxsaT5FYWNoIDxhcmdvdW1sOnBhdGhpdGVtPiB0YWcgc3RvcmVzDQog
ICAgICAqICA8dWw+DQogICAgICAqICAgIDxsaT5UaGUgY2xhc3MgbmFtZSBvZiB0aGUgUGF0aEl0
ZW1QbGFjZW1lbnRTdHJhdGVneQ0KICAgICAgKiAgICA8bGk+VGhlIGNsYXNzIG5hbWUgb2YgdGhl
IGZpZyB3aGljaCBpdCBwbGFjZXMuDQpAQCAtMTU0LDEwICsxNTcsMTAgQEANCiAgICAgICogICAg
ICBkaWFncmFtIGZpZ3Mgd2hpY2ggdGhleSBjb250cm9sLg0KICAgICAgKiAgPGxpPlRoZSBtYXRj
aGluZyBkdXJpbmcgZmlsZSBsb2FkIGRlcGVuZHMgZW50aXJlbHkgb24NCiAgICAgICogICAgICB0
aGVyZSBiZWluZyBhIHVuaXF1ZSBmaWdjbGFzc25hbWUgYW5kIG93bmVyaHJlZiBjb21iaW5hdGlv
bg0KLSAgICAgKiAgICAgIGZvciBlYWNoIHBhdGhpdGVtIG9uIHRoZSBkaWFncmFtLiAgRm9yIGV4
YW1wbGUsIEZvciBhIA0KKyAgICAgKiAgICAgIGZvciBlYWNoIHBhdGhpdGVtIG9uIHRoZSBkaWFn
cmFtLiAgRm9yIGV4YW1wbGUsIEZvciBhDQogICAgICAqICAgICAgRmlnQXNzb2NpYXRpb24sIHRo
ZSBtYWluIGxhYmVsIGlzIGEgRmlnVGV4dEdyb3VwLCBhbmQgaXQncw0KICAgICAgKiAgICAgIG93
bmVyIGlzIGFzc2lnbmVkIHRvIHRoZSBBc3NvY2lhdGlvbi4gIFRoaXMgY29tYmluYXRpb24gaXMN
Ci0gICAgICogICAgICB1bmlxdWUsIGFuZCBpcyB1c2VkIHRvIG1hdGNoIHRoZSBwYXJzZWQgcGF0
aGl0ZW0gZGF0YSBiYWNrIA0KKyAgICAgKiAgICAgIHVuaXF1ZSwgYW5kIGlzIHVzZWQgdG8gbWF0
Y2ggdGhlIHBhcnNlZCBwYXRoaXRlbSBkYXRhIGJhY2sNCiAgICAgICogICAgICB0byB0aGUgaW5z
dGFudGlhdGVkIFBhdGhJdGVtUGxhY2VtZW50Lg0KICAgICAgKiAgICAgIEFub3RoZXIgZXhhbXBs
ZSBpcyB0aGUgc291cmNlIG11bHRpcGxpY2l0eSwgd2hpY2ggaXMgYQ0KICAgICAgKiAgICAgIEZp
Z011bHRpcGxpY2l0eSwgYW5kIGl0J3Mgb3duZXIgaXMgYXNzaWduZWQgdG8gdGhlDQpAQCAtMTY1
LDcgKzE2OCw3IEBADQogICAgICAqICAgICAgSW4gZWFjaCBjYXNlLCB0aGUgY29tYmluYXRpb24g
aXMgdW5pcXVlLCBzbyB0aGVyZSBpcyBvbmx5DQogICAgICAqICAgICAgb25lIHBhdGhpdGVtIHRo
YXQgbWF0Y2hlcyB3aGVuIHJlYnVpbGRpbmcgdGhlIGRpYWdyYW0uDQogICAgICAqICA8L3VsPg0K
LSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHVyaQ0KICAgICAgKiBAcGFyYW0gbG9j
YWxuYW1lDQogICAgICAqIEBwYXJhbSBxbmFtZQ0KQEAgLTE3OCw3ICsxODEsNyBAQA0KICAgICAg
ICAgaWYgKCJhcmdvdW1sOnBhdGhpdGVtIi5lcXVhbHMocW5hbWUpDQogICAgICAgICAgICAgICAg
ICYmIGNvbnRhaW5lciBpbnN0YW5jZW9mIEZpZ0VkZ2VIYW5kbGVyKSB7DQogICAgICAgICAgICAg
U3RyaW5nIGNsYXNzbmFtZSA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoImNsYXNzbmFtZSIpOw0KLSAg
ICAgICAgICAgIFN0cmluZyBmaWdjbGFzc25hbWUgPSANCisgICAgICAgICAgICBTdHJpbmcgZmln
Y2xhc3NuYW1lID0NCiAgICAgICAgICAgICAgICAgYXR0cmlidXRlcy5nZXRWYWx1ZSgiZmlnY2xh
c3NuYW1lIik7DQogICAgICAgICAgICAgU3RyaW5nIG93bmVyaHJlZiA9IGF0dHJpYnV0ZXMuZ2V0
VmFsdWUoIm93bmVyaHJlZiIpOw0KICAgICAgICAgICAgIFN0cmluZyBhbmdsZSA9IGF0dHJpYnV0
ZXMuZ2V0VmFsdWUoImFuZ2xlIik7DQpAQCAtMTkwLDQwICsxOTMsNDEgQEANCiAgICAgICAgICAg
ICAgICAgICAgICYmIG9mZnNldCAhPSBudWxsICkgew0KICAgICAgICAgICAgICAgICAvLyBNZXRo
b2QgMjogKGFzc2lnbiBkYXRhIGltbWVkaWF0ZWx5LCBzZWUgZW5kIG9mIGZpbGUpLg0KICAgICAg
ICAgICAgICAgICAvLyBUT0RPOiBpZiB3ZSBldmVyIHdhbnQgdG8gZXh0ZW5kIFBhdGhJdGVtUGxh
Y2VtZW50LA0KLSAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGQgbW9kaWZ5IHRoaXMsIHNvIHRo
YXQgd2UgYWxzbyByZWNvZ25pc2UgYW55IA0KKyAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGQg
bW9kaWZ5IHRoaXMsIHNvIHRoYXQgd2UgYWxzbyByZWNvZ25pc2UgYW55DQogICAgICAgICAgICAg
ICAgIC8vIHN1YmNsYXNzIG9mIFBhdGhJdGVtUGxhY2VtZW50Lg0KICAgICAgICAgICAgICAgICAv
LyBJcyB0aGUgY2xhc3MgbmFtZSBhIFBhdGhJdGVtUGxhY21lbnQ/DQogICAgICAgICAgICAgICAg
IC8vIFRPRE86IFVzZSBjbGFzcyByZWZlcmVuY2UgdG8gbWFrZSB0aGlzIGRlcGVuZGVuY3kgb2J2
aW91cw0KICAgICAgICAgICAgICAgICBpZiAoIm9yZy5hcmdvdW1sLnVtbC5kaWFncmFtLnVpLlBh
dGhJdGVtUGxhY2VtZW50Ii5lcXVhbHMoDQogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nu
YW1lKSkgew0KLSAgICAgICAgICAgICAgICAgICAgUGF0aEl0ZW1QbGFjZW1lbnRTdHJhdGVneSBw
aXBzIA0KKyAgICAgICAgICAgICAgICAgICAgUGF0aEl0ZW1QbGFjZW1lbnRTdHJhdGVneSBwaXBz
DQogICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRQaXBzKGZpZ2NsYXNzbmFtZSwgb3duZXJo
cmVmKTsNCi0gICAgICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjayAtIHRoZSByZXR1cm5l
ZCBwYXRoIGl0ZW0gcGxhY2VtZW50IA0KKyAgICAgICAgICAgICAgICAgICAgLy8gU2FuaXR5IGNo
ZWNrIC0gdGhlIHJldHVybmVkIHBhdGggaXRlbSBwbGFjZW1lbnQNCiAgICAgICAgICAgICAgICAg
ICAgIC8vIHN0cmF0ZWd5IHNob3VsZCBtYXRjaCB0aGUgb25lIGluIHRoZSBVTUwuDQotICAgICAg
ICAgICAgICAgICAgICAvLyBJZiBpdCBkb2Vzbid0LCBpdCBjb3VsZCBiZSB0aGF0IHRoZSBVTUwg
d2FzIA0KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgaXQgZG9lc24ndCwgaXQgY291bGQgYmUg
dGhhdCB0aGUgVU1MIHdhcw0KICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlZCB3aXRoIGFu
IG9sZGVyIGFyZ28gdmVyc2lvbiwgYW5kIHRoZSBuZXcNCiAgICAgICAgICAgICAgICAgICAgIC8v
IGFyZ28gdmVyc2lvbiB1c2UgYSBkaWZmZXJlbnQgcGxhY2VtZW50IHN0cmF0ZWd5Lg0KICAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhleSBkb24ndCBtYXRjaCwganVzdCB1c2UgdGhlIGRlZmF1
bHQuDQotICAgICAgICAgICAgICAgICAgICBpZiAocGlwcyAhPSBudWxsIA0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHBpcHMgIT0gbnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBjbGFzc25hbWUuZXF1YWxzKHBpcHMuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpKSB7DQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTm93IHdlJ3JlIGludG8gcHJvY2Vzc2luZyBlYWNoIHNwZWNp
ZmljIHBhdGggDQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHdlJ3JlIGludG8gcHJv
Y2Vzc2luZyBlYWNoIHNwZWNpZmljIHBhdGgNCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBp
dGVtIHN0cmF0ZWd5Lg0KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoZSBtb21lbnQs
IHdlIG9ubHkga25vdyBQYXRoSXRlbVBsYWNlbWVudA0KICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwaXBzIGluc3RhbmNlb2YgUGF0aEl0ZW1QbGFjZW1lbnQpIHsNCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGF0aEl0ZW1QbGFjZW1lbnQgcGlwID0gDQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhdGhJdGVtUGxhY2VtZW50IHBpcCA9DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoUGF0aEl0ZW1QbGFjZW1lbnQpIHBpcHM7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBpcC5zZXREaXNwbGFjZW1lbnRWZWN0b3IoDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRG91YmxlLnBhcnNlRG91YmxlKGFuZ2xlKSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnBhcnNlSW50KG9mZnNldCkpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBD
b250aW51ZSAoZnV0dXJlIFBhdGhJdGVtUGxhY2VtZW50U3RyYXRlZ3kgaW1wbCkgDQorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgKGZ1dHVyZSBQYXRoSXRlbVBsYWNlbWVudFN0
cmF0ZWd5IGltcGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgLy9lbHNlIGlmICguLi4pIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAvL30NCiAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBQYXRoSXRlbVBsYWNlbWVudCB3YXMgdW5rbm93
biwgbGVhdmUgdGhlDQogICAgICAgICAgICAgICAgICAgICAvLyBkaWFncmFtIHdpdGggdGhlIGRl
ZmF1bHQgc2V0dGluZ3MuDQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCi0gICAgICAgICAg
ICAgICAgICAgICAgICBMT0cud2FybigiUEdNTCBzdG9yZWQgcGF0aGl0ZW0gY2xhc3MgbmFtZSBk
b2VzICINCisgICAgICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEdNTCBzdG9yZWQgcGF0aGl0ZW0gY2xh
c3MgbmFtZSBkb2VzICINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIm5vdCBt
YXRjaCB0aGUgY2xhc3MgbmFtZSBvbiB0aGUgIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyAiZGlhZ3JhbS4gTGFiZWwgcG9zaXRpb24gd2lsbCByZXZlcnQgIg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKyAidG8gZGVmYXVsdHMuIik7DQpAQCAtMjMyLDkgKzIz
Niw5IEBADQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIC8vIElmIGFueSBvZiB0aGUgdmFs
dWVzIGFyZSBudWxsLCBpZ25vcmUgdGhlIGVsZW1lbnQuDQogICAgICAgICAgICAgZWxzZSB7DQot
ICAgICAgICAgICAgICAgIExPRy53YXJuKCJDb3VsZCBub3QgZmluZCBhbGwgYXR0cmlidXRlcyBm
b3IgPCIgDQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIkNvdWxkIG5v
dCBmaW5kIGFsbCBhdHRyaWJ1dGVzIGZvciA8Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICsg
cW5hbWUgKyAiPiB0YWcsIGlnbm9yaW5nLiIpOw0KLSAgICAgICAgICAgICAgICAvL1N5c3RlbS5v
dXQucHJpbnRsbigiRXJyb3IgLSBvbmUgb2YgdGhlc2UgaXMgbnVsbDoiIA0KKyAgICAgICAgICAg
ICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgLSBvbmUgb2YgdGhlc2UgaXMgbnVsbDoi
DQogICAgICAgICAgICAgICAgIC8vICAgICAgICArICJjbGFzc25hbWU9IiArIGNsYXNzbmFtZQ0K
ICAgICAgICAgICAgICAgICAvLyAgICAgICAgKyAiIGZpZ2NsYXNzbmFtZT0iICsgZmlnY2xhc3Nu
YW1lDQogICAgICAgICAgICAgICAgIC8vICAgICAgICArICIgb3duZXJocmVmPSIgKyBvd25lcmhy
ZWYNCkBAIC0yNTIsNyArMjU2LDcgQEANCiAgICAgICogQHBhcmFtIG93bmVyaHJlZiBUaGUgaHJl
ZiBvZiB0aGUgb3duZXIgb2YgdGhlIGZpZyBiZWluZyBwbGFjZWQuDQogICAgICAqIEByZXR1cm4g
VGhlIHBhdGggaXRlbSBwbGFjZW1lbnQgc3RyYXRlZ3kuDQogICAgICAqLw0KLSAgICBwcml2YXRl
IFBhdGhJdGVtUGxhY2VtZW50U3RyYXRlZ3kgZ2V0UGlwcyhTdHJpbmcgZmlnY2xhc3NuYW1lLCAN
CisgICAgcHJpdmF0ZSBQYXRoSXRlbVBsYWNlbWVudFN0cmF0ZWd5IGdldFBpcHMoU3RyaW5nIGZp
Z2NsYXNzbmFtZSwNCiAgICAgICAgICAgICBTdHJpbmcgb3duZXJocmVmKSB7DQogICAgICAgICBp
ZiAoY29udGFpbmVyIGluc3RhbmNlb2YgRmlnRWRnZUhhbmRsZXIpIHsNCiAgICAgICAgICAgICBG
aWdFZGdlIGZlID0gKChGaWdFZGdlSGFuZGxlcikgY29udGFpbmVyKS5nZXRGaWdFZGdlKCk7DQpA
QCAtMjYwLDcgKzI2NCw3IEBADQogDQogICAgICAgICAgICAgZm9yIChPYmplY3QgbyA6IGZlLmdl
dFBhdGhJdGVtRmlncygpKSB7DQogICAgICAgICAgICAgICAgIEZpZyBmID0gKEZpZykgbzsNCi0g
ICAgICAgICAgICAgICAgLy8gRm9yIGEgbWF0Y2ggdG8gYmUgZm91bmQsIGl0IGhhcyB0byBoYXZl
IHRoZSBzYW1lIA0KKyAgICAgICAgICAgICAgICAvLyBGb3IgYSBtYXRjaCB0byBiZSBmb3VuZCwg
aXQgaGFzIHRvIGhhdmUgdGhlIHNhbWUNCiAgICAgICAgICAgICAgICAgLy8gb3duZXIsIGFuZCB0
aGUgc2FtZSBsb25nIGNsYXNzIG5hbWUuDQogICAgICAgICAgICAgICAgIGlmIChvd25lci5lcXVh
bHMoZi5nZXRPd25lcigpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICYmIGZpZ2NsYXNzbmFt
ZS5lcXVhbHMoZi5nZXRDbGFzcygpLmdldE5hbWUoKSkpIHsNCkBAIC0yNjksMTEgKzI3MywxMiBA
QA0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KLSAgICAg
ICAgTE9HLndhcm4oIkNvdWxkIG5vdCBsb2FkIHBhdGggaXRlbSBmb3IgZmlnICciICsgZmlnY2xh
c3NuYW1lIA0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLA0KKyAgICAgICAgICAgICAg
ICAiQ291bGQgbm90IGxvYWQgcGF0aCBpdGVtIGZvciBmaWcgJyIgKyBmaWdjbGFzc25hbWUNCiAg
ICAgICAgICAgICAgICAgKyAiJywgdXNpbmcgZGVmYXVsdCBwbGFjZW1lbnQuIik7DQogICAgICAg
ICByZXR1cm4gbnVsbDsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIERldGVy
bWluZSBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGFuIEl0ZW1VSUQuDQogICAgICAqDQpAQCAtMjg3
LDggKzI5Miw4IEBADQogICAgICAgICAgICAgTmFtZVZhbCBudmFsID0gc3BsaXROYW1lVmFsKHN0
cik7DQogDQogICAgICAgICAgICAgaWYgKG52YWwgIT0gbnVsbCkgew0KLSAgICAgICAgICAgICAg
ICBpZiAoTE9HLmlzRGVidWdFbmFibGVkKCkpIHsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5k
ZWJ1ZygiUHJpdmF0ZSBFbGVtZW50OiBcIiIgKyBudmFsLmdldE5hbWUoKQ0KKyAgICAgICAgICAg
ICAgICBpZiAoTE9HLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsNCisgICAgICAgICAgICAgICAg
ICAgIExPRy5sb2coTGV2ZWwuRklORSwgIlByaXZhdGUgRWxlbWVudDogXCIiICsgbnZhbC5nZXRO
YW1lKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBcIiIgKyBudmFsLmdl
dFZhbHVlKCkgKyAiXCIiKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICBp
ZiAoIkl0ZW1VSUQiLmVxdWFscyhudmFsLmdldE5hbWUoKSkNCkBAIC0zNjQsMjEgKzM2OSwyMSBA
QA0KICAgICB9DQogfQ0KIA0KLS8vIEFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBwYXJzaW5nIG9mIHBhdGhpdGVtcyBpcyB0byBjb2xsZWN0IA0KKy8vIEFuIGFsdGVybmF0aXZl
IGltcGxlbWVudGF0aW9uIG9mIHRoZSBwYXJzaW5nIG9mIHBhdGhpdGVtcyBpcyB0byBjb2xsZWN0
DQogLy8gZXZlcnl0aGluZyBhdCB0aGUgc3RhcnQsIHRoZW4gaXRlcmF0ZSB0aHJvdWdoIGl0IGFs
bCBhdCB0aGUgZW5kLg0KIC8vIFRoZSBjb2RlIGJlbG93IGRvZXMgdGhpcyAtIGl0IHdvcmtzLCBi
dXQgaXQgaXMgY3VycmVudGx5IG5vdCB1c2VkLA0KIC8vIHNpbmNlIGl0IGlzIGEgdW5uZWNlc3Nh
cmlseSBjb21wbGljYXRlZC4NCiAvLyBUaGVyZSBhcmUgcHJvYmFibHkgYmV0dGVyIHdheXMgdG8g
aW1wbGVtZW50IHRoaXMgdGhhbiB1c2luZyBhbg0KIC8vIEFycmF5TGlzdCBvZiBIYXNodGFibGVz
Lg0KLS8vIHNlZSBvcHRpb24gMSBpbiANCisvLyBzZWUgb3B0aW9uIDEgaW4NCiAvLyBodHRwOi8v
YXJnb3VtbC50aWdyaXMub3JnL2lzc3Vlcy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OCNkZXNjNjYNCiAv
Lw0KIA0KIC8vLyoqDQogLy8gKiBBIGxpc3Qgb2YgdGhlIHBhdGggaXRlbSBhdHRyaWJ1dGVzIGZv
ciB0aGlzIGNvbnRhaW5lci4NCi0vLyAqIFRoZSBsaXN0IGlzIHBvcHVsYXRlZCBkdXJpbmcgcGFy
c2luZywgdGhlbSBwcm9jZXNzZWQgYXQgZW5kRWxlbWVudCgpIA0KKy8vICogVGhlIGxpc3QgaXMg
cG9wdWxhdGVkIGR1cmluZyBwYXJzaW5nLCB0aGVtIHByb2Nlc3NlZCBhdCBlbmRFbGVtZW50KCkN
CiAvLyAqLw0KLS8vcHJpdmF0ZSBMaXN0PEhhc2h0YWJsZTxTdHJpbmcsIFN0cmluZz4+IHBhdGhJ
dGVtQXR0cnMgPSANCisvL3ByaXZhdGUgTGlzdDxIYXNodGFibGU8U3RyaW5nLCBTdHJpbmc+PiBw
YXRoSXRlbUF0dHJzID0NCiAvLyAgICBuZXcgQXJyYXlMaXN0PEhhc2h0YWJsZTxTdHJpbmcsIFN0
cmluZz4+KCk7DQogDQogLy8gVGhpcyBjb2RlIGhhcyB0byBnbyB3aXRoaW4gdGhlIHN0YXJ0RWxl
bWVudCBibG9jayBhZnRlciB0aGUgc3RyaW5ncw0KQEAgLTM4Niw4ICszOTEsOCBAQA0KIA0KIC8v
Ly8gTWV0aG9kIDE6DQogLy8vLyAoY29sbGVjdCBkYXRhIGFuZCBhc3NpZ24gbGF0ZXIgaW4gZW5k
RWxlbWVudCgpIG1ldGhvZCkuDQotLy9IYXNodGFibGU8U3RyaW5nLCBTdHJpbmc+IGh0ID0gDQot
Ly8gICAgbmV3IEhhc2h0YWJsZTxTdHJpbmcsIFN0cmluZz4oKTsgDQorLy9IYXNodGFibGU8U3Ry
aW5nLCBTdHJpbmc+IGh0ID0NCisvLyAgICBuZXcgSGFzaHRhYmxlPFN0cmluZywgU3RyaW5nPigp
Ow0KIC8vaHQucHV0KCJjbGFzc25hbWUiLCBjbGFzc25hbWUpOw0KIC8vaHQucHV0KCJmaWdjbGFz
c25hbWUiLCBmaWdjbGFzc25hbWUpOw0KIC8vaHQucHV0KCJvd25lcmhyZWYiLCBvd25lcmhyZWYp
Ow0KQEAgLTM5NywxMCArNDAyLDEwIEBADQogDQogLy9wdWJsaWMgdm9pZCBlbmRFbGVtZW50KFN0
cmluZyB1cmksIFN0cmluZyBsb2NhbG5hbWUsIFN0cmluZyBxbmFtZSkNCiAvL3Rocm93cyBTQVhF
eGNlcHRpb24gew0KLS8vLy9TeXN0ZW0ub3V0LnByaW50KCJHb3QgZW5kRWxlbWVudDogIiANCi0v
Ly8vICAgICAgICArICJ1cmk9JyIgKyB1cmkgKyAiJ1xuIiANCi0vLy8vICAgICAgICArICJsb2Nh
bG5hbWU9JyIgKyBsb2NhbG5hbWUgKyAiJ1xuIiANCi0vLy8vICAgICAgICArICJxbmFtZT0nIiAr
IHFuYW1lICsgIidcbiIgDQorLy8vL1N5c3RlbS5vdXQucHJpbnQoIkdvdCBlbmRFbGVtZW50OiAi
DQorLy8vLyAgICAgICAgKyAidXJpPSciICsgdXJpICsgIidcbiINCisvLy8vICAgICAgICArICJs
b2NhbG5hbWU9JyIgKyBsb2NhbG5hbWUgKyAiJ1xuIg0KKy8vLy8gICAgICAgICsgInFuYW1lPSci
ICsgcW5hbWUgKyAiJ1xuIg0KIC8vLy8pOw0KIC8vLy8gSWYgd2UgY29sbGVjdGVkIGFueSBwYXRo
IGl0ZW1zIGZvciBhIEZpZ0VkZ2VNb2RlbEVsZW1lbnQsDQogLy8vLyBwcm9jZXNzIHRoZW0gbm93
LCBhbmQgYXNzaWduIHRoZWlyIHZhbHVlcyB0byByZWFsIEZpZ3Mgb24gdGhlIGRpYWcuDQpAQCAt
NDA4LDE5ICs0MTMsMTkgQEANCiAvLyAgICBmb3IgKEhhc2h0YWJsZTxTdHJpbmcsIFN0cmluZz4g
YXR0cnMgOiBwYXRoSXRlbUF0dHJzKSB7DQogLy8gICAgICAgIC8vIElzIHRoZSBjbGFzcyBuYW1l
IGEgUGF0aEl0ZW1QbGFjbWVudD8NCiAvLyAgICAgICAgLy8gVE9ETzogaWYgd2UgZXZlciB3YW50
IHRvIGV4dGVuZCBQYXRoSXRlbVBsYWNlbWVudCwNCi0vLyAgICAgICAgLy8gd2Ugc2hvdWxkIG1v
ZGlmeSB0aGlzLCBzbyB0aGF0IHdlIGFsc28gcmVjb2duaXNlIGFueSANCisvLyAgICAgICAgLy8g
d2Ugc2hvdWxkIG1vZGlmeSB0aGlzLCBzbyB0aGF0IHdlIGFsc28gcmVjb2duaXNlIGFueQ0KIC8v
ICAgICAgICAvLyBzdWJjbGFzcyBvZiBQYXRoSXRlbVBsYWNlbWVudC4NCiAvLyAgICAgICAgaWYg
KCJvcmcuYXJnb3VtbC51bWwuZGlhZ3JhbS51aS5QYXRoSXRlbVBsYWNlbWVudCIuDQogLy8gICAg
ICAgICAgICAgICAgZXF1YWxzKGF0dHJzLmdldCgiY2xhc3NuYW1lIikpKSB7DQogLy8gICAgICAg
ICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiZmlnY2xhc3NuYW1lPSIgKyBhdHRycy5nZXQoImZp
Z2NsYXNzbmFtZSIpKTsNCi0vLyAgICAgICAgICAgIA0KLS8vICAgICAgICAgICAgUGF0aEl0ZW1Q
bGFjZW1lbnRTdHJhdGVneSBwaXBzIA0KLS8vICAgICAgICAgICAgICAgID0gZ2V0UGlwcyhhdHRy
cy5nZXQoImZpZ2NsYXNzbmFtZSIpLCANCisvLw0KKy8vICAgICAgICAgICAgUGF0aEl0ZW1QbGFj
ZW1lbnRTdHJhdGVneSBwaXBzDQorLy8gICAgICAgICAgICAgICAgPSBnZXRQaXBzKGF0dHJzLmdl
dCgiZmlnY2xhc3NuYW1lIiksDQogLy8gICAgICAgICAgICAgICAgICAgICAgICBhdHRycy5nZXQo
Im93bmVyaHJlZiIpKTsNCiAvLyAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjayAtIHRoZSByZXR1
cm5lZCBwYXRoIGl0ZW0gcGxhY2VtZW50IHN0cmF0eQ0KIC8vICAgICAgICAgICAgLy8gc2hvdWxk
IG1hdGNoIHRoZSBvbmUgaW4gdGhlIHVtbC4NCiAvLyAgICAgICAgICAgIGlmIChwaXBzLmdldENs
YXNzKCkuZ2V0TmFtZSgpLmVxdWFscyhhdHRycy5nZXQoImNsYXNzbmFtZSIpKSkgew0KLS8vICAg
ICAgICAgICAgICAgIC8vIE5vdyB3ZSdyZSBpbnRvIHByb2Nlc3NpbmcgZWFjaCBzcGVjaWZpYyBw
YXRoIGl0ZW0gDQorLy8gICAgICAgICAgICAgICAgLy8gTm93IHdlJ3JlIGludG8gcHJvY2Vzc2lu
ZyBlYWNoIHNwZWNpZmljIHBhdGggaXRlbQ0KIC8vICAgICAgICAgICAgICAgIC8vIHN0cmF0ZWd5
Lg0KIC8vICAgICAgICAgICAgICAgIC8vIEF0IHRoZSBtb21lbnQsIHdlIG9ubHkga25vdyBhYm91
dCBQYXRoSXRlbVBsYWNlbWVudA0KIC8vICAgICAgICAgICAgICAgIGlmIChwaXBzIGluc3RhbmNl
b2YgUGF0aEl0ZW1QbGFjZW1lbnQpIHsNCkBAIC00MjksMjAgKzQzNCwyMCBAQA0KIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERvdWJsZS5wYXJzZURvdWJsZShhdHRycy5nZXQoImFuZ2xl
IikpLA0KIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIucGFyc2VJbnQoYXR0
cnMuZ2V0KCJvZmZzZXQiKSkpOw0KIC8vICAgICAgICAgICAgICAgIH0NCi0vLyAgICAgICAgICAg
ICAgICAvLyBDb250aW51ZSAoZnV0dXJlIFBhdGhJdGVtUGxhY2VtZW50U3RyYXRlZ3kgaW1wbCkg
DQorLy8gICAgICAgICAgICAgICAgLy8gQ29udGludWUgKGZ1dHVyZSBQYXRoSXRlbVBsYWNlbWVu
dFN0cmF0ZWd5IGltcGwpDQogLy8gICAgICAgICAgICAgICAgLy9lbHNlIGlmICguLi4pIHsNCi0v
LyAgICAgICAgICAgICAgICAvLyAgICANCisvLyAgICAgICAgICAgICAgICAvLw0KIC8vICAgICAg
ICAgICAgICAgIC8vfQ0KLS8vICAgICAgICAgICAgICAgICAgICANCisvLw0KIC8vICAgICAgICAg
ICAgfQ0KIC8vICAgICAgICAgICAgZWxzZSB7DQotLy8gICAgICAgICAgICAgICAgTE9HLndhcm4o
IlBHTUwgc3RvcmVkIHBhdGhpdGVtIGNsYXNzIG5hbWUgZG9lcyBub3QgIg0KKy8vICAgICAgICAg
ICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIlBHTUwgc3RvcmVkIHBhdGhpdGVtIGNsYXNz
IG5hbWUgZG9lcyBub3QgIg0KIC8vICAgICAgICAgICAgICAgICAgICAgICAgKyAibWF0Y2ggdGhl
IGNsYXNzIG5hbWUgb24gdGhlIGRpYWdyYW0uIg0KIC8vICAgICAgICAgICAgICAgICAgICAgICAg
KyAiTGFiZWwgcG9zaXRpb24gd2lsbCByZXZlcnQgdG8gZGVmYXVsdHMuIik7DQogLy8gICAgICAg
ICAgICB9DQogLy8gICAgICAgIH0NCiAvLyAgICB9DQogLy99DQotLy8gICAgDQorLy8NCiAvL3N1
cGVyLmVuZEVsZW1lbnQodXJpLCBsb2NhbG5hbWUsIHFuYW1lKTsNCiAvL30NCg0KTW9kaWZpZWQ6
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvUHJvZmls
ZUNvbmZpZ3VyYXRpb25GaWxlUGVyc2lzdGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGln
cmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Qcm9maWxlQ29uZmlndXJhdGlvbkZpbGVQZXJzaXN0ZXIu
amF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9w
ZXJzaXN0ZW5jZS9Qcm9maWxlQ29uZmlndXJhdGlvbkZpbGVQZXJzaXN0ZXIuamF2YQkob3JpZ2lu
YWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5j
ZS9Qcm9maWxlQ29uZmlndXJhdGlvbkZpbGVQZXJzaXN0ZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2
OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICog
Q29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy
aWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlw
c2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJp
YnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNTEsOCArNTEsOSBAQA0KIGltcG9ydCBq
YXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCiBpbXBv
cnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2lt
cG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9n
NGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5hcGkuQXJnbzsNCiBp
bXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uaGVscGVycy5BcHBsaWNhdGlvblZlcnNpb247
DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsNCkBAIC03
NSw5ICs3Niw5IEBADQogICogQGF1dGhvciBtYXVyZWxpbzEyMzQNCiAgKi8NCiBwdWJsaWMgY2xh
c3MgUHJvZmlsZUNvbmZpZ3VyYXRpb25GaWxlUGVyc2lzdGVyIGV4dGVuZHMgTWVtYmVyRmlsZVBl
cnNpc3RlciB7DQotICAgIA0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0g
DQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFByb2ZpbGVDb25maWd1cmF0aW9uRmlsZVBlcnNp
c3Rlci5jbGFzcyk7DQorDQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0K
KyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihQcm9maWxlQ29uZmlndXJhdGlvbkZpbGVQZXJzaXN0
ZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3Vt
bC5wZXJzaXN0ZW5jZS5NZW1iZXJGaWxlUGVyc2lzdGVyI2dldE1haW5UYWcoKQ0KQEAgLTkwLDE0
ICs5MSwxNCBAQA0KICAgICAgICAgdGhyb3dzIE9wZW5FeGNlcHRpb24gew0KICAgICAgICAgbG9h
ZChwcm9qZWN0LCBuZXcgSW5wdXRTb3VyY2UoaW5wdXRTdHJlYW0pKTsNCiAgICAgfQ0KLSAgICAN
CisNCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5wZXJzaXN0ZW5jZS5NZW1iZXJG
aWxlUGVyc2lzdGVyI2xvYWQob3JnLmFyZ291bWwua2VybmVsLlByb2plY3QsIGphdmEuaW8uSW5w
dXRTdHJlYW0pDQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBsb2FkKFByb2plY3QgcHJvamVj
dCwgSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UpDQogICAgICAgICB0aHJvd3MgT3BlbkV4Y2VwdGlv
biB7DQogICAgICAgICB0cnkgew0KLSAgICAgICAgICAgIFByb2ZpbGVDb25maWd1cmF0aW9uUGFy
c2VyIHBhcnNlciA9IA0KKyAgICAgICAgICAgIFByb2ZpbGVDb25maWd1cmF0aW9uUGFyc2VyIHBh
cnNlciA9DQogICAgICAgICAgICAgICAgIG5ldyBQcm9maWxlQ29uZmlndXJhdGlvblBhcnNlcigp
Ow0KICAgICAgICAgICAgIHBhcnNlci5wYXJzZShpbnB1dFNvdXJjZSk7DQogICAgICAgICAgICAg
Q29sbGVjdGlvbjxQcm9maWxlPiBwcm9maWxlcyA9IHBhcnNlci5nZXRQcm9maWxlcygpOw0KQEAg
LTEwNyw3ICsxMDgsNyBAQA0KICAgICAgICAgICAgICAgICBwcm9maWxlcy5hZGRBbGwobG9hZFVu
cmVzb2x2ZWQodW5yZXNvbHZlZCkpOw0KICAgICAgICAgICAgIH0NCiANCi0gICAgICAgICAgICBQ
cm9maWxlQ29uZmlndXJhdGlvbiBwYyA9IG5ldyBQcm9maWxlQ29uZmlndXJhdGlvbihwcm9qZWN0
LCANCisgICAgICAgICAgICBQcm9maWxlQ29uZmlndXJhdGlvbiBwYyA9IG5ldyBQcm9maWxlQ29u
ZmlndXJhdGlvbihwcm9qZWN0LA0KICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXMpOw0KICAg
ICAgICAgICAgIHByb2plY3Quc2V0UHJvZmlsZUNvbmZpZ3VyYXRpb24ocGMpOw0KICAgICAgICAg
fSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCkBAIC0xMjQsMTIgKzEyNSwxMiBAQA0KICAgICAgKiBw
cm9maWxlIGlzbid0IGZvdW5kIGJ5IHRoZSBwcm9maWxlIG1hbmFnZXIuDQogICAgICAqIDxwPg0K
ICAgICAgKiBUT0RPOiB3b3JrIGluIHByb2dyZXNzLCBzZWUgaXNzdWUgNTAzOQ0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogQHBhcmFtIHVucmVzb2x2ZWQgY29sbGVjdGlvbiBvZiB1bnJlc29s
dmVkIGZpbGVuYW1lcyBmcm9tIHRoZSBwYXJzZXINCiAgICAgICogQHJldHVybiBjb2xsZWN0aW9u
IG9mIHJlc29sdmVkIHByb2ZpbGVzDQogICAgICAqLw0KICAgICBwcml2YXRlIENvbGxlY3Rpb248
UHJvZmlsZT4gbG9hZFVucmVzb2x2ZWQoQ29sbGVjdGlvbjxTdHJpbmc+IHVucmVzb2x2ZWQpIHsN
Ci0gICAgICAgIENvbGxlY3Rpb248UHJvZmlsZT4gcHJvZmlsZXMgPSBuZXcgQXJyYXlMaXN0PFBy
b2ZpbGU+KCk7ICAgICAgICANCisgICAgICAgIENvbGxlY3Rpb248UHJvZmlsZT4gcHJvZmlsZXMg
PSBuZXcgQXJyYXlMaXN0PFByb2ZpbGU+KCk7DQogICAgICAgICBQcm9maWxlTWFuYWdlciBwcm9m
aWxlTWFuYWdlciA9IFByb2ZpbGVGYWNhZGUuZ2V0TWFuYWdlcigpOw0KICAgICAgICAgZm9yIChT
dHJpbmcgZmlsZW5hbWUgOiB1bnJlc29sdmVkKSB7DQogICAgICAgICAgICAgLy8gVE9ETzogd29y
ayBpbiBwcm9ncmVzcywgc2VlIGlzc3VlIDUwMzkNCkBAIC0xNDMsMTIgKzE0NCwxMiBAQA0KICAg
ICB9DQogDQogICAgIC8qKg0KLSAgICAgKiBSZWdpc3RlciBhIHVzZXIgZGVmaW5lZCBwcm9maWxl
IGluIHRoZSBwcm9maWxlTWFuYWdlciwgdXNpbmcgdGhlIGJhY2t1cCANCisgICAgICogUmVnaXN0
ZXIgYSB1c2VyIGRlZmluZWQgcHJvZmlsZSBpbiB0aGUgcHJvZmlsZU1hbmFnZXIsIHVzaW5nIHRo
ZSBiYWNrdXANCiAgICAgICogWE1JIGZpbGUgZnJvbSB0aGUgcHJvamVjdCBiZWluZyBsb2FkZWQu
DQogICAgICAqIDxwPg0KICAgICAgKiA8ZW0+Tk9URTo8L2VtPiBUaGlzIGhhcyB0aGUgc2lkZSBl
ZmZlY3Qgb2YgcGVybWFuZW50bHkgcmVnaXN0ZXJpbmcgdGhlDQogICAgICAqIHByb2ZpbGUgd2hp
Y2ggbWF5IG5vdCBiZSB3aGF0IHRoZSB1c2VyIHdhbnRzLg0KLSAgICAgKiANCisgICAgICoNCiAg
ICAgICogQHBhcmFtIGZpbGVOYW1lIG5hbWUgb2Ygb3JpZ2luYWwgWE1JIGZpbGUgdGhhdCB0aGUg
YXV0aG9yIG9mIHRoZSBwcm9qZWN0DQogICAgICAqICAgICAgICAgICAgICAgIHVzZWQgd2hlbiBj
cmVhdGluZyB0aGUgVXNlckRlZmluZWRQcm9maWxlLg0KICAgICAgKiBAcGFyYW0geG1pIHRoZSBj
b250ZW50cyBvZiB0aGUgWE1JIGZpbGUuDQpAQCAtMTYwLDEyICsxNjEsMTUgQEANCiAgICAgICAg
IEZpbGUgcHJvZmlsZXNEaXJlY3RvcnkgPSBnZXRQcm9maWxlc0RpcmVjdG9yeShwcm9maWxlTWFu
YWdlcik7DQogICAgICAgICBGaWxlIHByb2ZpbGVGaWxlID0gbmV3IEZpbGUocHJvZmlsZXNEaXJl
Y3RvcnksIGZpbGVOYW1lKTsNCiAgICAgICAgIE91dHB1dFN0cmVhbVdyaXRlciB3cml0ZXIgPSBu
ZXcgT3V0cHV0U3RyZWFtV3JpdGVyKA0KLSAgICAgICAgICAgICAgICBuZXcgRmlsZU91dHB1dFN0
cmVhbShwcm9maWxlRmlsZSksIA0KKyAgICAgICAgICAgICAgICBuZXcgRmlsZU91dHB1dFN0cmVh
bShwcm9maWxlRmlsZSksDQogICAgICAgICAgICAgICAgIEFyZ28uZ2V0RW5jb2RpbmcoKSk7DQog
ICAgICAgICB3cml0ZXIud3JpdGUoeG1pLnRvU3RyaW5nKCkpOw0KICAgICAgICAgd3JpdGVyLmNs
b3NlKCk7DQotICAgICAgICBMT0cuaW5mbygiV3JvdGUgdXNlciBkZWZpbmVkIHByb2ZpbGUgXCIi
ICsgcHJvZmlsZUZpbGUgDQotICAgICAgICAgICAgKyAiXCIsIHdpdGggc2l6ZSAiICsgeG1pLmxl
bmd0aCgpICsgIi4iKTsNCisNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywNCisgICAgICAg
ICAgICAgICAgIldyb3RlIHVzZXIgZGVmaW5lZCBwcm9maWxlIFwiezB9XCIsIHdpdGggc2l6ZSB7
MX0uIiwNCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtde3Byb2ZpbGVGaWxlLCB4bWkubGVu
Z3RoKCl9KTsNCisNCiAgICAgICAgIGlmIChpc1NvbWVQcm9maWxlRGlyZWN0b3J5Q29uZmlndXJl
ZChwcm9maWxlTWFuYWdlcikpIHsNCiAgICAgICAgICAgICBwcm9maWxlTWFuYWdlci5yZWZyZXNo
UmVnaXN0ZXJlZFByb2ZpbGVzKCk7DQogICAgICAgICB9IGVsc2Ugew0KQEAgLTE3Nyw3ICsxODEs
NyBAQA0KIA0KICAgICBwcml2YXRlIHN0YXRpYyBGaWxlIGdldFByb2ZpbGVzRGlyZWN0b3J5KFBy
b2ZpbGVNYW5hZ2VyIHByb2ZpbGVNYW5hZ2VyKSB7DQogICAgICAgICBpZiAoaXNTb21lUHJvZmls
ZURpcmVjdG9yeUNvbmZpZ3VyZWQocHJvZmlsZU1hbmFnZXIpKSB7DQotICAgICAgICAgICAgTGlz
dDxTdHJpbmc+IGRpcmVjdG9yaWVzID0gDQorICAgICAgICAgICAgTGlzdDxTdHJpbmc+IGRpcmVj
dG9yaWVzID0NCiAgICAgICAgICAgICAgICAgcHJvZmlsZU1hbmFnZXIuZ2V0U2VhcmNoUGF0aERp
cmVjdG9yaWVzKCk7DQogICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlKGRpcmVjdG9yaWVzLmdl
dCgwKSk7DQogICAgICAgICB9IGVsc2Ugew0KQEAgLTE5OCw3ICsyMDIsNyBAQA0KICAgICAgKi8N
CiAgICAgcHVibGljIHZvaWQgc2F2ZShQcm9qZWN0TWVtYmVyIG1lbWJlciwgT3V0cHV0U3RyZWFt
IHN0cmVhbSkNCiAJdGhyb3dzIFNhdmVFeGNlcHRpb24gew0KLQkNCisNCiAgICAgICAgIFByaW50
V3JpdGVyIHc7DQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIHcgPSBuZXcgUHJpbnRXcml0
ZXIobmV3IE91dHB1dFN0cmVhbVdyaXRlcihzdHJlYW0sICJVVEYtOCIpKTsNCkBAIC0yMTIsNyAr
MjE2LDcgQEANCiANCiAgICAgcHJpdmF0ZSB2b2lkIHNhdmVQcm9qZWN0TWVtYmVyKFByb2plY3RN
ZW1iZXIgbWVtYmVyLCBQcmludFdyaXRlciB3KQ0KIAl0aHJvd3MgU2F2ZUV4Y2VwdGlvbiB7DQot
CQ0KKw0KICAgICAgICAgdHJ5IHsNCiAJICAgIGlmIChtZW1iZXIgaW5zdGFuY2VvZiBQcm9maWxl
Q29uZmlndXJhdGlvbikgew0KIAkJUHJvZmlsZUNvbmZpZ3VyYXRpb24gcGMgPSAoUHJvZmlsZUNv
bmZpZ3VyYXRpb24pIG1lbWJlcjsNCkBAIC0yMjcsNyArMjMxLDcgQEANCiANCiAJCWZvciAoUHJv
ZmlsZSBwcm9maWxlIDogcGMuZ2V0UHJvZmlsZXMoKSkgew0KICAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGUgaW5zdGFuY2VvZiBVc2VyRGVmaW5lZFByb2ZpbGUpIHsNCi0gICAgICAgICAg
ICAgICAgICAgICAgICBVc2VyRGVmaW5lZFByb2ZpbGUgdXByb2ZpbGUgPSANCisgICAgICAgICAg
ICAgICAgICAgICAgICBVc2VyRGVmaW5lZFByb2ZpbGUgdXByb2ZpbGUgPQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoVXNlckRlZmluZWRQcm9maWxlKSBwcm9maWxlOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgIHcucHJpbnRsbigiXHRcdDx1c2VyRGVmaW5lZD4iKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICB3LnByaW50bG4oIlx0XHRcdDxmaWxlbmFtZT4iDQpAQCAtMjU0LDkg
KzI1OCw5IEBADQogCX0NCiAgICAgfQ0KIA0KLSAgICBwcml2YXRlIHZvaWQgcHJpbnRNb2RlbFhN
SShQcmludFdyaXRlciB3LCBDb2xsZWN0aW9uIHByb2ZpbGVNb2RlbHMpIA0KKyAgICBwcml2YXRl
IHZvaWQgcHJpbnRNb2RlbFhNSShQcmludFdyaXRlciB3LCBDb2xsZWN0aW9uIHByb2ZpbGVNb2Rl
bHMpDQogICAgICAgICB0aHJvd3MgVW1sRXhjZXB0aW9uIHsNCi0gICAgICAgIA0KKw0KICAgICAg
ICAgLy8gVE9ETzogV2h5IGlzIHRoaXMgbm90IGV4ZWN1dGVkPyAgUmVtb3ZlIGlmIG5vdCBuZWVk
ZWQgLSB0Zm0NCiAgICAgICAgIGlmICh0cnVlKSB7DQogICAgICAgICAgICAgcmV0dXJuOw0KQEAg
LTI2NCw4ICsyNjgsOCBAQA0KIA0KICAgICAgICAgU3RyaW5nV3JpdGVyIG15V3JpdGVyID0gbmV3
IFN0cmluZ1dyaXRlcigpOw0KICAgICAgICAgZm9yIChPYmplY3QgbW9kZWwgOiBwcm9maWxlTW9k
ZWxzKSB7DQotICAgICAgICAgICAgWG1pV3JpdGVyIHhtaVdyaXRlciA9IE1vZGVsLmdldFhtaVdy
aXRlcihtb2RlbCwgDQotICAgICAgICAgICAgICAgIChPdXRwdXRTdHJlYW0pIG51bGwsIC8vbXlX
cml0ZXIsIA0KKyAgICAgICAgICAgIFhtaVdyaXRlciB4bWlXcml0ZXIgPSBNb2RlbC5nZXRYbWlX
cml0ZXIobW9kZWwsDQorICAgICAgICAgICAgICAgIChPdXRwdXRTdHJlYW0pIG51bGwsIC8vbXlX
cml0ZXIsDQogICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uVmVyc2lvbi5nZXRWZXJzaW9uKCkg
KyAiKCINCiAgICAgICAgICAgICAgICAgICAgICsgVW1sRmlsZVBlcnNpc3Rlci5QRVJTSVNURU5D
RV9WRVJTSU9OICsgIikiKTsNCiAgICAgICAgICAgICB4bWlXcml0ZXIud3JpdGUoKTsNCkBAIC0y
ODAsMjAgKzI4NCwyMCBAQA0KICAgICBwdWJsaWMgdm9pZCBsb2FkKFByb2plY3QgcHJvamVjdCwg
VVJMIHVybCkgdGhyb3dzIE9wZW5FeGNlcHRpb24gew0KICAgICAgICAgbG9hZChwcm9qZWN0LCBu
ZXcgSW5wdXRTb3VyY2UodXJsLnRvRXh0ZXJuYWxGb3JtKCkpKTsNCiAgICAgfQ0KLSAgICANCisN
CiB9DQogDQogLyoqDQogICogUGFyc2VyIGZvciBQcm9maWxlIENvbmZpZ3VyYXRpb24uDQotICog
DQorICoNCiAgKiBAYXV0aG9yIFRvbSBNb3JyaXMgPHRmbW9ycmlzQGdtYWlsLmNvbT4NCiAgKi8N
CiBjbGFzcyBQcm9maWxlQ29uZmlndXJhdGlvblBhcnNlciBleHRlbmRzIFNBWFBhcnNlckJhc2Ug
ew0KIA0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyDQotICAg
ICAgICAgICAgLmdldExvZ2dlcihQcm9maWxlQ29uZmlndXJhdGlvblBhcnNlci5jbGFzcyk7DQor
ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdl
dExvZ2dlcihQcm9maWxlQ29uZmlndXJhdGlvblBhcnNlci5jbGFzcy5nZXROYW1lKCkpOw0KIA0K
LSAgICBwcml2YXRlIFByb2ZpbGVDb25maWd1cmF0aW9uVG9rZW5UYWJsZSB0b2tlbnMgPSANCisg
ICAgcHJpdmF0ZSBQcm9maWxlQ29uZmlndXJhdGlvblRva2VuVGFibGUgdG9rZW5zID0NCiAgICAg
ICAgIG5ldyBQcm9maWxlQ29uZmlndXJhdGlvblRva2VuVGFibGUoKTsNCiANCiAgICAgcHJpdmF0
ZSBQcm9maWxlIHByb2ZpbGU7DQpAQCAtMzQyLDE3ICszNDYsMTcgQEANCiAgICAgICAgICAgICAg
ICAgYnJlYWs7DQogDQogICAgICAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICAgICAgTE9H
Lndhcm4oIldBUk5JTkc6IHVua25vd24gdGFnOiIgKyBlLmdldE5hbWUoKSk7DQorICAgICAgICAg
ICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIldBUk5JTkc6IHVua25vd24gdGFnOiIgKyBl
LmdldE5hbWUoKSk7DQogICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0NCiAg
ICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgew0KLSAgICAgICAgICAgIExPRy5lcnJvcigi
RXhjZXB0aW9uIGluIHN0YXJ0ZWxlbWVudCIsIGV4KTsNCisgICAgICAgICAgICBMT0cubG9nKExl
dmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiBpbiBzdGFydGVsZW1lbnQiLCBleCk7DQogICAgICAgICB9
DQogICAgIH0NCiANCiAgICAgLyoqDQogICAgICAqIENhbGxlZCBieSB0aGUgWE1MIGltcGxlbWVu
dGF0aW9uIHRvIHNpZ25hbCB0aGUgZW5kIG9mIGFuIFhNTCBlbnRpdHkuDQotICAgICAqIA0KKyAg
ICAgKg0KICAgICAgKiBAcGFyYW0gZSBUaGUgWE1MIGVudGl0eSB0aGF0IGVuZHMuDQogICAgICAq
IEB0aHJvd3MgU0FYRXhjZXB0aW9uIG9uIGFueSBlcnJvcg0KICAgICAgKi8NCkBAIC0zNzgsNyAr
MzgyLDggQEANCiAgICAgICAgICAgICAgICAgYnJlYWs7DQogDQogICAgICAgICAgICAgZGVmYXVs
dDoNCi0gICAgICAgICAgICAgICAgTE9HLndhcm4oIldBUk5JTkc6IHVua25vd24gZW5kIHRhZzoi
ICsgZS5nZXROYW1lKCkpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcs
DQorICAgICAgICAgICAgICAgICAgICAgICAgIldBUk5JTkc6IHVua25vd24gZW5kIHRhZzoiICsg
ZS5nZXROYW1lKCkpOw0KICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICB9DQog
ICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsNCkBAIC0zODgsNyArMzkzLDcgQEANCiAN
CiAgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUHJvZmlsZUVuZChYTUxFbGVtZW50IGUpIHsNCiAg
ICAgICAgIGlmIChwcm9maWxlcy5pc0VtcHR5KCkpIHsNCi0gICAgICAgICAgICBMT0cud2Fybigi
Tm8gcHJvZmlsZXMgZGVmaW5lZCIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklO
RywgIk5vIHByb2ZpbGVzIGRlZmluZWQiKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KQEAgLTM5
Nyw5ICs0MDIsOSBAQA0KICAgICAgICAgcHJvZmlsZSA9IGxvb2t1cFByb2ZpbGUobmFtZSk7DQog
ICAgICAgICBpZiAocHJvZmlsZSAhPSBudWxsKSB7DQogICAgICAgICAgICAgcHJvZmlsZXMuYWRk
KHByb2ZpbGUpOw0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygiRm91bmQgcGx1Z2luIHByb2ZpbGUg
IiArIG5hbWUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIkZvdW5kIHBsdWdp
biBwcm9maWxlIHswfSIsIG5hbWUpOw0KICAgICAgICAgfSBlbHNlIHsNCi0gICAgICAgICAgICBM
T0cuZXJyb3IoIlVuYWJsZWQgdG8gZmluZCBwbHVnaW4gcHJvZmlsZSAtICIgKyBuYW1lKTsNCisg
ICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIlVuYWJsZWQgdG8gZmluZCBwbHVnaW4g
cHJvZmlsZSAtIHswfSIsIG5hbWUpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpAQCAtNDI1LDcg
KzQzMCw4IEBADQogICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVVzZXJEZWZpbmVkRW5kKFhNTEVs
ZW1lbnQgZSkgew0KICAgICAgICAgLy8gPG1vZGVsPiBpcyBub3QgdXNlZCBpbiBjdXJyZW50IGlt
cGxlbWVudGF0aW9uDQogICAgICAgICBpZiAoZmlsZW5hbWUgPT0gbnVsbCAvKiB8fCBtb2RlbCA9
PSBudWxsICovKSB7DQotICAgICAgICAgICAgTE9HLmVycm9yKCJHb3QgYmFkbHkgZm9ybWVkIHVz
ZXIgZGVmaW5lZCBwcm9maWxlIGVudHJ5ICIgKyBlKTsNCisgICAgICAgICAgICBMT0cubG9nKExl
dmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICJHb3QgYmFkbHkgZm9ybWVkIHVzZXIg
ZGVmaW5lZCBwcm9maWxlIGVudHJ5ICIgKyBlKTsNCiAgICAgICAgIH0NCiAgICAgICAgIHByb2Zp
bGUgPSBnZXRNYXRjaGluZ1VzZXJEZWZpbmVkUHJvZmlsZShmaWxlbmFtZSwgUHJvZmlsZUZhY2Fk
ZQ0KICAgICAgICAgICAgICAgICAuZ2V0TWFuYWdlcigpKTsNCkBAIC00MzQsMTcgKzQ0MCwxOCBA
QA0KICAgICAgICAgICAgIHVucmVzb2x2ZWRGaWxlbmFtZXMuYWRkKGZpbGVuYW1lKTsNCiAgICAg
ICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgcHJvZmlsZXMuYWRkKHByb2ZpbGUpOw0KLSAgICAg
ICAgICAgIExPRy5kZWJ1ZygiTG9hZGVkIHVzZXIgZGVmaW5lZCBwcm9maWxlIC0gZmlsZW5hbWUg
PSAiICsgZmlsZW5hbWUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwNCisgICAg
ICAgICAgICAgICAgICAgICJMb2FkZWQgdXNlciBkZWZpbmVkIHByb2ZpbGUgLSBmaWxlbmFtZSA9
IHswfSIsIGZpbGVuYW1lKTsNCiAgICAgICAgIH0NCiANCiAgICAgfQ0KIA0KICAgICBwcml2YXRl
IHN0YXRpYyBQcm9maWxlIGdldE1hdGNoaW5nVXNlckRlZmluZWRQcm9maWxlKFN0cmluZyBmaWxl
TmFtZSwNCiAgICAgICAgICAgICBQcm9maWxlTWFuYWdlciBwcm9maWxlTWFuYWdlcikgew0KLSAg
ICAgICAgZm9yIChQcm9maWxlIGNhbmRpZGF0ZVByb2ZpbGUgDQorICAgICAgICBmb3IgKFByb2Zp
bGUgY2FuZGlkYXRlUHJvZmlsZQ0KICAgICAgICAgICAgICAgICA6IHByb2ZpbGVNYW5hZ2VyLmdl
dFJlZ2lzdGVyZWRQcm9maWxlcygpKSB7DQogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVByb2Zp
bGUgaW5zdGFuY2VvZiBVc2VyRGVmaW5lZFByb2ZpbGUpIHsNCi0gICAgICAgICAgICAgICAgVXNl
ckRlZmluZWRQcm9maWxlIHVzZXJQcm9maWxlID0gDQorICAgICAgICAgICAgICAgIFVzZXJEZWZp
bmVkUHJvZmlsZSB1c2VyUHJvZmlsZSA9DQogICAgICAgICAgICAgICAgICAgICAoVXNlckRlZmlu
ZWRQcm9maWxlKSBjYW5kaWRhdGVQcm9maWxlOw0KICAgICAgICAgICAgICAgICBpZiAodXNlclBy
b2ZpbGUuZ2V0TW9kZWxGaWxlKCkgIT0gbnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgICYm
IGZpbGVOYW1lDQpAQCAtNDU4LDE3ICs0NjUsMTcgQEANCiANCiAgICAgcHJvdGVjdGVkIHZvaWQg
aGFuZGxlRmlsZW5hbWVFbmQoWE1MRWxlbWVudCBlKSB7DQogICAgICAgICBmaWxlbmFtZSA9IGUu
Z2V0VGV4dCgpLnRyaW0oKTsNCi0gICAgICAgIExPRy5kZWJ1ZygiR290IGZpbGVuYW1lID0gIiAr
IGZpbGVuYW1lKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIkdvdCBmaWxlbmFtZSA9
IHswfSIsIGZpbGVuYW1lKTsNCiAgICAgfQ0KIA0KICAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVN
b2RlbEVuZChYTUxFbGVtZW50IGUpIHsNCiAgICAgICAgIG1vZGVsID0gZS5nZXRUZXh0KCkudHJp
bSgpOw0KLSAgICAgICAgTE9HLmRlYnVnKCJHb3QgbW9kZWwgPSAiICsgbW9kZWwpOw0KKyAgICAg
ICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiR290IG1vZGVsID0gezB9IiwgbW9kZWwpOw0KICAgICB9
DQogDQogICAgIC8qKg0KICAgICAgKiBUb2tlbiBUYWJsZSBmb3IgUHJvZmlsZSBDb25maWd1cmF0
aW9uIHBhcnNlci4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBhdXRob3IgVG9tIE1vcnJp
cw0KICAgICAgKi8NCiAgICAgY2xhc3MgUHJvZmlsZUNvbmZpZ3VyYXRpb25Ub2tlblRhYmxlIGV4
dGVuZHMgWE1MVG9rZW5UYWJsZUJhc2Ugew0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9TQVhQYXJzZXJCYXNlLmphdmENClVybDog
aHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9TQVhQYXJzZXJCYXNlLmph
dmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVy
c2lzdGVuY2UvU0FYUGFyc2VyQmFzZS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL1NBWFBhcnNlckJhc2UuamF2YQky
MDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0g
c2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2Vl
IGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj
b21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFu
aWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDMsMTIgKzQz
LDEzIEBADQogaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07DQogaW1wb3J0IGphdmEuaW8uUmVh
ZGVyOw0KIGltcG9ydCBqYXZhLm5ldC5VUkw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxl
dmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4
LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247DQogaW1wb3J0IGphdmF4
LnhtbC5wYXJzZXJzLlNBWFBhcnNlcjsNCiBpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuU0FYUGFy
c2VyRmFjdG9yeTsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0
IG9yZy54bWwuc2F4LkF0dHJpYnV0ZXM7DQogaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNl
Ow0KIGltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247DQpAQCAtNjIsNyArNjMsOCBAQA0K
ICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0aWMg
ZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoU0FYUGFyc2VyQmFzZS5jbGFzcyk7
DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2Vy
LmdldExvZ2dlcihTQVhQYXJzZXJCYXNlLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIC8qKg0K
ICAgICAgKiBUaGUgY29uc3RydWN0b3IuDQpAQCAtMTM0LDcgKzEzNiw3IEBADQogICAgIHB1Ymxp
YyB2b2lkIHBhcnNlKFJlYWRlciByZWFkZXIpIHRocm93cyBTQVhFeGNlcHRpb24gew0KICAgICAg
ICAgcGFyc2UobmV3IElucHV0U291cmNlKHJlYWRlcikpOw0KICAgICB9DQotICAgIA0KKw0KICAg
ICAvKioNCiAgICAgICogQHBhcmFtIGlucHV0IHRoZSBJbnB1dFNvdXJjZSB0byByZWFkDQogICAg
ICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uIHdoZW4gcGFyc2luZyB4bWwNCkBAIC0xNjUsOCArMTY3
LDggQEANCiAgICAgICAgIH0gY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZSkg
ew0KICAgICAgICAgICAgIHRocm93IG5ldyBTQVhFeGNlcHRpb24oZSk7DQogICAgICAgICB9DQot
ICAgICAgICBpZiAoc3RhdHMgJiYgTE9HLmlzSW5mb0VuYWJsZWQoKSkgew0KLSAgICAgICAgICAg
IExPRy5pbmZvKCJFbGFwc2VkIHRpbWU6ICIgKyAoZW5kIC0gc3RhcnQpICsgIiBtcyIpOw0KKyAg
ICAgICAgaWYgKHN0YXRzKSB7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiRWxh
cHNlZCB0aW1lOiB7MH0gbXMiLCAoZW5kIC0gc3RhcnQpKTsNCiAgICAgICAgIH0NCiAgICAgfQ0K
IA0KQEAgLTIwNSw3ICsyMDcsNyBAQA0KIA0KICAgICAgICAgICAgIFhNTEVsZW1lbnQgZWxlbWVu
dCA9IGNyZWF0ZVhtbEVsZW1lbnQobmFtZSwgYXR0cyk7DQogDQotICAgICAgICAgICAgaWYgKExP
Ry5pc0RlYnVnRW5hYmxlZCgpKSB7DQorICAgICAgICAgICAgaWYgKExPRy5pc0xvZ2dhYmxlKExl
dmVsLkZJTkUpKSB7DQogICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3Ry
aW5nQnVmZmVyKCk7DQogICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlNUQVJUOiAiKS5hcHBl
bmQobmFtZSkuYXBwZW5kKCcgJykuYXBwZW5kKGVsZW1lbnQpOw0KICAgICAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGF0dHMuZ2V0TGVuZ3RoKCk7IGkrKykgew0KQEAgLTIxNCw3ICsy
MTYsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCcgJykNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoYXR0cy5nZXRWYWx1ZShpKSk7DQog
ICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgTE9HLmRlYnVnKGJ1Zi50b1N0cmlu
ZygpKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiezB9IiwgYnVmKTsN
CiAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgZWxlbWVudHNbbkVsZW1lbnRzKytdID0g
ZWxlbWVudDsNCkBAIC0yNDgsNyArMjUwLDcgQEANCiAgICAgICAgIHRocm93cyBTQVhFeGNlcHRp
b24gew0KICAgICAgICAgaWYgKGlzRWxlbWVudE9mSW50ZXJlc3QobmFtZSkpIHsNCiAgICAgICAg
ICAgICBYTUxFbGVtZW50IGUgPSBlbGVtZW50c1stLW5FbGVtZW50c107DQotICAgICAgICAgICAg
aWYgKExPRy5pc0RlYnVnRW5hYmxlZCgpKSB7DQorICAgICAgICAgICAgaWYgKExPRy5pc0xvZ2dh
YmxlKExldmVsLkZJTkUpKSB7DQogICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBu
ZXcgU3RyaW5nQnVmZmVyKCk7DQogICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIkVORDogIiAr
IGUuZ2V0TmFtZSgpICsgIiBbIg0KICAgICAgICAgICAgIAkgICAgICAgKyBlLmdldFRleHQoKSAr
ICJdICIgKyBlICsgIlxuIik7DQpAQCAtMjU2LDcgKzI1OCw3IEBADQogICAgICAgICAgICAgICAg
ICAgICBidWYuYXBwZW5kKCIgICBBVFQ6ICIgKyBlLmdldEF0dHJpYnV0ZU5hbWUoaSkgKyAiICIN
CiAgICAgICAgICAgICAgICAgICAgIAkgICArIGUuZ2V0QXR0cmlidXRlVmFsdWUoaSkgKyAiXG4i
KTsNCiAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICBMT0cuZGVidWcoYnVmKTsN
CisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiezB9IiwgYnVmKTsNCiAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgaGFuZGxlRW5kRWxlbWVudChlKTsNCiAgICAgICAgIH0N
CkBAIC0yNzUsMTggKzI3NywxOCBAQA0KIA0KICAgICAvLyBUT0RPOiByZW1vdmUgd2hlbiBjb2Rl
IGJlbG93IGluIGNoYXJhY3RlcnMoKSBpcyByZW1vdmVkDQogLy8gICAgcHJpdmF0ZSBzdGF0aWMg
ZmluYWwgU3RyaW5nICAgIFJFVFVSTlNUUklORyAgPSAiXG4gICAgICAiOw0KLSAgICANCisNCiAg
ICAgLyoNCiAgICAgICogQHNlZSBvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciNjaGFyYWN0ZXJz
KGNoYXJbXSwgaW50LCBpbnQpDQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBjaGFyYWN0ZXJz
KGNoYXJbXSBjaCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKQ0KICAgICAgICAgdGhyb3dzIFNBWEV4
Y2VwdGlvbiB7DQotICAgICAgICANCisNCiAgICAgICAgIGVsZW1lbnRzW25FbGVtZW50cyAtIDFd
LmFkZFRleHQoY2gsIHN0YXJ0LCBsZW5ndGgpOw0KLSAgICAgICAgDQorDQogICAgICAgICAvLyBU
T0RPOiBSZW1vdmUgdGhpcyBvbGQgaW1wbGVtZW50YXRpb24gYWZ0ZXIgMC4yMiBpZiBpdCdzDQog
ICAgICAgICAvLyBkZW1vbnN0cmF0ZWQgdGhhdCBpdCdzIG5vdCBuZWVkZWQuIC0gdGZtDQotICAg
ICAgICANCisNCiAgICAgICAgIC8vIFdoeSBkb2VzIHRoZSB0ZXh0IGdldCBhZGRlZCB0byBBTEwg
dGhlIGVsZW1lbnRzIG9uIHRoZSBzdGFjaz8gLSB0Zm0NCiAvLyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBuRWxlbWVudHM7IGkrKykgew0KIC8vICAgICAgICAgICAgWE1MRWxlbWVudCBlID0g
ZWxlbWVudHNbaV07DQpAQCAtMzExLDcgKzMxMyw4IEBADQogICAgICAgICAgICAgSW5wdXRTb3Vy
Y2UgcyA9IG5ldyBJbnB1dFNvdXJjZSh0ZXN0SXQub3BlblN0cmVhbSgpKTsNCiAgICAgICAgICAg
ICByZXR1cm4gczsNCiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAg
ICAgTE9HLmluZm8oIk5PVEU6IENvdWxkIG5vdCBvcGVuIERURCAiICsgc3lzdGVtSWQNCisgICAg
ICAgICAgICBMT0cubG9nKExldmVsLklORk8sDQorICAgICAgICAgICAgICAgICAgICAiTk9URTog
Q291bGQgbm90IG9wZW4gRFREICIgKyBzeXN0ZW1JZA0KICAgICAgICAgICAgICAgICAgICAgKyAi
IGR1ZSB0byBleGNlcHRpb24iKTsNCiANCiAgICAgICAgICAgICBTdHJpbmcgZHRkTmFtZSA9IHN5
c3RlbUlkLnN1YnN0cmluZyhzeXN0ZW1JZC5sYXN0SW5kZXhPZignLycpICsgMSk7DQpAQCAtMzU4
LDE3ICszNjEsMTMgQEANCiAgICAgICogQHBhcmFtIGUgdGhlIGVsZW1lbnQNCiAgICAgICovDQog
ICAgIHB1YmxpYyB2b2lkIGlnbm9yZUVsZW1lbnQoWE1MRWxlbWVudCBlKSB7DQotICAgICAgICBp
ZiAoTE9HLmlzRGVidWdFbmFibGVkKCkpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIk5PVEU6
IGlnbm9yaW5nIHRhZzoiICsgZS5nZXROYW1lKCkpOw0KLSAgICAgICAgfQ0KKyAgICAgICAgTE9H
LmxvZyhMZXZlbC5GSU5FLCAiTk9URTogaWdub3JpbmcgdGFnOiB7MH0iLCBlLmdldE5hbWUoKSk7
DQogICAgIH0NCiANCiAgICAgLyoqDQogICAgICAqIEBwYXJhbSBlIHRoZSBlbGVtZW50DQogICAg
ICAqLw0KICAgICBwdWJsaWMgdm9pZCBub3RJbXBsZW1lbnRlZChYTUxFbGVtZW50IGUpIHsNCi0g
ICAgICAgIGlmIChMT0cuaXNEZWJ1Z0VuYWJsZWQoKSkgew0KLSAgICAgICAgICAgIExPRy5kZWJ1
ZygiTk9URTogZWxlbWVudCBub3QgaW1wbGVtZW50ZWQ6ICIgKyBlLmdldE5hbWUoKSk7DQotICAg
ICAgICB9DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJOT1RFOiBlbGVtZW50IG5vdCBp
bXBsZW1lbnRlZDogezB9IiwgZS5nZXROYW1lKCkpOw0KICAgICB9DQogfSAvKiBlbmQgY2xhc3Mg
U0FYUGFyc2VyQmFzZSAqLw0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Ub2RvUGFyc2VyLmphdmENClVybDogaHR0cDovL2FyZ291
bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9Ub2RvUGFyc2VyLmphdmE/dmlldz1kaWZmJnBh
dGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvVG9kb1Bh
cnNlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3BlcnNpc3RlbmNlL1RvZG9QYXJzZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4
MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJp
Z2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K
ICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVi
bGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u
LCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDEsOCArNDEsOSBAQA0KIGltcG9ydCBqYXZhLmlv
LlJlYWRlcjsNCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCiBpbXBvcnQgamF2YS51dGls
Lkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0
aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0K
IGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuRGVzaWduZXI7DQogaW1wb3J0IG9yZy5hcmdv
dW1sLmNvZ25pdGl2ZS5MaXN0U2V0Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuUmVz
b2x2ZWRDcml0aWM7DQpAQCAtNjIsNyArNjMsOCBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2Vy
Lg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dl
ci5nZXRMb2dnZXIoVG9kb1BhcnNlci5jbGFzcyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFs
IExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihUb2RvUGFyc2VyLmNsYXNz
LmdldE5hbWUoKSk7DQogDQogICAgIHByaXZhdGUgVG9kb1Rva2VuVGFibGUgdG9rZW5zID0gbmV3
IFRvZG9Ub2tlblRhYmxlKCk7DQogDQpAQCAtMTA3LDE2ICsxMDksMTYgQEANCiANCiAgICAgLyoq
DQogICAgICAqIFJlYWQgYW4gWE1MIHRvZG8gbGlzdCBhbmQgZW50ZXIgYW55IHRvZG8gaXRlbXMg
aW50byB0aGUgY3VycmVudCBkZXNpZ25lci4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBw
YXJhbSBpbnB1dFNvdXJjZSBUaGUgc3RyZWFtIGNvbnRhaW5pbmcgVG9kb0xpc3QgWE1MIGRhdGEu
DQogICAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uIG9uIGFueSBlcnJvcg0KICAgICAgKi8NCiAg
ICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHJlYWRUb2RvTGlzdCgNCiAgICAgICAgICAgICBJ
bnB1dFNvdXJjZSBpbnB1dFNvdXJjZSkgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQotICAgICAgICBM
T0cuaW5mbygiUmVhZGluZyBUb0RvIGxpc3QiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5G
TywgIlJlYWRpbmcgVG9EbyBsaXN0Iik7DQogICAgICAgICBwYXJzZShpbnB1dFNvdXJjZSk7DQog
ICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBSZWFkcyBhbiBYTUwgdG9kbyBsaXN0
IGZyb20gSW5wdXRTdHJlYW0gaXMgYW5kIGVudGVycw0KICAgICAgKiBhbnkgdG9kbyBpdGVtcyBp
bnRvIHRoZSBjdXJyZW50IGRlc2lnbmVyLg0KQEAgLTEyNyw4ICsxMjksOSBAQA0KICAgICBwdWJs
aWMgc3luY2hyb25pemVkIHZvaWQgcmVhZFRvZG9MaXN0KA0KICAgICAgICAgICAgIFJlYWRlciBp
cykgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQogDQotICAgICAgICBMT0cuaW5mbygiPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7DQotICAgICAgICBMT0cuaW5mbygiPT0g
UkVBRElORyBUTyBETyBMSVNUIik7DQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sDQorICAg
ICAgICAgICAgICAgICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIN
CisgICAgICAgICAgICAgICAgKyAiPT0gUkVBRElORyBUTyBETyBMSVNUIik7DQogICAgICAgICBw
YXJzZShpcyk7DQogICAgIH0NCiANCkBAIC0xNzMsMTEgKzE3NiwxMSBAQA0KIAkJYnJlYWs7DQog
DQogCSAgICBkZWZhdWx0Og0KLQkJTE9HLndhcm4oIldBUk5JTkc6IHVua25vd24gdGFnOiIgKyBl
LmdldE5hbWUoKSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FSTklORywgIldB
Uk5JTkc6IHVua25vd24gdGFnOiIgKyBlLmdldE5hbWUoKSk7DQogCQlicmVhazsNCiAJICAgIH0N
CiAJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7DQotCSAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiBp
biBzdGFydGVsZW1lbnQiLCBleCk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUs
ICJFeGNlcHRpb24gaW4gc3RhcnRlbGVtZW50IiwgZXgpOw0KIAl9DQogICAgIH0NCiANCkBAIC0y
MzEsOCArMjM0LDggQEANCiAgICAgICAgIAlicmVhazsNCiANCiAgICAgICAgICAgICBkZWZhdWx0
Og0KLSAgICAgICAgCUxPRy53YXJuKCJXQVJOSU5HOiB1bmtub3duIGVuZCB0YWc6Ig0KLSAgICAg
ICAgCQkgKyBlLmdldE5hbWUoKSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuV0FS
TklORywNCisgICAgICAgICAgICAgICAgICAgICAgICAiV0FSTklORzogdW5rbm93biBlbmQgdGFn
OiIgKyBlLmdldE5hbWUoKSk7DQogICAgICAgICAJYnJlYWs7DQogICAgICAgICAgICAgfQ0KICAg
ICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7DQpAQCAtNDY0LDcgKzQ2Nyw3IEBADQogICAg
ICAqIGZvciBYTUwgc2VyaWFsaXphdGlvbiBpcyBhIHdlbGwga25vd24gdGFzayAtIHRmbQ0KICAg
ICAgKiBJIGhhdmUgbmV2ZXIgdW5kZXJzdG9vZCB3aHkgdGhpcyBpcyBiZWluZyBkb25lLiBJIHRo
aW5rIHdlIHNob3VsZCByZW1vdmUNCiAgICAgICogYW55IHVzYWdlIC0gYm9iDQotICAgICAqIA0K
KyAgICAgKg0KICAgICAgKiBAcGFyYW0Jc3RyCVRoZSBTdHJpbmcgdG8gZW5jb2RlLg0KICAgICAg
KiBAcmV0dXJuCVRoZSBlbmNvZGVkIFN0cmluZy4NCiAgICAgICovDQpAQCAtNTA0LDQgKzUwNywz
IEBADQogCXJldHVybiBzYi50b1N0cmluZygpOw0KICAgICB9DQogfQ0KLQ0KDQpNb2RpZmllZDog
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9VbWxGaWxl
UGVyc2lzdGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJv
d3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0
ZW5jZS9VbWxGaWxlUGVyc2lzdGVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5
MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvVW1sRmlsZVBlcnNpc3Rlci5qYXZhCShv
cmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNp
c3RlbmNlL1VtbEZpbGVQZXJzaXN0ZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBA
IC02NSw2ICs2NSw4IEBADQogaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rp
b247DQogaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0
Ow0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxv
Z2dpbmcuTG9nZ2VyOw0KIGltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsNCiBpbXBvcnQg
amF2YS51dGlsLnJlZ2V4LlBhdHRlcm47DQogDQpAQCAtNzUsNyArNzcsNiBAQA0KIGltcG9ydCBq
YXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQ7DQogaW1wb3J0IGphdmF4Lnht
bC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVNvdXJjZTsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5s
b2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9uLmFwaS5BcmdvOw0K
IGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5oZWxwZXJzLkFwcGxpY2F0aW9uVmVyc2lv
bjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuaTE4bi5UcmFuc2xhdG9yOw0KQEAgLTkyLDcgKzkzLDcg
QEANCiANCiAvKioNCiAgKiBUbyBwZXJzaXN0IHRvIGFuZCBmcm9tIGFyZ28gKHhtbCBmaWxlKSBz
dG9yYWdlLg0KLSAqIA0KKyAqDQogICogQGF1dGhvciBCb2IgVGFybGluZw0KICAqLw0KIHB1Ymxp
YyBjbGFzcyBVbWxGaWxlUGVyc2lzdGVyIGV4dGVuZHMgQWJzdHJhY3RGaWxlUGVyc2lzdGVyIHsN
CkBAIC0xMTMsNyArMTE0LDggQEANCiAgICAgLyoqDQogICAgICAqIExvZ2dlci4NCiAgICAgICov
DQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2Vy
KFVtbEZpbGVQZXJzaXN0ZXIuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dn
ZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoVW1sRmlsZVBlcnNpc3Rlci5jbGFz
cy5nZXROYW1lKCkpOw0KIA0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJHT19U
RUUgPSAiL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL2FyZ28udGVlIjsNCiANCkBAIC0xMzksMTkg
KzE0MSwxOSBAQA0KIA0KICAgICAvKioNCiAgICAgICogU2F2ZSB0aGUgcHJvamVjdCBpbiAiLnVt
bCIgZm9ybWF0Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGZpbGUgVGhlIGZp
bGUgdG8gd3JpdGUuDQogICAgICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0IHRvIHNhdmUN
CiAgICAgICogQHRocm93cyBTYXZlRXhjZXB0aW9uIHdoZW4gYW55dGhpbmcgZ29lcyB3cm9uZw0K
ICAgICAgKiBAdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIGlmIHRoZSB0aHJlYWQgaXMgaW50
ZXJydXB0ZWQNCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBzZWUgb3JnLmFyZ291bWwucGVy
c2lzdGVuY2UuUHJvamVjdEZpbGVQZXJzaXN0ZXIjc2F2ZShvcmcuYXJnb3VtbC5rZXJuZWwuUHJv
amVjdCwNCiAgICAgICogICAgICBqYXZhLmlvLkZpbGUpDQogICAgICAqLw0KICAgICBwdWJsaWMg
dm9pZCBkb1NhdmUoUHJvamVjdCBwcm9qZWN0LCBGaWxlIGZpbGUpIHRocm93cyBTYXZlRXhjZXB0
aW9uLA0KICAgICAgICAgSW50ZXJydXB0ZWRFeGNlcHRpb24gew0KIA0KLSAgICAgICAgLyogUmV0
YWluIHRoZSBwcmV2aW91cyBwcm9qZWN0IGZpbGUgZXZlbiB3aGVuIHRoZSBzYXZlIG9wZXJhdGlv
biANCisgICAgICAgIC8qIFJldGFpbiB0aGUgcHJldmlvdXMgcHJvamVjdCBmaWxlIGV2ZW4gd2hl
biB0aGUgc2F2ZSBvcGVyYXRpb24NCiAgICAgICAgICAqIGNyYXNoZXMgaW4gdGhlIG1pZGRsZS4g
QWxzbyBjcmVhdGUgYSBiYWNrdXAgZmlsZSBhZnRlciBzYXZpbmcuICovDQogICAgICAgICBib29s
ZWFuIGRvU2FmZVNhdmVzID0gdXNlU2FmZVNhdmVzKCk7DQogDQpAQCAtMTg4LDkgKzE5MCw4IEBA
DQogICAgICAgICAgICAgcHJvZ3Jlc3NNZ3IubmV4dFBoYXNlKCk7DQogDQogICAgICAgICAgICAg
U3RyaW5nIHBhdGggPSBmaWxlLmdldFBhcmVudCgpOw0KLSAgICAgICAgICAgIGlmIChMT0cuaXNJ
bmZvRW5hYmxlZCgpKSB7DQotICAgICAgICAgICAgICAgIExPRy5pbmZvKCJEaXIgPT0iICsgcGF0
aCk7DQotICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywg
IkRpciA9PSB7MH0iLCBwYXRoKTsNCiANCiAgICAgICAgICAgICBpZiAoZG9TYWZlU2F2ZXMpIHsN
CiAgICAgICAgICAgICAgICAgLy8gaWYgc2F2ZSBkaWQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbg0K
QEAgLTIxMCw3ICsyMTEsNyBAQA0KICAgICAgICAgICAgIHByb2dyZXNzTWdyLm5leHRQaGFzZSgp
Ow0KIA0KICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cu
ZXJyb3IoIkV4Y2VwdGlvbiBvY2N1cmVkIGR1cmluZyBzYXZlIGF0dGVtcHQiLCBlKTsNCisgICAg
ICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiBvY2N1cmVkIGR1cmluZyBz
YXZlIGF0dGVtcHQiLCBlKTsNCiANCiAgICAgICAgICAgICBpZiAoZG9TYWZlU2F2ZXMpIHsNCiAg
ICAgICAgICAgICAgICAgLy8gZnJhbms6IGluIGNhc2Ugb2YgZXhjZXB0aW9uDQpAQCAtMjMxLDcg
KzIzMiw3IEBADQogDQogICAgIC8qKg0KICAgICAgKiBUaGUgLnVtbCBzYXZlIGZvcm1hdCBpcyBu
byBsb25nZXIgYXZhaWxhYmxlIHRvIHNhdmUuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiB7
QGluaGVyaXREb2N9DQogICAgICAqLw0KICAgICBAT3ZlcnJpZGUNCkBAIC0yNDEsNyArMjQyLDcg
QEANCiANCiAgICAgLyoqDQogICAgICAqIFdyaXRlIHRoZSBvdXRwdXQgZm9yIGEgcHJvamVjdCBv
biB0aGUgZ2l2ZW4gc3RyZWFtLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHBy
b2plY3QgVGhlIHByb2plY3QgdG8gb3V0cHV0Lg0KICAgICAgKiBAcGFyYW0gc3RyZWFtIFRoZSBz
dHJlYW0gdG8gd3JpdGUgdG8uDQogICAgICAqIEB0aHJvd3MgU2F2ZUV4Y2VwdGlvbiBJZiBzb21l
dGhpbmcgZ29lcyB3cm9uZy4NCkBAIC0yODIsOSArMjgzLDkgQEANCiANCiAgICAgICAgICAgICAv
LyBOb3RlIHdlIGFzc3VtZSBtZW1iZXJzIGFyZSBvcmRlcmVkIGNvcnJlY3RseSBhbHJlYWR5DQog
ICAgICAgICAgICAgZm9yIChQcm9qZWN0TWVtYmVyIHByb2plY3RNZW1iZXIgOiBwcm9qZWN0Lmdl
dE1lbWJlcnMoKSkgew0KLSAgICAgICAgICAgICAgICBpZiAoTE9HLmlzSW5mb0VuYWJsZWQoKSkg
ew0KLSAgICAgICAgICAgICAgICAgICAgTE9HLmluZm8oIlNhdmluZyBtZW1iZXIgOiAiICsgcHJv
amVjdE1lbWJlcik7DQotICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5JTkZPLCAiU2F2aW5nIG1lbWJlcjogezB9IiwgcHJvamVjdE1lbWJlcik7DQor
DQogICAgICAgICAgICAgICAgIE1lbWJlckZpbGVQZXJzaXN0ZXIgcGVyc2lzdGVyID0gZ2V0TWVt
YmVyRmlsZVBlcnNpc3Rlcihwcm9qZWN0TWVtYmVyKTsNCiAgICAgICAgICAgICAgICAgZmlsdGVy
ZWRTdHJlYW0uc3RhcnRFbnRyeSgpOw0KICAgICAgICAgICAgICAgICBwZXJzaXN0ZXIuc2F2ZShw
cm9qZWN0TWVtYmVyLCBmaWx0ZXJlZFN0cmVhbSk7DQpAQCAtMzMxLDcgKzMzMiw3IEBADQogICAg
ICAgICAgICAgLy8gUnVuIHRocm91Z2ggYW55IHN0eWxlc2hlZXQgdXBncmFkZXMNCiAgICAgICAg
ICAgICBpbnQgZmlsZVZlcnNpb24gPSBnZXRQZXJzaXN0ZW5jZVZlcnNpb25Gcm9tRmlsZShmaWxl
KTsNCiANCi0gICAgICAgICAgICBMT0cuaW5mbygiTG9hZGluZyB1bWwgZmlsZSBvZiB2ZXJzaW9u
ICIgKyBmaWxlVmVyc2lvbik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiTG9h
ZGluZyB1bWwgZmlsZSBvZiB2ZXJzaW9uIHswfSIsIGZpbGVWZXJzaW9uKTsNCiAgICAgICAgICAg
ICBpZiAoIWNoZWNrVmVyc2lvbihmaWxlVmVyc2lvbiwgZ2V0UmVsZWFzZVZlcnNpb25Gcm9tRmls
ZShmaWxlKSkpIHsNCiAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgYWJvdXQgdG8gdXBncmFk
ZSB0aGUgZmlsZSBsZXRzIHRha2UgYW4gYXJjaGl2ZQ0KICAgICAgICAgICAgICAgICAvLyBvZiBp
dCBmaXJzdC4NCkBAIC0zNDQsMTEgKzM0NSwxNCBAQA0KIA0KICAgICAgICAgICAgICAgICB3aGls
ZSAoZmlsZVZlcnNpb24gPCBQRVJTSVNURU5DRV9WRVJTSU9OKSB7DQogICAgICAgICAgICAgICAg
ICAgICArK2ZpbGVWZXJzaW9uOw0KLSAgICAgICAgICAgICAgICAgICAgTE9HLmluZm8oIlVwZ3Jh
ZGluZyB0byB2ZXJzaW9uICIgKyBmaWxlVmVyc2lvbik7DQorDQorICAgICAgICAgICAgICAgICAg
ICBMT0cubG9nKExldmVsLklORk8sICJVcGdyYWRpbmcgdG8gdmVyc2lvbiB7MH0iLCBmaWxlVmVy
c2lvbik7DQorDQogICAgICAgICAgICAgICAgICAgICBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5j
dXJyZW50VGltZU1pbGxpcygpOw0KICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IHRyYW5zZm9y
bShmaWxlLCBmaWxlVmVyc2lvbik7DQorDQogICAgICAgICAgICAgICAgICAgICBsb25nIGVuZFRp
bWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsNCi0gICAgICAgICAgICAgICAgICAgIExP
Ry5pbmZvKCJVcGdyYWRpbmcgdG9vayAiICsgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSAvIDEwMDAp
DQorICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJVcGdyYWRpbmcgdG9v
ayAiICsgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSAvIDEwMDApDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICsgIiBzZWNvbmRzIik7DQogICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc01n
ci5uZXh0UGhhc2UoKTsNCiAgICAgICAgICAgICAgICAgfQ0KQEAgLTM2NiwxMyArMzcwLDEzIEBA
DQogDQogICAgICAgICAgICAgTGlzdCBtZW1iZXJMaXN0ID0gcGFyc2VyLmdldE1lbWJlckxpc3Qo
KTsNCiANCi0gICAgICAgICAgICBMT0cuaW5mbyhtZW1iZXJMaXN0LnNpemUoKSArICIgbWVtYmVy
cyIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTyxtZW1iZXJMaXN0LnNpemUoKSAr
ICIgbWVtYmVycyIpOw0KIA0KICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWVtYmVy
TGlzdC5zaXplKCk7ICsraSkgew0KICAgICAgICAgICAgICAgICBNZW1iZXJGaWxlUGVyc2lzdGVy
IHBlcnNpc3RlciA9IGdldE1lbWJlckZpbGVQZXJzaXN0ZXIoKFN0cmluZykgbWVtYmVyTGlzdA0K
ICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoaSkpOw0KLSAgICAgICAgICAgICAgICBMT0cu
aW5mbygiTG9hZGluZyBtZW1iZXIgd2l0aCAiDQotICAgICAgICAgICAgICAgICAgICAgICAgKyBw
ZXJzaXN0ZXIuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9n
KExldmVsLklORk8sICJMb2FkaW5nIG1lbWJlciB3aXRoICIrIHBlcnNpc3Rlci5nZXRDbGFzcygp
LmdldE5hbWUoKSk7DQorDQogICAgICAgICAgICAgICAgIGlucHV0U3RyZWFtLnJlb3BlbihwZXJz
aXN0ZXIuZ2V0TWFpblRhZygpKTsNCiAgICAgICAgICAgICAgICAgLy8gVE9ETzogRG8gd2UgbmVl
ZCB0byBzZXQgdGhlIGlucHV0IGVuY29kaW5nIGhlcmU/IEl0IHdhcw0KICAgICAgICAgICAgICAg
ICAvLyBkb25lIGZvciBUb0RvIHBhcnNpbmcsIGJ1dCBub25lIG9mIHRoZSBvdGhlciBtZW1iZXIg
dHlwZXMNCkBAIC00MzUsNyArNDM5LDcgQEANCiANCiAgICAgLyoqDQogICAgICAqIFRyYW5zZm9y
bSBhIHN0cmluZyBvZiBYTUwgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIHNlcnZpY2UgcmVxdWlyZWQu
DQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gZmlsZSBUaGUgWE1MIGZpbGUgdG8g
YmUgdHJhbnNmb3JtZWQNCiAgICAgICogQHBhcmFtIHZlcnNpb24gdGhlIHZlcnNpb24gb2YgdGhl
IHBlcnNpc3RlbmNlIGZvcm1hdCB0aGUgWE1MIGlzIHRvIGJlDQogICAgICAqICAgICAgICAgICAg
dHJhbnNmb3JtZWQgdG8uDQpAQCAtNDUwLDcgKzQ1NCw4IEBADQogDQogICAgICAgICAgICAgU3Ry
aW5nIHhzbHRGaWxlTmFtZSA9IHVwZ3JhZGVGaWxlc1BhdGggKyB1cGdyYWRlRmlsZTsNCiAgICAg
ICAgICAgICBVUkwgeHNsdFVybCA9IFVtbEZpbGVQZXJzaXN0ZXIuY2xhc3MuZ2V0UmVzb3VyY2Uo
eHNsdEZpbGVOYW1lKTsNCi0gICAgICAgICAgICBMT0cuaW5mbygiUmVzb3VyY2UgaXMgIiArIHhz
bHRVcmwpOw0KKw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIlJlc291cmNlIGlz
IHswfSIsIHhzbHRVcmwpOw0KIA0KICAgICAgICAgICAgIC8vIFJlYWQgeHNsdFN0cmVhbSBpbnRv
IGEgdGVtcG9yYXJ5IGZpbGUNCiAgICAgICAgICAgICAvLyBHZXQgdXJsIGZvciB0ZW1wIGZpbGUu
DQpAQCAtNDg3LDcgKzQ5Miw3IEBADQogICAgIC8qKg0KICAgICAgKiBSZWFkIHN0cmVhbSBpbiAu
YXJnbyBmb3JtYXQgYW5kIGV4dHJhY3RzIHRoZSBwZXJzaXN0ZW5jZSB2ZXJzaW9uIG51bWJlcg0K
ICAgICAgKiBmcm9tIHRoZSByb290IHRhZy4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBw
YXJhbSBmaWxlIHRoZSBYTUwgZmlsZQ0KICAgICAgKiBAcmV0dXJuIFRoZSB2ZXJzaW9uIG51bWJl
cg0KICAgICAgKiBAdGhyb3dzIE9wZW5FeGNlcHRpb24gb24gYW55IGVycm9yDQpAQCAtNTE3LDcg
KzUyMiw3IEBADQogICAgIC8qKg0KICAgICAgKiBSZWFkcyBhbiBYTUwgZmlsZSBvZiB1bWwgZm9y
bWF0IGFuZCBleHRyYWN0cyB0aGUgcGVyc2lzdGVuY2UgdmVyc2lvbg0KICAgICAgKiBudW1iZXIg
ZnJvbSB0aGUgcm9vdCB0YWcuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gaW5w
dXRTdHJlYW0gc3RyZWFtIHBvaW50aW5nIHRvIGZpbGUgdG8gcmVhZC4NCiAgICAgICogQHJldHVy
biBUaGUgdmVyc2lvbiBudW1iZXINCiAgICAgICogQHRocm93cyBPcGVuRXhjZXB0aW9uIG9uIGFu
eSBlcnJvcg0KQEAgLTU1NSw3ICs1NjAsNyBAQA0KICAgICAvKioNCiAgICAgICogUmVhZHMgYW4g
WE1MIGZpbGUgb2YgdW1sIGZvcm1hdCBhbmQgZXh0cmFjdHMgdGhlIHBlcnNpc3RlbmNlIHZlcnNp
b24NCiAgICAgICogbnVtYmVyIGZyb20gdGhlIHJvb3QgdGFnLg0KLSAgICAgKiANCisgICAgICoN
CiAgICAgICogQHBhcmFtIGZpbGUgdGhlIFhNTCBmaWxlDQogICAgICAqIEByZXR1cm4gVGhlIEFy
Z29VTUwgcmVsZWFzZSBudW1iZXINCiAgICAgICogQHRocm93cyBPcGVuRXhjZXB0aW9uIG9uIGFu
eSBlcnJvcg0KQEAgLTU4NSw3ICs1OTAsNyBAQA0KICAgICAvKioNCiAgICAgICogUmVhZHMgYW4g
WE1MIGZpbGUgb2YgdW1sIGZvcm1hdCBhbmQgZXh0cmFjdHMgdGhlIHBlcnNpc3RlbmNlIHZlcnNp
b24NCiAgICAgICogbnVtYmVyIGZyb20gdGhlIHJvb3QgdGFnLg0KLSAgICAgKiANCisgICAgICoN
CiAgICAgICogQHBhcmFtIGlucHV0U3RyZWFtIHRoZSBzdHJlYW0gcG9pbnQgdG8gdGhlIFhNTCBm
aWxlDQogICAgICAqIEByZXR1cm4gVGhlIEFyZ29VTUwgcmVsZWFzZSBudW1iZXINCiAgICAgICog
QHRocm93cyBPcGVuRXhjZXB0aW9uIG9uIGFueSBlcnJvcg0KQEAgLTYyOCw3ICs2MzMsNyBAQA0K
IA0KICAgICAvKioNCiAgICAgICogR2V0IHRoZSB2ZXJzaW9uIGF0dHJpYnV0ZSB2YWx1ZSBmcm9t
IGEgc3RyaW5nIG9mIFhNTC4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSByb290
TGluZSB0aGUgbGluZQ0KICAgICAgKiBAcmV0dXJuIHRoZSB2ZXJzaW9uDQogICAgICAqLw0KQEAg
LTY0Nyw3ICs2NTIsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogUmV0dXJucyB0cnVlLiBBbGwg
QXJnbyBzcGVjaWZpYyBmaWxlcyBoYXZlIGFuIGljb24uDQotICAgICAqIA0KKyAgICAgKg0KICAg
ICAgKiB7QGluaGVyaXREb2N9DQogICAgICAqLw0KICAgICBwdWJsaWMgYm9vbGVhbiBoYXNBbklj
b24oKSB7DQpAQCAtNjU3LDcgKzY2Miw3IEBADQogICAgIC8qKg0KICAgICAgKiBDbGFzcyB0byBm
aWx0ZXIgWE1MIGRlY2xhcmF0aW9uIGFuZCBET0NUWVBFIGRlY2xhcmF0aW9uIGZyb20gYW4gb3V0
cHV0DQogICAgICAqIHN0cmVhbSB0byBhbGxvdyB1c2UgYXMgbmVzdGVkIFhNTCBmaWxlcy4NCi0g
ICAgICogDQorICAgICAqDQogICAgICAqIEBhdXRob3IgVG9tIE1vcnJpcw0KICAgICAgKi8NCiAg
ICAgY2xhc3MgWG1sRmlsdGVyT3V0cHV0U3RyZWFtIGV4dGVuZHMgRmlsdGVyT3V0cHV0U3RyZWFt
IHsNCkBAIC03MDMsNyArNzA4LDcgQEANCiAgICAgICAgIC8qKg0KICAgICAgICAgICogQ29uc3Ry
dWN0IGEgZmlsdGVyZWQgb3V0cHV0IHN0cmVhbSB1c2luZyB0aGUgZ2l2ZW4gY2hhcmFjdGVyIHNl
dA0KICAgICAgICAgICogbmFtZS4NCi0gICAgICAgICAqIA0KKyAgICAgICAgICoNCiAgICAgICAg
ICAqIEBwYXJhbSBvdXRwdXRTdHJlYW0gc291cmNlIG91dHB1dCBzdHJlYW0gdG8gZmlsdGVyDQog
ICAgICAgICAgKiBAcGFyYW0gY2hhcnNldE5hbWUgbmFtZSBvZiBjaGFyYWN0ZXIgc2V0IHRvIHVz
ZSBmb3IgZW5jb2RpbmcNCiAgICAgICAgICAqLw0KQEAgLTcxNCw3ICs3MTksNyBAQA0KIA0KICAg
ICAgICAgLyoqDQogICAgICAgICAgKiBDb25zdHJ1Y3QgYSBmaWx0ZXJlZCBvdXRwdXQgc3RyZWFt
IHVzaW5nIHRoZSBnaXZlbiBjaGFyYWN0ZXIgc2V0Lg0KLSAgICAgICAgICogDQorICAgICAgICAg
Kg0KICAgICAgICAgICogQHBhcmFtIG91dHB1dFN0cmVhbSBzb3VyY2Ugb3V0cHV0IHN0cmVhbSB0
byBmaWx0ZXINCiAgICAgICAgICAqIEBwYXJhbSBjaGFyc2V0IGNoYXJhY3RlciBzZXQgdG8gdXNl
IGZvciBlbmNvZGluZw0KICAgICAgICAgICovDQpAQCAtODI3LDcgKzgzMiw3IEBADQogDQogICAg
ICAgICAvKioNCiAgICAgICAgICAqIENsb3NlIHRoZSBzdHJlYW0uDQotICAgICAgICAgKiANCisg
ICAgICAgICAqDQogICAgICAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uDQogICAgICAgICAgKi8N
CiAgICAgICAgIHB1YmxpYyB2b2lkIHJlYWxseUNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsN
Cg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lz
dGVuY2UvWE1MVG9rZW5UYWJsZUJhc2UuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMu
b3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3BlcnNpc3RlbmNlL1hNTFRva2VuVGFibGVCYXNlLmphdmE/dmlldz1kaWZmJnBhdGhy
ZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvWE1MVG9rZW5U
YWJsZUJhc2UuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9YTUxUb2tlblRhYmxlQmFzZS5qYXZhCTIwMTItMTItMzAg
MDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cN
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg
bWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
RWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk
aXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC0zOSwxNSArMzksMTYgQEANCiBw
YWNrYWdlIG9yZy5hcmdvdW1sLnBlcnNpc3RlbmNlOw0KIA0KIGltcG9ydCBqYXZhLnV0aWwuSGFz
aHRhYmxlOw0KLQ0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCitpbXBvcnQgamF2
YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsN
CiANCiAvKioNCiAgKiBAYXV0aG9yIEppbSBIb2x5DQogICovDQogDQogYWJzdHJhY3QgY2xhc3Mg
WE1MVG9rZW5UYWJsZUJhc2Ugew0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9H
ID0gTG9nZ2VyLmdldExvZ2dlcihYTUxUb2tlblRhYmxlQmFzZS5jbGFzcyk7DQorICAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihY
TUxUb2tlblRhYmxlQmFzZS5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogICAg
IC8vIGluc3RhbmNlIHZhcmlhYmxlcw0KQEAgLTg0LDcgKzg1LDcgQEANCiAJaWYgKHB1c2gpIHsN
CiAJICAgIG9wZW5UYWdzWysrbnVtT3Blbl0gPSBzOw0KIAl9IGVsc2UgaWYgKHMuZXF1YWxzKG9w
ZW5UYWdzW251bU9wZW5dKSkgew0KLQkgICAgTE9HLmRlYnVnKCJtYXRjaGVkOiAiICsgcyk7DQor
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAibWF0Y2hlZDogezB9Iiwgcyk7DQogCSAg
ICByZXR1cm4gb3BlblRva2Vuc1tudW1PcGVuLS1dOw0KIAl9DQogCUludGVnZXIgaSA9IChJbnRl
Z2VyKSB0b2tlbnMuZ2V0KHMpOw0KQEAgLTExNywxMyArMTE4LDE0IEBADQogICAgICAgICBib29s
ZWFuIGVycm9yID0gZmFsc2U7DQogCWlmIChkYmcpIHsNCiAJICAgIGlmICh0b2tlbnMuY29udGFp
bnMoaSkgfHwgdG9rZW5zLmNvbnRhaW5zS2V5KHMpKSB7DQotCQlMT0cuZXJyb3IoIkVSUk9SOiB0
b2tlbiB0YWJsZSBhbHJlYWR5IGNvbnRhaW5zICIgKyBzKTsNCisgICAgICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICAgICAgICAgIkVSUk9SOiB0b2tl
biB0YWJsZSBhbHJlYWR5IGNvbnRhaW5zICIgKyBzKTsNCiAJCWVycm9yID0gdHJ1ZTsNCiAJICAg
IH0NCiAJfQ0KIAl0b2tlbnMucHV0KHMsIGkpOw0KIAlpZiAoZGJnICYmICFlcnJvcikgew0KLSAg
ICAgICAgICAgIExPRy5kZWJ1ZygiTk9URTogYWRkZWQgJyIgKyBzICsgIicgdG8gdG9rZW4gdGFi
bGUiKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJOT1RFOiBhZGRlZCB7MH0g
dG8gdG9rZW4gdGFibGUiLCBzKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KDQpNb2RpZmllZDog
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9YbWlGaWxl
UGVyc2lzdGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJv
d3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0
ZW5jZS9YbWlGaWxlUGVyc2lzdGVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5
MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvWG1pRmlsZVBlcnNpc3Rlci5qYXZhCShv
cmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNp
c3RlbmNlL1htaUZpbGVQZXJzaXN0ZXIuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBA
IC00OSw4ICs0OSw5IEBADQogaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOw0KIGltcG9ydCBq
YXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2
YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsN
CiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmkxOG4uVHJhbnNsYXRvcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwua2VybmVsLlByb2plY3Q7DQog
aW1wb3J0IG9yZy5hcmdvdW1sLmtlcm5lbC5Qcm9qZWN0RmFjdG9yeTsNCkBAIC02NiwyMCArNjcs
MjAgQEANCiAgKg0KICAqIEBhdXRob3IgQm9iIFRhcmxpbmcNCiAgKi8NCi1jbGFzcyBYbWlGaWxl
UGVyc2lzdGVyIGV4dGVuZHMgQWJzdHJhY3RGaWxlUGVyc2lzdGVyIA0KK2NsYXNzIFhtaUZpbGVQ
ZXJzaXN0ZXIgZXh0ZW5kcyBBYnN0cmFjdEZpbGVQZXJzaXN0ZXINCiAgICAgaW1wbGVtZW50cyBY
bWlFeHRlbnNpb25QYXJzZXIgew0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8N
CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQotICAgICAgICBMb2dnZXIu
Z2V0TG9nZ2VyKFhtaUZpbGVQZXJzaXN0ZXIuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExv
Z2dlcihYbWlGaWxlUGVyc2lzdGVyLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIHByaXZhdGUg
TGlzdDxTdHJpbmc+IHBnbWxTdHJpbmdzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7DQotICAg
IA0KKw0KICAgICBwcml2YXRlIFN0cmluZyB0b2RvU3RyaW5nOw0KLSAgICANCisNCiAgICAgcHJp
dmF0ZSBTdHJpbmcgYXJnb1N0cmluZzsNCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBUaGUg
Y29uc3RydWN0b3IuDQogICAgICAqLw0KQEAgLTExOCwxNCArMTE5LDE0IEBADQogICAgIHB1Ymxp
YyB2b2lkIGRvU2F2ZShQcm9qZWN0IHByb2plY3QsIEZpbGUgZmlsZSkNCiAgICAgICAgIHRocm93
cyBTYXZlRXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7DQogDQotICAgICAgICAvKiBS
ZXRhaW4gdGhlIHByZXZpb3VzIHByb2plY3QgZmlsZSBldmVuIHdoZW4gdGhlIHNhdmUgb3BlcmF0
aW9uIA0KKyAgICAgICAgLyogUmV0YWluIHRoZSBwcmV2aW91cyBwcm9qZWN0IGZpbGUgZXZlbiB3
aGVuIHRoZSBzYXZlIG9wZXJhdGlvbg0KICAgICAgICAgICogY3Jhc2hlcyBpbiB0aGUgbWlkZGxl
LiBBbHNvIGNyZWF0ZSBhIGJhY2t1cCBmaWxlIGFmdGVyIHNhdmluZy4gKi8NCiAgICAgICAgIGJv
b2xlYW4gZG9TYWZlU2F2ZXMgPSB1c2VTYWZlU2F2ZXMoKTsNCi0gICAgICAgIA0KKw0KICAgICAg
ICAgUHJvZ3Jlc3NNZ3IgcHJvZ3Jlc3NNZ3IgPSBuZXcgUHJvZ3Jlc3NNZ3IoKTsNCiAgICAgICAg
IHByb2dyZXNzTWdyLnNldE51bWJlck9mUGhhc2VzKDQpOw0KICAgICAgICAgcHJvZ3Jlc3NNZ3Iu
bmV4dFBoYXNlKCk7DQotICAgICAgICANCisNCiAgICAgICAgIEZpbGUgbGFzdEFyY2hpdmVGaWxl
ID0gbmV3IEZpbGUoZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSArICJ+Iik7DQogICAgICAgICBGaWxl
IHRlbXBGaWxlID0gbnVsbDsNCiANCkBAIC0xNjcsNyArMTY4LDcgQEANCiAgICAgICAgICAgICB9
IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeyB9DQogICAgICAgICAgICAgdGhyb3cgZXhjOw0KICAg
ICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkV4
Y2VwdGlvbiBvY2N1cmVkIGR1cmluZyBzYXZlIGF0dGVtcHQiLCBlKTsNCisgICAgICAgICAgICBM
T0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiBvY2N1cmVkIGR1cmluZyBzYXZlIGF0dGVt
cHQiLCBlKTsNCiAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICBzdHJlYW0uY2xv
c2UoKTsNCiAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeyB9DQpAQCAtMTg0
LDcgKzE4NSw3IEBADQogICAgICAgICB9DQogICAgICAgICBwcm9ncmVzc01nci5uZXh0UGhhc2Uo
KTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIFdyaXRlIHRoZSBvdXRwdXQg
Zm9yIGEgcHJvamVjdCBvbiB0aGUgZ2l2ZW4gc3RyZWFtLg0KICAgICAgKg0KQEAgLTE5NSw5ICsx
OTYsOSBAQA0KICAgICAgKiBAdGhyb3dzIFNhdmVFeGNlcHRpb24gSWYgc29tZXRoaW5nIGdvZXMg
d3JvbmcuDQogICAgICAqIEB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24gICAgIGlmIHRoZSB0
aHJlYWQgaXMgaW50ZXJydXB0ZWQNCiAgICAgICovDQotICAgIHZvaWQgd3JpdGVQcm9qZWN0KFBy
b2plY3QgcHJvamVjdCwgDQotICAgICAgICAgICAgT3V0cHV0U3RyZWFtIHN0cmVhbSwgDQotICAg
ICAgICAgICAgUHJvZ3Jlc3NNZ3IgcHJvZ3Jlc3NNZ3IpIHRocm93cyBTYXZlRXhjZXB0aW9uLCAN
CisgICAgdm9pZCB3cml0ZVByb2plY3QoUHJvamVjdCBwcm9qZWN0LA0KKyAgICAgICAgICAgIE91
dHB1dFN0cmVhbSBzdHJlYW0sDQorICAgICAgICAgICAgUHJvZ3Jlc3NNZ3IgcHJvZ3Jlc3NNZ3Ip
IHRocm93cyBTYXZlRXhjZXB0aW9uLA0KICAgICAgICAgICAgIEludGVycnVwdGVkRXhjZXB0aW9u
IHsNCiANCiAgICAgICAgIGludCBzaXplID0gcHJvamVjdC5nZXRNZW1iZXJzKCkuc2l6ZSgpOw0K
QEAgLTIwNSwxMCArMjA2LDkgQEANCiAgICAgICAgICAgICBQcm9qZWN0TWVtYmVyIHByb2plY3RN
ZW1iZXIgPQ0KICAgICAgICAgICAgICAgICBwcm9qZWN0LmdldE1lbWJlcnMoKS5nZXQoaSk7DQog
ICAgICAgICAgICAgaWYgKHByb2plY3RNZW1iZXIuZ2V0VHlwZSgpLmVxdWFsc0lnbm9yZUNhc2Uo
Z2V0RXh0ZW5zaW9uKCkpKSB7DQotICAgICAgICAgICAgICAgIGlmIChMT0cuaXNJbmZvRW5hYmxl
ZCgpKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cuaW5mbygiU2F2aW5nIG1lbWJlciBvZiB0
eXBlOiAiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKHByb2plY3QuZ2V0TWVtYmVy
cygpDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChpKSkuZ2V0VHlw
ZSgpKTsNCisgICAgICAgICAgICAgICAgaWYgKExPRy5pc0xvZ2dhYmxlKExldmVsLklORk8pKSB7
DQorICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJTYXZpbmcgbWVtYmVy
IG9mIHR5cGU6IHswfSIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RNZW1i
ZXIuZ2V0VHlwZSgpKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICBNZW1i
ZXJGaWxlUGVyc2lzdGVyIHBlcnNpc3RlciA9IG5ldyBNb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIo
KTsNCiAgICAgICAgICAgICAgICAgcGVyc2lzdGVyLnNhdmUocHJvamVjdE1lbWJlciwgc3RyZWFt
KTsNCkBAIC0yNDIsMTIgKzI0MiwxMiBAQA0KICAgICBwdWJsaWMgUHJvamVjdCBkb0xvYWQoRmls
ZSBmaWxlKQ0KICAgICAgICAgdGhyb3dzIE9wZW5FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0
aW9uIHsNCiANCi0gICAgICAgIExPRy5pbmZvKCJMb2FkaW5nIHdpdGggWE1JRmlsZVBlcnNpc3Rl
ciIpOw0KLSAgICAgICAgDQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJMb2FkaW5nIHdp
dGggWE1JRmlsZVBlcnNpc3RlciIpOw0KKw0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBQ
cm9qZWN0IHAgPSBQcm9qZWN0RmFjdG9yeS5nZXRJbnN0YW5jZSgpLmNyZWF0ZVByb2plY3QoKTsN
Ci0gICAgICAgICAgICANCi0gICAgICAgICAgICANCisNCisNCiAgICAgICAgICAgICBsb25nIGxl
bmd0aCA9IGZpbGUubGVuZ3RoKCk7DQogICAgICAgICAgICAgbG9uZyBwaGFzZVNwYWNlID0gMTAw
MDAwOw0KICAgICAgICAgICAgIGludCBwaGFzZXMgPSAoaW50KSAobGVuZ3RoIC8gcGhhc2VTcGFj
ZSk7DQpAQCAtMjU1LDIwICsyNTUsMjAgQEANCiAgICAgICAgICAgICAgICAgcGhhc2VTcGFjZSA9
IGxlbmd0aCAvIDEwOw0KICAgICAgICAgICAgICAgICBwaGFzZXMgPSAxMDsNCiAgICAgICAgICAg
ICB9DQotICAgICAgICAgICAgTE9HLmluZm8oIkZpbGUgbGVuZ3RoIGlzICIgKyBsZW5ndGggKyAi
IHBoYXNlIHNwYWNlIGlzICINCisgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJGaWxl
IGxlbmd0aCBpcyAiICsgbGVuZ3RoICsgIiBwaGFzZSBzcGFjZSBpcyAiDQogICAgICAgICAgICAg
ICAgICAgICArIHBoYXNlU3BhY2UgKyAiIHBoYXNlcyBpcyAiICsgcGhhc2VzKTsNCiAgICAgICAg
ICAgICBQcm9ncmVzc01nciBwcm9ncmVzc01nciA9IG5ldyBQcm9ncmVzc01ncigpOw0KICAgICAg
ICAgICAgIHByb2dyZXNzTWdyLnNldE51bWJlck9mUGhhc2VzKHBoYXNlcyk7DQogICAgICAgICAg
ICAgVGhyZWFkVXRpbHMuY2hlY2tJZkludGVycnVwdGVkKCk7DQotICAgICAgICAgICAgDQorDQog
ICAgICAgICAgICAgSW5wdXRTb3VyY2Ugc291cmNlID0gbmV3IElucHV0U291cmNlKG5ldyBYbWlJ
bnB1dFN0cmVhbShmaWxlDQogICAgICAgICAgICAgICAgICAgICAudG9VUkkoKS50b1VSTCgpLm9w
ZW5TdHJlYW0oKSwgdGhpcywgcGhhc2VTcGFjZSwNCiAgICAgICAgICAgICAgICAgICAgIHByb2dy
ZXNzTWdyKSk7DQogICAgICAgICAgICAgc291cmNlLnNldFN5c3RlbUlkKGZpbGUudG9VUkkoKS50
b1VSTCgpLnRvU3RyaW5nKCkpOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgIE1vZGVs
TWVtYmVyRmlsZVBlcnNpc3RlciBtb2RlbFBlcnNpc3RlciA9DQogICAgICAgICAgICAgICAgIG5l
dyBNb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIoKTsNCi0gICAgICAgICAgICANCisNCiAgICAgICAg
ICAgICBtb2RlbFBlcnNpc3Rlci5yZWFkTW9kZWxzKHNvdXJjZSk7DQogICAgICAgICAgICAgT2Jq
ZWN0IG1vZGVsID0gbW9kZWxQZXJzaXN0ZXIuZ2V0Q3VyTW9kZWwoKTsNCiAgICAgICAgICAgICBw
cm9ncmVzc01nci5uZXh0UGhhc2UoKTsNCkBAIC0yNzgsMTIgKzI3OCwxMiBAQA0KICAgICAgICAg
ICAgIHAuYWRkTWVtYmVyKG1vZGVsKTsNCiAgICAgICAgICAgICBwYXJzZVhtaUV4dGVuc2lvbnMo
cCk7DQogICAgICAgICAgICAgbW9kZWxQZXJzaXN0ZXIucmVnaXN0ZXJEaWFncmFtcyhwKTsNCi0g
ICAgICAgICAgICANCisNCiAgICAgICAgICAgICBwLnNldFJvb3QobW9kZWwpOw0KICAgICAgICAg
ICAgIHAuc2V0Um9vdHMobW9kZWxQZXJzaXN0ZXIuZ2V0RWxlbWVudHNSZWFkKCkpOw0KICAgICAg
ICAgICAgIHAudXBkYXRlUm9vdHMoKTsNCiAgICAgICAgICAgICBGaWxlIGRlZmF1bHRQcm9qZWN0
RmlsZSA9IG5ldyBGaWxlKGZpbGUuZ2V0UGF0aCgpICsgIi56YXJnbyIpOw0KLSAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0IHNvIHRoZSB1c2VyIHdpbGwgDQor
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3Qgc28gdGhlIHVz
ZXIgd2lsbA0KICAgICAgICAgICAgIC8vIGdldCBwcm9tcHRlZCB0byBjaG9vc2UgYSBuZXcgbmFt
ZQ0KICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTk7IGkrKykgew0KICAgICAgICAg
ICAgICAgICBpZiAoIWRlZmF1bHRQcm9qZWN0RmlsZS5leGlzdHMoKSkgew0KQEAgLTMwNCw3ICsz
MDQsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogUmV0dXJucyB0cnVlLiBBbGwgQXJnbyBzcGVj
aWZpYyBmaWxlcyBoYXZlIGFuIGljb24uDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAc2Vl
IG9yZy5hcmdvdW1sLnBlcnNpc3RlbmNlLkFic3RyYWN0RmlsZVBlcnNpc3RlciNoYXNBbkljb24o
KQ0KICAgICAgKi8NCiAgICAgcHVibGljIGJvb2xlYW4gaGFzQW5JY29uKCkgew0KQEAgLTMyOSwx
NCArMzI5LDE1IEBADQogDQogICAgIC8qKg0KICAgICAgKiBQYXJzZSBhbGwgdGhlIGV4dGVuc2lv
bnMgdGhhdCB3ZXJlIGZvdW5kIHdoZW4gcmVhZGluZyBYTUkNCi0gICAgICogDQorICAgICAqDQog
ICAgICAqIEBwYXJhbSBwcm9qZWN0DQogICAgICAqIEBleGNlcHRpb24gT3BlbkV4Y2VwdGlvbg0K
ICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgcGFyc2VYbWlFeHRlbnNpb25zKFByb2plY3QgcHJv
amVjdCkgdGhyb3dzIE9wZW5FeGNlcHRpb24gew0KLSAgICAgICAgDQorDQogICAgICAgICBpZiAo
YXJnb1N0cmluZyAhPSBudWxsKSB7DQotICAgICAgICAgICAgTE9HLmluZm8oIlBhcnNpbmcgYXJn
b1N0cmluZyAiICsgYXJnb1N0cmluZy5sZW5ndGgoKSk7DQorICAgICAgICAgICAgTE9HLmxvZyhM
ZXZlbC5JTkZPLCAiUGFyc2luZyBhcmdvU3RyaW5nIHswfSIsIGFyZ29TdHJpbmcubGVuZ3RoKCkp
Ow0KKw0KICAgICAgICAgICAgIFN0cmluZ1JlYWRlciBpbnB1dFN0cmVhbSA9IG5ldyBTdHJpbmdS
ZWFkZXIoYXJnb1N0cmluZyk7DQogICAgICAgICAgICAgQXJnb1BhcnNlciBwYXJzZXIgPSBuZXcg
QXJnb1BhcnNlcigpOw0KICAgICAgICAgICAgIHRyeSB7DQpAQCAtMzQ4LDkgKzM0OSwxMCBAQA0K
ICAgICAgICAgICAgIHByb2plY3QuYWRkTWVtYmVyKG5ldyBQcm9qZWN0TWVtYmVyVG9kb0xpc3Qo
IiIsIHByb2plY3QpKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGZvciAoU3RyaW5nIHBnbWwgOiBw
Z21sU3RyaW5ncykgew0KLSAgICAgICAgICAgIExPRy5pbmZvKCJQYXJzaW5nIHBnbWwgIiArIHBn
bWwubGVuZ3RoKCkpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIlBhcnNpbmcg
cGdtbCB7MH0iLCBwZ21sLmxlbmd0aCgpKTsNCisNCiAgICAgICAgICAgICBJbnB1dFN0cmVhbSBp
bnB1dFN0cmVhbSA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShwZ21sLmdldEJ5dGVzKCkpOw0K
LSAgICAgICAgICAgIE1lbWJlckZpbGVQZXJzaXN0ZXIgcGVyc2lzdGVyID0gDQorICAgICAgICAg
ICAgTWVtYmVyRmlsZVBlcnNpc3RlciBwZXJzaXN0ZXIgPQ0KICAgICAgICAgICAgIC8vIFRPRE86
IEN5Y2xpYyBkZXBlbmRlbmN5IGJldHdlZW4gUGVyc2lzdGFuY2VNYW5hZ2VyIGFuZCBoZXJlDQog
ICAgICAgICAgICAgICAgIFBlcnNpc3RlbmNlTWFuYWdlci5nZXRJbnN0YW5jZSgpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgLmdldERpYWdyYW1NZW1iZXJGaWxlUGVyc2lzdGVyKCk7DQpAQCAt
MzU5LDggKzM2MSw5IEBADQogICAgICAgICAgICAgcGVyc2lzdGVyLmxvYWQocHJvamVjdCwgaW5w
dXRTdHJlYW0pOw0KICAgICAgICAgfQ0KICAgICAgICAgaWYgKHRvZG9TdHJpbmcgIT0gbnVsbCkg
ew0KLSAgICAgICAgICAgIExPRy5pbmZvKCJQYXJzaW5nIHRvZG9TdHJpbmcgIiArIHRvZG9TdHJp
bmcubGVuZ3RoKCkpOw0KLSAgICAgICAgICAgIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gDQor
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiUGFyc2luZyB0b2RvU3RyaW5nIHswfSIs
IHRvZG9TdHJpbmcubGVuZ3RoKCkpOw0KKw0KKyAgICAgICAgICAgIElucHV0U3RyZWFtIGlucHV0
U3RyZWFtID0NCiAgICAgICAgICAgICAgICAgbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHRvZG9T
dHJpbmcuZ2V0Qnl0ZXMoKSk7DQogICAgICAgICAgICAgTWVtYmVyRmlsZVBlcnNpc3RlciBwZXJz
aXN0ZXIgPSBudWxsOw0KICAgICAgICAgICAgIHBlcnNpc3RlciA9IG5ldyBUb2RvTGlzdE1lbWJl
ckZpbGVQZXJzaXN0ZXIoKTsNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvWG1sSW5wdXRTdHJlYW0uamF2YQ0KVXJsOiBodHRwOi8v
YXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL1htbElucHV0U3RyZWFtLmphdmE/dmll
dz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVu
Y2UvWG1sSW5wdXRTdHJlYW0uamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9YbWxJbnB1dFN0cmVhbS5qYXZhCTIwMTIt
MTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwIENvbnRyaWJ1dG9ycyAt
IHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNl
ZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj
Y29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBh
bmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQ1LDEwICs0
NSw4IEBADQogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KIGltcG9ydCBqYXZhLnV0aWwuSXRl
cmF0b3I7DQogaW1wb3J0IGphdmEudXRpbC5NYXA7DQotDQotLy9pbXBvcnQgamF2YXguc3dpbmcu
ZXZlbnQuRXZlbnRMaXN0ZW5lckxpc3Q7DQotDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9n
Z2VyOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGls
LmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIA0KIC8qKg0KQEAgLTYyLDcgKzYwLDcgQEANCiAgKiBUT0RP
OiBUaGlzIGlzIGhhcmR3aXJlZCB0byBhc3N1bWUgYSBmaXhlZCBzaW5nbGUgYnl0ZQ0KICAqIGNo
YXJhY3RlciBlbmNvZGluZy4gIEl0IG5lZWRzIHRvIGJlIHVwZGF0ZWQgdG8gaGFuZGxlIGRpZmZl
cmVudA0KICAqIGVuY29kaW5ncywgaW5jbHVkaW5nIG11bHRpLWJ5dGUgZW5jb2RpbmdzLiAtIHRm
bSAyMDA3MDYwNw0KLSAqIA0KKyAqDQogICogQGF1dGhvciBCb2IgVGFybGluZw0KICAqLw0KIGNs
YXNzIFhtbElucHV0U3RyZWFtIGV4dGVuZHMgQnVmZmVyZWRJbnB1dFN0cmVhbSB7DQpAQCAtODIs
NyArODAsNyBAQA0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KICAgICBwcml2YXRlIHN0YXRp
YyBmaW5hbCBMb2dnZXIgTE9HID0NCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoWG1sSW5wdXRT
dHJlYW0uY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihYbWxJbnB1dFN0cmVhbS5j
bGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvKioNCiAgICAgICogQ29uc3RydWN0IGEgbmV3IFht
bElucHV0U3RyZWFtLg0KQEAgLTIxMSw3ICsyMDksNyBAQA0KICAgICAgICAgICAgICAgICAgICAg
Ly8gY292ZXIgdGhlIGNhc2Ugd2UgZGVhbCB3aXRoLiAgVXNpbmcgYSByZWFsIFhNTCBwYXJzZXIN
CiAgICAgICAgICAgICAgICAgICAgIC8vIHdvdWxkIGJlIGJldHRlci4NCiAgICAgICAgICAgICAg
ICAgICAgIC8vIExvb2sgZm9yIFhNTCBkb2N1bWVudCBoYXMganVzdCBhIHNpbmdsZSByb290IGVs
ZW1lbnQNCi0gICAgICAgICAgICAgICAgICAgIHx8IChjdXJyZW50VGFnLmNoYXJBdChjdXJyZW50
VGFnLmxlbmd0aCgpIC0gMSkgPT0gJy8nIA0KKyAgICAgICAgICAgICAgICAgICAgfHwgKGN1cnJl
bnRUYWcuY2hhckF0KGN1cnJlbnRUYWcubGVuZ3RoKCkgLSAxKSA9PSAnLycNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiB0YWcuc3RhcnRzV2l0aCh0YWdOYW1lKQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIHRhZy5pbmRleE9mKCcgJykgPT0gdGFnTmFtZS5pbmRleE9mKCcgJykpKSB7
DQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KQEAgLTMwNSw4ICszMDMsOCBAQA0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoID0gKGNoYXIpIHJlYWxSZWFkKCk7DQogICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICBlbmRUYWdOYW1lID0gIi8iICsgdGFn
TmFtZTsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5pbmZvKCJTdGFydCB0YWcgPSAiICsgdGFn
TmFtZSk7DQotICAgICAgICAgICAgICAgICAgICBMT0cuaW5mbygiRW5kIHRhZyA9ICIgKyBlbmRU
YWdOYW1lKTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIlN0YXJ0
IHRhZyA9IHswfSIsIHRhZ05hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5JTkZPLCAiRW5kIHRhZyA9IHswfSIsIGVuZFRhZ05hbWUpOw0KICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgIHJlc2V0KCk7DQogICAgICAgICAgICAgICAgIHJldHVybjsNCg0K
TW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVu
Y2UvWmFyZ29GaWxlUGVyc2lzdGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9y
Zy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC9wZXJzaXN0ZW5jZS9aYXJnb0ZpbGVQZXJzaXN0ZXIuamF2YT92aWV3PWRpZmYmcGF0aHJl
dj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9aYXJnb0ZpbGVQ
ZXJzaXN0ZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9aYXJnb0ZpbGVQZXJzaXN0ZXIuamF2YQkyMDEyLTEyLTMw
IDA1OjA2OjAxLTA4MDANCkBAIC01NywxMSArNTcsMTIgQEANCiBpbXBvcnQgamF2YS5uZXQuVVJM
Ow0KIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsN
CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dn
aW5nLkxvZ2dlcjsNCiBpbXBvcnQgamF2YS51dGlsLnppcC5aaXBFbnRyeTsNCiBpbXBvcnQgamF2
YS51dGlsLnppcC5aaXBJbnB1dFN0cmVhbTsNCiBpbXBvcnQgamF2YS51dGlsLnppcC5aaXBPdXRw
dXRTdHJlYW07DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBv
cmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5hcGkuQXJnbzsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBw
bGljYXRpb24uaGVscGVycy5BcHBsaWNhdGlvblZlcnNpb247DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmkxOG4uVHJhbnNsYXRvcjsNCkBAIC04NSw3ICs4Niw3IEBADQogICAgICAqIExvZ2dlci4NCiAg
ICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KLQlMb2dnZXIu
Z2V0TG9nZ2VyKFphcmdvRmlsZVBlcnNpc3Rlci5jbGFzcyk7DQorICAgICAgICBMb2dnZXIuZ2V0
TG9nZ2VyKFphcmdvRmlsZVBlcnNpc3Rlci5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvKioN
CiAgICAgICogVGhlIGNvbnN0cnVjdG9yLg0KQEAgLTEyNSwxOCArMTI2LDE4IEBADQogICAgICAq
ICAgICAgb3JnLmFyZ291bWwua2VybmVsLlByb2plY3QsIGphdmEuaW8uRmlsZSkNCiAgICAgICov
DQogICAgIEBPdmVycmlkZQ0KLSAgICBwdWJsaWMgdm9pZCBkb1NhdmUoUHJvamVjdCBwcm9qZWN0
LCBGaWxlIGZpbGUpIHRocm93cyBTYXZlRXhjZXB0aW9uLCANCisgICAgcHVibGljIHZvaWQgZG9T
YXZlKFByb2plY3QgcHJvamVjdCwgRmlsZSBmaWxlKSB0aHJvd3MgU2F2ZUV4Y2VwdGlvbiwNCiAg
ICAgSW50ZXJydXB0ZWRFeGNlcHRpb24gew0KIA0KLSAgICAgICAgTE9HLmluZm8oIlNhdmluZyIp
Ow0KLSAgICAgICAgLyogUmV0YWluIHRoZSBwcmV2aW91cyBwcm9qZWN0IGZpbGUgZXZlbiB3aGVu
IHRoZSBzYXZlIG9wZXJhdGlvbiANCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIlNhdmlu
ZyIpOw0KKyAgICAgICAgLyogUmV0YWluIHRoZSBwcmV2aW91cyBwcm9qZWN0IGZpbGUgZXZlbiB3
aGVuIHRoZSBzYXZlIG9wZXJhdGlvbg0KICAgICAgICAgICogY3Jhc2hlcyBpbiB0aGUgbWlkZGxl
LiBBbHNvIGNyZWF0ZSBhIGJhY2t1cCBmaWxlIGFmdGVyIHNhdmluZy4gKi8NCiAgICAgICAgIGJv
b2xlYW4gZG9TYWZlU2F2ZXMgPSB1c2VTYWZlU2F2ZXMoKTsNCiANCiAgICAgICAgIFByb2dyZXNz
TWdyIHByb2dyZXNzTWdyID0gbmV3IFByb2dyZXNzTWdyKCk7DQogICAgICAgICBwcm9ncmVzc01n
ci5zZXROdW1iZXJPZlBoYXNlcyg0KTsNCiAgICAgICAgIHByb2dyZXNzTWdyLm5leHRQaGFzZSgp
Ow0KLSAgICAgICAgDQorDQogICAgICAgICBGaWxlIGxhc3RBcmNoaXZlRmlsZSA9IG5ldyBGaWxl
KGZpbGUuZ2V0QWJzb2x1dGVQYXRoKCkgKyAifiIpOw0KICAgICAgICAgRmlsZSB0ZW1wRmlsZSA9
IG51bGw7DQogDQpAQCAtMTYzLDEwICsxNjQsMTEgQEANCiANCiAgICAgICAgICAgICBmb3IgKFBy
b2plY3RNZW1iZXIgcHJvamVjdE1lbWJlciA6IHByb2plY3QuZ2V0TWVtYmVycygpKSB7DQogICAg
ICAgICAgICAgICAgIGlmIChwcm9qZWN0TWVtYmVyLmdldFR5cGUoKS5lcXVhbHNJZ25vcmVDYXNl
KCJ4bWkiKSkgew0KLSAgICAgICAgICAgICAgICAgICAgaWYgKExPRy5pc0luZm9FbmFibGVkKCkp
IHsNCi0gICAgICAgICAgICAgICAgICAgICAgICBMT0cuaW5mbygiU2F2aW5nIG1lbWJlciBvZiB0
eXBlOiAiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHByb2plY3RNZW1iZXIu
Z2V0VHlwZSgpKTsNCi0gICAgICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAg
ICAgIExPRy5sb2coTGV2ZWwuSU5GTywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNh
dmluZyBtZW1iZXIgb2YgdHlwZTogezB9IiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvamVjdE1lbWJlci5nZXRUeXBlKCkpOw0KKw0KICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
LnB1dE5leHRFbnRyeSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFppcEVudHJ5
KHByb2plY3RNZW1iZXIuZ2V0WmlwTmFtZSgpKSk7DQogICAgICAgICAgICAgICAgICAgICBNZW1i
ZXJGaWxlUGVyc2lzdGVyIHBlcnNpc3RlciA9DQpAQCAtMTc0LDcgKzE3Niw3IEBADQogICAgICAg
ICAgICAgICAgICAgICBwZXJzaXN0ZXIuc2F2ZShwcm9qZWN0TWVtYmVyLCBzdHJlYW0pOw0KICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIA0KKw0KICAgICAg
ICAgICAgIGlmIChkb1NhZmVTYXZlcykgew0KICAgICAgICAgICAgICAgICAvLyBpZiBzYXZlIGRp
ZCBub3QgcmFpc2UgYW4gZXhjZXB0aW9uDQogICAgICAgICAgICAgICAgIC8vIGFuZCBuYW1lKyIj
IiBleGlzdHMgbW92ZSBuYW1lKyIjIiB0byBuYW1lKyJ+Ig0KQEAgLTE5Myw3ICsxOTUsNyBAQA0K
ICAgICAgICAgICAgIHByb2dyZXNzTWdyLm5leHRQaGFzZSgpOw0KIA0KICAgICAgICAgfSBjYXRj
aCAoRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiBvY2N1
cmVkIGR1cmluZyBzYXZlIGF0dGVtcHQiLCBlKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVs
LlNFVkVSRSwgIkV4Y2VwdGlvbiBvY2N1cmVkIGR1cmluZyBzYXZlIGF0dGVtcHQiLCBlKTsNCiAg
ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICBpZiAoc3RyZWFtICE9IG51bGwpIHsN
CiAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpOw0KQEAgLTIxNiwxMCArMjE4LDEw
IEBADQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpOw0KICAgICAg
ICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkZh
aWxlZCB0byBjbG9zZSBzYXZlIG91dHB1dCB3cml0ZXIiLCBleCk7DQorICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5TRVZFUkUsICJGYWlsZWQgdG8gY2xvc2Ugc2F2ZSBvdXRwdXQgd3JpdGVyIiwg
ZXgpOw0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0KKw0KICAgICAvKg0KICAgICAgKiBAc2Vl
IG9yZy5hcmdvdW1sLnBlcnNpc3RlbmNlLkFic3RyYWN0RmlsZVBlcnNpc3RlciNpc1NhdmVFbmFi
bGVkKCkNCiAgICAgICovDQpAQCAtMjM0LDcgKzIzNiw3IEBADQogICAgIEBPdmVycmlkZQ0KICAg
ICBwdWJsaWMgUHJvamVjdCBkb0xvYWQoRmlsZSBmaWxlKQ0KICAgICAgICAgdGhyb3dzIE9wZW5F
eGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsNCi0gICAgICAgIA0KKw0KICAgICAgICAg
UHJvZ3Jlc3NNZ3IgcHJvZ3Jlc3NNZ3IgPSBuZXcgUHJvZ3Jlc3NNZ3IoKTsNCiAgICAgICAgIHBy
b2dyZXNzTWdyLnNldE51bWJlck9mUGhhc2VzKDMgKyBVTUxfUEhBU0VTX0xPQUQpOw0KICAgICAg
ICAgVGhyZWFkVXRpbHMuY2hlY2tJZkludGVycnVwdGVkKCk7DQpAQCAtMjU1LDE3ICsyNTcsMTcg
QEANCiAgICAgICAgIC8vIFRPRE86IFRoZSBjb21tZW50ZWQgY29kZSBiZWxvdyB3YXMgY29tbWVu
dGVkIG91dCBieSBCb2IgVGFybGluZw0KICAgICAgICAgLy8gaW4gb3JkZXIgdG8gcmVzb2x2ZSBi
dWdzIDQ4NDUgYW5kIDQ4NTcuIEhvcGVmdWxseSB3ZSBjYW4NCiAgICAgICAgIC8vIGRldGVybWlu
ZSB0aGUgY2F1c2UgYW5kIHJlaW50cm9kdWNlLg0KLSAgICAgICAgDQorDQogICAgICAgICAvL2Jv
b2xlYW4gdXBncmFkZVJlcXVpcmVkID0gIWNoZWNrVmVyc2lvbihmaWxlVmVyc2lvbiwgcmVsZWFz
ZVZlcnNpb24pDQogICAgICAgICBib29sZWFuIHVwZ3JhZGVSZXF1aXJlZCA9IHRydWU7DQotICAg
ICAgICANCisNCiAgICAgICAgIC8vIFVwZ3JhZGUgaXMgaW4gdGhlIHdheSBmb3IgVU1MMiBwcm9q
ZWN0cywgc28gd2UgdHVybiBpdCBvZmYgaW4gdGhhdCBjYXNlOg0KICAgICAgICAgaWYgKE1vZGVs
LmdldEZhY2FkZSgpLmdldFVtbFZlcnNpb24oKS5jaGFyQXQoMCkgPT0gJzInKSB7DQogICAgICAg
ICAgICAgdXBncmFkZVJlcXVpcmVkID0gZmFsc2U7DQogICAgICAgICB9DQotICAgICAgICANCi0g
ICAgICAgIExPRy5pbmZvKCJMb2FkaW5nIHphcmdvIGZpbGUgb2YgdmVyc2lvbiAiICsgZmlsZVZl
cnNpb24pOw0KLSAgICAgICAgDQorDQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJMb2Fk
aW5nIHphcmdvIGZpbGUgb2YgdmVyc2lvbiB7MH0iLCBmaWxlVmVyc2lvbik7DQorDQogICAgICAg
ICBmaW5hbCBQcm9qZWN0IHA7DQogICAgICAgICBpZiAodXBncmFkZVJlcXVpcmVkKSB7DQogICAg
ICAgICAgICAgRmlsZSBjb21iaW5lZEZpbGUgPSB6YXJnb1RvVW1sKGZpbGUsIHByb2dyZXNzTWdy
KTsNCkBAIC0yOTYsMjYgKzI5OCwyOSBAQA0KIA0KICAgICAgICAgICAgIExpc3QgbWVtYmVyTGlz
dCA9IHBhcnNlci5nZXRNZW1iZXJMaXN0KCk7DQogDQotICAgICAgICAgICAgTE9HLmluZm8obWVt
YmVyTGlzdC5zaXplKCkgKyAiIG1lbWJlcnMiKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVs
LklORk8sbWVtYmVyTGlzdC5zaXplKCkgKyAiIG1lbWJlcnMiKTsNCiANCiAgICAgICAgICAgICAv
LyBMb2FkIC54bWkgZmlsZSBiZWZvcmUgYW55IFBHTUwgZmlsZXMNCiAgICAgICAgICAgICAvLyBG
SVhNRTogdGhlIGZvbGxvd2luZyBpcyBsb2FkaW5nIHRoZSBtb2RlbCBiZWZvcmUgYW55dGhpbmcg
ZWxzZS4NCi0gICAgICAgICAgICAvLyBEdWUgdG8gdGhlIFphcmdvIGNvbnRhaW5pbmcgdGhlIHBy
b2ZpbGVzLCBjdXJyZW50bHkgd2UgaGF2ZSANCi0gICAgICAgICAgICAvLyByZW1vdmVkIHRoaXMg
aGFjayBpbiBVbWxGaWxlUGVyc2lzdGVyIGFuZCBJIHRoaW5rIGl0IHNob3VsZCBiZSANCisgICAg
ICAgICAgICAvLyBEdWUgdG8gdGhlIFphcmdvIGNvbnRhaW5pbmcgdGhlIHByb2ZpbGVzLCBjdXJy
ZW50bHkgd2UgaGF2ZQ0KKyAgICAgICAgICAgIC8vIHJlbW92ZWQgdGhpcyBoYWNrIGluIFVtbEZp
bGVQZXJzaXN0ZXIgYW5kIEkgdGhpbmsgaXQgc2hvdWxkIGJlDQogICAgICAgICAgICAgLy8gcmVt
b3ZlZCBmcm9tIGhlcmUgYWxzby4NCiAgICAgICAgICAgICBTdHJpbmcgeG1pRW50cnkgPSBnZXRF
bnRyeU5hbWVzKGZpbGUsICIueG1pIikuaXRlcmF0b3IoKS5uZXh0KCk7DQogICAgICAgICAgICAg
TWVtYmVyRmlsZVBlcnNpc3RlciBwZXJzaXN0ZXIgPSBnZXRNZW1iZXJGaWxlUGVyc2lzdGVyKCJ4
bWkiKTsNCiAgICAgICAgICAgICBVUkwgdXJsID0gbWFrZVppcEVudHJ5VXJsKHRvVVJMKGZpbGUp
LCB4bWlFbnRyeSk7DQogICAgICAgICAgICAgcGVyc2lzdGVyLmxvYWQocCwgbmV3IElucHV0U291
cmNlKHVybC50b0V4dGVybmFsRm9ybSgpKSk7DQotICAgICAgICAgICAgDQorDQogICAgICAgICAg
ICAgLy8gTG9hZCB0aGUgcmVzdA0KICAgICAgICAgICAgIExpc3Q8U3RyaW5nPiBlbnRyaWVzID0g
Z2V0RW50cnlOYW1lcyhmaWxlLCBudWxsKTsNCiAgICAgICAgICAgICBmb3IgKFN0cmluZyBuYW1l
IDogZW50cmllcykgew0KICAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ID0gbmFtZS5zdWJzdHJp
bmcobmFtZS5sYXN0SW5kZXhPZignLicpICsgMSk7DQogICAgICAgICAgICAgICAgIGlmICghImFy
Z28iLmVxdWFscyhleHQpICYmICEieG1pIi5lcXVhbHMoZXh0KSkgew0KICAgICAgICAgICAgICAg
ICAgICAgcGVyc2lzdGVyID0gZ2V0TWVtYmVyRmlsZVBlcnNpc3RlcihleHQpOw0KLSAgICAgICAg
ICAgICAgICAgICAgTE9HLmluZm8oIkxvYWRpbmcgbWVtYmVyIHdpdGggIg0KKw0KKyAgICAgICAg
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiTG9hZGluZyBtZW1iZXIgd2l0aCAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsgcGVyc2lzdGVyLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsNCisNCiAgICAgICAgICAgICAgICAg
ICAgIHVybCA9IG1ha2VaaXBFbnRyeVVybCh0b1VSTChmaWxlKSwgbmFtZSk7DQogICAgICAgICAg
ICAgICAgICAgICBwZXJzaXN0ZXIubG9hZChwLCBuZXcgSW5wdXRTb3VyY2UodXJsLnRvRXh0ZXJu
YWxGb3JtKCkpKTsNCiAgICAgICAgICAgICAgICAgfQ0KQEAgLTMzNSwyMSArMzQwLDIzIEBADQog
ICAgICAgICAgICAgdGhyb3cgbmV3IE9wZW5FeGNlcHRpb24oZSk7DQogICAgICAgICB9DQogICAg
IH0NCi0gICAgDQorDQogICAgIHByaXZhdGUgVVJMIHRvVVJMKEZpbGUgZmlsZSkgdGhyb3dzIE1h
bGZvcm1lZFVSTEV4Y2VwdGlvbiB7DQotICAgICAgICByZXR1cm4gZmlsZS50b1VSSSgpLnRvVVJM
KCk7ICAgICAgICANCisgICAgICAgIHJldHVybiBmaWxlLnRvVVJJKCkudG9VUkwoKTsNCiAgICAg
fQ0KIA0KIA0KICAgICBwcml2YXRlIEZpbGUgemFyZ29Ub1VtbChGaWxlIGZpbGUsIFByb2dyZXNz
TWdyIHByb2dyZXNzTWdyKQ0KICAgICAgICAgdGhyb3dzIE9wZW5FeGNlcHRpb24sIEludGVycnVw
dGVkRXhjZXB0aW9uIHsNCi0gICAgICAgIA0KKw0KICAgICAgICAgRmlsZSBjb21iaW5lZEZpbGUg
PSBudWxsOw0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBjb21iaW5lZEZpbGUgPSBGaWxl
LmNyZWF0ZVRlbXBGaWxlKCJjb21iaW5lZHphcmdvXyIsICIudW1sIik7DQotICAgICAgICAgICAg
TE9HLmluZm8oDQotICAgICAgICAgICAgICAgICJDb21iaW5pbmcgb2xkIHN0eWxlIHphcmdvIHN1
YiBmaWxlcyBpbnRvIG5ldyBzdHlsZSB1bWwgZmlsZSAiDQotICAgICAgICAgICAgICAgICAgICAr
IGNvbWJpbmVkRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSk7DQorICAgICAgICAgICAgTE9HLmxvZyhM
ZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAgICAgIkNvbWJpbmluZyBvbGQgc3R5bGUgemFy
Z28gc3ViIGZpbGVzICINCisgICAgICAgICAgICAgICAgICAgICsgImludG8gbmV3IHN0eWxlIHVt
bCBmaWxlIHswfSIsDQorICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEZpbGUuZ2V0QWJzb2x1
dGVQYXRoKCkpOw0KKw0KICAgICAgICAgICAgIGNvbWJpbmVkRmlsZS5kZWxldGVPbkV4aXQoKTsN
CiANCiAgICAgICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBBcmdvLmdldEVuY29kaW5nKCk7DQpA
QCAtMzYwLDEzICszNjcsMTMgQEANCiANCiAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiPD94
bWwgdmVyc2lvbiA9IFwiMS4wXCIgIiArICJlbmNvZGluZyA9IFwiIg0KICAgICAgICAgICAgICAg
ICAgICAgKyBlbmNvZGluZyArICJcIiA/PiIpOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAg
ICAgIGNvcHlBcmdvKGZpbGUsIGVuY29kaW5nLCB3cml0ZXIpOw0KLSAgICAgICAgICAgIA0KKw0K
ICAgICAgICAgICAgIHByb2dyZXNzTWdyLm5leHRQaGFzZSgpOw0KLSAgICAgICAgICAgIA0KKw0K
ICAgICAgICAgICAgIGNvcHlNZW1iZXIoZmlsZSwgInByb2ZpbGUiLCBlbmNvZGluZywgd3JpdGVy
KTsNCi0gICAgICAgICAgICANCisNCiAgICAgICAgICAgICBjb3B5WG1pKGZpbGUsIGVuY29kaW5n
LCB3cml0ZXIpOw0KIA0KICAgICAgICAgICAgIGNvcHlEaWFncmFtcyhmaWxlLCBlbmNvZGluZywg
d3JpdGVyKTsNCkBAIC0zNzUsMjMgKzM4MiwyMyBAQA0KICAgICAgICAgICAgIC8vIGFueSBtb2Rl
bCBlbGVtZW50cyBvciBmaWdzIHRoYXQgdGhlIHRvZG8gaXRlbXMgcmVmZXIgdG8NCiAgICAgICAg
ICAgICAvLyB3aWxsIGV4aXN0IGJlZm9yZSBjcmVhdGluZyBjcml0aWNzLg0KICAgICAgICAgICAg
IGNvcHlNZW1iZXIoZmlsZSwgInRvZG8iLCBlbmNvZGluZywgd3JpdGVyKTsNCi0gICAgICAgICAg
ICANCisNCiAgICAgICAgICAgICBwcm9ncmVzc01nci5uZXh0UGhhc2UoKTsNCi0gICAgICAgICAg
ICANCisNCiAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiPC91bWw+Iik7DQogICAgICAgICAg
ICAgd3JpdGVyLmNsb3NlKCk7DQotICAgICAgICAgICAgTE9HLmluZm8oIkNvbXBsZXRlZCBjb21i
aW5pbmcgZmlsZXMiKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJDb21wbGV0
ZWQgY29tYmluaW5nIGZpbGVzIik7DQogICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7
DQogICAgICAgICAgICAgdGhyb3cgbmV3IE9wZW5FeGNlcHRpb24oZSk7DQogICAgICAgICB9DQog
ICAgICAgICByZXR1cm4gY29tYmluZWRGaWxlOw0KICAgICB9DQogDQotICAgIA0KKw0KICAgICBw
cml2YXRlIHZvaWQgY29weUFyZ28oRmlsZSBmaWxlLCBTdHJpbmcgZW5jb2RpbmcsIFByaW50V3Jp
dGVyIHdyaXRlcikNCiAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgTWFsZm9ybWVkVVJMRXhj
ZXB0aW9uLCBPcGVuRXhjZXB0aW9uLA0KICAgICAgICAgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2Vw
dGlvbiB7DQotICAgICAgICANCisNCiAgICAgICAgIGludCBwZ21sQ291bnQgPSBnZXRQZ21sQ291
bnQoZmlsZSk7DQogICAgICAgICBib29sZWFuIGNvbnRhaW5zVG9EbyA9IGNvbnRhaW5zVG9kbyhm
aWxlKTsNCiAgICAgICAgIGJvb2xlYW4gY29udGFpbnNQcm9maWxlID0gY29udGFpbnNQcm9maWxl
KGZpbGUpOw0KQEAgLTM5OSwxNCArNDA2LDE0IEBADQogICAgICAgICAvLyBmaXJzdCByZWFkIHRo
ZSAuYXJnbyBmaWxlIGZyb20gWmlwDQogICAgICAgICBaaXBJbnB1dFN0cmVhbSB6aXMgPQ0KICAg
ICAgICAgICAgIG9wZW5aaXBTdHJlYW1BdCh0b1VSTChmaWxlKSwgRmlsZUNvbnN0YW50cy5QUk9K
RUNUX0ZJTEVfRVhUKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgaWYgKHppcyA9PSBudWxsKSB7
DQogICAgICAgICAgICAgdGhyb3cgbmV3IE9wZW5FeGNlcHRpb24oDQogICAgICAgICAgICAgICAg
ICAgICAiVGhlcmUgaXMgbm8gLmFyZ28gZmlsZSBpbiB0aGUgLnphcmdvIik7DQogICAgICAgICB9
DQotICAgICAgICANCisNCiAgICAgICAgIFN0cmluZyBsaW5lOw0KLSAgICAgICAgQnVmZmVyZWRS
ZWFkZXIgcmVhZGVyID0gDQorICAgICAgICBCdWZmZXJlZFJlYWRlciByZWFkZXIgPQ0KICAgICAg
ICAgICAgIG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoemlzLCBlbmNv
ZGluZykpOw0KICAgICAgICAgLy8gS2VlcCByZWFkaW5nIHRpbGwgd2UgaGl0IHRoZSA8YXJnbz4g
dGFnDQogICAgICAgICBTdHJpbmcgcm9vdExpbmU7DQpAQCAtNDIzLDE0ICs0MzAsMTQgQEANCiAg
ICAgICAgIFN0cmluZyB2ZXJzaW9uID0gZ2V0VmVyc2lvbihyb290TGluZSk7DQogICAgICAgICB3
cml0ZXIucHJpbnRsbigiPHVtbCB2ZXJzaW9uPVwiIiArIHZlcnNpb24gKyAiXCI+Iik7DQogICAg
ICAgICB3cml0ZXIucHJpbnRsbihyb290TGluZSk7DQotICAgICAgICBMT0cuaW5mbygiVHJhbnNm
ZXJpbmcgYXJnbyBjb250ZW50cyIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiVHJh
bnNmZXJpbmcgYXJnbyBjb250ZW50cyIpOw0KICAgICAgICAgaW50IG1lbWJlckNvdW50ID0gMDsN
CiAgICAgICAgIHdoaWxlICgobGluZSA9IHJlYWRlci5yZWFkTGluZSgpKSAhPSBudWxsKSB7DQog
ICAgICAgICAgICAgaWYgKGxpbmUudHJpbSgpLnN0YXJ0c1dpdGgoIjxtZW1iZXIiKSkgew0KICAg
ICAgICAgICAgICAgICArK21lbWJlckNvdW50Ow0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICBpZiAobGluZS50cmltKCkuZXF1YWxzKCI8L2FyZ28+IikgJiYgbWVtYmVyQ291bnQgPT0gMCkg
ew0KLSAgICAgICAgICAgICAgICBMT0cuaW5mbygiSW5zZXJ0aW5nIG1lbWJlciBpbmZvIik7DQor
ICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIkluc2VydGluZyBtZW1iZXIgaW5m
byIpOw0KICAgICAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiPG1lbWJlciB0eXBlPSd4bWkn
IG5hbWU9Jy54bWknIC8+Iik7DQogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
cGdtbENvdW50OyArK2kpIHsNCiAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wcmludGxuKCI8
bWVtYmVyIHR5cGU9J3BnbWwnIG5hbWU9Jy5wZ21sJyAvPiIpOw0KQEAgLTQ0Niw5ICs0NTMsOSBA
QA0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbihsaW5lKTsNCiAg
ICAgICAgIH0NCi0gICAgICAgIGlmIChMT0cuaXNJbmZvRW5hYmxlZCgpKSB7DQotICAgICAgICAg
ICAgTE9HLmluZm8oIk1lbWJlciBjb3VudCA9ICIgKyBtZW1iZXJDb3VudCk7DQotICAgICAgICB9
DQorDQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJNZW1iZXIgY291bnQgPSB7MH0iLCBt
ZW1iZXJDb3VudCk7DQorDQogICAgICAgICB6aXMuY2xvc2UoKTsNCiAgICAgICAgIHJlYWRlci5j
bG9zZSgpOw0KICAgICB9DQpAQCAtNDY5LDEwICs0NzYsMTAgQEANCiAgICAgICAgIHJlYWRlci5j
bG9zZSgpOw0KICAgICB9DQogDQotICAgIA0KKw0KICAgICBwcml2YXRlIHZvaWQgY29weURpYWdy
YW1zKEZpbGUgZmlsZSwgU3RyaW5nIGVuY29kaW5nLCBQcmludFdyaXRlciB3cml0ZXIpDQogICAg
ICAgICB0aHJvd3MgSU9FeGNlcHRpb24gew0KLSAgICAgICAgDQorDQogICAgICAgICAvLyBMb29w
IHJvdW5kIGxvYWRpbmcgdGhlIGRpYWdyYW1zDQogICAgICAgICBaaXBJbnB1dFN0cmVhbSB6aXMg
PSBuZXcgWmlwSW5wdXRTdHJlYW0odG9VUkwoZmlsZSkub3BlblN0cmVhbSgpKTsNCiAgICAgICAg
IFN1YklucHV0U3RyZWFtIHN1YiA9IG5ldyBTdWJJbnB1dFN0cmVhbSh6aXMpOw0KQEAgLTQ5Miw3
ICs0OTksNyBAQA0KICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAg
ICAgd3JpdGVyLnByaW50bG4oZmlyc3RMaW5lKTsNCiAgICAgICAgICAgICAgICAgfQ0KLSAgICAg
ICAgICAgICAgICANCisNCiAgICAgICAgICAgICAgICAgcmVhZGVyVG9Xcml0ZXIocmVhZGVyLCB3
cml0ZXIpOw0KICAgICAgICAgICAgICAgICBzdWIuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICAg
cmVhZGVyLmNsb3NlKCk7DQpAQCAtNTAwLDE4ICs1MDcsMTggQEANCiAgICAgICAgIH0NCiAgICAg
ICAgIHppcy5jbG9zZSgpOw0KICAgICB9DQotICAgIA0KLSAgICANCi0gICAgcHJpdmF0ZSB2b2lk
IGNvcHlNZW1iZXIoRmlsZSBmaWxlLCBTdHJpbmcgdGFnLCBTdHJpbmcgb3V0cHV0RW5jb2Rpbmcs
IA0KKw0KKw0KKyAgICBwcml2YXRlIHZvaWQgY29weU1lbWJlcihGaWxlIGZpbGUsIFN0cmluZyB0
YWcsIFN0cmluZyBvdXRwdXRFbmNvZGluZywNCiAgICAgICAgICAgICBQcmludFdyaXRlciB3cml0
ZXIpIHRocm93cyBJT0V4Y2VwdGlvbiwgTWFsZm9ybWVkVVJMRXhjZXB0aW9uLA0KICAgICAgICAg
ICAgICAgICBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHsNCiANCiAgICAgICAgIFppcElu
cHV0U3RyZWFtIHppcyA9IG9wZW5aaXBTdHJlYW1BdCh0b1VSTChmaWxlKSwgIi4iICsgdGFnKTsN
Ci0gICAgICAgIA0KKw0KICAgICAgICAgaWYgKHppcyAhPSBudWxsKSB7DQogICAgICAgICAgICAg
SW5wdXRTdHJlYW1SZWFkZXIgaXNyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKHppcywgb3V0cHV0
RW5jb2RpbmcpOw0KICAgICAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIHJlYWRlciA9IG5ldyBCdWZm
ZXJlZFJlYWRlcihpc3IpOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgIFN0cmluZyBm
aXJzdExpbmUgPSByZWFkZXIucmVhZExpbmUoKTsNCiAgICAgICAgICAgICBpZiAoZmlyc3RMaW5l
LnN0YXJ0c1dpdGgoIjw/eG1sIikpIHsNCiAgICAgICAgICAgICAgICAgLy8gU2tpcCB0aGUgMiBs
aW5lcw0KQEAgLTUzNyw5ICs1NDQsOSBAQA0KICAgICAgICAgaW50IGNoOw0KICAgICAgICAgd2hp
bGUgKChjaCA9IHJlYWRlci5yZWFkKCkpICE9IC0xKSB7DQogICAgICAgICAgICAgaWYgKGNoID09
IDB4RkZGRikgew0KLSAgICAgICAgICAgICAgICBMT0cuaW5mbygiU3RyaXBwaW5nIG91dCAweEZG
RkYgZnJvbSBzYXZlIGZpbGUiKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZP
LCAiU3RyaXBwaW5nIG91dCAweEZGRkYgZnJvbSBzYXZlIGZpbGUiKTsNCiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGNoID09IDgpIHsNCi0gICAgICAgICAgICAgICAgTE9HLmluZm8oIlN0cmlwcGlu
ZyBvdXQgMHg4IGZyb20gc2F2ZSBmaWxlIik7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2
ZWwuSU5GTywgIlN0cmlwcGluZyBvdXQgMHg4IGZyb20gc2F2ZSBmaWxlIik7DQogICAgICAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlKGNoKTsNCiAgICAgICAg
ICAgICB9DQpAQCAtNTgyLDcgKzU4OSw3IEBADQogICAgICAgICBTdHJpbmcgZW50cnlVUkwgPSAi
amFyOiIgKyB1cmwgKyAiIS8iICsgZW50cnlOYW1lOw0KICAgICAgICAgcmV0dXJuIG5ldyBVUkwo
ZW50cnlVUkwpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogQSBzdHJlYW0g
b2YgaW5wdXQgc3RyZWFtcyBmb3IgcmVhZGluZyB0aGUgWmlwcGVkIGZpbGUuDQogICAgICAqLw0K
QEAgLTYyMCw3ICs2MjcsNyBAQA0KICAgICAgICAgICAgIHJldHVybiBpbi5nZXROZXh0RW50cnko
KTsNCiAgICAgICAgIH0NCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSBpbnQgZ2V0UGdt
bENvdW50KEZpbGUgZmlsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsNCiAgICAgICAgIHJldHVybiBn
ZXRFbnRyeU5hbWVzKGZpbGUsICIucGdtbCIpLnNpemUoKTsNCiAgICAgfQ0KQEAgLTYyOCwxOSAr
NjM1LDE5IEBADQogICAgIHByaXZhdGUgYm9vbGVhbiBjb250YWluc1RvZG8oRmlsZSBmaWxlKSB0
aHJvd3MgSU9FeGNlcHRpb24gew0KICAgICAgICAgcmV0dXJuICFnZXRFbnRyeU5hbWVzKGZpbGUs
ICIudG9kbyIpLmlzRW1wdHkoKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSBib29s
ZWFuIGNvbnRhaW5zUHJvZmlsZShGaWxlIGZpbGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAg
ICAgICByZXR1cm4gIWdldEVudHJ5TmFtZXMoZmlsZSwgIi4iICsgUHJvZmlsZUNvbmZpZ3VyYXRp
b24uRVhURU5TSU9OKQ0KICAgICAgICAgICAgICAgICAuaXNFbXB0eSgpOw0KICAgICB9DQotICAg
IA0KKw0KICAgICAvKioNCiAgICAgICogR2V0IGEgbGlzdCBvZiB6aXAgZmlsZSBlbnRyaWVzIHdo
aWNoIGVuZCB3aXRoIHRoZSBnaXZlbiBleHRlbnNpb24uDQogICAgICAqIElmIHRoZSBleHRlbnNp
b24gaXMgbnVsbCwgYWxsIGVudHJpZXMgYXJlIHJldHVybmVkLg0KICAgICAgKi8NCiAgICAgcHJp
dmF0ZSBMaXN0PFN0cmluZz4gZ2V0RW50cnlOYW1lcyhGaWxlIGZpbGUsIFN0cmluZyBleHRlbnNp
b24pDQogICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiB7
DQotICAgICAgICANCisNCiAgICAgICAgIFppcElucHV0U3RyZWFtIHppcyA9IG5ldyBaaXBJbnB1
dFN0cmVhbSh0b1VSTChmaWxlKS5vcGVuU3RyZWFtKCkpOw0KICAgICAgICAgTGlzdDxTdHJpbmc+
IHJlc3VsdCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOw0KICAgICAgICAgWmlwRW50cnkgZW50
cnkgPSB6aXMuZ2V0TmV4dEVudHJ5KCk7DQpAQCAtNjU0LDYgKzY2MSw2IEBADQogICAgICAgICB6
aXMuY2xvc2UoKTsNCiAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgIH0NCi0gICAgDQorDQog
DQogfQ0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9w
ZXJzaXN0ZW5jZS9aaXBGaWxlUGVyc2lzdGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGln
cmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wZXJzaXN0ZW5jZS9aaXBGaWxlUGVyc2lzdGVyLmphdmE/dmlldz1kaWZmJnBh
dGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcGVyc2lzdGVuY2UvWmlwRmls
ZVBlcnNpc3Rlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL3BlcnNpc3RlbmNlL1ppcEZpbGVQZXJzaXN0ZXIuamF2YQkyMDEyLTEyLTMw
IDA1OjA2OjAxLTA4MDANCkBAIC00NywxMSArNDcsMTIgQEANCiBpbXBvcnQgamF2YS5pby5JbnB1
dFN0cmVhbTsNCiBpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07DQogaW1wb3J0IGphdmEubmV0
LlVSTDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRp
bC5sb2dnaW5nLkxvZ2dlcjsNCiBpbXBvcnQgamF2YS51dGlsLnppcC5aaXBFbnRyeTsNCiBpbXBv
cnQgamF2YS51dGlsLnppcC5aaXBJbnB1dFN0cmVhbTsNCiBpbXBvcnQgamF2YS51dGlsLnppcC5a
aXBPdXRwdXRTdHJlYW07DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGlt
cG9ydCBvcmcuYXJnb3VtbC5pMThuLlRyYW5zbGF0b3I7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmtl
cm5lbC5Qcm9qZWN0Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdEZhY3Rvcnk7
DQpAQCAtNzEsNyArNzIsNyBAQA0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KICAgICBwcml2
YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIo
WmlwRmlsZVBlcnNpc3Rlci5jbGFzcyk7DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFppcEZp
bGVQZXJzaXN0ZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIFRoZSBj
b25zdHJ1Y3Rvci4NCkBAIC05Miw3ICs5Myw3IEBADQogICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0
RGVzYygpIHsNCiAgICAgICAgIHJldHVybiBUcmFuc2xhdG9yLmxvY2FsaXplKCJjb21ib2JveC5m
aWxlZmlsdGVyLnppcCIpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKg0KICAgICAgKiBAc2Vl
IG9yZy5hcmdvdW1sLnBlcnNpc3RlbmNlLlhtaUZpbGVQZXJzaXN0ZXIjaXNTYXZlRW5hYmxlZCgp
DQogICAgICAqLw0KQEAgLTExNSwxMiArMTE2LDEyIEBADQogICAgICAqLw0KICAgICBwdWJsaWMg
dm9pZCBkb1NhdmUoUHJvamVjdCBwcm9qZWN0LCBGaWxlIGZpbGUpIHRocm93cyBTYXZlRXhjZXB0
aW9uIHsNCiANCi0gICAgICAgIExPRy5pbmZvKCJSZWNlaXZpbmcgZmlsZSAnIiArIGZpbGUuZ2V0
TmFtZSgpICsgIiciKTsNCi0gICAgICAgIA0KLSAgICAgICAgLyogUmV0YWluIHRoZSBwcmV2aW91
cyBwcm9qZWN0IGZpbGUgZXZlbiB3aGVuIHRoZSBzYXZlIG9wZXJhdGlvbiANCisgICAgICAgIExP
Ry5sb2coTGV2ZWwuSU5GTywgIlJlY2VpdmluZyBmaWxlIHswfSIsIGZpbGUuZ2V0TmFtZSgpKTsN
CisNCisgICAgICAgIC8qIFJldGFpbiB0aGUgcHJldmlvdXMgcHJvamVjdCBmaWxlIGV2ZW4gd2hl
biB0aGUgc2F2ZSBvcGVyYXRpb24NCiAgICAgICAgICAqIGNyYXNoZXMgaW4gdGhlIG1pZGRsZS4g
QWxzbyBjcmVhdGUgYSBiYWNrdXAgZmlsZSBhZnRlciBzYXZpbmcuICovDQogICAgICAgICBib29s
ZWFuIGRvU2FmZVNhdmVzID0gdXNlU2FmZVNhdmVzKCk7DQotICAgICAgICANCisNCiAgICAgICAg
IEZpbGUgbGFzdEFyY2hpdmVGaWxlID0gbmV3IEZpbGUoZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSAr
ICJ+Iik7DQogICAgICAgICBGaWxlIHRlbXBGaWxlID0gbnVsbDsNCiANCkBAIC0xNTMsMTggKzE1
NCwxNyBAQA0KICAgICAgICAgICAgICAgICBQcm9qZWN0TWVtYmVyIHByb2plY3RNZW1iZXIgPQ0K
ICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5nZXRNZW1iZXJzKCkuZ2V0KGkpOw0KICAgICAg
ICAgICAgICAgICBpZiAocHJvamVjdE1lbWJlci5nZXRUeXBlKCkuZXF1YWxzSWdub3JlQ2FzZSgi
eG1pIikpIHsNCi0gICAgICAgICAgICAgICAgICAgIGlmIChMT0cuaXNJbmZvRW5hYmxlZCgpKSB7
DQotICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmluZm8oIlNhdmluZyBtZW1iZXIgb2YgdHlw
ZTogIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKHByb2plY3QuZ2V0TWVtYmVy
cygpDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChpKSkuZ2V0VHlw
ZSgpKTsNCi0gICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIExPRy5s
b2coTGV2ZWwuRklORSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhdmluZyBtZW1i
ZXIgb2YgdHlwZTogezB9IiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdE1l
bWJlci5nZXRUeXBlKCkpOw0KKw0KICAgICAgICAgICAgICAgICAgICAgTWVtYmVyRmlsZVBlcnNp
c3RlciBwZXJzaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBNb2RlbE1lbWJl
ckZpbGVQZXJzaXN0ZXIoKTsNCiAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3Rlci5zYXZlKHBy
b2plY3RNZW1iZXIsIGJ1ZmZlcmVkU3RyZWFtKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICBzdHJlYW0uY2xvc2UoKTsNCi0gICAgICAgICAgICANCisN
CiAgICAgICAgICAgICBpZiAoZG9TYWZlU2F2ZXMpIHsNCiAgICAgICAgICAgICAgICAgLy8gaWYg
c2F2ZSBkaWQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbg0KICAgICAgICAgICAgICAgICAvLyBhbmQg
bmFtZSsiIyIgZXhpc3RzIG1vdmUgbmFtZSsiIyIgdG8gbmFtZSsifiINCkBAIC0xODAsNyArMTgw
LDcgQEANCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0gY2F0
Y2ggKEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmVycm9yKCJFeGNlcHRpb24gb2Nj
dXJlZCBkdXJpbmcgc2F2ZSBhdHRlbXB0IiwgZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5TRVZFUkUsICJFeGNlcHRpb24gb2NjdXJlZCBkdXJpbmcgc2F2ZSBhdHRlbXB0IiwgZSk7DQog
ICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgYnVmZmVyZWRTdHJlYW0uY2xvc2Uo
KTsNCiAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgew0KQEAgLTIwMSw3ICsy
MDEsNyBAQA0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBidWZmZXJlZFN0cmVhbS5jbG9z
ZSgpOw0KICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsNCi0gICAgICAgICAgICBM
T0cuZXJyb3IoIkZhaWxlZCB0byBjbG9zZSBzYXZlIG91dHB1dCB3cml0ZXIiLCBleCk7DQorICAg
ICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJGYWlsZWQgdG8gY2xvc2Ugc2F2ZSBvdXRw
dXQgd3JpdGVyIiwgZXgpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpAQCAtMjExLDcgKzIxMSw3
IEBADQogICAgIHB1YmxpYyBQcm9qZWN0IGRvTG9hZChGaWxlIGZpbGUpDQogICAgICAgICB0aHJv
d3MgT3BlbkV4Y2VwdGlvbiB7DQogDQotICAgICAgICBMT0cuaW5mbygiUmVjZWl2aW5nIGZpbGUg
JyIgKyBmaWxlLmdldE5hbWUoKSArICInIik7DQorICAgICAgICBMT0cubG9nKExldmVsLklORk8s
ICJSZWNlaXZpbmcgZmlsZSB7MH0iLCBmaWxlLmdldE5hbWUoKSk7DQogDQogICAgICAgICB0cnkg
ew0KICAgICAgICAgICAgIFByb2plY3QgcCA9IFByb2plY3RGYWN0b3J5LmdldEluc3RhbmNlKCku
Y3JlYXRlUHJvamVjdCgpOw0KQEAgLTIzMiw3ICsyMzIsNyBAQA0KIA0KICAgICAgICAgICAgIE1v
ZGVsTWVtYmVyRmlsZVBlcnNpc3RlciBtb2RlbFBlcnNpc3RlciA9DQogICAgICAgICAgICAgICAg
IG5ldyBNb2RlbE1lbWJlckZpbGVQZXJzaXN0ZXIoKTsNCi0gICAgICAgICAgICANCisNCiAgICAg
ICAgICAgICBtb2RlbFBlcnNpc3Rlci5yZWFkTW9kZWxzKGlzKTsNCiAgICAgICAgICAgICAvLyBU
T0RPIEhhbmRsZSBtdWx0aXBsZSB0b3AgbGV2ZWwgcGFja2FnZXMNCiAgICAgICAgICAgICBPYmpl
Y3QgbW9kZWwgPSBtb2RlbFBlcnNpc3Rlci5nZXRDdXJNb2RlbCgpOw0KQEAgLTI3NSw3ICsyNzUs
NyBAQA0KIA0KICAgICAvKioNCiAgICAgICogUmV0dXJucyBmYWxzZS4gT25seSBBcmdvIHNwZWNp
ZmljIGZpbGVzIGhhdmUgYW4gaWNvbi4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBzZWUg
b3JnLmFyZ291bWwucGVyc2lzdGVuY2UuQWJzdHJhY3RGaWxlUGVyc2lzdGVyI2hhc0FuSWNvbigp
DQogICAgICAqLw0KICAgICBAT3ZlcnJpZGUNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9GaWxlTW9kZWxMb2FkZXIuamF2YQ0KVXJsOiBo
dHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvRmlsZU1vZGVsTG9hZGVyLmphdmE/
dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmls
ZS9GaWxlTW9kZWxMb2FkZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL0ZpbGVNb2RlbExvYWRlci5qYXZhCTIwMTItMTIt
MzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVs
b3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cN
CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp
bmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhp
cyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00Miw4ICs0Miw4IEBADQog
aW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsNCiBpbXBvcnQgamF2YS5uZXQu
VVJMOw0KIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCi0NCi1pbXBvcnQgb3JnLmFwYWNo
ZS5sb2c0ai5Mb2dnZXI7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9y
dCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogLyoqDQogICogQW4gaW1wbGVtZW50YXRp
b24gZm9yIHRoZSBQcm9maWxlTW9kZWxMb2FkZXIgdGhhdCBsb2FkcyBwcm9maWxlcyBmcm9tIGZp
bGVzLg0KQEAgLTUyLDExICs1MiwxNCBAQA0KICAqLw0KIHB1YmxpYyBjbGFzcyBGaWxlTW9kZWxM
b2FkZXIgZXh0ZW5kcyBVUkxNb2RlbExvYWRlciB7DQogDQotICAgIHByaXZhdGUgc3RhdGljIGZp
bmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKEZpbGVNb2RlbExvYWRlci5jbGFzcyk7
DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2Vy
LmdldExvZ2dlcihGaWxlTW9kZWxMb2FkZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCi0gICAgcHVi
bGljIENvbGxlY3Rpb24gbG9hZE1vZGVsKFByb2ZpbGVSZWZlcmVuY2UgcmVmZXJlbmNlKSANCisg
ICAgcHVibGljIENvbGxlY3Rpb24gbG9hZE1vZGVsKFByb2ZpbGVSZWZlcmVuY2UgcmVmZXJlbmNl
KQ0KICAgICAgICAgdGhyb3dzIFByb2ZpbGVFeGNlcHRpb24gew0KLSAgICAgICAgTE9HLmluZm8o
IkxvYWRpbmcgcHJvZmlsZSBmcm9tIGZpbGUnIiArIHJlZmVyZW5jZS5nZXRQYXRoKCkgKyAiJyIp
Ow0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAiTG9hZGlu
ZyBwcm9maWxlIGZyb20gZmlsZSB7MH0iLCByZWZlcmVuY2UuZ2V0UGF0aCgpKTsNCisNCiAgICAg
ICAgIHRyeSB7DQogICAgICAgICAgICAgRmlsZSBtb2RlbEZpbGUgPSBuZXcgRmlsZShyZWZlcmVu
Y2UuZ2V0UGF0aCgpKTsNCiAgICAgICAgICAgICBVUkwgdXJsID0gbW9kZWxGaWxlLnRvVVJJKCku
dG9VUkwoKTsNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvcHJvZmlsZS9Qcm9maWxlRmFjYWRlLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlz
Lm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9wcm9maWxlL1Byb2ZpbGVGYWNhZGUuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkw
NyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL1Byb2ZpbGVGYWNhZGUuamF2YQko
b3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9m
aWxlL1Byb2ZpbGVGYWNhZGUuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYg
KzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDcsMjAxMCBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDctMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJl
IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGlj
ZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBp
cyBhdmFpbGFibGUgYXQNCkBAIC0zOSwyMiArMzksMjUgQEANCiANCiBwYWNrYWdlIG9yZy5hcmdv
dW1sLnByb2ZpbGU7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KK2ltcG9y
dCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9n
Z2VyOw0KKw0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvZmlsZUNvbmZpZ3VyYXRpb247
DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLkludmFsaWRFbGVtZW50RXhjZXB0aW9uOw0KIA0K
IC8qKg0KLSAqIFRoZSA8YSBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhY2Fk
ZV9wYXR0ZXJuIj5GYWNhZGU8L2E+IG9mIHRoZSANCi0gKiBwcm9maWxlIHN1YnN5c3RlbS4gDQot
ICogSXQgcHJvdmlkZXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSB0byB0aGUgc3Vic3lzdGVtLCBh
bmQgYWNjZXNzIHRvIG9iamVjdHMgDQorICogVGhlIDxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvRmFjYWRlX3BhdHRlcm4iPkZhY2FkZTwvYT4gb2YgdGhlDQorICogcHJvZmls
ZSBzdWJzeXN0ZW0uDQorICogSXQgcHJvdmlkZXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSB0byB0
aGUgc3Vic3lzdGVtLCBhbmQgYWNjZXNzIHRvIG9iamVjdHMNCiAgKiBvZiB0aGUgc3Vic3lzdGVt
IHdoZW4gdGhlIG1ldGhvZHMgaXQgcHJvdmlkZXMgZGlyZWN0bHkgYXJlbid0IGVub3VnaC4NCiAg
Kg0KICAqIEBhdXRob3IgTHVpcyBTZXJnaW8gT2xpdmVpcmEgKGV1bHVpcykNCiAgKiBAc2luY2Ug
MC4yNS40DQogICovDQogcHVibGljIGNsYXNzIFByb2ZpbGVGYWNhZGUgew0KLSAgICANCi0gICAg
cHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoUHJvZmls
ZUZhY2FkZS5jbGFzcyk7DQorDQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cg
PQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihQcm9maWxlRmFjYWRlLmNsYXNzLmdldE5hbWUo
KSk7DQogDQogICAgIC8qKg0KICAgICAgKiBSZWdpc3RlciBhIHByb2ZpbGUgaW4gdGhlIHtAbGlu
ayBQcm9maWxlTWFuYWdlcn0uDQpAQCAtODMsNyArODYsNyBAQA0KICAgICB9DQogDQogICAgIHBy
aXZhdGUgc3RhdGljIHZvaWQgbm90SW5pdGlhbGl6ZWQoU3RyaW5nIHN0cmluZykgew0KLSAgICAg
ICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlByb2ZpbGVGYWNhZGUncyAiICsgc3RyaW5n
ICANCisgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJQcm9maWxlRmFjYWRlJ3Mg
IiArIHN0cmluZw0KICAgICAgICAgICAgICAgICArICIgaXNuJ3QgaW5pdGlhbGl6ZWQhIik7DQog
ICAgIH0NCiANCkBAIC0xMDUsMTIgKzEwOCwxMyBAQA0KICAgICAgICAgICAgICAgICB0cnkgew0K
ICAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5yZW1vdmVQcm9maWxlKHApOw0KICAgICAgICAg
ICAgICAgICB9IGNhdGNoIChJbnZhbGlkRWxlbWVudEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAg
ICAgICAgICAgICBMT0cuZGVidWcoIkF0dGVtcHRlZCB0byBkZWxldGUgZXh0ZW50IHR3aWNlIGlu
IHJlbW92ZUFsbFByb2ZpbGVzICIpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5GSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0ZW1wdGVkIHRvIGRlbGV0
ZSBleHRlbnQgdHdpY2UuIik7DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQog
ICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBSZXNldCBwcm9m
aWxlIHN1YnN5c3RlbSB0byBpbml0aWFsIHN0YXRlIChwcmltYXJpbHkgZm9yIHRlc3RpbmcpLg0K
ICAgICAgKi8NCkBAIC0xMzAsMTEgKzEzNCwxMSBAQA0KIA0KICAgICAvKioNCiAgICAgICogQXBw
bGllcyB0aGUgZ2l2ZW4gUHJvZmlsZUNvbmZpZ3VyYXRpb24gdG8gQXJnb1VNTA0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogQHBhcmFtIHBjIHRoZSBwcm9maWxlIGNvbmZpZ3VyYXRpb24NCiAg
ICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhcHBseUNvbmZpZ3VyYXRpb24oUHJvZmls
ZUNvbmZpZ3VyYXRpb24gcGMpIHsNCiAgICAgICAgIGdldE1hbmFnZXIoKS5hcHBseUNvbmZpZ3Vy
YXRpb24ocGMpOw0KICAgICB9DQotICAgIA0KKw0KIH0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9SZWFkZXJNb2RlbExvYWRlci5qYXZh
DQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3Ry
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9SZWFkZXJNb2RlbExv
YWRlci5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL3Byb2ZpbGUvUmVhZGVyTW9kZWxMb2FkZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL1JlYWRlck1vZGVsTG9hZGVy
LmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQk
DQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1
dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9y
cyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQg
dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBh
Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQw
LDMwICs0MCwzMSBAQA0KIA0KIGltcG9ydCBqYXZhLmlvLlJlYWRlcjsNCiBpbXBvcnQgamF2YS51
dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9y
dCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGou
TG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5Nb2RlbDsNCiBpbXBvcnQgb3JnLmFy
Z291bWwubW9kZWwuVW1sRXhjZXB0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5YbWlS
ZWFkZXI7DQogaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOw0KIA0KIC8qKg0KLSAqIFRP
RE86IHRoaXMgZG9lc24ndCBuZWVkIGEgZnVsbCBQcm9maWxlUmVmZXJlbmNlIHNpbmNlIGl0IHVz
ZXMgdGhlIA0KLSAqIHJlYWRlciBoYW5kZWQgaW4gdGhlIGNvbnN0cnVjdG9yLiBJdCBkb2Vzbid0
IG1ha2UgbXVjaCBzZW5zZSB0byBtYWtlIA0KLSAqIGl0cyBjYWxsZXJzIGluaXQgdGhlIHBhdGgg
dG8gc29tZSBuYW1lIHdoaWNoIGl0IGRvZXNuJ3QgbmVlZC4uLiANCisgKiBUT0RPOiB0aGlzIGRv
ZXNuJ3QgbmVlZCBhIGZ1bGwgUHJvZmlsZVJlZmVyZW5jZSBzaW5jZSBpdCB1c2VzIHRoZQ0KKyAq
IHJlYWRlciBoYW5kZWQgaW4gdGhlIGNvbnN0cnVjdG9yLiBJdCBkb2Vzbid0IG1ha2UgbXVjaCBz
ZW5zZSB0byBtYWtlDQorICogaXRzIGNhbGxlcnMgaW5pdCB0aGUgcGF0aCB0byBzb21lIG5hbWUg
d2hpY2ggaXQgZG9lc24ndCBuZWVkLi4uDQogICoNCiAgKiBAYXV0aG9yIEx1aXMgU2VyZ2lvIE9s
aXZlaXJhIChldWx1aXMpDQogICovDQogcHVibGljIGNsYXNzIFJlYWRlck1vZGVsTG9hZGVyIGlt
cGxlbWVudHMgUHJvZmlsZU1vZGVsTG9hZGVyIHsNCiANCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoDQotICAgICAgICAgICAgUmVhZGVyTW9k
ZWxMb2FkZXIuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0N
CisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoUmVhZGVyTW9kZWxMb2FkZXIuY2xhc3MuZ2V0TmFt
ZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBSZWFkZXIgcmVhZGVyOw0KIA0KICAgICAvKioNCiAgICAg
ICogQ3JlYXRlIGEgTW9kZWxMb2FkZXIgdGhhdCB3aWxsIGxvYWQgdGhlIG1vZGVsIGZyb20gdGhl
IGdpdmVuIHJlYWRlci4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSB0aGVSZWFk
ZXIgUmVhZGVyIGZyb20gd2hpY2ggdGhlIG1vZGVsIHdpbGwgYmUgbG9hZGVkLg0KICAgICAgKi8N
CiAgICAgcHVibGljIFJlYWRlck1vZGVsTG9hZGVyKFJlYWRlciB0aGVSZWFkZXIpIHsNCkBAIC03
MSwxNyArNzIsMTcgQEANCiAgICAgfQ0KIA0KIA0KLSAgICAvKiANCisgICAgLyoNCiAgICAgICog
QHNlZSBQcm9maWxlTW9kZWxMb2FkZXIjbG9hZE1vZGVsKFByb2ZpbGVSZWZlcmVuY2UpDQogICAg
ICAqLw0KLSAgICBwdWJsaWMgQ29sbGVjdGlvbiBsb2FkTW9kZWwoUHJvZmlsZVJlZmVyZW5jZSBy
ZWZlcmVuY2UpIA0KKyAgICBwdWJsaWMgQ29sbGVjdGlvbiBsb2FkTW9kZWwoUHJvZmlsZVJlZmVy
ZW5jZSByZWZlcmVuY2UpDQogICAgICAgICB0aHJvd3MgUHJvZmlsZUV4Y2VwdGlvbiB7DQotICAg
ICAgICANCisNCiAgICAgICAgIGlmIChyZWFkZXIgPT0gbnVsbCkgew0KLSAgICAgICAgICAgIExP
Ry5lcnJvcigiUHJvZmlsZSBub3QgZm91bmQiKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVs
LlNFVkVSRSwgIlByb2ZpbGUgbm90IGZvdW5kIik7DQogICAgICAgICAgICAgdGhyb3cgbmV3IFBy
b2ZpbGVFeGNlcHRpb24oIlByb2ZpbGUgbm90IGZvdW5kISIpOw0KICAgICAgICAgfQ0KLSAgICAg
ICAgDQorDQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIFhtaVJlYWRlciB4bWlSZWFkZXIg
PSBNb2RlbC5nZXRYbWlSZWFkZXIoKTsNCiAgICAgICAgICAgICBJbnB1dFNvdXJjZSBpbnB1dFNv
dXJjZSA9IG5ldyBJbnB1dFNvdXJjZShyZWFkZXIpOw0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL1Jlc291cmNlTW9kZWxMb2FkZXIuamF2
YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvUmVzb3VyY2VNb2Rl
bExvYWRlci5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3Byb2ZpbGUvUmVzb3VyY2VNb2RlbExvYWRlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvUmVzb3VyY2VNb2Rl
bExvYWRlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQog
LyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBD
b250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250
cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dy
YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxl
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICog
d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQN
CkBAIC0zOSw4ICszOSw4IEBADQogcGFja2FnZSBvcmcuYXJnb3VtbC5wcm9maWxlOw0KIA0KIGlt
cG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCi0NCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5M
b2dnZXI7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0
aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogLyoqDQogICogTG9hZHMgbW9kZWxzIHVzaW5nIHRoZSBk
ZWZhdWx0IENsYXNzTG9hZGVyIG9yIGEgcHJvdmlkZWQgb25lLg0KQEAgLTUyLDMzICs1MiwzMyBA
QA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0
aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlcg0KLSAgICAgICAgICAgIC5nZXRMb2dnZXIoUmVz
b3VyY2VNb2RlbExvYWRlci5jbGFzcyk7DQotICAgIA0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5h
bCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihSZXNvdXJjZU1vZGVsTG9hZGVyLmNsYXNz
LmdldE5hbWUoKSk7DQorDQogICAgIHByaXZhdGUgQ2xhc3MgY2xheno7DQotICAgIA0KKw0KICAg
ICAvKioNCi0gICAgICogVGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIHRoaXMgY2xhc3MuIExv
YWRzIHJlc291cmNlcyBmcm9tIHRoZSBzYW1lIA0KKyAgICAgKiBUaGUgZGVmYXVsdCBjb25zdHJ1
Y3RvciBmb3IgdGhpcyBjbGFzcy4gTG9hZHMgcmVzb3VyY2VzIGZyb20gdGhlIHNhbWUNCiAgICAg
ICogQ2xhc3NMb2FkZXIgdGhhdCBsb2FkZWQgdGhpcyBjbGFzcy4NCiAgICAgICovDQogICAgIHB1
YmxpYyBSZXNvdXJjZU1vZGVsTG9hZGVyKCkgew0KICAgICAgICAgdGhpcy5jbGF6eiA9IHRoaXMu
Z2V0Q2xhc3MoKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIExvYWRzIHJl
c291cmNlcyBmcm9tIHRoZSBDbGFzc0xvYWRlciB0aGF0IGxvYWRlZCB0aGUgZ2l2ZW4gY2xhc3MN
Ci0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBjIHRoZSByZWZlcmVuY2UgY2xhc3MN
CiAgICAgICovDQogICAgIHB1YmxpYyBSZXNvdXJjZU1vZGVsTG9hZGVyKENsYXNzIGMpIHsNCiAg
ICAgICAgIGNsYXp6ID0gYzsNCiAgICAgfQ0KIA0KLSAgICANCi0gICAgcHVibGljIENvbGxlY3Rp
b24gbG9hZE1vZGVsKFByb2ZpbGVSZWZlcmVuY2UgcmVmZXJlbmNlKSANCisNCisgICAgcHVibGlj
IENvbGxlY3Rpb24gbG9hZE1vZGVsKFByb2ZpbGVSZWZlcmVuY2UgcmVmZXJlbmNlKQ0KICAgICAg
ICAgdGhyb3dzIFByb2ZpbGVFeGNlcHRpb24gew0KLSAgICAgICAgTE9HLmluZm8oIkxvYWRpbmcg
cHJvZmlsZSBmcm9tIHJlc291cmNlJyIgKyByZWZlcmVuY2UuZ2V0UGF0aCgpICsgIiciKTsNCi0g
ICAgICAgIHJldHVybiBzdXBlci5sb2FkTW9kZWwoY2xhenouZ2V0UmVzb3VyY2UocmVmZXJlbmNl
LmdldFBhdGgoKSksIA0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiTG9hZGluZyBwcm9m
aWxlIGZyb20gcmVzb3VyY2UgezB9IiwgcmVmZXJlbmNlLmdldFBhdGgoKSk7DQorDQorICAgICAg
ICByZXR1cm4gc3VwZXIubG9hZE1vZGVsKGNsYXp6LmdldFJlc291cmNlKHJlZmVyZW5jZS5nZXRQ
YXRoKCkpLA0KICAgICAgICAgICAgIHJlZmVyZW5jZS5nZXRQdWJsaWNSZWZlcmVuY2UoKSk7DQog
ICAgIH0NCiANCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvcHJvZmlsZS9TdHJlYW1Nb2RlbExvYWRlci5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRp
Z3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcHJvZmlsZS9TdHJlYW1Nb2RlbExvYWRlci5qYXZhP3ZpZXc9ZGlmZiZwYXRo
cmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvU3RyZWFtTW9kZWxM
b2FkZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC9wcm9maWxlL1N0cmVhbU1vZGVsTG9hZGVyLmphdmEJMjAxMi0xMi0zMCAwNTowNjow
MS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
DQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENv
cHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh
bHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNl
IFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1
dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQxLDggKzQxLDkgQEANCiBpbXBvcnQgamF2
YS5pby5JbnB1dFN0cmVhbTsNCiBpbXBvcnQgamF2YS5uZXQuVVJMOw0KIGltcG9ydCBqYXZhLnV0
aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0
IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5M
b2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLk1vZGVsOw0KIGltcG9ydCBvcmcuYXJn
b3VtbC5tb2RlbC5VbWxFeGNlcHRpb247DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLlhtaVJl
YWRlcjsNCkBAIC01NSw3ICs1Niw4IEBADQogICovDQogcHVibGljIGFic3RyYWN0IGNsYXNzIFN0
cmVhbU1vZGVsTG9hZGVyIGltcGxlbWVudHMgUHJvZmlsZU1vZGVsTG9hZGVyIHsNCiANCi0gICAg
cHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoU3RyZWFt
TW9kZWxMb2FkZXIuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9H
ID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoU3RyZWFtTW9kZWxMb2FkZXIuY2xhc3MuZ2V0
TmFtZSgpKTsNCiANCiANCiANCkBAIC02OCwxMiArNzAsMTIgQEANCiAgICAgICovDQogICAgIHB1
YmxpYyBDb2xsZWN0aW9uIGxvYWRNb2RlbChJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSwgVVJMIHB1
YmxpY1JlZmVyZW5jZSkNCiAgICAgICAgIHRocm93cyBQcm9maWxlRXhjZXB0aW9uIHsNCi0gICAg
ICAgIA0KKw0KICAgICAgICAgaWYgKGlucHV0U3RyZWFtID09IG51bGwpIHsNCi0gICAgICAgICAg
ICBMT0cuZXJyb3IoIlByb2ZpbGUgbm90IGZvdW5kIik7DQorICAgICAgICAgICAgTE9HLmxvZyhM
ZXZlbC5TRVZFUkUsICJQcm9maWxlIG5vdCBmb3VuZCIpOw0KICAgICAgICAgICAgIHRocm93IG5l
dyBQcm9maWxlRXhjZXB0aW9uKCJQcm9maWxlIG5vdCBmb3VuZCEiKTsNCiAgICAgICAgIH0NCi0g
ICAgICAgIA0KKw0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBYbWlSZWFkZXIgeG1pUmVh
ZGVyID0gTW9kZWwuZ2V0WG1pUmVhZGVyKCk7DQogICAgICAgICAgICAgSW5wdXRTb3VyY2UgaW5w
dXRTb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2UoaW5wdXRTdHJlYW0pOw0KDQpNb2RpZmllZDogdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL1VzZXJEZWZpbmVkUHJv
ZmlsZS5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9h
cmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9Vc2Vy
RGVmaW5lZFByb2ZpbGUuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0x
OTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Ny
Yy9vcmcvYXJnb3VtbC9wcm9maWxlL1VzZXJEZWZpbmVkUHJvZmlsZS5qYXZhCShvcmlnaW5hbCkN
CisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvVXNlckRl
ZmluZWRQcm9maWxlLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYg
QEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAy
MDA3LDIwMTAgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA3
LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4g
VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRl
IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2Ug
djEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZh
aWxhYmxlIGF0DQpAQCAtNTUsMTAgKzU1LDExIEBADQogaW1wb3J0IGphdmEudXRpbC5NYXA7DQog
aW1wb3J0IGphdmEudXRpbC5TZXQ7DQogaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7
DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9n
Z2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5nLkltYWdlSWNvbjsNCiANCi1pbXBv
cnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2
ZS5Dcml0aWM7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5EZWNpc2lvbjsNCiBpbXBv
cnQgb3JnLmFyZ291bWwuY29nbml0aXZlLlRvRG9JdGVtOw0KQEAgLTcwLDggKzcxLDggQEANCiBp
bXBvcnQgb3JnLmFyZ291bWwudW1sLmNvZ25pdGl2ZS5VTUxEZWNpc2lvbjsNCiANCiAvKioNCi0g
KiBSZXByZXNlbnRzIGEgcHJvZmlsZSBkZWZpbmVkIGJ5IHRoZSB1c2VyDQotICogDQorICogUmVw
cmVzZW50cyBhIHByb2ZpbGUgZGVmaW5lZCBieSB0aGUgdXNlci4NCisgKg0KICAqIEBhdXRob3Ig
bWF1cmVsaW8xMjM0DQogICovDQogcHVibGljIGNsYXNzIFVzZXJEZWZpbmVkUHJvZmlsZSBleHRl
bmRzIFByb2ZpbGUgew0KQEAgLTc5LDggKzgwLDggQEANCiAgICAgLyoqDQogICAgICAqIExvZ2dl
ci4NCiAgICAgICovDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dn
ZXINCi0gICAgICAgICAgICAuZ2V0TG9nZ2VyKFVzZXJEZWZpbmVkUHJvZmlsZS5jbGFzcyk7DQor
ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdl
dExvZ2dlcihVc2VyRGVmaW5lZFByb2ZpbGUuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJp
dmF0ZSBTdHJpbmcgZGlzcGxheU5hbWU7DQogDQpAQCAtODksMTEgKzkwLDExIEBADQogICAgIHBy
aXZhdGUgQ29sbGVjdGlvbiBwcm9maWxlUGFja2FnZXMgPSBudWxsOw0KICAgICBwcml2YXRlIE9i
amVjdCBwYWNrYWdlTG9jayA9IG5ldyBPYmplY3QoKTsNCiANCi0gICAgcHJpdmF0ZSBVc2VyRGVm
aW5lZEZpZ05vZGVTdHJhdGVneSBmaWdOb2RlU3RyYXRlZ3kgDQorICAgIHByaXZhdGUgVXNlckRl
ZmluZWRGaWdOb2RlU3RyYXRlZ3kgZmlnTm9kZVN0cmF0ZWd5DQogICAgICAgICA9IG5ldyBVc2Vy
RGVmaW5lZEZpZ05vZGVTdHJhdGVneSgpOw0KIA0KICAgICBwcml2YXRlIFByb2ZpbGVSZWZlcmVu
Y2UgcmVmZXJlbmNlOw0KLSAgICANCisNCiAgICAgcHJpdmF0ZSBQcm9maWxlTWFuYWdlciBwcm9m
aWxlTWFuYWdlcjsNCiANCiAgICAgcHJpdmF0ZSBib29sZWFuIGNyaXRpY3NMb2FkZWQgPSBmYWxz
ZTsNCkBAIC0xMDgsNyArMTA5LDcgQEANCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgICogQWRk
cyBhIG5ldyBkZXNjcmlwdG9yIHRvIHRoaXMgc3RyYXRlZ3kNCi0gICAgICAgICAqIA0KKyAgICAg
ICAgICoNCiAgICAgICAgICAqIEBwYXJhbSBmbmQNCiAgICAgICAgICAqLw0KICAgICAgICAgcHVi
bGljIHZvaWQgYWRkRGVzcmNpcHRvcihGaWdOb2RlRGVzY3JpcHRvciBmbmQpIHsNCkBAIC0xMzUs
MTYgKzEzNiwxNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogVGhlIGRlZmF1bHQgY29uc3RydWN0
b3IgZm9yIHRoaXMgY2xhc3MNCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBmaWxl
IHRoZSBmaWxlIGZyb20gd2hlcmUgdGhlIG1vZGVsIHNob3VsZCBiZSByZWFkDQogICAgICAqIEBw
YXJhbSBtYW5hZ2VyIHRoZSBwcm9maWxlIG1hbmFnZXIgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJl
c29sdmUNCi0gICAgICogICAgICAgIGRlcGVuZGVuY2llcyANCisgICAgICogICAgICAgIGRlcGVu
ZGVuY2llcw0KICAgICAgKiBAdGhyb3dzIFByb2ZpbGVFeGNlcHRpb24gaWYgdGhlIHByb2ZpbGUg
Y291bGQgbm90IGJlIGxvYWRlZA0KICAgICAgKi8NCiAgICAgcHVibGljIFVzZXJEZWZpbmVkUHJv
ZmlsZShGaWxlIGZpbGUsIFByb2ZpbGVNYW5hZ2VyIG1hbmFnZXIpDQogICAgICAgICB0aHJvd3Mg
UHJvZmlsZUV4Y2VwdGlvbiB7DQogDQotICAgICAgICBMT0cuaW5mbygibG9hZCAiICsgZmlsZSk7
DQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJsb2FkIHswfSIsIGZpbGUpOw0KKw0KICAg
ICAgICAgZGlzcGxheU5hbWUgPSBmaWxlLmdldE5hbWUoKTsNCiAgICAgICAgIG1vZGVsRmlsZSA9
IGZpbGU7DQogICAgICAgICB0cnkgew0KQEAgLTE1OCw3ICsxNjAsNyBAQA0KIA0KICAgICAvKioN
CiAgICAgICogVGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIHRoaXMgY2xhc3MNCi0gICAgICog
DQorICAgICAqDQogICAgICAqIEBwYXJhbSBmaWxlIHRoZSBmaWxlIGZyb20gd2hlcmUgdGhlIG1v
ZGVsIHNob3VsZCBiZSByZWFkDQogICAgICAqIEB0aHJvd3MgUHJvZmlsZUV4Y2VwdGlvbiBpZiB0
aGUgcHJvZmlsZSBjb3VsZCBub3QgYmUgbG9hZGVkDQogICAgICAqIEBkZXByZWNhdGVkIGZvciAw
LjMwIGJ5IGV1bHVpcy4gVXNlDQpAQCAtMTY5LDcgKzE3MSw3IEBADQogICAgIHB1YmxpYyBVc2Vy
RGVmaW5lZFByb2ZpbGUoRmlsZSBmaWxlKSB0aHJvd3MgUHJvZmlsZUV4Y2VwdGlvbiB7DQogICAg
ICAgICB0aGlzKGZpbGUsIGdldFNvbWVQcm9maWxlTWFuYWdlcigpKTsNCiAgICAgfQ0KLSAgICAN
CisNCiAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTnVsbFByb2ZpbGVNYW5hZ2VyIGltcGxlbWVu
dHMgUHJvZmlsZU1hbmFnZXIgew0KIA0KICAgICAgICAgcHVibGljIHZvaWQgYWRkU2VhcmNoUGF0
aERpcmVjdG9yeShTdHJpbmcgcGF0aCkgew0KQEAgLTIxOSwxMiArMjIxLDEyIEBADQogDQogICAg
ICAgICBwdWJsaWMgdm9pZCByZW1vdmVTZWFyY2hQYXRoRGlyZWN0b3J5KFN0cmluZyBwYXRoKSB7
DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgfQ0KIA0KICAgICAvKioNCiAgICAgICog
QSBjb25zdHJ1Y3RvciB0aGF0IHJlYWRzIGEgZmlsZSBmcm9tIGFuIFVSTA0KLSAgICAgKiANCisg
ICAgICoNCiAgICAgICogQHBhcmFtIHVybCB0aGUgVVJMDQogICAgICAqIEBwYXJhbSBtYW5hZ2Vy
IHRoZSBwcm9maWxlIG1hbmFnZXIgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlc29sdmUNCiAgICAg
ICogICAgICAgIGRlcGVuZGVuY2llcw0KQEAgLTIzMywxNCArMjM1LDE1IEBADQogICAgIHB1Ymxp
YyBVc2VyRGVmaW5lZFByb2ZpbGUoVVJMIHVybCwgUHJvZmlsZU1hbmFnZXIgbWFuYWdlcikNCiAg
ICAgICAgIHRocm93cyBQcm9maWxlRXhjZXB0aW9uIHsNCiANCi0gICAgICAgIExPRy5pbmZvKCJs
b2FkICIgKyB1cmwpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAibG9hZCB7MH0iLCB1
cmwpOw0KKw0KICAgICAgICAgcmVmZXJlbmNlID0gbmV3IFVzZXJQcm9maWxlUmVmZXJlbmNlKHVy
bC5nZXRQYXRoKCksIHVybCk7DQogICAgICAgICBwcm9maWxlTWFuYWdlciA9IG1hbmFnZXI7DQog
ICAgIH0NCiANCiAgICAgLyoqDQogICAgICAqIEEgY29uc3RydWN0b3IgdGhhdCByZWFkcyBhIGZp
bGUgZnJvbSBhbiBVUkwNCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSB1cmwgdGhl
IFVSTA0KICAgICAgKiBAdGhyb3dzIFByb2ZpbGVFeGNlcHRpb24gaWYgdGhlIHByb2ZpbGUgY291
bGQgbm90IGJlIGxvYWRlZA0KICAgICAgKiBAZGVwcmVjYXRlZCBmb3IgMC4zMCBieSBldWx1aXMu
IFVzZQ0KQEAgLTI1MywxMCArMjU2LDEwIEBADQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAq
IEEgY29uc3RydWN0b3IgdGhhdCByZWFkcyBhIGZpbGUgZnJvbSBhbiBVUkwgYXNzb2NpYXRlZCB3
aXRoIHNvbWUgDQotICAgICAqIHByb2ZpbGVzLiAgRGVzaWduZWQgZm9yIHVzZSB3aXRoIFVSTHMg
d2hpY2ggcmVwcmVzZW50IGVudHJpZXMgaW4gYSANCisgICAgICogQSBjb25zdHJ1Y3RvciB0aGF0
IHJlYWRzIGEgZmlsZSBmcm9tIGFuIFVSTCBhc3NvY2lhdGVkIHdpdGggc29tZQ0KKyAgICAgKiBw
cm9maWxlcy4gIERlc2lnbmVkIGZvciB1c2Ugd2l0aCBVUkxzIHdoaWNoIHJlcHJlc2VudCBlbnRy
aWVzIGluIGENCiAgICAgICogSkFSIG9yIFppcCBmaWxlLg0KLSAgICAgKiANCisgICAgICoNCiAg
ICAgICogQHBhcmFtIGRuIHRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHByb2ZpbGUNCiAgICAgICog
QHBhcmFtIHVybCB0aGUgVVJMIG9mIHRoZSBwcm9maWxlIG1vZGUNCiAgICAgICogQHBhcmFtIGNy
aXRpY3MgdGhlIENyaXRpY3MgZGVmaW5lZCBieSB0aGlzIHByb2ZpbGUNCkBAIC0yNjksNyArMjcy
LDcgQEANCiAgICAgICAgICAgICBTZXQ8U3RyaW5nPiBkZXBlbmRlbmNpZXMsIFByb2ZpbGVNYW5h
Z2VyIG1hbmFnZXIpDQogICAgICAgICB0aHJvd3MgUHJvZmlsZUV4Y2VwdGlvbiB7DQogDQotICAg
ICAgICBMT0cuaW5mbygibG9hZCAiICsgdXJsKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5G
TywgImxvYWQgezB9IiwgdXJsKTsNCiANCiAgICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSBkbjsN
CiAgICAgICAgIHJlZmVyZW5jZSA9IG5ldyBVc2VyUHJvZmlsZVJlZmVyZW5jZSh1cmwuZ2V0UGF0
aCgpLCB1cmwpOw0KQEAgLTI4NCwxMyArMjg3LDEzIEBADQogDQogICAgIC8qKg0KICAgICAgKiBB
IGNvbnN0cnVjdG9yIHRoYXQgcmVhZHMgYSBmaWxlIGZyb20gYW4gVVJMIGFzc29jaWF0ZWQgd2l0
aCBzb21lIHByb2ZpbGVzDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gZG4gdGhl
IGRpc3BsYXkgbmFtZSBvZiB0aGUgcHJvZmlsZQ0KICAgICAgKiBAcGFyYW0gdXJsIHRoZSBVUkwg
b2YgdGhlIHByb2ZpbGUgbW9kZQ0KICAgICAgKiBAcGFyYW0gY3JpdGljcyB0aGUgQ3JpdGljcyBk
ZWZpbmVkIGJ5IHRoaXMgcHJvZmlsZQ0KICAgICAgKiBAcGFyYW0gZGVwZW5kZW5jaWVzIHRoZSBk
ZXBlbmRlbmNpZXMgb2YgdGhpcyBwcm9maWxlDQogICAgICAqIEB0aHJvd3MgUHJvZmlsZUV4Y2Vw
dGlvbiBpZiB0aGUgbW9kZWwgY2Fubm90IGJlIGxvYWRlZA0KLSAgICAgKiANCisgICAgICoNCiAg
ICAgICogQGRlcHJlY2F0ZWQgZm9yIDAuMzAgYnkgZXVsdWlzLiBVc2UNCiAgICAgICoge0BsaW5r
IFVzZXJEZWZpbmVkUHJvZmlsZSNVc2VyRGVmaW5lZFByb2ZpbGUoDQogICAgICAqIFN0cmluZywg
VVJMLCBTZXQsIFNldCwgUHJvZmlsZU1hbmFnZXIpfQ0KQEAgLTMyNiw4ICszMjksOSBAQA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxvYWRNb2RlbChyZWZlcmVuY2UpOw0KICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICB9IGNhdGNoIChQcm9maWxlRXhj
ZXB0aW9uIGUxKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiBs
b2FkaW5nIHByb2ZpbGUgIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHJlZmVyZW5j
ZS5nZXRQYXRoKCksIGUxKTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VW
RVJFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhjZXB0aW9uIGxvYWRpbmcgcHJv
ZmlsZSAiKyByZWZlcmVuY2UuZ2V0UGF0aCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlMSk7DQogICAgICAgICAgICAgICAgICAgICBwcm9maWxlUGFja2FnZXMgPSBDb2xsZWN0aW9u
cy5lbXB0eVNldCgpOw0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAg
ICAgICB9DQpAQCAtMzM2LDggKzM0MCw4IEBADQogICAgICAgICAgICAgQ29sbGVjdGlvbiBwYWNr
YWdlc0luUHJvZmlsZSA9IGZpbHRlclBhY2thZ2VzKHByb2ZpbGVQYWNrYWdlcyk7DQogDQogICAg
ICAgICAgICAgZm9yIChPYmplY3Qgb2JqIDogcGFja2FnZXNJblByb2ZpbGUpIHsNCi0gICAgICAg
ICAgICAgICAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUgcGFja2FnZSBpbiB0aGUgbW9kZWwsIA0K
LSAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGQgc3VwcG9zZSBpdCdzIHRoZSBwcm9maWxlIG1v
ZGVsLCANCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUgcGFja2FnZSBp
biB0aGUgbW9kZWwsDQorICAgICAgICAgICAgICAgIC8vIHdlIHNob3VsZCBzdXBwb3NlIGl0J3Mg
dGhlIHByb2ZpbGUgbW9kZWwsDQogICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIG1vcmUg
dGhhbiBvbmUsIHdlIHRha2UgdGhlIG9uZXMNCiAgICAgICAgICAgICAgICAgLy8gbWFya2VkIGFz
IDw8cHJvZmlsZT4+DQogICAgICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FN
b2RlbEVsZW1lbnQob2JqKQ0KQEAgLTM1NCw3ICszNTgsNyBAQA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5sb2NhbGl6ZSgibWlzYy5wcm9maWxlLnVubmFtZWQiKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICB9DQotICAgICAg
ICAgICAgICAgICAgICBMT0cuaW5mbygicHJvZmlsZSAiICsgZGlzcGxheU5hbWUpOw0KKyAgICAg
ICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAicHJvZmlsZSB7MH0iLCBkaXNwbGF5
TmFtZSk7DQogDQogICAgICAgICAgICAgICAgICAgICBsb2FkRGVwZW5kZW50UHJvZmlsZXMob2Jq
KTsNCiAgICAgICAgICAgICAgICAgfQ0KQEAgLTM3NCw5ICszNzgsOSBAQA0KIA0KIA0KICAgICAv
KioNCi0gICAgICogRm9yIEFyZ29VTUwgVU1MIDEuNCBwcm9maWxlcyBkZXBlbmRlbmNpZXMgYXJl
IGVuY29kZWQgYXMgYSBsaXN0IG9mIA0KKyAgICAgKiBGb3IgQXJnb1VNTCBVTUwgMS40IHByb2Zp
bGVzIGRlcGVuZGVuY2llcyBhcmUgZW5jb2RlZCBhcyBhIGxpc3Qgb2YNCiAgICAgICogcHJvZmls
ZSBuYW1lcyBpbiB0aGUgVGFnZ2VkVmFsdWUgbmFtZWQgIkRlcGVuZGVuY3kiIG9uIHRoZSBwcm9m
aWxlIHBrZy4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBwa2cgcHJvZmlsZSBw
YWNrYWdlDQogICAgICAqLw0KICAgICBwcml2YXRlIHZvaWQgbG9hZERlcGVuZGVudFByb2ZpbGVz
VW1sMShPYmplY3QgcGtnKSB7DQpAQCAtMzkwLDEzICszOTQsMTMgQEANCiAgICAgICAgIHdoaWxl
IChzdC5oYXNNb3JlVG9rZW5zKCkpIHsNCiAgICAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IHN0
Lm5leHRUb2tlbigpOw0KICAgICAgICAgICAgIGlmIChkZXBlbmRlbmN5TmFtZSAhPSBudWxsKSB7
DQotICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygiQWRkaW5nIGRlcGVuZGVuY3kgIiArIGRlcGVu
ZGVuY3lOYW1lKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiQWRkaW5n
IGRlcGVuZGVuY3kgezB9IiwgZGVwZW5kZW5jeU5hbWUpOw0KICAgICAgICAgICAgICAgICBQcm9m
aWxlIHByb2ZpbGUgPSBwcm9maWxlTWFuYWdlcg0KICAgICAgICAgICAgICAgICAgICAgICAgIC5s
b29rRm9yUmVnaXN0ZXJlZFByb2ZpbGUoZGVwZW5kZW5jeU5hbWUpOw0KICAgICAgICAgICAgICAg
ICBpZiAocHJvZmlsZSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICBhZGRQcm9maWxl
RGVwZW5kZW5jeShwcm9maWxlKTsNCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCi0gICAgICAg
ICAgICAgICAgICAgIExPRy53YXJuKCJUaGUgcHJvZmlsZSBcIiIgKyBkaXNwbGF5TmFtZQ0KKyAg
ICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAiVGhlIHByb2ZpbGUgXCIi
ICsgZGlzcGxheU5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgaGFzIGEg
ZGVwZW5kZW5jeSBuYW1lZCBcIiIgKyBkZXBlbmRlbmN5TmFtZQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArICJcIiB3aGljaCBpc24ndCBzb2x2YWJsZS4iKTsNCiAgICAgICAgICAgICAg
ICAgfQ0KQEAgLTQwNywyNSArNDExLDI1IEBADQogDQogICAgIC8qKg0KICAgICAgKiBMb2FkIEZp
Z05vZGVzIGZyb20gcHJvZmlsZSBwYWNrYWdlcy4NCi0gICAgICogDQorICAgICAqDQogICAgICAq
IEBwYXJhbSBwYWNrYWdlc0luUHJvZmlsZQ0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSB2b2lkIGxv
YWRGaWdOb2RlcyhDb2xsZWN0aW9uIHBhY2thZ2VzSW5Qcm9maWxlKSB7DQogICAgICAgICBDb2xs
ZWN0aW9uIGFsbFN0ZXJlb3R5cGVzID0gTW9kZWwuZ2V0RXh0ZW5zaW9uTWVjaGFuaXNtc0hlbHBl
cigpDQogICAgICAgICAgICAgICAgIC5nZXRTdGVyZW90eXBlcyhwYWNrYWdlc0luUHJvZmlsZSk7
DQogICAgICAgICBmb3IgKE9iamVjdCBzdGVyZW90eXBlIDogYWxsU3RlcmVvdHlwZXMpIHsNCi0g
ICAgICAgICAgICBDb2xsZWN0aW9uIHRhZ3MgPSBNb2RlbC5nZXRGYWNhZGUoKS5nZXRUYWdnZWRW
YWx1ZXNDb2xsZWN0aW9uKA0KLSAgICAgICAgICAgICAgICAgICAgc3RlcmVvdHlwZSk7DQorICAg
ICAgICAgICAgQ29sbGVjdGlvbiB0YWdzID0gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0VGFnZ2VkVmFs
dWVzQ29sbGVjdGlvbihzdGVyZW90eXBlKTsNCiANCiAgICAgICAgICAgICBmb3IgKE9iamVjdCB0
YWcgOiB0YWdzKSB7DQogICAgICAgICAgICAgICAgIFN0cmluZyB0YWdOYW1lID0gTW9kZWwuZ2V0
RmFjYWRlKCkuZ2V0VGFnKHRhZyk7DQogICAgICAgICAgICAgICAgIGlmICh0YWdOYW1lID09IG51
bGwpIHsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygicHJvZmlsZSBwYWNrYWdlIHdp
dGggc3RlcmVvdHlwZSAiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTW9kZWwuZ2V0
RmFjYWRlKCkuZ2V0TmFtZShzdGVyZW90eXBlKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArICIgY29udGFpbnMgYSBudWxsIHRhZyBkZWZpbml0aW9uIik7DQorICAgICAgICAgICAgICAg
ICAgICBMT0cubG9nKExldmVsLkZJTkUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw
cm9maWxlIHBhY2thZ2Ugd2l0aCBzdGVyZW90eXBlIHswfSBjb250YWlucyAiDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICsgImEgbnVsbCB0YWcgZGVmaW5pdGlvbiIsDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1vZGVsLmdldEZhY2FkZSgpLmdldE5hbWUoc3RlcmVvdHlwZSkp
Ow0KICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRhZ05hbWUudG9Mb3dlckNhc2UoKS5lcXVh
bHMoImZpZ3VyZSIpKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cuZGVidWcoIkFkZEZpZ05v
ZGUgIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIE1vZGVsLmdldEZhY2FkZSgpLmdl
dE5hbWUoc3RlcmVvdHlwZSkpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5G
SU5FLCAiQWRkRmlnTm9kZSB7MH0iLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2Rl
bC5nZXRGYWNhZGUoKS5nZXROYW1lKHN0ZXJlb3R5cGUpKTsNCiANCiAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyB2YWx1ZSA9IE1vZGVsLmdldEZhY2FkZSgpLmdldFZhbHVlT2ZUYWcodGFnKTsN
CiAgICAgICAgICAgICAgICAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKHZhbHVlKTsNCkBAIC00MzUs
NyArNDM5LDcgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b1N0cmluZygp
LCBmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWdOb2RlU3RyYXRlZ3kuYWRkRGVzcmNp
cHRvcihmbmQpOw0KICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkg
ew0KLSAgICAgICAgICAgICAgICAgICAgICAgIExPRy5lcnJvcigiRXJyb3IgbG9hZGluZyBGaWdO
b2RlIiwgZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUs
ICJFcnJvciBsb2FkaW5nIEZpZ05vZGUiLCBlKTsNCiAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCkBAIC00NDUsMjMgKzQ0OSwyMyBAQA0K
ICAgICBAT3ZlcnJpZGUNCiAgICAgcHVibGljIFNldDxDcml0aWM+IGdldENyaXRpY3MoKSB7DQog
ICAgICAgICBpZiAoIWNyaXRpY3NMb2FkZWQgKSB7DQotICAgICAgICAgICAgU2V0PENyaXRpYz4g
bXlDcml0aWNzID0gc3VwZXIuZ2V0Q3JpdGljcygpOyAgICAgICAgIA0KKyAgICAgICAgICAgIFNl
dDxDcml0aWM+IG15Q3JpdGljcyA9IHN1cGVyLmdldENyaXRpY3MoKTsNCiAgICAgICAgICAgICBt
eUNyaXRpY3MuYWRkQWxsKGdldEFsbENyaXRpcXVlc0luTW9kZWwoKSk7DQotICAgICAgICAgICAg
dGhpcy5zZXRDcml0aWNzKG15Q3JpdGljcyk7ICAgICAgICANCisgICAgICAgICAgICB0aGlzLnNl
dENyaXRpY3MobXlDcml0aWNzKTsNCiAgICAgICAgICAgICBjcml0aWNzTG9hZGVkID0gdHJ1ZTsN
CiAgICAgICAgIH0NCiAgICAgICAgIHJldHVybiBzdXBlci5nZXRDcml0aWNzKCk7DQogICAgIH0N
Ci0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBAcmV0dXJuIHRoZSBwYWNrYWdlcyBpbiB0aGUg
PGNvZGU+cHJvZmlsZVBhY2thZ2VzPC9jb2RlPg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBDb2xs
ZWN0aW9uIGZpbHRlclBhY2thZ2VzKENvbGxlY3Rpb24gcGFja2FnZXMpIHsNCiAgICAgICAgIENv
bGxlY3Rpb24gcmV0ID0gbmV3IEFycmF5TGlzdCgpOw0KLSAgICAgICAgDQotICAgICAgICAvLyBU
T0RPOiBBbGwgdGhpcyBwcm9maWxlIGxvYWRpbmcvaGFuZGxpbmcgbmVlZHMgdG8gDQorDQorICAg
ICAgICAvLyBUT0RPOiBBbGwgdGhpcyBwcm9maWxlIGxvYWRpbmcvaGFuZGxpbmcgbmVlZHMgdG8N
CiAgICAgICAgIC8vIG1vdmUgc29tZXBsYWNlIGluIG1vZGVsIHN1YnN5c3RlbSBwcm9iYWJseQ0K
LSAgICAgICAgDQorDQogICAgICAgICBmb3IgKE9iamVjdCBvYmplY3QgOiBwYWNrYWdlcykgew0K
ICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FQYWNrYWdlKG9iamVjdCkpIHsN
CiAgICAgICAgICAgICAgICAgcmV0LmFkZChvYmplY3QpOw0KQEAgLTQ4MSw3ICs0ODUsNyBAQA0K
IA0KICAgICAgICAgQ29sbGVjdGlvbiB0YWdzID0gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0VGFnZ2Vk
VmFsdWVzQ29sbGVjdGlvbihjcml0aXF1ZSk7DQogICAgICAgICBib29sZWFuIGkxOG5Gb3VuZCA9
IGZhbHNlOw0KLSAgICAgICAgDQorDQogICAgICAgICBmb3IgKE9iamVjdCB0YWcgOiB0YWdzKSB7
DQogICAgICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmdldFRhZyh0YWcpLnRvTG93ZXJD
YXNlKCkuZXF1YWxzKCJpMThuIikpIHsNCiAgICAgICAgICAgICAgICAgaTE4bkZvdW5kID0gdHJ1
ZTsNCkBAIC01MDksNyArNTEzLDcgQEANCiAgICAgICAgICAgICAgICAgd2hpbGUgKHN0Lmhhc01v
cmVUb2tlbnMoKSkgew0KICAgICAgICAgICAgICAgICAgICAgRGVjaXNpb24gZGVjaXNpb24gPSBz
dHIyRGVjaXNpb24oc3QubmV4dFRva2VuKCkudHJpbSgpDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC50b0xvd2VyQ2FzZSgpKTsNCi0gICAgICAgICAgICAgICAgICAgIA0KKw0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKGRlY2lzaW9uICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICBzdXBwb3J0ZWREZWNpc2lvbnMuYWRkKGRlY2lzaW9uKTsNCiAgICAgICAgICAgICAg
ICAgICAgIH0NCkBAIC01MjMsNyArNTI3LDcgQEANCiAgICAgICAgICAgICAgICAgd2hpbGUgKHN0
Lmhhc01vcmVUb2tlbnMoKSkgew0KICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGtub3dsZWRn
ZSA9IHN0cjJLbm93bGVkZ2VUeXBlKHN0Lm5leHRUb2tlbigpLnRyaW0oKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKSk7DQotICAgICAgICAgICAgICAgICAgICAN
CisNCiAgICAgICAgICAgICAgICAgICAgIGlmIChrbm93bGVkZ2UgIT0gbnVsbCkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGtub3dsZWRnZVR5cGVzLmFkZChrbm93bGVkZ2UpOw0KICAgICAg
ICAgICAgICAgICAgICAgfQ0KQEAgLTUzNiwxNCArNTQwLDEzIEBADQogDQogICAgICAgICB9DQog
DQotICAgICAgICBMT0cuZGVidWcoIk9DTC1Dcml0aWM6ICIgKyBvY2wpOw0KKyAgICAgICAgTE9H
LmxvZyhMZXZlbC5GSU5FLCAiT0NMLUNyaXRpYzogezB9Iiwgb2NsKTsNCiANCiAgICAgICAgIHRy
eSB7DQogICAgICAgICAgICAgcmV0dXJuIG5ldyBDck9DTChvY2wsIGhlYWRsaW5lLCBkZXNjcmlw
dGlvbiwgcHJpb3JpdHksDQogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWREZWNpc2lvbnMs
IGtub3dsZWRnZVR5cGVzLCBtb3JlSW5mb1VSTCk7DQogICAgICAgICB9IGNhdGNoIChJbnZhbGlk
T2NsRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkludmFsaWQgT0NMIGlu
IFhNSSEiLCBlKTsNCi0NCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkludmFs
aWQgT0NMIGluIFhNSSEiLCBlKTsNCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAg
IH0NCiANCkBAIC01NTEsNyArNTU0LDcgQEANCiANCiAgICAgcHJpdmF0ZSBTdHJpbmcgc3RyMktu
b3dsZWRnZVR5cGUoU3RyaW5nIHRva2VuKSB7DQogICAgICAgICBTdHJpbmcga25vd2xlZGdlID0g
bnVsbDsNCi0gICAgICAgIA0KKw0KICAgICAgICAgaWYgKHRva2VuLmVxdWFscygiY29tcGxldGVu
ZXNzIikpIHsNCiAgICAgICAgICAgICBrbm93bGVkZ2UgPSBDcml0aWMuS1RfQ09NUExFVEVORVNT
Ow0KICAgICAgICAgfQ0KQEAgLTU5MCw3ICs1OTMsNyBAQA0KIA0KICAgICBwcml2YXRlIGludCBz
dHIyUHJpb3JpdHkoU3RyaW5nIHByaW9TdHIpIHsNCiAgICAgICAgIGludCBwcmlvID0gVG9Eb0l0
ZW0uTUVEX1BSSU9SSVRZOw0KLSAgICAgICAgDQorDQogICAgICAgICBpZiAocHJpb1N0ci50b0xv
d2VyQ2FzZSgpLmVxdWFscygiaGlnaCIpKSB7DQogICAgICAgICAgICAgcHJpbyA9IFRvRG9JdGVt
LkhJR0hfUFJJT1JJVFk7DQogICAgICAgICB9IGVsc2UgaWYgKHByaW9TdHIudG9Mb3dlckNhc2Uo
KS5lcXVhbHMoIm1lZCIpKSB7DQpAQCAtNjA1LDExICs2MDgsMTEgQEANCiANCiAgICAgcHJpdmF0
ZSBEZWNpc2lvbiBzdHIyRGVjaXNpb24oU3RyaW5nIHRva2VuKSB7DQogICAgICAgICBEZWNpc2lv
biBkZWNpc2lvbiA9IG51bGw7DQotICAgICAgICANCisNCiAgICAgICAgIGlmICh0b2tlbi5lcXVh
bHMoImJlaGF2aW9yIikpIHsNCiAgICAgICAgICAgICBkZWNpc2lvbiA9IFVNTERlY2lzaW9uLkJF
SEFWSU9SOw0KICAgICAgICAgfQ0KLSAgICAgICAgaWYgKHRva2VuLmVxdWFscygiY29udGFpbm1l
bnQiKSkgeyAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgaWYgKHRva2VuLmVxdWFs
cygiY29udGFpbm1lbnQiKSkgew0KICAgICAgICAgICAgIGRlY2lzaW9uID0gVU1MRGVjaXNpb24u
Q09OVEFJTk1FTlQ7DQogICAgICAgICB9DQogICAgICAgICBpZiAodG9rZW4uZXF1YWxzKCJjbGFz
c3NlbGVjdGlvbiIpKSB7DQpAQCAtNjMzLDcgKzYzNiw3IEBADQogICAgICAgICBpZiAodG9rZW4u
ZXF1YWxzKCJtb2R1bGFyaXR5IikpIHsNCiAgICAgICAgICAgICBkZWNpc2lvbiA9IFVNTERlY2lz
aW9uLk1PRFVMQVJJVFk7DQogICAgICAgICB9DQotICAgICAgICBpZiAodG9rZW4uZXF1YWxzKCJu
YW1pbmciKSkgeyAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBpZiAodG9rZW4uZXF1
YWxzKCJuYW1pbmciKSkgew0KICAgICAgICAgICAgIGRlY2lzaW9uID0gVU1MRGVjaXNpb24uTkFN
SU5HOw0KICAgICAgICAgfQ0KICAgICAgICAgaWYgKHRva2VuLmVxdWFscygicGF0dGVybnMiKSkg
ew0KQEAgLTcwNiw3ICs3MDksNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogUmV0dXJucyBudWxs
LiBUaGlzIHByb2ZpbGUgaGFzIG5vIGZvcm1hdHRpbmcgc3RyYXRlZ3kuDQotICAgICAqIA0KKyAg
ICAgKg0KICAgICAgKiBAcmV0dXJuIG51bGwuDQogICAgICAqLw0KICAgICBAT3ZlcnJpZGUNCkBA
IC03MTYsNyArNzE5LDcgQEANCiANCiAgICAgLyoqDQogICAgICAqIFJldHVybnMgbnVsbC4gVGhp
cyBwcm9maWxlIGhhcyBubyBmaWd1cmUgc3RyYXRlZ3kuDQotICAgICAqIA0KKyAgICAgKg0KICAg
ICAgKiBAcmV0dXJuIG51bGwuDQogICAgICAqLw0KICAgICBAT3ZlcnJpZGUNCkBAIC03NDUsNyAr
NzQ4LDcgQEANCiAgICAgICAgIGxvYWRNb2RlbCgpOw0KICAgICAgICAgcmV0dXJuIHByb2ZpbGVQ
YWNrYWdlczsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgQE92ZXJyaWRlDQogICAgIHB1YmxpYyBD
b2xsZWN0aW9uIGdldExvYWRlZFBhY2thZ2VzKCkgew0KICAgICAgICAgaWYgKHByb2ZpbGVQYWNr
YWdlcyA9PSBudWxsKSB7DQpAQCAtNzU0LDcgKzc1Nyw3IEBADQogICAgICAgICAgICAgcmV0dXJu
IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUNvbGxlY3Rpb24ocHJvZmlsZVBhY2thZ2VzKTsNCiAg
ICAgICAgIH0NCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSBGaWdOb2RlRGVzY3JpcHRv
ciBsb2FkSW1hZ2UoU3RyaW5nIHN0ZXJlb3R5cGUsIEZpbGUgZikNCiAgICAgICAgIHRocm93cyBJ
T0V4Y2VwdGlvbiB7DQogICAgICAgICBGaWdOb2RlRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gbmV3
IEZpZ05vZGVEZXNjcmlwdG9yKCk7DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvWmlwTW9kZWxMb2FkZXIuamF2YQ0KVXJsOiBodHRwOi8v
YXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvWmlwTW9kZWxMb2FkZXIuamF2YT92aWV3PWRp
ZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL1ppcE1v
ZGVsTG9hZGVyLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcHJvZmlsZS9aaXBNb2RlbExvYWRlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6
MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Kg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBD
b3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp
YWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBz
ZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli
dXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00NCwyNSArNDQsMjcgQEANCiBpbXBvcnQg
amF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOw0KIGltcG9ydCBqYXZhLm5ldC5VUkw7DQog
aW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5M
ZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIGltcG9ydCBqYXZhLnV0
aWwuemlwLlppcEVudHJ5Ow0KIGltcG9ydCBqYXZhLnV0aWwuemlwLlppcElucHV0U3RyZWFtOw0K
IA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCi0NCiAvKioNCi0gKiBMb2FkcyBt
b2RlbCBkYXRhIGZyb20gYSBaaXAgZmlsZQ0KLSAqIA0KKyAqIExvYWRzIG1vZGVsIGRhdGEgZnJv
bSBhIFppcCBmaWxlLg0KKyAqDQogICogQGF1dGhvciBtYXVyZWxpbzEyMzQNCiAgKi8NCiBwdWJs
aWMgY2xhc3MgWmlwTW9kZWxMb2FkZXIgZXh0ZW5kcyBTdHJlYW1Nb2RlbExvYWRlciB7DQogDQot
ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFpp
cE1vZGVsTG9hZGVyLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExP
RyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFppcE1vZGVsTG9hZGVyLmNsYXNzLmdldE5h
bWUoKSk7DQorDQogDQotICAgDQotICAgIHB1YmxpYyBDb2xsZWN0aW9uIGxvYWRNb2RlbChQcm9m
aWxlUmVmZXJlbmNlIHJlZmVyZW5jZSkgDQorICAgIHB1YmxpYyBDb2xsZWN0aW9uIGxvYWRNb2Rl
bChQcm9maWxlUmVmZXJlbmNlIHJlZmVyZW5jZSkNCiAgICAgICAgIHRocm93cyBQcm9maWxlRXhj
ZXB0aW9uIHsNCi0gICAgICAgIExPRy5pbmZvKCJMb2FkaW5nIHByb2ZpbGUgZnJvbSBaSVAgJyIg
KyByZWZlcmVuY2UuZ2V0UGF0aCgpICsgIiciKTsNCi0gICAgICAgIA0KKyAgICAgICAgTE9HLmxv
ZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAiTG9hZGluZyBwcm9maWxlIGZyb20gWklQ
IHswfSIsIHJlZmVyZW5jZS5nZXRQYXRoKCkpOw0KKw0KICAgICAgICAgaWYgKCFyZWZlcmVuY2Uu
Z2V0UGF0aCgpLmVuZHNXaXRoKCJ6aXAiKSkgew0KICAgICAgICAgICAgIHRocm93IG5ldyBQcm9m
aWxlRXhjZXB0aW9uKCJQcm9maWxlIGNvdWxkIG5vdCBiZSBsb2FkZWQhIik7DQogICAgICAgICB9
DQpAQCAtODQsMTkgKzg2LDIzIEBADQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIGlzID0g
b3BlblppcFN0cmVhbUF0KG1vZGVsRmlsZS50b1VSSSgpLnRvVVJMKCksIGV4dGVuc2lvbik7DQog
ICAgICAgICB9IGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAg
IExPRy5lcnJvcigiRXhjZXB0aW9uIHdoaWxlIGxvYWRpbmcgcHJvZmlsZSAnIg0KLSAgICAgICAg
ICAgICAgICAgICAgKyByZWZlcmVuY2UuZ2V0UGF0aCgpICsgIiciLCBlKTsNCisgICAgICAgICAg
ICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICJFeGNlcHRpb24g
d2hpbGUgbG9hZGluZyBwcm9maWxlICciDQorICAgICAgICAgICAgICAgICAgICArIHJlZmVyZW5j
ZS5nZXRQYXRoKCkgKyAiJyIsDQorICAgICAgICAgICAgICAgICAgICBlKTsNCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgUHJvZmlsZUV4Y2VwdGlvbihlKTsNCiAgICAgICAgIH0gY2F0Y2ggKElPRXhj
ZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiB3aGlsZSBsb2Fk
aW5nIHByb2ZpbGUgJyINCi0gICAgICAgICAgICAgICAgICAgICsgcmVmZXJlbmNlLmdldFBhdGgo
KSArICInIiwgZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAg
ICAgICAgICAgICAgICAiRXhjZXB0aW9uIHdoaWxlIGxvYWRpbmcgcHJvZmlsZSAnIg0KKyAgICAg
ICAgICAgICAgICAgICAgKyByZWZlcmVuY2UuZ2V0UGF0aCgpICsgIiciLA0KKyAgICAgICAgICAg
ICAgICAgICAgZSk7DQogICAgICAgICAgICAgdGhyb3cgbmV3IFByb2ZpbGVFeGNlcHRpb24oZSk7
DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIGlmIChpcyA9PSBudWxsKSB7DQog
ICAgICAgICAgICAgdGhyb3cgbmV3IFByb2ZpbGVFeGNlcHRpb24oIlByb2ZpbGUgY291bGQgbm90
IGJlIGxvYWRlZCEiKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgcmV0dXJu
IHN1cGVyLmxvYWRNb2RlbChpcywgcmVmZXJlbmNlLmdldFB1YmxpY1JlZmVyZW5jZSgpKTsNCiAg
ICAgfQ0KIA0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9wcm9maWxlL2luaXQvUHJvZmlsZUxvYWRlci5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRp
Z3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcHJvZmlsZS9pbml0L1Byb2ZpbGVMb2FkZXIuamF2YT92aWV3PWRpZmYmcGF0
aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2luaXQvUHJvZmls
ZUxvYWRlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL3Byb2ZpbGUvaW5pdC9Qcm9maWxlTG9hZGVyLmphdmEJMjAxMi0xMi0zMCAwNTow
NjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTAgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93
DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQog
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n
IG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg
ZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNTIsOCArNTIsOSBAQA0KIGlt
cG9ydCBqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXM7DQogaW1wb3J0IGphdmEudXRpbC5qYXIuSmFy
RmlsZTsNCiBpbXBvcnQgamF2YS51dGlsLmphci5NYW5pZmVzdDsNCitpbXBvcnQgamF2YS51dGls
LmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1p
bXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25p
dGl2ZS5Dcml0aWM7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmkxOG4uVHJhbnNsYXRvcjsNCiBpbXBv
cnQgb3JnLmFyZ291bWwubW9kdWxlbG9hZGVyLk1vZHVsZUxvYWRlcjI7DQpAQCAtNjIsNDIgKzYz
LDQzIEBADQogaW1wb3J0IG9yZy5hcmdvdW1sLnByb2ZpbGUuVXNlckRlZmluZWRQcm9maWxlOw0K
IA0KIC8qKg0KLSAqIFRoaXMgaXMgdGhlIHByb2ZpbGUgbG9hZGVyIHRoYXQgbG9hZHMgbW9kdWxl
cyBwcm9maWxlcw0KLSAqIA0KKyAqIFRoaXMgaXMgdGhlIHByb2ZpbGUgbG9hZGVyIHRoYXQgbG9h
ZHMgbW9kdWxlcyBwcm9maWxlcy4NCisgKg0KICAqIEBhdXRob3IgbWF1cmVsaW8xMjM0DQogICov
DQogcHVibGljIGZpbmFsIGNsYXNzIFByb2ZpbGVMb2FkZXIgew0KICAgICAvKioNCiAgICAgICog
TG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9
IExvZ2dlci5nZXRMb2dnZXIoUHJvZmlsZUxvYWRlci5jbGFzcyk7DQotICAgIA0KKyAgICBwcml2
YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIo
UHJvZmlsZUxvYWRlci5jbGFzcy5nZXROYW1lKCkpOw0KKw0KICAgICAvKioNCiAgICAgICogVGhl
IHByZWZpeCBpbiBVUkw6cyB0aGF0IGFyZSBqYXJzLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBz
dGF0aWMgZmluYWwgU3RyaW5nIEpBUl9QUkVGSVggPSAiamFyOiI7DQotICAgIA0KKw0KICAgICAv
KioNCiAgICAgICogVGhlIHByZWZpeCBpbiBVUkw6cyB0aGF0IGFyZSBmaWxlcy4NCiAgICAgICov
DQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGSUxFX1BSRUZJWCA9ICJmaWxlOiI7
DQotICAgIA0KKw0KICAgICAvKioNCi0gICAgICogTG9va3MgZm9yIHByb2ZpbGVzIGluIHRoZSBq
YXJzIGluIHRoZSBkaXJlY3RvcmllcyB1c2VkIGJ5IHRoZSANCi0gICAgICogTW9kdWxlTG9hZGVy
IHRvIGxvYWQgbW9kdWxlcw0KKyAgICAgKiBMb29rcyBmb3IgcHJvZmlsZXMgaW4gdGhlIGphcnMg
aW4gdGhlIGRpcmVjdG9yaWVzIHVzZWQgYnkgdGhlDQorICAgICAqIE1vZHVsZUxvYWRlciB0byBs
b2FkIG1vZHVsZXMuDQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBkb0xvYWQoKSB7DQotICAg
ICAgICBMaXN0PFN0cmluZz4gZXh0RGlycyA9IA0KKyAgICAgICAgTGlzdDxTdHJpbmc+IGV4dERp
cnMgPQ0KICAgICAgICAgICAgIE1vZHVsZUxvYWRlcjIuZ2V0SW5zdGFuY2UoKS5nZXRFeHRlbnNp
b25Mb2NhdGlvbnMoKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgZm9yIChTdHJpbmcgZXh0RGly
IDogZXh0RGlycykgew0KICAgICAgICAgICAgIGh1bnRGb3JQcm9maWxlc0luRGlyKGV4dERpcik7
DQogICAgICAgICB9DQogICAgIH0NCiANCiAgICAgcHJpdmF0ZSB2b2lkIGh1bnRGb3JQcm9maWxl
c0luRGlyKFN0cmluZyBkaXIpIHsNCi0gICAgICAgIExPRy5pbmZvKCJMb29raW5nIGZvciBQcm9m
aWxlcyBpbiAiICsgZGlyKTsNCi0gICAgICAgIA0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZP
LCAiTG9va2luZyBmb3IgUHJvZmlsZXMgaW4gezB9IiwgZGlyKTsNCisNCiAgICAgICAgIEZpbGUg
ZXh0ZW5zaW9uRGlyID0gbmV3IEZpbGUoZGlyKTsNCiAgICAgICAgIGlmIChleHRlbnNpb25EaXIu
aXNEaXJlY3RvcnkoKSkgew0KICAgICAgICAgICAgIEZpbGVbXSBmaWxlcyA9IGV4dGVuc2lvbkRp
ci5saXN0RmlsZXMobmV3IEphckZpbGVGaWx0ZXIoKSk7DQpAQCAtMTA2LDggKzEwOCw5IEBADQog
ICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICBqYXJmaWxlID0gbmV3
IEphckZpbGUoZmlsZSk7DQogICAgICAgICAgICAgICAgICAgICBpZiAoamFyZmlsZSAhPSBudWxs
KSB7DQotICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmluZm8oIkxvb2tpbmcgZm9yIFByb2Zp
bGVzIGluIHRoZSBKYXIgIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBqYXJm
aWxlLmdldE5hbWUoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5J
TkZPLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvb2tpbmcgZm9yIFByb2Zp
bGVzIGluIHRoZSBKYXIgezB9IiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGph
cmZpbGUuZ2V0TmFtZSgpKTsNCiANCiAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0xvYWRl
ciBjbGFzc2xvYWRlciA9IG5ldyBVUkxDbGFzc0xvYWRlcigNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBVUkxbXSB7ZmlsZS50b1VSSSgpLnRvVVJMKCl9KTsNCkBAIC0xMTUs
NyArMTE4LDcgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzbG9hZGVy
KTsNCiAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9F
eGNlcHRpb24gaW9lKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cuZGVidWcoIkNhbm5vdCBv
cGVuIEphciBmaWxlICIgKyBmaWxlLCBpb2UpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxv
ZyhMZXZlbC5GSU5FLCAiQ2Fubm90IG9wZW4gSmFyIGZpbGUgIiArIGZpbGUsIGlvZSk7DQogICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQpAQCAtMTI1LDcgKzEy
OCw3IEBADQogICAgIC8qKg0KICAgICAgKiBJbnRlcnByZXRzIHRoZSBNQU5JRkVTVCBmaWxlIGlu
IHRoZSBKQVIgaW4gb3JkZXIgdG8gbG9hZCB0aGUgZGVjbGFyZWQNCiAgICAgICogcHJvZmlsZS4N
Ci0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBmaWxlIHRoZSBmaWxlIG9iamVjdCBy
ZWZlcmVuY2luZyB0aGUgSmFyDQogICAgICAqIEBwYXJhbSBtYW5pZmVzdCB0aGUgbWFuaWZlc3Qg
ZmlsZSBvZiB0aGUgSmFyDQogICAgICAqIEBwYXJhbSBjbGFzc2xvYWRlciB0aGUgY2xhc3Nsb2Fk
ZXIgdGhhdCBsb2FkcyB0aGUgY2xhc3NlcyByZWZlcmVuY2VkIGJ5DQpAQCAtMTYzLDEyICsxNjYs
MTIgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZUZhY2FkZS5nZXRNYW5h
Z2VyKCkpOw0KIA0KICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZUZhY2FkZS5nZXRNYW5hZ2Vy
KCkucmVnaXN0ZXJQcm9maWxlKHVkcCk7DQotICAgICAgICAgICAgICAgICAgICBMT0cuZGVidWco
IlJlZ2lzdGVyZWQgUHJvZmlsZTogIiArIHVkcC5nZXREaXNwbGF5TmFtZSgpDQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICsgIi4uLiIpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxv
ZyhMZXZlbC5GSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnaXN0ZXJlZCBQ
cm9maWxlOiB7MH0iLCB1ZHAuZ2V0RGlzcGxheU5hbWUoKSk7DQogICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKFByb2ZpbGVFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICAgICAgTE9HLmVy
cm9yKCJFeGNlcHRpb24iLCBlKTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwu
U0VWRVJFLCAiRXhjZXB0aW9uIiwgZSk7DQogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhj
ZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5lcnJvcigiRXhjZXB0aW9uIiwg
ZSk7DQorICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlv
biIsIGUpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KIA0KQEAgLTE3Niwx
MCArMTc5LDEwIEBADQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAqIFJlc29sdmVzIHRoZSBk
ZXBlbmRlbmNpZXMgZm9yIGEgUHJvZmlsZQ0KLSAgICAgKiANCisgICAgICogUmVzb2x2ZXMgdGhl
IGRlcGVuZGVuY2llcyBmb3IgYSBQcm9maWxlLg0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gYXR0
ciBhIGdyb3VwIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIE1BTklGRVNUIGZpbGUgZm9yIHRoaXMgSkFS
DQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcmV0dXJuIHRoZSBzZXQgb2YgZGVmaW5lZCBw
cm9maWxlcw0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBTZXQ8U3RyaW5nPiBsb2FkTWFuaWZlc3RE
ZXBlbmRlbmNpZXNGb3JQcm9maWxlKEF0dHJpYnV0ZXMgYXR0cikgew0KQEAgLTE5OCwxMSArMjAx
LDExIEBADQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAqIExvYWRzIHRoZSBKYXZhIGNyaXRp
Y3MgZGVmaW5lZCBieSBhIHByb2ZpbGUNCi0gICAgICogDQorICAgICAqIExvYWRzIHRoZSBKYXZh
IGNyaXRpY3MgZGVmaW5lZCBieSBhIHByb2ZpbGUuDQorICAgICAqDQogICAgICAqIEBwYXJhbSBh
dHRyIHRoZSBNYW5pZmVzdCBzZWN0aW9uIG9mIHRoZSBwcm9maWxlDQogICAgICAqIEBwYXJhbSBj
bGFzc2xvYWRlciB0aGUgY2xhc3Nsb2FkZXIgb2YgdGhlIEphcg0KLSAgICAgKiANCisgICAgICoN
CiAgICAgICogQHJldHVybiB0aGUgc2V0IG9mIGRlZmluZWQgY3JpdGljcw0KICAgICAgKi8NCiAg
ICAgcHJpdmF0ZSBTZXQ8Q3JpdGljPiBsb2FkSmF2YUNyaXRpY3NGb3JQcm9maWxlKEF0dHJpYnV0
ZXMgYXR0ciwNCkBAIC0yMjEsMTggKzIyNCwxOSBAQA0KICAgICAgICAgICAgICAgICAgICAgQ3Jp
dGljIGNyaXRpYyA9IChDcml0aWMpIGNsLm5ld0luc3RhbmNlKCk7DQogICAgICAgICAgICAgICAg
ICAgICByZXQuYWRkKGNyaXRpYyk7DQogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzTm90
Rm91bmRFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICAgICAgTE9HLmVycm9yKCJFcnJv
ciBsb2FkaW5nIGNsYXNzOiAiICsgZW50cnksIGUpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9H
LmxvZyhMZXZlbC5TRVZFUkUsICJFcnJvciBsb2FkaW5nIGNsYXNzOiAiICsgZW50cnksIGUpOw0K
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsNCi0g
ICAgICAgICAgICAgICAgICAgIExPRy5lcnJvcigiRXJyb3IgaW5zdGFudGlhbnRpbmcgY2xhc3M6
ICIgKyBlbnRyeSwgZSk7DQorICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVS
RSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIGluc3RhbnRpYW50aW5nIGNs
YXNzOiAiICsgZW50cnksIGUpOw0KICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNj
ZXNzRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5lcnJvcigiRXhjZXB0
aW9uIiwgZSk7DQorICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4
Y2VwdGlvbiIsIGUpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAg
ICAgfQ0KIA0KICAgICAgICAgcmV0dXJuIHJldDsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoq
DQogICAgICAqIFRoZSBmaWxlIGZpbHRlciB0aGF0IHNlbGVjdHMgSmFyIGZpbGVzLg0KICAgICAg
Ki8NCkBAIC0yNDYsNSArMjUwLDUgQEANCiAgICAgICAgICAgICAgICAgICAgICYmIHBhdGhuYW1l
LmdldFBhdGgoKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCIuamFyIikpOw0KICAgICAgICAgfQ0K
ICAgICB9DQotICAgIA0KKw0KIH0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9EZXBlbmRlbmN5UmVzb2x2ZXIuamF2YQ0K
VXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvRGVwZW5k
ZW5jeVJlc29sdmVyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5
MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMv
b3JnL2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9EZXBlbmRlbmN5UmVzb2x2ZXIuamF2YQkob3Jp
Z2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxl
L2ludGVybmFsL0RlcGVuZGVuY3lSZXNvbHZlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgw
MA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAq
IENvcHlyaWdodCAoYykgMjAxMCBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmln
aHQgKGMpIDIwMTAtMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQog
ICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJs
aWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24s
IGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC0xMywxMSArMTMsMTEgQEANCiANCiBwYWNrYWdlIG9y
Zy5hcmdvdW1sLnByb2ZpbGUuaW50ZXJuYWw7DQogDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0
aW9uOw0KIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7DQogaW1wb3J0IGphdmEudXRpbC5I
YXNoU2V0Ow0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCi0NCi1pbXBvcnQgb3JnLmFw
YWNoZS5sb2c0ai5Mb2dnZXI7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2lt
cG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogLyoqDQogICogQSBkZXBlbmRlbmN5
IHJlc29sdmVyIGZvciBpdGVtcyBvZiB0eXBlIFQuIEl0IGltcGxlbWVudHMgYSBzdGF0ZS1mdWxs
DQpAQCAtMjcsMTEgKzI3LDEyIEBADQogICogQHBhcmFtIDxUPiB0aGUgdHlwZSBvZiBpdGVtcyBm
b3Igd2hpY2ggZGVwZW5kZW5jaWVzIHdpbGwgYmUgcmVzb2x2ZWQuDQogICovDQogY2xhc3MgRGVw
ZW5kZW5jeVJlc29sdmVyPFQ+IHsNCi0gICAgDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExv
Z2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKA0KLSAgICAgICAgICAgIERlcGVuZGVuY3lSZXNv
bHZlci5jbGFzcyk7DQorDQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0K
KyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihEZXBlbmRlbmN5UmVzb2x2ZXIuY2xhc3MuZ2V0TmFt
ZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBEZXBlbmRlbmN5Q2hlY2tlcjxUPiBjaGVja2VyOw0KKw0K
ICAgICAvKioNCiAgICAgICogV0FSTklORzogb25seSB0byBiZSB1c2VkIGZyb20gb3V0c2lkZSBj
bGFzc2VzIGJ5IHRlc3RzLg0KICAgICAgKiBUaGlzIGlzIHRoZSBzdGF0ZS1mdWxsIHBhcnQgb2Yg
dGhlIGFsZ29yaXRobSwgc3RvcmluZyB0aGUgdW5yZXNvbHZlZA0KQEAgLTc2LDE4ICs3NywyMSBA
QA0KICAgICAgICAgQ29sbGVjdGlvbjxUPiBhbGxVbnJlc29sdmVkSXRlbXMgPSBuZXcgSGFzaFNl
dDxUPigpOw0KICAgICAgICAgYWxsVW5yZXNvbHZlZEl0ZW1zLmFkZEFsbChpdGVtcyk7DQogICAg
ICAgICBhbGxVbnJlc29sdmVkSXRlbXMuYWRkQWxsKHVucmVzb2x2ZWRJdGVtcyk7DQotICAgICAg
ICBpZiAoTE9HLmlzRGVidWdFbmFibGVkKCkpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoaXRl
bXMyTXNnKCJBdHRlbXB0IHRvIHJlc29sdmUgdGhlIGZvbGxvd2luZyBpdGVtczoiLA0KLSAgICAg
ICAgICAgICAgICBhbGxVbnJlc29sdmVkSXRlbXMpKTsNCisgICAgICAgIA0KKyAgICAgICAgaWYg
KExPRy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZl
bC5GSU5FLA0KKyAgICAgICAgICAgICAgICAgICAgaXRlbXMyTXNnKCJBdHRlbXB0IHRvIHJlc29s
dmUgdGhlIGZvbGxvd2luZyBpdGVtczoiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFsbFVucmVzb2x2ZWRJdGVtcykpOw0KICAgICAgICAgfQ0KICAgICAgICAgQ29sbGVjdGlvbjxU
PiByZXNvbHZlZCA9IGludGVybmFsUmVzb2x2ZShhbGxVbnJlc29sdmVkSXRlbXMpOw0KICAgICAg
ICAgYWxsVW5yZXNvbHZlZEl0ZW1zLnJlbW92ZUFsbChyZXNvbHZlZCk7DQogICAgICAgICB1bnJl
c29sdmVkSXRlbXMuY2xlYXIoKTsNCiAgICAgICAgIHVucmVzb2x2ZWRJdGVtcy5hZGRBbGwoYWxs
VW5yZXNvbHZlZEl0ZW1zKTsNCiAgICAgICAgIGlmICghdW5yZXNvbHZlZEl0ZW1zLmlzRW1wdHko
KSkgew0KLSAgICAgICAgICAgIExPRy53YXJuKGl0ZW1zMk1zZygNCi0gICAgICAgICAgICAgICAg
IlRoZSBmb2xsb3dpbmcgaXRlbXMgd2VyZSBsZWZ0IHVucmVzb2x2ZWQgYWZ0ZXIgYXR0ZW1wdDpc
biIsDQotICAgICAgICAgICAgICAgIHVucmVzb2x2ZWRJdGVtcykpOw0KKyAgICAgICAgICAgIExP
Ry5sb2coTGV2ZWwuV0FSTklORywNCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zMk1zZygiVGhl
IGZvbGxvd2luZyBpdGVtcyB3ZXJlIGxlZnQgdW5yZXNvbHZlZCBhZnRlciAiDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKyAiYXR0ZW1wdDpcbiIsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5yZXNvbHZlZEl0ZW1zKSk7DQogICAgICAgICB9DQogICAgIH0NCiANCkBA
IC0xMDQsNyArMTA4LDcgQEANCiAgICAgLyoqDQogICAgICAqIFJlY3Vyc2l2ZWx5IHJlc29sdmUg
YWxsIGRlcGVuZGVuY2llcy4gU3RvcHMgd2hlbiBhbiBpdGVyYXRpb24gdGhyb3VnaA0KICAgICAg
KiBhbGwgdW5yZXNvbHZlZCBpdGVtcyBkaWRuJ3QgbWFuYWdlIHRvIHJlc29sdmUgYW55Lg0KLSAg
ICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGl0ZW1zIGl0ZW1zIHRvIHJlc29sdmUuDQog
ICAgICAqIEByZXR1cm4gdGhlIGl0ZW1zIHRoYXQgd2VyZSByZXNvbHZlZC4NCiAgICAgICovDQoN
Ck1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUv
aW50ZXJuYWwvUHJvZmlsZU1hbmFnZXJJbXBsLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGln
cmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFsL1Byb2ZpbGVNYW5hZ2VySW1wbC5qYXZhP3ZpZXc9
ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50
ZXJuYWwvUHJvZmlsZU1hbmFnZXJJbXBsLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9Qcm9maWxlTWFuYWdl
ckltcGwuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8q
ICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAx
MCBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBD
b250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHBy
b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxh
YmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQog
ICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUg
YXQNCkBAIC00Niw4ICs0Niw5IEBADQogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCiBp
bXBvcnQgamF2YS51dGlsLkxpc3Q7DQogaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7
DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9n
Z2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9y
dCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuQWdlbmN5Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2du
aXRpdmUuQ3JpdGljOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb25maWd1cmF0aW9uLkNvbmZpZ3Vy
YXRpb247DQpAQCAtNjQsMTQgKzY1LDE0IEBADQogaW1wb3J0IG9yZy5hcmdvdW1sLnVtbC5jb2du
aXRpdmUuY3JpdGljcy5Qcm9maWxlR29vZFByYWN0aWNlczsNCiANCiAvKioNCi0gKiBEZWZhdWx0
IDxjb2RlPlByb2ZpbGVNYW5hZ2VyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbg0KKyAqIERlZmF1bHQg
PGNvZGU+UHJvZmlsZU1hbmFnZXI8L2NvZGU+IGltcGxlbWVudGF0aW9uLg0KICAqDQogICogQGF1
dGhvciBNYXJjb3MgQXVyZWxpbw0KICAqLw0KIHB1YmxpYyBjbGFzcyBQcm9maWxlTWFuYWdlcklt
cGwgaW1wbGVtZW50cyBQcm9maWxlTWFuYWdlciB7DQotICAgIA0KLSAgICBwcml2YXRlIHN0YXRp
YyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcigNCi0gICAgICAgICAgICBQcm9m
aWxlTWFuYWdlckltcGwuY2xhc3MpOw0KKw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dn
ZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoUHJvZmlsZU1hbmFnZXJJbXBsLmNs
YXNzLmdldE5hbWUoKSk7DQogDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBESVJF
Q1RPUllfU0VQQVJBVE9SID0gIioiOw0KIA0KQEAgLTg4LDEwICs4OSwxMCBAQA0KICAgICAgICAg
ICAgIC5tYWtlS2V5KCJwcm9maWxlcyIsICJkaXJlY3RvcmllcyIpOw0KIA0KICAgICAvKioNCi0g
ICAgICogQXZvaWRzIHJlY3Vyc2l2ZSBjb25maWd1cmF0aW9uIHVwZGF0ZSB3aGVuIGxvYWRpbmcg
Y29uZmlndXJhdGlvbg0KKyAgICAgKiBBdm9pZHMgcmVjdXJzaXZlIGNvbmZpZ3VyYXRpb24gdXBk
YXRlIHdoZW4gbG9hZGluZyBjb25maWd1cmF0aW9uLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBi
b29sZWFuIGRpc2FibGVDb25maWd1cmF0aW9uVXBkYXRlID0gZmFsc2U7DQotICAgIA0KKw0KICAg
ICBwcml2YXRlIExpc3Q8UHJvZmlsZT4gcHJvZmlsZXMgPSBuZXcgQXJyYXlMaXN0PFByb2ZpbGU+
KCk7DQogDQogICAgIHByaXZhdGUgTGlzdDxQcm9maWxlPiBkZWZhdWx0UHJvZmlsZXMgPSBuZXcg
QXJyYXlMaXN0PFByb2ZpbGU+KCk7DQpAQCAtOTksOSArMTAwLDkgQEANCiAgICAgcHJpdmF0ZSBM
aXN0PFN0cmluZz4gc2VhcmNoRGlyZWN0b3JpZXMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsN
CiANCiAgICAgcHJpdmF0ZSBQcm9maWxlVU1MIHByb2ZpbGVVTUw7DQotICAgIA0KKw0KICAgICBw
cml2YXRlIFByb2ZpbGVHb29kUHJhY3RpY2VzIHByb2ZpbGVHb29kUHJhY3RpY2VzOw0KLSAgICAN
CisNCiAgICAgcHJpdmF0ZSBQcm9maWxlQ29kZUdlbmVyYXRpb24gcHJvZmlsZUNvZGVHZW5lcmF0
aW9uOw0KIA0KICAgICBwcml2YXRlIERlcGVuZGVuY3lSZXNvbHZlcjxGaWxlPiByZXNvbHZlcjsN
CkBAIC0xMTIsMTYgKzExMywxNiBAQA0KICAgICBwdWJsaWMgUHJvZmlsZU1hbmFnZXJJbXBsKCkg
ew0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBkaXNhYmxlQ29uZmlndXJhdGlvblVwZGF0
ZSA9IHRydWU7DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgcHJvZmlsZVVNTCA9IG5l
dyBQcm9maWxlVU1MKCk7DQogICAgICAgICAgICAgcHJvZmlsZUdvb2RQcmFjdGljZXMgPSBuZXcg
UHJvZmlsZUdvb2RQcmFjdGljZXMoKTsNCiAgICAgICAgICAgICBwcm9maWxlQ29kZUdlbmVyYXRp
b24gPSBuZXcgUHJvZmlsZUNvZGVHZW5lcmF0aW9uKA0KICAgICAgICAgICAgICAgICAgICAgcHJv
ZmlsZUdvb2RQcmFjdGljZXMpOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgIHJlZ2lz
dGVyUHJvZmlsZUludGVybmFsKHByb2ZpbGVVTUwpOw0KLSAgICAgICAgICAgIGFkZFRvRGVmYXVs
dFByb2ZpbGVzKHByb2ZpbGVVTUwpOyANCisgICAgICAgICAgICBhZGRUb0RlZmF1bHRQcm9maWxl
cyhwcm9maWxlVU1MKTsNCiAgICAgICAgICAgICAgICAgLy8gdGhlIFVNTCBQcm9maWxlIGlzIGFs
d2F5cyBwcmVzZW50IGFuZCBkZWZhdWx0DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAg
Ly8gcmVnaXN0ZXIgdGhlIGJ1aWx0LWluIHByb2ZpbGVzDQogICAgICAgICAgICAgcmVnaXN0ZXJQ
cm9maWxlSW50ZXJuYWwocHJvZmlsZUdvb2RQcmFjdGljZXMpOw0KICAgICAgICAgICAgIHJlZ2lz
dGVyUHJvZmlsZUludGVybmFsKHByb2ZpbGVDb2RlR2VuZXJhdGlvbik7DQpAQCAtMTUwLDEyICsx
NTEsMTcgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICB1ZHAgPSBuZXcgVXNlckRlZmluZWRQ
cm9maWxlKGZpbGUsIHByb2ZpbGVNYW5hZ2VyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWdpc3RlclByb2ZpbGVJbnRlcm5hbCh1ZHApOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsNCi0gICAgICAgICAgICAgICAgICAgICAgICBMT0cuZGVidWcoIlVzZXJEZWZp
bmVkUHJvZmlsZSBmb3IgZmlsZSAiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZmls
ZS5nZXRBYnNvbHV0ZVBhdGgoKSArICIgcmVnaXN0ZXJlZC4iKTsNCisNCisgICAgICAgICAgICAg
ICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVXNlckRlZmluZWRQcm9maWxlIGZvciBmaWxlIHswfSByZWdpc3RlcmVkLiIsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmdldEFic29sdXRlUGF0aCgpKTsN
CisNCiAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFByb2ZpbGVFeGNlcHRpb24gZSkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgZmls
ZSBpcyB1bnVzYWJsZQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIExPRy5pbmZvKCJGYWlsZWQg
dG8gbG9hZCB1c2VyIGRlZmluZWQgcHJvZmlsZSAiDQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsgZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSArICIuIiwgZSk7DQorICAgICAgICAgICAgICAg
ICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkZhaWxlZCB0byBsb2FkIHVzZXIgZGVmaW5lZCBwcm9maWxlICINCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSArICIuIiwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUpOw0KICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDsNCkBA
IC0xOTYsMTYgKzIwMiwxOCBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHAgPSBuZXcgVXNlckRlZmluZWRQcm9maWxlKGZpbGUsIHRoaXMpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyUHJvZmlsZUludGVybmFsKHApOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUHJvZmlsZUV4Y2VwdGlvbiBlKSB7
DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmVycm9yKCJFcnJvciBs
b2FkaW5nIHByb2ZpbGU6ICIgKyBmaWxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkVycm9yIGxvYWRpbmcgcHJvZmlsZTogIiArIGZpbGUsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFVSSVN5bnRheEV4Y2VwdGlvbiBlMSkg
ew0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIkludmFsaWQgcGF0aCBm
b3IgUHJvZmlsZTogIiArIGZpbGVOYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
T0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiSW52YWxpZCBwYXRoIGZvciBQcm9maWxlOiAiICsgZmlsZU5hbWUsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZTEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKFRocm93YWJsZSBlMikgew0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0cu
ZXJyb3IoIkVycm9yIGxvYWRpbmcgcHJvZmlsZTogIiArIGZpbGVOYW1lLA0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGUyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciBsb2FkaW5nIHByb2ZpbGU6
ICIgKyBmaWxlTmFtZSwgZTIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVzYy5jaGFyQXQoMCkgPT0gJ0MnKSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIHByb2ZpbGVJZGVudGlmaWVyID0gZGVzYy5zdWJzdHJp
bmcoMSk7DQpAQCAtMjM5LDkgKzI0Nyw5IEBADQogDQogICAgIHByaXZhdGUgdm9pZCBsb2FkRGly
ZWN0b3JpZXNGcm9tQ29uZmlndXJhdGlvbigpIHsNCiAgICAgICAgIGRpc2FibGVDb25maWd1cmF0
aW9uVXBkYXRlID0gdHJ1ZTsNCi0gICAgICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSAN
CisgICAgICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPQ0KICAgICAgICAgICAgIG5ldyBT
dHJpbmdUb2tlbml6ZXIoDQotICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uLmdldFN0
cmluZyhLRVlfREVGQVVMVF9ESVJFQ1RPUklFUyksIA0KKyAgICAgICAgICAgICAgICAgICAgQ29u
ZmlndXJhdGlvbi5nZXRTdHJpbmcoS0VZX0RFRkFVTFRfRElSRUNUT1JJRVMpLA0KICAgICAgICAg
ICAgICAgICAgICAgRElSRUNUT1JZX1NFUEFSQVRPUiwgZmFsc2UpOw0KICAgICAgICAgd2hpbGUg
KHRva2VuaXplci5oYXNNb3JlVG9rZW5zKCkpIHsNCiAgICAgICAgICAgICBzZWFyY2hEaXJlY3Rv
cmllcy5hZGQodG9rZW5pemVyLm5leHRUb2tlbigpKTsNCkBAIC0yNjYsMjAgKzI3NCwyMCBAQA0K
ICAgICBwdWJsaWMgdm9pZCByZWdpc3RlclByb2ZpbGUoUHJvZmlsZSBwKSB7DQogICAgICAgICBp
ZiAocmVnaXN0ZXJQcm9maWxlSW50ZXJuYWwocCkpIHsNCiAgICAgICAgICAgICAvLyB0aGlzIHBy
b2ZpbGUgY291bGQgaGF2ZSBub3QgYmVlbiBsb2FkZWQgd2hlbg0KLSAgICAgICAgICAgIC8vIHRo
ZSBkZWZhdWx0IHByb2ZpbGUgY29uZmlndXJhdGlvbiANCisgICAgICAgICAgICAvLyB0aGUgZGVm
YXVsdCBwcm9maWxlIGNvbmZpZ3VyYXRpb24NCiAgICAgICAgICAgICAvLyB3YXMgbG9hZGVkIGF0
IGZpcnN0LCBzbyB3ZSBuZWVkIHRvIGRvIGl0IGFnYWluDQogICAgICAgICAgICAgbG9hZERlZmF1
bHRQcm9maWxlc2Zyb21Db25maWd1cmF0aW9uKCk7DQogICAgICAgICB9DQogICAgICAgICByZXNv
bHZlci5yZXNvbHZlKCk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBAcGFy
YW0gcCB0aGUgcHJvZmlsZSB0byByZWdpc3Rlci4NCiAgICAgICogQHJldHVybiB0cnVlIGlmIHRo
ZXJlIHNob3VsZCBiZSBhbiBhdHRlbXB0IHRvIGxvYWQgdGhlIGRlZmF1bHQgcHJvZmlsZXMNCiAg
ICAgICogZnJvbSB0aGUgY29uZmlndXJhdGlvbi4NCiAgICAgICovDQogICAgIHByaXZhdGUgYm9v
bGVhbiByZWdpc3RlclByb2ZpbGVJbnRlcm5hbChQcm9maWxlIHApIHsNCi0gICAgICAgIA0KKw0K
ICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICBib29sZWFuIGxvYWREZWZhdWx0UHJvZmlsZXNG
cm9tQ29uZmlndXJhdGlvbiA9IGZhbHNlOw0KICAgICAgICAgICAgIGlmIChwICE9IG51bGwgJiYg
IXByb2ZpbGVzLmNvbnRhaW5zKHApKSB7DQpAQCAtMjk4LDcgKzMwNiw4IEBADQogICAgICAgICAg
ICAgcmV0dXJuIGxvYWREZWZhdWx0UHJvZmlsZXNGcm9tQ29uZmlndXJhdGlvbjsNCiAgICAgICAg
IH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgew0KICAgICAgICAgICAgIC8vIFRPRE86IEJl
dHRlciBpZiB3ZSB3cmFwIGluIGEgUHJvZmlsZUV4Y2VwdGlvbiBhbmQgdGhyb3cgdGhhdA0KLSAg
ICAgICAgICAgIExPRy5lcnJvcigiRXJyb3IgcmVnaXN0ZXJpbmcgcHJvZmlsZSAiICsgcC5nZXRE
aXNwbGF5TmFtZSgpKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAg
ICAgICAgICAgICAgICAgICJFcnJvciByZWdpc3RlcmluZyBwcm9maWxlICIgKyBwLmdldERpc3Bs
YXlOYW1lKCkpOw0KICAgICAgICAgICAgIHRocm93IGU7DQogICAgICAgICB9DQogICAgIH0NCkBA
IC0zMjEsMjIgKzMzMCwyMiBAQA0KIA0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcg
T0xEX1BST0ZJTEVfUEFDS0FHRSA9ICJvcmcuYXJnb3VtbC51bWwucHJvZmlsZSI7DQogDQotICAg
IHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBORVdfUFJPRklMRV9QQUNLQUdFID0gDQorICAg
IHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBORVdfUFJPRklMRV9QQUNLQUdFID0NCiAgICAg
ICAgICJvcmcuYXJnb3VtbC5wcm9maWxlLmludGVybmFsIjsNCi0gICAgDQorDQogICAgIHB1Ymxp
YyBQcm9maWxlIGdldFByb2ZpbGVGb3JDbGFzcyhTdHJpbmcgcHJvZmlsZUNsYXNzKSB7DQogICAg
ICAgICBQcm9maWxlIGZvdW5kID0gbnVsbDsNCi0gICAgICAgIA0KKw0KICAgICAgICAgLy8gSWYg
d2UgZm91bmQgYW4gb2xkLXN0eWxlIG5hbWUsIHVwZGF0ZSBpdCB0byB0aGUgbmV3IHBhY2thZ2Ug
bmFtZQ0KLSAgICAgICAgaWYgKHByb2ZpbGVDbGFzcyAhPSBudWxsIA0KKyAgICAgICAgaWYgKHBy
b2ZpbGVDbGFzcyAhPSBudWxsDQogICAgICAgICAgICAgICAgICYmIHByb2ZpbGVDbGFzcy5zdGFy
dHNXaXRoKE9MRF9QUk9GSUxFX1BBQ0tBR0UpKSB7DQogICAgICAgICAgICAgcHJvZmlsZUNsYXNz
ID0gcHJvZmlsZUNsYXNzLnJlcGxhY2UoT0xEX1BST0ZJTEVfUEFDS0FHRSwNCiAgICAgICAgICAg
ICAgICAgICAgIE5FV19QUk9GSUxFX1BBQ0tBR0UpOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQor
DQogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5hbWVzIGRpZG4ndCBjaGFuZ2UgYWdhaW4NCiAg
ICAgICAgIGFzc2VydCBwcm9maWxlVU1MLmdldENsYXNzKCkuZ2V0TmFtZSgpLnN0YXJ0c1dpdGgo
TkVXX1BST0ZJTEVfUEFDS0FHRSk7DQotICAgICAgICANCisNCiAgICAgICAgIGZvciAoUHJvZmls
ZSBwIDogcHJvZmlsZXMpIHsNCiAgICAgICAgICAgICBpZiAocC5nZXRDbGFzcygpLmdldE5hbWUo
KS5lcXVhbHMocHJvZmlsZUNsYXNzKSkgew0KICAgICAgICAgICAgICAgICBmb3VuZCA9IHA7DQpA
QCAtMzQ3LDcgKzM1Niw3IEBADQogICAgIH0NCiANCiAgICAgcHVibGljIHZvaWQgYWRkVG9EZWZh
dWx0UHJvZmlsZXMoUHJvZmlsZSBwKSB7DQotICAgICAgICBpZiAocCAhPSBudWxsICYmIHByb2Zp
bGVzLmNvbnRhaW5zKHApIA0KKyAgICAgICAgaWYgKHAgIT0gbnVsbCAmJiBwcm9maWxlcy5jb250
YWlucyhwKQ0KICAgICAgICAgICAgICAgICAmJiAhZGVmYXVsdFByb2ZpbGVzLmNvbnRhaW5zKHAp
KSB7DQogICAgICAgICAgICAgZGVmYXVsdFByb2ZpbGVzLmFkZChwKTsNCiAgICAgICAgICAgICB1
cGRhdGVEZWZhdWx0UHJvZmlsZXNDb25maWd1cmF0aW9uKCk7DQpAQCAtMzcyLDcgKzM4MSw4IEBA
DQogICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgTW9kZWwuZ2V0WG1pUmVhZGVy
KCkuYWRkU2VhcmNoUGF0aChwYXRoKTsNCiAgICAgICAgICAgICB9IGNhdGNoIChVbWxFeGNlcHRp
b24gZSkgew0KLSAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIkNvdWxkbid0IHJldHJpdmUgWE1J
IFJlYWRlciBmcm9tIE1vZGVsLiIsIGUpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVs
LlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgcmV0cml2ZSBYTUkg
UmVhZGVyIGZyb20gTW9kZWwuIiwgZSk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAg
ICB9DQpAQCAtMzg4LDcgKzM5OCw4IEBADQogICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAg
ICAgICAgTW9kZWwuZ2V0WG1pUmVhZGVyKCkucmVtb3ZlU2VhcmNoUGF0aChwYXRoKTsNCiAgICAg
ICAgICAgICB9IGNhdGNoIChVbWxFeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICBMT0cu
ZXJyb3IoIkNvdWxkbid0IHJldHJpdmUgWE1JIFJlYWRlciBmcm9tIE1vZGVsLiIsIGUpOw0KKyAg
ICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAg
ICAgICAiQ291bGRuJ3QgcmV0cml2ZSBYTUkgUmVhZGVyIGZyb20gTW9kZWwuIiwgZSk7DQogICAg
ICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtNDYwLDYgKzQ3MSw2IEBADQogICAg
ICAgICAgICAgICAgIGMuc2V0RW5hYmxlZCh0cnVlKTsNCiAgICAgICAgICAgICAgICAgQ29uZmln
dXJhdGlvbi5zZXRCb29sZWFuKGMuZ2V0Q3JpdGljS2V5KCksIHRydWUpOw0KICAgICAgICAgICAg
IH0NCi0gICAgICAgIH0gICAgICAgIA0KKyAgICAgICAgfQ0KICAgICB9DQogfQ0KDQpNb2RpZmll
ZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFs
L1Byb2ZpbGVNZXRhLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2Uv
YnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9m
aWxlL2ludGVybmFsL1Byb2ZpbGVNZXRhLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9
MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9Qcm9maWxlTWV0YS5qYXZh
CShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3By
b2ZpbGUvaW50ZXJuYWwvUHJvZmlsZU1ldGEuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDAN
CkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBD
b3B5cmlnaHQgKGMpIDIwMDgsMjAxMCBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDgtMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmln
aHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz
DQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQ
dWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp
b24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00NSw4ICs0NSw5IEBADQogaW1wb3J0IGphdmEu
dXRpbC5Db2xsZWN0aW9uczsNCiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7DQogaW1wb3J0IGph
dmEudXRpbC5TZXQ7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBq
YXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9n
Z2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuQ3JpdGljOw0KIGltcG9ydCBvcmcu
YXJnb3VtbC5jb2duaXRpdmUuVG9Eb0l0ZW07DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLk1v
ZGVsOw0KQEAgLTYxLDI0ICs2MiwyNSBAQA0KIA0KIC8qKg0KICAqIE1ldGEgUHJvZmlsZSB3aGlj
aCBkZWZpbmVzIHRoZSBUYWdnZWRWYWx1ZXMgdG8gYmUgdXNlZCBpbiBVc2VyIGRlZmluZWQNCi0g
KiBQcm9maWxlcw0KLSAqIA0KKyAqIFByb2ZpbGVzLg0KKyAqDQogICogQGF1dGhvciBtYWFzDQog
ICovDQogcHVibGljIGNsYXNzIFByb2ZpbGVNZXRhIGV4dGVuZHMgUHJvZmlsZSB7DQogDQotICAg
IHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFByb2Zp
bGVNZXRhLmNsYXNzKTsNCi0gICAgDQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBM
T0cgPQ0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihQcm9maWxlTWV0YS5jbGFzcy5nZXROYW1l
KCkpOw0KKw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPRklMRV9GSUxFID0g
Im1ldGFwcm9maWxlLnhtaSI7DQogICAgIHByaXZhdGUgUHJvZmlsZVJlZmVyZW5jZSBwcm9maWxl
UmVmZXJlbmNlID0gbnVsbDsNCi0gICAgDQorDQogICAgIHByaXZhdGUgQ29sbGVjdGlvbiBtb2Rl
bCA9IG51bGw7DQotICAgIA0KKw0KICAgICBTZXQ8Q3JpdGljPiBjcml0aWNzID0gbnVsbDsNCiAN
CiAgICAgLyoqDQogICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBwcm9maWxl
DQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAdGhyb3dzIFByb2ZpbGVFeGNlcHRpb24gaWYg
c29tZXRoaW5nIGdvZXMgd3JvbmcNCiAgICAgICovDQogICAgIHB1YmxpYyBQcm9maWxlTWV0YSgp
IHRocm93cyBQcm9maWxlRXhjZXB0aW9uIHsNCkBAIC05Nyw3ICs5OSw4IEBADQogICAgICAgICAg
ICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgbW9kZWwgPSBwcm9maWxlTW9kZWxMb2FkZXIubG9h
ZE1vZGVsKHByb2ZpbGVSZWZlcmVuY2UpOw0KICAgICAgICAgICAgIH0gY2F0Y2ggKFByb2ZpbGVF
eGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiBsb2Fk
aW5nIG1ldGFwcm9maWxlICIgKyBQUk9GSUxFX0ZJTEUsIGUpOw0KKyAgICAgICAgICAgICAgICBM
T0cubG9nKExldmVsLlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAiRXhjZXB0aW9u
IGxvYWRpbmcgbWV0YXByb2ZpbGUgIiArIFBST0ZJTEVfRklMRSwgZSk7DQogICAgICAgICAgICAg
fQ0KIA0KICAgICAgICAgICAgIGlmIChtb2RlbCA9PSBudWxsKSB7DQpAQCAtMTEwLDEwICsxMTMs
MTAgQEANCiANCiAgICAgcHJpdmF0ZSB2b2lkIGxvYWRXZWxsRm9ybWVkbmVzc1J1bGVzKCkgew0K
ICAgICAgICAgY3JpdGljcyA9IG5ldyBIYXNoU2V0PENyaXRpYz4oKTsNCi0gICAgICAgICAgICAg
ICAgDQorDQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgIGNyaXRpY3MuYWRkKG5ldyBDck9D
TCgiY29udGV4dCBNb2RlbEVsZW1lbnQgaW52OiAiDQotICAgICAgICAgICAgICAgICAgICArICJz
ZWxmLnRhZ2dlZFZhbHVlLT4iIA0KKyAgICAgICAgICAgICAgICAgICAgKyAic2VsZi50YWdnZWRW
YWx1ZS0+Ig0KICAgICAgICAgICAgICAgICAgICAgKyAiZXhpc3RzKHh8eC50eXBlLm5hbWU9J0Rl
cGVuZGVuY3knKSBpbXBsaWVzICINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJz
ZWxmLnN0ZXJlb3R5cGUtPmV4aXN0cyh4fHgubmFtZSA9ICdQcm9maWxlJykiLA0KICAgICAgICAg
ICAgICAgICAgIlRoZSAnRGVwZW5kZW5jeScgdGFnIGRlZmluaXRpb24gc2hvdWxkIGJlIGFwcGxp
ZWQiDQpAQCAtMTI2LDcgKzEyOSw3IEBADQogDQogICAgICAgICB0cnkgew0KICAgICAgICAgICAg
IGNyaXRpY3MuYWRkKG5ldyBDck9DTCgiY29udGV4dCBNb2RlbEVsZW1lbnQgaW52OiAiDQotICAg
ICAgICAgICAgICAgICAgICArICJzZWxmLnRhZ2dlZFZhbHVlLT4iIA0KKyAgICAgICAgICAgICAg
ICAgICAgKyAic2VsZi50YWdnZWRWYWx1ZS0+Ig0KICAgICAgICAgICAgICAgICAgICAgKyAiZXhp
c3RzKHh8eC50eXBlLm5hbWU9J0ZpZ3VyZScpIG9yICINCiAgICAgICAgICAgICAgICAgICAgICsg
ImV4aXN0cyh4fHgudHlwZS5uYW1lPSdEZXNjcmlwdGlvbicpIG9yICINCiAgICAgICAgICAgICAg
ICAgICAgICsgImV4aXN0cyh4fHgudHlwZS5uYW1lPSdpMThuJykgb3IgIg0KQEAgLTEzOCwxOSAr
MTQxLDE5IEBADQogICAgICAgICAgICAgICAgICAgICArICJleGlzdHMoeHx4LnR5cGUubmFtZT0n
SGVhZGxpbmUnKSAiDQogICAgICAgICAgICAgICAgICAgICArICJpbXBsaWVzICINCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICArICJzZWxmLnN0ZXJlb3R5cGUtPmV4aXN0cyh4fHgubmFt
ZSA9ICdDcml0aWMnKSIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQogICAg
ICAgICAgICAgICAgICAgICAiTWlzdXNlIG9mIE1ldGFwcm9maWxlIFRhZ2dlZFZhbHVlcyIsDQot
ICAgICAgICAgICAgICAgICAgICAiVGhlICdGaWd1cmUnLCAnaTE4bicsICdLbm93bGVkZ2VUeXBl
JywgJ01vcmVJbmZvVVJMJywgIiANCi0gICAgICAgICAgICAgICAgICAgICsgIidQcmlvcml0eScs
ICdTdXBwb3J0ZWREZWNpc2lvbicsICdEZXNjcmlwdGlvbicgIiANCisgICAgICAgICAgICAgICAg
ICAgICJUaGUgJ0ZpZ3VyZScsICdpMThuJywgJ0tub3dsZWRnZVR5cGUnLCAnTW9yZUluZm9VUkwn
LCAiDQorICAgICAgICAgICAgICAgICAgICArICInUHJpb3JpdHknLCAnU3VwcG9ydGVkRGVjaXNp
b24nLCAnRGVzY3JpcHRpb24nICINCiAgICAgICAgICAgICAgICAgICAgICsgImFuZCAnSGVhZGxp
bmUnIHRhZyBkZWZpbml0aW9ucyAiDQogICAgICAgICAgICAgICAgICAgICArICJzaG91bGQgYmUg
YXBwbGllZCBvbmx5IHRvIE9DTCBjcml0aWNzLiIsDQotICAgICAgICAgICAgICAgICAgICANCisN
CiAgICAgICAgICAgICAgICAgICAgIFRvRG9JdGVtLk1FRF9QUklPUklUWSwgbnVsbCwgbnVsbCwN
CiAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnLyIpKTsNCiAg
ICAgICAgIH0gY2F0Y2ggKEludmFsaWRPY2xFeGNlcHRpb24gZSkgew0KICAgICAgICAgICAgIGUu
cHJpbnRTdGFja1RyYWNlKCk7DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIHRy
eSB7DQogICAgICAgICAgICAgY3JpdGljcy5hZGQobmV3IENyT0NMKCJjb250ZXh0IFN0ZXJlb3R5
cGUgaW52OiAiDQogICAgICAgICAgICAgICAgICAgICArICJzZWxmLm5hbWVzcGFjZS5zdGVyZW90
eXBlLT5leGlzdHMoeHx4Lm5hbWUgPSAnUHJvZmlsZScpIiwNCkBAIC0xNjUsNyArMTY4LDcgQEAN
CiANCiAgICAgICAgIHNldENyaXRpY3MoY3JpdGljcyk7DQogICAgIH0NCi0gICAgDQorDQogICAg
IEBPdmVycmlkZQ0KICAgICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKCkgew0KICAgICAg
ICAgcmV0dXJuICJNZXRhUHJvZmlsZSI7DQpAQCAtMTg1LDcgKzE4OCw3IEBADQogICAgICAgICAg
ICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUNvbGxlY3Rpb24obW9kZWwpOw0KICAg
ICAgICAgfQ0KICAgICB9DQotICAgIA0KKw0KICAgICBAT3ZlcnJpZGUNCiAgICAgcHVibGljIFNl
dDxDcml0aWM+IGdldENyaXRpY3MoKSB7DQogICAgICAgICBpZiAoY3JpdGljcyA9PSBudWxsKSB7
DQpAQCAtMTkzLDUgKzE5Niw1IEBADQogICAgICAgICB9DQogICAgICAgICByZXR1cm4gc3VwZXIu
Z2V0Q3JpdGljcygpOw0KICAgICB9DQotICAgIA0KKw0KIH0NCg0KTW9kaWZpZWQ6IHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9Qcm9maWxlVU1M
LmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291
bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFs
L1Byb2ZpbGVVTUwuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkw
Nw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFsL1Byb2ZpbGVVTUwuamF2YQkob3JpZ2luYWwpDQor
KysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFs
L1Byb2ZpbGVVTUwuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBA
QA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MDgsMjAxMCBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgt
MjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBU
aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUg
YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2
MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFp
bGFibGUgYXQNCkBAIC00Niw4ICs0Niw5IEBADQogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9u
czsNCiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7DQogaW1wb3J0IGphdmEudXRpbC5TZXQ7DQor
aW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2lu
Zy5Mb2dnZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBv
cmcuYXJnb3VtbC5jb2duaXRpdmUuQ3JpdGljOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRp
dmUuVG9Eb0l0ZW07DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5UcmFuc2xhdG9yOw0K
QEAgLTk2LDMxICs5NywzMiBAQA0KIGltcG9ydCBvcmcuYXJnb3VtbC51bWwuY29nbml0aXZlLmNy
aXRpY3MuQ3JPcHBFbmRWc0F0dHI7DQogDQogLyoqDQotICogVGhpcyBjbGFzcyByZXByZXNlbnRz
IHRoZSBkZWZhdWx0IFVNTCBwcm9maWxlDQorICogVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBk
ZWZhdWx0IFVNTCBwcm9maWxlLg0KICAqDQogICogQGF1dGhvciBtYXVyZWxpbzEyMzQNCiAgKi8N
CiBwdWJsaWMgY2xhc3MgUHJvZmlsZVVNTCBleHRlbmRzIFByb2ZpbGUgew0KLSAgICANCi0gICAg
cHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoUHJvZmls
ZVVNTC5jbGFzcyk7DQotICAgIA0KKw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIg
TE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoUHJvZmlsZVVNTC5jbGFzcy5nZXROYW1l
KCkpOw0KKw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPRklMRV9VTUwxNF9G
SUxFID0gImRlZmF1bHQtdW1sMTQueG1pIjsNCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3Ry
aW5nIFBST0ZJTEVfVU1MMjJfRklMRSA9ICJkZWZhdWx0LXVtbDIyLnhtaSI7DQogDQogICAgIHN0
YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9VTUwxNCA9ICJVTUwgMS40IjsNCiAgICAgc3RhdGljIGZp
bmFsIFN0cmluZyBOQU1FX1VNTDIyID0gIlVNTCAyLjIiOw0KLSAgICANCisNCiAgICAgcHJpdmF0
ZSBGb3JtYXRpbmdTdHJhdGVneSBmb3JtYXRpbmdTdHJhdGVneTsNCiAgICAgcHJpdmF0ZSBQcm9m
aWxlTW9kZWxMb2FkZXIgcHJvZmlsZU1vZGVsTG9hZGVyOw0KICAgICBwcml2YXRlIENvbGxlY3Rp
b24gbW9kZWw7DQotICAgIA0KKw0KICAgICBwcml2YXRlIFNldDxDcml0aWM+IGNyaXRpY3MgPSBu
dWxsOw0KIA0KICAgICBwcml2YXRlIFByb2ZpbGVSZWZlcmVuY2UgcHJvZmlsZVJlZmVyZW5jZSA9
IG51bGw7DQogDQogICAgIC8qKg0KLSAgICAgKiBDb25zdHJ1Y3QgYSBQcm9maWxlIGZvciBVTUwg
bW9kZWxpbmcuIA0KLSAgICAgKiBAdGhyb3dzIFByb2ZpbGVFeGNlcHRpb24gDQorICAgICAqIENv
bnN0cnVjdCBhIFByb2ZpbGUgZm9yIFVNTCBtb2RlbGluZy4NCisgICAgICogQHRocm93cyBQcm9m
aWxlRXhjZXB0aW9uDQogICAgICAqLw0KICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2Vk
IikNCiAgICAgUHJvZmlsZVVNTCgpIHRocm93cyBQcm9maWxlRXhjZXB0aW9uIHsNCkBAIC0xNDgs
NyArMTUwLDcgQEANCiAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAg
IG1vZGVsID0gcHJvZmlsZU1vZGVsTG9hZGVyLmxvYWRNb2RlbChwcm9maWxlUmVmZXJlbmNlKTsN
CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUHJvZmlsZUV4Y2VwdGlvbiBlKSB7DQotICAgICAg
ICAgICAgICAgICAgICBMT0cuZXJyb3IoIkVycm9yIGxvYWRpbmcgVU1MIHByb2ZpbGUiLCBlKTsN
CisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXJyb3IgbG9hZGlu
ZyBVTUwgcHJvZmlsZSIsIGUpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBvdXIgb3duIFVNTDIgcHJvZmlsZSwg
YnV0IGl0IGlzIG5vdCB1c2VkLiBJbnN0ZWFkLA0KQEAgLTE2OCw3ICsxNzAsNyBAQA0KIA0KICAg
ICBwcml2YXRlIHZvaWQgbG9hZFdlbGxGb3JtZWRuZXNzUnVsZXMoKSB7DQogICAgICAgICBjcml0
aWNzID0gbmV3IEhhc2hTZXQ8Q3JpdGljPigpOw0KLSAgICAgICAgDQorDQogICAgICAgICBjcml0
aWNzLmFkZChuZXcgQ3JBc3NvY05hbWVDb25mbGljdCgpKTsNCiAgICAgICAgIGNyaXRpY3MuYWRk
KG5ldyBDckF0dHJOYW1lQ29uZmxpY3QoKSk7DQogICAgICAgICBjcml0aWNzLmFkZChuZXcgQ3JD
aXJjdWxhckFzc29jQ2xhc3MoKSk7DQpAQCAtMTg0LDcgKzE4Niw3IEBADQogICAgICAgICBjcml0
aWNzLmFkZChuZXcgQ3JJbnZhbGlkSm9pblRyaWdnZXJPckd1YXJkKCkpOw0KICAgICAgICAgY3Jp
dGljcy5hZGQobmV3IENySW52YWxpZFBzZXVkb1N0YXRlVHJpZ2dlcigpKTsNCiAgICAgICAgIGNy
aXRpY3MuYWRkKG5ldyBDckludmFsaWRJbml0aWFsKCkpOw0KLSAgICAgICAgDQorDQogICAgICAg
ICBjcml0aWNzLmFkZChuZXcgQ3JJbnZhbGlkSm9pbigpKTsNCiAgICAgICAgIGNyaXRpY3MuYWRk
KG5ldyBDckludmFsaWRGb3JrKCkpOw0KICAgICAgICAgY3JpdGljcy5hZGQobmV3IENySW52YWxp
ZEJyYW5jaCgpKTsNCkBAIC0yMDEsMTQgKzIwMywxNCBAQA0KICAgICAgICAgY3JpdGljcy5hZGQo
bmV3IENyTXVsdGlwbGVBZ2coKSk7DQogICAgICAgICBjcml0aWNzLmFkZChuZXcgQ3JOV2F5QWdn
KCkpOw0KICAgICAgICAgY3JpdGljcy5hZGQobmV3IENyTmFtZUNvbmZsaWN0QUMoKSk7DQotICAg
ICAgICANCisNCiAgICAgICAgIGNyaXRpY3MuYWRkKG5ldyBDck9wcEVuZENvbmZsaWN0KCkpOw0K
ICAgICAgICAgY3JpdGljcy5hZGQobmV3IENyTXVsdGlDb21wb3NpdGUoKSk7DQogICAgICAgICBj
cml0aWNzLmFkZChuZXcgQ3JOYW1lQ29uZmxpY3QoKSk7DQogICAgICAgICBjcml0aWNzLmFkZChu
ZXcgQ3JPcHBFbmRWc0F0dHIoKSk7DQogDQogICAgICAgICAvLyBNaXNzaW5nIFdGUnMNCi0gICAg
ICAgIA0KKw0KICAgICAgICAgLy8gQXNzb2NpYXRpb24gQ2xhc3MNCiAgICAgICAgIC8vIDQuNS4z
LjIgWzFdDQogICAgICAgICAvKiBUZXN0aW5nOiBkb2VzIG5vdCBmaXJlLiAqLw0KQEAgLTIyNCw3
ICsyMjYsNyBAQA0KICAgICAgICAgfSBjYXRjaCAoSW52YWxpZE9jbEV4Y2VwdGlvbiBlKSB7DQog
ICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0K
Kw0KICAgICAgICAgLy8gNC41LjMuMiBbMl0NCiAgICAgICAgIC8qIFRlc3Rpbmc6IFdvcmtzIE9r
LiAqLw0KICAgICAgICAgdHJ5IHsNCkBAIC0yMzcsMTIgKzIzOSwxMiBAQA0KICAgICAgICAgfSBj
YXRjaCAoSW52YWxpZE9jbEV4Y2VwdGlvbiBlKSB7DQogICAgICAgICAgICAgZS5wcmludFN0YWNr
VHJhY2UoKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgLy8gQmVoYXZpb3Jh
bCBGZWF0dXJlDQogICAgICAgICAvLyA0LjUuMy41IFsyXQ0KIA0KLSAgICAgICAgLy8gaXQgd29y
a3MsIGJ1dCBhIGJ1ZyBpbiBuYW1lc3BhY2UuY29udGVudHMgcHJldmVudHMgaXQgZnJvbSANCi0g
ICAgICAgIC8vIHdvcmtpbmcgd2hlbiB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyIGNvbWVzIGZy
b20gYSBwcm9maWxlICAgICAgICAgDQorICAgICAgICAvLyBpdCB3b3JrcywgYnV0IGEgYnVnIGlu
IG5hbWVzcGFjZS5jb250ZW50cyBwcmV2ZW50cyBpdCBmcm9tDQorICAgICAgICAvLyB3b3JraW5n
IHdoZW4gdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlciBjb21lcyBmcm9tIGEgcHJvZmlsZQ0KIC8v
ICAgICAgICB0cnkgew0KIC8vICAgICAgICAgICAgQWdlbmN5LnJlZ2lzdGVyKG5ldyBDck9DTCgi
Y29udGV4dCBCZWhhdmlvcmFsRmVhdHVyZSBpbnY6Ig0KIC8vICAgICAgICAgICAgICAgICAgICAr
ICJzZWxmLnBhcmFtZXRlci0+Ig0KQEAgLTI1NSwxOSArMjU3LDE5IEBADQogLy8gICAgICAgIH0g
Y2F0Y2ggKEludmFsaWRPY2xFeGNlcHRpb24gZSkgew0KIC8vICAgICAgICAgICAgZS5wcmludFN0
YWNrVHJhY2UoKTsNCiAvLyAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICAvLyBDbGFz
c2lmaWVyDQogICAgICAgICAvLyA0LjUuMy44IFs1XQ0KICAgICAgICAgLyogVE9ETzogUGFydGx5
IG92ZXJsYXBzIENyT3BwRW5kVnNBdHRyLiAqLw0KICAgICAgICAgLyogVGVzdGluZzogZG9lcyBu
b3QgZmlyZS4gKi8NCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgY3JpdGljcy5hZGQobmV3
IENyT0NMKCJjb250ZXh0IENsYXNzaWZpZXIgaW52OiINCi0gICAgICAgICAgICAgICAgICAgICsg
InNlbGYub3Bwb3NpdGVBc3NvY2lhdGlvbkVuZHMtPiIgDQotICAgICAgICAgICAgICAgICAgICAr
ICJmb3JBbGwoIG8gfCBub3Qgc2VsZi5hbGxBdHRyaWJ1dGVzLT4iIA0KLSAgICAgICAgICAgICAg
ICAgICAgKyAidW5pb24gKHNlbGYuYWxsQ29udGVudHMpLT4iIA0KKyAgICAgICAgICAgICAgICAg
ICAgKyAic2VsZi5vcHBvc2l0ZUFzc29jaWF0aW9uRW5kcy0+Ig0KKyAgICAgICAgICAgICAgICAg
ICAgKyAiZm9yQWxsKCBvIHwgbm90IHNlbGYuYWxsQXR0cmlidXRlcy0+Ig0KKyAgICAgICAgICAg
ICAgICAgICAgKyAidW5pb24gKHNlbGYuYWxsQ29udGVudHMpLT4iDQogICAgICAgICAgICAgICAg
ICAgICArICJjb2xsZWN0ICggcSB8IHEubmFtZSApLT5pbmNsdWRlcyAoby5uYW1lKSApIiwNCi0g
ICAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgid2ZyLlVNTDE0Mi5DbGFzc2lmaWVy
LjUtaGVhZCIpLCANCi0gICAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgid2ZyLlVN
TDE0Mi5DbGFzc2lmaWVyLjUtZGVzYyIpLCANCisgICAgICAgICAgICAgICAgVHJhbnNsYXRvci5s
b2NhbGl6ZSgid2ZyLlVNTDE0Mi5DbGFzc2lmaWVyLjUtaGVhZCIpLA0KKyAgICAgICAgICAgICAg
ICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQyLkNsYXNzaWZpZXIuNS1kZXNjIiksDQog
ICAgICAgICAgICAgICAgIFRvRG9JdGVtLkhJR0hfUFJJT1JJVFksIG51bGwsIG51bGwsICJodHRw
Oi8vd3d3LnVtbC5vcmcvIikpOw0KICAgICAgICAgfSBjYXRjaCAoSW52YWxpZE9jbEV4Y2VwdGlv
biBlKSB7DQogICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsNCkBAIC0zMTMsNyArMzE1
LDcgQEANCiAgICAgICAgIH0gY2F0Y2ggKEludmFsaWRPY2xFeGNlcHRpb24gZSkgew0KICAgICAg
ICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7DQogICAgICAgICB9DQotIA0KKw0KICAgICAgICAg
Ly8gTmFtZXNwYWNlDQogICAgICAgICAvLyA0LjUuMy4yNiBbMl0NCiAgICAgICAgIC8qIFRlc3Rp
bmc6IERvZXMgbm90IGZpcmUuIENvbmZsaWN0IHdpdGggQ3JOYW1lQ29uZmxpY3QuICovDQpAQCAt
MzQwLDcgKzM0Miw3IEBADQogICAgICAgICAgICAgICAgICAgICArICJzZWxmLmFzc29jaWF0aW9u
cy0+Zm9yQWxsKGEgfCAiDQogICAgICAgICAgICAgICAgICAgICArICJhLmNvbm5lY3Rpb24tPnNp
emUgPSAyKSIsDQogICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIu
VU1MMTQyLkFjdG9yLjFhLWhlYWQiKSwNCi0gICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3Iu
bG9jYWxpemUoIndmci5VTUwxNDIuQWN0b3IuMWEtZGVzYyIpLCANCisgICAgICAgICAgICAgICAg
ICAgIFRyYW5zbGF0b3IubG9jYWxpemUoIndmci5VTUwxNDIuQWN0b3IuMWEtZGVzYyIpLA0KICAg
ICAgICAgICAgICAgICAgICAgVG9Eb0l0ZW0uSElHSF9QUklPUklUWSwgbnVsbCwgbnVsbCwNCiAg
ICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnVtbC5vcmcvIikpOw0KICAgICAgICAgfSBj
YXRjaCAoSW52YWxpZE9jbEV4Y2VwdGlvbiBlKSB7DQpAQCAtMzU2LDcgKzM1OCw3IEBADQogICAg
ICAgICAgICAgICAgICAgICArICJyLnR5cGUub2NsSXNLaW5kT2YoU3Vic3lzdGVtKSBvciAiDQog
ICAgICAgICAgICAgICAgICAgICArICJyLnR5cGUub2NsSXNLaW5kT2YoQ2xhc3MpKSkiLA0KICAg
ICAgICAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgid2ZyLlVNTDE0Mi5BY3Rvci4x
Yi1oZWFkIiksDQotICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIu
VU1MMTQyLkFjdG9yLjFiLWRlc2MiKSwgDQorICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9y
LmxvY2FsaXplKCJ3ZnIuVU1MMTQyLkFjdG9yLjFiLWRlc2MiKSwNCiAgICAgICAgICAgICAgICAg
ICAgIFRvRG9JdGVtLkhJR0hfUFJJT1JJVFksIG51bGwsIG51bGwsDQogICAgICAgICAgICAgICAg
ICAgICAiaHR0cDovL3d3dy51bWwub3JnLyIpKTsNCiAgICAgICAgIH0gY2F0Y2ggKEludmFsaWRP
Y2xFeGNlcHRpb24gZSkgew0KQEAgLTM3MCw3ICszNzIsNyBAQA0KICAgICAgICAgICAgIGNyaXRp
Y3MuYWRkKG5ldyBDck9DTCgiY29udGV4dCBBY3RvciBpbnY6Ig0KICAgICAgICAgICAgICAgICAg
ICAgKyAic2VsZi5jb250ZW50cy0+aXNFbXB0eSIsDQogICAgICAgICAgICAgICAgICAgICBUcmFu
c2xhdG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQyLkFjdG9yLjItaGVhZCIpLA0KLSAgICAgICAgICAg
ICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgid2ZyLlVNTDE0Mi5BY3Rvci4yLWRlc2MiKSwg
DQorICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQyLkFj
dG9yLjItZGVzYyIpLA0KICAgICAgICAgICAgICAgICAgICAgVG9Eb0l0ZW0uSElHSF9QUklPUklU
WSwgbnVsbCwgbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnVtbC5vcmcv
IikpOw0KICAgICAgICAgfSBjYXRjaCAoSW52YWxpZE9jbEV4Y2VwdGlvbiBlKSB7DQpAQCAtMzg0
LDcgKzM4Niw3IEBADQogICAgICAgICAgICAgY3JpdGljcy5hZGQobmV3IENyT0NMKCJjb250ZXh0
IFVzZUNhc2UgaW52OiINCiAgICAgICAgICAgICAgICAgICAgICsgInNlbGYuYXNzb2NpYXRpb25z
LT5mb3JBbGwoYSB8IGEuY29ubmVjdGlvbi0+c2l6ZSA9IDIpIiwNCiAgICAgICAgICAgICAgICAg
ICAgIFRyYW5zbGF0b3IubG9jYWxpemUoIndmci5VTUwxNDIuVXNlQ2FzZS4xLWhlYWQiKSwNCi0g
ICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoIndmci5VTUwxNDIuVXNlQ2Fz
ZS4xLWRlc2MiKSwgDQorICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3
ZnIuVU1MMTQyLlVzZUNhc2UuMS1kZXNjIiksDQogICAgICAgICAgICAgICAgICAgICBUb0RvSXRl
bS5ISUdIX1BSSU9SSVRZLCBudWxsLCBudWxsLA0KICAgICAgICAgICAgICAgICAgICAgImh0dHA6
Ly93d3cudW1sLm9yZy8iKSk7DQogICAgICAgICB9IGNhdGNoIChJbnZhbGlkT2NsRXhjZXB0aW9u
IGUpIHsNCkBAIC00MDcsNyArNDA5LDcgQEANCiAgICAgICAgICAgICAgICAgICAgICsgInMudHlw
ZS5zcGVjaWZpY2F0aW9uUGF0aCkpICINCiAgICAgICAgICAgICAgICAgICAgICsgIikpIiwNCiAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoIndmci5VTUwxNDIuVXNlQ2Fz
ZS4yLWhlYWQiKSwNCi0gICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoIndm
ci5VTUwxNDIuVXNlQ2FzZS4yLWRlc2MiKSwgDQorICAgICAgICAgICAgICAgICAgICBUcmFuc2xh
dG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQyLlVzZUNhc2UuMi1kZXNjIiksDQogICAgICAgICAgICAg
ICAgICAgICBUb0RvSXRlbS5ISUdIX1BSSU9SSVRZLCBudWxsLCBudWxsLA0KICAgICAgICAgICAg
ICAgICAgICAgImh0dHA6Ly93d3cudW1sLm9yZy8iKSk7DQogICAgICAgICB9IGNhdGNoIChJbnZh
bGlkT2NsRXhjZXB0aW9uIGUpIHsNCkBAIC00MjEsNyArNDIzLDcgQEANCiAgICAgICAgICAgICBj
cml0aWNzLmFkZChuZXcgQ3JPQ0woImNvbnRleHQgVXNlQ2FzZSBpbnY6Ig0KICAgICAgICAgICAg
ICAgICAgICAgKyAic2VsZi5jb250ZW50cy0+aXNFbXB0eSIsDQogICAgICAgICAgICAgICAgICAg
ICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQyLlVzZUNhc2UuMy1oZWFkIiksDQotICAg
ICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQyLlVzZUNhc2Uu
My1kZXNjIiksIA0KKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgid2Zy
LlVNTDE0Mi5Vc2VDYXNlLjMtZGVzYyIpLA0KICAgICAgICAgICAgICAgICAgICAgVG9Eb0l0ZW0u
SElHSF9QUklPUklUWSwgbnVsbCwgbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICJodHRwOi8v
d3d3LnVtbC5vcmcvIikpOw0KICAgICAgICAgfSBjYXRjaCAoSW52YWxpZE9jbEV4Y2VwdGlvbiBl
KSB7DQpAQCAtNDMwLDcgKzQzMiw3IEBADQogDQogICAgICAgICAvLyBVc2VDYXNlDQogICAgICAg
ICAvLyA0LjExLjMuNSBbNF0NCi0gICAgICAgIC8qIFRlc3RlZCBPSywgZXhjZXB0IGluIHNvbWUg
Y2FzZXMsIGRlcGVuZGluZyBvbiB0aGUgDQorICAgICAgICAvKiBUZXN0ZWQgT0ssIGV4Y2VwdCBp
biBzb21lIGNhc2VzLCBkZXBlbmRpbmcgb24gdGhlDQogICAgICAgICAgKiBzZXF1ZW5jZSBvZiB0
aGUgRVBzLiBQcm9iYWJseSB0aGUgaW1wbGVtZW50YXRpb24gb2YNCiAgICAgICAgICAqICJmb3JB
bGwgKHgsIHkgfCAuLi4iIGRvZXMgbm90IGNvdmVyIGFsbCBjb21iaW5hdGlvbnMuICovDQogICAg
ICAgICB0cnkgew0KQEAgLTQzOCw3ICs0NDAsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgKyAi
c2VsZi5hbGxFeHRlbnNpb25Qb2ludHMgLT4gZm9yQWxsICh4LCB5IHwgIg0KICAgICAgICAgICAg
ICAgICAgICAgKyAieC5uYW1lID0geS5uYW1lIGltcGxpZXMgeCA9IHkgKSIsDQogICAgICAgICAg
ICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQyLlVzZUNhc2UuNC1oZWFk
IiksDQotICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ3ZnIuVU1MMTQy
LlVzZUNhc2UuNC1kZXNjIiksIA0KKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2Nh
bGl6ZSgid2ZyLlVNTDE0Mi5Vc2VDYXNlLjQtZGVzYyIpLA0KICAgICAgICAgICAgICAgICAgICAg
VG9Eb0l0ZW0uSElHSF9QUklPUklUWSwgbnVsbCwgbnVsbCwNCiAgICAgICAgICAgICAgICAgICAg
ICJodHRwOi8vd3d3LnVtbC5vcmcvIikpOw0KICAgICAgICAgfSBjYXRjaCAoSW52YWxpZE9jbEV4
Y2VwdGlvbiBlKSB7DQpAQCAtNDUyLDcgKzQ1NCw3IEBADQogICAgICAgICAgICAgY3JpdGljcy5h
ZGQobmV3IENyT0NMKCJjb250ZXh0IEFjdGlvblN0YXRlIGludjoiDQogICAgICAgICAgICAgICAg
ICAgICArICJzZWxmLm91dGdvaW5nLT5mb3JBbGwodCB8IHQudHJpZ2dlci0+c2l6ZSA9IDApIiwN
CiAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoIndmci5VTUwxNDIuQWN0
aW9uU3RhdGUuMy1oZWFkIiksDQotICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2Fs
aXplKCJ3ZnIuVU1MMTQyLkFjdGlvblN0YXRlLjMtZGVzYyIpLCANCisgICAgICAgICAgICAgICAg
ICAgIFRyYW5zbGF0b3IubG9jYWxpemUoIndmci5VTUwxNDIuQWN0aW9uU3RhdGUuMy1kZXNjIiks
DQogICAgICAgICAgICAgICAgICAgICBUb0RvSXRlbS5ISUdIX1BSSU9SSVRZLCBudWxsLCBudWxs
LA0KICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudW1sLm9yZy8iKSk7DQogICAgICAg
ICB9IGNhdGNoIChJbnZhbGlkT2NsRXhjZXB0aW9uIGUpIHsNCkBAIC00ODMsMTIgKzQ4NSwxMiBA
QA0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJuIHN1cGVyLmdldENyaXRpY3MoKTsNCiAgICAg
fQ0KLSAgICANCisNCiAgICAgQE92ZXJyaWRlDQogICAgIHB1YmxpYyBDb2xsZWN0aW9uIGdldFBy
b2ZpbGVQYWNrYWdlcygpIHsNCiAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy51bm1vZGlmaWFi
bGVDb2xsZWN0aW9uKGdldE1vZGVsKCkpOw0KICAgICB9DQotICAgIA0KKw0KIA0KICAgICBAT3Zl
cnJpZGUNCiAgICAgcHVibGljIENvbGxlY3Rpb248T2JqZWN0PiBnZXRMb2FkZWRQYWNrYWdlcygp
IHsNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJv
ZmlsZS9pbnRlcm5hbC9vY2wvQ29tcHV0ZURlc2lnbk1hdGVyaWFscy5qYXZhDQpVcmw6IGh0dHA6
Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9pbnRlcm5hbC9vY2wvQ29tcHV0ZURlc2ln
bk1hdGVyaWFscy5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvb2NsL0NvbXB1dGVEZXNpZ25NYXRlcmlhbHMuamF2
YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9w
cm9maWxlL2ludGVybmFsL29jbC9Db21wdXRlRGVzaWduTWF0ZXJpYWxzLmphdmEJMjAxMi0xMi0z
MCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxv
dw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0K
ICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu
ZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlz
IGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQxLDggKzQxLDkgQEANCiBp
bXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOw0KIGltcG9ydCBqYXZhLnV0aWwuSGFzaFNl
dDsNCiBpbXBvcnQgamF2YS51dGlsLlNldDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2
ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQgb3JnLmFw
YWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLk1ldGFUeXBlczsN
CiBpbXBvcnQgb3JnLmFyZ291bWwubW9kZWwuTW9kZWw7DQogDQpAQCAtNTAsOCArNTEsOCBAQA0K
IGltcG9ydCB0dWRyZXNkZW4ub2NsLnBhcnNlci5ub2RlLkFDbGFzc2lmaWVyQ29udGV4dDsNCiAN
CiAvKioNCi0gKiBDaGVjayB0aGUgZGVzaWduIG1hdGVyaWFscyByZWxhdGVkIHRvIHRoaXMgT0NM
DQotICogDQorICogQ2hlY2sgdGhlIGRlc2lnbiBtYXRlcmlhbHMgcmVsYXRlZCB0byB0aGlzIE9D
TC4NCisgKg0KICAqIEBhdXRob3IgbWF1cmVsaW8xMjM0DQogICovDQogcHVibGljIGNsYXNzIENv
bXB1dGVEZXNpZ25NYXRlcmlhbHMgZXh0ZW5kcyBEZXB0aEZpcnN0QWRhcHRlciB7DQpAQCAtNTks
OCArNjAsOCBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IA0KLSAgICAgICAgTG9nZ2VyLmdldExvZ2dl
cihDb21wdXRlRGVzaWduTWF0ZXJpYWxzLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKENvbXB1dGVEZXNpZ25N
YXRlcmlhbHMuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBTZXQ8T2JqZWN0PiBk
bXMgPSBuZXcgSGFzaFNldDxPYmplY3Q+KCk7DQogDQpAQCAtNzAsMTEgKzcxLDExIEBADQogICAg
IEBPdmVycmlkZQ0KICAgICBwdWJsaWMgdm9pZCBjYXNlQUNsYXNzaWZpZXJDb250ZXh0KEFDbGFz
c2lmaWVyQ29udGV4dCBub2RlKSB7DQogICAgICAgICBTdHJpbmcgc3RyID0gKCIiICsgbm9kZS5n
ZXRQYXRoVHlwZU5hbWUoKSkudHJpbSgpOw0KLSAgICAgICAgDQorDQogICAgICAgICAvLyBUT0RP
OiBUaGlzIGFwcGVhcnMgdW51c2VkLiAgSWYgaXQncyBuZWVkZWQsIHRoZSBNb2RlbCBBUEkgc2hv
dWxkDQogICAgICAgICAvLyBiZSBlbmhhbmNlZCB0byBwcm92aWRlIGEgbWV0aG9kIHRoYXQgZG9l
cyB0aGlzIGRpcmVjdGx5Lg0KICAgICAgICAgaWYgKHN0ci5lcXVhbHMoIkNsYXNzIikpIHsNCi0g
ICAgICAgICAgICBkbXMuYWRkKE1vZGVsLmdldE1ldGFUeXBlcygpLmdldFVNTENsYXNzKCkpOyAg
ICAgICAgICAgIA0KKyAgICAgICAgICAgIGRtcy5hZGQoTW9kZWwuZ2V0TWV0YVR5cGVzKCkuZ2V0
VU1MQ2xhc3MoKSk7DQogICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgIHRyeSB7DQogICAg
ICAgICAgICAgICAgIE1ldGhvZCBtID0gTWV0YVR5cGVzLmNsYXNzLmdldERlY2xhcmVkTWV0aG9k
KCJnZXQiICsgc3RyLA0KQEAgLTgzLDcgKzg0LDcgQEANCiAgICAgICAgICAgICAgICAgICAgIGRt
cy5hZGQobS5pbnZva2UoTW9kZWwuZ2V0TWV0YVR5cGVzKCksIG5ldyBPYmplY3RbMF0pKTsNCiAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQot
ICAgICAgICAgICAgICAgIExPRy5lcnJvcigiTWV0YWNsYXNzIG5vdCBmb3VuZDogIiArIHN0ciwg
ZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiTWV0YWNsYXNzIG5v
dCBmb3VuZDogIiArIHN0ciwgZSk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9
DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2Zp
bGUvaW50ZXJuYWwvb2NsL0RlZmF1bHRPY2xFdmFsdWF0b3IuamF2YQ0KVXJsOiBodHRwOi8vYXJn
b3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvb2NsL0RlZmF1bHRPY2xFdmFsdWF0
b3IuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC9wcm9maWxlL2ludGVybmFsL29jbC9EZWZhdWx0T2NsRXZhbHVhdG9yLmphdmEJKG9yaWdpbmFs
KQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvcHJvZmlsZS9pbnRl
cm5hbC9vY2wvRGVmYXVsdE9jbEV2YWx1YXRvci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgw
MA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAq
IENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmln
aHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQog
ICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJs
aWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24s
IGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00MSwyOCArNDEsMjcgQEANCiBpbXBvcnQgamF2YS5p
by5QdXNoYmFja1JlYWRlcjsNCiBpbXBvcnQgamF2YS5pby5TdHJpbmdSZWFkZXI7DQogaW1wb3J0
IGphdmEudXRpbC5NYXA7DQotDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KKy8v
aW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgdHVkcmVzZGVuLm9j
bC5wYXJzZXIuT2NsUGFyc2VyOw0KIGltcG9ydCB0dWRyZXNkZW4ub2NsLnBhcnNlci5sZXhlci5M
ZXhlcjsNCiBpbXBvcnQgdHVkcmVzZGVuLm9jbC5wYXJzZXIubm9kZS5TdGFydDsNCiANCiAvKioN
Ci0gKiBFdmFsdWF0ZXMgb2NsIGV4cHJlc3Npb25zDQorICogRXZhbHVhdGVzIG9jbCBleHByZXNz
aW9ucy4NCiAgKg0KICAqIEBhdXRob3IgbWF1cmVsaW8xMjM0DQogICovDQogcHVibGljIGNsYXNz
IERlZmF1bHRPY2xFdmFsdWF0b3IgaW1wbGVtZW50cyBPY2xFeHByZXNzaW9uRXZhbHVhdG9yIHsN
CiANCi0gICAgLyoqDQotICAgICAqIExvZ2dlci4NCi0gICAgICovDQotICAgIHByaXZhdGUgc3Rh
dGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXINCi0gICAgICAgICAgICAuZ2V0TG9nZ2VyKERl
ZmF1bHRPY2xFdmFsdWF0b3IuY2xhc3MpOw0KLSAgICANCisgICAgLy8gLyoqDQorICAgIC8vICAq
IExvZ2dlci4NCisgICAgLy8gICovDQorICAgIC8vIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dl
ciBMT0cgPQ0KKyAgICAvLyAgICAgTG9nZ2VyLmdldExvZ2dlcihEZWZhdWx0T2NsRXZhbHVhdG9y
LmNsYXNzLmdldE5hbWUoKSk7DQorDQogICAgIHByaXZhdGUgc3RhdGljIE9jbEV4cHJlc3Npb25F
dmFsdWF0b3IgaW5zdGFuY2UgPSBudWxsOw0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEBy
ZXR1cm4gdW5pcXVlIGluc3RhbmNlDQogICAgICAqLw0KQEAgLTcyLDE2ICs3MSwxNiBAQA0KICAg
ICAgICAgfQ0KICAgICAgICAgcmV0dXJuIGluc3RhbmNlOw0KICAgICB9DQotICAgIA0KKw0KICAg
ICAvKg0KICAgICAgKiBAc2VlIG9yZy5hcmdvdW1sLnByb2ZpbGUuaW50ZXJuYWwub2NsLk9jbEV4
cHJlc3Npb25FdmFsdWF0b3IjZXZhbHVhdGUoamF2YS51dGlsLkhhc2hNYXAsIG9yZy5hcmdvdW1s
LnByb2ZpbGUuaW50ZXJuYWwub2NsLk1vZGVsSW50ZXJwcmV0ZXIsIGphdmEubGFuZy5TdHJpbmcp
DQogICAgICAqLw0KICAgICBwdWJsaWMgT2JqZWN0IGV2YWx1YXRlKE1hcDxTdHJpbmcsIE9iamVj
dD4gdnQsIE1vZGVsSW50ZXJwcmV0ZXIgbWksDQogICAgICAgICAgICAgU3RyaW5nIG9jbCkgdGhy
b3dzIEludmFsaWRPY2xFeGNlcHRpb24gew0KLSAgICAgICAgLy8gWFhYIHRoaXMgc2VlbXMgdG8g
YmUgYSBidWcgb2YgdGhlIHBhcnNlciwgDQorICAgICAgICAvLyBYWFggdGhpcyBzZWVtcyB0byBi
ZSBhIGJ1ZyBvZiB0aGUgcGFyc2VyLA0KICAgICAgICAgLy8gaXQgYWx3YXlzIHJlcXVpcmVzIGEg
Y29udGV4dA0KLSAgICAgICAgDQotICAgICAgICAvL0xPRy5kZWJ1ZygiT0NMOiAiICsgb2NsKTsN
CisNCisgICAgICAgIC8vTE9HLmxvZyhMZXZlbC5GSU5FLCAiT0NMOiAiICsgb2NsKTsNCiAgICAg
ICAgIGlmIChvY2wuY29udGFpbnMoIm9yZSIpKSB7DQogICAgICAgICAgICAgLy8gVE9ETzogQ29u
dmVydCB0aGlzIHRvIHNvbWUgc2Vuc2libGUgbG9nZ2luZw0KICAgICAgICAgICAgIFN5c3RlbS5v
dXQucHJpbnRsbigiVk9JTEEhIik7DQpAQCAtOTAsMTMgKzg5LDEzIEBADQogICAgICAgICAgICAg
ICAgICJjb250ZXh0IFggaW52OiAiICsgb2NsKSwgMikpOw0KICAgICAgICAgT2NsUGFyc2VyIHBh
cnNlciA9IG5ldyBPY2xQYXJzZXIobGV4ZXIpOw0KICAgICAgICAgU3RhcnQgdHJlZSA9IG51bGw7
DQotICAgICAgICANCisNCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgdHJlZSA9IHBhcnNl
ci5wYXJzZSgpOw0KICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgSW52YWxpZE9jbEV4Y2VwdGlvbihvY2wpOw0KICAgICAgICAgfQ0KLSAgICAg
ICAgDQorDQogICAgICAgICBFdmFsdWF0ZUV4cHJlc3Npb24gZWUgPSBuZXcgRXZhbHVhdGVFeHBy
ZXNzaW9uKHZ0LCBtaSk7DQogICAgICAgICB0cmVlLmFwcGx5KGVlKTsNCiAgICAgICAgIHJldHVy
biBlZS5nZXRWYWx1ZSgpOw0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFsL29jbC9FdmFsdWF0ZUV4cHJlc3Npb24uamF2YQ0K
VXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvb2NsL0V2
YWx1YXRlRXhwcmVzc2lvbi5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIy
PTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvb2NsL0V2YWx1YXRlRXhwcmVzc2lvbi5q
YXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1s
L3Byb2ZpbGUvaW50ZXJuYWwvb2NsL0V2YWx1YXRlRXhwcmVzc2lvbi5qYXZhCTIwMTItMTItMzAg
MDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cN
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg
bWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
RWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk
aXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00NCw4ICs0NCw5IEBADQogaW1w
b3J0IGphdmEudXRpbC5IYXNoU2V0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCiBpbXBvcnQg
amF2YS51dGlsLk1hcDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0
IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5M
b2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnByb2ZpbGUuaW50ZXJuYWwub2NsLnVtbDE0LkJh
ZzsNCiBpbXBvcnQgb3JnLmFyZ291bWwucHJvZmlsZS5pbnRlcm5hbC5vY2wudW1sMTQuSGFzaEJh
ZzsNCiBpbXBvcnQgb3JnLmFyZ291bWwucHJvZmlsZS5pbnRlcm5hbC5vY2wudW1sMTQuT2NsRW51
bUxpdGVyYWw7DQpAQCAtMTAwLDcgKzEwMSw3IEBADQogICogRXZhbHVhdGVzIE9DTCBleHByZXNz
aW9ucywgdGhpcyBjbGFzcyBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgbW9kZWwNCiAgKiBzdWJz
eXN0ZW0uIFRoaXMgYWRhcHRlciBhc3N1bWVzIHRoZSBvY2wgZXhwcmVzc2lvbiBpcyBzeW50YXRp
Y2FsbHkgYW5kDQogICogc2VtYW50aWNhbGx5IGNvcnJlY3QuDQotICogDQorICoNCiAgKiBAYXV0
aG9yIG1hdXJlbGlvMTIzNA0KICAqLw0KIHB1YmxpYyBjbGFzcyBFdmFsdWF0ZUV4cHJlc3Npb24g
ZXh0ZW5kcyBEZXB0aEZpcnN0QWRhcHRlciB7DQpAQCAtMTA4LDggKzEwOSw4IEBADQogICAgIC8q
Kg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBM
b2dnZXIgTE9HID0gTG9nZ2VyDQotICAgICAgICAgICAgLmdldExvZ2dlcihFdmFsdWF0ZUV4cHJl
c3Npb24uY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisg
ICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRXZhbHVhdGVFeHByZXNzaW9uLmNsYXNzLmdldE5hbWUo
KSk7DQogDQogICAgIC8qKg0KICAgICAgKiBUaGUgVmFyaWFibGUgVGFibGUNCkBAIC0xMzAsMTAg
KzEzMSwxMCBAQA0KICAgICAgKiBUaGUgbW9kZWwgaW50ZXJwcmV0ZXINCiAgICAgICovDQogICAg
IHByaXZhdGUgTW9kZWxJbnRlcnByZXRlciBpbnRlcnAgPSBudWxsOw0KLSAgICANCisNCiAgICAg
LyoqDQogICAgICAqIENvbnN0cnVjdG9yDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFy
YW0gbW9kZWxFbGVtZW50IHNlbGYNCiAgICAgICogQHBhcmFtIG1pIG1vZGVsIGludGVycHJldGVy
DQogICAgICAqLw0KQEAgLTE0MywyMiArMTQ0LDIyIEBADQogDQogICAgIC8qKg0KICAgICAgKiBD
b25zdHJ1Y3Rvcg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIHZhcmlhYmxlVGFi
bGUgdGhlIHZhcmlhYmxlIHRhYmxlDQogICAgICAqIEBwYXJhbSBtb2RlbEludGVycHJldGVyIG1v
ZGVsIGludGVycHJldGVyDQogICAgICAqLw0KLSAgICBwdWJsaWMgRXZhbHVhdGVFeHByZXNzaW9u
KE1hcDxTdHJpbmcsIE9iamVjdD4gdmFyaWFibGVUYWJsZSwgDQorICAgIHB1YmxpYyBFdmFsdWF0
ZUV4cHJlc3Npb24oTWFwPFN0cmluZywgT2JqZWN0PiB2YXJpYWJsZVRhYmxlLA0KICAgICAgICAg
ICAgIE1vZGVsSW50ZXJwcmV0ZXIgbW9kZWxJbnRlcnByZXRlcikgew0KICAgICAgICAgcmVzZXQo
dmFyaWFibGVUYWJsZSwgbW9kZWxJbnRlcnByZXRlcik7DQogICAgIH0NCi0gICAgDQorDQogICAg
IC8qKg0KICAgICAgKiBSZXNldHMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoaXMgYWRhcHRlcg0K
LSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIG1pIHRoZSBtb2RlbCBpbnRlcnByZXRl
cg0KICAgICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgbW9kZWwgZWxlbWVudA0KICAgICAgKi8NCi0g
ICAgcHVibGljIHZvaWQgcmVzZXQoT2JqZWN0IGVsZW1lbnQsIE1vZGVsSW50ZXJwcmV0ZXIgbWkp
IHsgICAgICAgIA0KKyAgICBwdWJsaWMgdm9pZCByZXNldChPYmplY3QgZWxlbWVudCwgTW9kZWxJ
bnRlcnByZXRlciBtaSkgew0KICAgICAgICAgdnQgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVj
dD4oKTsNCiAgICAgICAgIHZ0LnB1dCgic2VsZiIsIGVsZW1lbnQpOw0KICAgICAgICAgcmVzZXQo
dnQsIG1pKTsNCkBAIC0xODIsNyArMTgzLDcgQEANCiAgICAgcHVibGljIE9iamVjdCBnZXRWYWx1
ZSgpIHsNCiAgICAgICAgIHJldHVybiB2YWw7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKiBJ
bnRlcnByZXRlciBDb2RlICogKi8NCiANCiAgICAgLyoNCkBAIC0zMTgsNyArMzE5LDcgQEANCiAg
ICAgICAgICAgICAgICAgZXJyb3Iobm9kZSk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfSBl
bHNlIHsNCi0gICAgICAgICAgICAvLyBpZiBvbmUgc2lkZSBpcyBudWxsLCBjb21wYXJlIHdpdGgg
dGhlIGVxdWFsaXR5IG9wZXJhdG9yIA0KKyAgICAgICAgICAgIC8vIGlmIG9uZSBzaWRlIGlzIG51
bGwsIGNvbXBhcmUgd2l0aCB0aGUgZXF1YWxpdHkgb3BlcmF0b3INCiAgICAgICAgICAgICBpZiAo
b3AgaW5zdGFuY2VvZiBBRXF1YWxSZWxhdGlvbmFsT3BlcmF0b3IpIHsNCiAgICAgICAgICAgICAg
ICAgdmFsID0gKGxlZnQgPT0gcmlnaHQpOw0KICAgICAgICAgICAgIH0gZWxzZSBpZiAob3AgaW5z
dGFuY2VvZiBBTkVxdWFsUmVsYXRpb25hbE9wZXJhdG9yKSB7DQpAQCAtNTMxLDEzICs1MzIsMTMg
QEANCiAgICAgICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IE9iamVjdCBldmFsdWF0ZShNYXA8U3RyaW5nLCBPYmplY3Q+IHZ0aSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT2JqZWN0IGV4cGkpIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAN
CisNCiAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qgc3RhdGUgPSBFdmFsdWF0ZUV4cHJl
c3Npb24udGhpcy5zYXZlU3RhdGUoKTsNCiANCiAgICAgICAgICAgICAgICAgICAgICAgICBFdmFs
dWF0ZUV4cHJlc3Npb24udGhpcy52dCA9IHZ0aTsNCiAgICAgICAgICAgICAgICAgICAgICAgICBF
dmFsdWF0ZUV4cHJlc3Npb24udGhpcy52YWwgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgIEV2YWx1YXRlRXhwcmVzc2lvbi50aGlzLmZ3ZCA9IG51bGw7DQotICAgICAgICAgICAgICAg
ICAgICAgICAgDQorDQogICAgICAgICAgICAgICAgICAgICAgICAgKChQRXhwcmVzc2lvbikgZXhw
aSkuYXBwbHkoRXZhbHVhdGVFeHByZXNzaW9uLnRoaXMpOw0KIA0KICAgICAgICAgICAgICAgICAg
ICAgICAgIE9iamVjdCByZXRpID0gRXZhbHVhdGVFeHByZXNzaW9uLnRoaXMudmFsOw0KQEAgLTU1
OCw3ICs1NTksNyBAQA0KICAgICAgICAgfQ0KICAgICAgICAgb3V0QUZlYXR1cmVDYWxsUGFyYW1l
dGVycyhub2RlKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgQFN1cHByZXNzV2FybmluZ3MoInVu
Y2hlY2tlZCIpDQogICAgIHByaXZhdGUgdm9pZCBsb2FkU3RhdGUoT2JqZWN0IHN0YXRlKSB7DQog
ICAgICAgICBPYmplY3RbXSBzdGF0ZUFyciA9IChPYmplY3RbXSkgc3RhdGU7DQpAQCAtNjU3LDcg
KzY1OCw3IEBADQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBvdXRBU3RyaW5nTGl0ZXJhbChB
U3RyaW5nTGl0ZXJhbCBub2RlKSB7DQogICAgICAgICBTdHJpbmcgdGV4dCA9IG5vZGUuZ2V0U3Ry
aW5nTGl0KCkuZ2V0VGV4dCgpOw0KLSAgICAgICAgdmFsID0gdGV4dC5zdWJzdHJpbmcoMSwgdGV4
dC5sZW5ndGgoKSAtIDEpOyANCisgICAgICAgIHZhbCA9IHRleHQuc3Vic3RyaW5nKDEsIHRleHQu
bGVuZ3RoKCkgLSAxKTsNCiAgICAgICAgIGRlZmF1bHRPdXQobm9kZSk7DQogICAgIH0NCiANCkBA
IC02OTMsNyArNjk0LDcgQEANCiAgICAgICAgIHZhbCA9IG5ldyBPY2xFbnVtTGl0ZXJhbChub2Rl
LmdldE5hbWUoKS50b1N0cmluZygpLnRyaW0oKSk7DQogICAgICAgICBkZWZhdWx0T3V0KG5vZGUp
Ow0KICAgICB9DQotICAgIA0KKw0KICAgICAvKg0KICAgICAgKiBAc2VlIHR1ZHJlc2Rlbi5vY2wu
cGFyc2VyLmFuYWx5c2lzLkRlcHRoRmlyc3RBZGFwdGVyI2Nhc2VBTGl0ZXJhbENvbGxlY3Rpb24o
dHVkcmVzZGVuLm9jbC5wYXJzZXIubm9kZS5BTGl0ZXJhbENvbGxlY3Rpb24pDQogICAgICAqLw0K
QEAgLTcwMSwyMSArNzAyLDIxIEBADQogICAgIHB1YmxpYyB2b2lkIGNhc2VBTGl0ZXJhbENvbGxl
Y3Rpb24oQUxpdGVyYWxDb2xsZWN0aW9uIG5vZGUpDQogICAgIHsNCiAgICAgICAgIENvbGxlY3Rp
b248T2JqZWN0PiBjb2wgPSBudWxsOw0KLSAgICAgICAgDQorDQogICAgICAgICBpbkFMaXRlcmFs
Q29sbGVjdGlvbihub2RlKTsNCiAgICAgICAgIGlmIChub2RlLmdldENvbGxlY3Rpb25LaW5kKCkg
IT0gbnVsbCkNCiAgICAgICAgIHsNCiAgICAgICAgICAgICBub2RlLmdldENvbGxlY3Rpb25LaW5k
KCkuYXBwbHkodGhpcyk7DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgU3RyaW5nIGtp
bmQgPSBub2RlLmdldENvbGxlY3Rpb25LaW5kKCkudG9TdHJpbmcoKS50cmltKCk7DQogICAgICAg
ICAgICAgaWYgKGtpbmQuZXF1YWxzSWdub3JlQ2FzZSgiU2V0IikpIHsNCiAgICAgICAgICAgICAg
ICAgY29sID0gbmV3IEhhc2hTZXQ8T2JqZWN0PigpOw0KICAgICAgICAgICAgIH0gZWxzZSBpZiAo
a2luZC5lcXVhbHNJZ25vcmVDYXNlKCJTZXF1ZW5jZSIpKSB7DQogICAgICAgICAgICAgICAgIGNv
bCA9IG5ldyBBcnJheUxpc3Q8T2JqZWN0PigpOw0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2lu
ZC5lcXVhbHNJZ25vcmVDYXNlKCJCYWciKSkgew0KLSAgICAgICAgICAgICAgICBjb2wgPSBuZXcg
SGFzaEJhZzxPYmplY3Q+KCk7ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBjb2wg
PSBuZXcgSGFzaEJhZzxPYmplY3Q+KCk7DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgfSAgICAg
ICAgDQorICAgICAgICB9DQogICAgICAgICBpZiAobm9kZS5nZXRMQnJhY2UoKSAhPSBudWxsKSB7
DQogICAgICAgICAgICAgbm9kZS5nZXRMQnJhY2UoKS5hcHBseSh0aGlzKTsNCiAgICAgICAgIH0N
CkBAIC03NzQsNyArNzc1LDcgQEANCiAgICAgICAgIH0NCiAgICAgICAgIG91dEFMaXN0RXhwcmVz
c2lvbkxpc3RPclJhbmdlVGFpbChub2RlKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoNCiAg
ICAgICogQHNlZSB0dWRyZXNkZW4ub2NsLnBhcnNlci5hbmFseXNpcy5EZXB0aEZpcnN0QWRhcHRl
ciNjYXNlQUZlYXR1cmVDYWxsKHR1ZHJlc2Rlbi5vY2wucGFyc2VyLm5vZGUuQUZlYXR1cmVDYWxs
KQ0KICAgICAgKi8NCkBAIC04NTcsNyArODU4LDcgQEANCiANCiAgICAgcHJpdmF0ZSBPYmplY3Qg
cnVuRmVhdHVyZUNhbGwoT2JqZWN0IHN1YmplY3QsIE9iamVjdCBmZWF0dXJlLCBPYmplY3QgdHlw
ZSwNCiAgICAgICAgICAgICBMaXN0IHBhcmFtZXRlcnMpIHsNCi0gICAgICAgIC8vIExPRy5kZWJ1
ZygiT0NMIEZFQVRVUkUgQ0FMTDogIiArIHN1YmplY3QgKyAiIisgdHlwZSArIiIrIGZlYXR1cmUg
KyAiIg0KKyAgICAgICAgLy8gTE9HLmxvZyhMZXZlbC5GSU5FLCAiT0NMIEZFQVRVUkUgQ0FMTDog
IiArIHN1YmplY3QgKyAiIisgdHlwZSArIiIrIGZlYXR1cmUgKyAiIg0KICAgICAgICAgLy8gKyBw
YXJhbWV0ZXJzKTsNCiANCiAgICAgICAgIGlmIChwYXJhbWV0ZXJzID09IG51bGwpIHsNCkBAIC04
NjYsNyArODY3LDcgQEANCiANCiAgICAgICAgIC8vIFhYWCB0aGlzIHNob3VsZCBiZSBkb25lIGlu
IENvbGxlY3Rpb25zTW9kZWxJbnRlcnByZXRlcg0KICAgICAgICAgLy8gYnV0IGl0IGNhbid0IHRy
aWdnZXIgYW5vdGhlciBpbnZva2VGZWF0dXJlLi4uDQotICAgICAgICANCisNCiAgICAgICAgIGlm
ICgoc3ViamVjdCBpbnN0YW5jZW9mIENvbGxlY3Rpb24pDQogICAgICAgICAgICAgICAgICYmIHR5
cGUudG9TdHJpbmcoKS50cmltKCkuZXF1YWxzKCIuIikpIHsNCiAgICAgICAgICAgICBDb2xsZWN0
aW9uIGNvbCA9IChDb2xsZWN0aW9uKSBzdWJqZWN0Ow0KQEAgLTg4NCw3ICs4ODUsOCBAQA0KIA0K
ICAgICAvKiogRXJyb3IgSGFuZGxpbmcgKiAqLw0KICAgICBwcml2YXRlIHZvaWQgZXJyb3JOb3RU
eXBlKE9iamVjdCBub2RlLCBTdHJpbmcgdHlwZSwgT2JqZWN0IGRmdCkgew0KLSAgICAgICAgTE9H
LmVycm9yKCJPQ0wgZG9lcyBub3QgZXZhbHVhdGUgdG8gYSAiICsgdHlwZSArICIgZXhwcmVzc2lv
biEhIEV4cDogIg0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAg
ICAgICJPQ0wgZG9lcyBub3QgZXZhbHVhdGUgdG8gYSAiICsgdHlwZSArICIgZXhwcmVzc2lvbiEh
IEV4cDogIg0KICAgICAgICAgICAgICAgICArIG5vZGUgKyAiIFZhbDogIiArIHZhbCk7DQogICAg
ICAgICB2YWwgPSBkZnQ7DQogICAgICAgICAvLyBUT0RPOiBXZSBuZWVkIGEgc3BlY2lmaWMgZXhj
ZXB0aW9uIHR5cGUgaGVyZS4NCkBAIC04OTIsNyArODk0LDggQEANCiAgICAgfQ0KIA0KICAgICBw
cml2YXRlIHZvaWQgZXJyb3IoT2JqZWN0IG5vZGUpIHsNCi0gICAgICAgIExPRy5lcnJvcigiVW5r
bm93biBlcnJvciBwcm9jZXNzaW5nIE9DTCBleHAhISBFeHA6ICIgKyBub2RlICsgIiBWYWw6ICIN
CisgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAgICAgICAgICAgICAgICAiVW5rbm93
biBlcnJvciBwcm9jZXNzaW5nIE9DTCBleHAhISBFeHA6ICIgKyBub2RlICsgIiBWYWw6ICINCiAg
ICAgICAgICAgICAgICAgKyB2YWwpOw0KICAgICAgICAgdmFsID0gbnVsbDsNCiAgICAgICAgIC8v
IFRPRE86IFdlIG5lZWQgYSBzcGVjaWZpYyBleGNlcHRpb24gdHlwZSBoZXJlLg0KDQpNb2RpZmll
ZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC9wcm9maWxlL2ludGVybmFs
L29jbC91bWwxNC9Nb2RlbEFjY2Vzc01vZGVsSW50ZXJwcmV0ZXIuamF2YQ0KVXJsOiBodHRwOi8v
YXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvb2NsL3VtbDE0L01vZGVsQWNj
ZXNzTW9kZWxJbnRlcnByZXRlci5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2
JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvb2NsL3VtbDE0L01vZGVsQWNjZXNz
TW9kZWxJbnRlcnByZXRlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3Byb2ZpbGUvaW50ZXJuYWwvb2NsL3VtbDE0L01vZGVsQWNjZXNz
TW9kZWxJbnRlcnByZXRlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiAr
MSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAo
YykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkt
MjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBU
aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUg
YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2
MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFp
bGFibGUgYXQNCkBAIC00MiwxNiArNDIsMTcgQEANCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rp
b247DQogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0Ow0KIGltcG9ydCBqYXZhLnV0aWwuTWFwOw0K
K2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dp
bmcuTG9nZ2VyOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQg
b3JnLmFyZ291bWwubW9kZWwuTW9kZWw7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnByb2ZpbGUuaW50
ZXJuYWwub2NsLkRlZmF1bHRPY2xFdmFsdWF0b3I7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnByb2Zp
bGUuaW50ZXJuYWwub2NsLkludmFsaWRPY2xFeGNlcHRpb247DQogaW1wb3J0IG9yZy5hcmdvdW1s
LnByb2ZpbGUuaW50ZXJuYWwub2NsLk1vZGVsSW50ZXJwcmV0ZXI7DQogDQogLyoqDQotICogTW9k
ZWwgQWNjZXNzDQotICogDQorICogTW9kZWwgQWNjZXNzLg0KKyAqDQogICogQGF1dGhvciBtYXVy
ZWxpbzEyMzQNCiAgKi8NCiBwdWJsaWMgY2xhc3MgTW9kZWxBY2Nlc3NNb2RlbEludGVycHJldGVy
IGltcGxlbWVudHMgTW9kZWxJbnRlcnByZXRlciB7DQpAQCAtNTksMTEgKzYwLDExIEBADQogICAg
IC8qKg0KICAgICAgKiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5h
bCBMb2dnZXIgTE9HID0gTG9nZ2VyDQotICAgICAgICAgICAgLmdldExvZ2dlcihNb2RlbEFjY2Vz
c01vZGVsSW50ZXJwcmV0ZXIuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dn
ZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoTW9kZWxBY2Nlc3NNb2RlbEludGVy
cHJldGVyLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIHByaXZhdGUgc3RhdGljIFVtbDE0TW9k
ZWxJbnRlcnByZXRlciB1bWwxNG1pID0gbmV3IFVtbDE0TW9kZWxJbnRlcnByZXRlcigpOw0KLSAg
ICANCisNCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC5wcm9maWxlLmludGVybmFs
Lm9jbC5Nb2RlbEludGVycHJldGVyI2ludm9rZUZlYXR1cmUoamF2YS51dGlsLk1hcCwNCiAgICAg
ICogICAgICBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3Ry
aW5nLA0KQEAgLTc0LDMzICs3NSwzMyBAQA0KICAgICAgICAgICAgIFN0cmluZyBmZWF0dXJlLCBT
dHJpbmcgdHlwZSwgT2JqZWN0W10gcGFyYW1ldGVycykgew0KIA0KICAgICAgICAgLy8gVE9ETzog
VGhpcyBpcyBhbiBhYnN1cmRseSBsb25nIG1ldGhvZCEgQnJlYWsgaXQgdXAuDQotICAgICAgICAN
CisNCiAgICAgICAgIGlmIChzdWJqZWN0ID09IG51bGwpIHsNCiAgICAgICAgICAgICBzdWJqZWN0
ID0gdnQuZ2V0KCJzZWxmIik7DQogICAgICAgICB9DQotICAgICAgICANCi0gICAgICAgIC8qIDQu
NS4yLjEgQWJzdHJhY3Rpb24gKi8gIA0KKw0KKyAgICAgICAgLyogNC41LjIuMSBBYnN0cmFjdGlv
biAqLw0KICAgICAgICAgLy8gVE9ETyBpbnZlc3RpZ2F0ZTogQWJzdHJhY3Rpb24ubWFwcGluZyBp
cyBub3QgaW4gdGhlIE1vZGVsIFN1YnN5c3RlbQ0KIA0KLSAgICAgICAgLyogNC41LjIuMyBBc3Nv
Y2lhdGlvbiAqLyAgDQotICAgICAgICANCisgICAgICAgIC8qIDQuNS4yLjMgQXNzb2NpYXRpb24g
Ki8NCisNCiAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FBc3NvY2lhdGlvbihzdWJq
ZWN0KSkgew0KICAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAg
ICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygiY29ubmVjdGlvbiIpKSB7DQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IEFycmF5TGlzdDxPYmplY3Q+KE1vZGVsLmdldEZhY2FkZSgpDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRDb25uZWN0aW9ucyhzdWJqZWN0KSk7DQog
ICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAg
IC8vIEFkZGl0aW9uYWwgT3BlcmF0aW9uIDQuNS4zLjEgWzFdDQogICAgICAgICAgICAgICAgIGlm
IChmZWF0dXJlLmVxdWFscygiYWxsQ29ubmVjdGlvbnMiKSkgew0KICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBIYXNoU2V0PE9iamVjdD4oTW9kZWwuZ2V0RmFjYWRlKCkNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLmdldENvbm5lY3Rpb25zKHN1YmplY3QpKTsNCi0gICAgICAg
ICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAg
fQ0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgLyogNC41LjIuNSBBc3NvY2lhdGlvbkVuZCAqLyAg
DQotICAgICAgICANCisgICAgICAgIC8qIDQuNS4yLjUgQXNzb2NpYXRpb25FbmQgKi8NCisNCiAg
ICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FBc3NvY2lhdGlvbkVuZChzdWJqZWN0KSkg
ew0KICAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAg
IGlmIChmZWF0dXJlLmVxdWFscygiYWdncmVnYXRpb24iKSkgew0KQEAgLTEzMCwyMyArMTMxLDIz
IEBADQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1
YWxzKCJzcGVjaWZpY2F0aW9uIikpIHsNCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2Rl
bC5nZXRGYWNhZGUoKS5nZXRTcGVjaWZpY2F0aW9uKHN1YmplY3QpOw0KLSAgICAgICAgICAgICAg
ICB9ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
IGlmIChmZWF0dXJlLmVxdWFscygicGFydGljaXBhbnQiKSkgew0KICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIE1vZGVsLmdldEZhY2FkZSgpLmdldENsYXNzaWZpZXIoc3ViamVjdCk7DQogICAg
ICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAgIC8v
IFRPRE8gaW52ZXN0aWdhdGUgdGhlICJ1bm5hbWVkIG9wcG9zaXRlIGVuZCINCi0gICAgICAgICAg
ICAgICAgDQorDQogICAgICAgICAgICAgICAgIC8vIEFkZGl0aW9uYWwgT3BlcmF0aW9uIDQuNS4z
LjMgWzFdDQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygidXBwZXJib3VuZCIp
KSB7DQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0VXBw
ZXIoc3ViamVjdCk7DQogICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQorDQog
ICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgLyogNC41LjIuNiBBdHRyaWJ1
dGUgKi8gIA0KLSAgICAgICAgDQorICAgICAgICAvKiA0LjUuMi42IEF0dHJpYnV0ZSAqLw0KKw0K
ICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUF0dHJpYnV0ZShzdWJqZWN0KSkgew0K
ICAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAgIGlm
IChmZWF0dXJlLmVxdWFscygiaW5pdGlhbFZhbHVlIikpIHsNCkBAIC0xNTksOCArMTYwLDggQEAN
CiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogDQotICAgICAgICAvKiA0LjUuMi43IEJlaGF2
aW9yYWxGZWF0dXJlICovICANCi0gICAgICAgIA0KKyAgICAgICAgLyogNC41LjIuNyBCZWhhdmlv
cmFsRmVhdHVyZSAqLw0KKw0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUJlaGF2
aW9yYWxGZWF0dXJlKHN1YmplY3QpKSB7DQogICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKCIu
IikpIHsNCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJpc1F1ZXJ5IikpIHsN
CkBAIC0xNzEsMzIgKzE3MiwzMiBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0
UGFyYW1ldGVycyhzdWJqZWN0KSk7DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9
DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgLy8gVE9ETyBpbXBsZW1lbnQgYWRkaXRp
b25hbCBvcGVyYXRpb25zIGluIDQuNS4zLjUNCiAgICAgICAgIH0NCiANCi0gICAgICAgIC8qIDQu
NS4yLjggQmluZGluZyAqLyAgDQotICAgICAgICANCisgICAgICAgIC8qIDQuNS4yLjggQmluZGlu
ZyAqLw0KKw0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUJpbmRpbmcoc3ViamVj
dCkpIHsNCiAgICAgICAgICAgICBpZiAodHlwZS5lcXVhbHMoIi4iKSkgew0KICAgICAgICAgICAg
ICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoImFyZ3VtZW50IikpIHsNCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBNb2RlbC5nZXRGYWNhZGUoKS5nZXRBcmd1bWVudHMoc3ViamVjdCk7DQogICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQotICAgICAgICB9ICAgICAgICANCisgICAg
ICAgIH0NCisNCisgICAgICAgIC8qIDQuNS4yLjkgQ2xhc3MgKi8NCiANCi0gICAgICAgIC8qIDQu
NS4yLjkgQ2xhc3MgKi8gIA0KLSAgICAgICAgDQogICAgICAgICBpZiAoTW9kZWwuZ2V0RmFjYWRl
KCkuaXNBQ2xhc3Moc3ViamVjdCkpIHsNCiAgICAgICAgICAgICBpZiAodHlwZS5lcXVhbHMoIi4i
KSkgew0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoImlzQWN0aXZlIikpIHsN
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2RlbC5nZXRGYWNhZGUoKS5pc0FjdGl2ZShz
dWJqZWN0KTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCi0gICAgICAgIH0g
ICAgICAgIA0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLyogNC41LjIuMTAgQ2xhc3NpZmllciAq
Lw0KIA0KLSAgICAgICAgLyogNC41LjIuMTAgQ2xhc3NpZmllciAqLyAgDQotICAgICAgICANCiAg
ICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FDbGFzc2lmaWVyKHN1YmplY3QpKSB7DQog
ICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKCIuIikpIHsNCiAgICAgICAgICAgICAgICAgaWYg
KGZlYXR1cmUuZXF1YWxzKCJmZWF0dXJlIikpIHsNCkBAIC0yMTAsNyArMjExLDcgQEANCiAgICAg
ICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJhc3NvY2lhdGlvbiIpKSB7DQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5TGlzdDxPYmplY3Q+KE1vZGVsLmdldEZhY2Fk
ZSgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0QXNzb2NpYXRpb25FbmRzKHN1Ympl
Y3QpKTsNCi0gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoInBvd2VydHlwZVJhbmdl
IikpIHsNCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSGFzaFNldDxPYmplY3Q+KE1v
ZGVsLmdldEZhY2FkZSgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRQb3dlcnR5
cGVSYW5nZXMoc3ViamVjdCkpOw0KQEAgLTIyMCw3ICsyMjEsNyBAQA0KICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBBcnJheUxpc3Q8T2JqZWN0PihNb2RlbC5nZXRGYWNhZGUoKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0RmVhdHVyZXMoc3ViamVjdCkpOw0KICAgICAg
ICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgICAgICAvLyBB
ZGRpdGlvbmFsIE9wZXJhdGlvbnMgaW4gNC41LjMuOA0KICAgICAgICAgICAgICAgICBpZiAoZmVh
dHVyZS5lcXVhbHMoImFsbEZlYXR1cmVzIikpIHsNCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBpbnRlcm5hbE9jbChzdWJqZWN0LCB2dCwgInNlbGYuZmVhdHVyZS0+dW5pb24oIg0KQEAgLTIz
NiwxNyArMjM3LDE3IEBADQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxPY2wo
c3ViamVjdCwgdnQsICJzZWxmLmFsbEZlYXR1cmVzLT4iDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgInNlbGVjdChmIHwgZi5vY2xJc0tpbmRPZihNZXRob2QpKSIpOw0KICAgICAgICAg
ICAgICAgICB9DQotICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgICAgICBpZiAoZmVh
dHVyZS5lcXVhbHMoImFsbEF0dHJpYnV0ZXMiKSkgew0KICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGludGVybmFsT2NsKHN1YmplY3QsIHZ0LCAic2VsZi5hbGxGZWF0dXJlcy0+Ig0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICArICJzZWxlY3QoZiB8IGYub2NsSXNLaW5kT2YoQXR0cmli
dXRlKSkiKTsNCiAgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAgICAgICBpZiAoZmVh
dHVyZS5lcXVhbHMoImFzc29jaWF0aW9ucyIpKSB7DQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaW50ZXJuYWxPY2woc3ViamVjdCwgdnQsIA0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGludGVybmFsT2NsKHN1YmplY3QsIHZ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2VsZi5hc3NvY2lhdGlvbi5hc3NvY2lhdGlvbi0+YXNTZXQoKSIpOw0KICAgICAgICAgICAgICAg
ICB9DQotICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5l
cXVhbHMoImFsbEFzc29jaWF0aW9ucyIpKSB7DQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aW50ZXJuYWxPY2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QsDQpAQCAt
MjU0LDcgKzI1NSw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZi5hc3NvY2lh
dGlvbnMtPnVuaW9uKCINCiAgICAgICAgICAgICAgICAgICAgICAgICArICJzZWxmLnBhcmVudC5v
Y2xBc1R5cGUoQ2xhc3NpZmllcikuYWxsQXNzb2NpYXRpb25zKSIpOw0KICAgICAgICAgICAgICAg
ICB9DQotICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5l
cXVhbHMoIm9wcG9zaXRlQXNzb2NpYXRpb25FbmRzIikpIHsNCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBpbnRlcm5hbE9jbChzdWJqZWN0LCB2dCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAic2VsZi5hc3NvY2lhdGlvbnMtPnNlbGVjdCAoIGEgfCBhLmNvbm5lY3Rpb24tPnNlbGVjdCAi
DQpAQCAtMjczLDcgKzI3NCw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZi5vcHBvc2l0ZUFzc29jaWF0aW9uRW5k
cy0+Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidW5pb24oc2VsZi5wYXJlbnQuYWxs
T3Bwb3NpdGVBc3NvY2lhdGlvbkVuZHMgKSIpOw0KLSAgICAgICAgICAgICAgICB9ICAgICAgICAg
ICAgICAgICANCisgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAgICAgICBpZiAoZmVh
dHVyZS5lcXVhbHMoInNwZWNpZmljYXRpb24iKSkgew0KICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGludGVybmFsT2NsKA0KQEAgLTI4NSw3ICsyODYsNyBAQA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArICJhbmQgZC5zdGVyZW90eXBlLm5hbWUgPSBcInJlYWxpemF0aW9uXCIgIg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJhbmQgZC5zdXBwbGllci5vY2xJc0tpbmRP
ZihDbGFzc2lmaWVyKSkiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIi5zdXBwbGll
ci5vY2xBc1R5cGUoQ2xhc3NpZmllcikiKTsNCi0gICAgICAgICAgICAgICAgfSAgICAgICAgICAg
ICAgICAgDQorICAgICAgICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1
cmUuZXF1YWxzKCJhbGxDb250ZW50cyIpKSB7DQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aW50ZXJuYWxPY2woc3ViamVjdCwgdnQsDQpAQCAtMjkzLDcgKzI5NCw3IEBADQogICAgICAgICAg
ICAgICAgICAgICAgICAgKyAic2VsZi5wYXJlbnQuYWxsQ29udGVudHMtPnNlbGVjdChlIHwiDQog
ICAgICAgICAgICAgICAgICAgICAgICAgKyAiZS5lbGVtZW50T3duZXJzaGlwLnZpc2liaWxpdHkg
PSAjcHVibGljIG9yIHRydWUgb3IgIg0KICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBlLmVs
ZW1lbnRPd25lcnNoaXAudmlzaWJpbGl0eSA9ICNwcm90ZWN0ZWQpKSIpOw0KLSAgICAgICAgICAg
ICAgICB9ICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAg
ICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoImFsbERpc2NyaW1pbmF0b3JzIikpIHsNCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbE9jbChzdWJqZWN0LCB2dCwNCkBAIC0zMDQs
OCArMzA1LDggQEANCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogDQotICAgICAgICAvKiA0
LjUuMi4xMSBDb21tZW50ICovICANCi0gICAgICAgIA0KKyAgICAgICAgLyogNC41LjIuMTEgQ29t
bWVudCAqLw0KKw0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUNvbW1lbnQoc3Vi
amVjdCkpIHsNCiAgICAgICAgICAgICBpZiAodHlwZS5lcXVhbHMoIi4iKSkgew0KICAgICAgICAg
ICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoImJvZHkiKSkgew0KQEAgLTMxNyw5ICszMTgsOSBA
QA0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KLSAgICAg
ICAgDQotICAgICAgICAvKiA0LjUuMi4xMiBDb21wb25lbnQgKi8gIA0KLSAgICAgICAgDQorDQor
ICAgICAgICAvKiA0LjUuMi4xMiBDb21wb25lbnQgKi8NCisNCiAgICAgICAgIGlmIChNb2RlbC5n
ZXRGYWNhZGUoKS5pc0FDb21wb25lbnQoc3ViamVjdCkpIHsNCiAgICAgICAgICAgICBpZiAodHlw
ZS5lcXVhbHMoIi4iKSkgew0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoImRl
cGxveW1lbnRMb2NhdGlvbiIpKSB7DQpAQCAtMzMxLDEwICszMzIsMTAgQEANCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgSGFzaFNldDxPYmplY3Q+KE1vZGVsLmdldEZhY2FkZSgpDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRSZXNpZGVudHMoc3ViamVjdCkpOw0KICAg
ICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgICAgICAv
LyBUT0RPIGltcGxlbWVudGF0aW9uPw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAg
ICAgLy8gQWRkaXRpb25hbCBPcGVyYXRpb24gaW4gNC41LjMuOSAgICAgICAgICAgICAgICANCisN
CisgICAgICAgICAgICAgICAgLy8gQWRkaXRpb25hbCBPcGVyYXRpb24gaW4gNC41LjMuOQ0KICAg
ICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoImFsbFJlc2lkZW50RWxlbWVudHMiKSkg
ew0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsT2NsKHN1YmplY3QsIHZ0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmLnJlc2lkZW50LT51bmlvbigiDQpAQCAtMzQ2
LDggKzM0Nyw4IEBADQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgLyog
NC41LjIuMTMgQ29uc3RyYWludCAqLyAgDQotICAgICAgICANCisgICAgICAgIC8qIDQuNS4yLjEz
IENvbnN0cmFpbnQgKi8NCisNCiAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FDb25z
dHJhaW50KHN1YmplY3QpKSB7DQogICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKCIuIikpIHsN
CiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJib2R5IikpIHsNCkBAIC0zNTcs
MTIgKzM1OCwxMiBAQA0KICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyBjaGVjayB0aGlzDQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0Q29uc3RyYWlu
ZWRFbGVtZW50cyhzdWJqZWN0KTsNCiAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgfQ0KLSAgICAgICAgfSAgICAgICAg
DQorICAgICAgICB9DQorDQorICAgICAgICAvKiA0LjUuMi4xNCBEZXBlbmRlbmN5ICovDQogDQot
ICAgICAgICAvKiA0LjUuMi4xNCBEZXBlbmRlbmN5ICovICANCi0gICAgICAgIA0KICAgICAgICAg
aWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQURlcGVuZGVuY3koc3ViamVjdCkpIHsNCiAgICAgICAg
ICAgICBpZiAodHlwZS5lcXVhbHMoIi4iKSkgew0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVy
ZS5lcXVhbHMoImNsaWVudCIpKSB7DQpAQCAtMzc0LDEyICszNzUsMTIgQEANCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLmdldFN1cHBsaWVycyhzdWJqZWN0KSk7DQogICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICB9DQotICAgICAgICB9ICAgICAgICANCisgICAgICAgIH0NCiAN
CiAgICAgICAgIC8vIFRPRE8gRWxlbWVudE93bmVyc2hpcCBpcyBub3QgaW4gTW9kZWxTdWJzeXMh
IQ0KIA0KLSAgICAgICAgLyogNC41LjIuMTggRWxlbWVudE93bmVyc2hpcCAqLyAgICAgICAgICAN
Ci0gICAgICAgIA0KKyAgICAgICAgLyogNC41LjIuMTggRWxlbWVudE93bmVyc2hpcCAqLw0KKw0K
ICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUVsZW1lbnRSZXNpZGVuY2Uoc3ViamVj
dCkpIHsNCiAgICAgICAgICAgICBpZiAodHlwZS5lcXVhbHMoIi4iKSkgew0KICAgICAgICAgICAg
ICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoInZpc2liaWxpdHkiKSkgew0KQEAgLTM4OCw4ICszODks
OCBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiANCi0gICAgICAgIC8qIDQuNS4yLjE5
IEVudW1lcmF0aW9uICovICAgICAgICAgIA0KLSAgICAgICAgDQorICAgICAgICAvKiA0LjUuMi4x
OSBFbnVtZXJhdGlvbiAqLw0KKw0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUVu
dW1lcmF0aW9uKHN1YmplY3QpKSB7DQogICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKCIuIikp
IHsNCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJsaXRlcmFsIikpIHsNCkBA
IC0zOTgsOCArMzk5LDggQEANCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogDQotICAgICAg
ICAvKiA0LjUuMi4yMCBFbnVtZXJhdGlvbkxpdGVyYWwgKi8gICAgICAgICAgDQotICAgICAgICAN
CisgICAgICAgIC8qIDQuNS4yLjIwIEVudW1lcmF0aW9uTGl0ZXJhbCAqLw0KKw0KICAgICAgICAg
aWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUVudW1lcmF0aW9uTGl0ZXJhbChzdWJqZWN0KSkgew0K
ICAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAgIGlm
IChmZWF0dXJlLmVxdWFscygiZW51bWVyYXRpb24iKSkgew0KQEAgLTQwNyw5ICs0MDgsOSBAQA0K
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KLSAgICAgICAg
DQotICAgICAgICAvKiA0LjUuMi4yMSBGZWF0dXJlICovICAgICAgICAgIA0KLSAgICAgICAgDQor
DQorICAgICAgICAvKiA0LjUuMi4yMSBGZWF0dXJlICovDQorDQogICAgICAgICBpZiAoTW9kZWwu
Z2V0RmFjYWRlKCkuaXNBRmVhdHVyZShzdWJqZWN0KSkgew0KICAgICAgICAgICAgIGlmICh0eXBl
LmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygib3du
ZXJTY29wZSIpKSB7DQpAQCAtNDIwLDEyICs0MjEsMTIgQEANCiAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoIm93bmVyIikpIHsNCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBNb2RlbC5nZXRGYWNhZGUoKS5nZXRPd25lcihzdWJqZWN0KTsN
Ci0gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgIH0NCi0gICAgICAgIH0gICAgICAgIA0KKyAgICAgICAgfQ0KKw0KKyAgICAg
ICAgLyogNC41LjIuMjMgR2VuZXJhbGl6YWJsZSBFbGVtZW50ICovDQogDQotICAgICAgICAvKiA0
LjUuMi4yMyBHZW5lcmFsaXphYmxlIEVsZW1lbnQgKi8gICAgICAgICAgDQotICAgICAgICANCiAg
ICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FHZW5lcmFsaXphYmxlRWxlbWVudChzdWJq
ZWN0KSkgew0KICAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAg
ICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygiaXNBYnN0cmFjdCIpKSB7DQpAQCAtNDQ2LDIyICs0
NDcsMjIgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFNwZWNpYWxpemF0aW9u
cyhzdWJqZWN0KSk7DQogICAgICAgICAgICAgICAgIH0NCiANCi0gICAgICAgICAgICAgICAgLy8g
QWRkaXRpb25hbCBPcGVyYXRpb24gaW4gNC41LjMuMjAgICAgICAgICAgICAgICAgDQorICAgICAg
ICAgICAgICAgIC8vIEFkZGl0aW9uYWwgT3BlcmF0aW9uIGluIDQuNS4zLjIwDQogICAgICAgICAg
ICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygicGFyZW50IikpIHsNCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBpbnRlcm5hbE9jbChzdWJqZWN0LCB2dCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInNlbGYuZ2VuZXJhbGl6YXRpb24ucGFyZW50Iik7DQotICAgICAgICAgICAgICAg
IH0gICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICAg
ICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJhbGxQYXJlbnRzIikpIHsNCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBpbnRlcm5hbE9jbChzdWJqZWN0LCB2dCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInNlbGYucGFyZW50LT51bmlvbihzZWxmLnBhcmVudC5hbGxQYXJlbnRzKSIpOw0K
LSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICANCisg
ICAgICAgICAgICAgICAgfQ0KKw0KICAgICAgICAgICAgIH0NCi0gICAgICAgIH0gICAgICAgICAg
ICAgICAgDQotICAgICAgICANCi0gICAgICAgIC8qIDQuNS4yLjI0IEdlbmVyYWxpemF0aW9uICov
ICAgICAgICAgIA0KLSAgICAgICAgDQorICAgICAgICB9DQorDQorICAgICAgICAvKiA0LjUuMi4y
NCBHZW5lcmFsaXphdGlvbiAqLw0KKw0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlz
QUdlbmVyYWxpemF0aW9uKHN1YmplY3QpKSB7DQogICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxz
KCIuIikpIHsNCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJkaXNjcmltaW5h
dG9yIikpIHsNCkBAIC00NzksMTIgKzQ4MCwxMiBAQA0KICAgICAgICAgICAgICAgICBpZiAoZmVh
dHVyZS5lcXVhbHMoInNwZWNpYWxpemF0aW9uIikpIHsNCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgSGFzaFNldDxPYmplY3Q+KE1vZGVsLmdldEZhY2FkZSgpDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC5nZXRTcGVjaWFsaXphdGlvbnMoc3ViamVjdCkpOw0KLSAgICAgICAg
ICAgICAgICB9ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgfQ0KLSAgICAgICAgfSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgDQotICAg
ICAgICAvKiA0LjUuMi4yNiBNZXRob2QgKi8gICAgICAgICAgDQotICAgICAgICANCisgICAgICAg
IH0NCisNCisgICAgICAgIC8qIDQuNS4yLjI2IE1ldGhvZCAqLw0KKw0KICAgICAgICAgaWYgKE1v
ZGVsLmdldEZhY2FkZSgpLmlzQU1ldGhvZChzdWJqZWN0KSkgew0KICAgICAgICAgICAgIGlmICh0
eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygi
Ym9keSIpKSB7DQpAQCAtNDk1LDE2ICs0OTYsMTYgQEANCiAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgIH0NCiAgICAgICAgIH0NCi0gICAgICAgIA0KLSAgICAgICAgLyogNC41LjIuMjcg
TW9kZWxFbGVtZW50ICovICAgICAgICAgIA0KLSAgICAgICAgDQorDQorICAgICAgICAvKiA0LjUu
Mi4yNyBNb2RlbEVsZW1lbnQgKi8NCisNCiAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5p
c0FNb2RlbEVsZW1lbnQoc3ViamVjdCkpIHsNCiAgICAgICAgICAgICBpZiAodHlwZS5lcXVhbHMo
Ii4iKSkgew0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoIm5hbWUiKSkgew0K
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBNb2RlbC5nZXRGYWNhZGUoKS5nZXRO
YW1lKHN1YmplY3QpOw0KICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gY2hlY2sgY29uZm9ybWFuY3kgdG8gc3Bl
Y2lmaWNhdGlvbg0KLSAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGF2b2lkaW5nIG51bGwgbmFtZXMNCiAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lID0gIiI7DQogICAgICAgICAgICAgICAgICAgICB9DQpAQCAtNTEyLDI3ICs1MTMsMjcg
QEANCiAgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAgICAgICAvLyBUT0RPIGFzQXJn
dW1lbnQ/Pw0KLSAgICAgICAgICAgICAgICANCisNCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1
cmUuZXF1YWxzKCJjbGllbnREZXBlbmRlbmN5IikpIHsNCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgSGFzaFNldDxPYmplY3Q+KE1vZGVsLmdldEZhY2FkZSgpDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC5nZXRDbGllbnREZXBlbmRlbmNpZXMoc3ViamVjdCkpOw0KLSAgICAg
ICAgICAgICAgICB9ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygiY29uc3RyYWludCIpKSB7DQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IEhhc2hTZXQ8T2JqZWN0PihNb2RlbC5nZXRGYWNhZGUoKQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0Q29uc3RyYWludHMoc3ViamVjdCkpOw0K
ICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgICAg
ICAvLyBUT0RPIGltcGxlbWVudGF0aW9uTG9jYXRpb24/Pw0KLSAgICAgICAgICAgICAgICANCisN
CiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJuYW1lc3BhY2UiKSkgew0KICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGVsLmdldEZhY2FkZSgpLmdldE5hbWVzcGFjZShz
dWJqZWN0KTsNCi0gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICANCisgICAgICAgICAg
ICAgICAgfQ0KIA0KLSAgICAgICAgICAgICAgICAvLyBUT0RPIHByZXNlbnRhdGlvbj8/ICAgICAg
ICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAvLyBUT0RPIHByZXNlbnRhdGlvbj8/DQogICAg
ICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygic3VwcGxpZXJEZXBlbmRlbmN5IikpIHsN
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSGFzaFNldDxPYmplY3Q+KE1vZGVsLmdl
dEZhY2FkZSgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRTdXBwbGllckRlcGVu
ZGVuY2llcyhzdWJqZWN0KSk7DQotICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgDQor
ICAgICAgICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxz
KCJ0ZW1wbGF0ZVBhcmFtZXRlciIpKSB7DQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9k
ZWwuZ2V0RmFjYWRlKCkuZ2V0VGVtcGxhdGVQYXJhbWV0ZXJzKHN1YmplY3QpOw0KQEAgLTU0Niwy
OSArNTQ3LDI5IEBADQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygidGFnZ2Vk
VmFsdWUiKSkgew0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGVsLmdldEZhY2FkZSgp
LmdldFRhZ2dlZFZhbHVlc0NvbGxlY3Rpb24oc3ViamVjdCk7DQogICAgICAgICAgICAgICAgIH0N
Ci0gICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFs
cygiY29uc3RyYWludCIpKSB7DQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9kZWwuZ2V0
RmFjYWRlKCkuZ2V0Q29uc3RyYWludHMoc3ViamVjdCk7DQogICAgICAgICAgICAgICAgIH0NCi0g
ICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAgIC8vIEFkZGl0aW9uYWwgT3BlcmF0
aW9ucyBpbiA0LjUuMy4yNQ0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoInN1
cHBsaWVyIikpIHsNCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbE9jbChzdWJq
ZWN0LCB2dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYuY2xpZW50RGVwZW5k
ZW5jeS5zdXBwbGllciIpOw0KLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICANCisgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAgICAgICBpZiAo
ZmVhdHVyZS5lcXVhbHMoImFsbFN1cHBsaWVycyIpKSB7DQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaW50ZXJuYWxPY2woc3ViamVjdCwgdnQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzZWxmLnN1cHBsaWVyLT51bmlvbihzZWxmLnN1cHBsaWVyLmFsbFN1cHBsaWVycykiKTsN
CiAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICANCisNCiAgICAgICAgICAgICAg
ICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJtb2RlbCIpKSB7DQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaW50ZXJuYWxPY2woc3ViamVjdCwgdnQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzZWxmLm5hbWVzcGFjZS0+Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJ1
bmlvbihzZWxmLm5hbWVzcGFjZS5hbGxTdXJyb3VuZGluZ05hbWVzcGFjZXMpLT4iDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgInNlbGVjdCggbnN8IG5zLm9jbElzS2luZE9mIChNb2Rl
bCkpIik7DQogICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQorDQogICAgICAg
ICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygiaXNUZW1wbGF0ZSIpKSB7DQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIU1vZGVsLmdldEZhY2FkZSgpLmdldFRlbXBsYXRlUGFyYW1ldGVy
cyhzdWJqZWN0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaXNFbXB0eSgpOw0KQEAg
LTU4NCwxMiArNTg1LDEyIEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgInNlbGVj
dChvY2xJc0tpbmRPZihCaW5kaW5nKSkuIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
ICJvY2xBc1R5cGUoQmluZGluZykuYXJndW1lbnQiKTsNCiAgICAgICAgICAgICAgICAgfQ0KLSAg
ICAgICAgICAgICAgICANCisNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQotICAgICAgICAN
Ci0gICAgICAgIC8qIDQuNS4yLjI4IE5hbWVzcGFjZSAqLyAgICAgICAgICANCi0gICAgICAgIA0K
Kw0KKyAgICAgICAgLyogNC41LjIuMjggTmFtZXNwYWNlICovDQorDQogICAgICAgICBpZiAoTW9k
ZWwuZ2V0RmFjYWRlKCkuaXNBTmFtZXNwYWNlKHN1YmplY3QpKSB7DQogICAgICAgICAgICAgaWYg
KHR5cGUuZXF1YWxzKCIuIikpIHsNCiAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxz
KCJvd25lZEVsZW1lbnQiKSkgew0KQEAgLTYwMCw3ICs2MDEsNyBAQA0KICAgICAgICAgICAgICAg
ICBpZiAoZmVhdHVyZS5lcXVhbHMoImNvbnRlbnRzIikpIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUT0RPIGludmVzdGlnYXRlIHR5cG8gaW4gc3BlYyEhDQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaW50ZXJuYWxPY2woc3ViamVjdCwgdnQsICJzZWxmLm93bmVkRWxlbWVudC0+
Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJ1bmlvbihzZWxmLm93bmVkRWxlbWVu
dC0+IiANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidW5pb24oc2VsZi5vd25lZEVs
ZW1lbnQtPiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAic2VsZWN0KHh8eC5vY2xJ
c0tpbmRPZihOYW1lc3BhY2UpKS5jb250ZW50cykiKTsNCiAgICAgICAgICAgICAgICAgfQ0KIA0K
QEAgLTYxOSwyNCArNjIwLDI0IEBADQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFs
cygiYWxsU3Vycm91bmRpbmdOYW1lc3BhY2VzIikpIHsNCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBpbnRlcm5hbE9jbChzdWJqZWN0LCB2dCwgInNlbGYubmFtZXNwYWNlLT4iDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgInVuaW9uKHNlbGYubmFtZXNwYWNlLmFsbFN1cnJvdW5k
aW5nTmFtZXNwYWNlcykiKTsNCi0gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KICAgICAgICAg
fQ0KIA0KLSAgICAgICAgDQotICAgICAgICAvKiA0LjUuMi4yOSBOb2RlICovICAgICAgICAgIA0K
LSAgICAgICAgDQorDQorICAgICAgICAvKiA0LjUuMi4yOSBOb2RlICovDQorDQogICAgICAgICBp
ZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBTm9kZShzdWJqZWN0KSkgew0KICAgICAgICAgICAgIGlm
ICh0eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFs
cygiZGVwbG95ZWRDb21wb25lbnQiKSkgew0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBIYXNoU2V0PE9iamVjdD4oTW9kZWwuZ2V0RmFjYWRlKCkNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLmdldERlcGxveWVkQ29tcG9uZW50cyhzdWJqZWN0KSk7DQotICAgICAgICAgICAg
ICAgIH0gICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9
DQotICAgICAgICB9ICAgICAgICANCisgICAgICAgIH0NCisNCisgICAgICAgIC8qIDQuNS4yLjMw
IE9wZXJhdGlvbiAqLw0KIA0KLSAgICAgICAgLyogNC41LjIuMzAgT3BlcmF0aW9uICovICAgICAg
ICAgIA0KLSAgICAgICAgDQogICAgICAgICBpZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBT3BlcmF0
aW9uKHN1YmplY3QpKSB7DQogICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKCIuIikpIHsNCiAg
ICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZXF1YWxzKCJjb25jdXJyZW5jeSIpKSB7DQpAQCAt
NjUyLDEwICs2NTMsMTAgQEANCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2RlbC5nZXRG
YWNhZGUoKS5pc1Jvb3Qoc3ViamVjdCk7DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICB9DQotICAgICAgICB9ICAgICAgICAgICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICAvKiA0
LjUuMi4zMSBQYXJhbWV0ZXIgKi8gICAgICAgICAgDQotICAgICAgICANCisgICAgICAgIH0NCisN
CisgICAgICAgIC8qIDQuNS4yLjMxIFBhcmFtZXRlciAqLw0KKw0KICAgICAgICAgaWYgKE1vZGVs
LmdldEZhY2FkZSgpLmlzQVBhcmFtZXRlcihzdWJqZWN0KSkgew0KICAgICAgICAgICAgIGlmICh0
eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygi
ZGVmYXVsdFZhbHVlIikpIHsNCkBAIC02NjUsMTAgKzY2NiwxMCBAQA0KICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vZGVsLmdldEZhY2FkZSgpLmdldEtpbmQoc3ViamVjdCk7DQogICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQotICAgICAgICB9ICAgICAgICAgICAgICAgIA0K
KyAgICAgICAgfQ0KKw0KKyAgICAgICAgLyogNC41LjIuMzUgUHJvZ3JhbW1pbmdMYW5ndWFnZURh
dGFUeXBlICovDQogDQotICAgICAgICAvKiA0LjUuMi4zNSBQcm9ncmFtbWluZ0xhbmd1YWdlRGF0
YVR5cGUgKi8gICAgICAgICAgDQotICAgICAgICANCiAgICAgICAgIC8vIEdvbmUgZnJvbSBVTUwg
Mi54LCBzbyB1bnN1cHBvcnRlZCBoZXJlDQogLy8gICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUo
KS5pc0FQcm9ncmFtbWluZ0xhbmd1YWdlRGF0YVR5cGUoc3ViamVjdCkpIHsNCiAvLyAgICAgICAg
ICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7DQpAQCAtNjc2LDcgKzY3Nyw3IEBADQogLy8gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBNb2RlbC5nZXRGYWNhZGUoKS5nZXRFeHByZXNzaW9uKHN1
YmplY3QpOw0KIC8vICAgICAgICAgICAgICAgIH0NCiAvLyAgICAgICAgICAgIH0NCi0vLyAgICAg
ICAgfSAgICAgICAgICAgICAgICANCisvLyAgICAgICAgfQ0KIA0KICAgICAgICAgLyogNC41LjIu
MzcgU3RydWN0dXJhbEZlYXR1cmUgKi8NCiANCkBAIC02OTksOCArNzAwLDggQEANCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBNb2RlbC5nZXRGYWNhZGUoKS5nZXRUeXBlKHN1YmplY3QpOw0K
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgfSAgICAgICAgDQot
ICAgICAgICANCisgICAgICAgIH0NCisNCiAgICAgICAgIC8qIDQuNS4yLjM4IFRlbXBsYXRlQXJn
dW1lbnQgKi8NCiANCiAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FUZW1wbGF0ZUFy
Z3VtZW50KHN1YmplY3QpKSB7DQpAQCAtNzEyLDggKzcxMyw4IEBADQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0TW9kZWxFbGVtZW50KHN1YmplY3QpOw0K
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgfSAgICAgICAgDQot
ICAgICAgICANCisgICAgICAgIH0NCisNCiAgICAgICAgIC8qIDQuNS4yLjM5IFRlbXBsYXRlUGFy
YW1ldGVyICovDQogDQogICAgICAgICBpZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBVGVtcGxhdGVQ
YXJhbWV0ZXIoc3ViamVjdCkpIHsNCkBAIC03MjIsMTYgKzcyMywxNiBAQA0KICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE1vZGVsLmdldEZhY2FkZSgpLmdldERlZmF1bHRFbGVtZW50KHN1Ympl
Y3QpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KLSAgICAgICAgfSAgICAg
ICAgICAgICAgICANCi0gICAgICAgIA0KKyAgICAgICAgfQ0KKw0KICAgICAgICAgLyogNC4xMS4z
LjUgVXNlQ2FzZSAqLw0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQVVzZUNhc2Uo
c3ViamVjdCkpIHsNCiAgICAgICAgICAgICBpZiAodHlwZS5lcXVhbHMoIi4iKSkgew0KICAgICAg
ICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoInNwZWNpZmljYXRpb25QYXRoIikpIHsNCi0g
ICAgICAgICAgICAgICAgICAgIC8qICBUaGUgb3BlcmF0aW9uIHNwZWNpZmljYXRpb25QYXRoIHJl
c3VsdHMgaW4gYSBzZXQgY29udGFpbmluZyANCisgICAgICAgICAgICAgICAgICAgIC8qICBUaGUg
b3BlcmF0aW9uIHNwZWNpZmljYXRpb25QYXRoIHJlc3VsdHMgaW4gYSBzZXQgY29udGFpbmluZw0K
ICAgICAgICAgICAgICAgICAgICAgICogYWxsIHN1cnJvdW5kaW5nIE5hbWVzcGFjZXMgdGhhdCBh
cmUgbm90IGluc3RhbmNlcyBvZg0KICAgICAgICAgICAgICAgICAgICAgICogIFBhY2thZ2UuDQot
ICAgICAgICAgICAgICAgICAgICAgKiAgc3BlY2lmaWNhdGlvblBhdGggOiBTZXQoTmFtZXNwYWNl
KSANCisgICAgICAgICAgICAgICAgICAgICAqICBzcGVjaWZpY2F0aW9uUGF0aCA6IFNldChOYW1l
c3BhY2UpDQogICAgICAgICAgICAgICAgICAgICAgKiBzcGVjaWZpY2F0aW9uUGF0aCA9IHNlbGYu
YWxsU3Vycm91bmRpbmdOYW1lc3BhY2VzLT5zZWxlY3QobiB8DQogICAgICAgICAgICAgICAgICAg
ICAgKiAgICBuLm9jbElzS2luZE9mKFN1YnN5c3RlbSkgb3Igbi5vY2xJc0tpbmRPZihDbGFzcykp
DQogICAgICAgICAgICAgICAgICAgICAgKiovDQpAQCAtNzQ3LDEzICs3NDgsMTMgQEANCiAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0K
ICAgICAgICAgLyogNC41LjMuMiBBc3NvY2lhdGlvbkNsYXNzICovDQogDQogICAgICAgICBpZiAo
TW9kZWwuZ2V0RmFjYWRlKCkuaXNBQXNzb2NpYXRpb25DbGFzcyhzdWJqZWN0KSkgew0KICAgICAg
ICAgICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7DQogICAgICAgICAgICAgICAgIGlmIChmZWF0
dXJlLmVxdWFscygiYWxsQ29ubmVjdGlvbnMiKSkgew0KLSAgICAgICAgICAgICAgICAgICAgLyog
VGhlIG9wZXJhdGlvbiBhbGxDb25uZWN0aW9ucyByZXN1bHRzIGluIHRoZSBzZXQgb2YgYWxsIA0K
KyAgICAgICAgICAgICAgICAgICAgLyogVGhlIG9wZXJhdGlvbiBhbGxDb25uZWN0aW9ucyByZXN1
bHRzIGluIHRoZSBzZXQgb2YgYWxsDQogICAgICAgICAgICAgICAgICAgICAgKiBBc3NvY2lhdGlv
bkVuZHMgb2YgdGhlIEFzc29jaWF0aW9uQ2xhc3MsIGluY2x1ZGluZyBhbGwNCiAgICAgICAgICAg
ICAgICAgICAgICAqIGNvbm5lY3Rpb25zIGRlZmluZWQgYnkgaXRzIHBhcmVudCAodHJhbnNpdGl2
ZSBjbG9zdXJlKS4NCiAgICAgICAgICAgICAgICAgICAgICAqLw0KQEAgLTc2MywxMiArNzY0LDEy
IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmLmNvbm5lY3Rpb24tPnVuaW9u
KHNlbGYucGFyZW50LT5zZWxlY3QoIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAicyB8
IHMub2NsSXNLaW5kT2YoQXNzb2NpYXRpb24pKS0+Y29sbGVjdCgiDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICArICJhIDogQXNzb2NpYXRpb24gfCBhLmFsbENvbm5lY3Rpb25zKSktPmFzU2V0
KCkiKTsNCi0gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
LSAgICAgICAgICAgIH0gICAgICAgICAgICANCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAg
ICAgIH0NCiAgICAgICAgIH0NCiANCi0gICAgICAgIC8qIDQuNi4yLjMgU3RlcmVvdHlwZSAqLyAg
ICAgICAgICANCi0gICAgICAgDQorICAgICAgICAvKiA0LjYuMi4zIFN0ZXJlb3R5cGUgKi8NCisN
CiAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FTdGVyZW90eXBlKHN1YmplY3QpKSB7
DQogICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKCIuIikpIHsNCiAgICAgICAgICAgICAgICAg
aWYgKGZlYXR1cmUuZXF1YWxzKCJiYXNlQ2xhc3MiKSkgew0KQEAgLTc4Nyw4ICs3ODgsOCBAQA0K
ICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiANCi0gICAgICAgIC8qIDQuNi4yLjQgVGFnRGVm
aW5pdGlvbiAqLyAgICAgICAgICANCi0gICAgICAgIA0KKyAgICAgICAgLyogNC42LjIuNCBUYWdE
ZWZpbml0aW9uICovDQorDQogICAgICAgICBpZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBVGFnRGVm
aW5pdGlvbihzdWJqZWN0KSkgew0KICAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscygiLiIpKSB7
DQogICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmVxdWFscygibXVsdGlwbGljaXR5IikpIHsN
CkBAIC04MDcsOCArODA4LDggQEANCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogDQotICAg
ICAgICAvKiA0LjYuMi41IFRhZ2dlZFZhbHVlICovICAgICAgICAgIA0KLSAgICAgICAgDQorICAg
ICAgICAvKiA0LjYuMi41IFRhZ2dlZFZhbHVlICovDQorDQogICAgICAgICBpZiAoTW9kZWwuZ2V0
RmFjYWRlKCkuaXNBVGFnZ2VkVmFsdWUoc3ViamVjdCkpIHsNCiAgICAgICAgICAgICBpZiAodHlw
ZS5lcXVhbHMoIi4iKSkgew0KICAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5lcXVhbHMoImRh
dGFWYWx1ZSIpKSB7DQpAQCAtODM3LDE0ICs4MzgsMTQgQEANCiAgICAgICAgICAgICB2dC5wdXQo
InNlbGYiLCBvbGRTZWxmKTsNCiAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KICAgICAgICAgfSBj
YXRjaCAoSW52YWxpZE9jbEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmVycm9yKCJF
eGNlcHRpb24iLCBlKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2Vw
dGlvbiIsIGUpOw0KICAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICAgfQ0KICAgICB9
DQogDQogICAgIC8qKg0KICAgICAgKiBBZGQgdGhlIG1ldGFtb2RlbC1tZXRhY2xhc3NlcyBhcyBi
dWlsdC1pbiBzeW1ib2xzDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gc3ltIHRo
ZSBzeW1ib2wNCiAgICAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHN5bWJvbA0KICAgICAg
KiBAc2VlIG9yZy5hcmdvdW1sLnByb2ZpbGUuaW50ZXJuYWwub2NsLk1vZGVsSW50ZXJwcmV0ZXIj
Z2V0QnVpbHRJblN5bWJvbChqYXZhLmxhbmcuU3RyaW5nKQ0KDQpNb2RpZmllZDogdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9BY3Rpb25DcmVhdGVFZGdlTW9kZWxFbGVt
ZW50LmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2Fy
Z291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9BY3Rpb25DcmVh
dGVFZGdlTW9kZWxFbGVtZW50LmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYm
cjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdWkvQWN0aW9uQ3JlYXRlRWRnZU1vZGVsRWxlbWVudC5qYXZhCShv
cmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL0Fj
dGlvbkNyZWF0ZUVkZ2VNb2RlbEVsZW1lbnQuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDAN
CkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBD
b3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0
IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAq
IGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGlj
IExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBh
bmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDAsMTAgKzQwLDExIEBADQogDQogaW1wb3J0IGphdmEu
YXd0LmV2ZW50LkFjdGlvbkV2ZW50Ow0KIGltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsN
CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dn
aW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuQWJzdHJhY3RBY3Rpb247DQogDQot
aW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJu
ZWwuUHJvamVjdE1hbmFnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLklsbGVnYWxNb2Rl
bEVsZW1lbnRDb25uZWN0aW9uRXhjZXB0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5N
b2RlbDsNCkBAIC01NSwxMiArNTYsMTIgQEANCiAgKiBAYXV0aG9yIEJvYiBUYXJsaW5nDQogICov
DQogcHVibGljIGNsYXNzIEFjdGlvbkNyZWF0ZUVkZ2VNb2RlbEVsZW1lbnQgZXh0ZW5kcyBBYnN0
cmFjdEFjdGlvbiB7DQotICAgIA0KKw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIg
TE9HID0NCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRXhwbG9yZXJQb3B1cC5jbGFzcyk7DQot
ICAgIA0KLSAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBtZXRhVHlwZTsgDQotICAgIHByaXZhdGUg
ZmluYWwgT2JqZWN0IHNvdXJjZTsgDQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKEV4cGxvcmVy
UG9wdXAuY2xhc3MuZ2V0TmFtZSgpKTsNCisNCisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbWV0
YVR5cGU7DQorICAgIHByaXZhdGUgZmluYWwgT2JqZWN0IHNvdXJjZTsNCiAgICAgcHJpdmF0ZSBm
aW5hbCBPYmplY3QgZGVzdDsNCiANCiAgICAgLyoqDQpAQCAtNzQsOCArNzUsOCBAQA0KICAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIHJlbGF0ZXMgdG8gZGVzdGluYXRpb24N
CiAgICAgICovDQogICAgIHB1YmxpYyBBY3Rpb25DcmVhdGVFZGdlTW9kZWxFbGVtZW50KA0KLSAg
ICAgICAgICAgIGZpbmFsIE9iamVjdCB0aGVNZXRhVHlwZSwgDQotICAgICAgICAgICAgZmluYWwg
T2JqZWN0IHRoZVNvdXJjZSwgDQorICAgICAgICAgICAgZmluYWwgT2JqZWN0IHRoZU1ldGFUeXBl
LA0KKyAgICAgICAgICAgIGZpbmFsIE9iamVjdCB0aGVTb3VyY2UsDQogICAgICAgICAgICAgZmlu
YWwgT2JqZWN0IHRoZURlc3RpbmF0aW9uLA0KICAgICAgICAgICAgIGZpbmFsIFN0cmluZyByZWxh
dGlvbnNoaXBEZXNjcikgew0KICAgICAgICAgc3VwZXIoTWVzc2FnZUZvcm1hdC5mb3JtYXQoDQpA
QCAtOTAsNyArOTEsNyBAQA0KICAgICB9DQogDQogICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZv
cm1lZChBY3Rpb25FdmVudCBlKSB7DQotICAgICAgICBPYmplY3Qgcm9vdE1vZGVsID0gDQorICAg
ICAgICBPYmplY3Qgcm9vdE1vZGVsID0NCiAgICAgICAgICAgICBQcm9qZWN0TWFuYWdlci5nZXRN
YW5hZ2VyKCkuZ2V0Q3VycmVudFByb2plY3QoKS5nZXRNb2RlbCgpOw0KICAgICAgICAgdHJ5IHsN
CiAgICAgICAgICAgICBNb2RlbC5nZXRVbWxGYWN0b3J5KCkuYnVpbGRDb25uZWN0aW9uKA0KQEAg
LTEwMiw4ICsxMDMsNyBAQA0KICAgICAgICAgICAgICAgICBudWxsLA0KICAgICAgICAgICAgICAg
ICByb290TW9kZWwpOw0KICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbE1vZGVsRWxlbWVudENvbm5l
Y3Rpb25FeGNlcHRpb24gZTEpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiIs
IGUxKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiIsIGUx
KTsNCiAgICAgICAgIH0NCiAgICAgfQ0KIH0NCi0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvRGV0YWlsc1BhbmUuamF2YQ0KVXJsOiBodHRwOi8v
YXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL0RldGFpbHNQYW5lLmphdmE/dmlldz1kaWZmJnBhdGhy
ZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvRGV0YWlsc1BhbmUuamF2YQko
b3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9E
ZXRhaWxzUGFuZS5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBA
DQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAw
OSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBD
b250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHBy
b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxh
YmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQog
ICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUg
YXQNCkBAIC00OCw2ICs0OCw4IEBADQogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQogaW1w
b3J0IGphdmEudXRpbC5JdGVyYXRvcjsNCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0
IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dn
ZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5nLkljb247DQogaW1wb3J0IGphdmF4LnN3aW5nLkpQ
YW5lbDsNCkBAIC01Niw3ICs1OCw2IEBADQogaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50LkNoYW5n
ZUxpc3RlbmVyOw0KIGltcG9ydCBqYXZheC5zd2luZy5ldmVudC5FdmVudExpc3RlbmVyTGlzdDsN
CiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmFwcGxpY2F0aW9uLmFwaS5BYnN0cmFjdEFyZ29KUGFuZWw7DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmkxOG4uVHJhbnNsYXRvcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwubW9kZWwuTW9kZWw7DQpAQCAt
OTEsNyArOTIsOCBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAg
cHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoRGV0YWls
c1BhbmUuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisg
ICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRGV0YWlsc1BhbmUuY2xhc3MuZ2V0TmFtZSgpKTsNCiAN
CiAgICAgLyoqDQogICAgICAqIFRoZSB0b3AgbGV2ZWwgcGFuZSwgd2hpY2ggaXMgYSB0YWJiZWQg
cGFuZS4NCkBAIC0xMDMsNyArMTA1LDcgQEANCiAgICAgICovDQogICAgIHByaXZhdGUgT2JqZWN0
IGN1cnJlbnRUYXJnZXQ7DQogDQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVGhlIGxpc3Qg
b2YgYWxsIHRoZSB0YWJzLCB3aGljaCBhcmUgSlBhbmVscywgaW4gdGhlIEpUYWJiZWRQYW5lIHRh
YnMuDQogICAgICAqLw0KQEAgLTEyMCw5ICsxMjIsOSBAQA0KICAgICAgKiB0aW1lLg0KICAgICAg
Ki8NCiAgICAgcHJpdmF0ZSBFdmVudExpc3RlbmVyTGlzdCBsaXN0ZW5lckxpc3QgPSBuZXcgRXZl
bnRMaXN0ZW5lckxpc3QoKTsNCi0gICAgDQorDQogICAgIHByaXZhdGUgT3JpZW50YXRpb24gb3Jp
ZW50YXRpb247DQotICAgIA0KKw0KICAgICBwcml2YXRlIGJvb2xlYW4gaGFzVGFicyA9IGZhbHNl
Ow0KIA0KICAgICAvKioNCkBAIC0xNTMsMTQgKzE1NSwxNCBAQA0KICAgICAgKiBAcGFyYW0gdGhl
T3JpZW50YXRpb24gaXMgdGhlIG9yaWVudGF0aW9uLg0KICAgICAgKi8NCiAgICAgcHVibGljIERl
dGFpbHNQYW5lKFN0cmluZyBjb21wYXNzUG9pbnQsIE9yaWVudGF0aW9uIHRoZU9yaWVudGF0aW9u
KSB7DQotICAgICAgICBMT0cuaW5mbygibWFraW5nIERldGFpbHNQYW5lKCIgKyBjb21wYXNzUG9p
bnQgKyAiKSIpOw0KLSAgICAgICAgDQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJtYWtp
bmcgRGV0YWlsc1BhbmUoezB9KSIsIGNvbXBhc3NQb2ludCk7DQorDQogICAgICAgICBvcmllbnRh
dGlvbiA9IHRoZU9yaWVudGF0aW9uOw0KIA0KICAgICAgICAgbG9hZFRhYnMoY29tcGFzc1BvaW50
KTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgc2V0T3JpZW50YXRpb24ob3JpZW50YXRpb24pOw0K
LSAgICAgICAgDQorDQogICAgICAgICBzZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsNCiAg
ICAgICAgIHNldEZvbnQobmV3IEZvbnQoIkRpYWxvZyIsIEZvbnQuUExBSU4sIDEwKSk7DQogICAg
ICAgICBhZGQodG9wTGV2ZWxUYWJiZWRQYW5lLCBCb3JkZXJMYXlvdXQuQ0VOVEVSKTsNCkBAIC0x
NzEsMjAgKzE3MywyMCBAQA0KICAgICB9DQogDQogICAgIC8qIFRPRE86IFNvbWUgcGFydHMgb2Yg
QXJnb1VNTCBoYXZlIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIG11bHRpcGxlDQotICAgICAqIGRl
dGFpbHMgcGFuZWxzLCBidXQgd2UgY3VycmVudGx5IG9ubHkgc3VwcG9ydCANCisgICAgICogZGV0
YWlscyBwYW5lbHMsIGJ1dCB3ZSBjdXJyZW50bHkgb25seSBzdXBwb3J0DQogICAgICAqIHRoZSBk
ZWZhdWx0IFNvdXRoIChib3R0b20pIHBhbmVsDQogICAgICAqLw0KICAgICBwcml2YXRlIHZvaWQg
bG9hZFRhYnMoU3RyaW5nIGRpcmVjdGlvbikgew0KICAgICAgICAgaWYgKFBvc2l0aW9uLlNvdXRo
LnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZShkaXJlY3Rpb24pDQogICAgICAgICAgICAgICAg
IC8vIFNwZWNpYWwgY2FzZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQ0KICAgICAgICAgICAg
ICAgICB8fCAiZGV0YWlsIi5lcXVhbHNJZ25vcmVDYXNlKGRpcmVjdGlvbikpIHsNCi0gICAgICAg
ICAgICAvKiBUaGUgc291dGggcGFuZWwgYWx3YXlzIGhhcyB0YWJzIC0gYnV0IHRoZXkgYXJlIA0K
KyAgICAgICAgICAgIC8qIFRoZSBzb3V0aCBwYW5lbCBhbHdheXMgaGFzIHRhYnMgLSBidXQgdGhl
eSBhcmUNCiAgICAgICAgICAgICAgKiBhZGRlZCAobGF0ZXIpIGVsc2V3aGVyZS4NCiAgICAgICAg
ICAgICAgKi8NCiAgICAgICAgICAgICBoYXNUYWJzID0gdHJ1ZTsNCi0gICAgICAgIH0gDQorICAg
ICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIGJvb2xlYW4gaGFzVGFicygpIHsNCiAgICAg
ICAgIHJldHVybiBoYXNUYWJzOw0KICAgICB9DQpAQCAtMTk3LDEwICsxOTksMTAgQEANCiAgICAg
ICAgIHJldHVybiB0b3BMZXZlbFRhYmJlZFBhbmU7DQogICAgIH0NCiANCi0gICAgDQorDQogICAg
IC8qKg0KLSAgICAgKiBAcGFyYW0gcCB0aGUgcGFuZWwgdG8gYmUgYWRkZWQgDQotICAgICAqIEBw
YXJhbSBhdEVuZCB0cnVlID0gYWRkIHRoZSBwYW5lbCBhdCB0aGUgZW5kLCANCisgICAgICogQHBh
cmFtIHAgdGhlIHBhbmVsIHRvIGJlIGFkZGVkDQorICAgICAqIEBwYXJhbSBhdEVuZCB0cnVlID0g
YWRkIHRoZSBwYW5lbCBhdCB0aGUgZW5kLA0KICAgICAgKiAgICAgICAgICAgICAgICAgIGZhbHNl
ID0gYXQgdGhlIGJlZ2lubmluZw0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgYWRkVGFiKEpQ
YW5lbCBwLCBib29sZWFuIGF0RW5kKSB7DQpAQCAtMjE1LDkgKzIxNyw5IEBADQogICAgICAgICAg
ICAgdGl0bGUgPSBwLmdldE5hbWUoKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChhdEVuZCkg
ew0KLSAgICAgICAgICAgIHRvcExldmVsVGFiYmVkUGFuZS5hZGRUYWIodGl0bGUsIGljb24sIHAp
OyANCisgICAgICAgICAgICB0b3BMZXZlbFRhYmJlZFBhbmUuYWRkVGFiKHRpdGxlLCBpY29uLCBw
KTsNCiAgICAgICAgICAgICB0YWJQYW5lbExpc3QuYWRkKHApOw0KLSAgICAgICAgfSBlbHNlIHsg
DQorICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgIHRvcExldmVsVGFiYmVkUGFuZS5pbnNl
cnRUYWIodGl0bGUsIGljb24sIHAsIG51bGwsIDApOw0KICAgICAgICAgICAgIHRhYlBhbmVsTGlz
dC5hZGQoMCwgcCk7DQogICAgICAgICB9DQpAQCAtMjI3LDEzICsyMjksMTMgQEANCiAgICAgICog
QHBhcmFtIHAgdGhlIHBhbmVsIHRvIGJlIHJlbW92ZWQNCiAgICAgICovDQogICAgIHB1YmxpYyB2
b2lkIHJlbW92ZVRhYihKUGFuZWwgcCkgew0KLSAgICAgICAgdG9wTGV2ZWxUYWJiZWRQYW5lLnJl
bW92ZShwKTsgDQorICAgICAgICB0b3BMZXZlbFRhYmJlZFBhbmUucmVtb3ZlKHApOw0KICAgICAg
ICAgdGFiUGFuZWxMaXN0LnJlbW92ZShwKTsNCiAgICAgfQ0KIA0KICAgICAvKioNCiAgICAgICog
U2VsZWN0cyB0aGUgdG8gZG8gdGFiLCBhbmQgc2V0cyB0aGUgdGFyZ2V0IG9mIHRoYXQgdGFiLg0K
LSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGl0ZW0gdGhlIHNlbGVjdGVkIHRvZG8g
aXRlbQ0KICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdG9kbyB0YWIgaXMgcmVhbGx5IHNlbGVjdGVk
Lg0KICAgICAgKiBAZGVwcmVjYXRlZCBmb3IgMC4yNS41IGJ5IHRmbW9ycmlzLiBTZW5kIGFuIGV2
ZW50IHRoYXQgVGFiVG9Eb1RhcmdldHMNCkBAIC00NzQsOSArNDc2LDkgQEANCiAgICAgICoge0Bp
bmhlcml0RG9jfQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgc3RhdGVDaGFuZ2VkKENoYW5n
ZUV2ZW50IGUpIHsNCi0gICAgICAgIExPRy5kZWJ1ZygiRGV0YWlsc1BhbmUgc3RhdGUgY2hhbmdl
ZCIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiRGV0YWlsc1BhbmUgc3RhdGUgY2hh
bmdlZCIpOw0KICAgICAgICAgQ29tcG9uZW50IHNlbCA9IHRvcExldmVsVGFiYmVkUGFuZS5nZXRT
ZWxlY3RlZENvbXBvbmVudCgpOw0KLSAgICAgICAgDQorDQogICAgICAgICAvLyB1cGRhdGUgdGhl
IHByZXZpb3VzbHkgc2VsZWN0ZWQgdGFiDQogICAgICAgICBpZiAobGFzdE5vbk51bGxUYWIgPj0g
MCkgew0KIAkgICAgSlBhbmVsIHRhYiA9IHRhYlBhbmVsTGlzdC5nZXQobGFzdE5vbk51bGxUYWIp
Ow0KQEAgLTQ4NiwxNCArNDg4LDE0IEBADQogCSAgICB9DQogICAgICAgICB9DQogICAgICAgICBP
YmplY3QgdGFyZ2V0ID0gVGFyZ2V0TWFuYWdlci5nZXRJbnN0YW5jZSgpLmdldFNpbmdsZVRhcmdl
dCgpOw0KLSAgICAgICAgDQorDQogICAgICAgICBpZiAoIShzZWwgaW5zdGFuY2VvZiBUYWJUb0Rv
VGFyZ2V0KSAmJiAhKHNlbCBpbnN0YW5jZW9mIFRhYlByb3BzKSkgew0KLSAgICAgICAgICAgIC8v
IFRPRE86IEJvYiBzYXlzIC0gdGFicyB0aGF0IGxpc3RlbiBmb3IgdGFyZ2V0IGNoYW5nZXMgDQot
ICAgICAgICAgICAgLy8gc2hvdWxkIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgbm90IGV4cGVjdCBEZXRh
aWxzUGFuZSB0byANCisgICAgICAgICAgICAvLyBUT0RPOiBCb2Igc2F5cyAtIHRhYnMgdGhhdCBs
aXN0ZW4gZm9yIHRhcmdldCBjaGFuZ2VzDQorICAgICAgICAgICAgLy8gc2hvdWxkIHJlZ2lzdGVy
IHRoZW1zZWx2ZXMgbm90IGV4cGVjdCBEZXRhaWxzUGFuZSB0bw0KICAgICAgICAgICAgIC8vIGxp
c3RlbiBhbmQgcGFzcyBvbiB0aGUgZXZlbnQuIE90aGVyd2lzZSB0aGVzZSB0YWJzDQotICAgICAg
ICAgICAgLy8gYWx3YXlzIHJlbHkgb24gRGV0YWlsc1BhbmUuIFRhYlRvRG9UYXJnZXQgYW5kIFRh
YlByb3BzIA0KKyAgICAgICAgICAgIC8vIGFsd2F5cyByZWx5IG9uIERldGFpbHNQYW5lLiBUYWJU
b0RvVGFyZ2V0IGFuZCBUYWJQcm9wcw0KICAgICAgICAgICAgIC8vIGN1cnJlbnRseSBsaXN0ZW4g
ZGlyZWN0bHkuDQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgLy8gVGhlIG90aGVyIHRh
YnMgbmVlZCB0byBiZSB1cGRhdGVkIGRlcGVuZGluZyBvbiB0aGUgc2VsZWN0aW9uLg0KICAgICAg
ICAgICAgIGlmIChzZWwgaW5zdGFuY2VvZiBUYWJUYXJnZXQpIHsNCiAgICAgICAgICAgICAgICAg
KChUYWJUYXJnZXQpIHNlbCkuc2V0VGFyZ2V0KHRhcmdldCk7DQpAQCAtNTA1LDEyICs1MDcsMTIg
QEANCiAgICAgICAgICAgICAgICAgLy8gYSBuZXcgc2V0IHRhcmdldCBldmVudCBmb3IgaXQgdG8g
cmVmcmVzaCBpdA0KICAgICAgICAgICAgICAgICAoKFRhcmdldExpc3RlbmVyKSBzZWwpLnRhcmdl
dFNldChuZXcgVGFyZ2V0RXZlbnQodGhpcywNCiAgICAgICAgICAgICAgICAgICAgICAgICBUYXJn
ZXRFdmVudC5UQVJHRVRfU0VULCBuZXcgT2JqZWN0W10ge30sDQotICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IE9iamVjdFtdIHsgDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl
dCANCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10gew0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YXJnZXQNCiAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7DQog
ICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBpZiAodGFy
Z2V0ICE9IG51bGwNCiAgICAgICAgICAgICAmJiBNb2RlbC5nZXRGYWNhZGUoKS5pc0FVTUxFbGVt
ZW50KHRhcmdldCkNCiAgICAgICAgICAgICAmJiB0b3BMZXZlbFRhYmJlZFBhbmUuZ2V0U2VsZWN0
ZWRJbmRleCgpID4gMCkgew0KQEAgLTUyOCw4ICs1MzAsOCBAQA0KICAgICBwdWJsaWMgdm9pZCBt
eVNpbmdsZUNsaWNrKGludCB0YWIpIHsNCiAgICAgICAgIC8vVE9ETzogc2hvdWxkIGZpcmUgaXRz
IG93biBldmVudCBhbmQgUHJvamVjdEJyb3dzZXINCiAgICAgICAgIC8vc2hvdWxkIHJlZ2lzdGVy
IGEgbGlzdGVuZXINCi0gICAgICAgIExPRy5kZWJ1Zygic2luZ2xlOiAiDQotICAgICAgICAgICAg
ICAgICsgdG9wTGV2ZWxUYWJiZWRQYW5lLmdldENvbXBvbmVudEF0KHRhYikudG9TdHJpbmcoKSk7
DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJzaW5nbGU6IHswfSIsDQorICAgICAgICAg
ICAgICAgIHRvcExldmVsVGFiYmVkUGFuZS5nZXRDb21wb25lbnRBdCh0YWIpLnRvU3RyaW5nKCkp
Ow0KICAgICB9DQogDQogICAgIC8qKg0KQEAgLTU0MSw4ICs1NDMsOCBAQA0KICAgICBwdWJsaWMg
dm9pZCBteURvdWJsZUNsaWNrKGludCB0YWIpIHsNCiAgICAgICAgIC8vVE9ETzogc2hvdWxkIGZp
cmUgaXRzIG93biBldmVudCBhbmQgUHJvamVjdEJyb3dzZXINCiAgICAgICAgIC8vc2hvdWxkIHJl
Z2lzdGVyIGEgbGlzdGVuZXINCi0gICAgICAgIExPRy5kZWJ1ZygiZG91YmxlOiAiDQotICAgICAg
ICAgICAgICAgICsgdG9wTGV2ZWxUYWJiZWRQYW5lLmdldENvbXBvbmVudEF0KHRhYikudG9TdHJp
bmcoKSk7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJkb3VibGU6IHswfSIsDQorICAg
ICAgICAgICAgICAgIHRvcExldmVsVGFiYmVkUGFuZS5nZXRDb21wb25lbnRBdCh0YWIpLnRvU3Ry
aW5nKCkpOw0KIC8vICAgICAgICBKUGFuZWwgdCA9IChKUGFuZWwpIHRhYlBhbmVsTGlzdC5lbGVt
ZW50QXQodGFiKTsNCiAgICAgICAgIC8vIEN1cnJlbnRseSB0aGlzIGZlYXR1cmUgaXMgZGlzYWJs
ZWQgZm9yIEFyZ29VTUwuDQogLy8gICAgICAgIGlmICh0IGluc3RhbmNlb2YgQWJzdHJhY3RBcmdv
SlBhbmVsKQ0KQEAgLTY1Myw3ICs2NTUsNyBAQA0KICAgICBwcml2YXRlIHZvaWQgZW5hYmxlVGFi
cyhPYmplY3QgdGFyZ2V0KSB7DQogDQogICAgICAgICAvLyBUT0RPOiBRdWljayByZXR1cm4gaGVy
ZSBmb3IgdGFyZ2V0ID09IG51bGw/IC0gdGZtDQotICAgICAgICANCisNCiAgICAgICAgIC8vIGl0
ZXJhdGUgdGhyb3VnaCB0aGUgdGFiYmVkIHBhbmVscyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGV5
DQogICAgICAgICAvLyBzaG91bGQgYmUgZW5hYmxlZC4NCiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgdGFiUGFuZWxMaXN0LnNpemUoKTsgaSsrKSB7DQpAQCAtNjYxLDEzICs2NjMsMTMgQEAN
CiAgICAgICAgICAgICBib29sZWFuIHNob3VsZEVuYWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAg
IGlmICghKHRhYiBpbnN0YW5jZW9mIFRhYlRvRG9UYXJnZXQpICYmICEodGFiIGluc3RhbmNlb2Yg
VGFiUHJvcHMpKSB7DQogICAgICAgICAgICAgICAgIC8vIFRPRE86IEJvYiBzYXlzIC0gdGFicyB0
aGF0IGxpc3RlbiBmb3IgdGFyZ2V0IGNoYW5nZXMNCi0gICAgICAgICAgICAgICAgLy8gc2hvdWxk
IHJlZ2lzdGVyIHRoZW1zZWx2ZXMgbm90IGV4cGVjdCBEZXRhaWxzUGFuZSB0byANCisgICAgICAg
ICAgICAgICAgLy8gc2hvdWxkIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgbm90IGV4cGVjdCBEZXRhaWxz
UGFuZSB0bw0KICAgICAgICAgICAgICAgICAvLyBsaXN0ZW4gYW5kIHBhc3Mgb24gdGhlIGV2ZW50
LiBPdGhlcndpc2UgdGhlc2UgdGFicw0KLSAgICAgICAgICAgICAgICAvLyBhbHdheXMgcmVseSBv
biBEZXRhaWxzUGFuZS4gVGFiVG9Eb1RhcmdldCBhbmQgVGFiUHJvcHMgDQorICAgICAgICAgICAg
ICAgIC8vIGFsd2F5cyByZWx5IG9uIERldGFpbHNQYW5lLiBUYWJUb0RvVGFyZ2V0IGFuZCBUYWJQ
cm9wcw0KICAgICAgICAgICAgICAgICAvLyBjdXJyZW50bHkgbGlzdGVuIGRpcmVjdGx5Lg0KICAg
ICAgICAgICAgICAgICBpZiAodGFiIGluc3RhbmNlb2YgVGFyZ2V0TGlzdGVuZXIpIHsNCiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0YWIgaW5zdGFuY2VvZiBUYWJUYXJnZXQpIHsNCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSANCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaG91bGRFbmFibGUgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRhYlRhcmdl
dCkgdGFiKS5zaG91bGRCZUVuYWJsZWQodGFyZ2V0KTsNCiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhYiBpbnN0YW5jZW9mIFRhYlRv
RG9UYXJnZXQpIHsNCkBAIC02ODAsNyArNjgyLDcgQEANCiAgICAgICAgICAgICAgICAgICAgIGlm
IChzaG91bGRFbmFibGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUYXJnZXRMaXN0
ZW5lcigoVGFyZ2V0TGlzdGVuZXIpIHRhYik7DQogICAgICAgICAgICAgICAgICAgICB9DQotICAg
IA0KKw0KICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWxUYWJiZWRQYW5lLnNldEVuYWJsZWRB
dChpLCBzaG91bGRFbmFibGUpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0K
DQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9EaXNw
bGF5VGV4dFRyZWUuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9i
cm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL0Rp
c3BsYXlUZXh0VHJlZS5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5
OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3Jj
L29yZy9hcmdvdW1sL3VpL0Rpc3BsYXlUZXh0VHJlZS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL0Rpc3BsYXlUZXh0VHJlZS5qYXZh
CTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwIENvbnRyaWJ1
dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9y
cyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQg
dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBh
Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTQ1
LDEyICs0NSwxMyBAQA0KIGltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOw0KIGltcG9ydCBqYXZh
LnV0aWwuSXRlcmF0b3I7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0
aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0K
IGltcG9ydCBqYXZheC5zd2luZy5KVHJlZTsNCiBpbXBvcnQgamF2YXguc3dpbmcudHJlZS5UcmVl
TW9kZWw7DQogaW1wb3J0IGphdmF4LnN3aW5nLnRyZWUuVHJlZVBhdGg7DQogDQotaW1wb3J0IG9y
Zy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUuVG9E
b0l0ZW07DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5Ub0RvTGlzdDsNCiBpbXBvcnQg
b3JnLmFyZ291bWwuaTE4bi5UcmFuc2xhdG9yOw0KQEAgLTcyLDcgKzczLDggQEANCiAgKi8NCiBw
dWJsaWMgY2xhc3MgRGlzcGxheVRleHRUcmVlIGV4dGVuZHMgSlRyZWUgew0KIA0KLSAgICBwcml2
YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihEaXNwbGF5VGV4
dFRyZWUuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisg
ICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRGlzcGxheVRleHRUcmVlLmNsYXNzLmdldE5hbWUoKSk7
DQogDQogICAgIC8qKg0KICAgICAgKiBBIE1hcCBoZWxwaW5nIHRoZSB0cmVlIG1haW50YWluIGEg
Y29uc2lzdGVudCBleHBhbmRlZCBwYXRocyBzdGF0ZS4NCkBAIC0yMDUsNyArMjA3LDcgQEANCiAg
ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICBPYmplY3QgbWUgPSBNb2RlbC5nZXRG
YWNhZGUoKS5nZXRJbXBvcnRlZEVsZW1lbnQodmFsdWUpOw0KICAgICAgICAgICAgICAgICBTdHJp
bmcgdHlwZU5hbWUgPSBNb2RlbC5nZXRGYWNhZGUoKS5nZXRVTUxDbGFzc05hbWUobWUpOw0KLSAg
ICAgICAgICAgICAgICBTdHJpbmcgZWxlbU5hbWUgPSBjb252ZXJ0VmFsdWVUb1RleHQobWUsIHNl
bGVjdGVkLCANCisgICAgICAgICAgICAgICAgU3RyaW5nIGVsZW1OYW1lID0gY29udmVydFZhbHVl
VG9UZXh0KG1lLCBzZWxlY3RlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCwg
bGVhZiwgcm93LA0KICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZvY3VzKTsNCiAgICAgICAg
ICAgICAgICAgU3RyaW5nIGFsaWFzID0gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0QWxpYXModmFsdWUp
Ow0KQEAgLTIzNSw3ICsyMzcsNyBAQA0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlz
QUFwcGxpZWRQcm9maWxlRWxlbWVudCh2YWx1ZSkpIHsNCiAgICAgICAgICAgICByZXR1cm4gTW9k
ZWwuZ2V0RmFjYWRlKCkuZ2V0TmFtZSh2YWx1ZSk7DQogICAgICAgICB9DQotICAgICAgICANCisN
CiAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFyZ29EaWFncmFtKSB7DQogICAgICAgICAg
ICAgcmV0dXJuICgoQXJnb0RpYWdyYW0pIHZhbHVlKS5nZXROYW1lKCk7DQogICAgICAgICB9DQpA
QCAtMjc3LDkgKzI3OSw5IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWwuZ2V0RmFj
YWRlKCkuZ2V0VU1MQ2xhc3NOYW1lKHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgfSk7DQog
ICAgICAgICB9DQotICAgICAgICBDb2xsZWN0aW9uIHJlZmVyZW5jZVZhbHVlcyA9IA0KKyAgICAg
ICAgQ29sbGVjdGlvbiByZWZlcmVuY2VWYWx1ZXMgPQ0KICAgICAgICAgICAgIE1vZGVsLmdldEZh
Y2FkZSgpLmdldFJlZmVyZW5jZVZhbHVlKHZhbHVlKTsNCi0gICAgICAgIENvbGxlY3Rpb24gZGF0
YVZhbHVlcyA9IA0KKyAgICAgICAgQ29sbGVjdGlvbiBkYXRhVmFsdWVzID0NCiAgICAgICAgICAg
ICBNb2RlbC5nZXRGYWNhZGUoKS5nZXREYXRhVmFsdWUodmFsdWUpOw0KICAgICAgICAgSXRlcmF0
b3IgaTsNCiAgICAgICAgIGlmIChyZWZlcmVuY2VWYWx1ZXMuc2l6ZSgpID4gMCkgew0KQEAgLTMw
MCw5ICszMDIsOSBAQA0KIA0KICAgICAvKioNCiAgICAgICogR2VuZXJhdGUgdGhlIHRleHQgdG8g
cmVwcmVzZW50IGEgVHJhbnNpdGlvbi4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJh
bSB2YWx1ZSBhIFRyYW5zaXRpb24gVU1MIG9iamVjdA0KLSAgICAgKiBAcmV0dXJuIGEgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIFRyYW5zaXRpb24gd2l0aCB0cmlnZ2VyLCBndWFyZCANCisgICAgICog
QHJldHVybiBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBUcmFuc2l0aW9uIHdpdGggdHJpZ2dlciwg
Z3VhcmQNCiAgICAgICogYW5kIGVmZmVjdA0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBTdHJpbmcg
Zm9ybWF0VHJhbnNpdGlvbkxhYmVsKE9iamVjdCB2YWx1ZSkgew0KQEAgLTMxNSw3ICszMTcsNyBA
QA0KICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGF0aW9uUHJvdmlkZXJGYWN0b3J5Mi5UWVBF
X1RSQU5TSVRJT04sDQogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgTm90YXRpb24uZmluZE5vdGF0aW9uKHNldHRpbmdzLmdldE5vdGF0aW9u
TGFuZ3VhZ2UoKSkpOw0KLSAgICAgICAgU3RyaW5nIHNpZ25hdHVyZSA9IG5vdGF0aW9uUHJvdmlk
ZXIudG9TdHJpbmcodmFsdWUsIA0KKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZSA9IG5vdGF0aW9u
UHJvdmlkZXIudG9TdHJpbmcodmFsdWUsDQogICAgICAgICAgICAgICAgIE5vdGF0aW9uU2V0dGlu
Z3MuZ2V0RGVmYXVsdFNldHRpbmdzKCkpOw0KICAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiBu
YW1lLmxlbmd0aCgpID4gMCkgew0KICAgICAgICAgICAgIG5hbWUgKz0gIjogIiArIHNpZ25hdHVy
ZTsNCkBAIC0zMzAsMTcgKzMzMiwxNyBAQA0KICAgICAgKiBAcmV0dXJuIGEgc3RyaW5nIHJlcHJl
c2VudGluZyB0aGUgZ2l2ZW4gc3RlcmVvdHlwZShzKQ0KICAgICAgKi8NCiAgICAgcHVibGljIHN0
YXRpYyBTdHJpbmcgZ2VuZXJhdGVTdGVyZW90eXBlKENvbGxlY3Rpb248T2JqZWN0PiBzdCkgew0K
LSAgICAgICAgcmV0dXJuIE5vdGF0aW9uVXRpbGl0eVVtbC5nZW5lcmF0ZVN0ZXJlb3R5cGUoc3Qs
IA0KKyAgICAgICAgcmV0dXJuIE5vdGF0aW9uVXRpbGl0eVVtbC5nZW5lcmF0ZVN0ZXJlb3R5cGUo
c3QsDQogICAgICAgICAgICAgICAgIGdldE5vdGF0aW9uU2V0dGluZ3MoKS5pc1VzZUd1aWxsZW1l
dHMoKSk7DQogICAgIH0NCiANCiAgICAgLyoqDQotICAgICAqIENyZWF0ZSBhIHN0cmluZyByZXBy
ZXNlbnRpbmcgdGhlIGdpdmVuIG1vZGVsZWxlbWVudC4gTm9ybWFsbHkgdGhpcyBpcyANCi0gICAg
ICoganVzdCB0aGUgbmFtZSwgYnV0IGlmIHRoZSBlbGVtZW50IGlzIG5vdCBuYW1lZCwgc29tZXRo
aW5nIGxpa2UgDQorICAgICAqIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGdpdmVu
IG1vZGVsZWxlbWVudC4gTm9ybWFsbHkgdGhpcyBpcw0KKyAgICAgKiBqdXN0IHRoZSBuYW1lLCBi
dXQgaWYgdGhlIGVsZW1lbnQgaXMgbm90IG5hbWVkLCBzb21ldGhpbmcgbGlrZQ0KICAgICAgKiAi
YW5vbnltb3VzIENsYXNzaWZpZXIiIGlzIHJldHVybmVkIHdpdGggaTE4biBhcHBsaWVkLg0KLSAg
ICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIG1vZGVsRWxlbWVudCB0aGUgZ2l2ZW4gZWxl
bWVudA0KLSAgICAgKiBAcmV0dXJuIGEgcmVjb2duaXphYmxlIG5hbWUgZm9yIHRoZSBlbGVtZW50
IA0KKyAgICAgKiBAcmV0dXJuIGEgcmVjb2duaXphYmxlIG5hbWUgZm9yIHRoZSBlbGVtZW50DQog
ICAgICAqIChndWFyYW50ZWVkIHdpdGggbGVuZ3RoID4gMCkNCiAgICAgICovDQogICAgIHB1Ymxp
YyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldE1vZGVsRWxlbWVudERpc3BsYXlOYW1lKE9iamVjdCBt
b2RlbEVsZW1lbnQpIHsNCkBAIC0zNzEsNyArMzczLDcgQEANCiANCiAgICAgICAgIHN1cGVyLmZp
cmVUcmVlRXhwYW5kZWQocGF0aCk7DQogDQotICAgICAgICBMT0cuZGVidWcoImZpcmVUcmVlRXhw
YW5kZWQiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImZpcmVUcmVlRXhwYW5kZWQi
KTsNCiAgICAgICAgIGlmIChyZWV4cGFuZGluZyB8fCBwYXRoID09IG51bGwpIHsNCiAgICAgICAg
ICAgICByZXR1cm47DQogICAgICAgICB9DQpAQCAtMzg3LDcgKzM4OSw3IEBADQogDQogICAgICAg
ICBzdXBlci5maXJlVHJlZUNvbGxhcHNlZChwYXRoKTsNCiANCi0gICAgICAgIExPRy5kZWJ1Zygi
ZmlyZVRyZWVDb2xsYXBzZWQiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImZpcmVU
cmVlQ29sbGFwc2VkIik7DQogICAgICAgICBpZiAocGF0aCA9PSBudWxsIHx8IGV4cGFuZGVkUGF0
aHNJbk1vZGVsID09IG51bGwpIHsNCiAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICB9DQpA
QCAtNDAwLDcgKzQwMiw3IEBADQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBzZXRNb2RlbChU
cmVlTW9kZWwgbmV3TW9kZWwpIHsNCiANCi0gICAgICAgIExPRy5kZWJ1Zygic2V0TW9kZWwiKTsN
CisgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgInNldE1vZGVsIik7DQogICAgICAgICBPYmpl
Y3QgciA9IG5ld01vZGVsLmdldFJvb3QoKTsNCiAgICAgICAgIGlmIChyICE9IG51bGwpIHsNCiAg
ICAgICAgICAgICBzdXBlci5zZXRNb2RlbChuZXdNb2RlbCk7DQpAQCAtNDE3LDcgKzQxOSw3IEBA
DQogICAgICAqLw0KICAgICBwcm90ZWN0ZWQgTGlzdDxUcmVlUGF0aD4gZ2V0RXhwYW5kZWRQYXRo
cygpIHsNCiANCi0gICAgICAgIExPRy5kZWJ1ZygiZ2V0RXhwYW5kZWRQYXRocyIpOw0KKyAgICAg
ICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiZ2V0RXhwYW5kZWRQYXRocyIpOw0KICAgICAgICAgVHJl
ZU1vZGVsIHRtID0gZ2V0TW9kZWwoKTsNCiAgICAgICAgIExpc3Q8VHJlZVBhdGg+IHJlcyA9IGV4
cGFuZGVkUGF0aHNJbk1vZGVsLmdldCh0bSk7DQogICAgICAgICBpZiAocmVzID09IG51bGwpIHsN
CkBAIC00MzUsNyArNDM3LDcgQEANCiAgICAgICovDQogICAgIHByaXZhdGUgdm9pZCByZWV4cGFu
ZCgpIHsNCiANCi0gICAgICAgIExPRy5kZWJ1ZygicmVleHBhbmQiKTsNCisgICAgICAgIExPRy5s
b2coTGV2ZWwuRklORSwgInJlZXhwYW5kIik7DQogICAgICAgICBpZiAoZXhwYW5kZWRQYXRoc0lu
TW9kZWwgPT0gbnVsbCkgew0KICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgIH0NCg0KTW9k
aWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvSGVscEJveC5q
YXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1s
L3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvSGVscEJveC5qYXZhP3Zp
ZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL0hlbHBC
b3guamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91aS9IZWxwQm94LmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsx
LDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChj
KSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0y
MDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRo
aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBh
dmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYx
LjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWls
YWJsZSBhdA0KQEAgLTQ0LDYgKzQ0LDggQEANCiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsN
CiBpbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOw0KIGltcG9ydCBqYXZhLm5l
dC5VUkw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0
aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5nLkpFZGl0b3JQYW5lOw0K
IGltcG9ydCBqYXZheC5zd2luZy5KRnJhbWU7DQpAQCAtNTIsNyArNTQsNiBAQA0KIGltcG9ydCBq
YXZheC5zd2luZy5ldmVudC5IeXBlcmxpbmtFdmVudDsNCiBpbXBvcnQgamF2YXguc3dpbmcuZXZl
bnQuSHlwZXJsaW5rTGlzdGVuZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2Vy
Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5oZWxwZXJzLkFwcGxpY2F0aW9uVmVy
c2lvbjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29nbml0aXZlLlRyYW5zbGF0b3I7DQogDQpAQCAt
NjEsNyArNjIsOCBAQA0KICAqLw0KIHB1YmxpYyBjbGFzcyBIZWxwQm94IGV4dGVuZHMgSkZyYW1l
IGltcGxlbWVudHMgSHlwZXJsaW5rTGlzdGVuZXIgew0KIA0KLSAgICBwcml2YXRlIHN0YXRpYyBm
aW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihIZWxwQm94LmNsYXNzKTsNCisgICAg
cHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9n
Z2VyKEhlbHBCb3guY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIEEgdGFi
YmVkIHBhbmUgdG8gZGlzcGxheSBzZXZlcmFsIHBhZ2VzIHNpbXVsdGFuZW91c2x5Lg0KQEAgLTgw
LDE0ICs4MiwxNCBAQA0KICAgICAgICAgew0KICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxp
emUoInRhYi5oZWxwLm1hbnVhbCIpLA0KICAgICAgICAgICAgIChUcmFuc2xhdG9yLmxvY2FsaXpl
KCJ0YWIuaGVscC5wYXRoLm1hbnVhbCIpDQotICAgICAgICAgICAgICAgICsgIm1hbnVhbC0iICsg
QXBwbGljYXRpb25WZXJzaW9uLmdldFN0YWJsZVZlcnNpb24oKSANCisgICAgICAgICAgICAgICAg
KyAibWFudWFsLSIgKyBBcHBsaWNhdGlvblZlcnNpb24uZ2V0U3RhYmxlVmVyc2lvbigpDQogICAg
ICAgICAgICAgICAgICsgIi8iKSwNCiAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgi
dGFiLmhlbHAudGlwLm1hbnVhbCIpDQogICAgICAgICB9LA0KICAgICAgICAgew0KICAgICAgICAg
ICAgIFRyYW5zbGF0b3IubG9jYWxpemUoInRhYi5oZWxwLnN1cHBvcnQiKSwNCiAgICAgICAgICAg
ICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ0YWIuaGVscC5wYXRoLnN1cHBvcnQiKSwNCi0gICAgICAg
ICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJ0YWIuaGVscC50aXAuc3VwcG9ydCIpIA0KKyAgICAg
ICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoInRhYi5oZWxwLnRpcC5zdXBwb3J0IikNCiAgICAg
ICAgIH0NCiAgICAgfTsNCiANCkBAIC0xMTYsMTcgKzExOCwxNyBAQA0KICAgICAgICAgICAgIHRy
eSB7DQogICAgICAgICAgICAgICAgIHBhbmVVUkwgPSBuZXcgVVJMKCBwYWdlc1tpXVsxXSk7DQog
ICAgICAgICAgICAgfSBjYXRjaCAoIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKSB7DQotICAgICAg
ICAgICAgICAgIExPRy53YXJuKCBwYWdlc1tpXVswXSArICIgVVJMIG1hbGZvcm1lZDogIiArIHBh
Z2VzW2ldWzFdKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCBwYWdl
c1tpXVswXSArICIgVVJMIG1hbGZvcm1lZDogIiArIHBhZ2VzW2ldWzFdKTsNCiAgICAgICAgICAg
ICB9DQogDQogICAgICAgICAgICAgaWYgKCBwYW5lVVJMICE9IG51bGwpIHsNCiAgICAgICAgICAg
ICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgIHBhbmVzW2ldLnNldFBhZ2UoIHBhbmVV
UkwpOw0KICAgICAgICAgICAgICAgICB9IGNhdGNoICggSU9FeGNlcHRpb24gZSkgew0KLSAgICAg
ICAgICAgICAgICAgICAgTE9HLndhcm4oIkF0dGVtcHRlZCB0byByZWFkIGEgYmFkIFVSTDogIiAr
IHBhbmVVUkwpOw0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAi
QXR0ZW1wdGVkIHRvIHJlYWQgYSBiYWQgVVJMOiAiICsgcGFuZVVSTCk7DQogICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICB9IGVsc2Ugew0KLSAgICAgICAgICAgICAgICBMT0cud2Fybigi
Q291bGRuJ3QgZmluZCAiICsgcGFnZXNbaV1bMF0pOw0KKyAgICAgICAgICAgICAgICBMT0cubG9n
KExldmVsLldBUk5JTkcsICJDb3VsZG4ndCBmaW5kICIgKyBwYWdlc1tpXVswXSk7DQogICAgICAg
ICAgICAgfQ0KIA0KICAgICAgICAgICAgIC8vIFB1dCB0aGUgY3VycmVudCBwYW5lIGluIGEgc2Ny
b2xsIHBhbmUuDQpAQCAtMTQ3LDcgKzE0OSw3IEBADQogICAgICAgICAgICAgdHJ5IHsNCiAgICAg
ICAgICAgICAgICAgcGFuZS5zZXRQYWdlKGV2ZW50LmdldFVSTCgpKTsNCiAgICAgICAgICAgICB9
IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsNCi0gICAgICAgICAgICAgICAgTE9HLndhcm4oICJD
b3VsZCBub3QgZmV0Y2ggcmVxdWVzdGVkIFVSTCIpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9n
KExldmVsLldBUk5JTkcsICJDb3VsZCBub3QgZmV0Y2ggcmVxdWVzdGVkIFVSTCIpOw0KICAgICAg
ICAgICAgIH0NCiAJfQ0KICAgICB9DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VpL0xvYWRTd2luZ1dvcmtlci5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdv
dW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdWkvTG9hZFN3aW5nV29ya2VyLmphdmE/dmlldz1kaWZmJnBhdGhy
ZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvTG9hZFN3aW5nV29ya2VyLmph
dmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
dWkvTG9hZFN3aW5nV29ya2VyLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2
ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0
IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAw
OS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFk
ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNl
IHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2
YWlsYWJsZSBhdA0KQEAgLTM5LDEwICszOSwxMSBAQA0KIHBhY2thZ2Ugb3JnLmFyZ291bWwudWk7
DQogaW1wb3J0IGphdmEuaW8uRmlsZTsNCiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCitp
bXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5n
LkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuVUlNYW5hZ2VyOw0KIA0KLWltcG9ydCBv
cmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuaTE4bi5UcmFuc2xh
dG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC50YXNrbWdtdC5Qcm9ncmVzc01vbml0b3I7DQogaW1w
b3J0IG9yZy5hcmdvdW1sLnV0aWwuQXJnb0ZyYW1lOw0KQEAgLTU2LDE0ICs1NywxNSBAQA0KIEBE
ZXByZWNhdGVkDQogY2xhc3MgTG9hZFN3aW5nV29ya2VyIGV4dGVuZHMgU3dpbmdXb3JrZXIgew0K
IA0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dl
cihMb2FkU3dpbmdXb3JrZXIuY2xhc3MpOw0KLSAgICANCisgICAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKExvYWRTd2luZ1dvcmtl
ci5jbGFzcy5nZXROYW1lKCkpOw0KKw0KICAgICBwcml2YXRlIGJvb2xlYW4gc2hvd1VpOw0KICAg
ICBwcml2YXRlIEZpbGUgZmlsZTsNCiANCiAgICAgLyoqDQogICAgICAqIFRoaXMgaXMgdGhlIG9u
bHkgY29uc3RydWN0b3IgZm9yIExvYWRTd2luZ1dvcmtlci4NCi0gICAgICogDQorICAgICAqDQog
ICAgICAqIEBwYXJhbSBhRmlsZQkJdGhlIGZpbGUgdGhhdCdzIGdvaW5nIHRvIGJlIG9wZW5lZCBh
cyBhIHByb2plY3QNCiAgICAgICogQHBhcmFtIGFTaG93VWkJd2hldGhlciB0byBzaG93IHRoZSBV
SSBvciBub3QNCiAgICAgICovDQpAQCAtNzIsMTIgKzc0LDEyIEBADQogICAgICAgICB0aGlzLnNo
b3dVaSA9IGFTaG93VWk7DQogICAgICAgICB0aGlzLmZpbGUgPSBhRmlsZTsNCiAgICAgfQ0KLQkN
CisNCiAgICAgLyoqDQogICAgICAqIEltcGxlbWVudHMgb3JnLmFyZ291bWwuc3dpbmdleHQuU3dp
bmdXb3JrZXIjY29uc3RydWN0KCk7IHRoaXMgaXMNCiAgICAgICogdGhlIG1haW4gbWV0aG9kIGZv
ciB0aGlzIFN3aW5nV29ya2VyLg0KICAgICAgKiBJbiB0aGlzIGNhc2UsIGl0IHNpbXBseSBsb2Fk
cyB0aGUgcHJvamVjdC4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBwbXcJdGhl
IFByb2dyZXNzTW9uaXRvcldpbmRvdyB1c2VkIGJ5IFByb2plY3RCcm93c2VyDQogICAgICAqIEBy
ZXR1cm4JCWFsd2F5cyBudWxsDQogICAgICAqLw0KQEAgLTkxLDE5ICs5MywxOSBAQA0KICAgICB9
DQogDQogICAgIC8qKg0KLSAgICAgKiBJbXBsZW1lbnRzIG9yZy5hcmdvdW1sLnN3aW5nZXh0LlN3
aW5nV29ya2VyI2luaXRQcm9ncmVzc01vbml0b3JXaW5kb3coKTsgDQorICAgICAqIEltcGxlbWVu
dHMgb3JnLmFyZ291bWwuc3dpbmdleHQuU3dpbmdXb3JrZXIjaW5pdFByb2dyZXNzTW9uaXRvcldp
bmRvdygpOw0KICAgICAgKiBpdCBqdXN0IGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgUHJvZ3Jlc3NN
b25pdG9yV2luZG93Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHJldHVybiAgYW4gaW5z
dGFuY2Ugb2YgUHJvZ3Jlc3NNb25pdG9yV2luZG93DQogICAgICAqLw0KICAgICBwdWJsaWMgUHJv
Z3Jlc3NNb25pdG9yIGluaXRQcm9ncmVzc01vbml0b3JXaW5kb3coKSB7DQotICAgICAgICBVSU1h
bmFnZXIucHV0KCJQcm9ncmVzc01vbml0b3IucHJvZ3Jlc3NUZXh0IiwgDQorICAgICAgICBVSU1h
bmFnZXIucHV0KCJQcm9ncmVzc01vbml0b3IucHJvZ3Jlc3NUZXh0IiwNCiAgICAgICAgICAgICAg
ICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgiZmlsZWNob29zZXIub3Blbi1wcm9qZWN0IikpOw0KICAg
ICAgICAgT2JqZWN0W10gbXNnQXJncyA9IG5ldyBPYmplY3RbXSB7dGhpcy5maWxlLmdldFBhdGgo
KX07DQogICAgICAgICByZXR1cm4gbmV3IFByb2dyZXNzTW9uaXRvcldpbmRvdyhBcmdvRnJhbWUu
Z2V0RnJhbWUoKSwNCiAgICAgICAgICAgICAgICAgVHJhbnNsYXRvci5tZXNzYWdlRm9ybWF0KCJk
aWFsb2cub3BlbnByb2plY3QudGl0bGUiLCBtc2dBcmdzKSk7DQogICAgIH0NCi0gICAgDQorDQog
ICAgIC8qKg0KICAgICAgKiBPdmVycmlkZXMgdGhlIGZpbmlzaGVkIG1ldGhvZCBvZiB0aGUgU3dp
bmdXb3JrZXIgY2xhc3MgdG8gdXBkYXRlIHRoZSBHVUkNCiAgICAgICovDQpAQCAtMTEyLDcgKzEx
NCw3IEBADQogICAgIAl0cnkgew0KICAgICAJICAgIFByb2plY3RCcm93c2VyLmdldEluc3RhbmNl
KCkuYWRkRmlsZVNhdmVkKGZpbGUpOw0KICAgICAJfSBjYXRjaCAoSU9FeGNlcHRpb24gZXhjKSB7
DQotICAgICAgICAgICAgTE9HLmVycm9yKCJGYWlsZWQgdG8gc2F2ZSBmaWxlOiAiICsgZmlsZQ0K
KyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRmFpbGVkIHRvIHNhdmUgZmlsZTog
IiArIGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICsgIiBpbiBtb3N0IHJlY2VudGx5IHVzZWQg
bGlzdCIpOw0KICAgICAJfQ0KICAgICB9DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VpL0xvb2tBbmRGZWVsTWdyLmphdmENClVybDogaHR0cDovL2Fy
Z291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC91aS9Mb29rQW5kRmVlbE1nci5qYXZhP3ZpZXc9ZGlmZiZwYXRo
cmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL0xvb2tBbmRGZWVsTWdyLmph
dmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwv
dWkvTG9va0FuZEZlZWxNZ3IuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYg
KzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5
LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4g
VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRl
IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2Ug
djEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZh
aWxhYmxlIGF0DQpAQCAtNDUsNiArNDUsOCBAQA0KIHBhY2thZ2Ugb3JnLmFyZ291bWwudWk7DQog
DQogaW1wb3J0IGphdmEuYXd0LkZvbnQ7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVs
Ow0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3
aW5nLkxvb2tBbmRGZWVsOw0KIGltcG9ydCBqYXZheC5zd2luZy5VSU1hbmFnZXI7DQpAQCAtNTMs
NyArNTUsNiBAQA0KIGltcG9ydCBqYXZheC5zd2luZy5wbGFmLm1ldGFsLk1ldGFsTG9va0FuZEZl
ZWw7DQogaW1wb3J0IGphdmF4LnN3aW5nLnBsYWYubWV0YWwuTWV0YWxUaGVtZTsNCiANCi1pbXBv
cnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0
aW9uLmFwaS5BcmdvOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb25maWd1cmF0aW9uLkNvbmZpZ3Vy
YXRpb247DQogDQpAQCAtNzgsNyArNzksNyBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0K
ICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5n
ZXRMb2dnZXIoTG9va0FuZEZlZWxNZ3IuY2xhc3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5h
bCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihMb29rQW5kRmVlbE1nci5jbGFzcy5nZXRO
YW1lKCkpOw0KIA0KICAgICAvKioNCiAgICAgICogVGhlIGluc3RhbmNlLg0KQEAgLTQ1MSwxMyAr
NDUyLDEzIEBADQogICAgICAgICAgICAgICAgIFVJTWFuYWdlci5zZXRMb29rQW5kRmVlbChsYWZD
bGFzcyk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRMb29r
QW5kRmVlbEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmVycm9yKGUpOw0KKyAgICAg
ICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiIiwgZSk7DQogICAgICAgICB9IGNhdGNoIChD
bGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZXJyb3IoZSk7DQor
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICIiLCBlKTsNCiAgICAgICAgIH0gY2F0
Y2ggKEluc3RhbnRpYXRpb25FeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgIExPRy5lcnJvcihl
KTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIiIsIGUpOw0KICAgICAgICAg
fSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmVy
cm9yKGUpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiIiwgZSk7DQogICAg
ICAgICB9DQogICAgIH0NCiANCkBAIC00NzksMTMgKzQ4MCwxMyBAQA0KICAgICAgICAgICAgICAg
ICBNZXRhbExvb2tBbmRGZWVsLnNldEN1cnJlbnRUaGVtZSh0aGVtZSk7DQogICAgICAgICAgICAg
ICAgIFVJTWFuYWdlci5zZXRMb29rQW5kRmVlbChNRVRBTF9MQUZfQ0xBU1NfTkFNRSk7DQogICAg
ICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRMb29rQW5kRmVlbEV4Y2VwdGlvbiBlKSB7DQot
ICAgICAgICAgICAgICAgIExPRy5lcnJvcihlKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhM
ZXZlbC5TRVZFUkUsICIiLCBlKTsNCiAgICAgICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5k
RXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICAgICAgTE9HLmVycm9yKGUpOw0KKyAgICAgICAg
ICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIiIsIGUpOw0KICAgICAgICAgICAgIH0gY2F0
Y2ggKEluc3RhbnRpYXRpb25FeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICBMT0cuZXJy
b3IoZSk7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiIiwgZSk7DQog
ICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlKSB7DQotICAgICAg
ICAgICAgICAgIExPRy5lcnJvcihlKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5T
RVZFUkUsICIiLCBlKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgIH0NCg0KTW9k
aWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvTXVsdGlFZGl0
b3JQYW5lLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3Nl
L2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9NdWx0aUVk
aXRvclBhbmUuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC91aS9NdWx0aUVkaXRvclBhbmUuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9NdWx0aUVkaXRvclBhbmUuamF2YQkyMDEy
LTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2Vl
IGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJl
bG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w
YW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVz
IHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDcsNiArNDcsOCBA
QA0KIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlz
Ow0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2
ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXgu
c3dpbmcuSlBhbmVsOw0KIGltcG9ydCBqYXZheC5zd2luZy5KVGFiYmVkUGFuZTsNCkBAIC01NCw3
ICs1Niw2IEBADQogaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50LkNoYW5nZUV2ZW50Ow0KIGltcG9y
dCBqYXZheC5zd2luZy5ldmVudC5DaGFuZ2VMaXN0ZW5lcjsNCiANCi1pbXBvcnQgb3JnLmFwYWNo
ZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9uLmFwaS5BYnN0
cmFjdEFyZ29KUGFuZWw7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVpLnRhcmdldG1hbmFnZXIuVGFy
Z2V0RXZlbnQ7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVpLnRhcmdldG1hbmFnZXIuVGFyZ2V0TGlz
dGVuZXI7DQpAQCAtODUsMTMgKzg2LDE0IEBADQogICAgICAgICBtb2RlRmFjdG9yaWVzLmFkZChu
ZXcgTW9kZUxhYmVsRHJhZ0ZhY3RvcnkoKSk7DQogICAgICAgICBtb2RlRmFjdG9yaWVzLmFkZChu
ZXcgTW9kZVNlbGVjdEZhY3RvcnkoKSk7DQogICAgICAgICBtb2RlRmFjdG9yaWVzLmFkZChuZXcg
TW9kZVBvcHVwRmFjdG9yeSgpKTsNCi0gICAgICAgIG1vZGVGYWN0b3JpZXMuYWRkKG5ldyBNb2Rl
RHJhZ1Njcm9sbEZhY3RvcnkoKSk7IA0KKyAgICAgICAgbW9kZUZhY3Rvcmllcy5hZGQobmV3IE1v
ZGVEcmFnU2Nyb2xsRmFjdG9yeSgpKTsNCiAgICAgICAgIEdsb2JhbHMuc2V0RGVmYXVsdE1vZGVG
YWN0b3JpZXMobW9kZUZhY3Rvcmllcyk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKiBsb2dn
ZXIgKi8NCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRM
b2dnZXIoTXVsdGlFZGl0b3JQYW5lLmNsYXNzKTsNCi0gICAgICAgIA0KKyAgICBwcml2YXRlIHN0
YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoTXVsdGlF
ZGl0b3JQYW5lLmNsYXNzLmdldE5hbWUoKSk7DQorDQogICAgIC8qKg0KICAgICAgKiBDbGFzc2Vz
IGZvciB0YWJzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBwcm9wZXJ0eSBwYW5lbC4NCiAgICAgICog
KHByZXZpb3VzbHkgc3RvcmVkIGluIG9yZy9hcmdvdW1sL2FyZ28uaW5pKQ0KQEAgLTEwNyw5ICsx
MDksOSBAQA0KIA0KICAgICBwcml2YXRlIEpUYWJiZWRQYW5lIHRhYnMgPSBuZXcgSlRhYmJlZFBh
bmUoU3dpbmdDb25zdGFudHMuQk9UVE9NKTsNCiANCi0gICAgcHJpdmF0ZSBMaXN0PEpQYW5lbD4g
dGFiUGFuZWxzID0gDQorICAgIHByaXZhdGUgTGlzdDxKUGFuZWw+IHRhYlBhbmVscyA9DQogICAg
ICAgICBuZXcgQXJyYXlMaXN0PEpQYW5lbD4oQXJyYXlzLmFzTGlzdCh0YWJJbnN0YW5jZXMpKTsN
Ci0gICAgDQorDQogICAgIHByaXZhdGUgQ29tcG9uZW50IGxhc3RUYWI7DQogDQogICAgIC8qKg0K
QEAgLTEyMCw3ICsxMjIsNyBAQA0KICAgICAgKiBjYW4gYmUgZWRpdGVkLg0KICAgICAgKi8NCiAg
ICAgcHVibGljIE11bHRpRWRpdG9yUGFuZSgpIHsNCi0gICAgICAgIExPRy5pbmZvKCJtYWtpbmcg
TXVsdGlFZGl0b3JQYW5lIik7DQorICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJtYWtpbmcg
TXVsdGlFZGl0b3JQYW5lIik7DQogDQogICAgICAgICBzZXRMYXlvdXQobmV3IEJvcmRlckxheW91
dCgpKTsNCiAgICAgICAgIGFkZCh0YWJzLCBCb3JkZXJMYXlvdXQuQ0VOVEVSKTsNCkBAIC0yNTUs
OCArMjU3LDEwIEBADQogICAgICAgICAgICAgbGFzdFRhYi5zZXRWaXNpYmxlKGZhbHNlKTsNCiAg
ICAgICAgIH0NCiAgICAgICAgIGxhc3RUYWIgPSB0YWJzLmdldFNlbGVjdGVkQ29tcG9uZW50KCk7
DQotICAgICAgICBMT0cuZGVidWcoDQotICAgICAgICAgICAgIk11bHRpRWRpdG9yUGFuZSBzdGF0
ZSBjaGFuZ2VkOiIgKyBsYXN0VGFiLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsNCisgICAgICAgIExP
Ry5sb2coTGV2ZWwuRklORSwNCisgICAgICAgICAgICAgICAgIk11bHRpRWRpdG9yUGFuZSBzdGF0
ZSBjaGFuZ2VkOiB7MH0iLA0KKyAgICAgICAgICAgICAgICBsYXN0VGFiLmdldENsYXNzKCkuZ2V0
TmFtZSgpKTsNCisNCiAgICAgICAgIGxhc3RUYWIuc2V0VmlzaWJsZSh0cnVlKTsNCiAgICAgICAg
IGlmIChsYXN0VGFiIGluc3RhbmNlb2YgVGFiTW9kZWxUYXJnZXQpIHsNCiAgICAgICAgICAgICAo
KFRhYk1vZGVsVGFyZ2V0KSBsYXN0VGFiKS5yZWZyZXNoKCk7DQpAQCAtMzIxLDcgKzMyNSw3IEBA
DQogICAgIHB1YmxpYyB2b2lkIG15U2luZ2xlQ2xpY2soaW50IHRhYikgew0KICAgICAgICAgLy9U
T0RPOiBzaG91bGQgZmlyZSBpdHMgb3duIGV2ZW50IGFuZCBQcm9qZWN0QnJvd3Nlcg0KICAgICAg
ICAgLy9zaG91bGQgcmVnaXN0ZXIgYSBsaXN0ZW5lcg0KLSAgICAgICAgTE9HLmRlYnVnKCJzaW5n
bGU6ICIgKyB0YWJzLmdldENvbXBvbmVudEF0KHRhYikudG9TdHJpbmcoKSk7DQorICAgICAgICBM
T0cubG9nKExldmVsLkZJTkUsICJzaW5nbGU6IHswfSIsIHRhYnMuZ2V0Q29tcG9uZW50QXQodGFi
KS50b1N0cmluZygpKTsNCiAgICAgfQ0KIA0KICAgICAvKioNCkBAIC0zMzMsNyArMzM3LDcgQEAN
CiAgICAgcHVibGljIHZvaWQgbXlEb3VibGVDbGljayhpbnQgdGFiKSB7DQogICAgICAgICAvL1RP
RE86IHNob3VsZCBmaXJlIGl0cyBvd24gZXZlbnQgYW5kIFByb2plY3RCcm93c2VyDQogICAgICAg
ICAvL3Nob3VsZCByZWdpc3RlciBhIGxpc3RlbmVyDQotICAgICAgICBMT0cuZGVidWcoImRvdWJs
ZTogIiArIHRhYnMuZ2V0Q29tcG9uZW50QXQodGFiKS50b1N0cmluZygpKTsNCisgICAgICAgIExP
Ry5sb2coTGV2ZWwuRklORSwgImRvdWJsZTogezB9IiwgdGFicy5nZXRDb21wb25lbnRBdCh0YWIp
LnRvU3RyaW5nKCkpOw0KIC8vICAgICAgICBKUGFuZWwgdCA9IChKUGFuZWwpIHRhYlBhbmVscy5l
bGVtZW50QXQodGFiKTsNCiAgICAgICAgIC8vIEN1cnJlbnRseSB0aGlzIGZlYXR1cmUgaXMgZGlz
YWJsZWQgZm9yIEFyZ29VTUwuDQogLy8gICAgICAgIGlmICh0IGluc3RhbmNlb2YgQWJzdHJhY3RB
cmdvSlBhbmVsKQ0KQEAgLTM3NCw0ICszNzgsMyBAQA0KICAgICB9DQogDQogfQ0KLQ0KDQpNb2Rp
ZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9Qcm9qZWN0QnJv
d3Nlci5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9h
cmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvUHJvamVjdEJy
b3dzZXIuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91aS9Qcm9qZWN0QnJvd3Nlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1Byb2plY3RCcm93c2VyLmphdmEJMjAxMi0xMi0z
MCAwNTowNjowMS0wODAwDQpAQCAtNjcsNiArNjcsOCBAQA0KIGltcG9ydCBqYXZhLnV0aWwuTGlz
dDsNCiBpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsNCiBpbXBvcnQgamF2YS51dGlsLk1hcDsNCitp
bXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5n
LkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuQWJzdHJhY3RBY3Rpb247DQogaW1wb3J0
IGphdmF4LnN3aW5nLkltYWdlSWNvbjsNCkBAIC03OSw3ICs4MSw2IEBADQogaW1wb3J0IGphdmF4
LnN3aW5nLkpUb29sQmFyOw0KIGltcG9ydCBqYXZheC5zd2luZy5Td2luZ1V0aWxpdGllczsNCiAN
Ci1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFw
cGxpY2F0aW9uLmFwaS5BYnN0cmFjdEFyZ29KUGFuZWw7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFw
cGxpY2F0aW9uLmFwaS5BcmdvOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5ldmVu
dHMuQXJnb0V2ZW50UHVtcDsNCkBAIC0xNTIsNyArMTUzLDcgQEANCiAgICAgICogTG9nZ2VyLg0K
ICAgICAgKi8NCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQotICAgICAg
ICBMb2dnZXIuZ2V0TG9nZ2VyKFByb2plY3RCcm93c2VyLmNsYXNzKTsNCisgICAgICAgIExvZ2dl
ci5nZXRMb2dnZXIoUHJvamVjdEJyb3dzZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiANCiAgICAg
LyoqDQpAQCAtMTYyLDE1ICsxNjMsMTUgQEANCiAgICAgICAgIENlbnRlciwgTm9ydGgsIFNvdXRo
LCBFYXN0LCBXZXN0LA0KICAgICAgICAgTm9ydGhFYXN0LCBTb3V0aEVhc3QsIFNvdXRoV2VzdCwg
Tm9ydGhXZXN0DQogICAgIH0NCi0gICAgDQorDQogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29ycmVz
cG9uZGVuY2UgdGhhdCB3ZSBkZXBlbmQgb24gZG9lc24ndCBjaGFuZ2UNCiAgICAgc3RhdGljIHsN
CiAgICAgICAgIGFzc2VydCBQb3NpdGlvbi5DZW50ZXIudG9TdHJpbmcoKS5lcXVhbHMoQm9yZGVy
U3BsaXRQYW5lLkNFTlRFUik7DQotICAgICAgICBhc3NlcnQgUG9zaXRpb24uTm9ydGgudG9TdHJp
bmcoKS5lcXVhbHMoQm9yZGVyU3BsaXRQYW5lLk5PUlRIKTsgDQotICAgICAgICBhc3NlcnQgUG9z
aXRpb24uTm9ydGhFYXN0LnRvU3RyaW5nKCkuZXF1YWxzKEJvcmRlclNwbGl0UGFuZS5OT1JUSEVB
U1QpOyANCi0gICAgICAgIGFzc2VydCBQb3NpdGlvbi5Tb3V0aC50b1N0cmluZygpLmVxdWFscyhC
b3JkZXJTcGxpdFBhbmUuU09VVEgpOyANCisgICAgICAgIGFzc2VydCBQb3NpdGlvbi5Ob3J0aC50
b1N0cmluZygpLmVxdWFscyhCb3JkZXJTcGxpdFBhbmUuTk9SVEgpOw0KKyAgICAgICAgYXNzZXJ0
IFBvc2l0aW9uLk5vcnRoRWFzdC50b1N0cmluZygpLmVxdWFscyhCb3JkZXJTcGxpdFBhbmUuTk9S
VEhFQVNUKTsNCisgICAgICAgIGFzc2VydCBQb3NpdGlvbi5Tb3V0aC50b1N0cmluZygpLmVxdWFs
cyhCb3JkZXJTcGxpdFBhbmUuU09VVEgpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAg
ICAgICogRmxhZyB0byBpbmRpY2F0ZSBpZiB3ZSBhcmUgdGhlIG1haW4gYXBwbGljYXRpb24NCiAg
ICAgICogb3IgYmVpbmcgaW50ZWdyYXRlZCBpbiBhbm90aGVyIHRvcCBsZXZlbCBhcHBsaWNhdGlv
biBzdWNoDQpAQCAtMjAyLDcgKzIwMyw3IEBADQogICAgIHByaXZhdGUgRGV0YWlsc1BhbmUgc291
dGhFYXN0UGFuZTsNCiAgICAgcHJpdmF0ZSBEZXRhaWxzUGFuZSBzb3V0aFBhbmU7DQogDQotICAg
IHByaXZhdGUgTWFwPFBvc2l0aW9uLCBEZXRhaWxzUGFuZT4gZGV0YWlsc1BhbmVzQnlDb21wYXNz
UG9pbnQgPSANCisgICAgcHJpdmF0ZSBNYXA8UG9zaXRpb24sIERldGFpbHNQYW5lPiBkZXRhaWxz
UGFuZXNCeUNvbXBhc3NQb2ludCA9DQogICAgICAgICBuZXcgSGFzaE1hcDxQb3NpdGlvbiwgRGV0
YWlsc1BhbmU+KCk7DQogDQogICAgIHByaXZhdGUgR2VuZXJpY0FyZ29NZW51QmFyIG1lbnVCYXI7
DQpAQCAtMjM1LDcgKzIzNiw3IEBADQogICAgIHByaXZhdGUgSlBhbmVsIHRvZG9QYW5lOw0KIA0K
ICAgICAvKioNCi0gICAgICogQSBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlIHRpdGxlIG9mIHRoaXMg
ZnJhbWUsIA0KKyAgICAgKiBBIGNsYXNzIHRoYXQgaGFuZGxlcyB0aGUgdGl0bGUgb2YgdGhpcyBm
cmFtZSwNCiAgICAgICogZS5nLiB0byBpbmRpY2F0ZSBzYXZlIHN0YXR1cy4NCiAgICAgICovDQog
ICAgIHByaXZhdGUgVGl0bGVIYW5kbGVyIHRpdGxlSGFuZGxlciA9IG5ldyBUaXRsZUhhbmRsZXIo
KTsNCkBAIC0yNjIsNyArMjYzLDcgQEANCiANCiAgICAgLyoqDQogICAgICAqIFRoZSBjb25zdHJ1
Y3Rvci4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBhcHBsaWNhdGlvbk5hbWUN
CiAgICAgICogICAgICAgICAgICB0aGUgdGl0bGUgb2YgdGhlIGZyYW1lDQogICAgICAqIEBwYXJh
bSBzcGxhc2gNCkBAIC0yNzAsMTcgKzI3MSwxNyBAQA0KICAgICAgKiBAcGFyYW0gbWFpbkFwcGxp
Y2F0aW9uDQogICAgICAqICAgICAgICAgICAgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgd2UgYXJl
IHRoZSB0b3AgbGV2ZWwgYXBwbGljYXRpb24uDQogICAgICAqICAgICAgICAgICAgRmFsc2UgaWYg
d2UgYXJlIHByb3ZpZGluZyBjb21wb25lbnRzIHRvIGFub3RoZXIgdG9wIGxldmVsIGFwcC4NCi0g
ICAgICogQHBhcmFtIGxlZnRCb3R0b21QYW5lIA0KKyAgICAgKiBAcGFyYW0gbGVmdEJvdHRvbVBh
bmUNCiAgICAgICogICAgICAgICAgICB0aGUgcGFuZWwgdG8gZml0IGluIHRoZSBsZWZ0IGJvdHRv
bSBjb3JuZXINCiAgICAgICovDQotICAgIHByaXZhdGUgUHJvamVjdEJyb3dzZXIoU3RyaW5nIGFw
cGxpY2F0aW9uTmFtZSwgU3BsYXNoU2NyZWVuIHNwbGFzaCwgDQorICAgIHByaXZhdGUgUHJvamVj
dEJyb3dzZXIoU3RyaW5nIGFwcGxpY2F0aW9uTmFtZSwgU3BsYXNoU2NyZWVuIHNwbGFzaCwNCiAg
ICAgICAgICAgICAgYm9vbGVhbiBtYWluQXBwbGljYXRpb24sIEpQYW5lbCBsZWZ0Qm90dG9tUGFu
ZSkgew0KICAgICAgICAgc3VwZXIoYXBwbGljYXRpb25OYW1lKTsNCiAgICAgICAgIHRoZUluc3Rh
bmNlID0gdGhpczsNCiAgICAgICAgIGlzTWFpbkFwcGxpY2F0aW9uID0gbWFpbkFwcGxpY2F0aW9u
Ow0KLSAgICAgICAgDQorDQogICAgICAgICBnZXRDb250ZW50UGFuZSgpLnNldEZvbnQoZGVmYXVs
dEZvbnQpOw0KLSAgICAgICAgDQorDQogICAgICAgICAvLyBUT0RPOiBUaGlzIGNhdXNlcyBhIGN5
Y2xpYyBkZXBlbmNlbmN5IHdpdGggQWN0aW9uU2F2ZVByb2plY3QNCiAgICAgICAgIHNhdmVBY3Rp
b24gPSBuZXcgQWN0aW9uU2F2ZVByb2plY3QoKTsNCiAgICAgICAgIFByb2plY3RNYW5hZ2VyLmdl
dE1hbmFnZXIoKS5zZXRTYXZlQWN0aW9uKHNhdmVBY3Rpb24pOw0KQEAgLTMwNSw3ICszMDYsNyBA
QA0KICAgICAgICAgICAgIC8vIGFsbG93cyBtZSB0byBhc2sgIkRvIHlvdSB3YW50IHRvIHNhdmUg
Zmlyc3Q/Ig0KICAgICAgICAgICAgIHNldERlZmF1bHRDbG9zZU9wZXJhdGlvbihQcm9qZWN0QnJv
d3Nlci5ET19OT1RISU5HX09OX0NMT1NFKTsNCiAgICAgICAgICAgICBhZGRXaW5kb3dMaXN0ZW5l
cihuZXcgV2luZG93Q2xvc2VyKCkpOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgIHNl
dEFwcGxpY2F0aW9uSWNvbigpOw0KIA0KICAgICAgICAgICAgIC8vIEFkZCBsaXN0ZW5lciBmb3Ig
cHJvamVjdCBjaGFuZ2VzDQpAQCAtMzQzLDcgKzM0NCw3IEBADQogICAgICAgICAgICAgICAgICAg
ICAvLyBmaWVsZCBpcyBhYm91dCB0byBzdGFydC4NCiAgICAgICAgICAgICAgICAgICAgIC8vIE5v
dCBhIGdvb2QgYXNzdW1wdGlvbi4gV2UgTmVlZCB0byBzZWUgaWYgd2UgY2FuIGdldA0KICAgICAg
ICAgICAgICAgICAgICAgLy8gcmlkIG9mIHRoaXMuDQotICAgICAgICAgICAgICAgICAgICBQcm9q
ZWN0IHAgPSANCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcCA9DQogICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvamVjdE1hbmFnZXIuZ2V0TWFuYWdlcigpLmdldEN1cnJlbnRQcm9qZWN0
KCk7DQogICAgICAgICAgICAgICAgICAgICBpZiAocCAhPSBudWxsKSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgcC5nZXRVbmRvTWFuYWdlcigpLnN0YXJ0SW50ZXJhY3Rpb24oIkZvY3VzIik7
DQpAQCAtMzYwLDIwICszNjEsMjAgQEANCiAgICAgcHJpdmF0ZSB2b2lkIHNldEFwcGxpY2F0aW9u
SWNvbigpIHsNCiAgICAgICAgIGZpbmFsIEltYWdlSWNvbiBhcmdvSW1hZ2UxNngxNiA9DQogICAg
ICAgICAgICAgUmVzb3VyY2VMb2FkZXJXcmFwcGVyLmxvb2t1cEljb25SZXNvdXJjZSgiQXJnb0lj
b24xNngxNiIpOw0KLSAgICAgICAgDQorDQogICAgICAgICBmaW5hbCBJbWFnZUljb24gYXJnb0lt
YWdlMzJ4MzIgPSBSZXNvdXJjZUxvYWRlcldyYXBwZXINCiAgICAgICAgICAgICAgICAgLmxvb2t1
cEljb25SZXNvdXJjZSgiQXJnb0ljb24zMngzMiIpOw0KICAgICAgICAgZmluYWwgTGlzdDxJbWFn
ZT4gYXJnb0ltYWdlcyA9IG5ldyBBcnJheUxpc3Q8SW1hZ2U+KDIpOw0KICAgICAgICAgYXJnb0lt
YWdlcy5hZGQoYXJnb0ltYWdlMTZ4MTYuZ2V0SW1hZ2UoKSk7DQogICAgICAgICBhcmdvSW1hZ2Vz
LmFkZChhcmdvSW1hZ2UzMngzMi5nZXRJbWFnZSgpKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAg
c2V0SWNvbkltYWdlcyhhcmdvSW1hZ2VzKTsNCiAgICAgfQ0KIA0KICAgICAvKioNCiAgICAgICog
U2luZ2xldG9uIHJldHJpZXZhbCBtZXRob2QgZm9yIHRoZSBwcm9qZWN0YnJvd3Nlci4NCiAgICAg
ICogRG8gbm90IHVzZSB0aGlzIGJlZm9yZSBtYWtlSW5zdGFuY2UgaXMgY2FsbGVkIQ0KLSAgICAg
KiAgDQorICAgICAqDQogICAgICAqIEByZXR1cm4gdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0
aGUgcHJvamVjdGJyb3dzZXINCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25p
emVkIFByb2plY3RCcm93c2VyIGdldEluc3RhbmNlKCkgew0KQEAgLTM4NSwxOSArMzg2LDE5IEBA
DQogICAgICAqIENyZWF0b3IgbWV0aG9kIGZvciB0aGUgUHJvamVjdEJyb3dzZXIgd2hpY2ggb3B0
aW9uYWxseSBhbGxvd3MgYWxsDQogICAgICAqIGNvbXBvbmVudHMgdG8gYmUgY3JlYXRlZCB3aXRo
b3V0IG1ha2luZyBhIHRvcCBsZXZlbCBhcHBsaWNhdGlvbiB3aW5kb3cNCiAgICAgICogdmlzaWJs
ZS4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBzcGxhc2gNCiAgICAgICogICAg
ICAgICAgICB0cnVlIGlmIHdlIGFyZSBhbGxvd2VkIHRvIHNob3cgYSBzcGxhc2ggc2NyZWVuDQog
ICAgICAqIEBwYXJhbSBtYWluQXBwbGljYXRpb24NCiAgICAgICogICAgICAgICAgICB0cnVlIHRv
IGNyZWF0ZSBhIHRvcCBsZXZlbCBhcHBsaWNhdGlvbiwgZmFsc2UgaWYgaW50ZWdyYXRlZA0KICAg
ICAgKiAgICAgICAgICAgIHdpdGggc29tZXRoaW5nIGVsc2UuDQogICAgICAqIEBwYXJhbSBsZWZ0
Qm90dG9tUGFuZSBwYW5lbCB0byBwbGFjZSBpbiB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIHRo
ZSBHVUkNCi0gICAgICogDQorICAgICAqDQogICAgICAqIEByZXR1cm4gdGhlIHNpbmdsZXRvbiBp
bnN0YW5jZSBvZiB0aGUgcHJvamVjdGJyb3dzZXINCiAgICAgICovDQogICAgIHB1YmxpYyBzdGF0
aWMgUHJvamVjdEJyb3dzZXIgbWFrZUluc3RhbmNlKFNwbGFzaFNjcmVlbiBzcGxhc2gsDQogICAg
ICAgICAgICAgYm9vbGVhbiBtYWluQXBwbGljYXRpb24sIEpQYW5lbCBsZWZ0Qm90dG9tUGFuZSkg
ew0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9qZWN0QnJvd3NlcigiQXJnb1VNTCIsIHNwbGFzaCwg
DQorICAgICAgICByZXR1cm4gbmV3IFByb2plY3RCcm93c2VyKCJBcmdvVU1MIiwgc3BsYXNoLA0K
ICAgICAgICAgICAgICAgICBtYWluQXBwbGljYXRpb24sIGxlZnRCb3R0b21QYW5lKTsNCiAgICAg
fQ0KIA0KQEAgLTQyNSw3ICs0MjYsNyBAQA0KICAgICAgICAgICAgIHNwbGFzaC5nZXRTdGF0dXNC
YXIoKS5zaG93UHJvZ3Jlc3MoMTApOw0KICAgICAgICAgICAgIHNwbGFzaC5zZXRWaXNpYmxlKHRy
dWUpOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBlZGl0b3JQYW5lID0gbmV3
IE11bHRpRWRpdG9yUGFuZSgpOw0KICAgICAgICAgaWYgKHNwbGFzaCAhPSBudWxsKSB7DQogICAg
ICAgICAgICAgc3BsYXNoLmdldFN0YXR1c0JhcigpLnNob3dTdGF0dXMoDQpAQCAtNDYwLDEyICs0
NjEsMTIgQEANCiAgICAgICAgIC8vIFRoZXJlIGFyZSB2YXJpb3VzIGRldGFpbHMgcGFuZXMgYWxs
IG9mIHdoaWNoIGNvdWxkIGhvbGQNCiAgICAgICAgIC8vIGRpZmZlcmVudCB0YWJzIHBhZ2VzIGFj
Y29yZGluZyB0byB1c2VycyBzZXR0aW5ncy4NCiAgICAgICAgIC8vIFBsYWNlIGVhY2ggcGFuZSBp
biB0aGUgcmVxdWlyZWQgYm9yZGVyIGFyZWEuDQotICAgICAgICBmb3IgKE1hcC5FbnRyeTxQb3Np
dGlvbiwgRGV0YWlsc1BhbmU+IGVudHJ5IA0KKyAgICAgICAgZm9yIChNYXAuRW50cnk8UG9zaXRp
b24sIERldGFpbHNQYW5lPiBlbnRyeQ0KICAgICAgICAgICAgICAgICA6IGRldGFpbHNQYW5lc0J5
Q29tcGFzc1BvaW50LmVudHJ5U2V0KCkpIHsNCiAgICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlv
biA9IGVudHJ5LmdldEtleSgpOw0KICAgICAgICAgICAgIGFkZFBhbmVsKGVudHJ5LmdldFZhbHVl
KCksIHBvc2l0aW9uKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgLy8gVG9v
bGJhciBib3VuZGFyeSBpcyB0aGUgYXJlYSBiZXR3ZWVuIHRoZSBtZW51IGFuZCB0aGUgc3RhdHVz
DQogICAgICAgICAvLyBiYXIuIEl0IGNvbnRhaW5zIHRoZSB3b3JrYXJlYSBhdCBjZW50cmUgYW5k
IHRoZSB0b29sYmFyDQogICAgICAgICAvLyBwb3NpdGlvbiBub3J0aCwgc291dGgsIGVhc3Qgb3Ig
d2VzdC4NCkBAIC01OTQsNyArNTk1LDcgQEANCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KLSAgICAN
CisNCiAgICAgLyoqDQogICAgICAqIEFkZCBhIHBhbmVsIHRvIGEgc3BsaXQgcGFuZSBhcmVhLg0K
ICAgICAgKg0KQEAgLTY2OSwxNCArNjcwLDE0IEBADQogICAgIHByaXZhdGUgaW50IGdldFNhdmVk
SGVpZ2h0KENvbmZpZ3VyYXRpb25LZXkgaGVpZ2h0KSB7DQogICAgICAgICByZXR1cm4gQ29uZmln
dXJhdGlvbi5nZXRJbnRlZ2VyKGhlaWdodCwgREVGQVVMVF9DT01QT05FTlRIRUlHSFQpOw0KICAg
ICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogSGFuZGxlIHRoZSB0aXRsZS1iYXIgb2Yg
dGhlIHdpbmRvdy4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBhdXRob3IgbWljaGllbA0K
ICAgICAgKi8NCiAgICAgcHJpdmF0ZSBjbGFzcyBUaXRsZUhhbmRsZXIgaW1wbGVtZW50cyBQcm9w
ZXJ0eUNoYW5nZUxpc3RlbmVyIHsNCi0gICAgICAgIA0KKw0KICAgICAgICAgcHJpdmF0ZSBBcmdv
RGlhZ3JhbSBtb25pdG9yZWREaWFncmFtID0gbnVsbDsNCiANCiAgICAgICAgIC8qKg0KQEAgLTY4
NSw3ICs2ODYsNyBAQA0KICAgICAgICAgICogQHBhcmFtIHByb2plY3RGaWxlTmFtZSB0aGUgcHJv
amVjdC1maWxlIG5hbWUNCiAgICAgICAgICAqIEBwYXJhbSBhY3RpdmVEaWFncmFtIHRoZSAobmV3
KSBjdXJyZW50IGRpYWdyYW0NCiAgICAgICAgICAqLw0KLSAgICAgICAgcHJvdGVjdGVkIHZvaWQg
YnVpbGRUaXRsZShTdHJpbmcgcHJvamVjdEZpbGVOYW1lLCANCisgICAgICAgIHByb3RlY3RlZCB2
b2lkIGJ1aWxkVGl0bGUoU3RyaW5nIHByb2plY3RGaWxlTmFtZSwNCiAgICAgICAgICAgICAgICAg
QXJnb0RpYWdyYW0gYWN0aXZlRGlhZ3JhbSkgew0KICAgICAgICAgICAgIGlmIChwcm9qZWN0Rmls
ZU5hbWUgPT0gbnVsbCB8fCAiIi5lcXVhbHMocHJvamVjdEZpbGVOYW1lKSkgew0KICAgICAgICAg
ICAgICAgICBpZiAoUHJvamVjdE1hbmFnZXIuZ2V0TWFuYWdlcigpLmdldEN1cnJlbnRQcm9qZWN0
KCkgIT0gbnVsbCkgew0KQEAgLTcxMSwxMSArNzEyLDExIEBADQogICAgICAgICAgICAgICAgICAg
ICAgICAgKyBhY3RpdmVEaWFncmFtLmdldE5hbWUoKSArICIgLSAiICsgZ2V0QXBwTmFtZSgpDQog
ICAgICAgICAgICAgICAgICAgICAgICAgKyBjaGFuZ2VJbmRpY2F0b3IpOw0KICAgICAgICAgICAg
IH0gZWxzZSB7DQotICAgICAgICAgICAgICAgIHNldFRpdGxlSW50ZXJuYWwocHJvamVjdEZpbGVO
YW1lICsgIiAtICIgKyBnZXRBcHBOYW1lKCkgDQorICAgICAgICAgICAgICAgIHNldFRpdGxlSW50
ZXJuYWwocHJvamVjdEZpbGVOYW1lICsgIiAtICIgKyBnZXRBcHBOYW1lKCkNCiAgICAgICAgICAg
ICAgICAgICAgICAgICArIGNoYW5nZUluZGljYXRvcik7DQogICAgICAgICAgICAgfQ0KICAgICAg
ICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBwcml2YXRlIHZvaWQgc2V0VGl0bGVJbnRlcm5h
bChmaW5hbCBTdHJpbmcgdGl0bGUpIHsNCiAgICAgICAgICAgICBpZiAoU3dpbmdVdGlsaXRpZXMu
aXNFdmVudERpc3BhdGNoVGhyZWFkKCkpIHsNCiAgICAgICAgICAgICAgICAgc2V0VGl0bGUodGl0
bGUpOw0KQEAgLTcyNyw3ICs3MjgsNyBAQA0KICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAg
ICAgICB9DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIC8qDQogICAgICAgICAg
KiBAc2VlIGphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciNwcm9wZXJ0eUNoYW5nZShq
YXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQpDQogICAgICAgICAgKi8NCkBAIC03MzUsOSAr
NzM2LDkgQEANCiAgICAgICAgICAgICBpZiAoZXZ0LmdldFByb3BlcnR5TmFtZSgpLmVxdWFscygi
bmFtZSIpDQogICAgICAgICAgICAgICAgICAgICAmJiBldnQuZ2V0U291cmNlKCkgaW5zdGFuY2Vv
ZiBBcmdvRGlhZ3JhbSkgew0KICAgICAgICAgICAgICAgICBidWlsZFRpdGxlKA0KLSAgICAgICAg
ICAgICAgICAgICAgUHJvamVjdE1hbmFnZXIuZ2V0TWFuYWdlcigpLmdldEN1cnJlbnRQcm9qZWN0
KCkuZ2V0TmFtZSgpLCANCisgICAgICAgICAgICAgICAgICAgIFByb2plY3RNYW5hZ2VyLmdldE1h
bmFnZXIoKS5nZXRDdXJyZW50UHJvamVjdCgpLmdldE5hbWUoKSwNCiAgICAgICAgICAgICAgICAg
ICAgIChBcmdvRGlhZ3JhbSkgZXZ0LmdldFNvdXJjZSgpKTsNCi0gICAgICAgICAgICB9ICAgICAg
ICAgICAgDQorICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9DQogICAgIC8qKg0KQEAg
LTc4Miw3ICs3ODMsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogU2VsZWN0IHRoZSB0YWIgcGFn
ZSBjb250YWluaW5nIHRoZSB0b2RvIGl0ZW0uDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBA
cGFyYW0gbyB0aGUgdG9kbyBpdGVtIHRvIHNlbGVjdA0KICAgICAgKiBAZGVwcmVjYXRlZCBmb3Ig
MC4yNS41IGJ5IHRmbW9ycmlzLiBTZW5kIGFuIGV2ZW50IHRoYXQgdGhlDQogICAgICAqICAgICAg
ICAgICAgIERldGFpbHNQYW5lL1RhYlRvRG8gd2lsbCBiZSBsaXN0ZW5pbmcgZm9yLg0KQEAgLTgw
MSw3ICs4MDIsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICogR2V0IHRoZSB0YWIgcGFnZSBpbnN0
YW5jZSBvZiB0aGUgZ2l2ZW4gY2xhc3MuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFy
YW0gdGFiQ2xhc3MgdGhlIGdpdmVuIGNsYXNzDQogICAgICAqIEByZXR1cm4gdGhlIHRhYnBhZ2UN
CiAgICAgICogQGRlcHJlY2F0ZWQgYnkgZm9yIDAuMjUuNSBieSB0Zm1vcnJpcy4gVGFicyBzaG91
bGQgcmVnaXN0ZXIgdGhlbXNlbHZlcw0KQEAgLTg1Myw3ICs4NTQsNyBAQA0KICAgICBwdWJsaWMg
TmF2aWdhdG9yUGFuZSBnZXRFeHBsb3JlclBhbmUoKSB7DQogICAgICAgICByZXR1cm4gZXhwbG9y
ZXJQYW5lOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogQHJldHVybiB0aGUg
ZGV0YWlscyBwYW5lDQogICAgICAqLw0KQEAgLTkyMyw3ICs5MjQsNyBAQA0KICAgICAgICAgICAg
IENvbmZpZ3VyYXRpb24uc2V0SW50ZWdlcihBcmdvLktFWV9TQ1JFRU5fTEVGVF9YLCBnZXRYKCkp
Ow0KICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uc2V0SW50ZWdlcihBcmdvLktFWV9TQ1JFRU5f
VE9QX1ksIGdldFkoKSk7DQogICAgICAgICB9DQotICAgICAgICBDb25maWd1cmF0aW9uLnNldEJv
b2xlYW4oQXJnby5LRVlfU0NSRUVOX01BWElNSVpFRCwgDQorICAgICAgICBDb25maWd1cmF0aW9u
LnNldEJvb2xlYW4oQXJnby5LRVlfU0NSRUVOX01BWElNSVpFRCwNCiAgICAgICAgICAgICAgICAg
bWF4aW1pemVkKTsNCiAgICAgfQ0KIA0KQEAgLTk1MSw5ICs5NTIsOSBAQA0KICAgICAgKiBzYXZl
IGFuZCBleGl0LCBleGl0IHdpdGhvdXQgc2F2aW5nIG9yIGNhbmNlbCB0aGUgZXhpdCBvcGVyYXRp
b24uDQogICAgICAqLw0KICAgICBwdWJsaWMgYm9vbGVhbiB0cnlFeGl0KCkgew0KLSAgICAgICAg
TE9HLmluZm8oIlRyeWluZyB0byBleGl0IHRoZSBhcHBsaWNhdGlvbiIpOw0KKyAgICAgICAgTE9H
LmxvZyhMZXZlbC5JTkZPLCAiVHJ5aW5nIHRvIGV4aXQgdGhlIGFwcGxpY2F0aW9uIik7DQogICAg
ICAgICBpZiAoc2F2ZUFjdGlvbiAhPSBudWxsICYmIHNhdmVBY3Rpb24uaXNFbmFibGVkKCkpIHsN
Ci0gICAgICAgICAgICBMT0cuaW5mbygiQSBzYXZlIGlzIG5lZWRlZCAtIHByb21wdGluZyB0aGUg
dXNlciIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIkEgc2F2ZSBpcyBuZWVk
ZWQgLSBwcm9tcHRpbmcgdGhlIHVzZXIiKTsNCiAgICAgICAgICAgICBQcm9qZWN0IHAgPSBQcm9q
ZWN0TWFuYWdlci5nZXRNYW5hZ2VyKCkuZ2V0Q3VycmVudFByb2plY3QoKTsNCiANCiAgICAgICAg
ICAgICBTdHJpbmcgdCA9DQpAQCAtOTY4LDIzICs5NjksMjMgQEANCiAgICAgICAgICAgICAgICAg
Ly8gVGhlIHRyeVNhdmUgbWV0aG9kIHJlc3VsdHMgaW4gdGhlIHNhdmUgdGFraW5nIHBsYWNlIGlu
IGFub3RoZXIgdGhyZWFkLg0KICAgICAgICAgICAgICAgICAvLyBJZiB0aGF0IGNvbXBsZXRlcyB3
aXRob3V0IGVycm9yIHRoZSBQcm9qZWN0QnJvd3Nlci5leGl0KCkgbWV0aG9kIHdpbGwNCiAgICAg
ICAgICAgICAgICAgLy8gYmUgY2FsbGVkIHdoaWNoIHdpbGwgYWN0dWFsbHkgZXhpc3QgdGhlIHN5
c3RlbS4NCi0gICAgICAgICAgICAgICAgTE9HLmluZm8oIlRoZSB1c2VyIGNob3NlIHRvIGV4aXQg
YW5kIHNhdmUiKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiVGhlIHVz
ZXIgY2hvc2UgdG8gZXhpdCBhbmQgc2F2ZSIpOw0KICAgICAgICAgICAgICAgICB0cnlTYXZlKFBy
b2plY3RNYW5hZ2VyLmdldE1hbmFnZXIoKS5nZXRDdXJyZW50UHJvamVjdCgpICE9IG51bGwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBQcm9qZWN0TWFuYWdlci5nZXRNYW5hZ2VyKCkuZ2V0
Q3VycmVudFByb2plY3QoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFVS
SSgpICE9IG51bGwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1
ZSk7DQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHJlc3BvbnNlID09IEpPcHRpb25QYW5lLkNBTkNFTF9PUFRJT04pIHsNCi0gICAgICAgICAg
ICAgICAgTE9HLmluZm8oIlRoZSB1c2VyIGNhbmNlbGxlZCB0aGUgc2F2ZSBkaWFsb2ciKTsNCisg
ICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAiVGhlIHVzZXIgY2FuY2VsbGVkIHRo
ZSBzYXZlIGRpYWxvZyIpOw0KICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
ICAgICAgfQ0KICAgICAgICAgfQ0KLSAgICAgICAgTE9HLmluZm8oIldlIHdpbGwgbm93IGV4aXQi
KTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIldlIHdpbGwgbm93IGV4aXQiKTsNCiAg
ICAgICAgIGV4aXQoKTsNCiAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICB9DQotICAgIA0KLSAg
ICANCisNCisNCiAgICAgLyoqDQogICAgICAqIEV4aXQgdGhlIGFwcGxpY2F0aW9uIHNhdmluZyB0
aGUgY3VycmVudCB1c2VyIHNldHRpbmdzLg0KICAgICAgKi8NCkBAIC0xMDE1LDcgKzEwMTYsOSBA
QA0KICAgICAgICAgICogQHNlZSBqYXZhLmF3dC5ldmVudC5XaW5kb3dMaXN0ZW5lciN3aW5kb3dD
bG9zaW5nKGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50KQ0KICAgICAgICAgICovDQogICAgICAg
ICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsNCi0gICAgICAgICAg
ICBMT0cuaW5mbygiRGV0ZWN0ZWQgYXR0ZW1wdCB0byBjbG9zZSBhcHBsaWNhdGlvbiAtIGNoZWNr
aW5nIGlmIHNhdmUgbmVlZGVkIik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLA0K
KyAgICAgICAgICAgICAgICAgICAgIkRldGVjdGVkIGF0dGVtcHQgdG8gY2xvc2UgYXBwbGljYXRp
b24gLSAiDQorICAgICAgICAgICAgICAgICAgICArICJjaGVja2luZyBpZiBzYXZlIG5lZWRlZCIp
Ow0KICAgICAgICAgICAgIHRyeUV4aXQoKTsNCiAgICAgICAgIH0NCiAgICAgfSAvKiBlbmQgY2xh
c3MgV2luZG93Q2xvc2VyICovDQpAQCAtMTA2Niw3ICsxMDY5LDcgQEANCiAgICAgcHVibGljIHZv
aWQgdGFyZ2V0U2V0KFRhcmdldEV2ZW50IGUpIHsNCiAgICAgCXRhcmdldENoYW5nZWQoZS5nZXRO
ZXdUYXJnZXQoKSk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBDYWxsZWQg
dG8gdXBkYXRlIHRoZSBjdXJyZW50IG5hbWVzcGFjZSBhbmQgYWN0aXZlIGRpYWdyYW0gYWZ0ZXIN
CiAgICAgICogdGhlIHRhcmdldCBoYXMgY2hhbmdlZC4NCkBAIC0xMDc4LDkgKzEwODEsOSBAQA0K
ICAgICAgICAgICAgIHRpdGxlSGFuZGxlci5idWlsZFRpdGxlKG51bGwsIChBcmdvRGlhZ3JhbSkg
dGFyZ2V0KTsNCiAgICAgICAgIH0NCiAgICAgICAgIGRldGVybWluZVJlbW92ZUVuYWJsZWQoKTsN
Ci0gICAgICAgIA0KKw0KICAgICAgICAgUHJvamVjdCBwID0gUHJvamVjdE1hbmFnZXIuZ2V0TWFu
YWdlcigpLmdldEN1cnJlbnRQcm9qZWN0KCk7DQotICAgICAgICANCisNCiAgICAgICAgIE9iamVj
dCB0aGVDdXJyZW50TmFtZXNwYWNlID0gbnVsbDsNCiAgICAgICAgIHRhcmdldCA9IFRhcmdldE1h
bmFnZXIuZ2V0SW5zdGFuY2UoKS5nZXRUYXJnZXQoKTsNCiAgICAgICAgIGlmICh0YXJnZXQgaW5z
dGFuY2VvZiBBcmdvRGlhZ3JhbSkgew0KQEAgLTExMjksNyArMTEzMiw3IEBADQogICAgIHB1Ymxp
YyBGb250IGdldERlZmF1bHRGb250KCkgew0KICAgICAgICAgcmV0dXJuIGRlZmF1bHRGb250Ow0K
ICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVHJ5IHRvIHNhdmUgdGhlIHByb2pl
Y3QsIHBvc3NpYmx5IG5vdCBjcmVhdGluZyBhIG5ldyBmaWxlDQogICAgICAqIEBwYXJhbSBvdmVy
d3JpdGUgaWYgdHJ1ZSwgdGhlbiB3ZSBvdmVyd3JpdGUgd2l0aG91dCBhc2tpbmcNCkBAIC0xMTM3
LDE3ICsxMTQwLDE3IEBADQogICAgIHB1YmxpYyB2b2lkIHRyeVNhdmUoYm9vbGVhbiBvdmVyd3Jp
dGUpIHsNCiAgICAgICAgIHRoaXMudHJ5U2F2ZShvdmVyd3JpdGUsIGZhbHNlKTsNCiAgICAgfQ0K
LSAgICANCisNCiAgICAgLyoqDQogICAgICAqIFRyeSB0byBzYXZlIHRoZSBwcm9qZWN0Lg0KICAg
ICAgKiBAcGFyYW0gb3ZlcndyaXRlIGlmIHRydWUsIHRoZW4gd2Ugb3ZlcndyaXRlIHdpdGhvdXQg
YXNraW5nDQogICAgICAqIEBwYXJhbSBzYXZlTmV3RmlsZSBpZiB0cnVlLCB3ZSdsbCBhc2sgZm9y
IGEgbmV3IGZpbGUgZXZlbiBpZg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJl
bnQgcHJvamVjdCBhbHJlYWR5IGhhZCBvbmUgIA0KLSAgICAgKi8gICAgICAgIA0KKyAgICAgKiAg
ICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgcHJvamVjdCBhbHJlYWR5IGhhZCBvbmUNCisg
ICAgICovDQogICAgIHB1YmxpYyB2b2lkIHRyeVNhdmUoYm9vbGVhbiBvdmVyd3JpdGUsIGJvb2xl
YW4gc2F2ZU5ld0ZpbGUpIHsNCiAgICAgICAgIHRyeVNhdmUob3ZlcndyaXRlLCBzYXZlTmV3Rmls
ZSwgZmFsc2UpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVHJ5IHRvIHNh
dmUgdGhlIHByb2plY3QuDQogICAgICAqIEBwYXJhbSBvdmVyd3JpdGUgaWYgdHJ1ZSwgdGhlbiB3
ZSBvdmVyd3JpdGUgd2l0aG91dCBhc2tpbmcNCkBAIC0xMTU1LDcgKzExNTgsNyBAQA0KICAgICAg
KiAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgcHJvamVjdCBhbHJlYWR5IGhhZCBvbmUN
CiAgICAgICogQHBhcmFtIGV4aXRBZnRlclNhdmUgVGhlIGFwcGxpY2F0aW9uIHdpbGwgZXhpdCB3
aGVuIHRoZSBzYXZlIGhhcw0KICAgICAgKiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5DQotICAgICAq
LyAgICAgICAgDQorICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCB0cnlTYXZlKA0KICAgICAgICAg
ICAgIGZpbmFsIGJvb2xlYW4gb3ZlcndyaXRlLA0KICAgICAgICAgICAgIGJvb2xlYW4gc2F2ZU5l
d0ZpbGUsDQpAQCAtMTE3MSw3ICsxMTc0LDcgQEANCiANCiAgICAgICAgICAgICAvLyBkb2VzIHRo
ZSBmaWxlIHJlYWxseSBleGlzdHM/DQogICAgICAgICAgICAgaWYgKCFmaWxlLmV4aXN0cygpKSB7
DQotICAgICAgICAgICAgICAgIExPRy53YXJuKCJQcm9qZWN0IGZpbGUgbm90IGZvdW5kIC0gVVJJ
OiAiICsgdXJpKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAiUHJv
amVjdCBmaWxlIG5vdCBmb3VuZCAtIFVSSTogIiArIHVyaSk7DQogICAgICAgICAgICAgICAgIC8v
IHByb2plY3QgZmlsZSBkb2Vzbid0IGV4aXN0LiBsZXQncyBwb3AgdXAgYSBtZXNzYWdlIGRpYWxv
Zy4uDQogICAgICAgICAgICAgICAgIGludCByZXNwb25zZSA9IEpPcHRpb25QYW5lLnNob3dDb25m
aXJtRGlhbG9nKA0KICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsDQpAQCAtMTIwOSw3ICsx
MjEyLDcgQEANCiAgICAgICAgIC8vIGxldCdzIGNhbGwgdGhlIHJlYWwgc2F2ZSBtZXRob2QNCiAg
ICAgICAgIHRyeVNhdmVXaXRoUHJvZ3Jlc3NNb25pdG9yKG92ZXJ3cml0ZSwgZmlsZSwgZXhpdEFm
dGVyU2F2ZSk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBDaGVja3MgaWYg
dGhlIGdpdmVuIGZpbGUgaXMgd3JpdGFibGUgb3IgcmVhZC1vbmx5DQogICAgICAqIEBwYXJhbSBm
aWxlIHRoZSBmaWxlIHRvIGJlIGNoZWNrZWQNCkBAIC0xMjE3LDIxICsxMjIwLDIxIEBADQogICAg
ICAqLw0KICAgICBwcml2YXRlIGJvb2xlYW4gaXNGaWxlUmVhZG9ubHkoRmlsZSBmaWxlKSB7DQog
ICAgICAgICB0cnkgew0KLSAgICAgICAgICAgIHJldHVybiAoZmlsZSA9PSBudWxsKSANCi0gICAg
ICAgICAgICAgICAgfHwgKGZpbGUuZXhpc3RzKCkgJiYgIWZpbGUuY2FuV3JpdGUoKSkgDQorICAg
ICAgICAgICAgcmV0dXJuIChmaWxlID09IG51bGwpDQorICAgICAgICAgICAgICAgIHx8IChmaWxl
LmV4aXN0cygpICYmICFmaWxlLmNhbldyaXRlKCkpDQogICAgICAgICAgICAgICAgIHx8ICghZmls
ZS5leGlzdHMoKSAmJiAhZmlsZS5jcmVhdGVOZXdGaWxlKCkpOw0KLSAgICAgICAgDQorDQogICAg
ICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb0V4Yykgew0KICAgICAgICAgICAgIHJldHVybiB0
cnVlOw0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogTG9h
ZHMgYSBwcm9qZWN0IGRpc3BsYXlpbmcgYSBuaWNlIFByb2dyZXNzTW9uaXRvcg0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogQHBhcmFtIG92ZXJ3cml0ZSBpZiB0cnVlLCB0aGUgZmlsZSBpcyBn
b2luZyB0byBiZSBvdmVyd3JpdHRlbg0KICAgICAgKiBAcGFyYW0gZmlsZSAgICAgIHRoZSB0YXJn
ZXQgZmlsZQ0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogVE9ETzogU2VwYXJhdGUgdGhpcyBp
bnRvIGEgU3dpbmcgc3BlY2lmaWMgY2xhc3MgLSB0Zm0NCiAgICAgICogQHBhcmFtIGV4aXQgaWYg
dHJ1ZTogZXhpdCBBcmdvVU1MIHdoZW4gZG9uZQ0KICAgICAgKi8NCkBAIC0xMjQ0LDcgKzEyNDcs
NyBAQA0KICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmICh0aGlz
LmlzRmlsZVJlYWRvbmx5KGZpbGUpKSB7DQotICAgICAgICAgICAgSk9wdGlvblBhbmUuc2hvd01l
c3NhZ2VEaWFsb2codGhpcywgDQorICAgICAgICAgICAgSk9wdGlvblBhbmUuc2hvd01lc3NhZ2VE
aWFsb2codGhpcywNCiAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb25wYW5lLnNhdmUtcHJvamVjdC1yZWFk
LW9ubHkiKSwNCiAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoDQpAQCAt
MTI1Nyw0MyArMTI2MCw0MyBAQA0KICAgICAgICAgICAgICAgICBQcm9qZWN0TWFuYWdlci5nZXRN
YW5hZ2VyKCkuZ2V0Q3VycmVudFByb2plY3QoKSwNCiAgICAgICAgICAgICAgICAgZmlsZSwNCiAg
ICAgICAgICAgICAgICAgZXhpdCk7DQotICAgICAgICBMT0cuaW5mbygiU3RhcnRpbmcgc2F2ZSB0
aHJlYWQiKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIlN0YXJ0aW5nIHNhdmUgdGhy
ZWFkIik7DQogICAgICAgICB3b3JrZXIuc3RhcnQoKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAg
LyoqDQogICAgICAqIFJlYnVpbGQgdGhlIHRpdGxlIHVzaW5nIHRoZSBuYW1lIG9mIHRoZSBjdXJy
ZW50IHByb2plY3QuDQogICAgICAqDQogICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBidWlsZFRp
dGxlV2l0aEN1cnJlbnRQcm9qZWN0TmFtZSgpIHsNCiAgICAgICAgIHRpdGxlSGFuZGxlci5idWls
ZFRpdGxlKA0KLSAgICAgICAgICAgICAgICBQcm9qZWN0TWFuYWdlci5nZXRNYW5hZ2VyKCkuZ2V0
Q3VycmVudFByb2plY3QoKS5nZXROYW1lKCksIA0KKyAgICAgICAgICAgICAgICBQcm9qZWN0TWFu
YWdlci5nZXRNYW5hZ2VyKCkuZ2V0Q3VycmVudFByb2plY3QoKS5nZXROYW1lKCksDQogICAgICAg
ICAgICAgICAgIG51bGwpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogVHJ5
IHRvIHNhdmUgdGhlIHByb2plY3QuDQogICAgICAqIEBwYXJhbSBvdmVyd3JpdGUgaWYgdHJ1ZSwg
dGhlbiB3ZSBvdmVyd3JpdGUgd2l0aG91dCBhc2tpbmcNCiAgICAgICogQHBhcmFtIGZpbGUgdGhl
IEZpbGUgdG8gc2F2ZSB0bw0KLSAgICAgKiBAcGFyYW0gcG13ICAgICAgIHRoZSBQcm9ncmVzc01v
bml0b3IgdG8gYmUgdXBkYXRlZDsgIA0KKyAgICAgKiBAcGFyYW0gcG13ICAgICAgIHRoZSBQcm9n
cmVzc01vbml0b3IgdG8gYmUgdXBkYXRlZDsNCiAgICAgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nl
c3NmdWwNCi0gICAgICogDQorICAgICAqDQogICAgICAqIFRPRE86IFNlcGFyYXRlIHRoaXMgaW50
byBhIFN3aW5nIHNwZWNpZmljIGNsYXNzIC0gdGZtDQogICAgICAqIEBkZXByZWNhdGVkIGluIDAu
MjkuMSBieSBCb2IgVGFybGluZyB1c2UgdHJ5U2F2ZVdpdGhQcm9ncmVzc01vbml0b3INCiAgICAg
ICovDQogICAgIEBEZXByZWNhdGVkDQotICAgIHB1YmxpYyBib29sZWFuIHRyeVNhdmUoYm9vbGVh
biBvdmVyd3JpdGUsIA0KLSAgICAgICAgICAgIEZpbGUgZmlsZSwgDQorICAgIHB1YmxpYyBib29s
ZWFuIHRyeVNhdmUoYm9vbGVhbiBvdmVyd3JpdGUsDQorICAgICAgICAgICAgRmlsZSBmaWxlLA0K
ICAgICAgICAgICAgIFByb2dyZXNzTW9uaXRvciBwbXcpIHsNCi0gICAgICAgIExPRy5pbmZvKCJT
YXZpbmcgdGhlIHByb2plY3QiKTsNCi0gICAgICAgIA0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5J
TkZPLCAiU2F2aW5nIHRoZSBwcm9qZWN0Iik7DQorDQogICAgICAgICBpZiAoIVBlcnNpc3RlbmNl
TWFuYWdlci5nZXRJbnN0YW5jZSgpLmNvbmZpcm1PdmVyd3JpdGUoDQogICAgICAgICAgICAgICAg
IEFyZ29GcmFtZS5nZXRGcmFtZSgpLCBvdmVyd3JpdGUsIGZpbGUpKSB7DQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBpZiAodGhp
cy5pc0ZpbGVSZWFkb25seShmaWxlKSkgew0KLSAgICAgICAgICAgIEpPcHRpb25QYW5lLnNob3dN
ZXNzYWdlRGlhbG9nKHRoaXMsIA0KKyAgICAgICAgICAgIEpPcHRpb25QYW5lLnNob3dNZXNzYWdl
RGlhbG9nKHRoaXMsDQogICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9ucGFuZS5zYXZlLXByb2plY3QtcmVh
ZC1vbmx5IiksDQogICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKA0KQEAg
LTEzMDksMTYgKzEzMTIsMTYgQEANCiAgICAgLyoqDQogICAgICAqIFNhdmUgdGhlIHByb2plY3Qu
DQogICAgICAqIEBwYXJhbSBmaWxlIHRoZSBGaWxlIHRvIHNhdmUgdG8NCi0gICAgICogQHBhcmFt
IHBtdyAgICAgICB0aGUgUHJvZ3Jlc3NNb25pdG9yIHRvIGJlIHVwZGF0ZWQ7ICANCisgICAgICog
QHBhcmFtIHBtdyAgICAgICB0aGUgUHJvZ3Jlc3NNb25pdG9yIHRvIGJlIHVwZGF0ZWQ7DQogICAg
ICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsDQotICAgICAqIA0KKyAgICAgKg0KICAgICAg
KiBUT0RPOiBTZXBhcmF0ZSB0aGlzIGludG8gYSBTd2luZyBzcGVjaWZpYyBjbGFzcyAtIHRmbQ0K
ICAgICAgKi8NCiAgICAgYm9vbGVhbiB0cnlTYXZlKA0KLSAgICAgICAgICAgIGZpbmFsIEZpbGUg
ZmlsZSwgDQorICAgICAgICAgICAgZmluYWwgRmlsZSBmaWxlLA0KICAgICAgICAgICAgIGZpbmFs
IFByb2dyZXNzTW9uaXRvciBwbXcsDQogICAgICAgICAgICAgZmluYWwgUHJvamVjdCBwcm9qZWN0
KSB7DQotICAgICAgICBMT0cuaW5mbygiU2F2aW5nIHRoZSBwcm9qZWN0Iik7DQorICAgICAgICBM
T0cubG9nKExldmVsLklORk8sICJTYXZpbmcgdGhlIHByb2plY3QiKTsNCiAgICAgICAgIFBlcnNp
c3RlbmNlTWFuYWdlciBwbSA9IFBlcnNpc3RlbmNlTWFuYWdlci5nZXRJbnN0YW5jZSgpOw0KICAg
ICAgICAgUHJvamVjdEZpbGVQZXJzaXN0ZXIgcGVyc2lzdGVyID0gbnVsbDsNCiANCkBAIC0xMzQ1
LDI5ICsxMzQ4LDI5IEBADQogICAgICAgICAgICAgU3RyaW5nIHJlcG9ydCA9IHByb2plY3QucmVw
YWlyKCk7DQogICAgICAgICAgICAgaWYgKHJlcG9ydC5sZW5ndGgoKSA+IDApIHsNCiAgICAgICAg
ICAgICAgICAgLy8gVE9ETzogaTE4bg0KLSAgICAgICAgICAgICAgICByZXBvcnQgPSANCisgICAg
ICAgICAgICAgICAgcmVwb3J0ID0NCiAgICAgICAgICAgICAgICAgICAgICJBbiBpbmNvbnNpc3Rl
bmN5IGhhcyBiZWVuIGRldGVjdGVkIHdoZW4gc2F2aW5nIHRoZSBtb2RlbC4iDQogICAgICAgICAg
ICAgICAgICAgICAgICAgKyAiVGhlc2UgaGF2ZSBiZWVuIHJlcGFpcmVkIGFuZCBhcmUgcmVwb3J0
ZWQgYmVsb3cuICINCiAgICAgICAgICAgICAgICAgICAgICAgICArICJUaGUgc2F2ZSB3aWxsIGNv
bnRpbnVlIHdpdGggdGhlIG1vZGVsIGhhdmluZyBiZWVuICINCiAgICAgICAgICAgICAgICAgICAg
ICAgICArICJhbWVuZGVkIGFzIGRlc2NyaWJlZC5cbiIgKyByZXBvcnQ7DQogICAgICAgICAgICAg
ICAgIHJlcG9ydEVycm9yKA0KLSAgICAgICAgICAgICAgICAgICAgICAgIHBtdywgDQorICAgICAg
ICAgICAgICAgICAgICAgICAgcG13LA0KICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0
b3IubG9jYWxpemUoImRpYWxvZy5yZXBhaXIiKSArIHJlcG9ydCwgdHJ1ZSk7DQogICAgICAgICAg
ICAgfQ0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgIGlmIChwbXcgIT0gbnVsbCkgew0K
ICAgICAgICAgICAgICAgICBwbXcudXBkYXRlUHJvZ3Jlc3MoMjUpOw0KICAgICAgICAgICAgICAg
ICBwZXJzaXN0ZXIuYWRkUHJvZ3Jlc3NMaXN0ZW5lcihwbXcpOw0KICAgICAgICAgICAgIH0NCi0g
ICAgICAgICAgICANCisNCiAgICAgICAgICAgICBwcm9qZWN0LnByZVNhdmUoKTsNCiAgICAgICAg
ICAgICBwZXJzaXN0ZXIuc2F2ZShwcm9qZWN0LCBmaWxlKTsNCiAgICAgICAgICAgICBwcm9qZWN0
LnBvc3RTYXZlKCk7DQogDQogICAgICAgICAgICAgQXJnb0V2ZW50UHVtcC5maXJlRXZlbnQobmV3
IEFyZ29TdGF0dXNFdmVudCgNCi0gICAgICAgICAgICAgICAgICAgIEFyZ29FdmVudFR5cGVzLlNU
QVRVU19QUk9KRUNUX1NBVkVELCB0aGlzLCANCisgICAgICAgICAgICAgICAgICAgIEFyZ29FdmVu
dFR5cGVzLlNUQVRVU19QUk9KRUNUX1NBVkVELCB0aGlzLA0KICAgICAgICAgICAgICAgICAgICAg
ZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSkpOw0KLSAgICAgICAgICAgIExPRy5kZWJ1ZyAoInNldHRp
bmcgbW9zdCByZWNlbnQgcHJvamVjdCBmaWxlIHRvICINCisgICAgICAgICAgICBMT0cuZmluZSAo
InNldHRpbmcgbW9zdCByZWNlbnQgcHJvamVjdCBmaWxlIHRvICINCiAgICAgICAgICAgICAgICAg
ICAgKyBmaWxlLmdldENhbm9uaWNhbFBhdGgoKSk7DQogDQogICAgICAgICAgICAgLyoNCkBAIC0x
MzgxLDcgKzEzODQsNyBAQA0KICAgICAgICAgICAgICAgICAvLyB0aGF0IGNhbiBuZXZlciBiZSBu
dWxsDQogICAgICAgICAgICAgICAgIHNhdmVBY3Rpb24uc2V0RW5hYmxlZChmYWxzZSk7DQogICAg
ICAgICAgICAgfQ0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgIGFkZEZpbGVTYXZlZChm
aWxlKTsNCiANCiAgICAgICAgICAgICBDb25maWd1cmF0aW9uLnNldFN0cmluZyhBcmdvLktFWV9N
T1NUX1JFQ0VOVF9QUk9KRUNUX0ZJTEUsDQpAQCAtMTQwNiw3ICsxNDA5LDcgQEANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHtmaWxlLmdldE5hbWUoKX0pLA0KICAg
ICAgICAgICAgICAgICAgICAgdHJ1ZSwgZXgpOw0KIA0KLSAgICAgICAgICAgIExPRy5lcnJvcihz
TWVzc2FnZSwgZXgpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLHNNZXNzYWdl
LCBleCk7DQogICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gZmFsc2U7DQpAQCAtMTQyNSw3
ICsxNDI4LDcgQEANCiAgICAgICAgICAgICAvLyBBIEZpZyB3aXRoIGEgbnVsbCBvd25lcg0KICAg
ICAgICAgICAgIGlmIChmaWdzLnNpemUoKSA+IDApIHsNCiAgICAgICAgICAgICAgICAgRmlnIGZp
ZyA9IChGaWcpIGZpZ3MuZ2V0KDApOw0KLSAgICAgICAgICAgICAgICBMT0cuZXJyb3IoIlNldHRp
bmcgb3duZXIgb2YgIiANCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJT
ZXR0aW5nIG93bmVyIG9mICINCiAgICAgICAgICAgICAgICAgICAgICAgICArIGZpZy5nZXRDbGFz
cygpLmdldE5hbWUoKSArICIgdG8gbnVsbCIpOw0KICAgICAgICAgICAgICAgICBmaWcuc2V0T3du
ZXIobnVsbCk7DQogICAgICAgICAgICAgfQ0KQEAgLTE0OTksMTAgKzE1MDIsMTAgQEANCiANCiAg
ICAgLyoqDQogICAgICAqIExvYWRzIGEgcHJvamVjdCBkaXNwbGF5aW5nIGEgbmljZSBQcm9ncmVz
c01vbml0b3INCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBmaWxlICAgICAgdGhl
IHByb2plY3QgdG8gYmUgb3BlbmVkDQogICAgICAqIEBwYXJhbSBzaG93VUkgICAgd2hldGhlciB0
byBzaG93IHRoZSBHVUkgb3Igbm90DQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBUT0RPOiBU
aGlzIG5lZWRzIHRvIGJlIHJlZmFjdG9yZWQgdG8gYmUgR1VJIGluZGVwZW5kZW50IC0gdGZtDQog
ICAgICAqLw0KICAgICBwdWJsaWMgdm9pZCBsb2FkUHJvamVjdFdpdGhQcm9ncmVzc01vbml0b3Io
RmlsZSBmaWxlLCBib29sZWFuIHNob3dVSSkgew0KQEAgLTE1MTgsMTcgKzE1MjEsMTcgQEANCiAg
ICAgICogQHBhcmFtIGZpbGUgdGhlIGZpbGUgdG8gb3Blbi4NCiAgICAgICogQHBhcmFtIHNob3dV
SSB0cnVlIGlmIGFuIGVycm9yIG1lc3NhZ2UgbWF5IGJlIHNob3duIHRvIHRoZSB1c2VyLA0KICAg
ICAgKiAgICAgICAgICAgICAgIGZhbHNlIGlmIHJ1biBpbiBjb21tYW5kbGluZSBtb2RlDQotICAg
ICAqIEBwYXJhbSBwbXcgICAgICAgdGhlIFByb2dyZXNzTW9uaXRvciB0byBiZSB1cGRhdGVkOyAg
DQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmVlZGVkLCB1c2UgbnVs
bCANCisgICAgICogQHBhcmFtIHBtdyAgICAgICB0aGUgUHJvZ3Jlc3NNb25pdG9yIHRvIGJlIHVw
ZGF0ZWQ7DQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmVlZGVkLCB1
c2UgbnVsbA0KICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGZpbGUgd2FzIHN1Y2Nlc3NmdWxs
eSBvcGVuZWQNCi0gICAgICogDQorICAgICAqDQogICAgICAqIFRPRE86IFNlcGFyYXRlIHRoaXMg
aW50byBhIFN3aW5nIHNwZWNpZmljIGNsYXNzIC0gdGZtDQogICAgICAqLw0KLSAgICBwdWJsaWMg
Ym9vbGVhbiBsb2FkUHJvamVjdChGaWxlIGZpbGUsIGJvb2xlYW4gc2hvd1VJLCANCisgICAgcHVi
bGljIGJvb2xlYW4gbG9hZFByb2plY3QoRmlsZSBmaWxlLCBib29sZWFuIHNob3dVSSwNCiAgICAg
ICAgICAgICBQcm9ncmVzc01vbml0b3IgcG13KSB7DQogICAgICAgICByZXR1cm4gKGxvYWRQcm9q
ZWN0MihmaWxlLCBzaG93VUksIHBtdykgIT0gbnVsbCk7DQogICAgIH0NCi0gICAgDQorDQogICAg
IC8qKg0KICAgICAgKiBMb2FkcyB0aGUgcHJvamVjdCBmaWxlIGFuZCBvcGVucyBhbGwga2luZHMg
b2YgZXJyb3IgbWVzc2FnZSB3aW5kb3dzDQogICAgICAqIGlmIGl0IGRvZXNuJ3Qgd29yayBmb3Ig
c29tZSByZWFzb24uIEluIHRob3NlIGNhc2VzIGl0IHByZXNlcnZlcw0KQEAgLTE1MzcsMTYgKzE1
NDAsMTYgQEANCiAgICAgICogQHBhcmFtIGZpbGUgdGhlIGZpbGUgdG8gb3Blbi4NCiAgICAgICog
QHBhcmFtIHNob3dVSSB0cnVlIGlmIGFuIGVycm9yIG1lc3NhZ2UgbWF5IGJlIHNob3duIHRvIHRo
ZSB1c2VyLA0KICAgICAgKiAgICAgICAgICAgICAgIGZhbHNlIGlmIHJ1biBpbiBjb21tYW5kbGlu
ZSBtb2RlDQotICAgICAqIEBwYXJhbSBwbXcgCXRoZSBQcm9ncmVzc01vbml0b3IgdG8gYmUgdXBk
YXRlZDsgIA0KLSAgICAgKiAJCQkJaWYgbm90IG5lZWRlZCwgdXNlIG51bGwgDQorICAgICAqIEBw
YXJhbSBwbXcgCXRoZSBQcm9ncmVzc01vbml0b3IgdG8gYmUgdXBkYXRlZDsNCisgICAgICogCQkJ
CWlmIG5vdCBuZWVkZWQsIHVzZSBudWxsDQogICAgICAqIEByZXR1cm4gcHJvamVjdCB0aGUgcHJv
amVjdCB0aGF0IHdhcyBjcmVhdGVkIGJhc2VkIG9uIHRoZSBmaWxlIHRoYXQgd2FzDQogICAgICAq
ICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkgb3BlbmVkDQotICAgICAqIA0KKyAgICAgKg0K
ICAgICAgKiBUT0RPOiBTZXBhcmF0ZSB0aGlzIGludG8gYSBTd2luZyBzcGVjaWZpYyBjbGFzcyAt
IHRmbQ0KICAgICAgKi8NCi0gICAgcHVibGljIFByb2plY3QgbG9hZFByb2plY3QyKEZpbGUgZmls
ZSwgYm9vbGVhbiBzaG93VUksIA0KKyAgICBwdWJsaWMgUHJvamVjdCBsb2FkUHJvamVjdDIoRmls
ZSBmaWxlLCBib29sZWFuIHNob3dVSSwNCiAgICAgICAgICAgICBQcm9ncmVzc01vbml0b3IgcG13
KSB7DQotICAgICAgICBMT0cuaW5mbygiTG9hZGluZyBwcm9qZWN0LiIpOw0KKyAgICAgICAgTE9H
LmxvZyhMZXZlbC5JTkZPLCAiTG9hZGluZyBwcm9qZWN0LiIpOw0KIA0KICAgICAgICAgUGVyc2lz
dGVuY2VNYW5hZ2VyIHBtID0gUGVyc2lzdGVuY2VNYW5hZ2VyLmdldEluc3RhbmNlKCk7DQogICAg
ICAgICBQcm9qZWN0IG9sZFByb2plY3QgPSBQcm9qZWN0TWFuYWdlci5nZXRNYW5hZ2VyKCkuZ2V0
Q3VycmVudFByb2plY3QoKTsNCkBAIC0xNTU5LDcgKzE1NjIsNyBAQA0KICAgICAgICAgICAgIFBy
b2plY3RNYW5hZ2VyLmdldE1hbmFnZXIoKS5yZW1vdmVQcm9qZWN0KG9sZFByb2plY3QpOw0KICAg
ICAgICAgICAgIG9sZFByb2plY3QgPSBwOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAg
ICAgICBib29sZWFuIHN1Y2Nlc3MgPSBmYWxzZTsNCiANCiAgICAgICAgIC8vIFRPRE86DQpAQCAt
MTU5OSw3ICsxNjAyLDcgQEANCiAgICAgICAgICAgICAgICAgaWYgKHBtdyAhPSBudWxsKSB7DQog
ICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZXIuYWRkUHJvZ3Jlc3NMaXN0ZW5lcihwbXcpOw0K
ICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIA0KKw0KIA0KICAgICAgICAgICAg
ICAgICBwcm9qZWN0ID0gcGVyc2lzdGVyLmRvTG9hZChmaWxlKTsNCiANCkBAIC0xNjA3LDcgKzE2
MTAsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdGVyLnJlbW92ZVByb2dyZXNzTGlz
dGVuZXIocG13KTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICBUaHJlYWRV
dGlscy5jaGVja0lmSW50ZXJydXB0ZWQoKTsNCi0gICAgICAgICAgICAgICAgDQorDQogLy8gICAg
ICAgICAgICAgICAgaWYgKE1vZGVsLmdldERpYWdyYW1JbnRlcmNoYW5nZU1vZGVsKCkgIT0gbnVs
bCkgew0KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGFzc3VtZXMgbm8gbW9yZSB0aGFu
IG9uZSBwcm9qZWN0IGF0IGEgdGltZQ0KICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGxvYWRl
ZC4gIElmIGl0IGlzIGV2ZXIgcmVpbnN0aXR1dGVkLCB0aGlzIG5lZWRzIHRvDQpAQCAtMTYzMCw3
ICsxNjMzLDcgQEANCiAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmls
ZQ0KICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uLnNldFN0cmluZyhBcmdvLktFWV9NT1NU
X1JFQ0VOVF9QUk9KRUNUX0ZJTEUsDQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5nZXRD
YW5vbmljYWxQYXRoKCkpOw0KLSAgICAgICAgICAgICAgICANCisNCiAgICAgICAgICAgICAgICAg
dXBkYXRlU3RhdHVzKA0KICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxp
emUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzbXNnLmJhci5vcGVu
LXByb2plY3Qtc3RhdHVzLXJlYWQiLA0KQEAgLTE2NDQsMTMgKzE2NDcsMTQgQEANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7ZXguZ2V0TWVzc2FnZSgpfSks
DQogICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VJKTsNCiAgICAgICAgICAgICB9IGNhdGNo
IChPdXRPZk1lbW9yeUVycm9yIGV4KSB7DQotICAgICAgICAgICAgICAgIExPRy5lcnJvcigiT3V0
IG9mIG1lbW9yeSB3aGlsZSBsb2FkaW5nIHByb2plY3QiLCBleCk7DQorICAgICAgICAgICAgICAg
IExPRy5sb2coTGV2ZWwuU0VWRVJFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICJPdXQgb2Yg
bWVtb3J5IHdoaWxlIGxvYWRpbmcgcHJvamVjdCIsIGV4KTsNCiAgICAgICAgICAgICAgICAgcmVw
b3J0RXJyb3IoDQogICAgICAgICAgICAgICAgICAgICAgICAgcG13LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoImRpYWxvZy5lcnJvci5tZW1vcnkubGltaXQi
KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VUkpOw0KICAgICAgICAgICAgIH0gY2F0
Y2ggKGphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiBleCkgew0KLSAgICAgICAgICAgICAg
ICBMT0cuZXJyb3IoIlByb2plY3QgbG9hZGluZyBpbnRlcnJ1cHRlZCBieSB1c2VyIik7DQorICAg
ICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiUHJvamVjdCBsb2FkaW5nIGludGVy
cnVwdGVkIGJ5IHVzZXIiKTsNCiAgICAgICAgICAgICB9IGNhdGNoIChVbWxWZXJzaW9uRXhjZXB0
aW9uIGV4KSB7DQogICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKA0KICAgICAgICAgICAgICAg
ICAgICAgICAgIHBtdywNCkBAIC0xNjYyLDcgKzE2NjYsNyBAQA0KICAgICAgICAgICAgICAgICBp
ZiAoZXguZ2V0Q2F1c2UoKSBpbnN0YW5jZW9mIFhtaVJlZmVyZW5jZUV4Y2VwdGlvbikgew0KICAg
ICAgICAgICAgICAgICAgICAgLy8gYW4gZXJyb3IgdGhhdCBjYW4gYmUgY29ycmVjdGVkIGJ5IHRo
ZSB1c2VyLCBzbyBubyBzdGFjaw0KICAgICAgICAgICAgICAgICAgICAgLy8gdHJhY2UsIGJ1dCBp
bnN0ZWFkIGFuIGV4cGxhbmF0aW9uIGFuZCBhIGhpbnQgaG93IHRvIGZpeA0KLSAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nIHJlZmVyZW5jZSA9IA0KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5n
IHJlZmVyZW5jZSA9DQogICAgICAgICAgICAgICAgICAgICAgICAgKChYbWlSZWZlcmVuY2VFeGNl
cHRpb24pIGV4LmdldENhdXNlKCkpLmdldFJlZmVyZW5jZSgpOw0KICAgICAgICAgICAgICAgICAg
ICAgcmVwb3J0RXJyb3IoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtdywNCkBAIC0x
NjgwLDcgKzE2ODQsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3dVSSwgZXgpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfSBjYXRjaCAoSU9F
eGNlcHRpb24gZXgpIHsNCi0gICAgICAgICAgICAgICAgTE9HLmVycm9yKCJFeGNlcHRpb24gd2hp
bGUgbG9hZGluZyBwcm9qZWN0IiwgZXgpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVs
LlNFVkVSRSwgIkV4Y2VwdGlvbiB3aGlsZSBsb2FkaW5nIHByb2plY3QiLCBleCk7DQogICAgICAg
ICAgICAgICAgIHJlcG9ydEVycm9yKA0KICAgICAgICAgICAgICAgICAgICAgICAgIHBtdywNCiAg
ICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKA0KQEAgLTE2ODgsNyAr
MTY5Miw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10g
e2ZpbGUuZ2V0TmFtZSgpfSksDQogICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VJLCBleCk7
DQogICAgICAgICAgICAgfSBjYXRjaCAoT3BlbkV4Y2VwdGlvbiBleCkgew0KLSAgICAgICAgICAg
ICAgICBMT0cuZXJyb3IoIkV4Y2VwdGlvbiB3aGlsZSBsb2FkaW5nIHByb2plY3QiLCBleCk7DQor
ICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXhjZXB0aW9uIHdoaWxlIGxv
YWRpbmcgcHJvamVjdCIsIGV4KTsNCiAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoDQogICAg
ICAgICAgICAgICAgICAgICAgICAgcG13LA0KICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5z
bGF0b3IubG9jYWxpemUoDQpAQCAtMTcwMyw3ICsxNzA3LDcgQEANCiAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgT2JqZWN0W10ge2V4LmdldFJlZmVyZW5jZSgpLCBleC5nZXRNZXNzYWdlKCl9
KSwNCiAgICAgICAgICAgICAgICAgICAgIGV4LnRvU3RyaW5nKCksIHNob3dVSSk7DQogICAgICAg
ICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgew0KLSAgICAgICAgICAgICAgICBM
T0cuZXJyb3IoIkV4Y2VwdGlvbiB3aGlsZSBsb2FkaW5nIHByb2plY3QiLCBleCk7DQorICAgICAg
ICAgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXhjZXB0aW9uIHdoaWxlIGxvYWRpbmcg
cHJvamVjdCIsIGV4KTsNCiAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoDQogICAgICAgICAg
ICAgICAgICAgICAgICAgcG13LA0KICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3Iu
bG9jYWxpemUoDQpAQCAtMTcxNCwxNiArMTcxOCwxNiBAQA0KIA0KICAgICAgICAgICAgICAgICB0
cnkgew0KICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7DQotICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvamVjdCA9IA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Qg
PQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0TWFuYWdlci5nZXRNYW5hZ2Vy
KCkubWFrZUVtcHR5UHJvamVjdCgpOw0KICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgUHJvamVjdE1hbmFnZXIuZ2V0TWFuYWdlcigpLnNldEN1cnJlbnRQcm9qZWN0
KHByb2plY3QpOw0KICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFByb2plY3QgIT0gbnVsbCkg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3RNYW5hZ2VyLmdldE1hbmFnZXIoKS5y
ZW1vdmVQcm9qZWN0KG9sZFByb2plY3QpOw0KICAgICAgICAgICAgICAgICAgICAgfQ0KLSAgICAg
ICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LmdldFByb2pl
Y3RTZXR0aW5ncygpLmluaXQoKTsNCi0gICAgICAgICAgICAgICAgICAgIA0KKw0KICAgICAgICAg
ICAgICAgICAgICAgQ29tbWFuZCBjbWQgPSBuZXcgTm9uVW5kb2FibGVDb21tYW5kKCkgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgZXhlY3V0ZSgpIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0ZW1wb3JhcnkuIExvYWQgcHJvamVjdA0K
QEAgLTE3MzUsMTQgKzE3MzksMTUgQEANCiAgICAgICAgICAgICAgICAgICAgIH07DQogICAgICAg
ICAgICAgICAgICAgICBwcm9qZWN0LmdldFVuZG9NYW5hZ2VyKCkuYWRkQ29tbWFuZChjbWQpOw0K
IA0KLSAgICAgICAgICAgICAgICAgICAgTE9HLmluZm8oIlRoZXJlIGFyZSAiICsgcHJvamVjdC5n
ZXREaWFncmFtTGlzdCgpLnNpemUoKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIg
ZGlhZ3JhbXMgaW4gdGhlIGN1cnJlbnQgcHJvamVjdCIpOw0KKyAgICAgICAgICAgICAgICAgICAg
TE9HLmxvZyhMZXZlbC5JTkZPLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlcmUg
YXJlIHswfSBkaWFncmFtcyBpbiB0aGUgY3VycmVudCBwcm9qZWN0IiwNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvamVjdC5nZXREaWFncmFtTGlzdCgpLnNpemUoKSk7DQogDQogICAg
ICAgICAgICAgICAgICAgICBEZXNpZ25lci5lbmFibGVDcml0aXF1aW5nKCk7DQogICAgICAgICAg
ICAgICAgIH0gZmluYWxseSB7DQogICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgc2F2
ZSBhY3Rpb24gaXMgYWx3YXlzIHJlaW5zdGF0ZWQNCiAgICAgICAgICAgICAgICAgICAgIHRoaXMu
c2F2ZUFjdGlvbiA9IHJlbWVtYmVyZWRTYXZlQWN0aW9uOw0KLSAgICAgICAgICAgICAgICAgICAg
DQorDQogICAgICAgICAgICAgICAgICAgICAvLyBXZSBjbGVhciB0aGUgc2F2ZS1yZXF1aXJlZCBm
bGFnIG9uIHRoZSBTd2luZyBldmVudCB0aHJlYWQNCiAgICAgICAgICAgICAgICAgICAgIC8vIGlu
IHRoZSBob3BlcyB0aGF0IGl0IGdldHMgZG9uZSBhZnRlciBhbnkgb3RoZXIgYmFja2dyb3VuZA0K
ICAgICAgICAgICAgICAgICAgICAgLy8gd29yayAobGlzdGVuZXIgdXBkYXRlcykgdGhhdCBpcyBi
ZWluZyBkb25lIHRoZXJlDQpAQCAtMTc3NCw3ICsxNzc5LDcgQEANCiAgICAgICAgIGlmIChzaG93
VUkpIHsNCiAgICAgICAgICAgICBpZiAobW9uaXRvciAhPSBudWxsKSB7DQogICAgICAgICAgICAg
ICAgIG1vbml0b3Iubm90aWZ5TWVzc2FnZSgNCi0gICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2xhdG9yLmxvY2FsaXplKCJkaWFsb2cuZXJyb3IudGl0bGUiKSwgDQorICAgICAgICAgICAgICAg
ICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgiZGlhbG9nLmVycm9yLnRpdGxlIiksDQogICAg
ICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgiZGlhbG9nLmVycm9yLm9w
ZW4uc2F2ZS5lcnJvciIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOw0KICAg
ICAgICAgICAgIH0gZWxzZSB7DQpAQCAtMTgxMCw3ICsxODE1LDcgQEANCiAgICAgICAgICAgICBp
ZiAobW9uaXRvciAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgIG1vbml0b3Iubm90aWZ5TWVz
c2FnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdG9yLmxvY2FsaXplKCJkaWFs
b2cuZXJyb3IudGl0bGUiKSwNCi0gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCANCisg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLA0KICAgICAgICAgICAgICAgICAgICAgICAg
IEV4Y2VwdGlvbkRpYWxvZy5mb3JtYXRFeGNlcHRpb24oDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlLCBleCwgZXggaW5zdGFuY2VvZiBPcGVuRXhjZXB0aW9uKSk7DQog
ICAgICAgICAgICAgfSBlbHNlIHsNCkBAIC0xODIwLDcgKzE4MjUsNyBAQA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgRXhjZXB0aW9uRGlhbG9nKA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFyZ29GcmFtZS5nZXRGcmFtZSgpLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0b3IubG9jYWxpemUoImRpYWxvZy5lcnJvci50
aXRsZSIpLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsIA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uRGlhbG9nLmZvcm1hdEV4Y2VwdGlv
bigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlLCBleCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleCBpbnN0YW5jZW9mIE9wZW5FeGNlcHRpb24pKTsNCkBAIC0xOTE3LDcgKzE5MjIsNyBAQA0K
IA0KICAgICAgICAgSkZpbGVDaG9vc2VyIGNob29zZXIgPSBudWxsOw0KICAgICAgICAgVVJJIHVy
aSA9IHAuZ2V0VVJJKCk7DQotICAgICAgICANCisNCiAgICAgICAgIGlmICh1cmkgIT0gbnVsbCkg
ew0KICAgICAgICAgICAgIEZpbGUgcHJvamVjdEZpbGUgPSBuZXcgRmlsZSh1cmkpOw0KICAgICAg
ICAgICAgIGlmIChwcm9qZWN0RmlsZS5sZW5ndGgoKSA+IDApIHsNCkBAIC0xOTQwLDcgKzE5NDUs
NyBAQA0KICAgICAgICAgY2hvb3Nlci5zZXRBY2NlcHRBbGxGaWxlRmlsdGVyVXNlZChmYWxzZSk7
DQogDQogICAgICAgICBQZXJzaXN0ZW5jZU1hbmFnZXIuZ2V0SW5zdGFuY2UoKS5zZXRTYXZlRmls
ZUNob29zZXJGaWx0ZXJzKA0KLSAgICAgICAgICAgICAgICBjaG9vc2VyLCANCisgICAgICAgICAg
ICAgICAgY2hvb3NlciwNCiAgICAgICAgICAgICAgICAgdXJpICE9IG51bGwgPyBVdGlsLlVSSVRv
RmlsZW5hbWUodXJpLnRvU3RyaW5nKCkpIDogbnVsbCk7DQogDQogICAgICAgICBpbnQgcmV0dmFs
ID0gY2hvb3Nlci5zaG93U2F2ZURpYWxvZyhwYik7DQpAQCAtMTk2Niw3ICsxOTcxLDcgQEANCiAg
ICAgICAgIH0NCiAgICAgICAgIHJldHVybiBudWxsOw0KICAgICB9DQotICAgIA0KKw0KICAgICAv
KioNCiAgICAgICogVGhlIFVJRC4NCiAgICAgICovDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1N0eWxlUGFuZWwuamF2YQ0KVXJsOiBodHRwOi8v
YXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1N0eWxlUGFuZWwuamF2YT92aWV3PWRpZmYmcGF0aHJl
dj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9TdHlsZVBhbmVsLmphdmEJKG9y
aWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvU3R5
bGVQYW5lbC5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQog
LyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBD
b250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250
cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dy
YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxl
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICog
d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQN
CkBAIC00MywxMyArNDMsMTQgQEANCiBpbXBvcnQgamF2YS5hd3QuZXZlbnQuSXRlbUV2ZW50Ow0K
IGltcG9ydCBqYXZhLmF3dC5ldmVudC5JdGVtTGlzdGVuZXI7DQogaW1wb3J0IGphdmEuYmVhbnMu
UHJvcGVydHlDaGFuZ2VFdmVudDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQor
aW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcu
ZXZlbnQuRG9jdW1lbnRFdmVudDsNCiBpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuRG9jdW1lbnRM
aXN0ZW5lcjsNCiBpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuTGlzdFNlbGVjdGlvbkV2ZW50Ow0K
IGltcG9ydCBqYXZheC5zd2luZy5ldmVudC5MaXN0U2VsZWN0aW9uTGlzdGVuZXI7DQogDQotaW1w
b3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5hcHBsaWNh
dGlvbi5hcGkuQWJzdHJhY3RBcmdvSlBhbmVsOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5pMThuLlRy
YW5zbGF0b3I7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLk1vZGVsOw0KQEAgLTcxLDcgKzcy
LDggQEANCiAgICAgLyoqDQogICAgICAqIExvZ2dlci4NCiAgICAgICovDQotICAgIHByaXZhdGUg
c3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFN0eWxlUGFuZWwuY2xh
c3MpOw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExv
Z2dlci5nZXRMb2dnZXIoU3R5bGVQYW5lbC5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICBwcml2
YXRlIEZpZyBwYW5lbFRhcmdldDsNCiANCkBAIC0xNTUsNyArMTU3LDcgQEANCiAgICAgICogQHNl
ZSBqYXZheC5zd2luZy5ldmVudC5Eb2N1bWVudExpc3RlbmVyI2luc2VydFVwZGF0ZShqYXZheC5z
d2luZy5ldmVudC5Eb2N1bWVudEV2ZW50KQ0KICAgICAgKi8NCiAgICAgcHVibGljIHZvaWQgaW5z
ZXJ0VXBkYXRlKERvY3VtZW50RXZlbnQgZSkgew0KLQlMT0cuZGVidWcoZ2V0Q2xhc3MoKS5nZXRO
YW1lKCkgKyAiIGluc2VydCIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiezB9IGlu
c2VydCIsIGdldENsYXNzKCkuZ2V0TmFtZSgpKTsNCiAgICAgfQ0KIA0KICAgICAvKg0KDQpNb2Rp
ZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9TdHlsZVBhbmVs
RmlnLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2Fy
Z291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9TdHlsZVBhbmVs
RmlnLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdWkvU3R5bGVQYW5lbEZpZy5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3Vt
bC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1N0eWxlUGFuZWxGaWcuamF2YQkyMDEyLTEyLTMwIDA1
OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQor
ICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h
dGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVj
bGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz
dHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDYsNiArNDYsOCBAQA0KIGltcG9y
dCBqYXZhLmF3dC5ldmVudC5JdGVtTGlzdGVuZXI7DQogaW1wb3J0IGphdmEuYXd0LmV2ZW50Lktl
eUV2ZW50Ow0KIGltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlMaXN0ZW5lcjsNCitpbXBvcnQgamF2
YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsN
CiANCiBpbXBvcnQgamF2YXguc3dpbmcuRGVmYXVsdENvbWJvQm94TW9kZWw7DQogaW1wb3J0IGph
dmF4LnN3aW5nLkpDb2xvckNob29zZXI7DQpAQCAtNTQsMTMgKzU2LDEyIEBADQogaW1wb3J0IGph
dmF4LnN3aW5nLkpUZXh0RmllbGQ7DQogaW1wb3J0IGphdmF4LnN3aW5nLnRleHQuRG9jdW1lbnQ7
DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3Vt
bC5pMThuLlRyYW5zbGF0b3I7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnN3aW5nZXh0LlNwYWNlclBh
bmVsOw0KIGltcG9ydCBvcmcuYXJnb3VtbC51aS50YXJnZXRtYW5hZ2VyLlRhcmdldE1hbmFnZXI7
DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVtbC5kaWFncmFtLkFyZ29EaWFncmFtOw0KLWltcG9ydCBv
cmcuYXJnb3VtbC51bWwuZGlhZ3JhbS5EaWFncmFtVXRpbHM7DQogaW1wb3J0IG9yZy5hcmdvdW1s
LnVtbC5kaWFncmFtLkRpYWdyYW1TZXR0aW5ncy5TdGVyZW90eXBlU3R5bGU7DQoraW1wb3J0IG9y
Zy5hcmdvdW1sLnVtbC5kaWFncmFtLkRpYWdyYW1VdGlsczsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
dW1sLmRpYWdyYW0udWkuQXJnb0ZpZzsNCiBpbXBvcnQgb3JnLmFyZ291bWwudW1sLmRpYWdyYW0u
dWkuRmlnRWRnZU1vZGVsRWxlbWVudDsNCiBpbXBvcnQgb3JnLmFyZ291bWwudW1sLmRpYWdyYW0u
dWkuRmlnTm9kZU1vZGVsRWxlbWVudDsNCkBAIC03MCwyMSArNzEsMjIgQEANCiBpbXBvcnQgb3Jn
LnRpZ3Jpcy5nZWYudWkuQ29sb3JSZW5kZXJlcjsNCiANCiAvKioNCi0gKiBUaGUgYmFzaWMgc3R5
bGVwYW5lbCBmb3IgYSBGaWcgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSBhbmQgYWRqdXN0
IA0KLSAqIHRoZSBjb21tb24gYXR0cmlidXRlcyBvZiBhIEZpZzogDQorICogVGhlIGJhc2ljIHN0
eWxlcGFuZWwgZm9yIGEgRmlnIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBzZWUgYW5kIGFkanVz
dA0KKyAqIHRoZSBjb21tb24gYXR0cmlidXRlcyBvZiBhIEZpZzoNCiAgKiB0aGUgYm91bmRhcmll
cyBib3gsDQotICogbGluZSBhbmQgZmlsbCBjb2xvciBpbmZvcm1hdGlvbiANCisgKiBsaW5lIGFu
ZCBmaWxsIGNvbG9yIGluZm9ybWF0aW9uDQogICogYW5kIHRoZSBzdGVyZW90eXBlIHZpZXcgY29t
Ym8gYm94LiA8cD4NCi0gKiANCisgKg0KICAqIFNob3duIHRvIHRoZSB1c2VyIGFzIHRoZSAiUHJl
c2VudGF0aW9uIiB0YWIuDQogICovDQogcHVibGljIGNsYXNzIFN0eWxlUGFuZWxGaWcNCiAgICAg
ZXh0ZW5kcyBTdHlsZVBhbmVsDQogICAgIGltcGxlbWVudHMgSXRlbUxpc3RlbmVyLA0KICAgICAg
ICAgRm9jdXNMaXN0ZW5lciwgS2V5TGlzdGVuZXIgew0KLSAgICANCi0gICAgcHJpdmF0ZSBzdGF0
aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoU3R5bGVQYW5lbEZpZy5jbGFz
cyk7DQotICAgIA0KKw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisg
ICAgICAgIExvZ2dlci5nZXRMb2dnZXIoU3R5bGVQYW5lbEZpZy5jbGFzcy5nZXROYW1lKCkpOw0K
Kw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ1VTVE9NX0lURU0gPQ0KICAgICAg
ICAgVHJhbnNsYXRvci5sb2NhbGl6ZSgibGFiZWwuc3R5bGVwYW5lLmN1c3RvbSIpICsgIi4uLiI7
DQogDQpAQCAtMTA3LDcgKzEwOSw3IEBADQogICAgICAgICBuZXcgSkxhYmVsKFRyYW5zbGF0b3Iu
bG9jYWxpemUoIm1lbnUucG9wdXAuc3RlcmVvdHlwZS12aWV3IikgKyAiOiAiKTsNCiANCiAgICAg
cHJpdmF0ZSBKQ29tYm9Cb3ggc3RlcmVvRmllbGQgPSBuZXcgSkNvbWJvQm94KCk7DQotICAgIA0K
Kw0KICAgICBwcml2YXRlIFNwYWNlclBhbmVsIHNwYWNlciA9IG5ldyBTcGFjZXJQYW5lbCgpOw0K
IA0KICAgICBwcml2YXRlIFNwYWNlclBhbmVsIHNwYWNlcjIgPSBuZXcgU3BhY2VyUGFuZWwoKTsN
CkBAIC0yMDUsMTAgKzIwNywxMCBAQA0KICAgICAgICAgbGluZUZpZWxkLmFkZEl0ZW0oQ29sb3Iu
b3JhbmdlKTsNCiAgICAgICAgIGxpbmVGaWVsZC5hZGRJdGVtKENvbG9yLnBpbmspOw0KICAgICAg
ICAgbGluZUZpZWxkLmFkZEl0ZW0oQ1VTVE9NX0lURU0pOw0KLSAgICAgICAgDQorDQogICAgICAg
ICBEZWZhdWx0Q29tYm9Cb3hNb2RlbCBtb2RlbCA9IG5ldyBEZWZhdWx0Q29tYm9Cb3hNb2RlbCgp
Ow0KICAgICAgICAgc3RlcmVvRmllbGQuc2V0TW9kZWwobW9kZWwpOw0KLSAgICAgICAgDQorDQog
ICAgICAgICAvLyBOT1RFOiBUaGVzZSBtdXN0IHN0YXkgaW4gdGhpcyBvcmRlciB0byBtYXRjaCBy
ZW5kZXJpbmcgc3R5bGVzDQogICAgICAgICBtb2RlbC5hZGRFbGVtZW50KFRyYW5zbGF0b3INCiAg
ICAgICAgICAgICAgICAgLmxvY2FsaXplKCJtZW51LnBvcHVwLnN0ZXJlb3R5cGUtdmlldy50ZXh0
dWFsIikpOw0KQEAgLTMxMiw3ICszMTQsNyBAQA0KIA0KICAgICAgICAgc3RlcmVvRmllbGQuc2V0
RW5hYmxlZCh0YXJnZXQgaW5zdGFuY2VvZiBTdGVyZW90eXBlU3R5bGVkKTsNCiAgICAgICAgIHN0
ZXJlb0xhYmVsLnNldEVuYWJsZWQodGFyZ2V0IGluc3RhbmNlb2YgU3RlcmVvdHlwZVN0eWxlZCk7
DQotICAgICAgICANCisNCiAgICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBTdGVyZW90eXBl
U3R5bGVkKSB7DQogICAgICAgICAgICAgU3RlcmVvdHlwZVN0eWxlZCBmaWcgPSAoU3RlcmVvdHlw
ZVN0eWxlZCkgdGFyZ2V0Ow0KICAgICAgICAgICAgIHN0ZXJlb0ZpZWxkLnNldFNlbGVjdGVkSW5k
ZXgoZmlnLmdldFN0ZXJlb3R5cGVTdHlsZSgpLm9yZGluYWwoKSk7DQpAQCAtNDIzLDcgKzQyNSw4
IEBADQogICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgdGhy
b3duIGR1cmluZyBhdXRvc2Nyb2xsaW5nDQogICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIGVk
Z2Ugb2YgdGhlIGNhbnZhcyBpcyByZWFjaGVkIGNhdXNpbmcgZWl0aGVyDQogICAgICAgICAgICAg
ICAgIC8vIHRoZSB3aWR0aCBvciBoZWlnaHQgdG8gYmUgImFkanVzdGVkIiB0byBhIG5lZ2F0aXZl
IHZhbHVlDQotICAgICAgICAgICAgICAgIExPRy53YXJuKCJQYXJ0IG9mIGJvdW5kaW5nIGJveCBp
cyBvZmYgc2NyZWVuICIgKyByZXMpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLldB
Uk5JTkcsDQorICAgICAgICAgICAgICAgICAgICAgICAgIlBhcnQgb2YgYm91bmRpbmcgYm94IGlz
IG9mZiBzY3JlZW4gIiArIHJlcyk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGlmIChy
ZXMud2lkdGggPCAwIHx8IHJlcy5oZWlnaHQgPCAwKSB7DQogICAgICAgICAgICAgICAgIC8vIFRP
RE86IFRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGR1cmluZyBhdXRvc2Nyb2xsaW5nDQpA
QCAtNDkxLDcgKzQ5NCw3IEBADQogICAgICAgICB9DQogICAgICAgICB0YXJnZXQuc2V0RmlsbGVk
KGlzQ29sb3IpOw0KICAgICAgICAgdGFyZ2V0LmVuZFRyYW5zKCk7DQotICAgICAgICANCisNCiAg
ICAgICAgIC8vIFRPRE86IFRoZSBmb2xsb3dpbmcgaGFuZGxpbmcgb2YgbXVsdGlzZWxlY3Rpb24g
aXMganVzdCBhIGxvY2FsDQogICAgICAgICAvLyBzb2x1dGlvbiBmb3IgdGhlIGZpbGwgY29sb3Is
IGJldHRlciBmaW5kIGEgbW9yZSBnZW5lcmFsIHNvbHV0aW9uOg0KICAgICAgICAgLy8gKEkgZG9u
J3Qga25vdyBpZiBpdCdzIHVuZG9hYmxlIHRoaXMgd2F5IC0gdGhuKQ0KQEAgLTUyOCw3ICs1MzEs
NyBAQA0KICAgICAgICAgfQ0KICAgICAgICAgdGFyZ2V0LnNldExpbmVXaWR0aChpc0NvbG9yID8g
QXJnb0ZpZy5MSU5FX1dJRFRIIDogMCk7DQogICAgICAgICB0YXJnZXQuZW5kVHJhbnMoKTsNCi0g
ICAgICAgIA0KKw0KICAgICAgICAgLy8gVE9ETzogVGhlIGZvbGxvd2luZyBoYW5kbGluZyBvZiBt
dWx0aXNlbGVjdGlvbiBpcyBqdXN0IGEgbG9jYWwNCiAgICAgICAgIC8vIHNvbHV0aW9uIGZvciB0
aGUgbGluZSBjb2xvciwgYmV0dGVyIGZpbmQgYSBtb3JlIGdlbmVyYWwgc29sdXRpb246DQogICAg
ICAgICAvLyAoSSBkb24ndCBrbm93IGlmIGl0J3MgdW5kb2FibGUgdGhpcyB3YXkgLSB0aG4pDQpA
QCAtNTYwLDE0ICs1NjMsMTQgQEANCiAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0ICE9IG51bGwp
IHsNCiAgICAgICAgICAgICBpZiAoc3JjID09IGZpbGxGaWVsZCkgew0KICAgICAgICAgICAgICAg
ICBpZiAoZS5nZXRJdGVtKCkgPT0gQ1VTVE9NX0lURU0pIHsNCi0gICAgICAgICAgICAgICAgICAg
IGhhbmRsZUN1c3RvbUNvbG9yKGZpbGxGaWVsZCwgDQorICAgICAgICAgICAgICAgICAgICBoYW5k
bGVDdXN0b21Db2xvcihmaWxsRmllbGQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs
YWJlbC5zdHlsZXBhbmUuY3VzdG9tLWZpbGwtY29sb3IiLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0YXJnZXQuZ2V0RmlsbENvbG9yKCkpOw0KICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgIHNldFRhcmdldEZpbGwoKTsNCiAgICAgICAgICAgICB9IGVsc2UgaWYgKHNy
YyA9PSBsaW5lRmllbGQpIHsNCiAgICAgICAgICAgICAgICAgaWYgKGUuZ2V0SXRlbSgpID09IENV
U1RPTV9JVEVNKSB7DQotICAgICAgICAgICAgICAgICAgICBoYW5kbGVDdXN0b21Db2xvcihsaW5l
RmllbGQsIA0KKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ3VzdG9tQ29sb3IobGluZUZpZWxk
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwuc3R5bGVwYW5lLmN1c3RvbS1s
aW5lLWNvbG9yIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmdldExpbmVD
b2xvcigpKTsNCiAgICAgICAgICAgICAgICAgfQ0KQEAgLTU3NSw3ICs1NzgsNyBAQA0KICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoc3JjID09IHN0ZXJlb0ZpZWxkKSB7DQogICAgICAgICAgICAgICAg
IGlmICh0YXJnZXQgaW5zdGFuY2VvZiBTdGVyZW90eXBlU3R5bGVkKSB7DQogICAgICAgICAgICAg
ICAgICAgICBPYmplY3QgaXRlbSA9IGUuZ2V0SXRlbSgpOw0KLSAgICAgICAgICAgICAgICAgICAg
RGVmYXVsdENvbWJvQm94TW9kZWwgbW9kZWwgPSANCisgICAgICAgICAgICAgICAgICAgIERlZmF1
bHRDb21ib0JveE1vZGVsIG1vZGVsID0NCiAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVs
dENvbWJvQm94TW9kZWwpIHN0ZXJlb0ZpZWxkLmdldE1vZGVsKCk7DQogICAgICAgICAgICAgICAg
ICAgICBpbnQgaWR4ID0gbW9kZWwuZ2V0SW5kZXhPZihpdGVtKTsNCiAgICAgICAgICAgICAgICAg
ICAgIFN0ZXJlb3R5cGVTdHlsZWQgZmlnID0gKFN0ZXJlb3R5cGVTdHlsZWQpIHRhcmdldDsNCg0K
TW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvU3dpbmdX
b3JrZXIuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2Uv
YXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1N3aW5nV29y
a2VyLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdWkvU3dpbmdXb3JrZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwt
YXBwL3NyYy9vcmcvYXJnb3VtbC91aS9Td2luZ1dvcmtlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6
MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Kg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBD
b3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp
YWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBz
ZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli
dXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00MSwxMSArNDEsMTIgQEANCiBpbXBvcnQg
amF2YS5hd3QuQ3Vyc29yOw0KIGltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsNCiBp
bXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7DQoraW1wb3J0IGphdmEudXRpbC5s
b2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1w
b3J0IGphdmF4LnN3aW5nLlN3aW5nVXRpbGl0aWVzOw0KIGltcG9ydCBqYXZheC5zd2luZy5UaW1l
cjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdv
dW1sLnN3aW5nZXh0LkdsYXNzUGFuZTsNCiBpbXBvcnQgb3JnLmFyZ291bWwudGFza21nbXQuUHJv
Z3Jlc3NNb25pdG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC51dGlsLkFyZ29GcmFtZTsNCkBAIC01
NSw3ICs1Niw3IEBADQogICogU3dpbmdXb3JrZXIgMyksIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQg
eW91IHN1YmNsYXNzIHRvDQogICogcGVyZm9ybSBHVUktcmVsYXRlZCB3b3JrIGluIGEgZGVkaWNh
dGVkIHRocmVhZC4gIEZvcg0KICAqIGluc3RydWN0aW9ucyBvbiBhbmQgZXhhbXBsZXMgb2YgdXNp
bmcgdGhpcyBjbGFzcywgc2VlOg0KLSAqIA0KKyAqDQogICogaHR0cDovL2phdmEuc3VuLmNvbS9k
b2NzL2Jvb2tzL3R1dG9yaWFsL3Vpc3dpbmcvbWlzYy90aHJlYWRzLmh0bWwNCiAgKg0KICAqIE5v
dGUgdGhhdCB0aGUgQVBJIGNoYW5nZWQgc2xpZ2h0bHkgaW4gdGhlIDNyZCB2ZXJzaW9uOg0KQEAg
LTYzLDE5ICs2NCwxOSBAQA0KICAqIGNyZWF0aW5nIGl0Lg0KICAqLw0KIHB1YmxpYyBhYnN0cmFj
dCBjbGFzcyBTd2luZ1dvcmtlciB7DQotCQ0KKw0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBM
b2dnZXIgTE9HID0NCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoU3dpbmdXb3JrZXIuY2xhc3Mp
Ow0KLQkNCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoU3dpbmdXb3JrZXIuY2xhc3MuZ2V0TmFt
ZSgpKTsNCisNCiAgICAgcHJpdmF0ZSBPYmplY3QgdmFsdWU7ICAvLyBzZWUgZ2V0VmFsdWUoKSwg
c2V0VmFsdWUoKQ0KIA0KICAgICBwcml2YXRlIEdsYXNzUGFuZSBnbGFzc1BhbmU7DQogDQogICAg
IHByaXZhdGUgVGltZXIgdGltZXI7DQotICAgIA0KLSAgICBwcml2YXRlIFByb2dyZXNzTW9uaXRv
ciBwbXc7IA0KLSAgICANCi0gICAgLyoqIA0KKw0KKyAgICBwcml2YXRlIFByb2dyZXNzTW9uaXRv
ciBwbXc7DQorDQorICAgIC8qKg0KICAgICAgKiBDbGFzcyB0byBtYWludGFpbiByZWZlcmVuY2Ug
dG8gY3VycmVudCB3b3JrZXIgdGhyZWFkDQogICAgICAqIHVuZGVyIHNlcGFyYXRlIHN5bmNocm9u
aXphdGlvbiBjb250cm9sLg0KICAgICAgKi8NCkBAIC05Nyw0MyArOTgsNDMgQEANCiANCiAgICAg
cHJpdmF0ZSBUaHJlYWRWYXIgdGhyZWFkVmFyOw0KIA0KLSAgICAvKiogDQotICAgICAqIEdldCB0
aGUgdmFsdWUgcHJvZHVjZWQgYnkgdGhlIHdvcmtlciB0aHJlYWQsIG9yIG51bGwgaWYgaXQgDQor
ICAgIC8qKg0KKyAgICAgKiBHZXQgdGhlIHZhbHVlIHByb2R1Y2VkIGJ5IHRoZSB3b3JrZXIgdGhy
ZWFkLCBvciBudWxsIGlmIGl0DQogICAgICAqIGhhc24ndCBiZWVuIGNvbnN0cnVjdGVkIHlldC4N
Ci0gICAgICogDQorICAgICAqDQogICAgICAqIEByZXR1cm4gCXRoZSB2YWx1ZSBwcm9kdWNlZCBi
eSB0aGUgd29ya2VyIHRocmVhZA0KICAgICAgKi8NCi0gICAgcHJvdGVjdGVkIHN5bmNocm9uaXpl
ZCBPYmplY3QgZ2V0VmFsdWUoKSB7IA0KLSAgICAgICAgcmV0dXJuIHZhbHVlOyANCisgICAgcHJv
dGVjdGVkIHN5bmNocm9uaXplZCBPYmplY3QgZ2V0VmFsdWUoKSB7DQorICAgICAgICByZXR1cm4g
dmFsdWU7DQogICAgIH0NCiANCi0gICAgLyoqIA0KLSAgICAgKiBTZXQgdGhlIHZhbHVlIHByb2R1
Y2VkIGJ5IHdvcmtlciB0aHJlYWQgDQorICAgIC8qKg0KKyAgICAgKiBTZXQgdGhlIHZhbHVlIHBy
b2R1Y2VkIGJ5IHdvcmtlciB0aHJlYWQNCiAgICAgICovDQotICAgIHByaXZhdGUgc3luY2hyb25p
emVkIHZvaWQgc2V0VmFsdWUoT2JqZWN0IHgpIHsgDQotICAgICAgICB2YWx1ZSA9IHg7IA0KKyAg
ICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIHNldFZhbHVlKE9iamVjdCB4KSB7DQorICAgICAg
ICB2YWx1ZSA9IHg7DQogICAgIH0NCiANCi0gICAgLyoqIA0KLSAgICAgKiBDb21wdXRlIHRoZSB2
YWx1ZSB0byBiZSByZXR1cm5lZCBieSB0aGUgPGNvZGU+Z2V0PC9jb2RlPiBtZXRob2QuIA0KLSAg
ICAgKiANCi0gICAgICogQHBhcmFtIHByb2dyZXNzTW9uaXRvcgl0aGUgUHJvZ3Jlc3NNb25pdG9y
V2luZG93IGNsYXNzIC0gdGhpcyANCisgICAgLyoqDQorICAgICAqIENvbXB1dGUgdGhlIHZhbHVl
IHRvIGJlIHJldHVybmVkIGJ5IHRoZSA8Y29kZT5nZXQ8L2NvZGU+IG1ldGhvZC4NCisgICAgICoN
CisgICAgICogQHBhcmFtIHByb2dyZXNzTW9uaXRvcgl0aGUgUHJvZ3Jlc3NNb25pdG9yV2luZG93
IGNsYXNzIC0gdGhpcw0KICAgICAgKiAJICAgICAgICAgICAgY2xhc3Mgc2hhbGwgYmUgcmVnaXN0
ZXJlZCBhcyBhIHByb2dyZXNzIGxpc3RlbmVyLg0KICAgICAgKiBAcmV0dXJuIAkJdGhlIHZhbHVl
IHRvIGJlIHJldHVybmVkDQogICAgICAqLw0KICAgICBwdWJsaWMgYWJzdHJhY3QgT2JqZWN0IGNv
bnN0cnVjdChQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yKTsNCi0gICAgDQotICAgIA0K
LSAgICAvKiogDQotICAgICAqIEluc3RhbnRpYXRlIGFuZCBpbml0aWFsaXplIGFuIGluc3RhbmNl
IG9mIFByb2dyZXNzTW9uaXRvcldpbmRvdyANCi0gICAgICogDQorDQorDQorICAgIC8qKg0KKyAg
ICAgKiBJbnN0YW50aWF0ZSBhbmQgaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBQcm9ncmVzc01v
bml0b3JXaW5kb3cNCisgICAgICoNCiAgICAgICogQHJldHVybiAgICAgIGFuIGluc3RhbmNlIG9m
IFByb2dyZXNzTW9uaXRvcldpbmRvdw0KICAgICAgKi8NCiAgICAgcHVibGljIGFic3RyYWN0IFBy
b2dyZXNzTW9uaXRvciBpbml0UHJvZ3Jlc3NNb25pdG9yV2luZG93KCk7DQotICAgIA0KKw0KICAg
ICAvKioNCi0gICAgICogVGhpcyBtZXRob2QgY2FsbHMgdGhlIGNvbnN0cnVjdCgpLCAgDQotICAg
ICAqIA0KKyAgICAgKiBUaGlzIG1ldGhvZCBjYWxscyB0aGUgY29uc3RydWN0KCksDQorICAgICAq
DQogICAgICAqIEByZXR1cm4JCXRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZCBieSB0aGUgPGNvZGU+
Z2V0PC9jb2RlPiBtZXRob2QuDQogICAgICAqLw0KICAgICBwdWJsaWMgT2JqZWN0IGRvQ29uc3Ry
dWN0KCkgew0KQEAgLTE0NCwyMiArMTQ1LDIyIEBADQogICAgICAgICAJCUN1cnNvci5nZXRQcmVk
ZWZpbmVkQ3Vyc29yKEN1cnNvci5XQUlUX0NVUlNPUikpOw0KIA0KICAgICAgICAgT2JqZWN0IHJl
dFZhbCA9IG51bGw7DQotICAgICAgICANCisNCiAgICAgICAgIC8vQ3JlYXRlIGEgdGltZXIuDQog
ICAgICAgICB0aW1lciA9IG5ldyBUaW1lcigyNSwgbmV3IFRpbWVyTGlzdGVuZXIoKSk7DQogICAg
ICAgICB0aW1lci5zdGFydCgpOw0KLSAgICAgICAgDQorDQogICAgIAl0cnkgew0KICAgICAJICAg
IHJldFZhbCA9IGNvbnN0cnVjdChwbXcpOw0KICAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGV4Yykg
ew0KIAkgICAgLy8gVE9ETzogVGhpcyBlcnJvciBuZWVkcyB0byBiZSByZXBvcnRlZCENCi0gICAg
CSAgICBMT0cuZXJyb3IoIkVycm9yIHdoaWxlIGxvYWRpbmcgcHJvamVjdDogIiwgZXhjKTsNCisg
ICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkVycm9yIHdoaWxlIGxvYWRpbmcgcHJv
amVjdDogIiwgZXhjKTsNCiAgICAgICAgIH0gZmluYWxseSB7DQogICAgICAgICAgICAgcG13LmNs
b3NlKCk7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4gcmV0VmFsOw0KICAgICB9DQotICAg
IA0KKw0KICAgICAvKioNCiAgICAgICogVGhlIGFjdGlvblBlcmZvcm1lZCBtZXRob2QgaW4gdGhp
cyBjbGFzcw0KICAgICAgKiBpcyBjYWxsZWQgZWFjaCB0aW1lIHRoZSBUaW1lciAiZ29lcyBvZmYi
Lg0KQEAgLTE3Myw3ICsxNzQsNyBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAg
fQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEFjdGl2YXRlIHRoZSBjYXBhYmlsaXRpZXMg
b2YgZ2xhc3NwYW5lDQogICAgICAqLw0KQEAgLTE4OSw3ICsxOTAsNyBAQA0KICAgICAgICAgICAg
IGdldEdsYXNzUGFuZSgpLnNldFZpc2libGUodHJ1ZSk7DQogICAgICAgICB9DQogICAgIH0NCi0g
ICAgDQorDQogICAgIC8qKg0KICAgICAgKiBEZWFjdGl2YXRlIHRoZSBnbGFzc3BhbmUNCiAgICAg
ICovDQpAQCAtMTk5LDcgKzIwMCw3IEBADQogICAgICAgICAgICAgZ2V0R2xhc3NQYW5lKCkuc2V0
VmlzaWJsZShmYWxzZSk7DQogICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0K
ICAgICAgKiBDYWxsZWQgb24gdGhlIGV2ZW50IGRpc3BhdGNoaW5nIHRocmVhZCAobm90IG9uIHRo
ZSB3b3JrZXIgdGhyZWFkKQ0KICAgICAgKiBhZnRlciB0aGUgPGNvZGU+Y29uc3RydWN0PC9jb2Rl
PiBtZXRob2QgaGFzIHJldHVybmVkLg0KQEAgLTIwOSw3ICsyMTAsNyBAQA0KICAgICAJQXJnb0Zy
YW1lLmdldEZyYW1lKCkuc2V0Q3Vyc29yKEN1cnNvci5nZXRQcmVkZWZpbmVkQ3Vyc29yKA0KICAg
ICAgICAgICAgICAgICBDdXJzb3IuREVGQVVMVF9DVVJTT1IpKTsNCiAgICAgfQ0KLSAgICANCisN
CiAgICAgLyoqDQogICAgICAqIEdldHRlciBtZXRob2QgZm9yIHRoZSBnbGFzc1BhbmdlDQogICAg
ICAqDQpAQCAtMjE4LDcgKzIxOSw3IEBADQogICAgIHByb3RlY3RlZCBHbGFzc1BhbmUgZ2V0R2xh
c3NQYW5lKCkgew0KICAgICAgICAgcmV0dXJuIGdsYXNzUGFuZTsNCiAgICAgfQ0KLSAgICANCisN
CiAgICAgLyoqDQogICAgICAqIFNldHRlciBtZXRob2QNCiAgICAgICoNCkBAIC0yMjcsNyArMjI4
LDcgQEANCiAgICAgcHJvdGVjdGVkIHZvaWQgc2V0R2xhc3NQYW5lKEdsYXNzUGFuZSBuZXdHbGFz
c1BhbmUpIHsNCiAgICAgICAgIGdsYXNzUGFuZSA9IG5ld0dsYXNzUGFuZTsNCiAgICAgfQ0KLSAg
ICANCisNCiAgICAgLyoqDQogICAgICAqIEEgbmV3IG1ldGhvZCB0aGF0IGludGVycnVwdHMgdGhl
IHdvcmtlciB0aHJlYWQuICBDYWxsIHRoaXMgbWV0aG9kDQogICAgICAqIHRvIGZvcmNlIHRoZSB3
b3JrZXIgdG8gc3RvcCB3aGF0IGl0J3MgZG9pbmcuDQpAQCAtMjQxLDE0ICsyNDIsMTQgQEANCiAg
ICAgfQ0KIA0KICAgICAvKioNCi0gICAgICogUmV0dXJuIHRoZSB2YWx1ZSBjcmVhdGVkIGJ5IHRo
ZSA8Y29kZT5jb25zdHJ1Y3Q8L2NvZGU+IG1ldGhvZC4gIA0KKyAgICAgKiBSZXR1cm4gdGhlIHZh
bHVlIGNyZWF0ZWQgYnkgdGhlIDxjb2RlPmNvbnN0cnVjdDwvY29kZT4gbWV0aG9kLg0KICAgICAg
KiBSZXR1cm5zIG51bGwgaWYgZWl0aGVyIHRoZSBjb25zdHJ1Y3RpbmcgdGhyZWFkIG9yIHRoZSBj
dXJyZW50DQogICAgICAqIHRocmVhZCB3YXMgaW50ZXJydXB0ZWQgYmVmb3JlIGEgdmFsdWUgd2Fz
IHByb2R1Y2VkLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHJldHVybiB0aGUgdmFsdWUg
Y3JlYXRlZCBieSB0aGUgPGNvZGU+Y29uc3RydWN0PC9jb2RlPiBtZXRob2QNCiAgICAgICovDQog
ICAgIHB1YmxpYyBPYmplY3QgZ2V0KCkgew0KLSAgICAgICAgd2hpbGUgKHRydWUpIHsgIA0KKyAg
ICAgICAgd2hpbGUgKHRydWUpIHsNCiAgICAgICAgICAgICBUaHJlYWQgdCA9IHRocmVhZFZhci5n
ZXQoKTsNCiAgICAgICAgICAgICBpZiAodCA9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgIHJl
dHVybiBnZXRWYWx1ZSgpOw0KQEAgLTI3MCwxMiArMjcxLDEyIEBADQogICAgICAqLw0KICAgICBw
dWJsaWMgU3dpbmdXb3JrZXIoKSB7DQogICAgICAgICBmaW5hbCBSdW5uYWJsZSBkb0ZpbmlzaGVk
ID0gbmV3IFJ1bm5hYmxlKCkgew0KLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsgDQot
ICAgICAgICAgICAgICAgIGZpbmlzaGVkKCk7IA0KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1
bigpIHsNCisgICAgICAgICAgICAgICAgZmluaXNoZWQoKTsNCiAgICAgICAgICAgICB9DQogICAg
ICAgICB9Ow0KIA0KLSAgICAgICAgUnVubmFibGUgZG9Db25zdHJ1Y3QgPSBuZXcgUnVubmFibGUo
KSB7IA0KKyAgICAgICAgUnVubmFibGUgZG9Db25zdHJ1Y3QgPSBuZXcgUnVubmFibGUoKSB7DQog
ICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgew0KICAgICAgICAgICAgICAgICB0cnkgew0K
ICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZG9Db25zdHJ1Y3QoKSk7DQpAQCAtMjkwLDkg
KzI5MSw5IEBADQogDQogICAgICAgICBUaHJlYWQgdCA9IG5ldyBUaHJlYWQoZG9Db25zdHJ1Y3Qp
Ow0KICAgICAgICAgdGhyZWFkVmFyID0gbmV3IFRocmVhZFZhcih0KTsNCi0gICAgICAgIA0KKw0K
ICAgICB9DQotICAgIA0KKw0KICAgICBwdWJsaWMgU3dpbmdXb3JrZXIoU3RyaW5nIHRocmVhZE5h
bWUpIHsNCiAgICAgICAgIHRoaXMoKTsNCiAgICAgICAgIHRocmVhZFZhci5nZXQoKS5zZXROYW1l
KHRocmVhZE5hbWUpOw0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcv
YXJnb3VtbC91aS9UYWJSZXN1bHRzLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9y
Zy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91aS9UYWJSZXN1bHRzLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYm
cjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFw
cC9zcmMvb3JnL2FyZ291bWwvdWkvVGFiUmVzdWx0cy5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1RhYlJlc3VsdHMuamF2YQkyMDEy
LTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0gc2Vl
IGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJl
bG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w
YW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVz
IHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNTIsNiArNTIsOCBA
QA0KIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0K
IGltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsN
CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGltcG9ydCBqYXZheC5zd2lu
Zy5Cb3JkZXJGYWN0b3J5Ow0KIGltcG9ydCBqYXZheC5zd2luZy5KTGFiZWw7DQpAQCAtNjMsNyAr
NjUsNiBAQA0KIGltcG9ydCBqYXZheC5zd2luZy5ldmVudC5MaXN0U2VsZWN0aW9uRXZlbnQ7DQog
aW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50Lkxpc3RTZWxlY3Rpb25MaXN0ZW5lcjsNCiANCi1pbXBv
cnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0
aW9uLmFwaS5BYnN0cmFjdEFyZ29KUGFuZWw7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmkxOG4uVHJh
bnNsYXRvcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwubW9kZWwuTW9kZWw7DQpAQCAtOTMsNyArOTQs
OCBAQA0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBz
dGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoVGFiUmVzdWx0cy5jbGFz
cyk7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KKyAgICAgICAgTG9n
Z2VyLmdldExvZ2dlcihUYWJSZXN1bHRzLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIHByaXZh
dGUgc3RhdGljIGludCBudW1KdW1wVG9SZWxhdGVkOw0KIA0KQEAgLTIyNiw3ICsyMjgsNyBAQA0K
ICAgICAgICAgcmVsYXRlZExhYmVsLnNldFRleHQoDQogICAgICAgICAgICAgVHJhbnNsYXRvci5s
b2NhbGl6ZSgiZGlhbG9nLnRhYnJlc3VsdHMucmVsYXRlZC1pdGVtcyIpKTsNCiAgICAgfQ0KLSAg
ICANCisNCiAgICAgLyoNCiAgICAgICogQHNlZSBvcmcuYXJnb3VtbC51aS5BYnN0cmFjdEFyZ29K
UGFuZWwjc3Bhd24oKQ0KICAgICAgKi8NCkBAIC0zMjcsNyArMzI5LDggQEANCiAJfQ0KIA0KIAlp
ZiAoZCAhPSBudWxsKSB7DQotICAgICAgICAgICAgTE9HLmRlYnVnKCJnbyAiICsgc2VsICsgIiBp
biAiICsgZC5nZXROYW1lKCkpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwNCisg
ICAgICAgICAgICAgICAgICAgICJnbyB7MH0gaW4gezF9IiwgbmV3IE9iamVjdFtde3NlbCwgZC5n
ZXROYW1lKCl9KTsNCiAgICAgICAgICAgICBUYXJnZXRNYW5hZ2VyLmdldEluc3RhbmNlKCkuc2V0
VGFyZ2V0KGQpOw0KICAgICAgICAgfQ0KIAlpZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBVGFnZ2Vk
VmFsdWUoc2VsKSkgew0KQEAgLTM3OSw3ICszODIsNyBAQA0KIAlpZiAocmVsYXRlZFNob3duKSB7
DQogCSAgICBpbnQgcm93ID0gbHNlLmdldEZpcnN0SW5kZXgoKTsNCiAJICAgIE9iamVjdCBzZWwg
PSByZXN1bHRzLmdldChyb3cpOw0KLQkgICAgTE9HLmRlYnVnKCJzZWxlY3RlZCAiICsgc2VsKTsN
CisgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJzZWxlY3RlZCB7MH0iLCBzZWwpOw0K
IAkgICAgcmVsYXRlZC5jbGVhcigpOw0KIAkgICAgRW51bWVyYXRpb24gZWxlbXMgPQ0KIAkJQ2hp
bGRHZW5SZWxhdGVkLmdldFNpbmdsZXRvbigpLmdlbihzZWwpOw0KDQpNb2RpZmllZDogdHJ1bmsv
c3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9UYWJUZXh0LmphdmENClVybDogaHR0
cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9UYWJUZXh0LmphdmE/dmlldz1kaWZmJnBhdGhy
ZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvVGFiVGV4dC5qYXZhCShvcmln
aW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1RhYlRl
eHQuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJ
ZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJp
YnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0
b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFu
ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNo
IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAt
NDEsNiArNDEsOCBAQA0KIGltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7DQogaW1wb3J0IGph
dmEuYXd0LkZvbnQ7DQogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCitpbXBvcnQgamF2
YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsN
CiANCiBpbXBvcnQgamF2YXguc3dpbmcuSlNjcm9sbFBhbmU7DQogaW1wb3J0IGphdmF4LnN3aW5n
LkpUZXh0QXJlYTsNCkBAIC00OSw3ICs1MSw2IEBADQogaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50
LkRvY3VtZW50RXZlbnQ7DQogaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50LkRvY3VtZW50TGlzdGVu
ZXI7DQogDQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJn
b3VtbC5hcHBsaWNhdGlvbi5hcGkuQWJzdHJhY3RBcmdvSlBhbmVsOw0KIGltcG9ydCBvcmcuYXJn
b3VtbC5zd2luZ2V4dC5VcEFycm93SWNvbjsNCiBpbXBvcnQgb3JnLmFyZ291bWwudWkudGFyZ2V0
bWFuYWdlci5UYXJnZXRFdmVudDsNCkBAIC03Nyw3ICs3OCw3IEBADQogICAgIC8qKg0KICAgICAg
KiBMb2dnZXIuDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9H
ID0gTG9nZ2VyLmdldExvZ2dlcihUYWJUZXh0LmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMg
ZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoVGFiVGV4dC5jbGFzcy5nZXROYW1l
KCkpOw0KIA0KICAgICAvKioNCiAgICAgICogQ3JlYXRlIGEgdGV4dCB0YWIgd2l0aG91dCBhIHRv
b2xiYXIuDQpAQCAtMjAxLDcgKzIwMiw3IEBADQogICAgICAgICBpZiAocyA9PSBudWxsKSB7DQog
ICAgICAgICAgICAgcyA9ICIobnVsbCkiOw0KICAgICAgICAgfQ0KLSAgICAgICAgTE9HLmRlYnVn
KCJwYXJzaW5nIHRleHQ6IiArIHMpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAicGFy
c2luZyB0ZXh0OiB7MH0iLCBzKTsNCiAgICAgfQ0KIA0KICAgICAvKg0KDQpNb2RpZmllZDogdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9UcmVlTW9kZWxDb21wb3NpdGUu
amF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3Vt
bC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1RyZWVNb2RlbENvbXBv
c2l0ZS5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL3VpL1RyZWVNb2RlbENvbXBvc2l0ZS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1RyZWVNb2RlbENvbXBvc2l0ZS5qYXZhCTIw
MTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBz
ZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUg
YmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv
bXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5p
ZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC0zOCwxMSArMzgs
MTIgQEANCiANCiBwYWNrYWdlIG9yZy5hcmdvdW1sLnVpOw0KIA0KK2ltcG9ydCBqYXZhLnV0aWwu
bG9nZ2luZy5MZXZlbDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KKw0KIGlt
cG9ydCBqYXZheC5zd2luZy50cmVlLlRyZWVNb2RlbDsNCiBpbXBvcnQgamF2YXguc3dpbmcudHJl
ZS5UcmVlUGF0aDsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQotDQogLyoq
DQogICogVGhpcyBjbGFzcyBpcyB0aGUgVHJlZU1vZGVsIGZvciB0aGUgbmF2aWdhdG9yIGFuZCB0
b2RvIGxpc3QgcGFuZWxzLjxwPg0KICAqDQpAQCAtNTMsNyArNTQsNyBAQA0KIHB1YmxpYyBjbGFz
cyBUcmVlTW9kZWxDb21wb3NpdGUgZXh0ZW5kcyBUcmVlTW9kZWxTdXBwb3J0IGltcGxlbWVudHMg
VHJlZU1vZGVsIHsNCiANCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQot
ICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFRyZWVNb2RlbENvbXBvc2l0ZS5jbGFzcyk7DQorICAg
ICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFRyZWVNb2RlbENvbXBvc2l0ZS5jbGFzcy5nZXROYW1lKCkp
Ow0KIA0KICAgICAvKiogVGhlIHJvb3Qgb2YgdGhlIG1vZGVsLiAqLw0KICAgICBwcml2YXRlIE9i
amVjdCByb290Ow0KQEAgLTExMyw3ICsxMTQsNyBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICBjaGlsZENvdW50ICs9IHRtLmdldENoaWxkQ291bnQocGFyZW50KTsNCiAgICAgICAgIH0N
Ci0gICAgICAgIExPRy5kZWJ1ZygiY2hpbGQgbm90IGZvdW5kISIpOw0KKyAgICAgICAgTE9HLmxv
ZyhMZXZlbC5GSU5FLCAiY2hpbGQgbm90IGZvdW5kISIpOw0KIA0KICAgICAgICAgLy9UaGUgY2hp
bGQgaXMgc29tZXRpbWVzIG5vdCBmb3VuZCB3aGVuIHRoZSB0cmVlIGlzIGJlaW5nIHVwZGF0ZWQN
CiAgICAgICAgIHJldHVybiAtMTsNCkBAIC0xMzUsMTEgKzEzNiwxMSBAQA0KICAgICAvKg0KICAg
ICAgKiBAc2VlIGphdmF4LnN3aW5nLnRyZWUuVHJlZU1vZGVsI3ZhbHVlRm9yUGF0aENoYW5nZWQo
amF2YXguc3dpbmcudHJlZS5UcmVlUGF0aCwgamF2YS5sYW5nLk9iamVjdCkNCiAgICAgICovDQot
ICAgIHB1YmxpYyB2b2lkIHZhbHVlRm9yUGF0aENoYW5nZWQoVHJlZVBhdGggcGF0aCwgT2JqZWN0
IG5ld1ZhbHVlKSB7IA0KKyAgICBwdWJsaWMgdm9pZCB2YWx1ZUZvclBhdGhDaGFuZ2VkKFRyZWVQ
YXRoIHBhdGgsIE9iamVjdCBuZXdWYWx1ZSkgew0KICAgICAgICAgLy8gIEVtcHR5IGltcGxlbWVu
dGF0aW9uIC0gbm90IHVzZWQuDQogICAgIH0NCiANCi0gICAgDQorDQogICAgIC8qKg0KICAgICAg
KiBAcGFyYW0gciB0aGUgcm9vdCBvZiB0aGUgbW9kZWwNCiAgICAgICovDQoNCk1vZGlmaWVkOiB0
cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1pvb21TbGlkZXJCdXR0b24u
amF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3Vt
bC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL1pvb21TbGlkZXJCdXR0
b24uamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC91aS9ab29tU2xpZGVyQnV0dG9uLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvWm9vbVNsaWRlckJ1dHRvbi5qYXZhCTIwMTItMTIt
MzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVs
b3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cN
CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp
bmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhp
cyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC02NSw5ICs2NSw5IEBADQog
DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9uLmhlbHBlcnMuUmVzb3VyY2VMb2FkZXJX
cmFwcGVyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5pMThuLlRyYW5zbGF0b3I7DQotaW1wb3J0IG9y
Zy50aWdyaXMuc3dpZGdldHMuUG9wdXBCdXR0b247DQogaW1wb3J0IG9yZy50aWdyaXMuZ2VmLmJh
c2UuRWRpdG9yOw0KIGltcG9ydCBvcmcudGlncmlzLmdlZi5iYXNlLkdsb2JhbHM7DQoraW1wb3J0
IG9yZy50aWdyaXMuc3dpZGdldHMuUG9wdXBCdXR0b247DQogDQogLyoqDQogICogQSBidXR0b24g
dGhhdCBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIHpvb20gbWFnbmlmaWNhdGlvbiBvZiB0aGUg
Y3VycmVudA0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC91aS9jbWQvQWN0aW9uR290b0RpYWdyYW0uamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdy
aXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL3VpL2NtZC9BY3Rpb25Hb3RvRGlhZ3JhbS5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2
PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2NtZC9BY3Rpb25Hb3RvRGlhZ3Jh
bS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL3VpL2NtZC9BY3Rpb25Hb3RvRGlhZ3JhbS5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgw
MA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAq
IENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmln
aHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQog
ICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJs
aWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24s
IGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00Nyw5ICs0Nyw5IEBADQogaW1wb3J0IG9yZy5hcmdv
dW1sLmtlcm5lbC5Qcm9qZWN0Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdE1h
bmFnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVpLkdvdG9EaWFsb2c7DQoraW1wb3J0IG9yZy5h
cmdvdW1sLnVpLlVuZG9hYmxlQWN0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC51aS50YXJnZXRt
YW5hZ2VyLlRhcmdldE1hbmFnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVtbC5kaWFncmFtLkFy
Z29EaWFncmFtOw0KLWltcG9ydCBvcmcuYXJnb3VtbC51aS5VbmRvYWJsZUFjdGlvbjsNCiANCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vDQogLy8gaXRlbXMgb24gdmlldyBtZW51DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2NtZC9DbWRTZXRQcmVmZXJyZWRTaXplLmphdmEN
ClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9jbWQvQ21kU2V0UHJlZmVycmVk
U2l6ZS5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdv
dW1sL3VpL2NtZC9DbWRTZXRQcmVmZXJyZWRTaXplLmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5r
L3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvY21kL0NtZFNldFByZWZlcnJlZFNp
emUuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJ
ZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJp
YnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0
b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFu
ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNo
IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAt
NDEsMTQgKzQxLDEzIEBADQogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQogaW1wb3J0IGph
dmEudXRpbC5MaXN0Ow0KIA0KK2ltcG9ydCBvcmcuYXJnb3VtbC5pMThuLlRyYW5zbGF0b3I7DQog
aW1wb3J0IG9yZy50aWdyaXMuZ2VmLmJhc2UuQ21kOw0KIGltcG9ydCBvcmcudGlncmlzLmdlZi5i
YXNlLkVkaXRvcjsNCiBpbXBvcnQgb3JnLnRpZ3Jpcy5nZWYuYmFzZS5HbG9iYWxzOw0KIGltcG9y
dCBvcmcudGlncmlzLmdlZi5iYXNlLlNlbGVjdGlvbk1hbmFnZXI7DQogaW1wb3J0IG9yZy50aWdy
aXMuZ2VmLnByZXNlbnRhdGlvbi5GaWc7DQogDQotaW1wb3J0IG9yZy5hcmdvdW1sLmkxOG4uVHJh
bnNsYXRvcjsNCi0NCiANCiAvKioNCiAgKiBBIGNvbW1hbmQgdG8gc2V0IHNlbGVjdGVkIGZpZ3Mg
dG8gdGhlaXIgbWluaW11bSBzaXplLiA8cD4NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvY21kL0dlbmVyaWNBcmdvTWVudUJhci5qYXZhDQpVcmw6
IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvY21kL0dlbmVyaWNBcmdvTWVudUJhci5q
YXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Vp
L2NtZC9HZW5lcmljQXJnb01lbnVCYXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2Fy
Z291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9jbWQvR2VuZXJpY0FyZ29NZW51QmFyLmphdmEJ
MjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTAgQ29udHJpYnV0
b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3Jz
IC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0
aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFj
Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDQs
NiArNDQsOCBAQA0KIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KIGltcG9ydCBqYXZhLnV0
aWwuQ29sbGVjdGlvbjsNCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRp
bC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQog
aW1wb3J0IGphdmF4LnN3aW5nLkFjdGlvbjsNCiBpbXBvcnQgamF2YXguc3dpbmcuQnV0dG9uR3Jv
dXA7DQpAQCAtNTUsNyArNTcsNiBAQA0KIGltcG9ydCBqYXZheC5zd2luZy5LZXlTdHJva2U7DQog
aW1wb3J0IGphdmF4LnN3aW5nLlN3aW5nVXRpbGl0aWVzOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hl
LmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uaGVscGVycy5S
ZXNvdXJjZUxvYWRlcldyYXBwZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmNvZ25pdGl2ZS5jcml0
aWNzLnVpLkFjdGlvbk9wZW5Dcml0aWNzOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb2duaXRpdmUu
dWkuQWN0aW9uQXV0b0NyaXRpcXVlOw0KQEAgLTEwMSw0OCArMTAyLDQ4IEBADQogaW1wb3J0IG9y
Zy50aWdyaXMudG9vbGJhci5Ub29sQmFyRmFjdG9yeTsNCiANCiAvKioNCi0gKiBHZW5lcmljQXJn
b01lbnVCYXIgZGVmaW5lcyB0aGUgbWVudSBiYXIgZm9yIGFsbCBvcGVyYXRpbmcgc3lzdGVtcyB3
aGljaCBkbyANCisgKiBHZW5lcmljQXJnb01lbnVCYXIgZGVmaW5lcyB0aGUgbWVudSBiYXIgZm9y
IGFsbCBvcGVyYXRpbmcgc3lzdGVtcyB3aGljaCBkbw0KICAqIG5vdCBleHBsaWNpdGx5IGFzayBm
b3IgYSBkaWZmZXJlbnQga2luZCBvZiBtZW51IGJhciwgc3VjaCBhcyBNYWMgT1MgWC4NCiAgKiA8
cD4NCi0gKiANCisgKg0KICAqIE1lbnUncyBhbmQgdGhlIG1uZW1vbmljcyBvZiBtZW51J3MgYW5k
IHRoZSBtZW51aXRlbXMgYXJlIHNlcGFyYXRlZCBpbiB0aGUNCiAgKiBQcm9wZXJ0eVJlc291cmNl
QnVuZGxlIDxlbT5tZW51LnByb3BlcnRpZXM8L2VtPi4NCiAgKiA8cD4NCi0gKiANCisgKg0KICAq
IG1lbnUgaXRlbXMgYXJlIHNlcGFyYXRlZCBpbiB0aGUgUHJvcGVydHlSZXNvdXJjZUJ1bmRsZQ0K
ICAqIDxlbT5hY3Rpb24ucHJvcGVydGllczwvZW0+Lg0KICAqIDxwPg0KLSAqIA0KKyAqDQogICog
VGhlIGtleSdzIGluIG1lbnUucHJvcGVydGllcyBoYXZlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJl
Og0KLSAqIA0KKyAqDQogICogPHByZT4NCiAgKiAgIG1lbnU6ICAgICAgICAgICAgICAgICAgICBb
ZmlsZV0uW25hbWUgb2YgbWVudV0NCiAgKiAgICBlLmc6ICAgICAgICAgICAgICAgICAgICBtZW51
LmZpbGUNCi0gKiANCisgKg0KICAqICAgbW5lbW9uaWNzIG9mIG1lbnUnczogICAgIFtmaWxlXS5b
bmFtZSBvZiBtZW51XS5tbmVtb25pYw0KICAqICAgIGUuZzogICAgICAgICAgICAgICAgICAgIG1l
bnUuZmlsZS5tbmVtb25pYw0KLSAqIA0KKyAqDQogICogICBtbmVtb25pY3Mgb2YgbWVudWl0ZW1z
OiAgW2ZpbGVdLltmbGFnIGZvciBpdGVtXS5bbmFtZSBvZiBtZW51aXRlbV0ubW5lbW9uaWMNCiAg
KiAgICBlLmc6ICAgICAgICAgICAgICAgICAgICBtZW51Lml0ZW0ubmV3Lm1uZW1vbmljDQogICog
PC9wcmU+DQotICogDQorICoNCiAgKiBUT0RPOiBBZGQgcmVnaXN0cmF0aW9uIGZvciBuZXcgbWVu
dSBpdGVtcy4NCiAgKiBAZGVwcmVjYXRlZCBpbiAwLjI5LjIgYnkgQm9iIFRhcmxpbmcuIFRoaXMg
Y2xhc3Mgd2lsbCBiZSBtb3ZlZCBhbmQgbWFkZQ0KICAqIHByaXZhdGUgaW4gZnV0dXJlLiBVc2Ug
TWVudUJhckZhY3RvcnkuY3JlYXRlQXBwbGljYXRpb25NZW51QmFyDQogICovDQogcHVibGljIGNs
YXNzIEdlbmVyaWNBcmdvTWVudUJhciBleHRlbmRzIEpNZW51QmFyIGltcGxlbWVudHMNCiAgICAg
ICAgIFRhcmdldExpc3RlbmVyIHsNCi0gICAgDQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExv
Z2dlciBMT0cgPSANCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoR2VuZXJpY0FyZ29NZW51QmFy
LmNsYXNzKTsNCisNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQorICAg
ICAgICBMb2dnZXIuZ2V0TG9nZ2VyKEdlbmVyaWNBcmdvTWVudUJhci5jbGFzcy5nZXROYW1lKCkp
Ow0KIA0KICAgICBwcml2YXRlIHN0YXRpYyBMaXN0PEpNZW51PiBtb2R1bGVNZW51cyA9IG5ldyBB
cnJheUxpc3Q8Sk1lbnU+KCk7DQogDQotICAgIHByaXZhdGUgc3RhdGljIExpc3Q8QWN0aW9uPiBt
b2R1bGVDcmVhdGVEaWFncmFtQWN0aW9ucyA9IA0KKyAgICBwcml2YXRlIHN0YXRpYyBMaXN0PEFj
dGlvbj4gbW9kdWxlQ3JlYXRlRGlhZ3JhbUFjdGlvbnMgPQ0KICAgICAgICAgbmV3IEFycmF5TGlz
dDxBY3Rpb24+KCk7DQotICAgIA0KKw0KICAgICBwcml2YXRlIENvbGxlY3Rpb248QWN0aW9uPiBk
aXNhYmxlYWJsZUFjdGlvbnMgPSBuZXcgQXJyYXlMaXN0PEFjdGlvbj4oKTsNCi0gICAgDQorDQog
ICAgIC8qKg0KICAgICAgKiBUaGUgem9vbSBmYWN0b3IgLSBkZWZhdWx0cyB0byA5MCUvMTEwJQ0K
ICAgICAgKi8NCkBAIC0yMjYsNyArMjI3LDcgQEANCiAgICAgcHJpdmF0ZSBBY3Rpb24gbmF2aWdh
dGVUYXJnZXRGb3J3YXJkQWN0aW9uOw0KIA0KICAgICBwcml2YXRlIEFjdGlvbiBuYXZpZ2F0ZVRh
cmdldEJhY2tBY3Rpb247DQotICAgIA0KKw0KICAgICAvLyBSZWZlcmVuY2VzIHRvIGFjdGlvbnMg
dGhhdCB3ZSBuZWVkIGZvciBNYWMgaGFjaw0KICAgICBwcml2YXRlIEFjdGlvblNldHRpbmdzIHNl
dHRpbmdzQWN0aW9uOw0KICAgICBwcml2YXRlIEFjdGlvbkFib3V0QXJnb1VNTCBhYm91dEFjdGlv
bjsNCkBAIC0yNTEsMTAgKzI1MiwxMCBAQA0KICAgICAgICAgZGlzYWJsZWFibGVBY3Rpb25zLmFk
ZChuYXZpZ2F0ZVRhcmdldEJhY2tBY3Rpb24pOw0KICAgICAgICAgbGF5b3V0QWN0aW9uID0gbmV3
IEFjdGlvbkxheW91dCgpOw0KICAgICAgICAgZGlzYWJsZWFibGVBY3Rpb25zLmFkZChsYXlvdXRB
Y3Rpb24pOw0KLSAgICAgICAgDQorDQogICAgICAgICBUYXJnZXRNYW5hZ2VyLmdldEluc3RhbmNl
KCkuYWRkVGFyZ2V0TGlzdGVuZXIodGhpcyk7DQogICAgICAgICAvKiBUaGlzIG5leHQgbGluZSBh
ZGRlZCB0byBzb2x2ZSBpc3N1ZSA1NzU1Lg0KLSAgICAgICAgICogQnJpbmcgdGhlIGVuYWJsZWQv
ZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGFjdGlvbnMgaW4gbGluZSB3aXRoIHRoZSANCisgICAgICAg
ICAqIEJyaW5nIHRoZSBlbmFibGVkL2Rpc2FibGVkIHN0YXRlIG9mIHRoZSBhY3Rpb25zIGluIGxp
bmUgd2l0aCB0aGUNCiAgICAgICAgICAqIGxhc3QgdGFyZ2V0IGNoYW5nZSB0aGF0IGhhcHBlbmVk
IGJlZm9yZSB3ZSByZWdpc3RlcmVkIGFzIGxpc3RlbmVyLiAqLw0KICAgICAgICAgc2V0VGFyZ2V0
KCk7DQogICAgIH0NCkBAIC0yNjMsNyArMjY0LDcgQEANCiAgICAgICogVGhpcyBzaG91bGQgYmUg
YSB1c2VyIHNwZWNpZmllZCBvcHRpb24uIE5ldyBsYXdzIGZvciBoYW5kaWNhcHBlZCBwZW9wbGUN
CiAgICAgICogd2hvIGNhbm5vdCB1c2UgdGhlIG1vdXNlIHJlcXVpcmUgc29mdHdhcmUgZGV2ZWxv
cGVycyBpbiBVUyB0byBtYWtlIGFsbA0KICAgICAgKiBjb21wb25lbnRzIG9mIFVzZXIgaW50ZXJm
YWNlIGFjY2Vzc2libGUgdGhyb3VnaCBrZXlib2FyZA0KLSAgICAgKiANCisgICAgICoNCiAgICAg
ICogQHBhcmFtIGl0ZW0NCiAgICAgICogICAgICAgICAgICBpcyB0aGUgSk1lbnVJdGVtIHRvIGRv
IHRoaXMgZm9yLg0KICAgICAgKiBAcGFyYW0ga2V5DQpAQCAtMjkzLDcgKzI5NCw3IEBADQogICAg
IHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIG1lbnVMb2NhbGl6ZShTdHJpbmcga2V5KSB7
DQogICAgICAgICByZXR1cm4gVHJhbnNsYXRvci5sb2NhbGl6ZShNRU5VICsgcHJlcGFyZUtleShr
ZXkpKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEBwYXJhbSBrZXkgdGhl
IGtleSB0byBsb2NhbGl6ZQ0KICAgICAgKiBAcmV0dXJuIHRoZSBsb2NhbGl6ZWQgc3RyaW5nDQpA
QCAtMzE2LDcgKzMxNyw3IEBADQogICAgICAgICBpbml0TWVudVRvb2xzKCk7DQogICAgICAgICBp
bml0TWVudUhlbHAoKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSB2b2lkIGluaXRN
b2R1bGVzVUkgKCkgew0KICAgICAgICAgaW5pdE1vZHVsZXNNZW51cygpOw0KICAgICAgICAgaW5p
dE1vZHVsZXNBY3Rpb25zKCk7DQpAQCAtNDA3LDE0ICs0MDgsMTQgQEANCiAgICAgICAgIC8vIGFk
ZCBsYXN0IHJlY2VudGx5IHVzZWQgbGlzdCBfYmVmb3JlXyBleGl0IG1lbnUNCiAgICAgICAgIG1y
dUxpc3QgPSBuZXcgTGFzdFJlY2VudGx5VXNlZE1lbnVMaXN0KGZpbGUpOw0KIA0KLSAgICAgICAg
Ly8gYW5kIGV4aXQgbWVudSBlbnRyeSBzdGFydGluZyB3aXRoIHNlcGFyYXRvci4gDQorICAgICAg
ICAvLyBhbmQgZXhpdCBtZW51IGVudHJ5IHN0YXJ0aW5nIHdpdGggc2VwYXJhdG9yLg0KICAgICAg
ICAgZXhpdEFjdGlvbiA9IG5ldyBBY3Rpb25FeGl0KCk7DQogICAgICAgICBpZiAoIU9zVXRpbC5p
c01hY09TWCgpKSB7DQogICAgICAgICAgICAgZmlsZS5hZGRTZXBhcmF0b3IoKTsNCiAgICAgICAg
ICAgICBKTWVudUl0ZW0gZXhpdEl0ZW0gPSBmaWxlLmFkZChleGl0QWN0aW9uKTsNCiAgICAgICAg
ICAgICBzZXRNbmVtb25pYyhleGl0SXRlbSwgIkV4aXQiKTsNCi0gICAgICAgICAgICAvKiBUaGUg
IkNsb3NlIHdpbmRvdyIgc2hvcnRjdXQgKEFMVCtGNCkgYWN0dWFsbHkgY2FuJ3QgDQotICAgICAg
ICAgICAgICogYmUgcmVnaXN0ZXJlZCBhcyBhIHNob3J0Y3V0LCANCisgICAgICAgICAgICAvKiBU
aGUgIkNsb3NlIHdpbmRvdyIgc2hvcnRjdXQgKEFMVCtGNCkgYWN0dWFsbHkgY2FuJ3QNCisgICAg
ICAgICAgICAgKiBiZSByZWdpc3RlcmVkIGFzIGEgc2hvcnRjdXQsDQogICAgICAgICAgICAgICog
YmVjYXVzZSBpdCBjbG9zZXMgdGhlIGNvbmZpZ3VyYXRpb24gZGlhbG9nISAqLw0KICAgICAgICAg
ICAgIGV4aXRJdGVtLnNldEFjY2VsZXJhdG9yKEtleVN0cm9rZS5nZXRLZXlTdHJva2UoS2V5RXZl
bnQuVktfRjQsDQogICAgICAgICAgICAgICAgICAgICBJbnB1dEV2ZW50LkFMVF9NQVNLKSk7DQpA
QCAtNDMzLDcgKzQzNCw3IEBADQogICAgICAgICBlZGl0ID0gYWRkKG5ldyBKTWVudShtZW51TG9j
YWxpemUoIkVkaXQiKSkpOw0KICAgICAgICAgc2V0TW5lbW9uaWMoZWRpdCwgIkVkaXQiKTsNCiAN
Ci0vLyBDb21tZW50IG91dCB3aGVuIHdlIGFyZSByZWFkeSB0byByZWxlYXNlIHVuZG8vcmVkbyAg
ICAgICAgDQorLy8gQ29tbWVudCBvdXQgd2hlbiB3ZSBhcmUgcmVhZHkgdG8gcmVsZWFzZSB1bmRv
L3JlZG8NCiAvLyAgICAgICAgSk1lbnVJdGVtIHVuZG9JdGVtID0gZWRpdC5hZGQoDQogLy8gICAg
ICAgICAgICAgICAgUHJvamVjdEFjdGlvbnMuZ2V0SW5zdGFuY2UoKS5nZXRVbmRvQWN0aW9uKCkp
Ow0KIC8vICAgICAgICBzZXRNbmVtb25pYyh1bmRvSXRlbSwgIlVuZG8iKTsNCkBAIC01NDYsMTcg
KzU0NywxNyBAQA0KICAgICAgICAgc2V0TW5lbW9uaWMoem9vbVJlc2V0LCAiWm9vbSBSZXNldCIp
Ow0KICAgICAgICAgU2hvcnRjdXRNZ3IuYXNzaWduQWNjZWxlcmF0b3Ioem9vbVJlc2V0LCBTaG9y
dGN1dE1nci5BQ1RJT05fWk9PTV9SRVNFVCk7DQogDQotICAgICAgICBab29tQWN0aW9uUHJveHkg
em9vbUluQWN0aW9uID0gDQorICAgICAgICBab29tQWN0aW9uUHJveHkgem9vbUluQWN0aW9uID0N
CiAgICAgICAgICAgICBuZXcgWm9vbUFjdGlvblByb3h5KCgxLjApIC8gKFpPT01fRkFDVE9SKSk7
DQogICAgICAgICBKTWVudUl0ZW0gem9vbUluID0gem9vbS5hZGQoem9vbUluQWN0aW9uKTsNCiAg
ICAgICAgIHNldE1uZW1vbmljKHpvb21JbiwgIlpvb20gSW4iKTsNCiAgICAgICAgIFNob3J0Y3V0
TWdyLmFzc2lnbkFjY2VsZXJhdG9yKHpvb21JbiwgU2hvcnRjdXRNZ3IuQUNUSU9OX1pPT01fSU4p
Ow0KIA0KICAgICAgICAgdmlldy5hZGRTZXBhcmF0b3IoKTsNCi0gICAgICAgIA0KKw0KICAgICAg
ICAgSk1lbnUgZ3JpZCA9IChKTWVudSkgdmlldy5hZGQobmV3IEpNZW51KG1lbnVMb2NhbGl6ZSgi
QWRqdXN0IEdyaWQiKSkpOw0KICAgICAgICAgc2V0TW5lbW9uaWMoZ3JpZCwgIkFkanVzdCBHcmlk
Iik7DQotICAgICAgICBMaXN0PEFjdGlvbj4gZ3JpZEFjdGlvbnMgPSANCisgICAgICAgIExpc3Q8
QWN0aW9uPiBncmlkQWN0aW9ucyA9DQogICAgICAgICAgICAgQWN0aW9uQWRqdXN0R3JpZC5jcmVh
dGVBZGp1c3RHcmlkQWN0aW9ucyhmYWxzZSk7DQogICAgICAgICBCdXR0b25Hcm91cCBncm91cEdy
aWQgPSBuZXcgQnV0dG9uR3JvdXAoKTsNCiAgICAgICAgIEFjdGlvbkFkanVzdEdyaWQuc2V0R3Jv
dXAoZ3JvdXBHcmlkKTsNCkBAIC02MDcsNyArNjA4LDcgQEANCiAgICAgICogYnVpbGQgdG9nZXRo
ZXIgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHNhbWUgaXRlbXMgYXJlIHByZXNlbnQgaW4gYm90aCwg
YW5kDQogICAgICAqIGluIHRoZSBzYW1lIHNlcXVlbmNlLg0KICAgICAgKiA8cD4NCi0gICAgICog
DQorICAgICAqDQogICAgICAqIFRoZSBzZXF1ZW5jZSBvZiB0aGVzZSBpdGVtcyB3YXMgZGV0ZXJt
aW5lZCBieSBpc3N1ZSAxODIxLg0KICAgICAgKi8NCiAgICAgcHJvdGVjdGVkIHZvaWQgaW5pdE1l
bnVDcmVhdGUoKSB7DQpAQCAtNjM0LDcgKzYzNSw3IEBADQogICAgICAgICB0b29sYmFyVG9vbHMu
YWRkKChuZXcgQWN0aW9uU2VxdWVuY2VEaWFncmFtKCkpKTsNCiAgICAgICAgIFNob3J0Y3V0TWdy
LmFzc2lnbkFjY2VsZXJhdG9yKHNlcXVlbnpEaWFncmFtLA0KICAgICAgICAgICAgICAgICBTaG9y
dGN1dE1nci5BQ1RJT05fU0VRVUVOQ0VfRElBR1JBTSk7DQotICAgICAgICANCisNCiAgICAgICAg
IEpNZW51SXRlbSBjb2xsYWJvcmF0aW9uRGlhZ3JhbSA9DQogICAgICAgICAgICAgY3JlYXRlRGlh
Z3JhbU1lbnUuYWRkKG5ldyBBY3Rpb25Db2xsYWJvcmF0aW9uRGlhZ3JhbSgpKTsNCiAgICAgICAg
IHNldE1uZW1vbmljKGNvbGxhYm9yYXRpb25EaWFncmFtLCAiQ29sbGFib3JhdGlvbiBEaWFncmFt
Iik7DQpAQCAtNjYzLDcgKzY2NCw3IEBADQogICAgICAgICBTaG9ydGN1dE1nci5hc3NpZ25BY2Nl
bGVyYXRvcihkZXBsb3ltZW50RGlhZ3JhbSwNCiAgICAgICAgICAgICAgICAgU2hvcnRjdXRNZ3Iu
QUNUSU9OX0RFUExPWU1FTlRfRElBR1JBTSk7DQogDQotICAgICAgICBjcmVhdGVEaWFncmFtVG9v
bGJhciA9IA0KKyAgICAgICAgY3JlYXRlRGlhZ3JhbVRvb2xiYXIgPQ0KICAgICAgICAgICAgIChu
ZXcgVG9vbEJhckZhY3RvcnkodG9vbGJhclRvb2xzKSkuY3JlYXRlVG9vbEJhcigpOw0KICAgICAg
ICAgY3JlYXRlRGlhZ3JhbVRvb2xiYXIuc2V0TmFtZSgNCiAgICAgICAgICAgICAgICAgVHJhbnNs
YXRvci5sb2NhbGl6ZSgibWlzYy50b29sYmFyLmNyZWF0ZS1kaWFncmFtIikpOw0KQEAgLTY5Nywx
NiArNjk4LDE2IEBADQogICAgICAgICBpbml0RGlzdHJpYnV0ZU1lbnUoZGlzdHJpYnV0ZSk7DQog
ICAgICAgICBpbml0UmVvcmRlck1lbnUocmVvcmRlcik7DQogICAgIH0NCi0gICAgDQorDQogICAg
IC8qKg0KICAgICAgKiBJbml0aWFsaXplIHN1Ym1lbnVzIG9mIHRoZSBBbGlnbiBtZW51Lg0KLSAg
ICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGFsaWduDQogICAgICAqICAgICAgICAgICAg
dGhlIEFsaWduIG1lbnUNCiAgICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIHZvaWQgaW5pdEFs
aWduTWVudShKTWVudSBhbGlnbikgew0KICAgICAgICAgQWxpZ25BY3Rpb24gYSA9IG5ldyBBbGln
bkFjdGlvbihBbGlnbkFjdGlvbi5BTElHTl9UT1BTKTsNCi0gICAgICAgIGEucHV0VmFsdWUoQWN0
aW9uLlNNQUxMX0lDT04sIA0KKyAgICAgICAgYS5wdXRWYWx1ZShBY3Rpb24uU01BTExfSUNPTiwN
CiAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkZXJXcmFwcGVyLmxvb2t1cEljb24oIkFsaWdu
VG9wcyIpKTsNCiAgICAgICAgIEpNZW51SXRlbSBhbGlnblRvcHMgPSBhbGlnbi5hZGQoYSk7DQog
ICAgICAgICBzZXRNbmVtb25pYyhhbGlnblRvcHMsICJhbGlnbiB0b3BzIik7DQpAQCAtNzE0LDcg
KzcxNSw3IEBADQogDQogICAgICAgICBhID0gbmV3IEFsaWduQWN0aW9uKA0KICAgICAgICAgICAg
ICAgICBBbGlnbkFjdGlvbi5BTElHTl9CT1RUT01TKTsNCi0gICAgICAgIGEucHV0VmFsdWUoQWN0
aW9uLlNNQUxMX0lDT04sIA0KKyAgICAgICAgYS5wdXRWYWx1ZShBY3Rpb24uU01BTExfSUNPTiwN
CiAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkZXJXcmFwcGVyLmxvb2t1cEljb24oIkFsaWdu
Qm90dG9tcyIpKTsNCiAgICAgICAgIEpNZW51SXRlbSBhbGlnbkJvdHRvbXMgPSBhbGlnbi5hZGQo
YSk7DQogICAgICAgICBzZXRNbmVtb25pYyhhbGlnbkJvdHRvbXMsICJhbGlnbiBib3R0b21zIik7
DQpAQCAtNzIzLDcgKzcyNCw3IEBADQogDQogICAgICAgICBhID0gbmV3IEFsaWduQWN0aW9uKA0K
ICAgICAgICAgICAgICAgICBBbGlnbkFjdGlvbi5BTElHTl9SSUdIVFMpOw0KLSAgICAgICAgYS5w
dXRWYWx1ZShBY3Rpb24uU01BTExfSUNPTiwgDQorICAgICAgICBhLnB1dFZhbHVlKEFjdGlvbi5T
TUFMTF9JQ09OLA0KICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRlcldyYXBwZXIubG9va3Vw
SWNvbigiQWxpZ25SaWdodHMiKSk7DQogICAgICAgICBKTWVudUl0ZW0gYWxpZ25SaWdodHMgPSBh
bGlnbi5hZGQoYSk7DQogICAgICAgICBzZXRNbmVtb25pYyhhbGlnblJpZ2h0cywgImFsaWduIHJp
Z2h0cyIpOw0KQEAgLTczMiw3ICs3MzMsNyBAQA0KIA0KICAgICAgICAgYSA9IG5ldyBBbGlnbkFj
dGlvbigNCiAgICAgICAgICAgICAgICAgQWxpZ25BY3Rpb24uQUxJR05fTEVGVFMpOw0KLSAgICAg
ICAgYS5wdXRWYWx1ZShBY3Rpb24uU01BTExfSUNPTiwgDQorICAgICAgICBhLnB1dFZhbHVlKEFj
dGlvbi5TTUFMTF9JQ09OLA0KICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRlcldyYXBwZXIu
bG9va3VwSWNvbigiQWxpZ25MZWZ0cyIpKTsNCiAgICAgICAgIEpNZW51SXRlbSBhbGlnbkxlZnRz
ID0gYWxpZ24uYWRkKGEpOw0KICAgICAgICAgc2V0TW5lbW9uaWMoYWxpZ25MZWZ0cywgImFsaWdu
IGxlZnRzIik7DQpAQCAtNzQxLDcgKzc0Miw3IEBADQogDQogICAgICAgICBhID0gbmV3IEFsaWdu
QWN0aW9uKA0KICAgICAgICAgICAgICAgICBBbGlnbkFjdGlvbi5BTElHTl9IX0NFTlRFUlMpOw0K
LSAgICAgICAgYS5wdXRWYWx1ZShBY3Rpb24uU01BTExfSUNPTiwgDQorICAgICAgICBhLnB1dFZh
bHVlKEFjdGlvbi5TTUFMTF9JQ09OLA0KICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRlcldy
YXBwZXIubG9va3VwSWNvbigiQWxpZ25Ib3Jpem9udGFsQ2VudGVycyIpKTsNCiAgICAgICAgIEpN
ZW51SXRlbSBhbGlnbkhDZW50ZXJzID0gYWxpZ24uYWRkKGEpOw0KICAgICAgICAgc2V0TW5lbW9u
aWMoYWxpZ25IQ2VudGVycywNCkBAIC03NTEsNyArNzUyLDcgQEANCiANCiAgICAgICAgIGEgPSBu
ZXcgQWxpZ25BY3Rpb24oDQogICAgICAgICAgICAgICAgIEFsaWduQWN0aW9uLkFMSUdOX1ZfQ0VO
VEVSUyk7DQotICAgICAgICBhLnB1dFZhbHVlKEFjdGlvbi5TTUFMTF9JQ09OLCANCisgICAgICAg
IGEucHV0VmFsdWUoQWN0aW9uLlNNQUxMX0lDT04sDQogICAgICAgICAgICAgICAgIFJlc291cmNl
TG9hZGVyV3JhcHBlci5sb29rdXBJY29uKCJBbGlnblZlcnRpY2FsQ2VudGVycyIpKTsNCiAgICAg
ICAgIEpNZW51SXRlbSBhbGlnblZDZW50ZXJzID0gYWxpZ24uYWRkKGEpOw0KICAgICAgICAgc2V0
TW5lbW9uaWMoYWxpZ25WQ2VudGVycywgImFsaWduIHZlcnRpY2FsIGNlbnRlcnMiKTsNCkBAIC03
NjAsNyArNzYxLDcgQEANCiANCiAgICAgICAgIGEgPSBuZXcgQWxpZ25BY3Rpb24oDQogICAgICAg
ICAgICAgICAgIEFsaWduQWN0aW9uLkFMSUdOX1RPX0dSSUQpOw0KLSAgICAgICAgYS5wdXRWYWx1
ZShBY3Rpb24uU01BTExfSUNPTiwgDQorICAgICAgICBhLnB1dFZhbHVlKEFjdGlvbi5TTUFMTF9J
Q09OLA0KICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRlcldyYXBwZXIubG9va3VwSWNvbigi
QWxpZ25Ub0dyaWQiKSk7DQogICAgICAgICBKTWVudUl0ZW0gYWxpZ25Ub0dyaWQgPSBhbGlnbi5h
ZGQoYSk7DQogICAgICAgICBzZXRNbmVtb25pYyhhbGlnblRvR3JpZCwgImFsaWduIHRvIGdyaWQi
KTsNCkBAIC03NzAsMTQgKzc3MSwxNCBAQA0KIA0KICAgICAvKioNCiAgICAgICogSW5pdGlhbGl6
ZSBzdWJtZW51cyBvZiB0aGUgRGlzdHJpYnV0ZSBtZW51Lg0KLSAgICAgKiANCisgICAgICoNCiAg
ICAgICogQHBhcmFtIGRpc3RyaWJ1dGUNCiAgICAgICogICAgICAgICAgICB0aGUgRGlzdHJpYnV0
ZSBtZW51DQogICAgICAqLw0KICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGluaXREaXN0cmlidXRl
TWVudShKTWVudSBkaXN0cmlidXRlKSB7DQogICAgICAgICBEaXN0cmlidXRlQWN0aW9uIGEgPSBu
ZXcgRGlzdHJpYnV0ZUFjdGlvbigNCiAgICAgICAgICAgICAgICAgRGlzdHJpYnV0ZUFjdGlvbi5I
X1NQQUNJTkcpOw0KLSAgICAgICAgYS5wdXRWYWx1ZShBY3Rpb24uU01BTExfSUNPTiwgDQorICAg
ICAgICBhLnB1dFZhbHVlKEFjdGlvbi5TTUFMTF9JQ09OLA0KICAgICAgICAgICAgICAgICBSZXNv
dXJjZUxvYWRlcldyYXBwZXIubG9va3VwSWNvbigNCiAgICAgICAgICAgICAgICAgICAgICAgICAi
RGlzdHJpYnV0ZUhvcml6b250YWxTcGFjaW5nIikpOw0KICAgICAgICAgSk1lbnVJdGVtIGRpc3Ry
aWJ1dGVIU3BhY2luZyA9IGRpc3RyaWJ1dGUuYWRkKGEpOw0KQEAgLTc4OCw3ICs3ODksNyBAQA0K
IA0KICAgICAgICAgYSA9IG5ldyBEaXN0cmlidXRlQWN0aW9uKA0KICAgICAgICAgICAgICAgICBE
aXN0cmlidXRlQWN0aW9uLkhfQ0VOVEVSUyk7DQotICAgICAgICBhLnB1dFZhbHVlKEFjdGlvbi5T
TUFMTF9JQ09OLCANCisgICAgICAgIGEucHV0VmFsdWUoQWN0aW9uLlNNQUxMX0lDT04sDQogICAg
ICAgICAgICAgICAgIFJlc291cmNlTG9hZGVyV3JhcHBlci5sb29rdXBJY29uKA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICJEaXN0cmlidXRlSG9yaXpvbnRhbENlbnRlcnMiKSk7DQogICAgICAg
ICBKTWVudUl0ZW0gZGlzdHJpYnV0ZUhDZW50ZXJzID0gZGlzdHJpYnV0ZS5hZGQoYSk7DQpAQCAt
Nzk5LDcgKzgwMCw3IEBADQogDQogICAgICAgICBhID0gbmV3IERpc3RyaWJ1dGVBY3Rpb24oDQog
ICAgICAgICAgICAgICAgIERpc3RyaWJ1dGVBY3Rpb24uVl9TUEFDSU5HKTsNCi0gICAgICAgIGEu
cHV0VmFsdWUoQWN0aW9uLlNNQUxMX0lDT04sIA0KKyAgICAgICAgYS5wdXRWYWx1ZShBY3Rpb24u
U01BTExfSUNPTiwNCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkZXJXcmFwcGVyLmxvb2t1
cEljb24oIkRpc3RyaWJ1dGVWZXJ0aWNhbFNwYWNpbmciKSk7DQogICAgICAgICBKTWVudUl0ZW0g
ZGlzdHJpYnV0ZVZTcGFjaW5nID0gZGlzdHJpYnV0ZS5hZGQoYSk7DQogICAgICAgICBzZXRNbmVt
b25pYyhkaXN0cmlidXRlVlNwYWNpbmcsDQpAQCAtODA5LDcgKzgxMCw3IEBADQogDQogICAgICAg
ICBhID0gbmV3IERpc3RyaWJ1dGVBY3Rpb24oDQogICAgICAgICAgICAgICAgIERpc3RyaWJ1dGVB
Y3Rpb24uVl9DRU5URVJTKTsNCi0gICAgICAgIGEucHV0VmFsdWUoQWN0aW9uLlNNQUxMX0lDT04s
IA0KKyAgICAgICAgYS5wdXRWYWx1ZShBY3Rpb24uU01BTExfSUNPTiwNCiAgICAgICAgICAgICAg
ICAgUmVzb3VyY2VMb2FkZXJXcmFwcGVyLmxvb2t1cEljb24oIkRpc3RyaWJ1dGVWZXJ0aWNhbENl
bnRlcnMiKSk7DQogICAgICAgICBKTWVudUl0ZW0gZGlzdHJpYnV0ZVZDZW50ZXJzID0gZGlzdHJp
YnV0ZS5hZGQoYSk7DQogICAgICAgICBzZXRNbmVtb25pYyhkaXN0cmlidXRlVkNlbnRlcnMsDQpA
QCAtODIwLDcgKzgyMSw3IEBADQogDQogICAgIC8qKg0KICAgICAgKiBJbml0aWFsaXplIHRoZSBz
dWJtZW51cyBmb3IgdGhlIFJlb3JkZXIgbWVudS4NCi0gICAgICogDQorICAgICAqDQogICAgICAq
IEBwYXJhbSByZW9yZGVyDQogICAgICAqICAgICAgICAgICAgdGhlIG1haW4gUmVvcmRlciBtZW51
DQogICAgICAqLw0KQEAgLTkyNSw4ICs5MjYsOCBAQA0KICAgICAgICAgdG9vbHMgPSBuZXcgSk1l
bnUobWVudUxvY2FsaXplKCJUb29scyIpKTsNCiAgICAgICAgIHNldE1uZW1vbmljKHRvb2xzLCAi
VG9vbHMiKTsNCiANCi0gICAgICAgIC8vIFRPRE86IEFkZCBlbXB0eSBwbGFjZWhvbGRlciBoZXJl
PyAgICAgICAgDQotICAgICAgICANCisgICAgICAgIC8vIFRPRE86IEFkZCBlbXB0eSBwbGFjZWhv
bGRlciBoZXJlPw0KKw0KICAgICAgICAgYWRkKHRvb2xzKTsNCiANCiAgICAgfQ0KQEAgLTk1MSw3
ICs5NTIsNyBAQA0KICAgICAgICAgc2V0TW5lbW9uaWMoc3lzdGVtSW5mbywgIlN5c3RlbSBJbmZv
cm1hdGlvbiIpOw0KICAgICAgICAgU2hvcnRjdXRNZ3IuYXNzaWduQWNjZWxlcmF0b3Ioc3lzdGVt
SW5mbywNCiAgICAgICAgICAgICAgICAgU2hvcnRjdXRNZ3IuQUNUSU9OX1NZU1RFTV9JTkZPUk1B
VElPTik7DQotICAgICAgICANCisNCiAgICAgICAgIGFib3V0QWN0aW9uID0gbmV3IEFjdGlvbkFi
b3V0QXJnb1VNTCgpOw0KICAgICAgICAgaWYgKCFPc1V0aWwuaXNNYWNPU1goKSkgew0KICAgICAg
ICAgICAgIGhlbHAuYWRkU2VwYXJhdG9yKCk7DQpAQCAtOTYwLDI2ICs5NjEsMjYgQEANCiAgICAg
ICAgICAgICBTaG9ydGN1dE1nci5hc3NpZ25BY2NlbGVyYXRvcihhYm91dEFyZ29VTUwsDQogICAg
ICAgICAgICAgICAgICAgICBTaG9ydGN1dE1nci5BQ1RJT05fQUJPVVRfQVJHT1VNTCk7DQogICAg
ICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIC8vIHNldEhlbHBNZW51KGhlbHApOw0KICAg
ICAgICAgYWRkKGhlbHApOw0KICAgICB9DQotICAgIA0KKw0KICAgICBwcml2YXRlIHZvaWQgaW5p
dE1vZHVsZXNNZW51cygpIHsNCiAgICAgICAgIGZvciAoSk1lbnUgbWVudSA6IG1vZHVsZU1lbnVz
KSB7DQogICAgICAgICAgICAgYWRkKG1lbnUpOw0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0K
Kw0KICAgICBwcml2YXRlIHZvaWQgaW5pdE1vZHVsZXNBY3Rpb25zKCkgew0KLSAgICAgICAgZm9y
IChBY3Rpb24gYWN0aW9uIDogbW9kdWxlQ3JlYXRlRGlhZ3JhbUFjdGlvbnMpIHsgICAgICAgICAg
ICANCisgICAgICAgIGZvciAoQWN0aW9uIGFjdGlvbiA6IG1vZHVsZUNyZWF0ZURpYWdyYW1BY3Rp
b25zKSB7DQogICAgICAgICAgICAgY3JlYXRlRGlhZ3JhbVRvb2xiYXIuYWRkKGFjdGlvbik7DQog
ICAgICAgICB9DQogICAgIH0NCiANCiAgICAgLyoqDQogICAgICAqIEdldCB0aGUgY3JlYXRlIGRp
YWdyYW0gdG9vbGJhci4NCi0gICAgICogDQorICAgICAqDQogICAgICAqIEByZXR1cm4gVmFsdWUg
b2YgcHJvcGVydHkgX2NyZWF0ZURpYWdyYW1Ub29sYmFyLg0KICAgICAgKi8NCiAgICAgcHVibGlj
IEpUb29sQmFyIGdldENyZWF0ZURpYWdyYW1Ub29sYmFyKCkgew0KQEAgLTk4OSw3ICs5OTAsNyBA
QA0KICAgICAvKioNCiAgICAgICogR2V0IHRoZSBjcmVhdGUgZGlhZ3JhbSBtZW51LiBQcm92aWRl
ZCB0byBhbGxvdyBwbHVnaW5zDQogICAgICAqIHRvIGFwcGVhbmQgdGhlaXIgb3duIGFjdGlvbnMg
dG8gdGhpcyBtZW51Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHJldHVybiBWYWx1ZSBv
ZiBwcm9wZXJ0eSBjcmVhdGVEaWFncmFtTWVudQ0KICAgICAgKi8NCiAgICAgcHVibGljIEpNZW51
IGdldENyZWF0ZURpYWdyYW1NZW51KCkgew0KQEAgLTk5OCwxNCArOTk5LDE0IEBADQogDQogICAg
IC8qKg0KICAgICAgKiBHZXQgdGhlIGVkaXQgdG9vbGJhci4NCi0gICAgICogDQorICAgICAqDQog
ICAgICAqIEByZXR1cm4gdGhlIGVkaXQgdG9vbGJhci4NCiAgICAgICovDQogICAgIHB1YmxpYyBK
VG9vbEJhciBnZXRFZGl0VG9vbGJhcigpIHsNCiAgICAgICAgIGlmIChlZGl0VG9vbGJhciA9PSBu
dWxsKSB7DQogICAgICAgICAgICAgLyogQ3JlYXRlIHRoZSBlZGl0IHRvb2xiYXIgYmFzZWQgb24g
dGhlIE1lbnUuDQotICAgICAgICAgICAgICogQWxsIG1lbnVJdGVtcyB0aGF0IGhhdmUgYW4gSWNv
biBhcmUgcHJlc3VtZWQgdG8gDQotICAgICAgICAgICAgICogYmUgYmFzZWQgdXBvbiBhbiBBY3Rp
b24sIA0KKyAgICAgICAgICAgICAqIEFsbCBtZW51SXRlbXMgdGhhdCBoYXZlIGFuIEljb24gYXJl
IHByZXN1bWVkIHRvDQorICAgICAgICAgICAgICogYmUgYmFzZWQgdXBvbiBhbiBBY3Rpb24sDQog
ICAgICAgICAgICAgICogYW5kIHRoZXNlIEFjdGlvbnMgYXJlIHVzZWQgaW4gdGhlIHRvb2xiYXIu
ICAqLw0KICAgICAgICAgICAgIENvbGxlY3Rpb248QWN0aW9uPiBjID0gbmV3IEFycmF5TGlzdDxB
Y3Rpb24+KCk7DQogICAgICAgICAgICAgZm9yIChPYmplY3QgbWkgOiBlZGl0LmdldE1lbnVDb21w
b25lbnRzKCkpIHsNCkBAIC0xMDI0LDkgKzEwMjUsOSBAQA0KIA0KICAgICAvKioNCiAgICAgICog
R2V0dGVyIGZvciB0aGUgZmlsZSB0b29sYmFyLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICog
QHJldHVybiB0aGUgZmlsZSB0b29sYmFyLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICovDQog
ICAgIHB1YmxpYyBKVG9vbEJhciBnZXRGaWxlVG9vbGJhcigpIHsNCiAgICAgICAgIHJldHVybiBm
aWxlVG9vbGJhcjsNCkBAIC0xMDM0LDcgKzEwMzUsNyBAQA0KIA0KICAgICAvKioNCiAgICAgICog
R2V0dGVyIGZvciB0aGUgdmlldyB0b29sYmFyLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICog
QHJldHVybiB0aGUgdmlldyB0b29sYmFyLg0KICAgICAgKi8NCiAgICAgcHVibGljIEpUb29sQmFy
IGdldFZpZXdUb29sYmFyKCkgew0KQEAgLTEwNTMsMTAgKzEwNTQsMTAgQEANCiAgICAgLyoqDQog
ICAgICAqIFByZXBhcmVzIG9uZSBwYXJ0IG9mIHRoZSBrZXkgZm9yIG1lbnUtIG9yL2FuZCBtZW51
aXRlbS1tbmVtb25pY3MgdXNlZCBpbg0KICAgICAgKiBtZW51LnByb3BlcnRpZXMuDQotICAgICAq
IA0KKyAgICAgKg0KICAgICAgKiBUaGUgbWV0aG9kIGNoYW5nZXMgdGhlIHBhcmFtZXRlciBrZXkg
dG8gbG93ZXIgY2FzZXMuIFNwYWNlcyBpbiB0aGUNCiAgICAgICogcGFyYW1ldGVyIGtleSBhcmUg
Y2hhbmdlZCB0byBoeXBoZW5zLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGtl
eQ0KICAgICAgKiBAcmV0dXJuIHRoZSBwcmVwYXJlZCBrZXkNCiAgICAgICovDQpAQCAtMTA2Niwx
MSArMTA2NywxMSBAQA0KIA0KICAgICAvKioNCiAgICAgICogQWRkcyB0aGUgZW50cnkgdG8gdGhl
IG1ydSBsaXN0Lg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGZpbGVuYW1lDQog
ICAgICAqICAgICAgICAgICAgb2YgdGhlIHByb2plY3QNCi0gICAgICogICAgICAgICAgICANCi0g
ICAgICogVE9ETzogVGhpcyBzaG91bGQgbGlzdGVuIGZvciBmaWxlIHNhdmUgZXZlbnRzIHJhdGhl
ciB0aGFuIGJlaW5nIGNhbGxlZCANCisgICAgICoNCisgICAgICogVE9ETzogVGhpcyBzaG91bGQg
bGlzdGVuIGZvciBmaWxlIHNhdmUgZXZlbnRzIHJhdGhlciB0aGFuIGJlaW5nIGNhbGxlZA0KICAg
ICAgKiBkaXJlY3RseSAtIHRmbS4NCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIGFkZEZpbGVT
YXZlZChTdHJpbmcgZmlsZW5hbWUpIHsNCkBAIC0xMDc5LDcgKzEwODAsNyBAQA0KIA0KICAgICAv
KioNCiAgICAgICogR2V0dGVyIGZvciB0aGUgVG9vbHMgbWVudS4NCi0gICAgICogDQorICAgICAq
DQogICAgICAqIEByZXR1cm4gVGhlIFRvb2xzIG1lbnUuDQogICAgICAqLw0KICAgICBwdWJsaWMg
Sk1lbnUgZ2V0VG9vbHMoKSB7DQpAQCAtMTExMCw3ICsxMTExLDcgQEANCiAgICAgICAgICAgICAg
ICAgICAgIGFjdGlvbi5zZXRFbmFibGVkKGFjdGlvbi5pc0VuYWJsZWQoKSk7DQogICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICB9DQotICAgICAgICB9KTsgICAgICAgIA0KKyAgICAgICAg
fSk7DQogICAgIH0NCiANCiAgICAgcHVibGljIHZvaWQgdGFyZ2V0QWRkZWQoVGFyZ2V0RXZlbnQg
ZSkgew0KQEAgLTExMjQsMTAgKzExMjUsMTAgQEANCiAgICAgcHVibGljIHZvaWQgdGFyZ2V0U2V0
KFRhcmdldEV2ZW50IGUpIHsNCiAgICAgICAgIHNldFRhcmdldCgpOw0KICAgICB9DQotICAgIA0K
Kw0KICAgICAvKioNCiAgICAgICogQWRkIGEgbmV3IG1lbnUgdG8gdGhlIG1haW4gdG9vbGJhci4N
Ci0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBtZW51IHRoZSBtZW51IHRvIGJlIGFk
ZGVkDQogICAgICAqLw0KICAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZW51SXRlbShK
TWVudSBtZW51KSB7DQpAQCAtMTEzNyw2MiArMTEzOCw2MiBAQA0KICAgICAvKioNCiAgICAgICog
QWRkIGEgbmV3IEFjdGlvbiB0byB0aGUgQ3JlYXRlIERpYWdyYW0gdG9vbGJhci4gIFRoaXMgY2Fu
IGJlIHVzZWQgdG8NCiAgICAgICogcmVnaXN0ZXIgY3JlYXRlIGFjdGlvbnMgZm9yIG5ldyBkaWFn
cmFtIHR5cGVzIGJ5IHBsdWdpbiBtb2R1bGVzLg0KLSAgICAgKiANCisgICAgICoNCiAgICAgICog
QHBhcmFtIGFjdGlvbiB0aGUgY3JlYXRlIGFjdGlvbiB0byBiZSByZWdpc3RlcmVkLg0KICAgICAg
Ki8NCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ3JlYXRlRGlhZ3JhbUFjdGlvbihB
Y3Rpb24gYWN0aW9uKSB7DQogICAgICAgICBtb2R1bGVDcmVhdGVEaWFncmFtQWN0aW9ucy5hZGQo
YWN0aW9uKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSB2b2lkIHJlZ2lzdGVyRm9y
TWFjRXZlbnRzKCkgew0KLSAgICAgICAgTE9HLmluZm8oIkRldGVybWluaW5nIGlmIE1hYyBPUyB0
byBzZXQgc3BlY2lhbCBoYW5kbGVycyIpOw0KKyAgICAgICAgTE9HLmxvZyhMZXZlbC5JTkZPLCAi
RGV0ZXJtaW5pbmcgaWYgTWFjIE9TIHRvIHNldCBzcGVjaWFsIGhhbmRsZXJzIik7DQogICAgICAg
ICBpZiAoT3NVdGlsLmlzTWFjT1NYKCkpIHsNCi0gICAgICAgICAgICBMT0cuaW5mbygiU3lzdGVt
IGlzIE1hYyBPUyAtIHNldHRpbmcgc3BlY2lhbCBoYW5kbGVycyIpOw0KKyAgICAgICAgICAgIExP
Ry5sb2coTGV2ZWwuSU5GTywgIlN5c3RlbSBpcyBNYWMgT1MgLSBzZXR0aW5nIHNwZWNpYWwgaGFu
ZGxlcnMiKTsNCiAgICAgICAgICAgICB0cnkgew0KLSAgICAgICAgICAgICAgICAvLyBHZW5lcmF0
ZSBhbmQgcmVnaXN0ZXIgdGhlIE9TWEFkYXB0ZXIsIHBhc3NpbmcgdGhlIG1ldGhvZHMgDQorICAg
ICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGFuZCByZWdpc3RlciB0aGUgT1NYQWRhcHRlciwgcGFz
c2luZyB0aGUgbWV0aG9kcw0KICAgICAgICAgICAgICAgICAvLyB3ZSB3aXNoIHRvIHVzZSBhcyBk
ZWxlZ2F0ZXMgZm9yIHZhcmlvdXMNCiAgICAgICAgICAgICAgICAgLy8gY29tLmFwcGxlLmVhd3Qu
QXBwbGljYXRpb25MaXN0ZW5lciBtZXRob2RzDQotICAgICAgICAgICAgICAgIExPRy5pbmZvKCJS
ZWdpc3RlcmluZyBRdWl0IGhhbmRsZXIgZm9yIE1hYyIpOw0KKyAgICAgICAgICAgICAgICBMT0cu
bG9nKExldmVsLklORk8sICJSZWdpc3RlcmluZyBRdWl0IGhhbmRsZXIgZm9yIE1hYyIpOw0KICAg
ICAgICAgICAgICAgICBPU1hBZGFwdGVyLnNldFF1aXRIYW5kbGVyKHRoaXMsIGdldENsYXNzKCku
Z2V0TWV0aG9kKA0KICAgICAgICAgICAgICAgICAgICAgICAgICJtYWNRdWl0IiwgKENsYXNzW10p
IG51bGwpKTsNCi0gICAgICAgICAgICAgICAgTE9HLmluZm8oIlJlZ2lzdGVyaW5nIEFib3V0IGhh
bmRsZXIgZm9yIE1hYyIpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJS
ZWdpc3RlcmluZyBBYm91dCBoYW5kbGVyIGZvciBNYWMiKTsNCiAgICAgICAgICAgICAgICAgT1NY
QWRhcHRlci5zZXRBYm91dEhhbmRsZXIodGhpcywgZ2V0Q2xhc3MoKS5nZXRNZXRob2QoDQogICAg
ICAgICAgICAgICAgICAgICAgICAgIm1hY0Fib3V0IiwgKENsYXNzW10pIG51bGwpKTsNCi0gICAg
ICAgICAgICAgICAgTE9HLmluZm8oIlJlZ2lzdGVyaW5nIFByZWZlcmVuY2VzIGhhbmRsZXIgZm9y
IE1hYyIpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJSZWdpc3Rlcmlu
ZyBQcmVmZXJlbmNlcyBoYW5kbGVyIGZvciBNYWMiKTsNCiAgICAgICAgICAgICAgICAgT1NYQWRh
cHRlci5zZXRQcmVmZXJlbmNlc0hhbmRsZXIodGhpcywgZ2V0Q2xhc3MoKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgIC5nZXRNZXRob2QoIm1hY1ByZWZlcmVuY2VzIiwgKENsYXNzW10pIG51bGwp
KTsNCi0gICAgICAgICAgICAgICAgTE9HLmluZm8oIlJlZ2lzdGVyaW5nIEZpbGUgaGFuZGxlciBm
b3IgTWFjIik7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIlJlZ2lzdGVy
aW5nIEZpbGUgaGFuZGxlciBmb3IgTWFjIik7DQogICAgICAgICAgICAgICAgIE9TWEFkYXB0ZXIu
c2V0RmlsZUhhbmRsZXIodGhpcywgZ2V0Q2xhc3MoKS5nZXRNZXRob2QoDQogICAgICAgICAgICAg
ICAgICAgICAgICAgIm1hY09wZW5GaWxlIiwgbmV3IENsYXNzW10ge1N0cmluZy5jbGFzc30pKTsN
Ci0gICAgICAgICAgICAgICAgTE9HLmluZm8oIkFsbCBNYWMgaGFuZGxlcnMgc2V0Iik7DQorICAg
ICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuSU5GTywgIkFsbCBNYWMgaGFuZGxlcnMgc2V0Iik7
DQogICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICAgICAg
TE9HLmVycm9yKCJFcnJvciB3aGlsZSBsb2FkaW5nIHRoZSBPU1hBZGFwdGVyOiIsIGUpOw0KKyAg
ICAgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkVycm9yIHdoaWxlIGxvYWRpbmcg
dGhlIE9TWEFkYXB0ZXI6IiwgZSk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9
DQotICAgIA0KKw0KICAgICAvKioNCiAgICAgICogSW50ZXJuYWwgdXNlIG9ubHkuICBEbyBub3Qg
dXNlLg0KICAgICAgKi8NCiAgICAgcHVibGljIGJvb2xlYW4gbWFjUXVpdCgpIHsNCi0gICAgICAg
IExPRy5pbmZvKCJRdWl0IGhhcyBiZWVuIGNob3NlbiBvbiBhIE1hYyIpOw0KKyAgICAgICAgTE9H
LmxvZyhMZXZlbC5JTkZPLCAiUXVpdCBoYXMgYmVlbiBjaG9zZW4gb24gYSBNYWMiKTsNCiAgICAg
ICAgIHJldHVybiBQcm9qZWN0QnJvd3Nlci5nZXRJbnN0YW5jZSgpLnRyeUV4aXQoKTsNCiAgICAg
fQ0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEludGVybmFsIHVzZSBvbmx5LiAgRG8gbm90
IHVzZS4NCiAgICAgICovDQogICAgIHB1YmxpYyB2b2lkIG1hY0Fib3V0KCkgew0KICAgICAgICAg
YWJvdXRBY3Rpb24uYWN0aW9uUGVyZm9ybWVkKG51bGwpOw0KICAgICB9DQotICAgIA0KKw0KICAg
ICAvKioNCiAgICAgICogSW50ZXJuYWwgdXNlIG9ubHkuICBEbyBub3QgdXNlLg0KICAgICAgKi8N
CiAgICAgcHVibGljIHZvaWQgbWFjUHJlZmVyZW5jZXMoKSB7DQogICAgICAgICBzZXR0aW5nc0Fj
dGlvbi5hY3Rpb25QZXJmb3JtZWQobnVsbCk7DQogICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0K
ICAgICAgKiBJbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCB1c2UuDQogICAgICAqIEBwYXJhbSBm
aWxlbmFtZSBuYW1lIG9mIGZpbGUgdG8gYmUgb3BlbmVkDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMv
YXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2NtZC9MYXN0UmVjZW50bHlVc2VkTWVudUxp
c3QuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJn
b3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2NtZC9MYXN0UmVj
ZW50bHlVc2VkTWVudUxpc3QuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZy
Mj0xOTkwNw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC91aS9jbWQvTGFzdFJlY2VudGx5VXNlZE1lbnVMaXN0LmphdmEJKG9y
aWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvY21k
L0xhc3RSZWNlbnRseVVzZWRNZW51TGlzdC5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0K
QEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENv
cHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICog
YXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMg
TGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFu
ZCBpcyBhdmFpbGFibGUgYXQNCkBAIC0zOCwxMyArMzgsMTUgQEANCiANCiBwYWNrYWdlIG9yZy5h
cmdvdW1sLnVpLmNtZDsNCiANCitpbXBvcnQgamF2YS5pby5GaWxlOw0KKw0KIGltcG9ydCBqYXZh
eC5zd2luZy5KTWVudTsNCiBpbXBvcnQgamF2YXguc3dpbmcuSk1lbnVJdGVtOw0KKw0KIGltcG9y
dCBvcmcuYXJnb3VtbC5hcHBsaWNhdGlvbi5hcGkuQXJnbzsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
Y29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5jb25maWd1
cmF0aW9uLkNvbmZpZ3VyYXRpb25LZXk7DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVtbC51aS5BY3Rp
b25SZW9wZW5Qcm9qZWN0Ow0KLWltcG9ydCBqYXZhLmlvLkZpbGU7DQogDQogLy8gVE9ETzogVGhp
cyBjbGFzcyBpcyBwYXJ0IG9mIGEgZGVwZW5kZW5jeSBjeWNsZSB3aXRoIFByb2plY3RCcm93c2Vy
IGFuZA0KIC8vIEdlbmVyaWNBcmdvTWVudUJhciwgYnV0IHNob3VsZCAgYmUgZml4ZWQgaWYgcHJv
amVjdCBvcGVuL2Nsb3NlIGlzIG1vdmVkDQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VpL2NtZC9TaG9ydGN1dE1nci5qYXZhDQpVcmw6IGh0dHA6Ly9h
cmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvY21kL1Nob3J0Y3V0TWdyLmphdmE/dmlldz1kaWZmJnBh
dGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvY21kL1Nob3J0Y3V0TWdy
LmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdWkvY21kL1Nob3J0Y3V0TWdyLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAt
MSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJp
Z2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykg
MjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUg
bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNl
bnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlz
IGF2YWlsYWJsZSBhdA0KQEAgLTQ4LDYgKzQ4LDggQEANCiBpbXBvcnQgamF2YS51dGlsLkl0ZXJh
dG9yOw0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLlN0cmluZ1Rv
a2VuaXplcjsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEu
dXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuQWJzdHJhY3RBY3Rp
b247DQogaW1wb3J0IGphdmF4LnN3aW5nLkpDb21wb25lbnQ7DQpAQCAtNTUsNyArNTcsNiBAQA0K
IGltcG9ydCBqYXZheC5zd2luZy5KUGFuZWw7DQogaW1wb3J0IGphdmF4LnN3aW5nLktleVN0cm9r
ZTsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdv
dW1sLmNvZ25pdGl2ZS5jcml0aWNzLnVpLkFjdGlvbk9wZW5Dcml0aWNzOw0KIGltcG9ydCBvcmcu
YXJnb3VtbC5jb2duaXRpdmUudWkuQWN0aW9uQXV0b0NyaXRpcXVlOw0KIGltcG9ydCBvcmcuYXJn
b3VtbC5jb2duaXRpdmUudWkuQWN0aW9uT3BlbkRlY2lzaW9uczsNCkBAIC05Myw4ICs5NCw4IEBA
DQogaW1wb3J0IG9yZy50aWdyaXMuZ2VmLmJhc2UuWm9vbUFjdGlvbjsNCiANCiAvKioNCi0gKiBU
aGlzIGNsYXNzIG1hbmFnZXMgYWxsIEFyZ28ncyBzaG9ydGN1dHMNCi0gKiANCisgKiBUaGlzIGNs
YXNzIG1hbmFnZXMgYWxsIEFyZ28ncyBzaG9ydGN1dHMuDQorICoNCiAgKiBAYXV0aG9yIG5pcnV4
DQogICovDQogcHVibGljIGNsYXNzIFNob3J0Y3V0TWdyIHsNCkBAIC0xMjcsNyArMTI4LDcgQEAN
CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX1JFTU9WRV9GUk9NX0RJQUdS
QU0gPSAicmVtb3ZlRnJvbURpYWdyYW0iOw0KIA0KICAgICAvKiogQWN0aW9uIGtleSBmb3IgZGVs
ZXRlIG1vZGVsIGVsZW1lbnRzICovDQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFD
VElPTl9ERUxFVEVfTU9ERUxfRUxFTUVOVFMgPSANCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBT
dHJpbmcgQUNUSU9OX0RFTEVURV9NT0RFTF9FTEVNRU5UUyA9DQogICAgICAgICAiZGVsZXRlTW9k
ZWxFbGVtZW50cyI7DQogDQogICAgIC8qKiBBY3Rpb24ga2V5IGZvciB6b29tIG91dCAqLw0KQEAg
LTE0MCw3ICsxNDEsNyBAQA0KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05f
RklORCA9ICJmaW5kIjsNCiANCiAgICAgLyoqIEFjdGlvbiBrZXkgZm9yIGdlbmVyYXRlIGFsbCBj
bGFzc2VzICovDQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9HRU5FUkFU
RV9BTExfQ0xBU1NFUyA9IA0KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05f
R0VORVJBVEVfQUxMX0NMQVNTRVMgPQ0KICAgICAgICAgImdlbmVyYXRlQWxsQ2xhc3NlcyI7DQog
DQogICAgIC8qKiBBY3Rpb24ga2V5IGZvciBhbGlnbiByaWdodHMgKi8NCkBAIC0xNzQsNyArMTc1
LDcgQEANCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX1NBVkVfQUxMX0dS
QVBISUNTID0gInNhdmVBbGxHcmFwaGljcyI7DQogDQogICAgIC8qKiBBY3Rpb24ga2V5IGZvciBu
YXZpZ2F0ZSBmb3J3YXJkICovDQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElP
Tl9OQVZJR0FURV9GT1JXQVJEID0gDQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFD
VElPTl9OQVZJR0FURV9GT1JXQVJEID0NCiAgICAgICAgICJuYXZpZ2F0ZVRhcmdldEZvcndhcmQi
Ow0KIA0KICAgICAvKiogQWN0aW9uIGtleSBmb3IgbmF2aWdhdGUgYmFjayAqLw0KQEAgLTIyMCw3
ICsyMjEsNyBAQA0KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fU0VRVUVO
Q0VfRElBR1JBTSA9ICJzZXF1ZW5jZURpYWdyYW1zIjsNCiANCiAgICAgLyoqIEFjdGlvbiBrZXkg
Zm9yIGNvbGxhYm9yYXRpb24gZGlhZ3JhbSAqLw0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0
cmluZyBBQ1RJT05fQ09MTEFCT1JBVElPTl9ESUFHUkFNID0gDQorICAgIHB1YmxpYyBzdGF0aWMg
ZmluYWwgU3RyaW5nIEFDVElPTl9DT0xMQUJPUkFUSU9OX0RJQUdSQU0gPQ0KICAgICAgICAgImNv
bGxhYm9yYXRpb25EaWFncmFtcyI7DQogDQogICAgIC8qKiBBY3Rpb24ga2V5IGZvciBzdGF0ZSBk
aWFncmFtICovDQpAQCAtMjM2LDExICsyMzcsMTEgQEANCiAgICAgcHVibGljIHN0YXRpYyBmaW5h
bCBTdHJpbmcgQUNUSU9OX0dFTkVSQVRFX09ORSA9ICJnZW5lcmF0ZU9uZSI7DQogDQogICAgIC8q
KiBBY3Rpb24ga2V5IGZvciBnZW5lcmF0ZSBwcm9qZWN0IGNvZGUgKi8NCi0gICAgcHVibGljIHN0
YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX0dFTkVSQVRFX1BST0pFQ1RfQ09ERSA9IA0KKyAgICBw
dWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fR0VORVJBVEVfUFJPSkVDVF9DT0RFID0N
CiAgICAgICAgICJnZW5lcmF0ZVByb2plY3RDb2RlIjsNCiANCiAgICAgLyoqIEFjdGlvbiBrZXkg
Zm9yIGdlbmVyYXRpb24gc2V0dGluZ3MgKi8NCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJp
bmcgQUNUSU9OX0dFTkVSQVRJT05fU0VUVElOR1MgPSANCisgICAgcHVibGljIHN0YXRpYyBmaW5h
bCBTdHJpbmcgQUNUSU9OX0dFTkVSQVRJT05fU0VUVElOR1MgPQ0KICAgICAgICAgImdlbmVyYXRp
b25TZXR0aW5ncyI7DQogDQogICAgIC8qKiBBY3Rpb24ga2V5IGZvciBwcmVmZXJyZWQgc2l6ZSAq
Lw0KQEAgLTI4MywxOSArMjg0LDE5IEBADQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5n
IEFDVElPTl9BTElHTl9UT19HUklEID0gImFsaWduVG9HcmlkIjsNCiANCiAgICAgLyoqIEFjdGlv
biBrZXkgZm9yIGRpc3RyaWJ1dGUgaCBzcGFjaW5nICovDQotICAgIHB1YmxpYyBzdGF0aWMgZmlu
YWwgU3RyaW5nIEFDVElPTl9ESVNUUklCVVRFX0hfU1BBQ0lORyA9IA0KKyAgICBwdWJsaWMgc3Rh
dGljIGZpbmFsIFN0cmluZyBBQ1RJT05fRElTVFJJQlVURV9IX1NQQUNJTkcgPQ0KICAgICAgICAg
ImRpc3RyaWJ1dGVIU3BhY2luZyI7DQogDQogICAgIC8qKiBBY3Rpb24ga2V5IGZvciBkaXN0cmli
dXRlIGggY2VudGVycyAqLw0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05f
RElTVFJJQlVURV9IX0NFTlRFUlMgPSANCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcg
QUNUSU9OX0RJU1RSSUJVVEVfSF9DRU5URVJTID0NCiAgICAgICAgICJkaXN0cmlidXRlSENlbnRl
cnMiOw0KIA0KICAgICAvKiogQWN0aW9uIGtleSBmb3IgZGlzdHJpYnV0ZSB2IHNwYWNpbmcgKi8N
Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX0RJU1RSSUJVVEVfVl9TUEFD
SU5HID0gDQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9ESVNUUklCVVRF
X1ZfU1BBQ0lORyA9DQogICAgICAgICAiZGlzdHJpYnV0ZVZTcGFjaW5nIjsNCiANCiAgICAgLyoq
IEFjdGlvbiBrZXkgZm9yIGRpc3RyaWJ1dGUgdiBjZW50ZXJzICovDQotICAgIHB1YmxpYyBzdGF0
aWMgZmluYWwgU3RyaW5nIEFDVElPTl9ESVNUUklCVVRFX1ZfQ0VOVEVSUyA9IA0KKyAgICBwdWJs
aWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fRElTVFJJQlVURV9WX0NFTlRFUlMgPQ0KICAg
ICAgICAgImRpc3RyaWJ1dGVWQ2VudGVycyI7DQogDQogICAgIC8qKiBBY3Rpb24ga2V5IGZvciBy
ZW9yZGVyIGZvcndhcmQgKi8NCkBAIC0zMDksMTEgKzMxMCwxMSBAQA0KIA0KICAgICAvKiogQWN0
aW9uIGtleSBmb3IgcmVvcmRlciB0byBiYWNrICovDQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwg
U3RyaW5nIEFDVElPTl9SRU9SREVSX1RPX0JBQ0sgPSAicmVvcmRlclRvQmFjayI7DQotICAgIA0K
Kw0KICAgICAvKioNCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCi0gICAgcHJpdmF0ZSBzdGF0
aWMgZmluYWwgTG9nZ2VyIExPRyA9IExvZ2dlci5nZXRMb2dnZXIoU2hvcnRjdXRNZ3IuY2xhc3Mp
Ow0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dl
cihTaG9ydGN1dE1nci5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICBwcml2YXRlIHN0YXRpYyBm
aW5hbCBpbnQgREVGQVVMVF9NQVNLID0gVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpDQogICAg
ICAgICAgICAgLmdldE1lbnVTaG9ydGN1dEtleU1hc2soKTsNCkBAIC0zMjEsMTUgKzMyMiwxNSBA
QA0KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0hJRlRFRF9ERUZBVUxUX01BU0sgPSBU
b29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkNCiAgICAgICAgICAgICAuZ2V0TWVudVNob3J0Y3V0
S2V5TWFzaygpIHwgS2V5RXZlbnQuU0hJRlRfRE9XTl9NQVNLOw0KIA0KLSAgICBwcml2YXRlIHN0
YXRpYyBIYXNoTWFwPFN0cmluZywgQWN0aW9uV3JhcHBlcj4gc2hvcnRjdXRIYXNoID0gDQorICAg
IHByaXZhdGUgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBBY3Rpb25XcmFwcGVyPiBzaG9ydGN1dEhh
c2ggPQ0KICAgICAgICAgbmV3IEhhc2hNYXA8U3RyaW5nLCBBY3Rpb25XcmFwcGVyPig5MCk7DQog
DQotICAgIHByaXZhdGUgc3RhdGljIEhhc2hNYXA8S2V5U3Ryb2tlLCBLZXlTdHJva2U+IGR1cGxp
Y2F0ZSA9IA0KKyAgICBwcml2YXRlIHN0YXRpYyBIYXNoTWFwPEtleVN0cm9rZSwgS2V5U3Ryb2tl
PiBkdXBsaWNhdGUgPQ0KICAgICAgICAgbmV3IEhhc2hNYXA8S2V5U3Ryb2tlLCBLZXlTdHJva2U+
KDEwKTsNCiANCiAgICAgLyoqDQogICAgICAqIFJldHVybiB0aGUgc2hvcnRjdXRzIGFzIGFuIEFj
dGlvbldyYXBwZXIgYXJyYXkNCi0gICAgICogDQorICAgICAqDQogICAgICAqIEByZXR1cm4gYW4g
YXJyYXkgb2YgQWN0aW9uV3JhcHBlcnMNCiAgICAgICovDQogICAgIHN0YXRpYyBBY3Rpb25XcmFw
cGVyW10gZ2V0U2hvcnRjdXRzKCkgew0KQEAgLTM1MywxMyArMzU0LDEzIEBADQogDQogICAgIC8q
Kg0KICAgICAgKiBBc3NpZ24gYSBzaG9ydGN1dCB0byB0aGUgZ2l2ZW4gSk1lbnVJdGVtDQotICAg
ICAqIA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gbWVudUl0ZW0NCiAgICAgICogICAgICAgICAg
ICB0aGUgbWVudSBpdGVtDQogICAgICAqIEBwYXJhbSBzaG9ydGN1dEtleQ0KICAgICAgKiAgICAg
ICAgICAgIHRoZSBzaG9ydGN1dCBrZXkNCiAgICAgICovDQotICAgIHB1YmxpYyBzdGF0aWMgdm9p
ZCBhc3NpZ25BY2NlbGVyYXRvcihKTWVudUl0ZW0gbWVudUl0ZW0sIA0KKyAgICBwdWJsaWMgc3Rh
dGljIHZvaWQgYXNzaWduQWNjZWxlcmF0b3IoSk1lbnVJdGVtIG1lbnVJdGVtLA0KICAgICAgICAg
ICAgIFN0cmluZyBzaG9ydGN1dEtleSkgew0KICAgICAgICAgQWN0aW9uV3JhcHBlciBzaG9ydGN1
dCA9IHNob3J0Y3V0SGFzaC5nZXQoc2hvcnRjdXRLZXkpOw0KIA0KQEAgLTM4MiwxMyArMzgzLDEz
IEBADQogDQogICAgIC8qKg0KICAgICAgKiBBc3NpZ24gYSBzaG9ydGN1dCB0byB0aGUgZ2l2ZW4g
SlBhbmVsIChvbmx5IHdoZW4gZm9jdXNlZCkNCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBw
YXJhbSBwYW5lbA0KICAgICAgKiAgICAgICAgICAgIHRoZSBwYW5lbA0KICAgICAgKiBAcGFyYW0g
c2hvcnRjdXRLZXkNCiAgICAgICogICAgICAgICAgICB0aGUgc2hvcnRjdXQga2V5DQogICAgICAq
Lw0KLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgYXNzaWduQWNjZWxlcmF0b3IoSlBhbmVsIHBhbmVs
LCANCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFzc2lnbkFjY2VsZXJhdG9yKEpQYW5lbCBwYW5l
bCwNCiAgICAgICAgICAgICBTdHJpbmcgc2hvcnRjdXRLZXkpIHsNCiAgICAgICAgIEFjdGlvbldy
YXBwZXIgc2hvcnRjdXQgPSBzaG9ydGN1dEhhc2guZ2V0KHNob3J0Y3V0S2V5KTsNCiANCkBAIC0z
OTYsMzUgKzM5NywzNSBAQA0KICAgICAgICAgICAgIEtleVN0cm9rZSBrZXlTdHJva2UgPSBzaG9y
dGN1dC5nZXRDdXJyZW50U2hvcnRjdXQoKTsNCiAgICAgICAgICAgICBpZiAoa2V5U3Ryb2tlICE9
IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBtZXRob2QgaXMgb2Jzb2xl
dGUuICBVc2UgZ2V0SW5wdXRNYXAgZXRjIGFzIGJlbG93DQotICAgICAgICAgICAgICAgIHBhbmVs
LnJlZ2lzdGVyS2V5Ym9hcmRBY3Rpb24oc2hvcnRjdXQuZ2V0QWN0aW9uSW5zdGFuY2UoKSwgDQor
ICAgICAgICAgICAgICAgIHBhbmVsLnJlZ2lzdGVyS2V5Ym9hcmRBY3Rpb24oc2hvcnRjdXQuZ2V0
QWN0aW9uSW5zdGFuY2UoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBrZXlTdHJva2UsIEpD
b21wb25lbnQuV0hFTl9GT0NVU0VEKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAgS2V5
U3Ryb2tlIGFsdGVybmF0aXZlS2V5U3Ryb2tlID0gZHVwbGljYXRlLmdldChrZXlTdHJva2UpOw0K
ICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZUtleVN0cm9rZSAhPSBudWxsKSB7DQotICAgICAg
ICAgICAgICAgIFN0cmluZyBhY3Rpb25OYW1lID0gKFN0cmluZykgDQorICAgICAgICAgICAgICAg
IFN0cmluZyBhY3Rpb25OYW1lID0gKFN0cmluZykNCiAgICAgICAgICAgICAgICAgICAgIHNob3J0
Y3V0LmdldEFjdGlvbkluc3RhbmNlKCkuZ2V0VmFsdWUoQWJzdHJhY3RBY3Rpb24uTkFNRSk7DQog
DQogICAgICAgICAgICAgICAgIHBhbmVsLmdldElucHV0TWFwKEpDb21wb25lbnQuV0hFTl9GT0NV
U0VEKS5wdXQoDQogICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVLZXlTdHJva2Us
IGFjdGlvbk5hbWUpOw0KLSAgICAgICAgICAgICAgICBwYW5lbC5nZXRBY3Rpb25NYXAoKS5wdXQo
YWN0aW9uTmFtZSwgDQorICAgICAgICAgICAgICAgIHBhbmVsLmdldEFjdGlvbk1hcCgpLnB1dChh
Y3Rpb25OYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0Y3V0LmdldEFjdGlvbklu
c3RhbmNlKCkpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgfQ0KLSAgICANCisN
CiAgICAgLyoqDQogICAgICAqIFNlYXJjaCBmb3IgdGhlIGR1cGxpY2F0ZSBvZiBhIGdpdmVuIEtl
eVN0cm9rZQ0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGtleVN0cm9rZSAgICAg
ICAgIHRoZSBLZXlTdHJva2UgdG8gc2VhcmNoIGZvcg0KICAgICAgKiBAcmV0dXJuICAgICAgICAg
ICAgICAgICAgdGhlIGR1cGxpY2F0ZSwgb3IgbnVsbCBpZiBub3QgcHJlc2VudA0KICAgICAgKi8N
CiAgICAgc3RhdGljIEtleVN0cm9rZSBnZXREdXBsaWNhdGUoS2V5U3Ryb2tlIGtleVN0cm9rZSkg
ew0KICAgICAgICAgcmV0dXJuIGR1cGxpY2F0ZS5nZXQoa2V5U3Ryb2tlKTsNCiAgICAgfQ0KLSAg
ICANCisNCiAgICAgLyoqDQogICAgICAqIFJldHVybnMgYSBzaG9ydGN1dCBmb3IgdGhlIGdpdmVu
IGFjdGlvbiBpZA0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogQHBhcmFtIGFjdGlvbklkDQog
ICAgICAqICAgICAgICAgICAgdGhlIGlkIG9mIHRoZSBhY3Rpb24NCiAgICAgICogQHJldHVybiB0
aGUgZ2l2ZW4gYWN0aW9uLCBvciBudWxsIGlmIHRoZSBhY3Rpb24gaXMgbm90IGZvdW5kDQpAQCAt
NDM1LDcgKzQzNiw3IEBADQogDQogICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcHV0RGVmYXVsdFNo
b3J0Y3V0KFN0cmluZyBzaG9ydGN1dEtleSwNCiAgICAgICAgIEtleVN0cm9rZSBkZWZhdWx0S2V5
U3Ryb2tlLCBBYnN0cmFjdEFjdGlvbiBhY3Rpb24pIHsNCi0gICAgICAgIHB1dERlZmF1bHRTaG9y
dGN1dChzaG9ydGN1dEtleSwgZGVmYXVsdEtleVN0cm9rZSwgYWN0aW9uLCANCisgICAgICAgIHB1
dERlZmF1bHRTaG9ydGN1dChzaG9ydGN1dEtleSwgZGVmYXVsdEtleVN0cm9rZSwgYWN0aW9uLA0K
ICAgICAgICAgICAgICAgICBnZXRBY3Rpb25EZWZhdWx0TmFtZShhY3Rpb24pKTsNCiAgICAgfQ0K
IA0KQEAgLTQ1Nyw3ICs0NTgsNyBAQA0KICAgICAgICAgICAgIGN1cnJlbnRLZXlTdHJva2UgPSBk
ZWNvZGVLZXlTdHJva2UoY29uZkN1cnJlbnRTaG9ydGN1dCk7DQogICAgICAgICB9DQogDQotICAg
ICAgICBBY3Rpb25XcmFwcGVyIGN1cnJlbnRTaG9ydGN1dCA9IA0KKyAgICAgICAgQWN0aW9uV3Jh
cHBlciBjdXJyZW50U2hvcnRjdXQgPQ0KICAgICAgICAgICAgIG5ldyBBY3Rpb25XcmFwcGVyKHNo
b3J0Y3V0S2V5LCBjdXJyZW50S2V5U3Ryb2tlLA0KICAgICAgICAgICAgICAgICBkZWZhdWx0S2V5
U3Ryb2tlLCBhY3Rpb24sIGFjdGlvbk5hbWUpOw0KICAgICAgICAgc2hvcnRjdXRIYXNoLnB1dChz
aG9ydGN1dEtleSwgY3VycmVudFNob3J0Y3V0KTsNCkBAIC00NjUsNyArNDY2LDcgQEANCiANCiAg
ICAgLyoqDQogICAgICAqIFRoaXMgbWV0aG9kIGRlY29kZXMgdGhlIGdpdmVuIFN0cmluZyBpbnRv
IHRoZSBjb3JyZXNwb25kaW5nIEtleVN0cm9rZQ0KLSAgICAgKiANCisgICAgICoNCiAgICAgICog
QHBhcmFtIHN0cktleVN0cm9rZQ0KICAgICAgKiAgICAgICAgICAgIHRoZSBTdHJpbmcgdG8gYmUg
ZGVjb2RlZA0KICAgICAgKiBAcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIEtleVN0cm9rZQ0KQEAg
LTQ4Niw3ICs0ODcsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEtleVN0cm9rZS5n
ZXRLZXlTdHJva2UoZi5nZXRJbnQobnVsbCksIG1vZGlmaWVycyk7DQogDQogICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsNCi0gICAgICAgICAgICAgICAgICAgIExPRy5l
cnJvcigiRXhjZXB0aW9uOiAiICsgZXhjKTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2co
TGV2ZWwuU0VWRVJFLCAiRXhjZXB0aW9uOiAiICsgZXhjKTsNCiAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCkBAIC00OTUsNyArNDk2LDcgQEANCiANCiAgICAg
LyoqDQogICAgICAqIFNhdmVzIHRoZSBnaXZlbiBhY3Rpb25zIGluIHRoZSBjb25maWd1cmF0aW9u
IGZpbGUNCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBuZXdBY3Rpb25zDQogICAg
ICAqICAgICAgICAgICAgdGhlIGFjdGlvbnMgYXJyYXkNCiAgICAgICovDQpAQCAtNTQwLDcgKzU0
MSw3IEBADQogICAgICAgICAgICAgcmV0dXJuIElucHV0RXZlbnQuU0hJRlRfRE9XTl9NQVNLOw0K
ICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAvLyBpdCBzaG91bGQgbmV2ZXIgZ28gaGVy
ZSENCi0gICAgICAgICAgICBMT0cuZGVidWcoIlVua25vd24gbW9kaWZpZXI6ICIgKyBtb2RpZmll
cik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiVW5rbm93biBtb2RpZmllcjog
ezB9IiwgbW9kaWZpZXIpOw0KICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgfQ0KICAg
ICB9DQpAQCAtNTQ4LDExICs1NDksMTEgQEANCiAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdl
dEFjdGlvbkRlZmF1bHROYW1lKEFic3RyYWN0QWN0aW9uIGFjdGlvbikgew0KICAgICAgICAgcmV0
dXJuIChTdHJpbmcpIGFjdGlvbi5nZXRWYWx1ZShBYnN0cmFjdEFjdGlvbi5OQU1FKTsNCiAgICAg
fQ0KLSAgICANCisNCiAgICAgLy8gbGV0J3MgbG9hZCB0aGUgZGVmYXVsdCBzaG9ydGN1dCBmb3Ig
ZXZlcnkgYWN0aW9uDQogICAgIHN0YXRpYyB7DQogICAgICAgICAvLyBGaXJzdCBvZiBhbGwsIGxl
dCdzIHNldCB1cCB0aGUgZHVwbGljYXRlIGhhc2guIFRoaXMgaGFzaCBjb250YWlucw0KLSAgICAg
ICAgLy8gYWxsIHRoZSBkdXBsaWNhdGUga2V5IGZvciBhbm90aGVyIGtleS4gDQorICAgICAgICAv
LyBhbGwgdGhlIGR1cGxpY2F0ZSBrZXkgZm9yIGFub3RoZXIga2V5Lg0KICAgICAgICAgLy8NCiAg
ICAgICAgIC8vIFRPRE86IGV2ZXJ5IGR1cGxpY2F0ZS5wdXQoKSBpcyBkb25lIHR3aWNlIC0gYnV0
IGhvdyB0byBhdm9pZCB0aGlzPw0KICAgICAgICAgZHVwbGljYXRlLnB1dChLZXlTdHJva2UuZ2V0
S2V5U3Ryb2tlKEtleUV2ZW50LlZLX01JTlVTLCBERUZBVUxUX01BU0spLA0KQEAgLTU2MCw5ICs1
NjEsOSBAQA0KICAgICAgICAgZHVwbGljYXRlLnB1dChLZXlTdHJva2UuZ2V0S2V5U3Ryb2tlKA0K
ICAgICAgICAgICAgICAgICBLZXlFdmVudC5WS19TVUJUUkFDVCwgREVGQVVMVF9NQVNLKSwNCiAg
ICAgICAgICAgICAgICAgS2V5U3Ryb2tlLmdldEtleVN0cm9rZShLZXlFdmVudC5WS19NSU5VUywg
REVGQVVMVF9NQVNLKSk7DQotICAgICAgICBkdXBsaWNhdGUucHV0KEtleVN0cm9rZS5nZXRLZXlT
dHJva2UoS2V5RXZlbnQuVktfUExVUywgREVGQVVMVF9NQVNLKSwgDQorICAgICAgICBkdXBsaWNh
dGUucHV0KEtleVN0cm9rZS5nZXRLZXlTdHJva2UoS2V5RXZlbnQuVktfUExVUywgREVGQVVMVF9N
QVNLKSwNCiAgICAgICAgICAgICAgICAgS2V5U3Ryb2tlLmdldEtleVN0cm9rZShLZXlFdmVudC5W
S19BREQsIERFRkFVTFRfTUFTSykpOw0KLSAgICAgICAgZHVwbGljYXRlLnB1dChLZXlTdHJva2Uu
Z2V0S2V5U3Ryb2tlKEtleUV2ZW50LlZLX0FERCwgREVGQVVMVF9NQVNLKSwgDQorICAgICAgICBk
dXBsaWNhdGUucHV0KEtleVN0cm9rZS5nZXRLZXlTdHJva2UoS2V5RXZlbnQuVktfQURELCBERUZB
VUxUX01BU0spLA0KICAgICAgICAgICAgICAgICBLZXlTdHJva2UuZ2V0S2V5U3Ryb2tlKEtleUV2
ZW50LlZLX1BMVVMsIERFRkFVTFRfTUFTSykpOw0KIA0KICAgICAgICAgLy8gZmlsZSBtZW51DQpA
QCAtNTcxLDcgKzU3Miw3IEBADQogICAgICAgICBwdXREZWZhdWx0U2hvcnRjdXQoQUNUSU9OX09Q
RU5fUFJPSkVDVCwgS2V5U3Ryb2tlLmdldEtleVN0cm9rZSgNCiAgICAgICAgICAgICAgICAgS2V5
RXZlbnQuVktfTywgREVGQVVMVF9NQVNLKSwgbmV3IEFjdGlvbk9wZW5Qcm9qZWN0KCkpOw0KICAg
ICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0KEFDVElPTl9TQVZFX1BST0pFQ1QsIEtleVN0cm9rZS5n
ZXRLZXlTdHJva2UoDQotICAgICAgICAgICAgICAgIEtleUV2ZW50LlZLX1MsIERFRkFVTFRfTUFT
SyksIA0KKyAgICAgICAgICAgICAgICBLZXlFdmVudC5WS19TLCBERUZBVUxUX01BU0spLA0KICAg
ICAgICAgICAgICAgICBQcm9qZWN0QnJvd3Nlci5nZXRJbnN0YW5jZSgpLmdldFNhdmVBY3Rpb24o
KSk7DQogICAgICAgICBwdXREZWZhdWx0U2hvcnRjdXQoQUNUSU9OX1NBVkVfUFJPSkVDVF9BUywg
bnVsbCwNCiAgICAgICAgICAgICAgICAgbmV3IEFjdGlvblNhdmVQcm9qZWN0QXMoKSk7DQpAQCAt
NTg0LDcgKzU4NSw3IEBADQogICAgICAgICBwdXREZWZhdWx0U2hvcnRjdXQoQUNUSU9OX1BST0pF
Q1RfU0VUVElOR1MsIG51bGwsDQogICAgICAgICAgICAgICAgIG5ldyBBY3Rpb25Qcm9qZWN0U2V0
dGluZ3MoKSk7DQogICAgICAgICBwdXREZWZhdWx0U2hvcnRjdXQoQUNUSU9OX1BBR0VfU0VUVVAs
IG51bGwsIG5ldyBBY3Rpb25QYWdlU2V0dXAoKSk7DQotICAgICAgICBwdXREZWZhdWx0U2hvcnRj
dXQoQUNUSU9OX1NBVkVfR1JBUEhJQ1MsIG51bGwsIA0KKyAgICAgICAgcHV0RGVmYXVsdFNob3J0
Y3V0KEFDVElPTl9TQVZFX0dSQVBISUNTLCBudWxsLA0KICAgICAgICAgICAgICAgICBuZXcgQWN0
aW9uU2F2ZUdyYXBoaWNzKCkpOw0KICAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0KEFDVElPTl9T
QVZFX0FMTF9HUkFQSElDUywgbnVsbCwNCiAgICAgICAgICAgICAgICAgbmV3IEFjdGlvblNhdmVB
bGxHcmFwaGljcygpKTsNCkBAIC01OTQsNyArNTk1LDcgQEANCiANCiAgICAgICAgIC8vIGVkaXQg
bWVudQ0KICAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0KEFDVElPTl9TRUxFQ1RfQUxMLCBLZXlT
dHJva2UuZ2V0S2V5U3Ryb2tlKA0KLSAgICAgICAgICAgICAgICBLZXlFdmVudC5WS19BLCBERUZB
VUxUX01BU0spLCANCisgICAgICAgICAgICAgICAgS2V5RXZlbnQuVktfQSwgREVGQVVMVF9NQVNL
KSwNCiAgICAgICAgICAgICAgICAgbmV3IEFjdGlvblNlbGVjdEFsbCgpKTsNCiAgICAgICAgIHB1
dERlZmF1bHRTaG9ydGN1dChBQ1RJT05fUkVETywgS2V5U3Ryb2tlLmdldEtleVN0cm9rZShLZXlF
dmVudC5WS19ZLA0KICAgICAgICAgICAgICAgICBERUZBVUxUX01BU0spLCBQcm9qZWN0QWN0aW9u
cy5nZXRJbnN0YW5jZSgpLmdldFJlZG9BY3Rpb24oKSk7DQpAQCAtNjA0LDcgKzYwNSw3IEBADQog
ICAgICAgICAgICAgICAgIG5ldyBOYXZpZ2F0ZVRhcmdldEZvcndhcmRBY3Rpb24oKSk7DQogICAg
ICAgICBwdXREZWZhdWx0U2hvcnRjdXQoQUNUSU9OX05BVklHQVRFX0JBQ0ssIG51bGwsDQogICAg
ICAgICAgICAgICAgIG5ldyBOYXZpZ2F0ZVRhcmdldEJhY2tBY3Rpb24oKSk7DQotICAgICAgICBw
dXREZWZhdWx0U2hvcnRjdXQoQUNUSU9OX1NFTEVDVF9JTlZFUlQsIG51bGwsIA0KKyAgICAgICAg
cHV0RGVmYXVsdFNob3J0Y3V0KEFDVElPTl9TRUxFQ1RfSU5WRVJULCBudWxsLA0KICAgICAgICAg
ICAgICAgICBuZXcgQWN0aW9uU2VsZWN0SW52ZXJ0KCkpOw0KICAgICAgICAgcHV0RGVmYXVsdFNo
b3J0Y3V0KEFDVElPTl9QRVJTUEVDVElWRV9DT05GSUcsIG51bGwsDQogICAgICAgICAgICAgICAg
IG5ldyBBY3Rpb25QZXJzcGVjdGl2ZUNvbmZpZygpKTsNCkBAIC02MTMsMTMgKzYxNCwxMyBAQA0K
ICAgICAgICAgICAgICAgICBLZXlFdmVudC5WS19ERUxFVEUsIDApLCBQcm9qZWN0QWN0aW9ucy5n
ZXRJbnN0YW5jZSgpDQogICAgICAgICAgICAgICAgIC5nZXRSZW1vdmVGcm9tRGlhZ3JhbUFjdGlv
bigpKTsNCiAgICAgICAgIHB1dERlZmF1bHRTaG9ydGN1dChBQ1RJT05fREVMRVRFX01PREVMX0VM
RU1FTlRTLCBLZXlTdHJva2UNCi0gICAgICAgICAgICAgICAgLmdldEtleVN0cm9rZShLZXlFdmVu
dC5WS19ERUxFVEUsIERFRkFVTFRfTUFTSyksIA0KKyAgICAgICAgICAgICAgICAuZ2V0S2V5U3Ry
b2tlKEtleUV2ZW50LlZLX0RFTEVURSwgREVGQVVMVF9NQVNLKSwNCiAgICAgICAgICAgICAgICAg
QWN0aW9uRGVsZXRlTW9kZWxFbGVtZW50cy5nZXRUYXJnZXRGb2xsb3dlcigpKTsNCiANCiAgICAg
ICAgIC8vIHZpZXcgbWVudQ0KICAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0KEFDVElPTl9HT19U
T19ESUFHUkFNLCBudWxsLCBuZXcgQWN0aW9uR290b0RpYWdyYW0oKSk7DQogICAgICAgICBwdXRE
ZWZhdWx0U2hvcnRjdXQoQUNUSU9OX1pPT01fUkVTRVQsIG51bGwsIG5ldyBab29tQWN0aW9uKDAu
MCkpOw0KLSAgICAgICAgDQorDQogICAgICAgICBMaXN0IGdyaWRBY3Rpb25zID0gQWN0aW9uQWRq
dXN0R3JpZC5jcmVhdGVBZGp1c3RHcmlkQWN0aW9ucyh0cnVlKTsNCiAgICAgICAgIEl0ZXJhdG9y
IGkgPSBncmlkQWN0aW9ucy5pdGVyYXRvcigpOw0KICAgICAgICAgd2hpbGUgKGkuaGFzTmV4dCgp
KSB7DQpAQCAtNjI3LDcgKzYyOCw3IEBADQogICAgICAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0
KEFDVElPTl9BREpVU1RfR1JJRCArIGNtZEFHLmdldFZhbHVlKCJJRCIpLA0KICAgICAgICAgICAg
ICAgICAgICAgKEtleVN0cm9rZSkgY21kQUcuZ2V0VmFsdWUoInNob3J0Y3V0IiksIGNtZEFHKTsN
CiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgTGlzdCBzbmFwQWN0aW9ucyA9IEFj
dGlvbkFkanVzdFNuYXAuY3JlYXRlQWRqdXN0U25hcEFjdGlvbnMoKTsNCiAgICAgICAgIGkgPSBz
bmFwQWN0aW9ucy5pdGVyYXRvcigpOw0KICAgICAgICAgd2hpbGUgKGkuaGFzTmV4dCgpKSB7DQpA
QCAtNjU0LDEzICs2NTUsMTMgQEANCiAgICAgICAgIC8vIGNyZWF0ZSBtZW51DQogICAgICAgICBw
dXREZWZhdWx0U2hvcnRjdXQoQUNUSU9OX1VTRV9DQVNFX0RJQUdSQU0sIG51bGwsDQogICAgICAg
ICAgICAgICAgIG5ldyBBY3Rpb25Vc2VDYXNlRGlhZ3JhbSgpKTsNCi0gICAgICAgIHB1dERlZmF1
bHRTaG9ydGN1dChBQ1RJT05fQ0xBU1NfRElBR1JBTSwgbnVsbCwgDQorICAgICAgICBwdXREZWZh
dWx0U2hvcnRjdXQoQUNUSU9OX0NMQVNTX0RJQUdSQU0sIG51bGwsDQogICAgICAgICAgICAgICAg
IG5ldyBBY3Rpb25DbGFzc0RpYWdyYW0oKSk7DQogICAgICAgICBwdXREZWZhdWx0U2hvcnRjdXQo
QUNUSU9OX1NFUVVFTkNFX0RJQUdSQU0sIG51bGwsDQogICAgICAgICAgICAgICAgIG5ldyBBY3Rp
b25TZXF1ZW5jZURpYWdyYW0oKSk7DQogICAgICAgICBwdXREZWZhdWx0U2hvcnRjdXQoQUNUSU9O
X0NPTExBQk9SQVRJT05fRElBR1JBTSwgbnVsbCwNCiAgICAgICAgICAgICAgICAgbmV3IEFjdGlv
bkNvbGxhYm9yYXRpb25EaWFncmFtKCkpOw0KLSAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0KEFD
VElPTl9TVEFURV9ESUFHUkFNLCBudWxsLCANCisgICAgICAgIHB1dERlZmF1bHRTaG9ydGN1dChB
Q1RJT05fU1RBVEVfRElBR1JBTSwgbnVsbCwNCiAgICAgICAgICAgICAgICAgbmV3IEFjdGlvblN0
YXRlRGlhZ3JhbSgpKTsNCiAgICAgICAgIHB1dERlZmF1bHRTaG9ydGN1dChBQ1RJT05fQUNUSVZJ
VFlfRElBR1JBTSwgbnVsbCwNCiAgICAgICAgICAgICAgICAgbmV3IEFjdGlvbkFjdGl2aXR5RGlh
Z3JhbSgpKTsNCkBAIC02NzksNyArNjgwLDcgQEANCiAgICAgICAgIC8vIGNyaXRpcXVlIG1lbnUN
CiAgICAgICAgIC8vIFRPRE86IFRoaXMgZGVwZW5kZW5jeSBzaG91bGQgYmUgaW52ZXJ0ZWQgd2l0
aCB0aGUgQ3JpdGljcyBzdWJzeXN0ZW0NCiAgICAgICAgIC8vIHJlZ2lzdGVyaW5nIGl0cyBkZXNp
cmVkIHNob3J0Y3V0cyB3aXRoIHVzIC0gdGZtDQotICAgICAgICBwdXREZWZhdWx0U2hvcnRjdXQo
QUNUSU9OX0FVVE9fQ1JJVElRVUUsIG51bGwsIA0KKyAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0
KEFDVElPTl9BVVRPX0NSSVRJUVVFLCBudWxsLA0KICAgICAgICAgICAgICAgICBuZXcgQWN0aW9u
QXV0b0NyaXRpcXVlKCkpOw0KICAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0KEFDVElPTl9PUEVO
X0RFQ0lTSU9OUywgbnVsbCwNCiAgICAgICAgICAgICAgICAgbmV3IEFjdGlvbk9wZW5EZWNpc2lv
bnMoKSk7DQpAQCAtNjg5LDcgKzY5MCw3IEBADQogICAgICAgICAvLyBoZWxwIG1lbnUNCiAgICAg
ICAgIHB1dERlZmF1bHRTaG9ydGN1dChBQ1RJT05fU1lTVEVNX0lORk9STUFUSU9OLCBudWxsLA0K
ICAgICAgICAgICAgICAgICBuZXcgQWN0aW9uU3lzdGVtSW5mbygpKTsNCi0gICAgICAgIHB1dERl
ZmF1bHRTaG9ydGN1dChBQ1RJT05fQUJPVVRfQVJHT1VNTCwgbnVsbCwgDQorICAgICAgICBwdXRE
ZWZhdWx0U2hvcnRjdXQoQUNUSU9OX0FCT1VUX0FSR09VTUwsIG51bGwsDQogICAgICAgICAgICAg
ICAgIG5ldyBBY3Rpb25BYm91dEFyZ29VTUwoKSk7DQogDQogICAgICAgICAvLyBhcnJhbmdlIG1l
bnUNCkBAIC03MDIsMTAgKzcwMywxMCBAQA0KICAgICAgICAgcHV0RGVmYXVsdFNob3J0Y3V0KEFD
VElPTl9BTElHTl9CT1RUT01TLCBudWxsLCBuZXcgQWxpZ25BY3Rpb24oDQogICAgICAgICAgICAg
ICAgIEFsaWduQWN0aW9uLkFMSUdOX0JPVFRPTVMpKTsNCiAgICAgICAgIHB1dERlZmF1bHRTaG9y
dGN1dChBQ1RJT05fQUxJR05fUklHSFRTLCBLZXlTdHJva2UuZ2V0S2V5U3Ryb2tlKA0KLSAgICAg
ICAgICAgICAgICBLZXlFdmVudC5WS19SLCBERUZBVUxUX01BU0spLCANCisgICAgICAgICAgICAg
ICAgS2V5RXZlbnQuVktfUiwgREVGQVVMVF9NQVNLKSwNCiAgICAgICAgICAgICAgICAgbmV3IEFs
aWduQWN0aW9uKEFsaWduQWN0aW9uLkFMSUdOX1JJR0hUUykpOw0KICAgICAgICAgcHV0RGVmYXVs
dFNob3J0Y3V0KEFDVElPTl9BTElHTl9MRUZUUywgS2V5U3Ryb2tlLmdldEtleVN0cm9rZSgNCi0g
ICAgICAgICAgICAgICAgS2V5RXZlbnQuVktfTCwgREVGQVVMVF9NQVNLKSwgDQorICAgICAgICAg
ICAgICAgIEtleUV2ZW50LlZLX0wsIERFRkFVTFRfTUFTSyksDQogICAgICAgICAgICAgICAgIG5l
dyBBbGlnbkFjdGlvbihBbGlnbkFjdGlvbi5BTElHTl9MRUZUUykpOw0KICAgICAgICAgcHV0RGVm
YXVsdFNob3J0Y3V0KEFDVElPTl9BTElHTl9IX0NFTlRFUlMsIG51bGwsIG5ldyBBbGlnbkFjdGlv
bigNCiAgICAgICAgICAgICAgICAgQWxpZ25BY3Rpb24uQUxJR05fSF9DRU5URVJTKSk7DQpAQCAt
NzQzLDggKzc0NCw4IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgUmVvcmRlckFjdGlvbi5T
RU5EX1RPX0JBQ0spKTsNCiANCiAJLy8gaGVscCBtZW51DQotCXB1dERlZmF1bHRTaG9ydGN1dChB
Q1RJT05fSEVMUCwgDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5U3Ryb2tlLmdldEtl
eVN0cm9rZSggS2V5RXZlbnQuVktfRjEsIDApLCANCisJcHV0RGVmYXVsdFNob3J0Y3V0KEFDVElP
Tl9IRUxQLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVN0cm9rZS5nZXRLZXlTdHJv
a2UoIEtleUV2ZW50LlZLX0YxLCAwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcg
QWN0aW9uSGVscCgpKTsNCiAgICAgfQ0KIH0NCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1s
LWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvQWN0aW9uRGVwbG95UHJvZmlsZS5qYXZh
DQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3Ry
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvQWN0aW9uRGVw
bG95UHJvZmlsZS5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29y
Zy9hcmdvdW1sL3VpL2V4cGxvcmVyL0FjdGlvbkRlcGxveVByb2ZpbGUuamF2YQkob3JpZ2luYWwp
DQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9B
Y3Rpb25EZXBsb3lQcm9maWxlLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2
ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0
IChjKSAyMDA5LTIwMTAgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChj
KSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFy
ZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExp
Y2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQg
aXMgYXZhaWxhYmxlIGF0DQpAQCAtNDIsMTEgKzQyLDEyIEBADQogaW1wb3J0IGphdmEuYXd0LmV2
ZW50LkFjdGlvbkV2ZW50Ow0KIGltcG9ydCBqYXZhLmlvLkZpbGU7DQogaW1wb3J0IGphdmEudXRp
bC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsNCitpbXBvcnQg
amF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGltcG9ydCBqYXZheC5zd2luZy5BYnN0cmFj
dEFjdGlvbjsNCiBpbXBvcnQgamF2YXguc3dpbmcuSkZpbGVDaG9vc2VyOw0KIA0KLWltcG9ydCBv
cmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuaTE4bi5UcmFuc2xh
dG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5Nb2RlbDsNCiBpbXBvcnQgb3JnLmFyZ291
bWwucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VNYW5hZ2VyOw0KQEAgLTY0LDE5ICs2NSwxOSBAQA0K
ICAqIGl0IChwb2ludGxlc3MsIGJlY2F1c2UgYSBwcm9maWxlIGNhbm5vdCBiZSBhcHBsaWVkIHRv
IGl0c2VsZiksIGFuZCBhbHNvIGRvbid0DQogICogY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIChz
byBpdCB3aWxsIG9ubHkgYmUgbG9hZGVkIG9uIGV2ZXJ5IHN0YXJ0dXAgd2hlbiBpdA0KICAqIGlz
IGRlcGxveWVkIGludG8gYSBkZWZhdWx0IHByb2ZpbGUgZGlyZWN0b3J5KS4NCi0gKiANCisgKg0K
ICAqIEBhdXRob3IgVGhvbWFzIE5ldXN0dXBueQ0KICAqLw0KIHB1YmxpYyBjbGFzcyBBY3Rpb25E
ZXBsb3lQcm9maWxlIGV4dGVuZHMgQWJzdHJhY3RBY3Rpb24gew0KIA0KLSAgICBwcml2YXRlIHN0
YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0gTG9nZ2VyDQotICAgICAgICAgICAgLmdldExvZ2dlcihB
Y3Rpb25EZXBsb3lQcm9maWxlLmNsYXNzKTsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9n
Z2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKEFjdGlvbkRlcGxveVByb2ZpbGUu
Y2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJpdmF0ZSBPYmplY3QgdW5kZXBsb3llZFByb2Zp
bGU7DQogDQogICAgIC8qKg0KICAgICAgKiBEZWZhdWx0IENvbnN0cnVjdG9yDQotICAgICAqIA0K
KyAgICAgKg0KICAgICAgKiBAcGFyYW0gcHJvZmlsZSB0aGUgc2VsZWN0ZWQgcHJvZmlsZQ0KICAg
ICAgKi8NCiAgICAgcHVibGljIEFjdGlvbkRlcGxveVByb2ZpbGUoT2JqZWN0IHByb2ZpbGUpIHsN
CkBAIC0xMDgsMTMgKzEwOSwxMyBAQA0KICAgICAgICAgICAgIHByb2ZpbGVNYW5hZ2VyLnJlZ2lz
dGVyUHJvZmlsZShuZXcgVXNlckRlZmluZWRQcm9maWxlKGYsDQogICAgICAgICAgICAgICAgIHBy
b2ZpbGVNYW5hZ2VyKSk7DQogICAgICAgICB9IGNhdGNoIChQcm9maWxlRXhjZXB0aW9uIGUpIHsN
Ci0gICAgICAgICAgICBMT0cud2FybigiZmFpbGVkIHRvIGxvYWQgcHJvZmlsZSBmcm9tIGZpbGUg
IiArIGYuZ2V0UGF0aCgpLCBlKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLldBUk5JTkcs
ICJmYWlsZWQgdG8gbG9hZCBwcm9maWxlIGZyb20gZmlsZSAiICsgZi5nZXRQYXRoKCksIGUpOw0K
ICAgICAgICAgfQ0KICAgICB9DQogDQogICAgIC8qKg0KICAgICAgKiBPZmZlcnMgdGhlIHNhdmlu
ZyBvZiB0aGUgcHJvZmlsZSBieSBwcmVzZW50aW5nIGEgZmlsZSBkaWFsb2cuDQotICAgICAqIA0K
KyAgICAgKg0KICAgICAgKiBAcGFyYW0gZm4gdGhlIHN1Z2dlc3RlZCBkZWZhdWx0IHBhdGggZm9y
IHRoZSBmaWxlIGRpYWxvZw0KICAgICAgKiBAcmV0dXJuIHRoZSBGaWxlIGluc3RhbmNlIHdoZXJl
IHRoZSBwcm9maWxlIGlzIHNhdmVkLCBudWxsIG9uIGFib3J0DQogICAgICAqLw0KDQpNb2RpZmll
ZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9BY3Rp
b25FeHBvcnRQcm9maWxlWE1JLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9z
b3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3Vt
bC91aS9leHBsb3Jlci9BY3Rpb25FeHBvcnRQcm9maWxlWE1JLmphdmE/dmlldz1kaWZmJnBhdGhy
ZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRy
dW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvQWN0aW9uRXhw
b3J0UHJvZmlsZVhNSS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL0FjdGlvbkV4cG9ydFByb2ZpbGVYTUkuamF2YQky
MDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3JzIC0g
c2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0gc2Vl
IGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj
b21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29tcGFu
aWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDQsMTIgKzQ0
LDEzIEBADQogaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQogaW1wb3J0IGphdmEuaW8uT3V0
cHV0U3RyZWFtOw0KIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51
dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsNCiAN
CiBpbXBvcnQgamF2YXguc3dpbmcuQWJzdHJhY3RBY3Rpb247DQogaW1wb3J0IGphdmF4LnN3aW5n
LkpGaWxlQ2hvb3NlcjsNCiBpbXBvcnQgamF2YXguc3dpbmcuZmlsZWNob29zZXIuRmlsZUZpbHRl
cjsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdv
dW1sLmFwcGxpY2F0aW9uLmhlbHBlcnMuQXBwbGljYXRpb25WZXJzaW9uOw0KIGltcG9ydCBvcmcu
YXJnb3VtbC5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmkxOG4uVHJhbnNsYXRvcjsNCkBAIC02NCw3ICs2NSw3IEBADQogaW1wb3J0IG9yZy5hcmdvdW1s
LnV0aWwuQXJnb0ZyYW1lOw0KIA0KIC8qKg0KLSAqIEV4cG9ydHMgdGhlIG1vZGVsIG9mIGEgc2Vs
ZWN0ZWQgcHJvZmlsZSBhcyBYTUkNCisgKiBFeHBvcnRzIHRoZSBtb2RlbCBvZiBhIHNlbGVjdGVk
IHByb2ZpbGUgYXMgWE1JLg0KICAqDQogICogQGF1dGhvciBNYXJjb3MgQXVyw6lsaW8NCiAgKi8N
CkBAIC03MywxNCArNzQsMTQgQEANCiAgICAgLyoqDQogICAgICAqIExvZ2dlci4NCiAgICAgICov
DQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPSBMb2dnZXINCi0gICAgICAg
ICAgICAuZ2V0TG9nZ2VyKEFjdGlvbkV4cG9ydFByb2ZpbGVYTUkuY2xhc3MpOw0KKyAgICBwcml2
YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIo
QWN0aW9uRXhwb3J0UHJvZmlsZVhNSS5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICBwcml2YXRl
IFByb2ZpbGUgc2VsZWN0ZWRQcm9maWxlOw0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIERl
ZmF1bHQgQ29uc3RydWN0b3INCi0gICAgICogDQorICAgICAqDQogICAgICAqIEBwYXJhbSBwcm9m
aWxlIHRoZSBzZWxlY3RlZCBwcm9maWxlDQogICAgICAqLw0KICAgICBwdWJsaWMgQWN0aW9uRXhw
b3J0UHJvZmlsZVhNSShQcm9maWxlIHByb2ZpbGUpIHsNCkBAIC04OCwxMyArODksMTMgQEANCiAg
ICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9maWxlID0gcHJvZmlsZTsNCiAgICAgfQ0KIA0KLSAgICAN
CisNCiAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGFyZzApIHsN
CiAgICAgICAgIHRyeSB7DQotICAgICAgICAgICAgZmluYWwgQ29sbGVjdGlvbiBwcm9maWxlUGFj
a2FnZXMgPSANCisgICAgICAgICAgICBmaW5hbCBDb2xsZWN0aW9uIHByb2ZpbGVQYWNrYWdlcyA9
DQogICAgICAgICAgICAgICAgIHNlbGVjdGVkUHJvZmlsZS5nZXRQcm9maWxlUGFja2FnZXMoKTsN
CiAgICAgICAgICAgICBmaW5hbCBPYmplY3QgbW9kZWwgPSBwcm9maWxlUGFja2FnZXMuaXRlcmF0
b3IoKS5uZXh0KCk7DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgaWYgKG1vZGVsICE9
IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgRmlsZSBkZXN0aW55ID0gZ2V0VGFyZ2V0RmlsZSgp
Ow0KICAgICAgICAgICAgICAgICBpZiAoZGVzdGlueSAhPSBudWxsKSB7DQpAQCAtMTAzLDExICsx
MDQsMTEgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICB9IGNhdGNoIChQcm9maWxlRXhjZXB0
aW9uIGUpIHsNCiAgICAgICAgICAgICAvLyBUT0RPOiBXZSBzaG91bGQgYmUgZ2l2aW5nIHRoZSB1
c2VyIG1vcmUgZGlyZWN0IGZlZWRiYWNrDQotICAgICAgICAgICAgTE9HLmVycm9yKCJFeGNlcHRp
b24iLCBlKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiIs
IGUpOw0KICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KLSAgICAgICAgICAgIExP
Ry5lcnJvcigiRXhjZXB0aW9uIiwgZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZF
UkUsICJFeGNlcHRpb24iLCBlKTsNCiAgICAgICAgIH0gY2F0Y2ggKFVtbEV4Y2VwdGlvbiBlKSB7
DQotICAgICAgICAgICAgTE9HLmVycm9yKCJFeGNlcHRpb24iLCBlKTsNCisgICAgICAgICAgICBM
T0cubG9nKExldmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiIsIGUpOw0KICAgICAgICAgfQ0KICAgICB9
DQogDQpAQCAtMTE1LDggKzExNiw4IEBADQogICAgIHByaXZhdGUgdm9pZCBzYXZlTW9kZWwoRmls
ZSBkZXN0aW55LCBPYmplY3QgbW9kZWwpIHRocm93cyBJT0V4Y2VwdGlvbiwNCiAgICAgICAgICAg
ICBVbWxFeGNlcHRpb24gew0KICAgICAgICAgT3V0cHV0U3RyZWFtIHN0cmVhbSA9IG5ldyBGaWxl
T3V0cHV0U3RyZWFtKGRlc3RpbnkpOw0KLSAgICAgICAgWG1pV3JpdGVyIHhtaVdyaXRlciA9IA0K
LSAgICAgICAgICAgIE1vZGVsLmdldFhtaVdyaXRlcihtb2RlbCwgc3RyZWFtLCANCisgICAgICAg
IFhtaVdyaXRlciB4bWlXcml0ZXIgPQ0KKyAgICAgICAgICAgIE1vZGVsLmdldFhtaVdyaXRlciht
b2RlbCwgc3RyZWFtLA0KICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25WZXJzaW9uLmdl
dFZlcnNpb24oKSArICIoIg0KICAgICAgICAgICAgICAgICAgICAgICAgICsgVW1sRmlsZVBlcnNp
c3Rlci5QRVJTSVNURU5DRV9WRVJTSU9OICsgIikiKTsNCiAgICAgICAgIHhtaVdyaXRlci53cml0
ZSgpOw0KQEAgLTE2MywxMyArMTY0LDEzIEBADQogICAgICAgICAgICAgICAgIHJldHVybiB0aGVG
aWxlOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAg
cmV0dXJuIG51bGw7DQogICAgIH0NCi0gICAgDQorDQogICAgIHByaXZhdGUgc3RhdGljIGJvb2xl
YW4gaXNYbWlGaWxlKEZpbGUgZmlsZSkgew0KICAgICAgICAgcmV0dXJuIGZpbGUuaXNGaWxlKCkN
Ci0gICAgICAgICAgICAgICAgJiYgKGZpbGUuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCkuZW5kc1dp
dGgoIi54bWwiKSANCisgICAgICAgICAgICAgICAgJiYgKGZpbGUuZ2V0TmFtZSgpLnRvTG93ZXJD
YXNlKCkuZW5kc1dpdGgoIi54bWwiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGZpbGUu
Z2V0TmFtZSgpLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi54bWkiKSk7DQogICAgIH0NCiB9DQoN
Ck1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxv
cmVyL0RuREV4cGxvcmVyVHJlZS5qYXZhDQpVcmw6IGh0dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcv
c291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdWkvZXhwbG9yZXIvRG5ERXhwbG9yZXJUcmVlLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5
MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3Ny
Yy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvRG5ERXhwbG9yZXJUcmVl
LmphdmEJKG9yaWdpbmFsKQ0KKysrIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdWkvZXhwbG9yZXIvRG5ERXhwbG9yZXJUcmVlLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0w
ODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAkSWQkDQogICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQot
ICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHly
aWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN
CiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1
YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv
biwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAgLTcyLDYgKzcyLDggQEANCiBpbXBvcnQgamF2YS5p
by5JT0V4Y2VwdGlvbjsNCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCiBpbXBvcnQgamF2
YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2lt
cG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGphdmF4LnN3aW5nLklj
b247DQogaW1wb3J0IGphdmF4LnN3aW5nLkpMYWJlbDsNCkBAIC04Miw3ICs4NCw2IEBADQogaW1w
b3J0IGphdmF4LnN3aW5nLnRyZWUuRGVmYXVsdE11dGFibGVUcmVlTm9kZTsNCiBpbXBvcnQgamF2
YXguc3dpbmcudHJlZS5UcmVlUGF0aDsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dn
ZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLk1vZGVsOw0KIGltcG9ydCBvcmcuYXJnb3Vt
bC51aS5UcmFuc2ZlcmFibGVNb2RlbEVsZW1lbnRzOw0KIGltcG9ydCBvcmcuYXJnb3VtbC51aS50
YXJnZXRtYW5hZ2VyLlRhcmdldE1hbmFnZXI7DQpAQCAtOTEsOSArOTIsOSBAQA0KIA0KIC8qKg0K
ICAqIFRoaXMgY2xhc3MgZXh0ZW5kcyB0aGUgZGVmYXVsdCBBcmdvIEpUcmVlIHdpdGggRHJhZyBh
bmQgZHJvcCBjYXBhYmlsaXRpZXMuPHA+DQotICogU2VlIDxhIA0KKyAqIFNlZSA8YQ0KICAqIGhy
ZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjQuMi9kb2NzL2d1aWRlL2RyYWduZHJvcC9z
cGVjL2RuZDEuaHRtbCI+DQotICogZG5kMTwvYT4gYW5kIDxhIA0KKyAqIGRuZDE8L2E+IGFuZCA8
YQ0KICAqIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vcHJvZHVjdHMvamZjL3RzYy9hcnRpY2xl
cy9kcmFnbmRyb3AvaW5kZXguaHRtbCI+DQogICogZG5kMjwvYT48cD4NCiAgKg0KQEAgLTEwMSwx
MSArMTAyLDExIEBADQogICogPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9qMnNlLzEuMy9k
b2NzL2d1aWRlL3N3aW5nL0tleUJpbmRDaGFuZ2VzLmh0bWwiPg0KICAqIEtleUJpbmRDaGFuZ2Vz
PC9hPjxwPg0KICAqDQotICogVGhlIGdob3N0ZWQgaW1hZ2VzIGNvZGUgb3JpZ2luYXRlcyBmcm9t
IDxwPjxhIA0KKyAqIFRoZSBnaG9zdGVkIGltYWdlcyBjb2RlIG9yaWdpbmF0ZXMgZnJvbSA8cD48
YQ0KICAqIGhyZWY9Imh0dHA6Ly93d3cuamF2YXdvcmxkLmNvbS9qYXZhd29ybGQvamF2YXRpcHMv
anctamF2YXRpcDExNC5odG1sIj4NCiAgKiBqYXZhdGlwMTE0PC9hPjxwPg0KICAqDQotICogSW50
ZXJlc3RpbmcgbWF5IGFsc28gYmUgdGhlIGZvbGxvd2luZzogPHA+PGEgDQorICogSW50ZXJlc3Rp
bmcgbWF5IGFsc28gYmUgdGhlIGZvbGxvd2luZzogPHA+PGENCiAgKiBocmVmPSJodHRwOi8vZm9y
dW0uamF2YS5zdW4uY29tL3RocmVhZC5qc3BhP3RocmVhZElEPTI5NjI1NSZzdGFydD0zMCI+DQog
ICogdGhyZWFkPC9hPg0KICAqDQpAQCAtMTIxLDcgKzEyMiw3IEBADQogICAgICAqIExvZ2dlci4N
CiAgICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KLSAgICAJ
TG9nZ2VyLmdldExvZ2dlcihEbkRFeHBsb3JlclRyZWUuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2Vy
LmdldExvZ2dlcihEbkRFeHBsb3JlclRyZWUuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERJQUdSQU1fVE9fQ0xJUEJPQVJEX0FDVElPTiA9DQog
ICAgICAgICAiZXhwb3J0IERpYWdyYW0gYXMgR0lGIjsNCkBAIC0xMzAsMTAgKzEzMSwxMiBAQA0K
ICAgICAgKiBXaGVyZSwgaW4gdGhlIGRyYWcgaW1hZ2UsIHRoZSBtb3VzZSB3YXMgY2xpY2tlZC4N
CiAgICAgICovDQogICAgIHByaXZhdGUgUG9pbnQJY2xpY2tPZmZzZXQgPSBuZXcgUG9pbnQoKTsN
CisNCiAgICAgLyoqDQogICAgICAqIFRoZSBwYXRoIGJlaW5nIGRyYWdnZWQuDQogICAgICAqLw0K
ICAgICBwcml2YXRlIFRyZWVQYXRoCQlzb3VyY2VQYXRoOw0KKw0KICAgICAvKioNCiAgICAgICog
VGhlICdkcmFnIGltYWdlJy4NCiAgICAgICovDQpAQCAtMTkxLDEwICsxOTQsMTAgQEANCiAgICAg
ICogVGhlIHR5cGljYWwgcmVzcG9uc2UgaXMgdG8gaW5pdGlhdGUgYSBkcmFnIGJ5IGludm9raW5n
DQogICAgICAqIERyYWdTb3VyY2Uuc3RhcnREcmFnKCkuDQogICAgICAqIDxwPg0KLSAgICAgKiAN
CisgICAgICoNCiAgICAgICogVE9ETzogZmluZCBhIHdheSB0byBzaG93IGEgZGlmZmVyZW50IGlt
YWdlIHdoZW4gbXVsdGlwbGUgZWxlbWVudHMgYXJlDQogICAgICAqIGRyYWdnZWQuDQotICAgICAq
IA0KKyAgICAgKg0KICAgICAgKiBAcGFyYW0gZHJhZ0dlc3R1cmVFdmVudA0KICAgICAgKiAgICAg
ICAgICAgIHRoZSBEcmFnR2VzdHVyZUV2ZW50IGRlc2NyaWJpbmcgdGhlIGdlc3R1cmUgdGhhdCBo
YXMganVzdA0KICAgICAgKiAgICAgICAgICAgIG9jY3VycmVkDQpAQCAtMjExLDEwICsyMTQsOSBA
QA0KICAgICAgICAgaWYgKHRhcmdldHMuc2l6ZSgpIDwgMSkgew0KICAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgIH0NCi0gICAgICAgIGlmIChMT0cuaXNEZWJ1Z0VuYWJsZWQoKSkgew0KLSAg
ICAgICAgICAgIExPRy5kZWJ1ZygiRHJhZzogc3RhcnQgdHJhbnNmZXJyaW5nICIgKyB0YXJnZXRz
LnNpemUoKQ0KLSAgICAgICAgICAgICAgICAgICAgKyAiIHRhcmdldHMuIik7DQotICAgICAgICB9
DQorDQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJEcmFnOiBzdGFydCB0cmFuc2ZlcnJp
bmcgezB9IHRhcmdldHMuIiwgdGFyZ2V0cy5zaXplKCkpOw0KKw0KICAgICAgICAgVHJhbnNmZXJh
YmxlTW9kZWxFbGVtZW50cyB0ZiA9DQogICAgICAgICAgICAgbmV3IFRyYW5zZmVyYWJsZU1vZGVs
RWxlbWVudHModGFyZ2V0cyk7DQogDQpAQCAtMjk1LDE2ICsyOTcsMTYgQEANCiAgICAgcHJpdmF0
ZSBib29sZWFuIGlzVmFsaWREcmFnKFRyZWVQYXRoIGRlc3RpbmF0aW9uUGF0aCwNCiAgICAgCQlU
cmFuc2ZlcmFibGUgdGYpIHsNCiAgICAgICAgIGlmIChkZXN0aW5hdGlvblBhdGggPT0gbnVsbCkg
ew0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygiTm8gdmFsaWQgRHJhZzogbm8gZGVzdGluYXRpb24g
Zm91bmQuIik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiTm8gdmFsaWQgRHJh
Zzogbm8gZGVzdGluYXRpb24gZm91bmQuIik7DQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgICAgICAgfQ0KICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZVBhdGguaXNEZXNjZW5kYW50KGRl
c3RpbmF0aW9uUGF0aCkpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIk5vIHZhbGlkIERyYWc6
IG1vdmUgdG8gZGVzY2VuZGVudC4iKTsNCisgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUs
ICJObyB2YWxpZCBEcmFnOiBtb3ZlIHRvIGRlc2NlbmRlbnQuIik7DQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgICAgICAgfQ0KICAgICAgICAgaWYgKCF0Zi5pc0RhdGFGbGF2b3JTdXBw
b3J0ZWQoDQogICAgICAgICAgICAgICAgIFRyYW5zZmVyYWJsZU1vZGVsRWxlbWVudHMuVU1MX0NP
TExFQ1RJT05fRkxBVk9SKSkgew0KLSAgICAgICAgICAgIExPRy5kZWJ1ZygiTm8gdmFsaWQgRHJh
ZzogZmxhdm9yIG5vdCBzdXBwb3J0ZWQuIik7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5G
SU5FLCAiTm8gdmFsaWQgRHJhZzogZmxhdm9yIG5vdCBzdXBwb3J0ZWQuIik7DQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgfQ0KICAgICAgICAgT2JqZWN0IGRlc3QgPQ0KQEAg
LTMxOCwxMyArMzIwLDEzIEBADQogDQogICAgICAgICAvKiBJZiB0aGUgZGVzdGluYXRpb24gaXMg
bm90IGEgTmFtZVNwYWNlLCB0aGVuIGFib3J0OiAqLw0KICAgICAgICAgaWYgKCFNb2RlbC5nZXRG
YWNhZGUoKS5pc0FOYW1lc3BhY2UoZGVzdCkpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoIk5v
IHZhbGlkIERyYWc6IG5vdCBhIG5hbWVzcGFjZS4iKTsNCisgICAgICAgICAgICBMT0cubG9nKExl
dmVsLkZJTkUsICJObyB2YWxpZCBEcmFnOiBub3QgYSBuYW1lc3BhY2UuIik7DQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgLyogV2UgYXJlIHN1cmUg
ImRlc3QiIGlzIGEgTmFtZXNwYWNlIG5vdy4gKi8NCiAgICAgICAgIGlmIChNb2RlbC5nZXRNb2Rl
bE1hbmFnZW1lbnRIZWxwZXIoKS5pc1JlYWRPbmx5KGRlc3QpKSB7DQotICAgICAgICAgICAgTE9H
LmRlYnVnKCJObyB2YWxpZCBEcmFnOiAiDQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5F
LCAiTm8gdmFsaWQgRHJhZzogIg0KICAgICAgICAgICAgICAgICAgICAgKyAidGhpcyBpcyBub3Qg
YW4gZWRpdGFibGUgVU1MIGVsZW1lbnQgKHByb2ZpbGU/KS4iKTsNCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgICAgICB9DQpAQCAtMzMzLDIwICszMzUsMjAgQEANCiANCiAgICAgICAg
IC8vIFRPRE86IEFueSBOYW1lc3BhY2UgY2FuIGNvbnRhaW4gb3RoZXIgZWxlbWVudHMuICBXaHkg
ZG9uJ3Qgd2UgYWxsb3cNCiAgICAgICAgIC8vIHRoaXM/IC0gdGZtDQotICAgICAgICAvKiANCisg
ICAgICAgIC8qDQogICAgICAgICAgKiBNVlc6IFRoZXNlIGFyZSB0aGUgV0ZScyBmb3IgRGF0YVR5
cGU6DQotICAgICAgICAgKiBbMV0gQSBEYXRhVHlwZSBjYW4gb25seSBjb250YWluIE9wZXJhdGlv
bnMsIA0KKyAgICAgICAgICogWzFdIEEgRGF0YVR5cGUgY2FuIG9ubHkgY29udGFpbiBPcGVyYXRp
b25zLA0KICAgICAgICAgICogd2hpY2ggYWxsIG11c3QgYmUgcXVlcmllcy4NCiAgICAgICAgICAq
IHNlbGYuYWxsRmVhdHVyZXMtPmZvckFsbChmIHwNCi0gICAgICAgICAqICBmLm9jbElzS2luZE9m
KE9wZXJhdGlvbikgYW5kIGYub2NsQXNUeXBlKE9wZXJhdGlvbikuaXNRdWVyeSkgDQorICAgICAg
ICAgKiAgZi5vY2xJc0tpbmRPZihPcGVyYXRpb24pIGFuZCBmLm9jbEFzVHlwZShPcGVyYXRpb24p
LmlzUXVlcnkpDQogICAgICAgICAgKiBbMl0gQSBEYXRhVHlwZSBjYW5ub3QgY29udGFpbiBhbnkg
b3RoZXIgTW9kZWxFbGVtZW50cy4NCiAgICAgICAgICAqICBzZWxmLmFsbENvbnRlbnRzLT5pc0Vt
cHR5DQogICAgICAgICAgKiAgSU1ITyB3ZSBzaG91bGQgZW5mb3JjZSB0aGVzZSBXRlJzIGhlcmUu
DQogICAgICAgICAgKiAgLi4uIHNvIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIGNvcHkgb3IgbW92
ZSBxdWVyeSBvcGVyYXRpb25zLA0KLSAgICAgICAgICogIGhlbmNlIHdlIHNob3VsZCBhbGxvdyB0
aGlzLiANCisgICAgICAgICAqICBoZW5jZSB3ZSBzaG91bGQgYWxsb3cgdGhpcy4NCiAgICAgICAg
ICAqLw0KICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQURhdGFUeXBlKGRlc3QpKSB7
DQotICAgICAgICAgICAgTE9HLmRlYnVnKCJObyB2YWxpZCBEcmFnOiBkZXN0aW5hdGlvbiBpcyBh
IERhdGFUeXBlLiIpOw0KKyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIk5vIHZhbGlk
IERyYWc6IGRlc3RpbmF0aW9uIGlzIGEgRGF0YVR5cGUuIik7DQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOw0KICAgICAgICAgfQ0KIA0KQEAgLTM2MiwxNCArMzY0LDE0IEBADQogICAgICAgICAg
ICAgZm9yIChPYmplY3QgZWxlbWVudCA6IHRyYW5zZmVycykgew0KICAgICAgICAgICAgICAgICBp
ZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBVU1MRWxlbWVudChlbGVtZW50KSkgew0KICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFNb2RlbC5nZXRNb2RlbE1hbmFnZW1lbnRIZWxwZXIoKS5pc1JlYWRP
bmx5KGVsZW1lbnQpKSB7DQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1vZGVsLmdldEZh
Y2FkZSgpLmlzQU1vZGVsRWxlbWVudChkZXN0KSANCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICYmIE1vZGVsLmdldEZhY2FkZSgpLmlzQU5hbWVzcGFjZShlbGVtZW50KSANCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBTW9kZWxFbGVtZW50
KGRlc3QpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBNb2RlbC5nZXRGYWNh
ZGUoKS5pc0FOYW1lc3BhY2UoZWxlbWVudCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIE1vZGVsLmdldENvcmVIZWxwZXIoKS5pc1ZhbGlkTmFtZXNwYWNlKA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LCBkZXN0KSkgew0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMT0cuZGVidWcoIlZhbGlkIERyYWc6IG5hbWVzcGFjZSAi
ICsgZGVzdCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklO
RSwgIlZhbGlkIERyYWc6IG5hbWVzcGFjZSB7MH0iLCBkZXN0KTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FGZWF0dXJlKGVs
ZW1lbnQpIA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5p
c0FGZWF0dXJlKGVsZW1lbnQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBN
b2RlbC5nZXRGYWNhZGUoKS5pc0FDbGFzc2lmaWVyKGRlc3QpKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgIH0NCkBA
IC0zNzgsMTcgKzM4MCwxNyBAQA0KICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5j
ZW9mIFJlbG9jYXRhYmxlKSB7DQogICAgICAgICAgICAgICAgICAgICBSZWxvY2F0YWJsZSBkID0g
KFJlbG9jYXRhYmxlKSBlbGVtZW50Ow0KICAgICAgICAgICAgICAgICAgICAgaWYgKGQuaXNSZWxv
Y2F0aW9uQWxsb3dlZChkZXN0KSkgew0KLSAgICAgICAgICAgICAgICAgICAgICAgIExPRy5kZWJ1
ZygiVmFsaWQgRHJhZzogZGlhZ3JhbSAiICsgZGVzdCk7DQorICAgICAgICAgICAgICAgICAgICAg
ICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiVmFsaWQgRHJhZzogZGlhZ3JhbSB7MH0iLCBkZXN0KTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0gY2F0
Y2ggKFVuc3VwcG9ydGVkRmxhdm9yRXhjZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICBMT0cuZGVi
dWcoZSk7DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiIiwgZSk7DQogICAgICAg
ICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgTE9HLmRlYnVnKGUpOw0K
KyAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgIiIsIGUpOw0KICAgICAgICAgfQ0KLSAg
ICAgICAgTE9HLmRlYnVnKCJObyB2YWxpZCBEcmFnOiBub3QgYSB2YWxpZCBuYW1lc3BhY2UuIik7
DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJObyB2YWxpZCBEcmFnOiBub3QgYSB2YWxp
ZCBuYW1lc3BhY2UuIik7DQogICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgIH0NCiANCkBAIC01
NzcsNyArNTc5LDcgQEANCiAgICAgICAgICAqLw0KICAgICAgICAgcHVibGljIHZvaWQgZHJhZ0Vu
dGVyKA0KICAgICAgICAgICAgICAgICBEcm9wVGFyZ2V0RHJhZ0V2ZW50IGRyb3BUYXJnZXREcmFn
RXZlbnQpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoImRyYWdFbnRlciIpOw0KKyAgICAgICAg
ICAgIExPRy5sb2coTGV2ZWwuRklORSwgImRyYWdFbnRlciIpOw0KICAgICAgICAgICAgIGlmICgh
aXNEcmFnQWNjZXB0YWJsZShkcm9wVGFyZ2V0RHJhZ0V2ZW50KSkgew0KICAgICAgICAgICAgICAg
ICBkcm9wVGFyZ2V0RHJhZ0V2ZW50LnJlamVjdERyYWcoKTsNCiAgICAgICAgICAgICB9IGVsc2Ug
ew0KQEAgLTU5MCw3ICs1OTIsNyBAQA0KICAgICAgICAgICogQHNlZSBqYXZhLmF3dC5kbmQuRHJv
cFRhcmdldExpc3RlbmVyI2RyYWdFeGl0KGphdmEuYXd0LmRuZC5Ecm9wVGFyZ2V0RXZlbnQpDQog
ICAgICAgICAgKi8NCiAgICAgICAgIHB1YmxpYyB2b2lkIGRyYWdFeGl0KERyb3BUYXJnZXRFdmVu
dCBkcm9wVGFyZ2V0RXZlbnQpIHsNCi0gICAgICAgICAgICBMT0cuZGVidWcoImRyYWdFeGl0Iik7
DQorICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiZHJhZ0V4aXQiKTsNCiAgICAgICAg
ICAgICBpZiAoIURyYWdTb3VyY2UuaXNEcmFnSW1hZ2VTdXBwb3J0ZWQoKSkgew0KICAgICAgICAg
ICAgICAgICByZXBhaW50KGdob3N0UmVjdGFuZ2xlLmdldEJvdW5kcygpKTsNCiAgICAgICAgICAg
ICB9DQpAQCAtNjA5LDcgKzYxMSw3IEBADQogICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgLyogTWFueSBtYW55IG9mIHRoZXNlIGV2ZW50cyAuLiB0
aGlzIHNsb3dzIHRoaW5ncyBkb3duOiAqLw0KLS8vICAgICAgICAgICAgTE9HLmRlYnVnKCJkcmFn
T3ZlciIpOw0KKy8vICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiZHJhZ092ZXIiKTsN
CiANCiAgICAgICAgICAgICBsYXN0TW91c2VMb2NhdGlvbiA9IHB0Ow0KIA0KQEAgLTcwMyw3ICs3
MDUsNyBAQA0KIA0KICAgICAgICAgICAgIC8qIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBub3QgYSBO
YW1lU3BhY2UsIHRoZW4gcmVqZWN0OiAqLw0KICAgICAgICAgICAgIGlmICghTW9kZWwuZ2V0RmFj
YWRlKCkuaXNBTmFtZXNwYWNlKGRlc3QpKSB7DQotICAgICAgICAgICAgICAgIGlmIChMT0cuaXNE
ZWJ1Z0VuYWJsZWQoKSkgew0KKyAgICAgICAgICAgICAgICBpZiAoTE9HLmlzTG9nZ2FibGUoTGV2
ZWwuRklORSkpIHsNCiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lOw0KICAgICAgICAg
ICAgICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQVVNTEVsZW1lbnQoZGVzdCkpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gTW9kZWwuZ2V0RmFjYWRlKCkuZ2V0TmFt
ZShkZXN0KTsNCkBAIC03MTIsOCArNzE0LDggQEANCiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGRlc3QudG9TdHJpbmcoKTsNCiAg
ICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygiTm8g
dmFsaWQgRHJhZzogIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChNb2RlbC5nZXRG
YWNhZGUoKS5pc0FVTUxFbGVtZW50KGRlc3QpIA0KKyAgICAgICAgICAgICAgICAgICAgTE9HLmxv
ZyhMZXZlbC5GSU5FLCAiTm8gdmFsaWQgRHJhZzogIg0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICArIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FVTUxFbGVtZW50KGRlc3QpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuYW1lICsgIiBub3QgYSBuYW1lc3BhY2UuIg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICIgbm90IGEgVU1MIGVsZW1l
bnQuIikpOw0KICAgICAgICAgICAgICAgICB9DQpAQCAtNzIzLDE0ICs3MjUsMTQgQEANCiAgICAg
ICAgICAgICAvKiBXZSBhcmUgc3VyZSAiZGVzdCIgaXMgYSBOYW1lc3BhY2Ugbm93LiAqLw0KIA0K
ICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRNb2RlbE1hbmFnZW1lbnRIZWxwZXIoKS5pc1JlYWRP
bmx5KGRlc3QpKSB7DQotICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygiTm8gdmFsaWQgRHJhZzog
Ig0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJObyB2YWxpZCBEcmFnOiAi
DQogICAgICAgICAgICAgICAgICAgICAgICAgKyAibm90IGFuIGVkaXRhYmxlIFVNTCBlbGVtZW50
IChwcm9maWxlPykuIik7DQogICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICB9
DQogDQogICAgICAgICAgICAgLyogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIGEgRGF0YVR5cGUsIHRo
ZW4gcmVqZWN0OiAqLw0KICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRGYWNhZGUoKS5pc0FEYXRh
VHlwZShkZXN0KSkgew0KLSAgICAgICAgICAgICAgICBMT0cuZGVidWcoIk5vIHZhbGlkIERyYWc6
IGRlc3RpbmF0aW9uIGlzIGEgRGF0YVR5cGUuIik7DQorICAgICAgICAgICAgICAgIExPRy5sb2co
TGV2ZWwuRklORSwgIk5vIHZhbGlkIERyYWc6IGRlc3RpbmF0aW9uIGlzIGEgRGF0YVR5cGUuIik7
DQogICAgICAgICAgICAgICAgIGRyb3BUYXJnZXREcmFnRXZlbnQucmVqZWN0RHJhZygpOw0KICAg
ICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgfQ0KQEAgLTc0NSw3ICs3NDcsNyBA
QA0KICAgICAgICAgICogQHNlZSBqYXZhLmF3dC5kbmQuRHJvcFRhcmdldExpc3RlbmVyI2Ryb3Ao
amF2YS5hd3QuZG5kLkRyb3BUYXJnZXREcm9wRXZlbnQpDQogICAgICAgICAgKi8NCiAgICAgICAg
IHB1YmxpYyB2b2lkIGRyb3AoRHJvcFRhcmdldERyb3BFdmVudCBkcm9wVGFyZ2V0RHJvcEV2ZW50
KSB7DQotICAgICAgICAgICAgTE9HLmRlYnVnKCJkcm9wcGluZyAuLi4gIik7DQorICAgICAgICAg
ICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiZHJvcHBpbmcgLi4uICIpOw0KICAgICAgICAgICAgIC8q
IFByZXZlbnQgaG92ZXIgdGltZXIgZnJvbSBkb2luZyBhbiB1bndhbnRlZA0KICAgICAgICAgICAg
ICAqIGV4cGFuZFBhdGggb3IgY29sbGFwc2VQYXRoOg0KICAgICAgICAgICAgICAqLw0KQEAgLTc2
NCw5ICs3NjYsOCBAQA0KICAgICAgICAgICAgICAgICAvL2dldCBuZXcgcGFyZW50IG5vZGUNCiAg
ICAgICAgICAgICAgICAgUG9pbnQgbG9jID0gZHJvcFRhcmdldERyb3BFdmVudC5nZXRMb2NhdGlv
bigpOw0KICAgICAgICAgICAgICAgICBUcmVlUGF0aCBkZXN0aW5hdGlvblBhdGggPSBnZXRQYXRo
Rm9yTG9jYXRpb24obG9jLngsIGxvYy55KTsNCi0gICAgICAgICAgICAgICAgaWYgKExPRy5pc0Rl
YnVnRW5hYmxlZCgpKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cuZGVidWcoIkRyb3AgbG9j
YXRpb246IHg9IiArIGxvYy54ICsgIiB5PSIgKyBsb2MueSk7DQotICAgICAgICAgICAgICAgIH0N
CisgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwg
IkRyb3AgbG9jYXRpb246IHg9ezB9IHk9IHsxfSIgLCBuZXcgT2JqZWN0W117bG9jLngsbG9jLnl9
KTsNCiANCiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRHJhZyhkZXN0aW5hdGlvblBhdGgs
IHRyKSkgew0KICAgICAgICAgICAgICAgICAgICAgZHJvcFRhcmdldERyb3BFdmVudC5yZWplY3RE
cm9wKCk7DQpAQCAtNzc3LDEwICs3NzgsOSBAQA0KICAgICAgICAgICAgICAgICBDb2xsZWN0aW9u
IG1vZGVsRWxlbWVudHMgPQ0KICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpb24pIHRyLmdl
dFRyYW5zZmVyRGF0YSgNCiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2ZlcmFibGVNb2Rl
bEVsZW1lbnRzLlVNTF9DT0xMRUNUSU9OX0ZMQVZPUik7DQotICAgICAgICAgICAgICAgIGlmIChM
T0cuaXNEZWJ1Z0VuYWJsZWQoKSkgew0KLSAgICAgICAgICAgICAgICAgICAgTE9HLmRlYnVnKCJ0
cmFuc2ZlciBkYXRhID0gIiArIG1vZGVsRWxlbWVudHMpOw0KLSAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJ0
cmFuc2ZlciBkYXRhID0gezB9IiwgbW9kZWxFbGVtZW50cyk7DQorDQogICAgICAgICAgICAgICAg
IE9iamVjdCBkZXN0ID0NCiAgICAgICAgICAgICAgICAgICAgICgoRGVmYXVsdE11dGFibGVUcmVl
Tm9kZSkgZGVzdGluYXRpb25QYXRoDQogICAgICAgICAgICAgICAgICAgICAgICAgLmdldExhc3RQ
YXRoQ29tcG9uZW50KCkpLmdldFVzZXJPYmplY3QoKTsNCkBAIC04MTcsNyArODE3LDcgQEANCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgICAg
IC8vIFRPRE86IFJlYWxseSBzaG91bGQgYmUgRWxlbWVudC9Nb2RlbEVsZW1lbnQsIGJ1dCB3ZSBk
b24ndA0KICAgICAgICAgICAgICAgICAvLyBoYXZlIGEgdHlwZSB3aGljaCBpcyBwb3J0YWJsZSBm
b3IgdGhpcw0KICAgICAgICAgICAgICAgICBDb2xsZWN0aW9uPE9iamVjdD4gbmV3VGFyZ2V0cyA9
IG5ldyBBcnJheUxpc3Q8T2JqZWN0PigpOw0KQEAgLTgyOSw5ICs4MjksOSBAQA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKExPRy5pc0RlYnVnRW5hYmxlZCgpKSB7DQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExPRy5kZWJ1ZygobW92ZUFjdGlvbiA/ICJtb3ZlICIgOiAiY29weSAiKSArIG1lKTsN
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgDQor
ICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLChtb3ZlQWN0aW9uID8g
Im1vdmUgIiA6ICJjb3B5ICIpICsgbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRDb3JlSGVscGVyKCkuaXNWYWxpZE5h
bWVzcGFjZShtZSwgZGVzdCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1v
dmVBY3Rpb24pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsLmdldENv
cmVIZWxwZXIoKS5zZXROYW1lc3BhY2UobWUsIGRlc3QpOw0KQEAgLTg0MiwxMCArODQyLDEwIEBA
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0cy5hZGQoTW9k
ZWwuZ2V0Q29weUhlbHBlcigpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuY29weShtZSwgZGVzdCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogVE9ETzogVGhlIGNvcHkgZnVuY3Rpb24gaXMgbm90IHlldCANCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjb21wbGV0ZWx5IGltcGxlbWVu
dGVkIC0gc28gd2Ugd2lsbCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBUT0RPOiBUaGUgY29weSBmdW5jdGlvbiBpcyBub3QgeWV0DQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogY29tcGxldGVseSBpbXBsZW1lbnRlZCAtIHNvIHdlIHdpbGwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoYXZlIHNvbWUgZXhjZXB0
aW9ucyBoZXJlIGFuZCB0aGVyZS4qLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExPRy5lcnJvcigiRXhjZXB0aW9uIiwgZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsICJFeGNlcHRpb24iLCBlKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIH0NCkBAIC04NjYsNyArODY2LDcgQEANCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoTW9kZWwuZ2V0RmFjYWRlKCkuaXNBRmVhdHVyZShtZSkgDQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKE1vZGVsLmdldEZhY2FkZSgpLmlzQUZlYXR1cmUobWUpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBNb2RlbC5nZXRGYWNhZGUoKS5pc0FDbGFzc2lm
aWVyKGRlc3QpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb3ZlQWN0aW9u
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlbC5nZXRDb3JlSGVscGVy
KCkucmVtb3ZlRmVhdHVyZSgNCkBAIC04ODQsMTcgKzg4NCwxNyBAQA0KICAgICAgICAgICAgICAg
ICAgICAgICAgIC5kcm9wQ29tcGxldGUodHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICBUYXJn
ZXRNYW5hZ2VyLmdldEluc3RhbmNlKCkuc2V0VGFyZ2V0cyhuZXdUYXJnZXRzKTsNCiAgICAgICAg
ICAgICAgICAgfSBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBpbHMpIHsN
Ci0gICAgICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygiZHJvcCBJbGxlZ2FsU3RhdGVFeGNlcHRp
b24iKTsNCisgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImRyb3AgSWxs
ZWdhbFN0YXRlRXhjZXB0aW9uIik7DQogICAgICAgICAgICAgICAgICAgICBkcm9wVGFyZ2V0RHJv
cEV2ZW50LnJlamVjdERyb3AoKTsNCiAgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAg
ICAgICBkcm9wVGFyZ2V0RHJvcEV2ZW50LmdldERyb3BUYXJnZXRDb250ZXh0KCkNCiAgICAgICAg
ICAgICAgICAgICAgIC5kcm9wQ29tcGxldGUodHJ1ZSk7DQogICAgICAgICAgICAgfSBjYXRjaCAo
SU9FeGNlcHRpb24gaW8pIHsNCi0gICAgICAgICAgICAgICAgTE9HLmRlYnVnKCJkcm9wIElPRXhj
ZXB0aW9uIik7DQorICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwuRklORSwgImRyb3AgSU9F
eGNlcHRpb24iKTsNCiAgICAgICAgICAgICAgICAgZHJvcFRhcmdldERyb3BFdmVudC5yZWplY3RE
cm9wKCk7DQogICAgICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRGbGF2b3JFeGNlcHRpb24g
dWZlKSB7DQotICAgICAgICAgICAgICAgIExPRy5kZWJ1ZygiZHJvcCBVbnN1cHBvcnRlZEZsYXZv
ckV4Y2VwdGlvbiIpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJkcm9w
IFVuc3VwcG9ydGVkRmxhdm9yRXhjZXB0aW9uIik7DQogICAgICAgICAgICAgICAgIGRyb3BUYXJn
ZXREcm9wRXZlbnQucmVqZWN0RHJvcCgpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCkBA
IC05NjgsNSArOTY4LDMgQEANCiAgICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxv
bmcgc2VyaWFsVmVyc2lvblVJRCA9IDYyMDcyMzAzOTQ4NjAwMTY2MTdMOw0KIH0NCi0NCi0NCg0K
TW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9y
ZXIvRXhwbG9yZXJFdmVudEFkYXB0b3IuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMu
b3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9h
cmdvdW1sL3VpL2V4cGxvcmVyL0V4cGxvcmVyRXZlbnRBZGFwdG9yLmphdmE/dmlldz1kaWZmJnBh
dGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvRXhwbG9y
ZXJFdmVudEFkYXB0b3IuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9FeHBsb3JlckV2ZW50QWRhcHRvci5qYXZhCTIw
MTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBz
ZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUg
YmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv
bXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5p
ZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC00MCwxMCArNDAs
MTEgQEANCiANCiBpbXBvcnQgamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUV2ZW50Ow0KIGltcG9y
dCBqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXI7DQoraW1wb3J0IGphdmEudXRpbC5s
b2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1w
b3J0IGphdmF4LnN3aW5nLlN3aW5nVXRpbGl0aWVzOw0KIA0KLWltcG9ydCBvcmcuYXBhY2hlLmxv
ZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uZXZlbnRzLkFyZ29F
dmVudFB1bXA7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmFwcGxpY2F0aW9uLmV2ZW50cy5BcmdvRXZl
bnRUeXBlczsNCiBpbXBvcnQgb3JnLmFyZ291bWwuYXBwbGljYXRpb24uZXZlbnRzLkFyZ29Qcm9m
aWxlRXZlbnQ7DQpAQCAtNjcsNyArNjgsNyBAQA0KICAqIFRPRE86IEluIHNvbWUgY2FzZXMgKHRl
c3QgY2FzZXMpIHRoaXMgb2JqZWN0IGlzIGNyZWF0ZWQgd2l0aG91dCBzZXR0aW5nDQogICogdGhl
IHRyZWVNb2RlbC4gSSAoTGludXMpIHdpbGwgYWRkIHRlc3RzIGZvciB0aGlzIG5vdy4gSXQgd291
bGQgYmUgYmV0dGVyDQogICogaWYgdGhpcyBpcyBjcmVhdGVkIG9ubHkgd2hlbiB0aGUgRXhwbG9y
ZXIgaXMgY3JlYXRlZC4gPHA+DQotICogDQorICoNCiAgKiBUT0RPOiBUaGUgRXhwbG9yZXJUcmVl
Tm9kZSBhbHNvIGxpc3RlbnMgdG8gc29tZSBldmVudHMNCiAgKiAoZnJvbSBEaWFncmFtcyksIHNv
IGl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcnVsZSBhYm92ZS4NCiAgKg0KQEAgLTc2LDkgKzc3LDkg
QEANCiAgKi8NCiBwdWJsaWMgZmluYWwgY2xhc3MgRXhwbG9yZXJFdmVudEFkYXB0b3INCiAgICAg
aW1wbGVtZW50cyBQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIHsNCi0gICAgDQorDQogICAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIExvZ2dlciBMT0cgPQ0KLSAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihF
eHBsb3JlckV2ZW50QWRhcHRvci5jbGFzcyk7DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKEV4
cGxvcmVyRXZlbnRBZGFwdG9yLmNsYXNzLmdldE5hbWUoKSk7DQogDQogICAgIC8qKg0KICAgICAg
KiBUaGUgc2luZ2xldG9uIGluc3RhbmNlLg0KQEAgLTEyMSw5ICsxMjIsOSBAQA0KICAgICB9DQog
DQogICAgIC8qKg0KLSAgICAgKiBUaGUgdHJlZSBzdHJ1Y3R1cmUgaGFzIGNoYW5nZWQgc2lnbmlm
aWNhbnRseS4gIA0KKyAgICAgKiBUaGUgdHJlZSBzdHJ1Y3R1cmUgaGFzIGNoYW5nZWQgc2lnbmlm
aWNhbnRseS4NCiAgICAgICogSW5mb3JtIHRoZSBhc3NvY2lhdGVkIHRyZWUgbW9kZWwuDQotICAg
ICAqIA0KKyAgICAgKg0KICAgICAgKiBUT0RPOiAgVGhpcyBzaG91bGRuJ3QgYmUgcHVibGljLiAg
Q29tcG9uZW50cyBkZXNpcmluZyB0bw0KICAgICAgKiBpbmZvcm0gdGhlIEV4cGxvcmVyIG9mIGNo
YW5nZXMgc2hvdWxkIHNlbmQgZXZlbnRzLg0KICAgICAgKiBAZGVwcmVjYXRlZCBieSBtdncgaW4g
VjAuMjUuNC4gVXNlIGV2ZW50cyBpbnN0ZWFkLg0KQEAgLTEzNiwxMiArMTM3LDEyIEBADQogICAg
ICAgICB0cmVlTW9kZWwuc3RydWN0dXJlQ2hhbmdlZCgpOw0KICAgICB9DQogDQotICAgIA0KKw0K
ICAgICAvKioNCiAgICAgICogZm9yd2FyZHMgdGhpcyBldmVudCB0byB0aGUgdHJlZSBtb2RlbC4N
CiAgICAgICoNCiAgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIG1vZGVsZWxlbWVudCB0byBiZSBh
ZGRlZA0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogVE9ETzogIFRoaXMgc2hvdWxkbid0IGJl
IHB1YmxpYy4gIENvbXBvbmVudHMgZGVzaXJpbmcgdG8NCiAgICAgICogaW5mb3JtIHRoZSBFeHBs
b3JlciBvZiBjaGFuZ2VzIHNob3VsZCBzZW5kIGV2ZW50cy4NCiAgICAgICovDQpAQCAtMTU2LDcg
KzE1Nyw3IEBADQogICAgICAqIGZvcndhcmRzIHRoaXMgZXZlbnQgdG8gdGhlIHRyZWUgbW9kZWwu
DQogICAgICAqDQogICAgICAqIEBwYXJhbSBlbGVtZW50IHRoZSBtb2RlbGVsZW1lbnQgdG8gYmUg
Y2hhbmdlZA0KLSAgICAgKiANCisgICAgICoNCiAgICAgICogVE9ETzogIFRoaXMgc2hvdWxkbid0
IGJlIHB1YmxpYy4gIENvbXBvbmVudHMgZGVzaXJpbmcgdG8NCiAgICAgICogaW5mb3JtIHRoZSBF
eHBsb3JlciBvZiBjaGFuZ2VzIHNob3VsZCBzZW5kIGV2ZW50cy4NCiAgICAgICovDQpAQCAtMTk3
LDE1ICsxOTgsMTIgQEANCiAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kZWxDaGFuZ2VkKChVbWxDaGFuZ2VFdmVudCkgcGNlKTsNCiAgICAgICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKEludmFsaWRFbGVtZW50RXhjZXB0aW9uIGUpIHsNCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoTE9HLmlzRGVidWdFbmFibGVkKCkpIHsNCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTE9HLmRlYnVnKCJ1cGRhdGVMYXlvdXQgbWV0aG9kIGFjY2Vz
c2VkICINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJkZWxldGVkIGVs
ZW1lbnQiLCBlKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAg
ICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAidXBkYXRlTGF5b3V0IG1ldGhvZCBhY2Nlc3Nl
ZCBkZWxldGVkIGVsZW1lbnQiLCBlKTsNCiAgICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAg
ICAgICAgICAgfSAgDQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9Ow0KICAgICAg
ICAgICAgIFN3aW5nVXRpbGl0aWVzLmludm9rZUxhdGVyKGRvV29ya1J1bm5hYmxlKTsNCi0gICAg
ICAgICAgICANCisNCiAgICAgICAgIH0gZWxzZSBpZiAocGNlLmdldFByb3BlcnR5TmFtZSgpLmVx
dWFscygNCiAgICAgICAgICAgICAgICAgLy8gVE9ETzogTm8gb25lIHNob3VsZCBiZSBzZW5kaW5n
IHRoZSBkZXByZWNhdGVkIGV2ZW50DQogICAgICAgICAgICAgICAgIC8vIGZyb20gb3V0c2lkZSBB
cmdvVU1MLCBidXQga2VlcCByZXNwb25kaW5nIHRvIGl0IGZvciBub3cNCkBAIC0yMjksNyArMjI3
LDcgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAg
IHByaXZhdGUgdm9pZCBtb2RlbENoYW5nZWQoVW1sQ2hhbmdlRXZlbnQgZXZlbnQpIHsNCiAgICAg
ICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEF0dHJpYnV0ZUNoYW5nZUV2ZW50KSB7DQogICAgICAg
ICAgICAgLy8gVE9ETzogQ2FuIHRoaXMgYmUgbWFkZSBtb3JlIHJlc3RyaWN0aXZlPw0KQEAgLTI1
NCwxMSArMjUyLDExIEBADQogICAgICAgICAgICAgICAgICAgICAuZ2V0U291cmNlKCkpOw0KICAg
ICAgICAgfQ0KICAgICB9DQotICAgIA0KLSAgICANCisNCisNCiAgICAgLyoqDQogICAgICAqIExp
c3RlbmVyIGZvciBhZGRpdGlvbnMgYW5kIHJlbW92YWxzIG9mIHByb2ZpbGVzLg0KLSAgICAgKiBT
aW5jZSB0aGV5IGdlbmVyYWxseSBoYXZlIGEgbWFqb3IgaW1wYWN0IG9uIHRoZSBleHBsb3JlciB0
cmVlLCANCisgICAgICogU2luY2UgdGhleSBnZW5lcmFsbHkgaGF2ZSBhIG1ham9yIGltcGFjdCBv
biB0aGUgZXhwbG9yZXIgdHJlZSwNCiAgICAgICogd2Ugc2ltcGx5IHVwZGF0ZSB0aGVtIGNvbXBs
ZXRlbHkuDQogICAgICAqDQogICAgICAqIEBhdXRob3IgTWljaGllbA0KQEAgLTI3Miw2ICsyNzAs
NiBAQA0KICAgICAgICAgcHVibGljIHZvaWQgcHJvZmlsZVJlbW92ZWQoQXJnb1Byb2ZpbGVFdmVu
dCBlKSB7DQogICAgICAgICAgICAgc3RydWN0dXJlQ2hhbmdlZCgpOw0KICAgICAgICAgfQ0KLSAg
ICAgICAgDQorDQogICAgIH0NCiB9DQoNCk1vZGlmaWVkOiB0cnVuay9zcmMvYXJnb3VtbC1hcHAv
c3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL0V4cGxvcmVyUGVyc3BlY3RpdmUuamF2YQ0KVXJs
OiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL0V4cGxvcmVyUGVyc3Bl
Y3RpdmUuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91aS9leHBsb3Jlci9FeHBsb3JlclBlcnNwZWN0aXZlLmphdmEJKG9yaWdpbmFsKQ0KKysr
IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvRXhwbG9y
ZXJQZXJzcGVjdGl2ZS5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2
IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykg
MjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAx
MiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlz
IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZh
aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4w
DQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFi
bGUgYXQNCkBAIC0zOCwxMSArMzgsMTEgQEANCiANCiBwYWNrYWdlIG9yZy5hcmdvdW1sLnVpLmV4
cGxvcmVyOw0KIA0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLkFy
cmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQogDQotaW1wb3J0IG9yZy5hcmdvdW1s
LnVpLmV4cGxvcmVyLnJ1bGVzLlBlcnNwZWN0aXZlUnVsZTsNCiBpbXBvcnQgb3JnLmFyZ291bWwu
aTE4bi5UcmFuc2xhdG9yOw0KK2ltcG9ydCBvcmcuYXJnb3VtbC51aS5leHBsb3Jlci5ydWxlcy5Q
ZXJzcGVjdGl2ZVJ1bGU7DQogDQogLyoqDQogICogUmVwcmVzZW50cyBhIHBlcnNwZWN0aXZlIChv
ciB2aWV3KSBvZiB0aGUgdW1sIG1vZGVsIGZvciBkaXNwbGF5IGluIHRoZQ0KDQpNb2RpZmllZDog
dHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9FeHBsb3Jl
clBvcHVwLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3Nl
L2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jl
ci9FeHBsb3JlclBvcHVwLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9MTk5MDYmcjI9
MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdvdW1sLWFwcC9z
cmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvRXhwbG9yZXJQb3B1cC5qYXZhCShvcmlnaW5hbCkN
CisrKyB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL0V4
cGxvcmVyUG9wdXAuamF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBA
QA0KIC8qICRJZCQNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MDktMjAxMCBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkt
MjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBU
aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUg
YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2
MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFp
bGFibGUgYXQNCkBAIC00OCw2ICs0OCw4IEBADQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KIGlt
cG9ydCBqYXZhLnV0aWwuU2V0Ow0KIGltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsNCitpbXBvcnQg
amF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dl
cjsNCiANCiBpbXBvcnQgamF2YXguc3dpbmcuQWJzdHJhY3RBY3Rpb247DQogaW1wb3J0IGphdmF4
LnN3aW5nLkFjdGlvbjsNCkBAIC01Niw3ICs1OCw2IEBADQogaW1wb3J0IGphdmF4LnN3aW5nLkpQ
b3B1cE1lbnU7DQogaW1wb3J0IGphdmF4LnN3aW5nLk1lbnVFbGVtZW50Ow0KIA0KLWltcG9ydCBv
cmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuaTE4bi5UcmFuc2xh
dG9yOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuQWN0aW9uTGlzdDsNCiBpbXBvcnQgb3Jn
LmFyZ291bWwua2VybmVsLlByb2ZpbGVDb25maWd1cmF0aW9uOw0KQEAgLTEwNCwxMSArMTA1LDEx
IEBADQogICovDQogcHVibGljIGNsYXNzIEV4cGxvcmVyUG9wdXAgZXh0ZW5kcyBKUG9wdXBNZW51
IHsNCiANCi0gICAgcHJpdmF0ZSBKTWVudSBjcmVhdGVEaWFncmFtcyA9IA0KKyAgICBwcml2YXRl
IEpNZW51IGNyZWF0ZURpYWdyYW1zID0NCiAgICAgICAgIG5ldyBKTWVudShtZW51TG9jYWxpemUo
Im1lbnUucG9wdXAuY3JlYXRlLWRpYWdyYW0iKSk7DQotICAgIA0KKw0KICAgICBwcml2YXRlIHN0
YXRpYyBmaW5hbCBMb2dnZXIgTE9HID0NCi0gICAgICAgIExvZ2dlci5nZXRMb2dnZXIoRXhwbG9y
ZXJQb3B1cC5jbGFzcyk7DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKEV4cGxvcmVyUG9wdXAu
Y2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIENyZWF0ZXMgYSBuZXcgaW5z
dGFuY2Ugb2YgRXhwbG9yZXJQb3B1cC4NCkBAIC0xMjAsNyArMTIxLDcgQEANCiAgICAgICovDQog
ICAgIHB1YmxpYyBFeHBsb3JlclBvcHVwKE9iamVjdCBzZWxlY3RlZEl0ZW0sIE1vdXNlRXZlbnQg
bWUpIHsNCiAgICAgICAgIHN1cGVyKCJFeHBsb3JlciBwb3B1cCBtZW51Iik7DQotICAgICAgICAN
CisNCiAgICAgICAgIC8qIENoZWNrIGlmIG11bHRpcGxlIGl0ZW1zIGFyZSBzZWxlY3RlZC4gKi8N
CiAgICAgICAgIGJvb2xlYW4gbXVsdGlTZWxlY3QgPQ0KICAgICAgICAgICAgICAgICBUYXJnZXRN
YW5hZ2VyLmdldEluc3RhbmNlKCkuZ2V0VGFyZ2V0cygpLnNpemUoKSA+IDE7DQpAQCAtMTgzLDE0
ICsxODQsMTQgQEANCiAgICAgICAgICAgICBpbml0TWVudUNyZWF0ZURpYWdyYW1zKCk7DQogICAg
ICAgICAgICAgdGhpcy5hZGQoY3JlYXRlRGlhZ3JhbXMpOw0KICAgICAgICAgfQ0KLSAgICAgICAg
DQorDQogICAgICAgICBpbml0TWVudUNyZWF0ZU1vZHVsZUFjdGlvbnMoKTsNCiANCiAgICAgICAg
IGlmIChtdXRhYmxlTW9kZWxFbGVtZW50c09ubHkpIHsNCiAgICAgICAgICAgICBpbml0TWVudUNy
ZWF0ZU1vZGVsRWxlbWVudHMoKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KLSAgICAgICAgZmlu
YWwgYm9vbGVhbiBtb2RlbEVsZW1lbnRTZWxlY3RlZCA9IA0KKw0KKyAgICAgICAgZmluYWwgYm9v
bGVhbiBtb2RlbEVsZW1lbnRTZWxlY3RlZCA9DQogICAgICAgICAgICAgTW9kZWwuZ2V0RmFjYWRl
KCkuaXNBVU1MRWxlbWVudChzZWxlY3RlZEl0ZW0pOw0KIA0KICAgICAgICAgaWYgKG1vZGVsRWxl
bWVudFNlbGVjdGVkKSB7DQpAQCAtMjM1LDExICsyMzYsMTEgQEANCiAgICAgICAgICAgICAgICAg
ICAgID8gKChVTUxBY3Rpdml0eURpYWdyYW0pIGFjdGl2ZURpYWdyYW0pLmdldFN0YXRlTWFjaGlu
ZSgpDQogICAgICAgICAgICAgICAgICAgICA6IG51bGw7DQogDQotICAgICAgICAgICAgQ29sbGVj
dGlvbiBwcm9qZWN0TW9kZWxzID0gDQorICAgICAgICAgICAgQ29sbGVjdGlvbiBwcm9qZWN0TW9k
ZWxzID0NCiAgICAgICAgICAgICAgICAgUHJvamVjdE1hbmFnZXIuZ2V0TWFuYWdlcigpLmdldEN1
cnJlbnRQcm9qZWN0KCkuZ2V0TW9kZWxzKCk7DQogICAgICAgICAgICAgaWYgKCFtdWx0aVNlbGVj
dCkgew0KICAgICAgICAgICAgICAgICBpZiAoKGNsYXNzaWZpZXJTZWxlY3RlZCAmJiAhcmVsYXRp
b25zaGlwU2VsZWN0ZWQpDQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBhY2thZ2VTZWxl
Y3RlZCANCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocGFja2FnZVNlbGVjdGVkDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBBbGxvdyBhZGRpbmcgbW9kZWxz
IHRvIGEgZGlhZ3JhbSAtIGlzc3VlIDQxNzIuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAhcHJvamVjdE1vZGVscy5jb250YWlucyhzZWxlY3RlZEl0ZW0pKQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IChzdGF0ZVZlcnRleFNlbGVjdGVkDQpAQCAtMjgxLDkgKzI4Miw5
IEBADQogICAgICAgICAgICAgfQ0KIA0KIA0KLSAgICAgICAgICAgIGlmIChtdXRhYmxlTW9kZWxF
bGVtZW50c09ubHkgDQorICAgICAgICAgICAgaWYgKG11dGFibGVNb2RlbEVsZW1lbnRzT25seQ0K
ICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3QgZGVsZXRlIGxhc3QgdG9wIGxldmVsIG1vZGVs
DQotICAgICAgICAgICAgICAgICAgICAmJiAhKHByb2plY3RNb2RlbHMuc2l6ZSgpID09IDEgDQor
ICAgICAgICAgICAgICAgICAgICAmJiAhKHByb2plY3RNb2RlbHMuc2l6ZSgpID09IDENCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgcHJvamVjdE1vZGVscy5jb250YWlucyhzZWxlY3Rl
ZEl0ZW0pKSkgew0KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBTaG91bGRuJ3QgYmUgY3JlYXRp
bmcgYSBuZXcgaW5zdGFuY2UgaGVyZS4gV2Ugc2hvdWxkDQogICAgICAgICAgICAgICAgIC8vIGhv
bGQgdGhlIGRlbGV0ZSBhY3Rpb24gaW4gc29tZSBjZW50cmFsIHBsYWNlLg0KQEAgLTMzNSw4ICsz
MzYsOCBAQA0KICAgICAgICAgICAgICAgICBhZC5zZXRFbmFibGVkKGFkLnNob3VsZEJlRW5hYmxl
ZCgpKTsNCiAgICAgICAgICAgICAgICAgdGhpcy5hZGQoYWQpOw0KICAgICAgICAgICAgIH0NCi0g
ICAgICAgICAgICANCi0gICAgICAgICAgICANCisNCisNCiAgICAgICAgIH0gZWxzZSBpZiAoc2Vs
ZWN0ZWRJdGVtIGluc3RhbmNlb2YgRGlhZ3JhbSkgew0KICAgICAgICAgICAgIHRoaXMuYWRkKG5l
dyBBY3Rpb25TYXZlRGlhZ3JhbVRvQ2xpcGJvYXJkKCkpOw0KICAgICAgICAgICAgIC8vIFRPRE86
IERlbGV0ZSBzaG91bGQgYmUgYXZhaWxhYmxlIG9uIGFueSBjb21iaW5hdGlvbiBvZiBtb2RlbA0K
QEAgLTM5Myw3ICszOTQsNyBAQA0KICAgICAgICAgICAgIGlmIChjbGFzc2lmaWVyUm9sZXNPbmx5
KSB7DQogICAgICAgICAgICAgICAgIG1lbnVJdGVtcy5hZGQobmV3IE9yZGVyZWRNZW51SXRlbSgN
CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQWN0aW9uQ3JlYXRlQXNzb2NpYXRpb25Sb2xl
KA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWwuZ2V0TWV0YVR5cGVzKCku
Z2V0QXNzb2NpYXRpb25Sb2xlKCksIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TW9kZWwuZ2V0TWV0YVR5cGVzKCkuZ2V0QXNzb2NpYXRpb25Sb2xlKCksDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRzKSkpOw0KICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IWNsYXNzaWZpZXJSb2xlRm91bmQpIHsNCiAgICAgICAgICAgICAgICAgYm9vbGVhbiBjbGFzc2lm
aWVyc09ubHkgPSB0cnVlOw0KQEAgLTQwNiw3ICs0MDcsNyBAQA0KICAgICAgICAgICAgICAgICBp
ZiAoY2xhc3NpZmllcnNPbmx5KSB7DQogICAgICAgICAgICAgICAgICAgICBtZW51SXRlbXMuYWRk
KG5ldyBPcmRlcmVkTWVudUl0ZW0oDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBB
Y3Rpb25DcmVhdGVBc3NvY2lhdGlvbigNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNb2RlbC5nZXRNZXRhVHlwZXMoKS5nZXRBc3NvY2lhdGlvbigpLCANCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlbC5nZXRNZXRhVHlwZXMoKS5nZXRBc3NvY2lh
dGlvbigpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMpKSk7
DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQpAQCAtNDE2LDcgKzQxNyw3IEBA
DQogICAgICAgICAgICAgICAgICAgICBtZW51SXRlbXMsDQogICAgICAgICAgICAgICAgICAgICBN
b2RlbC5nZXRNZXRhVHlwZXMoKS5nZXREZXBlbmRlbmN5KCksDQogICAgICAgICAgICAgICAgICAg
ICAiICIgKyBtZW51TG9jYWxpemUoIm1lbnUucG9wdXAuZGVwZW5kcy1vbiIpICsgIiAiKTsNCi0g
ICAgICAgICAgICANCisNCiAgICAgICAgICAgICBhZGRDcmVhdGVNb2RlbEVsZW1lbnRBY3Rpb24o
DQogICAgICAgICAgICAgICAgICAgICBtZW51SXRlbXMsDQogICAgICAgICAgICAgICAgICAgICBN
b2RlbC5nZXRNZXRhVHlwZXMoKS5nZXRHZW5lcmFsaXphdGlvbigpLA0KQEAgLTQ0MiwyMyArNDQz
LDIzIEBADQogICAgICAgICAgICAgICAgICAgICBNb2RlbC5nZXRNZXRhVHlwZXMoKS5nZXRBYnN0
cmFjdGlvbigpLA0KICAgICAgICAgICAgICAgICAgICAgIiAiICsgbWVudUxvY2FsaXplKCJtZW51
LnBvcHVwLnJlYWxpemVzIikgKyAiICIpOw0KICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRzLnNp
emUoKSA9PSAxKSB7DQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgT2JqZWN0IHRhcmdl
dCA9IHRhcmdldHMuZ2V0KDApOw0KIA0KLSAgICAgICAgICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCBh
bGwgcG9zc2libGUgbW9kZWwgZWxlbWVudHMgdG8gZGV0ZXJtaW5lIHdoaWNoICANCisgICAgICAg
ICAgICAvLyBpdGVyYXRlIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1vZGVsIGVsZW1lbnRzIHRvIGRl
dGVybWluZSB3aGljaA0KICAgICAgICAgICAgIC8vIGFyZSB2YWxpZCB0byBiZSBjb250YWluZWQg
YnkgdGhlIHNlbGVjdGVkIHRhcmdldA0KICAgICAgICAgICAgIGZvciAoT2JqZWN0IG1ldGFUeXBl
IDogTW9kZWwuZ2V0TWV0YVR5cGVzKCkuZ2V0QWxsTWV0YVR5cGVzKCkpIHsNCiAgICAgICAgICAg
ICAgICAgLy8gdGVzdCBpZiB0aGlzIGVsZW1lbnQgY2FuIGJlIGNvbnRhaW5lZCBieSB0aGUgdGFy
Z2V0DQogICAgICAgICAgICAgICAgIGlmIChNb2RlbC5nZXRVbWxGYWN0b3J5KCkuaXNDb250YWlu
bWVudFZhbGlkKG1ldGFUeXBlLCB0YXJnZXQpKSB7DQotICAgICAgICAgICAgICAgICAgICAvLyB0
aGlzIGVsZW1lbnQgY2FuIGJlIGNvbnRhaW5lZCBhZGQgYSBtZW51IGl0ZW0gDQorICAgICAgICAg
ICAgICAgICAgICAvLyB0aGlzIGVsZW1lbnQgY2FuIGJlIGNvbnRhaW5lZCBhZGQgYSBtZW51IGl0
ZW0NCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHRha2Ug
dGhhdCBhY3Rpb24NCiAgICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtcy5hZGQobmV3IE9yZGVy
ZWRNZW51SXRlbSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFjdGlvbkNyZWF0
ZUNvbnRhaW5lZE1vZGVsRWxlbWVudCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXRhVHlwZSwgdGFyZ2V0KSkpOw0KICAgICAgICAgICAgICAgICB9DQotICAgICAgICAg
ICAgfSAgICANCisgICAgICAgICAgICB9DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAg
ICAgIGlmIChtZW51SXRlbXMuc2l6ZSgpID09IDEpIHsNCiAgICAgICAgICAgICBhZGQobWVudUl0
ZW1zLml0ZXJhdG9yKCkubmV4dCgpKTsNCiAgICAgICAgIH0gZWxzZSBpZiAobWVudUl0ZW1zLnNp
emUoKSA+IDEpIHsNCkBAIC00NzAsMTEgKzQ3MSwxMyBAQA0KICAgICAgICAgICAgIH0NCiAgICAg
ICAgIH0NCiAgICAgfQ0KLSAgICANCisNCiAgICAgcHJpdmF0ZSB2b2lkIGluaXRNZW51Q3JlYXRl
TW9kdWxlQWN0aW9ucygpIHsNCi0gICAgICAgIGZpbmFsIExpc3Q8QWN0aW9uPiBjb250ZXh0QWN0
aW9ucyA9IA0KKyAgICAgICAgZmluYWwgTGlzdDxBY3Rpb24+IGNvbnRleHRBY3Rpb25zID0NCiAg
ICAgICAgICAgICBDb250ZXh0QWN0aW9uRmFjdG9yeU1hbmFnZXIuZ2V0Q29udGV4dFBvcHVwQWN0
aW9ucygpOw0KLSAgICAgICAgTE9HLmluZm8oY29udGV4dEFjdGlvbnMpOw0KKyAgICAgICAgDQor
ICAgICAgICBMT0cubG9nKExldmVsLklORk8sICJ7MH0iLCBjb250ZXh0QWN0aW9ucyk7DQorICAg
ICAgICANCiAgICAgICAgIGlmIChjb250ZXh0QWN0aW9ucyBpbnN0YW5jZW9mIEFjdGlvbkxpc3Qp
IHsNCiAgICAgICAgICAgICByZWN1cnNpdmVBZGQodGhpcywgKEFjdGlvbikgY29udGV4dEFjdGlv
bnMpOw0KICAgICAgICAgfSBlbHNlIHsNCkBAIC00ODMsNyArNDg2LDcgQEANCiAgICAgICAgICAg
ICB9DQogICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIHByaXZhdGUgdm9pZCByZWN1
cnNpdmVBZGQoTWVudUVsZW1lbnQgbWVudSwgQWN0aW9uIGEpIHsNCiAgICAgICAgIGlmIChhIGlu
c3RhbmNlb2YgTGlzdDw/Pikgew0KICAgICAgICAgICAgIEpNZW51IG0gPSBuZXcgSk1lbnUoYSk7
DQpAQCAtNTAzLDcgKzUwNiw3IEBADQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9
DQotICAgIA0KKw0KICAgICBwcml2YXRlIHZvaWQgYWRkQ3JlYXRlTW9kZWxFbGVtZW50QWN0aW9u
KA0KICAgICAgICAgICAgICAgICBTZXQ8Sk1lbnVJdGVtPiBtZW51SXRlbXMsDQogICAgICAgICAg
ICAgICAgIE9iamVjdCBtZXRhVHlwZSwNCkBAIC01MjIsNyArNTI1LDcgQEANCiAgICAgICAgICAg
ICBtZW51SXRlbXMuYWRkKHN1Yk1lbnUpOw0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0KKw0K
ICAgICAvKioNCiAgICAgICogQXR0ZW1wdCB0byBidWlsZCBhIG1lbnUgaXRlbSB0byBjcmVhdGUg
dGhlIGdpdmVuIG1vZGVsIGVsZW1lbnQgdHlwZQ0KICAgICAgKiBhcyBhIHJlbGF0aW9uIGJldHdl
biB0d28gZXhpc3RpbmcgbW9kZWwgZWxlbWVudHMuDQpAQCAtNTM1LDE4ICs1MzgsMTggQEANCiAg
ICAgICogQHBhcmFtIG1lbnUgVGhlIG1lbnUgdG8gd2hpY2ggdGhlIG1lbnUgaXRlbSBzaG91bGQg
YmUgYWRkZWQNCiAgICAgICovDQogICAgIHByaXZhdGUgdm9pZCBidWlsZERpcmVjdGlvbmFsQ3Jl
YXRlTWVudUl0ZW0oDQotICAgICAgICAgICAgT2JqZWN0IG1ldGFUeXBlLCANCi0gICAgICAgICAg
ICBPYmplY3Qgc291cmNlLCANCi0gICAgICAgICAgICBPYmplY3QgZGVzdCwgDQorICAgICAgICAg
ICAgT2JqZWN0IG1ldGFUeXBlLA0KKyAgICAgICAgICAgIE9iamVjdCBzb3VyY2UsDQorICAgICAg
ICAgICAgT2JqZWN0IGRlc3QsDQogICAgICAgICAgICAgU3RyaW5nIHJlbGF0aW9uc2hpcERlc2Ny
LA0KICAgICAgICAgICAgIEpNZW51IG1lbnUpIHsNCiAgICAgICAgIGlmIChNb2RlbC5nZXRVbWxG
YWN0b3J5KCkuaXNDb25uZWN0aW9uVmFsaWQoDQogICAgICAgICAgICAgICAgICAgICBtZXRhVHlw
ZSwgc291cmNlLCBkZXN0LCB0cnVlKSkgew0KICAgICAgICAgICAgIEpNZW51SXRlbSBtZW51SXRl
bSA9IG5ldyBKTWVudUl0ZW0oDQogICAgICAgICAgICAgICAgICAgICBuZXcgQWN0aW9uQ3JlYXRl
RWRnZU1vZGVsRWxlbWVudCgNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUs
IA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIA0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5
cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRp
b25zaGlwRGVzY3IpKTsNCiAgICAgICAgICAgICBpZiAobWVudUl0ZW0gIT0gbnVsbCkgew0KICAg
ICAgICAgICAgICAgICBtZW51LmFkZChtZW51SXRlbSk7DQpAQCAtNTY1LDcgKzU2OCw3IEBADQog
ICAgIHByaXZhdGUgU3RyaW5nIG1lbnVMb2NhbGl6ZShTdHJpbmcga2V5KSB7DQogICAgICAgICBy
ZXR1cm4gVHJhbnNsYXRvci5sb2NhbGl6ZShrZXkpOw0KICAgICB9DQotICAgIA0KKw0KICAgICAv
KioNCiAgICAgICogQWRkIHBvcHVwIG1lbnUgaXRlbXMgZm9yIGFkZGluZyB0byBkaWFncmFtIGJv
dGggZWRnZSBlbmRzLg0KICAgICAgKg0KQEAgLTYxOSw3ICs2MjIsNyBAQA0KICAgICAgKi8NCiAg
ICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTU2NjM4ODQ4
NzE1OTk5MzE3ODBMOw0KIA0KLSAgICANCisNCiAgICAgcHJpdmF0ZSBjbGFzcyBBY3Rpb25BZGRF
eGlzdGluZ1JlbGF0ZWROb2RlIGV4dGVuZHMgVW5kb2FibGVBY3Rpb24gew0KIA0KICAgICAgICAg
LyoqDQpAQCAtNjQ5LDcgKzY1Miw3IEBADQogICAgICAgICAgICAgTXV0YWJsZUdyYXBoTW9kZWwg
Z20gPSAoTXV0YWJsZUdyYXBoTW9kZWwpIGRpYS5nZXRHcmFwaE1vZGVsKCk7DQogICAgICAgICAg
ICAgcmV0dXJuIGdtLmNhbkFkZE5vZGUob2JqZWN0KTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0K
Kw0KICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGFlKSB7
DQogICAgICAgICAgICAgc3VwZXIuYWN0aW9uUGVyZm9ybWVkKGFlKTsNCiAgICAgICAgICAgICBF
ZGl0b3IgY2UgPSBHbG9iYWxzLmN1ckVkaXRvcigpOw0KQEAgLTY2OCw3ICs2NzEsNyBAQA0KICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICBHbG9iYWxzLnNob3dT
dGF0dXMoaW5zdHJ1Y3Rpb25zKTsNCiAgICAgICAgICAgICB9DQotICAgICAgICAgICAgDQorDQog
ICAgICAgICAgICAgQXJyYXlMaXN0PE9iamVjdD4gZWxlbWVudHNUb0FkZCA9IG5ldyBBcnJheUxp
c3Q8T2JqZWN0PigxKTsNCiAgICAgICAgICAgICBlbGVtZW50c1RvQWRkLmFkZChvYmplY3QpOw0K
ICAgICAgICAgICAgIGZpbmFsIE1vZGVBZGRUb0RpYWdyYW0gcGxhY2VNb2RlID0NCkBAIC02Nzcs
MTQgKzY4MCwxNCBAQA0KICAgICAgICAgICAgIEdsb2JhbHMubW9kZShwbGFjZU1vZGUsIGZhbHNl
KTsNCiAgICAgICAgIH0NCiAgICAgfSAvKiBlbmQgY2xhc3MgQWN0aW9uQWRkRXhpc3RpbmdSZWxh
dGVkTm9kZSAqLw0KLSAgICANCisNCiAgICAgLyoqDQogICAgICAqIEEgSk1lbnVJdGVtIHRoYXQg
d2lsbCBvcmRlciBieSBkaXNwbGF5IG5hbWUNCiAgICAgICoNCiAgICAgICogQGF1dGhvciBCb2Ig
VGFybGluZw0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBjbGFzcyBPcmRlcmVkTWVudUl0ZW0gZXh0
ZW5kcyBKTWVudUl0ZW0gaW1wbGVtZW50cyBDb21wYXJhYmxlIHsNCi0gICAgICAgIA0KKw0KICAg
ICAgICAgLyoqDQogICAgICAgICAgKiBJbnN0YW50aWF0ZSBPcmRlcmVkTWVudUl0ZW0NCiAgICAg
ICAgICAqIEBwYXJhbSBhY3Rpb24NCkBAIC03MDcsMTQgKzcxMCwxNCBAQA0KICAgICAgICAgICAg
IHJldHVybiB0b1N0cmluZygpLmNvbXBhcmVUbyhvdGhlci50b1N0cmluZygpKTsNCiAgICAgICAg
IH0NCiAgICAgfQ0KLSAgICAgICAgDQorDQogICAgIC8qKg0KICAgICAgKiBBIEpNZW51SXRlbSB0
aGF0IHdpbGwgb3JkZXIgYnkgZGlzcGxheSBuYW1lDQogICAgICAqDQogICAgICAqIEBhdXRob3Ig
Qm9iIFRhcmxpbmcNCiAgICAgICovDQogICAgIHByaXZhdGUgY2xhc3MgT3JkZXJlZE1lbnUgZXh0
ZW5kcyBKTWVudSBpbXBsZW1lbnRzIENvbXBhcmFibGUgew0KLSAgICAgICAgDQorDQogICAgICAg
ICAvKioNCiAgICAgICAgICAqIEluc3RhbnRpYXRlIE9yZGVyZWRNZW51DQogICAgICAgICAgKiBA
cGFyYW0gbmFtZQ0KQEAgLTcyOCwxOSArNzMxLDE5IEBADQogICAgICAgICAgICAgcmV0dXJuIHRv
U3RyaW5nKCkuY29tcGFyZVRvKG90aGVyLnRvU3RyaW5nKCkpOw0KICAgICAgICAgfQ0KICAgICB9
DQotICAgICAgICANCisNCiAgICAgLyoqDQogICAgICAqIEFuIGFjdGlvbiB0byBjcmVhdGUgYW4g
YXNzb2NpYXRpb24gYmV0d2VlbiAyIG9yIG1vcmUgbW9kZWwgZWxlbWVudHMuDQogICAgICAqDQog
ICAgICAqIEBhdXRob3IgQm9iIFRhcmxpbmcNCiAgICAgICovDQogICAgIHByaXZhdGUgY2xhc3Mg
QWN0aW9uQ3JlYXRlQXNzb2NpYXRpb24gZXh0ZW5kcyBBYnN0cmFjdEFjdGlvbiB7DQotICAgICAg
ICANCi0gICAgICAgIHByaXZhdGUgT2JqZWN0IG1ldGFUeXBlOyANCisNCisgICAgICAgIHByaXZh
dGUgT2JqZWN0IG1ldGFUeXBlOw0KICAgICAgICAgcHJpdmF0ZSBMaXN0IGNsYXNzaWZpZXJzOw0K
IA0KICAgICAgICAgcHVibGljIEFjdGlvbkNyZWF0ZUFzc29jaWF0aW9uKA0KLSAgICAgICAgICAg
ICAgICBPYmplY3QgdGhlTWV0YVR5cGUsIA0KKyAgICAgICAgICAgICAgICBPYmplY3QgdGhlTWV0
YVR5cGUsDQogICAgICAgICAgICAgICAgIExpc3QgY2xhc3NpZmllcnNMaXN0KSB7DQogICAgICAg
ICAgICAgc3VwZXIobWVudUxvY2FsaXplKCJtZW51LnBvcHVwLmNyZWF0ZSIpICsgIiAiDQogICAg
ICAgICAgICAgICAgICAgICArIE1vZGVsLmdldE1ldGFUeXBlcygpLmdldE5hbWUodGhlTWV0YVR5
cGUpKTsNCkBAIC03NjksMTIgKzc3MiwxMiBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxsKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVn
YWxNb2RlbEVsZW1lbnRDb25uZWN0aW9uRXhjZXB0aW9uIGUxKSB7DQotICAgICAgICAgICAgICAg
IExPRy5lcnJvcigiRXhjZXB0aW9uIiwgZTEpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExl
dmVsLlNFVkVSRSwgIkV4Y2VwdGlvbiIsIGUxKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9
DQogICAgIH0NCi0gICAgDQotICAgIA0KKw0KKw0KICAgICAvKioNCiAgICAgICogQW4gYWN0aW9u
IHRvIGNyZWF0ZSBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIDIgb3IgbW9yZSBtb2RlbCBlbGVtZW50
cy4NCiAgICAgICoNCkBAIC03ODIsMTEgKzc4NSwxMSBAQA0KICAgICAgKi8NCiAgICAgcHJpdmF0
ZSBjbGFzcyBBY3Rpb25DcmVhdGVBc3NvY2lhdGlvblJvbGUgZXh0ZW5kcyBBYnN0cmFjdEFjdGlv
biB7DQogDQotICAgICAgICBwcml2YXRlIE9iamVjdCBtZXRhVHlwZTsgDQorICAgICAgICBwcml2
YXRlIE9iamVjdCBtZXRhVHlwZTsNCiAgICAgICAgIHByaXZhdGUgTGlzdCBjbGFzc2lmaWVyUm9s
ZXM7DQogDQogICAgICAgICBwdWJsaWMgQWN0aW9uQ3JlYXRlQXNzb2NpYXRpb25Sb2xlKA0KLSAg
ICAgICAgICAgICAgICBPYmplY3QgdGhlTWV0YVR5cGUsIA0KKyAgICAgICAgICAgICAgICBPYmpl
Y3QgdGhlTWV0YVR5cGUsDQogICAgICAgICAgICAgICAgIExpc3QgY2xhc3NpZmllclJvbGVzTGlz
dCkgew0KICAgICAgICAgICAgIHN1cGVyKG1lbnVMb2NhbGl6ZSgibWVudS5wb3B1cC5jcmVhdGUi
KSArICIgIg0KICAgICAgICAgICAgICAgICAgICAgKyBNb2RlbC5nZXRNZXRhVHlwZXMoKS5nZXRO
YW1lKHRoZU1ldGFUeXBlKSk7DQpAQCAtODE1LDcgKzgxOCw3IEBADQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGwpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfSBj
YXRjaCAoSWxsZWdhbE1vZGVsRWxlbWVudENvbm5lY3Rpb25FeGNlcHRpb24gZTEpIHsNCi0gICAg
ICAgICAgICAgICAgTE9HLmVycm9yKCJFeGNlcHRpb24iLCBlMSk7DQorICAgICAgICAgICAgICAg
IExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiRXhjZXB0aW9uIiwgZTEpOw0KICAgICAgICAgICAgIH0N
CiAgICAgICAgIH0NCiAgICAgfQ0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3Ny
Yy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9FeHBsb3JlclRyZWVNb2RlbC5qYXZhDQpVcmw6IGh0
dHA6Ly9hcmdvdW1sLnRpZ3Jpcy5vcmcvc291cmNlL2Jyb3dzZS9hcmdvdW1sL3RydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvRXhwbG9yZXJUcmVlTW9kZWwu
amF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91
aS9leHBsb3Jlci9FeHBsb3JlclRyZWVNb2RlbC5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL0V4cGxvcmVyVHJlZU1v
ZGVsLmphdmEJMjAxMi0xMi0zMCAwNTowNjowMS0wODAwDQpAQCAtMSw2ICsxLDYgQEANCiAvKiAk
SWQkDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29weXJpZ2h0IChjKSAyMDA5IENvbnRy
aWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRyaWJ1
dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBh
bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3aGlj
aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KQEAg
LTUzLDYgKzUzLDggQEANCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQogaW1wb3J0IGphdmEudXRp
bC5NYXA7DQogaW1wb3J0IGphdmEudXRpbC5TZXQ7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5n
LkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQogDQogaW1wb3J0IGph
dmF4LnN3aW5nLnRyZWUuRGVmYXVsdE11dGFibGVUcmVlTm9kZTsNCiBpbXBvcnQgamF2YXguc3dp
bmcudHJlZS5EZWZhdWx0VHJlZU1vZGVsOw0KQEAgLTYwLDcgKzYyLDYgQEANCiBpbXBvcnQgamF2
YXguc3dpbmcudHJlZS5UcmVlTm9kZTsNCiBpbXBvcnQgamF2YXguc3dpbmcudHJlZS5UcmVlUGF0
aDsNCiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdv
dW1sLmtlcm5lbC5Qcm9qZWN0Ow0KIGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdE1h
bmFnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLm1vZGVsLkludmFsaWRFbGVtZW50RXhjZXB0aW9u
Ow0KQEAgLTgyLDcgKzgzLDcgQEANCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCiAgICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQotCUxvZ2dlci5nZXRMb2dnZXIoRXhwbG9y
ZXJUcmVlTW9kZWwuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihFeHBsb3JlclRy
ZWVNb2RlbC5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvKioNCiAgICAgICogYW4gYXJyYXkg
b2YNCkBAIC0xMjQsNyArMTI1LDcgQEANCiAJLyoqDQogCSAqIFRoZSBzZXQgb2Ygbm9kZXMgcGVu
ZGluZyBiZWluZyB1cGRhdGVkLg0KIAkgKi8NCi0JcHJpdmF0ZSBMaW5rZWRMaXN0PEV4cGxvcmVy
VHJlZU5vZGU+IHBlbmRpbmdVcGRhdGVzID0gDQorCXByaXZhdGUgTGlua2VkTGlzdDxFeHBsb3Jl
clRyZWVOb2RlPiBwZW5kaW5nVXBkYXRlcyA9DQogCSAgICBuZXcgTGlua2VkTGlzdDxFeHBsb3Jl
clRyZWVOb2RlPigpOw0KIA0KIAkvKioNCkBAIC0yMzksNyArMjQwLDcgQEANCiAgICAgfQ0KIA0K
ICAgICAvKioNCi0gICAgICogVHJhdmVyc2VzIHRoZSBjaGlsZHJlbiwgZmluZHMgdGhvc2UgYWZm
ZWN0ZWQgYnkgdGhlIGdpdmVuIG5vZGUsIA0KKyAgICAgKiBUcmF2ZXJzZXMgdGhlIGNoaWxkcmVu
LCBmaW5kcyB0aG9zZSBhZmZlY3RlZCBieSB0aGUgZ2l2ZW4gbm9kZSwNCiAgICAgICogYW5kIG5v
dGlmaWVzIHRoZW0gdGhhdCB0aGV5IGFyZSBtb2RpZmllZC4NCiAgICAgICoNCiAgICAgICogQHBh
cmFtIHN0YXJ0IHRoZSBub2RlIHRvIHN0YXJ0IGZyb20NCkBAIC0zNzQsNyArMzc1LDcgQEANCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UGF0aFRvUm9vdCgoRXhwbG9yZXJUcmVlTm9k
ZSkgY2hpbGQpKSkpIHsNCiAJCQlyZW9yZGVyZWQuYWRkKChFeHBsb3JlclRyZWVOb2RlKSBjaGls
ZCk7DQogCQkgICAgfSBlbHNlIHsNCi0JCSAgICAgICAgRXhwbG9yZXJUcmVlTm9kZSBwcmV2ID0g
DQorCQkgICAgICAgIEV4cGxvcmVyVHJlZU5vZGUgcHJldiA9DQogCQkgICAgICAgICAgICAoRXhw
bG9yZXJUcmVlTm9kZSkgKChFeHBsb3JlclRyZWVOb2RlKSBjaGlsZCkNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5nZXRQcmV2aW91c1NpYmxpbmcoKTsNCiAJCQl3aGlsZSAocHJl
diAhPSBudWxsDQpAQCAtNDYyLDEzICs0NjMsMTIgQEANCiAgICAgICAgICAgICB0cnkgew0KICAg
ICAgICAgICAgICAgICBjaGlsZHJlbiA9IHJ1bGUuZ2V0Q2hpbGRyZW4obW9kZWxFbGVtZW50KTsN
CiAgICAgICAgICAgICB9IGNhdGNoIChJbnZhbGlkRWxlbWVudEV4Y2VwdGlvbiBlKSB7DQotICAg
ICAgICAgICAgICAgIExPRy5kZWJ1ZygiSW52YWxpZEVsZW1lbnRFeGNlcHRpb24gaW4gRXhwbG9y
ZXJUcmVlIDogIiANCi0gICAgICAgICAgICAgICAgICAgICAgICArIGUuZ2V0U3RhY2tUcmFjZSgp
KTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiSW52YWxpZEVsZW1lbnRF
eGNlcHRpb24gaW4gRXhwbG9yZXJUcmVlIDogIiwgZSApOw0KICAgICAgICAgICAgIH0NCiANCiAg
ICAgICAgICAgICBmb3IgKE9iamVjdCBjaGlsZCA6IGNoaWxkcmVuKSB7DQogICAgICAgICAgICAg
ICAgIGlmIChjaGlsZCA9PSBudWxsKSB7DQotICAgICAgICAgICAgICAgICAgICBMT0cud2Fybigi
UGVyc3BlY3RpdmVSdWxlICIgKyBydWxlICsgIiB3YW50ZWQgdG8gIg0KKyAgICAgICAgICAgICAg
ICAgICAgTE9HLmxvZyhMZXZlbC5XQVJOSU5HLCAiUGVyc3BlY3RpdmVSdWxlICIgKyBydWxlICsg
IiB3YW50ZWQgdG8gIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJhZGQgbnVsbCB0
byB0aGUgZXhwbG9yZXIgdHJlZSEiKTsNCiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbmV3
Q2hpbGRyZW4uY29udGFpbnMoY2hpbGQpKSB7DQogICAgICAgICAgICAgICAgICAgICBuZXdDaGls
ZHJlbi5hZGQoY2hpbGQpOw0KQEAgLTQ4MCw4ICs0ODAsNyBAQA0KICAgICAgICAgICAgICAgICBT
ZXQgZGVwZW5kZW5jaWVzID0gcnVsZS5nZXREZXBlbmRlbmNpZXMobW9kZWxFbGVtZW50KTsNCiAg
ICAgICAgICAgICAgICAgZGVwcy5hZGRBbGwoZGVwZW5kZW5jaWVzKTsNCiAgICAgICAgICAgICB9
IGNhdGNoIChJbnZhbGlkRWxlbWVudEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAgIExP
Ry5kZWJ1ZygiSW52YWxpZEVsZW1lbnRFeGNlcHRpb24gaW4gRXhwbG9yZXJUcmVlIDogIiANCi0g
ICAgICAgICAgICAgICAgICAgICAgICArIGUuZ2V0U3RhY2tUcmFjZSgpKTsNCisgICAgICAgICAg
ICAgICAgTE9HLmxvZyhMZXZlbC5GSU5FLCAiSW52YWxpZEVsZW1lbnRFeGNlcHRpb24gaW4gRXhw
bG9yZXJUcmVlIDogIiwgZSApOw0KICAgICAgICAgICAgIH0NCiANCiAgICAgICAgIH0NCkBAIC03
NTQsNCArNzUzLDMgQEANCiAgICAgICovDQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcg
c2VyaWFsVmVyc2lvblVJRCA9IDMxMzI3MzI0OTQzODY1NjU4NzBMOw0KIH0NCi0NCg0KTW9kaWZp
ZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvTmFt
ZU9yZGVyLmphdmENClVybDogaHR0cDovL2FyZ291bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3Nl
L2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jl
ci9OYW1lT3JkZXIuamF2YT92aWV3PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkw
Nw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC91aS9leHBsb3Jlci9OYW1lT3JkZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1
bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9OYW1lT3JkZXIu
amF2YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQN
CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0
b3JzIC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3Jz
IC0gc2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0
aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFj
Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDQs
MTAgKzQ0LDEwIEBADQogaW1wb3J0IGphdmF4LnN3aW5nLnRyZWUuRGVmYXVsdE11dGFibGVUcmVl
Tm9kZTsNCiANCiBpbXBvcnQgb3JnLmFyZ291bWwuaTE4bi5UcmFuc2xhdG9yOw0KK2ltcG9ydCBv
cmcuYXJnb3VtbC5rZXJuZWwuUHJvZmlsZUNvbmZpZ3VyYXRpb247DQogaW1wb3J0IG9yZy5hcmdv
dW1sLm1vZGVsLkludmFsaWRFbGVtZW50RXhjZXB0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5t
b2RlbC5Nb2RlbDsNCiBpbXBvcnQgb3JnLmFyZ291bWwucHJvZmlsZS5Qcm9maWxlOw0KLWltcG9y
dCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvZmlsZUNvbmZpZ3VyYXRpb247DQogaW1wb3J0IG9yZy50
aWdyaXMuZ2VmLmJhc2UuRGlhZ3JhbTsNCiANCiAvKioNCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9h
cmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvUGVyc3BlY3RpdmVDb25maWd1
cmF0b3IuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2Uv
YXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVy
L1BlcnNwZWN0aXZlQ29uZmlndXJhdG9yLmphdmE/dmlldz1kaWZmJnBhdGhyZXY9MTk5MDcmcjE9
MTk5MDYmcjI9MTk5MDcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRydW5rL3NyYy9hcmdv
dW1sLWFwcC9zcmMvb3JnL2FyZ291bWwvdWkvZXhwbG9yZXIvUGVyc3BlY3RpdmVDb25maWd1cmF0
b3IuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJn
b3VtbC91aS9leHBsb3Jlci9QZXJzcGVjdGl2ZUNvbmZpZ3VyYXRvci5qYXZhCTIwMTItMTItMzAg
MDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElkJA0KICAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cN
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmlidXRvcnMgLSBzZWUgYmVsb3cNCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg
bWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
RWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk
aXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBAIC01Myw2ICs1Myw4IEBADQogaW1w
b3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCiBpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7
DQogaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZl
bDsNCitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOw0KIA0KIGltcG9ydCBqYXZheC5z
d2luZy5Cb3JkZXJGYWN0b3J5Ow0KIGltcG9ydCBqYXZheC5zd2luZy5Cb3hMYXlvdXQ7DQpAQCAt
NzAsNyArNzIsNiBAQA0KIGltcG9ydCBqYXZheC5zd2luZy5ldmVudC5MaXN0U2VsZWN0aW9uRXZl
bnQ7DQogaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50Lkxpc3RTZWxlY3Rpb25MaXN0ZW5lcjsNCiAN
Ci1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmkx
OG4uVHJhbnNsYXRvcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwuc3dpbmdleHQuU3BhY2VyUGFuZWw7
DQogaW1wb3J0IG9yZy5hcmdvdW1sLnVpLmV4cGxvcmVyLnJ1bGVzLlBlcnNwZWN0aXZlUnVsZTsN
CkBAIC0xMDEsNyArMTAyLDcgQEANCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCiAgICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQotCUxvZ2dlci5nZXRMb2dnZXIoUGVyc3Bl
Y3RpdmVDb25maWd1cmF0b3IuY2xhc3MpOw0KKyAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihQZXJz
cGVjdGl2ZUNvbmZpZ3VyYXRvci5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICAvKioNCiAgICAg
ICogSW5zZXRzIGluIHBpeGVscy4NCkBAIC0xNDQsMjUgKzE0NSwyNSBAQA0KIA0KICAgICAgICAg
Y29uZmlnUGFuZWxOb3J0aCA9IG5ldyBKUGFuZWwoKTsNCiAgICAgICAgIGNvbmZpZ1BhbmVsU291
dGggPSBuZXcgSlBhbmVsKCk7DQotICAgICAgICANCisNCiAgICAgICAgIG1ha2VMaXN0cygpOw0K
LSAgICAgICAgDQorDQogICAgICAgICBtYWtlQnV0dG9ucygpOw0KLSAgICAgICAgDQorDQogICAg
ICAgICBtYWtlTGF5b3V0KCk7DQogICAgICAgICB1cGRhdGVSdWxlTGFiZWwoKTsNCi0gICAgICAg
IA0KKw0KICAgICAgICAgbWFrZUxpc3RlbmVycygpOw0KLSAgICAgICAgDQorDQogICAgICAgICBs
b2FkUGVyc3BlY3RpdmVzKCk7DQogICAgICAgICBsb2FkTGlicmFyeSgpOw0KICAgICAgICAgLy9z
b3J0Skxpc3RNb2RlbChydWxlTGlicmFyeUxpc3QpOw0KLSAgICAgICAgDQorDQogICAgICAgICBz
cGxpdFBhbmUgPQ0KICAgICAgICAgICAgIG5ldyBKU3BsaXRQYW5lKEpTcGxpdFBhbmUuVkVSVElD
QUxfU1BMSVQsDQogICAgICAgICAgICAgICAgICAgICBjb25maWdQYW5lbE5vcnRoLCBjb25maWdQ
YW5lbFNvdXRoKTsNCiAgICAgICAgIHNwbGl0UGFuZS5zZXRDb250aW51b3VzTGF5b3V0KHRydWUp
Ow0KLSAgICAgICAgDQorDQogICAgICAgICBzZXRDb250ZW50KHNwbGl0UGFuZSk7DQogICAgIH0N
CiANCkBAIC00MzQsNyArNDM1LDcgQEANCiAgICAgICogTG9hZCB0aGUgcGVyc3BlY3RpdmVzIGZy
b20gdGhlIHBlcnNwZWN0aXZlIG1hbmFnZXIgZm9yIHByZXNlbnRhdGlvbi4NCiAgICAgICovDQog
ICAgIHByaXZhdGUgdm9pZCBsb2FkUGVyc3BlY3RpdmVzKCkgew0KLSAgICAgICAgTGlzdDxFeHBs
b3JlclBlcnNwZWN0aXZlPiBwZXJzcGVjdGl2ZXMgPSANCisgICAgICAgIExpc3Q8RXhwbG9yZXJQ
ZXJzcGVjdGl2ZT4gcGVyc3BlY3RpdmVzID0NCiAgICAgICAgICAgICBQZXJzcGVjdGl2ZU1hbmFn
ZXIuZ2V0SW5zdGFuY2UoKS5nZXRQZXJzcGVjdGl2ZXMoKTsNCiANCiAgICAgICAgIC8vIG11c3Qg
YWRkIGFuIGVkaXRhYmxlIGxpc3Qgb2YgbmV3IEV4cGxvcmVyUGVyc3BlY3RpdmUncw0KQEAgLTUx
Myw3ICs1MTQsNyBAQA0KICAgICAgICAgICAgIFBlcnNwZWN0aXZlTWFuYWdlci5nZXRJbnN0YW5j
ZSgpLnJlbW92ZUFsbFBlcnNwZWN0aXZlcygpOw0KIA0KICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcGVyc3BlY3RpdmVMaXN0TW9kZWwuc2l6ZSgpOyBpKyspIHsNCi0gICAgICAgICAg
ICAgICAgRXhwbG9yZXJQZXJzcGVjdGl2ZSBwZXJzcGVjdGl2ZSA9IA0KKyAgICAgICAgICAgICAg
ICBFeHBsb3JlclBlcnNwZWN0aXZlIHBlcnNwZWN0aXZlID0NCiAgICAgICAgICAgICAgICAgICAg
IChFeHBsb3JlclBlcnNwZWN0aXZlKSBwZXJzcGVjdGl2ZUxpc3RNb2RlbC5nZXQoaSk7DQogICAg
ICAgICAgICAgICAgIFBlcnNwZWN0aXZlTWFuYWdlci5nZXRJbnN0YW5jZSgpLmFkZFBlcnNwZWN0
aXZlKHBlcnNwZWN0aXZlKTsNCiAgICAgICAgICAgICB9DQpAQCAtNjQzLDcgKzY0NCw3IEBADQog
ICAgICAgICBPYmplY3Qgc2VsID0gcnVsZUxpYnJhcnlMaXN0LmdldFNlbGVjdGVkVmFsdWUoKTsN
CiAgICAgICAgIGludCBzZWxMaWJOciA9IHJ1bGVMaWJyYXJ5TGlzdC5nZXRTZWxlY3RlZEluZGV4
KCk7DQogICAgICAgICB0cnkgew0KLSAgICAgICAgICAgIFBlcnNwZWN0aXZlUnVsZSBuZXdSdWxl
ID0gDQorICAgICAgICAgICAgUGVyc3BlY3RpdmVSdWxlIG5ld1J1bGUgPQ0KICAgICAgICAgICAg
ICAgICAoUGVyc3BlY3RpdmVSdWxlKSBzZWwuZ2V0Q2xhc3MoKS5uZXdJbnN0YW5jZSgpOw0KIA0K
ICAgICAgICAgICAgIHBlcnNwZWN0aXZlUnVsZXNMaXN0TW9kZWwuaW5zZXJ0RWxlbWVudEF0KG5l
d1J1bGUsIDApOw0KQEAgLTY2MCw3ICs2NjEsNyBAQA0KICAgICAgICAgICAgIHJ1bGVMaWJyYXJ5
TGlzdC5zZXRTZWxlY3RlZEluZGV4KHNlbExpYk5yKTsNCiAgICAgICAgICAgICB1cGRhdGVSdWxl
TGFiZWwoKTsNCiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAg
TE9HLmVycm9yKCJwcm9ibGVtIGFkZGluZyBydWxlIiwgZSk7DQorICAgICAgICAgICAgTE9HLmxv
ZyhMZXZlbC5TRVZFUkUsICJwcm9ibGVtIGFkZGluZyBydWxlIiwgZSk7DQogICAgICAgICB9DQog
ICAgIH0NCiANCg0KTW9kaWZpZWQ6IHRydW5rL3NyYy9hcmdvdW1sLWFwcC9zcmMvb3JnL2FyZ291
bWwvdWkvZXhwbG9yZXIvUGVyc3BlY3RpdmVNYW5hZ2VyLmphdmENClVybDogaHR0cDovL2FyZ291
bWwudGlncmlzLm9yZy9zb3VyY2UvYnJvd3NlL2FyZ291bWwvdHJ1bmsvc3JjL2FyZ291bWwtYXBw
L3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9QZXJzcGVjdGl2ZU1hbmFnZXIuamF2YT92aWV3
PWRpZmYmcGF0aHJldj0xOTkwNyZyMT0xOTkwNiZyMj0xOTkwNw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jl
ci9QZXJzcGVjdGl2ZU1hbmFnZXIuamF2YQkob3JpZ2luYWwpDQorKysgdHJ1bmsvc3JjL2FyZ291
bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9QZXJzcGVjdGl2ZU1hbmFnZXIuamF2
YQkyMDEyLTEyLTMwIDA1OjA2OjAxLTA4MDANCkBAIC0xLDYgKzEsNiBAQA0KIC8qICRJZCQNCiAg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioNCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ29udHJpYnV0b3Jz
IC0gc2VlIGJlbG93DQorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgQ29udHJpYnV0b3JzIC0g
c2VlIGJlbG93DQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUg
YWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICAqIHdoaWNoIGFjY29t
cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQpAQCAtNDMsOCAr
NDMsOSBAQA0KIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCiBpbXBvcnQgamF2YS51dGls
Lkxpc3Q7DQogaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7DQoraW1wb3J0IGphdmEu
dXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7DQog
DQotaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5h
cHBsaWNhdGlvbi5hcGkuQXJnbzsNCiBpbXBvcnQgb3JnLmFyZ291bWwuY29uZmlndXJhdGlvbi5D
b25maWd1cmF0aW9uOw0KIGltcG9ydCBvcmcuYXJnb3VtbC5tb2RlbC5Nb2RlbDsNCkBAIC0xNDUs
NyArMTQ2LDcgQEANCiAgICAgICogTG9nZ2VyLg0KICAgICAgKi8NCiAgICAgcHJpdmF0ZSBzdGF0
aWMgZmluYWwgTG9nZ2VyIExPRyA9DQotICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFBlcnNwZWN0
aXZlTWFuYWdlci5jbGFzcyk7DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKFBlcnNwZWN0aXZl
TWFuYWdlci5jbGFzcy5nZXROYW1lKCkpOw0KIA0KICAgICBwcml2YXRlIHN0YXRpYyBQZXJzcGVj
dGl2ZU1hbmFnZXIgaW5zdGFuY2U7DQogDQpAQCAtMjg5LDIyICsyOTAsMjIgQEANCiANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRlZmluZWRQZXJzcGVjdGl2ZS5hZGRSdWxlKHJ1
bGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNl
cHRpb24gZSkgew0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0cuZXJyb3IoDQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjcmVhdGUgcnVsZSAi
ICsgcnVsZU5hbWUgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPRy5sb2coTGV2ZWwu
U0VWRVJFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3Qg
Y3JlYXRlIHJ1bGUgIiArIHJ1bGVOYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyAiIHlvdSBjYW4gdHJ5IHRvICINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArICJyZWZyZXNoIHRoZSBwZXJzcGVjdGl2ZXMgdG8gdGhlICINCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICArICJkZWZhdWx0IHNldHRpbmdzLiIsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgfSBjYXRjaCAoSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiBlKSB7DQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExPRy5lcnJvcigNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY291bGQgbm90IGNyZWF0ZSBydWxlICIgKyBydWxlTmFtZSANCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5TRVZFUkUsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjcmVhdGUgcnVsZSAiICsgcnVsZU5hbWUNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgeW91IGNhbiB0cnkgdG8gIg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgInJlZnJlc2ggdGhlIHBlcnNw
ZWN0aXZlcyB0byB0aGUgIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg
ImRlZmF1bHQgc2V0dGluZ3MuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhj
ZXB0aW9uIGUpIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HLmVycm9yKA0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY3JlYXRlIHJ1bGUg
IiArIHJ1bGVOYW1lIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0cubG9nKExldmVs
LlNFVkVSRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90
IGNyZWF0ZSBydWxlICIgKyBydWxlTmFtZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgIiB5b3UgY2FuIHRyeSB0byAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKyAicmVmcmVzaCB0aGUgcGVyc3BlY3RpdmVzIHRvIHRoZSAiDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiZGVmYXVsdCBzZXR0aW5ncy4iLA0KQEAgLTUx
MCw3ICs1MTEsNyBAQA0KICAgICAgICAgY29tcG9zaXRpb25QZXJzcGVjdGl2ZS5hZGRSdWxlKG5l
dyBHb01vZGVsRWxlbWVudFRvQ29udGVudHMoKSk7DQogICAgICAgICBjb21wb3NpdGlvblBlcnNw
ZWN0aXZlLmFkZFJ1bGUobmV3IEdvTW9kZWxFbGVtZW50VG9Db250YWluZWREaWFncmFtcygpKTsN
CiANCi0gICAgICAgIENvbGxlY3Rpb248RXhwbG9yZXJQZXJzcGVjdGl2ZT4gYyA9IA0KKyAgICAg
ICAgQ29sbGVjdGlvbjxFeHBsb3JlclBlcnNwZWN0aXZlPiBjID0NCiAgICAgICAgICAgICBuZXcg
QXJyYXlMaXN0PEV4cGxvcmVyUGVyc3BlY3RpdmU+KCk7DQogICAgICAgICBjLmFkZChwYWNrYWdl
UGVyc3BlY3RpdmUpOw0KICAgICAgICAgYy5hZGQoY2xhc3NQZXJzcGVjdGl2ZSk7DQpAQCAtNTcw
LDE1ICs1NzEsMTUgQEANCiAgICAgICAgICAgICBuZXcgR29QYWNrYWdlVG9DbGFzcygpLA0KICAg
ICAgICAgICAgIG5ldyBHb1BhY2thZ2VUb0VsZW1lbnRJbXBvcnQoKSwNCiAgICAgICAgICAgICBu
ZXcgR29Qcm9qZWN0VG9Db2xsYWJvcmF0aW9uKCksIG5ldyBHb1Byb2plY3RUb0RpYWdyYW0oKSwN
Ci0gICAgICAgICAgICBuZXcgR29Qcm9qZWN0VG9Nb2RlbCgpLCBuZXcgR29Qcm9qZWN0VG9TdGF0
ZU1hY2hpbmUoKSwgDQotICAgICAgICAgICAgbmV3IEdvUHJvamVjdFRvUHJvZmlsZUNvbmZpZ3Vy
YXRpb24oKSwgDQorICAgICAgICAgICAgbmV3IEdvUHJvamVjdFRvTW9kZWwoKSwgbmV3IEdvUHJv
amVjdFRvU3RhdGVNYWNoaW5lKCksDQorICAgICAgICAgICAgbmV3IEdvUHJvamVjdFRvUHJvZmls
ZUNvbmZpZ3VyYXRpb24oKSwNCiAgICAgICAgICAgICBuZXcgR29Qcm9maWxlQ29uZmlndXJhdGlv
blRvUHJvZmlsZSgpLA0KICAgICAgICAgICAgIG5ldyBHb1Byb2ZpbGVUb01vZGVsKCksDQogICAg
ICAgICAgICAgbmV3IEdvUHJvZmlsZVRvQ3JpdGljcygpLA0KICAgICAgICAgICAgIG5ldyBHb0Ny
aXRpY3NUb0NyaXRpYygpLA0KICAgICAgICAgICAgIG5ldyBHb1Byb2plY3RUb1Jvb3RzKCksDQog
ICAgICAgICAgICAgbmV3IEdvU2lnbmFsVG9SZWNlcHRpb24oKSwgbmV3IEdvU3RhdGVNYWNoaW5l
VG9Ub3AoKSwNCi0gICAgICAgICAgICBuZXcgR29TdGF0ZW1hY2hpbmVUb0RpYWdyYW0oKSwgDQor
ICAgICAgICAgICAgbmV3IEdvU3RhdGVtYWNoaW5lVG9EaWFncmFtKCksDQogICAgICAgICAgICAg
bmV3IEdvU3RhdGVNYWNoaW5lVG9UcmFuc2l0aW9uKCksIG5ldyBHb1N0YXRlVG9Eb0FjdGl2aXR5
KCksDQogICAgICAgICAgICAgbmV3IEdvU3RhdGVUb0Rvd25zdHJlYW0oKSwgbmV3IEdvU3RhdGVU
b0VudHJ5KCksDQogICAgICAgICAgICAgbmV3IEdvU3RhdGVUb0V4aXQoKSwgbmV3IEdvU3RhdGVU
b0luY29taW5nVHJhbnMoKSwNCkBAIC01OTUsNyArNTk2LDcgQEANCiAgICAgICAgICAgICBuZXcg
R29TdWJtYWNoaW5lU3RhdGVUb1N0YXRlTWFjaGluZSgpLA0KICAgICAgICAgICAgIG5ldyBHb1N0
YXRlVG9JbnRlcm5hbFRyYW5zKCkNCiAgICAgICAgIH07DQotICAgICAgICANCisNCiAgICAgICAg
IC8vIFRPRE86IFdlIG5lZWQgYSBmYWN0b3J5IHBhdHRlcm4gZm9yIEdvWFhYIGNsYXNzZXMgdGhh
dCBjYW4gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIHJlcXVpcmVkDQogICAgICAgICBQZXJzcGVjdGl2
ZVJ1bGVbXSBydWxlTmFtZXNBcnJheTE0ID0gew0KICAgICAgICAgICAgIG5ldyBHb0NvbXBvc2l0
ZVN0YXRlVG9TdWJ2ZXJ0ZXgoKSwNCkBAIC02MTIsMTAgKzYxMywxMCBAQA0KICAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgICBydWxlTmFtZXNBcnJheSA9IGFwcGVuZEFycmF5cyhydWxlTmFt
ZXNBcnJheSwgcnVsZU5hbWVzQXJyYXkyKTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAg
ICAgICAgcnVsZXMgPSBBcnJheXMuYXNMaXN0KHJ1bGVOYW1lc0FycmF5KTsNCiAgICAgfQ0KLSAg
ICANCisNCiAgICAgcHJpdmF0ZSA8VD4gVFtdIGFwcGVuZEFycmF5cyhUW10gZmlyc3QsIFRbXSBz
ZWNvbmQpIHsNCiAgICAgICAgIGlmIChmaXJzdC5sZW5ndGggPT0gMCkgew0KICAgICAgICAgICAg
IHJldHVybiBzZWNvbmQ7DQpAQCAtNjI2LDcgKzYyNyw3IEBADQogICAgICAgICBUW10gcmVzdWx0
ID0gQXJyYXlzLmNvcHlPZihmaXJzdCwgZmlyc3QubGVuZ3RoICsgc2Vjb25kLmxlbmd0aCk7DQog
ICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHNlY29uZCwgMCwgcmVzdWx0LCBmaXJzdC5sZW5ndGgs
IHNlY29uZC5sZW5ndGgpOw0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCi0gICAgfSAgICANCisg
ICAgfQ0KIA0KICAgICAvKioNCiAgICAgICogQWRkIGEgcnVsZSB0byB0aGUgbGlzdCBvZiBydWxl
cy4NCkBAIC02ODIsNyArNjgzLDcgQEANCiAgICAgICAgICAgICBwLmRlbGV0ZUNoYXJBdChwLmxl
bmd0aCgpIC0gMSk7DQogICAgICAgICAgICAgcC5hcHBlbmQoIjsiKTsNCiAgICAgICAgIH0NCi0g
ICAgICAgIA0KKw0KICAgICAgICAgcC5kZWxldGVDaGFyQXQocC5sZW5ndGgoKSAtIDEpOw0KICAg
ICAgICAgcmV0dXJuIHAudG9TdHJpbmcoKTsNCiAgICAgfQ0KDQpNb2RpZmllZDogdHJ1bmsvc3Jj
L2FyZ291bWwtYXBwL3NyYy9vcmcvYXJnb3VtbC91aS9leHBsb3Jlci9ydWxlcy9Hb1N0YXRlTWFj
aGluZVRvU3RhdGUuamF2YQ0KVXJsOiBodHRwOi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9i
cm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4
cGxvcmVyL3J1bGVzL0dvU3RhdGVNYWNoaW5lVG9TdGF0ZS5qYXZhP3ZpZXc9ZGlmZiZwYXRocmV2
PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0cnVu
ay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL3J1bGVzL0dvU3Rh
dGVNYWNoaW5lVG9TdGF0ZS5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9zcmMvYXJnb3VtbC1h
cHAvc3JjL29yZy9hcmdvdW1sL3VpL2V4cGxvcmVyL3J1bGVzL0dvU3RhdGVNYWNoaW5lVG9TdGF0
ZS5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyogJElk
JA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDExIENv
bnRyaWJ1dG9ycyAtIHNlZSBiZWxvdw0KKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIENvbnRy
aWJ1dG9ycyAtIHNlZSBiZWxvdw0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3Jh
bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiBhcmUgbWFkZSBhdmFpbGFibGUg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCiAgKiB3
aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0K
QEAgLTQ1LDggKzQ1LDkgQEANCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOw0KIGltcG9y
dCBqYXZhLnV0aWwuSGFzaFNldDsNCiBpbXBvcnQgamF2YS51dGlsLlNldDsNCitpbXBvcnQgamF2
YS51dGlsLmxvZ2dpbmcuTGV2ZWw7DQoraW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsN
CiANCi1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1s
LmkxOG4uVHJhbnNsYXRvcjsNCiBpbXBvcnQgb3JnLmFyZ291bWwubW9kZWwuTW9kZWw7DQogDQpA
QCAtNTksOCArNjAsOCBAQA0KIHB1YmxpYyBjbGFzcyBHb1N0YXRlTWFjaGluZVRvU3RhdGUgZXh0
ZW5kcyBBYnN0cmFjdFBlcnNwZWN0aXZlUnVsZSB7DQogDQogICAgIHByaXZhdGUgc3RhdGljIGZp
bmFsIExvZ2dlciBMT0cgPQ0KLSAgICAgICAgTG9nZ2VyLmdldExvZ2dlcihHb1N0YXRlTWFjaGlu
ZVRvU3RhdGUuY2xhc3MpOw0KLSAgICANCisgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoR29TdGF0
ZU1hY2hpbmVUb1N0YXRlLmNsYXNzLmdldE5hbWUoKSk7DQorDQogICAgIC8qDQogICAgICAqIEBz
ZWUgb3JnLmFyZ291bWwudWkuZXhwbG9yZXIucnVsZXMuUGVyc3BlY3RpdmVSdWxlI2dldFJ1bGVO
YW1lKCkNCiAgICAgICovDQpAQCAtMTA0LDcgKzEwNSw3IEBADQogCSAgICAgICAgaWYgKE1vZGVs
LmdldEZhY2FkZSgpLmdldFVtbFZlcnNpb24oKS5zdGFydHNXaXRoKCIyIikpIHsNCiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRPRE86IElnbm9yZSBhbmQgcmVwb3J0IGV4Y2VwdGlvbiB1bnRpbCBn
ZXRUb3ANCiAJICAgICAgICAgICAgLy8gaW1wbGVtZW50ZWQuDQotICAgICAgICAgICAgICAgICAg
ICBMT0cuZXJyb3IoIkV4cGxvcmVyIGNhdWdodCBleGNlcHRpb24gIiwgZSk7DQorICAgICAgICAg
ICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIkV4cGxvcmVyIGNhdWdodCBleGNlcHRp
b24gIiwgZSk7DQogCSAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgIHRocm93
IGU7DQogCSAgICAgICAgfQ0KDQpNb2RpZmllZDogdHJ1bmsvc3JjL2FyZ291bWwtYXBwL3NyYy9v
cmcvYXJnb3VtbC91aS90YXJnZXRtYW5hZ2VyL1RhcmdldE1hbmFnZXIuamF2YQ0KVXJsOiBodHRw
Oi8vYXJnb3VtbC50aWdyaXMub3JnL3NvdXJjZS9icm93c2UvYXJnb3VtbC90cnVuay9zcmMvYXJn
b3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL3RhcmdldG1hbmFnZXIvVGFyZ2V0TWFuYWdlci5q
YXZhP3ZpZXc9ZGlmZiZwYXRocmV2PTE5OTA3JnIxPTE5OTA2JnIyPTE5OTA3DQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSB0cnVuay9zcmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3Vp
L3RhcmdldG1hbmFnZXIvVGFyZ2V0TWFuYWdlci5qYXZhCShvcmlnaW5hbCkNCisrKyB0cnVuay9z
cmMvYXJnb3VtbC1hcHAvc3JjL29yZy9hcmdvdW1sL3VpL3RhcmdldG1hbmFnZXIvVGFyZ2V0TWFu
YWdlci5qYXZhCTIwMTItMTItMzAgMDU6MDY6MDEtMDgwMA0KQEAgLTEsNiArMSw2IEBADQogLyog
JElkJA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcHlyaWdodCAoYykgMjAwOSBDb250
cmlidXRvcnMgLSBzZWUgYmVsb3cNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMiBDb250cmli
dXRvcnMgLSBzZWUgYmVsb3cNCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0g
YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQogICogd2hp
Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCkBA
IC00Nyw2ICs0Nyw4IEBADQogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsNCiBpbXBvcnQgamF2
YS51dGlsLkxpc3Q7DQogaW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7DQoraW1wb3J0IGph
dmEudXRpbC5sb2dnaW5nLkxldmVsOw0KK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7
DQogDQogaW1wb3J0IGphdmF4Lm1hbmFnZW1lbnQuTGlzdGVuZXJOb3RGb3VuZEV4Y2VwdGlvbjsN
CiBpbXBvcnQgamF2YXgubWFuYWdlbWVudC5Ob3RpZmljYXRpb247DQpAQCAtNTQsNyArNTYsNiBA
QA0KIGltcG9ydCBqYXZheC5tYW5hZ2VtZW50Lk5vdGlmaWNhdGlvbkxpc3RlbmVyOw0KIGltcG9y
dCBqYXZheC5zd2luZy5ldmVudC5FdmVudExpc3RlbmVyTGlzdDsNCiANCi1pbXBvcnQgb3JnLmFw
YWNoZS5sb2c0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5hcmdvdW1sLmtlcm5lbC5Qcm9qZWN0Ow0K
IGltcG9ydCBvcmcuYXJnb3VtbC5rZXJuZWwuUHJvamVjdE1hbmFnZXI7DQogaW1wb3J0IG9yZy5h
cmdvdW1sLm1vZGVsLk1vZGVsOw0KQEAgLTEzOCwxMSArMTM5LDExIEBADQogICAgICAgICBwcml2
YXRlIGludCBjdXJyZW50VGFyZ2V0ID0gLTE7DQogDQogICAgICAgICAvKioNCi0gICAgICAgICAq
IFRoZSBsaXN0ZW5lciB0byBVTUwgbW9kZWwgY2hhbmdlcy4gDQotICAgICAgICAgKiBEZWxldGVk
IG1vZGVsIGVsZW1lbnRzIGFyZSByZW1vdmVkIA0KLSAgICAgICAgICogZnJvbSB0aGUgaGlzdG9y
eSBsaXN0LiANCisgICAgICAgICAqIFRoZSBsaXN0ZW5lciB0byBVTUwgbW9kZWwgY2hhbmdlcy4N
CisgICAgICAgICAqIERlbGV0ZWQgbW9kZWwgZWxlbWVudHMgYXJlIHJlbW92ZWQNCisgICAgICAg
ICAqIGZyb20gdGhlIGhpc3RvcnkgbGlzdC4NCiAgICAgICAgICAqLw0KLSAgICAgICAgcHJpdmF0
ZSBSZW1vdmVyIHVtbExpc3RlbmVyID0gbmV3IEhpc3RvcnlSZW1vdmVyKCk7IA0KKyAgICAgICAg
cHJpdmF0ZSBSZW1vdmVyIHVtbExpc3RlbmVyID0gbmV3IEhpc3RvcnlSZW1vdmVyKCk7DQogDQog
ICAgICAgICAvKioNCiAgICAgICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IgdGhhdCByZWdpc3Ry
YXRlcyB0aGUgaGlzdG9yeSBtYW5hZ2VyIGFzIHRhcmdldA0KQEAgLTI1OSw3ICsyNjAsNyBAQA0K
IA0KICAgICAgICAgLyoqDQogICAgICAgICAgKiBDaGVja3MgaWYgaXQncyBwb3NzaWJsZSB0byBu
YXZpZ2F0ZSBiYWNrLg0KLSAgICAgICAgICogDQorICAgICAgICAgKg0KICAgICAgICAgICogQHJl
dHVybiB0cnVlIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgYmFjay4NCiAgICAgICAgICAq
Lw0KICAgICAgICAgcHJpdmF0ZSBib29sZWFuIG5hdmlnYXRlQmFja1Bvc3NpYmxlKCkgew0KQEAg
LTM2MSw3ICszNjIsOCBAQA0KICAgICAvKioNCiAgICAgICogVGhlIGxvZzRqIGxvZ2dlciB0byBs
b2cgbWVzc2FnZXMgdG8uDQogICAgICAqLw0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dn
ZXIgTE9HID0gTG9nZ2VyLmdldExvZ2dlcihUYXJnZXRNYW5hZ2VyLmNsYXNzKTsNCisgICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIExPRyA9DQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2Vy
KFRhcmdldE1hbmFnZXIuY2xhc3MuZ2V0TmFtZSgpKTsNCiANCiAgICAgLyoqDQogICAgICAqIFRo
ZSBzaW5nbGV0b24gaW5zdGFuY2UuDQpAQCAtMzkzLDEzICszOTUsMTMgQEANCiAgICAgICogaXMg
ZW11bGF0ZWQuDQogICAgICAqLw0KICAgICBwcml2YXRlIEhpc3RvcnlNYW5hZ2VyIGhpc3RvcnlN
YW5hZ2VyID0gbmV3IEhpc3RvcnlNYW5hZ2VyKCk7DQotICAgIA0KKw0KICAgICAvKioNCi0gICAg
ICogVGhlIGxpc3RlbmVyIHRvIFVNTCBtb2RlbCBjaGFuZ2VzLiANCi0gICAgICogRGVsZXRlZCBt
b2RlbCBlbGVtZW50cyBhcmUgcmVtb3ZlZCANCi0gICAgICogZnJvbSB0aGUgdGFyZ2V0IGxpc3Qu
IA0KKyAgICAgKiBUaGUgbGlzdGVuZXIgdG8gVU1MIG1vZGVsIGNoYW5nZXMuDQorICAgICAqIERl
bGV0ZWQgbW9kZWwgZWxlbWVudHMgYXJlIHJlbW92ZWQNCisgICAgICogZnJvbSB0aGUgdGFyZ2V0
IGxpc3QuDQogICAgICAqLw0KLSAgICBwcml2YXRlIFJlbW92ZXIgdW1sTGlzdGVuZXIgPSBuZXcg
VGFyZ2V0UmVtb3ZlcigpOyANCisgICAgcHJpdmF0ZSBSZW1vdmVyIHVtbExpc3RlbmVyID0gbmV3
IFRhcmdldFJlbW92ZXIoKTsNCiANCiAgICAgLyoqDQogICAgICAqIEZsYWcgdG8gaW5kaWNhdGUg
dGhhdCB0aGVyZSBpcyBhIHNldFRhcmdldCBtZXRob2QgcnVubmluZy4NCkBAIC00ODIsNyArNDg0
LDcgQEANCiAJICAgIHJldHVybjsNCiAJfQ0KIA0KLQlMT0cuZXJyb3IoIlVua25vd24gZXZlbnRO
YW1lOiAiICsgZXZlbnROYW1lKTsNCisgICAgICAgIExPRy5sb2coTGV2ZWwuU0VWRVJFLCAiVW5r
bm93biBldmVudE5hbWU6ICIgKyBldmVudE5hbWUpOw0KICAgICB9DQogDQogICAgIC8qKg0KQEAg
LTU5Niw3ICs1OTgsOCBAQA0KICAgICAgKi8NCiAgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lk
IGFkZFRhcmdldChPYmplY3QgdGFyZ2V0KSB7DQogICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNl
b2YgVGFyZ2V0TGlzdGVuZXIpIHsNCi0gICAgICAgICAgICBMT0cud2FybigiYWRkVGFyZ2V0IG1l
dGhvZCByZWNlaXZlZCBhIFRhcmdldExpc3RlbmVyLCAiDQorICAgICAgICAgICAgTE9HLmxvZyhM
ZXZlbC5XQVJOSU5HLA0KKyAgICAgICAgICAgICAgICAgICAgImFkZFRhcmdldCBtZXRob2QgcmVj
ZWl2ZWQgYSBUYXJnZXRMaXN0ZW5lciwgIg0KICAgICAgICAgICAgICAgICAgICAgKyAicGVyaGFw
cyBhZGRUYXJnZXRMaXN0ZW5lciB3YXMgaW50ZW5kZWQhIC0gIiArIHRhcmdldCk7DQogICAgICAg
ICB9DQogCWlmIChpc0luVGFyZ2V0VHJhbnNhY3Rpb24oKSkgew0KQEAgLTcwNCwxMyArNzA3LDEz
IEBADQogICAgIC8qKg0KICAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9uZSB0YXJnZXQsIHRoZW4g
aXQgaXMgcmV0dXJuZWQuDQogICAgICAqIE90aGVyd2lzZSBudWxsLg0KLSAgICAgKiANCisgICAg
ICoNCiAgICAgICogQHJldHVybiB0aGUgb25lIGFuZCBvbmx5IHRhcmdldA0KICAgICAgKi8NCiAg
ICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3QgZ2V0U2luZ2xlVGFyZ2V0KCkgew0KICAgICAg
ICAgcmV0dXJuIHRhcmdldHMuc2l6ZSgpID09IDEgPyB0YXJnZXRzLmdldCgwKSA6IG51bGw7DQog
ICAgIH0NCi0gICAgDQorDQogICAgIC8qKg0KICAgICAgKiBAcmV0dXJuIHRoZSB0YXJnZXQgZnJv
bSB0aGUgbW9kZWwNCiAgICAgICovDQpAQCAtNzcyLDcgKzc3NSw3IEBADQogCSAgICAgICAgICAg
ICgoVGFyZ2V0TGlzdGVuZXIpIGxpc3RlbmVyc1tpICsgMV0pLnRhcmdldFNldCh0YXJnZXRFdmVu
dCk7DQogCSAgICAgICAgfQ0KIAkgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7DQot
CSAgICAgICAgTE9HLmVycm9yKCJXaGlsZSBjYWxsaW5nIHRhcmdldFNldCBmb3IgIg0KKyAgICAg
ICAgICAgICAgICBMT0cubG9nKExldmVsLlNFVkVSRSwgIldoaWxlIGNhbGxpbmcgdGFyZ2V0U2V0
IGZvciAiDQogCSAgICAgICAgICAgICAgICArIHRhcmdldEV2ZW50DQogCSAgICAgICAgICAgICAg
ICArICIgaW4gIg0KIAkgICAgICAgICAgICAgICAgKyBsaXN0ZW5lcnNbaSArIDFdDQpAQCAtNzk0
LDEyICs3OTcsMTEgQEANCiAJCSAgICAgICAgLnRhcmdldEFkZGVkKHRhcmdldEV2ZW50KTsNCiAJ
CX0NCiAJICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgew0KLQkJTE9HLmVycm9yKCJX
aGlsZSBjYWxsaW5nIHRhcmdldEFkZGVkIGZvciAiDQotCQkJICArIHRhcmdldEV2ZW50DQotCQkJ
ICArICIgaW4gIg0KLQkJCSAgKyBsaXN0ZW5lcnNbaSArIDFdDQotCQkJICArICIgYW4gZXJyb3Ig
aXMgdGhyb3duLiIsDQotCQkJICBlKTsNCisgICAgICAgICAgICAgICAgTE9HLmxvZyhMZXZlbC5T
RVZFUkUsDQorICAgICAgICAgICAgICAgICAgICAgICAgIldoaWxlIGNhbGxpbmcgdGFyZ2V0QWRk
ZWQgZm9yICINCisgICAgICAgICAgICAgICAgICAgICAgICArIHRhcmdldEV2ZW50ICsgIiBpbiAi
ICsgbGlzdGVuZXJzW2kgKyAxXQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhbiBlcnJv
ciBpcyB0aHJvd24uIiwNCisgICAgICAgICAgICAgICAgICAgICAgICBlKTsNCiAgICAgICAgICAg
ICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsNCiAJICAgIH0NCiAgICAgICAgIH0NCkBAIC04MTYs
MTIgKzgxOCwxMCBAQA0KIAkJICAgICAgICAudGFyZ2V0UmVtb3ZlZCh0YXJnZXRFdmVudCk7DQog
CQl9DQogCSAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsNCi0JCUxPRy53YXJuKCJX
aGlsZSBjYWxsaW5nIHRhcmdldFJlbW92ZWQgZm9yICINCi0JCQkgICsgdGFyZ2V0RXZlbnQNCi0J
CQkgICsgIiBpbiAiDQotCQkJICArIGxpc3RlbmVyc1tpICsgMV0NCi0JCQkgICsgIiBhbiBlcnJv
ciBpcyB0aHJvd24uIiwNCi0JCQkgIGUpOw0KKyAgICAgICAgICAgICAgICBMT0cubG9nKExldmVs
LldBUk5JTkcsICJXaGlsZSBjYWxsaW5nIHRhcmdldFJlbW92ZWQgZm9yICINCisgICAgICAgICAg
ICAgICAgICAgICAgICArIHRhcmdldEV2ZW50ICsgIiBpbiAiICsgbGlzdGVuZXJzW2kgKyAxXQ0K
KyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhbiBlcnJvciBpcyB0aHJvd24uIiwNCisgICAg
ICAgICAgICAgICAgICAgICAgICBlKTsNCiAJICAgIH0NCiAgICAgICAgIH0NCiAgICAgfQ0KQEAg
LTg3Nyw3ICs4NzcsNyBAQA0KICAgICAgKiBiZSByZXR1cm5lZC4gSWYgdGhlIHRhcmdldCBpcyBh
IGZpZyBidXQgb3duZWQgYnkgYSBtb2RlbGVsZW1lbnQNCiAgICAgICogdGhhdCBtb2RlbGVsZW1l
bnQgd2lsbCBiZSByZXR1cm5lZC4gIE90aGVyd2lzZSBudWxsIHdpbGwgYmUNCiAgICAgICogcmV0
dXJuZWQuDQotICAgICAqIA0KKyAgICAgKg0KICAgICAgKiBAcmV0dXJuIHRoZSB0YXJnZXQgaW4g
aXQncyAnbW9kZWxmb3JtJy4NCiAgICAgICovDQogICAgIHB1YmxpYyBPYmplY3QgZ2V0TW9kZWxU
YXJnZXQoKSB7DQpAQCAtOTEwLDcgKzkxMCw3IEBADQogICAgICAqLw0KICAgICBwdWJsaWMgdm9p
ZCBuYXZpZ2F0ZUZvcndhcmQoKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsNCiAgICAg
ICAgIGhpc3RvcnlNYW5hZ2VyLm5hdmlnYXRlRm9yd2FyZCgpOw0KLSAgICAgICAgTE9HLmRlYnVn
KCJOYXZpZ2F0ZSBmb3J3YXJkIik7DQorICAgICAgICBMT0cubG9nKExldmVsLkZJTkUsICJOYXZp