From: marko.makela Date: June 29 2011 7:35am Subject: bzr push into mysql-5.1 branch (marko.makela:3658 to 3659) Bug#12612184 List-Archive: http://lists.mysql.com/commits/139989 X-Bug: 12612184 Message-Id: <201106290735.p5T7ZmUs006847@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM2NTkgTWFya28gTcOka2Vsw6QJMjAxMS0wNi0yOQogICAgICBCdWcgIzEyNjEyMTg0IEJMT0Ig ZGVidWcgY29kZSBjbGVhbnVwOgogICAgICBSZWZhY3RvciB0aGUgIXJlY19vZmZzX2FueV9leHRl cm4gcmVsYXhhdGlvbiBpbiByb3dfYnVpbGQoKS4KICAgICAgCiAgICAgIHRyeF9hc3NlcnRfYWN0 aXZlKHRyeF9pZCk6IEFzc2VydCB0aGF0IHRoZSBnaXZlbiB0cmFuc2FjdGlvbiBpcyBhY3RpdmUu CiAgICAgIChJbiB0aGUgNS4xIGJ1aWx0LWluIElubm9EQiwgdGhlcmUgaXMgbm8gdHJ4LT5pc19y ZWNvdmVyZWQgZmllbGQuKQogICAgICAKICAgICAgdHJ4X2Fzc2VydF9yZWNvdmVyZWQodHJ4X2lk KTogQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHRyYW5zYWN0aW9uIGlzCiAgICAgIGFjdGl2ZSBhbmQg aGFzIGJlZW4gcmVjb3ZlcmVkIGFmdGVyIGEgY3Jhc2guCiAgICAgIAogICAgICByb3dfYnVpbGQo KTogUmVwbGFjZSBhIGJ1bmNoIG9mIGNvZGUgd2l0aCBhbiBhc3NlcnRpb24gdGhhdCBpbnZva2Vz CiAgICAgIHRyeF9hc3NlcnRfYWN0aXZlKCkgb3IgdHJ4X2Fzc2VydF9yZWNvdmVyZWQoKSBhbmQg cm93X2dldF9yZWNfdHJ4X2lkKCkuCiAgICAgIAogICAgICByb3dfZ2V0X3RyeF9pZF9vZmZzZXQo KTogTWFrZSB0aGUgZnVuY3Rpb24gaW5saW5lZC4gUmVtb3ZlIHRoZSB1bnVzZWQKICAgICAgcGFy YW1ldGVyIHJlYywgYW5kIG1ha2UgYWxsIHBhcmFtZXRlcnMgY29uc3QuCiAgICAgIAogICAgICBy b3dfZ2V0X3JlY190cnhfaWQoKSwgcm93X2dldF9yZWNfcm9sbF9wdHIoKTogTWFrZSBhbGwgcGFy YW1ldGVycyBjb25zdC4KICAgICAgCiAgICAgIHJiOjY5MSBhcHByb3ZlZCBieSBKaW1teSBZYW5n CgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwc3lzLmgK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDBzeXMuaWMKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHJvdy5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRl L3JvdzByb3cuaAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwcm93Lmlj CiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzB1cGQuaWMKICAgICAgc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdHJ4MHN5cy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9pbmNsdWRlL3RyeDBzeXMuaWMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jv dy9yb3cwcm93LmMKIDM2NTggTWFya28gTcOka2Vsw6QJMjAxMS0wNi0yOAogICAgICBCdWcjMTI1 OTUwODcgLSA2MTE5MTogUXVlc3Rpb24gYWJvdXQgcGFnZV96aXBfYXZhaWxhYmxlIChjbGVhbiB1 cCBwYWdlMHppcC5jKQogICAgICAKICAgICAgcGFnZV96aXBfZGlyX2VsZW1zKCk6IE5ldyBmdW5j dGlvbiwgcmVmYWN0b3JlZCBmcm9tIHBhZ2VfemlwX2Rpcl9zaXplKCkuCiAgICAgIAogICAgICBw YWdlX3ppcF9kaXJfc2l6ZSgpOiBVc2UgcGFnZV96aXBfZGlyX2VsZW1zKCkKICAgICAgCiAgICAg IHBhZ2VfemlwX2Rpcl9zdGFydF9vZmZzKCk6IE5ldyBmdW5jdGlvbjogR2V0cyBhbiBvZmZzZXQg dG8gdGhlCiAgICAgIGNvbXByZXNzZWQgcGFnZSB0cmFpbGVyICh0aGUgZGVuc2UgcGFnZSBkaXJl Y3RvcnkpLCBpbmNsdWRpbmcgZGVsZXRlZAogICAgICByZWNvcmRzICh0aGUgZnJlZSBsaXN0KQog ICAgICAKICAgICAgcGFnZV96aXBfZGlyX3N0YXJ0X2xvdyhwYWdlX3ppcCwgbl9kZW5zZSk6IENv bnN0bmVzcy1wcmVzZXJ2aW5nCiAgICAgIHdyYXBwZXIgbWFjcm8gZm9yIHBhZ2VfemlwX2Rpcl9z dGFydF9vZmZzKCkuCiAgICAgIAogICAgICBwYWdlX3ppcF9kaXJfc3RhcnQocGFnZV96aXApOiBD b25zdG5lc3MtcHJlc2VydmluZwogICAgICB3cmFwcGVyIG1hY3JvIGZvciBwYWdlX3ppcF9kaXJf c3RhcnRfb2ZmcygpLgogICAgICAKICAgICAgcGFnZV96aXBfZGVjb21wcmVzc19ub2RlX3B0cnMo KSwgcGFnZV96aXBfZGVjb21wcmVzc19jbHVzdCgpOiBSZXBsYWNlCiAgICAgIGEgZm9ybXVsYSB3 aXRoIGEgZnVsbHkgZXF1aXZhbGVudCBwYWdlX3ppcF9kaXJfc3RhcnRfbG93KCkgY2FsbC4KICAg ICAgCiAgICAgIHBhZ2VfemlwX3dyaXRlX3JlYygpLCBwYWdlX3ppcF9wYXJzZV93cml0ZV9ub2Rl X3B0cigpLAogICAgICBwYWdlX3ppcF93cml0ZV9ub2RlX3B0cigpLCBwYWdlX3ppcF93cml0ZV90 cnhfaWRfYW5kX3JvbGxfcHRyKCksCiAgICAgIHBhZ2VfemlwX2NsZWFyX3JlYygpOiBSZXBsYWNl IGEgZm9ybXVsYSB3aXRoIGFuIGFsbW9zdCBlcXVpdmFsZW50CiAgICAgIHBhZ2VfemlwX2Rpcl9z dGFydCgpIGNhbGwuCiAgICAgIEl0IGlzIE9LIHRvIHJlcGxhY2UgcGFnZV9kaXJfZ2V0X25faGVh cChwYWdlKSB3aXRoCiAgICAgIHBhZ2VfZGlyX2dldF9uX2hlYXAocGFnZV96aXAtPmRhdGEpLCBi ZWNhdXNlCiAgICAgIHV0X2FkKHBhZ2VfemlwX2hlYWRlcl9jbXAocGFnZV96aXAsIHBhZ2UpKSBv cgogICAgICBwYWdlX3ppcF92YWxpZGF0ZShwYWdlX3ppcCwgcGFnZSkgYXNzZXJ0cyB0aGF0IHRo ZQogICAgICBwYWdlIGhlYWRlcnMgYXJlIGlkZW50aWNhbC4KICAgICAgCiAgICAgIHJiOjY4NyBh cHByb3ZlZCBieSBKaW1teSBZYW5nCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9wYWdlL3BhZ2UwemlwLmMKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS90cngwc3lzLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngw c3lzLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MjgwODU3MDkta2NrYnZp aDFtdmlibnRhcQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHN5cy5oCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjI5MDY1NzE1LWI0ZDJmZW94dTdqODhpZDIK QEAgLTI1Niw2ICsyNTYsMTYgQEAgdHJ4X2luX3RyeF9saXN0KAogLyo9PT09PT09PT09PT0qLwog CQkJLyogb3V0OiBUUlVFIGlmIGlzIGluICovCiAJdHJ4X3QqCWluX3RyeCk7LyogaW46IHRyeCAq LworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJV RworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCitBc3NlcnQgdGhhdCBhIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZS4gKi8KK1VOSVZfSU5MSU5F CitpYm9vbAordHJ4X2Fzc2VydF9hY3RpdmUoCisvKj09PT09PT09PT09PT09Ki8KKwkJCQkvKiBv dXQ6IFRSVUUgKi8KKwlkdWxpbnQJdHJ4X2lkKTsJLyogaW46IHRyYW5zYWN0aW9uIGlkZW50aWZp ZXIgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogVXBkYXRlcyB0aGUgb2Zmc2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBl bmQgb2YgdGhlIE15U1FMIGJpbmxvZyBlbnRyeQogd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIHRy YW5zYWN0aW9uIGp1c3QgYmVpbmcgY29tbWl0dGVkLiBJbiBhIE15U1FMCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDBzeXMuaWMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS90cngwc3lzLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwNjI4MDg1NzA5LWtja2J2aWgxbXZpYm50YXEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3RyeDBzeXMuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2Mjkw NjU3MTUtYjRkMmZlb3h1N2o4OGlkMgpAQCAtMjU3LDYgKzI1NywyNyBAQCB0cnhfZ2V0X29uX2lk KAogCXJldHVybihOVUxMKTsKIH0KIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVk IFVOSVZfQkxPQl9MSUdIVF9ERUJVRworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCitBc3NlcnQgdGhhdCBhIHRyYW5zYWN0aW9uIGlzIGFj dGl2ZS4gKi8KK1VOSVZfSU5MSU5FCitpYm9vbAordHJ4X2Fzc2VydF9hY3RpdmUoCisvKj09PT09 PT09PT09PT09Ki8KKwkJCQkvKiBvdXQ6IFRSVUUgKi8KKwlkdWxpbnQJdHJ4X2lkKQkJLyogaW46 IHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgKi8KK3sKKwl0cnhfdCoJdHJ4OworCisJbXV0ZXhfZW50 ZXIoJmtlcm5lbF9tdXRleCk7CisJdHJ4ID0gdHJ4X2dldF9vbl9pZCh0cnhfaWQpOworCXV0X2Eo dHJ4KTsKKwltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOworCisJcmV0dXJuKFRSVUUpOworfQor I2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCisKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgogUmV0dXJucyB0aGUgbWludW11bSB0cnggaWQgaW4gdHJ4IGxpc3QuIFRoaXMgaXMg dGhlIHNtYWxsZXN0IGlkIGZvciB3aGljaAogdGhlIHRyeCBjYW4gcG9zc2libHkgYmUgYWN0aXZl LiAoQnV0LCB5b3UgbXVzdCBsb29rIGF0IHRoZSB0cngtPmNvbmNfc3RhdGUgdG8KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93LmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2Uvcm93L3JvdzByb3cuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDYyODA4NTcwOS1rY2tidmloMW12aWJudGFxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzByb3cuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYyOTA2NTcxNS1iNGQy ZmVveHU3ajg4aWQyCkBAIC0yMTIsMzUgKzIxMiwyMyBAQCByb3dfYnVpbGQoCiAJfQogCiAjaWYg ZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCi0JaWYg KFVOSVZfTElLRUxZX05VTEwocmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywgb2Zmc2V0cykp KSB7Ci0JCS8qIFRoaXMgY29uZGl0aW9uIGNhbiBvY2N1ciBkdXJpbmcgY3Jhc2ggcmVjb3Zlcnkg YmVmb3JlCi0JCXRyeF9yb2xsYmFja19vcl9jbGVhbl9hbGxfd2l0aG91dF9zZXNzKCkgaGFzIGNv bXBsZXRlZAotCQlleGVjdXRpb24uCisJLyogVGhpcyBjb25kaXRpb24gY2FuIG9jY3VyIGR1cmlu ZyBjcmFzaCByZWNvdmVyeSBiZWZvcmUKKwl0cnhfcm9sbGJhY2tfb3JfY2xlYW5fYWxsX3dpdGhv dXRfc2VzcygpIGhhcyBjb21wbGV0ZWQKKwlleGVjdXRpb24uCisKKwlUaGlzIGNvbmRpdGlvbiBp cyBwb3NzaWJsZSBpZiB0aGUgc2VydmVyIGNyYXNoZWQKKwlkdXJpbmcgYW4gaW5zZXJ0IG9yIHVw ZGF0ZSBiZWZvcmUKKwlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKCkgZGlkIG10cl9j b21taXQoKSBhbGwKKwlCTE9CIHBvaW50ZXJzIHRvIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3Jk LgorCisJSWYgdGhlIHJlY29yZCBjb250YWlucyBhIG51bGwgQkxPQiBwb2ludGVyLCBsb29rIHVw IHRoZQorCXRyYW5zYWN0aW9uIHRoYXQgaG9sZHMgdGhlIGltcGxpY2l0IGxvY2sgb24gdGhpcyBy ZWNvcmQsIGFuZAorCWFzc2VydCB0aGF0IGl0IGlzIGFjdGl2ZS4gKEluIHRoaXMgdmVyc2lvbiBv ZiBJbm5vREIsIHdlCisJY2Fubm90IGFzc2VydCB0aGF0IGl0IHdhcyByZWNvdmVyZWQsIGJlY2F1 c2UgdGhlcmUgaXMgbm8KKwl0cngtPmlzX3JlY292ZXJlZCBmaWVsZC4pICovCiAKLQkJVGhpcyBj b25kaXRpb24gaXMgcG9zc2libGUgaWYgdGhlIHNlcnZlciBjcmFzaGVkCi0JCWR1cmluZyBhbiBp bnNlcnQgb3IgdXBkYXRlIGJlZm9yZQotCQlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRz KCkgZGlkIG10cl9jb21taXQoKSBhbGwKLQkJQkxPQiBwb2ludGVycyB0byB0aGUgY2x1c3RlcmVk IGluZGV4IHJlY29yZC4KLQotCQlMb29rIHVwIHRoZSB0cmFuc2FjdGlvbiB0aGF0IGhvbGRzIHRo ZSBpbXBsaWNpdCBsb2NrCi0JCW9uIHRoaXMgcmVjb3JkLCBhbmQgYXNzZXJ0IHRoYXQgaXQgd2Fz IHJlY292ZXJlZCAoYW5kCi0JCXdpbGwgc29vbiBiZSByb2xsZWQgYmFjaykuICovCi0KLQkJdWxp bnQJdHJ4X2lkX3Bvcwk9IGRpY3RfaW5kZXhfZ2V0X3N5c19jb2xfcG9zKAotCQkJaW5kZXgsIERB VEFfVFJYX0lEKTsKLQkJdWxpbnQJbGVuOwotCQlkdWxpbnQJdHJ4X2lkCQk9IHRyeF9yZWFkX3Ry eF9pZCgKLQkJCXJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgdHJ4X2lkX3BvcywgJmxl bikpOwotCQl0cnhfdCoJdHJ4OwotCQl1dF9hKGxlbiA9PSA2KTsKLQotCQltdXRleF9lbnRlcigm a2VybmVsX211dGV4KTsKLQkJdHJ4ID0gdHJ4X2dldF9vbl9pZCh0cnhfaWQpOwotCQl1dF9hKHRy eCk7Ci0JCS8qIFRoaXMgZmllbGQgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB2ZXJzaW9uIG9mIElu bm9EQi4gKi8KLQkJLyogdXRfYSh0cngtPmlzX3JlY292ZXJlZCk7ICovCi0JCW11dGV4X2V4aXQo Jmtlcm5lbF9tdXRleCk7Ci0JfQorCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybihyZWMs IG9mZnNldHMpCisJICAgICB8fCB0cnhfYXNzZXJ0X2FjdGl2ZShyb3dfZ2V0X3JlY190cnhfaWQo cmVjLCBpbmRleCwgb2Zmc2V0cykpKTsKICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxP Ql9MSUdIVF9ERUJVRyAqLwogCiAJaWYgKHR5cGUgIT0gUk9XX0NPUFlfUE9JTlRFUlMpIHsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwcm93Lmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzByb3cuaAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYyODA4NTcwOS1rY2tidmloMW12aWJudGFxCisrKyBi L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzByb3cuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDYyOTA2NTcxNS1iNGQyZmVveHU3ajg4aWQyCkBAIC0xLDYgKzEs NiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAwOSwg SW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTYsIDIw MTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAK IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMzgsMTYgKzM4 LDE2IEBAIENyZWF0ZWQgNC8yMC8xOTk2IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgImJ0cjB0eXBl cy5oIgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgotR2V0cyB0aGUgb2Zmc2V0IG9mIHRoZSB0cnggaWQg ZmllbGQsIGluIGJ5dGVzIHJlbGF0aXZlIHRvIHRoZSBvcmlnaW4gb2YKK0dldHMgdGhlIG9mZnNl dCBvZiB0aGUgREJfVFJYX0lEIGZpZWxkLCBpbiBieXRlcyByZWxhdGl2ZSB0byB0aGUgb3JpZ2lu IG9mCiBhIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQuCiBAcmV0dXJuCW9mZnNldCBvZiBEQVRBX1RS WF9JRCAqLwotVU5JVl9JTlRFUk4KK1VOSVZfSU5MSU5FCiB1bGludAogcm93X2dldF90cnhfaWRf b2Zmc2V0KAogLyo9PT09PT09PT09PT09PT09PT0qLwotCWNvbnN0IHJlY190KglyZWMsCS8qITwg aW46IHJlY29yZCAqLwotCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBp bmRleCAqLwotCWNvbnN0IHVsaW50KglvZmZzZXRzKTsvKiE8IGluOiByZWNfZ2V0X29mZnNldHMo cmVjLCBpbmRleCkgKi8KKwljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVz dGVyZWQgaW5kZXggKi8KKwljb25zdCB1bGludCoJCW9mZnNldHMpLyohPCBpbjogcmVjb3JkIG9m ZnNldHMgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBSZWFkcyB0aGUgdHJ4IGlkIGZpZWxkIGZyb20gYSBjbHVzdGVy ZWQgaW5kZXggcmVjb3JkLgogQHJldHVybgl2YWx1ZSBvZiB0aGUgZmllbGQgKi8KQEAgLTU1LDkg KzU1LDEwIEBAIFVOSVZfSU5MSU5FCiB0cnhfaWRfdAogcm93X2dldF9yZWNfdHJ4X2lkKAogLyo9 PT09PT09PT09PT09PT0qLwotCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLwot CWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBpbmRleCAqLwotCWNvbnN0 IHVsaW50KglvZmZzZXRzKTsvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCkgKi8K Kwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJY29uc3QgZGljdF9pbmRl eF90KglpbmRleCwJLyohPCBpbjogY2x1c3RlcmVkIGluZGV4ICovCisJY29uc3QgdWxpbnQqCQlv ZmZzZXRzKS8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KSAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IFJlYWRzIHRoZSByb2xsIHBvaW50ZXIgZmllbGQgZnJvbSBhIGNsdXN0ZXJlZCBpbmRleCByZWNv cmQuCiBAcmV0dXJuCXZhbHVlIG9mIHRoZSBmaWVsZCAqLwpAQCAtNjUsOSArNjYsMTAgQEAgVU5J Vl9JTkxJTkUKIHJvbGxfcHRyX3QKIHJvd19nZXRfcmVjX3JvbGxfcHRyKAogLyo9PT09PT09PT09 PT09PT09PSovCi0JY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkICovCi0JZGljdF9p bmRleF90KglpbmRleCwJLyohPCBpbjogY2x1c3RlcmVkIGluZGV4ICovCi0JY29uc3QgdWxpbnQq CW9mZnNldHMpOy8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KSAqLworCWNvbnN0 IHJlY190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwljb25zdCBkaWN0X2luZGV4X3QqCWlu ZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggKi8KKwljb25zdCB1bGludCoJCW9mZnNldHMp LyohPCBpbjogcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgpICovCisJX19hdHRyaWJ1dGVfXygo bm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBXaGVuIGFuIGlu c2VydCBvciBwdXJnZSB0byBhIHRhYmxlIGlzIHBlcmZvcm1lZCwgdGhpcyBmdW5jdGlvbiBidWls ZHMKIHRoZSBlbnRyeSB0byBiZSBpbnNlcnRlZCBpbnRvIG9yIHB1cmdlZCBmcm9tIGFuIGluZGV4 IG9uIHRoZSB0YWJsZS4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4v aW5jbHVkZS9yb3cwcm93LmljJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9y b3cwcm93LmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjI4MDg1NzA5LWtj a2J2aWgxbXZpYm50YXEKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MHJv dy5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYyOTA2NTcxNS1iNGQyZmVv eHU3ajg4aWQyCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHly aWdodCAoYykgMTk5NiwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitD b3B5cmlnaHQgKGMpIDE5OTYsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFs bCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZQpAQCAtMjgsMTUgKzI4LDQyIEBAIENyZWF0ZWQgNC8yMC8xOTk2IEhlaWtraSBUdXVy aQogI2luY2x1ZGUgInRyeDB1bmRvLmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitHZXRzIHRoZSBv ZmZzZXQgb2YgdGhlIERCX1RSWF9JRCBmaWVsZCwgaW4gYnl0ZXMgcmVsYXRpdmUgdG8gdGhlIG9y aWdpbiBvZgorYSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkLgorQHJldHVybglvZmZzZXQgb2YgREFU QV9UUlhfSUQgKi8KK1VOSVZfSU5MSU5FCit1bGludAorcm93X2dldF90cnhfaWRfb2Zmc2V0KAor Lyo9PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwg aW46IGNsdXN0ZXJlZCBpbmRleCAqLworCWNvbnN0IHVsaW50KgkJb2Zmc2V0cykvKiE8IGluOiBy ZWNvcmQgb2Zmc2V0cyAqLworeworCXVsaW50CXBvczsKKwl1bGludAlvZmZzZXQ7CisJdWxpbnQJ bGVuOworCisJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOworCXV0X2FkKHJlY19v ZmZzX3ZhbGlkYXRlKE5VTEwsIGluZGV4LCBvZmZzZXRzKSk7CisKKwlwb3MgPSBkaWN0X2luZGV4 X2dldF9zeXNfY29sX3BvcyhpbmRleCwgREFUQV9UUlhfSUQpOworCisJb2Zmc2V0ID0gcmVjX2dl dF9udGhfZmllbGRfb2ZmcyhvZmZzZXRzLCBwb3MsICZsZW4pOworCisJdXRfYWQobGVuID09IERB VEFfVFJYX0lEX0xFTik7CisKKwlyZXR1cm4ob2Zmc2V0KTsKK30KKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIFJlYWRzIHRoZSB0cnggaWQgZmllbGQgZnJvbSBhIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQu CiBAcmV0dXJuCXZhbHVlIG9mIHRoZSBmaWVsZCAqLwogVU5JVl9JTkxJTkUKIHRyeF9pZF90CiBy b3dfZ2V0X3JlY190cnhfaWQoCiAvKj09PT09PT09PT09PT09PSovCi0JY29uc3QgcmVjX3QqCXJl YywJLyohPCBpbjogcmVjb3JkICovCi0JZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogY2x1 c3RlcmVkIGluZGV4ICovCi0JY29uc3QgdWxpbnQqCW9mZnNldHMpLyohPCBpbjogcmVjX2dldF9v ZmZzZXRzKHJlYywgaW5kZXgpICovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29y ZCAqLworCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBpbmRl eCAqLworCWNvbnN0IHVsaW50KgkJb2Zmc2V0cykvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVj LCBpbmRleCkgKi8KIHsKIAl1bGludAlvZmZzZXQ7CiAKQEAgLTQ2LDcgKzczLDcgQEAgcm93X2dl dF9yZWNfdHJ4X2lkKAogCW9mZnNldCA9IGluZGV4LT50cnhfaWRfb2Zmc2V0OwogCiAJaWYgKCFv ZmZzZXQpIHsKLQkJb2Zmc2V0ID0gcm93X2dldF90cnhfaWRfb2Zmc2V0KHJlYywgaW5kZXgsIG9m ZnNldHMpOworCQlvZmZzZXQgPSByb3dfZ2V0X3RyeF9pZF9vZmZzZXQoaW5kZXgsIG9mZnNldHMp OwogCX0KIAogCXJldHVybih0cnhfcmVhZF90cnhfaWQocmVjICsgb2Zmc2V0KSk7CkBAIC01OSw5 ICs4Niw5IEBAIFVOSVZfSU5MSU5FCiByb2xsX3B0cl90CiByb3dfZ2V0X3JlY19yb2xsX3B0cigK IC8qPT09PT09PT09PT09PT09PT0qLwotCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29y ZCAqLwotCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBpbmRleCAqLwot CWNvbnN0IHVsaW50KglvZmZzZXRzKS8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4 KSAqLworCWNvbnN0IHJlY190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwljb25zdCBkaWN0 X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggKi8KKwljb25zdCB1bGlu dCoJCW9mZnNldHMpLyohPCBpbjogcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgpICovCiB7CiAJ dWxpbnQJb2Zmc2V0OwogCkBAIC03MSw3ICs5OCw3IEBAIHJvd19nZXRfcmVjX3JvbGxfcHRyKAog CW9mZnNldCA9IGluZGV4LT50cnhfaWRfb2Zmc2V0OwogCiAJaWYgKCFvZmZzZXQpIHsKLQkJb2Zm c2V0ID0gcm93X2dldF90cnhfaWRfb2Zmc2V0KHJlYywgaW5kZXgsIG9mZnNldHMpOworCQlvZmZz ZXQgPSByb3dfZ2V0X3RyeF9pZF9vZmZzZXQoaW5kZXgsIG9mZnNldHMpOwogCX0KIAogCXJldHVy bih0cnhfcmVhZF9yb2xsX3B0cihyZWMgKyBvZmZzZXQgKyBEQVRBX1RSWF9JRF9MRU4pKTsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmlj JwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmljCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjI4MDg1NzA5LWtja2J2aWgxbXZpYm50YXEKKysr IGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MHVwZC5pYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMDYyOTA2NTcxNS1iNGQyZmVveHU3ajg4aWQyCkBAIC0xLDYg KzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAw OSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTYs IDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu CiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTcxLDcg KzE3MSw3IEBAIHJvd191cGRfcmVjX3N5c19maWVsZHMoCiAJCXVsaW50CW9mZnNldCA9IGluZGV4 LT50cnhfaWRfb2Zmc2V0OwogCiAJCWlmICghb2Zmc2V0KSB7Ci0JCQlvZmZzZXQgPSByb3dfZ2V0 X3RyeF9pZF9vZmZzZXQocmVjLCBpbmRleCwgb2Zmc2V0cyk7CisJCQlvZmZzZXQgPSByb3dfZ2V0 X3RyeF9pZF9vZmZzZXQoaW5kZXgsIG9mZnNldHMpOwogCQl9CiAKICNpZiBEQVRBX1RSWF9JRCAr IDEgIT0gREFUQV9ST0xMX1BUUgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9pbmNsdWRlL3RyeDBzeXMuaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1 ZGUvdHJ4MHN5cy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjI4MDg1NzA5 LWtja2J2aWgxbXZpYm50YXEKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdHJ4 MHN5cy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjI5MDY1NzE1LWI0ZDJm ZW94dTdqODhpZDIKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29w eXJpZ2h0IChjKSAxOTk2LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K K0NvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCkBAIC0yODQsNiArMjg0LDE1IEBAIGlib29sCiB0cnhfaW5fdHJ4X2xpc3QoCiAv Kj09PT09PT09PT09PSovCiAJdHJ4X3QqCWluX3RyeCk7LyohPCBpbjogdHJ4ICovCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CitBc3NlcnQgdGhhdCBhIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHJlY292ZXJlZC4KK0ByZXR1cm4g VFJVRSAqLworVU5JVl9JTkxJTkUKK2lib29sCit0cnhfYXNzZXJ0X3JlY292ZXJlZCgKKy8qPT09 PT09PT09PT09PT09PT0qLworCXRyeF9pZF90CXRyeF9pZCkJCS8qITwgaW46IHRyYW5zYWN0aW9u IGlkZW50aWZpZXIgKi8KKwlfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFVwZGF0ZXMgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZW5k IG9mIHRoZSBNeVNRTCBiaW5sb2cgZW50cnkKIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFu c2FjdGlvbiBqdXN0IGJlaW5nIGNvbW1pdHRlZC4gSW4gYSBNeVNRTAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3RyeDBzeXMuaWMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3RyeDBzeXMuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA2MjgwODU3MDkta2NrYnZpaDFtdmlibnRhcQorKysgYi9zdG9yYWdlL2lu bm9kYl9wbHVnaW4vaW5jbHVkZS90cngwc3lzLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwNjI5MDY1NzE1LWI0ZDJmZW94dTdqODhpZDIKQEAgLTEsNiArMSw2IEBACiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk2LCAyMDA5LCBJbm5vYmFzZSBP eS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xl IGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0yNzcsNiArMjc3LDI4IEBAIHRy eF9nZXRfb25faWQoCiAJcmV0dXJuKE5VTEwpOwogfQogCisjaWYgZGVmaW5lZCBVTklWX0RFQlVH IHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitBc3NlcnQgdGhhdCBh IHRyYW5zYWN0aW9uIGhhcyBiZWVuIHJlY292ZXJlZC4KK0ByZXR1cm4gVFJVRSAqLworVU5JVl9J TkxJTkUKK2lib29sCit0cnhfYXNzZXJ0X3JlY292ZXJlZCgKKy8qPT09PT09PT09PT09PT09PT0q LworCXRyeF9pZF90CXRyeF9pZCkJCS8qITwgaW46IHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgKi8K K3sKKwl0cnhfdCoJCXRyeDsKKworCW11dGV4X2VudGVyKCZrZXJuZWxfbXV0ZXgpOworCXRyeCA9 IHRyeF9nZXRfb25faWQodHJ4X2lkKTsKKwl1dF9hKHRyeCk7CisJdXRfYSh0cngtPmlzX3JlY292 ZXJlZCk7CisJbXV0ZXhfZXhpdCgma2VybmVsX211dGV4KTsKKworCXJldHVybihUUlVFKTsKK30K KyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLworCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIFJldHVybnMgdGhlIG1pbnVtdW0gdHJ4IGlkIGluIHRyeCBsaXN0LiBUaGlzIGlz IHRoZSBzbWFsbGVzdCBpZCBmb3Igd2hpY2gKIHRoZSB0cnggY2FuIHBvc3NpYmx5IGJlIGFjdGl2 ZS4gKEJ1dCwgeW91IG11c3QgbG9vayBhdCB0aGUgdHJ4LT5jb25jX3N0YXRlIHRvCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwcm93LmMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHJvdy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTEwNjI4MDg1NzA5LWtja2J2aWgxbXZpYm50YXEKKysrIGIvc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL3Jvdy9yb3cwcm93LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTA2MjkwNjU3MTUtYjRkMmZlb3h1N2o4OGlkMgpAQCAtNDcsMzUgKzQ3LDYgQEAgQ3JlYXRlZCA0 LzIwLzE5OTYgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAicmVhZDByZWFkLmgiCiAjaW5jbHVkZSAi dXQwbWVtLmgiCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1HZXRzIHRoZSBvZmZzZXQgb2YgdHJ4IGlk IGZpZWxkLCBpbiBieXRlcyByZWxhdGl2ZSB0byB0aGUgb3JpZ2luIG9mCi1hIGNsdXN0ZXJlZCBp bmRleCByZWNvcmQuCi1AcmV0dXJuCW9mZnNldCBvZiBEQVRBX1RSWF9JRCAqLwotVU5JVl9JTlRF Uk4KLXVsaW50Ci1yb3dfZ2V0X3RyeF9pZF9vZmZzZXQoCi0vKj09PT09PT09PT09PT09PT09PSov Ci0JY29uc3QgcmVjX3QqCXJlYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKLQkJCQkvKiE8IGlu OiByZWNvcmQgKi8KLQlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5k ZXggKi8KLQljb25zdCB1bGludCoJb2Zmc2V0cykvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVj LCBpbmRleCkgKi8KLXsKLQl1bGludAlwb3M7Ci0JdWxpbnQJb2Zmc2V0OwotCXVsaW50CWxlbjsK LQotCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKLQl1dF9hZChyZWNfb2Zmc192 YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7Ci0KLQlwb3MgPSBkaWN0X2luZGV4X2dldF9z eXNfY29sX3BvcyhpbmRleCwgREFUQV9UUlhfSUQpOwotCi0Jb2Zmc2V0ID0gcmVjX2dldF9udGhf ZmllbGRfb2ZmcyhvZmZzZXRzLCBwb3MsICZsZW4pOwotCi0JdXRfYWQobGVuID09IERBVEFfVFJY X0lEX0xFTik7Ci0KLQlyZXR1cm4ob2Zmc2V0KTsKLX0KLQogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogV2hlbiBh biBpbnNlcnQgb3IgcHVyZ2UgdG8gYSB0YWJsZSBpcyBwZXJmb3JtZWQsIHRoaXMgZnVuY3Rpb24g YnVpbGRzCiB0aGUgZW50cnkgdG8gYmUgaW5zZXJ0ZWQgaW50byBvciBwdXJnZWQgZnJvbSBhbiBp bmRleCBvbiB0aGUgdGFibGUuCkBAIC0yMzMsMzMgKzIwNCwxOSBAQCByb3dfYnVpbGQoCiAJfQog CiAjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVH Ci0JaWYgKFVOSVZfTElLRUxZX05VTEwocmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywgb2Zm c2V0cykpKSB7Ci0JCS8qIFRoaXMgY29uZGl0aW9uIGNhbiBvY2N1ciBkdXJpbmcgY3Jhc2ggcmVj b3ZlcnkgYmVmb3JlCi0JCXRyeF9yb2xsYmFja19hY3RpdmUoKSBoYXMgY29tcGxldGVkIGV4ZWN1 dGlvbi4KLQotCQlUaGlzIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpZiB0aGUgc2VydmVyIGNyYXNo ZWQKLQkJZHVyaW5nIGFuIGluc2VydCBvciB1cGRhdGUgYmVmb3JlCi0JCWJ0cl9zdG9yZV9iaWdf cmVjX2V4dGVybl9maWVsZHMoKSBkaWQgbXRyX2NvbW1pdCgpIGFsbAotCQlCTE9CIHBvaW50ZXJz IHRvIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkLgotCi0JCUxvb2sgdXAgdGhlIHRyYW5zYWN0 aW9uIHRoYXQgaG9sZHMgdGhlIGltcGxpY2l0IGxvY2sKLQkJb24gdGhpcyByZWNvcmQsIGFuZCBh c3NlcnQgdGhhdCBpdCB3YXMgcmVjb3ZlcmVkIChhbmQKLQkJd2lsbCBzb29uIGJlIHJvbGxlZCBi YWNrKS4gKi8KLQotCQl1bGludAkJdHJ4X2lkX3Bvcwk9IGRpY3RfaW5kZXhfZ2V0X3N5c19jb2xf cG9zKAotCQkJCWluZGV4LCBEQVRBX1RSWF9JRCk7Ci0JCXVsaW50CQlsZW47Ci0JCXRyeF9pZF90 CXRyeF9pZAkJPSB0cnhfcmVhZF90cnhfaWQoCi0JCQlyZWNfZ2V0X250aF9maWVsZChyZWMsIG9m ZnNldHMsIHRyeF9pZF9wb3MsICZsZW4pKTsKLQkJdHJ4X3QqCQl0cng7Ci0JCXV0X2EobGVuID09 IDYpOwotCi0JCW11dGV4X2VudGVyKCZrZXJuZWxfbXV0ZXgpOwotCQl0cnggPSB0cnhfZ2V0X29u X2lkKHRyeF9pZCk7Ci0JCXV0X2EodHJ4KTsKLQkJdXRfYSh0cngtPmlzX3JlY292ZXJlZCk7Ci0J CW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7Ci0JfQorCS8qIFRoaXMgY29uZGl0aW9uIGNhbiBv Y2N1ciBkdXJpbmcgY3Jhc2ggcmVjb3ZlcnkgYmVmb3JlCisJdHJ4X3JvbGxiYWNrX2FjdGl2ZSgp IGhhcyBjb21wbGV0ZWQgZXhlY3V0aW9uLgorCisJVGhpcyBjb25kaXRpb24gaXMgcG9zc2libGUg aWYgdGhlIHNlcnZlciBjcmFzaGVkCisJZHVyaW5nIGFuIGluc2VydCBvciB1cGRhdGUgYmVmb3Jl CisJYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygpIGRpZCBtdHJfY29tbWl0KCkgYWxs CisJQkxPQiBwb2ludGVycyB0byB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZC4KKworCUlmIHRo ZSByZWNvcmQgY29udGFpbnMgYSBudWxsIEJMT0IgcG9pbnRlciwgbG9vayB1cCB0aGUKKwl0cmFu c2FjdGlvbiB0aGF0IGhvbGRzIHRoZSBpbXBsaWNpdCBsb2NrIG9uIHRoaXMgcmVjb3JkLCBhbmQK Kwlhc3NlcnQgdGhhdCBpdCB3YXMgcmVjb3ZlcmVkIChhbmQgd2lsbCBzb29uIGJlIHJvbGxlZCBi YWNrKS4gKi8KKwl1dF9hKCFyZWNfb2Zmc19hbnlfbnVsbF9leHRlcm4ocmVjLCBvZmZzZXRzKQor CSAgICAgfHwgdHJ4X2Fzc2VydF9yZWNvdmVyZWQocm93X2dldF9yZWNfdHJ4X2lkKHJlYywgaW5k ZXgsIG9mZnNldHMpKSk7CiAjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRf REVCVUcgKi8KIAogCWlmICh0eXBlICE9IFJPV19DT1BZX1BPSU5URVJTKSB7CgpObyBidW5kbGUg KHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==