LyoqDQogKiBUaGlzIGZpbGUgaGFzIG5vIGNvcHlyaWdodCBhc3NpZ25lZCBhbmQgaXMgcGxhY2VkIGluIHRoZSBQdWJsaWMgRG9tYWluLg0KICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHc2NCBtaW5ndy1ydW50aW1lIHBhY2thZ2UuDQogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUiB3aXRoaW4gdGhpcyBwYWNrYWdlLg0KICovDQoJLmZpbGUJImxvZzIuUyINCgkudGV4dA0KCS5hbGlnbiA0DQpvbmU6CS5kb3VibGUgMS4wDQoJLyogSXQgaXMgbm90IGltcG9ydGFudCB0aGF0IHRoaXMgY29uc3RhbnQgaXMgcHJlY2lzZS4gIEl0IGlzIG9ubHkNCgkgICBhIHZhbHVlIHdoaWNoIGlzIGtub3duIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgZm9yIHVzaW5nIHRoZQ0KCSAgIGZ5bDJ4cDEgaW5zdHJ1Y3Rpb24uICAqLw0KbGltaXQ6CS5kb3VibGUgMC4yOQ0KDQoJLnRleHQNCgkuYWxpZ24gNA0KLmdsb2JsIF9sb2cyDQoJLmRlZglfbG9nMjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmDQpfbG9nMjoNCgltb3ZzZAkleG1tMCwtMTYoJXJzcCkNCglmbGRsCW9uZQ0KCWZsZGwJLTE2KCVyc3ApCQkvLyB4IDogMQ0KCWZ4YW0NCglmbnN0c3cNCglmbGQJJXN0CQkvLyB4IDogeCA6IDENCglzYWhmDQoJamMJM2YJCS8vIGluIGNhc2UgeCBpcyBOYU4gb3IgsUluZg0KNDoJZnN1Ygklc3QoMiksICVzdAkvLyB4LTEgOiB4IDogMQ0KCWZsZAklc3QJCS8vIHgtMSA6IHgtMSA6IHggOiAxDQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IDENCglmY29tcGwJbGltaXQJCS8vIHgtMSA6IHggOiAxDQoJZm5zdHN3CQkJLy8geC0xIDogeCA6IDENCglhbmRiCSQweDQ1LCAlYWgNCglqegkyZg0KCWZzdHAJJXN0KDEpCQkvLyB4LTEgOiAxDQoJZnlsMnhwMQkJCS8vIGxvZyh4KQ0KCWZzdHBsCS0xNiglcnNwKQ0KCW1vdnNkCS0xNiglcnNwKSwleG1tMA0KCXJldA0KDQoyOglmc3RwCSVzdCgwKQkJLy8geCA6IDENCglmeWwyeAkJCS8vIGxvZyh4KQ0KCWZzdHBsCS0xNiglcnNwKQ0KCW1vdnNkCS0xNiglcnNwKSwleG1tMA0KCXJldA0KDQozOglqcAk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYNCglmc3RwCSVzdCgxKQ0KCWZzdHAJJXN0KDEpDQoJZnN0cGwJLTE2KCVyc3ApDQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wDQoJcmV0DQo=