LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAqgKiAKICogQ29udHJpYnV0b3JzOgogKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbDsKCmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUubW9kZWwuSU1vZHVsZUZvbGRlcjsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlUmVzb3VyY2U7Ci8qKgogKiAKICogQHNpbmNlIDEuMAogKi8KcHVibGljIGNsYXNzIE1vZHVsZUZvbGRlciBpbXBsZW1lbnRzIElNb2R1bGVGb2xkZXIgewoJcHJvdGVjdGVkIFN0cmluZyBuYW1lOwoJcHJvdGVjdGVkIElQYXRoIHBhdGg7Cglwcm90ZWN0ZWQgSU1vZHVsZVJlc291cmNlW10gbWVtYmVyczsKCQoJcHVibGljIE1vZHVsZUZvbGRlcihTdHJpbmcgbmFtZSwgSVBhdGggcGF0aCkgewoJCXRoaXMubmFtZSA9IG5hbWU7CgkJdGhpcy5wYXRoID0gcGF0aDsKCX0KCQoJcHVibGljIHZvaWQgc2V0TWVtYmVycyhJTW9kdWxlUmVzb3VyY2VbXSBtZW1iZXJzKSB7CgkJdGhpcy5tZW1iZXJzID0gbWVtYmVyczsKCX0KCgkvKiAobm9uLUphdmFkb2MpCgkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlUmVzb3VyY2UjZ2V0TW9kdWxlUmVsYXRpdmVQYXRoKCkKCSAqLwoJcHVibGljIElQYXRoIGdldE1vZHVsZVJlbGF0aXZlUGF0aCgpIHsKCQlyZXR1cm4gcGF0aDsKCX0KCgkvKiAobm9uLUphdmFkb2MpCgkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlUmVzb3VyY2UjZ2V0TmFtZSgpCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKCQlyZXR1cm4gbmFtZTsKCX0KCgkvKiAobm9uLUphdmFkb2MpCgkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlRm9sZGVyI21lbWJlcnMoKQoJICovCglwdWJsaWMgSU1vZHVsZVJlc291cmNlW10gbWVtYmVycygpIHsKCQlyZXR1cm4gbWVtYmVyczsKCX0KCQoJcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKCQlpZiAoIShvYmogaW5zdGFuY2VvZiBNb2R1bGVGb2xkZXIpKQoJCQlyZXR1cm4gZmFsc2U7CgkJCgkJTW9kdWxlRm9sZGVyIG1mID0gKE1vZHVsZUZvbGRlcikgb2JqOwoJCWlmICghbmFtZS5lcXVhbHMobWYubmFtZSkpCgkJCXJldHVybiBmYWxzZTsKCQlpZiAoIXBhdGguZXF1YWxzKG1mLnBhdGgpKQoJCQlyZXR1cm4gZmFsc2U7CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKCQlyZXR1cm4gIk1vZHVsZUZvbGRlciBbIiArIG5hbWUgKyAiLCAiICsgcGF0aCArICJdIjsKCX0KfQ==