LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQWRhcHRlZCBmb3IgYGxvbmcgZG91YmxlJyBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPi4KICovCgojaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KClJDU0lEKCIkTmV0QlNEOiBzX2xvZzFwLlMsdiAxLjcgMTk5NS8wNS8wOSAwMDoxMDo1OCBqdGMgRXhwICQiKQoKCS5zZWN0aW9uIC5yb2RhdGEKCgkuYWxpZ24gQUxJR05BUkcoNCkKCS8qIFRoZSBmeWwyeHAxIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHZhbHVlcyBpbgoJCS0xICsgc3FydCgyKSAvIDIgPD0geCA8PSAxIC0gc3FydCgyKSAvIDIKCSAgIDAuMjkgaXMgYSBzYWZlIHZhbHVlLgoJKi8KbGltaXQ6CS50ZmxvYXQgMC4yOQoJLyogUGxlYXNlIG5vdGU6CSB3ZSB1c2UgYSBkb3VibGUgdmFsdWUgaGVyZS4gIFNpbmNlIDEuMCBoYXMKCSAgIGFuIGV4YWN0IHJlcHJlc2VudGF0aW9uIHRoaXMgZG9lcyBub3QgZWZmZWN0IHRoZSBhY2N1cmFjeQoJICAgYnV0IGl0IGhlbHBzIHRvIG9wdGltaXplIHRoZSBjb2RlLiAgKi8Kb25lOgkuZG91YmxlIDEuMAoKLyoKICogVXNlIHRoZSBmeWwyeHAxIGZ1bmN0aW9uIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGluIHRoZSByYW5nZSAtMC4yOSB0byAwLjI5LAogKiBvdGhlcndpc2UgZnlsMnggd2l0aCB0aGUgbmVlZGVkIGV4dHJhIGNvbXB1dGF0aW9uLgogKi8KCS50ZXh0CkVOVFJZKF9fbG9nMXBsKQoJZmxkbG4yCgoJZmxkdAk0KCVlc3ApCgojaWZkZWYgUElDCglMT0FEX1BJQ19SRUcgKGR4KQojZW5kaWYKCglmeGFtCglmbnN0c3cKCWZsZAklc3QKCXNhaGYKCWpjCTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKNDoKCWZhYnMKI2lmZGVmIFBJQwoJZmxkdAlsaW1pdEBHT1RPRkYoJWVkeCkKI2Vsc2UKCWZsZHQJbGltaXQKI2VuZGlmCglmY29tcHAKCWZuc3RzdwoJc2FoZgoJam5jCTJmCgojaWZkZWYgUElDCglmYWRkbAlvbmVAR09UT0ZGKCVlZHgpCiNlbHNlCglmYWRkbAlvbmUKI2VuZGlmCglmeWwyeAoJcmV0CgoyOglmeWwyeHAxCglyZXQKCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglyZXQKCkVORCAoX19sb2cxcGwpCndlYWtfYWxpYXMgKF9fbG9nMXBsLCBsb2cxcGwpCg==