ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCA3NTE5YjhmLi5lYjg3ZTQ2IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsMjQgQEAKIENoYW5nZXMgc2luY2UgZm9yIFUtQm9vdCAwLjEuMDoKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorKiBQYXRjaCBieSBIYW5zLUpvZXJnIEZyaWVkZW4sIDA2IERlYyAyMDAyCisgIEZpeCBtaXNjIHByb2JsZW1zIHdpdGggQW1pZ2FPbmUgc3VwcG9ydAorCisqIFBhdGNoIGJ5IENocmlzIEhhbGxpbmFuLCAzIERlYyAyMDAyOgorICBtaW5vciBjbGVhbnVwIHRvIHRoZSBNUEM4MjQ1IEVQSUMgZHJpdmVyCisKKyogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCAsIDI4IE5vdiAyMDAyCisgIEFkZCBzdXBwb3J0IGZvciBleHRlcm5hbCAoU0lVKSBpbnRlcnJ1cHRzIG9uIE1QQzh4eAorCisqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQgLCAyOCBOb3YgMjAwMgorICBGaXggbmVzdGVkIHN5c2NhbGxzIGJ1ZyBpbiBzdGFuZGFsb25lIGFwcGxpY2F0aW9ucworCisqIFBhdGNoIGJ5IERhdmlkIE38bGxlciwgMjcgTm92IDIwMDI6CisgIGZpeCBvdXRwdXQgb2YgInBjaWluZm8iIGNvbW1hbmQgZm9yIENhcmRCdXMgYnJpZGdlIGRldmljZXMuCisKKyogRml4IGJ1ZyBpbiBUUU04MjYwIGJvYXJkIGRldGVjdGlvbiAtIGJvYXJkcyBnb3Qgc3R1Y2sgd2hlbiBib2FyZCBJRAorICB3YXMgbm90IHJlYWRhYmxlCisKICogQWRkIExFRCBpbmRpY2F0aW9uIGZvciBJREUgYWN0aXZpdHkgb24gS1VQNEsgYm9hcmQKIAogKiBGaXggc3RhcnR1cCBwcm9ibGVtcyB3aXRoIFZGRCBkaXNwbGF5IG9uIFRSQUIKZGlmZiAtLWdpdCBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvQW1pZ2FPbmVHM1NFLmMgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL0FtaWdhT25lRzNTRS5jCmluZGV4IDBjZjUzODguLjlkNWMyNGUgMTAwNjQ0Ci0tLSBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvQW1pZ2FPbmVHM1NFLmMKKysrIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9BbWlnYU9uZUczU0UuYwpAQCAtNzYsOSArNzYsOCBAQAogCiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKLQlwcmludGYgKCJBbWlnYU9uZUczU0VcbiIpOwotCi0JcmV0dXJuIDE7CisJcHJpbnRmICgiQm9hcmQ6IEFtaWdhT25lRzNTRVxuIik7CisJcmV0dXJuIDA7CiB9CiAKIGxvbmcgaW5pdGRyYW0gKGludCBib2FyZF90eXBlKQpAQCAtODgsOSArODcsOSBAQAogCiAKIAotdm9pZCBhZnRlcl9yZWxvYyAodWxvbmcgZGVzdF9hZGRyKQordm9pZCBhZnRlcl9yZWxvYyAodWxvbmcgZGVzdF9hZGRyLCBnZF90ICpnZCkKIHsKLQlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKy8qIEhKRjoJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7ICovCiAKIAlib2FyZF9pbml0X3IgKGdkLCBkZXN0X2FkZHIpOwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9NYWtlZmlsZSBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvTWFrZWZpbGUKaW5kZXggNzI3MTc0Ni4uNzg1ZjAxZiAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9NYWtlZmlsZQorKysgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL01ha2VmaWxlCkBAIC0zNSwxMyArMzUsMTYgQEAKIAogT0JKUwk9ICQoQ09CSlMpICQoQU9CSlMpIAogCi0jIyBGSVhNRSAhISEKLSMgRU1VT0JKUyA9IC4uL2Jpb3NfZW11bGF0b3Ivc2NpdGVjaC9zcmMveDg2ZW11LyoubworRU1VRElSICA9IC4uL2Jpb3NfZW11bGF0b3Ivc2NpdGVjaC9zcmMveDg2ZW11LworRU1VT0JKICA9ICQoRU1VRElSKWRlY29kZS5vICQoRU1VRElSKW9wczIubyAkKEVNVURJUilmcHUubyAkKEVNVURJUilwcmltX29wcy5vIFwKKwkJJChFTVVESVIpb3BzLm8gJChFTVVESVIpc3lzLm8KK0VNVVNSQyA9ICQoRU1VT0JKOi5vPS5jKQogCi0KLSQoTElCKToJLmRlcGVuZCAkKE9CSlMpICQoRU1VT0JKUykKKyQoTElCKToJLmRlcGVuZCAkKE9CSlMpICQoRU1VU1JDKSAKKwltYWtlIGxpYng4NmVtdS5hIC1DIC4uL2Jpb3NfZW11bGF0b3Ivc2NpdGVjaC9zcmMveDg2ZW11IC1mIG1ha2VmaWxlLnVib290IENST1NTX0NPTVBJTEU9JChDUk9TU19DT01QSUxFKQogCS1ybSAkKExJQikKLQkkKEFSKSBjcnYgJEAgJChPQkpTKSAkKEVNVU9CSlMpCisJJChBUikgY3J2ICRAICQoT0JKUykgJChFTVVPQkopCisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL2FydGljaWFTLmMgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL2FydGljaWFTLmMKaW5kZXggYWY4NTQ0NC4uNWVkZGZjNiAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9hcnRpY2lhUy5jCisrKyBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvYXJ0aWNpYVMuYwpAQCAtODIsOCArODIsOSBAQAogCiBsb25nIGRldGVjdF9zZHJhbSAodWludDggKiByb20sIGludCBkaW1tTnVtLCBzdHJ1Y3QgZGltbV9iYW5rICpiYW5rcykKIHsKKyAgICBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAlpbnQgZGltbV9hZGRyZXNzID0gKGRpbW1OdW0gPT0gMCkgPyBTTV9ESU1NMF9BRERSIDogU01fRElNTTFfQUREUjsKLQl1aW50MzIgYnVzY2xvY2sgPSBnZXRfYnVzX2ZyZXEgKDApOworCXVpbnQzMiBidXNjbG9jayA9IGdkLT5idXNfY2xrOwogCXVpbnQzMiBtZW1jbG9jayA9IGJ1c2Nsb2NrOwogCXVpbnQzMiB0bWVtY2xvY2sgPSAxMDAwMDAwMDAwIC8gKG1lbWNsb2NrIC8gMTAwKTsKIAl1aW50MzIgZGF0YXdpZHRoOwpAQCAtNDA0LDcgKzQwNSw3IEBACiAJdWludDMyIHRvdGFsX3JhbSA9IDA7CiAKIAlzdHJ1Y3QgZGltbV9iYW5rIGJhbmtzWzRdOwkvKiBGSVhNRTogTW92ZSB0byBpbml0cmFtICovCi0JdWludDMyIGJ1c2Nsb2NrID0gZ2V0X2J1c19mcmVxICgwKTsKKwl1aW50MzIgYnVzY2xvY2sgPSBnZC0+YnVzX2NsazsKIAl1aW50MzIgbWVtY2xvY2sgPSBidXNjbG9jazsKIAl1aW50MzIgcmVnMzI7CiAJdWludDMyIHJlZnJlc2hfY2xvY2tzOwpkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9hcnRpY2lhU19wY2kuYyBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvYXJ0aWNpYVNfcGNpLmMKaW5kZXggNzc0YzMyZC4uMmE3NzYzZCAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9hcnRpY2lhU19wY2kuYworKysgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL2FydGljaWFTX3BjaS5jCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAibWVtaW8uaCIKICNpbmNsdWRlICJhcnRpY2lhUy5oIgogCi0vLyNkZWZpbmUgQVJUSUNJQV9QQ0lfREVCVUcKKyN1bmRlZiBBUlRJQ0lBX1BDSV9ERUJVRwogCiAjaWZkZWYgIEFSVElDSUFfUENJX0RFQlVHCiAjZGVmaW5lIFBSSU5URihmbXQsYXJncy4uLikgICAgIHByaW50ZiAoZm10ICwjI2FyZ3MpCkBAIC01MTIsNyArNTEyLDExIEBACiAJUFJJTlRGKCJTZWFyY2hpbmcgZm9yIGNsYXNzIDB4JXggb24gYnVzICVkXG4iLCBjbGFzc2VzW2NsYXNzbnJdLCBidXNucik7CiAJLyogRmluZCB0aGUgZmlyc3Qgb2YgdGhpcyBjbGFzcyBvbiB0aGlzIGJ1cyAqLwogCWRldiA9IHBjaV9ob3NlX2ZpbmRfY2xhc3MoJmFydGljaWFTX2hvc2UsIGJ1c25yLCBjbGFzc2VzW2NsYXNzbnJdLCAwKTsKLQlpZiAoZGV2ICE9IH4wKSBicmVhazsKKwlpZiAoZGV2ICE9IH4wKSAKKwl7CisJICAgIFBSSU5URigiRm91bmQgVkdBIENhcmQgYXQgJTAyeDolMDJ4OiUwMnhcbiIsIFBDSV9CVVMoZGV2KSwgUENJX0RFVihkZXYpLCBQQ0lfRlVOQyhkZXYpKTsKKwkgICAgYnJlYWs7CisJfQogCWJ1c25yKys7CiAJaWYgKGJ1c25yID4gYXJ0aWNpYVNfaG9zZS5sYXN0X2J1c25vKQogCXsKQEAgLTU1Miw3ICs1NTYsNyBAQAogICAgIC8qCiAgICAgICogTm93IHRyeSB0byBydW4gdGhlIGJpb3MKICAgICAgKi8KLQorICAgIFBSSU5URigiVHJ5aW5nIHRvIHJ1biBiaW9zIG5vd1xuIik7CiAgICAgaWYgKGV4ZWN1dGVfYmlvcyhkZXYsIGdkLT5yZWxvY2FkZHIpKQogICAgIHsKIAlwcmludGYoIk9LXG4iKTsKZGlmZiAtLWdpdCBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvY29uZmlnLm1rIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9jb25maWcubWsKaW5kZXggMDUzN2NkOS4uZDdkMGU2YiAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9jb25maWcubWsKKysrIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9jb25maWcubWsKQEAgLTI5LDUgKzI5LDUgQEAKIAogVEVYVF9CQVNFID0gMHhmZmYwMDAwMAogCi1QTEFURk9STV9DUFBGTEFHUyArPSAtRFRFWFRfQkFTRT0kKFRFWFRfQkFTRSkgLVdhLC1tcmVnbmFtZXMgLURFQVNURVJFR0cgJChYODZFTVUpICMtRERFQlVHCitQTEFURk9STV9DUFBGTEFHUyArPSAtRFRFWFRfQkFTRT0kKFRFWFRfQkFTRSkgLVdhLC1tcmVnbmFtZXMgLURFQVNURVJFR0cgJChYODZFTVUpIC1EcHJpbnRrPXByaW50ZiAjLURERUJVRyAKIApkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS92aWRlby5jIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS92aWRlby5jCmluZGV4IGQwZTM2NmMuLmU4MDI4OGIgMTAwNjQ0Ci0tLSBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvdmlkZW8uYworKysgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3ZpZGVvLmMKQEAgLTQ3NCwxMyArNDc0LDEzIEBACiB9CiAjZW5kaWYKIAotZXh0ZXJuIGJkX3QgKmJkX2dsb2JhbDsKIGV4dGVybiBibG9ja19kZXZfZGVzY190ICogaWRlX2dldF9kZXYoaW50IGRldik7CiBleHRlcm4gY2hhciB2ZXJzaW9uX3N0cmluZ1tdOwogCiB2b2lkIHZpZGVvX2Jhbm5lcih2b2lkKQogewogICAgIGJsb2NrX2Rldl9kZXNjX3QgKmlkZTsKKyAgICBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKICAgICBpbnQgaTsKICAgICBjaGFyICpzOwogICAgIGludCBtYXhkZXY7CkBAIC01MTMsOCArNTEzLDggQEAKIAl2aWRlb19jbGVhcigpOwogCXByaW50ZigiJXNcblxuQ1BVOiAiLCB2ZXJzaW9uX3N0cmluZyk7CiAJY2hlY2tjcHUoKTsKLQlwcmludGYoIkRSQU06ICVsZCBNQlxuIiwgYmRfZ2xvYmFsLT5iaV9tZW1zaXplLygxMDI0KjEwMjQpKTsKLQlwcmludGYoIkZTQjogJWxkIE1IelxuIiwgYmRfZ2xvYmFsLT5iaV9idXNmcmVxLzEwMDAwMDApOworCXByaW50ZigiRFJBTTogJWxkIE1CXG4iLCBnZC0+YmQtPmJpX21lbXNpemUvKDEwMjQqMTAyNCkpOworCXByaW50ZigiRlNCOiAlbGQgTUh6XG4iLCBnZC0+YmQtPmJpX2J1c2ZyZXEvMTAwMDAwMCk7CiAKIAlwcmludGYoIlxuLS0tLSBEaXNrIHN1bW1hcnkgLS0tLVxuIik7CiAJZm9yIChpID0gMDsgaSA8IG1heGRldjsgaSsrKQpkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL2Jpb3NfZW11bGF0b3IvZ2x1ZS5jIGIvYm9hcmQvTUFJL2Jpb3NfZW11bGF0b3IvZ2x1ZS5jCmluZGV4IGI3NjVlZDUuLmY1OWZmYWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL01BSS9iaW9zX2VtdWxhdG9yL2dsdWUuYworKysgYi9ib2FyZC9NQUkvYmlvc19lbXVsYXRvci9nbHVlLmMKQEAgLTI3MSw5ICsyNzEsOSBAQAogICAgIHBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBQQ0lfUk9NX0FERFJFU1MsIDApOwogICAgIHBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBpLCBiYXJfYmFja3VwKTsKIAotICAgIC8qICBGSVhNRTogKi8KLSAgICBiYXRfbWFwKDIsIDB4ODAwMDAwMDAsIDI1NioxMDI0KjEwMjQpOwotICAgIHNob3dfYmF0X21hcHBpbmcoKTsKKyAgICAvKiAgRklYTUU6IFNob3VsZG4ndCBiZSBuZWVkZWQgYW55bW9yZSovCisgICAgLyogYmF0X21hcCgyLCAweDgwMDAwMDAwLCAyNTYqMTAyNCoxMDI0KTsKKyAgICAgICBzaG93X2JhdF9tYXBwaW5nKCk7ICovCiAKICAgICAvKgogICAgICAqIFNpbmNlIG1vc3QgY2FyZHMgY2FuIHByb2JhYmx5IG9ubHkgZG8gMTYgYml0IElPIGFkZHJlc3NpbmcsIHdlCkBAIC00MzYsNyArNDM2LDYgQEAKIAogdm9pZCBzaG93X2JhdF9tYXBwaW5nKHZvaWQpCiB7Ci0jaWZkZWYgREVCVUcKICAgICB1MzIgZGJhdDB1LCBkYmF0MGwsIGliYXQwdSwgaWJhdDBsOwogICAgIHUzMiBkYmF0MXUsIGRiYXQxbCwgaWJhdDF1LCBpYmF0MWw7CiAgICAgdTMyIGRiYXQydSwgZGJhdDJsLCBpYmF0MnUsIGliYXQybDsKQEAgLTQ3Nyw3ICs0NzYsNiBAQAogCSAgIGRiYXQzdSwgZGJhdDNsLCBpYmF0M3UsIGliYXQzbCk7CiAKICAgICBwcmludGYoIlxuTVNSOiAlMDh4ICAgSElEMDogJTA4eCAgIEwyQ1I6ICUwOHggXG4iLCBtc3IsaGlkMCwgbDJjcl9yZWcpOwotI2VuZGlmCiB9CiAKIApAQCAtNDg1LDQ0ICs0ODMsMzQgQEAKIHZvaWQgcmVtb3ZlX2luaXRfZGF0YSh2b2lkKQogewogICAgIGNoYXIgKnM7Ci0gICAgdTMyIGJhdGwgPSAoKENGR19TRFJBTV9CQVNFKzB4MTAwMDAwKSB8IEJBVExfUFBfUlcpOwotICAgIHUzMiBiYXR1ID0oKENGR19TRFJBTV9CQVNFKzB4MTAwMDAwKSB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKTsKLSNpZiAwCS8qIGFscmVhZHkgZG9uZSBpbiBib2FyZF9pbml0X3IoKSAqLwotICAgIHZvaWQgKmRhdGEgPSAodm9pZCAqKShDRkdfSU5JVF9SQU1fQUREUitDRkdfSU5JVF9EQVRBX09GRlNFVCk7Ci0gICAgdW5zaWduZWQgY2hhciBkYXRhMltDRkdfSU5JVF9EQVRBX1NJWkVdOwotCi0gICAgLyogIE1ha2UgYSBjb3B5IG9mIHRoZSBkYXRhICovCi0gICAgbWVtY3B5KGRhdGEyLCBkYXRhLCBDRkdfSU5JVF9EQVRBX1NJWkUpOwotI2VuZGlmIC8qIDAgKi8KIAogICAgIC8qICBJbnZhbGlkYXRlIGFuZCBkaXNhYmxlIGRhdGEgY2FjaGUgKi8KICAgICBpbnZhbGlkYXRlX2wxX2RhdGFfY2FjaGUoKTsKICAgICBkY2FjaGVfZGlzYWJsZSgpOwogCi0jaWYgMAotICAgIC8qICBDb3B5IHRvIHRoZSByZWFsIFJBTSBhZGRyZXNzICovCi0gICAgbWVtY3B5KGRhdGEsIGRhdGEyLCBDRkdfSU5JVF9EQVRBX1NJWkUpOwotI2VuZGlmCi0KLSAgICAvKnByaW50ZigiQmVmb3JlIElDYWNoZSBlbmFibGVcbiIpOwotICAgICAgc2hvd19iYXRfbWFwcGluZygpOyovCi0KLSAgICBfX2FzbSB2b2xhdGlsZSAoImlzeW5jICAgICAgICBcbiIKLQkJICAgICJtdGRiYXR1IDIsJTIgXG4iCi0JCSAgICAibXRkYmF0bCAyLCUyIFxuIgotCSAgICAgICAgICAgICJtdGRiYXR1IDEsJTAgXG4iCi0JCSAgICAibXRkYmF0bCAxLCUxIFxuIgotCQkgICAgInN5bmMgICAgICAgICBcbiIKLQkJICAgICJpc3luYyAgICAgICAgXG4iCi0JCSAgICA6IDogInIiIChiYXR1KSwgInIiIChiYXRsKSwgInIiICgwKSk7Ci0KLSAgICAvKiBzaG93X2JhdF9tYXBwaW5nKCk7ICovCiAgICAgcyA9IGdldGVudigieDg2X2NhY2hlIik7CiAKLSAgICBpZiAoIXMgfHwgKHMgJiYgc3RyY21wKHMsICJvbiIpPT0wKSkKKyAgICBpZiAoIXMpCiAgICAgewogCWljYWNoZV9lbmFibGUoKTsKIAlkY2FjaGVfZW5hYmxlKCk7CiAgICAgfQorICAgIGVsc2UgaWYgKHMpCisgICAgeworICAgICAgICBpZiAoc3RyY21wKHMsICJkY2FjaGUiKT09MCkKKyAgICAgICAgeworICAgICAgICAgICAgZGNhY2hlX2VuYWJsZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0cmNtcChzLCAiaWNhY2hlIikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgaWNhY2hlX2VuYWJsZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0cmNtcChzLCAib24iKT09IDAgfHwgc3RyY21wKHMsICJib3RoIikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZGNhY2hlX2VuYWJsZSgpOworICAgICAgICAgICAgaWNhY2hlX2VuYWJsZSgpOworICAgICAgICB9CisgICAgfQogCisgICAgLyogICBzaG93X2JhdF9tYXBwaW5nKCk7Ki8KIH0KZGlmZiAtLWdpdCBhL2JvYXJkL01BSS9iaW9zX2VtdWxhdG9yL3NjaXRlY2gvc3JjL3g4NmVtdS9tYWtlZmlsZS51Ym9vdCBiL2JvYXJkL01BSS9iaW9zX2VtdWxhdG9yL3NjaXRlY2gvc3JjL3g4NmVtdS9tYWtlZmlsZS51Ym9vdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDExY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvTUFJL2Jpb3NfZW11bGF0b3Ivc2NpdGVjaC9zcmMveDg2ZW11L21ha2VmaWxlLnVib290CkBAIC0wLDAgKzEsODAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjCQkJCQkJUmVhbG1vZGUgWDg2IEVtdWxhdG9yIExpYnJhcnkKKyMKKyMgICAgICAgICAgICAJQ29weXJpZ2h0IChDKSAxOTk2LTE5OTkgU2NpVGVjaCBTb2Z0d2FyZSwgSW5jLgorIworIyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0aGlzIHNvZnR3YXJlIGFuZAorIyAgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLAorIyAgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdAorIyAgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluCisjICBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIHRoZSBhdXRob3JzIG5vdCBiZSB1c2VkCisjICBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisjICB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgYXV0aG9ycyBtYWtlcyBubworIyAgcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4KKyMgIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisjCisjICBUSEUgQVVUSE9SUyBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKKyMgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8KKyMgIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCisjICBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GCisjICBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKKyMgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKKyMgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisjCisjICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgRGVzY3JpcHRvbjogICBMaW51eCBzcGVjaWZpYyBtYWtlZmlsZSBmb3IgdGhlIHg4NmVtdSBsaWJyYXJ5LgorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0NDID0gJChDUk9TU19DT01QSUxFKWdjYworQVIgPSAkKENST1NTX0NPTVBJTEUpYXIKK1RBUkdFVExJQiA9IGxpYng4NmVtdS5hCitUQVJHRVRERUJVR0xJQiA9bGlieDg2ZW11ZC5hCisKK09CSlM9XAorZGVjb2RlLm8gXAorZnB1Lm8gXAorb3BzLm8gXAorb3BzMi5vIFwKK3ByaW1fb3BzLm8gXAorc3lzLm8KKworREVCVUdPQkpTPWRlYnVnLmQgXAorICAgICAgICAgIGRlY29kZS5kIFwKKwkgIGZwdS5kIFwKKwkgIG9wcy5kIFwKKwkgIG9wczIuZCBcCisJICBwcmltX29wcy5kIFwKKwkgIHN5cy5kCisKKy5TVUZGSVhFUzogLmQKKworYWxsOiAkKFRBUkdFVExJQikgJChUQVJHRVRERUJVR0xJQikKKworJChUQVJHRVRMSUIpOiAkKE9CSlMpCisJJChBUikgcnYgJChUQVJHRVRMSUIpICQoT0JKUykKKworJChUQVJHRVRERUJVR0xJQik6ICQoREVCVUdPQkpTKQorCSQoQVIpIHJ2ICQoVEFSR0VUREVCVUdMSUIpICQoREVCVUdPQkpTKQorCitJTkNTICAgPSAtSS4gLUl4ODZlbXUgLUkuLi8uLi9pbmNsdWRlCitDRkxBR1MgPSAtRF9fRFJJVkVSX18gLURGT1JDRV9QT1NUIC1EX0NFWFBPUlQ9IC1ETk9fTE9OR19MT05HIC1EcHJpbnRrPXByaW50ZiAtZnNpZ25lZC1jaGFyICAtZm9taXQtZnJhbWUtcG9pbnRlciAtbXJlbG9jYXRhYmxlIC1mZml4ZWQtcjE0IC1tZWFiaSAtbXJlbG9jYXRhYmxlIC1mZml4ZWQtcjE0IC1tZWFiaQorQ0RFQlVHRkxBR1MgPSAtRERFQlVHCisKKy5jLm86CisJJChDQykgLWcgLU8yIC1XYWxsIC1jICQoQ0ZMQUdTKSAkKElOQ1MpICQqLmMKKworLmMuZDoKKwkkKENDKSAtZyAtTzIgLVdhbGwgLWMgLW8kKi5kICQoQ0ZMQUdTKSAkKENERUJVR0ZMQUdTKSAkKElOQ1MpICQqLmMKKworLmNwcC5vOgorCSQoQ0MpIC1jICQoQ0ZMQUdTKSAkKElOQ1MpICQqLmNwcAorCitjbGVhbjoKKwlybSAtZiAqLmEgKi5vICouZAorCit2YWxpZGF0ZToJdmFsaWRhdGUubyBsaWJ4ODZlbXUuYQorCSQoQ0MpIC1vIHZhbGlkYXRlIHZhbGlkYXRlLm8gLWx4ODZlbXUgLUwuCmRpZmYgLS1naXQgYS9ib2FyZC9NQUkvYmlvc19lbXVsYXRvci94ODZpbnRlcmZhY2UuYyBiL2JvYXJkL01BSS9iaW9zX2VtdWxhdG9yL3g4NmludGVyZmFjZS5jCmluZGV4IGIxYWQ2MWEuLmU5MGVjNWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL01BSS9iaW9zX2VtdWxhdG9yL3g4NmludGVyZmFjZS5jCisrKyBiL2JvYXJkL01BSS9iaW9zX2VtdWxhdG9yL3g4NmludGVyZmFjZS5jCkBAIC0zOTgsOSArMzk4LDcgQEAKICAgICB1OCBjZmc7CiAgICAgaW50IGk7CiAgICAgY2hhciBjOwotI2lmZGVmIERFQlVHCiAgICAgY2hhciAqczsKLSNlbmRpZgogI2lmZGVmIEVBU1RFUkVHRwogICAgIGludCBlYXN0ZXJlZ2dfYWN0aXZlID0gMDsKICNlbmRpZgpAQCAtNDA5LDYgKzQwNyw3IEBACiAgICAgdW5zaWduZWQgY2hhciAqbXNnOwogICAgIHVuc2lnbmVkIGNoYXIgY3VycmVudF9hdHRyOwogCisgICAgUFJJTlRGKCJUcnlpbmcgdG8gcmVtb3ZlIGluaXQgZGF0YVxuIik7CiAgICAgcmVtb3ZlX2luaXRfZGF0YSgpOwogICAgIFBSSU5URigiUmVtb3ZlZCBpbml0IGRhdGEgZnJvbSBjYWNoZSwgbm93IGluIFJBTVxuIik7CiAKQEAgLTQzOCw3ICs0MzcsNyBAQAogCXJldHVybiAwOwogICAgIH0KIAotI2lmZGVmIERFQlVHCisjaWYgMSAvKmRlZiBERUJVRyovCiAgICAgcyA9IGdldGVudigieDg2X2Fza19zdGFydCIpOwogICAgIGlmIChzKQogICAgIHsKQEAgLTY0Niw3ICs2NDUsNyBAQAogICAgIGlmIChnZXRlbnYoIng4Nl9kb19pbm91dCIpKSBkb19pbm91dCgpOwogI2VuZGlmCiAKLSAgICBkY2FjaGVfZGlzYWJsZSgpOworLy9GSVhNRTogICAgZGNhY2hlX2Rpc2FibGUoKTsKICAgICByZXR1cm4gMTsKIH0KIApkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL21lbnUvY21kX21lbnUuYyBiL2JvYXJkL01BSS9tZW51L2NtZF9tZW51LmMKaW5kZXggYTI0YWI0OS4uMTc4ODE3MyAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL21lbnUvY21kX21lbnUuYworKysgYi9ib2FyZC9NQUkvbWVudS9jbWRfbWVudS5jCkBAIC0yLDcgKzIsNyBAQAogI2luY2x1ZGUgPGNvbW1hbmQuaD4KICNpbmNsdWRlIDxjbWRfbWVudS5oPgogCi1pbnQgZG9fbWVudSggY21kX3RibF90ICpjbWR0cCwgYmRfdCAqYmQsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdICkKK2ludCBkb19tZW51KCBjbWRfdGJsX3QgKmNtZHRwLCAvKmJkX3QgKmJkLCovIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdICkKIHsKIC8vICAgIHByaW50ZigiPE5PVCBZRVQgSU1QTEVNRU5URUQ+XG4iKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2JvYXJkL2hlcm1lcy91LWJvb3QubGRzIGIvYm9hcmQvaGVybWVzL3UtYm9vdC5sZHMKaW5kZXggNTE3YTM1NC4uMTFmNTVmMyAxMDA2NDQKLS0tIGEvYm9hcmQvaGVybWVzL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvaGVybWVzL3UtYm9vdC5sZHMKQEAgLTU2LDExICs1NiwxMyBAQAogICAgIC8qIFdBUk5JTkcgLSB0aGUgZm9sbG93aW5nIGlzIGhhbmQtb3B0aW1pemVkIHRvIGZpdCB3aXRoaW4JKi8KICAgICAvKiB0aGUgc2VjdG9yIGxheW91dCBvZiBvdXIgZmxhc2ggY2hpcHMhCVhYWCBGSVhNRSBYWFgJKi8KIAotICAgIGNwdS9tcGM4eHgvc3RhcnQubwkoLnRleHQpCi0gICAgY29tbW9uL2RsbWFsbG9jLm8JKC50ZXh0KQotICAgIGxpYl9wcGMvcHBjc3RyaW5nLm8JKC50ZXh0KQotICAgIGNwdS9tcGM4eHgvaW50ZXJydXB0cy5vICgudGV4dCkKKyAgICBjcHUvbXBjOHh4L3N0YXJ0Lm8JCSgudGV4dCkKKyAgICBjb21tb24vZGxtYWxsb2MubwkJKC50ZXh0KQorICAgIGNwdS9tcGM4eHgvaW50ZXJydXB0cy5vCSgudGV4dCkKICAgICBsaWJfcHBjL3RpbWUubwkJKC50ZXh0KQorICAgIGxpYl9wcGMvdGlja3MubwkJKC50ZXh0KQorICAgIGxpYl9wcGMvY2FjaGUubwkJKC50ZXh0KQorICAgIGxpYl9nZW5lcmljL2NyYzMyLm8JCSgudGV4dCkKICAgICAuID0gZW52X29mZnNldDsKICAgICBjb21tb24vZW52aXJvbm1lbnQubygudGV4dCkKIApkaWZmIC0tZ2l0IGEvYm9hcmQvdHFtODI2MC90cW04MjYwLmMgYi9ib2FyZC90cW04MjYwL3RxbTgyNjAuYwppbmRleCAxOTIyOWI3Li43ODRkNzJlIDEwMDY0NAotLS0gYS9ib2FyZC90cW04MjYwL3RxbTgyNjAuYworKysgYi9ib2FyZC90cW04MjYwL3RxbTgyNjAuYwpAQCAtMjAyLDcgKzIwMiw3IEBACiAKIAlpZiAoIWkgfHwgc3RybmNtcCAoc3RyLCAiVFFNODI2MCIsIDcpKSB7CiAJCXB1dHMgKCIjIyMgTm8gSFcgSUQgLSBhc3N1bWluZyBUUU04MjYwXG4iKTsKLQkJcmV0dXJuICgxKTsKKwkJcmV0dXJuICgwKTsKIAl9CiAKIAlwdXRzIChzdHIpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJhYi92ZmQuYyBiL2JvYXJkL3RyYWIvdmZkLmMKaW5kZXggNzM3N2I0ZC4uMjM0YTlkNCAxMDA2NDQKLS0tIGEvYm9hcmQvdHJhYi92ZmQuYworKysgYi9ib2FyZC90cmFiL3ZmZC5jCkBAIC0zNDQsNyArMzQ0LDcgQEAKIAlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAogCWlmICh2ZmRfaW5pdF9kb25lICE9IDApCi0JCXJldHVybjsKKwkJcmV0dXJuICgwKTsKIAl2ZmRfaW5pdF9kb25lID0gMTsKIAogCXZmZGJhc2UgPSBnZC0+ZmJfYmFzZTsKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfcGNpLmMgYi9jb21tb24vY21kX3BjaS5jCmluZGV4IDMwMGFjMDIuLjVhM2I1NTcgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfcGNpLmMKKysrIGIvY29tbW9uL2NtZF9wY2kuYwpAQCAtMjA1LDkgKzIwNSwyNyBAQAogCVBSSU5UICgiICBoZWFkZXIgdHlwZSA9ICAgICAgICAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9IRUFERVJfVFlQRSk7CiAJUFJJTlQgKCIgIEJJU1QgPSAgICAgICAgICAgICAgICAgICAgICAgIDB4JS4yeFxuIiwgYnl0ZSwgUENJX0JJU1QpOwogCVBSSU5UICgiICBiYXNlIGFkZHJlc3MgMCA9ICAgICAgICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQkFTRV9BRERSRVNTXzApOwotCVBSSU5UICgiICBiYXNlIGFkZHJlc3MgMSA9ICAgICAgICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQkFTRV9BRERSRVNTXzEpOwogCi0JaWYgKGhlYWRlcl90eXBlICYgMHgwMSkgewkJLyogUENJLXRvLVBDSSBicmlkZ2UgKi8KKwlzd2l0Y2ggKGhlYWRlcl90eXBlICYgMHgwMykgeworCWNhc2UgUENJX0hFQURFUl9UWVBFX05PUk1BTDoJLyogIm5vcm1hbCIgUENJIGRldmljZSAqLworCQlQUklOVCAoIiAgYmFzZSBhZGRyZXNzIDEgPSAgICAgICAgICAgICAgMHglLjh4XG4iLCBkd29yZCwgUENJX0JBU0VfQUREUkVTU18xKTsKKwkJUFJJTlQgKCIgIGJhc2UgYWRkcmVzcyAyID0gICAgICAgICAgICAgIDB4JS44eFxuIiwgZHdvcmQsIFBDSV9CQVNFX0FERFJFU1NfMik7CisJCVBSSU5UICgiICBiYXNlIGFkZHJlc3MgMyA9ICAgICAgICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQkFTRV9BRERSRVNTXzMpOworCQlQUklOVCAoIiAgYmFzZSBhZGRyZXNzIDQgPSAgICAgICAgICAgICAgMHglLjh4XG4iLCBkd29yZCwgUENJX0JBU0VfQUREUkVTU180KTsKKwkJUFJJTlQgKCIgIGJhc2UgYWRkcmVzcyA1ID0gICAgICAgICAgICAgIDB4JS44eFxuIiwgZHdvcmQsIFBDSV9CQVNFX0FERFJFU1NfNSk7CisJCVBSSU5UICgiICBjYXJkQnVzIENJUyBwb2ludGVyID0gICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQ0FSREJVU19DSVMpOworCQlQUklOVCAoIiAgc3ViIHN5c3RlbSB2ZW5kb3IgSUQgPSAgICAgICAgMHglLjR4XG4iLCB3b3JkLCBQQ0lfU1VCU1lTVEVNX1ZFTkRPUl9JRCk7CisJCVBSSU5UICgiICBzdWIgc3lzdGVtIElEID0gICAgICAgICAgICAgICAweCUuNHhcbiIsIHdvcmQsIFBDSV9TVUJTWVNURU1fSUQpOworCQlQUklOVCAoIiAgZXhwYW5zaW9uIFJPTSBiYXNlIGFkZHJlc3MgPSAgMHglLjh4XG4iLCBkd29yZCwgUENJX1JPTV9BRERSRVNTKTsKKwkJUFJJTlQgKCIgIGludGVycnVwdCBsaW5lID0gICAgICAgICAgICAgIDB4JS4yeFxuIiwgYnl0ZSwgUENJX0lOVEVSUlVQVF9MSU5FKTsKKwkJUFJJTlQgKCIgIGludGVycnVwdCBwaW4gPSAgICAgICAgICAgICAgIDB4JS4yeFxuIiwgYnl0ZSwgUENJX0lOVEVSUlVQVF9QSU4pOworCQlQUklOVCAoIiAgbWluIEdyYW50ID0gICAgICAgICAgICAgICAgICAgMHglLjJ4XG4iLCBieXRlLCBQQ0lfTUlOX0dOVCk7CisJCVBSSU5UICgiICBtYXggTGF0ZW5jeSA9ICAgICAgICAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9NQVhfTEFUKTsKKwkJYnJlYWs7CisJCQorCWNhc2UgUENJX0hFQURFUl9UWVBFX0JSSURHRToJLyogUENJLXRvLVBDSSBicmlkZ2UgKi8KKworCQlQUklOVCAoIiAgYmFzZSBhZGRyZXNzIDEgPSAgICAgICAgICAgICAgMHglLjh4XG4iLCBkd29yZCwgUENJX0JBU0VfQUREUkVTU18xKTsKIAkJUFJJTlQgKCIgIHByaW1hcnkgYnVzIG51bWJlciA9ICAgICAgICAgIDB4JS4yeFxuIiwgYnl0ZSwgUENJX1BSSU1BUllfQlVTKTsKIAkJUFJJTlQgKCIgIHNlY29uZGFyeSBidXMgbnVtYmVyID0gICAgICAgIDB4JS4yeFxuIiwgYnl0ZSwgUENJX1NFQ09OREFSWV9CVVMpOwogCQlQUklOVCAoIiAgc3Vib3JkaW5hdGUgYnVzIG51bWJlciA9ICAgICAgMHglLjJ4XG4iLCBieXRlLCBQQ0lfU1VCT1JESU5BVEVfQlVTKTsKQEAgLTIyNywxOSArMjQ1LDM5IEBACiAJCVBSSU5UICgiICBpbnRlcnJ1cHQgbGluZSA9ICAgICAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9JTlRFUlJVUFRfTElORSk7CiAJCVBSSU5UICgiICBpbnRlcnJ1cHQgcGluID0gICAgICAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9JTlRFUlJVUFRfUElOKTsKIAkJUFJJTlQgKCIgIGJyaWRnZSBjb250cm9sID0gICAgICAgICAgICAgIDB4JS40eFxuIiwgd29yZCwgUENJX0JSSURHRV9DT05UUk9MKTsKLSAgICB9IGVsc2UgewkJCQkJLyogUENJIGRldmljZSAqLwotCQlQUklOVCgiICBiYXNlIGFkZHJlc3MgMiA9ICAgICAgICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQkFTRV9BRERSRVNTXzIpOwotCQlQUklOVCgiICBiYXNlIGFkZHJlc3MgMyA9ICAgICAgICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQkFTRV9BRERSRVNTXzMpOwotCQlQUklOVCgiICBiYXNlIGFkZHJlc3MgNCA9ICAgICAgICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQkFTRV9BRERSRVNTXzQpOwotCQlQUklOVCgiICBiYXNlIGFkZHJlc3MgNSA9ICAgICAgICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQkFTRV9BRERSRVNTXzUpOwotCQlQUklOVCgiICBjYXJkQnVzIENJUyBwb2ludGVyID0gICAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQ0FSREJVU19DSVMpOwotCQlQUklOVCgiICBzdWIgc3lzdGVtIHZlbmRvciBJRCA9ICAgICAgICAweCUuNHhcbiIsIHdvcmQsIFBDSV9TVUJTWVNURU1fVkVORE9SX0lEKTsKLQkJUFJJTlQoIiAgc3ViIHN5c3RlbSBJRCA9ICAgICAgICAgICAgICAgMHglLjR4XG4iLCB3b3JkLCBQQ0lfU1VCU1lTVEVNX0lEKTsKLQkJUFJJTlQoIiAgZXhwYW5zaW9uIFJPTSBiYXNlIGFkZHJlc3MgPSAgMHglLjh4XG4iLCBkd29yZCwgUENJX1JPTV9BRERSRVNTKTsKLQkJUFJJTlQoIiAgaW50ZXJydXB0IGxpbmUgPSAgICAgICAgICAgICAgMHglLjJ4XG4iLCBieXRlLCBQQ0lfSU5URVJSVVBUX0xJTkUpOwotCQlQUklOVCgiICBpbnRlcnJ1cHQgcGluID0gICAgICAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9JTlRFUlJVUFRfUElOKTsKLQkJUFJJTlQoIiAgbWluIEdyYW50ID0gICAgICAgICAgICAgICAgICAgMHglLjJ4XG4iLCBieXRlLCBQQ0lfTUlOX0dOVCk7Ci0JCVBSSU5UKCIgIG1heCBMYXRlbmN5ID0gICAgICAgICAgICAgICAgIDB4JS4yeFxuIiwgYnl0ZSwgUENJX01BWF9MQVQpOworCQlicmVhazsKKworCWNhc2UgUENJX0hFQURFUl9UWVBFX0NBUkRCVVM6CS8qIFBDSS10by1DYXJkQnVzIGJyaWRnZSAqLworCisJCVBSSU5UICgiICBjYXBhYmlsaXRpZXMgPSAgICAgICAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9DQl9DQVBBQklMSVRZX0xJU1QpOworCQlQUklOVCAoIiAgc2Vjb25kYXJ5IHN0YXR1cyA9ICAgICAgICAgICAgMHglLjR4XG4iLCB3b3JkLCBQQ0lfQ0JfU0VDX1NUQVRVUyk7CisJCVBSSU5UICgiICBwcmltYXJ5IGJ1cyBudW1iZXIgPSAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9DQl9QUklNQVJZX0JVUyk7CisJCVBSSU5UICgiICBDYXJkQnVzIG51bWJlciA9ICAgICAgICAgICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9DQl9DQVJEX0JVUyk7CisJCVBSSU5UICgiICBzdWJvcmRpbmF0ZSBidXMgbnVtYmVyID0gICAgICAweCUuMnhcbiIsIGJ5dGUsIFBDSV9DQl9TVUJPUkRJTkFURV9CVVMpOworCQlQUklOVCAoIiAgQ2FyZEJ1cyBsYXRlbmN5IHRpbWVyID0gICAgICAgMHglLjJ4XG4iLCBieXRlLCBQQ0lfQ0JfTEFURU5DWV9USU1FUik7CQkKKwkJUFJJTlQgKCIgIENhcmRCdXMgbWVtb3J5IGJhc2UgMCA9ICAgICAgIDB4JS44eFxuIiwgZHdvcmQsIFBDSV9DQl9NRU1PUllfQkFTRV8wKTsKKwkJUFJJTlQgKCIgIENhcmRCdXMgbWVtb3J5IGxpbWl0IDAgPSAgICAgIDB4JS44eFxuIiwgZHdvcmQsIFBDSV9DQl9NRU1PUllfTElNSVRfMCk7CisJCVBSSU5UICgiICBDYXJkQnVzIG1lbW9yeSBiYXNlIDEgPSAgICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQ0JfTUVNT1JZX0JBU0VfMSk7CisJCVBSSU5UICgiICBDYXJkQnVzIG1lbW9yeSBsaW1pdCAxID0gICAgICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQ0JfTUVNT1JZX0xJTUlUXzEpOworCQlQUklOVCAoIiAgQ2FyZEJ1cyBJTyBiYXNlIDAgPSAgICAgICAgICAgMHglLjR4XG4iLCB3b3JkLCBQQ0lfQ0JfSU9fQkFTRV8wKTsKKwkJUFJJTlQgKCIgIENhcmRCdXMgSU8gYmFzZSBoaWdoIDAgPSAgICAgIDB4JS40eFxuIiwgd29yZCwgUENJX0NCX0lPX0JBU0VfMF9ISSk7CisJCVBSSU5UICgiICBDYXJkQnVzIElPIGxpbWl0IDAgPSAgICAgICAgICAweCUuNHhcbiIsIHdvcmQsIFBDSV9DQl9JT19MSU1JVF8wKTsKKwkJUFJJTlQgKCIgIENhcmRCdXMgSU8gbGltaXQgaGlnaCAwID0gICAgIDB4JS40eFxuIiwgd29yZCwgUENJX0NCX0lPX0xJTUlUXzBfSEkpOworCQlQUklOVCAoIiAgQ2FyZEJ1cyBJTyBiYXNlIDEgPSAgICAgICAgICAgMHglLjR4XG4iLCB3b3JkLCBQQ0lfQ0JfSU9fQkFTRV8xKTsKKwkJUFJJTlQgKCIgIENhcmRCdXMgSU8gYmFzZSBoaWdoIDEgPSAgICAgIDB4JS40eFxuIiwgd29yZCwgUENJX0NCX0lPX0JBU0VfMV9ISSk7CisJCVBSSU5UICgiICBDYXJkQnVzIElPIGxpbWl0IDEgPSAgICAgICAgICAweCUuNHhcbiIsIHdvcmQsIFBDSV9DQl9JT19MSU1JVF8xKTsKKwkJUFJJTlQgKCIgIENhcmRCdXMgSU8gbGltaXQgaGlnaCAxID0gICAgIDB4JS40eFxuIiwgd29yZCwgUENJX0NCX0lPX0xJTUlUXzFfSEkpOworCQlQUklOVCAoIiAgaW50ZXJydXB0IGxpbmUgPSAgICAgICAgICAgICAgMHglLjJ4XG4iLCBieXRlLCBQQ0lfSU5URVJSVVBUX0xJTkUpOworCQlQUklOVCAoIiAgaW50ZXJydXB0IHBpbiA9ICAgICAgICAgICAgICAgMHglLjJ4XG4iLCBieXRlLCBQQ0lfSU5URVJSVVBUX1BJTik7CisJCVBSSU5UICgiICBicmlkZ2UgY29udHJvbCA9ICAgICAgICAgICAgICAweCUuNHhcbiIsIHdvcmQsIFBDSV9DQl9CUklER0VfQ09OVFJPTCk7CisJCVBSSU5UICgiICBzdWJ2ZW5kb3IgSUQgPSAgICAgICAgICAgICAgICAweCUuNHhcbiIsIHdvcmQsIFBDSV9DQl9TVUJTWVNURU1fVkVORE9SX0lEKTsKKwkJUFJJTlQgKCIgIHN1YmRldmljZSBJRCA9ICAgICAgICAgICAgICAgIDB4JS40eFxuIiwgd29yZCwgUENJX0NCX1NVQlNZU1RFTV9JRCk7CisJCVBSSU5UICgiICBQQyBDYXJkIDE2Yml0IGJhc2UgYWRkcmVzcyA9ICAweCUuOHhcbiIsIGR3b3JkLCBQQ0lfQ0JfTEVHQUNZX01PREVfQkFTRSk7CisJCWJyZWFrOworCQkKKwlkZWZhdWx0OgorCQlwcmludGYoInVua25vd24gaGVhZGVyXG4iKTsKKwkJYnJlYWs7CQogICAgIH0KIAogI3VuZGVmIFBSSU5UCmRpZmYgLS1naXQgYS9jb21tb24vZW52X2NvbW1vbi5jIGIvY29tbW9uL2Vudl9jb21tb24uYwppbmRleCBiZDIyZTE1Li40ZjYxOGQ2IDEwMDY0NAotLS0gYS9jb21tb24vZW52X2NvbW1vbi5jCisrKyBiL2NvbW1vbi9lbnZfY29tbW9uLmMKQEAgLTE1Niw5ICsxNTYsMjQgQEAKIAlyZXR1cm4gKGMpOwogfQogCisjaWZkZWYgQ09ORklHX0FNSUdBT05FRzNTRQogdWNoYXIgZW52X2dldF9jaGFyX21lbW9yeSAoaW50IGluZGV4KQogewogCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCXVjaGFyIHJldHZhbDsKKwllbmFibGVfbnZyYW0oKTsKKwlpZiAoZ2QtPmVudl92YWxpZCkgeworCQlyZXR2YWwgPSAoICooKHVjaGFyICopKGdkLT5lbnZfYWRkciArIGluZGV4KSkgKTsKKwl9IGVsc2UgeworCQlyZXR2YWwgPSAoIGRlZmF1bHRfZW52aXJvbm1lbnRbaW5kZXhdICk7CisJfQorCWRpc2FibGVfbnZyYW0oKTsKKwlyZXR1cm4gcmV0dmFsOworfQorI2Vsc2UKK3VjaGFyIGVudl9nZXRfY2hhcl9tZW1vcnkgKGludCBpbmRleCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAogCWlmIChnZC0+ZW52X3ZhbGlkKSB7CiAJCXJldHVybiAoICooKHVjaGFyICopKGdkLT5lbnZfYWRkciArIGluZGV4KSkgKTsKQEAgLTE2Niw2ICsxODEsNyBAQAogCQlyZXR1cm4gKCBkZWZhdWx0X2Vudmlyb25tZW50W2luZGV4XSApOwogCX0KIH0KKyNlbmRpZgogCiB1Y2hhciAqZW52X2dldF9hZGRyIChpbnQgaW5kZXgpCiB7CmRpZmYgLS1naXQgYS9jb21tb24vZW52X252cmFtLmMgYi9jb21tb24vZW52X252cmFtLmMKaW5kZXggZmRmYTRmYy4uNzZlODQzOCAxMDA2NDQKLS0tIGEvY29tbW9uL2Vudl9udnJhbS5jCisrKyBiL2NvbW1vbi9lbnZfbnZyYW0uYwpAQCAtNjYsNyArNjYsMjUgQEAKIGV4dGVybiB1Y2hhciAoKmVudl9nZXRfY2hhcikoaW50KTsKIGV4dGVybiB1Y2hhciBlbnZfZ2V0X2NoYXJfbWVtb3J5IChpbnQgaW5kZXgpOwogCisjaWZkZWYgQ09ORklHX0FNSUdBT05FRzNTRQordWNoYXIgZW52X2dldF9jaGFyX3NwZWMgKGludCBpbmRleCkKK3sKKyNpZmRlZiBDRkdfTlZSQU1fQUNDRVNTX1JPVVRJTkUKKwl1Y2hhciBjOworCisJbnZyYW1fcmVhZCgmYywgQ0ZHX0VOVl9BRERSK2luZGV4LCAxKTsKIAorCXJldHVybiBjOworI2Vsc2UKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKwl1Y2hhciByZXR2YWw7CisJZW5hYmxlX252cmFtKCk7CisJcmV0dmFsID0gKigodWNoYXIgKikoZ2QtPmVudl9hZGRyICsgaW5kZXgpKTsKKwlkaXNhYmxlX252cmFtKCk7CisJcmV0dXJuIHJldHZhbDsKKyNlbmRpZgorfQorI2Vsc2UKIHVjaGFyIGVudl9nZXRfY2hhcl9zcGVjIChpbnQgaW5kZXgpCiB7CiAjaWZkZWYgQ0ZHX05WUkFNX0FDQ0VTU19ST1VUSU5FCkBAIC04MSw2ICs5OSw3IEBACiAJcmV0dXJuICooKHVjaGFyICopKGdkLT5lbnZfYWRkciArIGluZGV4KSk7CiAjZW5kaWYKIH0KKyNlbmRpZgogCiB2b2lkIGVudl9yZWxvY2F0ZV9zcGVjICh2b2lkKQogewpAQCAtOTQsMTMgKzExMywxOSBAQAogaW50IHNhdmVlbnYgKHZvaWQpCiB7CiAJaW50IHJjb2RlID0gMDsKLQorI2lmZGVmIENPTkZJR19BTUlHQU9ORUczU0UKKwllbmFibGVfbnZyYW0oKTsKKyNlbmRpZgogI2lmZGVmIENGR19OVlJBTV9BQ0NFU1NfUk9VVElORQogCW52cmFtX3dyaXRlKENGR19FTlZfQUREUiwgZW52X3B0ciwgQ0ZHX0VOVl9TSVpFKTsKICNlbHNlCiAJaWYgKG1lbWNweSAoKGNoYXIgKilDRkdfRU5WX0FERFIsIGVudl9wdHIsIENGR19FTlZfU0laRSkgPT0gTlVMTCkKIAkJICAgIHJjb2RlID0gMSA7CiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfQU1JR0FPTkVHM1NFCisJdWRlbGF5KDEwMDAwKTsKKwlkaXNhYmxlX252cmFtKCk7CisjZW5kaWYKIAlyZXR1cm4gcmNvZGU7CiB9CiAKQEAgLTExMyw3ICsxMzgsOSBAQAogaW50IGVudl9pbml0ICh2b2lkKQogewogCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwotCisjaWZkZWYgQ09ORklHX0FNSUdBT05FRzNTRQorCWVuYWJsZV9udnJhbSgpOworI2VuZGlmCiAjaWYgZGVmaW5lZChDRkdfTlZSQU1fQUNDRVNTX1JPVVRJTkUpCiAJdWxvbmcgY3JjOwogCXVjaGFyIGRhdGFbRU5WX1NJWkVdOwpAQCAtMTMxLDcgKzE1OCw5IEBACiAJCWdkLT5lbnZfYWRkciAgPSAodWxvbmcpJmRlZmF1bHRfZW52aXJvbm1lbnRbMF07CiAJCWdkLT5lbnZfdmFsaWQgPSAwOwogCX0KLQorI2lmZGVmIENPTkZJR19BTUlHQU9ORUczU0UKKwlkaXNhYmxlX252cmFtKCk7CisjZW5kaWYKIAlyZXR1cm4gKDApOwogfQogCmRpZmYgLS1naXQgYS9jcHUvNzR4eF83eHgvc3RhcnQuUyBiL2NwdS83NHh4Xzd4eC9zdGFydC5TCmluZGV4IGZlMDhmOGUuLjBkNjMxNDQgMTAwNjQ0Ci0tLSBhL2NwdS83NHh4Xzd4eC9zdGFydC5TCisrKyBiL2NwdS83NHh4Xzd4eC9zdGFydC5TCkBAIC0xNzcsNyArMTc3LDE0IEBACiAJYWRkCXIxMSxyMTEscjAKIAlsd3oJcjExLDAocjExKQogCi0JbGkJcjEyLDB4ZDAwLTQqMwkJLyogc2F2ZSBMUiAmIFNSUnggKi8KKwlsaQlyMjAsMHhkMDAtNAkJLyogR2V0IHN0YWNrIHBvaW50ZXIgKi8KKwlsd3oJcjEyLDAocjIwKQorCXN1YmkJcjEyLHIxMiwxMgkJLyogQWRqdXN0IHN0YWNrIHBvaW50ZXIgKi8KKwlsaQlyMCwweGMwMCtfZW5kX2JhY2stU3lzdGVtQ2FsbAorCWNtcGx3CTAsIHIwLCByMTIJCS8qIENoZWNrIHN0YWNrIG92ZXJmbG93ICovCisJYmd0CTFmCisJc3R3CXIxMiwwKHIyMCkKKwogCW1mbHIJcjAKIAlzdHcJcjAsMChyMTIpCiAJbWZzcHIJcjAsU1JSMApAQCAtMjAyLDcgKzIwOSw5IEBACiAJbXRtc3IJcjExCiAJU1lOQwogCisJbGkJcjEyLDB4ZDAwLTQJCS8qIHJlc3RvcmUgcmVncyAqLworCWx3eglyMTIsMChyMTIpCisKLQlsaQlyMTIsMHhkMDAtNCozCQkvKiByZXN0b3JlIHJlZ3MgKi8KIAlsd3oJcjExLDAocjEyKQogCW10bHIJcjExCiAJbHd6CXIxMSw0KHIxMikKQEAgLTIxMCw4ICsyMTksMTMgQEAKIAlsd3oJcjExLDgocjEyKQogCW10c3ByCVNSUjEscjExCiAKKwlhZGRpCXIxMixyMTIsMTIJCS8qIEFkanVzdCBzdGFjayBwb2ludGVyICovCisJbGkJcjIwLDB4ZDAwLTQKKwlzdHcJcjEyLDAocjIwKQorCiAJU1lOQwogCXJmaQorX2VuZF9iYWNrOgogCiAJU1REX0VYQ0VQVElPTigweGQwMCwgU2luZ2xlU3RlcCwgVW5rbm93bkV4Y2VwdGlvbikKIApAQCAtNzE2LDYgKzczMCw5IEBACiAJYm5lCTViCiA2OgogCW1yCXIzLCByMTAJCS8qIERlc3RpbmF0aW9uIEFkZHJlc3MJCSovCisjaWZkZWYgQ09ORklHX0FNSUdBT05FRzNTRQorCW1yCXI0LCByOQkJLyogVXNlIFJBTSBjb3B5IG9mIHRoZSBnbG9iYWwgZGF0YSAqLworI2VuZGlmCiAJYmwJYWZ0ZXJfcmVsb2MKIAogCS8qIG5vdCByZWFjaGVkIC0gZW5kIHJlbG9jYXRlX2NvZGUgKi8KZGlmZiAtLWdpdCBhL2NwdS9tcGM4MjR4L2RyaXZlcnMvZXBpYy9lcGljLmggYi9jcHUvbXBjODI0eC9kcml2ZXJzL2VwaWMvZXBpYy5oCmluZGV4IDc3NTFkYjIuLjE3ZTRhZmIgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4MjR4L2RyaXZlcnMvZXBpYy9lcGljLmgKKysrIGIvY3B1L21wYzgyNHgvZHJpdmVycy9lcGljL2VwaWMuaApAQCAtMTA4LDYgKzEwOCw5IEBACiAjZGVmaW5lIEVQSUNfUFJPQ19JTlRfQUNLX1JFRyAoRVBJQ19FVU1CQkFSICsgMHgyMDBhMCkvKiBJbnQuIGFja25vd2xlZGdlICovCiAjZGVmaW5lIEVQSUNfUFJPQ19FT0lfUkVHIChFUElDX0VVTUJCQVIgKyAweDIwMGIwKS8qIEVuZCBvZiBpbnRlcnJ1cHQgKi8KIAorI2RlZmluZSBFUElDX1ZFQ19QUklfTUFTSyAgICAgIDB4ODAwMDAwMDAgLyogTWFzayBJbnRlcnJ1cHQgYml0IGluIElWUFIgKi8KKyNkZWZpbmUgRVBJQ19WRUNfUFJJX0RGTFRfUFJJICA4ICAgICAgICAgIC8qIEludGVycnVwdCBQcmlvcml0eSBpbiBJVlBSICovCisKIC8qIEVycm9yIGNvZGUgKi8KIAogI2RlZmluZSBPSyAgICAgICAwCmRpZmYgLS1naXQgYS9jcHUvbXBjODI0eC9kcml2ZXJzL2VwaWMvZXBpYzEuYyBiL2NwdS9tcGM4MjR4L2RyaXZlcnMvZXBpYy9lcGljMS5jCmluZGV4IDM2MmUxMjkuLmViN2VkNDAgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4MjR4L2RyaXZlcnMvZXBpYy9lcGljMS5jCisrKyBiL2NwdS9tcGM4MjR4L2RyaXZlcnMvZXBpYy9lcGljMS5jCkBAIC03MCw2ICs3MCwxMCBAQAogICAgIHRtcCA9IHN5c0VVTUJCQVJSZWFkKEVQSUNfR0xPQkFMX1JFRyk7CiAgICAgdG1wIHw9IDB4YTAwMDAwMDA7ICAgICAgICAgICAgICAgICAgLyogU2V0IHRoZSBHbG9iYWwgQ29uZi4gcmVnaXN0ZXIgKi8KICAgICBzeXNFVU1CQkFSV3JpdGUoRVBJQ19HTE9CQUxfUkVHLCB0bXApOworCS8qCisJICogV2FpdCBmb3IgRVBJQyB0byByZXNldCAtIENMSAorCSAqLworICAgIHdoaWxlKCAoc3lzRVVNQkJBUlJlYWQoRVBJQ19HTE9CQUxfUkVHKSAmIDB4ODAwMDAwMDApID09IDEpOwogICAgIHN5c0VVTUJCQVJXcml0ZShFUElDX0dMT0JBTF9SRUcsIDB4MjAwMDAwMDApOwogICAgIHRtcCA9IHN5c0VVTUJCQVJSZWFkKEVQSUNfSU5UX0NPTkZfUkVHKTsgICAgLyogUmVhZCBpbnRlcnJ1cHQgY29uZi4gcmVnICovCiAKQEAgLTgxLDcgKzg1LDggQEAKICAgICAgICAgc3lzRVVNQkJBUldyaXRlKEVQSUNfSU5UX0NPTkZfUkVHLCB0bXApOwogICAgICAgICB9CiAKLSAgICB3aGlsZSAoZXBpY0ludEFjaygpICE9IDB4ZmYpOyAgICAgICAvKiBDbGVhciBhbGwgcGVuZGluZyBpbnRlcnJ1cHRzICovCisgICAgd2hpbGUgKGVwaWNJbnRBY2soKSAhPSAweGZmKSAgICAgICAvKiBDbGVhciBhbGwgcGVuZGluZyBpbnRlcnJ1cHRzICovCisJCWVwaWNFT0koKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTkyLDE4ICs5NywxOCBAQAogICoKICAqICBSRVRVUk5TOiAgTm9uZQogICovCi12b2lkIGVwaWNJbnRFbmFibGUKLSAgICAoCi0gICAgaW50IGludFZlYyAgICAgICAgLyogSW50ZXJydXB0IFZlY3RvciBOdW1iZXIgKi8KLSAgICApCi0gICAgewordm9pZCBlcGljSW50RW5hYmxlKGludCBpbnRWZWMpCit7CiAgICAgVUxPTkcgdG1wOwogICAgIFVMT05HIHNyQWRkcjsKIAogICAgIHNyQWRkciA9IFNyY1ZlY1RhYmxlW2ludFZlY10uc3JjQWRkcjsgIC8qIFJldHJpZXZlIHNyYyBWZWMvUHJpbyByZWdpc3RlciAqLwogICAgIHRtcCA9IHN5c0VVTUJCQVJSZWFkKHNyQWRkcik7Ci0gICAgdG1wICY9IDB4N2ZmZmZmZmY7ICAgICAgICAgICAgIC8qIENsZWFyIHRoZSBtYXNrIGJpdCAqLworICAgIHRtcCAmPSB+RVBJQ19WRUNfUFJJX01BU0s7ICAgICAgICAgICAgIC8qIENsZWFyIHRoZSBtYXNrIGJpdCAqLworICAgIHRtcCB8PSAoRVBJQ19WRUNfUFJJX0RGTFRfUFJJIDw8IDE2KTsgICAvKiBTZXQgcHJpb3JpdHkgdG8gRGVmYXVsdCAtIENMSCAqLworICAgIHRtcCB8PSBpbnRWZWM7CQkJCSAgICAgICAgICAgLyogU2V0IFZlY3RvciBudW1iZXIgKi8KICAgICBzeXNFVU1CQkFSV3JpdGUoc3JBZGRyLCB0bXApOworCiAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvY3B1L21wYzgyNHgvaW50ZXJydXB0cy5jIGIvY3B1L21wYzgyNHgvaW50ZXJydXB0cy5jCmluZGV4IDIwMTE2NzEuLjEyODQxYjMgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4MjR4L2ludGVycnVwdHMuYworKysgYi9jcHUvbXBjODI0eC9pbnRlcnJ1cHRzLmMKQEAgLTkyLDYgKzkyLDggQEAKIAkgKi8KIAogCWVwaWNJbml0IChFUElDX0RJUkVDVF9JUlEsIDApOworCS8qIEVQSUMgd29uJ3QgZ2VuZXJhdGUgSU5UIHVubGVzcyBDdXJyZW50IFRhc2sgUHJpIDwgMTUgKi8KKwllcGljQ3VyVGFza1ByaW9TZXQoMCk7CiAKIAlzZXRfZGVjIChkZWNyZW1lbnRlcl9jb3VudCk7CiAKZGlmZiAtLWdpdCBhL2NwdS9tcGM4MjR4L3N0YXJ0LlMgYi9jcHUvbXBjODI0eC9zdGFydC5TCmluZGV4IGJkOTcwNmQuLjE4YjhlNjEgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4MjR4L3N0YXJ0LlMKKysrIGIvY3B1L21wYzgyNHgvc3RhcnQuUwpAQCAtMjc4LDcgKzI3OCwxNCBAQAogCWFkZAlyMTEscjExLHIwCiAJbHd6CXIxMSwwKHIxMSkKIAotCWxpCXIxMiwweGQwMC00KjMJCS8qIHNhdmUgTFIgJiBTUlJ4ICovCisJbGkJcjIwLDB4ZDAwLTQJCS8qIEdldCBzdGFjayBwb2ludGVyICovCisJbHd6CXIxMiwwKHIyMCkKKwlzdWJpCXIxMixyMTIsMTIJCS8qIEFkanVzdCBzdGFjayBwb2ludGVyICovCisJbGkJcjAsMHhjMDArX2VuZF9iYWNrLVN5c3RlbUNhbGwKKwljbXBsdwkwLCByMCwgcjEyCQkvKiBDaGVjayBzdGFjayBvdmVyZmxvdyAqLworCWJndAkxZgorCXN0dwlyMTIsMChyMjApCisKIAltZmxyCXIwCiAJc3R3CXIwLDAocjEyKQogCW1mc3ByCXIwLFNSUjAKQEAgLTMwMyw3ICszMTAsOSBAQAogCW10bXNyCXIxMQogCVNZTkMKIAotCWxpCXIxMiwweGQwMC00KjMJCS8qIHJlc3RvcmUgcmVncyAqLworCWxpCXIxMiwweGQwMC00CQkvKiByZXN0b3JlIHJlZ3MgKi8KKwlsd3oJcjEyLDAocjEyKQorCiAJbHd6CXIxMSwwKHIxMikKIAltdGxyCXIxMQogCWx3eglyMTEsNChyMTIpCkBAIC0zMTEsOCArMzIwLDEzIEBACiAJbHd6CXIxMSw4KHIxMikKIAltdHNwcglTUlIxLHIxMQogCisJYWRkaQlyMTIscjEyLDEyCQkvKiBBZGp1c3Qgc3RhY2sgcG9pbnRlciAqLworCWxpCXIyMCwweGQwMC00CisJc3R3CXIxMiwwKHIyMCkKKwogCVNZTkMKIAlyZmkKK19lbmRfYmFjazoKIAogCVNURF9FWENFUFRJT04oRVhDX09GRl9UUkFDRSwgU2luZ2xlU3RlcCwgVW5rbm93bkV4Y2VwdGlvbikKIApkaWZmIC0tZ2l0IGEvY3B1L21wYzgyNjAvc3RhcnQuUyBiL2NwdS9tcGM4MjYwL3N0YXJ0LlMKaW5kZXggMTBhODk4OC4uZDc5YzU3OCAxMDA2NDQKLS0tIGEvY3B1L21wYzgyNjAvc3RhcnQuUworKysgYi9jcHUvbXBjODI2MC9zdGFydC5TCkBAIC0zMjQsNyArMzI0LDE0IEBACiAJYWRkCXIxMSxyMTEscjAKIAlsd3oJcjExLDAocjExKQogCi0JbGkJcjEyLDB4ZDAwLTQqMwkJLyogc2F2ZSBMUiAmIFNSUnggKi8KKwlsaQlyMjAsMHhkMDAtNAkJLyogR2V0IHN0YWNrIHBvaW50ZXIgKi8KKwlsd3oJcjEyLDAocjIwKQorCXN1YmkJcjEyLHIxMiwxMgkJLyogQWRqdXN0IHN0YWNrIHBvaW50ZXIgKi8KKwlsaQlyMCwweGMwMCtfZW5kX2JhY2stU3lzdGVtQ2FsbAorCWNtcGx3CTAsIHIwLCByMTIJCS8qIENoZWNrIHN0YWNrIG92ZXJmbG93ICovCisJYmd0CTFmCisJc3R3CXIxMiwwKHIyMCkKKwogCW1mbHIJcjAKIAlzdHcJcjAsMChyMTIpCiAJbWZzcHIJcjAsU1JSMApAQCAtMzQ5LDcgKzM1Niw5IEBACiAJbXRtc3IJcjExCiAJU1lOQwogCi0JbGkJcjEyLDB4ZDAwLTQqMwkJLyogcmVzdG9yZSByZWdzICovCisJbGkJcjEyLDB4ZDAwLTQJCS8qIHJlc3RvcmUgcmVncyAqLworCWx3eglyMTIsMChyMTIpCisKIAlsd3oJcjExLDAocjEyKQogCW10bHIJcjExCiAJbHd6CXIxMSw0KHIxMikKQEAgLTM1Nyw4ICszNjYsMTMgQEAKIAlsd3oJcjExLDgocjEyKQogCW10c3ByCVNSUjEscjExCiAKKwlhZGRpCXIxMixyMTIsMTIJCS8qIEFkanVzdCBzdGFjayBwb2ludGVyICovCisJbGkJcjIwLDB4ZDAwLTQKKwlzdHcJcjEyLDAocjIwKQorCiAJU1lOQwogCXJmaQorX2VuZF9iYWNrOgogCiAJU1REX0VYQ0VQVElPTigweGQwMCwgU2luZ2xlU3RlcCwgVW5rbm93bkV4Y2VwdGlvbikKIApkaWZmIC0tZ2l0IGEvY3B1L21wYzh4eC9pbnRlcnJ1cHRzLmMgYi9jcHUvbXBjOHh4L2ludGVycnVwdHMuYwppbmRleCA1N2ZmNGRkLi44NjY0ODI2IDEwMDY0NAotLS0gYS9jcHUvbXBjOHh4L2ludGVycnVwdHMuYworKysgYi9jcHUvbXBjOHh4L2ludGVycnVwdHMuYwpAQCAtMjgsOTkgKzI4LDEwNCBAQAogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxjb21tcHJvYy5oPgogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXVuc2lnbmVkIGRlY3JlbWVudGVyX2NvdW50OwkJLyogY291bnQgdmFsdWUgZm9yIDFlNi9IWiBtaWNyb3NlY29uZHMgKi8KK3Vuc2lnbmVkIGRlY3JlbWVudGVyX2NvdW50OwkvKiBjb3VudCB2YWx1ZSBmb3IgMWU2L0haIG1pY3Jvc2Vjb25kcwkqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCiAgKiBDUE0gaW50ZXJydXB0IHZlY3RvciBmdW5jdGlvbnMuCiAgKi8KLXN0cnVjdAljcG1fYWN0aW9uIHsKLQkgaW50ZXJydXB0X2hhbmRsZXJfdCAqaGFuZGxlcjsKLQkgdm9pZCAqYXJnOworc3RydWN0IGludGVycnVwdF9hY3Rpb24geworCWludGVycnVwdF9oYW5kbGVyX3QgKmhhbmRsZXI7CisJdm9pZCAqYXJnOwogfTsKIAotc3RhdGljIHN0cnVjdCBjcG1fYWN0aW9uIGNwbV92ZWNzW0NQTVZFQ19OUl07CitzdGF0aWMgc3RydWN0IGludGVycnVwdF9hY3Rpb24gY3BtX3ZlY3NbQ1BNVkVDX05SXTsKK3N0YXRpYyBzdHJ1Y3QgaW50ZXJydXB0X2FjdGlvbiBpcnFfdmVjc1tOUl9JUlFTXTsKIAogc3RhdGljIHZvaWQgY3BtX2ludGVycnVwdF9pbml0ICh2b2lkKTsKLXN0YXRpYyB2b2lkIGNwbV9pbnRlcnJ1cHQoaW50IGlycSwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKK3N0YXRpYyB2b2lkIGNwbV9pbnRlcnJ1cHQgKHZvaWQgKnJlZ3MpOwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgZ2V0X21zcih2b2lkKQorc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBnZXRfbXNyICh2b2lkKQogewotICAgIHVuc2lnbmVkIGxvbmcgbXNyOworCXVuc2lnbmVkIGxvbmcgbXNyOwogCi0gICAgYXNtIHZvbGF0aWxlKCJtZm1zciAlMCIgOiAiPXIiIChtc3IpIDopOwotICAgIHJldHVybiBtc3I7CisJYXNtIHZvbGF0aWxlICgibWZtc3IgJTAiOiI9ciIgKG1zcik6KTsKKworCXJldHVybiBtc3I7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X21zcih1bnNpZ25lZCBsb25nIG1zcikKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X21zciAodW5zaWduZWQgbG9uZyBtc3IpCiB7Ci0gICAgYXNtIHZvbGF0aWxlKCJtdG1zciAlMCIgOiA6ICJyIiAobXNyKSk7CisJYXNtIHZvbGF0aWxlICgibXRtc3IgJTAiOjoiciIgKG1zcikpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGdldF9kZWModm9pZCkKK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgZ2V0X2RlYyAodm9pZCkKIHsKLSAgICB1bnNpZ25lZCBsb25nIHZhbDsKKwl1bnNpZ25lZCBsb25nIHZhbDsKKworCWFzbSB2b2xhdGlsZSAoIm1mZGVjICUwIjoiPXIiICh2YWwpOik7CiAKLSAgICBhc20gdm9sYXRpbGUoIm1mZGVjICUwIiA6ICI9ciIgKHZhbCkgOik7Ci0gICAgcmV0dXJuIHZhbDsKKwlyZXR1cm4gdmFsOwogfQogCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RlYyh1bnNpZ25lZCBsb25nIHZhbCkKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RlYyAodW5zaWduZWQgbG9uZyB2YWwpCiB7Ci0gICAgYXNtIHZvbGF0aWxlKCJtdGRlYyAlMCIgOiA6ICJyIiAodmFsKSk7CisJYXNtIHZvbGF0aWxlICgibXRkZWMgJTAiOjoiciIgKHZhbCkpOwogfQogCiAKIHZvaWQgZW5hYmxlX2ludGVycnVwdHMgKHZvaWQpCiB7Ci0Jc2V0X21zciAoZ2V0X21zcigpIHwgTVNSX0VFKTsKKwlzZXRfbXNyIChnZXRfbXNyICgpIHwgTVNSX0VFKTsKIH0KIAogLyogcmV0dXJucyBmbGFnIGlmIE1TUl9FRSB3YXMgc2V0IGJlZm9yZSAqLwogaW50IGRpc2FibGVfaW50ZXJydXB0cyAodm9pZCkKIHsKLQl1bG9uZyBtc3IgPSBnZXRfbXNyKCk7CisJdWxvbmcgbXNyID0gZ2V0X21zciAoKTsKKwogCXNldF9tc3IgKG1zciAmIH5NU1JfRUUpOwogCXJldHVybiAoKG1zciAmIE1TUl9FRSkgIT0gMCk7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotaW50IGludGVycnVwdF9pbml0KHZvaWQpCitpbnQgaW50ZXJydXB0X2luaXQgKHZvaWQpCiB7Ci0Jdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopQ0ZHX0lNTVI7CisJdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopIENGR19JTU1SOwogCi0JZGVjcmVtZW50ZXJfY291bnQgPSBnZXRfdGJjbGsoKSAvIENGR19IWjsKKwlkZWNyZW1lbnRlcl9jb3VudCA9IGdldF90YmNsayAoKSAvIENGR19IWjsKIAotCWNwbV9pbnRlcnJ1cHRfaW5pdCgpOworCS8qIGRpc2FibGUgYWxsIGludGVycnVwdHMgKi8KKwlpbW1yLT5pbV9zaXVfY29uZi5zY19zaW1hc2sgPSAwOwogCi0JLyogZGlzYWJsZSBhbGwgaW50ZXJydXB0cyBleGNlcHQgZm9yIHRoZSBDUE0gaW50ZXJydXB0ICovCi0JaW1tci0+aW1fc2l1X2NvbmYuc2Nfc2ltYXNrID0gMSA8PCAoMzEtQ1BNX0lOVEVSUlVQVCk7CisJLyogQ29uZmlndXJlIENQTSBpbnRlcnJ1cHRzICovCisJY3BtX2ludGVycnVwdF9pbml0ICgpOwogCiAJc2V0X2RlYyAoZGVjcmVtZW50ZXJfY291bnQpOwogCi0Jc2V0X21zciAoZ2V0X21zcigpIHwgTVNSX0VFKTsKKwlzZXRfbXNyIChnZXRfbXNyICgpIHwgTVNSX0VFKTsKIAogCXJldHVybiAoMCk7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKICAqIEhhbmRsZSBleHRlcm5hbCBpbnRlcnJ1cHRzCiAgKi8KLXZvaWQgZXh0ZXJuYWxfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQordm9pZCBleHRlcm5hbF9pbnRlcnJ1cHQgKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAoaW1tYXBfdCAqKUNGR19JTU1SOwotCWludAlpcnE7Ci0JdWxvbmcJc2ltYXNrLCBuZXdtYXNrOwotCXVsb25nCXZlYywgdl9iaXQ7CisJdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopIENGR19JTU1SOworCWludCBpcnE7CisJdWxvbmcgc2ltYXNrLCBuZXdtYXNrOworCXVsb25nIHZlYywgdl9iaXQ7CiAKIAkvKgogCSAqIHJlYWQgdGhlIFNJVkVDIHJlZ2lzdGVyIGFuZCBzaGlmdCB0aGUgYml0cyBkb3duCkBAIC0xMzcsMTQgKzE0MiwxNSBAQAogCW5ld21hc2sgPSBzaW1hc2sgJiAofigweEZGRkYwMDAwID4+IGlycSkpOwogCWltbXItPmltX3NpdV9jb25mLnNjX3NpbWFzayA9IG5ld21hc2s7CiAKLQlpZiAoIShpcnEgJiAweDEpKSB7CQkJLyogRXh0ZXJuYWwgSW50ZXJydXB0ID8JCSovCisJaWYgKCEoaXJxICYgMHgxKSkgewkJLyogRXh0ZXJuYWwgSW50ZXJydXB0ID8gICAgICovCiAJCXVsb25nIHNpZWw7CisKIAkJLyoKIAkJICogUmVhZCBJbnRlcnJ1cHQgRWRnZS9MZXZlbCBSZWdpc3RlcgogCQkgKi8KIAkJc2llbCA9IGltbXItPmltX3NpdV9jb25mLnNjX3NpZWw7CiAKLQkJaWYgKHNpZWwgJiB2X2JpdCkgewkJLyogZWRnZSB0cmlnZ2VyZWQgaW50ZXJydXB0ID8JKi8KKwkJaWYgKHNpZWwgJiB2X2JpdCkgewkvKiBlZGdlIHRyaWdnZXJlZCBpbnRlcnJ1cHQgPyAgICovCiAJCQkvKgogCQkJICogUmV3cml0ZSBTSVBFTkQgUmVnaXN0ZXIgdG8gY2xlYXIgaW50ZXJydXB0CiAJCQkgKi8KQEAgLTE1MiwzNCArMTU4LDI5IEBACiAJCX0KIAl9CiAKLQlzd2l0Y2ggKGlycSkgewotCWNhc2UgQ1BNX0lOVEVSUlVQVDoKLQkJY3BtX2ludGVycnVwdCAoaXJxLCByZWdzKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKKwlpZiAoaXJxX3ZlY3NbaXJxXS5oYW5kbGVyICE9IE5VTEwpIHsKKwkJaXJxX3ZlY3NbaXJxXS5oYW5kbGVyIChpcnFfdmVjc1tpcnFdLmFyZyk7CisJfSBlbHNlIHsKIAkJcHJpbnRmICgiXG5Cb2d1cyBFeHRlcm5hbCBJbnRlcnJ1cHQgSVJRICVkIFZlY3RvciAlbGRcbiIsCi0JCQlpcnEsIHZlYyk7CisJCQkJaXJxLCB2ZWMpOwogCQkvKiB0dXJuIG9mZiB0aGUgYm9ndXMgaW50ZXJydXB0IHRvIGF2b2lkIGl0IGZyb20gbm93ICovCiAJCXNpbWFzayAmPSB+dl9iaXQ7Ci0JCWJyZWFrOwogCX0KLQogCS8qCiAJICogUmUtRW5hYmxlIG9sZCBJbnRlcnJ1cHQgTWFzawogCSAqLwogCWltbXItPmltX3NpdV9jb25mLnNjX3NpbWFzayA9IHNpbWFzazsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgogICogQ1BNIGludGVycnVwdCBoYW5kbGVyCiAgKi8KLXN0YXRpYyB2b2lkCi1jcG1faW50ZXJydXB0KGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICogcmVncykKK3N0YXRpYyB2b2lkIGNwbV9pbnRlcnJ1cHQgKHZvaWQgKnJlZ3MpCiB7Ci0Jdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopQ0ZHX0lNTVI7Ci0JdWludAl2ZWM7CisJdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopIENGR19JTU1SOworCXVpbnQgdmVjOwogCiAJLyoKIAkgKiBHZXQgdGhlIHZlY3RvciBieSBzZXR0aW5nIHRoZSBBQ0sgYml0CkBAIC0xOTAsMTMgKzE5MSwxNCBAQAogCXZlYyA+Pj0gMTE7CiAKIAlpZiAoY3BtX3ZlY3NbdmVjXS5oYW5kbGVyICE9IE5VTEwpIHsKLQkJKCpjcG1fdmVjc1t2ZWNdLmhhbmRsZXIpKGNwbV92ZWNzW3ZlY10uYXJnKTsKKwkJKCpjcG1fdmVjc1t2ZWNdLmhhbmRsZXIpIChjcG1fdmVjc1t2ZWNdLmFyZyk7CiAJfSBlbHNlIHsKIAkJaW1tci0+aW1fY3BpYy5jcGljX2NpbXIgJj0gfigxIDw8IHZlYyk7CiAJCXByaW50ZiAoIk1hc2tpbmcgYm9ndXMgQ1BNIGludGVycnVwdCB2ZWN0b3IgMHgleFxuIiwgdmVjKTsKIAl9CiAJLyoKLQkgKiBBZnRlciBzZXJ2aWNpbmcgdGhlIGludGVycnVwdCwgd2UgaGF2ZSB0byByZW1vdmUgdGhlIHN0YXR1cyBpbmRpY2F0b3IuCisJICogQWZ0ZXIgc2VydmljaW5nIHRoZSBpbnRlcnJ1cHQsCisJICogd2UgaGF2ZSB0byByZW1vdmUgdGhlIHN0YXR1cyBpbmRpY2F0b3IuCiAJICovCiAJaW1tci0+aW1fY3BpYy5jcGljX2Npc3IgfD0gKDEgPDwgdmVjKTsKIH0KQEAgLTIwNyw3NSArMjA5LDExMCBAQAogICogdG8gZG8gaXMgQUNLIGl0IGFuZCByZXR1cm4uIFRoaXMgaXMgYSBuby1vcCBmdW5jdGlvbiBzbyB3ZSBkb24ndAogICogbmVlZCBhbnkgc3BlY2lhbCB0ZXN0cyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCiAgKi8KLXN0YXRpYyB2b2lkCi1jcG1fZXJyb3JfaW50ZXJydXB0ICh2b2lkICpkdW1teSkKK3N0YXRpYyB2b2lkIGNwbV9lcnJvcl9pbnRlcnJ1cHQgKHZvaWQgKmR1bW15KQogewogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCi0gKiBJbnN0YWxsIGFuZCBmcmVlIGEgQ1BNIGludGVycnVwdCBoYW5kbGVyLgorICogSW5zdGFsbCBhbmQgZnJlZSBhbiBpbnRlcnJ1cHQgaGFuZGxlcgogICovCi0KLXZvaWQKLWlycV9pbnN0YWxsX2hhbmRsZXIoaW50IHZlYywgaW50ZXJydXB0X2hhbmRsZXJfdCAqaGFuZGxlciwgdm9pZCAqYXJnKQordm9pZCBpcnFfaW5zdGFsbF9oYW5kbGVyIChpbnQgdmVjLCBpbnRlcnJ1cHRfaGFuZGxlcl90ICogaGFuZGxlciwKKwkJCQkJCSAgdm9pZCAqYXJnKQogewotCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAoaW1tYXBfdCAqKUNGR19JTU1SOworCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAoaW1tYXBfdCAqKSBDRkdfSU1NUjsKIAotCWlmIChjcG1fdmVjc1t2ZWNdLmhhbmRsZXIgIT0gTlVMTCkgewotCQlwcmludGYgKCJDUE0gaW50ZXJydXB0IDB4JXggcmVwbGFjaW5nIDB4JXhcbiIsCi0JCQkodWludCloYW5kbGVyLCAodWludCljcG1fdmVjc1t2ZWNdLmhhbmRsZXIpOwotCX0KLQljcG1fdmVjc1t2ZWNdLmhhbmRsZXIgPSBoYW5kbGVyOwotCWNwbV92ZWNzW3ZlY10uYXJnICAgICA9IGFyZzsKLQlpbW1yLT5pbV9jcGljLmNwaWNfY2ltciB8PSAoMSA8PCB2ZWMpOworCWlmICgodmVjICYgQ1BNVkVDX09GRlNFVCkgIT0gMCkgeworCQkvKiBDUE0gaW50ZXJydXB0ICovCisJCXZlYyAmPSAweGZmZmY7CisJCWlmIChjcG1fdmVjc1t2ZWNdLmhhbmRsZXIgIT0gTlVMTCkgeworCQkJcHJpbnRmICgiQ1BNIGludGVycnVwdCAweCV4IHJlcGxhY2luZyAweCV4XG4iLAorCQkJCSh1aW50KSBoYW5kbGVyLAorCQkJCSh1aW50KSBjcG1fdmVjc1t2ZWNdLmhhbmRsZXIpOworCQl9CisJCWNwbV92ZWNzW3ZlY10uaGFuZGxlciA9IGhhbmRsZXI7CisJCWNwbV92ZWNzW3ZlY10uYXJnID0gYXJnOworCQlpbW1yLT5pbV9jcGljLmNwaWNfY2ltciB8PSAoMSA8PCB2ZWMpOworI2lmIDAKKwkJcHJpbnRmICgiSW5zdGFsbCBDUE0gaW50ZXJydXB0IGZvciB2ZWN0b3IgJWQgPT0+ICVwXG4iLAorCQkJdmVjLCBoYW5kbGVyKTsKKyNlbmRpZgorCX0gZWxzZSB7CisJCS8qIFNJVSBpbnRlcnJ1cHQgKi8KKwkJaWYgKGlycV92ZWNzW3ZlY10uaGFuZGxlciAhPSBOVUxMKSB7CisJCQlwcmludGYgKCJTSVUgaW50ZXJydXB0ICVkIDB4JXggcmVwbGFjaW5nIDB4JXhcbiIsCisJCQkJdmVjLAorCQkJCSh1aW50KSBoYW5kbGVyLAorCQkJCSh1aW50KSBjcG1fdmVjc1t2ZWNdLmhhbmRsZXIpOworCQl9CisJCWlycV92ZWNzW3ZlY10uaGFuZGxlciA9IGhhbmRsZXI7CisJCWlycV92ZWNzW3ZlY10uYXJnID0gYXJnOworCQlpbW1yLT5pbV9zaXVfY29uZi5zY19zaW1hc2sgfD0gMSA8PCAoMzEgLSB2ZWMpOwogI2lmIDAKLQlwcmludGYgKCJJbnN0YWxsIENQTSBpbnRlcnJ1cHQgZm9yIHZlY3RvciAlZCA9PT4gJXBcbiIsIHZlYywgaGFuZGxlcik7CisJCXByaW50ZiAoIkluc3RhbGwgU0lVIGludGVycnVwdCBmb3IgdmVjdG9yICVkID09PiAlcFxuIiwKKwkJCXZlYywgaGFuZGxlcik7CiAjZW5kaWYKKwl9CiB9CiAKLXZvaWQKLWlycV9mcmVlX2hhbmRsZXIoaW50IHZlYykKK3ZvaWQgaXJxX2ZyZWVfaGFuZGxlciAoaW50IHZlYykKIHsKLQl2b2xhdGlsZSBpbW1hcF90ICppbW1yID0gKGltbWFwX3QgKilDRkdfSU1NUjsKKwl2b2xhdGlsZSBpbW1hcF90ICppbW1yID0gKGltbWFwX3QgKikgQ0ZHX0lNTVI7CisKKwlpZiAoKHZlYyAmIENQTVZFQ19PRkZTRVQpICE9IDApIHsKKwkJLyogQ1BNIGludGVycnVwdCAqLworCQl2ZWMgJj0gMHhmZmZmOwogI2lmIDAKLQlwcmludGYgKCJGcmVlIENQTSBpbnRlcnJ1cHQgZm9yIHZlY3RvciAlZCA9PT4gJXBcbiIsCi0JCXZlYywgY3BtX3ZlY3NbdmVjXS5oYW5kbGVyKTsKKwkJcHJpbnRmICgiRnJlZSBDUE0gaW50ZXJydXB0IGZvciB2ZWN0b3IgJWQgPT0+ICVwXG4iLAorCQkJdmVjLCBjcG1fdmVjc1t2ZWNdLmhhbmRsZXIpOwogI2VuZGlmCi0JaW1tci0+aW1fY3BpYy5jcGljX2NpbXIgJj0gfigxIDw8IHZlYyk7Ci0JY3BtX3ZlY3NbdmVjXS5oYW5kbGVyID0gTlVMTDsKLQljcG1fdmVjc1t2ZWNdLmFyZyAgICAgPSBOVUxMOworCQlpbW1yLT5pbV9jcGljLmNwaWNfY2ltciAmPSB+KDEgPDwgdmVjKTsKKwkJY3BtX3ZlY3NbdmVjXS5oYW5kbGVyID0gTlVMTDsKKwkJY3BtX3ZlY3NbdmVjXS5hcmcgPSBOVUxMOworCX0gZWxzZSB7CisJCS8qIFNJVSBpbnRlcnJ1cHQgKi8KKyNpZiAwCisJCXByaW50ZiAoIkZyZWUgQ1BNIGludGVycnVwdCBmb3IgdmVjdG9yICVkID09PiAlcFxuIiwKKwkJCXZlYywgY3BtX3ZlY3NbdmVjXS5oYW5kbGVyKTsKKyNlbmRpZgorCQlpbW1yLT5pbV9zaXVfY29uZi5zY19zaW1hc2sgJj0gfigxIDw8ICgzMSAtIHZlYykpOworCQlpcnFfdmVjc1t2ZWNdLmhhbmRsZXIgPSBOVUxMOworCQlpcnFfdmVjc1t2ZWNdLmFyZyA9IE5VTEw7CisJfQogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyB2b2lkCi1jcG1faW50ZXJydXB0X2luaXQgKHZvaWQpCitzdGF0aWMgdm9pZCBjcG1faW50ZXJydXB0X2luaXQgKHZvaWQpCiB7Ci0Jdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopQ0ZHX0lNTVI7CisJdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopIENGR19JTU1SOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHRoZSBDUE0gaW50ZXJydXB0IGNvbnRyb2xsZXIuCiAJICovCiAKIAlpbW1yLT5pbV9jcGljLmNwaWNfY2ljciA9Ci0JCSggQ0lDUl9TQ0RfU0NDNCB8Ci0JCSAgQ0lDUl9TQ0NfU0NDMyB8Ci0JCSAgQ0lDUl9TQ0JfU0NDMiB8Ci0JCSAgQ0lDUl9TQ0FfU0NDMSApIHwgKChDUE1fSU5URVJSVVBULzIpIDw8IDEzKSB8IENJQ1JfSFBfTUFTSzsKKwkJKENJQ1JfU0NEX1NDQzQgfAorCQkgQ0lDUl9TQ0NfU0NDMyB8CisJCSBDSUNSX1NDQl9TQ0MyIHwKKwkJIENJQ1JfU0NBX1NDQzEpIHwgKChDUE1fSU5URVJSVVBUIC8gMikgPDwgMTMpIHwgQ0lDUl9IUF9NQVNLOwogCiAJaW1tci0+aW1fY3BpYy5jcGljX2NpbXIgPSAwOwogCiAJLyoKIAkgKiBJbnN0YWxsIHRoZSBlcnJvciBoYW5kbGVyLgogCSAqLwotCWlycV9pbnN0YWxsX2hhbmRsZXIoQ1BNVkVDX0VSUk9SLCBjcG1fZXJyb3JfaW50ZXJydXB0LCBOVUxMKTsKKwlpcnFfaW5zdGFsbF9oYW5kbGVyIChDUE1WRUNfRVJST1IsIGNwbV9lcnJvcl9pbnRlcnJ1cHQsIE5VTEwpOwogCiAJaW1tci0+aW1fY3BpYy5jcGljX2NpY3IgfD0gQ0lDUl9JRU47CisKKwkvKgorCSAqIEluc3RhbGwgdGhlIGNwbSBpbnRlcnJ1cHQgaGFuZGxlcgorCSAqLworCWlycV9pbnN0YWxsX2hhbmRsZXIgKENQTV9JTlRFUlJVUFQsIGNwbV9pbnRlcnJ1cHQsIE5VTEwpOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHZvbGF0aWxlIHVsb25nIHRpbWVzdGFtcCA9IDA7CiAKQEAgLTI4NCwxOCArMzIxLDE5IEBACiAgKiB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuCiAgKiBUcml2aWFsIGltcGxlbWVudGF0aW9uIC0gbm8gbmVlZCB0byBiZSByZWFsbHkgYWNjdXJhdGUuCiAgKi8KLXZvaWQgdGltZXJfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQordm9pZCB0aW1lcl9pbnRlcnJ1cHQgKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAoaW1tYXBfdCAqKUNGR19JTU1SOworCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAoaW1tYXBfdCAqKSBDRkdfSU1NUjsKKwogI2lmZGVmIENPTkZJR19TVEFUVVNfTEVECi0gICAgCWV4dGVybiB2b2lkIHN0YXR1c19sZWRfdGljayAodWxvbmcpOworCWV4dGVybiB2b2lkIHN0YXR1c19sZWRfdGljayAodWxvbmcpOwogI2VuZGlmCiAjaWYgMAogCXByaW50ZiAoIioqKiBUaW1lciBJbnRlcnJ1cHQgKioqICIpOwogI2VuZGlmCiAJLyogUmVzZXQgVGltZXIgRXhwaXJlZCBhbmQgVGltZXJzIEludGVycnVwdCBTdGF0dXMgKi8KIAlpbW1yLT5pbV9jbGtyc3RrLmNhcmtfcGxwcmNyayA9IEtBUFdSX0tFWTsKLQlfX2FzbV9fKCJub3AiKTsKKwlfX2FzbV9fICgibm9wIik7CiAJaW1tci0+aW1fY2xrcnN0LmNhcl9wbHByY3IgfD0gUExQUkNSX1RFWFBTIHwgUExQUkNSX1RNSVNUOwogCS8qIFJlc3RvcmUgRGVjcmVtZW50ZXIgQ291bnQgKi8KIAlzZXRfZGVjIChkZWNyZW1lbnRlcl9jb3VudCk7CkBAIC0zMDQsMTEgKzM0MiwxMCBAQAogCiAjaWZkZWYgQ09ORklHX1NUQVRVU19MRUQKIAlzdGF0dXNfbGVkX3RpY2sgKHRpbWVzdGFtcCk7Ci0jZW5kaWYJLyogQ09ORklHX1NUQVRVU19MRUQgKi8KKyNlbmRpZiAvKiBDT05GSUdfU1RBVFVTX0xFRCAqLwogCiAjaWYgZGVmaW5lZChDT05GSUdfV0FUQ0hET0cpIHx8IGRlZmluZWQoQ0ZHX0NNQV9MQ0RfSEVBUlRCRUFUKQogCi0KIAkvKgogCSAqIFRoZSBzaG9ydGVzdCB3YXRjaGRvZyBwZXJpb2Qgb2YgYWxsIGJvYXJkcyAoZXhjZXB0IExXTU9OKQogCSAqIGlzIGFwcHJveC4gMSBzZWMsIHRodXMgcmUtdHJpZ2dlciB3YXRjaGRvZyBhdCBsZWFzdApAQCAtMzIxLDIwICszNTgsMjAgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChDRkdfQ01BX0xDRF9IRUFSVEJFQVQpCi0JCWV4dGVybiB2b2lkIGxjZF9oZWFydGJlYXQodm9pZCk7Ci0JCWxjZF9oZWFydGJlYXQoKTsKKwkJZXh0ZXJuIHZvaWQgbGNkX2hlYXJ0YmVhdCAodm9pZCk7CisKKwkJbGNkX2hlYXJ0YmVhdCAoKTsKICNlbmRpZiAvKiBDRkdfQ01BX0xDRF9IRUFSVEJFQVQgKi8KIAogI2lmIGRlZmluZWQoQ09ORklHX1dBVENIRE9HKQotCQlyZXNldF84eHhfd2F0Y2hkb2coaW1tcik7CisJCXJlc2V0Xzh4eF93YXRjaGRvZyAoaW1tcik7CiAjZW5kaWYgLyogQ09ORklHX1dBVENIRE9HICovCiAKIAl9Ci0KICNlbmRpZiAvKiBDT05GSUdfV0FUQ0hET0cgfHwgQ0ZHX0NNQV9MQ0RfSEVBUlRCRUFUICovCiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdm9pZCByZXNldF90aW1lciAodm9pZCkKIHsKQEAgLTM1MSw0ICszODgsNCBAQAogCXRpbWVzdGFtcCA9IHQ7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2NwdS9tcGM4eHgvc3RhcnQuUyBiL2NwdS9tcGM4eHgvc3RhcnQuUwppbmRleCBhNDMwMDYxLi5hMWI3ZWZmIDEwMDY0NAotLS0gYS9jcHUvbXBjOHh4L3N0YXJ0LlMKKysrIGIvY3B1L21wYzh4eC9zdGFydC5TCkBAIC0yODUsNyArMjg1LDE0IEBACiAJYWRkCXIxMSxyMTEscjAKIAlsd3oJcjExLDAocjExKQogCi0JbGkJcjEyLDB4ZDAwLTQqMwkJLyogc2F2ZSBMUiAmIFNSUnggKi8KKwlsaQlyMjAsMHhkMDAtNAkJLyogR2V0IHN0YWNrIHBvaW50ZXIgKi8KKwlsd3oJcjEyLDAocjIwKQorCXN1YmkJcjEyLHIxMiwxMgkJLyogQWRqdXN0IHN0YWNrIHBvaW50ZXIgKi8KKwlsaQlyMCwweGMwMCtfZW5kX2JhY2stU3lzdGVtQ2FsbAorCWNtcGx3CTAsIHIwLCByMTIJCS8qIENoZWNrIHN0YWNrIG92ZXJmbG93ICovCisJYmd0CTFmCisJc3R3CXIxMiwwKHIyMCkKKwogCW1mbHIJcjAKIAlzdHcJcjAsMChyMTIpCiAJbWZzcHIJcjAsU1JSMApAQCAtMzEwLDcgKzMxNyw5IEBACiAJbXRtc3IJcjExCiAJU1lOQwogCi0JbGkJcjEyLDB4ZDAwLTQqMwkJLyogcmVzdG9yZSByZWdzICovCisJbGkJcjEyLDB4ZDAwLTQJCS8qIHJlc3RvcmUgcmVncyAqLworCWx3eglyMTIsMChyMTIpCisKIAlsd3oJcjExLDAocjEyKQogCW10bHIJcjExCiAJbHd6CXIxMSw0KHIxMikKQEAgLTMxOCw4ICszMjcsMTMgQEAKIAlsd3oJcjExLDgocjEyKQogCW10c3ByCVNSUjEscjExCiAKKwlhZGRpCXIxMixyMTIsMTIJCS8qIEFkanVzdCBzdGFjayBwb2ludGVyICovCisJbGkJcjIwLDB4ZDAwLTQKKwlzdHcJcjEyLDAocjIwKQorCiAJU1lOQwogCXJmaQorX2VuZF9iYWNrOgogCiAJU1REX0VYQ0VQVElPTigweGQwMCwgU2luZ2xlU3RlcCwgVW5rbm93bkV4Y2VwdGlvbikKIApkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC9zdGFydC5TIGIvY3B1L3BwYzR4eC9zdGFydC5TCmluZGV4IGJhYWFiYTQuLmM0MGE4ZGIgMTAwNjQ0Ci0tLSBhL2NwdS9wcGM0eHgvc3RhcnQuUworKysgYi9jcHUvcHBjNHh4L3N0YXJ0LlMKQEAgLTc3NSw3ICs3NzUsMTQgQEAKIAlhZGQJcjExLHIxMSxyMAogCWx3eglyMTEsMChyMTEpCiAKLQlsaQlyMTIsMHhkMDAtNCozCQkvKiBzYXZlIExSICYgU1JSeCAqLworCWxpCXIyMCwweGQwMC00CQkvKiBHZXQgc3RhY2sgcG9pbnRlciAqLworCWx3eglyMTIsMChyMjApCisJc3ViaQlyMTIscjEyLDEyCQkvKiBBZGp1c3Qgc3RhY2sgcG9pbnRlciAqLworCWxpCXIwLDB4YzAwK19lbmRfYmFjay1TeXN0ZW1DYWxsCisJY21wbHcJMCwgcjAsIHIxMgkJLyogQ2hlY2sgc3RhY2sgb3ZlcmZsb3cgKi8KKwliZ3QJMWYKKwlzdHcJcjEyLDAocjIwKQorCiAJbWZscglyMAogCXN0dwlyMCwwKHIxMikKIAltZnNwcglyMCxTUlIwCkBAIC04MDAsNyArODA3LDkgQEAKIAltdG1zcglyMTEKIAlTWU5DCiAKLQlsaQlyMTIsMHhkMDAtNCozCQkvKiByZXN0b3JlIHJlZ3MgKi8KKwlsaQlyMTIsMHhkMDAtNAkJLyogcmVzdG9yZSByZWdzICovCisJbHd6CXIxMiwwKHIxMikKKwogCWx3eglyMTEsMChyMTIpCiAJbXRscglyMTEKIAlsd3oJcjExLDQocjEyKQpAQCAtODA4LDggKzgxNywxMyBAQAogCWx3eglyMTEsOChyMTIpCiAJbXRzcHIJU1JSMSxyMTEKIAorCWFkZGkJcjEyLHIxMiwxMgkJLyogQWRqdXN0IHN0YWNrIHBvaW50ZXIgKi8KKwlsaQlyMjAsMHhkMDAtNAorCXN0dwlyMTIsMChyMjApCisKIAlTWU5DCiAJcmZpCitfZW5kX2JhY2s6CiAKIAlTVERfRVhDRVBUSU9OKDB4ZDAwLCBTaW5nbGVTdGVwLCBVbmtub3duRXhjZXB0aW9uKQogCmRpZmYgLS1naXQgYS9leGFtcGxlcy90aW1lci5jIGIvZXhhbXBsZXMvdGltZXIuYwppbmRleCA4ZDYwZmM4Li4zM2Y1M2MwIDEwMDY0NAotLS0gYS9leGFtcGxlcy90aW1lci5jCisrKyBiL2V4YW1wbGVzL3RpbWVyLmMKQEAgLTEyMiw2ICsxMjIsNyBAQAogCXRpZF84eHhfY3BtdGltZXJfdCBodzsKIAl0aWRfOHh4X2NwbXRpbWVyX3QgKmh3cCA9ICZodzsKIAlpbnQgYzsKKwlpbnQgcnVubmluZzsKIAogCS8qIFBvaW50ZXIgdG8gQ1BNIFRpbWVyIHN0cnVjdHVyZSAqLwogCWNwbXRpbWVycCA9ICYoKGltbWFwX3QgKikgZ2QtPmJkLT5iaV9pbW1yX2Jhc2UpLT5pbV9jcG10aW1lcjsKQEAgLTE4NSw2ICsxODYsNyBAQAogCSpod3AtPnRlcnAgPSAoQ1BNVF9FVkVOVF9DQVAgfCBDUE1UX0VWRU5UX1JFRik7CiAKIAltb25fcHJpbnRmICh1c2FnZSk7CisJcnVubmluZyA9IDA7CiAJd2hpbGUgKChjID0gbW9uX2dldGMoKSkgIT0gJ3EnKSB7CiAJICAgIGlmIChjID09ICdiJykgewogCkBAIC0xOTcsNiArMTk5LDcgQEAKIAogCQkvKiBlbmFibGUgdGltZXIgKi8KIAkJKmh3cC0+dGdjcnAgfD0gKENQTVRfR0NSX1JTVCA8PCBUSURfVElNRVJfSUQpOworCQlydW5uaW5nID0gMTsKIAogI2lmZGVmCURFQlVHCiAJCW1vbl9wcmludGYgKCJ0Z2NyPTB4JXgsIHRtcj0weCV4LCB0cnI9MHgleCwiCkBAIC0yMTAsNiArMjEzLDcgQEAKIAkJbW9uX3ByaW50ZiAoIlN0b3BwaW5nIHRpbWVyXG4iKTsKIAogCQkqaHdwLT50Z2NycCAmPSB+KENQTVRfR0NSX01BU0sgPDwgVElEX1RJTUVSX0lEKTsKKwkJcnVubmluZyA9IDA7CiAKICNpZmRlZglERUJVRwogCQltb25fcHJpbnRmICgidGdjcj0weCV4LCB0bXI9MHgleCwgdHJyPTB4JXgsIgpAQCAtMjUyLDYgKzI1NiwxMiBAQAogCSAgICB9CiAJICAgIG1vbl9wcmludGYgKHVzYWdlKTsKIAl9CisJaWYgKHJ1bm5pbmcpIHsKKwkJbW9uX3ByaW50ZiAoIlN0b3BwaW5nIHRpbWVyXG4iKTsKKwkJKmh3cC0+dGdjcnAgJj0gfihDUE1UX0dDUl9NQVNLIDw8IFRJRF9USU1FUl9JRCk7CisJCW1vbl9mcmVlX2hkbHIgKGh3cC0+Y3BtX3ZlYyk7CisJfQorCiAJcmV0dXJuICgwKTsKIH0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tcHJvYy5oIGIvaW5jbHVkZS9jb21tcHJvYy5oCmluZGV4IDk2MDhjNDYuLjQyZGI5OTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29tbXByb2MuaAorKysgYi9pbmNsdWRlL2NvbW1wcm9jLmgKQEAgLTIyLDEwICsyMiwxMCBAQAogCiAvKiBDUE0gQ29tbWFuZCByZWdpc3Rlci4KICovCi0jZGVmaW5lIENQTV9DUl9SU1QJKCh1c2hvcnQpMHg4MDAwKQotI2RlZmluZSBDUE1fQ1JfT1BDT0RFCSgodXNob3J0KTB4MGYwMCkKLSNkZWZpbmUgQ1BNX0NSX0NIQU4JKCh1c2hvcnQpMHgwMGYwKQotI2RlZmluZSBDUE1fQ1JfRkxHCSgodXNob3J0KTB4MDAwMSkKKyNkZWZpbmUgQ1BNX0NSX1JTVAkJKCh1c2hvcnQpMHg4MDAwKQorI2RlZmluZSBDUE1fQ1JfT1BDT0RFCQkoKHVzaG9ydCkweDBmMDApCisjZGVmaW5lIENQTV9DUl9DSEFOCQkoKHVzaG9ydCkweDAwZjApCisjZGVmaW5lIENQTV9DUl9GTEcJCSgodXNob3J0KTB4MDAwMSkKIAogLyogU29tZSBjb21tYW5kcyAodGhlcmUgYXJlIG1vcmUuLi5sYXRlcikKICovCkBAIC0zOSwxNCArMzksMTQgQEAKIAogLyogQ2hhbm5lbCBudW1iZXJzLgogKi8KLSNkZWZpbmUgQ1BNX0NSX0NIX1NDQzEJKCh1c2hvcnQpMHgwMDAwKQotI2RlZmluZSBDUE1fQ1JfQ0hfSTJDCSgodXNob3J0KTB4MDAwMSkJLyogSTJDIGFuZCBJRE1BMSAqLwotI2RlZmluZSBDUE1fQ1JfQ0hfU0NDMgkoKHVzaG9ydCkweDAwMDQpCi0jZGVmaW5lIENQTV9DUl9DSF9TUEkJKCh1c2hvcnQpMHgwMDA1KQkvKiBTUEkgLyBJRE1BMiAvIFRpbWVycyAqLwotI2RlZmluZSBDUE1fQ1JfQ0hfU0NDMwkoKHVzaG9ydCkweDAwMDgpCi0jZGVmaW5lIENQTV9DUl9DSF9TTUMxCSgodXNob3J0KTB4MDAwOSkJLyogU01DMSAvIERTUDEgKi8KLSNkZWZpbmUgQ1BNX0NSX0NIX1NDQzQJKCh1c2hvcnQpMHgwMDBjKQotI2RlZmluZSBDUE1fQ1JfQ0hfU01DMgkoKHVzaG9ydCkweDAwMGQpCS8qIFNNQzIgLyBEU1AyICovCisjZGVmaW5lIENQTV9DUl9DSF9TQ0MxCQkoKHVzaG9ydCkweDAwMDApCisjZGVmaW5lIENQTV9DUl9DSF9JMkMJCSgodXNob3J0KTB4MDAwMSkgICAgLyogSTJDIGFuZCBJRE1BMSAqLworI2RlZmluZSBDUE1fQ1JfQ0hfU0NDMgkJKCh1c2hvcnQpMHgwMDA0KQorI2RlZmluZSBDUE1fQ1JfQ0hfU1BJCQkoKHVzaG9ydCkweDAwMDUpICAgIC8qIFNQSS9JRE1BMi9UaW1lcnMgKi8KKyNkZWZpbmUgQ1BNX0NSX0NIX1NDQzMJCSgodXNob3J0KTB4MDAwOCkKKyNkZWZpbmUgQ1BNX0NSX0NIX1NNQzEJCSgodXNob3J0KTB4MDAwOSkgICAgLyogU01DMSAvIERTUDEgKi8KKyNkZWZpbmUgQ1BNX0NSX0NIX1NDQzQJCSgodXNob3J0KTB4MDAwYykKKyNkZWZpbmUgQ1BNX0NSX0NIX1NNQzIJCSgodXNob3J0KTB4MDAwZCkgICAgLyogU01DMiAvIERTUDIgKi8KIAogI2RlZmluZSBta19jcl9jbWQoQ0gsIENNRCkJKChDTUQgPDwgOCkgfCAoQ0ggPDwgNCkpCiAKQEAgLTUyMyw4ICs1MjMsOCBAQAogI2RlZmluZQlQUk9GRl9FTkVUCVBST0ZGX1NDQzIKICNkZWZpbmUJQ1BNX0NSX0VORVQJQ1BNX0NSX0NIX1NDQzIKICNkZWZpbmUJU0NDX0VORVQJMQotI2RlZmluZSBQQV9FTkVUX1JYRAkJKCh1c2hvcnQpMHgwMDA0KQotI2RlZmluZSBQQV9FTkVUX1RYRAkJKCh1c2hvcnQpMHgwMDA4KQorI2RlZmluZSBQQV9FTkVUX1JYRAkoKHVzaG9ydCkweDAwMDQpCisjZGVmaW5lIFBBX0VORVRfVFhECSgodXNob3J0KTB4MDAwOCkKICNkZWZpbmUgUEFfRU5FVF9UQ0xLCSgodXNob3J0KTB4MDEwMCkKICNkZWZpbmUgUEFfRU5FVF9SQ0xLCSgodXNob3J0KTB4MDQwMCkKICNkZWZpbmUgUEJfRU5FVF9URU5BCSgodWludCkweDAwMDAyMDAwKQpAQCAtMTAzNCwyMSArMTAzNCwyMSBAQAogI2RlZmluZSBQUk9GRl9FTkVUCVBST0ZGX1NDQzIKICNkZWZpbmUgQ1BNX0NSX0VORVQJQ1BNX0NSX0NIX1NDQzIKICNkZWZpbmUgU0NDX0VORVQJMQotI2RlZmluZSBQQV9FTkVUX1JYRCAgKCh1c2hvcnQpMHgwMDA0KSAgLyogUEEgMTMgKi8KLSNkZWZpbmUgUEFfRU5FVF9UWEQgICgodXNob3J0KTB4MDAwOCkgIC8qIFBBIDEyICovCi0jZGVmaW5lIFBBX0VORVRfUkNMSyAoKHVzaG9ydCkweDAyMDApICAvKiBQQSAgNiAqLwotI2RlZmluZSBQQV9FTkVUX1RDTEsgKCh1c2hvcnQpMHgwODAwKSAgLyogUEEgIDQgKi8KKyNkZWZpbmUgUEFfRU5FVF9SWEQJKCh1c2hvcnQpMHgwMDA0KSAgLyogUEEgMTMgKi8KKyNkZWZpbmUgUEFfRU5FVF9UWEQJKCh1c2hvcnQpMHgwMDA4KSAgLyogUEEgMTIgKi8KKyNkZWZpbmUgUEFfRU5FVF9SQ0xLCSgodXNob3J0KTB4MDIwMCkgIC8qIFBBICA2ICovCisjZGVmaW5lIFBBX0VORVRfVENMSwkoKHVzaG9ydCkweDA4MDApICAvKiBQQSAgNCAqLwogCi0jZGVmaW5lIFBCX0VORVRfVEVOQSAoKHVpbnQpMHgwMDAwMjAwMCkgICAvKiBQQiAxOCAqLworI2RlZmluZSBQQl9FTkVUX1RFTkEJKCh1aW50KTB4MDAwMDIwMDApICAgLyogUEIgMTggKi8KIAotI2RlZmluZSBQQ19FTkVUX0NMU04gKCh1c2hvcnQpMHgwMDQwKSAgLyogUEMgIDkgKi8KLSNkZWZpbmUgUENfRU5FVF9SRU5BICgodXNob3J0KTB4MDA4MCkgIC8qIFBDICA4ICovCisjZGVmaW5lIFBDX0VORVRfQ0xTTgkoKHVzaG9ydCkweDAwNDApICAvKiBQQyAgOSAqLworI2RlZmluZSBQQ19FTkVUX1JFTkEJKCh1c2hvcnQpMHgwMDgwKSAgLyogUEMgIDggKi8KIAogLyogQ29udHJvbCBiaXRzIGluIHRoZSBTSUNSIHRvIHJvdXRlIFRDTEsgKENMSzMpIGFuZCBSQ0xLIChDTEsxKSB0bwogICogU0NDMi4gIEFsc28sIG1ha2Ugc3VyZSBHUjIgKGJpdCAxNikgYW5kIFNDMiAoYml0IDE3KSBhcmUgemVyby4KICAqLwotI2RlZmluZSBTSUNSX0VORVRfTUFTSyAgKCh1aW50KTB4MDAwMGZmMDApCi0jZGVmaW5lIFNJQ1JfRU5FVF9DTEtSVCAoKHVpbnQpMHgwMDAwMmYwMCkKKyNkZWZpbmUgU0lDUl9FTkVUX01BU0sJKCh1aW50KTB4MDAwMGZmMDApCisjZGVmaW5lIFNJQ1JfRU5FVF9DTEtSVAkoKHVpbnQpMHgwMDAwMmYwMCkKIAogI2VuZGlmICAgLyogQ09ORklHX05YODIzICovCiAKQEAgLTE1ODMsMzUgKzE1ODMsMzYgQEAKICAqIHByaW9yaXR5IGFuZCBTQ0MxID09IFNDQ2EsIGV0Yy4uLikuCiAgKi8KICNkZWZpbmUgQ1BNVkVDX05SCQkzMgotI2RlZmluZQlDUE1WRUNfUElPX1BDMTUJCSgodXNob3J0KTB4MWYpCi0jZGVmaW5lCUNQTVZFQ19TQ0MxCQkoKHVzaG9ydCkweDFlKQotI2RlZmluZQlDUE1WRUNfU0NDMgkJKCh1c2hvcnQpMHgxZCkKLSNkZWZpbmUJQ1BNVkVDX1NDQzMJCSgodXNob3J0KTB4MWMpCi0jZGVmaW5lCUNQTVZFQ19TQ0M0CQkoKHVzaG9ydCkweDFiKQotI2RlZmluZQlDUE1WRUNfUElPX1BDMTQJCSgodXNob3J0KTB4MWEpCi0jZGVmaW5lCUNQTVZFQ19USU1FUjEJCSgodXNob3J0KTB4MTkpCi0jZGVmaW5lCUNQTVZFQ19QSU9fUEMxMwkJKCh1c2hvcnQpMHgxOCkKLSNkZWZpbmUJQ1BNVkVDX1BJT19QQzEyCQkoKHVzaG9ydCkweDE3KQotI2RlZmluZQlDUE1WRUNfU0RNQV9DQl9FUlIJKCh1c2hvcnQpMHgxNikKLSNkZWZpbmUgQ1BNVkVDX0lETUExCQkoKHVzaG9ydCkweDE1KQotI2RlZmluZSBDUE1WRUNfSURNQTIJCSgodXNob3J0KTB4MTQpCi0jZGVmaW5lIENQTVZFQ19USU1FUjIJCSgodXNob3J0KTB4MTIpCi0jZGVmaW5lIENQTVZFQ19SSVNDVElNRVIJKCh1c2hvcnQpMHgxMSkKLSNkZWZpbmUgQ1BNVkVDX0kyQwkJKCh1c2hvcnQpMHgxMCkKLSNkZWZpbmUJQ1BNVkVDX1BJT19QQzExCQkoKHVzaG9ydCkweDBmKQotI2RlZmluZQlDUE1WRUNfUElPX1BDMTAJCSgodXNob3J0KTB4MGUpCi0jZGVmaW5lIENQTVZFQ19USU1FUjMJCSgodXNob3J0KTB4MGMpCi0jZGVmaW5lCUNQTVZFQ19QSU9fUEM5CQkoKHVzaG9ydCkweDBiKQotI2RlZmluZQlDUE1WRUNfUElPX1BDOAkJKCh1c2hvcnQpMHgwYSkKLSNkZWZpbmUJQ1BNVkVDX1BJT19QQzcJCSgodXNob3J0KTB4MDkpCi0jZGVmaW5lIENQTVZFQ19USU1FUjQJCSgodXNob3J0KTB4MDcpCi0jZGVmaW5lCUNQTVZFQ19QSU9fUEM2CQkoKHVzaG9ydCkweDA2KQotI2RlZmluZQlDUE1WRUNfU1BJCQkoKHVzaG9ydCkweDA1KQotI2RlZmluZQlDUE1WRUNfU01DMQkJKCh1c2hvcnQpMHgwNCkKLSNkZWZpbmUJQ1BNVkVDX1NNQzIJCSgodXNob3J0KTB4MDMpCi0jZGVmaW5lCUNQTVZFQ19QSU9fUEM1CQkoKHVzaG9ydCkweDAyKQotI2RlZmluZQlDUE1WRUNfUElPX1BDNAkJKCh1c2hvcnQpMHgwMSkKLSNkZWZpbmUJQ1BNVkVDX0VSUk9SCQkoKHVzaG9ydCkweDAwKQorI2RlZmluZSBDUE1WRUNfT0ZGU0VUICAgICAgICAgICAweDAwMDEwMDAwCisjZGVmaW5lIENQTVZFQ19QSU9fUEMxNQkJKCh1c2hvcnQpMHgxZiB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19TQ0MxCQkoKHVzaG9ydCkweDFlIHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1NDQzIJCSgodXNob3J0KTB4MWQgfCBDUE1WRUNfT0ZGU0VUKQorI2RlZmluZSBDUE1WRUNfU0NDMwkJKCh1c2hvcnQpMHgxYyB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19TQ0M0CQkoKHVzaG9ydCkweDFiIHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1BJT19QQzE0CQkoKHVzaG9ydCkweDFhIHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1RJTUVSMQkJKCh1c2hvcnQpMHgxOSB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19QSU9fUEMxMwkJKCh1c2hvcnQpMHgxOCB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19QSU9fUEMxMgkJKCh1c2hvcnQpMHgxNyB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19TRE1BX0NCX0VSUgkoKHVzaG9ydCkweDE2IHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX0lETUExCQkoKHVzaG9ydCkweDE1IHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX0lETUEyCQkoKHVzaG9ydCkweDE0IHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1RJTUVSMgkJKCh1c2hvcnQpMHgxMiB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19SSVNDVElNRVIJKCh1c2hvcnQpMHgxMSB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19JMkMJCSgodXNob3J0KTB4MTAgfCBDUE1WRUNfT0ZGU0VUKQorI2RlZmluZSBDUE1WRUNfUElPX1BDMTEJCSgodXNob3J0KTB4MGYgfCBDUE1WRUNfT0ZGU0VUKQorI2RlZmluZSBDUE1WRUNfUElPX1BDMTAJCSgodXNob3J0KTB4MGUgfCBDUE1WRUNfT0ZGU0VUKQorI2RlZmluZSBDUE1WRUNfVElNRVIzCQkoKHVzaG9ydCkweDBjIHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1BJT19QQzkJCSgodXNob3J0KTB4MGIgfCBDUE1WRUNfT0ZGU0VUKQorI2RlZmluZSBDUE1WRUNfUElPX1BDOAkJKCh1c2hvcnQpMHgwYSB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19QSU9fUEM3CQkoKHVzaG9ydCkweDA5IHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1RJTUVSNAkJKCh1c2hvcnQpMHgwNyB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19QSU9fUEM2CQkoKHVzaG9ydCkweDA2IHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1NQSQkJKCh1c2hvcnQpMHgwNSB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19TTUMxCQkoKHVzaG9ydCkweDA0IHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX1NNQzIJCSgodXNob3J0KTB4MDMgfCBDUE1WRUNfT0ZGU0VUKQorI2RlZmluZSBDUE1WRUNfUElPX1BDNQkJKCh1c2hvcnQpMHgwMiB8IENQTVZFQ19PRkZTRVQpCisjZGVmaW5lIENQTVZFQ19QSU9fUEM0CQkoKHVzaG9ydCkweDAxIHwgQ1BNVkVDX09GRlNFVCkKKyNkZWZpbmUgQ1BNVkVDX0VSUk9SCQkoKHVzaG9ydCkweDAwIHwgQ1BNVkVDX09GRlNFVCkKIAogZXh0ZXJuIHZvaWQgaXJxX2luc3RhbGxfaGFuZGxlcihpbnQgdmVjLCB2b2lkICgqaGFuZGxlcikodm9pZCAqKSwgdm9pZCAqZGV2X2lkKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0FtaWdhT25lRzNTRS5oIGIvaW5jbHVkZS9jb25maWdzL0FtaWdhT25lRzNTRS5oCmluZGV4IDdlNDBjNTMuLjAwOTYzNmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9BbWlnYU9uZUczU0UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQW1pZ2FPbmVHM1NFLmgKQEAgLTkzLDcgKzkzLDcgQEAKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwogI2RlZmluZSBDRkdfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KLSNkZWZpbmUgQ0ZHX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLworI2RlZmluZSBDRkdfUFJPTVBUCSJdICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KIAogI2RlZmluZSBDRkdfSFVTSF9QQVJTRVIJCTEJLyogdXNlICJodXNoIiBjb21tYW5kIHBhcnNlcgkqLwogLyogI3VuZGVmIENGR19IVVNIX1BBUlNFUiAqLwpAQCAtMTQ1LDcgKzE0NSw4IEBACiAKIC8qIFNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YQogICovCi0jZGVmaW5lIENGR19JTklUX1JBTV9BRERSCTB4NDAwMDAwCisvKiBISkY6IHVzZWQgdG8gYmUgMHg0MDAwMDAgKi8KKyNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMCAKICNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0VORAkweDgwMDAKICNkZWZpbmUgQ0ZHX0dCTF9EQVRBX1NJWkUJMTI4CiAjZGVmaW5lIENGR19HQkxfREFUQV9PRkZTRVQJKENGR19JTklUX1JBTV9FTkQgLSBDRkdfR0JMX0RBVEFfU0laRSkKQEAgLTE2MywyNCArMTY0LDM3IEBACiAvKiBTRFJBTSAwIC0gMjU2TUIKICAqLwogCi0jZGVmaW5lIENGR19JQkFUMEwgKENGR19TRFJBTV9CQVNFIHwgQkFUTF9QUF9SVyB8IEJBVExfQ0FDSEVJTkhJQklUKQorLypISkY6ICNkZWZpbmUgQ0ZHX0lCQVQwTCAoQ0ZHX1NEUkFNX0JBU0UgfCBCQVRMX1BQX1JXIHwgQkFUTF9DQUNIRUlOSElCSVQpCiAjZGVmaW5lIENGR19JQkFUMFUgKENGR19TRFJBTV9CQVNFIHwgQkFUVV9CTF80TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQogI2RlZmluZSBDRkdfREJBVDBMIChDRkdfU0RSQU1fQkFTRSB8IEJBVExfUFBfUlcgfCBCQVRMX0NBQ0hFSU5ISUJJVCkKLSNkZWZpbmUgQ0ZHX0RCQVQwVSBDRkdfSUJBVDBVCisjZGVmaW5lIENGR19EQkFUMFUgQ0ZHX0lCQVQwVSovCiAKLS8qIFNEUkFNIDEgLSAyNTZNQgorI2RlZmluZSBDRkdfREJBVDBMCSAgICAgIChDRkdfU0RSQU1fQkFTRSB8IEJBVExfUFBfMTAgfCBCQVRMX01FTUNPSEVSRU5DRSkKKyNkZWZpbmUgQ0ZHX0RCQVQwVQkgICAgICAoQ0ZHX1NEUkFNX0JBU0UgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0lCQVQwTCAgICAgIChDRkdfU0RSQU1fQkFTRSB8IEJBVExfUFBfMTAgfCBCQVRMX01FTUNPSEVSRU5DRSkKKyNkZWZpbmUgQ0ZHX0lCQVQwVSAgICAgIChDRkdfU0RSQU1fQkFTRSB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorLyogUENJIFJhbmdlCiAgKi8KLSNkZWZpbmUgQ0ZHX0lCQVQxTCAoKENGR19TRFJBTV9CQVNFK0NGR19JTklUX1JBTV9BRERSKSB8IEJBVExfUFBfUlcpIC8qIHwgQkFUTF9DQUNIRUlOSElCSVQpICovCisjZGVmaW5lIENGR19EQkFUMUwJICgweDgwMDAwMDAwIHwgQkFUTF9QUF9SVyB8IEJBVExfQ0FDSEVJTkhJQklUIHwgQkFUTF9HVUFSREVEU1RPUkFHRSkKKyNkZWZpbmUgQ0ZHX0RCQVQxVQkgKDB4ODAwMDAwMDAgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0lCQVQxTAkgKDB4ODAwMDAwMDAgfCBCQVRMX1BQX1JXIHwgQkFUTF9DQUNIRUlOSElCSVQpCisjZGVmaW5lIENGR19JQkFUMVUJICgweDgwMDAwMDAwIHwgQkFUVV9CTF8yNTZNIHwgQkFUVV9WUyB8IEJBVFVfVlApCisvKiBISkY6CisjZGVmaW5lIENGR19JQkFUMUwgKChDRkdfU0RSQU1fQkFTRStDRkdfSU5JVF9SQU1fQUREUikgfCBCQVRMX1BQX1JXKSAKICNkZWZpbmUgQ0ZHX0lCQVQxVSAoKENGR19TRFJBTV9CQVNFK0NGR19JTklUX1JBTV9BRERSKSB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQotI2RlZmluZSBDRkdfREJBVDFMICgoQ0ZHX1NEUkFNX0JBU0UrQ0ZHX0lOSVRfUkFNX0FERFIgKyAweDIwMDAwKSB8IEJBVExfUFBfUlcgKSAvKiB8IEJBVExfQ0FDSEVJTkhJQklUKSAqLworI2RlZmluZSBDRkdfREJBVDFMICgoQ0ZHX1NEUkFNX0JBU0UrQ0ZHX0lOSVRfUkFNX0FERFIgKyAweDIwMDAwKSB8IEJBVExfUFBfUlcgKSAKICNkZWZpbmUgQ0ZHX0RCQVQxVSAoKENGR19TRFJBTV9CQVNFK0NGR19JTklUX1JBTV9BRERSICsgMHgyMDAwMCkgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyovCiAKIC8qIEluaXQgUkFNIGluIHRoZSBDUFUgRENhY2hlIChubyBiYWNraW5nIG1lbW9yeSkKICAqLwogI2RlZmluZSBDRkdfREJBVDJMCShDRkdfSU5JVF9SQU1fQUREUiB8IEJBVExfUFBfUlcgfCBCQVRMX01FTUNPSEVSRU5DRSkKICNkZWZpbmUgQ0ZHX0RCQVQyVQkoQ0ZHX0lOSVRfUkFNX0FERFIgfCBCQVRVX0JMXzEyOEsgfCBCQVRVX1ZTIHwgQkFUVV9WUCkKLSNkZWZpbmUgQ0ZHX0lCQVQyTAkwIC8qIENGR19EQkFUMkwgKi8KLSNkZWZpbmUgQ0ZHX0lCQVQyVQkwIC8qIENGR19EQkFUMlUgKi8KKy8qIFRoaXMgdXNlZCB0byBiZSBjb21tZW50ZWQgb3V0ICovCisjZGVmaW5lIENGR19JQkFUMkwJICBDRkdfREJBVDJMIAorLyogVGhpcyBoZXJlIHRvbyAqLworI2RlZmluZSBDRkdfSUJBVDJVCSAgQ0ZHX0RCQVQyVSAKKwogCiAvKiBJL08gYW5kIFBDSSBtZW1vcnkgYXQgMHhmMDAwMDAwMAogICovCkBAIC0zNzIsNyArMzg2LDcgQEAKIAkicGNpX2lycWJfc2VsZWN0PWVkZ2VcMCIJCVwKIAkicGNpX2lycWM9MTFcMCIJCQkJXAogCSJwY2lfaXJxY19zZWxlY3Q9ZWRnZVwwIgkJXAotCSJwY2lfaXJxZD0xMlwwIgkJCQlcCisJInBjaV9pcnFkPTdcMCIJCQkJXAogCSJwY2lfaXJxZF9zZWxlY3Q9ZWRnZVwwIgogCiAKZGlmZiAtLWdpdCBhL2xpYl9wcGMvYm9hcmQuYyBiL2xpYl9wcGMvYm9hcmQuYwppbmRleCAyNTQxYTU0Li4wYjQxNDdmIDEwMDY0NAotLS0gYS9saWJfcHBjL2JvYXJkLmMKKysrIGIvbGliX3BwYy9ib2FyZC5jCkBAIC0xNjEsNiArMTYxLDExIEBACiAJKmFkZHIrKyB8PSBOUl9TWVNDQUxMUyAmIDB4RkZGRjsKIAogCWZsdXNoX2NhY2hlICgweDBDMDAsIDB4MTApOworCisJLyogSW5pdGlhbGl6ZSBzeXNjYWxscyBzdGFjayBwb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlhZGRyID0gKHVsb25nICopIDB4Q0ZDOworCSphZGRyID0gKHVsb25nKWFkZHI7CisJZmx1c2hfY2FjaGUgKCh1bG9uZylhZGRyLCAweDEwKTsKIH0KIAogLyoK