From: marko.makela Date: April 5 2011 11:32am Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3562 to 3564) List-Archive: http://lists.mysql.com/commits/134708 Message-Id: <201104051132.p35BWqim020568@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1221579639==" --===============1221579639== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM1NjQgTWFya28gTcOka2Vsw6QJMjAxMS0wNC0wNSBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNS1pbm5vZGIgdG8gbXlzcWwtdHJ1bmstaW5ub2RiLgoKICAgIG1vZGlmaWVkOgogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3MwdGhyZWFkLmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9vcy9vczB0aHJlYWQuYwogMzU2MyBNYXJrbyBNw6RrZWzDpAkyMDExLTA0LTA1IFttZXJnZV0K ICAgICAgTWVyZ2UgbXlzcWwtNS41LWlubm9kYiB0byBteXNxbC10cnVuay1pbm5vZGIuCgogICAg bW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwogICAgICBzdG9y YWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L2xvZzBsb2cuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL29zMHN5bmMuaAogICAg ICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3MwdGhyZWFkLmgKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3NydjBzcnYuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3lu YzBzeW5jLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwZGJnLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3V0MHV0LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swd2FpdC5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYwogICAgICBzdG9yYWdlL2lubm9iYXNl L29zL29zMGZpbGUuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL29zL29zMHN5bmMuYwogICAgICBz dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jv dy9yb3cwbXlzcWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2 L3NydjBzdGFydC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMuYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwcm9sbC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv dHJ4L3RyeDB0cnguYwogMzU2MiBWYXNpbCBEaW1vdgkyMDExLTA0LTA1IFttZXJnZV0KICAgICAg TWVyZ2UgbXlzcWwtNS41LWlubm9kYiAtPiBteXNxbC10cnVuay1pbm5vZGIKICAgICAgCiAgICAg IEluIGFkZGl0aW9uIHRvIHRoZSBtZXJnZWQgdGVzdGNhc2UgZnJvbSA1LjUgdGhpcyBjaGFuZ2Vz ZXQgYWxzbyBmaXhlcwogICAgICB0aGUgYnVnIHdoaWNoIGlzIG9ubHkgcHJlc2VudCBpbiA1LjYu CiAgICAgIAogICAgICBJbiBsb2NrX3JlY19sb2NrX2Zhc3QoKSB3ZSBzaG91bGQgcmV0dXJuIExP Q0tfUkVDX1NVQ0NFU1NfQ1JFQVRFRCBvbmx5CiAgICAgIGlmIGEgbmV3IGxvY2sgc3RydWN0IGhh cyBiZWVuIGNyZWF0ZWQgb3IgaWYgd2UgaGF2ZSBzZXQgdGhlCiAgICAgIGNvcnJlc3BvbmRpbmcg Yml0IGluIGFuIGV4aXN0aW5nIHN0cnVjdC4gSWYgdGhlIGJpdCBpcyBhbHJlYWR5IHNldCB0aGVu CiAgICAgIHdlIHNob3VsZCByZXR1cm4gTE9DS19SRUNfU1VDQ0VTUy4KICAgICAgCiAgICAgIFJl dmlld2VkIGJ5OglNYXJrbyAoaHR0cHM6Ly9zdm4uaW5ub2RiLmNvbS9yYi9yLzYyMy8pCgogICAg YWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzU5NDEwLnJl c3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1OTQxMC50ZXN0 CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9jay5jCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29t LTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9i dWYvYnVmMGZsdS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTEyNTM4 LTZucmtuZXd5bTAyMm5xZjYKQEAgLTE3NDQsNyArMTc0NCw3IEBAIGJ1Zl9mbHVzaF9iYXRjaCgK IAl1dF9hZChmbHVzaF90eXBlID09IEJVRl9GTFVTSF9MUlUgfHwgZmx1c2hfdHlwZSA9PSBCVUZf RkxVU0hfTElTVCk7CiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJdXRfYWQoKGZsdXNoX3R5cGUg IT0gQlVGX0ZMVVNIX0xJU1QpCi0JICAgICAgfHwgc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2dl bihUUlVFKSk7CisJICAgICAgfHwgc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2V4Y2VwdF9kaWN0 KCkpOwogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCiAJYnVmX3Bvb2xfbXV0ZXhfZW50 ZXIoYnVmX3Bvb2wpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZmlsL2Zp bDBmaWwuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYworKysgYi9z dG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA0MDUxMTI1MzgtNm5ya25ld3ltMDIybnFmNgpAQCAtNDUyNCw4ICs0NTI0LDggQEAg ZmlsX2Fpb193YWl0KAogCQlyZXQgPSBvc19haW9fbGludXhfaGFuZGxlKHNlZ21lbnQsICZmaWxf bm9kZSwKIAkJCQkJICAmbWVzc2FnZSwgJnR5cGUpOwogI2Vsc2UKLQkJcmV0ID0gMDsgLyogRWxp bWluYXRlIGNvbXBpbGVyIHdhcm5pbmcgKi8KIAkJdXRfZXJyb3I7CisJCXJldCA9IDA7IC8qIEVs aW1pbmF0ZSBjb21waWxlciB3YXJuaW5nICovCiAjZW5kaWYKIAl9IGVsc2UgewogCQlzcnZfc2V0 X2lvX3RocmVhZF9vcF9pbmZvKHNlZ21lbnQsICJzaW11bGF0ZWQgYWlvIGhhbmRsZSIpOwpAQCAt NDUzNSw2ICs0NTM1LDEwIEBAIGZpbF9haW9fd2FpdCgKIAl9CiAKIAl1dF9hKHJldCk7CisJaWYg KFVOSVZfVU5MSUtFTFkoZmlsX25vZGUgPT0gTlVMTCkpIHsKKwkJdXRfYWQoc3J2X3NodXRkb3du X3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpOworCQlyZXR1cm47CisJfQogCiAJ c3J2X3NldF9pb190aHJlYWRfb3BfaW5mbyhzZWdtZW50LCAiY29tcGxldGUgaW8gZm9yIGZpbCBu b2RlIik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9n MGxvZy5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2xvZzBsb2cuaWMJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9sb2cwbG9nLmljCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTQzOSw3ICs0 MzksNyBAQCBsb2dfZnJlZV9jaGVjayh2b2lkKQogewogCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVH Ci0JdXRfYWQoc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2dlbihUUlVFKSk7CisJdXRfYWQoc3lu Y190aHJlYWRfbGV2ZWxzX2VtcHR5X2V4Y2VwdF9kaWN0KCkpOwogI2VuZGlmIC8qIFVOSVZfU1lO Q19ERUJVRyAqLwogCiAJaWYgKGxvZ19zeXMtPmNoZWNrX2ZsdXNoX29yX2NoZWNrcG9pbnQpIHsK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3Mwc3luYy5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3Mwc3luYy5oCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYworKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvb3Mwc3luYy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwNDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTE2MiwxMCArMTYyLDcgQEAgb3Nf ZXZlbnRfZnJlZSgKIAlvc19ldmVudF90CWV2ZW50KTsJLyohPCBpbjogZXZlbnQgdG8gZnJlZSAq LwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLVdhaXRzIGZvciBhbiBldmVudCBvYmplY3QgdW50aWwgaXQgaXMgaW4gdGhl IHNpZ25hbGVkIHN0YXRlLiBJZgotc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9F WElUX1RIUkVBRFMgdGhpcyBhbHNvIGV4aXRzIHRoZQotd2FpdGluZyB0aHJlYWQgd2hlbiB0aGUg ZXZlbnQgYmVjb21lcyBzaWduYWxlZCAob3IgaW1tZWRpYXRlbHkgaWYgdGhlCi1ldmVudCBpcyBh bHJlYWR5IGluIHRoZSBzaWduYWxlZCBzdGF0ZSkuCitXYWl0cyBmb3IgYW4gZXZlbnQgb2JqZWN0 IHVudGlsIGl0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZS4KIAogVHlwaWNhbGx5LCBpZiB0aGUg ZXZlbnQgaGFzIGJlZW4gc2lnbmFsbGVkIGFmdGVyIHRoZSBvc19ldmVudF9yZXNldCgpCiB3ZSds bCByZXR1cm4gaW1tZWRpYXRlbHkgYmVjYXVzZSBldmVudC0+aXNfc2V0ID09IFRSVUUuCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL29zMHRocmVhZC5oJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3MwdGhyZWFkLmgJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9vczB0aHJlYWQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDQwNTExMjUzOC02bnJrbmV3eW0wMjJucWY2CkBAIC0xMDcsOCArMTA3LDkgQEAgVU5J Vl9JTlRFUk4KIHZvaWQKIG9zX3RocmVhZF9leGl0KAogLyo9PT09PT09PT09PSovCi0Jdm9pZCoJ ZXhpdF92YWx1ZSk7CS8qITwgaW46IGV4aXQgdmFsdWU7IGluIFdpbmRvd3MgdGhpcyB2b2lkKgor CXZvaWQqCWV4aXRfdmFsdWUpCS8qITwgaW46IGV4aXQgdmFsdWU7IGluIFdpbmRvd3MgdGhpcyB2 b2lkKgogCQkJCWlzIGNhc3QgYXMgYSBEV09SRCAqLworCV9fYXR0cmlidXRlX18oKGNvbGQsIG5v cmV0dXJuKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBSZXR1cm5zIHRoZSB0aHJlYWQgaWRlbnRpZmllciBv ZiBjdXJyZW50IHRocmVhZC4KIEByZXR1cm4JY3VycmVudCB0aHJlYWQgaWRlbnRpZmllciAqLwpA QCAtMTE3LDEzICsxMTgsNiBAQCBvc190aHJlYWRfaWRfdAogb3NfdGhyZWFkX2dldF9jdXJyX2lk KHZvaWQpOwogLyo9PT09PT09PT09PT09PT09PT09PT09PT0qLwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotUmV0 dXJucyBoYW5kbGUgdG8gdGhlIGN1cnJlbnQgdGhyZWFkLgotQHJldHVybgljdXJyZW50IHRocmVh ZCBoYW5kbGUgKi8KLVVOSVZfSU5URVJOCi1vc190aHJlYWRfdAotb3NfdGhyZWFkX2dldF9jdXJy KHZvaWQpOwotLyo9PT09PT09PT09PT09PT09PT09PSovCi0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBBZHZpc2Vz IHRoZSBvcyB0byBnaXZlIHVwIHJlbWFpbmRlciBvZiB0aGUgdGhyZWFkJ3MgdGltZSBzbGljZS4g Ki8KIFVOSVZfSU5URVJOCiB2b2lkCkBAIC0xMzYsMjkgKzEzMCw2IEBAIHZvaWQKIG9zX3RocmVh ZF9zbGVlcCgKIC8qPT09PT09PT09PT09Ki8KIAl1bGludAl0bSk7CS8qITwgaW46IHRpbWUgaW4g bWljcm9zZWNvbmRzICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotR2V0cyBhIHRocmVhZCBwcmlvcml0eS4K LUByZXR1cm4JcHJpb3JpdHkgKi8KLVVOSVZfSU5URVJOCi11bGludAotb3NfdGhyZWFkX2dldF9w cmlvcml0eSgKLS8qPT09PT09PT09PT09PT09PT09PSovCi0Jb3NfdGhyZWFkX3QJaGFuZGxlKTsv KiE8IGluOiBPUyBoYW5kbGUgdG8gdGhlIHRocmVhZCAqLwotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVNldHMg YSB0aHJlYWQgcHJpb3JpdHkuICovCi1VTklWX0lOVEVSTgotdm9pZAotb3NfdGhyZWFkX3NldF9w cmlvcml0eSgKLS8qPT09PT09PT09PT09PT09PT09PSovCi0Jb3NfdGhyZWFkX3QJaGFuZGxlLAkv KiE8IGluOiBPUyBoYW5kbGUgdG8gdGhlIHRocmVhZCAqLwotCXVsaW50CQlwcmkpOwkvKiE8IGlu OiBwcmlvcml0eTogb25lIG9mIE9TX1BSSU9SSVRZXy4uLiAqLwotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUdl dHMgdGhlIGxhc3Qgb3BlcmF0aW5nIHN5c3RlbSBlcnJvciBjb2RlIGZvciB0aGUgY2FsbGluZyB0 aHJlYWQuCi1AcmV0dXJuCWxhc3QgZXJyb3Igb24gV2luZG93cywgMCBvdGhlcndpc2UgKi8KLVVO SVZfSU5URVJOCi11bGludAotb3NfdGhyZWFkX2dldF9sYXN0X2Vycm9yKHZvaWQpOwotLyo9PT09 PT09PT09PT09PT09PT09PT09PT09PSovCiAKICNpZm5kZWYgVU5JVl9OT05JTkwKICNpbmNsdWRl ICJvczB0aHJlYWQuaWMiCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3NydjBzcnYuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3NydjBzcnYuaAly ZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVl ZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3NydjBzcnYuaAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMjUzOC02bnJrbmV3eW0wMjJucWY2CkBAIC03NzQs OCArNzc0LDYgQEAgc3RydWN0IGV4cG9ydF92YXJfc3RydWN0ewogCiAvKiogVGhyZWFkIHNsb3Qg aW4gdGhlIHRocmVhZCB0YWJsZS4gICovCiBzdHJ1Y3Qgc3J2X3Nsb3Rfc3RydWN0ewotCW9zX3Ro cmVhZF9pZF90CWlkOwkJCS8qITwgdGhyZWFkIGlkICovCi0Jb3NfdGhyZWFkX3QJaGFuZGxlOwkJ CS8qITwgdGhyZWFkIGhhbmRsZSAqLwogCWVudW0gc3J2X3RocmVhZF90eXBlCiAJCQl0eXBlOwkJ CS8qITwgdGhyZWFkIHR5cGU6IHVzZXIsCiAJCQkJCQl1dGlsaXR5IGV0Yy4gKi8KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3N5bmMwc3luYy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwNDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTQyMywxMyArNDIzLDYgQEAgc3luY190 aHJlYWRfcmVzZXRfbGV2ZWwoCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KIAl2b2lkKglsYXRj aCk7CS8qITwgaW46IHBvaW50ZXIgdG8gYSBtdXRleCBvciBhbiBydy1sb2NrICovCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgotQ2hlY2tzIHRoYXQgdGhlIGxldmVsIGFycmF5IGZvciB0aGUgY3VycmVudCB0aHJl YWQgaXMgZW1wdHkuCi1AcmV0dXJuCVRSVUUgaWYgZW1wdHkgKi8KLVVOSVZfSU5URVJOCi1pYm9v bAotc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5KHZvaWQpOwotLyo9PT09PT09PT09PT09PT09PT09 PT09PT09PSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgogQ2hlY2tzIGlmIHRoZSBsZXZlbCBhcnJheSBmb3Ig dGhlIGN1cnJlbnQgdGhyZWFkIGNvbnRhaW5zIGEKIG11dGV4IG9yIHJ3LWxhdGNoIGF0IHRoZSBz cGVjaWZpZWQgbGV2ZWwuCiBAcmV0dXJuCWEgbWF0Y2hpbmcgbGF0Y2gsIG9yIE5VTEwgaWYgbm90 IGZvdW5kICovCkBAIC00NDAsMTcgKzQzMywzMyBAQCBzeW5jX3RocmVhZF9sZXZlbHNfY29udGFp bnMoCiAJdWxpbnQJbGV2ZWwpOwkJCS8qITwgaW46IGxhdGNoaW5nIG9yZGVyIGxldmVsCiAJCQkJ CShTWU5DX0RJQ1QsIC4uLikqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUNoZWNrcyBpZiB0aGUgbGV2ZWwg YXJyYXkgZm9yIHRoZSBjdXJyZW50IHRocmVhZCBpcyBlbXB0eS4KK0NoZWNrcyB0aGF0IHRoZSBs ZXZlbCBhcnJheSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGVtcHR5LgogQHJldHVybglhIGxh dGNoLCBvciBOVUxMIGlmIGVtcHR5IGV4Y2VwdCB0aGUgZXhjZXB0aW9ucyBzcGVjaWZpZWQgYmVs b3cgKi8KIFVOSVZfSU5URVJOCiB2b2lkKgogc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X2dl bigKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JaWJvb2wJZGljdF9tdXRleF9h bGxvd2VkKTsJLyohPCBpbjogVFJVRSBpZiBkaWN0aW9uYXJ5IG11dGV4IGlzCi0JCQkJCWFsbG93 ZWQgdG8gYmUgb3duZWQgYnkgdGhlIHRocmVhZCwKLQkJCQkJYWxzbyBwdXJnZV9pc19ydW5uaW5n IG11dGV4IGlzCi0JCQkJCWFsbG93ZWQgKi8KLSNkZWZpbmUgc3luY190aHJlYWRfbGV2ZWxzX2Vt cHR5X2dlbihkKSAoIXN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV9nZW4oZCkpCisJaWJvb2wJ ZGljdF9tdXRleF9hbGxvd2VkKQkvKiE8IGluOiBUUlVFIGlmIGRpY3Rpb25hcnkgbXV0ZXggaXMK KwkJCQkJYWxsb3dlZCB0byBiZSBvd25lZCBieSB0aGUgdGhyZWFkICovCisJX19hdHRyaWJ1dGVf Xygod2Fybl91bnVzZWRfcmVzdWx0KSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ2hlY2tzIGlmIHRoZSBs ZXZlbCBhcnJheSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGVtcHR5LAorZXhjZXB0IGZvciBk YXRhIGRpY3Rpb25hcnkgbGF0Y2hlcy4gKi8KKyNkZWZpbmUgc3luY190aHJlYWRfbGV2ZWxzX2Vt cHR5X2V4Y2VwdF9kaWN0KCkJCVwKKwkoIXN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV9nZW4o VFJVRSkpCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgorQ2hlY2tzIGlmIHRoZSBsZXZlbCBhcnJheSBmb3IgdGhl IGN1cnJlbnQgdGhyZWFkIGlzIGVtcHR5LAorZXhjZXB0IGZvciB0aGUgYnRyX3NlYXJjaF9sYXRj aC4KK0ByZXR1cm4JYSBsYXRjaCwgb3IgTlVMTCBpZiBlbXB0eSBleGNlcHQgdGhlIGV4Y2VwdGlv bnMgc3BlY2lmaWVkIGJlbG93ICovCitVTklWX0lOVEVSTgordm9pZCoKK3N5bmNfdGhyZWFkX2xl dmVsc19ub25lbXB0eV90cngoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCWli b29sCWhhc19zZWFyY2hfbGF0Y2gpCisJCQkJLyohPCBpbjogVFJVRSBpZiBhbmQgb25seSBpZiB0 aGUgdGhyZWFkCisJCQkJaXMgc3VwcG9zZWQgdG8gaG9sZCBidHJfc2VhcmNoX2xhdGNoICovCisJ X19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSk7CisKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBH ZXRzIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgYSByZXNlcnZlZCBtdXRleC4gKi8KIFVOSVZf SU5URVJOCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0 cnguaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAlyZXZpZDp2YXNp bC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDQwNTExMjUzOC02bnJrbmV3eW0wMjJucWY2CkBAIC02NzIsMTQgKzY3Miwx MCBAQCBzdHJ1Y3QgdHJ4X3N0cnVjdHsKIAkJCQkJY29udGFpbnMgYSBwb2ludGVyIHRvIHRoZSBs YXRlc3QgZmlsZQogCQkJCQluYW1lOyB0aGlzIGlzIE5VTEwgaWYgYmlubG9nIGlzIG5vdAogCQkJ CQl1c2VkICovCi0JaWJfaW50NjRfdAlteXNxbF9sb2dfb2Zmc2V0Oy8qITwgaWYgTXlTUUwgYmlu bG9nIGlzIHVzZWQsIHRoaXMKLQkJCQkJIGZpZWxkIGNvbnRhaW5zIHRoZSBlbmQgb2Zmc2V0IG9m IHRoZQotCQkJCQkgYmlubG9nIGVudHJ5ICovCi0Jb3NfdGhyZWFkX2lkX3QJbXlzcWxfdGhyZWFk X2lkOy8qITwgaWQgb2YgdGhlIE15U1FMIHRocmVhZCBhc3NvY2lhdGVkCi0JCQkJCXdpdGggdGhp cyB0cmFuc2FjdGlvbiBvYmplY3QgKi8KLQl1bGludAkJbXlzcWxfcHJvY2Vzc19ubzsvKiE8IHNp bmNlIGluIExpbnV4LCAndG9wJyByZXBvcnRzCi0JCQkJCXByb2Nlc3MgaWQncyBhbmQgbm90IHRo cmVhZCBpZCdzLCB3ZQotCQkJCQlzdG9yZSB0aGUgcHJvY2VzcyBudW1iZXIgdG9vICovCisJaWJf aW50NjRfdAlteXNxbF9sb2dfb2Zmc2V0OworCQkJCQkvKiE8IGlmIE15U1FMIGJpbmxvZyBpcyB1 c2VkLCB0aGlzCisJCQkJCWZpZWxkIGNvbnRhaW5zIHRoZSBlbmQgb2Zmc2V0IG9mIHRoZQorCQkJ CQliaW5sb2cgZW50cnkgKi8KIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAJ dWxpbnQJCW5fbXlzcWxfdGFibGVzX2luX3VzZTsgLyohPCBudW1iZXIgb2YgSW5ub2Jhc2UgdGFi bGVzCiAJCQkJCXVzZWQgaW4gdGhlIHByb2Nlc3Npbmcgb2YgdGhlIGN1cnJlbnQKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwZGJnLmgnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS91dDBkYmcuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29t LTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3V0MGRiZy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTEy NTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTUwLDkgKzUwLDEwIEBAIFVOSVZfSU5URVJOCiB2b2lk CiB1dF9kYmdfYXNzZXJ0aW9uX2ZhaWxlZCgKIC8qPT09PT09PT09PT09PT09PT09PT0qLwotCWNv bnN0IGNoYXIqIGV4cHIsCS8qITwgaW46IHRoZSBmYWlsZWQgYXNzZXJ0aW9uICovCi0JY29uc3Qg Y2hhciogZmlsZSwJLyohPCBpbjogc291cmNlIGZpbGUgY29udGFpbmluZyB0aGUgYXNzZXJ0aW9u ICovCi0JdWxpbnQgbGluZSk7CQkvKiE8IGluOiBsaW5lIG51bWJlciBvZiB0aGUgYXNzZXJ0aW9u ICovCisJY29uc3QgY2hhcioJZXhwciwJLyohPCBpbjogdGhlIGZhaWxlZCBhc3NlcnRpb24gKi8K Kwljb25zdCBjaGFyKglmaWxlLAkvKiE8IGluOiBzb3VyY2UgZmlsZSBjb250YWluaW5nIHRoZSBh c3NlcnRpb24gKi8KKwl1bGludAkJbGluZSkJLyohPCBpbjogbGluZSBudW1iZXIgb2YgdGhlIGFz c2VydGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMiksIGNvbGQpKTsKIAogI2lmIGRl ZmluZWQoX19XSU5fXykgfHwgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQogIyB1bmRlZiBVVF9E QkdfVVNFX0FCT1JUCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L3V0MHV0LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91dDB1dC5oCXJldmlkOnZh c2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYworKysg Yi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwdXQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDQwNTExMjUzOC02bnJrbmV3eW0wMjJucWY2CkBAIC0yNzksNyArMjc5LDgg QEAgVU5JVl9JTlRFUk4KIHZvaWQKIHV0X3ByaW50X3RpbWVzdGFtcCgKIC8qPT09PT09PT09PT09 PT09Ki8KLQlGSUxFKiAgZmlsZSk7IC8qITwgaW46IGZpbGUgd2hlcmUgdG8gcHJpbnQgKi8KKwlG SUxFKglmaWxlKQkvKiE8IGluOiBmaWxlIHdoZXJlIHRvIHByaW50ICovCisJX19hdHRyaWJ1dGVf Xygobm9ubnVsbCwgY29sZCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTcHJpbnRmcyBhIHRpbWVzdGFtcCB0byBhIGJ1 ZmZlciwgMTMuLjE0IGNoYXJzIHBsdXMgdGVybWluYXRpbmcgTlVMLiAqLwogVU5JVl9JTlRFUk4K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazB3YWl0LmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2NrMHdhaXQuYwlyZXZpZDp2YXNpbC5kaW1vdkBv cmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9sb2NrL2xvY2swd2FpdC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwNDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTU4LDEwICs1OCw5IEBAIGxvY2tfd2Fp dF90YWJsZV9wcmludCh2b2lkKQogCWZvciAoaSA9IDA7IGkgPCBPU19USFJFQURfTUFYX047IGkr KywgKytzbG90KSB7CiAKIAkJZnByaW50ZihzdGRlcnIsCi0JCQkiU2xvdCAlbHU6IHRocmVhZCBp ZCAlbHUsIHR5cGUgJWx1LCIKKwkJCSJTbG90ICVsdTogdGhyZWFkIHR5cGUgJWx1LCIKIAkJCSIg aW4gdXNlICVsdSwgc3VzcCAlbHUsIHRpbWVvdXQgJWx1LCB0aW1lICVsdVxuIiwKIAkJCSh1bG9u ZykgaSwKLQkJCSh1bG9uZykgb3NfdGhyZWFkX3BmKHNsb3QtPmlkKSwKIAkJCSh1bG9uZykgc2xv dC0+dHlwZSwKIAkJCSh1bG9uZykgc2xvdC0+aW5fdXNlLAogCQkJKHVsb25nKSBzbG90LT5zdXNw ZW5kZWQsCkBAIC0xNTUsOCArMTU0LDYgQEAgbG9ja193YWl0X3RhYmxlX3Jlc2VydmVfc2xvdCgK IAkJCXNsb3QtPmluX3VzZSA9IFRSVUU7CiAJCQlzbG90LT50aHIgPSB0aHI7CiAJCQlzbG90LT50 aHItPnNsb3QgPSBzbG90OwotCQkJc2xvdC0+aWQgPSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKTsK LQkJCXNsb3QtPmhhbmRsZSA9IG9zX3RocmVhZF9nZXRfY3VycigpOwogCiAJCQlpZiAoc2xvdC0+ ZXZlbnQgPT0gTlVMTCkgewogCQkJCXNsb3QtPmV2ZW50ID0gb3NfZXZlbnRfY3JlYXRlKE5VTEwp OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNs ZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYworKysgYi9zdG9yYWdlL2lubm9i YXNlL2xvZy9sb2cwbG9nLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUx MTI1MzgtNm5ya25ld3ltMDIybnFmNgpAQCAtMzE0NSw2ICszMTQ1LDggQEAgbG9nc19lbXB0eV9h bmRfbWFya19maWxlc19hdF9zaHV0ZG93bih2bwogCXVsaW50CQkJdG90YWxfdHJ4OwogCXVsaW50 CQkJcGVuZGluZ19pbzsKIAllbnVtIHNydl90aHJlYWRfdHlwZQlhY3RpdmVfdGhkOworCWNvbnN0 IGNoYXIqCQl0aHJlYWRfbmFtZTsKKwlpYm9vbAkJCXNlcnZlcl9idXN5OwogCiAJaWYgKHNydl9w cmludF92ZXJib3NlX2xvZykgewogCQl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKQEAgLTMx NTksMjkgKzMxNjEsMjQgQEAgbG9vcDoKIAogCWNvdW50Kys7CiAKLQkvKiBXZSBuZWVkIHRoZSBt b25pdG9yIHRocmVhZHMgdG8gc3RvcCBiZWZvcmUgd2UgcHJvY2VlZCB3aXRoIGEKLQlub3JtYWwg c2h1dGRvd24uIEluIGNhc2Ugb2YgdmVyeSBmYXN0IHNodXRkb3duLCBob3dldmVyLCB3ZSBjYW4K LQlwcm9jZWVkIHdpdGhvdXQgd2FpdGluZyBmb3IgbW9uaXRvciB0aHJlYWRzLiAqLwotCi0JaWYg KHNydl9mYXN0X3NodXRkb3duIDwgMikgewotCSAgICAgICAJY29uc3QgY2hhcioJdGhyZWFkX25h bWU7Ci0JCQotCQl0aHJlYWRfbmFtZSA9IHNydl9hbnlfYmFja2dyb3VuZF90aHJlYWRzX2FyZV9h Y3RpdmUoKTsKKwkvKiBXZSBuZWVkIHRoZSBtb25pdG9yIHRocmVhZHMgdG8gc3RvcCBiZWZvcmUg d2UgcHJvY2VlZCB3aXRoCisJYSBzaHV0ZG93bi4gKi8KIAotCQlpZiAodGhyZWFkX25hbWUgIT0g TlVMTCkgewotCQkJLyogUHJpbnQgYSBtZXNzYWdlIGV2ZXJ5IDYwIHNlY29uZHMgaWYgd2UgYXJl IHdhaXRpbmcKLQkJCWZvciB0aGUgbW9uaXRvciB0aHJlYWQgdG8gZXhpdC4gTWFzdGVyIGFuZCB3 b3JrZXIKLQkJICAgICAgIAl0aHJlYWRzIGNoZWNrIHdpbGwgYmUgZG9uZSBsYXRlci4gKi8KLQot CQkJaWYgKHNydl9wcmludF92ZXJib3NlX2xvZyAmJiBjb3VudCA+IDYwMCkgewotCQkJCXV0X3By aW50X3RpbWVzdGFtcChzdGRlcnIpOwotCQkJCWZwcmludGYoc3RkZXJyLCAiICBJbm5vREI6IFdh aXRpbmcgZm9yICVzICIKLQkJCQkJInRvIGV4aXRcbiIsIHRocmVhZF9uYW1lKTsKLQkJCQljb3Vu dCA9IDA7Ci0JCQl9CisJdGhyZWFkX25hbWUgPSBzcnZfYW55X2JhY2tncm91bmRfdGhyZWFkc19h cmVfYWN0aXZlKCk7CiAKLQkJCWdvdG8gbG9vcDsKKwlpZiAodGhyZWFkX25hbWUgIT0gTlVMTCkg eworCQkvKiBQcmludCBhIG1lc3NhZ2UgZXZlcnkgNjAgc2Vjb25kcyBpZiB3ZSBhcmUgd2FpdGlu ZworCQlmb3IgdGhlIG1vbml0b3IgdGhyZWFkIHRvIGV4aXQuIE1hc3RlciBhbmQgd29ya2VyCisJ CXRocmVhZHMgY2hlY2sgd2lsbCBiZSBkb25lIGxhdGVyLiAqLworCisJCWlmIChzcnZfcHJpbnRf dmVyYm9zZV9sb2cgJiYgY291bnQgPiA2MDApIHsKKwkJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRl cnIpOworCQkJZnByaW50ZihzdGRlcnIsICIgIElubm9EQjogV2FpdGluZyBmb3IgJXMgdG8gZXhp dFxuIiwKKwkJCQl0aHJlYWRfbmFtZSk7CisJCQljb3VudCA9IDA7CiAJCX0KKworCQlnb3RvIGxv b3A7CiAJfQogCiAJLyogQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbG9uZ2VyIHRyYW5zYWN0aW9u cy4gV2UgbmVlZCB0aGlzIHdhaXQgZXZlbgpAQCAtMzIwNCwyMSArMzIwMSw2IEBAIGxvb3A6CiAJ CWdvdG8gbG9vcDsKIAl9CiAKLQlpZiAoc3J2X2Zhc3Rfc2h1dGRvd24gPT0gMikgewotCi0JCS8q IEluIHRoaXMgZmFzdGVzdCBzaHV0ZG93biB3ZSBkbyBub3QgZmx1c2ggdGhlIGJ1ZmZlciBwb29s OgotCQlpdCBpcyBlc3NlbnRpYWxseSBhICdjcmFzaCcgb2YgdGhlIElubm9EQiBzZXJ2ZXIuIE1h a2Ugc3VyZQotCQl0aGF0IHRoZSBsb2cgaXMgYWxsIGZsdXNoZWQgdG8gZGlzaywgc28gdGhhdCB3 ZSBjYW4gcmVjb3ZlcgotCQlhbGwgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBpbiBhIGNyYXNoIHJl Y292ZXJ5LiBXZSBtdXN0IG5vdAotCQl3cml0ZSB0aGUgbHNuIHN0YW1wcyB0byB0aGUgZGF0YSBm aWxlcywgc2luY2UgYXQgYSBzdGFydHVwCi0JCUlubm9EQiBkZWR1Y2VzIGZyb20gdGhlIHN0YW1w cyBpZiB0aGUgcHJldmlvdXMgc2h1dGRvd24gd2FzCi0JCWNsZWFuLiAqLwotCi0JCWxvZ19idWZm ZXJfZmx1c2hfdG9fZGlzaygpOwotCi0JCXJldHVybjsgLyogV2UgU0tJUCBBTEwgVEhFIFJFU1Qg ISEgKi8KLQl9Ci0KIAkvKiBDaGVjayB0aGF0IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMgYXJlIHN1 c3BlbmRlZCAqLwogCiAJYWN0aXZlX3RoZCA9IHNydl9nZXRfYWN0aXZlX3RocmVhZF90eXBlKCk7 CkBAIC0zMjc2LDE2ICszMjU4LDE1IEBAIGxvb3A6CiAJCX0KIAl9CiAKLQltdXRleF9lbnRlcigm KGxvZ19zeXMtPm11dGV4KSk7Ci0KLQlpZiAobG9nX3N5cy0+bl9wZW5kaW5nX2NoZWNrcG9pbnRf d3JpdGVzCisJbXV0ZXhfZW50ZXIoJmxvZ19zeXMtPm11dGV4KTsKKwlzZXJ2ZXJfYnVzeSA9IGxv Z19zeXMtPm5fcGVuZGluZ19jaGVja3BvaW50X3dyaXRlcwogI2lmZGVmIFVOSVZfTE9HX0FSQ0hJ VkUKLQkgICAgfHwgbG9nX3N5cy0+bl9wZW5kaW5nX2FyY2hpdmVfaW9zCisJCXx8IGxvZ19zeXMt Pm5fcGVuZGluZ19hcmNoaXZlX2lvcwogI2VuZGlmIC8qIFVOSVZfTE9HX0FSQ0hJVkUgKi8KLQkg ICAgfHwgbG9nX3N5cy0+bl9wZW5kaW5nX3dyaXRlcykgewotCi0JCW11dGV4X2V4aXQoJihsb2df c3lzLT5tdXRleCkpOworCQl8fCBsb2dfc3lzLT5uX3BlbmRpbmdfd3JpdGVzOworCW11dGV4X2V4 aXQoJmxvZ19zeXMtPm11dGV4KTsKIAorCWlmIChzZXJ2ZXJfYnVzeSkgewogCQlpZiAoc3J2X3By aW50X3ZlcmJvc2VfbG9nICYmIGNvdW50ID4gNjAwKSB7CiAJCQl1dF9wcmludF90aW1lc3RhbXAo c3RkZXJyKTsKIAkJCWZwcmludGYoc3RkZXJyLApAQCAtMzI5OCw4ICszMjc5LDYgQEAgbG9vcDoK IAkJZ290byBsb29wOwogCX0KIAotCW11dGV4X2V4aXQoJihsb2dfc3lzLT5tdXRleCkpOwotCiAJ cGVuZGluZ19pbyA9IGJ1Zl9wb29sX2NoZWNrX25vX3BlbmRpbmdfaW8oKTsKIAogCWlmIChwZW5k aW5nX2lvKSB7CkBAIC0zMzE3LDEwICszMjk2LDM2IEBAIGxvb3A6CiAjaWZkZWYgVU5JVl9MT0df QVJDSElWRQogCWxvZ19hcmNoaXZlX2FsbCgpOwogI2VuZGlmIC8qIFVOSVZfTE9HX0FSQ0hJVkUg Ki8KKwlpZiAoc3J2X2Zhc3Rfc2h1dGRvd24gPT0gMikgeworCQkvKiBJbiB0aGlzIGZhc3Rlc3Qg c2h1dGRvd24gd2UgZG8gbm90IGZsdXNoIHRoZSBidWZmZXIgcG9vbDoKKwkJaXQgaXMgZXNzZW50 aWFsbHkgYSAnY3Jhc2gnIG9mIHRoZSBJbm5vREIgc2VydmVyLiBNYWtlIHN1cmUKKwkJdGhhdCB0 aGUgbG9nIGlzIGFsbCBmbHVzaGVkIHRvIGRpc2ssIHNvIHRoYXQgd2UgY2FuIHJlY292ZXIKKwkJ YWxsIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgaW4gYSBjcmFzaCByZWNvdmVyeS4gV2UgbXVzdCBu b3QKKwkJd3JpdGUgdGhlIGxzbiBzdGFtcHMgdG8gdGhlIGRhdGEgZmlsZXMsIHNpbmNlIGF0IGEg c3RhcnR1cAorCQlJbm5vREIgZGVkdWNlcyBmcm9tIHRoZSBzdGFtcHMgaWYgdGhlIHByZXZpb3Vz IHNodXRkb3duIHdhcworCQljbGVhbi4gKi8KKworCQlsb2dfYnVmZmVyX2ZsdXNoX3RvX2Rpc2so KTsKKworCQkvKiBDaGVjayB0aGF0IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMgc3RheSBzdXNwZW5k ZWQgKi8KKwkJdGhyZWFkX25hbWUgPSBzcnZfYW55X2JhY2tncm91bmRfdGhyZWFkc19hcmVfYWN0 aXZlKCk7CisJCWlmICh0aHJlYWRfbmFtZSAhPSBOVUxMKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwK KwkJCQkiSW5ub0RCOiBXYXJuaW5nOiBiYWNrZ3JvdW5kIHRocmVhZCAlcyIKKwkJCQkiIHdva2Ug dXAgZHVyaW5nIHNodXRkb3duXG4iLCB0aHJlYWRfbmFtZSk7CisJCQlnb3RvIGxvb3A7CisJCX0K KworCQlzcnZfc2h1dGRvd25fc3RhdGUgPSBTUlZfU0hVVERPV05fTEFTVF9QSEFTRTsKKwkJZmls X2Nsb3NlX2FsbF9maWxlcygpOworCQl0aHJlYWRfbmFtZSA9IHNydl9hbnlfYmFja2dyb3VuZF90 aHJlYWRzX2FyZV9hY3RpdmUoKTsKKwkJdXRfYSghdGhyZWFkX25hbWUpOworCQlyZXR1cm47CisJ fQogCiAJbG9nX21ha2VfY2hlY2twb2ludF9hdChMU05fTUFYLCBUUlVFKTsKIAotCW11dGV4X2Vu dGVyKCYobG9nX3N5cy0+bXV0ZXgpKTsKKwltdXRleF9lbnRlcigmbG9nX3N5cy0+bXV0ZXgpOwog CiAJbHNuID0gbG9nX3N5cy0+bHNuOwogCkBAIC0zMzMxLDcgKzMzMzYsNyBAQCBsb29wOgogI2Vu ZGlmIC8qIFVOSVZfTE9HX0FSQ0hJVkUgKi8KIAkgICAgKSB7CiAKLQkJbXV0ZXhfZXhpdCgmKGxv Z19zeXMtPm11dGV4KSk7CisJCW11dGV4X2V4aXQoJmxvZ19zeXMtPm11dGV4KTsKIAogCQlnb3Rv IGxvb3A7CiAJfQpAQCAtMzM0OSwxMyArMzM1NCwxNCBAQCBsb29wOgogCWxvZ19hcmNoaXZlX2Ns b3NlX2dyb3VwcyhUUlVFKTsKICNlbmRpZiAvKiBVTklWX0xPR19BUkNISVZFICovCiAKLQltdXRl eF9leGl0KCYobG9nX3N5cy0+bXV0ZXgpKTsKKwltdXRleF9leGl0KCZsb2dfc3lzLT5tdXRleCk7 CiAKIAkvKiBDaGVjayB0aGF0IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMgc3RheSBzdXNwZW5kZWQg Ki8KLQlpZiAoc3J2X2dldF9hY3RpdmVfdGhyZWFkX3R5cGUoKSAhPSBTUlZfTk9ORSkgeworCXRo cmVhZF9uYW1lID0gc3J2X2FueV9iYWNrZ3JvdW5kX3RocmVhZHNfYXJlX2FjdGl2ZSgpOworCWlm ICh0aHJlYWRfbmFtZSAhPSBOVUxMKSB7CiAJCWZwcmludGYoc3RkZXJyLAotCQkJIklubm9EQjog V2FybmluZzogc29tZSBiYWNrZ3JvdW5kIHRocmVhZCB3b2tlIHVwIgotCQkJIiBkdXJpbmcgc2h1 dGRvd25cbiIpOworCQkJIklubm9EQjogV2FybmluZzogYmFja2dyb3VuZCB0aHJlYWQgJXMiCisJ CQkiIHdva2UgdXAgZHVyaW5nIHNodXRkb3duXG4iLCB0aHJlYWRfbmFtZSk7CiAKIAkJZ290byBs b29wOwogCX0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL29zL29zMGZpbGUu YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2Uvb3Mvb3MwZmlsZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw NDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTQwODIsMTMgKzQwODIsMTMgQEAgb3NfYWlv X2Z1bmMoCiAJfQogCiB0cnlfYWdhaW46Ci0JaWYgKG1vZGUgPT0gT1NfQUlPX05PUk1BTCkgewot CQlpZiAodHlwZSA9PSBPU19GSUxFX1JFQUQpIHsKLQkJCWFycmF5ID0gb3NfYWlvX3JlYWRfYXJy YXk7Ci0JCX0gZWxzZSB7Ci0JCQlhcnJheSA9IG9zX2Fpb193cml0ZV9hcnJheTsKLQkJfQotCX0g ZWxzZSBpZiAobW9kZSA9PSBPU19BSU9fSUJVRikgeworCXN3aXRjaCAobW9kZSkgeworCWNhc2Ug T1NfQUlPX05PUk1BTDoKKwkJYXJyYXkgPSAodHlwZSA9PSBPU19GSUxFX1JFQUQpCisJCQk/IG9z X2Fpb19yZWFkX2FycmF5CisJCQk6IG9zX2Fpb193cml0ZV9hcnJheTsKKwkJYnJlYWs7CisJY2Fz ZSBPU19BSU9fSUJVRjoKIAkJdXRfYWQodHlwZSA9PSBPU19GSUxFX1JFQUQpOwogCQkvKiBSZWR1 Y2UgcHJvYmFiaWxpdHkgb2YgZGVhZGxvY2sgYnVncyBpbiBjb25uZWN0aW9uIHdpdGggaWJ1ZjoK IAkJZG8gbm90IGxldCB0aGUgaWJ1ZiBpL28gaGFuZGxlciBzbGVlcCAqLwpAQCAtNDA5NiwxOSAr NDA5NiwyMSBAQCB0cnlfYWdhaW46CiAJCXdha2VfbGF0ZXIgPSBGQUxTRTsKIAogCQlhcnJheSA9 IG9zX2Fpb19pYnVmX2FycmF5OwotCX0gZWxzZSBpZiAobW9kZSA9PSBPU19BSU9fTE9HKSB7Ci0K KwkJYnJlYWs7CisJY2FzZSBPU19BSU9fTE9HOgogCQlhcnJheSA9IG9zX2Fpb19sb2dfYXJyYXk7 Ci0JfSBlbHNlIGlmIChtb2RlID09IE9TX0FJT19TWU5DKSB7CisJCWJyZWFrOworCWNhc2UgT1Nf QUlPX1NZTkM6CiAJCWFycmF5ID0gb3NfYWlvX3N5bmNfYXJyYXk7CiAKICNpZiBkZWZpbmVkKExJ TlVYX05BVElWRV9BSU8pCiAJCS8qIEluIExpbnV4IG5hdGl2ZSBBSU8gd2UgZG9uJ3QgdXNlIHN5 bmMgSU8gYXJyYXkuICovCiAJCXV0X2EoIXNydl91c2VfbmF0aXZlX2Fpbyk7CiAjZW5kaWYgLyog TElOVVhfTkFUSVZFX0FJTyAqLwotCX0gZWxzZSB7Ci0JCWFycmF5ID0gTlVMTDsgLyogRWxpbWlu YXRlIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwkJYnJlYWs7CisJZGVmYXVsdDoKIAkJdXRfZXJyb3I7 CisJCWFycmF5ID0gTlVMTDsgLyogRWxpbWluYXRlIGNvbXBpbGVyIHdhcm5pbmcgKi8KIAl9CiAK IAlzbG90ID0gb3NfYWlvX2FycmF5X3Jlc2VydmVfc2xvdCh0eXBlLCBhcnJheSwgbWVzc2FnZTEs IG1lc3NhZ2UyLCBmaWxlLApAQCAtNDI3MSwxMSArNDI3MywxNyBAQCBvc19haW9fd2luZG93c19o YW5kbGUoCiAJCQkJCSAgIElORklOSVRFKTsKIAl9CiAKLQlpZiAoc3J2X3NodXRkb3duX3N0YXRl ID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpIHsKLQkJb3NfdGhyZWFkX2V4aXQoTlVMTCk7 CisJb3NfbXV0ZXhfZW50ZXIoYXJyYXktPm11dGV4KTsKKworCWlmIChzcnZfc2h1dGRvd25fc3Rh dGUgPT0gU1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUworCSAgICAmJiBhcnJheS0+bl9yZXNlcnZl ZCA9PSAwKSB7CisJCSptZXNzYWdlMSA9IE5VTEw7CisJCSptZXNzYWdlMiA9IE5VTEw7CisJCW9z X211dGV4X2V4aXQoYXJyYXktPm11dGV4KTsKKwkJcmV0dXJuKFRSVUUpOwogCX0KIAotCW9zX211 dGV4X2VudGVyKGFycmF5LT5tdXRleCk7CisJdXRfYShpID49IFdBSVRfT0JKRUNUXzAgJiYgaSA8 PSBXQUlUX09CSkVDVF8wICsgbik7CiAKIAlzbG90ID0gb3NfYWlvX2FycmF5X2dldF9udGhfc2xv dChhcnJheSwgaSArIHNlZ21lbnQgKiBuKTsKIApAQCAtNDQyMSwxNCArNDQyOSw2IEBAIG9zX2Fp b19saW51eF9jb2xsZWN0KAogCiByZXRyeToKIAotCS8qIEdvIGRvd24gaWYgd2UgYXJlIGluIHNo dXRkb3duIG1vZGUuCi0JSW4gY2FzZSBvZiBzcnZfZmFzdF9zaHV0ZG93biA9PSAyLCB0aGVyZSBt YXkgYmUgcGVuZGluZwotCUlPIHJlcXVlc3RzIGJ1dCB0aGF0IHNob3VsZCBiZSBPSyBhcyB3ZSBl c3NlbnRpYWxseSB0cmVhdAotCXRoYXQgYXMgYSBjcmFzaCBvZiBJbm5vREIuICovCi0JaWYgKHNy dl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0JCW9zX3Ro cmVhZF9leGl0KE5VTEwpOwotCX0KLQogCS8qIEluaXRpYWxpemUgdGhlIGV2ZW50cy4gVGhlIHRp bWVvdXQgdmFsdWUgaXMgYXJiaXRyYXJ5LgogCVdlIHByb2JhYmx5IG5lZWQgdG8gZXhwZXJpbWVu dCB3aXRoIGl0IGEgbGl0dGxlLiAqLwogCW1lbXNldChldmVudHMsIDAsIHNpemVvZigqZXZlbnRz KSAqIHNlZ19zaXplKTsKQEAgLTQ0MzcsNzYgKzQ0MzcsNzIgQEAgcmV0cnk6CiAKIAlyZXQgPSBp b19nZXRldmVudHMoaW9fY3R4LCAxLCBzZWdfc2l6ZSwgZXZlbnRzLCAmdGltZW91dCk7CiAKLQkv KiBUaGlzIGVycm9yIGhhbmRsaW5nIGlzIGZvciBhbnkgZXJyb3IgaW4gY29sbGVjdGluZyB0aGUK LQlJTyByZXF1ZXN0cy4gVGhlIGVycm9ycywgaWYgYW55LCBmb3IgYW55IHBhcnRpY3VsYXIgSU8K LQlyZXF1ZXN0IGFyZSBzaW1wbHkgcGFzc2VkIG9uIHRvIHRoZSBjYWxsaW5nIHJvdXRpbmUuICov CisJaWYgKHJldCA+IDApIHsKKwkJZm9yIChpID0gMDsgaSA8IHJldDsgaSsrKSB7CisJCQlvc19h aW9fc2xvdF90KglzbG90OworCQkJc3RydWN0IGlvY2IqCWNvbnRyb2w7CisKKwkJCWNvbnRyb2wg PSAoc3RydWN0IGlvY2IgKilldmVudHNbaV0ub2JqOworCQkJdXRfYShjb250cm9sICE9IE5VTEwp OworCisJCQlzbG90ID0gKG9zX2Fpb19zbG90X3QgKikgY29udHJvbC0+ZGF0YTsKKworCQkJLyog U29tZSBzYW5pdHkgY2hlY2tzLiAqLworCQkJdXRfYShzbG90ICE9IE5VTEwpOworCQkJdXRfYShz bG90LT5yZXNlcnZlZCk7CiAKLQkvKiBOb3QgZW5vdWdoIHJlc291cmNlcyEgVHJ5IGFnYWluLiAq LwotCWlmIChyZXQgPT0gLUVBR0FJTikgewotCQlnb3RvIHJldHJ5OwotCX0KKyNpZiBkZWZpbmVk KFVOSVZfQUlPX0RFQlVHKQorCQkJZnByaW50ZihzdGRlcnIsCisJCQkJImlvX2dldGV2ZW50c1sl Y106IHNsb3RbJXBdIGN0eFslcF0iCisJCQkJIiBzZWdbJWx1XVxuIiwKKwkJCQkoc2xvdC0+dHlw ZSA9PSBPU19GSUxFX1dSSVRFKSA/ICd3JyA6ICdyJywKKwkJCQlzbG90LCBpb19jdHgsIHNlZ21l bnQpOworI2VuZGlmCiAKLQkvKiBJbnRlcnJ1cHRlZCEgSSBoYXZlIHRlc3RlZCB0aGUgYmVoYXZp b3VyIGluIGNhc2Ugb2YgYW4KLQlpbnRlcnJ1cHQuIElmIHdlIGhhdmUgc29tZSBjb21wbGV0ZWQg SU9zIGF2YWlsYWJsZSB0aGVuCi0JdGhlIHJldHVybiBjb2RlIHdpbGwgYmUgdGhlIG51bWJlciBv ZiBJT3MuIFdlIGdldCBFSU5UUiBvbmx5Ci0JaWYgdGhlcmUgYXJlIG5vIGNvbXBsZXRlZCBJT3Mg YW5kIHdlIGhhdmUgYmVlbiBpbnRlcnJ1cHRlZC4gKi8KLQlpZiAocmV0ID09IC1FSU5UUikgewot CQlnb3RvIHJldHJ5OwotCX0KKwkJCS8qIFdlIGFyZSBub3Qgc2NyaWJibGluZyBwcmV2aW91cyBz ZWdtZW50LiAqLworCQkJdXRfYShzbG90LT5wb3MgPj0gc3RhcnRfcG9zKTsKIAotCS8qIE5vIHBl bmRpbmcgcmVxdWVzdCEgR28gYmFjayBhbmQgY2hlY2sgYWdhaW4uICovCi0JaWYgKHJldCA9PSAw KSB7Ci0JCWdvdG8gcmV0cnk7Ci0JfQorCQkJLyogV2UgaGF2ZSBub3Qgb3ZlcnN0ZXBwZWQgdG8g bmV4dCBzZWdtZW50LiAqLworCQkJdXRfYShzbG90LT5wb3MgPCBlbmRfcG9zKTsKIAotCS8qIEFs bCBvdGhlciBlcnJvcnMhIHNob3VsZCBjYXVzZSBhIHRyYXAgZm9yIG5vdy4gKi8KLQlpZiAoVU5J Vl9VTkxJS0VMWShyZXQgPCAwKSkgewotCQl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKLQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkiICBJbm5vREI6IHVuZXhwZWN0ZWQgcmV0X2NvZGVbJWRdIGZy b20iCi0JCQkiIGlvX2dldGV2ZW50cygpIVxuIiwgcmV0KTsKLQkJdXRfZXJyb3I7CisJCQkvKiBN YXJrIHRoaXMgcmVxdWVzdCBhcyBjb21wbGV0ZWQuIFRoZSBlcnJvciBoYW5kbGluZworCQkJd2ls bCBiZSBkb25lIGluIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAqLworCQkJb3NfbXV0ZXhfZW50ZXIo YXJyYXktPm11dGV4KTsKKwkJCXNsb3QtPm5fYnl0ZXMgPSBldmVudHNbaV0ucmVzOworCQkJc2xv dC0+cmV0ID0gZXZlbnRzW2ldLnJlczI7CisJCQlzbG90LT5pb19hbHJlYWR5X2RvbmUgPSBUUlVF OworCQkJb3NfbXV0ZXhfZXhpdChhcnJheS0+bXV0ZXgpOworCQl9CisJCXJldHVybjsKIAl9CiAK LQl1dF9hKHJldCA+IDApOwotCi0JZm9yIChpID0gMDsgaSA8IHJldDsgaSsrKSB7Ci0JCW9zX2Fp b19zbG90X3QqCXNsb3Q7Ci0JCXN0cnVjdCBpb2NiKgljb250cm9sOwotCi0JCWNvbnRyb2wgPSAo c3RydWN0IGlvY2IgKilldmVudHNbaV0ub2JqOwotCQl1dF9hKGNvbnRyb2wgIT0gTlVMTCk7Ci0K LQkJc2xvdCA9IChvc19haW9fc2xvdF90ICopIGNvbnRyb2wtPmRhdGE7Ci0KLQkJLyogU29tZSBz YW5pdHkgY2hlY2tzLiAqLwotCQl1dF9hKHNsb3QgIT0gTlVMTCk7Ci0JCXV0X2Eoc2xvdC0+cmVz ZXJ2ZWQpOwotCi0jaWYgZGVmaW5lZChVTklWX0FJT19ERUJVRykKLQkJZnByaW50ZihzdGRlcnIs Ci0JCQkiaW9fZ2V0ZXZlbnRzWyVjXTogc2xvdFslcF0gY3R4WyVwXSIKLQkJCSIgc2VnWyVsdV1c biIsCi0JCQkoc2xvdC0+dHlwZSA9PSBPU19GSUxFX1dSSVRFKSA/ICd3JyA6ICdyJywKLQkJCXNs b3QsIGlvX2N0eCwgc2VnbWVudCk7Ci0jZW5kaWYKLQotCQkvKiBXZSBhcmUgbm90IHNjcmliYmxp bmcgcHJldmlvdXMgc2VnbWVudC4gKi8KLQkJdXRfYShzbG90LT5wb3MgPj0gc3RhcnRfcG9zKTsK KwlpZiAoVU5JVl9VTkxJS0VMWShzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VY SVRfVEhSRUFEUykpIHsKKwkJcmV0dXJuOworCX0KIAotCQkvKiBXZSBoYXZlIG5vdCBvdmVyc3Rl cHBlZCB0byBuZXh0IHNlZ21lbnQuICovCi0JCXV0X2Eoc2xvdC0+cG9zIDwgZW5kX3Bvcyk7CisJ LyogVGhpcyBlcnJvciBoYW5kbGluZyBpcyBmb3IgYW55IGVycm9yIGluIGNvbGxlY3RpbmcgdGhl CisJSU8gcmVxdWVzdHMuIFRoZSBlcnJvcnMsIGlmIGFueSwgZm9yIGFueSBwYXJ0aWN1bGFyIElP CisJcmVxdWVzdCBhcmUgc2ltcGx5IHBhc3NlZCBvbiB0byB0aGUgY2FsbGluZyByb3V0aW5lLiAq LwogCi0JCS8qIE1hcmsgdGhpcyByZXF1ZXN0IGFzIGNvbXBsZXRlZC4gVGhlIGVycm9yIGhhbmRs aW5nCi0JCXdpbGwgYmUgZG9uZSBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbi4gKi8KLQkJb3NfbXV0 ZXhfZW50ZXIoYXJyYXktPm11dGV4KTsKLQkJc2xvdC0+bl9ieXRlcyA9IGV2ZW50c1tpXS5yZXM7 Ci0JCXNsb3QtPnJldCA9IGV2ZW50c1tpXS5yZXMyOwotCQlzbG90LT5pb19hbHJlYWR5X2RvbmUg PSBUUlVFOwotCQlvc19tdXRleF9leGl0KGFycmF5LT5tdXRleCk7CisJc3dpdGNoIChyZXQpIHsK KwljYXNlIC1FQUdBSU46CisJCS8qIE5vdCBlbm91Z2ggcmVzb3VyY2VzISBUcnkgYWdhaW4uICov CisJY2FzZSAtRUlOVFI6CisJCS8qIEludGVycnVwdGVkISBJIGhhdmUgdGVzdGVkIHRoZSBiZWhh dmlvdXIgaW4gY2FzZSBvZiBhbgorCQlpbnRlcnJ1cHQuIElmIHdlIGhhdmUgc29tZSBjb21wbGV0 ZWQgSU9zIGF2YWlsYWJsZSB0aGVuCisJCXRoZSByZXR1cm4gY29kZSB3aWxsIGJlIHRoZSBudW1i ZXIgb2YgSU9zLiBXZSBnZXQgRUlOVFIgb25seQorCQlpZiB0aGVyZSBhcmUgbm8gY29tcGxldGVk IElPcyBhbmQgd2UgaGF2ZSBiZWVuIGludGVycnVwdGVkLiAqLworCWNhc2UgMDoKKwkJLyogTm8g cGVuZGluZyByZXF1ZXN0ISBHbyBiYWNrIGFuZCBjaGVjayBhZ2Fpbi4gKi8KKwkJZ290byByZXRy eTsKIAl9CiAKLQlyZXR1cm47CisJLyogQWxsIG90aGVyIGVycm9ycyBzaG91bGQgY2F1c2UgYSB0 cmFwIGZvciBub3cuICovCisJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CisJZnByaW50Zihz dGRlcnIsCisJCSIgIElubm9EQjogdW5leHBlY3RlZCByZXRfY29kZVslZF0gZnJvbSBpb19nZXRl dmVudHMoKSFcbiIsCisJCXJldCk7CisJdXRfZXJyb3I7CiB9CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgpAQCAtNDU1MCwyMCArNDU0NiwzNSBAQCBvc19haW9fbGludXhfaGFuZGxlKAogCiAJLyogTG9v cCB1bnRpbCB3ZSBoYXZlIGZvdW5kIGEgY29tcGxldGVkIHJlcXVlc3QuICovCiAJZm9yICg7Oykg eworCQlpYm9vbAlhbnlfcmVzZXJ2ZWQgPSBGQUxTRTsKIAkJb3NfbXV0ZXhfZW50ZXIoYXJyYXkt Pm11dGV4KTsKIAkJZm9yIChpID0gMDsgaSA8IG47ICsraSkgewogCQkJc2xvdCA9IG9zX2Fpb19h cnJheV9nZXRfbnRoX3Nsb3QoCi0JCQkJCWFycmF5LCBpICsgc2VnbWVudCAqIG4pOwotCQkJaWYg KHNsb3QtPnJlc2VydmVkICYmIHNsb3QtPmlvX2FscmVhZHlfZG9uZSkgeworCQkJCWFycmF5LCBp ICsgc2VnbWVudCAqIG4pOworCQkJaWYgKCFzbG90LT5yZXNlcnZlZCkgeworCQkJCWNvbnRpbnVl OworCQkJfSBlbHNlIGlmIChzbG90LT5pb19hbHJlYWR5X2RvbmUpIHsKIAkJCQkvKiBTb21ldGhp bmcgZm9yIHVzIHRvIHdvcmsgb24uICovCiAJCQkJZ290byBmb3VuZDsKKwkJCX0gZWxzZSB7CisJ CQkJYW55X3Jlc2VydmVkID0gVFJVRTsKIAkJCX0KIAkJfQogCiAJCW9zX211dGV4X2V4aXQoYXJy YXktPm11dGV4KTsKIAotCQkvKiBXZSBkb24ndCBoYXZlIGFueSBjb21wbGV0ZWQgcmVxdWVzdC4K LQkJV2FpdCBmb3Igc29tZSByZXF1ZXN0LiBOb3RlIHRoYXQgd2UgcmV0dXJuCisJCS8qIFRoZXJl IGlzIG5vIGNvbXBsZXRlZCByZXF1ZXN0LgorCQlJZiB0aGVyZSBpcyBubyBwZW5kaW5nIHJlcXVl c3QgYXQgYWxsLAorCQlhbmQgdGhlIHN5c3RlbSBpcyBiZWluZyBzaHV0IGRvd24sIGV4aXQuICov CisJCWlmIChVTklWX1VOTElLRUxZCisJCSAgICAoIWFueV9yZXNlcnZlZAorCQkgICAgICYmIHNy dl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSkgeworCQkJKm1l c3NhZ2UxID0gTlVMTDsKKwkJCSptZXNzYWdlMiA9IE5VTEw7CisJCQlyZXR1cm4oVFJVRSk7CisJ CX0KKworCQkvKiBXYWl0IGZvciBzb21lIHJlcXVlc3QuIE5vdGUgdGhhdCB3ZSByZXR1cm4KIAkJ ZnJvbSB3YWl0IGlmZiB3ZSBoYXZlIGZvdW5kIGEgcmVxdWVzdC4gKi8KIAogCQlzcnZfc2V0X2lv X3RocmVhZF9vcF9pbmZvKGdsb2JhbF9zZWcsCkBAIC00NjU5LDYgKzQ2NzAsNyBAQCBvc19haW9f c2ltdWxhdGVkX2hhbmRsZSgKIAlieXRlKgkJY29tYmluZWRfYnVmOwogCWJ5dGUqCQljb21iaW5l ZF9idWYyOwogCWlib29sCQlyZXQ7CisJaWJvb2wJCWFueV9yZXNlcnZlZDsKIAl1bGludAkJbjsK IAl1bGludAkJaTsKIApAQCAtNDY4OSwxOCArNDcwMSwyMSBAQCByZXN0YXJ0OgogCQlnb3RvIHJl Y29tbWVuZGVkX3NsZWVwOwogCX0KIAotCW9zX211dGV4X2VudGVyKGFycmF5LT5tdXRleCk7Ci0K IAlzcnZfc2V0X2lvX3RocmVhZF9vcF9pbmZvKGdsb2JhbF9zZWdtZW50LAogCQkJCSAgImxvb2tp bmcgZm9yIGkvbyByZXF1ZXN0cyAoYikiKTsKIAogCS8qIENoZWNrIGlmIHRoZXJlIGlzIGEgc2xv dCBmb3Igd2hpY2ggdGhlIGkvbyBoYXMgYWxyZWFkeSBiZWVuCiAJZG9uZSAqLworCWFueV9yZXNl cnZlZCA9IEZBTFNFOworCisJb3NfbXV0ZXhfZW50ZXIoYXJyYXktPm11dGV4KTsKIAogCWZvciAo aSA9IDA7IGkgPCBuOyBpKyspIHsKIAkJc2xvdCA9IG9zX2Fpb19hcnJheV9nZXRfbnRoX3Nsb3Qo YXJyYXksIGkgKyBzZWdtZW50ICogbik7CiAKLQkJaWYgKHNsb3QtPnJlc2VydmVkICYmIHNsb3Qt PmlvX2FscmVhZHlfZG9uZSkgeworCQlpZiAoIXNsb3QtPnJlc2VydmVkKSB7CisJCQljb250aW51 ZTsKKwkJfSBlbHNlIGlmIChzbG90LT5pb19hbHJlYWR5X2RvbmUpIHsKIAogCQkJaWYgKG9zX2Fp b19wcmludF9kZWJ1ZykgewogCQkJCWZwcmludGYoc3RkZXJyLApAQCAtNDcxMiw5ICs0NzI3LDIz IEBAIHJlc3RhcnQ6CiAJCQlyZXQgPSBUUlVFOwogCiAJCQlnb3RvIHNsb3RfaW9fZG9uZTsKKwkJ fSBlbHNlIHsKKwkJCWFueV9yZXNlcnZlZCA9IFRSVUU7CiAJCX0KIAl9CiAKKwkvKiBUaGVyZSBp cyBubyBjb21wbGV0ZWQgcmVxdWVzdC4KKwlJZiB0aGVyZSBpcyBubyBwZW5kaW5nIHJlcXVlc3Qg YXQgYWxsLAorCWFuZCB0aGUgc3lzdGVtIGlzIGJlaW5nIHNodXQgZG93biwgZXhpdC4gKi8KKwlp ZiAoVU5JVl9VTkxJS0VMWQorCSAgICAoIWFueV9yZXNlcnZlZAorCSAgICAgJiYgc3J2X3NodXRk b3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpKSB7CisJCW9zX211dGV4X2V4 aXQoYXJyYXktPm11dGV4KTsKKwkJKm1lc3NhZ2UxID0gTlVMTDsKKwkJKm1lc3NhZ2UyID0gTlVM TDsKKwkJcmV0dXJuKFRSVUUpOworCX0KKwogCW5fY29uc2VjdXRpdmUgPSAwOwogCiAJLyogSWYg dGhlcmUgYXJlIGF0IGxlYXN0IDIgc2Vjb25kcyBvbGQgcmVxdWVzdHMsIHRoZW4gcGljayB0aGUg b2xkZXN0Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBzeW5jLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvb3Mvb3Mwc3luYy5jCXJldmlkOnZhc2lsLmRpbW92QG9y YWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYworKysgYi9zdG9yYWdlL2lu bm9iYXNlL29zL29zMHN5bmMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQw NTExMjUzOC02bnJrbmV3eW0wMjJucWY2CkBAIC01NzAsMTAgKzU3MCw3IEBAIG9zX2V2ZW50X2Zy ZWUoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgotV2FpdHMgZm9yIGFuIGV2ZW50IG9iamVjdCB1bnRpbCBpdCBpcyBp biB0aGUgc2lnbmFsZWQgc3RhdGUuIElmCi1zcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRE T1dOX0VYSVRfVEhSRUFEUyB0aGlzIGFsc28gZXhpdHMgdGhlCi13YWl0aW5nIHRocmVhZCB3aGVu IHRoZSBldmVudCBiZWNvbWVzIHNpZ25hbGVkIChvciBpbW1lZGlhdGVseSBpZiB0aGUKLWV2ZW50 IGlzIGFscmVhZHkgaW4gdGhlIHNpZ25hbGVkIHN0YXRlKS4KK1dhaXRzIGZvciBhbiBldmVudCBv YmplY3QgdW50aWwgaXQgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlLgogCiBUeXBpY2FsbHksIGlm IHRoZSBldmVudCBoYXMgYmVlbiBzaWduYWxsZWQgYWZ0ZXIgdGhlIG9zX2V2ZW50X3Jlc2V0KCkK IHdlJ2xsIHJldHVybiBpbW1lZGlhdGVseSBiZWNhdXNlIGV2ZW50LT5pc19zZXQgPT0gVFJVRS4K QEAgLTU5OCw4ICs1OTUsNiBAQCBvc19ldmVudF93YWl0X2xvdygKIAkJCQkJcmV0dXJuZWQgYnkg cHJldmlvdXMgY2FsbCBvZgogCQkJCQlvc19ldmVudF9yZXNldCgpLiAqLwogewotCWliX2ludDY0 X3QJb2xkX3NpZ25hbF9jb3VudDsKLQogI2lmZGVmIF9fV0lOX18KIAlpZighc3J2X3VzZV9uYXRp dmVfY29uZGl0aW9ucykgewogCQlEV09SRAllcnI7CkBAIC02MTIsNDMgKzYwNywyNSBAQCBvc19l dmVudF93YWl0X2xvdygKIAkJZXJyID0gV2FpdEZvclNpbmdsZU9iamVjdChldmVudC0+aGFuZGxl LCBJTkZJTklURSk7CiAKIAkJdXRfYShlcnIgPT0gV0FJVF9PQkpFQ1RfMCk7Ci0KLQkJaWYgKHNy dl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0JCQlvc190 aHJlYWRfZXhpdChOVUxMKTsKLQkJfQogCQlyZXR1cm47CiAJfQogI2VuZGlmCiAKLQlvc19mYXN0 X211dGV4X2xvY2soJihldmVudC0+b3NfbXV0ZXgpKTsKKwlvc19mYXN0X211dGV4X2xvY2soJmV2 ZW50LT5vc19tdXRleCk7CiAKLQlpZiAocmVzZXRfc2lnX2NvdW50KSB7Ci0JCW9sZF9zaWduYWxf Y291bnQgPSByZXNldF9zaWdfY291bnQ7Ci0JfSBlbHNlIHsKLQkJb2xkX3NpZ25hbF9jb3VudCA9 IGV2ZW50LT5zaWduYWxfY291bnQ7CisJaWYgKCFyZXNldF9zaWdfY291bnQpIHsKKwkJcmVzZXRf c2lnX2NvdW50ID0gZXZlbnQtPnNpZ25hbF9jb3VudDsKIAl9CiAKLQlmb3IgKDs7KSB7Ci0JCWlm IChldmVudC0+aXNfc2V0ID09IFRSVUUKLQkJICAgIHx8IGV2ZW50LT5zaWduYWxfY291bnQgIT0g b2xkX3NpZ25hbF9jb3VudCkgewotCi0JCQlvc19mYXN0X211dGV4X3VubG9jaygmKGV2ZW50LT5v c19tdXRleCkpOwotCi0JCQlpZiAoc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9F WElUX1RIUkVBRFMpIHsKLQotCQkJCW9zX3RocmVhZF9leGl0KE5VTEwpOwotCQkJfQotCQkJLyog T2ssIHdlIG1heSByZXR1cm4gKi8KLQotCQkJcmV0dXJuOwotCQl9Ci0KKwl3aGlsZSAoIWV2ZW50 LT5pc19zZXQgJiYgZXZlbnQtPnNpZ25hbF9jb3VudCA9PSByZXNldF9zaWdfY291bnQpIHsKIAkJ b3NfY29uZF93YWl0KCYoZXZlbnQtPmNvbmRfdmFyKSwgJihldmVudC0+b3NfbXV0ZXgpKTsKIAog CQkvKiBTb2xhcmlzIG1hbnVhbCBzYWlkIHRoYXQgc3B1cmlvdXMgd2FrZXVwcyBtYXkgb2NjdXI6 IHdlCiAJCWhhdmUgdG8gY2hlY2sgaWYgdGhlIGV2ZW50IHJlYWxseSBoYXMgYmVlbiBzaWduYWxl ZCBhZnRlcgogCQl3ZSBjYW1lIGhlcmUgdG8gd2FpdCAqLwogCX0KKworCW9zX2Zhc3RfbXV0ZXhf dW5sb2NrKCZldmVudC0+b3NfbXV0ZXgpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTY2OSw3ICs2NDYsNiBA QCBvc19ldmVudF93YWl0X3RpbWVfbG93KAogCiB7CiAJaWJvb2wJCXRpbWVkX291dCA9IEZBTFNF OwotCWliX2ludDY0X3QJb2xkX3NpZ25hbF9jb3VudDsKIAogI2lmZGVmIF9fV0lOX18KIAlEV09S RAkJdGltZV9pbl9tczsKQEAgLTczOSwxNSArNzE1LDEyIEBAIG9zX2V2ZW50X3dhaXRfdGltZV9s b3coCiAKIAlvc19mYXN0X211dGV4X2xvY2soJmV2ZW50LT5vc19tdXRleCk7CiAKLQlpZiAocmVz ZXRfc2lnX2NvdW50KSB7Ci0JCW9sZF9zaWduYWxfY291bnQgPSByZXNldF9zaWdfY291bnQ7Ci0J fSBlbHNlIHsKLQkJb2xkX3NpZ25hbF9jb3VudCA9IGV2ZW50LT5zaWduYWxfY291bnQ7CisJaWYg KCFyZXNldF9zaWdfY291bnQpIHsKKwkJcmVzZXRfc2lnX2NvdW50ID0gZXZlbnQtPnNpZ25hbF9j b3VudDsKIAl9CiAKIAlkbyB7Ci0JCWlmIChldmVudC0+aXNfc2V0ID09IFRSVUUKLQkJICAgIHx8 IGV2ZW50LT5zaWduYWxfY291bnQgIT0gb2xkX3NpZ25hbF9jb3VudCkgeworCQlpZiAoZXZlbnQt PmlzX3NldCB8fCBldmVudC0+c2lnbmFsX2NvdW50ICE9IHJlc2V0X3NpZ19jb3VudCkgewogCiAJ CQlicmVhazsKIAkJfQpAQCAtNzY1LDExICs3MzgsNiBAQCBvc19ldmVudF93YWl0X3RpbWVfbG93 KAogCiAJb3NfZmFzdF9tdXRleF91bmxvY2soJmV2ZW50LT5vc19tdXRleCk7CiAKLQlpZiAoc3J2 X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpIHsKLQotCQlvc190 aHJlYWRfZXhpdChOVUxMKTsKLQl9Ci0KIAlyZXR1cm4odGltZWRfb3V0ID8gT1NfU1lOQ19USU1F X0VYQ0VFREVEIDogMCk7CiB9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L29zL29zMHRocmVhZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL29zL29zMHRocmVhZC5jCXJl dmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVm YworKysgYi9zdG9yYWdlL2lubm9iYXNlL29zL29zMHRocmVhZC5jCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTIyMCwyMSAr MjIwLDYgQEAgb3NfdGhyZWFkX2V4aXQoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgaGFu ZGxlIHRvIHRoZSBjdXJyZW50IHRocmVhZC4KLUByZXR1cm4JY3VycmVudCB0aHJlYWQgaGFuZGxl ICovCi1VTklWX0lOVEVSTgotb3NfdGhyZWFkX3QKLW9zX3RocmVhZF9nZXRfY3Vycih2b2lkKQot Lyo9PT09PT09PT09PT09PT09PT09PSovCi17Ci0jaWZkZWYgX19XSU5fXwotCXJldHVybihHZXRD dXJyZW50VGhyZWFkKCkpOwotI2Vsc2UKLQlyZXR1cm4ocHRocmVhZF9zZWxmKCkpOwotI2VuZGlm Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIEFkdmlzZXMgdGhlIG9zIHRvIGdpdmUgdXAgcmVtYWluZGVy IG9mIHRoZSB0aHJlYWQncyB0aW1lIHNsaWNlLiAqLwogVU5JVl9JTlRFUk4KIHZvaWQKQEAgLTI3 NCw4MSArMjU5LDMgQEAgb3NfdGhyZWFkX3NsZWVwKAogCXNlbGVjdCgwLCBOVUxMLCBOVUxMLCBO VUxMLCAmdCk7CiAjZW5kaWYKIH0KLQotI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAotLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLVNldHMgYSB0aHJlYWQgcHJpb3JpdHkuICovCi1VTklWX0lOVEVSTgotdm9pZAotb3Nf dGhyZWFkX3NldF9wcmlvcml0eSgKLS8qPT09PT09PT09PT09PT09PT09PSovCi0Jb3NfdGhyZWFk X3QJaGFuZGxlLAkvKiE8IGluOiBPUyBoYW5kbGUgdG8gdGhlIHRocmVhZCAqLwotCXVsaW50CQlw cmkpCS8qITwgaW46IHByaW9yaXR5ICovCi17Ci0jaWZkZWYgX19XSU5fXwotCWludAlvc19wcmk7 Ci0KLQlpZiAocHJpID09IE9TX1RIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EKSB7Ci0JCW9zX3By aSA9IFRIUkVBRF9QUklPUklUWV9CRUxPV19OT1JNQUw7Ci0JfSBlbHNlIGlmIChwcmkgPT0gT1Nf VEhSRUFEX1BSSU9SSVRZX05PUk1BTCkgewotCQlvc19wcmkgPSBUSFJFQURfUFJJT1JJVFlfTk9S TUFMOwotCX0gZWxzZSBpZiAocHJpID09IE9TX1RIUkVBRF9QUklPUklUWV9BQk9WRV9OT1JNQUwp IHsKLQkJb3NfcHJpID0gVEhSRUFEX1BSSU9SSVRZX0hJR0hFU1Q7Ci0JfSBlbHNlIHsKLQkJdXRf ZXJyb3I7Ci0JfQotCi0JdXRfYShTZXRUaHJlYWRQcmlvcml0eShoYW5kbGUsIG9zX3ByaSkpOwot I2Vsc2UKLQlVVF9OT1RfVVNFRChoYW5kbGUpOwotCVVUX05PVF9VU0VEKHByaSk7Ci0jZW5kaWYK LX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKLUdldHMgYSB0aHJlYWQgcHJpb3JpdHkuCi1AcmV0dXJuCXBy aW9yaXR5ICovCi1VTklWX0lOVEVSTgotdWxpbnQKLW9zX3RocmVhZF9nZXRfcHJpb3JpdHkoCi0v Kj09PT09PT09PT09PT09PT09PT0qLwotCW9zX3RocmVhZF90CWhhbmRsZSBfX2F0dHJpYnV0ZV9f KCh1bnVzZWQpKSkKLQkJCQkvKiE8IGluOiBPUyBoYW5kbGUgdG8gdGhlIHRocmVhZCAqLwotewot I2lmZGVmIF9fV0lOX18KLQlpbnQJb3NfcHJpOwotCXVsaW50CXByaTsKLQotCW9zX3ByaSA9IEdl dFRocmVhZFByaW9yaXR5KGhhbmRsZSk7Ci0KLQlpZiAob3NfcHJpID09IFRIUkVBRF9QUklPUklU WV9CRUxPV19OT1JNQUwpIHsKLQkJcHJpID0gT1NfVEhSRUFEX1BSSU9SSVRZX0JBQ0tHUk9VTkQ7 Ci0JfSBlbHNlIGlmIChvc19wcmkgPT0gVEhSRUFEX1BSSU9SSVRZX05PUk1BTCkgewotCQlwcmkg PSBPU19USFJFQURfUFJJT1JJVFlfTk9STUFMOwotCX0gZWxzZSBpZiAob3NfcHJpID09IFRIUkVB RF9QUklPUklUWV9ISUdIRVNUKSB7Ci0JCXByaSA9IE9TX1RIUkVBRF9QUklPUklUWV9BQk9WRV9O T1JNQUw7Ci0JfSBlbHNlIHsKLQkJdXRfZXJyb3I7Ci0JfQotCi0JcmV0dXJuKHByaSk7Ci0jZWxz ZQotCXJldHVybigwKTsKLSNlbmRpZgotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotR2V0cyB0aGUgbGFz dCBvcGVyYXRpbmcgc3lzdGVtIGVycm9yIGNvZGUgZm9yIHRoZSBjYWxsaW5nIHRocmVhZC4KLUBy ZXR1cm4JbGFzdCBlcnJvciBvbiBXaW5kb3dzLCAwIG90aGVyd2lzZSAqLwotVU5JVl9JTlRFUk4K LXVsaW50Ci1vc190aHJlYWRfZ2V0X2xhc3RfZXJyb3Iodm9pZCkKLS8qPT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwotewotI2lmZGVmIF9fV0lOX18KLQlyZXR1cm4oR2V0TGFzdEVycm9yKCkp OwotI2Vsc2UKLQlyZXR1cm4oMCk7Ci0jZW5kaWYKLX0KLSNlbmRpZiAvKiAhVU5JVl9IT1RCQUNL VVAgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2Uu YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmMJcmV2aWQ6dmFzaWwuZGlt b3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwNDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTE5MjksOCArMTkyOSw2IEBAIHJv d19tZXJnZV9sb2NrX3RhYmxlKAogCXNlbF9ub2RlX3QqCW5vZGU7CiAKIAl1dF9hZCh0cngpOwot CXV0X2FkKHRyeC0+bXlzcWxfdGhkID09IE5VTEwKLQkgICAgICB8fCB0cngtPm15c3FsX3RocmVh ZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYWQobW9kZSA9PSBMT0NLX1gg fHwgbW9kZSA9PSBMT0NLX1MpOwogCiAJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSg1MTIpOwpAQCAt MjQwMyw4ICsyNDAxLDYgQEAgcm93X21lcmdlX3JlbmFtZV90YWJsZXMoCiAJcGFyc19pbmZvX3Qq CWluZm87CiAJY2hhcgkJb2xkX25hbWVbTUFYX0ZVTExfTkFNRV9MRU4gKyAxXTsKIAotCXV0X2Fk KHRyeC0+bXlzcWxfdGhkID09IE5VTEwKLQkgICAgICB8fCB0cngtPm15c3FsX3RocmVhZF9pZCA9 PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYWQob2xkX3RhYmxlICE9IG5ld190YWJs ZSk7CiAJdXRfYWQobXV0ZXhfb3duKCZkaWN0X3N5cy0+bXV0ZXgpKTsKIAoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEw NDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93 MG15c3FsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTI1MzgtNm5y a25ld3ltMDIybnFmNgpAQCAtOTc5LDggKzk3OSw2IEBAIHJvd19sb2NrX3RhYmxlX2F1dG9pbmNf Zm9yX215c3FsKAogCWlib29sCQkJd2FzX2xvY2tfd2FpdDsKIAogCXV0X2FkKHRyeCk7Ci0JdXRf YWQodHJ4LT5teXNxbF90aGQgIT0gTlVMTAotCSAgICAgICYmIHRyeC0+bXlzcWxfdGhyZWFkX2lk ID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAogCS8qIElmIHdlIGFscmVhZHkgaG9sZCBh biBBVVRPSU5DIGxvY2sgb24gdGhlIHRhYmxlIHRoZW4gZG8gbm90aGluZy4KICAgICAgICAgTm90 ZTogV2UgcGVlayBhdCB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgb3duZXIgd2l0aG91dCBhY3F1 aXJpbmcKQEAgLTEwNjAsOCArMTA1OCw2IEBAIHJvd19sb2NrX3RhYmxlX2Zvcl9teXNxbCgKIAlp Ym9vbAkJd2FzX2xvY2tfd2FpdDsKIAogCXV0X2FkKHRyeCk7Ci0JdXRfYWQodHJ4LT5teXNxbF90 aGQgIT0gTlVMTAotCSAgICAgICYmIHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9n ZXRfY3Vycl9pZCgpKTsKIAogCXRyeC0+b3BfaW5mbyA9ICJzZXR0aW5nIHRhYmxlIGxvY2siOwog CkBAIC0xMTM1LDggKzExMzEsNiBAQCByb3dfaW5zZXJ0X2Zvcl9teXNxbCgKIAlpbnNfbm9kZV90 Kglub2RlCQk9IHByZWJ1aWx0LT5pbnNfbm9kZTsKIAogCXV0X2FkKHRyeCk7Ci0JdXRfYWQodHJ4 LT5teXNxbF90aGQgIT0gTlVMTAotCSAgICAgICYmIHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9z X3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAogCWlmIChwcmVidWlsdC0+dGFibGUtPmliZF9maWxl X21pc3NpbmcpIHsKIAkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC0xMzcyLDggKzEz NjYsNiBAQCByb3dfdXBkYXRlX2Zvcl9teXNxbCgKIAl0cnhfdCoJCXRyeAkJPSBwcmVidWlsdC0+ dHJ4OwogCiAJdXRfYWQocHJlYnVpbHQgJiYgdHJ4KTsKLQl1dF9hZCh0cngtPm15c3FsX3RoZCAh PSBOVUxMCi0JICAgICAgJiYgdHJ4LT5teXNxbF90aHJlYWRfaWQgPT0gb3NfdGhyZWFkX2dldF9j dXJyX2lkKCkpOwogCVVUX05PVF9VU0VEKG15c3FsX3JlYyk7CiAKIAlpZiAocHJlYnVpbHQtPnRh YmxlLT5pYmRfZmlsZV9taXNzaW5nKSB7CkBAIC0xNTQxLDggKzE1MzMsNiBAQCByb3dfdW5sb2Nr X2Zvcl9teXNxbCgKIAl0cnhfdCoJCXRyeAkJPSBwcmVidWlsdC0+dHJ4OwogCiAJdXRfYWQocHJl YnVpbHQgJiYgdHJ4KTsKLQl1dF9hZCh0cngtPm15c3FsX3RoZCA9PSBOVUxMCi0JICAgICAgfHwg dHJ4LT5teXNxbF90aHJlYWRfaWQgPT0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCkpOwogCiAJaWYg KFVOSVZfVU5MSUtFTFkKIAkgICAgKCFzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cKQEAgLTE4 NDIsOCArMTgzMiw2IEBAIHJvd19jcmVhdGVfdGFibGVfZm9yX215c3FsKAogCXVsaW50CQl0YWJs ZV9uYW1lX2xlbjsKIAl1bGludAkJZXJyOwogCi0JdXRfYWQodHJ4LT5teXNxbF90aGQgPT0gTlVM TAotCSAgICAgIHx8IHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9p ZCgpKTsKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9hZChyd19sb2NrX293bigmZGljdF9v cGVyYXRpb25fbG9jaywgUldfTE9DS19FWCkpOwogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAq LwpAQCAtMjAyNiw4ICsyMDE0LDYgQEAgcm93X2NyZWF0ZV9pbmRleF9mb3JfbXlzcWwoCiAJdXRf YWQocndfbG9ja19vd24oJmRpY3Rfb3BlcmF0aW9uX2xvY2ssIFJXX0xPQ0tfRVgpKTsKICNlbmRp ZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAl1dF9hZChtdXRleF9vd24oJihkaWN0X3N5cy0+bXV0 ZXgpKSk7Ci0JdXRfYWQodHJ4LT5teXNxbF90aGQgPT0gTlVMTAotCSAgICAgIHx8IHRyeC0+bXlz cWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAogCXRyeC0+b3BfaW5m byA9ICJjcmVhdGluZyBpbmRleCI7CiAKQEAgLTI0MzAsOSArMjQxNiw2IEBAIHJvd19kaXNjYXJk X3RhYmxlc3BhY2VfZm9yX215c3FsKAogCXRhYmxlLT5uX2ZvcmVpZ25fa2V5X2NoZWNrc19ydW5u aW5nID4gMCwgd2UgZG8gbm90IGFsbG93IHRoZQogCWRpc2NhcmQuIFdlIGFsc28gcmVzZXJ2ZSB0 aGUgZGF0YSBkaWN0aW9uYXJ5IGxhdGNoLiAqLwogCi0JdXRfYWQodHJ4LT5teXNxbF90aGQgPT0g TlVMTAotCSAgICAgIHx8IHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vy cl9pZCgpKTsKLQogCXRyeC0+b3BfaW5mbyA9ICJkaXNjYXJkaW5nIHRhYmxlc3BhY2UiOwogCXRy eF9zdGFydF9pZl9ub3Rfc3RhcnRlZF94YSh0cngpOwogCkBAIC0yNTk3LDkgKzI1ODAsNiBAQCBy b3dfaW1wb3J0X3RhYmxlc3BhY2VfZm9yX215c3FsKAogCWxzbl90CQljdXJyZW50X2xzbjsKIAl1 bGludAkJZXJyCQk9IERCX1NVQ0NFU1M7CiAKLQl1dF9hZCh0cngtPm15c3FsX3RoZCA9PSBOVUxM Ci0JICAgICAgfHwgdHJ4LT5teXNxbF90aHJlYWRfaWQgPT0gb3NfdGhyZWFkX2dldF9jdXJyX2lk KCkpOwotCiAJdHJ4X3N0YXJ0X2lmX25vdF9zdGFydGVkX3hhKHRyeCk7CiAKIAl0cngtPm9wX2lu Zm8gPSAiaW1wb3J0aW5nIHRhYmxlc3BhY2UiOwpAQCAtMjc5MCw4ICsyNzcwLDYgQEAgcm93X3Ry dW5jYXRlX3RhYmxlX2Zvcl9teXNxbCgKIAlyZWRvIGxvZyByZWNvcmRzIG9uIHRoZSB0cnVuY2F0 ZWQgdGFibGVzcGFjZSwgd2Ugd2lsbCBhc3NpZ24KIAlhIG5ldyB0YWJsZXNwYWNlIGlkZW50aWZp ZXIgdG8gdGhlIHRydW5jYXRlZCB0YWJsZXNwYWNlLiAqLwogCi0JdXRfYWQodHJ4LT5teXNxbF90 aGQgPT0gTlVMTAotCSAgICAgIHx8IHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9n ZXRfY3Vycl9pZCgpKTsKIAl1dF9hZCh0YWJsZSk7CiAKIAlpZiAoc3J2X2NyZWF0ZWRfbmV3X3Jh dykgewpAQCAtMzY4OCw4ICszNjY2LDYgQEAgcm93X2Ryb3BfZGF0YWJhc2VfZm9yX215c3FsKAog CWludAllcnIJPSBEQl9TVUNDRVNTOwogCXVsaW50CW5hbWVsZW4JPSBzdHJsZW4obmFtZSk7CiAK LQl1dF9hZCh0cngtPm15c3FsX3RoZCA9PSBOVUxMCi0JICAgICAgfHwgdHJ4LT5teXNxbF90aHJl YWRfaWQgPT0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCkpOwogCXV0X2EobmFtZSAhPSBOVUxMKTsK IAl1dF9hKG5hbWVbbmFtZWxlbiAtIDFdID09ICcvJyk7CiAKQEAgLTM4NjIsOCArMzgzOCw2IEBA IHJvd19yZW5hbWVfdGFibGVfZm9yX215c3FsKAogCWlib29sCQlvbGRfaXNfdG1wLCBuZXdfaXNf dG1wOwogCXBhcnNfaW5mb190KglpbmZvCQkJPSBOVUxMOwogCi0JdXRfYWQodHJ4LT5teXNxbF90 aGQgIT0gTlVMTAotCSAgICAgICYmIHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9n ZXRfY3Vycl9pZCgpKTsKIAl1dF9hKG9sZF9uYW1lICE9IE5VTEwpOwogCXV0X2EobmV3X25hbWUg IT0gTlVMTCk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw c2VsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwlyZXZpZDp2YXNpbC5k aW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwNDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHN0 b3BfZm9yX2Ffd2hpbGU6CiAJbXRyX2NvbW1pdCgmbXRyKTsKIAogI2lmZGVmIFVOSVZfU1lOQ19E RUJVRwotCXV0X2FkKHN5bmNfdGhyZWFkX2xldmVsc19lbXB0eV9nZW4oVFJVRSkpOworCXV0X2Fk KHN5bmNfdGhyZWFkX2xldmVsc19lbXB0eV9leGNlcHRfZGljdCgpKTsKICNlbmRpZiAvKiBVTklW X1NZTkNfREVCVUcgKi8KIAllcnIgPSBEQl9TVUNDRVNTOwogCWdvdG8gZnVuY19leGl0OwpAQCAt MTk4Miw3ICsxOTgyLDcgQEAgY29tbWl0X210cl9mb3JfYV93aGlsZToKIAltdHJfaGFzX2V4dHJh X2NsdXN0X2xhdGNoID0gRkFMU0U7CiAKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKLQl1dF9hZChz eW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZ2VuKFRSVUUpKTsKKwl1dF9hZChzeW5jX3RocmVhZF9s ZXZlbHNfZW1wdHlfZXhjZXB0X2RpY3QoKSk7CiAjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICov CiAKIAlnb3RvIHRhYmxlX2xvb3A7CkBAIC0xOTk5LDcgKzE5OTksNyBAQCBsb2NrX3dhaXRfb3Jf ZXJyb3I6CiAJbXRyX2NvbW1pdCgmbXRyKTsKIAogI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwotCXV0 X2FkKHN5bmNfdGhyZWFkX2xldmVsc19lbXB0eV9nZW4oVFJVRSkpOworCXV0X2FkKHN5bmNfdGhy ZWFkX2xldmVsc19lbXB0eV9leGNlcHRfZGljdCgpKTsKICNlbmRpZiAvKiBVTklWX1NZTkNfREVC VUcgKi8KIAogZnVuY19leGl0OgpAQCAtMzU2OCw4ICszNTY4LDYgQEAgcm93X3NlYXJjaF9mb3Jf bXlzcWwoCiAJcmVjX29mZnNfaW5pdChvZmZzZXRzXyk7CiAKIAl1dF9hZChpbmRleCAmJiBwY3Vy ICYmIHNlYXJjaF90dXBsZSk7Ci0JdXRfYWQodHJ4LT5teXNxbF90aGQgPT0gTlVMTAotCSAgICAg IHx8IHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAog CWlmIChVTklWX1VOTElLRUxZKHByZWJ1aWx0LT50YWJsZS0+aWJkX2ZpbGVfbWlzc2luZykpIHsK IAkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC0zNTg2LDExICszNTg0LDE3IEBAIHJv d19zZWFyY2hfZm9yX215c3FsKAogCQkJIklubm9EQjogaG93IHlvdSBjYW4gcmVzb2x2ZSB0aGUg cHJvYmxlbS5cbiIsCiAJCQlwcmVidWlsdC0+dGFibGUtPm5hbWUpOwogCisjaWZkZWYgVU5JVl9T WU5DX0RFQlVHCisJCXV0X2FkKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+ aGFzX3NlYXJjaF9sYXRjaCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCQlyZXR1 cm4oREJfRVJST1IpOwogCX0KIAogCWlmIChVTklWX1VOTElLRUxZKCFwcmVidWlsdC0+aW5kZXhf dXNhYmxlKSkgewogCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJCXV0X2FkKCFzeW5jX3RocmVh ZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFzX3NlYXJjaF9sYXRjaCkpOworI2VuZGlmIC8q IFVOSVZfU1lOQ19ERUJVRyAqLwogCQlyZXR1cm4oREJfTUlTU0lOR19ISVNUT1JZKTsKIAl9CiAK QEAgLTQ5NjgsNiArNDk3MiwxMCBAQCBmdW5jX2V4aXQ6CiAJCQlwcmVidWlsdC0+cm93X3JlYWRf dHlwZSA9IFJPV19SRUFEX1RSWV9TRU1JX0NPTlNJU1RFTlQ7CiAJCX0KIAl9CisKKyNpZmRlZiBV TklWX1NZTkNfREVCVUcKKwl1dF9hZCghc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X3RyeCh0 cngtPmhhc19zZWFyY2hfbGF0Y2gpKTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAly ZXR1cm4oZXJyKTsKIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2 L3NydjBzcnYuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jCXJldmlkOnZh c2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYworKysg Yi9zdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3J2LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA0MDUxMTI1MzgtNm5ya25ld3ltMDIybnFmNgpAQCAtNTkxLDcgKzU5MSw3IEBA IGluZm9ybWF0aW9uIGlzIG91dGRhdGVkIGZvciB0aGUgdGltZSBvZgogdGhlIG1hY2hpbmUgc3Vw cG9ydHMgYXRvbWljIHN3YXAuKQogCiBUaGUgYWJvdmUgc29sdXRpb24gd2l0aCBwcmlvcml0eSBp bmhlcml0YW5jZSBtYXkgYmVjb21lIGFjdHVhbCBpbiB0aGUKLWZ1dHVyZSwgY3VycmVudGx5IHdl IGRvbid0IGltcGxlbWVudCBhbnkgcHJpb3JpdHkgdHdpZGRsaW5nIHNvbHV0aW9uLgorZnV0dXJl LCBjdXJyZW50bHkgd2UgZG8gbm90IGltcGxlbWVudCBhbnkgcHJpb3JpdHkgdHdpZGRsaW5nIHNv bHV0aW9uLgogT3VyIGdlbmVyYWwgYWltIGlzIHRvIHJlZHVjZSB0aGUgY29udGVudGlvbiBvZiBh bGwgbXV0ZXhlcyBieSBtYWtpbmcKIHRoZW0gbW9yZSBmaW5lIGdyYWluZWQuCiAKQEAgLTc4Myw4 ICs3ODMsNiBAQCBzcnZfdGFibGVfcmVzZXJ2ZV9zbG90KAogCXNsb3QtPnN1c3BlbmRlZCA9IEZB TFNFOwogCXNsb3QtPnR5cGUgPSB0eXBlOwogCXV0X2FkKHNydl9zbG90X2dldF90eXBlKHNsb3Qp ID09IHR5cGUpOwotCXNsb3QtPmlkID0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCk7Ci0Jc2xvdC0+ aGFuZGxlID0gb3NfdGhyZWFkX2dldF9jdXJyKCk7CiAKIAlyZXR1cm4oc2xvdCk7CiB9CkBAIC04 MDIsNyArODAwLDYgQEAgc3J2X3N1c3BlbmRfdGhyZWFkKAogCXNydl9zeXNfbXV0ZXhfZW50ZXIo KTsKIAl1dF9hZChzbG90LT5pbl91c2UpOwogCXV0X2FkKCFzbG90LT5zdXNwZW5kZWQpOwotCXV0 X2FkKHNsb3QtPmlkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAogCWlmIChzcnZfcHJp bnRfdGhyZWFkX3JlbGVhc2VzKSB7CiAJCWZwcmludGYoc3RkZXJyLApAQCAtODYzLDEwICs4NjAs OSBAQCBzcnZfcmVsZWFzZV90aHJlYWRzKAogCiAJCQlpZiAoc3J2X3ByaW50X3RocmVhZF9yZWxl YXNlcykgewogCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkiUmVsZWFzaW5nIHRocmVhZCAlbHUg dHlwZSAlbHUiCisJCQkJCSJSZWxlYXNpbmcgdGhyZWFkIHR5cGUgJWx1IgogCQkJCQkiIGZyb20g c2xvdCAlbHVcbiIsCi0JCQkJCSh1bG9uZykgc2xvdC0+aWQsICh1bG9uZykgdHlwZSwKLQkJCQkJ KHVsb25nKSBpKTsKKwkJCQkJKHVsb25nKSB0eXBlLCAodWxvbmcpIGkpOwogCQkJfQogCiAJCQlj b3VudCsrOwpAQCAtMTAzOSw2ICsxMDM1LDEwIEBAIHNydl9jb25jX2VudGVyX2lubm9kYigKIAlz cnZfY29uY19zbG90X3QqCXNsb3QJICA9IE5VTEw7CiAJdWxpbnQJCQlpOwogCisjaWZkZWYgVU5J Vl9TWU5DX0RFQlVHCisJdXRfYWQoIXN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV90cngodHJ4 LT5oYXNfc2VhcmNoX2xhdGNoKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisKIAlp ZiAodHJ4LT5teXNxbF90aGQgIT0gTlVMTAogCSAgICAmJiB0aGRfaXNfcmVwbGljYXRpb25fc2xh dmVfdGhyZWFkKHRyeC0+bXlzcWxfdGhkKSkgewogCkBAIC0xMTYyLDYgKzExNjIsMTAgQEAgcmV0 cnk6CiAJLyogR28gdG8gd2FpdCBmb3IgdGhlIGV2ZW50OyB3aGVuIGEgdGhyZWFkIGxlYXZlcyBJ bm5vREIgaXQgd2lsbAogCXJlbGVhc2UgdGhpcyB0aHJlYWQgKi8KIAorCXV0X2FkKCF0cngtPmhh c19zZWFyY2hfbGF0Y2gpOworI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKCFzeW5jX3Ro cmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFzX3NlYXJjaF9sYXRjaCkpOworI2VuZGlm IC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCXRyeC0+b3BfaW5mbyA9ICJ3YWl0aW5nIGluIElubm9E QiBxdWV1ZSI7CiAKIAl0aGRfd2FpdF9iZWdpbih0cngtPm15c3FsX3RoZCwgVEhEX1dBSVRfUk9X X1RBQkxFX0xPQ0spOwpAQCAtMTE5Nyw2ICsxMjAxLDEwIEBAIHNydl9jb25jX2ZvcmNlX2VudGVy X2lubm9kYigKIAl0cnhfdCoJdHJ4KQkvKiE8IGluOiB0cmFuc2FjdGlvbiBvYmplY3QgYXNzb2Np YXRlZCB3aXRoIHRoZQogCQkJdGhyZWFkICovCiB7CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJ dXRfYWQoIXN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV90cngodHJ4LT5oYXNfc2VhcmNoX2xh dGNoKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisKIAlpZiAoVU5JVl9MSUtFTFko IXNydl90aHJlYWRfY29uY3VycmVuY3kpKSB7CiAKIAkJcmV0dXJuOwpAQCAtMTI2OCw2ICsxMjc2 LDEwIEBAIHNydl9jb25jX2ZvcmNlX2V4aXRfaW5ub2RiKAogCWlmIChzbG90ICE9IE5VTEwpIHsK IAkJb3NfZXZlbnRfc2V0KHNsb3QtPmV2ZW50KTsKIAl9CisKKyNpZmRlZiBVTklWX1NZTkNfREVC VUcKKwl1dF9hZCghc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X3RyeCh0cngtPmhhc19zZWFy Y2hfbGF0Y2gpKTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIH0KIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKQEAgLTEyNzksNiArMTI5MSwxMCBAQCBzcnZfY29uY19leGl0X2lubm9kYigKIAl0 cnhfdCoJdHJ4KQkvKiE8IGluOiB0cmFuc2FjdGlvbiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRo ZQogCQkJdGhyZWFkICovCiB7CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJdXRfYWQoIXN5bmNf dGhyZWFkX2xldmVsc19ub25lbXB0eV90cngodHJ4LT5oYXNfc2VhcmNoX2xhdGNoKSk7CisjZW5k aWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisKIAlpZiAodHJ4LT5uX3RpY2tldHNfdG9fZW50ZXJf aW5ub2RiID4gMCkgewogCQkvKiBXZSB3aWxsIHByZXRlbmQgdGhlIHRocmVhZCBpcyBzdGlsbCBp bnNpZGUgSW5ub0RCIHRob3VnaCBpdAogCQlub3cgbGVhdmVzIHRoZSBJbm5vREIgZW5naW5lLiBJ biB0aGlzIHdheSB3ZSBzYXZlCkBAIC0yNjMyLDExICsyNjQ4LDcgQEAgc3VzcGVuZF90aHJlYWQ6 CiAJb3NfZXZlbnRfd2FpdChzbG90LT5ldmVudCk7CiAKIAlpZiAoc3J2X3NodXRkb3duX3N0YXRl ID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpIHsKLQkJLyogVGhpcyBpcyBvbmx5IGV4dHJh IHNhZmV0eSwgdGhlIHRocmVhZCBzaG91bGQgZXhpdAotCQlhbHJlYWR5IHdoZW4gdGhlIGV2ZW50 IHdhaXQgZW5kcyAqLwotCiAJCW9zX3RocmVhZF9leGl0KE5VTEwpOwotCiAJfQogCiAJZ290byBs b29wOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5j JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuYwlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMTA0MDUxMTI1MzgtNm5ya25ld3ltMDIybnFmNgpAQCAtMjE2OSwxNyArMjE2OSw5IEBAIGlu bm9iYXNlX3NodXRkb3duX2Zvcl9teXNxbCh2b2lkKQogCiAJc3J2X3NodXRkb3duX3N0YXRlID0g U1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUzsKIAotCS8qIEluIGEgJ3ZlcnkgZmFzdCcgc2h1dGRv d24sIHdlIGRvIG5vdCBuZWVkIHRvIHdhaXQgZm9yIHRoZXNlIHRocmVhZHMKLQl0byBkaWU7IGFs bCB3aGljaCBjb3VudHMgaXMgdGhhdCB3ZSBmbHVzaGVkIHRoZSBsb2c7IGEgJ3ZlcnkgZmFzdCcK LQlzaHV0ZG93biBpcyBlc3NlbnRpYWxseSBhIGNyYXNoLiAqLwotCi0JaWYgKHNydl9mYXN0X3No dXRkb3duID09IDIpIHsKLQkJcmV0dXJuKERCX1NVQ0NFU1MpOwotCX0KLQogCS8qIEFsbCB0aHJl YWRzIGVuZCB1cCB3YWl0aW5nIGZvciBjZXJ0YWluIGV2ZW50cy4gUHV0IHRob3NlIGV2ZW50cwot CXRvIHRoZSBzaWduYWxlZCBzdGF0ZS4gVGhlbiB0aGUgdGhyZWFkcyB3aWxsIGV4aXQgdGhlbXNl bHZlcyBpbgotCW9zX3RocmVhZF9ldmVudF93YWl0KCkuICovCisJdG8gdGhlIHNpZ25hbGVkIHN0 YXRlLiBUaGVuIHRoZSB0aHJlYWRzIHdpbGwgZXhpdCB0aGVtc2VsdmVzIGFmdGVyCisJb3NfZXZl bnRfd2FpdCgpLiAqLwogCiAJZm9yIChpID0gMDsgaSA8IDEwMDA7IGkrKykgewogCQkvKiBOT1RF OiBJRiBZT1UgQ1JFQVRFIFRIUkVBRFMgSU4gSU5OT0RCLCBZT1UgTVVTVCBFWElUIFRIRU0KCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMnCi0tLSBh L3N0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9zeW5jL3N5bmMwc3luYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw NDA1MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTE4OSwxMiArMTg5LDEyIEBAIFVOSVZfSU5U RVJOIHN5bmNfYXJyYXlfdCoJc3luY19wcmltYXJ5X3cKIC8qKiBUaGlzIHZhcmlhYmxlIGlzIHNl dCB0byBUUlVFIHdoZW4gc3luY19pbml0IGlzIGNhbGxlZCAqLwogVU5JVl9JTlRFUk4gaWJvb2wJ c3luY19pbml0aWFsaXplZAk9IEZBTFNFOwogCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAvKiog QW4gYWNxdWlyZWQgbXV0ZXggb3IgcnctbG9jayBhbmQgaXRzIGxldmVsIGluIHRoZSBsYXRjaGlu ZyBvcmRlciAqLwogdHlwZWRlZiBzdHJ1Y3Qgc3luY19sZXZlbF9zdHJ1Y3QJc3luY19sZXZlbF90 OwogLyoqIE11dGV4ZXMgb3IgcnctbG9ja3MgaGVsZCBieSBhIHRocmVhZCAqLwogdHlwZWRlZiBz dHJ1Y3Qgc3luY190aHJlYWRfc3RydWN0CXN5bmNfdGhyZWFkX3Q7CiAKLSNpZmRlZiBVTklWX1NZ TkNfREVCVUcKIC8qKiBUaGUgbGF0Y2ggbGV2ZWxzIGN1cnJlbnRseSBvd25lZCBieSB0aHJlYWRz IGFyZSBzdG9yZWQgaW4gdGhpcyBkYXRhCiBzdHJ1Y3R1cmU7IHRoZSBzaXplIG9mIHRoaXMgYXJy YXkgaXMgT1NfVEhSRUFEX01BWF9OICovCiAKQEAgLTIyMSw3ICsyMjEsNiBAQCBVTklWX0lOVEVS TiBteXNxbF9wZnNfa2V5X3QJbXV0ZXhfbGlzdF9tCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAv KiogTGF0Y2hpbmcgb3JkZXIgY2hlY2tzIHN0YXJ0IHdoZW4gdGhpcyBpcyBzZXQgVFJVRSAqLwog VU5JVl9JTlRFUk4gaWJvb2wJc3luY19vcmRlcl9jaGVja3Nfb24JPSBGQUxTRTsKLSNlbmRpZiAv KiBVTklWX1NZTkNfREVCVUcgKi8KIAogLyoqIE51bWJlciBvZiBzbG90cyByZXNlcnZlZCBmb3Ig ZWFjaCBPUyB0aHJlYWQgaW4gdGhlIHN5bmMgbGV2ZWwgYXJyYXkgKi8KIHN0YXRpYyBjb25zdCB1 bGludCBTWU5DX1RIUkVBRF9OX0xFVkVMUyA9IDEwMDAwOwpAQCAtMjU4LDYgKzI1Nyw3IEBAIHN0 cnVjdCBzeW5jX2xldmVsX3N0cnVjdHsKIAkJCQkJdGhlIG9yZGluYWwgdmFsdWUgb2YgdGhlIG5l eHQgZnJlZQogCQkJCQllbGVtZW50ICovCiB9OworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAq LwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogQ3JlYXRlcywgb3IgcmF0aGVyLCBpbml0aWFsaXplcyBhIG11 dGV4IG9iamVjdCBpbiBhIHNwZWNpZmllZCBtZW1vcnkKQEAgLTEwMjEsOSArMTAyMSw3IEBAIHZv aWQqCiBzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfZ2VuKAogLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ki8KIAlpYm9vbAlkaWN0X211dGV4X2FsbG93ZWQpCS8qITwgaW46IFRSVUUg aWYgZGljdGlvbmFyeSBtdXRleCBpcwotCQkJCQlhbGxvd2VkIHRvIGJlIG93bmVkIGJ5IHRoZSB0 aHJlYWQsCi0JCQkJCWFsc28gcHVyZ2VfaXNfcnVubmluZyBtdXRleCBpcwotCQkJCQlhbGxvd2Vk ICovCisJCQkJCWFsbG93ZWQgdG8gYmUgb3duZWQgYnkgdGhlIHRocmVhZCAqLwogewogCXVsaW50 CQlpOwogCXN5bmNfYXJyX3QqCWFycjsKQEAgLTEwNzAsMTQgKzEwNjgsNjEgQEAgc3luY190aHJl YWRfbGV2ZWxzX25vbmVtcHR5X2dlbigKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUNoZWNrcyB0aGF0 IHRoZSBsZXZlbCBhcnJheSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGVtcHR5LgotQHJldHVy bglUUlVFIGlmIGVtcHR5ICovCitDaGVja3MgaWYgdGhlIGxldmVsIGFycmF5IGZvciB0aGUgY3Vy cmVudCB0aHJlYWQgaXMgZW1wdHksCitleGNlcHQgZm9yIHRoZSBidHJfc2VhcmNoX2xhdGNoLgor QHJldHVybglhIGxhdGNoLCBvciBOVUxMIGlmIGVtcHR5IGV4Y2VwdCB0aGUgZXhjZXB0aW9ucyBz cGVjaWZpZWQgYmVsb3cgKi8KIFVOSVZfSU5URVJOCi1pYm9vbAotc3luY190aHJlYWRfbGV2ZWxz X2VtcHR5KHZvaWQpCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK3ZvaWQqCitzeW5j X3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ki8KKwlpYm9vbAloYXNfc2VhcmNoX2xhdGNoKQorCQkJCS8qITwgaW46IFRSVUUgaWYgYW5k IG9ubHkgaWYgdGhlIHRocmVhZAorCQkJCWlzIHN1cHBvc2VkIHRvIGhvbGQgYnRyX3NlYXJjaF9s YXRjaCAqLwogewotCXJldHVybihzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZ2VuKEZBTFNFKSk7 CisJdWxpbnQJCWk7CisJc3luY19hcnJfdCoJYXJyOworCXN5bmNfdGhyZWFkX3QqCXRocmVhZF9z bG90OworCisJaWYgKCFzeW5jX29yZGVyX2NoZWNrc19vbikgeworCisJCXJldHVybihOVUxMKTsK Kwl9CisKKwl1dF9hKCFoYXNfc2VhcmNoX2xhdGNoCisJICAgICB8fCBzeW5jX3RocmVhZF9sZXZl bHNfY29udGFpbnMoU1lOQ19TRUFSQ0hfU1lTKSk7CisKKwltdXRleF9lbnRlcigmc3luY190aHJl YWRfbXV0ZXgpOworCisJdGhyZWFkX3Nsb3QgPSBzeW5jX3RocmVhZF9sZXZlbF9hcnJheXNfZmlu ZF9zbG90KCk7CisKKwlpZiAodGhyZWFkX3Nsb3QgPT0gTlVMTCkgeworCisJCW11dGV4X2V4aXQo JnN5bmNfdGhyZWFkX211dGV4KTsKKworCQlyZXR1cm4oTlVMTCk7CisJfQorCisJYXJyID0gdGhy ZWFkX3Nsb3QtPmxldmVsczsKKworCWZvciAoaSA9IDA7IGkgPCBhcnItPm5fZWxlbXM7ICsraSkg eworCQljb25zdCBzeW5jX2xldmVsX3QqCXNsb3Q7CisKKwkJc2xvdCA9ICZhcnItPmVsZW1zW2ld OworCisJCWlmIChzbG90LT5sYXRjaCAhPSBOVUxMCisJCSAgICAmJiAoIWhhc19zZWFyY2hfbGF0 Y2gKKwkJCXx8IHNsb3QtPmxldmVsICE9IFNZTkNfU0VBUkNIX1NZUykpIHsKKworCQkJbXV0ZXhf ZXhpdCgmc3luY190aHJlYWRfbXV0ZXgpOworCQkJdXRfZXJyb3I7CisKKwkJCXJldHVybihzbG90 LT5sYXRjaCk7CisJCX0KKwl9CisKKwltdXRleF9leGl0KCZzeW5jX3RocmVhZF9tdXRleCk7CisK KwlyZXR1cm4oTlVMTCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHJvbGwuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90 cngvdHJ4MHJvbGwuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2 LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHJvbGwuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMjUzOC02bnJrbmV3eW0wMjJu cWY2CkBAIC01NzQsMTAgKzU3NCw2IEBAIHRyeF9yb2xsYmFja19hY3RpdmUoCiAJCSh1bGxpbnQp IHRyeC0+aWQsCiAJCSh1bG9uZykgcm93c190b191bmRvLCB1bml0KTsKIAotCXRyeC0+bXlzcWxf dGhyZWFkX2lkID0gMDsKLQotCXRyeC0+bXlzcWxfcHJvY2Vzc19ubyA9IDA7Ci0KIAlpZiAodHJ4 X2dldF9kaWN0X29wZXJhdGlvbih0cngpICE9IFRSWF9ESUNUX09QX05PTkUpIHsKIAkJcm93X215 c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7CiAJCWRpY3Rpb25hcnlfbG9ja2VkID0gVFJV RTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cnguYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS90cngvdHJ4MHRyeC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1 MTEyNTM4LTZucmtuZXd5bTAyMm5xZjYKQEAgLTE3OCwxMCArMTc4LDYgQEAgdHJ4X2FsbG9jYXRl X2Zvcl9teXNxbCh2b2lkKQogCiAJcndfbG9ja194X3VubG9jaygmdHJ4X3N5cy0+bG9jayk7CiAK LQl0cngtPm15c3FsX3RocmVhZF9pZCA9IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpOwotCi0JdHJ4 LT5teXNxbF9wcm9jZXNzX25vID0gb3NfcHJvY19nZXRfbnVtYmVyKCk7Ci0KIAlyZXR1cm4odHJ4 KTsKIH0KIApAQCAtMTMwMSwxMSArMTI5Nyw2IEBAIHRyeF9wcmludF9sb3coCiAJZnByaW50Zihm LCAiLCBzdGF0ZSAlbHUiLCAodWxvbmcpIHRyeC0+c3RhdGUpOwogCXV0X2FkKDApOwogc3RhdGVf b2s6Ci0jaWZkZWYgVU5JVl9MSU5VWAotCWZwcmludGYoZiwgIiwgcHJvY2VzcyBubyAlbHUiLCB0 cngtPm15c3FsX3Byb2Nlc3Nfbm8pOwotI2VuZGlmCi0JZnByaW50ZihmLCAiLCBPUyB0aHJlYWQg aWQgJWx1IiwKLQkJKHVsb25nKSBvc190aHJlYWRfcGYodHJ4LT5teXNxbF90aHJlYWRfaWQpKTsK IAogCS8qIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiAqLwogCW9wX2luZm8gPSB0cngtPm9wX2lu Zm87Cgo= --===============1221579639== 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: 3998a0bb99e9d5783ad53c9751fb1f9788becfcb # timestamp: 2011-04-05 14:32:46 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: vasil.dimov@stripped\ # 6rfog7rdnp3r5efc # # Begin bundle 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 --===============1221579639==--