LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQ2hhbmdlZCB0byB1c2UgZnlsMnhwMSBmb3IgdmFsdWVzIG5lYXIgMSwgPGRyZXBwZXJAY3lnbnVzLmNvbT4uCiAqLwoKI2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+CgpSQ1NJRCgiJE5ldEJTRDogZV9sb2cxMC5TLHYgMS40IDE5OTUvMDUvMDggMjM6NDk6MjQganRjIEV4cCAkIikKCiNpZmRlZiBfX0VMRl9fCgkuc2VjdGlvbiAucm9kYXRhCiNlbHNlCgkudGV4dAojZW5kaWYKCS5hbGlnbiBBTElHTkFSRyg0KQoJQVNNX1RZUEVfRElSRUNUSVZFKG9uZSxAb2JqZWN0KQpvbmU6CS5kb3VibGUgMS4wCglBU01fU0laRV9ESVJFQ1RJVkUob25lKQoJLyogSXQgaXMgbm90IGltcG9ydGFudCB0aGF0IHRoaXMgY29uc3RhbnQgaXMgcHJlY2lzZS4gIEl0IGlzIG9ubHkKCSAgIGEgdmFsdWUgd2hpY2ggaXMga25vd24gdG8gYmUgb24gdGhlIHNhZmUgc2lkZSBmb3IgdXNpbmcgdGhlCgkgICBmeWwyeHAxIGluc3RydWN0aW9uLiAgKi8KCUFTTV9UWVBFX0RJUkVDVElWRShsaW1pdCxAb2JqZWN0KQpsaW1pdDoJLmRvdWJsZSAwLjI5CglBU01fU0laRV9ESVJFQ1RJVkUobGltaXQpCgoKI2lmZGVmIFBJQwojZGVmaW5lIE1PKG9wKSBvcCMjQEdPVE9GRiglZWR4KQojZWxzZQojZGVmaW5lIE1PKG9wKSBvcAojZW5kaWYKCgkudGV4dApFTlRSWShfX2llZWU3NTRfbG9nMTApCglmbGRsZzIJCQkvLyBsb2cxMCgyKQoJZmxkbAk0KCVlc3ApCQkvLyB4IDogbG9nMTAoMikKI2lmZGVmIFBJQwoJTE9BRF9QSUNfUkVHIChkeCkKI2VuZGlmCglmeGFtCglmbnN0c3cKCWZsZAklc3QJCS8vIHggOiB4IDogbG9nMTAoMikKCXNhaGYKCWpjCTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKNDoJZnN1YmwJTU8ob25lKQkJLy8geC0xIDogeCA6IGxvZzEwKDIpCglmbGQJJXN0CQkvLyB4LTEgOiB4LTEgOiB4IDogbG9nMTAoMikKCWZhYnMJCQkvLyB8eC0xfCA6IHgtMSA6IHggOiBsb2cxMCgyKQoJZmNvbXBsCU1PKGxpbWl0KQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWZuc3RzdwkJCS8vIHgtMSA6IHggOiBsb2cxMCgyKQoJYW5kYgkkMHg0NSwgJWFoCglqegkyZgoJZnN0cAklc3QoMSkJCS8vIHgtMSA6IGxvZzEwKDIpCglmeWwyeHAxCQkJLy8gbG9nMTAoeCkKCXJldAoKMjoJZnN0cAklc3QoMCkJCS8vIHggOiBsb2cxMCgyKQoJZnlsMngJCQkvLyBsb2cxMCh4KQoJcmV0CgozOglqcAk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CkVORCAoX19pZWVlNzU0X2xvZzEwKQo=