LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDggQW5kcmFzIFNjaG1pZHQsIEFuZHJhcyBCYWxvZ2gsIElzdHZhbiBSYXRoIGFuZCBEYW5pZWwgVmFycm8KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKICoKICogQ29udHJpYnV0b3JzOgogKiAgICBBbmRyYXMgU2NobWlkdCwgQW5kcmFzIEJhbG9naCwgSXN0dmFuIFJhdGggLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpwYWNrYWdlIG9yZy5lY2xpcHNlLnZpYXRyYTIuY29yZS5ub3RpZmljYXRpb247CgppbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CgppbXBvcnQgb3JnLmVjbGlwc2UudmlhdHJhMi5jb3JlLklDb3JlTm90aWZpY2F0aW9uTGlzdGVuZXI7CmltcG9ydCBvcmcuZWNsaXBzZS52aWF0cmEyLmNvcmUuSU1vZGVsRWxlbWVudDsKCi8qKgogKiBUaGlzIGlzIGFuIGludGVyZmFjZSBvZiBhIG5vdGlmaWNhdGlvbiBvYmplY3QuIEEgbm90aWZpY2F0aW9uIG9iamVjdCBpcyBzZW50LAogKiB3aGVuZXZlciB0aGUgbW9kZWxzcGFjZSBjaGFuZ2VzLiBJdCBjb250YWlucyBzdHJpbmcgY29uc3RhbnRzIHdoaWNoIGlkZW50aWZ5CiAqIHRoZSB2YXJpb3VzIG5vdGlmaWNhdGlvbiB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhlIFZpYXRyYSBDb3JlLCBhcyB3ZWxsIGFzIHNvbWUKICogdXRpbGl0eSBnZXR0ZXIgZnVuY3Rpb25zLgogKiAKICogQGF1dGhvciBBbmRyYXMgU2NobWlkdAogKiAKICogICAgICAgICBNb2RpZmllZCBvbiAyMDA2LjA4LjA4IGJ5IElzdHZhbiBSYXRoOiAtIGFkZGVkIHRyYW5zYWN0aW9uLXNwZWNpZmljCiAqICAgICAgICAgSUQncyAoVEEgcHJlZml4KSAtIGNsZWFuZWQgdXAgamF2YWRvYwogKiAgICAgICAgIE1vZGlmaWVkIG9uIDIwMTEuMDYuMTAgYnkgwWJlbCBIZWdlZPxzOiAtIGNoYW5nZWQgdG8gdXNlIGVudW0KICovCnB1YmxpYyBpbnRlcmZhY2UgSUNvcmVOb3RpZmljYXRpb25PYmplY3QgewoJCgkvKioKCSAqIENvbnZlcnRzIHRoaXMgbm90aWZpY2F0aW9uIHRvIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgoJICovCglwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCk7CgoJLyoqCgkgKiBHZXQgdGhlIHR5cGUgb2YgdGhpcyBhY3Rpb24uIFRoZSByZXR1cm5lZCBzdHJpbmcgY29uc3RhbnQgd2lsbCBhbHdheXMgYmUKCSAqIG9uZSBvZiB0aGUgdHlwZXMgZGVmaW5lZCBpbiB0aGUgaW50ZXJmYWNlLgoJICovCglwdWJsaWMgU3RyaW5nIGdldEFjdGlvblR5cGUoKTsKCgkvKioKCSAqIEdldCB0aGUgdHlwZSBvZiB0aGlzIGFjdGlvbi4KCSAqIAoJICogQHJldHVybiB0eXBlIGRlZmluZWQgYnkgdGhlIGludGVyZmFjZQoJICovCglwdWJsaWMgTm90aWZpY2F0aW9uVHlwZSBnZXRBY3Rpb25UeXBlRW51bSgpOwoJCgkvKioKCSAqIEdldCB0aGUgb2JqZWN0cyByZWNlaXZpbmcgdGhpcyBub3RpZmljYXRpb24gaW5zdGFuY2UuCgkgKi8KCXB1YmxpYyBDb2xsZWN0aW9uPElDb3JlTm90aWZpY2F0aW9uTGlzdGVuZXI+IGdldExpc3RlbmVycygpOwoKCS8qKgoJICogR2V0IGEgY29sbGVjdGlvbiBvZiBtb2RlbCBlbGVtZW50cyB3aGljaCB3ZXJlIGludm9sdmVkIGluIHRoZQoJICogbW9kaWZpY2F0aW9uIHdoaWNoIHRoaXMgbm90aWZpY2F0aW9uIG9iamVjdCBpcyBzaWduYWxsaW5nLgoJICovCglwdWJsaWMgQ29sbGVjdGlvbjxJTW9kZWxFbGVtZW50PiBnZXROb3RpZmllZE9iamVjdHMoKTsKfQo=