From: marko.makela Date: June 16 2011 9:08am Subject: bzr commit into mysql-5.5 branch (marko.makela:3455) List-Archive: http://lists.mysql.com/commits/139295 Message-Id: <201106160909.p5G99gQx018153@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0926139264==" --===============0926139264== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS9teXNxbC01LjUvIGJh c2VkIG9uIHJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02Mzdq OHF5bWYzdnhkYjQxCgogMzQ1NSBNYXJrbyBNw6RrZWzDpAkyMDExLTA2LTE2IFttZXJnZV0KICAg ICAgTWVyZ2UgbXlzcWwtNS4xIHRvIG15c3FsLTUuNS4KCiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0 cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2J0cjBjdXIuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYu aAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5pYwogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcGFnZTBjdXIuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3BhZ2UwcGFnZS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHBhZ2Uu aWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvc3luYzBydy5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQogICAgICBzdG9yYWdlL2lubm9i YXNlL3BhZ2UvcGFnZTBjdXIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdl LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2Uvcm93L3JvdzByb3cuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHZlcnMuYwogICAgICBzdG9yYWdlL2lubm9i YXNlL3N5bmMvc3luYzBydy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMu YwogICAgICBzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwcmVjLmMKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9i dHIvYnRyMGJ0ci5jCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MjQw MC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25o NWtsCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAo YykgMTk5NCwgMjAxMCwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmln aHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZQpAQCAtMjI3NSw3ICsyMjc1LDcgQEAgYnRyX2F0dGFjaF9oYWxmX3BhZ2VzKAogLyo9PT09PT09 PT09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiB0aGUgaW5kZXgg dHJlZSAqLwogCWJ1Zl9ibG9ja190KglibG9jaywJCS8qITwgaW4vb3V0OiBwYWdlIHRvIGJlIHNw bGl0ICovCi0JcmVjX3QqCQlzcGxpdF9yZWMsCS8qITwgaW46IGZpcnN0IHJlY29yZCBvbiB1cHBl cgorCWNvbnN0IHJlY190KglzcGxpdF9yZWMsCS8qITwgaW46IGZpcnN0IHJlY29yZCBvbiB1cHBl cgogCQkJCQloYWxmIHBhZ2UgKi8KIAlidWZfYmxvY2tfdCoJbmV3X2Jsb2NrLAkvKiE8IGluL291 dDogdGhlIG5ldyBoYWxmIHBhZ2UgKi8KIAl1bGludAkJZGlyZWN0aW9uLAkvKiE8IGluOiBGU1Bf VVAgb3IgRlNQX0RPV04gKi8KQEAgLTI5NjcsMTUgKzI5NjcsMTYgQEAgYnRyX25vZGVfcHRyX2Rl bGV0ZSgKIAl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKIAogCWlmICghY29tcHJlc3NlZCkgewot CQlidHJfY3VyX2NvbXByZXNzX2lmX3VzZWZ1bCgmY3Vyc29yLCBtdHIpOworCQlidHJfY3VyX2Nv bXByZXNzX2lmX3VzZWZ1bCgmY3Vyc29yLCBGQUxTRSwgbXRyKTsKIAl9CiB9CiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogSWYgcGFnZSBpcyB0aGUgb25seSBvbiBpdHMgbGV2ZWwsIHRoaXMgZnVuY3Rpb24gbW92ZXMg aXRzIHJlY29yZHMgdG8gdGhlCi1mYXRoZXIgcGFnZSwgdGh1cyByZWR1Y2luZyB0aGUgdHJlZSBo ZWlnaHQuICovCitmYXRoZXIgcGFnZSwgdGh1cyByZWR1Y2luZyB0aGUgdHJlZSBoZWlnaHQuCitA cmV0dXJuIGZhdGhlciBibG9jayAqLwogc3RhdGljCi12b2lkCitidWZfYmxvY2tfdCoKIGJ0cl9s aWZ0X3BhZ2VfdXAoCiAvKj09PT09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8q ITwgaW46IGluZGV4IHRyZWUgKi8KQEAgLTMwOTIsNiArMzA5Myw4IEBAIGJ0cl9saWZ0X3BhZ2Vf dXAoCiAJfQogCXV0X2FkKHBhZ2VfdmFsaWRhdGUoZmF0aGVyX3BhZ2UsIGluZGV4KSk7CiAJdXRf YWQoYnRyX2NoZWNrX25vZGVfcHRyKGluZGV4LCBmYXRoZXJfYmxvY2ssIG10cikpOworCisJcmV0 dXJuKGZhdGhlcl9ibG9jayk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMzEwOCwxMSArMzExMSwxMyBA QCBVTklWX0lOVEVSTgogaWJvb2wKIGJ0cl9jb21wcmVzcygKIC8qPT09PT09PT09Ki8KLQlidHJf Y3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIG1lcmdlIG9yIGxp ZnQ7Ci0JCQkJdGhlIHBhZ2UgbXVzdCBub3QgYmUgZW1wdHk6IGluIHJlY29yZCBkZWxldGUKLQkJ CQl1c2UgYnRyX2Rpc2NhcmRfcGFnZSBpZiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUKLQkJCQllbXB0 eSAqLwotCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KKwlidHJfY3VyX3QqCWN1cnNvciwJ LyohPCBpbi9vdXQ6IGN1cnNvciBvbiB0aGUgcGFnZSB0byBtZXJnZQorCQkJCW9yIGxpZnQ7IHRo ZSBwYWdlIG11c3Qgbm90IGJlIGVtcHR5OgorCQkJCXdoZW4gZGVsZXRpbmcgcmVjb3JkcywgdXNl IGJ0cl9kaXNjYXJkX3BhZ2UoKQorCQkJCWlmIHRoZSBwYWdlIHdvdWxkIGJlY29tZSBlbXB0eSAq LworCWlib29sCQlhZGp1c3QsCS8qITwgaW46IFRSVUUgaWYgc2hvdWxkIGFkanVzdCB0aGUKKwkJ CQljdXJzb3IgcG9zaXRpb24gZXZlbiBpZiBjb21wcmVzc2lvbiBvY2N1cnMgKi8KKwltdHJfdCoJ CW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAlkaWN0X2luZGV4X3Qq CWluZGV4OwogCXVsaW50CQlzcGFjZTsKQEAgLTMxMzAsMTIgKzMxMzUsMTQgQEAgYnRyX2NvbXBy ZXNzKAogCXVsaW50KgkJb2Zmc2V0czsKIAl1bGludAkJZGF0YV9zaXplOwogCXVsaW50CQluX3Jl Y3M7CisJdWxpbnQJCW50aF9yZWM7CiAJdWxpbnQJCW1heF9pbnNfc2l6ZTsKIAl1bGludAkJbWF4 X2luc19zaXplX3Jlb3JnOwogCiAJYmxvY2sgPSBidHJfY3VyX2dldF9ibG9jayhjdXJzb3IpOwog CXBhZ2UgPSBidHJfY3VyX2dldF9wYWdlKGN1cnNvcik7CiAJaW5kZXggPSBidHJfY3VyX2dldF9p bmRleChjdXJzb3IpOworCiAJdXRfYSgoaWJvb2wpICEhcGFnZV9pc19jb21wKHBhZ2UpID09IGRp Y3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFibGUpKTsKIAogCXV0X2FkKG10cl9tZW1vX2NvbnRh aW5zKG10ciwgZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksCkBAIC0zMTU2LDYgKzMxNjMsMTAg QEAgYnRyX2NvbXByZXNzKAogCW9mZnNldHMgPSBidHJfcGFnZV9nZXRfZmF0aGVyX2Jsb2NrKE5V TEwsIGhlYXAsIGluZGV4LCBibG9jaywgbXRyLAogCQkJCQkgICAgJmZhdGhlcl9jdXJzb3IpOwog CisJaWYgKGFkanVzdCkgeworCQludGhfcmVjID0gcGFnZV9yZWNfZ2V0X25fcmVjc19iZWZvcmUo YnRyX2N1cl9nZXRfcmVjKGN1cnNvcikpOworCX0KKwogCS8qIERlY2lkZSB0aGUgcGFnZSB0byB3 aGljaCB3ZSB0cnkgdG8gbWVyZ2UgYW5kIHdoaWNoIHdpbGwgaW5oZXJpdAogCXRoZSBsb2NrcyAq LwogCkBAIC0zMTgyLDkgKzMxOTMsOSBAQCBidHJfY29tcHJlc3MoCiAJfSBlbHNlIHsKIAkJLyog VGhlIHBhZ2UgaXMgdGhlIG9ubHkgb25lIG9uIHRoZSBsZXZlbCwgbGlmdCB0aGUgcmVjb3Jkcwog CQl0byB0aGUgZmF0aGVyICovCi0JCWJ0cl9saWZ0X3BhZ2VfdXAoaW5kZXgsIGJsb2NrLCBtdHIp OwotCQltZW1faGVhcF9mcmVlKGhlYXApOwotCQlyZXR1cm4oVFJVRSk7CisKKwkJbWVyZ2VfYmxv Y2sgPSBidHJfbGlmdF9wYWdlX3VwKGluZGV4LCBibG9jaywgbXRyKTsKKwkJZ290byBmdW5jX2V4 aXQ7CiAJfQogCiAJbl9yZWNzID0gcGFnZV9nZXRfbl9yZWNzKHBhZ2UpOwpAQCAtMzI2Niw2ICsz Mjc3LDEwIEBAIGVycl9leGl0OgogCiAJCWJ0cl9ub2RlX3B0cl9kZWxldGUoaW5kZXgsIGJsb2Nr LCBtdHIpOwogCQlsb2NrX3VwZGF0ZV9tZXJnZV9sZWZ0KG1lcmdlX2Jsb2NrLCBvcmlnX3ByZWQs IGJsb2NrKTsKKworCQlpZiAoYWRqdXN0KSB7CisJCQludGhfcmVjICs9IHBhZ2VfcmVjX2dldF9u X3JlY3NfYmVmb3JlKG9yaWdfcHJlZCk7CisJCX0KIAl9IGVsc2UgewogCQlyZWNfdCoJCW9yaWdf c3VjYzsKICNpZmRlZiBVTklWX0JUUl9ERUJVRwpAQCAtMzMzMCw3ICszMzQ1LDYgQEAgZXJyX2V4 aXQ6CiAJfQogCiAJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9jb21wcmVz cyIpOwotCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAKIAlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1c3Qo aW5kZXgpICYmIHBhZ2VfaXNfbGVhZihtZXJnZV9wYWdlKSkgewogCQkvKiBVcGRhdGUgdGhlIGZy ZWUgYml0cyBvZiB0aGUgQi10cmVlIHBhZ2UgaW4gdGhlCkBAIC0zMzgyLDYgKzMzOTYsMTYgQEAg ZXJyX2V4aXQ6CiAJYnRyX3BhZ2VfZnJlZShpbmRleCwgYmxvY2ssIG10cik7CiAKIAl1dF9hZChi dHJfY2hlY2tfbm9kZV9wdHIoaW5kZXgsIG1lcmdlX2Jsb2NrLCBtdHIpKTsKK2Z1bmNfZXhpdDoK KwltZW1faGVhcF9mcmVlKGhlYXApOworCisJaWYgKGFkanVzdCkgeworCQlidHJfY3VyX3Bvc2l0 aW9uKAorCQkJaW5kZXgsCisJCQlwYWdlX3JlY19nZXRfbnRoKG1lcmdlX2Jsb2NrLT5mcmFtZSwg bnRoX3JlYyksCisJCQltZXJnZV9ibG9jaywgY3Vyc29yKTsKKwl9CisKIAlyZXR1cm4oVFJVRSk7 CiB9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDpqb3JnZW4ubG9sYW5k QG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdl L2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMTk3Miw3ICsxOTcyLDYgQEAgYnRyX2N1 cl9vcHRpbWlzdGljX3VwZGF0ZSgKIAl1bGludAkJb2xkX3JlY19zaXplOwogCWR0dXBsZV90Kglu ZXdfZW50cnk7CiAJcm9sbF9wdHJfdAlyb2xsX3B0cjsKLQl0cnhfdCoJCXRyeDsKIAltZW1faGVh cF90KgloZWFwOwogCXVsaW50CQlpOwogCXVsaW50CQluX2V4dDsKQEAgLTE5ODksOSArMTk4OCwx MCBAQCBidHJfY3VyX29wdGltaXN0aWNfdXBkYXRlKAogCiAJaGVhcCA9IG1lbV9oZWFwX2NyZWF0 ZSgxMDI0KTsKIAlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIE5VTEwsIFVM SU5UX1VOREVGSU5FRCwgJmhlYXApOwotI2lmZGVmIFVOSVZfQkxPQl9OVUxMX0RFQlVHCi0JdXRf YSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywgb2Zmc2V0cykpOwotI2VuZGlmIC8qIFVO SVZfQkxPQl9OVUxMX0RFQlVHICovCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQg VU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJl Yywgb2Zmc2V0cykKKwkgICAgIHx8IHRyeF9pc19yZWN2KHRocl9nZXRfdHJ4KHRocikpKTsKKyNl bmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAjaWZkZWYg VU5JVl9ERUJVRwogCWlmIChidHJfY3VyX3ByaW50X3JlY29yZF9vcHMgJiYgdGhyKSB7CkBAIC0y MTE0LDEzICsyMTE0LDExIEBAIGFueV9leHRlcm46CiAKIAlwYWdlX2N1cl9tb3ZlX3RvX3ByZXYo cGFnZV9jdXJzb3IpOwogCi0JdHJ4ID0gdGhyX2dldF90cngodGhyKTsKLQogCWlmICghKGZsYWdz ICYgQlRSX0tFRVBfU1lTX0ZMQUcpKSB7CiAJCXJvd191cGRfaW5kZXhfZW50cnlfc3lzX2ZpZWxk KG5ld19lbnRyeSwgaW5kZXgsIERBVEFfUk9MTF9QVFIsCiAJCQkJCSAgICAgIHJvbGxfcHRyKTsK IAkJcm93X3VwZF9pbmRleF9lbnRyeV9zeXNfZmllbGQobmV3X2VudHJ5LCBpbmRleCwgREFUQV9U UlhfSUQsCi0JCQkJCSAgICAgIHRyeC0+aWQpOworCQkJCQkgICAgICB0aHJfZ2V0X3RyeCh0aHIp LT5pZCk7CiAJfQogCiAJLyogVGhlcmUgYXJlIG5vIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMg aW4gbmV3X2VudHJ5ICovCkBAIC0yMjA2LDcgKzIyMDQsOSBAQCBidHJfY3VyX3Blc3NpbWlzdGlj X3VwZGF0ZSgKIC8qPT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFncywJLyoh PCBpbjogdW5kbyBsb2dnaW5nLCBsb2NraW5nLCBhbmQgcm9sbGJhY2sKIAkJCQlmbGFncyAqLwot CWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBjdXJzb3Igb24gdGhlIHJlY29yZCB0byB1cGRh dGUgKi8KKwlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbi9vdXQ6IGN1cnNvciBvbiB0aGUgcmVj b3JkIHRvIHVwZGF0ZTsKKwkJCQljdXJzb3IgbWF5IGJlY29tZSBpbnZhbGlkIGlmICpiaWdfcmVj ID09IE5VTEwKKwkJCQl8fCAhKGZsYWdzICYgQlRSX0tFRVBfUE9TX0ZMQUcpICovCiAJbWVtX2hl YXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxM ICovCiAJYmlnX3JlY190KioJYmlnX3JlYywvKiE8IG91dDogYmlnIHJlYyB2ZWN0b3Igd2hvc2Ug ZmllbGRzIGhhdmUgdG8KIAkJCQliZSBzdG9yZWQgZXh0ZXJuYWxseSBieSB0aGUgY2FsbGVyLCBv ciBOVUxMICovCkBAIC0yMzQ1LDcgKzIzNDUsNyBAQCBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0 ZSgKIAlyZWNvcmQgdG8gYmUgaW5zZXJ0ZWQ6IHdlIGhhdmUgdG8gcmVtZW1iZXIgd2hpY2ggZmll bGRzIHdlcmUgc3VjaCAqLwogCiAJdXRfYWQoIXBhZ2VfaXNfY29tcChwYWdlKSB8fCAhcmVjX2dl dF9ub2RlX3B0cl9mbGFnKHJlYykpOwotCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBp bmRleCwgb2Zmc2V0cywgVUxJTlRfVU5ERUZJTkVELCBoZWFwKTsKKwl1dF9hZChyZWNfb2Zmc192 YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CiAJbl9leHQgKz0gYnRyX3B1c2hfdXBkYXRl X2V4dGVybl9maWVsZHMobmV3X2VudHJ5LCB1cGRhdGUsICpoZWFwKTsKIAogCWlmIChVTklWX0xJ S0VMWV9OVUxMKHBhZ2VfemlwKSkgewpAQCAtMjM2OCw2ICsyMzY4LDEwIEBAIG1ha2VfZXh0ZXJu YWw6CiAJCQllcnIgPSBEQl9UT09fQklHX1JFQ09SRDsKIAkJCWdvdG8gcmV0dXJuX2FmdGVyX3Jl c2VydmF0aW9uczsKIAkJfQorCisJCXV0X2FkKHBhZ2VfaXNfbGVhZihwYWdlKSk7CisJCXV0X2Fk KGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwkJdXRfYWQoZmxhZ3MgJiBCVFJfS0VFUF9Q T1NfRkxBRyk7CiAJfQogCiAJLyogU3RvcmUgc3RhdGUgb2YgZXhwbGljaXQgbG9ja3Mgb24gcmVj IG9uIHRoZSBwYWdlIGluZmltdW0gcmVjb3JkLApAQCAtMjM5NSw2ICsyMzk5LDggQEAgbWFrZV9l eHRlcm5hbDoKIAlyZWMgPSBidHJfY3VyX2luc2VydF9pZl9wb3NzaWJsZShjdXJzb3IsIG5ld19l bnRyeSwgbl9leHQsIG10cik7CiAKIAlpZiAocmVjKSB7CisJCXBhZ2VfY3Vyc29yLT5yZWMgPSBy ZWM7CisKIAkJbG9ja19yZWNfcmVzdG9yZV9mcm9tX3BhZ2VfaW5maW11bShidHJfY3VyX2dldF9i bG9jayhjdXJzb3IpLAogCQkJCQkJICAgcmVjLCBibG9jayk7CiAKQEAgLTI0MDgsNyArMjQxNCwx MCBAQCBtYWtlX2V4dGVybmFsOgogCQkJCQkJICAgICByZWMsIGluZGV4LCBvZmZzZXRzLCBtdHIp OwogCQl9CiAKLQkJYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoY3Vyc29yLCBtdHIpOworCQli dHJfY3VyX2NvbXByZXNzX2lmX3VzZWZ1bCgKKwkJCWN1cnNvciwKKwkJCWJpZ19yZWNfdmVjICE9 IE5VTEwgJiYgKGZsYWdzICYgQlRSX0tFRVBfUE9TX0ZMQUcpLAorCQkJbXRyKTsKIAogCQlpZiAo cGFnZV96aXAgJiYgIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpCiAJCSAgICAmJiBwYWdlX2lz X2xlYWYocGFnZSkpIHsKQEAgLTI0MjgsNiArMjQzNywyMSBAQCBtYWtlX2V4dGVybmFsOgogCQl9 CiAJfQogCisJaWYgKGJpZ19yZWNfdmVjKSB7CisJCXV0X2FkKHBhZ2VfaXNfbGVhZihwYWdlKSk7 CisJCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwkJdXRfYWQoZmxhZ3MgJiBC VFJfS0VFUF9QT1NfRkxBRyk7CisKKwkJLyogYnRyX3BhZ2Vfc3BsaXRfYW5kX2luc2VydCgpIGlu CisJCWJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5zZXJ0KCkgaW52b2tlcworCQltdHJfbWVtb19yZWxl YXNlKG10ciwgaW5kZXgtPmxvY2ssIE1UUl9NRU1PX1hfTE9DSykuCisJCVdlIG11c3Qga2VlcCB0 aGUgaW5kZXgtPmxvY2sgd2hlbiB3ZSBjcmVhdGVkIGEKKwkJYmlnX3JlYywgc28gdGhhdCByb3df dXBkX2NsdXN0X3JlYygpIGNhbiBzdG9yZSB0aGUKKwkJYmlnX3JlYyBpbiB0aGUgc2FtZSBtaW5p LXRyYW5zYWN0aW9uLiAqLworCisJCW10cl94X2xvY2soZGljdF9pbmRleF9nZXRfbG9jayhpbmRl eCksIG10cik7CisJfQorCiAJLyogV2FzIHRoZSByZWNvcmQgdG8gYmUgdXBkYXRlZCBwb3NpdGlv bmVkIGFzIHRoZSBmaXJzdCB1c2VyCiAJcmVjb3JkIG9uIGl0cyBwYWdlPyAqLwogCXdhc19maXJz dCA9IHBhZ2VfY3VyX2lzX2JlZm9yZV9maXJzdChwYWdlX2N1cnNvcik7CkBAIC0yNDQzLDYgKzI0 NjcsNyBAQCBtYWtlX2V4dGVybmFsOgogCXV0X2EocmVjKTsKIAl1dF9hKGVyciA9PSBEQl9TVUND RVNTKTsKIAl1dF9hKGR1bW15X2JpZ19yZWMgPT0gTlVMTCk7CisJcGFnZV9jdXJzb3ItPnJlYyA9 IHJlYzsKIAogCWlmIChkaWN0X2luZGV4X2lzX3NlY19vcl9pYnVmKGluZGV4KSkgewogCQkvKiBV cGRhdGUgUEFHRV9NQVhfVFJYX0lEIGluIHRoZSBpbmRleCBwYWdlIGhlYWRlci4KQEAgLTI1MDEs NiArMjUyNiwzOSBAQCByZXR1cm5fYWZ0ZXJfcmVzZXJ2YXRpb25zOgogCXJldHVybihlcnIpOwog fQogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCitDb21taXRzIGFuZCByZXN0YXJ0cyBhIG1pbmktdHJhbnNhY3Rpb24g c28gdGhhdCBpdCB3aWxsIHJldGFpbiBhbgoreC1sb2NrIG9uIGluZGV4LT5sb2NrIGFuZCB0aGUg Y3Vyc29yIHBhZ2UuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2N1cl9tdHJfY29tbWl0X2Fu ZF9zdGFydCgKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PSovCisJYnRyX2N1cl90KgljdXJz b3IsCS8qITwgaW46IGN1cnNvciAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10 cmFuc2FjdGlvbiAqLworeworCWJ1Zl9ibG9ja190KglibG9jazsKKworCWJsb2NrID0gYnRyX2N1 cl9nZXRfYmxvY2soY3Vyc29yKTsKKworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwgZGlj dF9pbmRleF9nZXRfbG9jayhjdXJzb3ItPmluZGV4KSwKKwkJCQlNVFJfTUVNT19YX0xPQ0spKTsK Kwl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklY KSk7CisJLyogS2VlcCB0aGUgbG9ja3MgYWNyb3NzIHRoZSBtdHJfY29tbWl0KG10cikuICovCisJ cndfbG9ja194X2xvY2soZGljdF9pbmRleF9nZXRfbG9jayhjdXJzb3ItPmluZGV4KSk7CisJcndf bG9ja194X2xvY2soJmJsb2NrLT5sb2NrKTsKKwltdXRleF9lbnRlcigmYmxvY2stPm11dGV4KTsK KwlidWZfYmxvY2tfYnVmX2ZpeF9pbmMoYmxvY2ssIF9fRklMRV9fLCBfX0xJTkVfXyk7CisJbXV0 ZXhfZXhpdCgmYmxvY2stPm11dGV4KTsKKwkvKiBXcml0ZSBvdXQgdGhlIHJlZG8gbG9nLiAqLwor CW10cl9jb21taXQobXRyKTsKKwltdHJfc3RhcnQobXRyKTsKKwkvKiBSZWFzc29jaWF0ZSB0aGUg bG9ja3Mgd2l0aCB0aGUgbWluaS10cmFuc2FjdGlvbi4KKwlUaGV5IHdpbGwgYmUgcmVsZWFzZWQg b24gbXRyX2NvbW1pdChtdHIpLiAqLworCW10cl9tZW1vX3B1c2gobXRyLCBkaWN0X2luZGV4X2dl dF9sb2NrKGN1cnNvci0+aW5kZXgpLAorCQkgICAgICBNVFJfTUVNT19YX0xPQ0spOworCW10cl9t ZW1vX3B1c2gobXRyLCBibG9jaywgTVRSX01FTU9fUEFHRV9YX0ZJWCk7Cit9CisKIC8qPT09PT09 PT09PT09PT09PT09PT0gQi1UUkVFIERFTEVURSBNQVJLIEFORCBVTk1BUksgPT09PT09PT09PT09 PT09Ki8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCkBAIC0yODgxLDEwICsyOTM5LDEyIEBAIFVOSVZfSU5URVJO CiBpYm9vbAogYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoCiAvKj09PT09PT09PT09PT09PT09 PT09PT09Ki8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIG9uIHRoZSBwYWdl IHRvIGNvbXByZXNzOwotCQkJCWN1cnNvciBkb2VzIG5vdCBzdGF5IHZhbGlkIGlmIGNvbXByZXNz aW9uCi0JCQkJb2NjdXJzICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLworCWJ0cl9j dXJfdCoJY3Vyc29yLAkvKiE8IGluL291dDogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIGNvbXByZXNz OworCQkJCWN1cnNvciBkb2VzIG5vdCBzdGF5IHZhbGlkIGlmICFhZGp1c3QgYW5kCisJCQkJY29t cHJlc3Npb24gb2NjdXJzICovCisJaWJvb2wJCWFkanVzdCwJLyohPCBpbjogVFJVRSBpZiBzaG91 bGQgYWRqdXN0IHRoZQorCQkJCWN1cnNvciBwb3NpdGlvbiBldmVuIGlmIGNvbXByZXNzaW9uIG9j Y3VycyAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwog ewogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwKIAkJCQlkaWN0X2luZGV4X2dldF9sb2Nr KGJ0cl9jdXJfZ2V0X2luZGV4KGN1cnNvcikpLApAQCAtMjg5Myw3ICsyOTUzLDcgQEAgYnRyX2N1 cl9jb21wcmVzc19pZl91c2VmdWwoCiAJCQkJTVRSX01FTU9fUEFHRV9YX0ZJWCkpOwogCiAJcmV0 dXJuKGJ0cl9jdXJfY29tcHJlc3NfcmVjb21tZW5kYXRpb24oY3Vyc29yLCBtdHIpCi0JICAgICAg ICYmIGJ0cl9jb21wcmVzcyhjdXJzb3IsIG10cikpOworCSAgICAgICAmJiBidHJfY29tcHJlc3Mo Y3Vyc29yLCBhZGp1c3QsIG10cikpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTMxMzUsNyArMzE5NSw3IEBAIHJl dHVybl9hZnRlcl9yZXNlcnZhdGlvbnM6CiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAogCWlmIChy ZXQgPT0gRkFMU0UpIHsKLQkJcmV0ID0gYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoY3Vyc29y LCBtdHIpOworCQlyZXQgPSBidHJfY3VyX2NvbXByZXNzX2lmX3VzZWZ1bChjdXJzb3IsIEZBTFNF LCBtdHIpOwogCX0KIAogCWlmIChuX2V4dGVudHMgPiAwKSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2 MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv YnRyMGJ0ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3 bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAot Q29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCkBAIC00ODEsMTEgKzQ4MSwxNCBAQCBVTklWX0lOVEVSTgogaWJvb2wKIGJ0 cl9jb21wcmVzcygKIC8qPT09PT09PT09Ki8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjog Y3Vyc29yIG9uIHRoZSBwYWdlIHRvIG1lcmdlIG9yIGxpZnQ7Ci0JCQkJdGhlIHBhZ2UgbXVzdCBu b3QgYmUgZW1wdHk6IGluIHJlY29yZCBkZWxldGUKLQkJCQl1c2UgYnRyX2Rpc2NhcmRfcGFnZSBp ZiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUKLQkJCQllbXB0eSAqLwotCW10cl90KgkJbXRyKTsJLyoh PCBpbjogbXRyICovCisJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW4vb3V0OiBjdXJzb3Igb24g dGhlIHBhZ2UgdG8gbWVyZ2UKKwkJCQlvciBsaWZ0OyB0aGUgcGFnZSBtdXN0IG5vdCBiZSBlbXB0 eToKKwkJCQl3aGVuIGRlbGV0aW5nIHJlY29yZHMsIHVzZSBidHJfZGlzY2FyZF9wYWdlKCkKKwkJ CQlpZiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUgZW1wdHkgKi8KKwlpYm9vbAkJYWRqdXN0LAkvKiE8 IGluOiBUUlVFIGlmIHNob3VsZCBhZGp1c3QgdGhlCisJCQkJY3Vyc29yIHBvc2l0aW9uIGV2ZW4g aWYgY29tcHJlc3Npb24gb2NjdXJzICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5p LXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBE aXNjYXJkcyBhIHBhZ2UgZnJvbSBhIEItdHJlZS4gVGhpcyBpcyB1c2VkIHRvIHJlbW92ZSB0aGUg bGFzdCByZWNvcmQgZnJvbQogYSBCLXRyZWUgcGFnZTogdGhlIHdob2xlIHBhZ2UgbXVzdCBiZSBy ZW1vdmVkIGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgY2Fubm90Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2 MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv YnRyMGN1ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3 bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAot Q29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCkBAIC0zNiw2ICszNiw5IEBAIENyZWF0ZWQgMTAvMTYvMTk5NCBIZWlra2kg VHV1cmkKICNkZWZpbmUgQlRSX05PX0xPQ0tJTkdfRkxBRwkyCS8qIGRvIG5vIHJlY29yZCBsb2Nr IGNoZWNraW5nICovCiAjZGVmaW5lIEJUUl9LRUVQX1NZU19GTEFHCTQJLyogc3lzIGZpZWxkcyB3 aWxsIGJlIGZvdW5kIGZyb20gdGhlCiAJCQkJCXVwZGF0ZSB2ZWN0b3Igb3IgaW5zZXJ0ZWQgZW50 cnkgKi8KKyNkZWZpbmUgQlRSX0tFRVBfUE9TX0ZMQUcJOAkvKiBidHJfY3VyX3Blc3NpbWlzdGlj X3VwZGF0ZSgpCisJCQkJCW11c3Qga2VlcCBjdXJzb3IgcG9zaXRpb24gd2hlbgorCQkJCQltb3Zp bmcgY29sdW1ucyB0byBiaWdfcmVjICovCiAKICNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKICNpbmNs dWRlICJxdWUwdHlwZXMuaCIKQEAgLTMxMCw3ICszMTMsOSBAQCBidHJfY3VyX3Blc3NpbWlzdGlj X3VwZGF0ZSgKIC8qPT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFncywJLyoh PCBpbjogdW5kbyBsb2dnaW5nLCBsb2NraW5nLCBhbmQgcm9sbGJhY2sKIAkJCQlmbGFncyAqLwot CWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBjdXJzb3Igb24gdGhlIHJlY29yZCB0byB1cGRh dGUgKi8KKwlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbi9vdXQ6IGN1cnNvciBvbiB0aGUgcmVj b3JkIHRvIHVwZGF0ZTsKKwkJCQljdXJzb3IgbWF5IGJlY29tZSBpbnZhbGlkIGlmICpiaWdfcmVj ID09IE5VTEwKKwkJCQl8fCAhKGZsYWdzICYgQlRSX0tFRVBfUE9TX0ZMQUcpICovCiAJbWVtX2hl YXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxM ICovCiAJYmlnX3JlY190KioJYmlnX3JlYywvKiE8IG91dDogYmlnIHJlYyB2ZWN0b3Igd2hvc2Ug ZmllbGRzIGhhdmUgdG8KIAkJCQliZSBzdG9yZWQgZXh0ZXJuYWxseSBieSB0aGUgY2FsbGVyLCBv ciBOVUxMICovCkBAIC0zMjIsNiArMzI3LDE2IEBAIGJ0cl9jdXJfcGVzc2ltaXN0aWNfdXBkYXRl KAogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIAltdHJfdCoJCW10 cik7CS8qITwgaW46IG10cjsgbXVzdCBiZSBjb21taXR0ZWQgYmVmb3JlCiAJCQkJbGF0Y2hpbmcg YW55IGZ1cnRoZXIgcGFnZXMgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQ29tbWl0cyBhbmQgcmVzdGFydHMgYSBt aW5pLXRyYW5zYWN0aW9uIHNvIHRoYXQgaXQgd2lsbCByZXRhaW4gYW4KK3gtbG9jayBvbiBpbmRl eC0+bG9jayBhbmQgdGhlIGN1cnNvciBwYWdlLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9j dXJfbXRyX2NvbW1pdF9hbmRfc3RhcnQoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT0qLwor CWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBjdXJzb3IgKi8KKwltdHJfdCoJCW10cikJLyoh PCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlVTklWX0NPTEQgX19hdHRyaWJ1dGVfXygo bm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogTWFya3MgYSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGRlbGV0 ZWQuIFdyaXRlcyBhbiB1bmRvIGxvZyByZWNvcmQgdG8KIHVuZG8gbG9nIG9uIHRoaXMgZGVsZXRl IG1hcmtpbmcuIFdyaXRlcyBpbiB0aGUgdHJ4IGlkIGZpZWxkIHRoZSBpZApAQCAtMzY0LDEwICsz NzksMTMgQEAgVU5JVl9JTlRFUk4KIGlib29sCiBidHJfY3VyX2NvbXByZXNzX2lmX3VzZWZ1bCgK IC8qPT09PT09PT09PT09PT09PT09PT09PT0qLwotCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGlu OiBjdXJzb3Igb24gdGhlIHBhZ2UgdG8gY29tcHJlc3M7CisJYnRyX2N1cl90KgljdXJzb3IsCS8q ITwgaW4vb3V0OiBjdXJzb3Igb24gdGhlIHBhZ2UgdG8gY29tcHJlc3M7CiAJCQkJY3Vyc29yIGRv ZXMgbm90IHN0YXkgdmFsaWQgaWYgY29tcHJlc3Npb24KIAkJCQlvY2N1cnMgKi8KLQltdHJfdCoJ CW10cik7CS8qITwgaW46IG10ciAqLworCWlib29sCQlhZGp1c3QsCS8qITwgaW46IFRSVUUgaWYg c2hvdWxkIGFkanVzdCB0aGUKKwkJCQljdXJzb3IgcG9zaXRpb24gZXZlbiBpZiBjb21wcmVzc2lv biBvY2N1cnMgKi8KKwltdHJfdCoJCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24g Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJlbW92ZXMgdGhlIHJlY29yZCBv biB3aGljaCB0aGUgdHJlZSBjdXJzb3IgaXMgcG9zaXRpb25lZC4gSXQgaXMgYXNzdW1lZAogdGhh dCB0aGUgbXRyIGhhcyBhbiB4LWxhdGNoIG9uIHRoZSBwYWdlIHdoZXJlIHRoZSBjdXJzb3IgaXMg cG9zaXRpb25lZCwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv YnRyMGN1ci5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaWMJcmV2 aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRi NDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaWMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw2 ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIw MDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0 LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVk LgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTEzOSw3 ICsxMzksNyBAQCBidHJfY3VyX2NvbXByZXNzX3JlY29tbWVuZGF0aW9uKAogCWJ0cl9jdXJfdCoJ Y3Vyc29yLAkvKiE8IGluOiBidHIgY3Vyc29yICovCiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10 ciAqLwogewotCXBhZ2VfdCoJCXBhZ2U7CisJY29uc3QgcGFnZV90KgkJcGFnZTsKIAogCXV0X2Fk KG10cl9tZW1vX2NvbnRhaW5zKG10ciwgYnRyX2N1cl9nZXRfYmxvY2soY3Vyc29yKSwKIAkJCQlN VFJfTUVNT19QQUdFX1hfRklYKSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J1ZjBidWYuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBi dWYuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhx eW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5oCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wK QEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAx OTk1LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAo YykgMTk5NSwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBA IC01ODIsNiArNTgyLDMxIEBAIGJ1Zl9ibG9ja19nZXRfbW9kaWZ5X2Nsb2NrKAogI2Vsc2UgLyog IVVOSVZfSE9UQkFDS1VQICovCiAjIGRlZmluZSBidWZfYmxvY2tfbW9kaWZ5X2Nsb2NrX2luYyhi bG9jaykgKCh2b2lkKSAwKQogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCitJbmNyZW1lbnRzIHRoZSBidWZmZXJmaXggY291bnQuICovCitVTklWX0lOTElORQor dm9pZAorYnVmX2Jsb2NrX2J1Zl9maXhfaW5jX2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09 PT09Ki8KKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwljb25zdCBjaGFyKglmaWxlLAkvKiE8IGlu OiBmaWxlIG5hbWUgKi8KKwl1bGludAkJbGluZSwJLyohPCBpbjogbGluZSAqLworI2VuZGlmIC8q IFVOSVZfU1lOQ19ERUJVRyAqLworCWJ1Zl9ibG9ja190KglibG9jaykJLyohPCBpbi9vdXQ6IGJs b2NrIHRvIGJ1ZmZlcmZpeCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKyNpZmRlZiBV TklWX1NZTkNfREVCVUcKKy8qKiBJbmNyZW1lbnRzIHRoZSBidWZmZXJmaXggY291bnQuCitAcGFy YW0gYglpbi9vdXQ6IGJsb2NrIHRvIGJ1ZmZlcmZpeAorQHBhcmFtIGYJaW46IGZpbGUgbmFtZSB3 aGVyZSByZXF1ZXN0ZWQKK0BwYXJhbSBsCWluOiBsaW5lIG51bWJlciB3aGVyZSByZXF1ZXN0ZWQg Ki8KKyMgZGVmaW5lIGJ1Zl9ibG9ja19idWZfZml4X2luYyhiLGYsbCkgYnVmX2Jsb2NrX2J1Zl9m aXhfaW5jX2Z1bmMoZixsLGIpCisjZWxzZSAvKiBVTklWX1NZTkNfREVCVUcgKi8KKy8qKiBJbmNy ZW1lbnRzIHRoZSBidWZmZXJmaXggY291bnQuCitAcGFyYW0gYglpbi9vdXQ6IGJsb2NrIHRvIGJ1 ZmZlcmZpeAorQHBhcmFtIGYJaW46IGZpbGUgbmFtZSB3aGVyZSByZXF1ZXN0ZWQKK0BwYXJhbSBs CWluOiBsaW5lIG51bWJlciB3aGVyZSByZXF1ZXN0ZWQgKi8KKyMgZGVmaW5lIGJ1Zl9ibG9ja19i dWZfZml4X2luYyhiLGYsbCkgYnVmX2Jsb2NrX2J1Zl9maXhfaW5jX2Z1bmMoYikKKyNlbmRpZiAv KiBVTklWX1NZTkNfREVCVUcgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENhbGN1bGF0ZXMgYSBwYWdl IGNoZWNrc3VtIHdoaWNoIGlzIHN0b3JlZCB0byB0aGUgcGFnZSB3aGVuIGl0IGlzIHdyaXR0ZW4K IHRvIGEgZmlsZS4gTm90ZSB0aGF0IHdlIG11c3QgYmUgY2FyZWZ1bCB0byBjYWxjdWxhdGUgdGhl IHNhbWUgdmFsdWUKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv YnVmMGJ1Zi5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaWMJcmV2 aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRi NDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaWMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw2 ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIw MTAsIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk1 LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVk LgogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLgogCiBQb3J0aW9ucyBvZiB0aGlzIGZp bGUgY29udGFpbiBtb2RpZmljYXRpb25zIGNvbnRyaWJ1dGVkIGFuZCBjb3B5cmlnaHRlZCBieQpA QCAtODk3LDE5ICs4OTcsNiBAQCBidWZfYmxvY2tfYnVmX2ZpeF9pbmNfZnVuYygKIAogCWJsb2Nr LT5wYWdlLmJ1Zl9maXhfY291bnQrKzsKIH0KLSNpZmRlZiBVTklWX1NZTkNfREVCVUcKLS8qKiBJ bmNyZW1lbnRzIHRoZSBidWZmZXJmaXggY291bnQuCi1AcGFyYW0gYglpbi9vdXQ6IGJsb2NrIHRv IGJ1ZmZlcmZpeAotQHBhcmFtIGYJaW46IGZpbGUgbmFtZSB3aGVyZSByZXF1ZXN0ZWQKLUBwYXJh bSBsCWluOiBsaW5lIG51bWJlciB3aGVyZSByZXF1ZXN0ZWQgKi8KLSMgZGVmaW5lIGJ1Zl9ibG9j a19idWZfZml4X2luYyhiLGYsbCkgYnVmX2Jsb2NrX2J1Zl9maXhfaW5jX2Z1bmMoZixsLGIpCi0j ZWxzZSAvKiBVTklWX1NZTkNfREVCVUcgKi8KLS8qKiBJbmNyZW1lbnRzIHRoZSBidWZmZXJmaXgg Y291bnQuCi1AcGFyYW0gYglpbi9vdXQ6IGJsb2NrIHRvIGJ1ZmZlcmZpeAotQHBhcmFtIGYJaW46 IGZpbGUgbmFtZSB3aGVyZSByZXF1ZXN0ZWQKLUBwYXJhbSBsCWluOiBsaW5lIG51bWJlciB3aGVy ZSByZXF1ZXN0ZWQgKi8KLSMgZGVmaW5lIGJ1Zl9ibG9ja19idWZfZml4X2luYyhiLGYsbCkgYnVm X2Jsb2NrX2J1Zl9maXhfaW5jX2Z1bmMoYikKLSNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8K IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBEZWNyZW1lbnRzIHRoZSBidWZmZXJmaXggY291bnQuICovCkBA IC0xMTYwLDcgKzExNDcsNyBAQCBidWZfYmxvY2tfZGJnX2FkZF9sZXZlbCgKIAkJCQl3aGVyZSB3 ZSBoYXZlIGFjcXVpcmVkIGxhdGNoICovCiAJdWxpbnQJCWxldmVsKQkvKiE8IGluOiBsYXRjaGlu ZyBvcmRlciBsZXZlbCAqLwogewotCXN5bmNfdGhyZWFkX2FkZF9sZXZlbCgmYmxvY2stPmxvY2ss IGxldmVsKTsKKwlzeW5jX3RocmVhZF9hZGRfbGV2ZWwoJmJsb2NrLT5sb2NrLCBsZXZlbCwgRkFM U0UpOwogfQogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMGN1ci5pYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwY3VyLmljCXJldmlkOmpvcmdlbi5s b2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMGN1ci5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xLDYgKzEsNiBAQAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAwOSwgSW5ub2Jh c2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMjcsNiArMjcsOCBAQCBD cmVhdGVkIDEwLzQvMTk5NCBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJidWYwdHlwZXMuaCIKIAog I2lmZGVmIFVOSVZfREVCVUcKKyMgaW5jbHVkZSAicmVtMGNtcC5oIgorCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyBw b2ludGVyIHRvIHRoZSBwYWdlIGZyYW1lIHdoZXJlIHRoZSBjdXJzb3IgaXMgcG9zaXRpb25lZC4K IEByZXR1cm4JcGFnZSAqLwpAQCAtMjY4LDYgKzI3MCw3IEBAIHBhZ2VfY3VyX3R1cGxlX2luc2Vy dCgKIAkJCQkJICAgICAgaW5kZXgsIHJlYywgb2Zmc2V0cywgbXRyKTsKIAl9CiAKKwl1dF9hZCgh cmVjIHx8ICFjbXBfZHR1cGxlX3JlYyh0dXBsZSwgcmVjLCBvZmZzZXRzKSk7CiAJbWVtX2hlYXBf ZnJlZShoZWFwKTsKIAlyZXR1cm4ocmVjKTsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcGFnZTBwYWdlLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9wYWdlMHBhZ2UuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYw NjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFn ZTBwYWdlLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDdu MWZxMGRyYWduaDVrbApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1D b3B5cmlnaHQgKGMpIDE5OTQsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVk LgorQ29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVz LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKQEAgLTI4NCwxNiArMjg0LDQyIEBAIHBhZ2VfZ2V0X3N1cHJlbXVtX29mZnNl dCgKIAljb25zdCBwYWdlX3QqCXBhZ2UpOwkvKiE8IGluOiBwYWdlIHdoaWNoIG11c3QgaGF2ZSBy ZWNvcmQocykgKi8KICNkZWZpbmUgcGFnZV9nZXRfaW5maW11bV9yZWMocGFnZSkgKChwYWdlKSAr IHBhZ2VfZ2V0X2luZmltdW1fb2Zmc2V0KHBhZ2UpKQogI2RlZmluZSBwYWdlX2dldF9zdXByZW11 bV9yZWMocGFnZSkgKChwYWdlKSArIHBhZ2VfZ2V0X3N1cHJlbXVtX29mZnNldChwYWdlKSkKKwog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKLVJldHVybnMgdGhlIG1pZGRsZSByZWNvcmQgb2YgcmVjb3JkIGxpc3QuIElmIHRo ZXJlIGFyZSBhbiBldmVuIG51bWJlcgotb2YgcmVjb3JkcyBpbiB0aGUgbGlzdCwgcmV0dXJucyB0 aGUgZmlyc3QgcmVjb3JkIG9mIHVwcGVyIGhhbGYtbGlzdC4KLUByZXR1cm4JbWlkZGxlIHJlY29y ZCAqLworUmV0dXJucyB0aGUgbnRoIHJlY29yZCBvZiB0aGUgcmVjb3JkIGxpc3QuCitUaGlzIGlz IHRoZSBpbnZlcnNlIGZ1bmN0aW9uIG9mIHBhZ2VfcmVjX2dldF9uX3JlY3NfYmVmb3JlKCkuCitA cmV0dXJuCW50aCByZWNvcmQgKi8KIFVOSVZfSU5URVJOCitjb25zdCByZWNfdCoKK3BhZ2VfcmVj X2dldF9udGhfY29uc3QoCisvKj09PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHBhZ2VfdCoJ cGFnZSwJLyohPCBpbjogcGFnZSAqLworCXVsaW50CQludGgpCS8qITwgaW46IG50aCByZWNvcmQg Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitSZXR1cm5zIHRoZSBudGggcmVjb3JkIG9mIHRoZSByZWNvcmQgbGlzdC4KK1RoaXMgaXMg dGhlIGludmVyc2UgZnVuY3Rpb24gb2YgcGFnZV9yZWNfZ2V0X25fcmVjc19iZWZvcmUoKS4KK0By ZXR1cm4JbnRoIHJlY29yZCAqLworVU5JVl9JTkxJTkUKK3JlY190KgorcGFnZV9yZWNfZ2V0X250 aCgKKy8qPT09PT09PT09PT09PSovCisJcGFnZV90KglwYWdlLAkvKjwgaW46IHBhZ2UgKi8KKwl1 bGludAludGgpCS8qITwgaW46IG50aCByZWNvcmQgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxs LCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKworI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAorLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKK1JldHVybnMgdGhlIG1pZGRsZSByZWNvcmQgb2YgdGhlIHJlY29yZHMgb24gdGhlIHBhZ2Uu IElmIHRoZXJlIGlzIGFuCitldmVuIG51bWJlciBvZiByZWNvcmRzIGluIHRoZSBsaXN0LCByZXR1 cm5zIHRoZSBmaXJzdCByZWNvcmQgb2YgdGhlCit1cHBlciBoYWxmLWxpc3QuCitAcmV0dXJuCW1p ZGRsZSByZWNvcmQgKi8KK1VOSVZfSU5MSU5FCiByZWNfdCoKIHBhZ2VfZ2V0X21pZGRsZV9yZWMo CiAvKj09PT09PT09PT09PT09PT0qLwotCXBhZ2VfdCoJcGFnZSk7CS8qITwgaW46IHBhZ2UgKi8K LSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKKwlwYWdlX3QqCXBhZ2UpCS8qITwgaW46IHBhZ2UgKi8K KwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogQ29tcGFyZXMgYSBkYXRhIHR1cGxlIHRvIGEgcGh5c2ljYWwgcmVjb3JkLiBEaWZmZXJzIGZy b20gdGhlIGZ1bmN0aW9uCiBjbXBfZHR1cGxlX3JlY193aXRoX21hdGNoIGluIHRoZSB3YXkgdGhh dCB0aGUgcmVjb3JkIG11c3QgcmVzaWRlIG9uIGFuCkBAIC0zNDgsNiArMzc0LDcgQEAgcGFnZV9n ZXRfbl9yZWNzKAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIG51bWJlciBvZiByZWNvcmRzIGJl Zm9yZSB0aGUgZ2l2ZW4gcmVjb3JkIGluIGNoYWluLgogVGhlIG51bWJlciBpbmNsdWRlcyBpbmZp bXVtIGFuZCBzdXByZW11bSByZWNvcmRzLgorVGhpcyBpcyB0aGUgaW52ZXJzZSBmdW5jdGlvbiBv ZiBwYWdlX3JlY19nZXRfbnRoKCkuCiBAcmV0dXJuCW51bWJlciBvZiByZWNvcmRzICovCiBVTklW X0lOVEVSTgogdWxpbnQKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvcGFnZTBwYWdlLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBwYWdl LmljCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5 bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHBhZ2UuaWMJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVr bApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMp IDE5OTQsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0 IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRz IFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK QEAgLTQxOSw3ICs0MTksMzcgQEAgcGFnZV9yZWNfaXNfaW5maW11bSgKIAlyZXR1cm4ocGFnZV9y ZWNfaXNfaW5maW11bV9sb3cocGFnZV9vZmZzZXQocmVjKSkpOwogfQogCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmV0 dXJucyB0aGUgbnRoIHJlY29yZCBvZiB0aGUgcmVjb3JkIGxpc3QuCitUaGlzIGlzIHRoZSBpbnZl cnNlIGZ1bmN0aW9uIG9mIHBhZ2VfcmVjX2dldF9uX3JlY3NfYmVmb3JlKCkuCitAcmV0dXJuCW50 aCByZWNvcmQgKi8KK1VOSVZfSU5MSU5FCityZWNfdCoKK3BhZ2VfcmVjX2dldF9udGgoCisvKj09 PT09PT09PT09PT0qLworCXBhZ2VfdCoJcGFnZSwJLyohPCBpbjogcGFnZSAqLworCXVsaW50CW50 aCkJLyohPCBpbjogbnRoIHJlY29yZCAqLworeworCXJldHVybigocmVjX3QqKSBwYWdlX3JlY19n ZXRfbnRoX2NvbnN0KHBhZ2UsIG50aCkpOworfQorCiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgorUmV0dXJucyB0aGUgbWlkZGxlIHJlY29yZCBvZiB0aGUgcmVjb3JkcyBvbiB0aGUg cGFnZS4gSWYgdGhlcmUgaXMgYW4KK2V2ZW4gbnVtYmVyIG9mIHJlY29yZHMgaW4gdGhlIGxpc3Qs IHJldHVybnMgdGhlIGZpcnN0IHJlY29yZCBvZiB0aGUKK3VwcGVyIGhhbGYtbGlzdC4KK0ByZXR1 cm4JbWlkZGxlIHJlY29yZCAqLworVU5JVl9JTkxJTkUKK3JlY190KgorcGFnZV9nZXRfbWlkZGxl X3JlYygKKy8qPT09PT09PT09PT09PT09PSovCisJcGFnZV90KglwYWdlKQkvKiE8IGluOiBwYWdl ICovCit7CisJdWxpbnQJbWlkZGxlID0gKHBhZ2VfZ2V0X25fcmVjcyhwYWdlKSArIFBBR0VfSEVB UF9OT19VU0VSX0xPVykgLyAyOworCisJcmV0dXJuKHBhZ2VfcmVjX2dldF9udGgocGFnZSwgbWlk ZGxlKSk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogQ29tcGFyZXMgYSBkYXRhIHR1cGxlIHRvIGEgcGh5c2lj YWwgcmVjb3JkLiBEaWZmZXJzIGZyb20gdGhlIGZ1bmN0aW9uCiBjbXBfZHR1cGxlX3JlY193aXRo X21hdGNoIGluIHRoZSB3YXkgdGhhdCB0aGUgcmVjb3JkIG11c3QgcmVzaWRlIG9uIGFuCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaCcKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9y YWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTQ4MCw3ICs0ODAsNyBAQCB1bGludAog cmVjX29mZnNfYW55X2V4dGVybigKIC8qPT09PT09PT09PT09PT09PSovCiAJY29uc3QgdWxpbnQq CW9mZnNldHMpOy8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICov Ci0jaWZkZWYgVU5JVl9CTE9CX05VTExfREVCVUcKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwg ZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBEZXRlcm1pbmUgaWYgdGhlIG9mZnNl dHMgYXJlIGZvciBhIHJlY29yZCBjb250YWluaW5nIG51bGwgQkxPQiBwb2ludGVycy4KIEByZXR1 cm4JZmlyc3QgZmllbGQgY29udGFpbmluZyBhIG51bGwgQkxPQiBwb2ludGVyLCBvciBOVUxMIGlm IG5vbmUgZm91bmQgKi8KQEAgLTQ5MSw3ICs0OTEsNyBAQCByZWNfb2Zmc19hbnlfbnVsbF9leHRl cm4oCiAJY29uc3QgcmVjX3QqCXJlYywJCS8qITwgaW46IHJlY29yZCAqLwogCWNvbnN0IHVsaW50 KglvZmZzZXRzKQkvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjKSAqLwogCV9fYXR0cmlidXRl X18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwotI2VuZGlmIC8qIFVOSVZfQkxPQl9O VUxMX0RFQlVHICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVC VUcgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBSZXR1cm5zIG5vbnplcm8gaWYgdGhlIGV4dGVybiBiaXQgaXMgc2V0IGluIG50 aCBmaWVsZCBvZiByZWMuCiBAcmV0dXJuCW5vbnplcm8gaWYgZXh0ZXJuYWxseSBzdG9yZWQgKi8K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5pYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaWMJcmV2aWQ6am9yZ2VuLmxv bGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMTA4OCw3ICsxMDg4LDcg QEAgcmVjX29mZnNfYW55X2V4dGVybigKIAlyZXR1cm4oVU5JVl9VTkxJS0VMWSgqcmVjX29mZnNf YmFzZShvZmZzZXRzKSAmIFJFQ19PRkZTX0VYVEVSTkFMKSk7CiB9CiAKLSNpZmRlZiBVTklWX0JM T0JfTlVMTF9ERUJVRworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxP Ql9MSUdIVF9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIERldGVybWluZSBpZiB0aGUgb2Zmc2V0cyBhcmUgZm9yIGEgcmVj b3JkIGNvbnRhaW5pbmcgbnVsbCBCTE9CIHBvaW50ZXJzLgogQHJldHVybglmaXJzdCBmaWVsZCBj b250YWluaW5nIGEgbnVsbCBCTE9CIHBvaW50ZXIsIG9yIE5VTEwgaWYgbm9uZSBmb3VuZCAqLwpA QCAtMTEyNCw3ICsxMTI0LDcgQEAgcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKAogCiAJcmV0dXJu KE5VTEwpOwogfQotI2VuZGlmIC8qIFVOSVZfQkxPQl9OVUxMX0RFQlVHICovCisjZW5kaWYgLyog VU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgbm9u emVybyBpZiB0aGUgZXh0ZXJuIGJpdCBpcyBzZXQgaW4gbnRoIGZpZWxkIG9mIHJlYy4KCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBydy5pYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwcncuaWMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBv cmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL3N5bmMwcncuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMDksIElubm9iYXNlIE95LiBB bGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk1LCAyMDExLCBPcmFjbGUgYW5k L29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogQ29weXJpZ2h0IChjKSAy MDA4LCBHb29nbGUgSW5jLgogCiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgY29udGFpbiBtb2RpZmlj YXRpb25zIGNvbnRyaWJ1dGVkIGFuZCBjb3B5cmlnaHRlZCBieQpAQCAtNjAzLDE2ICs2MDMsMTYg QEAgcndfbG9ja194X3VubG9ja19kaXJlY3QoCiAKIAl1dF9hZCgobG9jay0+bG9ja193b3JkICUg WF9MT0NLX0RFQ1IpID09IDApOwogCi0jaWZkZWYgVU5JVl9TWU5DX0RFQlVHCi0JcndfbG9ja19y ZW1vdmVfZGVidWdfaW5mbyhsb2NrLCAwLCBSV19MT0NLX0VYKTsKLSNlbmRpZgotCiAJaWYgKGxv Y2stPmxvY2tfd29yZCA9PSAwKSB7CiAJCWxvY2stPnJlY3Vyc2l2ZSA9IEZBTFNFOwogCQlVTklW X01FTV9JTlZBTElEKCZsb2NrLT53cml0ZXJfdGhyZWFkLAogCQkJCSBzaXplb2YgbG9jay0+d3Jp dGVyX3RocmVhZCk7CiAJfQogCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJcndfbG9ja19yZW1v dmVfZGVidWdfaW5mbyhsb2NrLCAwLCBSV19MT0NLX0VYKTsKKyNlbmRpZgorCiAJbG9jay0+bG9j a193b3JkICs9IFhfTE9DS19ERUNSOwogCiAJdXRfYWQoIWxvY2stPndhaXRlcnMpOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaCcKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3luYy5oCXJldmlkOmpvcmdlbi5sb2xhbmRA b3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xLDYgKzEsNiBAQAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwgSW5ub2Jhc2UgT3ku IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIE9yYWNsZSBh bmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiBDb3B5cmlnaHQgKGMp IDIwMDgsIEdvb2dsZSBJbmMuCiAKIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBjb250YWluIG1vZGlm aWNhdGlvbnMgY29udHJpYnV0ZWQgYW5kIGNvcHlyaWdodGVkIGJ5CkBAIC00MDAsOCArNDAwLDEw IEBAIHZvaWQKIHN5bmNfdGhyZWFkX2FkZF9sZXZlbCgKIC8qPT09PT09PT09PT09PT09PT09Ki8K IAl2b2lkKglsYXRjaCwJLyohPCBpbjogcG9pbnRlciB0byBhIG11dGV4IG9yIGFuIHJ3LWxvY2sg Ki8KLQl1bGludAlsZXZlbCk7CS8qITwgaW46IGxldmVsIGluIHRoZSBsYXRjaGluZyBvcmRlcjsg aWYKKwl1bGludAlsZXZlbCwJLyohPCBpbjogbGV2ZWwgaW4gdGhlIGxhdGNoaW5nIG9yZGVyOyBp ZgogCQkJU1lOQ19MRVZFTF9WQVJZSU5HLCBub3RoaW5nIGlzIGRvbmUgKi8KKwlpYm9vbAlyZWxv Y2spCS8qITwgaW46IFRSVUUgaWYgcmUtZW50ZXJpbmcgYW4geC1sb2NrICovCisJX19hdHRyaWJ1 dGVfXygobm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJlbW92ZXMgYSBsYXRjaCBmcm9tIHRo ZSB0aHJlYWQgbGV2ZWwgYXJyYXkgaWYgaXQgaXMgZm91bmQgdGhlcmUuCiBAcmV0dXJuIFRSVUUg aWYgZm91bmQgaW4gdGhlIGFycmF5OyBpdCBpcyBubyBlcnJvciBpZiB0aGUgbGF0Y2ggaXMKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xl LmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYw OTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw4ICsxLDcgQEAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMTAsIElubm9iYXNlIE95LiBBbGwgUmlnaHRz IFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29n bGUgSW5jLgotQ29weXJpZ2h0IChjKSAyMDA5LCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuCiAKIFBv cnRpb25zIG9mIHRoaXMgZmlsZSBjb250YWluIG1vZGlmaWNhdGlvbnMgY29udHJpYnV0ZWQgYW5k IGNvcHlyaWdodGVkIGJ5CiBHb29nbGUsIEluYy4gVGhvc2UgbW9kaWZpY2F0aW9ucyBhcmUgZ3Jh dGVmdWxseSBhY2tub3dsZWRnZWQgYW5kIGFyZSBkZXNjcmliZWQKQEAgLTE4Niw4ICsxODUsNiBA QCBjb21tYW5kLiBOb3QgdGVzdGVkIG9uIFdpbmRvd3MuICovCiAJCQkJCQlkZWJ1Z2dpbmcgd2l0 aG91dCBVTklWX0RFQlVHICovCiAjZGVmaW5lIFVOSVZfQkxPQl9MSUdIVF9ERUJVRwkJCS8qIEVu YWJsZSBvZmYtcGFnZSBjb2x1bW4KIAkJCQkJCWRlYnVnZ2luZyB3aXRob3V0IFVOSVZfREVCVUcg Ki8KLSNkZWZpbmUgVU5JVl9CTE9CX05VTExfREVCVUcJCQkvKiBFbmFibGUgZGVlcCBvZmYtcGFn ZQotCQkJCQkJY29sdW1uIGRlYnVnZ2luZyAqLwogI2RlZmluZSBVTklWX0RFQlVHCQkJCS8qIEVu YWJsZSB1dF9hZCgpIGFzc2VydGlvbnMKIAkJCQkJCWFuZCBkaXNhYmxlIFVOSVZfSU5MSU5FICov CiAjZGVmaW5lIFVOSVZfREVCVUdfTE9DS19WQUxJREFURQkJLyogRW5hYmxlCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwY3VyLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2UvcGFnZS9wYWdlMGN1ci5jCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0y MDExMDYxNjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvcGFn ZS9wYWdlMGN1ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5 LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK IAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNl cnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxp YXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlCkBAIC0xMTgwLDE0ICsxMTgwLDE1IEBAIHBhZ2VfY3VyX2luc2VydF9y ZWNfemlwX3Jlb3JnKAogCS8qIEJlZm9yZSB0cnlpbmcgdG8gcmVvcmdhbml6ZSB0aGUgcGFnZSwK IAlzdG9yZSB0aGUgbnVtYmVyIG9mIHByZWNlZGluZyByZWNvcmRzIG9uIHRoZSBwYWdlLiAqLwog CXBvcyA9IHBhZ2VfcmVjX2dldF9uX3JlY3NfYmVmb3JlKHJlYyk7CisJdXRfYWQocG9zID4gMCk7 CiAKIAlpZiAocGFnZV96aXBfcmVvcmdhbml6ZShibG9jaywgaW5kZXgsIG10cikpIHsKIAkJLyog VGhlIHBhZ2Ugd2FzIHJlb3JnYW5pemVkOiBGaW5kIHJlYyBieSBzZWVraW5nIHRvIHBvcywKIAkJ YW5kIHVwZGF0ZSAqY3VycmVudF9yZWMuICovCi0JCXJlYyA9IHBhZ2UgKyBQQUdFX05FV19JTkZJ TVVNOwotCi0JCXdoaWxlICgtLXBvcykgewotCQkJcmVjID0gcGFnZSArIHJlY19nZXRfbmV4dF9v ZmZzKHJlYywgVFJVRSk7CisJCWlmIChwb3MgPiAxKSB7CisJCQlyZWMgPSBwYWdlX3JlY19nZXRf bnRoKHBhZ2UsIHBvcyAtIDEpOworCQl9IGVsc2UgeworCQkJcmVjID0gcGFnZSArIFBBR0VfTkVX X0lORklNVU07CiAJCX0KIAogCQkqY3VycmVudF9yZWMgPSByZWM7CkBAIC0xMjgzLDYgKzEyODQs MTIgQEAgcGFnZV9jdXJfaW5zZXJ0X3JlY196aXAoCiAJCQlpbnNlcnRfcmVjID0gcGFnZV9jdXJf aW5zZXJ0X3JlY196aXBfcmVvcmcoCiAJCQkJY3VycmVudF9yZWMsIGJsb2NrLCBpbmRleCwgaW5z ZXJ0X3JlYywKIAkJCQlwYWdlLCBwYWdlX3ppcCwgbXRyKTsKKyNpZmRlZiBVTklWX0RFQlVHCisJ CQlpZiAoaW5zZXJ0X3JlYykgeworCQkJCXJlY19vZmZzX21ha2VfdmFsaWQoCisJCQkJCWluc2Vy dF9yZWMsIGluZGV4LCBvZmZzZXRzKTsKKwkJCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJ CX0KIAogCQlyZXR1cm4oaW5zZXJ0X3JlYyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFn ZTBwYWdlLmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYz N2o4cXltZjN2eGRiNDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1 a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChj KSAxOTk0LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdo dCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CkBAIC0xNDY1LDU1ICsxNDY1LDU0IEBAIHBhZ2VfZGlyX2JhbGFuY2Vfc2xvdCgKIAl9CiB9CiAK LSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIHRoZSBtaWRkbGUgcmVj b3JkIG9mIHRoZSByZWNvcmQgbGlzdC4gSWYgdGhlcmUgYXJlIGFuIGV2ZW4gbnVtYmVyCi1vZiBy ZWNvcmRzIGluIHRoZSBsaXN0LCByZXR1cm5zIHRoZSBmaXJzdCByZWNvcmQgb2YgdGhlIHVwcGVy IGhhbGYtbGlzdC4KLUByZXR1cm4JbWlkZGxlIHJlY29yZCAqLworUmV0dXJucyB0aGUgbnRoIHJl Y29yZCBvZiB0aGUgcmVjb3JkIGxpc3QuCitUaGlzIGlzIHRoZSBpbnZlcnNlIGZ1bmN0aW9uIG9m IHBhZ2VfcmVjX2dldF9uX3JlY3NfYmVmb3JlKCkuCitAcmV0dXJuCW50aCByZWNvcmQgKi8KIFVO SVZfSU5URVJOCi1yZWNfdCoKLXBhZ2VfZ2V0X21pZGRsZV9yZWMoCi0vKj09PT09PT09PT09PT09 PT0qLwotCXBhZ2VfdCoJcGFnZSkJLyohPCBpbjogcGFnZSAqLworY29uc3QgcmVjX3QqCitwYWdl X3JlY19nZXRfbnRoX2NvbnN0KAorLyo9PT09PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdl X3QqCXBhZ2UsCS8qITwgaW46IHBhZ2UgKi8KKwl1bGludAkJbnRoKQkvKiE8IGluOiBudGggcmVj b3JkICovCiB7Ci0JcGFnZV9kaXJfc2xvdF90KglzbG90OwotCXVsaW50CQkJbWlkZGxlOworCWNv bnN0IHBhZ2VfZGlyX3Nsb3RfdCoJc2xvdDsKIAl1bGludAkJCWk7CiAJdWxpbnQJCQluX293bmVk OwotCXVsaW50CQkJY291bnQ7Ci0JcmVjX3QqCQkJcmVjOwotCi0JLyogVGhpcyBtYW55IHJlY29y ZHMgd2UgbXVzdCBsZWF2ZSBiZWhpbmQgKi8KLQltaWRkbGUgPSAocGFnZV9nZXRfbl9yZWNzKHBh Z2UpICsgUEFHRV9IRUFQX05PX1VTRVJfTE9XKSAvIDI7CisJY29uc3QgcmVjX3QqCQlyZWM7CiAK LQljb3VudCA9IDA7CisJdXRfYWQobnRoIDwgVU5JVl9QQUdFX1NJWkUgLyAoUkVDX05fTkVXX0VY VFJBX0JZVEVTICsgMSkpOwogCiAJZm9yIChpID0gMDs7IGkrKykgewogCiAJCXNsb3QgPSBwYWdl X2Rpcl9nZXRfbnRoX3Nsb3QocGFnZSwgaSk7CiAJCW5fb3duZWQgPSBwYWdlX2Rpcl9zbG90X2dl dF9uX293bmVkKHNsb3QpOwogCi0JCWlmIChjb3VudCArIG5fb3duZWQgPiBtaWRkbGUpIHsKKwkJ aWYgKG5fb3duZWQgPiBudGgpIHsKIAkJCWJyZWFrOwogCQl9IGVsc2UgewotCQkJY291bnQgKz0g bl9vd25lZDsKKwkJCW50aCAtPSBuX293bmVkOwogCQl9CiAJfQogCiAJdXRfYWQoaSA+IDApOwog CXNsb3QgPSBwYWdlX2Rpcl9nZXRfbnRoX3Nsb3QocGFnZSwgaSAtIDEpOwotCXJlYyA9IChyZWNf dCopIHBhZ2VfZGlyX3Nsb3RfZ2V0X3JlYyhzbG90KTsKLQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4 dChyZWMpOworCXJlYyA9IHBhZ2VfZGlyX3Nsb3RfZ2V0X3JlYyhzbG90KTsKIAotCS8qIFRoZXJl IGFyZSBub3cgY291bnQgcmVjb3JkcyBiZWhpbmQgcmVjICovCi0KLQlmb3IgKGkgPSAwOyBpIDwg bWlkZGxlIC0gY291bnQ7IGkrKykgewotCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dChyZWMpOwor CWlmIChwYWdlX2lzX2NvbXAocGFnZSkpIHsKKwkJZG8geworCQkJcmVjID0gcGFnZV9yZWNfZ2V0 X25leHRfbG93KHJlYywgVFJVRSk7CisJCQl1dF9hZChyZWMpOworCQl9IHdoaWxlIChudGgtLSk7 CisJfSBlbHNlIHsKKwkJZG8geworCQkJcmVjID0gcGFnZV9yZWNfZ2V0X25leHRfbG93KHJlYywg RkFMU0UpOworCQkJdXRfYWQocmVjKTsKKwkJfSB3aGlsZSAobnRoLS0pOwogCX0KIAogCXJldHVy bihyZWMpOwogfQotI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog UmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgYmVmb3JlIHRoZSBnaXZlbiByZWNvcmQgaW4g Y2hhaW4uCkBAIC0xNTc1LDYgKzE1NzQsNyBAQCBwYWdlX3JlY19nZXRfbl9yZWNzX2JlZm9yZSgK IAluLS07CiAKIAl1dF9hZChuID49IDApOworCXV0X2FkKG4gPCBVTklWX1BBR0VfU0laRSAvIChS RUNfTl9ORVdfRVhUUkFfQllURVMgKyAxKSk7CiAKIAlyZXR1cm4oKHVsaW50KSBuKTsKIH0KCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5j b20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwaW5zLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3 NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogCi1Db3B5cmlnaHQgKGMpIDE5OTYsIDIwMTAsIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJl c2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk2LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZp bGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUKQEAgLTM0NSw5ICszNDUsOSBAQCByb3dfaW5zX2NsdXN0X2luZGV4 X2VudHJ5X2J5X21vZGlmeSgKIAkJCXJldHVybihEQl9MT0NLX1RBQkxFX0ZVTEwpOwogCiAJCX0K LQkJZXJyID0gYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUoMCwgY3Vyc29yLAotCQkJCQkJIGhl YXAsIGJpZ19yZWMsIHVwZGF0ZSwKLQkJCQkJCSAwLCB0aHIsIG10cik7CisJCWVyciA9IGJ0cl9j dXJfcGVzc2ltaXN0aWNfdXBkYXRlKAorCQkJQlRSX0tFRVBfUE9TX0ZMQUcsIGN1cnNvciwgaGVh cCwgYmlnX3JlYywgdXBkYXRlLAorCQkJMCwgdGhyLCBtdHIpOwogCX0KIAogCXJldHVybihlcnIp OwpAQCAtMTk3Myw2ICsxOTczLDcgQEAgcm93X2luc19pbmRleF9lbnRyeV9sb3coCiAJdWxpbnQJ CW1vZGlmeSA9IDA7IC8qIHJlbW92ZSB3YXJuaW5nICovCiAJcmVjX3QqCQlpbnNlcnRfcmVjOwog CXJlY190KgkJcmVjOworCXVsaW50KgkJb2Zmc2V0czsKIAl1bGludAkJZXJyOwogCXVsaW50CQlu X3VuaXF1ZTsKIAliaWdfcmVjX3QqCWJpZ19yZWMJCQk9IE5VTEw7CkBAIC0yMDgxLDYgKzIwODIs NDIgQEAgcm93X2luc19pbmRleF9lbnRyeV9sb3coCiAJCQllcnIgPSByb3dfaW5zX2NsdXN0X2lu ZGV4X2VudHJ5X2J5X21vZGlmeSgKIAkJCQltb2RlLCAmY3Vyc29yLCAmaGVhcCwgJmJpZ19yZWMs IGVudHJ5LAogCQkJCXRociwgJm10cik7CisKKwkJCWlmIChiaWdfcmVjKSB7CisJCQkJdXRfYShl cnIgPT0gREJfU1VDQ0VTUyk7CisJCQkJLyogV3JpdGUgb3V0IHRoZSBleHRlcm5hbGx5IHN0b3Jl ZAorCQkJCWNvbHVtbnMgd2hpbGUgc3RpbGwgeC1sYXRjaGluZworCQkJCWluZGV4LT5sb2NrIGFu ZCBibG9jay0+bG9jay4gV2UgaGF2ZQorCQkJCXRvIG10cl9jb21taXQobXRyKSBmaXJzdCwgc28g dGhhdCB0aGUKKwkJCQlyZWRvIGxvZyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlCisJCQkJY29ycmVj dCBvcmRlci4gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBydW4KKwkJCQlpbnRvIHRyb3VibGUgb24gY3Jh c2ggcmVjb3ZlcnkgaWYgbXRyCisJCQkJZnJlZWQgQi10cmVlIHBhZ2VzIG9uIHdoaWNoIHNvbWUg b2YKKwkJCQl0aGUgYmlnX3JlYyBmaWVsZHMgd2lsbCBiZSB3cml0dGVuLiAqLworCQkJCWJ0cl9j dXJfbXRyX2NvbW1pdF9hbmRfc3RhcnQoJmN1cnNvciwgJm10cik7CisKKwkJCQlyZWMgPSBidHJf Y3VyX2dldF9yZWMoJmN1cnNvcik7CisJCQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cygKKwkJ CQkJcmVjLCBpbmRleCwgTlVMTCwKKwkJCQkJVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisKKwkJ CQllcnIgPSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAorCQkJCQlpbmRleCwgYnRy X2N1cl9nZXRfYmxvY2soJmN1cnNvciksCisJCQkJCXJlYywgb2Zmc2V0cywgJm10ciwgRkFMU0Us IGJpZ19yZWMpOworCQkJCS8qIElmIHdyaXRpbmcgYmlnX3JlYyBmYWlscyAoZm9yCisJCQkJZXhh bXBsZSwgYmVjYXVzZSBvZiBEQl9PVVRfT0ZfRklMRV9TUEFDRSksCisJCQkJdGhlIHJlY29yZCB3 aWxsIGJlIGNvcnJ1cHRlZC4gRXZlbiBpZgorCQkJCXdlIGRpZCBub3QgdXBkYXRlIGFueSBleHRl cm5hbGx5CisJCQkJc3RvcmVkIGNvbHVtbnMsIG91ciB1cGRhdGUgY291bGQgY2F1c2UKKwkJCQl0 aGUgcmVjb3JkIHRvIGdyb3cgc28gdGhhdCBhCisJCQkJbm9uLXVwZGF0ZWQgY29sdW1uIHdhcyBz ZWxlY3RlZCBmb3IKKwkJCQlleHRlcm5hbCBzdG9yYWdlLiBUaGlzIG5vbi11cGRhdGUKKwkJCQl3 b3VsZCBub3QgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gdGhlCisJCQkJdW5kbyBsb2csIGFuZCB0aHVz IHRoZSByZWNvcmQgY2Fubm90CisJCQkJYmUgcm9sbGVkIGJhY2suICovCisJCQkJdXRfYShlcnIg PT0gREJfU1VDQ0VTUyk7CisJCQkJZ290byBzdG9yZWRfYmlnX3JlYzsKKwkJCX0KIAkJfSBlbHNl IHsKIAkJCXV0X2FkKCFuX2V4dCk7CiAJCQllcnIgPSByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9i eV9tb2RpZnkoCkBAIC0yMTA5LDggKzIxNDYsNiBAQCBmdW5jdGlvbl9leGl0OgogCW10cl9jb21t aXQoJm10cik7CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChiaWdfcmVjKSkgewotCQlyZWNfdCoJ cmVjOwotCQl1bGludCoJb2Zmc2V0czsKIAkJbXRyX3N0YXJ0KCZtdHIpOwogCiAJCWJ0cl9jdXJf c2VhcmNoX3RvX250aF9sZXZlbChpbmRleCwgMCwgZW50cnksIFBBR0VfQ1VSX0xFLApAQCAtMjEy NCw2ICsyMTU5LDcgQEAgZnVuY3Rpb25fZXhpdDoKIAkJCWluZGV4LCBidHJfY3VyX2dldF9ibG9j aygmY3Vyc29yKSwKIAkJCXJlYywgb2Zmc2V0cywgJm10ciwgRkFMU0UsIGJpZ19yZWMpOwogCitz dG9yZWRfYmlnX3JlYzoKIAkJaWYgKG1vZGlmeSkgewogCQkJZHR1cGxlX2JpZ19yZWNfZnJlZShi aWdfcmVjKTsKIAkJfSBlbHNlIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwcm93LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzByb3cuYwlyZXZp ZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0 MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93LmMJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMTkyLDYgKzE5 Miw3IEBAIHJvd19idWlsZCgKIAogCXV0X2FkKGluZGV4ICYmIHJlYyAmJiBoZWFwKTsKIAl1dF9h ZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CisJdXRfYWQoIW11dGV4X293bigma2VybmVs X211dGV4KSk7CiAKIAlpZiAoIW9mZnNldHMpIHsKIAkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0 cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKQEAgLTIwMCwxMyArMjAxLDM1IEBAIHJvd19idWlsZCgK IAkJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwogCX0KIAot I2lmIDAgJiYgZGVmaW5lZCBVTklWX0JMT0JfTlVMTF9ERUJVRwotCS8qIFRoaXMgb25lIGNhbiBm YWlsIGluIHRyeF9yb2xsYmFja19hY3RpdmUoKSBpZgotCXRoZSBzZXJ2ZXIgY3Jhc2hlZCBkdXJp bmcgYW4gaW5zZXJ0IGJlZm9yZSB0aGUKLQlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRz KCkgZGlkIG10cl9jb21taXQoKQotCWFsbCBCTE9CIHBvaW50ZXJzIHRvIHRoZSBjbHVzdGVyZWQg aW5kZXggcmVjb3JkLiAqLwotCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybihyZWMsIG9m ZnNldHMpKTsKLSNlbmRpZiAvKiAwICYmIFVOSVZfQkxPQl9OVUxMX0RFQlVHICovCisjaWYgZGVm aW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJaWYgKFVO SVZfTElLRUxZX05VTEwocmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywgb2Zmc2V0cykpKSB7 CisJCS8qIFRoaXMgY29uZGl0aW9uIGNhbiBvY2N1ciBkdXJpbmcgY3Jhc2ggcmVjb3ZlcnkgYmVm b3JlCisJCXRyeF9yb2xsYmFja19hY3RpdmUoKSBoYXMgY29tcGxldGVkIGV4ZWN1dGlvbi4KKwor CQlUaGlzIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpZiB0aGUgc2VydmVyIGNyYXNoZWQKKwkJZHVy aW5nIGFuIGluc2VydCBvciB1cGRhdGUgYmVmb3JlCisJCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVy bl9maWVsZHMoKSBkaWQgbXRyX2NvbW1pdCgpIGFsbAorCQlCTE9CIHBvaW50ZXJzIHRvIHRoZSBj bHVzdGVyZWQgaW5kZXggcmVjb3JkLgorCisJCUxvb2sgdXAgdGhlIHRyYW5zYWN0aW9uIHRoYXQg aG9sZHMgdGhlIGltcGxpY2l0IGxvY2sKKwkJb24gdGhpcyByZWNvcmQsIGFuZCBhc3NlcnQgdGhh dCBpdCB3YXMgcmVjb3ZlcmVkIChhbmQKKwkJd2lsbCBzb29uIGJlIHJvbGxlZCBiYWNrKS4gKi8K KworCQl1bGludAkJdHJ4X2lkX3Bvcwk9IGRpY3RfaW5kZXhfZ2V0X3N5c19jb2xfcG9zKAorCQkJ CWluZGV4LCBEQVRBX1RSWF9JRCk7CisJCXVsaW50CQlsZW47CisJCXRyeF9pZF90CXRyeF9pZAkJ PSB0cnhfcmVhZF90cnhfaWQoCisJCQlyZWNfZ2V0X250aF9maWVsZChyZWMsIG9mZnNldHMsIHRy eF9pZF9wb3MsICZsZW4pKTsKKwkJdHJ4X3QqCQl0cng7CisJCXV0X2EobGVuID09IDYpOworCisJ CW11dGV4X2VudGVyKCZrZXJuZWxfbXV0ZXgpOworCQl0cnggPSB0cnhfZ2V0X29uX2lkKHRyeF9p ZCk7CisJCXV0X2EodHJ4KTsKKwkJdXRfYSh0cngtPmlzX3JlY292ZXJlZCk7CisJCW11dGV4X2V4 aXQoJmtlcm5lbF9tdXRleCk7CisJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9C X0xJR0hUX0RFQlVHICovCiAKIAlpZiAodHlwZSAhPSBST1dfQ09QWV9QT0lOVEVSUykgewogCQkv KiBUYWtlIGEgY29weSBvZiByZWMgdG8gaGVhcCAqLwpAQCAtMzkxLDEwICs0MTQsMTAgQEAgcm93 X3JlY190b19pbmRleF9lbnRyeSgKIAkJcmVjID0gcmVjX2NvcHkoYnVmLCByZWMsIG9mZnNldHMp OwogCQkvKiBBdm9pZCBhIGRlYnVnIGFzc2VydGlvbiBpbiByZWNfb2Zmc192YWxpZGF0ZSgpLiAq LwogCQlyZWNfb2Zmc19tYWtlX3ZhbGlkKHJlYywgaW5kZXgsIG9mZnNldHMpOwotI2lmZGVmIFVO SVZfQkxPQl9OVUxMX0RFQlVHCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5J Vl9CTE9CX0xJR0hUX0RFQlVHCiAJfSBlbHNlIHsKIAkJdXRfYSghcmVjX29mZnNfYW55X251bGxf ZXh0ZXJuKHJlYywgb2Zmc2V0cykpOwotI2VuZGlmIC8qIFVOSVZfQkxPQl9OVUxMX0RFQlVHICov CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAl9CiAK IAllbnRyeSA9IHJvd19yZWNfdG9faW5kZXhfZW50cnlfbG93KHJlYywgaW5kZXgsIG9mZnNldHMs IG5fZXh0LCBoZWFwKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdXBkLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDpqb3Jn ZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysg Yi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw2ICsxLDYgQEAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTYsIDIwMTAsIElubm9iYXNl IE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk2LCAyMDExLCBPcmFj bGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTE5OTksMjggKzE5OTksNDMg QEAgcm93X3VwZF9jbHVzdF9yZWMoCiAJdXRfYWQoIXJlY19nZXRfZGVsZXRlZF9mbGFnKGJ0cl9w Y3VyX2dldF9yZWMocGN1ciksCiAJCQkJICAgIGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFi bGUpKSk7CiAKLQllcnIgPSBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0ZShCVFJfTk9fTE9DS0lO R19GTEFHLCBidHJfY3VyLAotCQkJCQkgJmhlYXAsICZiaWdfcmVjLCBub2RlLT51cGRhdGUsCi0J CQkJCSBub2RlLT5jbXBsX2luZm8sIHRociwgbXRyKTsKLQltdHJfY29tbWl0KG10cik7Ci0KLQlp ZiAoZXJyID09IERCX1NVQ0NFU1MgJiYgYmlnX3JlYykgeworCWVyciA9IGJ0cl9jdXJfcGVzc2lt aXN0aWNfdXBkYXRlKAorCQlCVFJfTk9fTE9DS0lOR19GTEFHIHwgQlRSX0tFRVBfUE9TX0ZMQUcs IGJ0cl9jdXIsCisJCSZoZWFwLCAmYmlnX3JlYywgbm9kZS0+dXBkYXRlLCBub2RlLT5jbXBsX2lu Zm8sIHRociwgbXRyKTsKKwlpZiAoYmlnX3JlYykgewogCQl1bGludAkJb2Zmc2V0c19bUkVDX09G RlNfTk9STUFMX1NJWkVdOwogCQlyZWNfdCoJCXJlYzsKIAkJcmVjX29mZnNfaW5pdChvZmZzZXRz Xyk7CiAKLQkJbXRyX3N0YXJ0KG10cik7CisJCXV0X2EoZXJyID09IERCX1NVQ0NFU1MpOworCQkv KiBXcml0ZSBvdXQgdGhlIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgd2hpbGUgc3RpbGwKKwkJ eC1sYXRjaGluZyBpbmRleC0+bG9jayBhbmQgYmxvY2stPmxvY2suIFdlIGhhdmUgdG8KKwkJbXRy X2NvbW1pdChtdHIpIGZpcnN0LCBzbyB0aGF0IHRoZSByZWRvIGxvZyB3aWxsIGJlCisJCXdyaXR0 ZW4gaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIE90aGVyd2lzZSwgd2Ugd291bGQgcnVuCisJCWludG8g dHJvdWJsZSBvbiBjcmFzaCByZWNvdmVyeSBpZiBtdHIgZnJlZWQgQi10cmVlCisJCXBhZ2VzIG9u IHdoaWNoIHNvbWUgb2YgdGhlIGJpZ19yZWMgZmllbGRzIHdpbGwgYmUKKwkJd3JpdHRlbi4gKi8K KwkJYnRyX2N1cl9tdHJfY29tbWl0X2FuZF9zdGFydChidHJfY3VyLCBtdHIpOwogCi0JCXV0X2Eo YnRyX3BjdXJfcmVzdG9yZV9wb3NpdGlvbihCVFJfTU9ESUZZX1RSRUUsIHBjdXIsIG10cikpOwog CQlyZWMgPSBidHJfY3VyX2dldF9yZWMoYnRyX2N1cik7CiAJCWVyciA9IGJ0cl9zdG9yZV9iaWdf cmVjX2V4dGVybl9maWVsZHMoCiAJCQlpbmRleCwgYnRyX2N1cl9nZXRfYmxvY2soYnRyX2N1ciks IHJlYywKIAkJCXJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKIAkJCQkJVUxJ TlRfVU5ERUZJTkVELCAmaGVhcCksCiAJCQltdHIsIFRSVUUsIGJpZ19yZWMpOwotCQltdHJfY29t bWl0KG10cik7CisJCS8qIElmIHdyaXRpbmcgYmlnX3JlYyBmYWlscyAoZm9yIGV4YW1wbGUsIGJl Y2F1c2Ugb2YKKwkJREJfT1VUX09GX0ZJTEVfU1BBQ0UpLCB0aGUgcmVjb3JkIHdpbGwgYmUgY29y cnVwdGVkLgorCQlFdmVuIGlmIHdlIGRpZCBub3QgdXBkYXRlIGFueSBleHRlcm5hbGx5IHN0b3Jl ZAorCQljb2x1bW5zLCBvdXIgdXBkYXRlIGNvdWxkIGNhdXNlIHRoZSByZWNvcmQgdG8gZ3JvdyBz bworCQl0aGF0IGEgbm9uLXVwZGF0ZWQgY29sdW1uIHdhcyBzZWxlY3RlZCBmb3IgZXh0ZXJuYWwK KwkJc3RvcmFnZS4gVGhpcyBub24tdXBkYXRlIHdvdWxkIG5vdCBoYXZlIGJlZW4gd3JpdHRlbgor CQl0byB0aGUgdW5kbyBsb2csIGFuZCB0aHVzIHRoZSByZWNvcmQgY2Fubm90IGJlIHJvbGxlZAor CQliYWNrLiAqLworCQl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKIAl9CiAKKwltdHJfY29tbWl0 KG10cik7CisKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChoZWFwKSkgewogCQltZW1faGVhcF9mcmVl KGhlYXApOwogCX0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw dmVycy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVycy5jCXJldmlkOmpvcmdl bi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB2ZXJzLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtNTUwLDEwICs1NTAsMTAg QEAgcm93X3ZlcnNfYnVpbGRfZm9yX2NvbnNpc3RlbnRfcmVhZCgKIAkJCQkvKiBUaGUgdmlldyBh bHJlYWR5IHNlZXMgdGhpcyB2ZXJzaW9uOiB3ZSBjYW4KIAkJCQljb3B5IGl0IHRvIGluX2hlYXAg YW5kIHJldHVybiAqLwogCi0jaWZkZWYgVU5JVl9CTE9CX05VTExfREVCVUcKKyNpZiBkZWZpbmVk IFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKIAkJCQl1dF9hKCFy ZWNfb2Zmc19hbnlfbnVsbF9leHRlcm4oCiAJCQkJCSAgICAgdmVyc2lvbiwgKm9mZnNldHMpKTsK LSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcg fHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAKIAkJCQlidWYgPSBtZW1faGVhcF9hbGxvYyhp bl9oZWFwLAogCQkJCQkJICAgICByZWNfb2Zmc19zaXplKCpvZmZzZXRzKSk7CkBAIC01ODgsOSAr NTg4LDkgQEAgcm93X3ZlcnNfYnVpbGRfZm9yX2NvbnNpc3RlbnRfcmVhZCgKIAkJKm9mZnNldHMg PSByZWNfZ2V0X29mZnNldHMocHJldl92ZXJzaW9uLCBpbmRleCwgKm9mZnNldHMsCiAJCQkJCSAg IFVMSU5UX1VOREVGSU5FRCwgb2Zmc2V0X2hlYXApOwogCi0jaWZkZWYgVU5JVl9CTE9CX05VTExf REVCVUcKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRf REVCVUcKIAkJdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHByZXZfdmVyc2lvbiwgKm9m ZnNldHMpKTsKLSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLworI2VuZGlmIC8qIFVO SVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAKIAkJdHJ4X2lkID0gcm93X2dl dF9yZWNfdHJ4X2lkKHByZXZfdmVyc2lvbiwgaW5kZXgsICpvZmZzZXRzKTsKIApAQCAtNjkxLDkg KzY5MSw5IEBAIHJvd192ZXJzX2J1aWxkX2Zvcl9zZW1pX2NvbnNpc3RlbnRfcmVhZCgKIAkJCS8q IFdlIGZvdW5kIGEgdmVyc2lvbiB0aGF0IGJlbG9uZ3MgdG8gYQogCQkJY29tbWl0dGVkIHRyYW5z YWN0aW9uOiByZXR1cm4gaXQuICovCiAKLSNpZmRlZiBVTklWX0JMT0JfTlVMTF9ERUJVRworI2lm IGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRwogCQkJ dXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHZlcnNpb24sICpvZmZzZXRzKSk7Ci0jZW5k aWYgLyogVU5JVl9CTE9CX05VTExfREVCVUcgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVO SVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAJCQlpZiAocmVjID09IHZlcnNpb24pIHsKIAkJCQkq b2xkX3ZlcnMgPSByZWM7CkBAIC03NTIsOSArNzUyLDkgQEAgcm93X3ZlcnNfYnVpbGRfZm9yX3Nl bWlfY29uc2lzdGVudF9yZWFkKAogCQl2ZXJzaW9uID0gcHJldl92ZXJzaW9uOwogCQkqb2Zmc2V0 cyA9IHJlY19nZXRfb2Zmc2V0cyh2ZXJzaW9uLCBpbmRleCwgKm9mZnNldHMsCiAJCQkJCSAgIFVM SU5UX1VOREVGSU5FRCwgb2Zmc2V0X2hlYXApOwotI2lmZGVmIFVOSVZfQkxPQl9OVUxMX0RFQlVH CisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVH CiAJCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybih2ZXJzaW9uLCAqb2Zmc2V0cykpOwot I2VuZGlmIC8qIFVOSVZfQkxPQl9OVUxMX0RFQlVHICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyB8 fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAl9LyogZm9yICg7OykgKi8KIAogCWlmIChoZWFw KSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwcncuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwcncuYwlyZXZpZDpqb3JnZW4ubG9sYW5k QG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdl L2lubm9iYXNlL3N5bmMvc3luYzBydy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTc4Miw3ICs3ODIsOSBAQCByd19sb2Nr X2FkZF9kZWJ1Z19pbmZvKAogCXJ3X2xvY2tfZGVidWdfbXV0ZXhfZXhpdCgpOwogCiAJaWYgKChw YXNzID09IDApICYmIChsb2NrX3R5cGUgIT0gUldfTE9DS19XQUlUX0VYKSkgewotCQlzeW5jX3Ro cmVhZF9hZGRfbGV2ZWwobG9jaywgbG9jay0+bGV2ZWwpOworCQlzeW5jX3RocmVhZF9hZGRfbGV2 ZWwobG9jaywgbG9jay0+bGV2ZWwsCisJCQkJICAgICAgbG9ja190eXBlID09IFJXX0xPQ0tfRVgK KwkJCQkgICAgICAmJiBsb2NrLT5sb2NrX3dvcmQgPCAwKTsKIAl9CiB9CiAKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMuYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20t MjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3N5 bmMvc3luYzBzeW5jLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3 NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJl c2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk1LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZp bGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUg SW5jLgogCiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgY29udGFpbiBtb2RpZmljYXRpb25zIGNvbnRy aWJ1dGVkIGFuZCBjb3B5cmlnaHRlZCBieQpAQCAtNjkwLDcgKzY5MCw3IEBAIG11dGV4X3NldF9k ZWJ1Z19pbmZvKAogCXV0X2FkKG11dGV4KTsKIAl1dF9hZChmaWxlX25hbWUpOwogCi0Jc3luY190 aHJlYWRfYWRkX2xldmVsKG11dGV4LCBtdXRleC0+bGV2ZWwpOworCXN5bmNfdGhyZWFkX2FkZF9s ZXZlbChtdXRleCwgbXV0ZXgtPmxldmVsLCBGQUxTRSk7CiAKIAltdXRleC0+ZmlsZV9uYW1lID0g ZmlsZV9uYW1lOwogCW11dGV4LT5saW5lCSA9IGxpbmU7CkBAIC0xMTMzLDggKzExMzMsOSBAQCB2 b2lkCiBzeW5jX3RocmVhZF9hZGRfbGV2ZWwoCiAvKj09PT09PT09PT09PT09PT09PSovCiAJdm9p ZCoJbGF0Y2gsCS8qITwgaW46IHBvaW50ZXIgdG8gYSBtdXRleCBvciBhbiBydy1sb2NrICovCi0J dWxpbnQJbGV2ZWwpCS8qITwgaW46IGxldmVsIGluIHRoZSBsYXRjaGluZyBvcmRlcjsgaWYKKwl1 bGludAlsZXZlbCwJLyohPCBpbjogbGV2ZWwgaW4gdGhlIGxhdGNoaW5nIG9yZGVyOyBpZgogCQkJ U1lOQ19MRVZFTF9WQVJZSU5HLCBub3RoaW5nIGlzIGRvbmUgKi8KKwlpYm9vbAlyZWxvY2spCS8q ITwgaW46IFRSVUUgaWYgcmUtZW50ZXJpbmcgYW4geC1sb2NrICovCiB7CiAJdWxpbnQJCWk7CiAJ c3luY19sZXZlbF90KglzbG90OwpAQCAtMTE4NSw2ICsxMTg2LDEwIEBAIHN5bmNfdGhyZWFkX2Fk ZF9sZXZlbCgKIAogCWFycmF5ID0gdGhyZWFkX3Nsb3QtPmxldmVsczsKIAorCWlmIChyZWxvY2sp IHsKKwkJZ290byBsZXZlbHNfb2s7CisJfQorCiAJLyogTk9URSB0aGF0IHRoZXJlIGlzIGEgcHJv YmxlbSB3aXRoIF9OT0RFIGFuZCBfTEVBRiBsZXZlbHM6IGlmIHRoZQogCUItdHJlZSBoZWlnaHQg Y2hhbmdlcywgdGhlbiBhIGxlYWYgY2FuIGNoYW5nZSB0byBhbiBpbnRlcm5hbCBub2RlCiAJb3Ig dGhlIG90aGVyIHdheSBhcm91bmQuIFdlIGRvIG5vdCBrbm93IGF0IHByZXNlbnQgaWYgdGhpcyBj YW4gY2F1c2UKQEAgLTEzNTAsNiArMTM1NSw3IEBAIHN5bmNfdGhyZWFkX2FkZF9sZXZlbCgKIAkJ dXRfZXJyb3I7CiAJfQogCitsZXZlbHNfb2s6CiAJaWYgKGFycmF5LT5uZXh0X2ZyZWUgPT0gVUxJ TlRfVU5ERUZJTkVEKSB7CiAJCXV0X2EoYXJyYXktPm5fZWxlbXMgPCBhcnJheS0+bWF4X2VsZW1z KTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDByZWMuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHJlYy5jCXJldmlkOmpvcmdlbi5sb2xhbmRA b3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvdHJ4L3RyeDByZWMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xNTkzLDkgKzE1OTMsOSBAQCB0cnhfdW5k b19wcmV2X3ZlcnNpb25fYnVpbGQoCiAJCXJldHVybihEQl9FUlJPUik7CiAJfQogCi0jIGlmZGVm IFVOSVZfQkxPQl9OVUxMX0RFQlVHCisjIGlmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVk IFVOSVZfQkxPQl9MSUdIVF9ERUJVRwogCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybihy ZWMsIG9mZnNldHMpKTsKLSMgZW5kaWYgLyogVU5JVl9CTE9CX05VTExfREVCVUcgKi8KKyMgZW5k aWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAogCWlmIChyb3df dXBkX2NoYW5nZXNfZmllbGRfc2l6ZV9vcl9leHRlcm5hbChpbmRleCwgb2Zmc2V0cywgdXBkYXRl KSkgewogCQl1bGludAluX2V4dDsKCg== --===============0926139264== 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/mysql-5.5/ # testament_sha1: 0c39187488ab8640873aa750881ba60076651be4 # timestamp: 2011-06-16 12:09:18 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/mysql-trunk/ # base_revision_id: jorgen.loland@stripped\ # 637j8qymf3vxdb41 # # Begin bundle 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 wkISRH/4fO+d//F3JFOFCQYGYexw --===============0926139264==--