LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAqgKiAKICogQ29udHJpYnV0b3JzOgogKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbDsKCmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZTsKLyoqCiAqIEFuIGV2ZW50IGZpcmVkIHdoZW4gYSBtb2R1bGUgY2hhbmdlcy4KICogCiAqIEBzaW5jZSAxLjAKICovCnB1YmxpYyBjbGFzcyBNb2R1bGVFdmVudCB7Cglwcm90ZWN0ZWQgSU1vZHVsZSBtb2R1bGU7Cglwcm90ZWN0ZWQgYm9vbGVhbiBpc0NoYW5nZWQ7Cglwcm90ZWN0ZWQgSU1vZHVsZVtdIGFkZGVkOwoJcHJvdGVjdGVkIElNb2R1bGVbXSBjaGFuZ2VkOwoJcHJvdGVjdGVkIElNb2R1bGVbXSByZW1vdmVkOwoKCWNsYXNzIElNb2R1bGVBcnRpZmFjdCB7CgkJSVBhdGggcGF0aDsKCQlsb25nIHRpbWVzdGFtcDsKCX0KCgkvKioKCSAqIENyZWF0ZSBhIG5ldyBtb2R1bGUgZXZlbnQuCgkgKiAKCSAqIEBwYXJhbSBtb2R1bGUKCSAqIEBwYXJhbSBpc0NoYW5nZWQKCSAqIEBwYXJhbSBhZGRlZAoJICogQHBhcmFtIGNoYW5nZWQKCSAqIEBwYXJhbSByZW1vdmVkCgkgKi8KCXB1YmxpYyBNb2R1bGVFdmVudChJTW9kdWxlIG1vZHVsZSwgYm9vbGVhbiBpc0NoYW5nZWQsIElNb2R1bGVbXSBhZGRlZCwgSU1vZHVsZVtdIGNoYW5nZWQsIElNb2R1bGVbXSByZW1vdmVkKSB7CgkJdGhpcy5tb2R1bGUgPSBtb2R1bGU7CgkJdGhpcy5pc0NoYW5nZWQgPSBpc0NoYW5nZWQ7CgkJdGhpcy5hZGRlZCA9IGFkZGVkOwoJCXRoaXMuY2hhbmdlZCA9IGNoYW5nZWQ7CgkJdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDsKCX0KCgkvKioKCSAqIFJldHVybnMgdGhlIG1vZHVsZSB0aGF0IGhhcyBiZWVuIGNoYW5nZWQuCgkgKgoJICogQHJldHVybiB0aGUgbW9kdWxlCgkgKi8KCXB1YmxpYyBJTW9kdWxlIGdldE1vZHVsZSgpIHsKCQlyZXR1cm4gbW9kdWxlOwoJfQoKCS8qKgoJICogUmV0dXJucyB0cnVlIGlmIHRoaXMgbW9kdWxlJ3Mgc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkLgoJICogCgkgKiBAcmV0dXJuIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gaXNDaGFuZ2VkKCkgewoJCXJldHVybiBpc0NoYW5nZWQ7Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIGFueSBjaGlsZCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgoJICogCgkgKiBAcmV0dXJuIHRoZSBhZGRlZCBjaGlsZCBtb2R1bGVzLCBvciBudWxsIGlmIG5vIG1vZHVsZXMgaGF2ZSBiZWVuIGFkZGVkCgkgKi8KCXB1YmxpYyBJTW9kdWxlW10gZ2V0QWRkZWRDaGlsZE1vZHVsZXMoKSB7CgkJcmV0dXJuIGFkZGVkOwoJfQoKCS8qKgoJICogUmV0dXJucyBhbnkgY2hpbGQgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkLgoJICogCgkgKiBAcmV0dXJuIHRoZSBjaGFuZ2VkIGNoaWxkIG1vZHVsZXMsIG9yIG51bGwgaWYgbm8gbW9kdWxlcyBoYXZlIGJlZW4gY2hhbmdlZAoJICovCglwdWJsaWMgSU1vZHVsZVtdIGdldENoYW5nZWRDaGlsZE1vZHVsZXMoKSB7CgkJcmV0dXJuIGNoYW5nZWQ7Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIGFueSBjaGlsZCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQuCgkgKiAKCSAqIEByZXR1cm4gdGhlIHJlbW92ZWQgY2hpbGQgbW9kdWxlcywgb3IgbnVsbCBpZiBubyBtb2R1bGVzIGhhdmUgYmVlbiByZW1vdmVkCgkgKi8KCXB1YmxpYyBJTW9kdWxlW10gZ2V0UmVtb3ZlZENoaWxkTW9kdWxlcygpIHsKCQlyZXR1cm4gcmVtb3ZlZDsKCX0KCgkvKioKCSAqIFJldHVybnMgdGhlIG1vZHVsZSBhcnRpZmFjdHMgdGhhdCBoYXZlIGNoYW5nZWQuCgkgKiAKCSAqIEByZXR1cm4gdGhlIGNoYW5nZWQgbW9kdWxlIGFydGlmYWN0cwoJICovCglwdWJsaWMgSU1vZHVsZUFydGlmYWN0W10gZ2V0Q2hhbmdlZEFydGlmYWN0cygpIHsKCQlyZXR1cm4gbnVsbDsKCX0KfQ==