From: marko.makela Date: January 24 2011 8:25am Subject: bzr commit into mysql-trunk-innodb branch (marko.makela:3452) WL#5458 List-Archive: http://lists.mysql.com/commits/129403 Message-Id: <201101240825.p0O89pm2004779@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="__12958575566138469abhmt003" --__12958575566138469abhmt003 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjYtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMTI0MDgwMTI0LXF0MzE4 cGU3YzNpbHRwM3AKCiAzNDUyIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDEtMjQKICAgICAgQ2xlYW4g dXAgdHJ4X2lzX2FjdGl2ZSgpIGFuZCByb3dfdmVyc19pbXBsX3hfbG9ja2VkKCkuCiAgICAgIFRo aXMgaXMgcGFydCBvZiBteSBjbGVhbi11cHMgbWFkZSBkdXJpbmcgdGhlIFdMIzU0NTggcmV2aWV3 LgogICAgICAKICAgICAgdHJ4X2lzX2FjdGl2ZV9sb3coKTogQWxsb3cgY29ycnVwdCB0byBiZSBO VUxMIGFuZCBtYWtlIHRoZSBjYWxsZXIKICAgICAgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemlu ZyAqY29ycnVwdD1GQUxTRS4KICAgICAgCiAgICAgIHRyeF9pc19hY3RpdmUoKTogQWRkIHRoZSBw YXJhbWV0ZXIgaWJvb2wqIGNvcnJ1cHQuCiAgICAgIAogICAgICBsb2NrX3JlY19xdWV1ZV92YWxp ZGF0ZSgpOiBQYXNzIE5VTEwgdG8gdHJ4X2lzX2FjdGl2ZV9sb3coKS4gQWRkCiAgICAgIGNvbW1l bnRzIHJlZ2FyZGluZyBsb2NrX3N5cy0+bXV0ZXguIFJlbW92ZSBhbiBvYnNvbGV0ZSBzZWN0aW9u IG9mCiAgICAgIHVudXNlZCBjb2RlLgogICAgICAKICAgICAgbG9ja19yZWNfY29udmVydF9pbXBs X3RvX2V4cGwoKTogQWRqdXN0IGNvbW1lbnRzIGFuZCBwYXNzIGNvcnJ1cHQ9TlVMTAogICAgICB0 byB0cnhfaXNfYWN0aXZlKCkuCiAgICAgIAogICAgICByb3dfdmVyc19pbXBsX3hfbG9ja2VkX2xv dygpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IGZyb20KICAgICAgcm93X3ZlcnNfaW1wbF94X2xvY2tl ZCgpLiBDb250YWlucyBtb3N0IG9mIHRoZSBsb2dpYy4KICAgICAgQ2xhcmlmeSB0aGF0IHRoZSBj YWxsZXIgd2lsbCBoYXZlIHRvIGhvbGQgbG9ja19zeXMtPm11dGV4IHdoaWxlCiAgICAgIGludm9r aW5nIHRyeF9pc19hY3RpdmUoKS4KICAgICAgUG9zdHBvbmUgdGhlIGFjcXVpc2l0aW9uIG9mIHB1 cmdlX3N5cy0+bGF0Y2ggdW50aWwgYWZ0ZXIgdGhlIGZpcnN0CiAgICAgIHRyeF9pc19hY3RpdmUo KSBjaGVjay4KICAgICAgUGFzcyB0aGUgY29ycmVjdCByZWNvcmQgdmVyc2lvbiB0byBsb2NrX3Jl cG9ydF90cnhfaWRfaW5zYW5pdHkoKS4KICAgICAgUmVtb3ZlIHRoZSBsb2NhbCB2YXJpYWJsZSB0 cnhfdCogdHJ4LiBJdCBpcyB1bnNhZmUgdG8ga2VlcCB0aGUgcG9pbnRlcgogICAgICBhcm91bmQs IGFzIGl0IG11c3Qgbm90IGJlIGRlcmVmZXJlbmNlZCB3aXRob3V0IGhvbGRpbmcKICAgICAgbG9j a19zeXMtPm11dGV4LgogICAgICBSZW1vdmUgdGhlIGxvY2FsIHZhcmlhYmxlIGFjdGl2ZV90cnhf aWQuIFdlIGFscmVhZHkgaGF2ZSB0cnhfaWQuCiAgICAgIENsYXJpZnkgY29tbWVudHMuCiAgICAg IAogICAgICByb3dfdmVyc19pbXBsX3hfbG9ja2VkKCk6IERvIG10cl9zdGFydCgpLCBsYXRjaCB0 aGUgY2x1c3RfcmVjLCBpbnZva2UKICAgICAgcm93X3ZlcnNfaW1wbF94X2xvY2tlZCgpLCBhbmQg ZmluYWxseSBtdHJfY29tbWl0KCkuCiAgICAgIAogICAgICByYjovLzU3MiBhcHByb3ZlZCBieSBT dW5ueSBCYWlucwoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv cm93MHZlcnMuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHN5cy5oCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwc3lzLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvbG9jay9sb2NrMGxvY2suYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVycy5j Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHZlcnMuaCcK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB2ZXJzLmgJcmV2aWQ6dmFzaWwuZGlt b3ZAb3JhY2xlLmNvbS0yMDExMDEyNDA4MDEyNC1xdDMxOHBlN2MzaWx0cDNwCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwdmVycy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwMTI0MDgyNTM5LWp4ZXpyMjZydmczNmhldjcKQEAgLTQxLDcgKzQxLDcgQEAgaW5k ZXggcmVjb3JkLgogQHJldHVybiAwIGlmIGNvbW1pdHRlZCwgZWxzZSB0aGUgYWN0aXZlIHRyYW5z YWN0aW9uIGlkOwogTk9URSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIHJldHVybiBmYWxzZSBwb3Np dGl2ZXMgYnV0IG5ldmVyIGZhbHNlCiBuZWdhdGl2ZXMuIFRoZSBjYWxsZXIgbXVzdCBjb25maXJt IGFsbCBwb3NpdGl2ZSByZXN1bHRzIGJ5IGNhbGxpbmcKLXRyeF9pc19hY3RpdmUoKS4gKi8KK3Ry eF9pc19hY3RpdmUoKSB3aGlsZSBob2xkaW5nIGxvY2tfc3lzLT5tdXRleC4gKi8KIFVOSVZfSU5U RVJOCiB0cnhfaWRfdAogcm93X3ZlcnNfaW1wbF94X2xvY2tlZCgKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHN5cy5oJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvdHJ4MHN5cy5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAx MjQwODAxMjQtcXQzMThwZTdjM2lsdHAzcAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv dHJ4MHN5cy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMTI0MDgyNTM5LWp4 ZXpyMjZydmczNmhldjcKQEAgLTI5NywyMiArMjk3LDMyIEBAIHRyeF9saXN0X2dldF9taW5fdHJ4 X2lkKHZvaWQpOwogLyo9PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog Q2hlY2tzIGlmIGEgdHJhbnNhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gaWQgaXMgYWN0aXZlLiBDYWxs ZXIgbXVzdCBob2xkCi10aGUgdHJ4X3N5c190Ojpsb2NrIGluIHNoYXJlZCBtb2RlLgotQHJldHVy bgl0cmFuc2FjdGlvbiBpbnN0YW5jZSBpZiBhY3RpdmUgb3IgTlVMTCAqLwordHJ4X3N5cy0+bG9j ayBpbiBzaGFyZWQgbW9kZS4gSWYgdGhlIGNhbGxlciBpcyBub3QgaG9sZGluZworbG9ja19zeXMt Pm11dGV4LCB0aGUgdHJhbnNhY3Rpb24gbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGNvbW1pdHRlZC4K K0ByZXR1cm4JdHJhbnNhY3Rpb24gaW5zdGFuY2UgaWYgYWN0aXZlLCBvciBOVUxMOwordGhlIHBv aW50ZXIgbXVzdCBub3QgYmUgZGVyZWZlcmVuY2VkIHVubGVzcyBsb2NrX3N5cy0+bXV0ZXggd2Fz CithY3F1aXJlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFuZCBpcyBzdGlsbCBiZWlu ZyBoZWxkICovCiBVTklWX0lOTElORQogdHJ4X3QqCiB0cnhfaXNfYWN0aXZlX2xvdygKIC8qPT09 PT09PT09PT09PT0qLwogCXRyeF9pZF90CXRyeF9pZCwJCS8qITwgaW46IHRyeCBpZCBvZiB0aGUg dHJhbnNhY3Rpb24gKi8KLQlpYm9vbCoJCWNvcnJ1cHQpOwkvKiE8IG91dDogVFJVRSBpZiBjb3Jy dXB0ICovCisJaWJvb2wqCQljb3JydXB0KTsJLyohPCBpbjogTlVMTCBvciBwb2ludGVyIHRvIGEg ZmxhZworCQkJCQl0aGF0IHdpbGwgYmUgc2V0IGlmIGNvcnJ1cHQgKi8KIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgot Q2hlY2tzIGlmIGEgdHJhbnNhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gaWQgaXMgYWN0aXZlLgotQHJl dHVybgl0cmFuc2FjdGlvbiBpbnN0YW5jZSBpZiBhY3RpdmUgKi8KK0NoZWNrcyBpZiBhIHRyYW5z YWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkIGlzIGFjdGl2ZS4gSWYgdGhlIGNhbGxlciBpcworbm90 IGhvbGRpbmcgbG9ja19zeXMtPm11dGV4LCB0aGUgdHJhbnNhY3Rpb24gbWF5IGFscmVhZHkgaGF2 ZSBiZWVuCitjb21taXR0ZWQuCitAcmV0dXJuCXRyYW5zYWN0aW9uIGluc3RhbmNlIGlmIGFjdGl2 ZSwgb3IgTlVMTDsKK3RoZSBwb2ludGVyIG11c3Qgbm90IGJlIGRlcmVmZXJlbmNlZCB1bmxlc3Mg bG9ja19zeXMtPm11dGV4IHdhcworYWNxdWlyZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlv biBhbmQgaXMgc3RpbGwgYmVpbmcgaGVsZCAqLwogVU5JVl9JTkxJTkUKIHRyeF90KgogdHJ4X2lz X2FjdGl2ZSgKIC8qPT09PT09PT09PSovCi0JdHJ4X2lkX3QJdHJ4X2lkKTsvKiE8IGluOiB0cngg aWQgb2YgdGhlIHRyYW5zYWN0aW9uICovCisJdHJ4X2lkX3QJdHJ4X2lkLAkJLyohPCBpbjogdHJ4 IGlkIG9mIHRoZSB0cmFuc2FjdGlvbiAqLworCWlib29sKgkJY29ycnVwdCk7CS8qITwgaW46IE5V TEwgb3IgcG9pbnRlciB0byBhIGZsYWcKKwkJCQkJdGhhdCB3aWxsIGJlIHNldCBpZiBjb3JydXB0 ICovCiAjaWZkZWYgVU5JVl9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDaGVja3MgdGhhdCB0cnggaXMg aW4gdGhlIHRyeCBsaXN0LgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS90cngwc3lzLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHN5cy5p YwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMTI0MDgwMTI0LXF0MzE4cGU3YzNp bHRwM3AKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDBzeXMuaWMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAxMjQwODI1MzktanhlenIyNnJ2ZzM2aGV2NwpAQCAt MzgwLDE0ICszODAsMTggQEAgdHJ4X2xpc3RfZ2V0X21pbl90cnhfaWQodm9pZCkKIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBDaGVja3MgaWYgYSB0cmFuc2FjdGlvbiB3aXRoIHRoZSBnaXZlbiBpZCBpcyBhY3Rp dmUuIENhbGxlciBtdXN0IGhvbGQKLXRoZSB0cnhfc3lzX3Q6OmxvY2sgaW4gc2hhcmVkIG1vZGUu Ci1AcmV0dXJuCXRyYW5zYWN0aW9uIGluc3RhbmNlIGlmIGFjdGl2ZSAqLwordHJ4X3N5cy0+bG9j ayBpbiBzaGFyZWQgbW9kZS4gSWYgdGhlIGNhbGxlciBpcyBub3QgaG9sZGluZworbG9ja19zeXMt Pm11dGV4LCB0aGUgdHJhbnNhY3Rpb24gbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGNvbW1pdHRlZC4K K0ByZXR1cm4JdHJhbnNhY3Rpb24gaW5zdGFuY2UgaWYgYWN0aXZlLCBvciBOVUxMOwordGhlIHBv aW50ZXIgbXVzdCBub3QgYmUgZGVyZWZlcmVuY2VkIHVubGVzcyBsb2NrX3N5cy0+bXV0ZXggd2Fz CithY3F1aXJlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFuZCBpcyBzdGlsbCBiZWlu ZyBoZWxkICovCiBVTklWX0lOTElORQogdHJ4X3QqCiB0cnhfaXNfYWN0aXZlX2xvdygKIC8qPT09 PT09PT09PT09PT0qLwogCXRyeF9pZF90CXRyeF9pZCwJCS8qITwgaW46IHRyeCBpZCBvZiB0aGUg dHJhbnNhY3Rpb24gKi8KLQlpYm9vbCoJCWNvcnJ1cHQpCS8qITwgb3V0OiBUUlVFIGlmIGNvcnJ1 cHQgKi8KKwlpYm9vbCoJCWNvcnJ1cHQpCS8qITwgaW46IE5VTEwgb3IgcG9pbnRlciB0byBhIGZs YWcKKwkJCQkJdGhhdCB3aWxsIGJlIHNldCBpZiBjb3JydXB0ICovCiB7CiAJdHJ4X3QqCQl0cng7 CiAKQEAgLTM5NSwxOCArMzk5LDE4IEBAIHRyeF9pc19hY3RpdmVfbG93KAogCXV0X2FkKHJ3X2xv Y2tfb3duKCZ0cnhfc3lzLT5sb2NrLCBSV19MT0NLX1NIQVJFRCkpOwogI2VuZGlmIC8qIFVOSVZf U1lOQ19ERUJVRyAqLwogCi0JKmNvcnJ1cHQgPSBGQUxTRTsKLQogCWlmICh0cnhfaWQgPCB0cnhf bGlzdF9nZXRfbWluX3RyeF9pZF9sb3coKSkgewogCiAJCXRyeCA9IE5VTEw7Ci0JfSBlbHNlIGlm ICh0cnhfaWQgPj0gdHJ4X3N5cy0+bWF4X3RyeF9pZCkgeworCX0gZWxzZSBpZiAoVU5JVl9VTkxJ S0VMWSh0cnhfaWQgPj0gdHJ4X3N5cy0+bWF4X3RyeF9pZCkpIHsKIAogCQkvKiBUaGVyZSBtdXN0 IGJlIGNvcnJ1cHRpb246IHdlIGxldCB0aGUgY2FsbGVyIGhhbmRsZSB0aGUKIAkgICAgICAgCWRp YWdub3N0aWMgcHJpbnRzIGluIHRoaXMgY2FzZS4gKi8KIAogCQl0cnggPSBOVUxMOwotCQkqY29y cnVwdCA9IFRSVUU7CisJCWlmIChjb3JydXB0ICE9IE5VTEwpIHsKKwkJCSpjb3JydXB0ID0gVFJV RTsKKwkJfQogCX0gZWxzZSB7CiAJCXRyeCA9IHRyeF9nZXRfb25faWRfbG93KHRyeF9pZCk7CiAK QEAgLTQyMiwyMCArNDI2LDI1IEBAIHRyeF9pc19hY3RpdmVfbG93KAogfQogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKLUNoZWNrcyBpZiBhIHRyYW5zYWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkIGlzIGFjdGl2ZS4K LUByZXR1cm4JVFJVRSBpZiBhY3RpdmUgKi8KK0NoZWNrcyBpZiBhIHRyYW5zYWN0aW9uIHdpdGgg dGhlIGdpdmVuIGlkIGlzIGFjdGl2ZS4gSWYgdGhlIGNhbGxlciBpcworbm90IGhvbGRpbmcgbG9j a19zeXMtPm11dGV4LCB0aGUgdHJhbnNhY3Rpb24gbWF5IGFscmVhZHkgaGF2ZSBiZWVuCitjb21t aXR0ZWQuCitAcmV0dXJuCXRyYW5zYWN0aW9uIGluc3RhbmNlIGlmIGFjdGl2ZSwgb3IgTlVMTDsK K3RoZSBwb2ludGVyIG11c3Qgbm90IGJlIGRlcmVmZXJlbmNlZCB1bmxlc3MgbG9ja19zeXMtPm11 dGV4IHdhcworYWNxdWlyZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhbmQgaXMgc3Rp bGwgYmVpbmcgaGVsZCAqLwogVU5JVl9JTkxJTkUKIHRyeF90KgogdHJ4X2lzX2FjdGl2ZSgKIC8q PT09PT09PT09PSovCi0JdHJ4X2lkX3QJdHJ4X2lkKQkvKiE8IGluOiB0cnggaWQgb2YgdGhlIHRy YW5zYWN0aW9uICovCisJdHJ4X2lkX3QJdHJ4X2lkLAkJLyohPCBpbjogdHJ4IGlkIG9mIHRoZSB0 cmFuc2FjdGlvbiAqLworCWlib29sKgkJY29ycnVwdCkJLyohPCBpbjogTlVMTCBvciBwb2ludGVy IHRvIGEgZmxhZworCQkJCQl0aGF0IHdpbGwgYmUgc2V0IGlmIGNvcnJ1cHQgKi8KIHsKIAl0cnhf dCoJCXRyeDsKLQlpYm9vbAkJY29ycnVwdDsKIAogCXJ3X2xvY2tfc19sb2NrKCZ0cnhfc3lzLT5s b2NrKTsKIAotCXRyeCA9IHRyeF9pc19hY3RpdmVfbG93KHRyeF9pZCwgJmNvcnJ1cHQpOworCXRy eCA9IHRyeF9pc19hY3RpdmVfbG93KHRyeF9pZCwgY29ycnVwdCk7CiAKIAlyd19sb2NrX3NfdW5s b2NrKCZ0cnhfc3lzLT5sb2NrKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvbG9jay9sb2NrMGxvY2suYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9j ay5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAxMjQwODAxMjQtcXQzMThwZTdj M2lsdHAzcAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAxMjQwODI1MzktanhlenIyNnJ2ZzM2aGV2NwpAQCAt NTAzMywxNSArNTAzMywxNiBAQCBsb2NrX3JlY19xdWV1ZV92YWxpZGF0ZSgKIAlpZiAoIWluZGV4 KTsKIAllbHNlIGlmIChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgewogCQl0cnhfaWRfdAl0 cnhfaWQ7Ci0JCWlib29sCQljb3JydXB0OwogCiAJCS8qIFVubGlrZSB0aGUgbm9uLWRlYnVnIGNv ZGUsIHRoaXMgaW52YXJpYW50IGNhbiBvbmx5IHN1Y2NlZWQKIAkJaWYgdGhlIGNoZWNrIGFuZCBh c3NlcnRpb24gYXJlIGNvdmVyZWQgYnkgdGhlIGxvY2sgbXV0ZXguICovCiAKLQkJdHJ4X2lkICA9 IGxvY2tfY2x1c3RfcmVjX3NvbWVfaGFzX2ltcGwocmVjLCBpbmRleCwgb2Zmc2V0cyk7Ci0KKwkJ dHJ4X2lkID0gbG9ja19jbHVzdF9yZWNfc29tZV9oYXNfaW1wbChyZWMsIGluZGV4LCBvZmZzZXRz KTsKKwkJaW1wbF90cnggPSB0cnhfaXNfYWN0aXZlX2xvdyh0cnhfaWQsIE5VTEwpOwogCi0JCWlt cGxfdHJ4ID0gdHJ4X2lzX2FjdGl2ZV9sb3codHJ4X2lkLCAmY29ycnVwdCk7CisJCXV0X2FkKGxv Y2tfbXV0ZXhfb3duKCkpOworCQkvKiBpbXBsX3RyeCBjYW5ub3QgYmUgY29tbWl0dGVkIHVudGls IGxvY2tfbXV0ZXhfZXhpdCgpCisJCWJlY2F1c2UgbG9ja190cnhfcmVsZWFzZV9sb2NrcygpIGFj cXVpcmVzIGxvY2tfc3lzLT5tdXRleCAqLwogCiAJCWlmIChpbXBsX3RyeCAhPSBOVUxMCiAJCSAg ICAmJiBsb2NrX3JlY19vdGhlcl9oYXNfZXhwbF9yZXEoTE9DS19TLCAwLCBMT0NLX1dBSVQsCkBA IC01MDUwLDQ1ICs1MDUxLDYgQEAgbG9ja19yZWNfcXVldWVfdmFsaWRhdGUoCiAJCQl1dF9hKGxv Y2tfcmVjX2hhc19leHBsKExPQ0tfWCB8IExPQ0tfUkVDX05PVF9HQVAsCiAJCQkJCSAgICAgICBi bG9jaywgaGVhcF9ubywgaW1wbF90cngpKTsKIAkJfQotI2lmIDAKLQl9IGVsc2UgewotCi0JCS8q IElmIHRoaXMgdGhyZWFkIGlzIGhvbGRpbmcgdGhlIGZpbGUgc3BhY2UgbGF0Y2gKLQkJKGZpbF9z cGFjZV90OjpsYXRjaCksIHRoZSBmb2xsb3dpbmcgY2hlY2sgV0lMTCBicmVhawotCQlsYXRjaGlu ZyBvcmRlciBhbmQgbWF5IGNhdXNlIGEgZGVhZGxvY2sgb2YgdGhyZWFkcy4gKi8KLQotCQkvKiBO T1RFOiBUaGlzIGlzIGEgYm9ndXMgY2hlY2sgdGhhdCB3b3VsZCBmYWlsIGluIHRoZQotCQlmb2xs b3dpbmcgY2FzZTogT3VyIHRyYW5zYWN0aW9uIGlzIHVwZGF0aW5nIGEKLQkJcm93LiBBZnRlciBp dCBoYXMgdXBkYXRlZCB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCwKLQkJaXQgZ29lcyB0byBh IHNlY29uZGFyeSBpbmRleCByZWNvcmQgYW5kIGZpbmRzIHNvbWVvbmUKLQkJZWxzZSBob2xkaW5n IGFuIGV4cGxpY2l0IFMtIG9yIFgtbG9jayBvbiB0aGF0Ci0JCXNlY29uZGFyeSBpbmRleCByZWNv cmQsIHByZXN1bWFibHkgZnJvbSBhIGxvY2tpbmcKLQkJcmVhZC4gT3VyIHRyYW5zYWN0aW9uIGNh bm5vdCB1cGRhdGUgdGhlIHNlY29uZGFyeQotCQlpbmRleCBpbW1lZGlhdGVseSwgYnV0IHBsYWNl cyBhIHdhaXRpbmcgWC1sb2NrIHJlcXVlc3QKLQkJb24gdGhlIHNlY29uZGFyeSBpbmRleCByZWNv cmQuIFRoZXJlIGlzIG5vdGhpbmcKLQkJaWxsZWdhbCBpbiB0aGlzLiBUaGUgYXNzZXJ0aW9uIGlz IHNpbXBseSB0b28gc3Ryb25nLiAqLwotCi0JCS8qIEZyb20gdGhlIGxvY2tpbmcgcG9pbnQgb2Yg dmlldywgZWFjaCBzZWNvbmRhcnkKLQkJaW5kZXggaXMgYSBzZXBhcmF0ZSB0YWJsZS4gQSBsb2Nr IHRoYXQgaXMgaGVsZCBvbgotCQlzZWNvbmRhcnkgaW5kZXggcmVjIGRvZXMgbm90IGdpdmUgYW55 IHJpZ2h0cyB0byBtb2RpZnkKLQkJb3IgcmVhZCB0aGUgY2x1c3RlcmVkIGluZGV4IHJlYy4gVGhl cmVmb3JlLCB3ZSBjYW4KLQkJdGhpbmsgb2YgdGhlIHNlYyBpbmRleCBhcyBhIHNlcGFyYXRlICd0 YWJsZScgZnJvbSB0aGUKLQkJY2x1c3QgaW5kZXggJ3RhYmxlJy4gQ29udmVyc2VseSwgYSB0cmFu c2FjdGlvbiB0aGF0Ci0JCWhhcyBhY3F1aXJlZCBhIGxvY2sgb24gYW5kIG1vZGlmaWVkIGEgY2x1 c3RlcmVkIGluZGV4Ci0JCXJlY29yZCBtYXkgbmVlZCB0byB3YWl0IGZvciBhIGxvY2sgb24gdGhl Ci0JCWNvcnJlc3BvbmRpbmcgcmVjb3JkIGluIGEgc2Vjb25kYXJ5IGluZGV4LiAqLwotCi0JCWlt cGxfdHJ4ID0gbG9ja19zZWNfcmVjX3NvbWVfaGFzX2ltcGwoCi0JCQlyZWMsIGluZGV4LCBvZmZz ZXRzKTsKLQotCQlpZiAoaW1wbF90cngKLQkJICAgICYmIGxvY2tfcmVjX290aGVyX2hhc19leHBs X3JlcShMT0NLX1MsIDAsIExPQ0tfV0FJVCwKLQkJCQkJCSAgIGJsb2NrLCBoZWFwX25vLCBpbXBs X3RyeCkpIHsKLQotCQkJdXRfYShsb2NrX3JlY19oYXNfZXhwbChMT0NLX1ggfCBMT0NLX1JFQ19O T1RfR0FQLAotCQkJCQkgICAgICAgYmxvY2ssIGhlYXBfbm8sIGltcGxfdHJ4KSk7Ci0JCX0KLSNl bmRpZgogCX0KIAogCWZvciAobG9jayA9IGxvY2tfcmVjX2dldF9maXJzdChibG9jaywgaGVhcF9u byk7CkBAIC01NTA5LDIyICs1NDcxLDI5IEBAIGxvY2tfcmVjX2NvbnZlcnRfaW1wbF90b19leHBs KAogCiAJaWYgKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKSB7CiAJCXRyeF9pZCA9IGxvY2tf Y2x1c3RfcmVjX3NvbWVfaGFzX2ltcGwocmVjLCBpbmRleCwgb2Zmc2V0cyk7CisJCS8qIFRoZSBj bHVzdGVyZWQgaW5kZXggcmVjb3JkIHdhcyBsYXN0IG1vZGlmaWVkIGJ5CisJCXRoaXMgdHJhbnNh Y3Rpb24uIFRoZSB0cmFuc2FjdGlvbiBtYXkgaGF2ZSBiZWVuCisJCWNvbW1pdHRlZCBhIGxvbmcg dGltZSBhZ28uICovCiAJfSBlbHNlIHsKIAkJdHJ4X2lkID0gbG9ja19zZWNfcmVjX3NvbWVfaGFz X2ltcGwocmVjLCBpbmRleCwgb2Zmc2V0cyk7CisJCS8qIFRoZSB0cmFuc2FjdGlvbiBjYW4gYmUg Y29tbWl0dGVkIGJlZm9yZSB0aGUKKwkJdHJ4X2lzX2FjdGl2ZSh0cnhfaWQsIE5VTEwpIGNoZWNr IGJlbG93LCBiZWNhdXNlIHdlIGFyZSBub3QKKwkJaG9sZGluZyBsb2NrX211dGV4LiAqLwogCX0K IAotCS8qIFRoZSBzdGF0ZSBvZiB0aGUgdHJhbnNhY3Rpb24gY2FuIGNoYW5nZSBhZnRlciB0aGUg Y2hlY2sgYWJvdmUuICovCi0KIAlpZiAodHJ4X2lkICE9IDApIHsKIAkJdHJ4X3QqCWltcGxfdHJ4 OwogCQl1bGludAloZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKIAogCQlsb2Nr X211dGV4X2VudGVyKCk7CiAKLQkJLyogSWYgdGhlIHRyYW5zYWN0aW9uIGhhcyBubyBleHBsaWNp dCB4LWxvY2sgc2V0IG9uIHRoZQotCQlyZWNvcmQsIHNldCBvbmUgZm9yIGl0ICovCisJCS8qIElm IHRoZSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUgYW5kIGhhcyBubworCQlleHBsaWNpdCB4 LWxvY2sgc2V0IG9uIHRoZSByZWNvcmQsIHNldCBvbmUgZm9yIGl0ICovCisKKwkJaW1wbF90cngg PSB0cnhfaXNfYWN0aXZlKHRyeF9pZCwgTlVMTCk7CiAKLQkJaW1wbF90cnggPSB0cnhfaXNfYWN0 aXZlKHRyeF9pZCk7CisJCS8qIGltcGxfdHJ4IGNhbm5vdCBiZSBjb21taXR0ZWQgdW50aWwgbG9j a19tdXRleF9leGl0KCkKKwkJYmVjYXVzZSBsb2NrX3RyeF9yZWxlYXNlX2xvY2tzKCkgYWNxdWly ZXMgbG9ja19zeXMtPm11dGV4ICovCiAKIAkJaWYgKGltcGxfdHJ4ICE9IE5VTEwKIAkJICAgICYm ICFsb2NrX3JlY19oYXNfZXhwbChMT0NLX1ggfCBMT0NLX1JFQ19OT1RfR0FQLCBibG9jaywKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVycy5jJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVycy5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5j b20tMjAxMTAxMjQwODAxMjQtcXQzMThwZTdjM2lsdHAzcAorKysgYi9zdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwdmVycy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMTI0MDgy NTM5LWp4ZXpyMjZydmczNmhldjcKQEAgLTUyLDYyICs1MiwyOCBAQCBpbmRleCByZWNvcmQuCiBA cmV0dXJuIDAgaWYgY29tbWl0dGVkLCBlbHNlIHRoZSBhY3RpdmUgdHJhbnNhY3Rpb24gaWQ7CiBO T1RFIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gcmV0dXJuIGZhbHNlIHBvc2l0aXZlcyBidXQgbmV2 ZXIgZmFsc2UKIG5lZ2F0aXZlcy4gVGhlIGNhbGxlciBtdXN0IGNvbmZpcm0gYWxsIHBvc2l0aXZl IHJlc3VsdHMgYnkgY2FsbGluZwotdHJ4X2lzX2FjdGl2ZSgpLiAqLwotVU5JVl9JTlRFUk4KK3Ry eF9pc19hY3RpdmUoKSB3aGlsZSBob2xkaW5nIGxvY2tfc3lzLT5tdXRleC4gKi8KK1VOSVZfSU5M SU5FCiB0cnhfaWRfdAotcm93X3ZlcnNfaW1wbF94X2xvY2tlZCgKLS8qPT09PT09PT09PT09PT09 PT09PSovCi0JY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkIGluIGEgc2Vjb25kYXJ5 IGluZGV4ICovCi0JZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogdGhlIHNlY29uZGFyeSBp bmRleCAqLwotCWNvbnN0IHVsaW50KglvZmZzZXRzKS8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhy ZWMsIGluZGV4KSAqLworcm93X3ZlcnNfaW1wbF94X2xvY2tlZF9sb3coCisvKj09PT09PT09PT09 PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJY2x1c3RfcmVjLAkvKiE8IGluOiBjbHVzdGVy ZWQgaW5kZXggcmVjb3JkICovCisJZGljdF9pbmRleF90KgljbHVzdF9pbmRleCwJLyohPCBpbjog dGhlIGNsdXN0ZXJlZCBpbmRleCAqLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBzZWNv bmRhcnkgaW5kZXggcmVjb3JkICovCisJZGljdF9pbmRleF90KglpbmRleCwJCS8qITwgaW46IHRo ZSBzZWNvbmRhcnkgaW5kZXggKi8KKwljb25zdCB1bGludCoJb2Zmc2V0cywJLyohPCBpbjogcmVj X2dldF9vZmZzZXRzKHJlYywgaW5kZXgpICovCisJbXRyX3QqCQltdHIpCQkvKiE8IGluL291dDog bWluaS10cmFuc2FjdGlvbiAqLwogewotCWRpY3RfaW5kZXhfdCoJY2x1c3RfaW5kZXg7Ci0JcmVj X3QqCQljbHVzdF9yZWM7Ci0JdWxpbnQqCQljbHVzdF9vZmZzZXRzOwotCXJlY190KgkJdmVyc2lv bjsKIAl0cnhfaWRfdAl0cnhfaWQ7Ci0JdHJ4X2lkX3QJYWN0aXZlX3RyeF9pZCA9IDA7Ci0JbWVt X2hlYXBfdCoJaGVhcDsKLQlkdHVwbGVfdCoJcm93OwotCXRyeF90KgkJdHJ4OwotCXVsaW50CQly ZWNfZGVsOwotCW10cl90CQltdHI7Ci0JdWxpbnQJCWNvbXA7CiAJaWJvb2wJCWNvcnJ1cHQ7CisJ dWxpbnQJCWNvbXA7CisJdWxpbnQJCXJlY19kZWw7CisJY29uc3QgcmVjX3QqCXZlcnNpb247CiAJ cmVjX3QqCQlwcmV2X3ZlcnNpb24gPSBOVUxMOworCXVsaW50KgkJY2x1c3Rfb2Zmc2V0czsKKwlt ZW1faGVhcF90KgloZWFwOwogCi0jaWZkZWYgVU5JVl9TWU5DX0RFQlVHCi0JdXRfYWQoIXJ3X2xv Y2tfb3duKCYocHVyZ2Vfc3lzLT5sYXRjaCksIFJXX0xPQ0tfU0hBUkVEKSk7Ci0JdXRfYWQoIXJ3 X2xvY2tfb3duKCZ0cnhfc3lzLT5sb2NrLCBSV19MT0NLX1NIQVJFRCkpOwotI2VuZGlmIC8qIFVO SVZfU1lOQ19ERUJVRyAqLwotCXV0X2FkKCFsb2NrX211dGV4X293bigpKTsKLQotCW10cl9zdGFy dCgmbXRyKTsKLQotCS8qIFNlYXJjaCBmb3IgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgVGhl IGxhdGNoIG9uIHRoZSBjbHVzdGVyZWQKLSAgICAgICAJaW5kZXggbG9ja3MgdGhlIHRvcCBvZiB0 aGUgc3RhY2sgb2YgdmVyc2lvbnMuIFdlIGFsc28gcmVzZXJ2ZQotICAgICAgIAlwdXJnZV9sYXRj aCB0byBsb2NrIHRoZSBib3R0b20gb2YgdGhlIHZlcnNpb24gc3RhY2suICovCi0KLQljbHVzdF9y ZWMgPSByb3dfZ2V0X2NsdXN0X3JlYygKLQkJQlRSX1NFQVJDSF9MRUFGLCByZWMsIGluZGV4LCAm Y2x1c3RfaW5kZXgsICZtdHIpOwotCi0JaWYgKCFjbHVzdF9yZWMpIHsKLQkJLyogSW4gYSByYXJl IGNhc2UgaXQgaXMgcG9zc2libGUgdGhhdCBubyBjbHVzdCByZWMgaXMgZm91bmQKLQkJZm9yIGEg c2Vjb25kYXJ5IGluZGV4IHJlY29yZDogaWYgaW4gcm93MHVtb2QuYwotCQlyb3dfdW5kb19tb2Rf cmVtb3ZlX2NsdXN0X2xvdygpIHdlIGhhdmUgYWxyZWFkeSByZW1vdmVkIHRoZQotCQljbHVzdCBy ZWMsIHdoaWxlIHB1cmdlIGlzIHN0aWxsIGNsZWFuaW5nIGFuZCByZW1vdmluZwotCQlzZWNvbmRh cnkgaW5kZXggcmVjb3JkcyBhc3NvY2lhdGVkIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZgotCQl0 aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZC4gSW4gdGhhdCBjYXNlIHRoZXJlIGNhbm5vdCBiZQot CQlhbnkgaW1wbGljaXQgbG9jayBvbiB0aGUgc2Vjb25kYXJ5IGluZGV4IHJlY29yZCwgYmVjYXVz ZQotCQlhbiBhY3RpdmUgdHJhbnNhY3Rpb24gd2hpY2ggaGFzIG1vZGlmaWVkIHRoZSBzZWNvbmRh cnkgaW5kZXgKLQkJcmVjb3JkIGhhcyBhbHNvIG1vZGlmaWVkIHRoZSBjbHVzdGVyZWQgaW5kZXgg cmVjb3JkLiBBbmQgaW4KLQkJYSByb2xsYmFjayB3ZSBhbHdheXMgdW5kbyB0aGUgbW9kaWZpY2F0 aW9ucyB0byBzZWNvbmRhcnkgaW5kZXgKLQkJcmVjb3JkcyBiZWZvcmUgdGhlIGNsdXN0ZXJlZCBp bmRleCByZWNvcmQuICovCi0KLQkJbXRyX2NvbW1pdCgmbXRyKTsKLQotCQlyZXR1cm4oYWN0aXZl X3RyeF9pZCk7Ci0JfQorCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNl dHMpKTsKIAogCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CiAKQEAgLTExNSwyNyArODEs MTggQEAgcm93X3ZlcnNfaW1wbF94X2xvY2tlZCgKIAkJY2x1c3RfcmVjLCBjbHVzdF9pbmRleCwg TlVMTCwgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CiAKIAl0cnhfaWQgPSByb3dfZ2V0X3JlY190 cnhfaWQoY2x1c3RfcmVjLCBjbHVzdF9pbmRleCwgY2x1c3Rfb2Zmc2V0cyk7CisJY29ycnVwdCA9 IEZBTFNFOwogCi0JbXRyX3NfbG9jaygmcHVyZ2Vfc3lzLT5sYXRjaCwgJm10cik7Ci0KLQlyd19s b2NrX3NfbG9jaygmdHJ4X3N5cy0+bG9jayk7Ci0KLQl0cnggPSB0cnhfaXNfYWN0aXZlX2xvdyh0 cnhfaWQsICZjb3JydXB0KTsKLQotCXJ3X2xvY2tfc191bmxvY2soJnRyeF9zeXMtPmxvY2spOwot Ci0JaWYgKHRyeCA9PSBOVUxMKSB7Ci0KKwlpZiAoIXRyeF9pc19hY3RpdmUodHJ4X2lkLCAmY29y cnVwdCkpIHsKIAkJLyogVGhlIHRyYW5zYWN0aW9uIHRoYXQgbW9kaWZpZWQgb3IgaW5zZXJ0ZWQg Y2x1c3RfcmVjIGlzIG5vCi0JCWxvbmdlciBhY3RpdmUgb3IgY29ycnVwdDogbm8gaW1wbGljaXQg bG9jayBvbiByZWMgKi8KLQorCQlsb25nZXIgYWN0aXZlLCBvciBpdCBpcyBjb3JydXB0OiBubyBp bXBsaWNpdCBsb2NrIG9uIHJlYyAqLwogCQlpZiAoY29ycnVwdCkgewotCQkgICAJbG9ja19yZXBv cnRfdHJ4X2lkX2luc2FuaXR5KAorCQkJbG9ja19yZXBvcnRfdHJ4X2lkX2luc2FuaXR5KAogCQkJ CXRyeF9pZCwgY2x1c3RfcmVjLCBjbHVzdF9pbmRleCwgY2x1c3Rfb2Zmc2V0cywKIAkJCQl0cnhf c3lzX2dldF9tYXhfdHJ4X2lkKCkpOwogCQl9Ci0KLQkJZ290byBleGl0X2Z1bmM7CisJCW1lbV9o ZWFwX2ZyZWUoaGVhcCk7CisJCXJldHVybigwKTsKIAl9CiAKIAljb21wID0gcGFnZV9yZWNfaXNf Y29tcChyZWMpOwpAQCAtMTQzLDM1ICsxMDAsMzggQEAgcm93X3ZlcnNfaW1wbF94X2xvY2tlZCgK IAl1dF9hZCghIWNvbXAgPT0gZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkpOwogCXV0 X2FkKCFjb21wID09ICFwYWdlX3JlY19pc19jb21wKGNsdXN0X3JlYykpOwogCi0JLyogV2UgbG9v ayB1cCBpZiBzb21lIGVhcmxpZXIgdmVyc2lvbiwgd2hpY2ggd2FzIG1vZGlmaWVkIGJ5IHRoZSB0 cnhfaWQKLQl0cmFuc2FjdGlvbiwgb2YgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgd291bGQg cmVxdWlyZSByZWMgdG8gYmUgaW4KLQlhIGRpZmZlcmVudCBzdGF0ZSAoZGVsZXRlIG1hcmtlZCBv ciB1bm1hcmtlZCwgb3IgaGF2ZSBkaWZmZXJlbnQgZmllbGQKLQl2YWx1ZXMsIG9yIG5vdCBleGlz dGluZykuIElmIHRoZXJlIGlzIHN1Y2ggYSB2ZXJzaW9uLCB0aGVuIHJlYyB3YXMKLQltb2RpZmll ZCBieSB0aGUgdHJ4X2lkIHRyYW5zYWN0aW9uLCBhbmQgaXQgaGFzIGFuIGltcGxpY2l0IHgtbG9j ayBvbgotCXJlYy4gTm90ZSB0aGF0IGlmIGNsdXN0X3JlYyBpdHNlbGYgd291bGQgcmVxdWlyZSBy ZWMgdG8gYmUgaW4gYQotCWRpZmZlcmVudCBzdGF0ZSwgdGhlbiB0aGUgdHJ4X2lkIHRyYW5zYWN0 aW9uIGhhcyBub3QgeWV0IGhhZCB0aW1lIHRvCi0JbW9kaWZ5IHJlYywgYW5kIGRvZXMgbm90IG5l Y2Vzc2FyaWx5IGhhdmUgYW4gaW1wbGljaXQgeC1sb2NrIG9uIHJlYy4gKi8KLQogCXJlY19kZWwg PSByZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIGNvbXApOwogCi0JZm9yICh2ZXJzaW9uID0gY2x1 c3RfcmVjOyB2ZXJzaW9uICE9IE5VTEw7IHZlcnNpb24gPSBwcmV2X3ZlcnNpb24pIHsKKwkvKiBX ZSBsb29rIHVwIGlmIHNvbWUgZWFybGllciB2ZXJzaW9uLCB3aGljaCB3YXMgbW9kaWZpZWQgYnkK Kwl0aGUgdHJ4X2lkIHRyYW5zYWN0aW9uLCBvZiB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCB3 b3VsZAorCXJlcXVpcmUgcmVjIHRvIGJlIGluIGEgZGlmZmVyZW50IHN0YXRlIChkZWxldGUgbWFy a2VkIG9yCisJdW5tYXJrZWQsIG9yIGhhdmUgZGlmZmVyZW50IGZpZWxkIHZhbHVlcywgb3Igbm90 IGV4aXN0aW5nKS4gSWYKKwl0aGVyZSBpcyBzdWNoIGEgdmVyc2lvbiwgdGhlbiByZWMgd2FzIG1v ZGlmaWVkIGJ5IHRoZSB0cnhfaWQKKwl0cmFuc2FjdGlvbiwgYW5kIGl0IGhhcyBhbiBpbXBsaWNp dCB4LWxvY2sgb24gcmVjLiBOb3RlIHRoYXQKKwlpZiBjbHVzdF9yZWMgaXRzZWxmIHdvdWxkIHJl cXVpcmUgcmVjIHRvIGJlIGluIGEgZGlmZmVyZW50CisJc3RhdGUsIHRoZW4gdGhlIHRyeF9pZCB0 cmFuc2FjdGlvbiBoYXMgbm90IHlldCBoYWQgdGltZSB0bworCW1vZGlmeSByZWMsIGFuZCBkb2Vz IG5vdCBuZWNlc3NhcmlseSBoYXZlIGFuIGltcGxpY2l0IHgtbG9jaworCW9uIHJlYy4gKi8KKwor CW10cl9zX2xvY2soJnB1cmdlX3N5cy0+bGF0Y2gsIG10cik7CiAKKwlmb3IgKHZlcnNpb24gPSBj bHVzdF9yZWM7OyB2ZXJzaW9uID0gcHJldl92ZXJzaW9uKSB7CiAJCXVsaW50CQllcnI7CiAJCXJv d19leHRfdCoJZXh0OworCQljb25zdCBkdHVwbGVfdCoJcm93OwogCQlkdHVwbGVfdCoJZW50cnk7 CiAJCXVsaW50CQl2ZXJzX2RlbDsKIAkJdHJ4X2lkX3QJcHJldl90cnhfaWQ7CiAJCW1lbV9oZWFw X3QqCW9sZF9oZWFwID0gaGVhcDsKIAotCQkvKiBXZSBoYXZlIHRvIGNoZWNrIGlmIHRoZSB0cnhf aWQgdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlLgotCSAgICAgICAJV2Uga2VlcCB0aGUgc2Vt YXBob3JlIGluIG10ciBvbiB0aGUgY2x1c3RfcmVjIHBhZ2UsIHNvIHRoYXQgbm8KLQkgICAgICAg CW90aGVyIHRyYW5zYWN0aW9uIGNhbiB1cGRhdGUgaXQgYW5kIGdldCBhbiBpbXBsaWNpdCB4LWxv Y2sgb24KLQkgICAgICAgCXJlYy4gKi8KKwkJLyogV2Uga2VlcCB0aGUgc2VtYXBob3JlIGluIG10 ciBvbiB0aGUgY2x1c3RfcmVjIHBhZ2UsIHNvCisJCXRoYXQgbm8gb3RoZXIgdHJhbnNhY3Rpb24g Y2FuIHVwZGF0ZSBpdCBhbmQgZ2V0IGFuCisJCWltcGxpY2l0IHgtbG9jayBvbiByZWMgdW50aWwg bXRyX2NvbW1pdChtdHIpLiAqLwogCiAJCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CiAK IAkJZXJyID0gdHJ4X3VuZG9fcHJldl92ZXJzaW9uX2J1aWxkKAotCQkJY2x1c3RfcmVjLCAmbXRy LCB2ZXJzaW9uLCBjbHVzdF9pbmRleCwgY2x1c3Rfb2Zmc2V0cywKKwkJCWNsdXN0X3JlYywgbXRy LCB2ZXJzaW9uLCBjbHVzdF9pbmRleCwgY2x1c3Rfb2Zmc2V0cywKIAkJCWhlYXAsICZwcmV2X3Zl cnNpb24pOwogCiAgCQkvKiBGcmVlIHZlcnNpb24gYW5kIGNsdXN0X29mZnNldHMuICovCkBAIC0x ODAsMzUgKzE0MCwzMSBAQCByb3dfdmVyc19pbXBsX3hfbG9ja2VkKAogCiAJCWlmIChwcmV2X3Zl cnNpb24gPT0gTlVMTCkgewogCi0JCQkvKiBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0 aXZlLCBjbHVzdF9yZWMgbXVzdAotCQkgICAgICAgCWJlIGEgZnJlc2ggaW5zZXJ0LCBiZWNhdXNl IG5vIHByZXZpb3VzIHZlcnNpb24gd2FzCi0JCSAgICAgICAJZm91bmQuICovCisJCQkvKiBjbHVz dF9yZWMgbXVzdCBiZSBhIGZyZXNoIGluc2VydCwgYmVjYXVzZQorCQkJbm8gcHJldmlvdXMgdmVy c2lvbiB3YXMgZm91bmQuICovCiAKIAkJCXV0X2EoZXJyID09IERCX1NVQ0NFU1MpOwotCi0JCQkv KiBUaGUgY2FsbGVyIHNob3VsZCBjaGVjayB0aGUgdHJhbmFzY3Rpb24gc3RhdHVzLiAqLwotCQkJ YWN0aXZlX3RyeF9pZCA9IHRyeF9pZDsKLQogCQkJYnJlYWs7CiAJCX0KIAogCQljbHVzdF9vZmZz ZXRzID0gcmVjX2dldF9vZmZzZXRzKAogCQkJcHJldl92ZXJzaW9uLCBjbHVzdF9pbmRleCwgTlVM TCwgVUxJTlRfVU5ERUZJTkVELAotCQkgICAgICAgCSZoZWFwKTsKKwkJCSZoZWFwKTsKIAogCQl2 ZXJzX2RlbCA9IHJlY19nZXRfZGVsZXRlZF9mbGFnKHByZXZfdmVyc2lvbiwgY29tcCk7CiAKIAkJ cHJldl90cnhfaWQgPSByb3dfZ2V0X3JlY190cnhfaWQoCiAJCQlwcmV2X3ZlcnNpb24sIGNsdXN0 X2luZGV4LCBjbHVzdF9vZmZzZXRzKTsKIAotCQkvKiBJZiB0aGUgdHJ4X2lkIGFuZCBwcmV2X3Ry eF9pZCBhcmUgZGlmZmVyZW50IGFuZCBpZgotCQl0aGUgcHJldl92ZXJzaW9uIGlzIG1hcmtlZCBk ZWxldGVkIHRoZW4gdGhlCi0JCXByZXZfdHJ4X2lkIG11c3QgaGF2ZSBhbHJlYWR5IGNvbW1pdHRl ZCBmb3IgdGhlIHRyeF9pZAotCQl0byBiZSBhYmxlIHRvIG1vZGlmeSB0aGUgcm93LiBUaGVyZWZv cmUsIHByZXZfdHJ4X2lkCi0JCWNhbm5vdCBob2xkIGFueSBpbXBsaWNpdCBsb2NrLiAqLworCQkv KiBJZiB0cnhfaWQgZGlmZmVycyBmcm9tIHByZXZfdHJ4X2lkIGFuZCBpZiB0aGUKKwkJcHJldl92 ZXJzaW9uIGlzIG1hcmtlZCBkZWxldGVkIHRoZW4gdGhlIHByZXZfdHJ4X2lkCisJCW11c3QgaGF2 ZSBhbHJlYWR5IGNvbW1pdHRlZCBmb3IgdGhlIHRyeF9pZCB0byBiZSBhYmxlCisJCXRvIG1vZGlm eSB0aGUgcm93LiBUaGVyZWZvcmUsIHByZXZfdHJ4X2lkIGNhbm5vdCBob2xkCisJCWFueSBpbXBs aWNpdCBsb2NrLiAqLwogCiAJCWlmICh2ZXJzX2RlbCAmJiB0cnhfaWQgIT0gcHJldl90cnhfaWQp IHsKIAorCQkJdHJ4X2lkID0gMDsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTIyOCwyNiArMTg0LDM0 IEBAIHJvd192ZXJzX2ltcGxfeF9sb2NrZWQoCiAKIAkJdXRfYShlbnRyeSAhPSBOVUxMKTsKIAot CQkvKiBJZiB3ZSBnZXQgaGVyZSwgd2Uga25vdyB0aGF0IHRoZSB0cnhfaWQgdHJhbnNhY3Rpb24g aXMKLQkJc3RpbGwgYWN0aXZlIGFuZCBpdCBoYXMgbW9kaWZpZWQgcHJldl92ZXJzaW9uLiBMZXQg dXMgY2hlY2sKLQkJaWYgcHJldl92ZXJzaW9uIHdvdWxkIHJlcXVpcmUgcmVjIHRvIGJlIGluIGEg ZGlmZmVyZW50Ci0JCXN0YXRlLiAqLworCQkvKiBJZiB3ZSBnZXQgaGVyZSwgd2Uga25vdyB0aGF0 IHRoZSB0cnhfaWQgdHJhbnNhY3Rpb24KKwkJbW9kaWZpZWQgcHJldl92ZXJzaW9uLiBMZXQgdXMg Y2hlY2sgaWYgcHJldl92ZXJzaW9uCisJCXdvdWxkIHJlcXVpcmUgcmVjIHRvIGJlIGluIGEgZGlm ZmVyZW50IHN0YXRlLiAqLwogCiAJCS8qIFRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIGNsdXN0X3Jl YyBtdXN0IGJlCi0JCWFjY2Vzc2libGUsIGJlY2F1c2UgdGhlIHRyYW5zYWN0aW9uIGlzIHN0aWxs IGFjdGl2ZQotCQlhbmQgY2x1c3RfcmVjIHdhcyBub3QgYSBmcmVzaCBpbnNlcnQuICovCisJCWFj Y2Vzc2libGUsIGJlY2F1c2UgY2x1c3RfcmVjIHdhcyBub3QgYSBmcmVzaCBpbnNlcnQKKwkJYW5k IHdlIGFyZSBob2xkaW5nIHB1cmdlX3N5cy0+bGF0Y2guIFRoZXJlIGlzIG5vCisJCWd1YXJhbnRl ZSB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUuICovCiAKLQkJdXRfYShlcnIg PT0gREJfU1VDQ0VTUyk7CisJCXV0X2FkKGVyciA9PSBEQl9TVUNDRVNTKTsKIAogCQkvKiBXZSBj aGVjayBpZiBlbnRyeSBhbmQgcmVjIGFyZSBpZGVudGlmaWVkIGluIHRoZSBhbHBoYWJldGljYWwK IAkJb3JkZXJpbmcgKi8KIAotCQlpZiAodHJ4X2lzX2FjdGl2ZSh0cnhfaWQpID09IE5VTEwpIHsK LQotCQkJLyogVHJhbnNhY3Rpb24gbm8gbG9uZ2VyIGFjdGl2ZTogbm8gaW1wbGljaXQgeC1sb2Nr ICovCi0KKwkJaWYgKCF0cnhfaXNfYWN0aXZlKHRyeF9pZCwgJmNvcnJ1cHQpKSB7CisJCQkvKiBU cmFuc2FjdGlvbiBubyBsb25nZXIgYWN0aXZlOiBubyBpbXBsaWNpdAorCQkJeC1sb2NrLiBUaGlz IHNpdHVhdGlvbiBzaG91bGQgb25seSBiZSBwb3NzaWJsZQorCQkJYmVjYXVzZSB3ZSBhcmUgbm90 IGhvbGRpbmcgbG9ja19zeXMtPm11dGV4LiAqLworCQkJdXRfYWQoIWxvY2tfbXV0ZXhfb3duKCkp OworCQkJaWYgKGNvcnJ1cHQpIHsKKwkJCQlsb2NrX3JlcG9ydF90cnhfaWRfaW5zYW5pdHkoCisJ CQkJCXRyeF9pZCwKKwkJCQkJcHJldl92ZXJzaW9uLCBjbHVzdF9pbmRleCwKKwkJCQkJY2x1c3Rf b2Zmc2V0cywKKwkJCQkJdHJ4X3N5c19nZXRfbWF4X3RyeF9pZCgpKTsKKwkJCX0KKwkJCXRyeF9p ZCA9IDA7CiAJCQlicmVhazsKLQogCQl9IGVsc2UgaWYgKDAgPT0gY21wX2R0dXBsZV9yZWMoZW50 cnksIHJlYywgb2Zmc2V0cykpIHsKIAkJCS8qIFRoZSBkZWxldGUgbWFya3Mgb2YgcmVjIGFuZCBw cmV2X3ZlcnNpb24gc2hvdWxkIGJlCiAJCQllcXVhbCBmb3IgcmVjIHRvIGJlIGluIHRoZSBzdGF0 ZSByZXF1aXJlZCBieQpAQCAtMjU1LDcgKzIxOSw2IEBAIHJvd192ZXJzX2ltcGxfeF9sb2NrZWQo CiAKIAkJCWlmIChyZWNfZGVsICE9IHZlcnNfZGVsKSB7CiAKLQkJCQlhY3RpdmVfdHJ4X2lkID0g dHJ4X2lkOwogCQkJCWJyZWFrOwogCQkJfQogCkBAIC0yNzYsMjQgKzIzOSw4MCBAQCByb3dfdmVy c19pbXBsX3hfbG9ja2VkKAogCQkJLyogVGhlIGRlbGV0ZSBtYXJrIHNob3VsZCBiZSBzZXQgaW4g cmVjIGZvciBpdCB0byBiZQogCQkJaW4gdGhlIHN0YXRlIHJlcXVpcmVkIGJ5IHByZXZfdmVyc2lv biAqLwogCi0JCQlhY3RpdmVfdHJ4X2lkID0gdHJ4X2lkOwogCQkJYnJlYWs7CiAJCX0KLQkJCisK IAkJaWYgKHRyeF9pZCAhPSBwcmV2X3RyeF9pZCkgewotCQkJLyogVGhlIHZlcnNpb25zIG1vZGlm aWVkIGJ5IHRoZSB0cnhfaWQgdHJhbnNhY3Rpb24gZW5kCi0JCQl0byBwcmV2X3ZlcnNpb246IG5v IGltcGxpY2l0IHgtbG9jayAqLworCQkJLyogcHJldl92ZXJzaW9uIHdhcyB0aGUgZmlyc3QgdmVy c2lvbiBtb2RpZmllZCBieQorCQkJdGhlIHRyeF9pZCB0cmFuc2FjdGlvbjogbm8gaW1wbGljaXQg eC1sb2NrICovCiAKKwkJCXRyeF9pZCA9IDA7CiAJCQlicmVhazsKIAkJfQogCX0KIAotZXhpdF9m dW5jOgorCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJcmV0dXJuKHRyeF9pZCk7Cit9CisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKK0ZpbmRzIG91dCBpZiBhbiBhY3RpdmUgdHJhbnNhY3Rpb24gaGFzIGluc2VydGVk IG9yIG1vZGlmaWVkIGEgc2Vjb25kYXJ5CitpbmRleCByZWNvcmQuCitAcmV0dXJuIDAgaWYgY29t bWl0dGVkLCBlbHNlIHRoZSBhY3RpdmUgdHJhbnNhY3Rpb24gaWQ7CitOT1RFIHRoYXQgdGhpcyBm dW5jdGlvbiBjYW4gcmV0dXJuIGZhbHNlIHBvc2l0aXZlcyBidXQgbmV2ZXIgZmFsc2UKK25lZ2F0 aXZlcy4gVGhlIGNhbGxlciBtdXN0IGNvbmZpcm0gYWxsIHBvc2l0aXZlIHJlc3VsdHMgYnkgY2Fs bGluZwordHJ4X2lzX2FjdGl2ZSgpIHdoaWxlIGhvbGRpbmcgbG9ja19zeXMtPm11dGV4LiAqLwor VU5JVl9JTlRFUk4KK3RyeF9pZF90Cityb3dfdmVyc19pbXBsX3hfbG9ja2VkKAorLyo9PT09PT09 PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJcmVjLAkvKiE8IGluOiByZWNvcmQgaW4gYSBz ZWNvbmRhcnkgaW5kZXggKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiB0aGUgc2Vj b25kYXJ5IGluZGV4ICovCisJY29uc3QgdWxpbnQqCW9mZnNldHMpLyohPCBpbjogcmVjX2dldF9v ZmZzZXRzKHJlYywgaW5kZXgpICovCit7CisJZGljdF9pbmRleF90KgljbHVzdF9pbmRleDsKKwlj b25zdCByZWNfdCoJY2x1c3RfcmVjOworCXRyeF9pZF90CXRyeF9pZDsKKwltdHJfdAkJbXRyOwor CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJdXRfYWQoIXJ3X2xvY2tfb3duKCZwdXJnZV9zeXMt PmxhdGNoLCBSV19MT0NLX1NIQVJFRCkpOworCXV0X2FkKCFyd19sb2NrX293bigmdHJ4X3N5cy0+ bG9jaywgUldfTE9DS19TSEFSRUQpKTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KKwl1 dF9hZCghbG9ja19tdXRleF9vd24oKSk7CisKKwltdHJfc3RhcnQoJm10cik7CisKKwkvKiBTZWFy Y2ggZm9yIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkLiBUaGUgbGF0Y2ggb24gdGhlCisJcGFn ZSBvZiBjbHVzdF9yZWMgbG9ja3MgdGhlIHRvcCBvZiB0aGUgc3RhY2sgb2YgdmVyc2lvbnMuIFRo ZQorCWJvdHRvbSBvZiB0aGUgdmVyc2lvbiBzdGFjayB3aWxsIGJlIGxvY2tlZCBieQorCXB1cmdl X3N5cy0+bGF0Y2guICovCisKKwljbHVzdF9yZWMgPSByb3dfZ2V0X2NsdXN0X3JlYygKKwkJQlRS X1NFQVJDSF9MRUFGLCByZWMsIGluZGV4LCAmY2x1c3RfaW5kZXgsICZtdHIpOworCisJaWYgKFVO SVZfVU5MSUtFTFkoIWNsdXN0X3JlYykpIHsKKwkJLyogSW4gYSByYXJlIGNhc2UgaXQgaXMgcG9z c2libGUgdGhhdCBubyBjbHVzdCByZWMgaXMgZm91bmQKKwkJZm9yIGEgc2Vjb25kYXJ5IGluZGV4 IHJlY29yZDogaWYgaW4gcm93MHVtb2QuYworCQlyb3dfdW5kb19tb2RfcmVtb3ZlX2NsdXN0X2xv dygpIHdlIGhhdmUgYWxyZWFkeSByZW1vdmVkIHRoZQorCQljbHVzdCByZWMsIHdoaWxlIHB1cmdl IGlzIHN0aWxsIGNsZWFuaW5nIGFuZCByZW1vdmluZworCQlzZWNvbmRhcnkgaW5kZXggcmVjb3Jk cyBhc3NvY2lhdGVkIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZgorCQl0aGUgY2x1c3RlcmVkIGlu ZGV4IHJlY29yZC4gSW4gdGhhdCBjYXNlIHRoZXJlIGNhbm5vdCBiZQorCQlhbnkgaW1wbGljaXQg bG9jayBvbiB0aGUgc2Vjb25kYXJ5IGluZGV4IHJlY29yZCwgYmVjYXVzZQorCQlhbiBhY3RpdmUg dHJhbnNhY3Rpb24gd2hpY2ggaGFzIG1vZGlmaWVkIHRoZSBzZWNvbmRhcnkgaW5kZXgKKwkJcmVj b3JkIGhhcyBhbHNvIG1vZGlmaWVkIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkLiBBbmQgaW4K KwkJYSByb2xsYmFjayB3ZSBhbHdheXMgdW5kbyB0aGUgbW9kaWZpY2F0aW9ucyB0byBzZWNvbmRh cnkgaW5kZXgKKwkJcmVjb3JkcyBiZWZvcmUgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQuICov CisKKwkJdHJ4X2lkID0gMDsKKwl9IGVsc2UgeworCQl0cnhfaWQgPSByb3dfdmVyc19pbXBsX3hf bG9ja2VkX2xvdygKKwkJCWNsdXN0X3JlYywgY2x1c3RfaW5kZXgsIHJlYywgaW5kZXgsIG9mZnNl dHMsICZtdHIpOworCX0KIAogCW10cl9jb21taXQoJm10cik7Ci0JbWVtX2hlYXBfZnJlZShoZWFw KTsKIAotCXJldHVybihhY3RpdmVfdHJ4X2lkKTsKKwlyZXR1cm4odHJ4X2lkKTsKIH0KIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgoK --__12958575566138469abhmt003 MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset=us-ascii; name="marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="marko.makela@stripped" # 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: 12a79f8beef4cc58375e868ae9de198207f29703 # timestamp: 2011-01-24 10:25:47 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: vasil.dimov@stripped\ # qt318pe7c3iltp3p # # Begin bundle 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 --__12958575566138469abhmt003--