From: marko.makela Date: December 21 2010 12:51pm Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3395 to 3396) List-Archive: http://lists.mysql.com/commits/127429 Message-Id: <201012211252.oBLChSXX009680@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1813215732==" --===============1813215732== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMzOTYgTWFya28gTcOka2Vsw6QJMjAxMC0xMi0yMSBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNS1pbm5vZGIgdG8gbXlzcWwtdHJ1bmstaW5ub2RiLgoKICAgIG1vZGlmaWVkOgogICAgICBt eXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9z dWl0ZS9pbm5vZGIvdC9pbm5vZGIudGVzdAogICAgICBzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIw Y3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2RhdGEwZGF0YS5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVw ZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBwdXJnZS5jCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVw ZC5jCiAzMzk1IEppbW15IFlhbmcJMjAxMC0xMi0yMAogICAgICBGaXggYnVnIyM1OTA2MSBpbm5v ZGJfbW9uaXRvciBjcmFzaGVzIHRoZSBzZXJ2ZXIgc3BvcmFkaWNhbGx5CiAgICAgIAogICAgICBB cHByb3ZlZCBieSBTdW5ueSBCYWlucwoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9i YXNlL2J1Zi9idWYwYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2lfcy5jYwo9 PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGIucmVzdWx0 JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi5yZXN1bHQJcmV2aWQ6amlt bXkueWFuZ0BvcmFjbGUuY29tLTIwMTAxMjIxMDI0NzEyLWxjbTVqNHl4YmxicHd5bDUKKysrIGIv bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGIucmVzdWx0CXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTAxMjIxMTI0OTQxLXZkMmV4dzczNW13YTIwZzYKQEAgLTEsNSArMSw4 IEBACiBkcm9wIHRhYmxlIGlmIGV4aXN0cyB0MSx0Mix0Myx0NDsKIGRyb3AgZGF0YWJhc2UgaWYg ZXhpc3RzIG15c3FsdGVzdDsKK0NSRUFURSBUQUJMRSBidWc1ODkxMiAoYSBCTE9CLCBiIFRFWFQs IFBSSU1BUlkgS0VZKGEoMSkpKSBFTkdJTkU9SW5ub0RCOworSU5TRVJUIElOVE8gYnVnNTg5MTIg VkFMVUVTKFJFUEVBVCgnYScsODAwMCksUkVQRUFUKCdiJyw4MDAwKSk7CitVUERBVEUgYnVnNTg5 MTIgU0VUIGE9UkVQRUFUKCdhJyw3OTk5KTsKIGNyZWF0ZSB0YWJsZSB0MSAoaWQgaW50IHVuc2ln bmVkIG5vdCBudWxsIGF1dG9faW5jcmVtZW50LCBjb2RlIHRpbnlpbnQgdW5zaWduZWQgbm90IG51 bGwsIG5hbWUgY2hhcigyMCkgbm90IG51bGwsIHByaW1hcnkga2V5IChpZCksIGtleSAoY29kZSks IHVuaXF1ZSAobmFtZSkpIGVuZ2luZT1pbm5vZGI7CiBpbnNlcnQgaW50byB0MSAoY29kZSwgbmFt ZSkgdmFsdWVzICgxLCAnVGltJyksICgxLCAnTW9udHknKSwgKDIsICdEYXZpZCcpLCAoMiwgJ0Vy aWsnKSwgKDMsICdTYXNoYScpLCAoMywgJ0plcmVteScpLCAoNCwgJ01hdHQnKTsKIHNlbGVjdCBp ZCwgY29kZSwgbmFtZSBmcm9tIHQxIG9yZGVyIGJ5IGlkOwpAQCAtMTY3MCwxMCArMTY3MywxMCBA QCB2YXJpYWJsZV92YWx1ZSAtIEBpbm5vZGJfcm93c19kZWxldGVkX29yCiA3MQogU0VMRUNUIHZh cmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dzX2luc2VydGVkX29yaWcgRlJPTSBpbmZvcm1hdGlv bl9zY2hlbWEuZ2xvYmFsX3N0YXR1cyBXSEVSRSBMT1dFUih2YXJpYWJsZV9uYW1lKSA9ICdpbm5v ZGJfcm93c19pbnNlcnRlZCc7CiB2YXJpYWJsZV92YWx1ZSAtIEBpbm5vZGJfcm93c19pbnNlcnRl ZF9vcmlnCi0xMDY1CisxMDY2CiBTRUxFQ1QgdmFyaWFibGVfdmFsdWUgLSBAaW5ub2RiX3Jvd3Nf dXBkYXRlZF9vcmlnIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmdsb2JhbF9zdGF0dXMgV0hFUkUg TE9XRVIodmFyaWFibGVfbmFtZSkgPSAnaW5ub2RiX3Jvd3NfdXBkYXRlZCc7CiB2YXJpYWJsZV92 YWx1ZSAtIEBpbm5vZGJfcm93c191cGRhdGVkX29yaWcKLTg2NQorODY2CiBTRUxFQ1QgdmFyaWFi bGVfdmFsdWUgLSBAaW5ub2RiX3Jvd19sb2NrX3dhaXRzX29yaWcgRlJPTSBpbmZvcm1hdGlvbl9z Y2hlbWEuZ2xvYmFsX3N0YXR1cyBXSEVSRSBMT1dFUih2YXJpYWJsZV9uYW1lKSA9ICdpbm5vZGJf cm93X2xvY2tfd2FpdHMnOwogdmFyaWFibGVfdmFsdWUgLSBAaW5ub2RiX3Jvd19sb2NrX3dhaXRz X29yaWcKIDAKQEAgLTMxNzMsMyArMzE3Niw0IEBAIFZhcmlhYmxlX25hbWUJVmFsdWUKIEhhbmRs ZXJfdXBkYXRlCTEKIFZhcmlhYmxlX25hbWUJVmFsdWUKIEhhbmRsZXJfZGVsZXRlCTEKK0RST1Ag VEFCTEUgYnVnNTg5MTI7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5v ZGIvdC9pbm5vZGIudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGIu dGVzdAlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAxMDEyMjEwMjQ3MTItbGNtNWo0eXhi bGJwd3lsNQorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi50ZXN0CXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTI0OTQxLXZkMmV4dzczNW13YTIwZzYK QEAgLTQ5LDYgKzQ5LDE1IEBAIGRyb3AgdGFibGUgaWYgZXhpc3RzIHQxLHQyLHQzLHQ0OwogZHJv cCBkYXRhYmFzZSBpZiBleGlzdHMgbXlzcWx0ZXN0OwogLS1lbmFibGVfd2FybmluZ3MKIAorIyBC dWcjNTg5MTIgSW5ub0RCIHVubmVjZXNzYXJpbHkgYXZvaWRzIHVwZGF0ZS1pbi1wbGFjZSBvbiBj b2x1bW4gcHJlZml4ZXMKK0NSRUFURSBUQUJMRSBidWc1ODkxMiAoYSBCTE9CLCBiIFRFWFQsIFBS SU1BUlkgS0VZKGEoMSkpKSBFTkdJTkU9SW5ub0RCOworSU5TRVJUIElOVE8gYnVnNTg5MTIgVkFM VUVTKFJFUEVBVCgnYScsODAwMCksUkVQRUFUKCdiJyw4MDAwKSk7CitVUERBVEUgYnVnNTg5MTIg U0VUIGE9UkVQRUFUKCdhJyw3OTk5KTsKKyMgVGhlIGFib3ZlIHN0YXRlbWVudHMgdXNlZCB0byB0 cmlnZ2VyIGEgZmFpbHVyZSBkdXJpbmcgcHVyZ2Ugd2hlbgorIyBCdWcjNTUyODQgd2FzIGZpeGVk IHdoaWxlIEJ1ZyM1ODkxMiB3YXMgbm90LiBEZWZlciB0aGUgRFJPUCBUQUJMRSwKKyMgc28gdGhh dCBwdXJnZSBnZXRzIGEgY2hhbmNlIHRvIHJ1biAoYW5kIGEgZG91YmxlIGZyZWUgb2YgdGhlCisj IG9mZi1wYWdlIGNvbHVtbiBjYW4gYmUgZGV0ZWN0ZWQsIGlmIG9uZSBpcyB0byBvY2N1ci4pCisK ICMKICMgU21hbGwgYmFzaWMgdGVzdCB3aXRoIGlnbm9yZQogIwpAQCAtMjU0OCw2ICsyNTU3LDkg QEAgU0VUIEdMT0JBTCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5ID0gQAogCiAtLSBlbmFibGVf cXVlcnlfbG9nCiAKKyMgQ2xlYW4gdXAgYWZ0ZXIgdGhlIEJ1ZyM1NTI4NC9CdWcjNTg5MTIgdGVz dCBjYXNlLgorRFJPUCBUQUJMRSBidWc1ODkxMjsKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAjIFBsZWFzZSwgRE8gTk9UIFRPVUNIIHRoaXMgZmlsZSBhcyB3ZWxsIGFzIHRoZSBp bm5vZGIucmVzdWx0IGZpbGUuICAgIwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCXJl dmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDEwMTIyMTAyNDcxMi1sY201ajR5eGJsYnB3eWw1 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEwMTIyMTEyNDk0MS12ZDJleHc3MzVtd2EyMGc2CkBAIC0xODc0LDcgKzE4 NzQsOCBAQCBidHJfY3VyX3VwZGF0ZV9pbl9wbGFjZSgKIAkJTk9UIGNhbGwgaXQgaWYgaW5kZXgg aXMgc2Vjb25kYXJ5ICovCiAKIAkJaWYgKCFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KQotCQkg ICAgfHwgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkoTlVMTCwgaW5kZXgsIHVwZGF0 ZSkpIHsKKwkJICAgIHx8IHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KE5VTEwsIE5V TEwsCisJCQkJCQkJaW5kZXgsIHVwZGF0ZSkpIHsKIAogCQkJLyogUmVtb3ZlIHBvc3NpYmxlIGhh c2ggaW5kZXggcG9pbnRlciB0byB0aGlzIHJlY29yZCAqLwogCQkJYnRyX3NlYXJjaF91cGRhdGVf aGFzaF9vbl9kZWxldGUoY3Vyc29yKTsKQEAgLTI2MjYsMjcgKzI2MjcsMjQgQEAgdWxpbnQKIGJ0 cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09 PT09Ki8KIAl1bGludAkJZmxhZ3MsCS8qITwgaW46IHVuZG8gbG9nZ2luZyBhbmQgbG9ja2luZyBm bGFncyAqLwotCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBjdXJzb3IgKi8KKwlidWZfYmxv Y2tfdCoJYmxvY2ssCS8qITwgaW4vb3V0OiBidWZmZXIgYmxvY2sgb2YgdGhlIHJlY29yZCAqLwor CXJlY190KgkJcmVjLAkvKiE8IGluL291dDogcmVjb3JkICovCisJZGljdF9pbmRleF90KglpbmRl eCwJLyohPCBpbjogY2x1c3RlcmVkIGluZGV4IG9mIHRoZSByZWNvcmQgKi8KKwljb25zdCB1bGlu dCoJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjKSAqLwogCWlib29sCQl2YWws CS8qITwgaW46IHZhbHVlIHRvIHNldCAqLwogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVy eSB0aHJlYWQgKi8KIAltdHJfdCoJCW10cikJLyohPCBpbjogbXRyICovCiB7Ci0JZGljdF9pbmRl eF90KglpbmRleDsKLQlidWZfYmxvY2tfdCoJYmxvY2s7CiAJcm9sbF9wdHJfdAlyb2xsX3B0cjsK IAl1bGludAkJZXJyOwotCXJlY190KgkJcmVjOwogCXBhZ2VfemlwX2Rlc190KglwYWdlX3ppcDsK IAl0cnhfdCoJCXRyeDsKLQltZW1faGVhcF90KgloZWFwCQk9IE5VTEw7Ci0JdWxpbnQJCW9mZnNl dHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKLQl1bGludCoJCW9mZnNldHMJCT0gb2Zmc2V0c187 Ci0JcmVjX29mZnNfaW5pdChvZmZzZXRzXyk7CiAKLQlyZWMgPSBidHJfY3VyX2dldF9yZWMoY3Vy c29yKTsKLQlpbmRleCA9IGN1cnNvci0+aW5kZXg7CisJdXRfYWQoZGljdF9pbmRleF9pc19jbHVz dChpbmRleCkpOworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMp KTsKIAl1dF9hZCghIXBhZ2VfcmVjX2lzX2NvbXAocmVjKSA9PSBkaWN0X3RhYmxlX2lzX2NvbXAo aW5kZXgtPnRhYmxlKSk7Ci0Jb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBv ZmZzZXRzLCBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKKwl1dF9hZChidWZfYmxvY2tfZ2V0X2Zy YW1lKGJsb2NrKSA9PSBwYWdlX2FsaWduKHJlYykpOworCXV0X2FkKHBhZ2VfaXNfbGVhZihwYWdl X2FsaWduKHJlYykpKTsKIAogI2lmZGVmIFVOSVZfREVCVUcKIAlpZiAoYnRyX2N1cl9wcmludF9y ZWNvcmRfb3BzICYmIHRocikgewpAQCAtMjY1OCwxMyArMjY1NiwxMiBAQCBidHJfY3VyX2RlbF9t YXJrX3NldF9jbHVzdF9yZWMoCiAJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwog CXV0X2FkKCFyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIHJlY19vZmZzX2NvbXAob2Zmc2V0cykp KTsKIAotCWVyciA9IGxvY2tfY2x1c3RfcmVjX21vZGlmeV9jaGVja19hbmRfbG9jayhmbGFncywK LQkJCQkJCSAgIGJ0cl9jdXJfZ2V0X2Jsb2NrKGN1cnNvciksCisJZXJyID0gbG9ja19jbHVzdF9y ZWNfbW9kaWZ5X2NoZWNrX2FuZF9sb2NrKGZsYWdzLCBibG9jaywKIAkJCQkJCSAgIHJlYywgaW5k ZXgsIG9mZnNldHMsIHRocik7CiAKIAlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKIAotCQlnb3Rv IGZ1bmNfZXhpdDsKKwkJcmV0dXJuKGVycik7CiAJfQogCiAJZXJyID0gdHJ4X3VuZG9fcmVwb3J0 X3Jvd19vcGVyYXRpb24oZmxhZ3MsIFRSWF9VTkRPX01PRElGWV9PUCwgdGhyLApAQCAtMjY3Miwx MSArMjY2OSw5IEBAIGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygKIAkJCQkJICAgICZy b2xsX3B0cik7CiAJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CiAKLQkJZ290byBmdW5jX2V4aXQ7 CisJCXJldHVybihlcnIpOwogCX0KIAotCWJsb2NrID0gYnRyX2N1cl9nZXRfYmxvY2soY3Vyc29y KTsKLQogCWlmIChibG9jay0+aXNfaGFzaGVkKSB7CiAJCXJ3X2xvY2tfeF9sb2NrKCZidHJfc2Vh cmNoX2xhdGNoKTsKIAl9CkBAIC0yNjk5LDEwICsyNjk0LDYgQEAgYnRyX2N1cl9kZWxfbWFya19z ZXRfY2x1c3RfcmVjKAogCWJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlY19sb2coZmxhZ3Ms IHJlYywgaW5kZXgsIHZhbCwgdHJ4LAogCQkJCQkgICByb2xsX3B0ciwgbXRyKTsKIAotZnVuY19l eGl0OgotCWlmIChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7Ci0JCW1lbV9oZWFwX2ZyZWUoaGVh cCk7Ci0JfQogCXJldHVybihlcnIpOwogfQogCkBAIC0zNzU4LDEwOCArMzc0OSwzNiBAQCBidHJf Y3VyX3NldF9vd25lcnNoaXBfb2ZfZXh0ZXJuX2ZpZWxkKAogfQogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK LU1hcmtzIG5vdCB1cGRhdGVkIGV4dGVybiBmaWVsZHMgYXMgbm90LW93bmVkIGJ5IHRoaXMgcmVj b3JkLiBUaGUgb3duZXJzaGlwCi1pcyB0cmFuc2ZlcnJlZCB0byB0aGUgdXBkYXRlZCByZWNvcmQg d2hpY2ggaXMgaW5zZXJ0ZWQgZWxzZXdoZXJlIGluIHRoZQorTWFya3Mgbm9uLXVwZGF0ZWQgb2Zm LXBhZ2UgZmllbGRzIGFzIGRpc293bmVkIGJ5IHRoaXMgcmVjb3JkLiBUaGUgb3duZXJzaGlwCitt dXN0IGJlIHRyYW5zZmVycmVkIHRvIHRoZSB1cGRhdGVkIHJlY29yZCB3aGljaCBpcyBpbnNlcnRl ZCBlbHNld2hlcmUgaW4gdGhlCiBpbmRleCB0cmVlLiBJbiBwdXJnZSBvbmx5IHRoZSBvd25lciBv ZiBleHRlcm5hbGx5IHN0b3JlZCBmaWVsZCBpcyBhbGxvd2VkCi10byBmcmVlIHRoZSBmaWVsZC4K LUByZXR1cm4gVFJVRSBpZiBCTE9CIG93bmVyc2hpcCB3YXMgdHJhbnNmZXJyZWQgKi8KK3RvIGZy ZWUgdGhlIGZpZWxkLiAqLwogVU5JVl9JTlRFUk4KLWlib29sCi1idHJfY3VyX21hcmtfZXh0ZXJu X2luaGVyaXRlZF9maWVsZHMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov Cit2b2lkCitidHJfY3VyX2Rpc293bl9pbmhlcml0ZWRfZmllbGRzKAorLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KIAlwYWdlX3ppcF9kZXNfdCoJcGFnZV96aXAsLyohPCBpbi9vdXQ6 IGNvbXByZXNzZWQgcGFnZSB3aG9zZSB1bmNvbXByZXNzZWQKIAkJCQlwYXJ0IHdpbGwgYmUgdXBk YXRlZCwgb3IgTlVMTCAqLwogCXJlY190KgkJcmVjLAkvKiE8IGluL291dDogcmVjb3JkIGluIGEg Y2x1c3RlcmVkIGluZGV4ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXgg b2YgdGhlIHBhZ2UgKi8KIAljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGluOiBhcnJheSByZXR1 cm5lZCBieSByZWNfZ2V0X29mZnNldHMoKSAqLwogCWNvbnN0IHVwZF90Kgl1cGRhdGUsCS8qITwg aW46IHVwZGF0ZSB2ZWN0b3IgKi8KLQltdHJfdCoJCW10cikJLyohPCBpbjogbXRyLCBvciBOVUxM IGlmIG5vdCBsb2dnZWQgKi8KKwltdHJfdCoJCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNh Y3Rpb24gKi8KIHsKLQl1bGludAluOwotCXVsaW50CWo7CiAJdWxpbnQJaTsKLQlpYm9vbAljaGFu Z2Vfb3duZXJzaGlwID0gRkFMU0U7CiAKLQl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIE5V TEwsIG9mZnNldHMpKTsKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZz ZXRzKSk7CiAJdXRfYWQoIXJlY19vZmZzX2NvbXAob2Zmc2V0cykgfHwgIXJlY19nZXRfbm9kZV9w dHJfZmxhZyhyZWMpKTsKKwl1dF9hZChyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKKwl1 dF9hZChtdHIpOwogCi0JaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKSB7Ci0KLQkJ cmV0dXJuKEZBTFNFKTsKLQl9Ci0KLQluID0gcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7Ci0K LQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCWlmIChyZWNfb2Zmc19udGhfZXh0ZXJuKG9m ZnNldHMsIGkpKSB7Ci0KLQkJCS8qIENoZWNrIGl0IGlzIG5vdCBpbiB1cGRhdGVkIGZpZWxkcyAq LwotCi0JCQlpZiAodXBkYXRlKSB7Ci0JCQkJZm9yIChqID0gMDsgaiA8IHVwZF9nZXRfbl9maWVs ZHModXBkYXRlKTsKLQkJCQkgICAgIGorKykgewotCQkJCQlpZiAodXBkX2dldF9udGhfZmllbGQo dXBkYXRlLCBqKQotCQkJCQkgICAgLT5maWVsZF9ubyA9PSBpKSB7Ci0KLQkJCQkJCWdvdG8gdXBk YXRlZDsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQorCWZvciAoaSA9IDA7IGkgPCByZWNfb2Zmc19u X2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmIChyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNl dHMsIGkpCisJCSAgICAmJiAhdXBkX2dldF9maWVsZF9ieV9maWVsZF9ubyh1cGRhdGUsIGkpKSB7 CiAJCQlidHJfY3VyX3NldF9vd25lcnNoaXBfb2ZfZXh0ZXJuX2ZpZWxkKAogCQkJCXBhZ2Vfemlw LCByZWMsIGluZGV4LCBvZmZzZXRzLCBpLCBGQUxTRSwgbXRyKTsKLQotCQkJY2hhbmdlX293bmVy c2hpcCA9IFRSVUU7Ci11cGRhdGVkOgotCQkJOwogCQl9CiAJfQotCi0JcmV0dXJuKGNoYW5nZV9v d25lcnNoaXApOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVRoZSBjb21wbGVtZW50IG9mIHRoZSBw cmV2aW91cyBmdW5jdGlvbjogaW4gYW4gdXBkYXRlIGVudHJ5IG1heSBpbmhlcml0Ci1zb21lIGV4 dGVybmFsbHkgc3RvcmVkIGZpZWxkcyBmcm9tIGEgcmVjb3JkLiBXZSBtdXN0IG1hcmsgdGhlbSBh cyBpbmhlcml0ZWQKLWluIGVudHJ5LCBzbyB0aGF0IHRoZXkgYXJlIG5vdCBmcmVlZCBpbiBhIHJv bGxiYWNrLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLWJ0cl9jdXJfbWFya19kdHVwbGVfaW5oZXJp dGVkX2V4dGVybigKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVw bGVfdCoJZW50cnksCQkvKiE8IGluL291dDogdXBkYXRlZCBlbnRyeSB0byBiZQotCQkJCQlpbnNl cnRlZCB0byBjbHVzdGVyZWQgaW5kZXggKi8KLQljb25zdCB1cGRfdCoJdXBkYXRlKQkJLyohPCBp bjogdXBkYXRlIHZlY3RvciAqLwotewotCXVsaW50CQlpOwotCi0JZm9yIChpID0gMDsgaSA8IGR0 dXBsZV9nZXRfbl9maWVsZHMoZW50cnkpOyBpKyspIHsKLQotCQlkZmllbGRfdCoJZGZpZWxkID0g ZHR1cGxlX2dldF9udGhfZmllbGQoZW50cnksIGkpOwotCQlieXRlKgkJZGF0YTsKLQkJdWxpbnQJ CWxlbjsKLQkJdWxpbnQJCWo7Ci0KLQkJaWYgKCFkZmllbGRfaXNfZXh0KGRmaWVsZCkpIHsKLQkJ CWNvbnRpbnVlOwotCQl9Ci0KLQkJLyogQ2hlY2sgaWYgaXQgaXMgaW4gdXBkYXRlZCBmaWVsZHMg Ki8KLQotCQlmb3IgKGogPSAwOyBqIDwgdXBkX2dldF9uX2ZpZWxkcyh1cGRhdGUpOyBqKyspIHsK LQkJCWlmICh1cGRfZ2V0X250aF9maWVsZCh1cGRhdGUsIGopLT5maWVsZF9ubyA9PSBpKSB7Ci0K LQkJCQlnb3RvIGlzX3VwZGF0ZWQ7Ci0JCQl9Ci0JCX0KLQotCQlkYXRhID0gZGZpZWxkX2dldF9k YXRhKGRmaWVsZCk7Ci0JCWxlbiA9IGRmaWVsZF9nZXRfbGVuKGRmaWVsZCk7Ci0JCWRhdGFbbGVu IC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSArIEJUUl9FWFRFUk5fTEVOXQotCQkJfD0gQlRS X0VYVEVSTl9JTkhFUklURURfRkxBRzsKLQotaXNfdXBkYXRlZDoKLQkJOwotCX0KIH0KIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCkBAIC0zODk2LDI5ICszODE1LDYgQEAgYnRyX2N1cl91bm1hcmtfZXh0ZXJu X2ZpZWxkcygKIAkJfQogCX0KIH0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1NYXJrcyBhbGwgZXh0ZXJu IGZpZWxkcyBpbiBhIGR0dXBsZSBhcyBvd25lZCBieSB0aGUgcmVjb3JkLiAqLwotVU5JVl9JTlRF Uk4KLXZvaWQKLWJ0cl9jdXJfdW5tYXJrX2R0dXBsZV9leHRlcm5fZmllbGRzKAotLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JZHR1cGxlX3QqCWVudHJ5KQkJLyohPCBpbi9v dXQ6IGNsdXN0ZXJlZCBpbmRleCBlbnRyeSAqLwotewotCXVsaW50CWk7Ci0KLQlmb3IgKGkgPSAw OyBpIDwgZHR1cGxlX2dldF9uX2ZpZWxkcyhlbnRyeSk7IGkrKykgewotCQlkZmllbGRfdCogZGZp ZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQoZW50cnksIGkpOwotCi0JCWlmIChkZmllbGRfaXNf ZXh0KGRmaWVsZCkpIHsKLQkJCWJ5dGUqCWRhdGEgPSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxkKTsK LQkJCXVsaW50CWxlbiA9IGRmaWVsZF9nZXRfbGVuKGRmaWVsZCk7Ci0KLQkJCWRhdGFbbGVuIC0g QlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSArIEJUUl9FWFRFUk5fTEVOXQotCQkJCSY9IH5CVFJf RVhURVJOX09XTkVSX0ZMQUc7Ci0JCX0KLQl9Ci19CiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRmxhZ3Mg dGhlIGRhdGEgdHVwbGUgZmllbGRzIHRoYXQgYXJlIG1hcmtlZCBhcyBleHRlcm4gc3RvcmFnZSBp biB0aGUKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1 ci5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCXJldmlkOmppbW15 LnlhbmdAb3JhY2xlLmNvbS0yMDEwMTIyMTAyNDcxMi1sY201ajR5eGJsYnB3eWw1CisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMDEyMjExMjQ5NDEtdmQyZXh3NzM1bXdhMjBnNgpAQCAtMzMzLDEwICszMzMsMTQg QEAgdWxpbnQKIGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygKIC8qPT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KIAl1bGludAkJZmxhZ3MsCS8qITwgaW46IHVuZG8gbG9nZ2luZyBh bmQgbG9ja2luZyBmbGFncyAqLwotCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBjdXJzb3Ig Ki8KKwlidWZfYmxvY2tfdCoJYmxvY2ssCS8qITwgaW4vb3V0OiBidWZmZXIgYmxvY2sgb2YgdGhl IHJlY29yZCAqLworCXJlY190KgkJcmVjLAkvKiE8IGluL291dDogcmVjb3JkICovCisJZGljdF9p bmRleF90KglpbmRleCwJLyohPCBpbjogY2x1c3RlcmVkIGluZGV4IG9mIHRoZSByZWNvcmQgKi8K Kwljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjKSAqLwog CWlib29sCQl2YWwsCS8qITwgaW46IHZhbHVlIHRvIHNldCAqLwogCXF1ZV90aHJfdCoJdGhyLAkv KiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KLQltdHJfdCoJCW10cik7CS8qITwgaW46IG10ciAqLwor CW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBTZXRzIGEgc2Vjb25kYXJ5IGluZGV4IHJlY29yZCBkZWxldGUgbWFyayB0byBU UlVFIG9yIEZBTFNFLgogQHJldHVybglEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsIG9yIGVycm9y IG51bWJlciAqLwpAQCAtNDcxLDQwICs0NzUsMjIgQEAgYnRyX2VzdGltYXRlX251bWJlcl9vZl9k aWZmZXJlbnRfa2V5X3ZhbAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSovCiAJZGljdF9pbmRleF90KglpbmRleCk7CS8qITwgaW46IGluZGV4ICovCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLU1hcmtzIG5vdCB1cGRhdGVkIGV4dGVybiBmaWVsZHMgYXMgbm90LW93bmVkIGJ5IHRo aXMgcmVjb3JkLiBUaGUgb3duZXJzaGlwCi1pcyB0cmFuc2ZlcnJlZCB0byB0aGUgdXBkYXRlZCBy ZWNvcmQgd2hpY2ggaXMgaW5zZXJ0ZWQgZWxzZXdoZXJlIGluIHRoZQorTWFya3Mgbm9uLXVwZGF0 ZWQgb2ZmLXBhZ2UgZmllbGRzIGFzIGRpc293bmVkIGJ5IHRoaXMgcmVjb3JkLiBUaGUgb3duZXJz aGlwCittdXN0IGJlIHRyYW5zZmVycmVkIHRvIHRoZSB1cGRhdGVkIHJlY29yZCB3aGljaCBpcyBp bnNlcnRlZCBlbHNld2hlcmUgaW4gdGhlCiBpbmRleCB0cmVlLiBJbiBwdXJnZSBvbmx5IHRoZSBv d25lciBvZiBleHRlcm5hbGx5IHN0b3JlZCBmaWVsZCBpcyBhbGxvd2VkCi10byBmcmVlIHRoZSBm aWVsZC4KLUByZXR1cm4gVFJVRSBpZiBCTE9CIG93bmVyc2hpcCB3YXMgdHJhbnNmZXJyZWQgKi8K K3RvIGZyZWUgdGhlIGZpZWxkLiAqLwogVU5JVl9JTlRFUk4KLWlib29sCi1idHJfY3VyX21hcmtf ZXh0ZXJuX2luaGVyaXRlZF9maWVsZHMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSovCit2b2lkCitidHJfY3VyX2Rpc293bl9pbmhlcml0ZWRfZmllbGRzKAorLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ki8KIAlwYWdlX3ppcF9kZXNfdCoJcGFnZV96aXAsLyohPCBp bi9vdXQ6IGNvbXByZXNzZWQgcGFnZSB3aG9zZSB1bmNvbXByZXNzZWQKIAkJCQlwYXJ0IHdpbGwg YmUgdXBkYXRlZCwgb3IgTlVMTCAqLwogCXJlY190KgkJcmVjLAkvKiE8IGluL291dDogcmVjb3Jk IGluIGEgY2x1c3RlcmVkIGluZGV4ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjog aW5kZXggb2YgdGhlIHBhZ2UgKi8KIAljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGluOiBhcnJh eSByZXR1cm5lZCBieSByZWNfZ2V0X29mZnNldHMoKSAqLwogCWNvbnN0IHVwZF90Kgl1cGRhdGUs CS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgKi8KLQltdHJfdCoJCW10cik7CS8qITwgaW46IG10ciwg b3IgTlVMTCBpZiBub3QgbG9nZ2VkICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVRoZSBjb21wbGVtZW50 IG9mIHRoZSBwcmV2aW91cyBmdW5jdGlvbjogaW4gYW4gdXBkYXRlIGVudHJ5IG1heSBpbmhlcml0 Ci1zb21lIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkcyBmcm9tIGEgcmVjb3JkLiBXZSBtdXN0IG1h cmsgdGhlbSBhcyBpbmhlcml0ZWQKLWluIGVudHJ5LCBzbyB0aGF0IHRoZXkgYXJlIG5vdCBmcmVl ZCBpbiBhIHJvbGxiYWNrLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLWJ0cl9jdXJfbWFya19kdHVw bGVfaW5oZXJpdGVkX2V4dGVybigKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ki8KLQlkdHVwbGVfdCoJZW50cnksCQkvKiE8IGluL291dDogdXBkYXRlZCBlbnRyeSB0byBiZQot CQkJCQlpbnNlcnRlZCB0byBjbHVzdGVyZWQgaW5kZXggKi8KLQljb25zdCB1cGRfdCoJdXBkYXRl KTsJLyohPCBpbjogdXBkYXRlIHZlY3RvciAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1NYXJrcyBhbGwg ZXh0ZXJuIGZpZWxkcyBpbiBhIGR0dXBsZSBhcyBvd25lZCBieSB0aGUgcmVjb3JkLiAqLwotVU5J Vl9JTlRFUk4KLXZvaWQKLWJ0cl9jdXJfdW5tYXJrX2R0dXBsZV9leHRlcm5fZmllbGRzKAotLyo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JZHR1cGxlX3QqCWVudHJ5KTsJCS8q ITwgaW4vb3V0OiBjbHVzdGVyZWQgaW5kZXggZW50cnkgKi8KKwltdHJfdCoJCW10cikJLyohPCBp bi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDIsMyw0 LDUsNikpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgogU3RvcmVzIHRoZSBmaWVsZHMgaW4gYmlnX3JlY192 ZWMgdG8gdGhlIHRhYmxlc3BhY2UgYW5kIHB1dHMgcG9pbnRlcnMgdG8KIHRoZW0gaW4gcmVjLiAg VGhlIGV4dGVybiBmbGFncyBpbiByZWMgd2lsbCBoYXZlIHRvIGJlIHNldCBiZWZvcmVoYW5kLgoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEuaCcK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5oCXJldmlkOmppbW15Lnlh bmdAb3JhY2xlLmNvbS0yMDEwMTIyMTAyNDcxMi1sY201ajR5eGJsYnB3eWw1CisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEwMTIyMTEyNDk0MS12ZDJleHc3MzVtd2EyMGc2CkBAIC0xNTQsMTQgKzE1NCwxOSBA QCBkZmllbGRfZHVwKAogCWRmaWVsZF90KglmaWVsZCwJLyohPCBpbi9vdXQ6IGRhdGEgZmllbGQg Ki8KIAltZW1faGVhcF90KgloZWFwKTsJLyohPCBpbjogbWVtb3J5IGhlYXAgd2hlcmUgYWxsb2Nh dGVkICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgotVGVzdHMgaWYgZGF0YSBsZW5ndGggYW5kIGNvbnRl bnQgaXMgZXF1YWwgZm9yIHR3byBkZmllbGRzLgotQHJldHVybglUUlVFIGlmIGVxdWFsICovCitU ZXN0cyBpZiB0d28gZGF0YSBmaWVsZHMgYXJlIGVxdWFsLgorSWYgbGVuPT0wLCB0ZXN0cyB0aGUg ZGF0YSBsZW5ndGggYW5kIGNvbnRlbnQgZm9yIGVxdWFsaXR5LgorSWYgbGVuPjAsIHRlc3RzIHRo ZSBmaXJzdCBsZW4gYnl0ZXMgb2YgdGhlIGNvbnRlbnQgZm9yIGVxdWFsaXR5LgorQHJldHVybglU UlVFIGlmIGJvdGggZmllbGRzIGFyZSBOVUxMIG9yIGlmIHRoZXkgYXJlIGVxdWFsICovCiBVTklW X0lOTElORQogaWJvb2wKIGRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAogLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PSovCiAJY29uc3QgZGZpZWxkX3QqCWZpZWxkMSwJLyohPCBpbjog ZmllbGQgKi8KLQljb25zdCBkZmllbGRfdCoJZmllbGQyKTsvKiE8IGluOiBmaWVsZCAqLworCWNv bnN0IGRmaWVsZF90KglmaWVsZDIsCS8qITwgaW46IGZpZWxkICovCisJdWxpbnQJCWxlbikJLyoh PCBpbjogbWF4aW11bSBwcmVmaXggdG8gY29tcGFyZSwKKwkJCQlvciAwIHRvIGNvbXBhcmUgdGhl IHdob2xlIGZpZWxkIGxlbmd0aCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51 c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRlc3RzIGlmIGRmaWVsZCBkYXRhIGxl bmd0aCBhbmQgY29udGVudCBpcyBlcXVhbCB0byB0aGUgZ2l2ZW4uCiBAcmV0dXJuCVRSVUUgaWYg ZXF1YWwgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0 YTBkYXRhLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljCXJl dmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDEwMTIyMTAyNDcxMi1sY201ajR5eGJsYnB3eWw1 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEuaWMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjQ5NDEtdmQyZXh3NzM1bXdhMjBnNgpAQCAtMjI5 LDIwICsyMjksMzAgQEAgZGZpZWxkX2R1cCgKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVRlc3Rz IGlmIGRhdGEgbGVuZ3RoIGFuZCBjb250ZW50IGlzIGVxdWFsIGZvciB0d28gZGZpZWxkcy4KLUBy ZXR1cm4JVFJVRSBpZiBlcXVhbCAqLworVGVzdHMgaWYgdHdvIGRhdGEgZmllbGRzIGFyZSBlcXVh bC4KK0lmIGxlbj09MCwgdGVzdHMgdGhlIGRhdGEgbGVuZ3RoIGFuZCBjb250ZW50IGZvciBlcXVh bGl0eS4KK0lmIGxlbj4wLCB0ZXN0cyB0aGUgZmlyc3QgbGVuIGJ5dGVzIG9mIHRoZSBjb250ZW50 IGZvciBlcXVhbGl0eS4KK0ByZXR1cm4JVFJVRSBpZiBib3RoIGZpZWxkcyBhcmUgTlVMTCBvciBp ZiB0aGV5IGFyZSBlcXVhbCAqLwogVU5JVl9JTkxJTkUKIGlib29sCiBkZmllbGRfZGF0YXNfYXJl X2JpbmFyeV9lcXVhbCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCWNvbnN0IGRm aWVsZF90KglmaWVsZDEsCS8qITwgaW46IGZpZWxkICovCi0JY29uc3QgZGZpZWxkX3QqCWZpZWxk MikJLyohPCBpbjogZmllbGQgKi8KKwljb25zdCBkZmllbGRfdCoJZmllbGQyLAkvKiE8IGluOiBm aWVsZCAqLworCXVsaW50CQlsZW4pCS8qITwgaW46IG1heGltdW0gcHJlZml4IHRvIGNvbXBhcmUs CisJCQkJb3IgMCB0byBjb21wYXJlIHRoZSB3aG9sZSBmaWVsZCBsZW5ndGggKi8KIHsKLQl1bGlu dAlsZW47CisJdWxpbnQJbGVuMiA9IGxlbjsKIAotCWxlbiA9IGZpZWxkMS0+bGVuOworCWlmIChm aWVsZDEtPmxlbiA9PSBVTklWX1NRTF9OVUxMIHx8IGxlbiA9PSAwIHx8IGZpZWxkMS0+bGVuIDwg bGVuKSB7CisJCWxlbiA9IGZpZWxkMS0+bGVuOworCX0KIAotCXJldHVybihsZW4gPT0gZmllbGQy LT5sZW4KKwlpZiAoZmllbGQyLT5sZW4gPT0gVU5JVl9TUUxfTlVMTCB8fCBsZW4yID09IDAgfHwg ZmllbGQyLT5sZW4gPCBsZW4yKSB7CisJCWxlbjIgPSBmaWVsZDItPmxlbjsKKwl9CisKKwlyZXR1 cm4obGVuID09IGxlbjIKIAkgICAgICAgJiYgKGxlbiA9PSBVTklWX1NRTF9OVUxMCiAJCSAgIHx8 ICFtZW1jbXAoZmllbGQxLT5kYXRhLCBmaWVsZDItPmRhdGEsIGxlbikpKTsKIH0KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5oJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5oCXJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNv bS0yMDEwMTIyMTAyNDcxMi1sY201ajR5eGJsYnB3eWw1CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9yb3cwdXBkLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjEx MjQ5NDEtdmQyZXh3NzM1bXdhMjBnNgpAQCAtMjg2LDEwICsyODYsMTMgQEAgcm93X3VwZF9jaGFu Z2VzX29yZF9maWVsZF9iaW5hcnkoCiAJCQkJcm93IGFuZCB0aGUgZGF0YSB2YWx1ZXMgaW4gdXBk YXRlIGFyZSBub3QKIAkJCQlrbm93biB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBlLmcu LCBhdAogCQkJCWNvbXBpbGUgdGltZSAqLworCWNvbnN0IHJvd19leHRfdCpleHQsCS8qITwgTlVM TCwgb3IgcHJlZml4ZXMgb2YgdGhlIGV4dGVybmFsbHkKKwkJCQlzdG9yZWQgY29sdW1ucyBpbiB0 aGUgb2xkIHJvdyAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIHRo ZSByZWNvcmQgKi8KLQljb25zdCB1cGRfdCoJdXBkYXRlKTsvKiE8IGluOiB1cGRhdGUgdmVjdG9y IGZvciB0aGUgcm93OyBOT1RFOiB0aGUKKwljb25zdCB1cGRfdCoJdXBkYXRlKQkvKiE8IGluOiB1 cGRhdGUgdmVjdG9yIGZvciB0aGUgcm93OyBOT1RFOiB0aGUKIAkJCQlmaWVsZCBudW1iZXJzIGlu IHRoaXMgTVVTVCBiZSBjbHVzdGVyZWQgaW5kZXgKIAkJCQlwb3NpdGlvbnMhICovCisJX19hdHRy aWJ1dGVfXygobm9ubnVsbCgzLDQpLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENo ZWNrcyBpZiBhbiB1cGRhdGUgdmVjdG9yIGNoYW5nZXMgYW4gb3JkZXJpbmcgZmllbGQgb2YgYW4g aW5kZXggcmVjb3JkLgogVGhpcyBmdW5jdGlvbiBpcyBmYXN0IGlmIHRoZSB1cGRhdGUgdmVjdG9y IGlzIHNob3J0IG9yIHRoZSBudW1iZXIgb2Ygb3JkZXJpbmcKQEAgLTQ2MiwxMSArNDY1LDE2IEBA IHN0cnVjdCB1cGRfbm9kZV9zdHJ1Y3R7CiAjZGVmaW5lIFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVS RUQgIDMJLyogY2x1c3RlcmVkIGluZGV4IHJlY29yZCBzaG91bGQgYmUKIAkJCQkJaW5zZXJ0ZWQs IG9sZCByZWNvcmQgaXMgYWxyZWFkeSBkZWxldGUKIAkJCQkJbWFya2VkICovCi0jZGVmaW5lIFVQ RF9OT0RFX1VQREFURV9BTExfU0VDCSAgIDQJLyogYW4gb3JkZXJpbmcgZmllbGQgb2YgdGhlIGNs dXN0ZXJlZAorI2RlZmluZSBVUERfTk9ERV9JTlNFUlRfQkxPQgkgICA0CS8qIGNsdXN0ZXJlZCBp bmRleCByZWNvcmQgc2hvdWxkIGJlCisJCQkJCWluc2VydGVkLCBvbGQgcmVjb3JkIGlzIGFscmVh ZHkKKwkJCQkJZGVsZXRlLW1hcmtlZDsgbm9uLXVwZGF0ZWQgQkxPQnMKKwkJCQkJc2hvdWxkIGJl IGluaGVyaXRlZCBieSB0aGUgbmV3IHJlY29yZAorCQkJCQlhbmQgZGlzb3duZWQgYnkgdGhlIG9s ZCByZWNvcmQgKi8KKyNkZWZpbmUgVVBEX05PREVfVVBEQVRFX0FMTF9TRUMJICAgNQkvKiBhbiBv cmRlcmluZyBmaWVsZCBvZiB0aGUgY2x1c3RlcmVkCiAJCQkJCWluZGV4IHJlY29yZCB3YXMgY2hh bmdlZCwgb3IgdGhpcyBpcwogCQkJCQlhIGRlbGV0ZSBvcGVyYXRpb246IHNob3VsZCB1cGRhdGUK IAkJCQkJYWxsIHRoZSBzZWNvbmRhcnkgaW5kZXggcmVjb3JkcyAqLwotI2RlZmluZQlVUERfTk9E RV9VUERBVEVfU09NRV9TRUMgICA1CS8qIHNlY29uZGFyeSBpbmRleCBlbnRyaWVzIHNob3VsZCBi ZQorI2RlZmluZSBVUERfTk9ERV9VUERBVEVfU09NRV9TRUMgICA2CS8qIHNlY29uZGFyeSBpbmRl eCBlbnRyaWVzIHNob3VsZCBiZQogCQkJCQlsb29rZWQgYXQgYW5kIHVwZGF0ZWQgaWYgYW4gb3Jk ZXJpbmcKIAkJCQkJZmllbGQgY2hhbmdlZCAqLwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MHB1cmdlLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzBwdXJnZS5jCXJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDEwMTIyMTAyNDcxMi1sY201 ajR5eGJsYnB3eWw1CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBwdXJnZS5jCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTI0OTQxLXZkMmV4dzczNW13YTIwZzYK QEAgLTUxNiw3ICs1MTYsNyBAQCByb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybigKIAl3aGls ZSAobm9kZS0+aW5kZXggIT0gTlVMTCkgewogCQlpbmRleCA9IG5vZGUtPmluZGV4OwogCi0JCWlm IChyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBub2RlLT5pbmRleCwKKwkJ aWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KE5VTEwsIE5VTEwsIG5vZGUtPmlu ZGV4LAogCQkJCQkJICAgICBub2RlLT51cGRhdGUpKSB7CiAJCQkvKiBCdWlsZCB0aGUgb2xkZXIg dmVyc2lvbiBvZiB0aGUgaW5kZXggZW50cnkgKi8KIAkJCWVudHJ5ID0gcm93X2J1aWxkX2luZGV4 X2VudHJ5KG5vZGUtPnJvdywgTlVMTCwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL3Jvdy9yb3cwdW1vZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW1vZC5j CXJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDEwMTIyMTAyNDcxMi1sY201ajR5eGJsYnB3 eWw1CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmMJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjQ5NDEtdmQyZXh3NzM1bXdhMjBnNgpAQCAtNjk1LDE5 ICs2OTUsMTggQEAgcm93X3VuZG9fbW9kX3VwZF9leGlzdF9zZWMoCiAJd2hpbGUgKG5vZGUtPmlu ZGV4ICE9IE5VTEwpIHsKIAkJaW5kZXggPSBub2RlLT5pbmRleDsKIAotCQlpZiAocm93X3VwZF9j aGFuZ2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+cm93LCBub2RlLT5pbmRleCwKLQkJCQkJCSAg ICAgbm9kZS0+dXBkYXRlKSkgeworCQlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5h cnkoCisJCQkgICAgbm9kZS0+cm93LCBub2RlLT5leHQsIG5vZGUtPmluZGV4LCBub2RlLT51cGRh dGUpKSB7CiAKIAkJCS8qIEJ1aWxkIHRoZSBuZXdlc3QgdmVyc2lvbiBvZiB0aGUgaW5kZXggZW50 cnkgKi8KIAkJCWVudHJ5ID0gcm93X2J1aWxkX2luZGV4X2VudHJ5KG5vZGUtPnJvdywgbm9kZS0+ ZXh0LAogCQkJCQkJICAgICAgaW5kZXgsIGhlYXApOwogCQkJaWYgKFVOSVZfVU5MSUtFTFkoIWVu dHJ5KSkgewogCQkJCS8qIFRoZSBzZXJ2ZXIgbXVzdCBoYXZlIGNyYXNoZWQgaW4KLQkJCQlyb3df dXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoKSwgaW4KLQkJCQlyb3dfaW5zX2luZGV4X2VudHJ5X2xv dygpIGJlZm9yZQotCQkJCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoKQotCQkJCWhh cyB3cml0dGVuIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zCi0JCQkJKEJMT0JzKSBvZiB0 aGUgbmV3IGNsdXN0ZXJlZCBpbmRleCBlbnRyeS4gKi8KKwkJCQlyb3dfdXBkX2NsdXN0X3JlY19i eV9pbnNlcnQoKSBiZWZvcmUKKwkJCQl0aGUgdXBkYXRlZCBleHRlcm5hbGx5IHN0b3JlZCBjb2x1 bW5zIChCTE9CcykKKwkJCQlvZiB0aGUgbmV3IGNsdXN0ZXJlZCBpbmRleCBlbnRyeSB3ZXJlCisJ CQkJd3JpdHRlbi4gKi8KIAogCQkJCS8qIFRoZSB0YWJsZSBtdXN0IGJlIGluIERZTkFNSUMgb3Ig Q09NUFJFU1NFRAogCQkJCWZvcm1hdC4gIFJFRFVOREFOVCBhbmQgQ09NUEFDVCBmb3JtYXRzCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29t LTIwMTAxMjIxMDI0NzEyLWxjbTVqNHl4YmxicHd5bDUKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9y b3cvcm93MHVwZC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTI0OTQx LXZkMmV4dzczNW13YTIwZzYKQEAgLTExOTYsMjAgKzExOTYsMjEgQEAgcm93X3VwZF9jaGFuZ2Vz X29yZF9maWVsZF9iaW5hcnkoCiAJCQkJcm93IGFuZCB0aGUgZGF0YSB2YWx1ZXMgaW4gdXBkYXRl IGFyZSBub3QKIAkJCQlrbm93biB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBlLmcuLCBh dAogCQkJCWNvbXBpbGUgdGltZSAqLworCWNvbnN0IHJvd19leHRfdCpleHQsCS8qITwgTlVMTCwg b3IgcHJlZml4ZXMgb2YgdGhlIGV4dGVybmFsbHkKKwkJCQlzdG9yZWQgY29sdW1ucyBpbiB0aGUg b2xkIHJvdyAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIHRoZSBy ZWNvcmQgKi8KIAljb25zdCB1cGRfdCoJdXBkYXRlKQkvKiE8IGluOiB1cGRhdGUgdmVjdG9yIGZv ciB0aGUgcm93OyBOT1RFOiB0aGUKIAkJCQlmaWVsZCBudW1iZXJzIGluIHRoaXMgTVVTVCBiZSBj bHVzdGVyZWQgaW5kZXgKIAkJCQlwb3NpdGlvbnMhICovCiB7Ci0JdWxpbnQJCW5fdW5pcXVlOwot CXVsaW50CQluX3VwZF9maWVsZHM7Ci0JdWxpbnQJCWksIGo7Ci0JZGljdF9pbmRleF90KgljbHVz dF9pbmRleDsKKwl1bGludAkJCW5fdW5pcXVlOworCXVsaW50CQkJaTsKKwljb25zdCBkaWN0X2lu ZGV4X3QqCWNsdXN0X2luZGV4OwogCi0JdXRfYWQodXBkYXRlICYmIGluZGV4KTsKKwl1dF9hZCh1 cGRhdGUpOworCXV0X2FkKGluZGV4KTsKIAogCW5fdW5pcXVlID0gZGljdF9pbmRleF9nZXRfbl91 bmlxdWUoaW5kZXgpOwotCW5fdXBkX2ZpZWxkcyA9IHVwZF9nZXRfbl9maWVsZHModXBkYXRlKTsK IAogCWNsdXN0X2luZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgoaW5kZXgtPnRhYmxl KTsKIApAQCAtMTIxNywzMyArMTIxOCw3MiBAQCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2Jp bmFyeSgKIAogCQljb25zdCBkaWN0X2ZpZWxkX3QqCWluZF9maWVsZDsKIAkJY29uc3QgZGljdF9j b2xfdCoJY29sOwotCQl1bGludAkJCWNvbF9wb3M7CiAJCXVsaW50CQkJY29sX25vOworCQljb25z dCB1cGRfZmllbGRfdCoJdXBkX2ZpZWxkOworCQljb25zdCBkZmllbGRfdCoJCWRmaWVsZDsKKwkJ ZGZpZWxkX3QJCWRmaWVsZF9leHQ7CisJCXVsaW50CQkJZGZpZWxkX2xlbjsKKwkJY29uc3QgYnl0 ZSoJCWJ1ZjsKIAogCQlpbmRfZmllbGQgPSBkaWN0X2luZGV4X2dldF9udGhfZmllbGQoaW5kZXgs IGkpOwogCQljb2wgPSBkaWN0X2ZpZWxkX2dldF9jb2woaW5kX2ZpZWxkKTsKLQkJY29sX3BvcyA9 IGRpY3RfY29sX2dldF9jbHVzdF9wb3MoY29sLCBjbHVzdF9pbmRleCk7CiAJCWNvbF9ubyA9IGRp Y3RfY29sX2dldF9ubyhjb2wpOwogCi0JCWZvciAoaiA9IDA7IGogPCBuX3VwZF9maWVsZHM7IGor KykgeworCQl1cGRfZmllbGQgPSB1cGRfZ2V0X2ZpZWxkX2J5X2ZpZWxkX25vKAorCQkJdXBkYXRl LCBkaWN0X2NvbF9nZXRfY2x1c3RfcG9zKGNvbCwgY2x1c3RfaW5kZXgpKTsKIAotCQkJY29uc3Qg dXBkX2ZpZWxkX3QqCXVwZF9maWVsZAotCQkJCT0gdXBkX2dldF9udGhfZmllbGQodXBkYXRlLCBq KTsKKwkJaWYgKHVwZF9maWVsZCA9PSBOVUxMKSB7CisJCQljb250aW51ZTsKKwkJfQogCi0JCQkv KiBOb3RlIHRoYXQgaWYgdGhlIGluZGV4IGZpZWxkIGlzIGEgY29sdW1uIHByZWZpeAotCQkJdGhl biBpdCBtYXkgYmUgdGhhdCByb3cgZG9lcyBub3QgY29udGFpbiBhbiBleHRlcm5hbGx5Ci0JCQlz dG9yZWQgcGFydCBvZiB0aGUgY29sdW1uIHZhbHVlLCBhbmQgd2UgY2Fubm90IGNvbXBhcmUKLQkJ CXRoZSBkYXRhcyAqLworCQlpZiAocm93ID09IE5VTEwpIHsKKwkJCXV0X2FkKGV4dCA9PSBOVUxM KTsKKwkJCXJldHVybihUUlVFKTsKKwkJfQogCi0JCQlpZiAoY29sX3BvcyA9PSB1cGRfZmllbGQt PmZpZWxkX25vCi0JCQkgICAgJiYgKHJvdyA9PSBOVUxMCi0JCQkJfHwgaW5kX2ZpZWxkLT5wcmVm aXhfbGVuID4gMAotCQkJCXx8ICFkZmllbGRfZGF0YXNfYXJlX2JpbmFyeV9lcXVhbCgKLQkJCQkJ ZHR1cGxlX2dldF9udGhfZmllbGQocm93LCBjb2xfbm8pLAotCQkJCQkmKHVwZF9maWVsZC0+bmV3 X3ZhbCkpKSkgeworCQlkZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZChyb3csIGNvbF9ubyk7 CiAKLQkJCQlyZXR1cm4oVFJVRSk7CisJCS8qIFRoaXMgdHJlYXRtZW50IG9mIGNvbHVtbiBwcmVm aXggaW5kZXhlcyBpcyBsb29zZWx5CisJCWJhc2VkIG9uIHJvd19idWlsZF9pbmRleF9lbnRyeSgp LiAqLworCisJCWlmIChVTklWX0xJS0VMWShpbmRfZmllbGQtPnByZWZpeF9sZW4gPT0gMCkKKwkJ ICAgIHx8IGRmaWVsZF9pc19udWxsKGRmaWVsZCkpIHsKKwkJCS8qIGRvIG5vdGhpbmcgc3BlY2lh bCAqLworCQl9IGVsc2UgaWYgKFVOSVZfTElLRUxZX05VTEwoZXh0KSkgeworCQkJLyogU2VlIGlm IHRoZSBjb2x1bW4gaXMgc3RvcmVkIGV4dGVybmFsbHkuICovCisJCQlidWYgPSByb3dfZXh0X2xv b2t1cChleHQsIGNvbF9ubywgJmRmaWVsZF9sZW4pOworCisJCQl1dF9hZChjb2wtPm9yZF9wYXJ0 KTsKKworCQkJaWYgKFVOSVZfTElLRUxZX05VTEwoYnVmKSkgeworCQkJCWlmIChVTklWX1VOTElL RUxZKGJ1ZiA9PSBmaWVsZF9yZWZfemVybykpIHsKKwkJCQkJLyogVGhpcyBzaG91bGQgbmV2ZXIg aGFwcGVuLCBidXQKKwkJCQkJd2UgdHJ5IHRvIGZhaWwgc2FmZSBoZXJlLiAqLworCQkJCQl1dF9h ZCgwKTsKKwkJCQkJcmV0dXJuKFRSVUUpOworCQkJCX0KKworCQkJCWdvdG8gY29weV9kZmllbGQ7 CiAJCQl9CisJCX0gZWxzZSBpZiAoZGZpZWxkX2lzX2V4dChkZmllbGQpKSB7CisJCQlkZmllbGRf bGVuID0gZGZpZWxkX2dldF9sZW4oZGZpZWxkKTsKKwkJCXV0X2EoZGZpZWxkX2xlbiA+IEJUUl9F WFRFUk5fRklFTERfUkVGX1NJWkUpOworCQkJZGZpZWxkX2xlbiAtPSBCVFJfRVhURVJOX0ZJRUxE X1JFRl9TSVpFOworCQkJdXRfYShkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KQorCQkJICAgICB8 fCBpbmRfZmllbGQtPnByZWZpeF9sZW4gPD0gZGZpZWxkX2xlbik7CisJCQlidWYgPSBkZmllbGRf Z2V0X2RhdGEoZGZpZWxkKTsKK2NvcHlfZGZpZWxkOgorCQkJdXRfYShkZmllbGRfbGVuID4gMCk7 CisJCQlkZmllbGRfY29weSgmZGZpZWxkX2V4dCwgZGZpZWxkKTsKKwkJCWRmaWVsZF9zZXRfZGF0 YSgmZGZpZWxkX2V4dCwgYnVmLCBkZmllbGRfbGVuKTsKKwkJCWRmaWVsZCA9ICZkZmllbGRfZXh0 OworCQl9CisKKwkJaWYgKCFkZmllbGRfZGF0YXNfYXJlX2JpbmFyeV9lcXVhbCgKKwkJCSAgICBk ZmllbGQsICZ1cGRfZmllbGQtPm5ld192YWwsCisJCQkgICAgaW5kX2ZpZWxkLT5wcmVmaXhfbGVu KSkgeworCisJCQlyZXR1cm4oVFJVRSk7CiAJCX0KIAl9CiAKQEAgLTEzMjcsNyArMTM2Nyw3IEBA IHJvd191cGRfY2hhbmdlc19maXJzdF9maWVsZHNfYmluYXJ5KAogCQkJaWYgKGNvbF9wb3MgPT0g dXBkX2ZpZWxkLT5maWVsZF9ubwogCQkJICAgICYmICFkZmllbGRfZGF0YXNfYXJlX2JpbmFyeV9l cXVhbCgKIAkJCQkgICAgZHR1cGxlX2dldF9udGhfZmllbGQoZW50cnksIGkpLAotCQkJCSAgICAm KHVwZF9maWVsZC0+bmV3X3ZhbCkpKSB7CisJCQkJICAgICZ1cGRfZmllbGQtPm5ld192YWwsIDAp KSB7CiAKIAkJCQlyZXR1cm4oVFJVRSk7CiAJCQl9CkBAIC0xNTk2LDE0ICsxNjM2LDk5IEBAIHJv d191cGRfc2VjX3N0ZXAoCiAJdXRfYWQoIWRpY3RfaW5kZXhfaXNfY2x1c3Qobm9kZS0+aW5kZXgp KTsKIAogCWlmIChub2RlLT5zdGF0ZSA9PSBVUERfTk9ERV9VUERBVEVfQUxMX1NFQwotCSAgICB8 fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShub2RlLT5yb3csIG5vZGUtPmluZGV4 LAotCQkJCQkJbm9kZS0+dXBkYXRlKSkgeworCSAgICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2Zp ZWxkX2JpbmFyeShub2RlLT5yb3csIG5vZGUtPmV4dCwKKwkJCQkJCW5vZGUtPmluZGV4LCBub2Rl LT51cGRhdGUpKSB7CiAJCXJldHVybihyb3dfdXBkX3NlY19pbmRleF9lbnRyeShub2RlLCB0aHIp KTsKIAl9CiAKIAlyZXR1cm4oREJfU1VDQ0VTUyk7CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisj IGRlZmluZSByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRfaW5oZXJpdChyZWMsb2Zmc2V0cyxl bnRyeSx1cGRhdGUpCVwKKwlyb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRfaW5oZXJpdF9mdW5j KHJlYyxvZmZzZXRzLGVudHJ5LHVwZGF0ZSkKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMgZGVm aW5lIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0KHJlYyxvZmZzZXRzLGVudHJ5 LHVwZGF0ZSkJXAorCXJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0X2Z1bmMoZW50 cnksdXBkYXRlKQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorTWFy ayBub24tdXBkYXRlZCBvZmYtcGFnZSBjb2x1bW5zIGluaGVyaXRlZCB3aGVuIHRoZSBwcmltYXJ5 IGtleSBpcwordXBkYXRlZC4gV2UgbXVzdCBtYXJrIHRoZW0gYXMgaW5oZXJpdGVkIGluIGVudHJ5 LCBzbyB0aGF0IHRoZXkgYXJlIG5vdAorZnJlZWQgaW4gYSByb2xsYmFjay4gQSBsaW1pdGVkIHZl cnNpb24gb2YgdGhpcyBmdW5jdGlvbiB1c2VkIHRvIGJlCitjYWxsZWQgYnRyX2N1cl9tYXJrX2R0 dXBsZV9pbmhlcml0ZWRfZXh0ZXJuKCkuCitAcmV0dXJuIFRSVUUgaWYgYW55IGNvbHVtbnMgd2Vy ZSBpbmhlcml0ZWQgKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQp KQoraWJvb2wKK3Jvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0X2Z1bmMoCisvKj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworI2lmZGVmIFVOSVZfREVCVUcK Kwljb25zdCByZWNfdCoJcmVjLAkvKiE8IGluOiBvbGQgcmVjb3JkLCBvciBOVUxMICovCisJY29u c3QgdWxpbnQqCW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzZXRzKHJlYyksIG9yIE5VTEwg Ki8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluL291 dDogdXBkYXRlZCBlbnRyeSB0byBiZQorCQkJCWluc2VydGVkIGludG8gdGhlIGNsdXN0ZXJlZCBp bmRleCAqLworCWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgKi8K K3sKKwlpYm9vbAlpbmhlcml0CT0gRkFMU0U7CisJdWxpbnQJaTsKKworCXV0X2FkKCFyZWMgPT0g IW9mZnNldHMpOworCXV0X2FkKCFyZWMgfHwgcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgZHR1cGxlX2dldF9uX2ZpZWxkcyhlbnRyeSk7IGkrKykgewor CQlkZmllbGRfdCoJZGZpZWxkCT0gZHR1cGxlX2dldF9udGhfZmllbGQoZW50cnksIGkpOworCQli eXRlKgkJZGF0YTsKKwkJdWxpbnQJCWxlbjsKKworCQl1dF9hZCghb2Zmc2V0cworCQkgICAgICB8 fCAhcmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKQorCQkgICAgICA9PSAhZGZpZWxkX2lz X2V4dChkZmllbGQpCisJCSAgICAgIHx8IHVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8odXBkYXRl LCBpKSk7CisJCWlmICghZGZpZWxkX2lzX2V4dChkZmllbGQpCisJCSAgICB8fCB1cGRfZ2V0X2Zp ZWxkX2J5X2ZpZWxkX25vKHVwZGF0ZSwgaSkpIHsKKwkJCWNvbnRpbnVlOworCQl9CisKKyNpZmRl ZiBVTklWX0RFQlVHCisJCWlmIChVTklWX0xJS0VMWShyZWMgIT0gTlVMTCkpIHsKKwkJCWNvbnN0 IGJ5dGUqIHJlY19kYXRhCisJCQkJPSByZWNfZ2V0X250aF9maWVsZChyZWMsIG9mZnNldHMsIGks ICZsZW4pOworCQkJdXRfYWQobGVuID09IGRmaWVsZF9nZXRfbGVuKGRmaWVsZCkpOworCQkJdXRf YWQobGVuICE9IFVOSVZfU1FMX05VTEwpOworCQkJdXRfYWQobGVuID49IEJUUl9FWFRFUk5fRklF TERfUkVGX1NJWkUpOworCisJCQlyZWNfZGF0YSArPSBsZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JF Rl9TSVpFOworCisJCQkvKiBUaGUgcG9pbnRlciBtdXN0IG5vdCBiZSB6ZXJvLiAqLworCQkJdXRf YWQobWVtY21wKHJlY19kYXRhLCBmaWVsZF9yZWZfemVybywKKwkJCQkgICAgIEJUUl9FWFRFUk5f RklFTERfUkVGX1NJWkUpKTsKKwkJCS8qIFRoZSBCTE9CIG11c3QgYmUgb3duZWQuICovCisJCQl1 dF9hZCghKHJlY19kYXRhW0JUUl9FWFRFUk5fTEVOXQorCQkJCSYgQlRSX0VYVEVSTl9PV05FUl9G TEFHKSk7CisJCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisKKwkJbGVuID0gZGZpZWxkX2dl dF9sZW4oZGZpZWxkKTsKKwkJdXRfYShsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCXV0X2EobGVu ID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCQlkYXRhID0gZGZpZWxkX2dldF9kYXRh KGRmaWVsZCkgKyBsZW4KKwkJCS0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKKwkJLyogVGhl IHBvaW50ZXIgbXVzdCBub3QgYmUgemVyby4gKi8KKwkJdXRfYShtZW1jbXAoZGF0YSwgZmllbGRf cmVmX3plcm8sIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpKTsKKwkJLyogVGhlIEJMT0IgbXVz dCBiZSBvd25lZC4gKi8KKwkJdXRfYSghKGRhdGFbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVS Tl9PV05FUl9GTEFHKSk7CisKKwkJZGF0YVtCVFJfRVhURVJOX0xFTl0gfD0gQlRSX0VYVEVSTl9J TkhFUklURURfRkxBRzsKKwkJLyogVGhlIEJUUl9FWFRFUk5fSU5IRVJJVEVEX0ZMQUcgb25seSBt YXR0ZXJzIGluCisJCXJvbGxiYWNrLiBQdXJnZSB3aWxsIGFsd2F5cyBmcmVlIHRoZSBleHRlcm4g ZmllbGRzIG9mCisJCWEgZGVsZXRlLW1hcmtlZCByb3cuICovCisKKwkJaW5oZXJpdCA9IFRSVUU7 CisJfQorCisJcmV0dXJuKGluaGVyaXQpOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBNYXJrcyB0aGUgY2x1c3Rl cmVkIGluZGV4IHJlY29yZCBkZWxldGVkIGFuZCBpbnNlcnRzIHRoZSB1cGRhdGVkIHZlcnNpb24K IG9mIHRoZSByZWNvcmQgdG8gdGhlIGluZGV4LiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2Vk IHdoZW4gdGhlIG9yZGVyaW5nCkBAIC0xNjIyLDE0ICsxNzQ3LDE2IEBAIHJvd191cGRfY2x1c3Rf cmVjX2J5X2luc2VydCgKIAkJCQlhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgKi8KIAltdHJfdCoJ CW10cikJLyohPCBpbi9vdXQ6IG10cjsgZ2V0cyBjb21taXR0ZWQgaGVyZSAqLwogewotCW1lbV9o ZWFwX3QqCWhlYXAJPSBOVUxMOworCW1lbV9oZWFwX3QqCWhlYXA7CiAJYnRyX3BjdXJfdCoJcGN1 cjsKIAlidHJfY3VyX3QqCWJ0cl9jdXI7CiAJdHJ4X3QqCQl0cng7CiAJZGljdF90YWJsZV90Kgl0 YWJsZTsKIAlkdHVwbGVfdCoJZW50cnk7CiAJdWxpbnQJCWVycjsKLQlpYm9vbAkJY2hhbmdlX293 bmVyc2hpcCA9IEZBTFNFOworCWlib29sCQljaGFuZ2Vfb3duZXJzaGlwCT0gRkFMU0U7CisJcmVj X3QqCQlyZWM7CisJdWxpbnQqCQlvZmZzZXRzCQkJPSBOVUxMOwogCiAJdXRfYWQobm9kZSk7CiAJ dXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwpAQCAtMTYzOSwzNCArMTc2Niw2NCBA QCByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoCiAJcGN1ciA9IG5vZGUtPnBjdXI7CiAJYnRy X2N1cgk9IGJ0cl9wY3VyX2dldF9idHJfY3VyKHBjdXIpOwogCi0JaWYgKG5vZGUtPnN0YXRlICE9 IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQpIHsKLQkJcmVjX3QqCQlyZWM7Ci0JCWRpY3RfaW5k ZXhfdCoJaW5kZXg7Ci0JCXVsaW50CQlvZmZzZXRzX1tSRUNfT0ZGU19OT1JNQUxfU0laRV07Ci0J CXVsaW50KgkJb2Zmc2V0czsKLQkJcmVjX29mZnNfaW5pdChvZmZzZXRzXyk7CisJaGVhcCA9IG1l bV9oZWFwX2NyZWF0ZSgxMDAwKTsKKworCWVudHJ5ID0gcm93X2J1aWxkX2luZGV4X2VudHJ5KG5v ZGUtPnVwZF9yb3csIG5vZGUtPnVwZF9leHQsCisJCQkJICAgICAgaW5kZXgsIGhlYXApOworCXV0 X2EoZW50cnkpOworCisJcm93X3VwZF9pbmRleF9lbnRyeV9zeXNfZmllbGQoZW50cnksIGluZGV4 LCBEQVRBX1RSWF9JRCwgdHJ4LT5pZCk7CiAKLQkJZXJyID0gYnRyX2N1cl9kZWxfbWFya19zZXRf Y2x1c3RfcmVjKEJUUl9OT19MT0NLSU5HX0ZMQUcsCi0JCQkJCQkgICAgIGJ0cl9jdXIsIFRSVUUs IHRociwgbXRyKTsKKwlzd2l0Y2ggKG5vZGUtPnN0YXRlKSB7CisJZGVmYXVsdDoKKwkJdXRfZXJy b3I7CisJY2FzZSBVUERfTk9ERV9JTlNFUlRfQkxPQjoKKwkJLyogQSBsb2NrIHdhaXQgb2NjdXJy ZWQgaW4gcm93X2luc19pbmRleF9lbnRyeSgpIGluCisJCXRoZSBwcmV2aW91cyBpbnZvY2F0aW9u IG9mIHRoaXMgZnVuY3Rpb24uIE1hcmsgdGhlCisJCW9mZi1wYWdlIGNvbHVtbnMgaW4gdGhlIGVu dHJ5IGluaGVyaXRlZC4gKi8KKworCQljaGFuZ2Vfb3duZXJzaGlwID0gcm93X3VwZF9jbHVzdF9y ZWNfYnlfaW5zZXJ0X2luaGVyaXQoCisJCQlOVUxMLCBOVUxMLCBlbnRyeSwgbm9kZS0+dXBkYXRl KTsKKwkJdXRfYShjaGFuZ2Vfb3duZXJzaGlwKTsKKwkJLyogZmFsbCB0aHJvdWdoICovCisJY2Fz ZSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEOgorCQkvKiBBIGxvY2sgd2FpdCBvY2N1cnJlZCBp biByb3dfaW5zX2luZGV4X2VudHJ5KCkgaW4KKwkJdGhlIHByZXZpb3VzIGludm9jYXRpb24gb2Yg dGhpcyBmdW5jdGlvbi4gKi8KKwkJYnJlYWs7CisJY2FzZSBVUERfTk9ERV9VUERBVEVfQ0xVU1RF UkVEOgorCQkvKiBUaGlzIGlzIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHRoZSBmdW5jdGlvbiB3 aGVyZQorCQl3ZSB1cGRhdGUgdGhlIHByaW1hcnkga2V5LiAgRGVsZXRlLW1hcmsgdGhlIG9sZCBy ZWNvcmQKKwkJaW4gdGhlIGNsdXN0ZXJlZCBpbmRleCBhbmQgcHJlcGFyZSB0byBpbnNlcnQgYSBu ZXcgZW50cnkuICovCisJCXJlYyA9IGJ0cl9jdXJfZ2V0X3JlYyhidHJfY3VyKTsKKwkJb2Zmc2V0 cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBOVUxMLAorCQkJCQkgIFVMSU5UX1VOREVG SU5FRCwgJmhlYXApOworCQl1dF9hZChwYWdlX3JlY19pc191c2VyX3JlYyhyZWMpKTsKKworCQll cnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCisJCQlCVFJfTk9fTE9DS0lOR19G TEFHLCBidHJfY3VyX2dldF9ibG9jayhidHJfY3VyKSwKKwkJCXJlYywgaW5kZXgsIG9mZnNldHMs IFRSVUUsIHRociwgbXRyKTsKIAkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CitlcnJfZXhpdDoK IAkJCW10cl9jb21taXQobXRyKTsKKwkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJCQlyZXR1cm4o ZXJyKTsKIAkJfQogCi0JCS8qIE1hcmsgYXMgbm90LW93bmVkIHRoZSBleHRlcm5hbGx5IHN0b3Jl ZCBmaWVsZHMgd2hpY2ggdGhlIG5ldwotCQlyb3cgaW5oZXJpdHMgZnJvbSB0aGUgZGVsZXRlIG1h cmtlZCByZWNvcmQ6IHB1cmdlIHNob3VsZCBub3QKLQkJZnJlZSB0aG9zZSBleHRlcm5hbGx5IHN0 b3JlZCBmaWVsZHMgZXZlbiBpZiB0aGUgZGVsZXRlIG1hcmtlZAotCQlyZWNvcmQgaXMgcmVtb3Zl ZCBmcm9tIHRoZSBpbmRleCB0cmVlLCBvciB1cGRhdGVkLiAqLworCQkvKiBJZiB0aGUgdGhlIG5l dyByb3cgaW5oZXJpdHMgZXh0ZXJuYWxseSBzdG9yZWQKKwkJZmllbGRzIChvZmYtcGFnZSBjb2x1 bW5zIGEuay5hLiBCTE9CcykgZnJvbSB0aGUKKwkJZGVsZXRlLW1hcmtlZCBvbGQgcmVjb3JkLCBt YXJrIHRoZW0gZGlzb3duZWQgYnkgdGhlCisJCW9sZCByZWNvcmQgYW5kIG93bmVkIGJ5IHRoZSBu ZXcgZW50cnkuICovCisKKwkJaWYgKHJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykpIHsKKwkJ CWNoYW5nZV9vd25lcnNoaXAgPSByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRfaW5oZXJpdCgK KwkJCQlyZWMsIG9mZnNldHMsIGVudHJ5LCBub2RlLT51cGRhdGUpOwogCi0JCXJlYyA9IGJ0cl9j dXJfZ2V0X3JlYyhidHJfY3VyKTsKLQkJaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRl eCh0YWJsZSk7Ci0JCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0 c18sCi0JCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7Ci0JCWNoYW5nZV9vd25lcnNoaXAg PSBidHJfY3VyX21hcmtfZXh0ZXJuX2luaGVyaXRlZF9maWVsZHMoCi0JCQlidHJfY3VyX2dldF9w YWdlX3ppcChidHJfY3VyKSwKLQkJCXJlYywgaW5kZXgsIG9mZnNldHMsIG5vZGUtPnVwZGF0ZSwg bXRyKTsKLQkJaWYgKHJlZmVyZW5jZWQpIHsKKwkJCWlmIChjaGFuZ2Vfb3duZXJzaGlwKSB7CisJ CQkJYnRyX3BjdXJfc3RvcmVfcG9zaXRpb24ocGN1ciwgbXRyKTsKKwkJCX0KKwkJfQogCisJCWlm IChyZWZlcmVuY2VkKSB7CiAJCQkvKiBOT1RFIHRoYXQgdGhlIGZvbGxvd2luZyBjYWxsIGxvc2Vz CiAJCQl0aGUgcG9zaXRpb24gb2YgcGN1ciAhICovCiAKQEAgLTE2NzQsNDggKzE4MzEsNDkgQEAg cm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KAogCQkJCW5vZGUsIHBjdXIsIHRhYmxlLCBpbmRl eCwgb2Zmc2V0cywgdGhyLCBtdHIpOwogCiAJCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQot CQkJCW10cl9jb21taXQobXRyKTsKLQotCQkJCWlmIChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7 Ci0JCQkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7Ci0JCQkJfQotCi0JCQkJcmV0dXJuKGVycik7CisJ CQkJZ290byBlcnJfZXhpdDsKIAkJCX0KIAkJfQogCX0KIAogCW10cl9jb21taXQobXRyKTsKIAot CWlmICghaGVhcCkgewotCQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDUwMCk7Ci0JfQotCW5vZGUt PnN0YXRlID0gVVBEX05PREVfSU5TRVJUX0NMVVNURVJFRDsKLQotCWVudHJ5ID0gcm93X2J1aWxk X2luZGV4X2VudHJ5KG5vZGUtPnVwZF9yb3csIG5vZGUtPnVwZF9leHQsCi0JCQkJICAgICAgaW5k ZXgsIGhlYXApOwotCXV0X2EoZW50cnkpOworCWVyciA9IHJvd19pbnNfaW5kZXhfZW50cnkoaW5k ZXgsIGVudHJ5LAorCQkJCSAgbm9kZS0+dXBkX2V4dCA/IG5vZGUtPnVwZF9leHQtPm5fZXh0IDog MCwKKwkJCQkgIFRSVUUsIHRocik7CisJbm9kZS0+c3RhdGUgPSBjaGFuZ2Vfb3duZXJzaGlwCisJ CT8gVVBEX05PREVfSU5TRVJUX0JMT0IKKwkJOiBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEOwor CisJaWYgKGVyciA9PSBEQl9TVUNDRVNTICYmIGNoYW5nZV9vd25lcnNoaXApIHsKKwkJLyogTWFy ayB0aGUgbm9uLXVwZGF0ZWQgZmllbGRzIGRpc293bmVkIGJ5IHRoZSBvbGQgcmVjb3JkLiAqLwor CisJCS8qIE5PVEU6IHRoaXMgdHJhbnNhY3Rpb24gaGFzIGFuIHgtbG9jayBvbiB0aGUgcmVjb3Jk CisJCWFuZCB0aGVyZWZvcmUgb3RoZXIgdHJhbnNhY3Rpb25zIGNhbm5vdCBtb2RpZnkgdGhlCisJ CXJlY29yZCB3aGVuIHdlIGhhdmUgbm8gbGF0Y2ggb24gdGhlIHBhZ2UuIEluIGFkZGl0aW9uLAor CQl3ZSBhc3N1bWUgdGhhdCBvdGhlciBxdWVyeSB0aHJlYWRzIG9mIHRoZSBzYW1lCisJCXRyYW5z YWN0aW9uIGRvIG5vdCBtb2RpZnkgdGhlIHJlY29yZCBpbiB0aGUgbWVhbnRpbWUuCisJCVRoZXJl Zm9yZSB3ZSBjYW4gYXNzZXJ0IHRoYXQgdGhlIHJlc3RvcmF0aW9uIG9mIHRoZQorCQljdXJzb3Ig c3VjY2VlZHMuICovCiAKLQlyb3dfdXBkX2luZGV4X2VudHJ5X3N5c19maWVsZChlbnRyeSwgaW5k ZXgsIERBVEFfVFJYX0lELCB0cngtPmlkKTsKKwkJbXRyX3N0YXJ0KG10cik7CiAKLQlpZiAoY2hh bmdlX293bmVyc2hpcCkgewotCQkvKiBJZiB3ZSByZXR1cm4gZnJvbSBhIGxvY2sgd2FpdCwgZm9y IGV4YW1wbGUsIHdlIG1heSBoYXZlCi0JCWV4dGVybiBmaWVsZHMgbWFya2VkIGFzIG5vdC1vd25l ZCBpbiBlbnRyeSAobWFya2VkIGluIHRoZQotCQlpZi1icmFuY2ggYWJvdmUpLiBXZSBtdXN0IHVu bWFyayB0aGVtLCB0YWtlIHRoZSBvd25lcnNoaXAKLQkJYmFjay4gKi8KKwkJaWYgKCFidHJfcGN1 cl9yZXN0b3JlX3Bvc2l0aW9uKEJUUl9NT0RJRllfTEVBRiwgcGN1ciwgbXRyKSkgeworCQkJdXRf ZXJyb3I7CisJCX0KIAotCQlidHJfY3VyX3VubWFya19kdHVwbGVfZXh0ZXJuX2ZpZWxkcyhlbnRy eSk7CisJCXJlYyA9IGJ0cl9jdXJfZ2V0X3JlYyhidHJfY3VyKTsKKwkJb2Zmc2V0cyA9IHJlY19n ZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzLAorCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwg JmhlYXApOworCQl1dF9hZChwYWdlX3JlY19pc191c2VyX3JlYyhyZWMpKTsKIAotCQkvKiBXZSBt dXN0IG1hcmsgbm9uLXVwZGF0ZWQgZXh0ZXJuIGZpZWxkcyBpbiBlbnRyeSBhcwotCQlpbmhlcml0 ZWQsIHNvIHRoYXQgYSBwb3NzaWJsZSByb2xsYmFjayB3aWxsIG5vdCBmcmVlIHRoZW0uICovCisJ CWJ0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9maWVsZHMoCisJCQlidHJfY3VyX2dldF9wYWdlX3pp cChidHJfY3VyKSwKKwkJCXJlYywgaW5kZXgsIG9mZnNldHMsIG5vZGUtPnVwZGF0ZSwgbXRyKTsK IAotCQlidHJfY3VyX21hcmtfZHR1cGxlX2luaGVyaXRlZF9leHRlcm4oZW50cnksIG5vZGUtPnVw ZGF0ZSk7CisJCW10cl9jb21taXQobXRyKTsKIAl9CiAKLQllcnIgPSByb3dfaW5zX2luZGV4X2Vu dHJ5KGluZGV4LCBlbnRyeSwKLQkJCQkgIG5vZGUtPnVwZF9leHQgPyBub2RlLT51cGRfZXh0LT5u X2V4dCA6IDAsCi0JCQkJICBUUlVFLCB0aHIpOwogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAKIAly ZXR1cm4oZXJyKTsKQEAgLTE4NjAsOCArMjAxOCw5IEBAIHJvd191cGRfZGVsX21hcmtfY2x1c3Rf cmVjKAogCS8qIE1hcmsgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgZGVsZXRlZDsgd2UgZG8g bm90IGhhdmUgdG8gY2hlY2sKIAlsb2NrcywgYmVjYXVzZSB3ZSBhc3N1bWUgdGhhdCB3ZSBoYXZl IGFuIHgtbG9jayBvbiB0aGUgcmVjb3JkICovCiAKLQllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3Nl dF9jbHVzdF9yZWMoQlRSX05PX0xPQ0tJTkdfRkxBRywKLQkJCQkJICAgICBidHJfY3VyLCBUUlVF LCB0aHIsIG10cik7CisJZXJyID0gYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAorCQlC VFJfTk9fTE9DS0lOR19GTEFHLCBidHJfY3VyX2dldF9ibG9jayhidHJfY3VyKSwKKwkJYnRyX2N1 cl9nZXRfcmVjKGJ0cl9jdXIpLCBpbmRleCwgb2Zmc2V0cywgVFJVRSwgdGhyLCBtdHIpOwogCWlm IChlcnIgPT0gREJfU1VDQ0VTUyAmJiByZWZlcmVuY2VkKSB7CiAJCS8qIE5PVEUgdGhhdCB0aGUg Zm9sbG93aW5nIGNhbGwgbG9zZXMgdGhlIHBvc2l0aW9uIG9mIHBjdXIgISAqLwogCkBAIC0yMDA2 LDcgKzIxNjUsOCBAQCBleGl0X2Z1bmM6CiAKIAlyb3dfdXBkX3N0b3JlX3Jvdyhub2RlKTsKIAot CWlmIChyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShub2RlLT5yb3csIGluZGV4LCBu b2RlLT51cGRhdGUpKSB7CisJaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5v ZGUtPnJvdywgbm9kZS0+ZXh0LCBpbmRleCwKKwkJCQkJICAgICBub2RlLT51cGRhdGUpKSB7CiAK IAkJLyogVXBkYXRlIGNhdXNlcyBhbiBvcmRlcmluZyBmaWVsZCAob3JkZXJpbmcgZmllbGRzIHdp dGhpbgogCQl0aGUgQi10cmVlKSBvZiB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCB0byBjaGFu Z2U6IHBlcmZvcm0KQEAgLTIwNzYsNyArMjIzNiw4IEBAIHJvd191cGQoCiAJfQogCiAJaWYgKG5v ZGUtPnN0YXRlID09IFVQRF9OT0RFX1VQREFURV9DTFVTVEVSRUQKLQkgICAgfHwgbm9kZS0+c3Rh dGUgPT0gVVBEX05PREVfSU5TRVJUX0NMVVNURVJFRCkgeworCSAgICB8fCBub2RlLT5zdGF0ZSA9 PSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVECisJICAgIHx8IG5vZGUtPnN0YXRlID09IFVQRF9O T0RFX0lOU0VSVF9CTE9CKSB7CiAKIAkJbG9nX2ZyZWVfY2hlY2soKTsKIAkJZXJyID0gcm93X3Vw ZF9jbHVzdF9zdGVwKG5vZGUsIHRocik7Cgo= --===============1813215732== 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.6-innodb/ # testament_sha1: 3fa94d1e381ff2eb1cf510da5e1fe0a0a18b3700 # timestamp: 2010-12-21 14:52:08 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: jimmy.yang@stripped\ # lcm5j4yxblbpwyl5 # # Begin bundle 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 --===============1813215732==--