LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAqgKiAKICogQ29udHJpYnV0b3JzOgogKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbDsKCmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JTW9kdWxlQXJ0aWZhY3Q7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLyoqCiAqIFRoaXMgaW50ZXJmYWNlLCB0eXBpY2FsbHkgaW1wbGVtZW50ZWQgYnkgdGhlIHNlcnZlcgogKiBjb2RlLCBjb252ZXJ0cyBmcm9tIGFuIElNb2R1bGVBcnRpZmFjdCB0byBhbgogKiBJTGF1bmNoYWJsZS4KICogCiAqIDxwPlRoaXMgaW50ZXJmYWNlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBieSBjbGllbnRzLjwvcD4KICovCnB1YmxpYyBpbnRlcmZhY2UgSUxhdW5jaGFibGVBZGFwdGVyIHsKCS8qKgoJICogUmV0dXJucyB0aGUgaWQgb2YgdGhpcyBhZGFwdGVyLiBFYWNoIGtub3duIGFkYXB0ZXIgaGFzIGEgZGlzdGluY3QgaWQuIAoJICogSWRzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGludGVybmFsbHkgYXMga2V5czsgdGhleSBhcmUgbm90CgkgKiBpbnRlbmRlZCB0byBiZSBzaG93biB0byBlbmQgdXNlcnMuCgkgKiAKCSAqIEByZXR1cm4gdGhlIGFkYXB0ZXIgaWQKCSAqLwoJcHVibGljIFN0cmluZyBnZXRJZCgpOwoKCS8qKgoJICogUmV0dXJucyBhIGxhdW5jaGFibGUgb2JqZWN0IGZyb20gdGhpcyBtb2R1bGUgb2JqZWN0LgoJICogCgkgKiBAcGFyYW0gc2VydmVyIHRoZSBzZXJ2ZXIKCSAqIEBwYXJhbSBtb2R1bGVBcnRpZmFjdCBhbiBhcnRpZmFjdCBpbiB0aGUgbW9kdWxlCgkgKiBAcmV0dXJuIGEgbGF1bmNoYWJsZSBvYmplY3QKCSAqIEBleGNlcHRpb24gQ29yZUV4Y2VwdGlvbiB0aHJvd24gaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHJldHVybmluZyB0aGUgbGF1bmNoYWJsZQoJICovCglwdWJsaWMgT2JqZWN0IGdldExhdW5jaGFibGUoSVNlcnZlciBzZXJ2ZXIsIElNb2R1bGVBcnRpZmFjdCBtb2R1bGVBcnRpZmFjdCkgdGhyb3dzIENvcmVFeGNlcHRpb247Cn0=