LyoqCiAqIENvcHlyaWdodCAoYykgMjAxNyBDRUEgTElTVC4KICogCiAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAogKiAKICogQ29udHJpYnV0b3JzOgogKiAgIFPpYmFzdGllbiBHZXJhcmQgKENFQSBMSVNUKSA8c2ViYXN0aWVuLmdlcmFyZEBjZWEuZnI+IC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqICAgWXVwYW5xdWkgTXVub3ogSnVsaG8gKENFQSBMSVNUKSA8eXVwYW5xdWkubXVub3pqdWxob0BjZWEuZnI+IC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqIAogKi8KcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJlcXVpcmVtZW50cy5zeXNtbDE0LnBhcHlydXNyZS5yZXF1aXJlbWVudGNsYXNzaWZpY2F0aW9uLmltcGw7CgppbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKCmltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJlcXVpcmVtZW50cy5zeXNtbDE0LnBhcHlydXNyZS5yZXF1aXJlbWVudGNsYXNzaWZpY2F0aW9uLlByb2Nlc3NSZXF1aXJlbWVudDsKaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucmVxdWlyZW1lbnRzLnN5c21sMTQucGFweXJ1c3JlLnJlcXVpcmVtZW50Y2xhc3NpZmljYXRpb24uUmVxdWlyZW1lbnRDbGFzc2lmaWNhdGlvblBhY2thZ2U7CgppbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yZXF1aXJlbWVudHMuc3lzbWwxNC5wYXB5cnVzcmUucmVxdWlyZW1lbnRnZW5lcmljY2hhcmFjdGVyaXN0aWNzLmltcGwuUmVxdWlyZW1lbnRJbXBsOwoKLyoqCiAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CiAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Qcm9jZXNzIFJlcXVpcmVtZW50PC9iPjwvZW0+Jy4KICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CiAqCiAqIEBnZW5lcmF0ZWQKICovCnB1YmxpYyBjbGFzcyBQcm9jZXNzUmVxdWlyZW1lbnRJbXBsIGV4dGVuZHMgUmVxdWlyZW1lbnRJbXBsIGltcGxlbWVudHMgUHJvY2Vzc1JlcXVpcmVtZW50IHsKCS8qKgoJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgoJICogQGdlbmVyYXRlZAoJICovCglwcm90ZWN0ZWQgUHJvY2Vzc1JlcXVpcmVtZW50SW1wbCgpIHsKCQlzdXBlcigpOwoJfQoKCS8qKgoJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgoJICogQGdlbmVyYXRlZAoJICovCglAT3ZlcnJpZGUKCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgewoJCXJldHVybiBSZXF1aXJlbWVudENsYXNzaWZpY2F0aW9uUGFja2FnZS5MaXRlcmFscy5QUk9DRVNTX1JFUVVJUkVNRU5UOwoJfQoKfSAvL1Byb2Nlc3NSZXF1aXJlbWVudEltcGwK