LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQWRhcHRlZCBmb3IgYGxvbmcgZG91YmxlJyBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPi4KICoKICogQ2hhbmdlZCB0byB1c2UgZnlsMnhwMSBmb3IgdmFsdWVzIG5lYXIgMSwgPGRyZXBwZXJAY3lnbnVzLmNvbT4uCiAqLwoKI2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+CgpSQ1NJRCgiJE5ldEJTRDogJCIpCgojaWZkZWYgX19FTEZfXwoJLnNlY3Rpb24gLnJvZGF0YQojZWxzZQoJLnRleHQKI2VuZGlmCgkuYWxpZ24gQUxJR05BUkcoNCkKCUFTTV9UWVBFX0RJUkVDVElWRShvbmUsQG9iamVjdCkKb25lOgkuZG91YmxlIDEuMAoJQVNNX1NJWkVfRElSRUNUSVZFKG9uZSkKCS8qIEl0IGlzIG5vdCBpbXBvcnRhbnQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIHByZWNpc2UuICBJdCBpcyBvbmx5CgkgICBhIHZhbHVlIHdoaWNoIGlzIGtub3duIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgZm9yIHVzaW5nIHRoZQoJICAgZnlsMnhwMSBpbnN0cnVjdGlvbi4gICovCglBU01fVFlQRV9ESVJFQ1RJVkUobGltaXQsQG9iamVjdCkKbGltaXQ6CS5kb3VibGUgMC4yOQoJQVNNX1NJWkVfRElSRUNUSVZFKGxpbWl0KQoKCiNpZmRlZiBQSUMKI2RlZmluZSBNTyhvcCkgb3AjI0BHT1RPRkYoJWVkeCkKI2Vsc2UKI2RlZmluZSBNTyhvcCkgb3AKI2VuZGlmCgoJLnRleHQKRU5UUlkoX19pZWVlNzU0X2xvZzEwbCkKCWZsZGxnMgkJCS8vIGxvZzEwKDIpCglmbGR0CTQoJWVzcCkJCS8vIHggOiBsb2cxMCgyKQojaWZkZWYgUElDCglMT0FEX1BJQ19SRUcgKGR4KQojZW5kaWYKCWZ4YW0KCWZuc3RzdwoJZmxkCSVzdAkJLy8geCA6IHggOiBsb2cxMCgyKQoJc2FoZgoJamMJM2YJCS8vIGluIGNhc2UgeCBpcyBOYU4gb3IgsUluZgo0Oglmc3VibAlNTyhvbmUpCQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWZsZAklc3QJCS8vIHgtMSA6IHgtMSA6IHggOiBsb2cxMCgyKQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IGxvZzEwKDIpCglmY29tcGwJTU8obGltaXQpCS8vIHgtMSA6IHggOiBsb2cxMCgyKQoJZm5zdHN3CQkJLy8geC0xIDogeCA6IGxvZzEwKDIpCglhbmRiCSQweDQ1LCAlYWgKCWp6CTJmCglmc3RwCSVzdCgxKQkJLy8geC0xIDogbG9nMTAoMikKCWZ5bDJ4cDEJCQkvLyBsb2cxMCh4KQoJcmV0CgoyOglmc3RwCSVzdCgwKQkJLy8geCA6IGxvZzEwKDIpCglmeWwyeAkJCS8vIGxvZzEwKHgpCglyZXQKCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglyZXQKRU5EKF9faWVlZTc1NF9sb2cxMGwpCg==