From: marko.makela Date: December 21 2010 11:27am Subject: bzr commit into mysql-5.1-innodb branch (marko.makela:3670) Bug#55284 List-Archive: http://lists.mysql.com/commits/127392 X-Bug: 55284 Message-Id: <201012211127.oBLAgkV2029684@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1226281621==" --===============1226281621== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjEtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTA5MzkxOS1tY21t Z2Q0enBzZTk1NjdkCgogMzY3MCBNYXJrbyBNw6RrZWzDpAkyMDEwLTEyLTIxCiAgICAgIEJ1ZyAj NTUyODQgRG91YmxlIEJMT0IgZnJlZSBkdWUgdG8gbG9jayB3YWl0IHdoaWxlIHVwZGF0aW5nIFBS SU1BUlkgS0VZCiAgICAgIAogICAgICBUaGlzIGJ1ZyBmaXggcmVxdWlyZXMgdGhhdCBCdWcgIzU4 OTEyIGJlIGZpeGVkIGFzIHdlbGwgKGJ6ciByZXZpc2lvbiBpZAogICAgICBtYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEwMTIyMTA5MzkxOS1tY21tZ2Q0enBzZTk1NjdkKS4gT3RoZXJ3aXNlLAog ICAgICBhbm90aGVyIGRvdWJsZSBCTE9CIGZyZWUgY291bGQgb2NjdXIgd2hlbiBJbm5vREIgd291 bGQgdHJ5IHRvIHBlcmZvcm0KICAgICAgYW4gdXBkYXRlLWluLXBsYWNlIGFzIGRlbGV0ZS1hbmQt aW5zZXJ0LWJ5LXVwZGF0ZS1pbi1wbGFjZS4KICAgICAgCiAgICAgIHJvd191cGRfY2x1c3RfcmVj X2J5X2luc2VydCgpOiBEbyBub3QgZGlzb3duIHRoZSBleHRlcm5hbGx5IHN0b3JlZAogICAgICBj b2x1bW5zIGZyb20gdGhlIG9sZCByZWNvcmQgKGJ0cl9jdXJfbWFya19leHRlcm5faW5oZXJpdGVk X2ZpZWxkcygpKQogICAgICB1bnRpbCBhZnRlciBjaGVja2luZyB0aGUgZm9yZWlnbiBrZXkgY29u c3RyYWludHMgYW5kIHN1Y2Nlc3NmdWxseQogICAgICBpbnNlcnRpbmcgdGhlIHVwZGF0ZWQgcmVj b3JkLiBJZiBhIGxvY2sgd2FpdCB0aW1lb3V0IG9jY3VycyBiZXR3ZWVuCiAgICAgIHRoZSBkZWxl dGUtbWFya2luZyBvZiB0aGUgb2xkIHJlY29yZCBhbmQgdGhlIGluc2VydGlvbiBvZiB0aGUgdXBk YXRlZAogICAgICByZWNvcmQsIG1hcmsgdGhlIGNvbHVtbnMgaW5oZXJpdGVkIGJlZm9yZSByZXRy eWluZyB0aGUgaW5zZXJ0LgogICAgICBEaXN0aW5ndWlzaCB0aGUgc3RhdGUgVVBEX05PREVfSU5T RVJUX0JMT0IgZnJvbQogICAgICBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVELgogICAgICAKICAg ICAgYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKCk6IFJlcGxhY2UgdGhlIGN1cnNvciB3 aXRoCiAgICAgIGJsb2NrLHJlYyxpbmRleCxvZmZzZXRzIHNvIHRoYXQgdGhlIG9mZnNldHMgbmVl ZCBub3QgYmUgcmVjYWxjdWxhdGVkLgogICAgICBBc3NlcnQgdGhhdCByZWMgaXMgb24gYSBjbHVz dGVyZWQgaW5kZXggbGVhZiBwYWdlLgogICAgICAKICAgICAgYnRyX2N1cl9kaXNvd25faW5oZXJp dGVkX2ZpZWxkcygpOiBSZW5hbWVkIGZyb20KICAgICAgYnRyX2N1cl9tYXJrX2V4dGVybl9pbmhl cml0ZWRfZmllbGRzKCkuIFVzZQogICAgICB1cGRfZ2V0X2ZpZWxkX2J5X2ZpZWxkX25vKCkuIEFz c2VydCB0aGF0IHRoZXJlIGFyZSBleHRlcm5hbGx5IHN0b3JlZAogICAgICBjb2x1bW5zLiBBc3Nl cnQgdGhhdCBhIG1pbmktdHJhbnNhY3Rpb24gaXMgcGFzc2VkLiBSZW1vdmUgdGhlIHJldHVybgog ICAgICBzdGF0dXMuIChUaGUgb25seSBjYWxsZXIsIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2Vy dCgpLCB3aWxsIGhhdmUKICAgICAgZGV0ZXJtaW5lZCB0aGF0IHNvbWUgZmllbGRzIGhhdmUgY2hh bmdlZCBvd25lcnNoaXAuKQogICAgICAKICAgICAgYnRyX2N1cl9tYXJrX2R0dXBsZV9pbmhlcml0 ZWRfZXh0ZXJuKCk6IFJlbmFtZSB0bwogICAgICByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRf aW5oZXJpdF9mdW5jKCkgYW5kIGRlY2xhcmUgYXMgc3RhdGljLiBBZGQKICAgICAgdGhlIGRlYnVn IHBhcmFtZXRlcnMgcmVjLCBvZmZzZXRzLiBXaGVuIHJlYyBpcyBnaXZlbiwgYXNzZXJ0IHRoYXQg dGhlCiAgICAgIG9mZi1wYWdlIGNvbHVtbnMgbWF0Y2ggdGhvc2UgaW4gdGhlIGluZXNydCB0dXBs ZSBhbmQgdGhhdCB0aGUgb2ZmLXBhZ2UKICAgICAgY29sdW1ucyBhcmUgb3duZWQgYnkgdGhlIHJl Y29yZC4gQXNzZXJ0IHRoYXQgdGhlIG5vbi11cGRhdGVkIG9mZi1wYWdlCiAgICAgIGNvbHVtbnMg aW4gdGhlIGluc2VydCB0dXBsZSBhcmUgb3duZWQsIGFuZCBtYXJrIHRoZW0gaW5oZXJpdGVkLgog ICAgICAKICAgICAgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXQoKTogQSB3cmFw cGVyIG1hY3JvIGZvcgogICAgICByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRfaW5oZXJpdF9m dW5jKCkuCiAgICAgIAogICAgICByb3dfdW5kb19tb2RfdXBkX2V4aXN0X3NlYygpOiBBZGp1c3Qg YSBjb21tZW50IGFib3V0CiAgICAgIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydCgpLgogICAg ICAKICAgICAgcmI6NTA4IGFwcHJvdmVkIGJ5IEppbW15IFlhbmcKCiAgICBtb2RpZmllZDoKICAg ICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwogICAgICBzdG9yYWdlL2lubm9kYl9w bHVnaW4vYnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9i dHIwY3VyLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MHVwZC5oCiAg ICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHVtb2QuYwogICAgICBzdG9yYWdlL2lu bm9kYl9wbHVnaW4vcm93L3JvdzB1cGQuYwo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL0NoYW5nZUxvZycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxv ZwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTA5MzkxOS1tY21tZ2Q0enBz ZTk1NjdkCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFuZ2VMb2cJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMTI3MjItMXl4eHp6Z3F0ZW04YmNtNwpAQCAtMSw0 ICsxLDEwIEBACiAyMDEwLTEyLTIxCVRoZSBJbm5vREIgVGVhbQorCSogaW5jbHVkZS9idHIwY3Vy LmgsIGluY2x1ZGUvcm93MHVwZC5oLCBidHIvYnRyMGN1ci5jLAorCXJvdy9yb3cwdW1vZC5jLCBy b3cvcm93MHVwZC5jOgorCUZpeCBCdWcjNTUyODQgRG91YmxlIGZyZWUgb2Ygb2ZmLXBhZ2UgY29s dW1ucyBkdWUgdG8gbG9jayB3YWl0CisJd2hpbGUgdXBkYXRpbmcgUFJJTUFSWSBLRVkKKworMjAx MC0xMi0yMQlUaGUgSW5ub0RCIFRlYW0KIAogCSogaW5jbHVkZS9kYXRhMGRhdGEuaCwgaW5jbHVk ZS9kYXRhMGRhdGEuaWMsIGluY2x1ZGUvcm93MHVwZC5oLAogCWJ0ci9idHIwY3VyLmMsIHJvdy9y b3cwcHVyZ2UuYywgcm93L3JvdzB1bW9kLmMsIHJvdy9yb3cwdXBkLmMsCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTAxMjIxMDkzOTE5LW1jbW1nZDR6cHNlOTU2N2QKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjEx MTI3MjItMXl4eHp6Z3F0ZW04YmNtNwpAQCAtMjUwOSwyNyArMjUwOSwyNCBAQCB1bGludAogYnRy X2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT0qLwogCXVsaW50CQlmbGFncywJLyohPCBpbjogdW5kbyBsb2dnaW5nIGFuZCBsb2NraW5nIGZs YWdzICovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciAqLworCWJ1Zl9ibG9j a190KglibG9jaywJLyohPCBpbi9vdXQ6IGJ1ZmZlciBibG9jayBvZiB0aGUgcmVjb3JkICovCisJ cmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4 LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggb2YgdGhlIHJlY29yZCAqLworCWNvbnN0IHVsaW50 KglvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMpICovCiAJaWJvb2wJCXZhbCwJ LyohPCBpbjogdmFsdWUgdG8gc2V0ICovCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5 IHRocmVhZCAqLwogCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KIHsKLQlkaWN0X2luZGV4 X3QqCWluZGV4OwotCWJ1Zl9ibG9ja190KglibG9jazsKIAlyb2xsX3B0cl90CXJvbGxfcHRyOwog CXVsaW50CQllcnI7Ci0JcmVjX3QqCQlyZWM7CiAJcGFnZV96aXBfZGVzX3QqCXBhZ2VfemlwOwog CXRyeF90KgkJdHJ4OwotCW1lbV9oZWFwX3QqCWhlYXAJCT0gTlVMTDsKLQl1bGludAkJb2Zmc2V0 c19bUkVDX09GRlNfTk9STUFMX1NJWkVdOwotCXVsaW50KgkJb2Zmc2V0cwkJPSBvZmZzZXRzXzsK LQlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKIAotCXJlYyA9IGJ0cl9jdXJfZ2V0X3JlYyhjdXJz b3IpOwotCWluZGV4ID0gY3Vyc29yLT5pbmRleDsKKwl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0 KGluZGV4KSk7CisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykp OwogCXV0X2FkKCEhcGFnZV9yZWNfaXNfY29tcChyZWMpID09IGRpY3RfdGFibGVfaXNfY29tcChp bmRleC0+dGFibGUpKTsKLQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9m ZnNldHMsIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCXV0X2FkKGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spID09IHBhZ2VfYWxpZ24ocmVjKSk7CisJdXRfYWQocGFnZV9pc19sZWFmKHBhZ2Vf YWxpZ24ocmVjKSkpOwogCiAjaWZkZWYgVU5JVl9ERUJVRwogCWlmIChidHJfY3VyX3ByaW50X3Jl Y29yZF9vcHMgJiYgdGhyKSB7CkBAIC0yNTQxLDEzICsyNTM4LDEyIEBAIGJ0cl9jdXJfZGVsX21h cmtfc2V0X2NsdXN0X3JlYygKIAl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CiAJ dXRfYWQoIXJlY19nZXRfZGVsZXRlZF9mbGFnKHJlYywgcmVjX29mZnNfY29tcChvZmZzZXRzKSkp OwogCi0JZXJyID0gbG9ja19jbHVzdF9yZWNfbW9kaWZ5X2NoZWNrX2FuZF9sb2NrKGZsYWdzLAot CQkJCQkJICAgYnRyX2N1cl9nZXRfYmxvY2soY3Vyc29yKSwKKwllcnIgPSBsb2NrX2NsdXN0X3Jl Y19tb2RpZnlfY2hlY2tfYW5kX2xvY2soZmxhZ3MsIGJsb2NrLAogCQkJCQkJICAgcmVjLCBpbmRl eCwgb2Zmc2V0cywgdGhyKTsKIAogCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewogCi0JCWdvdG8g ZnVuY19leGl0OworCQlyZXR1cm4oZXJyKTsKIAl9CiAKIAllcnIgPSB0cnhfdW5kb19yZXBvcnRf cm93X29wZXJhdGlvbihmbGFncywgVFJYX1VORE9fTU9ESUZZX09QLCB0aHIsCkBAIC0yNTU1LDEx ICsyNTUxLDkgQEAgYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogCQkJCQkgICAgJnJv bGxfcHRyKTsKIAlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKIAotCQlnb3RvIGZ1bmNfZXhpdDsK KwkJcmV0dXJuKGVycik7CiAJfQogCi0JYmxvY2sgPSBidHJfY3VyX2dldF9ibG9jayhjdXJzb3Ip OwotCiAJaWYgKGJsb2NrLT5pc19oYXNoZWQpIHsKIAkJcndfbG9ja194X2xvY2soJmJ0cl9zZWFy Y2hfbGF0Y2gpOwogCX0KQEAgLTI1ODIsMTAgKzI1NzYsNiBAQCBidHJfY3VyX2RlbF9tYXJrX3Nl dF9jbHVzdF9yZWMoCiAJYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjX2xvZyhmbGFncywg cmVjLCBpbmRleCwgdmFsLCB0cngsCiAJCQkJCSAgIHJvbGxfcHRyLCBtdHIpOwogCi1mdW5jX2V4 aXQ6Ci0JaWYgKFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKLQkJbWVtX2hlYXBfZnJlZShoZWFw KTsKLQl9CiAJcmV0dXJuKGVycik7CiB9CiAKQEAgLTM0NzcsMTA3ICszNDY3LDM1IEBAIGJ0cl9j dXJfc2V0X293bmVyc2hpcF9vZl9leHRlcm5fZmllbGQoCiB9CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgot TWFya3Mgbm90IHVwZGF0ZWQgZXh0ZXJuIGZpZWxkcyBhcyBub3Qtb3duZWQgYnkgdGhpcyByZWNv cmQuIFRoZSBvd25lcnNoaXAKLWlzIHRyYW5zZmVycmVkIHRvIHRoZSB1cGRhdGVkIHJlY29yZCB3 aGljaCBpcyBpbnNlcnRlZCBlbHNld2hlcmUgaW4gdGhlCitNYXJrcyBub24tdXBkYXRlZCBvZmYt cGFnZSBmaWVsZHMgYXMgZGlzb3duZWQgYnkgdGhpcyByZWNvcmQuIFRoZSBvd25lcnNoaXAKK211 c3QgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQgcmVjb3JkIHdoaWNoIGlzIGluc2VydGVk IGVsc2V3aGVyZSBpbiB0aGUKIGluZGV4IHRyZWUuIEluIHB1cmdlIG9ubHkgdGhlIG93bmVyIG9m IGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIGlzIGFsbG93ZWQKLXRvIGZyZWUgdGhlIGZpZWxkLgot QHJldHVybiBUUlVFIGlmIEJMT0Igb3duZXJzaGlwIHdhcyB0cmFuc2ZlcnJlZCAqLwordG8gZnJl ZSB0aGUgZmllbGQuICovCiBVTklWX0lOVEVSTgotaWJvb2wKLWJ0cl9jdXJfbWFya19leHRlcm5f aW5oZXJpdGVkX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K K3ZvaWQKK2J0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9maWVsZHMoCisvKj09PT09PT09PT09PT09 PT09PT09PT09PT09PT0qLwogCXBhZ2VfemlwX2Rlc190KglwYWdlX3ppcCwvKiE8IGluL291dDog Y29tcHJlc3NlZCBwYWdlIHdob3NlIHVuY29tcHJlc3NlZAogCQkJCXBhcnQgd2lsbCBiZSB1cGRh dGVkLCBvciBOVUxMICovCiAJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQgaW4gYSBj bHVzdGVyZWQgaW5kZXggKi8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBpbmRleCBv ZiB0aGUgcGFnZSAqLwogCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IGFycmF5IHJldHVy bmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCiAJY29uc3QgdXBkX3QqCXVwZGF0ZSwJLyohPCBp bjogdXBkYXRlIHZlY3RvciAqLwotCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIsIG9yIE5VTEwg aWYgbm90IGxvZ2dlZCAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2Fj dGlvbiAqLwogewotCXVsaW50CW47Ci0JdWxpbnQJajsKIAl1bGludAlpOwotCWlib29sCWNoYW5n ZV9vd25lcnNoaXAgPSBGQUxTRTsKIAotCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgTlVM TCwgb2Zmc2V0cykpOworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNl dHMpKTsKIAl1dF9hZCghcmVjX29mZnNfY29tcChvZmZzZXRzKSB8fCAhcmVjX2dldF9ub2RlX3B0 cl9mbGFnKHJlYykpOworCXV0X2FkKHJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykpOworCXV0 X2FkKG10cik7CiAKLQlpZiAoIXJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykpIHsKLQotCQly ZXR1cm4oRkFMU0UpOwotCX0KLQotCW4gPSByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsKLQot CWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zm c2V0cywgaSkpIHsKLQotCQkJLyogQ2hlY2sgaXQgaXMgbm90IGluIHVwZGF0ZWQgZmllbGRzICov Ci0KLQkJCWlmICh1cGRhdGUpIHsKLQkJCQlmb3IgKGogPSAwOyBqIDwgdXBkX2dldF9uX2ZpZWxk cyh1cGRhdGUpOwotCQkJCSAgICAgaisrKSB7Ci0JCQkJCWlmICh1cGRfZ2V0X250aF9maWVsZCh1 cGRhdGUsIGopCi0JCQkJCSAgICAtPmZpZWxkX25vID09IGkpIHsKLQotCQkJCQkJZ290byB1cGRh dGVkOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCisJZm9yIChpID0gMDsgaSA8IHJlY19vZmZzX25f ZmllbGRzKG9mZnNldHMpOyBpKyspIHsKKwkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0 cywgaSkKKwkJICAgICYmICF1cGRfZ2V0X2ZpZWxkX2J5X2ZpZWxkX25vKHVwZGF0ZSwgaSkpIHsK IAkJCWJ0cl9jdXJfc2V0X293bmVyc2hpcF9vZl9leHRlcm5fZmllbGQoCiAJCQkJcGFnZV96aXAs IHJlYywgaW5kZXgsIG9mZnNldHMsIGksIEZBTFNFLCBtdHIpOwotCi0JCQljaGFuZ2Vfb3duZXJz aGlwID0gVFJVRTsKLXVwZGF0ZWQ6Ci0JCQk7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4oY2hhbmdlX293 bmVyc2hpcCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGhlIGNvbXBsZW1lbnQgb2YgdGhlIHBy ZXZpb3VzIGZ1bmN0aW9uOiBpbiBhbiB1cGRhdGUgZW50cnkgbWF5IGluaGVyaXQKLXNvbWUgZXh0 ZXJuYWxseSBzdG9yZWQgZmllbGRzIGZyb20gYSByZWNvcmQuIFdlIG11c3QgbWFyayB0aGVtIGFz IGluaGVyaXRlZAotaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUgbm90IGZyZWVkIGluIGEgcm9s bGJhY2suICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl9tYXJrX2R0dXBsZV9pbmhlcml0 ZWRfZXh0ZXJuKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCWR0dXBs ZV90KgllbnRyeSwJCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5IHRvIGJlCi0JCQkJCWluc2Vy dGVkIHRvIGNsdXN0ZXJlZCBpbmRleCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUpCQkvKiE8IGlu OiB1cGRhdGUgdmVjdG9yICovCi17Ci0JdWxpbnQJCWk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgZHR1 cGxlX2dldF9uX2ZpZWxkcyhlbnRyeSk7IGkrKykgewotCi0JCWRmaWVsZF90KglkZmllbGQgPSBk dHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSk7Ci0JCWJ5dGUqCQlkYXRhOwotCQl1bGludAkJ bGVuOwotCQl1bGludAkJajsKLQotCQlpZiAoIWRmaWVsZF9pc19leHQoZGZpZWxkKSkgewotCQkJ Y29udGludWU7Ci0JCX0KLQotCQkvKiBDaGVjayBpZiBpdCBpcyBpbiB1cGRhdGVkIGZpZWxkcyAq LwotCi0JCWZvciAoaiA9IDA7IGogPCB1cGRfZ2V0X25fZmllbGRzKHVwZGF0ZSk7IGorKykgewot CQkJaWYgKHVwZF9nZXRfbnRoX2ZpZWxkKHVwZGF0ZSwgaiktPmZpZWxkX25vID09IGkpIHsKLQot CQkJCWdvdG8gaXNfdXBkYXRlZDsKLQkJCX0KIAkJfQotCi0JCWRhdGEgPSBkZmllbGRfZ2V0X2Rh dGEoZGZpZWxkKTsKLQkJbGVuID0gZGZpZWxkX2dldF9sZW4oZGZpZWxkKTsKLQkJZGF0YVtsZW4g LSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFICsgQlRSX0VYVEVSTl9MRU5dCi0JCQl8PSBCVFJf RVhURVJOX0lOSEVSSVRFRF9GTEFHOwotCi1pc191cGRhdGVkOgotCQk7CiAJfQogfQogCkBAIC0z NjE1LDI5ICszNTMzLDYgQEAgYnRyX2N1cl91bm1hcmtfZXh0ZXJuX2ZpZWxkcygKIAkJfQogCX0K IH0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCi1NYXJrcyBhbGwgZXh0ZXJuIGZpZWxkcyBpbiBhIGR0dXBs ZSBhcyBvd25lZCBieSB0aGUgcmVjb3JkLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLWJ0cl9jdXJf dW5tYXJrX2R0dXBsZV9leHRlcm5fZmllbGRzKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSovCi0JZHR1cGxlX3QqCWVudHJ5KQkJLyohPCBpbi9vdXQ6IGNsdXN0ZXJlZCBpbmRl eCBlbnRyeSAqLwotewotCXVsaW50CWk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgZHR1cGxlX2dldF9u X2ZpZWxkcyhlbnRyeSk7IGkrKykgewotCQlkZmllbGRfdCogZGZpZWxkID0gZHR1cGxlX2dldF9u dGhfZmllbGQoZW50cnksIGkpOwotCi0JCWlmIChkZmllbGRfaXNfZXh0KGRmaWVsZCkpIHsKLQkJ CWJ5dGUqCWRhdGEgPSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxkKTsKLQkJCXVsaW50CWxlbiA9IGRm aWVsZF9nZXRfbGVuKGRmaWVsZCk7Ci0KLQkJCWRhdGFbbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9S RUZfU0laRSArIEJUUl9FWFRFUk5fTEVOXQotCQkJCSY9IH5CVFJfRVhURVJOX09XTkVSX0ZMQUc7 Ci0JCX0KLQl9Ci19CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRmxhZ3MgdGhlIGRhdGEgdHVwbGUgZmll bGRzIHRoYXQgYXJlIG1hcmtlZCBhcyBleHRlcm4gc3RvcmFnZSBpbiB0aGUKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwY3VyLmgnCi0tLSBhL3N0 b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEwMTIyMTA5MzkxOS1tY21tZ2Q0enBzZTk1NjdkCisrKyBiL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEwMTIyMTExMjcyMi0xeXh4enpncXRlbThiY203CkBAIC0zMzIsMTAgKzMzMiwxNCBA QCB1bGludAogYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFncywJLyohPCBpbjogdW5kbyBsb2dnaW5nIGFu ZCBsb2NraW5nIGZsYWdzICovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciAq LworCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbi9vdXQ6IGJ1ZmZlciBibG9jayBvZiB0aGUg cmVjb3JkICovCisJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQgKi8KKwlkaWN0X2lu ZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggb2YgdGhlIHJlY29yZCAqLwor CWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMpICovCiAJ aWJvb2wJCXZhbCwJLyohPCBpbjogdmFsdWUgdG8gc2V0ICovCiAJcXVlX3Rocl90Kgl0aHIsCS8q ITwgaW46IHF1ZXJ5IHRocmVhZCAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCisJ bXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIFNldHMgYSBzZWNvbmRhcnkgaW5kZXggcmVjb3JkIGRlbGV0ZSBtYXJrIHRvIFRS VUUgb3IgRkFMU0UuCiBAcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgb3IgZXJyb3Ig bnVtYmVyICovCkBAIC00ODEsNDAgKzQ4NSwyMiBAQCBidHJfZXN0aW1hdGVfbnVtYmVyX29mX2Rp ZmZlcmVudF9rZXlfdmFsCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4KTsJLyohPCBpbjogaW5kZXggKi8KIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgotTWFya3Mgbm90IHVwZGF0ZWQgZXh0ZXJuIGZpZWxkcyBhcyBub3Qtb3duZWQgYnkgdGhp cyByZWNvcmQuIFRoZSBvd25lcnNoaXAKLWlzIHRyYW5zZmVycmVkIHRvIHRoZSB1cGRhdGVkIHJl Y29yZCB3aGljaCBpcyBpbnNlcnRlZCBlbHNld2hlcmUgaW4gdGhlCitNYXJrcyBub24tdXBkYXRl ZCBvZmYtcGFnZSBmaWVsZHMgYXMgZGlzb3duZWQgYnkgdGhpcyByZWNvcmQuIFRoZSBvd25lcnNo aXAKK211c3QgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQgcmVjb3JkIHdoaWNoIGlzIGlu c2VydGVkIGVsc2V3aGVyZSBpbiB0aGUKIGluZGV4IHRyZWUuIEluIHB1cmdlIG9ubHkgdGhlIG93 bmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIGlzIGFsbG93ZWQKLXRvIGZyZWUgdGhlIGZp ZWxkLgotQHJldHVybiBUUlVFIGlmIEJMT0Igb3duZXJzaGlwIHdhcyB0cmFuc2ZlcnJlZCAqLwor dG8gZnJlZSB0aGUgZmllbGQuICovCiBVTklWX0lOVEVSTgotaWJvb2wKLWJ0cl9jdXJfbWFya19l eHRlcm5faW5oZXJpdGVkX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ki8KK3ZvaWQKK2J0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9maWVsZHMoCisvKj09PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLwogCXBhZ2VfemlwX2Rlc190KglwYWdlX3ppcCwvKiE8IGlu L291dDogY29tcHJlc3NlZCBwYWdlIHdob3NlIHVuY29tcHJlc3NlZAogCQkJCXBhcnQgd2lsbCBi ZSB1cGRhdGVkLCBvciBOVUxMICovCiAJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQg aW4gYSBjbHVzdGVyZWQgaW5kZXggKi8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBp bmRleCBvZiB0aGUgcGFnZSAqLwogCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IGFycmF5 IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCiAJY29uc3QgdXBkX3QqCXVwZGF0ZSwJ LyohPCBpbjogdXBkYXRlIHZlY3RvciAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyLCBv ciBOVUxMIGlmIG5vdCBsb2dnZWQgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGhlIGNvbXBsZW1lbnQg b2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uOiBpbiBhbiB1cGRhdGUgZW50cnkgbWF5IGluaGVyaXQK LXNvbWUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGRzIGZyb20gYSByZWNvcmQuIFdlIG11c3QgbWFy ayB0aGVtIGFzIGluaGVyaXRlZAotaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUgbm90IGZyZWVk IGluIGEgcm9sbGJhY2suICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl9tYXJrX2R0dXBs ZV9pbmhlcml0ZWRfZXh0ZXJuKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0q LwotCWR0dXBsZV90KgllbnRyeSwJCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5IHRvIGJlCi0J CQkJCWluc2VydGVkIHRvIGNsdXN0ZXJlZCBpbmRleCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUp OwkvKiE8IGluOiB1cGRhdGUgdmVjdG9yICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLU1hcmtzIGFsbCBl eHRlcm4gZmllbGRzIGluIGEgZHR1cGxlIGFzIG93bmVkIGJ5IHRoZSByZWNvcmQuICovCi1VTklW X0lOVEVSTgotdm9pZAotYnRyX2N1cl91bm1hcmtfZHR1cGxlX2V4dGVybl9maWVsZHMoCi0vKj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVwbGVfdCoJZW50cnkpOwkJLyoh PCBpbi9vdXQ6IGNsdXN0ZXJlZCBpbmRleCBlbnRyeSAqLworCW10cl90KgkJbXRyKQkvKiE8IGlu L291dDogbWluaS10cmFuc2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMiwzLDQs NSw2KSkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBTdG9yZXMgdGhlIGZpZWxkcyBpbiBiaWdfcmVjX3Zl YyB0byB0aGUgdGFibGVzcGFjZSBhbmQgcHV0cyBwb2ludGVycyB0bwogdGhlbSBpbiByZWMuICBU aGUgZXh0ZXJuIGZsYWdzIGluIHJlYyB3aWxsIGhhdmUgdG8gYmUgc2V0IGJlZm9yZWhhbmQuCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MHVwZC5o JwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmgJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjEwOTM5MTktbWNtbWdkNHpwc2U5NTY3ZAorKysg Yi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmgJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMTI3MjItMXl4eHp6Z3F0ZW04YmNtNwpAQCAtNDY1LDEx ICs0NjUsMTYgQEAgc3RydWN0IHVwZF9ub2RlX3N0cnVjdHsKICNkZWZpbmUgVVBEX05PREVfSU5T RVJUX0NMVVNURVJFRCAgMwkvKiBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHNob3VsZCBiZQogCQkJ CQlpbnNlcnRlZCwgb2xkIHJlY29yZCBpcyBhbHJlYWR5IGRlbGV0ZQogCQkJCQltYXJrZWQgKi8K LSNkZWZpbmUgVVBEX05PREVfVVBEQVRFX0FMTF9TRUMJICAgNAkvKiBhbiBvcmRlcmluZyBmaWVs ZCBvZiB0aGUgY2x1c3RlcmVkCisjZGVmaW5lIFVQRF9OT0RFX0lOU0VSVF9CTE9CCSAgIDQJLyog Y2x1c3RlcmVkIGluZGV4IHJlY29yZCBzaG91bGQgYmUKKwkJCQkJaW5zZXJ0ZWQsIG9sZCByZWNv cmQgaXMgYWxyZWFkeQorCQkJCQlkZWxldGUtbWFya2VkOyBub24tdXBkYXRlZCBCTE9CcworCQkJ CQlzaG91bGQgYmUgaW5oZXJpdGVkIGJ5IHRoZSBuZXcgcmVjb3JkCisJCQkJCWFuZCBkaXNvd25l ZCBieSB0aGUgb2xkIHJlY29yZCAqLworI2RlZmluZSBVUERfTk9ERV9VUERBVEVfQUxMX1NFQwkg ICA1CS8qIGFuIG9yZGVyaW5nIGZpZWxkIG9mIHRoZSBjbHVzdGVyZWQKIAkJCQkJaW5kZXggcmVj b3JkIHdhcyBjaGFuZ2VkLCBvciB0aGlzIGlzCiAJCQkJCWEgZGVsZXRlIG9wZXJhdGlvbjogc2hv dWxkIHVwZGF0ZQogCQkJCQlhbGwgdGhlIHNlY29uZGFyeSBpbmRleCByZWNvcmRzICovCi0jZGVm aW5lCVVQRF9OT0RFX1VQREFURV9TT01FX1NFQyAgIDUJLyogc2Vjb25kYXJ5IGluZGV4IGVudHJp ZXMgc2hvdWxkIGJlCisjZGVmaW5lIFVQRF9OT0RFX1VQREFURV9TT01FX1NFQyAgIDYJLyogc2Vj b25kYXJ5IGluZGV4IGVudHJpZXMgc2hvdWxkIGJlCiAJCQkJCWxvb2tlZCBhdCBhbmQgdXBkYXRl ZCBpZiBhbiBvcmRlcmluZwogCQkJCQlmaWVsZCBjaGFuZ2VkICovCiAKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9yb3cvcm93MHVtb2QuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEwMTIyMTA5MzkxOS1tY21tZ2Q0enBzZTk1NjdkCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9yb3cvcm93MHVtb2QuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIy MTExMjcyMi0xeXh4enpncXRlbThiY203CkBAIC02NzYsMTEgKzY3NiwxMCBAQCByb3dfdW5kb19t b2RfdXBkX2V4aXN0X3NlYygKIAkJCQkJCSAgICAgIGluZGV4LCBoZWFwKTsKIAkJCWlmIChVTklW X1VOTElLRUxZKCFlbnRyeSkpIHsKIAkJCQkvKiBUaGUgc2VydmVyIG11c3QgaGF2ZSBjcmFzaGVk IGluCi0JCQkJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KCksIGluCi0JCQkJcm93X2luc19p bmRleF9lbnRyeV9sb3coKSBiZWZvcmUKLQkJCQlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmll bGRzKCkKLQkJCQloYXMgd3JpdHRlbiB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucwotCQkJ CShCTE9Ccykgb2YgdGhlIG5ldyBjbHVzdGVyZWQgaW5kZXggZW50cnkuICovCisJCQkJcm93X3Vw ZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KCkgYmVmb3JlCisJCQkJdGhlIHVwZGF0ZWQgZXh0ZXJuYWxs eSBzdG9yZWQgY29sdW1ucyAoQkxPQnMpCisJCQkJb2YgdGhlIG5ldyBjbHVzdGVyZWQgaW5kZXgg ZW50cnkgd2VyZQorCQkJCXdyaXR0ZW4uICovCiAKIAkJCQkvKiBUaGUgdGFibGUgbXVzdCBiZSBp biBEWU5BTUlDIG9yIENPTVBSRVNTRUQKIAkJCQlmb3JtYXQuICBSRURVTkRBTlQgYW5kIENPTVBB Q1QgZm9ybWF0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cv cm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1cGQuYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTA5MzkxOS1tY21tZ2Q0enBzZTk1Njdk CisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHVwZC5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTEyNzIyLTF5eHh6emdxdGVtOGJjbTcKQEAgLTE2MTYs NiArMTYxNiw5MSBAQCByb3dfdXBkX3NlY19zdGVwKAogCXJldHVybihEQl9TVUNDRVNTKTsKIH0K IAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5lIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2Vy dF9pbmhlcml0KHJlYyxvZmZzZXRzLGVudHJ5LHVwZGF0ZSkJXAorCXJvd191cGRfY2x1c3RfcmVj X2J5X2luc2VydF9pbmhlcml0X2Z1bmMocmVjLG9mZnNldHMsZW50cnksdXBkYXRlKQorI2Vsc2Ug LyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2lu aGVyaXQocmVjLG9mZnNldHMsZW50cnksdXBkYXRlKQlcCisJcm93X3VwZF9jbHVzdF9yZWNfYnlf aW5zZXJ0X2luaGVyaXRfZnVuYyhlbnRyeSx1cGRhdGUpCisjZW5kaWYgLyogVU5JVl9ERUJVRyAq LworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCitNYXJrIG5vbi11cGRhdGVkIG9mZi1wYWdlIGNvbHVtbnMgaW5o ZXJpdGVkIHdoZW4gdGhlIHByaW1hcnkga2V5IGlzCit1cGRhdGVkLiBXZSBtdXN0IG1hcmsgdGhl bSBhcyBpbmhlcml0ZWQgaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUgbm90CitmcmVlZCBpbiBh IHJvbGxiYWNrLiBBIGxpbWl0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHVzZWQgdG8gYmUK K2NhbGxlZCBidHJfY3VyX21hcmtfZHR1cGxlX2luaGVyaXRlZF9leHRlcm4oKS4KK0ByZXR1cm4g VFJVRSBpZiBhbnkgY29sdW1ucyB3ZXJlIGluaGVyaXRlZCAqLworc3RhdGljIF9fYXR0cmlidXRl X18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpCitpYm9vbAorcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5z ZXJ0X2luaGVyaXRfZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSovCisjaWZkZWYgVU5JVl9ERUJVRworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IG9sZCBy ZWNvcmQsIG9yIE5VTEwgKi8KKwljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0 X29mZnNldHMocmVjKSwgb3IgTlVMTCAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwlkdHVw bGVfdCoJZW50cnksCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5IHRvIGJlCisJCQkJaW5zZXJ0 ZWQgaW50byB0aGUgY2x1c3RlcmVkIGluZGV4ICovCisJY29uc3QgdXBkX3QqCXVwZGF0ZSkJLyoh PCBpbjogdXBkYXRlIHZlY3RvciAqLworeworCWlib29sCWluaGVyaXQJPSBGQUxTRTsKKwl1bGlu dAlpOworCisJdXRfYWQoIXJlYyA9PSAhb2Zmc2V0cyk7CisJdXRfYWQoIXJlYyB8fCByZWNfb2Zm c19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKKworCWZvciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0X25f ZmllbGRzKGVudHJ5KTsgaSsrKSB7CisJCWRmaWVsZF90KglkZmllbGQJPSBkdHVwbGVfZ2V0X250 aF9maWVsZChlbnRyeSwgaSk7CisJCWJ5dGUqCQlkYXRhOworCQl1bGludAkJbGVuOworCisJCXV0 X2FkKCFvZmZzZXRzCisJCSAgICAgIHx8ICFyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkp CisJCSAgICAgID09ICFkZmllbGRfaXNfZXh0KGRmaWVsZCkKKwkJICAgICAgfHwgdXBkX2dldF9m aWVsZF9ieV9maWVsZF9ubyh1cGRhdGUsIGkpKTsKKwkJaWYgKCFkZmllbGRfaXNfZXh0KGRmaWVs ZCkKKwkJICAgIHx8IHVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8odXBkYXRlLCBpKSkgeworCQkJ Y29udGludWU7CisJCX0KKworI2lmZGVmIFVOSVZfREVCVUcKKwkJaWYgKFVOSVZfTElLRUxZKHJl YyAhPSBOVUxMKSkgeworCQkJY29uc3QgYnl0ZSogcmVjX2RhdGEKKwkJCQk9IHJlY19nZXRfbnRo X2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJCQl1dF9hZChsZW4gPT0gZGZpZWxkX2dl dF9sZW4oZGZpZWxkKSk7CisJCQl1dF9hZChsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1dF9h ZChsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisKKwkJCXJlY19kYXRhICs9IGxl biAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCS8qIFRoZSBwb2ludGVyIG11c3Qg bm90IGJlIHplcm8uICovCisJCQl1dF9hZChtZW1jbXAocmVjX2RhdGEsIGZpZWxkX3JlZl96ZXJv LAorCQkJCSAgICAgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJLyogVGhlIEJMT0Ig bXVzdCBiZSBvd25lZC4gKi8KKwkJCXV0X2FkKCEocmVjX2RhdGFbQlRSX0VYVEVSTl9MRU5dCisJ CQkJJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwkJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcg Ki8KKworCQlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOworCQl1dF9hKGxlbiAhPSBVTklW X1NRTF9OVUxMKTsKKwkJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJ CWRhdGEgPSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxkKSArIGxlbgorCQkJLSBCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFOworCQkvKiBUaGUgcG9pbnRlciBtdXN0IG5vdCBiZSB6ZXJvLiAqLworCQl1 dF9hKG1lbWNtcChkYXRhLCBmaWVsZF9yZWZfemVybywgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0la RSkpOworCQkvKiBUaGUgQkxPQiBtdXN0IGJlIG93bmVkLiAqLworCQl1dF9hKCEoZGF0YVtCVFJf RVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKworCQlkYXRhW0JUUl9FWFRF Uk5fTEVOXSB8PSBCVFJfRVhURVJOX0lOSEVSSVRFRF9GTEFHOworCQkvKiBUaGUgQlRSX0VYVEVS Tl9JTkhFUklURURfRkxBRyBvbmx5IG1hdHRlcnMgaW4KKwkJcm9sbGJhY2suIFB1cmdlIHdpbGwg YWx3YXlzIGZyZWUgdGhlIGV4dGVybiBmaWVsZHMgb2YKKwkJYSBkZWxldGUtbWFya2VkIHJvdy4g Ki8KKworCQlpbmhlcml0ID0gVFJVRTsKKwl9CisKKwlyZXR1cm4oaW5oZXJpdCk7Cit9CisKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIE1hcmtzIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGRlbGV0ZWQgYW5kIGluc2Vy dHMgdGhlIHVwZGF0ZWQgdmVyc2lvbgogb2YgdGhlIHJlY29yZCB0byB0aGUgaW5kZXguIFRoaXMg ZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgd2hlbiB0aGUgb3JkZXJpbmcKQEAgLTE2MzQsMTQgKzE3 MTksMTYgQEAgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KAogCQkJCWEgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAqLwogCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbXRyOyBnZXRzIGNvbW1p dHRlZCBoZXJlICovCiB7Ci0JbWVtX2hlYXBfdCoJaGVhcAk9IE5VTEw7CisJbWVtX2hlYXBfdCoJ aGVhcDsKIAlidHJfcGN1cl90KglwY3VyOwogCWJ0cl9jdXJfdCoJYnRyX2N1cjsKIAl0cnhfdCoJ CXRyeDsKIAlkaWN0X3RhYmxlX3QqCXRhYmxlOwogCWR0dXBsZV90KgllbnRyeTsKIAl1bGludAkJ ZXJyOwotCWlib29sCQljaGFuZ2Vfb3duZXJzaGlwID0gRkFMU0U7CisJaWJvb2wJCWNoYW5nZV9v d25lcnNoaXAJPSBGQUxTRTsKKwlyZWNfdCoJCXJlYzsKKwl1bGludCoJCW9mZnNldHMJCQk9IE5V TEw7CiAKIAl1dF9hZChub2RlKTsKIAl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7 CkBAIC0xNjUxLDc3ICsxNzM4LDExMiBAQCByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoCiAJ cGN1ciA9IG5vZGUtPnBjdXI7CiAJYnRyX2N1cgk9IGJ0cl9wY3VyX2dldF9idHJfY3VyKHBjdXIp OwogCi0JaWYgKG5vZGUtPnN0YXRlICE9IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQpIHsKLQkJ cmVjX3QqCQlyZWM7Ci0JCWRpY3RfaW5kZXhfdCoJaW5kZXg7Ci0JCXVsaW50CQlvZmZzZXRzX1tS RUNfT0ZGU19OT1JNQUxfU0laRV07Ci0JCXVsaW50KgkJb2Zmc2V0czsKLQkJcmVjX29mZnNfaW5p dChvZmZzZXRzXyk7CisJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSgxMDAwKTsKKworCWVudHJ5ID0g cm93X2J1aWxkX2luZGV4X2VudHJ5KG5vZGUtPnVwZF9yb3csIG5vZGUtPnVwZF9leHQsCisJCQkJ ICAgICAgaW5kZXgsIGhlYXApOworCXV0X2EoZW50cnkpOworCisJcm93X3VwZF9pbmRleF9lbnRy eV9zeXNfZmllbGQoZW50cnksIGluZGV4LCBEQVRBX1RSWF9JRCwgdHJ4LT5pZCk7CiAKLQkJZXJy ID0gYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKEJUUl9OT19MT0NLSU5HX0ZMQUcsCi0J CQkJCQkgICAgIGJ0cl9jdXIsIFRSVUUsIHRociwgbXRyKTsKKwlzd2l0Y2ggKG5vZGUtPnN0YXRl KSB7CisJZGVmYXVsdDoKKwkJdXRfZXJyb3I7CisJY2FzZSBVUERfTk9ERV9JTlNFUlRfQkxPQjoK KwkJLyogQSBsb2NrIHdhaXQgb2NjdXJyZWQgaW4gcm93X2luc19pbmRleF9lbnRyeSgpIGluCisJ CXRoZSBwcmV2aW91cyBpbnZvY2F0aW9uIG9mIHRoaXMgZnVuY3Rpb24uIE1hcmsgdGhlCisJCW9m Zi1wYWdlIGNvbHVtbnMgaW4gdGhlIGVudHJ5IGluaGVyaXRlZC4gKi8KKworCQljaGFuZ2Vfb3du ZXJzaGlwID0gcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXQoCisJCQlOVUxMLCBO VUxMLCBlbnRyeSwgbm9kZS0+dXBkYXRlKTsKKwkJdXRfYShjaGFuZ2Vfb3duZXJzaGlwKTsKKwkJ LyogZmFsbCB0aHJvdWdoICovCisJY2FzZSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEOgorCQkv KiBBIGxvY2sgd2FpdCBvY2N1cnJlZCBpbiByb3dfaW5zX2luZGV4X2VudHJ5KCkgaW4KKwkJdGhl IHByZXZpb3VzIGludm9jYXRpb24gb2YgdGhpcyBmdW5jdGlvbi4gKi8KKwkJYnJlYWs7CisJY2Fz ZSBVUERfTk9ERV9VUERBVEVfQ0xVU1RFUkVEOgorCQkvKiBUaGlzIGlzIHRoZSBmaXJzdCBpbnZv Y2F0aW9uIG9mIHRoZSBmdW5jdGlvbiB3aGVyZQorCQl3ZSB1cGRhdGUgdGhlIHByaW1hcnkga2V5 LiAgRGVsZXRlLW1hcmsgdGhlIG9sZCByZWNvcmQKKwkJaW4gdGhlIGNsdXN0ZXJlZCBpbmRleCBh bmQgcHJlcGFyZSB0byBpbnNlcnQgYSBuZXcgZW50cnkuICovCisJCXJlYyA9IGJ0cl9jdXJfZ2V0 X3JlYyhidHJfY3VyKTsKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBO VUxMLAorCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCQl1dF9hZChwYWdlX3JlY19p c191c2VyX3JlYyhyZWMpKTsKKworCQllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9y ZWMoCisJCQlCVFJfTk9fTE9DS0lOR19GTEFHLCBidHJfY3VyX2dldF9ibG9jayhidHJfY3VyKSwK KwkJCXJlYywgaW5kZXgsIG9mZnNldHMsIFRSVUUsIHRociwgbXRyKTsKIAkJaWYgKGVyciAhPSBE Ql9TVUNDRVNTKSB7CitlcnJfZXhpdDoKIAkJCW10cl9jb21taXQobXRyKTsKKwkJCW1lbV9oZWFw X2ZyZWUoaGVhcCk7CiAJCQlyZXR1cm4oZXJyKTsKIAkJfQogCi0JCS8qIE1hcmsgYXMgbm90LW93 bmVkIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBmaWVsZHMgd2hpY2ggdGhlIG5ldwotCQlyb3cgaW5o ZXJpdHMgZnJvbSB0aGUgZGVsZXRlIG1hcmtlZCByZWNvcmQ6IHB1cmdlIHNob3VsZCBub3QKLQkJ ZnJlZSB0aG9zZSBleHRlcm5hbGx5IHN0b3JlZCBmaWVsZHMgZXZlbiBpZiB0aGUgZGVsZXRlIG1h cmtlZAotCQlyZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBpbmRleCB0cmVlLCBvciB1cGRhdGVk LiAqLworCQkvKiBJZiB0aGUgdGhlIG5ldyByb3cgaW5oZXJpdHMgZXh0ZXJuYWxseSBzdG9yZWQK KwkJZmllbGRzIChvZmYtcGFnZSBjb2x1bW5zIGEuay5hLiBCTE9CcykgZnJvbSB0aGUKKwkJZGVs ZXRlLW1hcmtlZCBvbGQgcmVjb3JkLCBtYXJrIHRoZW0gZGlzb3duZWQgYnkgdGhlCisJCW9sZCBy ZWNvcmQgYW5kIG93bmVkIGJ5IHRoZSBuZXcgZW50cnkuICovCisKKwkJaWYgKHJlY19vZmZzX2Fu eV9leHRlcm4ob2Zmc2V0cykpIHsKKwkJCWNoYW5nZV9vd25lcnNoaXAgPSByb3dfdXBkX2NsdXN0 X3JlY19ieV9pbnNlcnRfaW5oZXJpdCgKKwkJCQlyZWMsIG9mZnNldHMsIGVudHJ5LCBub2RlLT51 cGRhdGUpOworCisJCQlpZiAoY2hhbmdlX293bmVyc2hpcCkgeworCQkJCWJ0cl9wY3VyX3N0b3Jl X3Bvc2l0aW9uKHBjdXIsIG10cik7CisJCQl9CisJCX0KIAotCQlyZWMgPSBidHJfY3VyX2dldF9y ZWMoYnRyX2N1cik7Ci0JCWluZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgodGFibGUp OwotCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHNfLAotCQkJ CQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOwotCQljaGFuZ2Vfb3duZXJzaGlwID0gYnRyX2N1 cl9tYXJrX2V4dGVybl9pbmhlcml0ZWRfZmllbGRzKAotCQkJYnRyX2N1cl9nZXRfcGFnZV96aXAo YnRyX2N1ciksIHJlYywgaW5kZXgsIG9mZnNldHMsCi0JCQlub2RlLT51cGRhdGUsIG10cik7CiAJ CWlmIChjaGVja19yZWYpIHsKIAkJCS8qIE5PVEUgdGhhdCB0aGUgZm9sbG93aW5nIGNhbGwgbG9z ZXMKIAkJCXRoZSBwb3NpdGlvbiBvZiBwY3VyICEgKi8KIAkJCWVyciA9IHJvd191cGRfY2hlY2tf cmVmZXJlbmNlc19jb25zdHJhaW50cygKIAkJCQlub2RlLCBwY3VyLCB0YWJsZSwgaW5kZXgsIG9m ZnNldHMsIHRociwgbXRyKTsKIAkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCQkJCW10cl9j b21taXQobXRyKTsKLQkJCQlpZiAoVU5JVl9MSUtFTFlfTlVMTChoZWFwKSkgewotCQkJCQltZW1f aGVhcF9mcmVlKGhlYXApOwotCQkJCX0KLQkJCQlyZXR1cm4oZXJyKTsKKwkJCQlnb3RvIGVycl9l eGl0OwogCQkJfQogCQl9CiAJfQogCiAJbXRyX2NvbW1pdChtdHIpOwogCi0JaWYgKCFoZWFwKSB7 Ci0JCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoNTAwKTsKLQl9Ci0Jbm9kZS0+c3RhdGUgPSBVUERf Tk9ERV9JTlNFUlRfQ0xVU1RFUkVEOwotCi0JZW50cnkgPSByb3dfYnVpbGRfaW5kZXhfZW50cnko bm9kZS0+dXBkX3Jvdywgbm9kZS0+dXBkX2V4dCwKLQkJCQkgICAgICBpbmRleCwgaGVhcCk7Ci0J dXRfYShlbnRyeSk7CisJZXJyID0gcm93X2luc19pbmRleF9lbnRyeShpbmRleCwgZW50cnksCisJ CQkJICBub2RlLT51cGRfZXh0ID8gbm9kZS0+dXBkX2V4dC0+bl9leHQgOiAwLAorCQkJCSAgVFJV RSwgdGhyKTsKKwlub2RlLT5zdGF0ZSA9IGNoYW5nZV9vd25lcnNoaXAKKwkJPyBVUERfTk9ERV9J TlNFUlRfQkxPQgorCQk6IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQ7CisKKwlpZiAoZXJyID09 IERCX1NVQ0NFU1MgJiYgY2hhbmdlX293bmVyc2hpcCkgeworCQkvKiBNYXJrIHRoZSBub24tdXBk YXRlZCBmaWVsZHMgZGlzb3duZWQgYnkgdGhlIG9sZCByZWNvcmQuICovCisKKwkJLyogTk9URTog dGhpcyB0cmFuc2FjdGlvbiBoYXMgYW4geC1sb2NrIG9uIHRoZSByZWNvcmQKKwkJYW5kIHRoZXJl Zm9yZSBvdGhlciB0cmFuc2FjdGlvbnMgY2Fubm90IG1vZGlmeSB0aGUKKwkJcmVjb3JkIHdoZW4g d2UgaGF2ZSBubyBsYXRjaCBvbiB0aGUgcGFnZS4gSW4gYWRkaXRpb24sCisJCXdlIGFzc3VtZSB0 aGF0IG90aGVyIHF1ZXJ5IHRocmVhZHMgb2YgdGhlIHNhbWUKKwkJdHJhbnNhY3Rpb24gZG8gbm90 IG1vZGlmeSB0aGUgcmVjb3JkIGluIHRoZSBtZWFudGltZS4KKwkJVGhlcmVmb3JlIHdlIGNhbiBh c3NlcnQgdGhhdCB0aGUgcmVzdG9yYXRpb24gb2YgdGhlCisJCWN1cnNvciBzdWNjZWVkcy4gKi8K IAotCXJvd191cGRfaW5kZXhfZW50cnlfc3lzX2ZpZWxkKGVudHJ5LCBpbmRleCwgREFUQV9UUlhf SUQsIHRyeC0+aWQpOworCQltdHJfc3RhcnQobXRyKTsKIAotCWlmIChjaGFuZ2Vfb3duZXJzaGlw KSB7Ci0JCS8qIElmIHdlIHJldHVybiBmcm9tIGEgbG9jayB3YWl0LCBmb3IgZXhhbXBsZSwgd2Ug bWF5IGhhdmUKLQkJZXh0ZXJuIGZpZWxkcyBtYXJrZWQgYXMgbm90LW93bmVkIGluIGVudHJ5ICht YXJrZWQgaW4gdGhlCi0JCWlmLWJyYW5jaCBhYm92ZSkuIFdlIG11c3QgdW5tYXJrIHRoZW0sIHRh a2UgdGhlIG93bmVyc2hpcAotCQliYWNrLiAqLworCQlpZiAoIWJ0cl9wY3VyX3Jlc3RvcmVfcG9z aXRpb24oQlRSX01PRElGWV9MRUFGLCBwY3VyLCBtdHIpKSB7CisJCQl1dF9lcnJvcjsKKwkJfQog Ci0JCWJ0cl9jdXJfdW5tYXJrX2R0dXBsZV9leHRlcm5fZmllbGRzKGVudHJ5KTsKKwkJcmVjID0g YnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOworCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJl YywgaW5kZXgsIG9mZnNldHMsCisJCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJCXV0 X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykpOwogCi0JCS8qIFdlIG11c3QgbWFyayBub24t dXBkYXRlZCBleHRlcm4gZmllbGRzIGluIGVudHJ5IGFzCi0JCWluaGVyaXRlZCwgc28gdGhhdCBh IHBvc3NpYmxlIHJvbGxiYWNrIHdpbGwgbm90IGZyZWUgdGhlbS4gKi8KKwkJYnRyX2N1cl9kaXNv d25faW5oZXJpdGVkX2ZpZWxkcygKKwkJCWJ0cl9jdXJfZ2V0X3BhZ2VfemlwKGJ0cl9jdXIpLAor CQkJcmVjLCBpbmRleCwgb2Zmc2V0cywgbm9kZS0+dXBkYXRlLCBtdHIpOwogCi0JCWJ0cl9jdXJf bWFya19kdHVwbGVfaW5oZXJpdGVkX2V4dGVybihlbnRyeSwgbm9kZS0+dXBkYXRlKTsKKwkJbXRy X2NvbW1pdChtdHIpOwogCX0KIAotCWVyciA9IHJvd19pbnNfaW5kZXhfZW50cnkoaW5kZXgsIGVu dHJ5LAotCQkJCSAgbm9kZS0+dXBkX2V4dCA/IG5vZGUtPnVwZF9leHQtPm5fZXh0IDogMCwKLQkJ CQkgIFRSVUUsIHRocik7CiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAogCXJldHVybihlcnIpOwpA QCAtMTg2NSw4ICsxOTg3LDkgQEAgcm93X3VwZF9kZWxfbWFya19jbHVzdF9yZWMoCiAJLyogTWFy ayB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCBkZWxldGVkOyB3ZSBkbyBub3QgaGF2ZSB0byBj aGVjawogCWxvY2tzLCBiZWNhdXNlIHdlIGFzc3VtZSB0aGF0IHdlIGhhdmUgYW4geC1sb2NrIG9u IHRoZSByZWNvcmQgKi8KIAotCWVyciA9IGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYyhC VFJfTk9fTE9DS0lOR19GTEFHLAotCQkJCQkgICAgIGJ0cl9jdXIsIFRSVUUsIHRociwgbXRyKTsK KwllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCisJCUJUUl9OT19MT0NLSU5H X0ZMQUcsIGJ0cl9jdXJfZ2V0X2Jsb2NrKGJ0cl9jdXIpLAorCQlidHJfY3VyX2dldF9yZWMoYnRy X2N1ciksIGluZGV4LCBvZmZzZXRzLCBUUlVFLCB0aHIsIG10cik7CiAJaWYgKGVyciA9PSBEQl9T VUNDRVNTICYmIGNoZWNrX3JlZikgewogCQkvKiBOT1RFIHRoYXQgdGhlIGZvbGxvd2luZyBjYWxs IGxvc2VzIHRoZSBwb3NpdGlvbiBvZiBwY3VyICEgKi8KIApAQCAtMjA4Myw3ICsyMjA2LDggQEAg cm93X3VwZCgKIAl9CiAKIAlpZiAobm9kZS0+c3RhdGUgPT0gVVBEX05PREVfVVBEQVRFX0NMVVNU RVJFRAotCSAgICB8fCBub2RlLT5zdGF0ZSA9PSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEKSB7 CisJICAgIHx8IG5vZGUtPnN0YXRlID09IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQKKwkgICAg fHwgbm9kZS0+c3RhdGUgPT0gVVBEX05PREVfSU5TRVJUX0JMT0IpIHsKIAogCQlsb2dfZnJlZV9j aGVjaygpOwogCQllcnIgPSByb3dfdXBkX2NsdXN0X3N0ZXAobm9kZSwgdGhyKTsKCg== --===============1226281621== 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 13:27:35 +0200 # base_revision_id: marko.makela@stripped\ # mcmmgd4zpse9567d # # Begin bundle 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 --===============1226281621==--