LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAKICogRmlsZW5hbWU6ICAgICAgaXJkYS5oCiAqIFZlcnNpb246ICAgICAgIDEuMAogKiBEZXNjcmlwdGlvbjogICBJckRBIGNvbW1vbiBpbmNsdWRlIGZpbGUgZm9yIGtlcm5lbCBpbnRlcm5hbCB1c2UKICogU3RhdHVzOiAgICAgICAgU3RhYmxlCiAqIEF1dGhvcjogICAgICAgIERhZyBCcmF0dGxpIDxkYWdiQGNzLnVpdC5ubz4KICogQ3JlYXRlZCBhdDogICAgVHVlIERlYyAgOSAyMToxMzoxMiAxOTk3CiAqIE1vZGlmaWVkIGF0OiAgIEZyaSBKYW4gMjggMTM6MTY6MzIgMjAwMAogKiBNb2RpZmllZCBieTogICBEYWcgQnJhdHRsaSA8ZGFnYkBjcy51aXQubm8+CiAqIAogKiAgICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAgRGFnIEJyYXR0bGksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqICAgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBKZWFuIFRvdXJyaWxoZXMgPGp0QGhwbC5ocC5jb20+CiAqICAgICAgCiAqICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIAogKiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgCiAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiAKICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKiAgCiAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCiAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcyAKICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICogICAgIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZuZGVmIE5FVF9JUkRBX0gKI2RlZmluZSBORVRfSVJEQV9ICgojaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CiNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4JCS8qIHN0cnVjdCBza19idWZmICovCiNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KI2luY2x1ZGUgPGxpbnV4L2lmLmg+CQkJLyogc2FfZmFtaWx5X3QgaW4gPGxpbnV4L2lyZGEuaD4gKi8KI2luY2x1ZGUgPGxpbnV4L2lyZGEuaD4KCnR5cGVkZWYgX191MzIgbWFnaWNfdDsKCiNpZm5kZWYgVFJVRQojZGVmaW5lIFRSVUUgMQojZW5kaWYKCiNpZm5kZWYgRkFMU0UgCiNkZWZpbmUgRkFMU0UgMAojZW5kaWYKCi8qIEhhY2sgdG8gZG8gc21hbGwgYmFja29mZiB3aGVuIHNldHRpbmcgbWVkaWEgYnVzeSBpbiBJckxBUCAqLwojaWZuZGVmIFNNQUxMCiNkZWZpbmUgU01BTEwgNQojZW5kaWYKCiNpZm5kZWYgSVJEQV9NSU4gLyogTGV0cyBub3QgbWl4IHRoaXMgTUlOIHdpdGggb3RoZXIgaGVhZGVyIGZpbGVzICovCiNkZWZpbmUgSVJEQV9NSU4oYSwgYikgKCgoYSkgPCAoYikpID8gKGEpIDogKGIpKQojZW5kaWYKCiNpZm5kZWYgSVJEQV9BTElHTgojICBkZWZpbmUgSVJEQV9BTElHTiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKSkKI2VuZGlmCiNpZm5kZWYgSVJEQV9QQUNLCiMgIGRlZmluZSBJUkRBX1BBQ0sgX19hdHRyaWJ1dGVfXygocGFja2VkKSkKI2VuZGlmCgoKI2lmZGVmIENPTkZJR19JUkRBX0RFQlVHCgpleHRlcm4gdW5zaWduZWQgaW50IGlyZGFfZGVidWc7CgovKiB1c2UgMCBmb3IgcHJvZHVjdGlvbiwgMSBmb3IgdmVyaWZpY2F0aW9uLCA+MiBmb3IgZGVidWcgKi8KI2RlZmluZSBJUkRBX0RFQlVHX0xFVkVMIDAKCiNkZWZpbmUgSVJEQV9ERUJVRyhuLCBhcmdzLi4uKSBcCmRvIHsJaWYgKGlyZGFfZGVidWcgPj0gKG4pKSBcCgkJcHJpbnRrKEtFUk5fREVCVUcgYXJncyk7IFwKfSB3aGlsZSAoMCkKI2RlZmluZSBJUkRBX0FTU0VSVChleHByLCBmdW5jKSBcCmRvIHsgaWYoIShleHByKSkgeyBcCglwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlczolczolZCAlc1xuIiwgXAoJCV9fRklMRV9fLF9fRlVOQ1RJT05fXyxfX0xJTkVfXywoI2V4cHIpICk7IFwKCWZ1bmMgfSB9IHdoaWxlICgwKQojZGVmaW5lIElSREFfQVNTRVJUX0xBQkVMKGxhYmVsKQlsYWJlbAojZWxzZQojZGVmaW5lIElSREFfREVCVUcobiwgYXJncy4uLikgZG8geyB9IHdoaWxlICgwKQojZGVmaW5lIElSREFfQVNTRVJUKGV4cHIsIGZ1bmMpIGRvIHsgKHZvaWQpKGV4cHIpOyB9IHdoaWxlICgwKQojZGVmaW5lIElSREFfQVNTRVJUX0xBQkVMKGxhYmVsKQojZW5kaWYgLyogQ09ORklHX0lSREFfREVCVUcgKi8KCiNkZWZpbmUgSVJEQV9XQVJOSU5HKGFyZ3MuLi4pIHByaW50ayhLRVJOX1dBUk5JTkcgYXJncykKI2RlZmluZSBJUkRBX01FU1NBR0UoYXJncy4uLikgcHJpbnRrKEtFUk5fSU5GTyBhcmdzKQojZGVmaW5lIElSREFfRVJST1IoYXJncy4uLikgICBwcmludGsoS0VSTl9FUlIgYXJncykKCi8qCiAqICBNYWdpYyBudW1iZXJzIHVzZWQgYnkgTGludXgtSXJEQS4gUmFuZG9tIG51bWJlcnMgd2hpY2ggbXVzdCBiZSB1bmlxdWUgdG8gCiAqICBnaXZlIHRoZSBiZXN0IHByb3RlY3Rpb24KICovCgojZGVmaW5lIElSVFRZX01BR0lDICAgICAgICAweDIzNTcKI2RlZmluZSBMQVBfTUFHSUMgICAgICAgICAgMHgxMzU3CiNkZWZpbmUgTE1QX01BR0lDICAgICAgICAgIDB4NDMyMQojZGVmaW5lIExNUF9MU0FQX01BR0lDICAgICAweDY5MzMzCiNkZWZpbmUgTE1QX0xBUF9NQUdJQyAgICAgIDB4MzQzMgojZGVmaW5lIElSREFfREVWSUNFX01BR0lDICAweDYzNDU0CiNkZWZpbmUgSUFTX01BR0lDICAgICAgICAgIDB4MDA3CiNkZWZpbmUgVFRQX01BR0lDICAgICAgICAgIDB4MjQxMTY5CiNkZWZpbmUgVFRQX1RTQVBfTUFHSUMgICAgIDB4NDM0NQojZGVmaW5lIElST0JFWF9NQUdJQyAgICAgICAweDM0MTMyNAojZGVmaW5lIEhCX01BR0lDICAgICAgICAgICAweDY0NTM0CiNkZWZpbmUgSVJMQU5fTUFHSUMgICAgICAgIDB4NzU0CiNkZWZpbmUgSUFTX09CSkVDVF9NQUdJQyAgIDB4MzQyMzQKI2RlZmluZSBJQVNfQVRUUklCX01BR0lDICAgMHg0NTIzMgojZGVmaW5lIElSREFfVEFTS19NQUdJQyAgICAweDM4NDIzCgojZGVmaW5lIElBU19ERVZJQ0VfSUQgMHgwMDAwIC8qIERlZmluZWQgYnkgSXJEQSwgSXJMTVAgc2VjdGlvbiA0LjEgKHBhZ2UgNjgpICovCiNkZWZpbmUgSUFTX1BOUF9JRCAgICAweGQzNDIKI2RlZmluZSBJQVNfT0JFWF9JRCAgIDB4MzQzMjMKI2RlZmluZSBJQVNfSVJMQU5fSUQgIDB4MzQyMzQKI2RlZmluZSBJQVNfSVJDT01NX0lEIDB4MjM0MwojZGVmaW5lIElBU19JUkxQVF9JRCAgMHg5ODc2CgojZW5kaWYgLyogTkVUX0lSREFfSCAqLwo=