ZGlmZiAtLWdpdCBhL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvY29uZmlnLm1rIGIvYm9vdC9jb21tb24vc3JjL2xvYWRlci9jb25maWcubWsKaW5kZXggNDU4YmI0Yy4uYmM4N2JhZiAxMDA3NTUKLS0tIGEvYm9vdC9jb21tb24vc3JjL2xvYWRlci9jb25maWcubWsKKysrIGIvYm9vdC9jb21tb24vc3JjL2xvYWRlci9jb25maWcubWsKQEAgLTczLDYgKzczLDEwIEBACiBQTEFURk9STV9DUFBGTEFHUys9IC1EQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMKIGVuZGlmCiAKK2lmZXEgKCQoc3RyaXAgJChib2FyZCkpLCQoZmlsdGVyICQoYm9hcmQpLHZlaGljbGVfZGNfcmVmKSkKK1BMQVRGT1JNX0NQUEZMQUdTKz0gLURDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYKK2VuZGlmCisKIGlmZGVmCUFSQ0gKIHNpbmNsdWRlICQoVE9QRElSKS8kKEFSQ0gpX2NvbmZpZy5tawkjIGluY2x1ZGUgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuZCBydWxlcwogZW5kaWYKZGlmZiAtLWdpdCBhL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvZHJpdmVycy9iYnQuYyBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvZHJpdmVycy9iYnQuYwppbmRleCBiZjQ2MjY2Li40NzFhODZmIDEwMDc1NQotLS0gYS9ib290L2NvbW1vbi9zcmMvbG9hZGVyL2RyaXZlcnMvYmJ0LmMKKysrIGIvYm9vdC9jb21tb24vc3JjL2xvYWRlci9kcml2ZXJzL2JidC5jCkBAIC01Niw3ICs1Niw3IEBACiAJdWludDMyX3QgYmxvY2tfc2l6ZSA9IGZsYXNoLmJsb2NrX3NpemU7CiAJdWludDhfdCBvb2JbMjU2XTsgICAvKiDV4sDvtqjS5dfutPO1xE9PQiBTSVpFICovCiAvLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCi0jaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQorI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYpCiAJdWludDMyX3QgYmxvY2tfbnVtcyA9IDcyOwogI2Vsc2UKIAl1aW50MzJfdCBibG9ja19udW1zID0gMTc7CmRpZmYgLS1naXQgYS9ib290L2NvbW1vbi9zcmMvbG9hZGVyL2RyaXZlcnMvaW1hZ2UuYyBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvZHJpdmVycy9pbWFnZS5jCmluZGV4IDg5MDNlMTQuLjA5YzI5NmEgMTAwNzU1Ci0tLSBhL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvZHJpdmVycy9pbWFnZS5jCisrKyBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvZHJpdmVycy9pbWFnZS5jCkBAIC0xMSw3ICsxMSw3IEBACiAKICNpbmNsdWRlICJmbGFzaC5oIgogI2luY2x1ZGUgPGJidC5oPgotCisjaW5jbHVkZSAicHViX2ZsYWdzLmgiCiAKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMTIsMTAgKzExMiwxMCBAQAogfQogCiAvLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCi0jaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQorI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYpCiBpbnQgcmVhZF9mbGFnc19pbWFnZSh1aW50OF90ICpuYW1lKQogewotICAgIFRfQk9PVF9GT1RBX0ZMQUcgKmZvdGFGbGFnOworICAgIFRfRkxBR1NfSU5GTyAqZm90YUZsYWc7CiAJdWludDMyX3QgdWlQYWdlU2l6ZSA9IDA7CiAgICAgdWludDMyX3QgZmxhZ3Nfb2Zmc2V0ID0gMDsKIAl1aW50MzJfdCBvZmYgPSAwOwpAQCAtMTI1LDcgKzEyNSw3IEBACiAJdWludDMyX3Qgd29ya19hcmVhX29mZnNldCA9IDA7CiAJdWludDMyX3QgYmFja3VwX2FyZWFfb2Zmc2V0ID0gMDsKIAlpbnQzMl90IHJldCA9IDA7Ci0JaW50MzJfdCBmb3RhX3NpemUgPSBzaXplb2YoVF9CT09UX0ZPVEFfRkxBRyk7CisJaW50MzJfdCBmb3RhX3NpemUgPSBzaXplb2YoVF9GTEFHU19JTkZPKTsKIAlpbnQzMl90IGJsb2NrX3NpemUgPSBmbGFzaC5ibG9ja19zaXplOwogCiAJZm90YV9zaXplID0gcGFnZV9hbGlnbihmb3RhX3NpemUpOwpAQCAtMTczLDkgKzE3Myw5IEBACiAJCXJldHVybiAtMTsKIAl9CiAKLQlmb3RhRmxhZyA9IChUX0JPT1RfRk9UQV9GTEFHICopKENGR19URU1QX0FERFIpOworCWZvdGFGbGFnID0gKFRfRkxBR1NfSU5GTyAqKShDRkdfVEVNUF9BRERSKTsKIAkKLQlpZihmb3RhRmxhZy0+bWFnaWMgIT0gRkxBR1NfTUFHSUMpCisJaWYoZm90YUZsYWctPm1hZ2ljX3N0YXJ0ICE9IEZMQUdTX01BR0lDIHx8IGZvdGFGbGFnLT5tYWdpY19lbmQgIT0gRkxBR1NfTUFHSUMpCiAJewogICAgICAgICByZXQgPSBmbGFzaC5yZWFkKGJhY2t1cF9hcmVhX29mZnNldCwgZm90YV9zaXplLCBDRkdfVEVNUF9BRERSKTsKIAkJaWYocmV0ICE9IDApCkBAIC0xODQsOCArMTg0LDggQEAKIAkJCQogCQkJcmV0dXJuIC0xOwogCQl9Ci0JCWZvdGFGbGFnID0gKFRfQk9PVF9GT1RBX0ZMQUcgKikoQ0ZHX1RFTVBfQUREUik7Ci0JCWlmKGZvdGFGbGFnLT5tYWdpYyAhPSBGTEFHU19NQUdJQykKKwkJZm90YUZsYWcgPSAoVF9GTEFHU19JTkZPICopKENGR19URU1QX0FERFIpOworCQlpZihmb3RhRmxhZy0+bWFnaWNfc3RhcnQgIT0gRkxBR1NfTUFHSUMgfHwgZm90YUZsYWctPm1hZ2ljX2VuZCAhPSBGTEFHU19NQUdJQykKIAkJewogICAgICAgICAgICAgcHJpbnRmKCJmbGFncyBtYWdpYyBlcnIuXG4iKTsKIAkJICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvaW5jbHVkZS9jb25maWdzL3p4Mjk3NTIwdjMuaCBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvaW5jbHVkZS9jb25maWdzL3p4Mjk3NTIwdjMuaAppbmRleCA3MWQ2ZDUwLi5jNDYzYmU4IDEwMDc1NQotLS0gYS9ib290L2NvbW1vbi9zcmMvbG9hZGVyL2luY2x1ZGUvY29uZmlncy96eDI5NzUyMHYzLmgKKysrIGIvYm9vdC9jb21tb24vc3JjL2xvYWRlci9pbmNsdWRlL2NvbmZpZ3MvengyOTc1MjB2My5oCkBAIC0xNiw3ICsxNiw3IEBACiAjZGVmaW5lIENGR19QUklOVEYgICAgICAgMSAgICAKICNlbHNlCiAvLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCi0jaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQorI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQyl8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDX1JFRikKICNkZWZpbmUgQ0ZHX1BSSU5URiAgICAgICAwCiAjZWxzZQogI2RlZmluZSBDRkdfUFJJTlRGICAgICAgIDEgICAgCkBAIC01MSw3ICs1MSw3IEBACiAgKiBwYXJ0aXRpb24gbmFtZQogKioqLwogLy8jaWZkZWYgQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQgotI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykKKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogI2RlZmluZSBNMF9QQVJUSVRJT05fTkFNRSAgICAgICAiY3B1cnBtIgogI2RlZmluZSBVQk9PVF9JTUFHRSAgICAJICAgIAkidWJvb3QiCiAjZGVmaW5lIFVCT09UMl9JTUFHRSAgICAJICAgICJ1Ym9vdDIiCmRpZmYgLS1naXQgYS9ib290L2NvbW1vbi9zcmMvbG9hZGVyL2luY2x1ZGUvaW1hZ2UuaCBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvaW5jbHVkZS9pbWFnZS5oCmluZGV4IDI2MjQ5ZTkuLmEyODY1ZDggMTAwNzU1Ci0tLSBhL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvaW5jbHVkZS9pbWFnZS5oCisrKyBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvaW5jbHVkZS9pbWFnZS5oCkBAIC01NCw3ICs1NCw3IEBACiAgICAgcGFydGl0aW9uX2VudHJ5X3QgIHRhYmxlW01BWF9FTlRSWVNdOyAgIAogfXBhcnRpdGlvbl90YWJsZV90OwogCi0vLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCisjaWYgMAogI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykKIC8qCiBmbGFncyBwYXJ0aXRpb24KQEAgLTExNiw3ICsxMTYsNyBAQAogCVRfQk9PVF9FTlYgICAgICAgICAgICBib290X2VudjsKIH1UX0ZPVEFfRkxBR19JTkZPOwogI2VuZGlmCi0KKyNlbmRpZgogLyoKICAqIExlZ2FjeSBmb3JtYXQgaW1hZ2UgaGVhZGVyLCAgc2l6ZW9mKGltYWdlX2hlYWRlcl90KSA9IDY0CiAgKiBhbGwgZGF0YSBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgKGFrYSBuYXR1cmFsIGFrYSBiaWdlbmRpYW4pLgpkaWZmIC0tZ2l0IGEvYm9vdC9jb21tb24vc3JjL2xvYWRlci9saWIvYm9hcmQuYyBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvbGliL2JvYXJkLmMKaW5kZXggM2QxMzhhOS4uMDk0MTdhZiAxMDA3NTUKLS0tIGEvYm9vdC9jb21tb24vc3JjL2xvYWRlci9saWIvYm9hcmQuYworKysgYi9ib290L2NvbW1vbi9zcmMvbG9hZGVyL2xpYi9ib2FyZC5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiZGRyLmgiCiAjaW5jbHVkZSAiLi4vZHJpdmVycy9lZnVzZS5oIgogI2luY2x1ZGUgIi4uL2RyaXZlcnMvZmxhc2guaCIKKyNpbmNsdWRlICJwdWJfZmxhZ3MuaCIKIAogI2RlZmluZSBGTEFHU19QQVJUSVRJT05fRVJST1IgKDB4MTExMSkgLyq31sf40uyzoyovCiAKQEAgLTEzNCw3ICsxMzUsNyBAQAogfQogCiAvLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCi0jaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQorI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYpCiB2b2lkIHN0YXJ0X2FybWJvb3QgKHZvaWQpCiB7CiAJaW50MzJfdCByZXQgPSAwOwpAQCAtMTQyLDkgKzE0Myw4IEBACiAJdWludDMyX3QgYW10X3ZhbHVlID0gMDsKIAlpbnQzMl90IGVycl9mbGFnID0gMDsKICAgICBUX0JPT1RfVEFSR0VUIGJvb3RUYXJnZXQ7Ci0JVF9CT09UX0ZPVEFfRkxBRyBmbGFnc0RhdGE7Ci0JVF9CT09UX0ZPVEFfRkxBRyAqZm90YUZsYWc7Ci0JVF9GT1RBX0ZMQUdfSU5GTyAqZm90YUZsYWdJbmZvOworCVRfRkxBR1NfSU5GTyBmbGFnc0RhdGE7CisJVF9GTEFHU19JTkZPICpmb3RhRmxhZzsKIAlUX0JPT1RfRFVBTFNZU1RFTV9UWVBFIGR1YWxTeXN0ZW1UeXBlOwogCiAJY2xrX2luaXQoKTsKQEAgLTIxOCwyNSArMjE4LDI2IEBACiAJCWVycl9mbGFnID0gMTsKIAkJCiAJCS8qxKzIz2ZsYWdzt9bH+Mr9vt0qLwotCQlmbGFnc0RhdGEubWFnaWMgPSBGTEFHU19NQUdJQzsKLQkJZmxhZ3NEYXRhLmJvb3RfdG8gPSBEVUFMX1NZU1RFTTsKLQkJZmxhZ3NEYXRhLmZvdGFfc3RhdHVzID0gMTsKLQkJZmxhZ3NEYXRhLnN5c3RlbS5zdGF0dXMgPSBEVUFMU1lTVEVNX1NUQVRVU19CT09UQUJMRTsKLQkJZmxhZ3NEYXRhLnN5c3RlbTIuc3RhdHVzID0gRFVBTFNZU1RFTV9TVEFUVVNfQk9PVEFCTEU7CisJCWZsYWdzRGF0YS5tYWdpY19zdGFydCA9IEZMQUdTX01BR0lDOworCQlmbGFnc0RhdGEuYm9vdF9mb3RhX2ZsYWcuYm9vdF90byA9IERVQUxfU1lTVEVNOworCQlmbGFnc0RhdGEuYm9vdF9mb3RhX2ZsYWcuZm90YV9zdGF0dXMgPSAxOworCQlmbGFnc0RhdGEuYm9vdF9mb3RhX2ZsYWcuc3lzdGVtLnN0YXR1cyA9IERVQUxTWVNURU1fU1RBVFVTX0JPT1RBQkxFOworCQlmbGFnc0RhdGEuYm9vdF9mb3RhX2ZsYWcuc3lzdGVtMi5zdGF0dXMgPSBEVUFMU1lTVEVNX1NUQVRVU19CT09UQUJMRTsKKwkJZmxhZ3NEYXRhLm1hZ2ljX2VuZCA9IEZMQUdTX01BR0lDOwogCQlmb3RhRmxhZyA9ICZmbGFnc0RhdGE7CiAJfQogCWVsc2UKIAl7Ci0gICAgICAgIGZvdGFGbGFnID0gKFRfQk9PVF9GT1RBX0ZMQUcgKikoQ0ZHX1RFTVBfQUREUik7CisgICAgICAgIGZvdGFGbGFnID0gKFRfRkxBR1NfSU5GTyAqKShDRkdfVEVNUF9BRERSKTsKIAl9CiAKLQlib290VGFyZ2V0ID0gZm90YUZsYWctPmJvb3RfdG87CisJYm9vdFRhcmdldCA9IGZvdGFGbGFnLT5ib290X2ZvdGFfZmxhZy5ib290X3RvOwogCiAJd3JpdGVsKERVQUxTWVNURU1fU1RBVFVTX0JPT1RBQkxFLCBCT09UX0ZMQUdfQUREUik7LyrErMjPv8nG9LavKi8KIAkKICAgICBpZihib290VGFyZ2V0ID09IERVQUxfU1lTVEVNKQogICAgIHsKLSAgICAgICAgaWYgKGZvdGFGbGFnLT5zeXN0ZW0uc3RhdHVzID09IERVQUxTWVNURU1fU1RBVFVTX1VOQk9PVEFCTEUpCisgICAgICAgIGlmIChmb3RhRmxhZy0+Ym9vdF9mb3RhX2ZsYWcuc3lzdGVtLnN0YXR1cyA9PSBEVUFMU1lTVEVNX1NUQVRVU19VTkJPT1RBQkxFKQogICAgICAgICB7CiAgICAgICAgICAgICBwcmludGYoImR1YWxfc3lzdGVtIHN0YXR1cyBpcyB1bmJvb3RhYmxlISIpOwogCQkgICAgZ290byBlcnJvcjsKQEAgLTI1OCw3ICsyNTksNyBAQAogCX0KICAgICBlbHNlIGlmKGJvb3RUYXJnZXQgPT0gRFVBTF9TWVNURU0yKQogICAgIHsKLSAgICAgICAgaWYgKGZvdGFGbGFnLT5zeXN0ZW0yLnN0YXR1cyA9PSBEVUFMU1lTVEVNX1NUQVRVU19VTkJPT1RBQkxFKQorICAgICAgICBpZiAoZm90YUZsYWctPmJvb3RfZm90YV9mbGFnLnN5c3RlbTIuc3RhdHVzID09IERVQUxTWVNURU1fU1RBVFVTX1VOQk9PVEFCTEUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHByaW50ZigiZHVhbF9zeXN0ZW0yIHN0YXR1cyBpcyB1bmJvb3RhYmxlISIpOwogCQkgICAgZ290byBlcnJvcjsK