LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuaW50ZXJuYWw7CgppbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7CmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklNb2R1bGU7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZVR5cGU7Ci8qKgogKiAKICovCnB1YmxpYyBjbGFzcyBEZWxldGVkTW9kdWxlIGltcGxlbWVudHMgSU1vZHVsZSB7Cglwcm90ZWN0ZWQgU3RyaW5nIGlkOwoJcHJvdGVjdGVkIFN0cmluZyBuYW1lOwoKCXB1YmxpYyBEZWxldGVkTW9kdWxlKFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKCQl0aGlzLmlkID0gaWQ7CgkJdGhpcy5uYW1lID0gbmFtZTsKCX0KCglwdWJsaWMgU3RyaW5nIGdldElkKCkgewoJCXJldHVybiBpZDsKCX0KCglwdWJsaWMgSVN0YXR1cyB2YWxpZGF0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHsKCQlyZXR1cm4gbnVsbDsKCX0KCglwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CgkJcmV0dXJuIG5hbWU7Cgl9CgoJcHVibGljIElNb2R1bGVUeXBlIGdldE1vZHVsZVR5cGUoKSB7CgkJcmV0dXJuIG51bGw7Cgl9CgoJcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKSB7CgkJcmV0dXJuIG51bGw7Cgl9CgoJcHVibGljIHZvaWQgYWRkTW9kdWxlTGlzdGVuZXIoSU1vZHVsZUxpc3RlbmVyIGxpc3RlbmVyKSB7CgkJLy8gaWdub3JlCgl9CgoJcHVibGljIHZvaWQgcmVtb3ZlTW9kdWxlTGlzdGVuZXIoSU1vZHVsZUxpc3RlbmVyIGxpc3RlbmVyKSB7CgkJLy8gaWdub3JlCgl9CgoJcHVibGljIElNb2R1bGVbXSBnZXRDaGlsZE1vZHVsZXMoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB7CgkJcmV0dXJuIG51bGw7Cgl9CgoJcHVibGljIE9iamVjdCBnZXRBZGFwdGVyKENsYXNzIGFkYXB0ZXIpIHsKCQlyZXR1cm4gbnVsbDsKCX0KCglwdWJsaWMgT2JqZWN0IGxvYWRBZGFwdGVyKENsYXNzIGFkYXB0ZXIsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgewoJCXJldHVybiBudWxsOwoJfQoKCXB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CgkJaWYgKCEob2JqIGluc3RhbmNlb2YgSU1vZHVsZSkpCgkJCXJldHVybiBmYWxzZTsKCQkJCgkJSU1vZHVsZSBtID0gKElNb2R1bGUpIG9iajsKCQlpZiAoIWdldElkKCkuZXF1YWxzKG0uZ2V0SWQoKSkpCgkJCXJldHVybiBmYWxzZTsKCQkJCgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKCQlyZXR1cm4gIkRlbGV0ZWRNb2R1bGVbIiArIG5hbWUgKyAiLCIgKyBpZCArICJdIjsKCX0KfQ==