From: marko.makela Date: June 2 2010 10:26am Subject: bzr commit into mysql-5.1-innodb branch (marko.makela:3494) Bug#53674 List-Archive: http://lists.mysql.com/commits/109927 X-Bug: 53674 Message-Id: <201006021027.o52A5h6k006398@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0634707778==" --===============0634707778== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjEtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMTk0MC02MHgz MnhpaXZ0cWo5dmExCgogMzQ5NCBNYXJrbyBNw6RrZWzDpAkyMDEwLTA2LTAyCiAgICAgIEJ1ZyM1 MzY3NDogSW5ub0RCOiBFcnJvcjogdW5sb2NrIHJvdyBjb3VsZCBub3QgZmluZCBhIDQgbW9kZSBs b2NrIG9uIHRoZSByZWNvcmQKICAgICAgCiAgICAgIEluIHNlbWktY29uc2lzdGVudCByZWFkLCBv bmx5IHVubG9jayBmcmVzaGx5IGxvY2tlZCBub24tbWF0Y2hpbmcgcmVjb3Jkcy4KICAgICAgCiAg ICAgIERlZmluZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMgZm9yIGluZGljYXRpbmcgYSBzdWNjZXNz ZnVsIG9wZXJhdGlvbgogICAgICB3aGVyZSBhIHJlY29yZCBsb2NrIHdhcyBjcmVhdGVkLgogICAg ICAKICAgICAgbG9ja19yZWNfbG9ja19mYXN0KCk6IFJldHVybiBMT0NLX1JFQ19TVUNDRVNTLAog ICAgICBMT0NLX1JFQ19TVUNDRVNTX0NSRUFURUQsIG9yIExPQ0tfUkVDX0ZBSUwgaW5zdGVhZCBv ZiBUUlVFL0ZBTFNFLgogICAgICAKICAgICAgbG9ja19zZWNfcmVjX3JlYWRfY2hlY2tfYW5kX2xv Y2soKSwKICAgICAgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygpLCBsb2NrX3Jl Y19lbnF1ZXVlX3dhaXRpbmcoKSwKICAgICAgbG9ja19yZWNfbG9ja19zbG93KCksIGxvY2tfcmVj X2xvY2soKSwgcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKCksCiAgICAgIHJvd19pbnNfc2V0 X2V4Y2x1c2l2ZV9yZWNfbG9jaygpLCBzZWxfc2V0X3JlY19sb2NrKCksCiAgICAgIHJvd19zZWxf Z2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoKTogUmV0dXJuIERCX1NVQ0NFU1NfTE9DS0VEX1JFQyBp ZiBhCiAgICAgIG5ldyByZWNvcmQgbG9jayB3YXMgY3JlYXRlZC4gQWRqdXN0IGNhbGxlcnMuCiAg ICAgIAogICAgICByb3dfdW5sb2NrX2Zvcl9teXNxbCgpOiBDb3JyZWN0IHRoZSBmdW5jdGlvbiBk b2N1bWVudGF0aW9uLgogICAgICAKICAgICAgcm93X3ByZWJ1aWx0X3Q6Om5ld19yZWNfbG9ja3M6 IENvcnJlY3QgdGhlIGRvY3VtZW50YXRpb24uCgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzUzNjc0LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1 aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzUzNjc0LnRlc3QKICAgIG1vZGlmaWVkOgogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGIwZXJyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2xvY2swbG9jay5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlz cWwuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBt eXNxbC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwo9PT0gYWRkZWQgZmls ZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVnNTM2NzQucmVzdWx0JwotLS0g YS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1MzY3NC5yZXN1bHQJMTk3MC0w MS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9k Yl9idWc1MzY3NC5yZXN1bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIx MDI2MzctMnRkb3Y3amd4NjEzdnJycwpAQCAtMCwwICsxLDExIEBACitjcmVhdGUgdGFibGUgYnVn NTM2NzQoYSBpbnQpZW5naW5lPWlubm9kYjsKK2luc2VydCBpbnRvIGJ1ZzUzNjc0IHZhbHVlcyAo MSksKDIpOworc3RhcnQgdHJhbnNhY3Rpb247CitzZWxlY3QgKiBmcm9tIGJ1ZzUzNjc0IGZvciB1 cGRhdGU7CithCisxCisyCitzZWxlY3QgKiBmcm9tIGJ1ZzUzNjc0IHdoZXJlIGE9KHNlbGVjdCBh IGZyb20gYnVnNTM2NzQgd2hlcmUgYSA+IDEpOworYQorMgorZHJvcCB0YWJsZSBidWc1MzY3NDsK Cj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3 NC1tYXN0ZXIub3B0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1 MzY3NC1tYXN0ZXIub3B0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVz dC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM2NzQtbWFzdGVyLm9wdAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMjYzNy0ydGRvdjdqZ3g2MTN2cnJzCkBAIC0wLDAg KzEgQEAKKy0tbG9nLWJpbiAtLWlubm9kYi1sb2Nrcy11bnNhZmUtZm9yLWJpbmxvZyAtLWJpbmxv Zy1mb3JtYXQ9bWl4ZWQKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90 L2lubm9kYl9idWc1MzY3NC50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lu bm9kYl9idWc1MzY3NC50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM2NzQudGVzdAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMjYzNy0ydGRvdjdqZ3g2MTN2cnJzCkBAIC0wLDAgKzEs OCBAQAorLS0gc291cmNlIGluY2x1ZGUvaGF2ZV9pbm5vZGIuaW5jCisKK2NyZWF0ZSB0YWJsZSBi dWc1MzY3NChhIGludCllbmdpbmU9aW5ub2RiOworaW5zZXJ0IGludG8gYnVnNTM2NzQgdmFsdWVz ICgxKSwoMik7CitzdGFydCB0cmFuc2FjdGlvbjsKK3NlbGVjdCAqIGZyb20gYnVnNTM2NzQgZm9y IHVwZGF0ZTsKK3NlbGVjdCAqIGZyb20gYnVnNTM2NzQgd2hlcmUgYT0oc2VsZWN0IGEgZnJvbSBi dWc1MzY3NCB3aGVyZSBhID4gMSk7Citkcm9wIHRhYmxlIGJ1ZzUzNjc0OwoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYjBlcnIuaCcKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2RiMGVyci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTAwNjAyMTAxOTQwLTYweDMyeGlpdnRxajl2YTEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2RiMGVyci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAyNjM3 LTJ0ZG92N2pneDYxM3ZycnMKQEAgLTEwLDYgKzEwLDggQEAgQ3JlYXRlZCA1LzI0LzE5OTYgSGVp a2tpIFR1dXJpCiAjZGVmaW5lIGRiMGVycl9oCiAKIAorI2RlZmluZSBEQl9TVUNDRVNTX0xPQ0tF RF9SRUMJOQkvKiBsaWtlIERCX1NVQ0NFU1MsIGJ1dCBhIG5ldworCQkJCQlleHBsaWNpdCByZWNv cmQgbG9jayB3YXMgY3JlYXRlZCAqLwogI2RlZmluZSBEQl9TVUNDRVNTCQkxMAogCiAvKiBUaGUg Zm9sbG93aW5nIGFyZSBlcnJvciBjb2RlcyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9sb2NrMGxvY2suaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2xvY2swbG9jay5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAx OTQwLTYweDMyeGlpdnRxajl2YTEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2xvY2sw bG9jay5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAyNjM3LTJ0ZG92 N2pneDYxM3ZycnMKQEAgLTI5MiwxNCArMjkyLDE1IEBAIGxvY2tfc2VjX3JlY19tb2RpZnlfY2hl Y2tfYW5kX2xvY2soCiAJZGljdF9pbmRleF90KglpbmRleCwJLyogaW46IHNlY29uZGFyeSBpbmRl eCAqLwogCXF1ZV90aHJfdCoJdGhyKTsJLyogaW46IHF1ZXJ5IHRocmVhZCAqLwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLUxpa2UgdGhlIGNvdW50ZXJwYXJ0IGZvciBhIGNsdXN0ZXJlZCBpbmRleCBiZWxv dywgYnV0IG5vdyB3ZSByZWFkIGEKK0xpa2UgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRf bG9jaygpLCBidXQgcmVhZHMgYQogc2Vjb25kYXJ5IGluZGV4IHJlY29yZC4gKi8KIAogdWxpbnQK IGxvY2tfc2VjX3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogLyo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsCi0JCQkJ REJfREVBRExPQ0ssIG9yIERCX1FVRV9USFJfU1VTUEVOREVEICovCisJCQkJLyogb3V0OiBEQl9T VUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFE TE9DSywKKwkJCQlvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLwogCXVsaW50CQlmbGFncywJLyog aW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcgYml0IGlzIHNldCwKIAkJCQlkb2VzIG5vdGhpbmcg Ki8KIAlyZWNfdCoJCXJlYywJLyogaW46IHVzZXIgcmVjb3JkIG9yIHBhZ2Ugc3VwcmVtdW0gcmVj b3JkCkBAIC0zMjQsOCArMzI1LDkgQEAgbG9jayBvbiB0aGUgcmVjb3JkLiAqLwogdWxpbnQKIGxv Y2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soCiAvKj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwotCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfTE9DS19XQUlULAotCQkJ CURCX0RFQURMT0NLLCBvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLworCQkJCS8qIG91dDogREJf U1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCURCX0xPQ0tfV0FJVCwgREJfREVB RExPQ0ssCisJCQkJb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIAl1bGludAkJZmxhZ3MsCS8q IGluOiBpZiBCVFJfTk9fTE9DS0lOR19GTEFHIGJpdCBpcyBzZXQsCiAJCQkJZG9lcyBub3RoaW5n ICovCiAJcmVjX3QqCQlyZWMsCS8qIGluOiB1c2VyIHJlY29yZCBvciBwYWdlIHN1cHJlbXVtIHJl Y29yZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlz cWwuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBteXNxbC5oCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAxOTQwLTYweDMyeGlpdnRxajl2YTEKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBteXNxbC5oCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTAwNjAyMTAyNjM3LTJ0ZG92N2pneDYxM3ZycnMKQEAgLTI0NiwyMiAr MjQ2LDIwIEBAIHJvd191cGRhdGVfZm9yX215c3FsKAogCXJvd19wcmVidWlsdF90KglwcmVidWls dCk7CS8qIGluOiBwcmVidWlsdCBzdHJ1Y3QgaW4gTXlTUUwKIAkJCQkJaGFuZGxlICovCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotVGhpcyBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tzX3Vuc2Fm ZV9mb3JfYmlubG9nIGlzIFRSVUUgb3IKLXNlc3Npb24gaXMgdXNpbmcgYSBSRUFEIENPTU1JVFRF RCBpc29sYXRpb24gbGV2ZWwuIEJlZm9yZQotY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdlIG11c3Qg dXNlIHRyeF9yZXNldF9uZXdfcmVjX2xvY2tfaW5mbygpIGFuZAotdHJ4X3JlZ2lzdGVyX25ld19y ZWNfbG9jaygpIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBuZXcgcmVjb3JkIGxvY2tz Ci1yZWFsbHkgd2VyZSBzZXQuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIG5ld2x5IHNldCBsb2Nr IHVuZGVyIHByZWJ1aWx0LT5wY3VyLAotYW5kIGFsc28gdW5kZXIgcHJlYnVpbHQtPmNsdXN0X3Bj dXIuIEN1cnJlbnRseSwgdGhpcyBpcyBvbmx5IHVzZWQgYW5kIHRlc3RlZAotaW4gdGhlIGNhc2Ug b2YgYW4gVVBEQVRFIG9yIGEgREVMRVRFIHN0YXRlbWVudCwgd2hlcmUgdGhlIHJvdyBsb2NrIGlz IG9mIHRoZQotTE9DS19YIHR5cGUuCi1UaHVzLCB0aGlzIGltcGxlbWVudHMgYSAnbWluaS1yb2xs YmFjaycgdGhhdCByZWxlYXNlcyB0aGUgbGF0ZXN0IHJlY29yZAotbG9ja3Mgd2Ugc2V0LiAqLwor VGhpcyBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nIGlz IFRSVUUgb3IgdGhpcworc2Vzc2lvbiBpcyB1c2luZyBhIFJFQUQgQ09NTUlUVEVEIG9yIFJFQUQg VU5DT01NSVRURUQgaXNvbGF0aW9uIGxldmVsLgorQmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlv biByb3dfc2VhcmNoX2Zvcl9teXNxbCgpIG11c3QgaGF2ZQoraW5pdGlhbGl6ZWQgcHJlYnVpbHQt Pm5ld19yZWNfbG9ja3MgdG8gc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdoaWNoIG5ldworcmVjb3Jk IGxvY2tzIHJlYWxseSB3ZXJlIHNldC4gVGhpcyBmdW5jdGlvbiByZW1vdmVzIGEgbmV3bHkgc2V0 CitjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGxvY2sgdW5kZXIgcHJlYnVpbHQtPnBjdXIgb3IKK3By ZWJ1aWx0LT5jbHVzdF9wY3VyLiAgVGh1cywgdGhpcyBpbXBsZW1lbnRzIGEgJ21pbmktcm9sbGJh Y2snIHRoYXQKK3JlbGVhc2VzIHRoZSBsYXRlc3QgY2x1c3RlcmVkIGluZGV4IHJlY29yZCBsb2Nr IHdlIHNldC4gKi8KIAogaW50CiByb3dfdW5sb2NrX2Zvcl9teXNxbCgKIC8qPT09PT09PT09PT09 PT09PT0qLwogCQkJCQkvKiBvdXQ6IGVycm9yIGNvZGUgb3IgREJfU1VDQ0VTUyAqLwotCXJvd19w cmVidWlsdF90KglwcmVidWlsdCwJLyogaW46IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAorCXJv d19wcmVidWlsdF90KglwcmVidWlsdCwJLyogaW4vb3V0OiBwcmVidWlsdCBzdHJ1Y3QgaW4gTXlT UUwKIAkJCQkJaGFuZGxlICovCiAJaWJvb2wJCWhhc19sYXRjaGVzX29uX3JlY3MpOy8qIFRSVUUg aWYgY2FsbGVkIHNvIHRoYXQgd2UgaGF2ZQogCQkJCQl0aGUgbGF0Y2hlcyBvbiB0aGUgcmVjb3Jk cyB1bmRlciBwY3VyCkBAIC02NjAsMTggKzY1OCwxNyBAQCBzdHJ1Y3Qgcm93X3ByZWJ1aWx0X3N0 cnVjdCB7CiAJdWxpbnQJCW5ld19yZWNfbG9ja3M7CS8qIG5vcm1hbGx5IDA7IGlmCiAJCQkJCXNy dl9sb2Nrc191bnNhZmVfZm9yX2JpbmxvZyBpcwogCQkJCQlUUlVFIG9yIHNlc3Npb24gaXMgdXNp bmcgUkVBRAotCQkJCQlDT01NSVRURUQgaXNvbGF0aW9uIGxldmVsLCBpbiBhCi0JCQkJCWN1cnNv ciBzZWFyY2gsIGlmIHdlIHNldCBhIG5ldwotCQkJCQlyZWNvcmQgbG9jayBvbiBhbiBpbmRleCwg dGhpcyBpcwotCQkJCQlpbmNyZW1lbnRlZDsgdGhpcyBpcyB1c2VkIGluCi0JCQkJCXJlbGVhc2lu ZyB0aGUgbG9ja3MgdW5kZXIgdGhlCi0JCQkJCWN1cnNvcnMgaWYgd2UgYXJlIHBlcmZvcm1pbmcg YW4KLQkJCQkJVVBEQVRFIGFuZCB3ZSBkZXRlcm1pbmUgYWZ0ZXIKLQkJCQkJcmV0cmlldmluZyB0 aGUgcm93IHRoYXQgaXQgZG9lcwotCQkJCQlub3QgbmVlZCB0byBiZSBsb2NrZWQ7IHRodXMsCi0J CQkJCXRoZXNlIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBhCi0JCQkJCSdtaW5pLXJvbGxiYWNr JyB0aGF0IHJlbGVhc2VzCi0JCQkJCXRoZSBsYXRlc3QgcmVjb3JkIGxvY2tzICovCisJCQkJCUNP TU1JVFRFRCBvciBSRUFEIFVOQ09NTUlUVEVECisJCQkJCWlzb2xhdGlvbiBsZXZlbCwgc2V0IGlu CisJCQkJCXJvd19zZWFyY2hfZm9yX215c3FsKCkgaWYgd2Ugc2V0IGEgbmV3CisJCQkJCXJlY29y ZCBsb2NrIG9uIHRoZSBzZWNvbmRhcnkKKwkJCQkJb3IgY2x1c3RlcmVkIGluZGV4OyB0aGlzIGlz CisJCQkJCXVzZWQgaW4gcm93X3VubG9ja19mb3JfbXlzcWwoKQorCQkJCQl3aGVuIHJlbGVhc2lu ZyB0aGUgbG9jayB1bmRlcgorCQkJCQl0aGUgY3Vyc29yIGlmIHdlIGRldGVybWluZQorCQkJCQlh ZnRlciByZXRyaWV2aW5nIHRoZSByb3cgdGhhdAorCQkJCQlpdCBkb2VzIG5vdCBuZWVkIHRvIGJl IGxvY2tlZAorCQkJCQkoJ21pbmktcm9sbGJhY2snKSAqLwogCXVsaW50CQlteXNxbF9wcmVmaXhf bGVuOy8qIGJ5dGUgb2Zmc2V0IG9mIHRoZSBlbmQgb2YKIAkJCQkJdGhlIGxhc3QgcmVxdWVzdGVk IGNvbHVtbiAqLwogCXVsaW50CQlteXNxbF9yb3dfbGVuOwkvKiBsZW5ndGggaW4gYnl0ZXMgb2Yg YSByb3cgaW4gdGhlCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xv Y2swbG9jay5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDE5NDAtNjB4MzJ4aWl2dHFqOXZhMQor KysgYi9zdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMDA2MDIxMDI2MzctMnRkb3Y3amd4NjEzdnJycwpAQCAtMTczOSwxMSAr MTczOSwxMiBAQCB1bGludAogbG9ja19yZWNfZW5xdWV1ZV93YWl0aW5nKAogLyo9PT09PT09PT09 PT09PT09PT09PT0qLwogCQkJCS8qIG91dDogREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywgb3IK LQkJCQlEQl9RVUVfVEhSX1NVU1BFTkRFRCwgb3IgREJfU1VDQ0VTUzsKLQkJCQlEQl9TVUNDRVNT IG1lYW5zIHRoYXQgdGhlcmUgd2FzIGEgZGVhZGxvY2ssCi0JCQkJYnV0IGFub3RoZXIgdHJhbnNh Y3Rpb24gd2FzIGNob3NlbiBhcyBhCi0JCQkJdmljdGltLCBhbmQgd2UgZ290IHRoZSBsb2NrIGlt bWVkaWF0ZWx5OgotCQkJCW5vIG5lZWQgdG8gd2FpdCB0aGVuICovCisJCQkJREJfUVVFX1RIUl9T VVNQRU5ERUQsIG9yIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzsKKwkJCQlEQl9TVUNDRVNTX0xPQ0tF RF9SRUMgbWVhbnMgdGhhdCB0aGVyZQorCQkJCXdhcyBhIGRlYWRsb2NrLCBidXQgYW5vdGhlcgor CQkJCXRyYW5zYWN0aW9uIHdhcyBjaG9zZW4gYXMgYSB2aWN0aW0sCisJCQkJYW5kIHdlIGdvdCB0 aGUgbG9jayBpbW1lZGlhdGVseTogbm8KKwkJCQluZWVkIHRvIHdhaXQgdGhlbiAqLwogCXVsaW50 CQl0eXBlX21vZGUsLyogaW46IGxvY2sgbW9kZSB0aGlzIHRyYW5zYWN0aW9uIGlzCiAJCQkJcmVx dWVzdGluZzogTE9DS19TIG9yIExPQ0tfWCwgcG9zc2libHkgT1JlZAogCQkJCXdpdGggTE9DS19H QVAgb3IgTE9DS19SRUNfTk9UX0dBUCwgT1JlZApAQCAtMTgwNCw3ICsxODA1LDcgQEAgbG9ja19y ZWNfZW5xdWV1ZV93YWl0aW5nKAogCiAJaWYgKHRyeC0+d2FpdF9sb2NrID09IE5VTEwpIHsKIAot CQlyZXR1cm4oREJfU1VDQ0VTUyk7CisJCXJldHVybihEQl9TVUNDRVNTX0xPQ0tFRF9SRUMpOwog CX0KIAogCXRyeC0+cXVlX3N0YXRlID0gVFJYX1FVRV9MT0NLX1dBSVQ7CkBAIC0xOTAzLDYgKzE5 MDQsMTYgQEAgbG9ja19yZWNfYWRkX3RvX3F1ZXVlKAogCXJldHVybihsb2NrX3JlY19jcmVhdGUo dHlwZV9tb2RlLCByZWMsIGluZGV4LCB0cngpKTsKIH0KIAorLyoqIFJlY29yZCBsb2NraW5nIHJl cXVlc3Qgc3RhdHVzICovCitlbnVtIGxvY2tfcmVjX3JlcV9zdGF0dXMgeworCS8qKiBGYWlsZWQg dG8gYWNxdWlyZSBhIGxvY2sgKi8KKwlMT0NLX1JFQ19GQUlMLAorCS8qKiBTdWNjZWVkZWQgaW4g YWNxdWlyaW5nIGEgbG9jayAoaW1wbGljaXQgb3IgYWxyZWFkeSBhY3F1aXJlZCkgKi8KKwlMT0NL X1JFQ19TVUNDRVNTLAorCS8qKiBFeHBsaWNpdGx5IGNyZWF0ZWQgYSBuZXcgbG9jayAqLworCUxP Q0tfUkVDX1NVQ0NFU1NfQ1JFQVRFRAorfTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFRoaXMgaXMg YSBmYXN0IHJvdXRpbmUgZm9yIGxvY2tpbmcgYSByZWNvcmQgaW4gdGhlIG1vc3QgY29tbW9uIGNh c2VzOgogdGhlcmUgYXJlIG5vIGV4cGxpY2l0IGxvY2tzIG9uIHRoZSBwYWdlLCBvciB0aGVyZSBp cyBqdXN0IG9uZSBsb2NrLCBvd25lZApAQCAtMTkxMSwxMCArMTkyMiwxMCBAQCB3aGljaCBkb2Vz IE5PVCBsb29rIGF0IGltcGxpY2l0IGxvY2tzISBDCiBleHBsaWNpdCBsb2Nrcy4gVGhpcyBmdW5j dGlvbiBzZXRzIGEgbm9ybWFsIG5leHQta2V5IGxvY2ssIG9yIGluIHRoZSBjYXNlIG9mCiBhIHBh Z2Ugc3VwcmVtdW0gcmVjb3JkLCBhIGdhcCB0eXBlIGxvY2suICovCiBVTklWX0lOTElORQotaWJv b2wKK2VudW0gbG9ja19yZWNfcmVxX3N0YXR1cwogbG9ja19yZWNfbG9ja19mYXN0KAogLyo9PT09 PT09PT09PT09PT0qLwotCQkJCS8qIG91dDogVFJVRSBpZiBsb2NraW5nIHN1Y2NlZWRlZCAqLwor CQkJCS8qIG91dDogd2hldGhlciB0aGUgbG9ja2luZyBzdWNjZWVkZWQgKi8KIAlpYm9vbAkJaW1w bCwJLyogaW46IGlmIFRSVUUsIG5vIGxvY2sgaXMgc2V0IGlmIG5vIHdhaXQKIAkJCQlpcyBuZWNl c3Nhcnk6IHdlIGFzc3VtZSB0aGF0IHRoZSBjYWxsZXIgd2lsbAogCQkJCXNldCBhbiBpbXBsaWNp dCBsb2NrICovCkBAIC0xOTUwLDE5ICsxOTYxLDE5IEBAIGxvY2tfcmVjX2xvY2tfZmFzdCgKIAkJ CWxvY2tfcmVjX2NyZWF0ZShtb2RlLCByZWMsIGluZGV4LCB0cngpOwogCQl9CiAKLQkJcmV0dXJu KFRSVUUpOworCQlyZXR1cm4oTE9DS19SRUNfU1VDQ0VTU19DUkVBVEVEKTsKIAl9CiAKIAlpZiAo bG9ja19yZWNfZ2V0X25leHRfb25fcGFnZShsb2NrKSkgewogCi0JCXJldHVybihGQUxTRSk7CisJ CXJldHVybihMT0NLX1JFQ19GQUlMKTsKIAl9CiAKIAlpZiAobG9jay0+dHJ4ICE9IHRyeAogCSAg ICB8fCBsb2NrLT50eXBlX21vZGUgIT0gKG1vZGUgfCBMT0NLX1JFQykKIAkgICAgfHwgbG9ja19y ZWNfZ2V0X25fYml0cyhsb2NrKSA8PSBoZWFwX25vKSB7CiAKLQkJcmV0dXJuKEZBTFNFKTsKKwkJ cmV0dXJuKExPQ0tfUkVDX0ZBSUwpOwogCX0KIAogCWlmICghaW1wbCkgewpAQCAtMTk3MSwxMCAr MTk4MiwxMSBAQCBsb2NrX3JlY19sb2NrX2Zhc3QoCiAKIAkJaWYgKCFsb2NrX3JlY19nZXRfbnRo X2JpdChsb2NrLCBoZWFwX25vKSkgewogCQkJbG9ja19yZWNfc2V0X250aF9iaXQobG9jaywgaGVh cF9ubyk7CisJCQlyZXR1cm4oTE9DS19SRUNfU1VDQ0VTU19DUkVBVEVEKTsKIAkJfQogCX0KIAot CXJldHVybihUUlVFKTsKKwlyZXR1cm4oTE9DS19SRUNfU1VDQ0VTUyk7CiB9CiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCkBAIC0xOTg2LDggKzE5OTgsOSBAQCBzdGF0aWMKIHVsaW50CiBsb2NrX3JlY19s b2NrX3Nsb3coCiAvKj09PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBE Ql9MT0NLX1dBSVQsIG9yIGVycm9yCi0JCQkJY29kZSAqLworCQkJCS8qIG91dDogREJfU1VDQ0VT UywgREJfU1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCURCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ss CisJCQkJb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIAlpYm9vbAkJaW1wbCwJLyogaW46IGlm IFRSVUUsIG5vIGxvY2sgaXMgc2V0IGlmIG5vIHdhaXQgaXMKIAkJCQluZWNlc3Nhcnk6IHdlIGFz c3VtZSB0aGF0IHRoZSBjYWxsZXIgd2lsbCBzZXQKIAkJCQlhbiBpbXBsaWNpdCBsb2NrICovCkBA IC0xOTk4LDcgKzIwMTEsNiBAQCBsb2NrX3JlY19sb2NrX3Nsb3coCiAJcXVlX3Rocl90Kgl0aHIp CS8qIGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKIAl0cnhfdCoJdHJ4OwotCXVsaW50CWVycjsKIAog CXV0X2FkKG11dGV4X293bigma2VybmVsX211dGV4KSk7CiAJdXRfYWQoKExPQ0tfTU9ERV9NQVNL ICYgbW9kZSkgIT0gTE9DS19TCkBAIC0yMDE3LDI2ICsyMDI5LDIxIEBAIGxvY2tfcmVjX2xvY2tf c2xvdygKIAkJLyogVGhlIHRyeCBhbHJlYWR5IGhhcyBhIHN0cm9uZyBlbm91Z2ggbG9jayBvbiBy ZWM6IGRvCiAJCW5vdGhpbmcgKi8KIAotCQllcnIgPSBEQl9TVUNDRVNTOwogCX0gZWxzZSBpZiAo bG9ja19yZWNfb3RoZXJfaGFzX2NvbmZsaWN0aW5nKG1vZGUsIHJlYywgdHJ4KSkgewogCiAJCS8q IElmIGFub3RoZXIgdHJhbnNhY3Rpb24gaGFzIGEgbm9uLWdhcCBjb25mbGljdGluZyByZXF1ZXN0 IGluCiAJCXRoZSBxdWV1ZSwgYXMgdGhpcyB0cmFuc2FjdGlvbiBkb2VzIG5vdCBoYXZlIGEgbG9j ayBzdHJvbmcKIAkJZW5vdWdoIGFscmVhZHkgZ3JhbnRlZCBvbiB0aGUgcmVjb3JkLCB3ZSBoYXZl IHRvIHdhaXQuICovCiAKLQkJZXJyID0gbG9ja19yZWNfZW5xdWV1ZV93YWl0aW5nKG1vZGUsIHJl YywgaW5kZXgsIHRocik7Ci0JfSBlbHNlIHsKLQkJaWYgKCFpbXBsKSB7Ci0JCQkvKiBTZXQgdGhl IHJlcXVlc3RlZCBsb2NrIG9uIHRoZSByZWNvcmQgKi8KKwkJcmV0dXJuKGxvY2tfcmVjX2VucXVl dWVfd2FpdGluZyhtb2RlLCByZWMsIGluZGV4LCB0aHIpKTsKKwl9IGVsc2UgaWYgKCFpbXBsKSB7 CisJCS8qIFNldCB0aGUgcmVxdWVzdGVkIGxvY2sgb24gdGhlIHJlY29yZCAqLwogCi0JCQlsb2Nr X3JlY19hZGRfdG9fcXVldWUoTE9DS19SRUMgfCBtb2RlLCByZWMsIGluZGV4LAotCQkJCQkgICAg ICB0cngpOwotCQl9Ci0KLQkJZXJyID0gREJfU1VDQ0VTUzsKKwkJbG9ja19yZWNfYWRkX3RvX3F1 ZXVlKExPQ0tfUkVDIHwgbW9kZSwgcmVjLCBpbmRleCwgdHJ4KTsKKwkJcmV0dXJuKERCX1NVQ0NF U1NfTE9DS0VEX1JFQyk7CiAJfQogCi0JcmV0dXJuKGVycik7CisJcmV0dXJuKERCX1NVQ0NFU1Mp OwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjA0OSw4ICsyMDU2LDkgQEAgc3RhdGljCiB1 bGludAogbG9ja19yZWNfbG9jaygKIC8qPT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUND RVNTLCBEQl9MT0NLX1dBSVQsIG9yIGVycm9yCi0JCQkJY29kZSAqLworCQkJCS8qIG91dDogREJf U1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCURCX0xPQ0tfV0FJVCwgREJfREVB RExPQ0ssIG9yCisJCQkJREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIAlpYm9vbAkJaW1wbCwJLyog aW46IGlmIFRSVUUsIG5vIGxvY2sgaXMgc2V0IGlmIG5vIHdhaXQgaXMKIAkJCQluZWNlc3Nhcnk6 IHdlIGFzc3VtZSB0aGF0IHRoZSBjYWxsZXIgd2lsbCBzZXQKIAkJCQlhbiBpbXBsaWNpdCBsb2Nr ICovCkBAIC0yMDYwLDggKzIwNjgsNiBAQCBsb2NrX3JlY19sb2NrKAogCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCS8qIGluOiBpbmRleCBvZiByZWNvcmQgKi8KIAlxdWVfdGhyX3QqCXRocikJLyogaW46 IHF1ZXJ5IHRocmVhZCAqLwogewotCXVsaW50CWVycjsKLQogCXV0X2FkKG11dGV4X293bigma2Vy bmVsX211dGV4KSk7CiAJdXRfYWQoKExPQ0tfTU9ERV9NQVNLICYgbW9kZSkgIT0gTE9DS19TCiAJ ICAgICAgfHwgbG9ja190YWJsZV9oYXModGhyX2dldF90cngodGhyKSwgaW5kZXgtPnRhYmxlLCBM T0NLX0lTKSk7CkBAIC0yMDczLDE3ICsyMDc5LDE5IEBAIGxvY2tfcmVjX2xvY2soCiAJICAgICAg fHwgbW9kZSAtIChMT0NLX01PREVfTUFTSyAmIG1vZGUpID09IExPQ0tfUkVDX05PVF9HQVAKIAkg ICAgICB8fCBtb2RlIC0gKExPQ0tfTU9ERV9NQVNLICYgbW9kZSkgPT0gMCk7CiAKLQlpZiAobG9j a19yZWNfbG9ja19mYXN0KGltcGwsIG1vZGUsIHJlYywgaW5kZXgsIHRocikpIHsKLQotCQkvKiBX ZSB0cnkgYSBzaW1wbGlmaWVkIGFuZCBmYXN0ZXIgc3Vicm91dGluZSBmb3IgdGhlIG1vc3QKLQkJ Y29tbW9uIGNhc2VzICovCi0KLQkJZXJyID0gREJfU1VDQ0VTUzsKLQl9IGVsc2UgewotCQllcnIg PSBsb2NrX3JlY19sb2NrX3Nsb3coaW1wbCwgbW9kZSwgcmVjLCBpbmRleCwgdGhyKTsKKwkvKiBX ZSB0cnkgYSBzaW1wbGlmaWVkIGFuZCBmYXN0ZXIgc3Vicm91dGluZSBmb3IgdGhlIG1vc3QKKwlj b21tb24gY2FzZXMgKi8KKwlzd2l0Y2ggKGxvY2tfcmVjX2xvY2tfZmFzdChpbXBsLCBtb2RlLCBy ZWMsIGluZGV4LCB0aHIpKSB7CisJY2FzZSBMT0NLX1JFQ19TVUNDRVNTOgorCQlyZXR1cm4oREJf U1VDQ0VTUyk7CisJY2FzZSBMT0NLX1JFQ19TVUNDRVNTX0NSRUFURUQ6CisJCXJldHVybihEQl9T VUNDRVNTX0xPQ0tFRF9SRUMpOworCWNhc2UgTE9DS19SRUNfRkFJTDoKKwkJcmV0dXJuKGxvY2tf cmVjX2xvY2tfc2xvdyhpbXBsLCBtb2RlLCByZWMsIGluZGV4LCB0aHIpKTsKIAl9CiAKLQlyZXR1 cm4oZXJyKTsKKwl1dF9lcnJvcjsKKwlyZXR1cm4oREJfRVJST1IpOwogfQogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgpAQCAtNDgzMiw3ICs0ODQwLDcgQEAgbG9ja19yZWNfaW5zZXJ0X2NoZWNrX2FuZF9s b2NrKAogCiAJbG9jayA9IGxvY2tfcmVjX2dldF9maXJzdChuZXh0X3JlYyk7CiAKLQlpZiAobG9j ayA9PSBOVUxMKSB7CisJaWYgKFVOSVZfTElLRUxZKGxvY2sgPT0gTlVMTCkpIHsKIAkJLyogV2Ug b3B0aW1pemUgQ1BVIHRpbWUgdXNhZ2UgaW4gdGhlIHNpbXBsZXN0IGNhc2UgKi8KIAogCQlsb2Nr X211dGV4X2V4aXRfa2VybmVsKCk7CkBAIC00ODQwLDggKzQ4NDgsNyBAQCBsb2NrX3JlY19pbnNl cnRfY2hlY2tfYW5kX2xvY2soCiAJCWlmICghKGluZGV4LT50eXBlICYgRElDVF9DTFVTVEVSRUQp KSB7CiAKIAkJCS8qIFVwZGF0ZSB0aGUgcGFnZSBtYXggdHJ4IGlkIGZpZWxkICovCi0JCQlwYWdl X3VwZGF0ZV9tYXhfdHJ4X2lkKGJ1Zl9mcmFtZV9hbGlnbihyZWMpLAotCQkJCQkgICAgICAgdGhy X2dldF90cngodGhyKS0+aWQpOworCQkJcGFnZV91cGRhdGVfbWF4X3RyeF9pZChidWZfZnJhbWVf YWxpZ24ocmVjKSwgdHJ4LT5pZCk7CiAJCX0KIAogCQlyZXR1cm4oREJfU1VDQ0VTUyk7CkBAIC00 ODczLDExICs0ODgwLDE2IEBAIGxvY2tfcmVjX2luc2VydF9jaGVja19hbmRfbG9jaygKIAogCWxv Y2tfbXV0ZXhfZXhpdF9rZXJuZWwoKTsKIAotCWlmICghKGluZGV4LT50eXBlICYgRElDVF9DTFVT VEVSRUQpICYmIChlcnIgPT0gREJfU1VDQ0VTUykpIHsKLQorCXN3aXRjaCAoZXJyKSB7CisJY2Fz ZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCWVyciA9IERCX1NVQ0NFU1M7CisJCS8qIGZhbGwg dGhyb3VnaCAqLworCWNhc2UgREJfU1VDQ0VTUzoKKwkJaWYgKGluZGV4LT50eXBlICYgRElDVF9D TFVTVEVSRUQpIHsKKwkJCWJyZWFrOworCQl9CiAJCS8qIFVwZGF0ZSB0aGUgcGFnZSBtYXggdHJ4 IGlkIGZpZWxkICovCi0JCXBhZ2VfdXBkYXRlX21heF90cnhfaWQoYnVmX2ZyYW1lX2FsaWduKHJl YyksCi0JCQkJICAgICAgIHRocl9nZXRfdHJ4KHRociktPmlkKTsKKwkJcGFnZV91cGRhdGVfbWF4 X3RyeF9pZChidWZfZnJhbWVfYWxpZ24ocmVjKSwgdHJ4LT5pZCk7CiAJfQogCiAjaWZkZWYgVU5J Vl9ERUJVRwpAQCAtNDk4NCw2ICs0OTk2LDEwIEBAIGxvY2tfY2x1c3RfcmVjX21vZGlmeV9jaGVj a19hbmRfbG9jaygKIAogCXV0X2FkKGxvY2tfcmVjX3F1ZXVlX3ZhbGlkYXRlKHJlYywgaW5kZXgs IG9mZnNldHMpKTsKIAorCWlmIChVTklWX1VOTElLRUxZKGVyciA9PSBEQl9TVUNDRVNTX0xPQ0tF RF9SRUMpKSB7CisJCWVyciA9IERCX1NVQ0NFU1M7CisJfQorCiAJcmV0dXJuKGVycik7CiB9CiAK QEAgLTUwNDMsMjUgKzUwNTksMjkgQEAgbG9ja19zZWNfcmVjX21vZGlmeV9jaGVja19hbmRfbG9j aygKIAl9CiAjZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCi0JaWYgKGVyciA9PSBEQl9TVUNDRVNT KSB7CisJaWYgKGVyciA9PSBEQl9TVUNDRVNTIHx8IGVyciA9PSBEQl9TVUNDRVNTX0xPQ0tFRF9S RUMpIHsKIAkJLyogVXBkYXRlIHRoZSBwYWdlIG1heCB0cnggaWQgZmllbGQgKi8KLQorCQkvKiBJ dCBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IHRvIGRvIHRoaXMgaWYKKwkJZXJyID09IERCX1NVQ0NF U1MgKG5vIG5ldyBsb2NrIGNyZWF0ZWQpLAorCQlidXQgaXQgc2hvdWxkIG5vdCBjb3N0IHRvbyBt dWNoIHBlcmZvcm1hbmNlLiAqLwogCQlwYWdlX3VwZGF0ZV9tYXhfdHJ4X2lkKGJ1Zl9mcmFtZV9h bGlnbihyZWMpLAogCQkJCSAgICAgICB0aHJfZ2V0X3RyeCh0aHIpLT5pZCk7CisJCWVyciA9IERC X1NVQ0NFU1M7CiAJfQogCiAJcmV0dXJuKGVycik7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1M aWtlIHRoZSBjb3VudGVycGFydCBmb3IgYSBjbHVzdGVyZWQgaW5kZXggYmVsb3csIGJ1dCBub3cg d2UgcmVhZCBhCitMaWtlIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soKSwgYnV0 IHJlYWRzIGEKIHNlY29uZGFyeSBpbmRleCByZWNvcmQuICovCiAKIHVsaW50CiBsb2NrX3NlY19y ZWNfcmVhZF9jaGVja19hbmRfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0q LwotCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfTE9DS19XQUlULAotCQkJCURCX0RFQURMT0NL LCBvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLworCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJf U1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCURCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssCisJCQkJ b3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIAl1bGludAkJZmxhZ3MsCS8qIGluOiBpZiBCVFJf Tk9fTE9DS0lOR19GTEFHIGJpdCBpcyBzZXQsCiAJCQkJZG9lcyBub3RoaW5nICovCiAJcmVjX3Qq CQlyZWMsCS8qIGluOiB1c2VyIHJlY29yZCBvciBwYWdlIHN1cHJlbXVtIHJlY29yZApAQCAtNTEy Niw4ICs1MTQ2LDkgQEAgbG9jayBvbiB0aGUgcmVjb3JkLiAqLwogdWxpbnQKIGxvY2tfY2x1c3Rf cmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0qLwotCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfTE9DS19XQUlULAotCQkJCURCX0RFQURM T0NLLCBvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLworCQkJCS8qIG91dDogREJfU1VDQ0VTUywg REJfU1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCURCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssCisJ CQkJb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIAl1bGludAkJZmxhZ3MsCS8qIGluOiBpZiBC VFJfTk9fTE9DS0lOR19GTEFHIGJpdCBpcyBzZXQsCiAJCQkJZG9lcyBub3RoaW5nICovCiAJcmVj X3QqCQlyZWMsCS8qIGluOiB1c2VyIHJlY29yZCBvciBwYWdlIHN1cHJlbXVtIHJlY29yZApAQCAt NTIwNiwxNiArNTIyNywyMSBAQCBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrX2Fs dCgKIAltZW1faGVhcF90Kgl0bXBfaGVhcAk9IE5VTEw7CiAJdWxpbnQJCW9mZnNldHNfW1JFQ19P RkZTX05PUk1BTF9TSVpFXTsKIAl1bGludCoJCW9mZnNldHMJCT0gb2Zmc2V0c187Ci0JdWxpbnQJ CXJldDsKKwl1bGludAkJZXJyOwogCSpvZmZzZXRzXyA9IChzaXplb2Ygb2Zmc2V0c18pIC8gc2l6 ZW9mICpvZmZzZXRzXzsKIAogCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwg b2Zmc2V0cywKIAkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJnRtcF9oZWFwKTsKLQlyZXQgPSBsb2Nr X2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKGZsYWdzLCByZWMsIGluZGV4LAorCWVyciA9 IGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soZmxhZ3MsIHJlYywgaW5kZXgsCiAJ CQkJCQkgb2Zmc2V0cywgbW9kZSwgZ2FwX21vZGUsIHRocik7CiAJaWYgKHRtcF9oZWFwKSB7CiAJ CW1lbV9oZWFwX2ZyZWUodG1wX2hlYXApOwogCX0KLQlyZXR1cm4ocmV0KTsKKworCWlmIChVTklW X1VOTElLRUxZKGVyciA9PSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMpKSB7CisJCWVyciA9IERCX1NV Q0NFU1M7CisJfQorCisJcmV0dXJuKGVycik7CiB9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzBpbnMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMTk0MC02MHgz MnhpaXZ0cWo5dmExCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMjYzNy0ydGRvdjdqZ3g2MTN2cnJzCkBA IC0xMTE0LDcgKzExMTQsOCBAQCBzdGF0aWMKIHVsaW50CiByb3dfaW5zX3NldF9zaGFyZWRfcmVj X2xvY2soCiAvKj09PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUND RVNTIG9yIGVycm9yIGNvZGUgKi8KKwkJCQkvKiBvdXQ6IERCX1NVQ0NFU1MsIERCX1NVQ0NFU1Nf TE9DS0VEX1JFQywKKwkJCQlvciBlcnJvciBjb2RlICovCiAJdWxpbnQJCXR5cGUsCS8qIGluOiBM T0NLX09SRElOQVJZLCBMT0NLX0dBUCwgb3IKIAkJCQlMT0NLX1JFQ19OT1RfR0FQIHR5cGUgbG9j ayAqLwogCXJlY190KgkJcmVjLAkvKiBpbjogcmVjb3JkICovCkBAIC0xMTQ1LDcgKzExNDYsOCBA QCBzdGF0aWMKIHVsaW50CiByb3dfaW5zX3NldF9leGNsdXNpdmVfcmVjX2xvY2soCiAvKj09PT09 PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUNDRVNTIG9yIGVycm9y IGNvZGUgKi8KKwkJCQkvKiBvdXQ6IERCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JFQywK KwkJCQlvciBlcnJvciBjb2RlICovCiAJdWxpbnQJCXR5cGUsCS8qIGluOiBMT0NLX09SRElOQVJZ LCBMT0NLX0dBUCwgb3IKIAkJCQlMT0NLX1JFQ19OT1RfR0FQIHR5cGUgbG9jayAqLwogCXJlY190 KgkJcmVjLAkvKiBpbjogcmVjb3JkICovCkBAIC0xMTk1LDkgKzExOTcsNyBAQCByb3dfaW5zX2No ZWNrX2ZvcmVpZ25fY29uc3RyYWludCgKIAlkaWN0X3RhYmxlX3QqCWNoZWNrX3RhYmxlOwogCWRp Y3RfaW5kZXhfdCoJY2hlY2tfaW5kZXg7CiAJdWxpbnQJCW5fZmllbGRzX2NtcDsKLQlyZWNfdCoJ CXJlYzsKIAlidHJfcGN1cl90CXBjdXI7Ci0JaWJvb2wJCW1vdmVkOwogCWludAkJY21wOwogCXVs aW50CQllcnI7CiAJdWxpbnQJCWk7CkBAIC0xMzI4LDEyICsxMzI4LDEyIEBAIHJ1bl9hZ2FpbjoK IAogCS8qIFNjYW4gaW5kZXggcmVjb3JkcyBhbmQgY2hlY2sgaWYgdGhlcmUgaXMgYSBtYXRjaGlu ZyByZWNvcmQgKi8KIAotCWZvciAoOzspIHsKLQkJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1 cik7CisJZG8geworCQlyZWNfdCoJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7CiAKIAkJ aWYgKHBhZ2VfcmVjX2lzX2luZmltdW0ocmVjKSkgewogCi0JCQlnb3RvIG5leHRfcmVjOworCQkJ Y29udGludWU7CiAJCX0KIAogCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgY2hlY2tf aW5kZXgsCkBAIC0xMzQzLDEyICsxMzQzLDEzIEBAIHJ1bl9hZ2FpbjoKIAogCQkJZXJyID0gcm93 X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKAogCQkJCUxPQ0tfT1JESU5BUlksIHJlYywgY2hlY2tf aW5kZXgsIG9mZnNldHMsIHRocik7Ci0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQotCQkJ CWJyZWFrOworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVD OgorCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWNvbnRpbnVlOworCQkJZGVmYXVsdDoKKwkJCQln b3RvIGVuZF9zY2FuOwogCQkJfQotCi0JCQlnb3RvIG5leHRfcmVjOwogCQl9CiAKIAkJY21wID0g Y21wX2R0dXBsZV9yZWMoZW50cnksIHJlYywgb2Zmc2V0cyk7CkBAIC0xMzU5LDkgKzEzNjAsMTIg QEAgcnVuX2FnYWluOgogCQkJCWVyciA9IHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jaygKIAkJ CQkJTE9DS19PUkRJTkFSWSwgcmVjLCBjaGVja19pbmRleCwKIAkJCQkJb2Zmc2V0cywgdGhyKTsK LQkJCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQkJCXN3aXRjaCAoZXJyKSB7CisJCQkJ Y2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQkJY2FzZSBEQl9TVUNDRVNTOgogCQkJCQli cmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQlnb3RvIGVuZF9zY2FuOwogCQkJCX0KIAkJCX0gZWxz ZSB7CiAJCQkJLyogRm91bmQgYSBtYXRjaGluZyByZWNvcmQuIExvY2sgb25seQpAQCAtMTM3Miwx NSArMTM3NiwxOCBAQCBydW5fYWdhaW46CiAJCQkJCUxPQ0tfUkVDX05PVF9HQVAsIHJlYywgY2hl Y2tfaW5kZXgsCiAJCQkJCW9mZnNldHMsIHRocik7CiAKLQkJCQlpZiAoZXJyICE9IERCX1NVQ0NF U1MpIHsKLQorCQkJCXN3aXRjaCAoZXJyKSB7CisJCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9S RUM6CisJCQkJY2FzZSBEQl9TVUNDRVNTOgogCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJ CQlnb3RvIGVuZF9zY2FuOwogCQkJCX0KIAogCQkJCWlmIChjaGVja19yZWYpIHsKIAkJCQkJZXJy ID0gREJfU1VDQ0VTUzsKIAotCQkJCQlicmVhazsKKwkJCQkJZ290byBlbmRfc2NhbjsKIAkJCQl9 IGVsc2UgaWYgKGZvcmVpZ24tPnR5cGUgIT0gMCkgewogCQkJCQkvKiBUaGVyZSBpcyBhbiBPTiBV UERBVEUgb3IgT04gREVMRVRFCiAJCQkJCWNvbmRpdGlvbjogY2hlY2sgdGhlbSBpbiBhIHNlcGFy YXRlCkBAIC0xNDA2LDcgKzE0MTMsNyBAQCBydW5fYWdhaW46CiAJCQkJCQkJZXJyID0gREJfRk9S RUlHTl9EVVBMSUNBVEVfS0VZOwogCQkJCQkJfQogCi0JCQkJCQlicmVhazsKKwkJCQkJCWdvdG8g ZW5kX3NjYW47CiAJCQkJCX0KIAkJCQl9IGVsc2UgewogCQkJCQlyb3dfaW5zX2ZvcmVpZ25fcmVw b3J0X2VycigKQEAgLTE0MTQsNDggKzE0MjEsMzkgQEAgcnVuX2FnYWluOgogCQkJCQkJdGhyLCBm b3JlaWduLCByZWMsIGVudHJ5KTsKIAogCQkJCQllcnIgPSBEQl9ST1dfSVNfUkVGRVJFTkNFRDsK LQkJCQkJYnJlYWs7CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfQogCQkJfQotCQl9CisJCX0g ZWxzZSB7CisJCQl1dF9hKGNtcCA8IDApOwogCi0JCWlmIChjbXAgPCAwKSB7CiAJCQllcnIgPSBy b3dfaW5zX3NldF9zaGFyZWRfcmVjX2xvY2soCiAJCQkJTE9DS19HQVAsIHJlYywgY2hlY2tfaW5k ZXgsIG9mZnNldHMsIHRocik7Ci0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQotCQkJCWJy ZWFrOwotCQkJfQotCi0JCQlpZiAoY2hlY2tfcmVmKSB7Ci0JCQkJZXJyID0gREJfTk9fUkVGRVJF TkNFRF9ST1c7Ci0JCQkJcm93X2luc19mb3JlaWduX3JlcG9ydF9hZGRfZXJyKAotCQkJCQl0cngs IGZvcmVpZ24sIHJlYywgZW50cnkpOwotCQkJfSBlbHNlIHsKLQkJCQllcnIgPSBEQl9TVUNDRVNT OworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJ Y2FzZSBEQl9TVUNDRVNTOgorCQkJCWlmIChjaGVja19yZWYpIHsKKwkJCQkJZXJyID0gREJfTk9f UkVGRVJFTkNFRF9ST1c7CisJCQkJCXJvd19pbnNfZm9yZWlnbl9yZXBvcnRfYWRkX2VycigKKwkJ CQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZXJyID0g REJfU1VDQ0VTUzsKKwkJCQl9CiAJCQl9CiAKLQkJCWJyZWFrOworCQkJZ290byBlbmRfc2NhbjsK IAkJfQorCX0gd2hpbGUgKGJ0cl9wY3VyX21vdmVfdG9fbmV4dCgmcGN1ciwgJm10cikpOwogCi0J CXV0X2EoY21wID09IDApOwotbmV4dF9yZWM6Ci0JCW1vdmVkID0gYnRyX3BjdXJfbW92ZV90b19u ZXh0KCZwY3VyLCAmbXRyKTsKLQotCQlpZiAoIW1vdmVkKSB7Ci0JCQlpZiAoY2hlY2tfcmVmKSB7 Ci0JCQkJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7Ci0JCQkJcm93X2luc19mb3JlaWdu X3JlcG9ydF9hZGRfZXJyKAotCQkJCQl0cngsIGZvcmVpZ24sIHJlYywgZW50cnkpOwotCQkJCWVy ciA9IERCX05PX1JFRkVSRU5DRURfUk9XOwotCQkJfSBlbHNlIHsKLQkJCQllcnIgPSBEQl9TVUND RVNTOwotCQkJfQotCi0JCQlicmVhazsKLQkJfQorCWlmIChjaGVja19yZWYpIHsKKwkJcm93X2lu c19mb3JlaWduX3JlcG9ydF9hZGRfZXJyKAorCQkJdHJ4LCBmb3JlaWduLCBidHJfcGN1cl9nZXRf cmVjKCZwY3VyKSwgZW50cnkpOworCQllcnIgPSBEQl9OT19SRUZFUkVOQ0VEX1JPVzsKKwl9IGVs c2UgeworCQllcnIgPSBEQl9TVUNDRVNTOwogCX0KIAorZW5kX3NjYW46CiAJYnRyX3BjdXJfY2xv c2UoJnBjdXIpOwogCiAJbXRyX2NvbW1pdCgmbXRyKTsKQEAgLTE2NDEsMTAgKzE2MzksOCBAQCBy b3dfaW5zX3NjYW5fc2VjX2luZGV4X2Zvcl9kdXBsaWNhdGUoCiAJdWxpbnQJCWk7CiAJaW50CQlj bXA7CiAJdWxpbnQJCW5fZmllbGRzX2NtcDsKLQlyZWNfdCoJCXJlYzsKIAlidHJfcGN1cl90CXBj dXI7CiAJdWxpbnQJCWVycgkJPSBEQl9TVUNDRVNTOwotCWlib29sCQltb3ZlZDsKIAl1bnNpZ25l ZAlhbGxvd19kdXBsaWNhdGVzOwogCW10cl90CQltdHI7CiAJbWVtX2hlYXBfdCoJaGVhcAkJPSBO VUxMOwpAQCAtMTY4MCwxMiArMTY3NiwxMiBAQCByb3dfaW5zX3NjYW5fc2VjX2luZGV4X2Zvcl9k dXBsaWNhdGUoCiAKIAkvKiBTY2FuIGluZGV4IHJlY29yZHMgYW5kIGNoZWNrIGlmIHRoZXJlIGlz IGEgZHVwbGljYXRlICovCiAKLQlmb3IgKDs7KSB7Ci0JCXJlYyA9IGJ0cl9wY3VyX2dldF9yZWMo JnBjdXIpOworCWRvIHsKKwkJcmVjX3QqCXJlYyA9IGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpOwog CiAJCWlmIChwYWdlX3JlY19pc19pbmZpbXVtKHJlYykpIHsKIAotCQkJZ290byBuZXh0X3JlYzsK KwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGlu ZGV4LCBvZmZzZXRzLApAQCAtMTcwNiwxNCArMTcwMiwxOCBAQCByb3dfaW5zX3NjYW5fc2VjX2lu ZGV4X2Zvcl9kdXBsaWNhdGUoCiAJCQkJTE9DS19PUkRJTkFSWSwgcmVjLCBpbmRleCwgb2Zmc2V0 cywgdGhyKTsKIAkJfQogCi0JCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCXN3aXRjaCAo ZXJyKSB7CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJZXJyID0gREJfU1VDQ0VT UzsKKwkJY2FzZSBEQl9TVUNDRVNTOgogCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlnb3RvIGVu ZF9zY2FuOwogCQl9CiAKIAkJaWYgKHBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJlYykpIHsKIAotCQkJ Z290byBuZXh0X3JlYzsKKwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJY21wID0gY21wX2R0dXBsZV9y ZWMoZW50cnksIHJlYywgb2Zmc2V0cyk7CkBAIC0xNzI1LDIzICsxNzI1LDE1IEBAIHJvd19pbnNf c2Nhbl9zZWNfaW5kZXhfZm9yX2R1cGxpY2F0ZSgKIAogCQkJCXRocl9nZXRfdHJ4KHRociktPmVy cm9yX2luZm8gPSBpbmRleDsKIAotCQkJCWJyZWFrOworCQkJCWdvdG8gZW5kX3NjYW47CiAJCQl9 CisJCX0gZWxzZSB7CisJCQl1dF9hKGNtcCA8IDApOworCQkJZ290byBlbmRfc2NhbjsKIAkJfQor CX0gd2hpbGUgKGJ0cl9wY3VyX21vdmVfdG9fbmV4dCgmcGN1ciwgJm10cikpOwogCi0JCWlmIChj bXAgPCAwKSB7Ci0JCQlicmVhazsKLQkJfQotCi0JCXV0X2EoY21wID09IDApOwotbmV4dF9yZWM6 Ci0JCW1vdmVkID0gYnRyX3BjdXJfbW92ZV90b19uZXh0KCZwY3VyLCAmbXRyKTsKLQotCQlpZiAo IW1vdmVkKSB7Ci0JCQlicmVhazsKLQkJfQotCX0KLQorZW5kX3NjYW46CiAJaWYgKFVOSVZfTElL RUxZX05VTEwoaGVhcCkpIHsKIAkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl9CkBAIC0xODM3LDcg KzE4MjksMTEgQEAgcm93X2luc19kdXBsaWNhdGVfZXJyb3JfaW5fY2x1c3QoCiAJCQkJCWN1cnNv ci0+aW5kZXgsIG9mZnNldHMsIHRocik7CiAJCQl9CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VT UykgeworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgor CQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKIAkJCQlnb3RvIGZ1 bmNfZXhpdDsKIAkJCX0KIApAQCAtMTg3NSw3ICsxODcxLDExIEBAIHJvd19pbnNfZHVwbGljYXRl X2Vycm9yX2luX2NsdXN0KAogCQkJCQljdXJzb3ItPmluZGV4LCBvZmZzZXRzLCB0aHIpOwogCQkJ fQogCi0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKKwkJCXN3aXRjaCAoZXJyKSB7CisJCQlj YXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCQlicmVh azsKKwkJCWRlZmF1bHQ6CiAJCQkJZ290byBmdW5jX2V4aXQ7CiAJCQl9CiAKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYycKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MG15c3FsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MDA2MDIxMDE5NDAtNjB4MzJ4aWl2dHFqOXZhMQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwbXlzcWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMjYzNy0y dGRvdjdqZ3g2MTN2cnJzCkBAIC0xNDU1LDIyICsxNDU1LDIwIEBAIHJ1bl9hZ2FpbjoKIH0KIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKLVRoaXMgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHNydl9sb2Nrc191 bnNhZmVfZm9yX2JpbmxvZyBpcyBUUlVFIG9yCi10aGlzIHNlc3Npb24gaXMgdXNpbmcgYSBSRUFE IENPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwuIEJlZm9yZQotY2FsbGluZyB0aGlzIGZ1bmN0aW9u IHdlIG11c3QgdXNlIHRyeF9yZXNldF9uZXdfcmVjX2xvY2tfaW5mbygpIGFuZAotdHJ4X3JlZ2lz dGVyX25ld19yZWNfbG9jaygpIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBuZXcgcmVj b3JkIGxvY2tzCi1yZWFsbHkgd2VyZSBzZXQuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIG5ld2x5 IHNldCBsb2NrIHVuZGVyIHByZWJ1aWx0LT5wY3VyLAotYW5kIGFsc28gdW5kZXIgcHJlYnVpbHQt PmNsdXN0X3BjdXIuIEN1cnJlbnRseSwgdGhpcyBpcyBvbmx5IHVzZWQgYW5kIHRlc3RlZAotaW4g dGhlIGNhc2Ugb2YgYW4gVVBEQVRFIG9yIGEgREVMRVRFIHN0YXRlbWVudCwgd2hlcmUgdGhlIHJv dyBsb2NrIGlzIG9mIHRoZQotTE9DS19YIHR5cGUuCi1UaHVzLCB0aGlzIGltcGxlbWVudHMgYSAn bWluaS1yb2xsYmFjaycgdGhhdCByZWxlYXNlcyB0aGUgbGF0ZXN0IHJlY29yZAotbG9ja3Mgd2Ug c2V0LiAqLworVGhpcyBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tzX3Vuc2FmZV9mb3Jf YmlubG9nIGlzIFRSVUUgb3IgdGhpcworc2Vzc2lvbiBpcyB1c2luZyBhIFJFQUQgQ09NTUlUVEVE IG9yIFJFQUQgVU5DT01NSVRURUQgaXNvbGF0aW9uIGxldmVsLgorQmVmb3JlIGNhbGxpbmcgdGhp cyBmdW5jdGlvbiByb3dfc2VhcmNoX2Zvcl9teXNxbCgpIG11c3QgaGF2ZQoraW5pdGlhbGl6ZWQg cHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgdG8gc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdoaWNoIG5l dworcmVjb3JkIGxvY2tzIHJlYWxseSB3ZXJlIHNldC4gVGhpcyBmdW5jdGlvbiByZW1vdmVzIGEg bmV3bHkgc2V0CitjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGxvY2sgdW5kZXIgcHJlYnVpbHQtPnBj dXIgb3IKK3ByZWJ1aWx0LT5jbHVzdF9wY3VyLiAgVGh1cywgdGhpcyBpbXBsZW1lbnRzIGEgJ21p bmktcm9sbGJhY2snIHRoYXQKK3JlbGVhc2VzIHRoZSBsYXRlc3QgY2x1c3RlcmVkIGluZGV4IHJl Y29yZCBsb2NrIHdlIHNldC4gKi8KIAogaW50CiByb3dfdW5sb2NrX2Zvcl9teXNxbCgKIC8qPT09 PT09PT09PT09PT09PT0qLwogCQkJCQkvKiBvdXQ6IGVycm9yIGNvZGUgb3IgREJfU1VDQ0VTUyAq LwotCXJvd19wcmVidWlsdF90KglwcmVidWlsdCwJLyogaW46IHByZWJ1aWx0IHN0cnVjdCBpbiBN eVNRTAorCXJvd19wcmVidWlsdF90KglwcmVidWlsdCwJLyogaW4vb3V0OiBwcmVidWlsdCBzdHJ1 Y3QgaW4gTXlTUUwKIAkJCQkJaGFuZGxlICovCiAJaWJvb2wJCWhhc19sYXRjaGVzX29uX3JlY3Mp LyogVFJVRSBpZiBjYWxsZWQgc28gdGhhdCB3ZSBoYXZlCiAJCQkJCXRoZSBsYXRjaGVzIG9uIHRo ZSByZWNvcmRzIHVuZGVyIHBjdXIKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwc2VsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMTk0MC02MHgzMnhpaXZ0cWo5dmEx CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEwMDYwMjEwMjYzNy0ydGRvdjdqZ3g2MTN2cnJzCkBAIC03NTQsOCArNzU0 LDE0IEBAIHJvd19zZWxfZ2V0X2NsdXN0X3JlYygKIAkJCTAsIGNsdXN0X3JlYywgaW5kZXgsIG9m ZnNldHMsCiAJCQlub2RlLT5yb3dfbG9ja19tb2RlLCBsb2NrX3R5cGUsIHRocik7CiAKLQkJaWYg KGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUND RVNTOgorCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCS8qIERlY2xhcmUgdGhlIHZh cmlhYmxlIHVuaW5pdGlhbGl6ZWQgaW4gVmFsZ3JpbmQuCisJCQlJdCBzaG91bGQgYmUgc2V0IHRv IERCX1NVQ0NFU1MgYXQgZnVuY19leGl0LiAqLworCQkJVU5JVl9NRU1fSU5WQUxJRCgmZXJyLCBz aXplb2YgZXJyKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBlcnJfZXhpdDsKIAkJ fQogCX0gZWxzZSB7CkBAIC04MjYsNyArODMyLDggQEAgVU5JVl9JTkxJTkUKIHVsaW50CiBzZWxf c2V0X3JlY19sb2NrKAogLyo9PT09PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1Mg b3IgZXJyb3IgY29kZSAqLworCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NL RURfUkVDLAorCQkJCW9yIGVycm9yIGNvZGUgKi8KIAlyZWNfdCoJCXJlYywJLyogaW46IHJlY29y ZCAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qIGluOiBpbmRleCAqLwogCWNvbnN0IHVsaW50 KglvZmZzZXRzLC8qIGluOiByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCkgKi8KQEAgLTEzNzQs MTEgKzEzODEsMTUgQEAgcmVjX2xvb3A6CiAJCQkJCSAgICAgICBub2RlLT5yb3dfbG9ja19tb2Rl LAogCQkJCQkgICAgICAgbG9ja190eXBlLCB0aHIpOwogCi0JCQlpZiAoZXJyICE9IERCX1NVQ0NF U1MpIHsKKwkJCXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoK KwkJCQllcnIgPSBEQl9TVUNDRVNTOworCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKIAkJCQkvKiBOb3RlIHRoYXQgaW4gdGhpcyBjYXNlIHdlIHdpbGwgc3RvcmUg aW4gcGN1cgogCQkJCXRoZSBQUkVERUNFU1NPUiBvZiB0aGUgcmVjb3JkIHdlIGFyZSB3YWl0aW5n CiAJCQkJdGhlIGxvY2sgZm9yICovCi0KIAkJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsKIAkJ CX0KIAkJfQpAQCAtMTQyOSw4ICsxNDQwLDEyIEBAIHNraXBfbG9jazoKIAkJZXJyID0gc2VsX3Nl dF9yZWNfbG9jayhyZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJCSAgICAgICBub2RlLT5yb3dfbG9j a19tb2RlLCBsb2NrX3R5cGUsIHRocik7CiAKLQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0K KwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQllcnIg PSBEQl9TVUNDRVNTOworCQljYXNlIERCX1NVQ0NFU1M6CisJCQlicmVhazsKKwkJZGVmYXVsdDoK IAkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQl9CiAJfQpAQCAtMjc0NSw3ICsyNzYwLDgg QEAgc3RhdGljCiB1bGludAogcm93X3NlbF9nZXRfY2x1c3RfcmVjX2Zvcl9teXNxbCgKIC8qPT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUNDRVNTIG9yIGVy cm9yIGNvZGUgKi8KKwkJCQkvKiBvdXQ6IERCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JF QywKKwkJCQlvciBlcnJvciBjb2RlICovCiAJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LC8qIGlu OiBwcmVidWlsdCBzdHJ1Y3QgaW4gdGhlIGhhbmRsZSAqLwogCWRpY3RfaW5kZXhfdCoJc2VjX2lu ZGV4LC8qIGluOiBzZWNvbmRhcnkgaW5kZXggd2hlcmUgcmVjIHJlc2lkZXMgKi8KIAlyZWNfdCoJ CXJlYywJLyogaW46IHJlY29yZCBpbiBhIG5vbi1jbHVzdGVyZWQgaW5kZXg7IGlmCkBAIC0yODI2 LDYgKzI4NDIsNyBAQCByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogCiAJCWNsdXN0 X3JlYyA9IE5VTEw7CiAKKwkJZXJyID0gREJfU1VDQ0VTUzsKIAkJZ290byBmdW5jX2V4aXQ7CiAJ fQogCkBAIC0yODQwLDggKzI4NTcsMTEgQEAgcm93X3NlbF9nZXRfY2x1c3RfcmVjX2Zvcl9teXNx bCgKIAkJZXJyID0gbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygKIAkJCTAsIGNs dXN0X3JlYywgY2x1c3RfaW5kZXgsICpvZmZzZXRzLAogCQkJcHJlYnVpbHQtPnNlbGVjdF9sb2Nr X3R5cGUsIExPQ0tfUkVDX05PVF9HQVAsIHRocik7Ci0JCWlmIChlcnIgIT0gREJfU1VDQ0VTUykg ewotCisJCXN3aXRjaCAoZXJyKSB7CisJCWNhc2UgREJfU1VDQ0VTUzoKKwkJY2FzZSBEQl9TVUND RVNTX0xPQ0tFRF9SRUM6CisJCQlicmVhazsKKwkJZGVmYXVsdDoKIAkJCWdvdG8gZXJyX2V4aXQ7 CiAJCX0KIAl9IGVsc2UgewpAQCAtMjkwMCw2ICsyOTIwLDggQEAgcm93X3NlbF9nZXRfY2x1c3Rf cmVjX2Zvcl9teXNxbCgKIAkJCQkgICAgIHJlYywgc2VjX2luZGV4LCBjbHVzdF9yZWMsIGNsdXN0 X2luZGV4KSk7CiAjZW5kaWYKIAkJfQorCisJCWVyciA9IERCX1NVQ0NFU1M7CiAJfQogCiBmdW5j X2V4aXQ6CkBAIC0yOTEyLDcgKzI5MzQsNiBAQCBmdW5jX2V4aXQ6CiAJCWJ0cl9wY3VyX3N0b3Jl X3Bvc2l0aW9uKHByZWJ1aWx0LT5jbHVzdF9wY3VyLCBtdHIpOwogCX0KIAotCWVyciA9IERCX1NV Q0NFU1M7CiBlcnJfZXhpdDoKIAlyZXR1cm4oZXJyKTsKIH0KQEAgLTM2MjYsOCArMzY0NywxMiBA QCBzaG9ydGN1dF9mYWlsc190b29fYmlnX3JlYzoKIAkJCQkJICAgICAgIHByZWJ1aWx0LT5zZWxl Y3RfbG9ja190eXBlLAogCQkJCQkgICAgICAgTE9DS19HQVAsIHRocik7CiAKLQkJCWlmIChlcnIg IT0gREJfU1VDQ0VTUykgewotCisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNT X0xPQ0tFRF9SRUM6CisJCQkJZXJyID0gREJfU1VDQ0VTUzsKKwkJCWNhc2UgREJfU1VDQ0VTUzoK KwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CiAJCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJ CQl9CiAJCX0KQEAgLTM3MjQsOCArMzc0OSwxMiBAQCByZWNfbG9vcDoKIAkJCQkJICAgICAgIHBy ZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlLAogCQkJCQkgICAgICAgTE9DS19PUkRJTkFSWSwgdGhy KTsKIAotCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJCXN3aXRjaCAoZXJyKSB7CisJ CQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQllcnIgPSBEQl9TVUNDRVNTOworCQkJ Y2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKIAkJCQlnb3RvIGxvY2tf d2FpdF9vcl9lcnJvcjsKIAkJCX0KIAkJfQpAQCAtMzg1Niw4ICszODg1LDExIEBAIHdyb25nX29m ZnM6CiAJCQkJCXByZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlLCBMT0NLX0dBUCwKIAkJCQkJdGhy KTsKIAotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCQkJc3dpdGNoIChlcnIpIHsK KwkJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CisJ CQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CiAJCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwog CQkJCX0KIAkJCX0KQEAgLTM4OTEsOCArMzkyMywxMSBAQCB3cm9uZ19vZmZzOgogCQkJCQlwcmVi dWlsdC0+c2VsZWN0X2xvY2tfdHlwZSwgTE9DS19HQVAsCiAJCQkJCXRocik7CiAKLQkJCQlpZiAo ZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQkJCXN3aXRjaCAoZXJyKSB7CisJCQkJY2FzZSBEQl9T VUNDRVNTX0xPQ0tFRF9SRUM6CisJCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCQlicmVhazsKKwkJ CQlkZWZhdWx0OgogCQkJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsKIAkJCQl9CiAJCQl9CkBA IC0zOTYxLDE1ICszOTk2LDIxIEBAIG5vX2dhcF9sb2NrOgogCiAJCXN3aXRjaCAoZXJyKSB7CiAJ CQlyZWNfdCoJb2xkX3ZlcnM7Ci0JCWNhc2UgREJfU1VDQ0VTUzoKKwkJY2FzZSBEQl9TVUNDRVNT X0xPQ0tFRF9SRUM6CiAJCQlpZiAoc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nCi0JCQkgICAg fHwgdHJ4LT5pc29sYXRpb25fbGV2ZWwgPD0gVFJYX0lTT19SRUFEX0NPTU1JVFRFRCkgeworCQkJ ICAgIHx8IHRyeC0+aXNvbGF0aW9uX2xldmVsCisJCQkgICAgPD0gVFJYX0lTT19SRUFEX0NPTU1J VFRFRCkgewogCQkJCS8qIE5vdGUgdGhhdCBhIHJlY29yZCBvZgogCQkJCXByZWJ1aWx0LT5pbmRl eCB3YXMgbG9ja2VkLiAqLwogCQkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMTsKIAkJCX0K KwkJCWVyciA9IERCX1NVQ0NFU1M7CisJCWNhc2UgREJfU1VDQ0VTUzoKIAkJCWJyZWFrOwogCQlj YXNlIERCX0xPQ0tfV0FJVDoKKwkJCS8qIE5ldmVyIHVubG9jayByb3dzIHRoYXQgd2VyZSBwYXJ0 IG9mIGEgY29uZmxpY3QuICovCisJCQlwcmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDA7CisKIAkJ CWlmIChVTklWX0xJS0VMWShwcmVidWlsdC0+cm93X3JlYWRfdHlwZQogCQkJCQkhPSBST1dfUkVB RF9UUllfU0VNSV9DT05TSVNURU5UKQogCQkJICAgIHx8IHVuaXF1ZV9zZWFyY2gKQEAgLTM5OTks NyArNDA0MCw2IEBAIG5vX2dhcF9sb2NrOgogCQkJaWYgKFVOSVZfTElLRUxZKHRyeC0+d2FpdF9s b2NrICE9IE5VTEwpKSB7CiAJCQkJbG9ja19jYW5jZWxfd2FpdGluZ19hbmRfcmVsZWFzZSgKIAkJ CQkJdHJ4LT53YWl0X2xvY2spOwotCQkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMDsKIAkJ CX0gZWxzZSB7CiAJCQkJbXV0ZXhfZXhpdCgma2VybmVsX211dGV4KTsKIApAQCAtNDAxMSw5ICs0 MDUxLDYgQEAgbm9fZ2FwX2xvY2s6CiAJCQkJCQkJICBVTElOVF9VTkRFRklORUQsCiAJCQkJCQkJ ICAmaGVhcCk7CiAJCQkJZXJyID0gREJfU1VDQ0VTUzsKLQkJCQkvKiBOb3RlIHRoYXQgYSByZWNv cmQgb2YKLQkJCQlwcmVidWlsdC0+aW5kZXggd2FzIGxvY2tlZC4gKi8KLQkJCQlwcmVidWlsdC0+ bmV3X3JlY19sb2NrcyA9IDE7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCQltdXRleF9leGl0KCZrZXJu ZWxfbXV0ZXgpOwpAQCAtNDE1MSwyNyArNDE4OCwzMCBAQCByZXF1aXJlc19jbHVzdF9yZWM6CiAJ CWVyciA9IHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwocHJlYnVpbHQsIGluZGV4LCBy ZWMsCiAJCQkJCQkgICAgICB0aHIsICZjbHVzdF9yZWMsCiAJCQkJCQkgICAgICAmb2Zmc2V0cywg JmhlYXAsICZtdHIpOwotCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKKwkJc3dpdGNoIChlcnIp IHsKKwkJY2FzZSBEQl9TVUNDRVNTOgorCQkJaWYgKGNsdXN0X3JlYyA9PSBOVUxMKSB7CisJCQkJ LyogVGhlIHJlY29yZCBkaWQgbm90IGV4aXN0IGluIHRoZSByZWFkIHZpZXcgKi8KKwkJCQl1dF9h ZChwcmVidWlsdC0+c2VsZWN0X2xvY2tfdHlwZSA9PSBMT0NLX05PTkUpOwogCisJCQkJZ290byBu ZXh0X3JlYzsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoK KwkJCXV0X2EoY2x1c3RfcmVjICE9IE5VTEwpOworCQkJaWYgKHNydl9sb2Nrc191bnNhZmVfZm9y X2JpbmxvZworCQkJICAgICB8fCB0cngtPmlzb2xhdGlvbl9sZXZlbAorCQkJICAgIDw9IFRSWF9J U09fUkVBRF9DT01NSVRURUQpIHsKKwkJCQkvKiBOb3RlIHRoYXQgdGhlIGNsdXN0ZXJlZCBpbmRl eCByZWNvcmQKKwkJCQl3YXMgbG9ja2VkLiAqLworCQkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tz ID0gMjsKKwkJCX0KKwkJCWVyciA9IERCX1NVQ0NFU1M7CisJCQlicmVhazsKKwkJZGVmYXVsdDoK IAkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQl9CiAKLQkJaWYgKGNsdXN0X3JlYyA9PSBO VUxMKSB7Ci0JCQkvKiBUaGUgcmVjb3JkIGRpZCBub3QgZXhpc3QgaW4gdGhlIHJlYWQgdmlldyAq LwotCQkJdXRfYWQocHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUgPT0gTE9DS19OT05FKTsKLQot CQkJZ290byBuZXh0X3JlYzsKLQkJfQotCi0JCWlmICgoc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlu bG9nCi0JCSAgICAgfHwgdHJ4LT5pc29sYXRpb25fbGV2ZWwgPD0gVFJYX0lTT19SRUFEX0NPTU1J VFRFRCkKLQkJICAgICYmIHByZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlICE9IExPQ0tfTk9ORSkg ewotCQkJLyogTm90ZSB0aGF0IGJvdGggdGhlIHNlY29uZGFyeSBpbmRleCByZWNvcmQKLQkJCWFu ZCB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCB3ZXJlIGxvY2tlZC4gKi8KLQkJCXV0X2FkKHBy ZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID09IDEpOwotCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3Mg PSAyOwotCQl9Ci0KIAkJaWYgKFVOSVZfVU5MSUtFTFkocmVjX2dldF9kZWxldGVkX2ZsYWcoY2x1 c3RfcmVjLCBjb21wKSkpIHsKIAogCQkJLyogVGhlIHJlY29yZCBpcyBkZWxldGUgbWFya2VkOiB3 ZSBjYW4gc2tpcCBpdCAqLwoK --===============0634707778== 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.1-innodb/ # testament_sha1: daafca6ed0b16e9fcd18b9fa8c4bc02ae797d39a # timestamp: 2010-06-02 13:26:51 +0300 # base_revision_id: marko.makela@stripped\ # 60x32xiivtqj9va1 # # Begin bundle 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 AA== --===============0634707778==--