ZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9iaW5kZXIvbGlibG9nL2xvZ2Rfd3JpdGUuYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9iaW5kZXIvbGlibG9nL2xvZ2Rfd3JpdGUuYwppbmRleCA4ZTg2MjcwLi44NDgzMDI0IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvYmluZGVyL2xpYmxvZy9sb2dkX3dyaXRlLmMKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL2JpbmRlci9saWJsb2cvbG9nZF93cml0ZS5jCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgImZha2VfbG9nX2RldmljZS5oIgogI2VuZGlmCiAKKy8qY3oubGkgYWRkIG9uIDIwMjQvNy84IGZvciBjb250cm9sIFJMT0dEIHN0YXJ0Ki8KK2ludCBzeXNfbG9nX2xldmxlID0gMTsKK2ludCBwcmludF9sb2dfbGV2ZWwgPSAxOworLypjei5saSBhZGQgb24gMjAyNC83LzggZm9yIGNvbnRyb2wgUkxPR0QgZW5kKi8KIC8vPz+oqD8/qKRvPz+otKHBP6i6ocA/PwogbG9uZyBsb25nIGludCBnZXRfdGltZV91cygpCiB7CkBAIC0xNTgsMTEgKzE2MiwxMSBAQAogCQkJCWJyZWFrOwogCQl9CiAJfQotCi0JaWYgKHByaW8gPj0gQU5EUk9JRF9MT0dfREVCVUcgJiYgQU5EUk9JRF9MT0dfRVJST1IgPj0gcHJpbykgeworLypjei5saSBhZGQgb24gMjAyNC83LzggZm9yIGNvbnRyb2wgUkxPR0Qgc3RhcnQqLworCWlmIChwcmlvID49IEFORFJPSURfTE9HX0RFQlVHICYmIEFORFJPSURfTE9HX0VSUk9SID49IHByaW8gJiYgcHJpbyA+PSBwcmludF9sb2dfbGV2ZWwpIHsKIAkJcHV0X3RvX2NvbnNvbGUobW9kLCBmbXQsIGFyZyk7CiAJfQotCisvKmN6LmxpIGFkZCBvbiAyMDI0LzcvOCBmb3IgY29udHJvbCBSTE9HRCBlbmQqLwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTQ0MCw3ICs0NDQsMzkgQEAKICAgICByZXR1cm4gTE9HX05BTUVbbG9nX2lkXTsKIH0KICNlbmRpZgotaW50IHN5c19sb2dfbGV2bGUgPSA0OworLypjei5saSBhZGQgb24gMjAyNS8xLzMgZm9yIGNvbnRyb2wgbG9nX2xldmVsIHN0YXJ0Ki8KK2ludCBsb2dfbGV2ZWwoY2hhciAqbGV2ZWxfbmFtZSkKK3sKKyAgICBjaGFyIG52X2xldmVsWzEwXTsKKyAgICBjaGFyIGJ1ZmZlclszMl07CisgICAgY2hhciBjbWRbMTI4XTsKKyAgICBpbnQgKmxldmVsID0gTlVMTDsKKyAgICBzcHJpbnRmKGNtZCwgIm52IHNob3cgfCBncmVwICVzIixsZXZlbF9uYW1lKTsKKyAgICBGSUxFICpvdXRwdXQgPSBwb3BlbihjbWQsICJyIik7CisgICAgd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIG91dHB1dCkgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIGNoYXIgKmVxdWFsX3NpZ24gPSBzdHJjaHIoYnVmZmVyLCAnPScpOworICAgICAgICBzdHJuY3B5KG52X2xldmVsLGVxdWFsX3NpZ24gKyAxLDEpOworICAgIH0KKyAgICBwY2xvc2Uob3V0cHV0KTsKKyAgICBudl9sZXZlbFtzaXplb2YobnZfbGV2ZWwpLTFdID0gJ1wwJzsKKyAgICBpZiAoc3RyY21wKGxldmVsX25hbWUsInN5c2xvZ19sZXZlbCIpID09IDApCisgICAgICAgIGxldmVsID0gJnN5c19sb2dfbGV2bGU7CisgICAgZWxzZSBpZiAoc3RyY21wKGxldmVsX25hbWUsInByaW50X2xldmVsIikgPT0gMCkKKyAgICAgICAgbGV2ZWwgPSAmcHJpbnRfbG9nX2xldmVsOworICAgICpsZXZlbCA9IGF0b2kobnZfbGV2ZWwpOworICAgIGlmKCpsZXZlbCA9PSBTTE9HX0RFQlVHKQorICAgICAgICAqbGV2ZWwgPSBBTkRST0lEX0xPR19ERUJVRzsKKyAgICBlbHNlIGlmKCpsZXZlbCA9PSBTTE9HX05PUk1BTCkKKyAgICAgICAgKmxldmVsID0gQU5EUk9JRF9MT0dfSU5GTzsKKyAgICBlbHNlIGlmKCpsZXZlbCA9PSBTTE9HX0VSUikKKyAgICAgICAgKmxldmVsID0gQU5EUk9JRF9MT0dfRVJST1I7CisgICAgZWxzZSBpZigqbGV2ZWw9PSBTTE9HX09GRikKKyAgICAgICAgKmxldmVsID0gQU5EUk9JRF9MT0dfU0lMRU5UOworICAgIGVsc2UKKyAgICAgICAgKmxldmVsID0gQU5EUk9JRF9MT0dfSU5GTzsKK30KKy8qY3oubGkgYWRkIG9uIDIwMjUvMS8zIGZvciBjb250cm9sIGxvZ19sZXZlbCBlbmQqLwogc3RhdGljIGludCBfX3dyaXRlX3RvX2xvZ19pbml0KGxvZ19pZF90IGxvZ19pZCwgc3RydWN0IGlvdmVjICp2ZWMsIHNpemVfdCBucikKIHsKICNpZmRlZiBIQVZFX1BUSFJFQURTCkBAIC00NjcsMzYgKzUwMyw4IEBACiAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmxvZ19pbml0X2xvY2spOwogI2VuZGlmCiAvKmN6LmxpIGFkZCBvbiAyMDI0LzcvOCBmb3IgY29udHJvbCBSTE9HRCBzdGFydCovICAgIAotICAgIGNoYXIgbnZfc3lzbG9nX2xldmVsWzEwXTsKLSAgICBjaGFyIGJ1ZmZlclszMl07Ci0gICAgRklMRSAqb3V0cHV0ID0gcG9wZW4oIm52IHNob3cgfCBncmVwIHN5c2xvZ19sZXZlbCIsICJyIik7Ci0gICAgd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIG91dHB1dCkgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIGNoYXIgKmVxdWFsX3NpZ24gPSBzdHJjaHIoYnVmZmVyLCAnPScpOwotICAgICAgICBzdHJuY3B5KG52X3N5c2xvZ19sZXZlbCxlcXVhbF9zaWduICsgMSwxKTsKLSAgICB9Ci0gICAgcGNsb3NlKG91dHB1dCk7Ci0gICAgc3lzX2xvZ19sZXZsZSA9IGF0b2kobnZfc3lzbG9nX2xldmVsKTsKLSAgICBpZihzeXNfbG9nX2xldmxlID09IFNMT0dfREVCVUcpCi0gICAgewotICAgICAgICBzeXNfbG9nX2xldmxlID0gQU5EUk9JRF9MT0dfREVCVUc7Ci0gICAgfQotICAgIGVsc2UgaWYoc3lzX2xvZ19sZXZsZSA9PSBTTE9HX05PUk1BTCkKLSAgICB7Ci0gICAgICAgIHN5c19sb2dfbGV2bGUgPSBBTkRST0lEX0xPR19JTkZPOwotICAgIH0KLSAgICBlbHNlIGlmKHN5c19sb2dfbGV2bGUgPT0gU0xPR19FUlIpCi0gICAgewotICAgICAgICBzeXNfbG9nX2xldmxlID0gQU5EUk9JRF9MT0dfRVJST1I7Ci0gICAgfQotICAgIGVsc2UgaWYoc3lzX2xvZ19sZXZsZSA9PSBTTE9HX09GRikKLSAgICB7Ci0gICAgICAgIHN5c19sb2dfbGV2bGUgPSBBTkRST0lEX0xPR19TSUxFTlQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHN5c19sb2dfbGV2bGUgPSBBTkRST0lEX0xPR19JTkZPOwotICAgIH0KKyAgICBsb2dfbGV2ZWwoInN5c2xvZ19sZXZlbCIpOworICAgIGxvZ19sZXZlbCgicHJpbnRfbGV2ZWwiKTsKIC8qY3oubGkgYWRkIG9uIDIwMjQvNy84IGZvciBjb250cm9sIFJMT0dEIGVuZCovCiAgICAgcmV0dXJuIHdyaXRlX3RvX2xvZyhsb2dfaWQsIHZlYywgbnIpOwogfQo=