From: marko.makela Date: December 21 2010 12:55pm Subject: bzr push into mysql-5.1-innodb branch (marko.makela:3668 to 3670) Bug#55284 List-Archive: http://lists.mysql.com/commits/127435 X-Bug: 55284 Message-Id: <201012211256.oBLCNQ6t001478@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0764393379==" --===============0764393379== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM2NzAgTWFya28gTcOka2Vsw6QJMjAxMC0xMi0yMQogICAgICBCdWcgIzU1Mjg0IERvdWJsZSBC TE9CIGZyZWUgZHVlIHRvIGxvY2sgd2FpdCB3aGlsZSB1cGRhdGluZyBQUklNQVJZIEtFWQogICAg ICAKICAgICAgVGhpcyBidWcgZml4IHJlcXVpcmVzIHRoYXQgQnVnICM1ODkxMiBiZSBmaXhlZCBh cyB3ZWxsIChienIgcmV2aXNpb24gaWQKICAgICAgbWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MDEyMjEwOTM5MTktbWNtbWdkNHpwc2U5NTY3ZCkuIE90aGVyd2lzZSwKICAgICAgYW5vdGhlciBk b3VibGUgQkxPQiBmcmVlIGNvdWxkIG9jY3VyIHdoZW4gSW5ub0RCIHdvdWxkIHRyeSB0byBwZXJm b3JtCiAgICAgIGFuIHVwZGF0ZS1pbi1wbGFjZSBhcyBkZWxldGUtYW5kLWluc2VydC1ieS11cGRh dGUtaW4tcGxhY2UuCiAgICAgIAogICAgICByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoKTog RG8gbm90IGRpc293biB0aGUgZXh0ZXJuYWxseSBzdG9yZWQKICAgICAgY29sdW1ucyBmcm9tIHRo ZSBvbGQgcmVjb3JkIChidHJfY3VyX21hcmtfZXh0ZXJuX2luaGVyaXRlZF9maWVsZHMoKSkKICAg ICAgdW50aWwgYWZ0ZXIgY2hlY2tpbmcgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGFuZCBz dWNjZXNzZnVsbHkKICAgICAgaW5zZXJ0aW5nIHRoZSB1cGRhdGVkIHJlY29yZC4gSWYgYSBsb2Nr IHdhaXQgdGltZW91dCBvY2N1cnMgYmV0d2VlbgogICAgICB0aGUgZGVsZXRlLW1hcmtpbmcgb2Yg dGhlIG9sZCByZWNvcmQgYW5kIHRoZSBpbnNlcnRpb24gb2YgdGhlIHVwZGF0ZWQKICAgICAgcmVj b3JkLCBtYXJrIHRoZSBjb2x1bW5zIGluaGVyaXRlZCBiZWZvcmUgcmV0cnlpbmcgdGhlIGluc2Vy dC4KICAgICAgRGlzdGluZ3Vpc2ggdGhlIHN0YXRlIFVQRF9OT0RFX0lOU0VSVF9CTE9CIGZyb20K ICAgICAgVVBEX05PREVfSU5TRVJUX0NMVVNURVJFRC4KICAgICAgCiAgICAgIGJ0cl9jdXJfZGVs X21hcmtfc2V0X2NsdXN0X3JlYygpOiBSZXBsYWNlIHRoZSBjdXJzb3Igd2l0aAogICAgICBibG9j ayxyZWMsaW5kZXgsb2Zmc2V0cyBzbyB0aGF0IHRoZSBvZmZzZXRzIG5lZWQgbm90IGJlIHJlY2Fs Y3VsYXRlZC4KICAgICAgQXNzZXJ0IHRoYXQgcmVjIGlzIG9uIGEgY2x1c3RlcmVkIGluZGV4IGxl YWYgcGFnZS4KICAgICAgCiAgICAgIGJ0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9maWVsZHMoKTog UmVuYW1lZCBmcm9tCiAgICAgIGJ0cl9jdXJfbWFya19leHRlcm5faW5oZXJpdGVkX2ZpZWxkcygp LiBVc2UKICAgICAgdXBkX2dldF9maWVsZF9ieV9maWVsZF9ubygpLiBBc3NlcnQgdGhhdCB0aGVy ZSBhcmUgZXh0ZXJuYWxseSBzdG9yZWQKICAgICAgY29sdW1ucy4gQXNzZXJ0IHRoYXQgYSBtaW5p LXRyYW5zYWN0aW9uIGlzIHBhc3NlZC4gUmVtb3ZlIHRoZSByZXR1cm4KICAgICAgc3RhdHVzLiAo VGhlIG9ubHkgY2FsbGVyLCByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoKSwgd2lsbCBoYXZl CiAgICAgIGRldGVybWluZWQgdGhhdCBzb21lIGZpZWxkcyBoYXZlIGNoYW5nZWQgb3duZXJzaGlw LikKICAgICAgCiAgICAgIGJ0cl9jdXJfbWFya19kdHVwbGVfaW5oZXJpdGVkX2V4dGVybigpOiBS ZW5hbWUgdG8KICAgICAgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXRfZnVuYygp IGFuZCBkZWNsYXJlIGFzIHN0YXRpYy4gQWRkCiAgICAgIHRoZSBkZWJ1ZyBwYXJhbWV0ZXJzIHJl Yywgb2Zmc2V0cy4gV2hlbiByZWMgaXMgZ2l2ZW4sIGFzc2VydCB0aGF0IHRoZQogICAgICBvZmYt cGFnZSBjb2x1bW5zIG1hdGNoIHRob3NlIGluIHRoZSBpbmVzcnQgdHVwbGUgYW5kIHRoYXQgdGhl IG9mZi1wYWdlCiAgICAgIGNvbHVtbnMgYXJlIG93bmVkIGJ5IHRoZSByZWNvcmQuIEFzc2VydCB0 aGF0IHRoZSBub24tdXBkYXRlZCBvZmYtcGFnZQogICAgICBjb2x1bW5zIGluIHRoZSBpbnNlcnQg dHVwbGUgYXJlIG93bmVkLCBhbmQgbWFyayB0aGVtIGluaGVyaXRlZC4KICAgICAgCiAgICAgIHJv d191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0KCk6IEEgd3JhcHBlciBtYWNybyBmb3IK ICAgICAgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXRfZnVuYygpLgogICAgICAK ICAgICAgcm93X3VuZG9fbW9kX3VwZF9leGlzdF9zZWMoKTogQWRqdXN0IGEgY29tbWVudCBhYm91 dAogICAgICByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoKS4KICAgICAgCiAgICAgIHJiOjUw OCBhcHByb3ZlZCBieSBKaW1teSBZYW5nCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5u b2RiX3BsdWdpbi9DaGFuZ2VMb2cKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIw Y3VyLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1ci5oCiAgICAg IHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzB1cGQuaAogICAgICBzdG9yYWdlL2lu bm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jv dy9yb3cwdXBkLmMKIDM2NjkgTWFya28gTcOka2Vsw6QJMjAxMC0xMi0yMQogICAgICBCdWcjNTg5 MTIgSW5ub0RCIHVubmVjZXNzYXJpbHkgYXZvaWRzIHVwZGF0ZS1pbi1wbGFjZSBvbiBjb2x1bW4g cHJlZml4IGluZGV4ZXMKICAgICAgCiAgICAgIHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmlu YXJ5KCk6IERvIG5vdCByZXR1cm4gVFJVRSBpZiB0aGUgdXBkYXRlCiAgICAgIHZlY3RvciBjaGFu Z2VzIGEgY29sdW1uIHRoYXQgaXMgY292ZXJlZCBieSBhIHByZWZpeCBpbmRleCwgYnV0IGRvZXMK ICAgICAgbm90IGNoYW5nZSB0aGUgY29sdW1uIHByZWZpeC4gQWRkIHRoZSByb3dfZXh0X3QgcGFy YW1ldGVyIGZvcgogICAgICBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBwcmVmaXhlcyBvZiBleHRl cm5hbGx5IHN0b3JlZCBjb2x1bW5zIG1hdGNoLgogICAgICAKICAgICAgZGZpZWxkX2RhdGFzX2Fy ZV9iaW5hcnlfZXF1YWwoKTogQWRkIHRoZSBwYXJhbWV0ZXIgbGVuLCBmb3IgY29tcGFyaW5nCiAg ICAgIGNvbHVtbiBwcmVmaXhlcyB3aGVuIGxlbiA+IDAuCiAgICAgIAogICAgICBpbm5vZGIudGVz dDogQWRkIGEgdGVzdCBjYXNlIHdoZXJlIHRoZSBwYXRjaCBvZiBCdWcgIzU1Mjg0IGZhaWxlZAog ICAgICB3aXRob3V0IHRoaXMgZml4LgogICAgICAKICAgICAgcmI6NTM3IGFwcHJvdmVkIGJ5IEpp bW15IFlhbmcKCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1 Z2luL3IvaW5ub2RiLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4v dC9pbm5vZGIudGVzdAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vQ2hhbmdlTG9nCiAgICAg IHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9pbmNsdWRlL2RhdGEwZGF0YS5oCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9p bmNsdWRlL2RhdGEwZGF0YS5pYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9y b3cwdXBkLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwcHVyZ2UuYwogICAg ICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMKICAgICAgc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMKIDM2NjggVmFzaWwgRGltb3YJMjAxMC0xMi0xNAogICAg ICBTcGVlZCB1cCBpbm5vZGJfYnVnNTcyNTUudGVzdAogICAgICAKICAgICAgU3VibWl0dGVkIGJ5 OglTdGV3YXJ0IFNtaXRoICh2aWEgaW50ZXJuYWxzQGxpc3RzLm15c3FsLmNvbSkKCiAgICBtb2Rp ZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTcyNTUudGVz dAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGJfYnVnNTcyNTUu dGVzdAo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3Iv aW5ub2RiLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3IvaW5u b2RiLnJlc3VsdAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMjE0MDkzODE5LXdi Mm9mZm1rZ3pjejI3MjUKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3IvaW5u b2RiLnJlc3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTExMjcyMi0x eXh4enpncXRlbThiY203CkBAIC0xLDUgKzEsOCBAQAogZHJvcCB0YWJsZSBpZiBleGlzdHMgdDEs dDIsdDMsdDQ7CiBkcm9wIGRhdGFiYXNlIGlmIGV4aXN0cyBteXNxbHRlc3Q7CitDUkVBVEUgVEFC TEUgYnVnNTg5MTIgKGEgQkxPQiwgYiBURVhULCBQUklNQVJZIEtFWShhKDEpKSkgRU5HSU5FPUlu bm9EQjsKK0lOU0VSVCBJTlRPIGJ1ZzU4OTEyIFZBTFVFUyhSRVBFQVQoJ2EnLDgwMDApLFJFUEVB VCgnYicsODAwMCkpOworVVBEQVRFIGJ1ZzU4OTEyIFNFVCBhPVJFUEVBVCgnYScsNzk5OSk7CiBj cmVhdGUgdGFibGUgdDEgKGlkIGludCB1bnNpZ25lZCBub3QgbnVsbCBhdXRvX2luY3JlbWVudCwg Y29kZSB0aW55aW50IHVuc2lnbmVkIG5vdCBudWxsLCBuYW1lIGNoYXIoMjApIG5vdCBudWxsLCBw cmltYXJ5IGtleSAoaWQpLCBrZXkgKGNvZGUpLCB1bmlxdWUgKG5hbWUpKSBlbmdpbmU9aW5ub2Ri OwogaW5zZXJ0IGludG8gdDEgKGNvZGUsIG5hbWUpIHZhbHVlcyAoMSwgJ1RpbScpLCAoMSwgJ01v bnR5JyksICgyLCAnRGF2aWQnKSwgKDIsICdFcmlrJyksICgzLCAnU2FzaGEnKSwgKDMsICdKZXJl bXknKSwgKDQsICdNYXR0Jyk7CiBzZWxlY3QgaWQsIGNvZGUsIG5hbWUgZnJvbSB0MSBvcmRlciBi eSBpZDsKQEAgLTE2NzYsMTAgKzE2NzksMTAgQEAgdmFyaWFibGVfdmFsdWUgLSBAaW5ub2RiX3Jv d3NfZGVsZXRlZF9vcgogNzEKIFNFTEVDVCB2YXJpYWJsZV92YWx1ZSAtIEBpbm5vZGJfcm93c19p bnNlcnRlZF9vcmlnIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmdsb2JhbF9zdGF0dXMgV0hFUkUg TE9XRVIodmFyaWFibGVfbmFtZSkgPSAnaW5ub2RiX3Jvd3NfaW5zZXJ0ZWQnOwogdmFyaWFibGVf dmFsdWUgLSBAaW5ub2RiX3Jvd3NfaW5zZXJ0ZWRfb3JpZwotMTA2NgorMTA2NwogU0VMRUNUIHZh cmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dzX3VwZGF0ZWRfb3JpZyBGUk9NIGluZm9ybWF0aW9u X3NjaGVtYS5nbG9iYWxfc3RhdHVzIFdIRVJFIExPV0VSKHZhcmlhYmxlX25hbWUpID0gJ2lubm9k Yl9yb3dzX3VwZGF0ZWQnOwogdmFyaWFibGVfdmFsdWUgLSBAaW5ub2RiX3Jvd3NfdXBkYXRlZF9v cmlnCi04NjUKKzg2NgogU0VMRUNUIHZhcmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dfbG9ja193 YWl0c19vcmlnIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmdsb2JhbF9zdGF0dXMgV0hFUkUgTE9X RVIodmFyaWFibGVfbmFtZSkgPSAnaW5ub2RiX3Jvd19sb2NrX3dhaXRzJzsKIHZhcmlhYmxlX3Zh bHVlIC0gQGlubm9kYl9yb3dfbG9ja193YWl0c19vcmlnCiAwCkBAIC0zMjM5LDMgKzMyNDIsNCBA QCBWYXJpYWJsZV9uYW1lCVZhbHVlCiBIYW5kbGVyX3VwZGF0ZQkxCiBWYXJpYWJsZV9uYW1lCVZh bHVlCiBIYW5kbGVyX2RlbGV0ZQkxCitEUk9QIFRBQkxFIGJ1ZzU4OTEyOwoKPT09IG1vZGlmaWVk IGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi90L2lubm9kYi50ZXN0JwotLS0g YS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGIudGVzdAlyZXZpZDp2YXNp bC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMjE0MDkzODE5LXdiMm9mZm1rZ3pjejI3MjUKKysrIGIv bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiLnRlc3QJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMTI3MjItMXl4eHp6Z3F0ZW04YmNtNwpAQCAtNDMs NiArNDMsMTUgQEAgZHJvcCB0YWJsZSBpZiBleGlzdHMgdDEsdDIsdDMsdDQ7CiBkcm9wIGRhdGFi YXNlIGlmIGV4aXN0cyBteXNxbHRlc3Q7CiAtLWVuYWJsZV93YXJuaW5ncwogCisjIEJ1ZyM1ODkx MiBJbm5vREIgdW5uZWNlc3NhcmlseSBhdm9pZHMgdXBkYXRlLWluLXBsYWNlIG9uIGNvbHVtbiBw cmVmaXhlcworQ1JFQVRFIFRBQkxFIGJ1ZzU4OTEyIChhIEJMT0IsIGIgVEVYVCwgUFJJTUFSWSBL RVkoYSgxKSkpIEVOR0lORT1Jbm5vREI7CitJTlNFUlQgSU5UTyBidWc1ODkxMiBWQUxVRVMoUkVQ RUFUKCdhJyw4MDAwKSxSRVBFQVQoJ2InLDgwMDApKTsKK1VQREFURSBidWc1ODkxMiBTRVQgYT1S RVBFQVQoJ2EnLDc5OTkpOworIyBUaGUgYWJvdmUgc3RhdGVtZW50cyB1c2VkIHRvIHRyaWdnZXIg YSBmYWlsdXJlIGR1cmluZyBwdXJnZSB3aGVuCisjIEJ1ZyM1NTI4NCB3YXMgZml4ZWQgd2hpbGUg QnVnIzU4OTEyIHdhcyBub3QuIERlZmVyIHRoZSBEUk9QIFRBQkxFLAorIyBzbyB0aGF0IHB1cmdl IGdldHMgYSBjaGFuY2UgdG8gcnVuIChhbmQgYSBkb3VibGUgZnJlZSBvZiB0aGUKKyMgb2ZmLXBh Z2UgY29sdW1uIGNhbiBiZSBkZXRlY3RlZCwgaWYgb25lIGlzIHRvIG9jY3VyLikKKwogIwogIyBT bWFsbCBiYXNpYyB0ZXN0IHdpdGggaWdub3JlCiAjCkBAIC0yNTQxLDYgKzI1NTAsOSBAQCBTRVQg R0xPQkFMIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgPSBACiAKIC0tIGVuYWJsZV9xdWVyeV9s b2cKIAorIyBDbGVhbiB1cCBhZnRlciB0aGUgQnVnIzU1Mjg0L0J1ZyM1ODkxMiB0ZXN0IGNhc2Uu CitEUk9QIFRBQkxFIGJ1ZzU4OTEyOworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK ICMgUGxlYXNlLCBETyBOT1QgVE9VQ0ggdGhpcyBmaWxlIGFzIHdlbGwgYXMgdGhlIGlubm9kYi5y ZXN1bHQgZmlsZS4gICAjCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L0NoYW5nZUxvZycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwlyZXZpZDp2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMjE0MDkzODE5LXdiMm9mZm1rZ3pjejI3MjUKKysr IGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEwMTIyMTExMjcyMi0xeXh4enpncXRlbThiY203CkBAIC0xLDggKzEsMjQgQEAK KzIwMTAtMTItMjEJVGhlIElubm9EQiBUZWFtCisJKiBpbmNsdWRlL2J0cjBjdXIuaCwgaW5jbHVk ZS9yb3cwdXBkLmgsIGJ0ci9idHIwY3VyLmMsCisJcm93L3JvdzB1bW9kLmMsIHJvdy9yb3cwdXBk LmM6CisJRml4IEJ1ZyM1NTI4NCBEb3VibGUgZnJlZSBvZiBvZmYtcGFnZSBjb2x1bW5zIGR1ZSB0 byBsb2NrIHdhaXQKKwl3aGlsZSB1cGRhdGluZyBQUklNQVJZIEtFWQorCisyMDEwLTEyLTIxCVRo ZSBJbm5vREIgVGVhbQorCisJKiBpbmNsdWRlL2RhdGEwZGF0YS5oLCBpbmNsdWRlL2RhdGEwZGF0 YS5pYywgaW5jbHVkZS9yb3cwdXBkLmgsCisJYnRyL2J0cjBjdXIuYywgcm93L3JvdzBwdXJnZS5j LCByb3cvcm93MHVtb2QuYywgcm93L3JvdzB1cGQuYywKKwlpbm5vZGIucmVzdWx0LCBpbm5vZGIu dGVzdDoKKwlGaXggQnVnIzU4OTEyIElubm9EQiB1bm5lY2Vzc2FyaWx5IGF2b2lkcyB1cGRhdGUt aW4tcGxhY2UKKwlvbiBjb2x1bW4gcHJlZml4IGluZGV4ZXMKKwogMjAxMC0xMi0wOQlUaGUgSW5u b0RCIFRlYW0KKwogCSogYnVmL2J1ZjBscnUuYzoKIAlGaXggQnVnIzU3NjAwIG91dHB1dCBvZiBJ L08gc3VtWyVsdV0gY2FuIGdvIG5lZ2F0aXZlCiAKIDIwMTAtMTEtMTEJVGhlIElubm9EQiBUZWFt CisKIAkqIHRoci90aHIwbG9jLmMsIHRyeC90cngwaV9zLmM6CiAJRml4IEJ1ZyM1NzgwMiBFbXB0 eSBBU1NFUlRJT04gcGFyYW1ldGVyIHBhc3NlZCB0byB0aGUgSEFTSF9TRUFSQ0ggbWFjcm8KIAoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jJwot LS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBjdXIuYwlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTAxMjE0MDkzODE5LXdiMm9mZm1rZ3pjejI3MjUKKysrIGIvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMDEyMjExMTI3MjItMXl4eHp6Z3F0ZW04YmNtNwpAQCAtMTc1Niw3ICsxNzU2LDggQEAg YnRyX2N1cl91cGRhdGVfaW5fcGxhY2UoCiAJCU5PVCBjYWxsIGl0IGlmIGluZGV4IGlzIHNlY29u ZGFyeSAqLwogCiAJCWlmICghZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkKLQkJICAgIHx8IHJv d191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KE5VTEwsIGluZGV4LCB1cGRhdGUpKSB7CisJ CSAgICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBOVUxMLAorCQkJ CQkJCWluZGV4LCB1cGRhdGUpKSB7CiAKIAkJCS8qIFJlbW92ZSBwb3NzaWJsZSBoYXNoIGluZGV4 IHBvaW50ZXIgdG8gdGhpcyByZWNvcmQgKi8KIAkJCWJ0cl9zZWFyY2hfdXBkYXRlX2hhc2hfb25f ZGVsZXRlKGN1cnNvcik7CkBAIC0yNTA4LDI3ICsyNTA5LDI0IEBAIHVsaW50CiBidHJfY3VyX2Rl bF9tYXJrX3NldF9jbHVzdF9yZWMoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJ dWxpbnQJCWZsYWdzLAkvKiE8IGluOiB1bmRvIGxvZ2dpbmcgYW5kIGxvY2tpbmcgZmxhZ3MgKi8K LQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yICovCisJYnVmX2Jsb2NrX3QqCWJs b2NrLAkvKiE8IGluL291dDogYnVmZmVyIGJsb2NrIG9mIHRoZSByZWNvcmQgKi8KKwlyZWNfdCoJ CXJlYywJLyohPCBpbi9vdXQ6IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwg aW46IGNsdXN0ZXJlZCBpbmRleCBvZiB0aGUgcmVjb3JkICovCisJY29uc3QgdWxpbnQqCW9mZnNl dHMsLyohPCBpbjogcmVjX2dldF9vZmZzZXRzKHJlYykgKi8KIAlpYm9vbAkJdmFsLAkvKiE8IGlu OiB2YWx1ZSB0byBzZXQgKi8KIAlxdWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVlcnkgdGhyZWFk ICovCiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLwogewotCWRpY3RfaW5kZXhfdCoJaW5k ZXg7Ci0JYnVmX2Jsb2NrX3QqCWJsb2NrOwogCXJvbGxfcHRyX3QJcm9sbF9wdHI7CiAJdWxpbnQJ CWVycjsKLQlyZWNfdCoJCXJlYzsKIAlwYWdlX3ppcF9kZXNfdCoJcGFnZV96aXA7CiAJdHJ4X3Qq CQl0cng7Ci0JbWVtX2hlYXBfdCoJaGVhcAkJPSBOVUxMOwotCXVsaW50CQlvZmZzZXRzX1tSRUNf T0ZGU19OT1JNQUxfU0laRV07Ci0JdWxpbnQqCQlvZmZzZXRzCQk9IG9mZnNldHNfOwotCXJlY19v ZmZzX2luaXQob2Zmc2V0c18pOwogCi0JcmVjID0gYnRyX2N1cl9nZXRfcmVjKGN1cnNvcik7Ci0J aW5kZXggPSBjdXJzb3ItPmluZGV4OworCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgp KTsKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CiAJdXRf YWQoISFwYWdlX3JlY19pc19jb21wKHJlYykgPT0gZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50 YWJsZSkpOwotCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywg VUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJdXRfYWQoYnVmX2Jsb2NrX2dldF9mcmFtZShibG9j aykgPT0gcGFnZV9hbGlnbihyZWMpKTsKKwl1dF9hZChwYWdlX2lzX2xlYWYocGFnZV9hbGlnbihy ZWMpKSk7CiAKICNpZmRlZiBVTklWX0RFQlVHCiAJaWYgKGJ0cl9jdXJfcHJpbnRfcmVjb3JkX29w cyAmJiB0aHIpIHsKQEAgLTI1NDAsMTMgKzI1MzgsMTIgQEAgYnRyX2N1cl9kZWxfbWFya19zZXRf Y2x1c3RfcmVjKAogCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKIAl1dF9hZCgh cmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCByZWNfb2Zmc19jb21wKG9mZnNldHMpKSk7CiAKLQll cnIgPSBsb2NrX2NsdXN0X3JlY19tb2RpZnlfY2hlY2tfYW5kX2xvY2soZmxhZ3MsCi0JCQkJCQkg ICBidHJfY3VyX2dldF9ibG9jayhjdXJzb3IpLAorCWVyciA9IGxvY2tfY2x1c3RfcmVjX21vZGlm eV9jaGVja19hbmRfbG9jayhmbGFncywgYmxvY2ssCiAJCQkJCQkgICByZWMsIGluZGV4LCBvZmZz ZXRzLCB0aHIpOwogCiAJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CiAKLQkJZ290byBmdW5jX2V4 aXQ7CisJCXJldHVybihlcnIpOwogCX0KIAogCWVyciA9IHRyeF91bmRvX3JlcG9ydF9yb3dfb3Bl cmF0aW9uKGZsYWdzLCBUUlhfVU5ET19NT0RJRllfT1AsIHRociwKQEAgLTI1NTQsMTEgKzI1NTEs OSBAQCBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCiAJCQkJCSAgICAmcm9sbF9wdHIp OwogCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewogCi0JCWdvdG8gZnVuY19leGl0OworCQlyZXR1 cm4oZXJyKTsKIAl9CiAKLQlibG9jayA9IGJ0cl9jdXJfZ2V0X2Jsb2NrKGN1cnNvcik7Ci0KIAlp ZiAoYmxvY2stPmlzX2hhc2hlZCkgewogCQlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRj aCk7CiAJfQpAQCAtMjU4MSwxMCArMjU3Niw2IEBAIGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0 X3JlYygKIAlidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWNfbG9nKGZsYWdzLCByZWMsIGlu ZGV4LCB2YWwsIHRyeCwKIAkJCQkJICAgcm9sbF9wdHIsIG10cik7CiAKLWZ1bmNfZXhpdDoKLQlp ZiAoVU5JVl9MSUtFTFlfTlVMTChoZWFwKSkgewotCQltZW1faGVhcF9mcmVlKGhlYXApOwotCX0K IAlyZXR1cm4oZXJyKTsKIH0KIApAQCAtMzQ3NiwxMDggKzM0NjcsMzYgQEAgYnRyX2N1cl9zZXRf b3duZXJzaGlwX29mX2V4dGVybl9maWVsZCgKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1NYXJrcyBu b3QgdXBkYXRlZCBleHRlcm4gZmllbGRzIGFzIG5vdC1vd25lZCBieSB0aGlzIHJlY29yZC4gVGhl IG93bmVyc2hpcAotaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQgcmVjb3JkIHdoaWNoIGlz IGluc2VydGVkIGVsc2V3aGVyZSBpbiB0aGUKK01hcmtzIG5vbi11cGRhdGVkIG9mZi1wYWdlIGZp ZWxkcyBhcyBkaXNvd25lZCBieSB0aGlzIHJlY29yZC4gVGhlIG93bmVyc2hpcAorbXVzdCBiZSB0 cmFuc2ZlcnJlZCB0byB0aGUgdXBkYXRlZCByZWNvcmQgd2hpY2ggaXMgaW5zZXJ0ZWQgZWxzZXdo ZXJlIGluIHRoZQogaW5kZXggdHJlZS4gSW4gcHVyZ2Ugb25seSB0aGUgb3duZXIgb2YgZXh0ZXJu YWxseSBzdG9yZWQgZmllbGQgaXMgYWxsb3dlZAotdG8gZnJlZSB0aGUgZmllbGQuCi1AcmV0dXJu IFRSVUUgaWYgQkxPQiBvd25lcnNoaXAgd2FzIHRyYW5zZmVycmVkICovCit0byBmcmVlIHRoZSBm aWVsZC4gKi8KIFVOSVZfSU5URVJOCi1pYm9vbAotYnRyX2N1cl9tYXJrX2V4dGVybl9pbmhlcml0 ZWRfZmllbGRzKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwordm9pZAor YnRyX2N1cl9kaXNvd25faW5oZXJpdGVkX2ZpZWxkcygKKy8qPT09PT09PT09PT09PT09PT09PT09 PT09PT09PSovCiAJcGFnZV96aXBfZGVzX3QqCXBhZ2VfemlwLC8qITwgaW4vb3V0OiBjb21wcmVz c2VkIHBhZ2Ugd2hvc2UgdW5jb21wcmVzc2VkCiAJCQkJcGFydCB3aWxsIGJlIHVwZGF0ZWQsIG9y IE5VTEwgKi8KIAlyZWNfdCoJCXJlYywJLyohPCBpbi9vdXQ6IHJlY29yZCBpbiBhIGNsdXN0ZXJl ZCBpbmRleCAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIHRoZSBw YWdlICovCiAJY29uc3QgdWxpbnQqCW9mZnNldHMsLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkg cmVjX2dldF9vZmZzZXRzKCkgKi8KIAljb25zdCB1cGRfdCoJdXBkYXRlLAkvKiE8IGluOiB1cGRh dGUgdmVjdG9yICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciwgb3IgTlVMTCBpZiBub3Qg bG9nZ2VkICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICov CiB7Ci0JdWxpbnQJbjsKLQl1bGludAlqOwogCXVsaW50CWk7Ci0JaWJvb2wJY2hhbmdlX293bmVy c2hpcCA9IEZBTFNFOwogCi0JdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBOVUxMLCBvZmZz ZXRzKSk7CisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwog CXV0X2FkKCFyZWNfb2Zmc19jb21wKG9mZnNldHMpIHx8ICFyZWNfZ2V0X25vZGVfcHRyX2ZsYWco cmVjKSk7CisJdXRfYWQocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSk7CisJdXRfYWQobXRy KTsKIAotCWlmICghcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgewotCi0JCXJldHVybihG QUxTRSk7Ci0JfQotCi0JbiA9IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpOwotCi0JZm9yIChp ID0gMDsgaSA8IG47IGkrKykgewotCQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBp KSkgewotCi0JCQkvKiBDaGVjayBpdCBpcyBub3QgaW4gdXBkYXRlZCBmaWVsZHMgKi8KLQotCQkJ aWYgKHVwZGF0ZSkgewotCQkJCWZvciAoaiA9IDA7IGogPCB1cGRfZ2V0X25fZmllbGRzKHVwZGF0 ZSk7Ci0JCQkJICAgICBqKyspIHsKLQkJCQkJaWYgKHVwZF9nZXRfbnRoX2ZpZWxkKHVwZGF0ZSwg aikKLQkJCQkJICAgIC0+ZmllbGRfbm8gPT0gaSkgewotCi0JCQkJCQlnb3RvIHVwZGF0ZWQ7Ci0J CQkJCX0KLQkJCQl9Ci0JCQl9Ci0KKwlmb3IgKGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMo b2Zmc2V0cyk7IGkrKykgeworCQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKQor CQkgICAgJiYgIXVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8odXBkYXRlLCBpKSkgewogCQkJYnRy X2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9maWVsZCgKIAkJCQlwYWdlX3ppcCwgcmVjLCBp bmRleCwgb2Zmc2V0cywgaSwgRkFMU0UsIG10cik7Ci0KLQkJCWNoYW5nZV9vd25lcnNoaXAgPSBU UlVFOwotdXBkYXRlZDoKLQkJCTsKIAkJfQogCX0KLQotCXJldHVybihjaGFuZ2Vfb3duZXJzaGlw KTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCi1UaGUgY29tcGxlbWVudCBvZiB0aGUgcHJldmlvdXMg ZnVuY3Rpb246IGluIGFuIHVwZGF0ZSBlbnRyeSBtYXkgaW5oZXJpdAotc29tZSBleHRlcm5hbGx5 IHN0b3JlZCBmaWVsZHMgZnJvbSBhIHJlY29yZC4gV2UgbXVzdCBtYXJrIHRoZW0gYXMgaW5oZXJp dGVkCi1pbiBlbnRyeSwgc28gdGhhdCB0aGV5IGFyZSBub3QgZnJlZWQgaW4gYSByb2xsYmFjay4g Ki8KLVVOSVZfSU5URVJOCi12b2lkCi1idHJfY3VyX21hcmtfZHR1cGxlX2luaGVyaXRlZF9leHRl cm4oCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JZHR1cGxlX3QqCWVu dHJ5LAkJLyohPCBpbi9vdXQ6IHVwZGF0ZWQgZW50cnkgdG8gYmUKLQkJCQkJaW5zZXJ0ZWQgdG8g Y2x1c3RlcmVkIGluZGV4ICovCi0JY29uc3QgdXBkX3QqCXVwZGF0ZSkJCS8qITwgaW46IHVwZGF0 ZSB2ZWN0b3IgKi8KLXsKLQl1bGludAkJaTsKLQotCWZvciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0 X25fZmllbGRzKGVudHJ5KTsgaSsrKSB7Ci0KLQkJZGZpZWxkX3QqCWRmaWVsZCA9IGR0dXBsZV9n ZXRfbnRoX2ZpZWxkKGVudHJ5LCBpKTsKLQkJYnl0ZSoJCWRhdGE7Ci0JCXVsaW50CQlsZW47Ci0J CXVsaW50CQlqOwotCi0JCWlmICghZGZpZWxkX2lzX2V4dChkZmllbGQpKSB7Ci0JCQljb250aW51 ZTsKLQkJfQotCi0JCS8qIENoZWNrIGlmIGl0IGlzIGluIHVwZGF0ZWQgZmllbGRzICovCi0KLQkJ Zm9yIChqID0gMDsgaiA8IHVwZF9nZXRfbl9maWVsZHModXBkYXRlKTsgaisrKSB7Ci0JCQlpZiAo dXBkX2dldF9udGhfZmllbGQodXBkYXRlLCBqKS0+ZmllbGRfbm8gPT0gaSkgewotCi0JCQkJZ290 byBpc191cGRhdGVkOwotCQkJfQotCQl9Ci0KLQkJZGF0YSA9IGRmaWVsZF9nZXRfZGF0YShkZmll bGQpOwotCQlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOwotCQlkYXRhW2xlbiAtIEJUUl9F WFRFUk5fRklFTERfUkVGX1NJWkUgKyBCVFJfRVhURVJOX0xFTl0KLQkJCXw9IEJUUl9FWFRFUk5f SU5IRVJJVEVEX0ZMQUc7Ci0KLWlzX3VwZGF0ZWQ6Ci0JCTsKLQl9CiB9CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgpAQCAtMzYxNCwyOSArMzUzMyw2IEBAIGJ0cl9jdXJfdW5tYXJrX2V4dGVybl9maWVsZHMo CiAJCX0KIAl9CiB9Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotTWFya3MgYWxsIGV4dGVybiBmaWVsZHMg aW4gYSBkdHVwbGUgYXMgb3duZWQgYnkgdGhlIHJlY29yZC4gKi8KLVVOSVZfSU5URVJOCi12b2lk Ci1idHJfY3VyX3VubWFya19kdHVwbGVfZXh0ZXJuX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0qLwotCWR0dXBsZV90KgllbnRyeSkJCS8qITwgaW4vb3V0OiBjbHVz dGVyZWQgaW5kZXggZW50cnkgKi8KLXsKLQl1bGludAlpOwotCi0JZm9yIChpID0gMDsgaSA8IGR0 dXBsZV9nZXRfbl9maWVsZHMoZW50cnkpOyBpKyspIHsKLQkJZGZpZWxkX3QqIGRmaWVsZCA9IGR0 dXBsZV9nZXRfbnRoX2ZpZWxkKGVudHJ5LCBpKTsKLQotCQlpZiAoZGZpZWxkX2lzX2V4dChkZmll bGQpKSB7Ci0JCQlieXRlKglkYXRhID0gZGZpZWxkX2dldF9kYXRhKGRmaWVsZCk7Ci0JCQl1bGlu dAlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOwotCi0JCQlkYXRhW2xlbiAtIEJUUl9FWFRF Uk5fRklFTERfUkVGX1NJWkUgKyBCVFJfRVhURVJOX0xFTl0KLQkJCQkmPSB+QlRSX0VYVEVSTl9P V05FUl9GTEFHOwotCQl9Ci0JfQotfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEZsYWdzIHRoZSBkYXRh IHR1cGxlIGZpZWxkcyB0aGF0IGFyZSBtYXJrZWQgYXMgZXh0ZXJuIHN0b3JhZ2UgaW4gdGhlCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1ci5o JwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6dmFz aWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTIxNDA5MzgxOS13YjJvZmZta2d6Y3oyNzI1CisrKyBi L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEwMTIyMTExMjcyMi0xeXh4enpncXRlbThiY203CkBAIC0zMzIsMTAg KzMzMiwxNCBAQCB1bGludAogYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogLyo9PT09 PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFncywJLyohPCBpbjogdW5kbyBs b2dnaW5nIGFuZCBsb2NraW5nIGZsYWdzICovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46 IGN1cnNvciAqLworCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbi9vdXQ6IGJ1ZmZlciBibG9j ayBvZiB0aGUgcmVjb3JkICovCisJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQgKi8K KwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggb2YgdGhlIHJl Y29yZCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhy ZWMpICovCiAJaWJvb2wJCXZhbCwJLyohPCBpbjogdmFsdWUgdG8gc2V0ICovCiAJcXVlX3Rocl90 Kgl0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjog bXRyICovCisJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLworCV9fYXR0cmlidXRlX18oKG5v bm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIFNldHMgYSBzZWNvbmRhcnkgaW5kZXggcmVjb3JkIGRlbGV0ZSBt YXJrIHRvIFRSVUUgb3IgRkFMU0UuCiBAcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwg b3IgZXJyb3IgbnVtYmVyICovCkBAIC00ODEsNDAgKzQ4NSwyMiBAQCBidHJfZXN0aW1hdGVfbnVt YmVyX29mX2RpZmZlcmVudF9rZXlfdmFsCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4KTsJLyohPCBpbjogaW5kZXggKi8KIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgotTWFya3Mgbm90IHVwZGF0ZWQgZXh0ZXJuIGZpZWxkcyBhcyBub3Qtb3du ZWQgYnkgdGhpcyByZWNvcmQuIFRoZSBvd25lcnNoaXAKLWlzIHRyYW5zZmVycmVkIHRvIHRoZSB1 cGRhdGVkIHJlY29yZCB3aGljaCBpcyBpbnNlcnRlZCBlbHNld2hlcmUgaW4gdGhlCitNYXJrcyBu b24tdXBkYXRlZCBvZmYtcGFnZSBmaWVsZHMgYXMgZGlzb3duZWQgYnkgdGhpcyByZWNvcmQuIFRo ZSBvd25lcnNoaXAKK211c3QgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQgcmVjb3JkIHdo aWNoIGlzIGluc2VydGVkIGVsc2V3aGVyZSBpbiB0aGUKIGluZGV4IHRyZWUuIEluIHB1cmdlIG9u bHkgdGhlIG93bmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIGlzIGFsbG93ZWQKLXRvIGZy ZWUgdGhlIGZpZWxkLgotQHJldHVybiBUUlVFIGlmIEJMT0Igb3duZXJzaGlwIHdhcyB0cmFuc2Zl cnJlZCAqLwordG8gZnJlZSB0aGUgZmllbGQuICovCiBVTklWX0lOVEVSTgotaWJvb2wKLWJ0cl9j dXJfbWFya19leHRlcm5faW5oZXJpdGVkX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ki8KK3ZvaWQKK2J0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9maWVsZHMoCisv Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXBhZ2VfemlwX2Rlc190KglwYWdlX3pp cCwvKiE8IGluL291dDogY29tcHJlc3NlZCBwYWdlIHdob3NlIHVuY29tcHJlc3NlZAogCQkJCXBh cnQgd2lsbCBiZSB1cGRhdGVkLCBvciBOVUxMICovCiAJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0 OiByZWNvcmQgaW4gYSBjbHVzdGVyZWQgaW5kZXggKi8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkv KiE8IGluOiBpbmRleCBvZiB0aGUgcGFnZSAqLwogCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwg aW46IGFycmF5IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCiAJY29uc3QgdXBkX3Qq CXVwZGF0ZSwJLyohPCBpbjogdXBkYXRlIHZlY3RvciAqLwotCW10cl90KgkJbXRyKTsJLyohPCBp bjogbXRyLCBvciBOVUxMIGlmIG5vdCBsb2dnZWQgKi8KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGhlIGNv bXBsZW1lbnQgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uOiBpbiBhbiB1cGRhdGUgZW50cnkgbWF5 IGluaGVyaXQKLXNvbWUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGRzIGZyb20gYSByZWNvcmQuIFdl IG11c3QgbWFyayB0aGVtIGFzIGluaGVyaXRlZAotaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUg bm90IGZyZWVkIGluIGEgcm9sbGJhY2suICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl9t YXJrX2R0dXBsZV9pbmhlcml0ZWRfZXh0ZXJuKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLwotCWR0dXBsZV90KgllbnRyeSwJCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5 IHRvIGJlCi0JCQkJCWluc2VydGVkIHRvIGNsdXN0ZXJlZCBpbmRleCAqLwotCWNvbnN0IHVwZF90 Kgl1cGRhdGUpOwkvKiE8IGluOiB1cGRhdGUgdmVjdG9yICovCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLU1h cmtzIGFsbCBleHRlcm4gZmllbGRzIGluIGEgZHR1cGxlIGFzIG93bmVkIGJ5IHRoZSByZWNvcmQu ICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl91bm1hcmtfZHR1cGxlX2V4dGVybl9maWVs ZHMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVwbGVfdCoJZW50 cnkpOwkJLyohPCBpbi9vdXQ6IGNsdXN0ZXJlZCBpbmRleCBlbnRyeSAqLworCW10cl90KgkJbXRy KQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51 bGwoMiwzLDQsNSw2KSkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTdG9yZXMgdGhlIGZpZWxkcyBpbiBi aWdfcmVjX3ZlYyB0byB0aGUgdGFibGVzcGFjZSBhbmQgcHV0cyBwb2ludGVycyB0bwogdGhlbSBp biByZWMuICBUaGUgZXh0ZXJuIGZsYWdzIGluIHJlYyB3aWxsIGhhdmUgdG8gYmUgc2V0IGJlZm9y ZWhhbmQuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUv ZGF0YTBkYXRhLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2RhdGEwZGF0 YS5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDEyMTQwOTM4MTktd2Iyb2ZmbWtn emN6MjcyNQorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9kYXRhMGRhdGEuaAly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTExMjcyMi0xeXh4enpncXRlbThi Y203CkBAIC0xNTQsMTQgKzE1NCwxOSBAQCBkZmllbGRfZHVwKAogCWRmaWVsZF90KglmaWVsZCwJ LyohPCBpbi9vdXQ6IGRhdGEgZmllbGQgKi8KIAltZW1faGVhcF90KgloZWFwKTsJLyohPCBpbjog bWVtb3J5IGhlYXAgd2hlcmUgYWxsb2NhdGVkICovCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGVzdHMg aWYgZGF0YSBsZW5ndGggYW5kIGNvbnRlbnQgaXMgZXF1YWwgZm9yIHR3byBkZmllbGRzLgotQHJl dHVybglUUlVFIGlmIGVxdWFsICovCitUZXN0cyBpZiB0d28gZGF0YSBmaWVsZHMgYXJlIGVxdWFs LgorSWYgbGVuPT0wLCB0ZXN0cyB0aGUgZGF0YSBsZW5ndGggYW5kIGNvbnRlbnQgZm9yIGVxdWFs aXR5LgorSWYgbGVuPjAsIHRlc3RzIHRoZSBmaXJzdCBsZW4gYnl0ZXMgb2YgdGhlIGNvbnRlbnQg Zm9yIGVxdWFsaXR5LgorQHJldHVybglUUlVFIGlmIGJvdGggZmllbGRzIGFyZSBOVUxMIG9yIGlm IHRoZXkgYXJlIGVxdWFsICovCiBVTklWX0lOTElORQogaWJvb2wKIGRmaWVsZF9kYXRhc19hcmVf YmluYXJ5X2VxdWFsKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJY29uc3QgZGZp ZWxkX3QqCWZpZWxkMSwJLyohPCBpbjogZmllbGQgKi8KLQljb25zdCBkZmllbGRfdCoJZmllbGQy KTsvKiE8IGluOiBmaWVsZCAqLworCWNvbnN0IGRmaWVsZF90KglmaWVsZDIsCS8qITwgaW46IGZp ZWxkICovCisJdWxpbnQJCWxlbikJLyohPCBpbjogbWF4aW11bSBwcmVmaXggdG8gY29tcGFyZSwK KwkJCQlvciAwIHRvIGNvbXBhcmUgdGhlIHdob2xlIGZpZWxkIGxlbmd0aCAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IFRlc3RzIGlmIGRmaWVsZCBkYXRhIGxlbmd0aCBhbmQgY29udGVudCBpcyBlcXVhbCB0byB0aGUg Z2l2ZW4uCiBAcmV0dXJuCVRSVUUgaWYgZXF1YWwgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9kYXRhMGRhdGEuaWMnCi0tLSBhL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9pbmNsdWRlL2RhdGEwZGF0YS5pYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUu Y29tLTIwMTAxMjE0MDkzODE5LXdiMm9mZm1rZ3pjejI3MjUKKysrIGIvc3RvcmFnZS9pbm5vZGJf cGx1Z2luL2luY2x1ZGUvZGF0YTBkYXRhLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTAxMjIxMTEyNzIyLTF5eHh6emdxdGVtOGJjbTcKQEAgLTIyOSwyMCArMjI5LDMwIEBAIGRm aWVsZF9kdXAoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1UZXN0cyBpZiBkYXRhIGxlbmd0aCBh bmQgY29udGVudCBpcyBlcXVhbCBmb3IgdHdvIGRmaWVsZHMuCi1AcmV0dXJuCVRSVUUgaWYgZXF1 YWwgKi8KK1Rlc3RzIGlmIHR3byBkYXRhIGZpZWxkcyBhcmUgZXF1YWwuCitJZiBsZW49PTAsIHRl c3RzIHRoZSBkYXRhIGxlbmd0aCBhbmQgY29udGVudCBmb3IgZXF1YWxpdHkuCitJZiBsZW4+MCwg dGVzdHMgdGhlIGZpcnN0IGxlbiBieXRlcyBvZiB0aGUgY29udGVudCBmb3IgZXF1YWxpdHkuCitA cmV0dXJuCVRSVUUgaWYgYm90aCBmaWVsZHMgYXJlIE5VTEwgb3IgaWYgdGhleSBhcmUgZXF1YWwg Ki8KIFVOSVZfSU5MSU5FCiBpYm9vbAogZGZpZWxkX2RhdGFzX2FyZV9iaW5hcnlfZXF1YWwoCiAv Kj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAljb25zdCBkZmllbGRfdCoJZmllbGQxLAkv KiE8IGluOiBmaWVsZCAqLwotCWNvbnN0IGRmaWVsZF90KglmaWVsZDIpCS8qITwgaW46IGZpZWxk ICovCisJY29uc3QgZGZpZWxkX3QqCWZpZWxkMiwJLyohPCBpbjogZmllbGQgKi8KKwl1bGludAkJ bGVuKQkvKiE8IGluOiBtYXhpbXVtIHByZWZpeCB0byBjb21wYXJlLAorCQkJCW9yIDAgdG8gY29t cGFyZSB0aGUgd2hvbGUgZmllbGQgbGVuZ3RoICovCiB7Ci0JdWxpbnQJbGVuOworCXVsaW50CWxl bjIgPSBsZW47CiAKLQlsZW4gPSBmaWVsZDEtPmxlbjsKKwlpZiAoZmllbGQxLT5sZW4gPT0gVU5J Vl9TUUxfTlVMTCB8fCBsZW4gPT0gMCB8fCBmaWVsZDEtPmxlbiA8IGxlbikgeworCQlsZW4gPSBm aWVsZDEtPmxlbjsKKwl9CiAKLQlyZXR1cm4obGVuID09IGZpZWxkMi0+bGVuCisJaWYgKGZpZWxk Mi0+bGVuID09IFVOSVZfU1FMX05VTEwgfHwgbGVuMiA9PSAwIHx8IGZpZWxkMi0+bGVuIDwgbGVu MikgeworCQlsZW4yID0gZmllbGQyLT5sZW47CisJfQorCisJcmV0dXJuKGxlbiA9PSBsZW4yCiAJ ICAgICAgICYmIChsZW4gPT0gVU5JVl9TUUxfTlVMTAogCQkgICB8fCAhbWVtY21wKGZpZWxkMS0+ ZGF0YSwgZmllbGQyLT5kYXRhLCBsZW4pKSk7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MHVwZC5oJwotLS0gYS9zdG9yYWdlL2lubm9kYl9w bHVnaW4vaW5jbHVkZS9yb3cwdXBkLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEw MTIxNDA5MzgxOS13YjJvZmZta2d6Y3oyNzI1CisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9p bmNsdWRlL3JvdzB1cGQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEx MjcyMi0xeXh4enpncXRlbThiY203CkBAIC0yODYsMTAgKzI4NiwxMyBAQCByb3dfdXBkX2NoYW5n ZXNfb3JkX2ZpZWxkX2JpbmFyeSgKIAkJCQlyb3cgYW5kIHRoZSBkYXRhIHZhbHVlcyBpbiB1cGRh dGUgYXJlIG5vdAogCQkJCWtub3duIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGUuZy4s IGF0CiAJCQkJY29tcGlsZSB0aW1lICovCisJY29uc3Qgcm93X2V4dF90KmV4dCwJLyohPCBOVUxM LCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0ZXJuYWxseQorCQkJCXN0b3JlZCBjb2x1bW5zIGluIHRo ZSBvbGQgcm93ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggb2YgdGhl IHJlY29yZCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUpOy8qITwgaW46IHVwZGF0ZSB2ZWN0b3Ig Zm9yIHRoZSByb3c7IE5PVEU6IHRoZQorCWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46IHVw ZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQogCQkJCWZpZWxkIG51bWJlcnMgaW4g dGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBpbmRleAogCQkJCXBvc2l0aW9ucyEgKi8KKwlfX2F0dHJp YnV0ZV9fKChub25udWxsKDMsNCksIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQ2hl Y2tzIGlmIGFuIHVwZGF0ZSB2ZWN0b3IgY2hhbmdlcyBhbiBvcmRlcmluZyBmaWVsZCBvZiBhbiBp bmRleCByZWNvcmQuCiBUaGlzIGZ1bmN0aW9uIGlzIGZhc3QgaWYgdGhlIHVwZGF0ZSB2ZWN0b3Ig aXMgc2hvcnQgb3IgdGhlIG51bWJlciBvZiBvcmRlcmluZwpAQCAtNDYyLDExICs0NjUsMTYgQEAg c3RydWN0IHVwZF9ub2RlX3N0cnVjdHsKICNkZWZpbmUgVVBEX05PREVfSU5TRVJUX0NMVVNURVJF RCAgMwkvKiBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHNob3VsZCBiZQogCQkJCQlpbnNlcnRlZCwg b2xkIHJlY29yZCBpcyBhbHJlYWR5IGRlbGV0ZQogCQkJCQltYXJrZWQgKi8KLSNkZWZpbmUgVVBE X05PREVfVVBEQVRFX0FMTF9TRUMJICAgNAkvKiBhbiBvcmRlcmluZyBmaWVsZCBvZiB0aGUgY2x1 c3RlcmVkCisjZGVmaW5lIFVQRF9OT0RFX0lOU0VSVF9CTE9CCSAgIDQJLyogY2x1c3RlcmVkIGlu ZGV4IHJlY29yZCBzaG91bGQgYmUKKwkJCQkJaW5zZXJ0ZWQsIG9sZCByZWNvcmQgaXMgYWxyZWFk eQorCQkJCQlkZWxldGUtbWFya2VkOyBub24tdXBkYXRlZCBCTE9CcworCQkJCQlzaG91bGQgYmUg aW5oZXJpdGVkIGJ5IHRoZSBuZXcgcmVjb3JkCisJCQkJCWFuZCBkaXNvd25lZCBieSB0aGUgb2xk IHJlY29yZCAqLworI2RlZmluZSBVUERfTk9ERV9VUERBVEVfQUxMX1NFQwkgICA1CS8qIGFuIG9y ZGVyaW5nIGZpZWxkIG9mIHRoZSBjbHVzdGVyZWQKIAkJCQkJaW5kZXggcmVjb3JkIHdhcyBjaGFu Z2VkLCBvciB0aGlzIGlzCiAJCQkJCWEgZGVsZXRlIG9wZXJhdGlvbjogc2hvdWxkIHVwZGF0ZQog CQkJCQlhbGwgdGhlIHNlY29uZGFyeSBpbmRleCByZWNvcmRzICovCi0jZGVmaW5lCVVQRF9OT0RF X1VQREFURV9TT01FX1NFQyAgIDUJLyogc2Vjb25kYXJ5IGluZGV4IGVudHJpZXMgc2hvdWxkIGJl CisjZGVmaW5lIFVQRF9OT0RFX1VQREFURV9TT01FX1NFQyAgIDYJLyogc2Vjb25kYXJ5IGluZGV4 IGVudHJpZXMgc2hvdWxkIGJlCiAJCQkJCWxvb2tlZCBhdCBhbmQgdXBkYXRlZCBpZiBhbiBvcmRl cmluZwogCQkJCQlmaWVsZCBjaGFuZ2VkICovCiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9kYl9wbHVnaW4vcm93L3JvdzBwdXJnZS5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVn aW4vcm93L3JvdzBwdXJnZS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDEyMTQw OTM4MTktd2Iyb2ZmbWtnemN6MjcyNQorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3Jv dzBwdXJnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTEyNzIyLTF5 eHh6emdxdGVtOGJjbTcKQEAgLTQxMyw3ICs0MTMsNyBAQCByb3dfcHVyZ2VfdXBkX2V4aXN0X29y X2V4dGVybigKIAl3aGlsZSAobm9kZS0+aW5kZXggIT0gTlVMTCkgewogCQlpbmRleCA9IG5vZGUt PmluZGV4OwogCi0JCWlmIChyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBu b2RlLT5pbmRleCwKKwkJaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KE5VTEws IE5VTEwsIG5vZGUtPmluZGV4LAogCQkJCQkJICAgICBub2RlLT51cGRhdGUpKSB7CiAJCQkvKiBC dWlsZCB0aGUgb2xkZXIgdmVyc2lvbiBvZiB0aGUgaW5kZXggZW50cnkgKi8KIAkJCWVudHJ5ID0g cm93X2J1aWxkX2luZGV4X2VudHJ5KG5vZGUtPnJvdywgTlVMTCwKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9yb3cvcm93MHVtb2QuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIw MTAxMjE0MDkzODE5LXdiMm9mZm1rZ3pjejI3MjUKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L3Jvdy9yb3cwdW1vZC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTEy NzIyLTF5eHh6emdxdGVtOGJjbTcKQEAgLTY2OCwxOSArNjY4LDE4IEBAIHJvd191bmRvX21vZF91 cGRfZXhpc3Rfc2VjKAogCXdoaWxlIChub2RlLT5pbmRleCAhPSBOVUxMKSB7CiAJCWluZGV4ID0g bm9kZS0+aW5kZXg7CiAKLQkJaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5v ZGUtPnJvdywgbm9kZS0+aW5kZXgsCi0JCQkJCQkgICAgIG5vZGUtPnVwZGF0ZSkpIHsKKwkJaWYg KHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAorCQkJICAgIG5vZGUtPnJvdywgbm9k ZS0+ZXh0LCBub2RlLT5pbmRleCwgbm9kZS0+dXBkYXRlKSkgewogCiAJCQkvKiBCdWlsZCB0aGUg bmV3ZXN0IHZlcnNpb24gb2YgdGhlIGluZGV4IGVudHJ5ICovCiAJCQllbnRyeSA9IHJvd19idWls ZF9pbmRleF9lbnRyeShub2RlLT5yb3csIG5vZGUtPmV4dCwKIAkJCQkJCSAgICAgIGluZGV4LCBo ZWFwKTsKIAkJCWlmIChVTklWX1VOTElLRUxZKCFlbnRyeSkpIHsKIAkJCQkvKiBUaGUgc2VydmVy IG11c3QgaGF2ZSBjcmFzaGVkIGluCi0JCQkJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KCks IGluCi0JCQkJcm93X2luc19pbmRleF9lbnRyeV9sb3coKSBiZWZvcmUKLQkJCQlidHJfc3RvcmVf YmlnX3JlY19leHRlcm5fZmllbGRzKCkKLQkJCQloYXMgd3JpdHRlbiB0aGUgZXh0ZXJuYWxseSBz dG9yZWQgY29sdW1ucwotCQkJCShCTE9Ccykgb2YgdGhlIG5ldyBjbHVzdGVyZWQgaW5kZXggZW50 cnkuICovCisJCQkJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KCkgYmVmb3JlCisJCQkJdGhl IHVwZGF0ZWQgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAoQkxPQnMpCisJCQkJb2YgdGhlIG5l dyBjbHVzdGVyZWQgaW5kZXggZW50cnkgd2VyZQorCQkJCXdyaXR0ZW4uICovCiAKIAkJCQkvKiBU aGUgdGFibGUgbXVzdCBiZSBpbiBEWU5BTUlDIG9yIENPTVBSRVNTRUQKIAkJCQlmb3JtYXQuICBS RURVTkRBTlQgYW5kIENPTVBBQ1QgZm9ybWF0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4v cm93L3JvdzB1cGQuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMjE0MDkzODE5 LXdiMm9mZm1rZ3pjejI3MjUKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdXBk LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMTI3MjItMXl4eHp6Z3F0 ZW04YmNtNwpAQCAtMTE5OCwyMCArMTE5OCwyMSBAQCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxk X2JpbmFyeSgKIAkJCQlyb3cgYW5kIHRoZSBkYXRhIHZhbHVlcyBpbiB1cGRhdGUgYXJlIG5vdAog CQkJCWtub3duIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGUuZy4sIGF0CiAJCQkJY29t cGlsZSB0aW1lICovCisJY29uc3Qgcm93X2V4dF90KmV4dCwJLyohPCBOVUxMLCBvciBwcmVmaXhl cyBvZiB0aGUgZXh0ZXJuYWxseQorCQkJCXN0b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICov CiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwog CWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7 IE5PVEU6IHRoZQogCQkJCWZpZWxkIG51bWJlcnMgaW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBp bmRleAogCQkJCXBvc2l0aW9ucyEgKi8KIHsKLQl1bGludAkJbl91bmlxdWU7Ci0JdWxpbnQJCW5f dXBkX2ZpZWxkczsKLQl1bGludAkJaSwgajsKLQlkaWN0X2luZGV4X3QqCWNsdXN0X2luZGV4Owor CXVsaW50CQkJbl91bmlxdWU7CisJdWxpbnQJCQlpOworCWNvbnN0IGRpY3RfaW5kZXhfdCoJY2x1 c3RfaW5kZXg7CiAKLQl1dF9hZCh1cGRhdGUgJiYgaW5kZXgpOworCXV0X2FkKHVwZGF0ZSk7CisJ dXRfYWQoaW5kZXgpOwogCiAJbl91bmlxdWUgPSBkaWN0X2luZGV4X2dldF9uX3VuaXF1ZShpbmRl eCk7Ci0Jbl91cGRfZmllbGRzID0gdXBkX2dldF9uX2ZpZWxkcyh1cGRhdGUpOwogCiAJY2x1c3Rf aW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleChpbmRleC0+dGFibGUpOwogCkBAIC0x MjE5LDMzICsxMjIwLDcyIEBAIHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAogCiAJ CWNvbnN0IGRpY3RfZmllbGRfdCoJaW5kX2ZpZWxkOwogCQljb25zdCBkaWN0X2NvbF90Kgljb2w7 Ci0JCXVsaW50CQkJY29sX3BvczsKIAkJdWxpbnQJCQljb2xfbm87CisJCWNvbnN0IHVwZF9maWVs ZF90Kgl1cGRfZmllbGQ7CisJCWNvbnN0IGRmaWVsZF90KgkJZGZpZWxkOworCQlkZmllbGRfdAkJ ZGZpZWxkX2V4dDsKKwkJdWxpbnQJCQlkZmllbGRfbGVuOworCQljb25zdCBieXRlKgkJYnVmOwog CiAJCWluZF9maWVsZCA9IGRpY3RfaW5kZXhfZ2V0X250aF9maWVsZChpbmRleCwgaSk7CiAJCWNv bCA9IGRpY3RfZmllbGRfZ2V0X2NvbChpbmRfZmllbGQpOwotCQljb2xfcG9zID0gZGljdF9jb2xf Z2V0X2NsdXN0X3Bvcyhjb2wsIGNsdXN0X2luZGV4KTsKIAkJY29sX25vID0gZGljdF9jb2xfZ2V0 X25vKGNvbCk7CiAKLQkJZm9yIChqID0gMDsgaiA8IG5fdXBkX2ZpZWxkczsgaisrKSB7CisJCXVw ZF9maWVsZCA9IHVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8oCisJCQl1cGRhdGUsIGRpY3RfY29s X2dldF9jbHVzdF9wb3MoY29sLCBjbHVzdF9pbmRleCkpOwogCi0JCQljb25zdCB1cGRfZmllbGRf dCoJdXBkX2ZpZWxkCi0JCQkJPSB1cGRfZ2V0X250aF9maWVsZCh1cGRhdGUsIGopOworCQlpZiAo dXBkX2ZpZWxkID09IE5VTEwpIHsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKHJvdyA9PSBO VUxMKSB7CisJCQl1dF9hZChleHQgPT0gTlVMTCk7CisJCQlyZXR1cm4oVFJVRSk7CisJCX0KIAot CQkJLyogTm90ZSB0aGF0IGlmIHRoZSBpbmRleCBmaWVsZCBpcyBhIGNvbHVtbiBwcmVmaXgKLQkJ CXRoZW4gaXQgbWF5IGJlIHRoYXQgcm93IGRvZXMgbm90IGNvbnRhaW4gYW4gZXh0ZXJuYWxseQot CQkJc3RvcmVkIHBhcnQgb2YgdGhlIGNvbHVtbiB2YWx1ZSwgYW5kIHdlIGNhbm5vdCBjb21wYXJl Ci0JCQl0aGUgZGF0YXMgKi8KKwkJZGZpZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQocm93LCBj b2xfbm8pOwogCi0JCQlpZiAoY29sX3BvcyA9PSB1cGRfZmllbGQtPmZpZWxkX25vCi0JCQkgICAg JiYgKHJvdyA9PSBOVUxMCi0JCQkJfHwgaW5kX2ZpZWxkLT5wcmVmaXhfbGVuID4gMAotCQkJCXx8 ICFkZmllbGRfZGF0YXNfYXJlX2JpbmFyeV9lcXVhbCgKLQkJCQkJZHR1cGxlX2dldF9udGhfZmll bGQocm93LCBjb2xfbm8pLAotCQkJCQkmKHVwZF9maWVsZC0+bmV3X3ZhbCkpKSkgeworCQkvKiBU aGlzIHRyZWF0bWVudCBvZiBjb2x1bW4gcHJlZml4IGluZGV4ZXMgaXMgbG9vc2VseQorCQliYXNl ZCBvbiByb3dfYnVpbGRfaW5kZXhfZW50cnkoKS4gKi8KIAotCQkJCXJldHVybihUUlVFKTsKKwkJ aWYgKFVOSVZfTElLRUxZKGluZF9maWVsZC0+cHJlZml4X2xlbiA9PSAwKQorCQkgICAgfHwgZGZp ZWxkX2lzX251bGwoZGZpZWxkKSkgeworCQkJLyogZG8gbm90aGluZyBzcGVjaWFsICovCisJCX0g ZWxzZSBpZiAoVU5JVl9MSUtFTFlfTlVMTChleHQpKSB7CisJCQkvKiBTZWUgaWYgdGhlIGNvbHVt biBpcyBzdG9yZWQgZXh0ZXJuYWxseS4gKi8KKwkJCWJ1ZiA9IHJvd19leHRfbG9va3VwKGV4dCwg Y29sX25vLCAmZGZpZWxkX2xlbik7CisKKwkJCXV0X2FkKGNvbC0+b3JkX3BhcnQpOworCisJCQlp ZiAoVU5JVl9MSUtFTFlfTlVMTChidWYpKSB7CisJCQkJaWYgKFVOSVZfVU5MSUtFTFkoYnVmID09 IGZpZWxkX3JlZl96ZXJvKSkgeworCQkJCQkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1 dAorCQkJCQl3ZSB0cnkgdG8gZmFpbCBzYWZlIGhlcmUuICovCisJCQkJCXV0X2FkKDApOworCQkJ CQlyZXR1cm4oVFJVRSk7CisJCQkJfQorCisJCQkJZ290byBjb3B5X2RmaWVsZDsKIAkJCX0KKwkJ fSBlbHNlIGlmIChkZmllbGRfaXNfZXh0KGRmaWVsZCkpIHsKKwkJCWRmaWVsZF9sZW4gPSBkZmll bGRfZ2V0X2xlbihkZmllbGQpOworCQkJdXRfYShkZmllbGRfbGVuID4gQlRSX0VYVEVSTl9GSUVM RF9SRUZfU0laRSk7CisJCQlkZmllbGRfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7 CisJCQl1dF9hKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpCisJCQkgICAgIHx8IGluZF9maWVs ZC0+cHJlZml4X2xlbiA8PSBkZmllbGRfbGVuKTsKKwkJCWJ1ZiA9IGRmaWVsZF9nZXRfZGF0YShk ZmllbGQpOworY29weV9kZmllbGQ6CisJCQl1dF9hKGRmaWVsZF9sZW4gPiAwKTsKKwkJCWRmaWVs ZF9jb3B5KCZkZmllbGRfZXh0LCBkZmllbGQpOworCQkJZGZpZWxkX3NldF9kYXRhKCZkZmllbGRf ZXh0LCBidWYsIGRmaWVsZF9sZW4pOworCQkJZGZpZWxkID0gJmRmaWVsZF9leHQ7CisJCX0KKwor CQlpZiAoIWRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAorCQkJICAgIGRmaWVsZCwgJnVw ZF9maWVsZC0+bmV3X3ZhbCwKKwkJCSAgICBpbmRfZmllbGQtPnByZWZpeF9sZW4pKSB7CisKKwkJ CXJldHVybihUUlVFKTsKIAkJfQogCX0KIApAQCAtMTMyOSw3ICsxMzY5LDcgQEAgcm93X3VwZF9j aGFuZ2VzX2ZpcnN0X2ZpZWxkc19iaW5hcnkoCiAJCQlpZiAoY29sX3BvcyA9PSB1cGRfZmllbGQt PmZpZWxkX25vCiAJCQkgICAgJiYgIWRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAogCQkJ CSAgICBkdHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSksCi0JCQkJICAgICYodXBkX2ZpZWxk LT5uZXdfdmFsKSkpIHsKKwkJCQkgICAgJnVwZF9maWVsZC0+bmV3X3ZhbCwgMCkpIHsKIAogCQkJ CXJldHVybihUUlVFKTsKIAkJCX0KQEAgLTE1NjgsMTQgKzE2MDgsOTkgQEAgcm93X3VwZF9zZWNf c3RlcCgKIAl1dF9hZCghZGljdF9pbmRleF9pc19jbHVzdChub2RlLT5pbmRleCkpOwogCiAJaWYg KG5vZGUtPnN0YXRlID09IFVQRF9OT0RFX1VQREFURV9BTExfU0VDCi0JICAgIHx8IHJvd191cGRf Y2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5vZGUtPnJvdywgbm9kZS0+aW5kZXgsCi0JCQkJCQlu b2RlLT51cGRhdGUpKSB7CisJICAgIHx8IHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5 KG5vZGUtPnJvdywgbm9kZS0+ZXh0LAorCQkJCQkJbm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0ZSkp IHsKIAkJcmV0dXJuKHJvd191cGRfc2VjX2luZGV4X2VudHJ5KG5vZGUsIHRocikpOwogCX0KIAog CXJldHVybihEQl9TVUNDRVNTKTsKIH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5lIHJv d191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0KHJlYyxvZmZzZXRzLGVudHJ5LHVwZGF0 ZSkJXAorCXJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0X2Z1bmMocmVjLG9mZnNl dHMsZW50cnksdXBkYXRlKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgcm93X3Vw ZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXQocmVjLG9mZnNldHMsZW50cnksdXBkYXRlKQlc CisJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXRfZnVuYyhlbnRyeSx1cGRhdGUp CisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitNYXJrIG5vbi11cGRh dGVkIG9mZi1wYWdlIGNvbHVtbnMgaW5oZXJpdGVkIHdoZW4gdGhlIHByaW1hcnkga2V5IGlzCit1 cGRhdGVkLiBXZSBtdXN0IG1hcmsgdGhlbSBhcyBpbmhlcml0ZWQgaW4gZW50cnksIHNvIHRoYXQg dGhleSBhcmUgbm90CitmcmVlZCBpbiBhIHJvbGxiYWNrLiBBIGxpbWl0ZWQgdmVyc2lvbiBvZiB0 aGlzIGZ1bmN0aW9uIHVzZWQgdG8gYmUKK2NhbGxlZCBidHJfY3VyX21hcmtfZHR1cGxlX2luaGVy aXRlZF9leHRlcm4oKS4KK0ByZXR1cm4gVFJVRSBpZiBhbnkgY29sdW1ucyB3ZXJlIGluaGVyaXRl ZCAqLworc3RhdGljIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpCitpYm9vbAor cm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXRfZnVuYygKKy8qPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCWNvbnN0IHJl Y190KglyZWMsCS8qITwgaW46IG9sZCByZWNvcmQsIG9yIE5VTEwgKi8KKwljb25zdCB1bGludCoJ b2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjKSwgb3IgTlVMTCAqLworI2VuZGlm IC8qIFVOSVZfREVCVUcgKi8KKwlkdHVwbGVfdCoJZW50cnksCS8qITwgaW4vb3V0OiB1cGRhdGVk IGVudHJ5IHRvIGJlCisJCQkJaW5zZXJ0ZWQgaW50byB0aGUgY2x1c3RlcmVkIGluZGV4ICovCisJ Y29uc3QgdXBkX3QqCXVwZGF0ZSkJLyohPCBpbjogdXBkYXRlIHZlY3RvciAqLworeworCWlib29s CWluaGVyaXQJPSBGQUxTRTsKKwl1bGludAlpOworCisJdXRfYWQoIXJlYyA9PSAhb2Zmc2V0cyk7 CisJdXRfYWQoIXJlYyB8fCByZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKKworCWZvciAo aSA9IDA7IGkgPCBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KTsgaSsrKSB7CisJCWRmaWVsZF90 KglkZmllbGQJPSBkdHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSk7CisJCWJ5dGUqCQlkYXRh OworCQl1bGludAkJbGVuOworCisJCXV0X2FkKCFvZmZzZXRzCisJCSAgICAgIHx8ICFyZWNfb2Zm c19udGhfZXh0ZXJuKG9mZnNldHMsIGkpCisJCSAgICAgID09ICFkZmllbGRfaXNfZXh0KGRmaWVs ZCkKKwkJICAgICAgfHwgdXBkX2dldF9maWVsZF9ieV9maWVsZF9ubyh1cGRhdGUsIGkpKTsKKwkJ aWYgKCFkZmllbGRfaXNfZXh0KGRmaWVsZCkKKwkJICAgIHx8IHVwZF9nZXRfZmllbGRfYnlfZmll bGRfbm8odXBkYXRlLCBpKSkgeworCQkJY29udGludWU7CisJCX0KKworI2lmZGVmIFVOSVZfREVC VUcKKwkJaWYgKFVOSVZfTElLRUxZKHJlYyAhPSBOVUxMKSkgeworCQkJY29uc3QgYnl0ZSogcmVj X2RhdGEKKwkJCQk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJ CQl1dF9hZChsZW4gPT0gZGZpZWxkX2dldF9sZW4oZGZpZWxkKSk7CisJCQl1dF9hZChsZW4gIT0g VU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hZChsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0la RSk7CisKKwkJCXJlY19kYXRhICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisK KwkJCS8qIFRoZSBwb2ludGVyIG11c3Qgbm90IGJlIHplcm8uICovCisJCQl1dF9hZChtZW1jbXAo cmVjX2RhdGEsIGZpZWxkX3JlZl96ZXJvLAorCQkJCSAgICAgQlRSX0VYVEVSTl9GSUVMRF9SRUZf U0laRSkpOworCQkJLyogVGhlIEJMT0IgbXVzdCBiZSBvd25lZC4gKi8KKwkJCXV0X2FkKCEocmVj X2RhdGFbQlRSX0VYVEVSTl9MRU5dCisJCQkJJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwkJ fQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKworCQlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmll bGQpOworCQl1dF9hKGxlbiAhPSBVTklWX1NRTF9OVUxMKTsKKwkJdXRfYShsZW4gPj0gQlRSX0VY VEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCWRhdGEgPSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxkKSAr IGxlbgorCQkJLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOworCQkvKiBUaGUgcG9pbnRlciBt dXN0IG5vdCBiZSB6ZXJvLiAqLworCQl1dF9hKG1lbWNtcChkYXRhLCBmaWVsZF9yZWZfemVybywg QlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkvKiBUaGUgQkxPQiBtdXN0IGJlIG93bmVk LiAqLworCQl1dF9hKCEoZGF0YVtCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX09XTkVSX0ZM QUcpKTsKKworCQlkYXRhW0JUUl9FWFRFUk5fTEVOXSB8PSBCVFJfRVhURVJOX0lOSEVSSVRFRF9G TEFHOworCQkvKiBUaGUgQlRSX0VYVEVSTl9JTkhFUklURURfRkxBRyBvbmx5IG1hdHRlcnMgaW4K KwkJcm9sbGJhY2suIFB1cmdlIHdpbGwgYWx3YXlzIGZyZWUgdGhlIGV4dGVybiBmaWVsZHMgb2YK KwkJYSBkZWxldGUtbWFya2VkIHJvdy4gKi8KKworCQlpbmhlcml0ID0gVFJVRTsKKwl9CisKKwly ZXR1cm4oaW5oZXJpdCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIE1hcmtzIHRoZSBjbHVzdGVyZWQgaW5kZXgg cmVjb3JkIGRlbGV0ZWQgYW5kIGluc2VydHMgdGhlIHVwZGF0ZWQgdmVyc2lvbgogb2YgdGhlIHJl Y29yZCB0byB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgd2hlbiB0aGUg b3JkZXJpbmcKQEAgLTE1OTQsMTQgKzE3MTksMTYgQEAgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5z ZXJ0KAogCQkJCWEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAqLwogCW10cl90KgkJbXRyKQkvKiE8 IGluL291dDogbXRyOyBnZXRzIGNvbW1pdHRlZCBoZXJlICovCiB7Ci0JbWVtX2hlYXBfdCoJaGVh cAk9IE5VTEw7CisJbWVtX2hlYXBfdCoJaGVhcDsKIAlidHJfcGN1cl90KglwY3VyOwogCWJ0cl9j dXJfdCoJYnRyX2N1cjsKIAl0cnhfdCoJCXRyeDsKIAlkaWN0X3RhYmxlX3QqCXRhYmxlOwogCWR0 dXBsZV90KgllbnRyeTsKIAl1bGludAkJZXJyOwotCWlib29sCQljaGFuZ2Vfb3duZXJzaGlwID0g RkFMU0U7CisJaWJvb2wJCWNoYW5nZV9vd25lcnNoaXAJPSBGQUxTRTsKKwlyZWNfdCoJCXJlYzsK Kwl1bGludCoJCW9mZnNldHMJCQk9IE5VTEw7CiAKIAl1dF9hZChub2RlKTsKIAl1dF9hZChkaWN0 X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CkBAIC0xNjExLDc3ICsxNzM4LDExMiBAQCByb3dfdXBk X2NsdXN0X3JlY19ieV9pbnNlcnQoCiAJcGN1ciA9IG5vZGUtPnBjdXI7CiAJYnRyX2N1cgk9IGJ0 cl9wY3VyX2dldF9idHJfY3VyKHBjdXIpOwogCi0JaWYgKG5vZGUtPnN0YXRlICE9IFVQRF9OT0RF X0lOU0VSVF9DTFVTVEVSRUQpIHsKLQkJcmVjX3QqCQlyZWM7Ci0JCWRpY3RfaW5kZXhfdCoJaW5k ZXg7Ci0JCXVsaW50CQlvZmZzZXRzX1tSRUNfT0ZGU19OT1JNQUxfU0laRV07Ci0JCXVsaW50KgkJ b2Zmc2V0czsKLQkJcmVjX29mZnNfaW5pdChvZmZzZXRzXyk7CisJaGVhcCA9IG1lbV9oZWFwX2Ny ZWF0ZSgxMDAwKTsKKworCWVudHJ5ID0gcm93X2J1aWxkX2luZGV4X2VudHJ5KG5vZGUtPnVwZF9y b3csIG5vZGUtPnVwZF9leHQsCisJCQkJICAgICAgaW5kZXgsIGhlYXApOworCXV0X2EoZW50cnkp OworCisJcm93X3VwZF9pbmRleF9lbnRyeV9zeXNfZmllbGQoZW50cnksIGluZGV4LCBEQVRBX1RS WF9JRCwgdHJ4LT5pZCk7CisKKwlzd2l0Y2ggKG5vZGUtPnN0YXRlKSB7CisJZGVmYXVsdDoKKwkJ dXRfZXJyb3I7CisJY2FzZSBVUERfTk9ERV9JTlNFUlRfQkxPQjoKKwkJLyogQSBsb2NrIHdhaXQg b2NjdXJyZWQgaW4gcm93X2luc19pbmRleF9lbnRyeSgpIGluCisJCXRoZSBwcmV2aW91cyBpbnZv Y2F0aW9uIG9mIHRoaXMgZnVuY3Rpb24uIE1hcmsgdGhlCisJCW9mZi1wYWdlIGNvbHVtbnMgaW4g dGhlIGVudHJ5IGluaGVyaXRlZC4gKi8KKworCQljaGFuZ2Vfb3duZXJzaGlwID0gcm93X3VwZF9j bHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXQoCisJCQlOVUxMLCBOVUxMLCBlbnRyeSwgbm9kZS0+ dXBkYXRlKTsKKwkJdXRfYShjaGFuZ2Vfb3duZXJzaGlwKTsKKwkJLyogZmFsbCB0aHJvdWdoICov CisJY2FzZSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEOgorCQkvKiBBIGxvY2sgd2FpdCBvY2N1 cnJlZCBpbiByb3dfaW5zX2luZGV4X2VudHJ5KCkgaW4KKwkJdGhlIHByZXZpb3VzIGludm9jYXRp b24gb2YgdGhpcyBmdW5jdGlvbi4gKi8KKwkJYnJlYWs7CisJY2FzZSBVUERfTk9ERV9VUERBVEVf Q0xVU1RFUkVEOgorCQkvKiBUaGlzIGlzIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHRoZSBmdW5j dGlvbiB3aGVyZQorCQl3ZSB1cGRhdGUgdGhlIHByaW1hcnkga2V5LiAgRGVsZXRlLW1hcmsgdGhl IG9sZCByZWNvcmQKKwkJaW4gdGhlIGNsdXN0ZXJlZCBpbmRleCBhbmQgcHJlcGFyZSB0byBpbnNl cnQgYSBuZXcgZW50cnkuICovCisJCXJlYyA9IGJ0cl9jdXJfZ2V0X3JlYyhidHJfY3VyKTsKKwkJ b2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBOVUxMLAorCQkJCQkgIFVMSU5U X1VOREVGSU5FRCwgJmhlYXApOworCQl1dF9hZChwYWdlX3JlY19pc191c2VyX3JlYyhyZWMpKTsK IAotCQllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoQlRSX05PX0xPQ0tJTkdf RkxBRywKLQkJCQkJCSAgICAgYnRyX2N1ciwgVFJVRSwgdGhyLCBtdHIpOworCQllcnIgPSBidHJf Y3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCisJCQlCVFJfTk9fTE9DS0lOR19GTEFHLCBidHJf Y3VyX2dldF9ibG9jayhidHJfY3VyKSwKKwkJCXJlYywgaW5kZXgsIG9mZnNldHMsIFRSVUUsIHRo ciwgbXRyKTsKIAkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CitlcnJfZXhpdDoKIAkJCW10cl9j b21taXQobXRyKTsKKwkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJCQlyZXR1cm4oZXJyKTsKIAkJ fQogCi0JCS8qIE1hcmsgYXMgbm90LW93bmVkIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBmaWVsZHMg d2hpY2ggdGhlIG5ldwotCQlyb3cgaW5oZXJpdHMgZnJvbSB0aGUgZGVsZXRlIG1hcmtlZCByZWNv cmQ6IHB1cmdlIHNob3VsZCBub3QKLQkJZnJlZSB0aG9zZSBleHRlcm5hbGx5IHN0b3JlZCBmaWVs ZHMgZXZlbiBpZiB0aGUgZGVsZXRlIG1hcmtlZAotCQlyZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRo ZSBpbmRleCB0cmVlLCBvciB1cGRhdGVkLiAqLworCQkvKiBJZiB0aGUgdGhlIG5ldyByb3cgaW5o ZXJpdHMgZXh0ZXJuYWxseSBzdG9yZWQKKwkJZmllbGRzIChvZmYtcGFnZSBjb2x1bW5zIGEuay5h LiBCTE9CcykgZnJvbSB0aGUKKwkJZGVsZXRlLW1hcmtlZCBvbGQgcmVjb3JkLCBtYXJrIHRoZW0g ZGlzb3duZWQgYnkgdGhlCisJCW9sZCByZWNvcmQgYW5kIG93bmVkIGJ5IHRoZSBuZXcgZW50cnku ICovCisKKwkJaWYgKHJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykpIHsKKwkJCWNoYW5nZV9v d25lcnNoaXAgPSByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRfaW5oZXJpdCgKKwkJCQlyZWMs IG9mZnNldHMsIGVudHJ5LCBub2RlLT51cGRhdGUpOworCisJCQlpZiAoY2hhbmdlX293bmVyc2hp cCkgeworCQkJCWJ0cl9wY3VyX3N0b3JlX3Bvc2l0aW9uKHBjdXIsIG10cik7CisJCQl9CisJCX0K IAotCQlyZWMgPSBidHJfY3VyX2dldF9yZWMoYnRyX2N1cik7Ci0JCWluZGV4ID0gZGljdF90YWJs ZV9nZXRfZmlyc3RfaW5kZXgodGFibGUpOwotCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJl YywgaW5kZXgsIG9mZnNldHNfLAotCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOwotCQlj aGFuZ2Vfb3duZXJzaGlwID0gYnRyX2N1cl9tYXJrX2V4dGVybl9pbmhlcml0ZWRfZmllbGRzKAot CQkJYnRyX2N1cl9nZXRfcGFnZV96aXAoYnRyX2N1ciksIHJlYywgaW5kZXgsIG9mZnNldHMsCi0J CQlub2RlLT51cGRhdGUsIG10cik7CiAJCWlmIChjaGVja19yZWYpIHsKIAkJCS8qIE5PVEUgdGhh dCB0aGUgZm9sbG93aW5nIGNhbGwgbG9zZXMKIAkJCXRoZSBwb3NpdGlvbiBvZiBwY3VyICEgKi8K IAkJCWVyciA9IHJvd191cGRfY2hlY2tfcmVmZXJlbmNlc19jb25zdHJhaW50cygKIAkJCQlub2Rl LCBwY3VyLCB0YWJsZSwgaW5kZXgsIG9mZnNldHMsIHRociwgbXRyKTsKIAkJCWlmIChlcnIgIT0g REJfU1VDQ0VTUykgewotCQkJCW10cl9jb21taXQobXRyKTsKLQkJCQlpZiAoVU5JVl9MSUtFTFlf TlVMTChoZWFwKSkgewotCQkJCQltZW1faGVhcF9mcmVlKGhlYXApOwotCQkJCX0KLQkJCQlyZXR1 cm4oZXJyKTsKKwkJCQlnb3RvIGVycl9leGl0OwogCQkJfQogCQl9CiAJfQogCiAJbXRyX2NvbW1p dChtdHIpOwogCi0JaWYgKCFoZWFwKSB7Ci0JCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoNTAwKTsK LQl9Ci0Jbm9kZS0+c3RhdGUgPSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEOwotCi0JZW50cnkg PSByb3dfYnVpbGRfaW5kZXhfZW50cnkobm9kZS0+dXBkX3Jvdywgbm9kZS0+dXBkX2V4dCwKLQkJ CQkgICAgICBpbmRleCwgaGVhcCk7Ci0JdXRfYShlbnRyeSk7CisJZXJyID0gcm93X2luc19pbmRl eF9lbnRyeShpbmRleCwgZW50cnksCisJCQkJICBub2RlLT51cGRfZXh0ID8gbm9kZS0+dXBkX2V4 dC0+bl9leHQgOiAwLAorCQkJCSAgVFJVRSwgdGhyKTsKKwlub2RlLT5zdGF0ZSA9IGNoYW5nZV9v d25lcnNoaXAKKwkJPyBVUERfTk9ERV9JTlNFUlRfQkxPQgorCQk6IFVQRF9OT0RFX0lOU0VSVF9D TFVTVEVSRUQ7CisKKwlpZiAoZXJyID09IERCX1NVQ0NFU1MgJiYgY2hhbmdlX293bmVyc2hpcCkg eworCQkvKiBNYXJrIHRoZSBub24tdXBkYXRlZCBmaWVsZHMgZGlzb3duZWQgYnkgdGhlIG9sZCBy ZWNvcmQuICovCisKKwkJLyogTk9URTogdGhpcyB0cmFuc2FjdGlvbiBoYXMgYW4geC1sb2NrIG9u IHRoZSByZWNvcmQKKwkJYW5kIHRoZXJlZm9yZSBvdGhlciB0cmFuc2FjdGlvbnMgY2Fubm90IG1v ZGlmeSB0aGUKKwkJcmVjb3JkIHdoZW4gd2UgaGF2ZSBubyBsYXRjaCBvbiB0aGUgcGFnZS4gSW4g YWRkaXRpb24sCisJCXdlIGFzc3VtZSB0aGF0IG90aGVyIHF1ZXJ5IHRocmVhZHMgb2YgdGhlIHNh bWUKKwkJdHJhbnNhY3Rpb24gZG8gbm90IG1vZGlmeSB0aGUgcmVjb3JkIGluIHRoZSBtZWFudGlt ZS4KKwkJVGhlcmVmb3JlIHdlIGNhbiBhc3NlcnQgdGhhdCB0aGUgcmVzdG9yYXRpb24gb2YgdGhl CisJCWN1cnNvciBzdWNjZWVkcy4gKi8KIAotCXJvd191cGRfaW5kZXhfZW50cnlfc3lzX2ZpZWxk KGVudHJ5LCBpbmRleCwgREFUQV9UUlhfSUQsIHRyeC0+aWQpOworCQltdHJfc3RhcnQobXRyKTsK IAotCWlmIChjaGFuZ2Vfb3duZXJzaGlwKSB7Ci0JCS8qIElmIHdlIHJldHVybiBmcm9tIGEgbG9j ayB3YWl0LCBmb3IgZXhhbXBsZSwgd2UgbWF5IGhhdmUKLQkJZXh0ZXJuIGZpZWxkcyBtYXJrZWQg YXMgbm90LW93bmVkIGluIGVudHJ5IChtYXJrZWQgaW4gdGhlCi0JCWlmLWJyYW5jaCBhYm92ZSku IFdlIG11c3QgdW5tYXJrIHRoZW0sIHRha2UgdGhlIG93bmVyc2hpcAotCQliYWNrLiAqLworCQlp ZiAoIWJ0cl9wY3VyX3Jlc3RvcmVfcG9zaXRpb24oQlRSX01PRElGWV9MRUFGLCBwY3VyLCBtdHIp KSB7CisJCQl1dF9lcnJvcjsKKwkJfQogCi0JCWJ0cl9jdXJfdW5tYXJrX2R0dXBsZV9leHRlcm5f ZmllbGRzKGVudHJ5KTsKKwkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOworCQlvZmZz ZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsCisJCQkJCSAgVUxJTlRf VU5ERUZJTkVELCAmaGVhcCk7CisJCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykpOwog Ci0JCS8qIFdlIG11c3QgbWFyayBub24tdXBkYXRlZCBleHRlcm4gZmllbGRzIGluIGVudHJ5IGFz Ci0JCWluaGVyaXRlZCwgc28gdGhhdCBhIHBvc3NpYmxlIHJvbGxiYWNrIHdpbGwgbm90IGZyZWUg dGhlbS4gKi8KKwkJYnRyX2N1cl9kaXNvd25faW5oZXJpdGVkX2ZpZWxkcygKKwkJCWJ0cl9jdXJf Z2V0X3BhZ2VfemlwKGJ0cl9jdXIpLAorCQkJcmVjLCBpbmRleCwgb2Zmc2V0cywgbm9kZS0+dXBk YXRlLCBtdHIpOwogCi0JCWJ0cl9jdXJfbWFya19kdHVwbGVfaW5oZXJpdGVkX2V4dGVybihlbnRy eSwgbm9kZS0+dXBkYXRlKTsKKwkJbXRyX2NvbW1pdChtdHIpOwogCX0KIAotCWVyciA9IHJvd19p bnNfaW5kZXhfZW50cnkoaW5kZXgsIGVudHJ5LAotCQkJCSAgbm9kZS0+dXBkX2V4dCA/IG5vZGUt PnVwZF9leHQtPm5fZXh0IDogMCwKLQkJCQkgIFRSVUUsIHRocik7CiAJbWVtX2hlYXBfZnJlZSho ZWFwKTsKIAogCXJldHVybihlcnIpOwpAQCAtMTgyNSw4ICsxOTg3LDkgQEAgcm93X3VwZF9kZWxf bWFya19jbHVzdF9yZWMoCiAJLyogTWFyayB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCBkZWxl dGVkOyB3ZSBkbyBub3QgaGF2ZSB0byBjaGVjawogCWxvY2tzLCBiZWNhdXNlIHdlIGFzc3VtZSB0 aGF0IHdlIGhhdmUgYW4geC1sb2NrIG9uIHRoZSByZWNvcmQgKi8KIAotCWVyciA9IGJ0cl9jdXJf ZGVsX21hcmtfc2V0X2NsdXN0X3JlYyhCVFJfTk9fTE9DS0lOR19GTEFHLAotCQkJCQkgICAgIGJ0 cl9jdXIsIFRSVUUsIHRociwgbXRyKTsKKwllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVz dF9yZWMoCisJCUJUUl9OT19MT0NLSU5HX0ZMQUcsIGJ0cl9jdXJfZ2V0X2Jsb2NrKGJ0cl9jdXIp LAorCQlidHJfY3VyX2dldF9yZWMoYnRyX2N1ciksIGluZGV4LCBvZmZzZXRzLCBUUlVFLCB0aHIs IG10cik7CiAJaWYgKGVyciA9PSBEQl9TVUNDRVNTICYmIGNoZWNrX3JlZikgewogCQkvKiBOT1RF IHRoYXQgdGhlIGZvbGxvd2luZyBjYWxsIGxvc2VzIHRoZSBwb3NpdGlvbiBvZiBwY3VyICEgKi8K IApAQCAtMTk3Myw3ICsyMTM2LDggQEAgZXhpdF9mdW5jOgogCiAJcm93X3VwZF9zdG9yZV9yb3co bm9kZSk7CiAKLQlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+cm93 LCBpbmRleCwgbm9kZS0+dXBkYXRlKSkgeworCWlmIChyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxk X2JpbmFyeShub2RlLT5yb3csIG5vZGUtPmV4dCwgaW5kZXgsCisJCQkJCSAgICAgbm9kZS0+dXBk YXRlKSkgewogCiAJCS8qIFVwZGF0ZSBjYXVzZXMgYW4gb3JkZXJpbmcgZmllbGQgKG9yZGVyaW5n IGZpZWxkcyB3aXRoaW4KIAkJdGhlIEItdHJlZSkgb2YgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNv cmQgdG8gY2hhbmdlOiBwZXJmb3JtCkBAIC0yMDQyLDcgKzIyMDYsOCBAQCByb3dfdXBkKAogCX0K IAogCWlmIChub2RlLT5zdGF0ZSA9PSBVUERfTk9ERV9VUERBVEVfQ0xVU1RFUkVECi0JICAgIHx8 IG5vZGUtPnN0YXRlID09IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQpIHsKKwkgICAgfHwgbm9k ZS0+c3RhdGUgPT0gVVBEX05PREVfSU5TRVJUX0NMVVNURVJFRAorCSAgICB8fCBub2RlLT5zdGF0 ZSA9PSBVUERfTk9ERV9JTlNFUlRfQkxPQikgewogCiAJCWxvZ19mcmVlX2NoZWNrKCk7CiAJCWVy ciA9IHJvd191cGRfY2x1c3Rfc3RlcChub2RlLCB0aHIpOwoK --===============0764393379== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # testament_sha1: 486af86f867406f378ca9d48ec1d8102c8b64f17 # timestamp: 2010-12-21 14:55:56 +0200 # base_revision_id: vasil.dimov@stripped\ # wb2offmkgzcz2725 # # Begin bundle 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 L//V5A== --===============0764393379==--