LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudWk7CgppbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNsYXNzcGF0aEVudHJ5OwovKioKICogQW4gZ2VuZXJpYyBpbnRlcmZhY2UgZm9yIG1vZGlmeWluZyB0aGUgY2xhc3NwYXRoIG9mIGEgSmF2YSBzZXJ2ZXIuCiAqIENhbiBiZSB1c2VkIHRvIGltcGxlbWVudCB0aGUgY29tbWFuZCBwYXR0ZXJuIGJldHdlZW4gdGhlIGVkaXRvciBhbmQKICogdGhlIHNlcnZlci4KICovCnB1YmxpYyBpbnRlcmZhY2UgSUNsYXNzcGF0aEVkaXRvciB7CgkvKioKCSAqIEFkZCBjbGFzc3BhdGggZW50cmllcyB0byB0aGUgc2VydmVyLgoJICoKCSAqIEBwYXJhbSBlbnRyaWVzIG9yZy5lY2xpcHNlLmpkdC5jb3JlLklDbGFzc3BhdGhFbnRyeVtdCgkgKi8KCXB1YmxpYyB2b2lkIGFkZENsYXNzcGF0aEVudHJpZXMoSUNsYXNzcGF0aEVudHJ5W10gZW50cmllcyk7CgoJLyoqCgkgKiBFZGl0IGEgY2xhc3NwYXRoIGVudHJ5IG9uIHRoZSBzZXJ2ZXIuCgkgKgoJICogQHBhcmFtIGVudHJpZXMgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNsYXNzcGF0aEVudHJ5W10KCSAqLwoJcHVibGljIHZvaWQgZWRpdENsYXNzcGF0aEVudHJ5KGludCBpLCBJQ2xhc3NwYXRoRW50cnkgZW50cnkpOwoKCS8qKgoJICogUmVtb3ZlIGEgY2xhc3NwYXRoIGVudHJ5IGZyb20gdGhlIHNlcnZlci4KCSAqCgkgKiBAcGFyYW0gZW50cnkgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNsYXNzcGF0aEVudHJ5CgkgKi8KCXB1YmxpYyB2b2lkIHJlbW92ZUNsYXNzcGF0aEVudHJ5KElDbGFzc3BhdGhFbnRyeSBlbnRyeSk7CgoJLyoqCgkgKiBTd2FwIHR3byBjbGFzc3BhdGggZW50cmllcyBpbiB0aGUgc2VydmVyLgoJICoKCSAqIEBwYXJhbSBpIGludAoJICogQHBhcmFtIGogaW50CgkgKi8KCXB1YmxpYyB2b2lkIHN3YXBDbGFzc3BhdGhFbnRyaWVzKGludCBpLCBpbnQgaik7Cn0=