From: marko.makela Date: December 21 2010 12:06pm Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3264) List-Archive: http://lists.mysql.com/commits/127400 Message-Id: <201012211207.oBLC75vD025716@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0731946586==" --===============0731946586== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUuY29tLTIwMTAxMjE3MDYyNzQxLTZwb3N3 YzJ1YzM1ZXh4bm8KCiAzMjY0IE1hcmtvIE3DpGtlbMOkCTIwMTAtMTItMjEgW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjEtaW5ub2RiIHRvIG15c3FsLTUuNS1pbm5vZGIuCgogICAgbW9kaWZp ZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLnJlc3VsdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi50ZXN0CiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5o CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9yb3cwdXBkLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHB1cmdlLmMKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVtb2QuYwogICAgICBzdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwdXBkLmMKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri L3IvaW5ub2RiLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGIu cmVzdWx0CXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEyMTcwNjI3NDEtNnBvc3dj MnVjMzVleHhubworKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi5yZXN1bHQJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjA1MTAtaXpqaWEzMTdsZTNh OGY1awpAQCAtMSw1ICsxLDggQEAKIGRyb3AgdGFibGUgaWYgZXhpc3RzIHQxLHQyLHQzLHQ0Owog ZHJvcCBkYXRhYmFzZSBpZiBleGlzdHMgbXlzcWx0ZXN0OworQ1JFQVRFIFRBQkxFIGJ1ZzU4OTEy IChhIEJMT0IsIGIgVEVYVCwgUFJJTUFSWSBLRVkoYSgxKSkpIEVOR0lORT1Jbm5vREI7CitJTlNF UlQgSU5UTyBidWc1ODkxMiBWQUxVRVMoUkVQRUFUKCdhJyw4MDAwKSxSRVBFQVQoJ2InLDgwMDAp KTsKK1VQREFURSBidWc1ODkxMiBTRVQgYT1SRVBFQVQoJ2EnLDc5OTkpOwogY3JlYXRlIHRhYmxl IHQxIChpZCBpbnQgdW5zaWduZWQgbm90IG51bGwgYXV0b19pbmNyZW1lbnQsIGNvZGUgdGlueWlu dCB1bnNpZ25lZCBub3QgbnVsbCwgbmFtZSBjaGFyKDIwKSBub3QgbnVsbCwgcHJpbWFyeSBrZXkg KGlkKSwga2V5IChjb2RlKSwgdW5pcXVlIChuYW1lKSkgZW5naW5lPWlubm9kYjsKIGluc2VydCBp bnRvIHQxIChjb2RlLCBuYW1lKSB2YWx1ZXMgKDEsICdUaW0nKSwgKDEsICdNb250eScpLCAoMiwg J0RhdmlkJyksICgyLCAnRXJpaycpLCAoMywgJ1Nhc2hhJyksICgzLCAnSmVyZW15JyksICg0LCAn TWF0dCcpOwogc2VsZWN0IGlkLCBjb2RlLCBuYW1lIGZyb20gdDEgb3JkZXIgYnkgaWQ7CkBAIC0x NjcwLDEwICsxNjczLDEwIEBAIHZhcmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dzX2RlbGV0ZWRf b3IKIDcxCiBTRUxFQ1QgdmFyaWFibGVfdmFsdWUgLSBAaW5ub2RiX3Jvd3NfaW5zZXJ0ZWRfb3Jp ZyBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9iYWxfc3RhdHVzIFdIRVJFIExPV0VSKHZhcmlh YmxlX25hbWUpID0gJ2lubm9kYl9yb3dzX2luc2VydGVkJzsKIHZhcmlhYmxlX3ZhbHVlIC0gQGlu bm9kYl9yb3dzX2luc2VydGVkX29yaWcKLTEwNjUKKzEwNjYKIFNFTEVDVCB2YXJpYWJsZV92YWx1 ZSAtIEBpbm5vZGJfcm93c191cGRhdGVkX29yaWcgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuZ2xv YmFsX3N0YXR1cyBXSEVSRSBMT1dFUih2YXJpYWJsZV9uYW1lKSA9ICdpbm5vZGJfcm93c191cGRh dGVkJzsKIHZhcmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dzX3VwZGF0ZWRfb3JpZwotODY1Cis4 NjYKIFNFTEVDVCB2YXJpYWJsZV92YWx1ZSAtIEBpbm5vZGJfcm93X2xvY2tfd2FpdHNfb3JpZyBG Uk9NIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9iYWxfc3RhdHVzIFdIRVJFIExPV0VSKHZhcmlhYmxl X25hbWUpID0gJ2lubm9kYl9yb3dfbG9ja193YWl0cyc7CiB2YXJpYWJsZV92YWx1ZSAtIEBpbm5v ZGJfcm93X2xvY2tfd2FpdHNfb3JpZwogMApAQCAtMzE3MywzICszMTc2LDQgQEAgVmFyaWFibGVf bmFtZQlWYWx1ZQogSGFuZGxlcl91cGRhdGUJMQogVmFyaWFibGVfbmFtZQlWYWx1ZQogSGFuZGxl cl9kZWxldGUJMQorRFJPUCBUQUJMRSBidWc1ODkxMjsKCj09PSBtb2RpZmllZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRl L2lubm9kYi90L2lubm9kYi50ZXN0CXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEy MTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90 L2lubm9kYi50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTIwNTEw LWl6amlhMzE3bGUzYThmNWsKQEAgLTQ5LDYgKzQ5LDE1IEBAIGRyb3AgdGFibGUgaWYgZXhpc3Rz IHQxLHQyLHQzLHQ0OwogZHJvcCBkYXRhYmFzZSBpZiBleGlzdHMgbXlzcWx0ZXN0OwogLS1lbmFi bGVfd2FybmluZ3MKIAorIyBCdWcjNTg5MTIgSW5ub0RCIHVubmVjZXNzYXJpbHkgYXZvaWRzIHVw ZGF0ZS1pbi1wbGFjZSBvbiBjb2x1bW4gcHJlZml4ZXMKK0NSRUFURSBUQUJMRSBidWc1ODkxMiAo YSBCTE9CLCBiIFRFWFQsIFBSSU1BUlkgS0VZKGEoMSkpKSBFTkdJTkU9SW5ub0RCOworSU5TRVJU IElOVE8gYnVnNTg5MTIgVkFMVUVTKFJFUEVBVCgnYScsODAwMCksUkVQRUFUKCdiJyw4MDAwKSk7 CitVUERBVEUgYnVnNTg5MTIgU0VUIGE9UkVQRUFUKCdhJyw3OTk5KTsKKyMgVGhlIGFib3ZlIHN0 YXRlbWVudHMgdXNlZCB0byB0cmlnZ2VyIGEgZmFpbHVyZSBkdXJpbmcgcHVyZ2Ugd2hlbgorIyBC dWcjNTUyODQgd2FzIGZpeGVkIHdoaWxlIEJ1ZyM1ODkxMiB3YXMgbm90LiBEZWZlciB0aGUgRFJP UCBUQUJMRSwKKyMgc28gdGhhdCBwdXJnZSBnZXRzIGEgY2hhbmNlIHRvIHJ1biAoYW5kIGEgZG91 YmxlIGZyZWUgb2YgdGhlCisjIG9mZi1wYWdlIGNvbHVtbiBjYW4gYmUgZGV0ZWN0ZWQsIGlmIG9u ZSBpcyB0byBvY2N1ci4pCisKICMKICMgU21hbGwgYmFzaWMgdGVzdCB3aXRoIGlnbm9yZQogIwpA QCAtMjU0OCw2ICsyNTU3LDkgQEAgU0VUIEdMT0JBTCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5 ID0gQAogCiAtLSBlbmFibGVfcXVlcnlfbG9nCiAKKyMgQ2xlYW4gdXAgYWZ0ZXIgdGhlIEJ1ZyM1 NTI4NC9CdWcjNTg5MTIgdGVzdCBjYXNlLgorRFJPUCBUQUJMRSBidWc1ODkxMjsKKwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBsZWFzZSwgRE8gTk9UIFRPVUNIIHRoaXMgZmls ZSBhcyB3ZWxsIGFzIHRoZSBpbm5vZGIucmVzdWx0IGZpbGUuICAgIwoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9idHIvYnRyMGN1ci5jCXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEyMTcwNjI3 NDEtNnBvc3djMnVjMzVleHhubworKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjA1MTAtaXpqaWEzMTdsZTNh OGY1awpAQCAtMTg3NCw3ICsxODc0LDggQEAgYnRyX2N1cl91cGRhdGVfaW5fcGxhY2UoCiAJCU5P VCBjYWxsIGl0IGlmIGluZGV4IGlzIHNlY29uZGFyeSAqLwogCiAJCWlmICghZGljdF9pbmRleF9p c19jbHVzdChpbmRleCkKLQkJICAgIHx8IHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5 KE5VTEwsIGluZGV4LCB1cGRhdGUpKSB7CisJCSAgICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2Zp ZWxkX2JpbmFyeShOVUxMLCBOVUxMLAorCQkJCQkJCWluZGV4LCB1cGRhdGUpKSB7CiAKIAkJCS8q IFJlbW92ZSBwb3NzaWJsZSBoYXNoIGluZGV4IHBvaW50ZXIgdG8gdGhpcyByZWNvcmQgKi8KIAkJ CWJ0cl9zZWFyY2hfdXBkYXRlX2hhc2hfb25fZGVsZXRlKGN1cnNvcik7CkBAIC0yNjI2LDI3ICsy NjI3LDI0IEBAIHVsaW50CiBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCiAvKj09PT09 PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCWZsYWdzLAkvKiE8IGluOiB1bmRvIGxv Z2dpbmcgYW5kIGxvY2tpbmcgZmxhZ3MgKi8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjog Y3Vyc29yICovCisJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluL291dDogYnVmZmVyIGJsb2Nr IG9mIHRoZSByZWNvcmQgKi8KKwlyZWNfdCoJCXJlYywJLyohPCBpbi9vdXQ6IHJlY29yZCAqLwor CWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBpbmRleCBvZiB0aGUgcmVj b3JkICovCisJY29uc3QgdWxpbnQqCW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzZXRzKHJl YykgKi8KIAlpYm9vbAkJdmFsLAkvKiE8IGluOiB2YWx1ZSB0byBzZXQgKi8KIAlxdWVfdGhyX3Qq CXRociwJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10 ciAqLwogewotCWRpY3RfaW5kZXhfdCoJaW5kZXg7Ci0JYnVmX2Jsb2NrX3QqCWJsb2NrOwogCXJv bGxfcHRyX3QJcm9sbF9wdHI7CiAJdWxpbnQJCWVycjsKLQlyZWNfdCoJCXJlYzsKIAlwYWdlX3pp cF9kZXNfdCoJcGFnZV96aXA7CiAJdHJ4X3QqCQl0cng7Ci0JbWVtX2hlYXBfdCoJaGVhcAkJPSBO VUxMOwotCXVsaW50CQlvZmZzZXRzX1tSRUNfT0ZGU19OT1JNQUxfU0laRV07Ci0JdWxpbnQqCQlv ZmZzZXRzCQk9IG9mZnNldHNfOwotCXJlY19vZmZzX2luaXQob2Zmc2V0c18pOwogCi0JcmVjID0g YnRyX2N1cl9nZXRfcmVjKGN1cnNvcik7Ci0JaW5kZXggPSBjdXJzb3ItPmluZGV4OworCXV0X2Fk KGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShy ZWMsIGluZGV4LCBvZmZzZXRzKSk7CiAJdXRfYWQoISFwYWdlX3JlY19pc19jb21wKHJlYykgPT0g ZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkpOwotCW9mZnNldHMgPSByZWNfZ2V0X29m ZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJdXRf YWQoYnVmX2Jsb2NrX2dldF9mcmFtZShibG9jaykgPT0gcGFnZV9hbGlnbihyZWMpKTsKKwl1dF9h ZChwYWdlX2lzX2xlYWYocGFnZV9hbGlnbihyZWMpKSk7CiAKICNpZmRlZiBVTklWX0RFQlVHCiAJ aWYgKGJ0cl9jdXJfcHJpbnRfcmVjb3JkX29wcyAmJiB0aHIpIHsKQEAgLTI2NTgsMTMgKzI2NTYs MTIgQEAgYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogCXV0X2FkKGRpY3RfaW5kZXhf aXNfY2x1c3QoaW5kZXgpKTsKIAl1dF9hZCghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCByZWNf b2Zmc19jb21wKG9mZnNldHMpKSk7CiAKLQllcnIgPSBsb2NrX2NsdXN0X3JlY19tb2RpZnlfY2hl Y2tfYW5kX2xvY2soZmxhZ3MsCi0JCQkJCQkgICBidHJfY3VyX2dldF9ibG9jayhjdXJzb3IpLAor CWVyciA9IGxvY2tfY2x1c3RfcmVjX21vZGlmeV9jaGVja19hbmRfbG9jayhmbGFncywgYmxvY2ss CiAJCQkJCQkgICByZWMsIGluZGV4LCBvZmZzZXRzLCB0aHIpOwogCiAJaWYgKGVyciAhPSBEQl9T VUNDRVNTKSB7CiAKLQkJZ290byBmdW5jX2V4aXQ7CisJCXJldHVybihlcnIpOwogCX0KIAogCWVy ciA9IHRyeF91bmRvX3JlcG9ydF9yb3dfb3BlcmF0aW9uKGZsYWdzLCBUUlhfVU5ET19NT0RJRllf T1AsIHRociwKQEAgLTI2NzIsMTEgKzI2NjksOSBAQCBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVz dF9yZWMoCiAJCQkJCSAgICAmcm9sbF9wdHIpOwogCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewog Ci0JCWdvdG8gZnVuY19leGl0OworCQlyZXR1cm4oZXJyKTsKIAl9CiAKLQlibG9jayA9IGJ0cl9j dXJfZ2V0X2Jsb2NrKGN1cnNvcik7Ci0KIAlpZiAoYmxvY2stPmlzX2hhc2hlZCkgewogCQlyd19s b2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAJfQpAQCAtMjY5OSwxMCArMjY5NCw2IEBA IGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygKIAlidHJfY3VyX2RlbF9tYXJrX3NldF9j bHVzdF9yZWNfbG9nKGZsYWdzLCByZWMsIGluZGV4LCB2YWwsIHRyeCwKIAkJCQkJICAgcm9sbF9w dHIsIG10cik7CiAKLWZ1bmNfZXhpdDoKLQlpZiAoVU5JVl9MSUtFTFlfTlVMTChoZWFwKSkgewot CQltZW1faGVhcF9mcmVlKGhlYXApOwotCX0KIAlyZXR1cm4oZXJyKTsKIH0KIApAQCAtMzc1NCwx MDggKzM3NDUsMzYgQEAgYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9maWVsZCgKIH0K IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCi1NYXJrcyBub3QgdXBkYXRlZCBleHRlcm4gZmllbGRzIGFzIG5v dC1vd25lZCBieSB0aGlzIHJlY29yZC4gVGhlIG93bmVyc2hpcAotaXMgdHJhbnNmZXJyZWQgdG8g dGhlIHVwZGF0ZWQgcmVjb3JkIHdoaWNoIGlzIGluc2VydGVkIGVsc2V3aGVyZSBpbiB0aGUKK01h cmtzIG5vbi11cGRhdGVkIG9mZi1wYWdlIGZpZWxkcyBhcyBkaXNvd25lZCBieSB0aGlzIHJlY29y ZC4gVGhlIG93bmVyc2hpcAorbXVzdCBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgdXBkYXRlZCByZWNv cmQgd2hpY2ggaXMgaW5zZXJ0ZWQgZWxzZXdoZXJlIGluIHRoZQogaW5kZXggdHJlZS4gSW4gcHVy Z2Ugb25seSB0aGUgb3duZXIgb2YgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQgaXMgYWxsb3dlZAot dG8gZnJlZSB0aGUgZmllbGQuCi1AcmV0dXJuIFRSVUUgaWYgQkxPQiBvd25lcnNoaXAgd2FzIHRy YW5zZmVycmVkICovCit0byBmcmVlIHRoZSBmaWVsZC4gKi8KIFVOSVZfSU5URVJOCi1pYm9vbAot YnRyX2N1cl9tYXJrX2V4dGVybl9pbmhlcml0ZWRfZmllbGRzKAotLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0qLwordm9pZAorYnRyX2N1cl9kaXNvd25faW5oZXJpdGVkX2ZpZWxk cygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJcGFnZV96aXBfZGVzX3QqCXBh Z2VfemlwLC8qITwgaW4vb3V0OiBjb21wcmVzc2VkIHBhZ2Ugd2hvc2UgdW5jb21wcmVzc2VkCiAJ CQkJcGFydCB3aWxsIGJlIHVwZGF0ZWQsIG9yIE5VTEwgKi8KIAlyZWNfdCoJCXJlYywJLyohPCBp bi9vdXQ6IHJlY29yZCBpbiBhIGNsdXN0ZXJlZCBpbmRleCAqLwogCWRpY3RfaW5kZXhfdCoJaW5k ZXgsCS8qITwgaW46IGluZGV4IG9mIHRoZSBwYWdlICovCiAJY29uc3QgdWxpbnQqCW9mZnNldHMs LyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkgcmVjX2dldF9vZmZzZXRzKCkgKi8KIAljb25zdCB1 cGRfdCoJdXBkYXRlLAkvKiE8IGluOiB1cGRhdGUgdmVjdG9yICovCi0JbXRyX3QqCQltdHIpCS8q ITwgaW46IG10ciwgb3IgTlVMTCBpZiBub3QgbG9nZ2VkICovCisJbXRyX3QqCQltdHIpCS8qITwg aW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7Ci0JdWxpbnQJbjsKLQl1bGludAlqOwogCXVs aW50CWk7Ci0JaWJvb2wJY2hhbmdlX293bmVyc2hpcCA9IEZBTFNFOwogCi0JdXRfYWQocmVjX29m ZnNfdmFsaWRhdGUocmVjLCBOVUxMLCBvZmZzZXRzKSk7CisJdXRfYWQocmVjX29mZnNfdmFsaWRh dGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwogCXV0X2FkKCFyZWNfb2Zmc19jb21wKG9mZnNldHMp IHx8ICFyZWNfZ2V0X25vZGVfcHRyX2ZsYWcocmVjKSk7CisJdXRfYWQocmVjX29mZnNfYW55X2V4 dGVybihvZmZzZXRzKSk7CisJdXRfYWQobXRyKTsKIAotCWlmICghcmVjX29mZnNfYW55X2V4dGVy bihvZmZzZXRzKSkgewotCi0JCXJldHVybihGQUxTRSk7Ci0JfQotCi0JbiA9IHJlY19vZmZzX25f ZmllbGRzKG9mZnNldHMpOwotCi0JZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCQlpZiAocmVj X29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgewotCi0JCQkvKiBDaGVjayBpdCBpcyBub3Qg aW4gdXBkYXRlZCBmaWVsZHMgKi8KLQotCQkJaWYgKHVwZGF0ZSkgewotCQkJCWZvciAoaiA9IDA7 IGogPCB1cGRfZ2V0X25fZmllbGRzKHVwZGF0ZSk7Ci0JCQkJICAgICBqKyspIHsKLQkJCQkJaWYg KHVwZF9nZXRfbnRoX2ZpZWxkKHVwZGF0ZSwgaikKLQkJCQkJICAgIC0+ZmllbGRfbm8gPT0gaSkg ewotCi0JCQkJCQlnb3RvIHVwZGF0ZWQ7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KKwlmb3IgKGkg PSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgeworCQlpZiAocmVjX29m ZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKQorCQkgICAgJiYgIXVwZF9nZXRfZmllbGRfYnlfZmll bGRfbm8odXBkYXRlLCBpKSkgewogCQkJYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9m aWVsZCgKIAkJCQlwYWdlX3ppcCwgcmVjLCBpbmRleCwgb2Zmc2V0cywgaSwgRkFMU0UsIG10cik7 Ci0KLQkJCWNoYW5nZV9vd25lcnNoaXAgPSBUUlVFOwotdXBkYXRlZDoKLQkJCTsKIAkJfQogCX0K LQotCXJldHVybihjaGFuZ2Vfb3duZXJzaGlwKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1UaGUg Y29tcGxlbWVudCBvZiB0aGUgcHJldmlvdXMgZnVuY3Rpb246IGluIGFuIHVwZGF0ZSBlbnRyeSBt YXkgaW5oZXJpdAotc29tZSBleHRlcm5hbGx5IHN0b3JlZCBmaWVsZHMgZnJvbSBhIHJlY29yZC4g V2UgbXVzdCBtYXJrIHRoZW0gYXMgaW5oZXJpdGVkCi1pbiBlbnRyeSwgc28gdGhhdCB0aGV5IGFy ZSBub3QgZnJlZWQgaW4gYSByb2xsYmFjay4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idHJfY3Vy X21hcmtfZHR1cGxlX2luaGVyaXRlZF9leHRlcm4oCi0vKj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSovCi0JZHR1cGxlX3QqCWVudHJ5LAkJLyohPCBpbi9vdXQ6IHVwZGF0ZWQgZW50 cnkgdG8gYmUKLQkJCQkJaW5zZXJ0ZWQgdG8gY2x1c3RlcmVkIGluZGV4ICovCi0JY29uc3QgdXBk X3QqCXVwZGF0ZSkJCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgKi8KLXsKLQl1bGludAkJaTsKLQot CWZvciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KTsgaSsrKSB7Ci0KLQkJ ZGZpZWxkX3QqCWRmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKGVudHJ5LCBpKTsKLQkJYnl0 ZSoJCWRhdGE7Ci0JCXVsaW50CQlsZW47Ci0JCXVsaW50CQlqOwotCi0JCWlmICghZGZpZWxkX2lz X2V4dChkZmllbGQpKSB7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qIENoZWNrIGlmIGl0IGlz IGluIHVwZGF0ZWQgZmllbGRzICovCi0KLQkJZm9yIChqID0gMDsgaiA8IHVwZF9nZXRfbl9maWVs ZHModXBkYXRlKTsgaisrKSB7Ci0JCQlpZiAodXBkX2dldF9udGhfZmllbGQodXBkYXRlLCBqKS0+ ZmllbGRfbm8gPT0gaSkgewotCi0JCQkJZ290byBpc191cGRhdGVkOwotCQkJfQotCQl9Ci0KLQkJ ZGF0YSA9IGRmaWVsZF9nZXRfZGF0YShkZmllbGQpOwotCQlsZW4gPSBkZmllbGRfZ2V0X2xlbihk ZmllbGQpOwotCQlkYXRhW2xlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUgKyBCVFJfRVhU RVJOX0xFTl0KLQkJCXw9IEJUUl9FWFRFUk5fSU5IRVJJVEVEX0ZMQUc7Ci0KLWlzX3VwZGF0ZWQ6 Ci0JCTsKLQl9CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMzg5MiwyOSArMzgxMSw2IEBAIGJ0 cl9jdXJfdW5tYXJrX2V4dGVybl9maWVsZHMoCiAJCX0KIAl9CiB9Ci0KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgotTWFya3MgYWxsIGV4dGVybiBmaWVsZHMgaW4gYSBkdHVwbGUgYXMgb3duZWQgYnkgdGhlIHJl Y29yZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idHJfY3VyX3VubWFya19kdHVwbGVfZXh0ZXJu X2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCWR0dXBsZV90 KgllbnRyeSkJCS8qITwgaW4vb3V0OiBjbHVzdGVyZWQgaW5kZXggZW50cnkgKi8KLXsKLQl1bGlu dAlpOwotCi0JZm9yIChpID0gMDsgaSA8IGR0dXBsZV9nZXRfbl9maWVsZHMoZW50cnkpOyBpKysp IHsKLQkJZGZpZWxkX3QqIGRmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKGVudHJ5LCBpKTsK LQotCQlpZiAoZGZpZWxkX2lzX2V4dChkZmllbGQpKSB7Ci0JCQlieXRlKglkYXRhID0gZGZpZWxk X2dldF9kYXRhKGRmaWVsZCk7Ci0JCQl1bGludAlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQp OwotCi0JCQlkYXRhW2xlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUgKyBCVFJfRVhURVJO X0xFTl0KLQkJCQkmPSB+QlRSX0VYVEVSTl9PV05FUl9GTEFHOwotCQl9Ci0JfQotfQogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIEZsYWdzIHRoZSBkYXRhIHR1cGxlIGZpZWxkcyB0aGF0IGFyZSBtYXJrZWQg YXMgZXh0ZXJuIHN0b3JhZ2UgaW4gdGhlCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2J0cjBjdXIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0 cjBjdXIuaAlyZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUuY29tLTIwMTAxMjE3MDYyNzQxLTZwb3N3 YzJ1YzM1ZXh4bm8KKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEyMDUxMC1pemppYTMxN2xlM2E4ZjVr CkBAIC0zMzMsMTAgKzMzMywxNCBAQCB1bGludAogYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3Rf cmVjKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFncywJLyoh PCBpbjogdW5kbyBsb2dnaW5nIGFuZCBsb2NraW5nIGZsYWdzICovCi0JYnRyX2N1cl90KgljdXJz b3IsCS8qITwgaW46IGN1cnNvciAqLworCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbi9vdXQ6 IGJ1ZmZlciBibG9jayBvZiB0aGUgcmVjb3JkICovCisJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0 OiByZWNvcmQgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5k ZXggb2YgdGhlIHJlY29yZCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IHJlY19n ZXRfb2Zmc2V0cyhyZWMpICovCiAJaWJvb2wJCXZhbCwJLyohPCBpbjogdmFsdWUgdG8gc2V0ICov CiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwotCW10cl90KgkJbXRy KTsJLyohPCBpbjogbXRyICovCisJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLworCV9fYXR0 cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMgYSBzZWNvbmRhcnkgaW5kZXggcmVj b3JkIGRlbGV0ZSBtYXJrIHRvIFRSVUUgb3IgRkFMU0UuCiBAcmV0dXJuCURCX1NVQ0NFU1MsIERC X0xPQ0tfV0FJVCwgb3IgZXJyb3IgbnVtYmVyICovCkBAIC00NjksNDAgKzQ3MywyMiBAQCBidHJf ZXN0aW1hdGVfbnVtYmVyX29mX2RpZmZlcmVudF9rZXlfdmFsCiAvKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4KTsJLyohPCBpbjog aW5kZXggKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgotTWFya3Mgbm90IHVwZGF0ZWQgZXh0ZXJuIGZpZWxk cyBhcyBub3Qtb3duZWQgYnkgdGhpcyByZWNvcmQuIFRoZSBvd25lcnNoaXAKLWlzIHRyYW5zZmVy cmVkIHRvIHRoZSB1cGRhdGVkIHJlY29yZCB3aGljaCBpcyBpbnNlcnRlZCBlbHNld2hlcmUgaW4g dGhlCitNYXJrcyBub24tdXBkYXRlZCBvZmYtcGFnZSBmaWVsZHMgYXMgZGlzb3duZWQgYnkgdGhp cyByZWNvcmQuIFRoZSBvd25lcnNoaXAKK211c3QgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0 ZWQgcmVjb3JkIHdoaWNoIGlzIGluc2VydGVkIGVsc2V3aGVyZSBpbiB0aGUKIGluZGV4IHRyZWUu IEluIHB1cmdlIG9ubHkgdGhlIG93bmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIGlzIGFs bG93ZWQKLXRvIGZyZWUgdGhlIGZpZWxkLgotQHJldHVybiBUUlVFIGlmIEJMT0Igb3duZXJzaGlw IHdhcyB0cmFuc2ZlcnJlZCAqLwordG8gZnJlZSB0aGUgZmllbGQuICovCiBVTklWX0lOVEVSTgot aWJvb2wKLWJ0cl9jdXJfbWFya19leHRlcm5faW5oZXJpdGVkX2ZpZWxkcygKLS8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK3ZvaWQKK2J0cl9jdXJfZGlzb3duX2luaGVyaXRl ZF9maWVsZHMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXBhZ2VfemlwX2Rl c190KglwYWdlX3ppcCwvKiE8IGluL291dDogY29tcHJlc3NlZCBwYWdlIHdob3NlIHVuY29tcHJl c3NlZAogCQkJCXBhcnQgd2lsbCBiZSB1cGRhdGVkLCBvciBOVUxMICovCiAJcmVjX3QqCQlyZWMs CS8qITwgaW4vb3V0OiByZWNvcmQgaW4gYSBjbHVzdGVyZWQgaW5kZXggKi8KIAlkaWN0X2luZGV4 X3QqCWluZGV4LAkvKiE8IGluOiBpbmRleCBvZiB0aGUgcGFnZSAqLwogCWNvbnN0IHVsaW50Kglv ZmZzZXRzLC8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCiAJ Y29uc3QgdXBkX3QqCXVwZGF0ZSwJLyohPCBpbjogdXBkYXRlIHZlY3RvciAqLwotCW10cl90KgkJ bXRyKTsJLyohPCBpbjogbXRyLCBvciBOVUxMIGlmIG5vdCBsb2dnZWQgKi8KLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgotVGhlIGNvbXBsZW1lbnQgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uOiBpbiBhbiB1cGRh dGUgZW50cnkgbWF5IGluaGVyaXQKLXNvbWUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGRzIGZyb20g YSByZWNvcmQuIFdlIG11c3QgbWFyayB0aGVtIGFzIGluaGVyaXRlZAotaW4gZW50cnksIHNvIHRo YXQgdGhleSBhcmUgbm90IGZyZWVkIGluIGEgcm9sbGJhY2suICovCi1VTklWX0lOVEVSTgotdm9p ZAotYnRyX2N1cl9tYXJrX2R0dXBsZV9pbmhlcml0ZWRfZXh0ZXJuKAotLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLwotCWR0dXBsZV90KgllbnRyeSwJCS8qITwgaW4vb3V0OiB1 cGRhdGVkIGVudHJ5IHRvIGJlCi0JCQkJCWluc2VydGVkIHRvIGNsdXN0ZXJlZCBpbmRleCAqLwot CWNvbnN0IHVwZF90Kgl1cGRhdGUpOwkvKiE8IGluOiB1cGRhdGUgdmVjdG9yICovCi0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKLU1hcmtzIGFsbCBleHRlcm4gZmllbGRzIGluIGEgZHR1cGxlIGFzIG93bmVkIGJ5 IHRoZSByZWNvcmQuICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl91bm1hcmtfZHR1cGxl X2V4dGVybl9maWVsZHMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlk dHVwbGVfdCoJZW50cnkpOwkJLyohPCBpbi9vdXQ6IGNsdXN0ZXJlZCBpbmRleCBlbnRyeSAqLwor CW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwoMiwzLDQsNSw2KSkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTdG9yZXMgdGhl IGZpZWxkcyBpbiBiaWdfcmVjX3ZlYyB0byB0aGUgdGFibGVzcGFjZSBhbmQgcHV0cyBwb2ludGVy cyB0bwogdGhlbSBpbiByZWMuICBUaGUgZXh0ZXJuIGZsYWdzIGluIHJlYyB3aWxsIGhhdmUgdG8g YmUgc2V0IGJlZm9yZWhhbmQuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2RhdGEwZGF0YS5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBk YXRhLmgJcmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xlLmNvbS0yMDEwMTIxNzA2Mjc0MS02cG9zd2My dWMzNWV4eG5vCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEyMDUxMC1pemppYTMxN2xlM2E4ZjVr CkBAIC0xNTQsMTQgKzE1NCwxOSBAQCBkZmllbGRfZHVwKAogCWRmaWVsZF90KglmaWVsZCwJLyoh PCBpbi9vdXQ6IGRhdGEgZmllbGQgKi8KIAltZW1faGVhcF90KgloZWFwKTsJLyohPCBpbjogbWVt b3J5IGhlYXAgd2hlcmUgYWxsb2NhdGVkICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGVzdHMgaWYg ZGF0YSBsZW5ndGggYW5kIGNvbnRlbnQgaXMgZXF1YWwgZm9yIHR3byBkZmllbGRzLgotQHJldHVy bglUUlVFIGlmIGVxdWFsICovCitUZXN0cyBpZiB0d28gZGF0YSBmaWVsZHMgYXJlIGVxdWFsLgor SWYgbGVuPT0wLCB0ZXN0cyB0aGUgZGF0YSBsZW5ndGggYW5kIGNvbnRlbnQgZm9yIGVxdWFsaXR5 LgorSWYgbGVuPjAsIHRlc3RzIHRoZSBmaXJzdCBsZW4gYnl0ZXMgb2YgdGhlIGNvbnRlbnQgZm9y IGVxdWFsaXR5LgorQHJldHVybglUUlVFIGlmIGJvdGggZmllbGRzIGFyZSBOVUxMIG9yIGlmIHRo ZXkgYXJlIGVxdWFsICovCiBVTklWX0lOTElORQogaWJvb2wKIGRmaWVsZF9kYXRhc19hcmVfYmlu YXJ5X2VxdWFsKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJY29uc3QgZGZpZWxk X3QqCWZpZWxkMSwJLyohPCBpbjogZmllbGQgKi8KLQljb25zdCBkZmllbGRfdCoJZmllbGQyKTsv KiE8IGluOiBmaWVsZCAqLworCWNvbnN0IGRmaWVsZF90KglmaWVsZDIsCS8qITwgaW46IGZpZWxk ICovCisJdWxpbnQJCWxlbikJLyohPCBpbjogbWF4aW11bSBwcmVmaXggdG8gY29tcGFyZSwKKwkJ CQlvciAwIHRvIGNvbXBhcmUgdGhlIHdob2xlIGZpZWxkIGxlbmd0aCAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRl c3RzIGlmIGRmaWVsZCBkYXRhIGxlbmd0aCBhbmQgY29udGVudCBpcyBlcXVhbCB0byB0aGUgZ2l2 ZW4uCiBAcmV0dXJuCVRSVUUgaWYgZXF1YWwgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvZGF0YTBkYXRhLmljCXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEyMTcw NjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0 YTBkYXRhLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTIwNTEwLWl6 amlhMzE3bGUzYThmNWsKQEAgLTIyOSwyMCArMjI5LDMwIEBAIGRmaWVsZF9kdXAoCiB9CiAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCi1UZXN0cyBpZiBkYXRhIGxlbmd0aCBhbmQgY29udGVudCBpcyBlcXVh bCBmb3IgdHdvIGRmaWVsZHMuCi1AcmV0dXJuCVRSVUUgaWYgZXF1YWwgKi8KK1Rlc3RzIGlmIHR3 byBkYXRhIGZpZWxkcyBhcmUgZXF1YWwuCitJZiBsZW49PTAsIHRlc3RzIHRoZSBkYXRhIGxlbmd0 aCBhbmQgY29udGVudCBmb3IgZXF1YWxpdHkuCitJZiBsZW4+MCwgdGVzdHMgdGhlIGZpcnN0IGxl biBieXRlcyBvZiB0aGUgY29udGVudCBmb3IgZXF1YWxpdHkuCitAcmV0dXJuCVRSVUUgaWYgYm90 aCBmaWVsZHMgYXJlIE5VTEwgb3IgaWYgdGhleSBhcmUgZXF1YWwgKi8KIFVOSVZfSU5MSU5FCiBp Ym9vbAogZGZpZWxkX2RhdGFzX2FyZV9iaW5hcnlfZXF1YWwoCiAvKj09PT09PT09PT09PT09PT09 PT09PT09PT09Ki8KIAljb25zdCBkZmllbGRfdCoJZmllbGQxLAkvKiE8IGluOiBmaWVsZCAqLwot CWNvbnN0IGRmaWVsZF90KglmaWVsZDIpCS8qITwgaW46IGZpZWxkICovCisJY29uc3QgZGZpZWxk X3QqCWZpZWxkMiwJLyohPCBpbjogZmllbGQgKi8KKwl1bGludAkJbGVuKQkvKiE8IGluOiBtYXhp bXVtIHByZWZpeCB0byBjb21wYXJlLAorCQkJCW9yIDAgdG8gY29tcGFyZSB0aGUgd2hvbGUgZmll bGQgbGVuZ3RoICovCiB7Ci0JdWxpbnQJbGVuOworCXVsaW50CWxlbjIgPSBsZW47CiAKLQlsZW4g PSBmaWVsZDEtPmxlbjsKKwlpZiAoZmllbGQxLT5sZW4gPT0gVU5JVl9TUUxfTlVMTCB8fCBsZW4g PT0gMCB8fCBmaWVsZDEtPmxlbiA8IGxlbikgeworCQlsZW4gPSBmaWVsZDEtPmxlbjsKKwl9CiAK LQlyZXR1cm4obGVuID09IGZpZWxkMi0+bGVuCisJaWYgKGZpZWxkMi0+bGVuID09IFVOSVZfU1FM X05VTEwgfHwgbGVuMiA9PSAwIHx8IGZpZWxkMi0+bGVuIDwgbGVuMikgeworCQlsZW4yID0gZmll bGQyLT5sZW47CisJfQorCisJcmV0dXJuKGxlbiA9PSBsZW4yCiAJICAgICAgICYmIChsZW4gPT0g VU5JVl9TUUxfTlVMTAogCQkgICB8fCAhbWVtY21wKGZpZWxkMS0+ZGF0YSwgZmllbGQyLT5kYXRh LCBsZW4pKSk7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L3JvdzB1cGQuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaAlyZXZp ZDpzdW5ueS5iYWluc0BvcmFjbGUuY29tLTIwMTAxMjE3MDYyNzQxLTZwb3N3YzJ1YzM1ZXh4bm8K KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEyMDUxMC1pemppYTMxN2xlM2E4ZjVrCkBAIC0yODYsMTAg KzI4NiwxMyBAQCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeSgKIAkJCQlyb3cgYW5k IHRoZSBkYXRhIHZhbHVlcyBpbiB1cGRhdGUgYXJlIG5vdAogCQkJCWtub3duIHdoZW4gdGhpcyBm dW5jdGlvbiBpcyBjYWxsZWQsIGUuZy4sIGF0CiAJCQkJY29tcGlsZSB0aW1lICovCisJY29uc3Qg cm93X2V4dF90KmV4dCwJLyohPCBOVUxMLCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0ZXJuYWxseQor CQkJCXN0b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICovCiAJZGljdF9pbmRleF90KglpbmRl eCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUp Oy8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQorCWNvbnN0IHVw ZF90Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRo ZQogCQkJCWZpZWxkIG51bWJlcnMgaW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBpbmRleAogCQkJ CXBvc2l0aW9ucyEgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDMsNCksIHdhcm5fdW51c2Vk X3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogQ2hlY2tzIGlmIGFuIHVwZGF0ZSB2ZWN0b3IgY2hhbmdlcyBh biBvcmRlcmluZyBmaWVsZCBvZiBhbiBpbmRleCByZWNvcmQuCiBUaGlzIGZ1bmN0aW9uIGlzIGZh c3QgaWYgdGhlIHVwZGF0ZSB2ZWN0b3IgaXMgc2hvcnQgb3IgdGhlIG51bWJlciBvZiBvcmRlcmlu ZwpAQCAtNDYyLDExICs0NjUsMTYgQEAgc3RydWN0IHVwZF9ub2RlX3N0cnVjdHsKICNkZWZpbmUg VVBEX05PREVfSU5TRVJUX0NMVVNURVJFRCAgMwkvKiBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHNo b3VsZCBiZQogCQkJCQlpbnNlcnRlZCwgb2xkIHJlY29yZCBpcyBhbHJlYWR5IGRlbGV0ZQogCQkJ CQltYXJrZWQgKi8KLSNkZWZpbmUgVVBEX05PREVfVVBEQVRFX0FMTF9TRUMJICAgNAkvKiBhbiBv cmRlcmluZyBmaWVsZCBvZiB0aGUgY2x1c3RlcmVkCisjZGVmaW5lIFVQRF9OT0RFX0lOU0VSVF9C TE9CCSAgIDQJLyogY2x1c3RlcmVkIGluZGV4IHJlY29yZCBzaG91bGQgYmUKKwkJCQkJaW5zZXJ0 ZWQsIG9sZCByZWNvcmQgaXMgYWxyZWFkeQorCQkJCQlkZWxldGUtbWFya2VkOyBub24tdXBkYXRl ZCBCTE9CcworCQkJCQlzaG91bGQgYmUgaW5oZXJpdGVkIGJ5IHRoZSBuZXcgcmVjb3JkCisJCQkJ CWFuZCBkaXNvd25lZCBieSB0aGUgb2xkIHJlY29yZCAqLworI2RlZmluZSBVUERfTk9ERV9VUERB VEVfQUxMX1NFQwkgICA1CS8qIGFuIG9yZGVyaW5nIGZpZWxkIG9mIHRoZSBjbHVzdGVyZWQKIAkJ CQkJaW5kZXggcmVjb3JkIHdhcyBjaGFuZ2VkLCBvciB0aGlzIGlzCiAJCQkJCWEgZGVsZXRlIG9w ZXJhdGlvbjogc2hvdWxkIHVwZGF0ZQogCQkJCQlhbGwgdGhlIHNlY29uZGFyeSBpbmRleCByZWNv cmRzICovCi0jZGVmaW5lCVVQRF9OT0RFX1VQREFURV9TT01FX1NFQyAgIDUJLyogc2Vjb25kYXJ5 IGluZGV4IGVudHJpZXMgc2hvdWxkIGJlCisjZGVmaW5lIFVQRF9OT0RFX1VQREFURV9TT01FX1NF QyAgIDYJLyogc2Vjb25kYXJ5IGluZGV4IGVudHJpZXMgc2hvdWxkIGJlCiAJCQkJCWxvb2tlZCBh dCBhbmQgdXBkYXRlZCBpZiBhbiBvcmRlcmluZwogCQkJCQlmaWVsZCBjaGFuZ2VkICovCiAKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcHVyZ2UuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHB1cmdlLmMJcmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xl LmNvbS0yMDEwMTIxNzA2Mjc0MS02cG9zd2MydWMzNWV4eG5vCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzBwdXJnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIx MTIwNTEwLWl6amlhMzE3bGUzYThmNWsKQEAgLTUxNSw3ICs1MTUsNyBAQCByb3dfcHVyZ2VfdXBk X2V4aXN0X29yX2V4dGVybigKIAl3aGlsZSAobm9kZS0+aW5kZXggIT0gTlVMTCkgewogCQlpbmRl eCA9IG5vZGUtPmluZGV4OwogCi0JCWlmIChyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFy eShOVUxMLCBub2RlLT5pbmRleCwKKwkJaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmlu YXJ5KE5VTEwsIE5VTEwsIG5vZGUtPmluZGV4LAogCQkJCQkJICAgICBub2RlLT51cGRhdGUpKSB7 CiAJCQkvKiBCdWlsZCB0aGUgb2xkZXIgdmVyc2lvbiBvZiB0aGUgaW5kZXggZW50cnkgKi8KIAkJ CWVudHJ5ID0gcm93X2J1aWxkX2luZGV4X2VudHJ5KG5vZGUtPnJvdywgTlVMTCwKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW1vZC5jJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwdW1vZC5jCXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAx MDEyMTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdW1vZC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTIwNTEwLWl6 amlhMzE3bGUzYThmNWsKQEAgLTY5MywxOSArNjkzLDE4IEBAIHJvd191bmRvX21vZF91cGRfZXhp c3Rfc2VjKAogCXdoaWxlIChub2RlLT5pbmRleCAhPSBOVUxMKSB7CiAJCWluZGV4ID0gbm9kZS0+ aW5kZXg7CiAKLQkJaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5vZGUtPnJv dywgbm9kZS0+aW5kZXgsCi0JCQkJCQkgICAgIG5vZGUtPnVwZGF0ZSkpIHsKKwkJaWYgKHJvd191 cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAorCQkJICAgIG5vZGUtPnJvdywgbm9kZS0+ZXh0 LCBub2RlLT5pbmRleCwgbm9kZS0+dXBkYXRlKSkgewogCiAJCQkvKiBCdWlsZCB0aGUgbmV3ZXN0 IHZlcnNpb24gb2YgdGhlIGluZGV4IGVudHJ5ICovCiAJCQllbnRyeSA9IHJvd19idWlsZF9pbmRl eF9lbnRyeShub2RlLT5yb3csIG5vZGUtPmV4dCwKIAkJCQkJCSAgICAgIGluZGV4LCBoZWFwKTsK IAkJCWlmIChVTklWX1VOTElLRUxZKCFlbnRyeSkpIHsKIAkJCQkvKiBUaGUgc2VydmVyIG11c3Qg aGF2ZSBjcmFzaGVkIGluCi0JCQkJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KCksIGluCi0J CQkJcm93X2luc19pbmRleF9lbnRyeV9sb3coKSBiZWZvcmUKLQkJCQlidHJfc3RvcmVfYmlnX3Jl Y19leHRlcm5fZmllbGRzKCkKLQkJCQloYXMgd3JpdHRlbiB0aGUgZXh0ZXJuYWxseSBzdG9yZWQg Y29sdW1ucwotCQkJCShCTE9Ccykgb2YgdGhlIG5ldyBjbHVzdGVyZWQgaW5kZXggZW50cnkuICov CisJCQkJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KCkgYmVmb3JlCisJCQkJdGhlIHVwZGF0 ZWQgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAoQkxPQnMpCisJCQkJb2YgdGhlIG5ldyBjbHVz dGVyZWQgaW5kZXggZW50cnkgd2VyZQorCQkJCXdyaXR0ZW4uICovCiAKIAkJCQkvKiBUaGUgdGFi bGUgbXVzdCBiZSBpbiBEWU5BTUlDIG9yIENPTVBSRVNTRUQKIAkJCQlmb3JtYXQuICBSRURVTkRB TlQgYW5kIENPTVBBQ1QgZm9ybWF0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzB1cGQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jCXJl dmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEyMTcwNjI3NDEtNnBvc3djMnVjMzVleHhu bworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMDEyMjExMjA1MTAtaXpqaWEzMTdsZTNhOGY1awpAQCAtMTE5OCwyMCAr MTE5OCwyMSBAQCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeSgKIAkJCQlyb3cgYW5k IHRoZSBkYXRhIHZhbHVlcyBpbiB1cGRhdGUgYXJlIG5vdAogCQkJCWtub3duIHdoZW4gdGhpcyBm dW5jdGlvbiBpcyBjYWxsZWQsIGUuZy4sIGF0CiAJCQkJY29tcGlsZSB0aW1lICovCisJY29uc3Qg cm93X2V4dF90KmV4dCwJLyohPCBOVUxMLCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0ZXJuYWxseQor CQkJCXN0b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICovCiAJZGljdF9pbmRleF90KglpbmRl eCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwogCWNvbnN0IHVwZF90Kgl1cGRhdGUp CS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQogCQkJCWZpZWxk IG51bWJlcnMgaW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBpbmRleAogCQkJCXBvc2l0aW9ucyEg Ki8KIHsKLQl1bGludAkJbl91bmlxdWU7Ci0JdWxpbnQJCW5fdXBkX2ZpZWxkczsKLQl1bGludAkJ aSwgajsKLQlkaWN0X2luZGV4X3QqCWNsdXN0X2luZGV4OworCXVsaW50CQkJbl91bmlxdWU7CisJ dWxpbnQJCQlpOworCWNvbnN0IGRpY3RfaW5kZXhfdCoJY2x1c3RfaW5kZXg7CiAKLQl1dF9hZCh1 cGRhdGUgJiYgaW5kZXgpOworCXV0X2FkKHVwZGF0ZSk7CisJdXRfYWQoaW5kZXgpOwogCiAJbl91 bmlxdWUgPSBkaWN0X2luZGV4X2dldF9uX3VuaXF1ZShpbmRleCk7Ci0Jbl91cGRfZmllbGRzID0g dXBkX2dldF9uX2ZpZWxkcyh1cGRhdGUpOwogCiAJY2x1c3RfaW5kZXggPSBkaWN0X3RhYmxlX2dl dF9maXJzdF9pbmRleChpbmRleC0+dGFibGUpOwogCkBAIC0xMjE5LDMzICsxMjIwLDcyIEBAIHJv d191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAogCiAJCWNvbnN0IGRpY3RfZmllbGRfdCoJ aW5kX2ZpZWxkOwogCQljb25zdCBkaWN0X2NvbF90Kgljb2w7Ci0JCXVsaW50CQkJY29sX3BvczsK IAkJdWxpbnQJCQljb2xfbm87CisJCWNvbnN0IHVwZF9maWVsZF90Kgl1cGRfZmllbGQ7CisJCWNv bnN0IGRmaWVsZF90KgkJZGZpZWxkOworCQlkZmllbGRfdAkJZGZpZWxkX2V4dDsKKwkJdWxpbnQJ CQlkZmllbGRfbGVuOworCQljb25zdCBieXRlKgkJYnVmOwogCiAJCWluZF9maWVsZCA9IGRpY3Rf aW5kZXhfZ2V0X250aF9maWVsZChpbmRleCwgaSk7CiAJCWNvbCA9IGRpY3RfZmllbGRfZ2V0X2Nv bChpbmRfZmllbGQpOwotCQljb2xfcG9zID0gZGljdF9jb2xfZ2V0X2NsdXN0X3Bvcyhjb2wsIGNs dXN0X2luZGV4KTsKIAkJY29sX25vID0gZGljdF9jb2xfZ2V0X25vKGNvbCk7CiAKLQkJZm9yIChq ID0gMDsgaiA8IG5fdXBkX2ZpZWxkczsgaisrKSB7CisJCXVwZF9maWVsZCA9IHVwZF9nZXRfZmll bGRfYnlfZmllbGRfbm8oCisJCQl1cGRhdGUsIGRpY3RfY29sX2dldF9jbHVzdF9wb3MoY29sLCBj bHVzdF9pbmRleCkpOwogCi0JCQljb25zdCB1cGRfZmllbGRfdCoJdXBkX2ZpZWxkCi0JCQkJPSB1 cGRfZ2V0X250aF9maWVsZCh1cGRhdGUsIGopOworCQlpZiAodXBkX2ZpZWxkID09IE5VTEwpIHsK KwkJCWNvbnRpbnVlOworCQl9CiAKLQkJCS8qIE5vdGUgdGhhdCBpZiB0aGUgaW5kZXggZmllbGQg aXMgYSBjb2x1bW4gcHJlZml4Ci0JCQl0aGVuIGl0IG1heSBiZSB0aGF0IHJvdyBkb2VzIG5vdCBj b250YWluIGFuIGV4dGVybmFsbHkKLQkJCXN0b3JlZCBwYXJ0IG9mIHRoZSBjb2x1bW4gdmFsdWUs IGFuZCB3ZSBjYW5ub3QgY29tcGFyZQotCQkJdGhlIGRhdGFzICovCisJCWlmIChyb3cgPT0gTlVM TCkgeworCQkJdXRfYWQoZXh0ID09IE5VTEwpOworCQkJcmV0dXJuKFRSVUUpOworCQl9CiAKLQkJ CWlmIChjb2xfcG9zID09IHVwZF9maWVsZC0+ZmllbGRfbm8KLQkJCSAgICAmJiAocm93ID09IE5V TEwKLQkJCQl8fCBpbmRfZmllbGQtPnByZWZpeF9sZW4gPiAwCi0JCQkJfHwgIWRmaWVsZF9kYXRh c19hcmVfYmluYXJ5X2VxdWFsKAotCQkJCQlkdHVwbGVfZ2V0X250aF9maWVsZChyb3csIGNvbF9u byksCi0JCQkJCSYodXBkX2ZpZWxkLT5uZXdfdmFsKSkpKSB7CisJCWRmaWVsZCA9IGR0dXBsZV9n ZXRfbnRoX2ZpZWxkKHJvdywgY29sX25vKTsKIAotCQkJCXJldHVybihUUlVFKTsKKwkJLyogVGhp cyB0cmVhdG1lbnQgb2YgY29sdW1uIHByZWZpeCBpbmRleGVzIGlzIGxvb3NlbHkKKwkJYmFzZWQg b24gcm93X2J1aWxkX2luZGV4X2VudHJ5KCkuICovCisKKwkJaWYgKFVOSVZfTElLRUxZKGluZF9m aWVsZC0+cHJlZml4X2xlbiA9PSAwKQorCQkgICAgfHwgZGZpZWxkX2lzX251bGwoZGZpZWxkKSkg eworCQkJLyogZG8gbm90aGluZyBzcGVjaWFsICovCisJCX0gZWxzZSBpZiAoVU5JVl9MSUtFTFlf TlVMTChleHQpKSB7CisJCQkvKiBTZWUgaWYgdGhlIGNvbHVtbiBpcyBzdG9yZWQgZXh0ZXJuYWxs eS4gKi8KKwkJCWJ1ZiA9IHJvd19leHRfbG9va3VwKGV4dCwgY29sX25vLCAmZGZpZWxkX2xlbik7 CisKKwkJCXV0X2FkKGNvbC0+b3JkX3BhcnQpOworCisJCQlpZiAoVU5JVl9MSUtFTFlfTlVMTChi dWYpKSB7CisJCQkJaWYgKFVOSVZfVU5MSUtFTFkoYnVmID09IGZpZWxkX3JlZl96ZXJvKSkgewor CQkJCQkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dAorCQkJCQl3ZSB0cnkgdG8gZmFp bCBzYWZlIGhlcmUuICovCisJCQkJCXV0X2FkKDApOworCQkJCQlyZXR1cm4oVFJVRSk7CisJCQkJ fQorCisJCQkJZ290byBjb3B5X2RmaWVsZDsKIAkJCX0KKwkJfSBlbHNlIGlmIChkZmllbGRfaXNf ZXh0KGRmaWVsZCkpIHsKKwkJCWRmaWVsZF9sZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOwor CQkJdXRfYShkZmllbGRfbGVuID4gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlkZmll bGRfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisJCQl1dF9hKGRpY3RfaW5kZXhf aXNfY2x1c3QoaW5kZXgpCisJCQkgICAgIHx8IGluZF9maWVsZC0+cHJlZml4X2xlbiA8PSBkZmll bGRfbGVuKTsKKwkJCWJ1ZiA9IGRmaWVsZF9nZXRfZGF0YShkZmllbGQpOworY29weV9kZmllbGQ6 CisJCQl1dF9hKGRmaWVsZF9sZW4gPiAwKTsKKwkJCWRmaWVsZF9jb3B5KCZkZmllbGRfZXh0LCBk ZmllbGQpOworCQkJZGZpZWxkX3NldF9kYXRhKCZkZmllbGRfZXh0LCBidWYsIGRmaWVsZF9sZW4p OworCQkJZGZpZWxkID0gJmRmaWVsZF9leHQ7CisJCX0KKworCQlpZiAoIWRmaWVsZF9kYXRhc19h cmVfYmluYXJ5X2VxdWFsKAorCQkJICAgIGRmaWVsZCwgJnVwZF9maWVsZC0+bmV3X3ZhbCwKKwkJ CSAgICBpbmRfZmllbGQtPnByZWZpeF9sZW4pKSB7CisKKwkJCXJldHVybihUUlVFKTsKIAkJfQog CX0KIApAQCAtMTMyOSw3ICsxMzY5LDcgQEAgcm93X3VwZF9jaGFuZ2VzX2ZpcnN0X2ZpZWxkc19i aW5hcnkoCiAJCQlpZiAoY29sX3BvcyA9PSB1cGRfZmllbGQtPmZpZWxkX25vCiAJCQkgICAgJiYg IWRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAogCQkJCSAgICBkdHVwbGVfZ2V0X250aF9m aWVsZChlbnRyeSwgaSksCi0JCQkJICAgICYodXBkX2ZpZWxkLT5uZXdfdmFsKSkpIHsKKwkJCQkg ICAgJnVwZF9maWVsZC0+bmV3X3ZhbCwgMCkpIHsKIAogCQkJCXJldHVybihUUlVFKTsKIAkJCX0K QEAgLTE1OTYsMTQgKzE2MzYsOTkgQEAgcm93X3VwZF9zZWNfc3RlcCgKIAl1dF9hZCghZGljdF9p bmRleF9pc19jbHVzdChub2RlLT5pbmRleCkpOwogCiAJaWYgKG5vZGUtPnN0YXRlID09IFVQRF9O T0RFX1VQREFURV9BTExfU0VDCi0JICAgIHx8IHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmlu YXJ5KG5vZGUtPnJvdywgbm9kZS0+aW5kZXgsCi0JCQkJCQlub2RlLT51cGRhdGUpKSB7CisJICAg IHx8IHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5vZGUtPnJvdywgbm9kZS0+ZXh0 LAorCQkJCQkJbm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0ZSkpIHsKIAkJcmV0dXJuKHJvd191cGRf c2VjX2luZGV4X2VudHJ5KG5vZGUsIHRocikpOwogCX0KIAogCXJldHVybihEQl9TVUNDRVNTKTsK IH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5lIHJvd191cGRfY2x1c3RfcmVjX2J5X2lu c2VydF9pbmhlcml0KHJlYyxvZmZzZXRzLGVudHJ5LHVwZGF0ZSkJXAorCXJvd191cGRfY2x1c3Rf cmVjX2J5X2luc2VydF9pbmhlcml0X2Z1bmMocmVjLG9mZnNldHMsZW50cnksdXBkYXRlKQorI2Vs c2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0 X2luaGVyaXQocmVjLG9mZnNldHMsZW50cnksdXBkYXRlKQlcCisJcm93X3VwZF9jbHVzdF9yZWNf YnlfaW5zZXJ0X2luaGVyaXRfZnVuYyhlbnRyeSx1cGRhdGUpCisjZW5kaWYgLyogVU5JVl9ERUJV RyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCitNYXJrIG5vbi11cGRhdGVkIG9mZi1wYWdlIGNvbHVtbnMg aW5oZXJpdGVkIHdoZW4gdGhlIHByaW1hcnkga2V5IGlzCit1cGRhdGVkLiBXZSBtdXN0IG1hcmsg dGhlbSBhcyBpbmhlcml0ZWQgaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUgbm90CitmcmVlZCBp biBhIHJvbGxiYWNrLiBBIGxpbWl0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHVzZWQgdG8g YmUKK2NhbGxlZCBidHJfY3VyX21hcmtfZHR1cGxlX2luaGVyaXRlZF9leHRlcm4oKS4KK0ByZXR1 cm4gVFJVRSBpZiBhbnkgY29sdW1ucyB3ZXJlIGluaGVyaXRlZCAqLworc3RhdGljIF9fYXR0cmli dXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpCitpYm9vbAorcm93X3VwZF9jbHVzdF9yZWNfYnlf aW5zZXJ0X2luaGVyaXRfZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IG9s ZCByZWNvcmQsIG9yIE5VTEwgKi8KKwljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGluOiByZWNf Z2V0X29mZnNldHMocmVjKSwgb3IgTlVMTCAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwlk dHVwbGVfdCoJZW50cnksCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5IHRvIGJlCisJCQkJaW5z ZXJ0ZWQgaW50byB0aGUgY2x1c3RlcmVkIGluZGV4ICovCisJY29uc3QgdXBkX3QqCXVwZGF0ZSkJ LyohPCBpbjogdXBkYXRlIHZlY3RvciAqLworeworCWlib29sCWluaGVyaXQJPSBGQUxTRTsKKwl1 bGludAlpOworCisJdXRfYWQoIXJlYyA9PSAhb2Zmc2V0cyk7CisJdXRfYWQoIXJlYyB8fCByZWNf b2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKKworCWZvciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0 X25fZmllbGRzKGVudHJ5KTsgaSsrKSB7CisJCWRmaWVsZF90KglkZmllbGQJPSBkdHVwbGVfZ2V0 X250aF9maWVsZChlbnRyeSwgaSk7CisJCWJ5dGUqCQlkYXRhOworCQl1bGludAkJbGVuOworCisJ CXV0X2FkKCFvZmZzZXRzCisJCSAgICAgIHx8ICFyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMs IGkpCisJCSAgICAgID09ICFkZmllbGRfaXNfZXh0KGRmaWVsZCkKKwkJICAgICAgfHwgdXBkX2dl dF9maWVsZF9ieV9maWVsZF9ubyh1cGRhdGUsIGkpKTsKKwkJaWYgKCFkZmllbGRfaXNfZXh0KGRm aWVsZCkKKwkJICAgIHx8IHVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8odXBkYXRlLCBpKSkgewor CQkJY29udGludWU7CisJCX0KKworI2lmZGVmIFVOSVZfREVCVUcKKwkJaWYgKFVOSVZfTElLRUxZ KHJlYyAhPSBOVUxMKSkgeworCQkJY29uc3QgYnl0ZSogcmVjX2RhdGEKKwkJCQk9IHJlY19nZXRf bnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJCQl1dF9hZChsZW4gPT0gZGZpZWxk X2dldF9sZW4oZGZpZWxkKSk7CisJCQl1dF9hZChsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1 dF9hZChsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisKKwkJCXJlY19kYXRhICs9 IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCS8qIFRoZSBwb2ludGVyIG11 c3Qgbm90IGJlIHplcm8uICovCisJCQl1dF9hZChtZW1jbXAocmVjX2RhdGEsIGZpZWxkX3JlZl96 ZXJvLAorCQkJCSAgICAgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJLyogVGhlIEJM T0IgbXVzdCBiZSBvd25lZC4gKi8KKwkJCXV0X2FkKCEocmVjX2RhdGFbQlRSX0VYVEVSTl9MRU5d CisJCQkJJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwkJfQorI2VuZGlmIC8qIFVOSVZfREVC VUcgKi8KKworCQlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOworCQl1dF9hKGxlbiAhPSBV TklWX1NRTF9OVUxMKTsKKwkJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7 CisJCWRhdGEgPSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxkKSArIGxlbgorCQkJLSBCVFJfRVhURVJO X0ZJRUxEX1JFRl9TSVpFOworCQkvKiBUaGUgcG9pbnRlciBtdXN0IG5vdCBiZSB6ZXJvLiAqLwor CQl1dF9hKG1lbWNtcChkYXRhLCBmaWVsZF9yZWZfemVybywgQlRSX0VYVEVSTl9GSUVMRF9SRUZf U0laRSkpOworCQkvKiBUaGUgQkxPQiBtdXN0IGJlIG93bmVkLiAqLworCQl1dF9hKCEoZGF0YVtC VFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKworCQlkYXRhW0JUUl9F WFRFUk5fTEVOXSB8PSBCVFJfRVhURVJOX0lOSEVSSVRFRF9GTEFHOworCQkvKiBUaGUgQlRSX0VY VEVSTl9JTkhFUklURURfRkxBRyBvbmx5IG1hdHRlcnMgaW4KKwkJcm9sbGJhY2suIFB1cmdlIHdp bGwgYWx3YXlzIGZyZWUgdGhlIGV4dGVybiBmaWVsZHMgb2YKKwkJYSBkZWxldGUtbWFya2VkIHJv dy4gKi8KKworCQlpbmhlcml0ID0gVFJVRTsKKwl9CisKKwlyZXR1cm4oaW5oZXJpdCk7Cit9CisK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIE1hcmtzIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGRlbGV0ZWQgYW5kIGlu c2VydHMgdGhlIHVwZGF0ZWQgdmVyc2lvbgogb2YgdGhlIHJlY29yZCB0byB0aGUgaW5kZXguIFRo aXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgd2hlbiB0aGUgb3JkZXJpbmcKQEAgLTE2MjIsMTQg KzE3NDcsMTYgQEAgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KAogCQkJCWEgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAqLwogCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbXRyOyBnZXRzIGNv bW1pdHRlZCBoZXJlICovCiB7Ci0JbWVtX2hlYXBfdCoJaGVhcAk9IE5VTEw7CisJbWVtX2hlYXBf dCoJaGVhcDsKIAlidHJfcGN1cl90KglwY3VyOwogCWJ0cl9jdXJfdCoJYnRyX2N1cjsKIAl0cnhf dCoJCXRyeDsKIAlkaWN0X3RhYmxlX3QqCXRhYmxlOwogCWR0dXBsZV90KgllbnRyeTsKIAl1bGlu dAkJZXJyOwotCWlib29sCQljaGFuZ2Vfb3duZXJzaGlwID0gRkFMU0U7CisJaWJvb2wJCWNoYW5n ZV9vd25lcnNoaXAJPSBGQUxTRTsKKwlyZWNfdCoJCXJlYzsKKwl1bGludCoJCW9mZnNldHMJCQk9 IE5VTEw7CiAKIAl1dF9hZChub2RlKTsKIAl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4 KSk7CkBAIC0xNjM5LDM0ICsxNzY2LDY0IEBAIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydCgK IAlwY3VyID0gbm9kZS0+cGN1cjsKIAlidHJfY3VyCT0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1 cik7CiAKLQlpZiAobm9kZS0+c3RhdGUgIT0gVVBEX05PREVfSU5TRVJUX0NMVVNURVJFRCkgewot CQlyZWNfdCoJCXJlYzsKLQkJZGljdF9pbmRleF90KglpbmRleDsKLQkJdWxpbnQJCW9mZnNldHNf W1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKLQkJdWxpbnQqCQlvZmZzZXRzOwotCQlyZWNfb2Zmc19p bml0KG9mZnNldHNfKTsKKwloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMDApOworCisJZW50cnkg PSByb3dfYnVpbGRfaW5kZXhfZW50cnkobm9kZS0+dXBkX3Jvdywgbm9kZS0+dXBkX2V4dCwKKwkJ CQkgICAgICBpbmRleCwgaGVhcCk7CisJdXRfYShlbnRyeSk7CisKKwlyb3dfdXBkX2luZGV4X2Vu dHJ5X3N5c19maWVsZChlbnRyeSwgaW5kZXgsIERBVEFfVFJYX0lELCB0cngtPmlkKTsKIAotCQll cnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoQlRSX05PX0xPQ0tJTkdfRkxBRywK LQkJCQkJCSAgICAgYnRyX2N1ciwgVFJVRSwgdGhyLCBtdHIpOworCXN3aXRjaCAobm9kZS0+c3Rh dGUpIHsKKwlkZWZhdWx0OgorCQl1dF9lcnJvcjsKKwljYXNlIFVQRF9OT0RFX0lOU0VSVF9CTE9C OgorCQkvKiBBIGxvY2sgd2FpdCBvY2N1cnJlZCBpbiByb3dfaW5zX2luZGV4X2VudHJ5KCkgaW4K KwkJdGhlIHByZXZpb3VzIGludm9jYXRpb24gb2YgdGhpcyBmdW5jdGlvbi4gTWFyayB0aGUKKwkJ b2ZmLXBhZ2UgY29sdW1ucyBpbiB0aGUgZW50cnkgaW5oZXJpdGVkLiAqLworCisJCWNoYW5nZV9v d25lcnNoaXAgPSByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRfaW5oZXJpdCgKKwkJCU5VTEws IE5VTEwsIGVudHJ5LCBub2RlLT51cGRhdGUpOworCQl1dF9hKGNoYW5nZV9vd25lcnNoaXApOwor CQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQ6CisJ CS8qIEEgbG9jayB3YWl0IG9jY3VycmVkIGluIHJvd19pbnNfaW5kZXhfZW50cnkoKSBpbgorCQl0 aGUgcHJldmlvdXMgaW52b2NhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiAqLworCQlicmVhazsKKwlj YXNlIFVQRF9OT0RFX1VQREFURV9DTFVTVEVSRUQ6CisJCS8qIFRoaXMgaXMgdGhlIGZpcnN0IGlu dm9jYXRpb24gb2YgdGhlIGZ1bmN0aW9uIHdoZXJlCisJCXdlIHVwZGF0ZSB0aGUgcHJpbWFyeSBr ZXkuICBEZWxldGUtbWFyayB0aGUgb2xkIHJlY29yZAorCQlpbiB0aGUgY2x1c3RlcmVkIGluZGV4 IGFuZCBwcmVwYXJlIHRvIGluc2VydCBhIG5ldyBlbnRyeS4gKi8KKwkJcmVjID0gYnRyX2N1cl9n ZXRfcmVjKGJ0cl9jdXIpOworCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgs IE5VTEwsCisJCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJCXV0X2FkKHBhZ2VfcmVj X2lzX3VzZXJfcmVjKHJlYykpOworCisJCWVyciA9IGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0 X3JlYygKKwkJCUJUUl9OT19MT0NLSU5HX0ZMQUcsIGJ0cl9jdXJfZ2V0X2Jsb2NrKGJ0cl9jdXIp LAorCQkJcmVjLCBpbmRleCwgb2Zmc2V0cywgVFJVRSwgdGhyLCBtdHIpOwogCQlpZiAoZXJyICE9 IERCX1NVQ0NFU1MpIHsKK2Vycl9leGl0OgogCQkJbXRyX2NvbW1pdChtdHIpOworCQkJbWVtX2hl YXBfZnJlZShoZWFwKTsKIAkJCXJldHVybihlcnIpOwogCQl9CiAKLQkJLyogTWFyayBhcyBub3Qt b3duZWQgdGhlIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkcyB3aGljaCB0aGUgbmV3Ci0JCXJvdyBp bmhlcml0cyBmcm9tIHRoZSBkZWxldGUgbWFya2VkIHJlY29yZDogcHVyZ2Ugc2hvdWxkIG5vdAot CQlmcmVlIHRob3NlIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkcyBldmVuIGlmIHRoZSBkZWxldGUg bWFya2VkCi0JCXJlY29yZCBpcyByZW1vdmVkIGZyb20gdGhlIGluZGV4IHRyZWUsIG9yIHVwZGF0 ZWQuICovCisJCS8qIElmIHRoZSB0aGUgbmV3IHJvdyBpbmhlcml0cyBleHRlcm5hbGx5IHN0b3Jl ZAorCQlmaWVsZHMgKG9mZi1wYWdlIGNvbHVtbnMgYS5rLmEuIEJMT0JzKSBmcm9tIHRoZQorCQlk ZWxldGUtbWFya2VkIG9sZCByZWNvcmQsIG1hcmsgdGhlbSBkaXNvd25lZCBieSB0aGUKKwkJb2xk IHJlY29yZCBhbmQgb3duZWQgYnkgdGhlIG5ldyBlbnRyeS4gKi8KKworCQlpZiAocmVjX29mZnNf YW55X2V4dGVybihvZmZzZXRzKSkgeworCQkJY2hhbmdlX293bmVyc2hpcCA9IHJvd191cGRfY2x1 c3RfcmVjX2J5X2luc2VydF9pbmhlcml0KAorCQkJCXJlYywgb2Zmc2V0cywgZW50cnksIG5vZGUt PnVwZGF0ZSk7CiAKLQkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOwotCQlpbmRleCA9 IGRpY3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KHRhYmxlKTsKLQkJb2Zmc2V0cyA9IHJlY19nZXRf b2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKLQkJCQkJICBVTElOVF9VTkRFRklORUQsICZo ZWFwKTsKLQkJY2hhbmdlX293bmVyc2hpcCA9IGJ0cl9jdXJfbWFya19leHRlcm5faW5oZXJpdGVk X2ZpZWxkcygKLQkJCWJ0cl9jdXJfZ2V0X3BhZ2VfemlwKGJ0cl9jdXIpLAotCQkJcmVjLCBpbmRl eCwgb2Zmc2V0cywgbm9kZS0+dXBkYXRlLCBtdHIpOwotCQlpZiAocmVmZXJlbmNlZCkgeworCQkJ aWYgKGNoYW5nZV9vd25lcnNoaXApIHsKKwkJCQlidHJfcGN1cl9zdG9yZV9wb3NpdGlvbihwY3Vy LCBtdHIpOworCQkJfQorCQl9CiAKKwkJaWYgKHJlZmVyZW5jZWQpIHsKIAkJCS8qIE5PVEUgdGhh dCB0aGUgZm9sbG93aW5nIGNhbGwgbG9zZXMKIAkJCXRoZSBwb3NpdGlvbiBvZiBwY3VyICEgKi8K IApAQCAtMTY3NCw0OCArMTgzMSw0OSBAQCByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoCiAJ CQkJbm9kZSwgcGN1ciwgdGFibGUsIGluZGV4LCBvZmZzZXRzLCB0aHIsIG10cik7CiAKIAkJCWlm IChlcnIgIT0gREJfU1VDQ0VTUykgewotCi0JCQkJbXRyX2NvbW1pdChtdHIpOwotCi0JCQkJaWYg KFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKLQkJCQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKLQkJ CQl9Ci0KLQkJCQlyZXR1cm4oZXJyKTsKKwkJCQlnb3RvIGVycl9leGl0OwogCQkJfQogCQl9CiAJ fQogCiAJbXRyX2NvbW1pdChtdHIpOwogCi0JaWYgKCFoZWFwKSB7Ci0JCWhlYXAgPSBtZW1faGVh cF9jcmVhdGUoNTAwKTsKLQl9Ci0Jbm9kZS0+c3RhdGUgPSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RF UkVEOwotCi0JZW50cnkgPSByb3dfYnVpbGRfaW5kZXhfZW50cnkobm9kZS0+dXBkX3Jvdywgbm9k ZS0+dXBkX2V4dCwKLQkJCQkgICAgICBpbmRleCwgaGVhcCk7Ci0JdXRfYShlbnRyeSk7CisJZXJy ID0gcm93X2luc19pbmRleF9lbnRyeShpbmRleCwgZW50cnksCisJCQkJICBub2RlLT51cGRfZXh0 ID8gbm9kZS0+dXBkX2V4dC0+bl9leHQgOiAwLAorCQkJCSAgVFJVRSwgdGhyKTsKKwlub2RlLT5z dGF0ZSA9IGNoYW5nZV9vd25lcnNoaXAKKwkJPyBVUERfTk9ERV9JTlNFUlRfQkxPQgorCQk6IFVQ RF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQ7CisKKwlpZiAoZXJyID09IERCX1NVQ0NFU1MgJiYgY2hh bmdlX293bmVyc2hpcCkgeworCQkvKiBNYXJrIHRoZSBub24tdXBkYXRlZCBmaWVsZHMgZGlzb3du ZWQgYnkgdGhlIG9sZCByZWNvcmQuICovCisKKwkJLyogTk9URTogdGhpcyB0cmFuc2FjdGlvbiBo YXMgYW4geC1sb2NrIG9uIHRoZSByZWNvcmQKKwkJYW5kIHRoZXJlZm9yZSBvdGhlciB0cmFuc2Fj dGlvbnMgY2Fubm90IG1vZGlmeSB0aGUKKwkJcmVjb3JkIHdoZW4gd2UgaGF2ZSBubyBsYXRjaCBv biB0aGUgcGFnZS4gSW4gYWRkaXRpb24sCisJCXdlIGFzc3VtZSB0aGF0IG90aGVyIHF1ZXJ5IHRo cmVhZHMgb2YgdGhlIHNhbWUKKwkJdHJhbnNhY3Rpb24gZG8gbm90IG1vZGlmeSB0aGUgcmVjb3Jk IGluIHRoZSBtZWFudGltZS4KKwkJVGhlcmVmb3JlIHdlIGNhbiBhc3NlcnQgdGhhdCB0aGUgcmVz dG9yYXRpb24gb2YgdGhlCisJCWN1cnNvciBzdWNjZWVkcy4gKi8KIAotCXJvd191cGRfaW5kZXhf ZW50cnlfc3lzX2ZpZWxkKGVudHJ5LCBpbmRleCwgREFUQV9UUlhfSUQsIHRyeC0+aWQpOworCQlt dHJfc3RhcnQobXRyKTsKIAotCWlmIChjaGFuZ2Vfb3duZXJzaGlwKSB7Ci0JCS8qIElmIHdlIHJl dHVybiBmcm9tIGEgbG9jayB3YWl0LCBmb3IgZXhhbXBsZSwgd2UgbWF5IGhhdmUKLQkJZXh0ZXJu IGZpZWxkcyBtYXJrZWQgYXMgbm90LW93bmVkIGluIGVudHJ5IChtYXJrZWQgaW4gdGhlCi0JCWlm LWJyYW5jaCBhYm92ZSkuIFdlIG11c3QgdW5tYXJrIHRoZW0sIHRha2UgdGhlIG93bmVyc2hpcAot CQliYWNrLiAqLworCQlpZiAoIWJ0cl9wY3VyX3Jlc3RvcmVfcG9zaXRpb24oQlRSX01PRElGWV9M RUFGLCBwY3VyLCBtdHIpKSB7CisJCQl1dF9lcnJvcjsKKwkJfQogCi0JCWJ0cl9jdXJfdW5tYXJr X2R0dXBsZV9leHRlcm5fZmllbGRzKGVudHJ5KTsKKwkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0 cl9jdXIpOworCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHMs CisJCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJCXV0X2FkKHBhZ2VfcmVjX2lzX3Vz ZXJfcmVjKHJlYykpOwogCi0JCS8qIFdlIG11c3QgbWFyayBub24tdXBkYXRlZCBleHRlcm4gZmll bGRzIGluIGVudHJ5IGFzCi0JCWluaGVyaXRlZCwgc28gdGhhdCBhIHBvc3NpYmxlIHJvbGxiYWNr IHdpbGwgbm90IGZyZWUgdGhlbS4gKi8KKwkJYnRyX2N1cl9kaXNvd25faW5oZXJpdGVkX2ZpZWxk cygKKwkJCWJ0cl9jdXJfZ2V0X3BhZ2VfemlwKGJ0cl9jdXIpLAorCQkJcmVjLCBpbmRleCwgb2Zm c2V0cywgbm9kZS0+dXBkYXRlLCBtdHIpOwogCi0JCWJ0cl9jdXJfbWFya19kdHVwbGVfaW5oZXJp dGVkX2V4dGVybihlbnRyeSwgbm9kZS0+dXBkYXRlKTsKKwkJbXRyX2NvbW1pdChtdHIpOwogCX0K IAotCWVyciA9IHJvd19pbnNfaW5kZXhfZW50cnkoaW5kZXgsIGVudHJ5LAotCQkJCSAgbm9kZS0+ dXBkX2V4dCA/IG5vZGUtPnVwZF9leHQtPm5fZXh0IDogMCwKLQkJCQkgIFRSVUUsIHRocik7CiAJ bWVtX2hlYXBfZnJlZShoZWFwKTsKIAogCXJldHVybihlcnIpOwpAQCAtMTg2MCw4ICsyMDE4LDkg QEAgcm93X3VwZF9kZWxfbWFya19jbHVzdF9yZWMoCiAJLyogTWFyayB0aGUgY2x1c3RlcmVkIGlu ZGV4IHJlY29yZCBkZWxldGVkOyB3ZSBkbyBub3QgaGF2ZSB0byBjaGVjawogCWxvY2tzLCBiZWNh dXNlIHdlIGFzc3VtZSB0aGF0IHdlIGhhdmUgYW4geC1sb2NrIG9uIHRoZSByZWNvcmQgKi8KIAot CWVyciA9IGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYyhCVFJfTk9fTE9DS0lOR19GTEFH LAotCQkJCQkgICAgIGJ0cl9jdXIsIFRSVUUsIHRociwgbXRyKTsKKwllcnIgPSBidHJfY3VyX2Rl bF9tYXJrX3NldF9jbHVzdF9yZWMoCisJCUJUUl9OT19MT0NLSU5HX0ZMQUcsIGJ0cl9jdXJfZ2V0 X2Jsb2NrKGJ0cl9jdXIpLAorCQlidHJfY3VyX2dldF9yZWMoYnRyX2N1ciksIGluZGV4LCBvZmZz ZXRzLCBUUlVFLCB0aHIsIG10cik7CiAJaWYgKGVyciA9PSBEQl9TVUNDRVNTICYmIHJlZmVyZW5j ZWQpIHsKIAkJLyogTk9URSB0aGF0IHRoZSBmb2xsb3dpbmcgY2FsbCBsb3NlcyB0aGUgcG9zaXRp b24gb2YgcGN1ciAhICovCiAKQEAgLTIwMDYsNyArMjE2NSw4IEBAIGV4aXRfZnVuYzoKIAogCXJv d191cGRfc3RvcmVfcm93KG5vZGUpOwogCi0JaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRf YmluYXJ5KG5vZGUtPnJvdywgaW5kZXgsIG5vZGUtPnVwZGF0ZSkpIHsKKwlpZiAocm93X3VwZF9j aGFuZ2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+cm93LCBub2RlLT5leHQsIGluZGV4LAorCQkJ CQkgICAgIG5vZGUtPnVwZGF0ZSkpIHsKIAogCQkvKiBVcGRhdGUgY2F1c2VzIGFuIG9yZGVyaW5n IGZpZWxkIChvcmRlcmluZyBmaWVsZHMgd2l0aGluCiAJCXRoZSBCLXRyZWUpIG9mIHRoZSBjbHVz dGVyZWQgaW5kZXggcmVjb3JkIHRvIGNoYW5nZTogcGVyZm9ybQpAQCAtMjA3Niw3ICsyMjM2LDgg QEAgcm93X3VwZCgKIAl9CiAKIAlpZiAobm9kZS0+c3RhdGUgPT0gVVBEX05PREVfVVBEQVRFX0NM VVNURVJFRAotCSAgICB8fCBub2RlLT5zdGF0ZSA9PSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVE KSB7CisJICAgIHx8IG5vZGUtPnN0YXRlID09IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQKKwkg ICAgfHwgbm9kZS0+c3RhdGUgPT0gVVBEX05PREVfSU5TRVJUX0JMT0IpIHsKIAogCQlsb2dfZnJl ZV9jaGVjaygpOwogCQllcnIgPSByb3dfdXBkX2NsdXN0X3N0ZXAobm9kZSwgdGhyKTsKCg== --===============0731946586== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # testament_sha1: ef71af4e89ffe476f8835410451bf72099432af2 # timestamp: 2010-12-21 14:06:46 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: sunny.bains@stripped\ # 6poswc2uc35exxno # # Begin bundle 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 --===============0731946586==--