From: marko.makela Date: April 11 2012 11:19am Subject: bzr push into mysql-trunk-wl5545 branch (marko.makela:3886 to 3887) WL#5545 List-Archive: http://lists.mysql.com/commits/143454 Message-Id: <201204111119.q3BBJB34006727@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4ODcgTWFya28gTcOka2Vsw6QJMjAxMi0wNC0xMQogICAgICBXTCM1NTQ1IHJldmlldyBjbGVh bnVwOiByZWZhY3RvciBjb2x1bW4gcmVuYW1pbmcuCiAgICAgIAogICAgICBkaWN0X21lbV90YWJs ZV9jb2xfcmVuYW1lX2xvdygpLCBkaWN0X21lbV90YWJsZV9jb2xfcmVuYW1lKCk6IFJlZmFjdG9y ZWQgZnJvbQogICAgICBpbm5vYmFzZV9yZW5hbWVfY29sdW1uKCkuCgogICAgbW9kaWZpZWQ6CiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvZGljdDBtZW0uaAogMzg4NiBNYXJrbyBNw6RrZWzDpAkyMDEyLTA0LTExIFttZXJnZV0KICAg ICAgTWVyZ2UgbXlzcWwtdHJ1bmsgdG8gbXlzcWwtdHJ1bmstd2w1NTQ1LgoKICAgIGFkZGVkOgog ICAgICBteXNxbC10ZXN0L3N1aXRlL2JpbmxvZy9yL2JpbmxvZ19ndGlkX2NhY2hlLnJlc3VsdAog ICAgICBteXNxbC10ZXN0L3N1aXRlL2JpbmxvZy90L2JpbmxvZ19ndGlkX2NhY2hlLW1hc3Rlci5v cHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9iaW5sb2cvdC9iaW5sb2dfZ3RpZF9jYWNoZS50ZXN0 CiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9yL2FsdGVyX3RhYmxlLnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3QvYWx0ZXJfdGFibGUudGVzdAogICAgICBzcWwvYmlubG9nLmNjCiAgICAg IHNxbC9oYW5kbGVyLmgKICAgICAgc3FsL215c3FsZC5jYwogICAgICBzcWwvc3FsX3RhYmxlLmNj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYXBpL2FwaTBhcGkuY2MKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9hcGkvYXBpMG1pc2MuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5j YwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmNjCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvYnVmL2J1ZjBidWYuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGR1bXAu Y2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5jYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL2J1Zi9idWYwcmVhLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGJv b3QuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwY3JlYS5jYwogICAgICBzdG9y YWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGlj dC9kaWN0MGxvYWQuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3Qwc3RhdHMuY2MK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2Z0cy9mdHMwYXN0LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZnRzL2Z0czBjb25maWcu Y2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9mdHMvZnRzMGZ0cy5jYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL2Z0cy9mdHMwb3B0LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZnRzL2Z0czBxdWUu Y2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9mdHMvZnRzMHNxbC5jYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxl ci9oYV9pbm5vZGIuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRl ci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaV9zLmNjCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L2FwaTBhcGkuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYXBpMG1pc2MuaAogICAg ICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idWYwYnVmLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RiMGVy ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGJvb3QuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBjcmVhLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2RpY3QwZGljdC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGxv YWQuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBzdGF0cy5oCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9maWwwZmlsLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2Z0czBhc3QuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZnRzMGZ0cy5o CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9mdHMwcHJpdi5oCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9oYV9wcm90b3R5cGVzLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2xvY2swbG9jay5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9sb2cwcmVj di5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9xdWUwcXVlLmgKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3JlYWQwcmVhZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9yZWFkMHJlYWQuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBmdHNv cnQuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MGlucy5oCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbG9nLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3JvdzBtZXJnZS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwu aAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHNlbC5oCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9yb3cwdWlucy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9yb3cwdW1vZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwdXBkLmgKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB2ZXJzLmgKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3NydjBzcnYuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3J2 MHN0YXJ0LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDByZWMuaAogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHJvbGwuaAogICAgICBzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvdHJ4MHN5cy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4 LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB1bmRvLmgKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3V0MHV0LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xv Y2swbG9jay5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwcmVjdi5jYwogICAgICBz dG9yYWdlL2lubm9iYXNlL29zL29zMGZpbGUuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9xdWUv cXVlMHF1ZS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwZnRzb3J0LmNjCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9y b3cvcm93MGxvZy5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15c3FsLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzBwdXJnZS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmNj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1aW5zLmNjCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2Uvcm93L3JvdzB1bW9kLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bmRv LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuY2MKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHZlcnMuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MGNv bmMuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jYwogICAgICBzdG9yYWdl L2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4 MGlfcy5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwcmVjLmNjCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvdHJ4L3RyeDByb2xsLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3Ry eDBzeXMuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jYwogICAgICBzdG9y YWdlL2lubm9iYXNlL3RyeC90cngwdW5kby5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3V0L3V0 MHV0LmNjCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBtZW0u Y2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEyMDQxMTEwNDYzOS0xMGNza2FlMzVvZHUzb3U0CisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEyMDQxMTExMTc1Ny15NTh0MGFpbTRnNWg0bGV4CkBAIC0yNDMsNiArMjQzLDE0OCBA QCBkaWN0X21lbV90YWJsZV9hZGRfY29sKAogCWRpY3RfbWVtX2ZpbGxfY29sdW1uX3N0cnVjdChj b2wsIGksIG10eXBlLCBwcnR5cGUsIGxlbik7CiB9CiAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVu YW1lcyBhIGNvbHVtbiBvZiBhIHRhYmxlIGluIHRoZSBkYXRhIGRpY3Rpb25hcnkgY2FjaGUuICov CitzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpCit2b2lkCitkaWN0X21lbV90YWJsZV9j b2xfcmVuYW1lX2xvdygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCWRpY3RfdGFi bGVfdCoJdGFibGUsCS8qITwgaW4vb3V0OiB0YWJsZSAqLworCWNvbnN0IGNoYXIqCWZyb20sCS8q ITwgaW46IG9sZCBjb2x1bW4gbmFtZSAqLworCWNvbnN0IGNoYXIqCXRvLAkvKiE8IGluOiBuZXcg Y29sdW1uIG5hbWUgKi8KKwljb25zdCBjaGFyKglzLAkvKiE8IGluOiBwb2ludGVyIHRvIHRhYmxl LT5jb2xfbmFtZXMgKi8KKwl1bnNpZ25lZAlpKQkvKiE8IGluOiBjb2x1bW4gb2Zmc2V0IGNvcnJl c3BvbmRpbmcgdG8gcyAqLworeworCXNpemVfdCBmcm9tX2xlbiA9IHN0cmxlbihmcm9tKSwgdG9f bGVuID0gc3RybGVuKHRvKTsKKworCXV0X2FkKCFzdHJjbXAoZnJvbSwgcykpOworCXV0X2FkKGkg PCB0YWJsZS0+bl9kZWYpOworCisJaWYgKGZyb21fbGVuID09IHRvX2xlbikgeworCQkvKiBUaGUg ZWFzeSBjYXNlOiBzaW1wbHkgcmVwbGFjZSB0aGUgY29sdW1uIG5hbWUgaW4KKwkJdGFibGUtPmNv bF9uYW1lcy4gKi8KKwkJc3RyY3B5KGNvbnN0X2Nhc3Q8Y2hhcio+KHMpLCB0byk7CisJfSBlbHNl IHsKKwkJLyogV2UgbmVlZCB0byBhZGp1c3QgYWxsIGFmZmVjdGVkIGluZGV4LT5maWVsZAorCQlw b2ludGVycywgYXMgaW4gZGljdF9pbmRleF9hZGRfY29sKCkuIEZpcnN0LCBjb3B5CisJCXRhYmxl LT5jb2xfbmFtZXMuICovCisJCXVsaW50CXByZWZpeF9sZW4JPSBzIC0gdGFibGUtPmNvbF9uYW1l czsKKworCQlmb3IgKDsgaSA8IHRhYmxlLT5uX2RlZjsgaSsrKSB7CisJCQlzICs9IHN0cmxlbihz KSArIDE7CisJCX0KKworCQl1bGludAlmdWxsX2xlbgk9IHMgLSB0YWJsZS0+Y29sX25hbWVzOwor CQljaGFyKgljb2xfbmFtZXM7CisKKwkJaWYgKHRvX2xlbiA+IGZyb21fbGVuKSB7CisJCQljb2xf bmFtZXMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oCisJCQkJbWVtX2hlYXBfYWxsb2MoCisJCQkJCXRh YmxlLT5oZWFwLAorCQkJCQlmdWxsX2xlbiArIHRvX2xlbiAtIGZyb21fbGVuKSk7CisKKwkJCW1l bWNweShjb2xfbmFtZXMsIHRhYmxlLT5jb2xfbmFtZXMsIHByZWZpeF9sZW4pOworCQl9IGVsc2Ug eworCQkJY29sX25hbWVzID0gY29uc3RfY2FzdDxjaGFyKj4odGFibGUtPmNvbF9uYW1lcyk7CisJ CX0KKworCQltZW1jcHkoY29sX25hbWVzICsgcHJlZml4X2xlbiwgdG8sIHRvX2xlbik7CisJCW1l bW1vdmUoY29sX25hbWVzICsgcHJlZml4X2xlbiArIHRvX2xlbiwKKwkJCXRhYmxlLT5jb2xfbmFt ZXMgKyAocHJlZml4X2xlbiArIGZyb21fbGVuKSwKKwkJCWZ1bGxfbGVuIC0gKHByZWZpeF9sZW4g KyBmcm9tX2xlbikpOworCisJCS8qIFJlcGxhY2UgdGhlIGZpZWxkIG5hbWVzIGluIGV2ZXJ5IGlu ZGV4LiAqLworCQlmb3IgKGRpY3RfaW5kZXhfdCogaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJz dF9pbmRleCh0YWJsZSk7CisJCSAgICAgaW5kZXggIT0gTlVMTDsKKwkJICAgICBpbmRleCA9IGRp Y3RfdGFibGVfZ2V0X25leHRfaW5kZXgoaW5kZXgpKSB7CisJCQl1bGludAluX2ZpZWxkcyA9IGRp Y3RfaW5kZXhfZ2V0X25fZmllbGRzKGluZGV4KTsKKworCQkJZm9yICh1bGludCBpID0gMDsgaSA8 IG5fZmllbGRzOyBpKyspIHsKKwkJCQlkaWN0X2ZpZWxkX3QqCWZpZWxkCisJCQkJCT0gZGljdF9p bmRleF9nZXRfbnRoX2ZpZWxkKAorCQkJCQkJaW5kZXgsIGkpOworCQkJCXVsaW50CQluYW1lX29m cworCQkJCQk9IGZpZWxkLT5uYW1lIC0gdGFibGUtPmNvbF9uYW1lczsKKwkJCQlpZiAobmFtZV9v ZnMgPD0gcHJlZml4X2xlbikgeworCQkJCQlmaWVsZC0+bmFtZSA9IGNvbF9uYW1lcyArIG5hbWVf b2ZzOworCQkJCX0gZWxzZSB7CisJCQkJCXV0X2EobmFtZV9vZnMgPCBmdWxsX2xlbik7CisJCQkJ CWZpZWxkLT5uYW1lID0gY29sX25hbWVzCisJCQkJCQkrIG5hbWVfb2ZzICsgdG9fbGVuIC0gZnJv bV9sZW47CisJCQkJfQorCQkJfQorCQl9CisKKwkJdGFibGUtPmNvbF9uYW1lcyA9IGNvbF9uYW1l czsKKwl9CisKKwkvKiBSZXBsYWNlIHRoZSBmaWVsZCBuYW1lcyBpbiBldmVyeSBmb3JlaWduIGtl eSBjb25zdHJhaW50LiAqLworCWZvciAoZGljdF9mb3JlaWduX3QqIGZvcmVpZ24gPSBVVF9MSVNU X0dFVF9GSVJTVCh0YWJsZS0+Zm9yZWlnbl9saXN0KTsKKwkgICAgIGZvcmVpZ24gIT0gTlVMTDsK KwkgICAgIGZvcmVpZ24gPSBVVF9MSVNUX0dFVF9ORVhUKGZvcmVpZ25fbGlzdCwgZm9yZWlnbikp IHsKKwkJZm9yICh1bnNpZ25lZCBmID0gMDsgZiA8IGZvcmVpZ24tPm5fZmllbGRzOyBmKyspIHsK KwkJCS8qIFRoZXNlIGNhbiBwb2ludCBzdHJhaWdodCB0bworCQkJdGFibGUtPmNvbF9uYW1lcywg YmVjYXVzZSB0aGUgZm9yZWlnbiBrZXkKKwkJCWNvbnN0cmFpbnRzIHdpbGwgYmUgZnJlZWQgYXQg dGhlIHNhbWUgdGltZQorCQkJd2hlbiB0aGUgdGFibGUgb2JqZWN0IGlzIGZyZWVkLiAqLworCQkJ Zm9yZWlnbi0+Zm9yZWlnbl9jb2xfbmFtZXNbZl0KKwkJCQk9IGRpY3RfaW5kZXhfZ2V0X250aF9m aWVsZCgKKwkJCQkJZm9yZWlnbi0+Zm9yZWlnbl9pbmRleCwgZiktPm5hbWU7CisJCX0KKwl9CisK Kwlmb3IgKGRpY3RfZm9yZWlnbl90KiBmb3JlaWduID0gVVRfTElTVF9HRVRfRklSU1QoCisJCSAg ICAgdGFibGUtPnJlZmVyZW5jZWRfbGlzdCk7CisJICAgICBmb3JlaWduICE9IE5VTEw7CisJICAg ICBmb3JlaWduID0gVVRfTElTVF9HRVRfTkVYVChyZWZlcmVuY2VkX2xpc3QsIGZvcmVpZ24pKSB7 CisJCWZvciAodW5zaWduZWQgZiA9IDA7IGYgPCBmb3JlaWduLT5uX2ZpZWxkczsgZisrKSB7CisJ CQkvKiBmb3JlaWduLT5yZWZlcmVuY2VkX2NvbF9uYW1lc1tdIG5lZWQgdG8gYmUKKwkJCWNvcGll cywgYmVjYXVzZSB0aGUgY29uc3RyYWludCBtYXkgYmVjb21lCisJCQlvcnBoYW4gd2hlbiBmb3Jl aWduX2tleV9jaGVja3M9MCBhbmQgdGhlCisJCQlwYXJlbnQgdGFibGUgaXMgZHJvcHBlZC4gKi8K KworCQkJY29uc3QgY2hhciogY29sX25hbWUgPSBkaWN0X2luZGV4X2dldF9udGhfZmllbGQoCisJ CQkJZm9yZWlnbi0+cmVmZXJlbmNlZF9pbmRleCwgZiktPm5hbWU7CisKKwkJCWlmIChzdHJjbXAo Zm9yZWlnbi0+cmVmZXJlbmNlZF9jb2xfbmFtZXNbZl0sCisJCQkJICAgY29sX25hbWUpKSB7CisJ CQkJZm9yZWlnbi0+cmVmZXJlbmNlZF9jb2xfbmFtZXNbZl0KKwkJCQkJPSBtZW1faGVhcF9zdHJk dXAoCisJCQkJCQlmb3JlaWduLT5oZWFwLCBjb2xfbmFtZSk7CisJCQl9CisJCX0KKwl9Cit9CisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorUmVuYW1lcyBhIGNvbHVtbiBvZiBhIHRhYmxlIGluIHRoZSBk YXRhIGRpY3Rpb25hcnkgY2FjaGUuCitAcmV0dXJuIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiBzdWNj ZWVkZWQgKi8KK1VOSVZfSU5URVJOCitib29sCitkaWN0X21lbV90YWJsZV9jb2xfcmVuYW1lKAor Lyo9PT09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X3RhYmxlX3QqCXRhYmxlLAkvKiE8IGlu L291dDogdGFibGUgKi8KKwljb25zdCBjaGFyKglmcm9tLAkvKiE8IGluOiBvbGQgY29sdW1uIG5h bWUgKi8KKwljb25zdCBjaGFyKgl0bykJLyohPCBpbjogbmV3IGNvbHVtbiBuYW1lICovCit7CisJ dW5zaWduZWQJaTsKKwljb25zdCBjaGFyKglzID0gdGFibGUtPmNvbF9uYW1lczsKKworCWlmICgh cykgeworCQlyZXR1cm4oZmFsc2UpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCB0YWJsZS0+bl9k ZWY7IGkrKykgeworCQlpZiAoIXN0cmNtcChmcm9tLCBzKSkgeworCQkJZGljdF9tZW1fdGFibGVf Y29sX3JlbmFtZV9sb3codGFibGUsIGZyb20sIHRvLCBzLCBpKTsKKwkJCXJldHVybih0cnVlKTsK KwkJfQorCisJCXMgKz0gc3RybGVuKHMpICsgMTsKKwl9CisKKwlyZXR1cm4oZmFsc2UpOworfQog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIFRoaXMgZnVuY3Rpb24gcG9wdWxhdGVzIGEgZGljdF9jb2xf dCBtZW1vcnkgc3RydWN0dXJlIHdpdGgKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5k bGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA0 MTExMDQ2MzktMTBjc2thZTM1b2R1M291NAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIv aGFuZGxlcjBhbHRlci5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDQxMTEx MTc1Ny15NTh0MGFpbTRnNWg0bGV4CkBAIC0yNTQyLDEzMSArMjU0MiwxMiBAQCBpbm5vYmFzZV9y ZW5hbWVfY29sdW1uKAogCX0KIAogCS8qIFJlbmFtZSB0aGUgY29sdW1uIGluIHRoZSBkYXRhIGRp Y3Rpb25hcnkgY2FjaGUuICovCi0JY29uc3QgY2hhcioJcyA9IHByZWJ1aWx0LT50YWJsZS0+Y29s X25hbWVzOwotCi0JaWYgKCFzKSB7Ci1ub3RfZm91bmQ6CisJaWYgKCFkaWN0X21lbV90YWJsZV9j b2xfcmVuYW1lKHByZWJ1aWx0LT50YWJsZSwgZnJvbSwgdG8pKSB7CiAJCURCVUdfQVNTRVJUKDAp OwogCQlteV9lcnJvcihFUl9OT1RfS0VZRklMRSwgTVlGKDApLCBwcmVidWlsdC0+dGFibGUtPm5h bWUpOwogCQlEQlVHX1JFVFVSTih0cnVlKTsKIAl9CiAKLQl1bnNpZ25lZCBpOwotCi0JZm9yIChp ID0gMDsgaSA8IHByZWJ1aWx0LT50YWJsZS0+bl9kZWY7IGkrKykgewotCQlpZiAoIXN0cmNtcChm cm9tLCBzKSkgewotCQkJZ290byBmb3VuZF9uYW1lOwotCQl9Ci0KLQkJcyArPSBzdHJsZW4ocykg KyAxOwotCX0KLQotCWdvdG8gbm90X2ZvdW5kOwotCi1mb3VuZF9uYW1lOgotCXNpemVfdCBmcm9t X2xlbiA9IHN0cmxlbihmcm9tKSwgdG9fbGVuID0gc3RybGVuKHRvKTsKLQotCWlmIChmcm9tX2xl biA9PSB0b19sZW4pIHsKLQkJLyogVGhlIGVhc3kgY2FzZTogc2ltcGx5IHJlcGxhY2UgdGhlIGNv bHVtbiBuYW1lIGluCi0JCXByZWJ1aWx0LT50YWJsZS0+Y29sX25hbWVzLiAqLwotCQlzdHJjcHko Y29uc3RfY2FzdDxjaGFyKj4ocyksIHRvKTsKLQl9IGVsc2UgewotCQkvKiBXZSBuZWVkIHRvIGFk anVzdCBhbGwgYWZmZWN0ZWQgaW5kZXgtPmZpZWxkCi0JCXBvaW50ZXJzLCBhcyBpbiBkaWN0X2lu ZGV4X2FkZF9jb2woKS4gRmlyc3QsIGNvcHkKLQkJcHJlYnVpbHQtPnRhYmxlLT5jb2xfbmFtZXMu ICovCi0JCXVsaW50CXByZWZpeF9sZW4JPSBzIC0gcHJlYnVpbHQtPnRhYmxlLT5jb2xfbmFtZXM7 Ci0KLQkJZm9yICg7IGkgPCBwcmVidWlsdC0+dGFibGUtPm5fZGVmOyBpKyspIHsKLQkJCXMgKz0g c3RybGVuKHMpICsgMTsKLQkJfQotCi0JCXVsaW50CWZ1bGxfbGVuCT0gcyAtIHByZWJ1aWx0LT50 YWJsZS0+Y29sX25hbWVzOwotCQljaGFyKgljb2xfbmFtZXM7Ci0KLQkJaWYgKHRvX2xlbiA+IGZy b21fbGVuKSB7Ci0JCQljb2xfbmFtZXMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oCi0JCQkJbWVtX2hl YXBfYWxsb2MoCi0JCQkJCXByZWJ1aWx0LT50YWJsZS0+aGVhcCwKLQkJCQkJZnVsbF9sZW4gKyB0 b19sZW4gLSBmcm9tX2xlbikpOwotCi0JCQltZW1jcHkoY29sX25hbWVzLCBwcmVidWlsdC0+dGFi bGUtPmNvbF9uYW1lcywKLQkJCSAgICAgICBwcmVmaXhfbGVuKTsKLQkJfSBlbHNlIHsKLQkJCWNv bF9uYW1lcyA9IGNvbnN0X2Nhc3Q8Y2hhcio+KAotCQkJCXByZWJ1aWx0LT50YWJsZS0+Y29sX25h bWVzKTsKLQkJfQotCi0JCW1lbWNweShjb2xfbmFtZXMgKyBwcmVmaXhfbGVuLCB0bywgdG9fbGVu KTsKLQkJbWVtbW92ZShjb2xfbmFtZXMgKyBwcmVmaXhfbGVuICsgdG9fbGVuLAotCQkJcHJlYnVp bHQtPnRhYmxlLT5jb2xfbmFtZXMgKyAocHJlZml4X2xlbiArIGZyb21fbGVuKSwKLQkJCWZ1bGxf bGVuIC0gKHByZWZpeF9sZW4gKyBmcm9tX2xlbikpOwotCi0JCS8qIFJlcGxhY2UgdGhlIGZpZWxk IG5hbWVzIGluIGV2ZXJ5IGluZGV4LiAqLwotCQlmb3IgKGRpY3RfaW5kZXhfdCogaW5kZXggPSBk aWN0X3RhYmxlX2dldF9maXJzdF9pbmRleCgKLQkJCSAgICAgcHJlYnVpbHQtPnRhYmxlKTsKLQkJ ICAgICBpbmRleCAhPSBOVUxMOwotCQkgICAgIGluZGV4ID0gZGljdF90YWJsZV9nZXRfbmV4dF9p bmRleChpbmRleCkpIHsKLQkJCXVsaW50CW5fZmllbGRzID0gZGljdF9pbmRleF9nZXRfbl9maWVs ZHMoaW5kZXgpOwotCi0JCQlmb3IgKHVsaW50IGkgPSAwOyBpIDwgbl9maWVsZHM7IGkrKykgewot CQkJCWRpY3RfZmllbGRfdCoJZmllbGQKLQkJCQkJPSBkaWN0X2luZGV4X2dldF9udGhfZmllbGQo Ci0JCQkJCQlpbmRleCwgaSk7Ci0JCQkJdWxpbnQJCW5hbWVfb2ZzCi0JCQkJCT0gZmllbGQtPm5h bWUKLQkJCQkJLSBwcmVidWlsdC0+dGFibGUtPmNvbF9uYW1lczsKLQkJCQlpZiAobmFtZV9vZnMg PD0gcHJlZml4X2xlbikgewotCQkJCQlmaWVsZC0+bmFtZSA9IGNvbF9uYW1lcyArIG5hbWVfb2Zz OwotCQkJCX0gZWxzZSB7Ci0JCQkJCXV0X2EobmFtZV9vZnMgPCBmdWxsX2xlbik7Ci0JCQkJCWZp ZWxkLT5uYW1lID0gY29sX25hbWVzCi0JCQkJCQkrIG5hbWVfb2ZzICsgdG9fbGVuIC0gZnJvbV9s ZW47Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJcHJlYnVpbHQtPnRhYmxlLT5jb2xfbmFtZXMgPSBj b2xfbmFtZXM7Ci0JfQotCi0JLyogUmVwbGFjZSB0aGUgZmllbGQgbmFtZXMgaW4gZXZlcnkgZm9y ZWlnbiBrZXkgY29uc3RyYWludC4gKi8KLQlmb3IgKGRpY3RfZm9yZWlnbl90KiBmb3JlaWduID0g VVRfTElTVF9HRVRfRklSU1QoCi0JCSAgICAgcHJlYnVpbHQtPnRhYmxlLT5mb3JlaWduX2xpc3Qp OwotCSAgICAgZm9yZWlnbiAhPSBOVUxMOwotCSAgICAgZm9yZWlnbiA9IFVUX0xJU1RfR0VUX05F WFQoZm9yZWlnbl9saXN0LCBmb3JlaWduKSkgewotCQlmb3IgKHVuc2lnbmVkIGYgPSAwOyBmIDwg Zm9yZWlnbi0+bl9maWVsZHM7IGYrKykgewotCQkJLyogVGhlc2UgY2FuIHBvaW50IHN0cmFpZ2h0 IHRvCi0JCQl0YWJsZS0+Y29sX25hbWVzLCBiZWNhdXNlIHRoZSBmb3JlaWduIGtleQotCQkJY29u c3RyYWludHMgd2lsbCBiZSBmcmVlZCBhdCB0aGUgc2FtZSB0aW1lCi0JCQl3aGVuIHRoZSB0YWJs ZSBvYmplY3QgaXMgZnJlZWQuICovCi0JCQlmb3JlaWduLT5mb3JlaWduX2NvbF9uYW1lc1tmXQot CQkJCT0gZGljdF9pbmRleF9nZXRfbnRoX2ZpZWxkKAotCQkJCQlmb3JlaWduLT5mb3JlaWduX2lu ZGV4LCBmKQotCQkJCS0+bmFtZTsKLQkJfQotCX0KLQotCWZvciAoZGljdF9mb3JlaWduX3QqIGZv cmVpZ24gPSBVVF9MSVNUX0dFVF9GSVJTVCgKLQkJICAgICBwcmVidWlsdC0+dGFibGUtPnJlZmVy ZW5jZWRfbGlzdCk7Ci0JICAgICBmb3JlaWduICE9IE5VTEw7Ci0JICAgICBmb3JlaWduID0gVVRf TElTVF9HRVRfTkVYVChyZWZlcmVuY2VkX2xpc3QsIGZvcmVpZ24pKSB7Ci0JCWZvciAodW5zaWdu ZWQgZiA9IDA7IGYgPCBmb3JlaWduLT5uX2ZpZWxkczsgZisrKSB7Ci0JCQkvKiBmb3JlaWduLT5y ZWZlcmVuY2VkX2NvbF9uYW1lc1tdIG5lZWQgdG8gYmUKLQkJCWNvcGllcywgYmVjYXVzZSB0aGUg Y29uc3RyYWludCBtYXkgYmVjb21lCi0JCQlvcnBoYW4gd2hlbiBmb3JlaWduX2tleV9jaGVja3M9 MCBhbmQgdGhlCi0JCQlwYXJlbnQgdGFibGUgaXMgZHJvcHBlZC4gKi8KLQotCQkJY29uc3QgY2hh ciogY29sX25hbWUgPSBkaWN0X2luZGV4X2dldF9udGhfZmllbGQoCi0JCQkJZm9yZWlnbi0+cmVm ZXJlbmNlZF9pbmRleCwgZiktPm5hbWU7Ci0KLQkJCWlmIChzdHJjbXAoZm9yZWlnbi0+cmVmZXJl bmNlZF9jb2xfbmFtZXNbZl0sCi0JCQkJICAgY29sX25hbWUpKSB7Ci0JCQkJZm9yZWlnbi0+cmVm ZXJlbmNlZF9jb2xfbmFtZXNbZl0KLQkJCQkJPSBtZW1faGVhcF9zdHJkdXAoCi0JCQkJCQlmb3Jl aWduLT5oZWFwLCBjb2xfbmFtZSk7Ci0JCQl9Ci0JCX0KLQl9Ci0KIAlEQlVHX1JFVFVSTihmYWxz ZSk7CiB9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGlj dDBtZW0uaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA0MTExMDQ2MzktMTBjc2thZTM1b2R1M291NAor KysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBtZW0uaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEyMDQxMTExMTc1Ny15NTh0MGFpbTRnNWg0bGV4CkBAIC0yNTAsNyAr MjUwLDE5IEBAIGRpY3RfbWVtX3RhYmxlX2FkZF9jb2woCiAJY29uc3QgY2hhcioJbmFtZSwJLyoh PCBpbjogY29sdW1uIG5hbWUsIG9yIE5VTEwgKi8KIAl1bGludAkJbXR5cGUsCS8qITwgaW46IG1h aW4gZGF0YXR5cGUgKi8KIAl1bGludAkJcHJ0eXBlLAkvKiE8IGluOiBwcmVjaXNlIHR5cGUgKi8K LQl1bGludAkJbGVuKTsJLyohPCBpbjogcHJlY2lzaW9uICovCisJdWxpbnQJCWxlbikJLyohPCBp bjogcHJlY2lzaW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgxKSkpOworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCitSZW5hbWVzIGEgY29sdW1uIG9mIGEgdGFibGUgaW4gdGhlIGRhdGEgZGljdGlv bmFyeSBjYWNoZS4KK0ByZXR1cm4gd2hldGhlciB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCAqLwor VU5JVl9JTlRFUk4KK2Jvb2wKK2RpY3RfbWVtX3RhYmxlX2NvbF9yZW5hbWUoCisvKj09PT09PT09 PT09PT09PT09PT09PT0qLworCWRpY3RfdGFibGVfdCoJdGFibGUsCS8qITwgaW4vb3V0OiB0YWJs ZSAqLworCWNvbnN0IGNoYXIqCWZyb20sCS8qITwgaW46IG9sZCBjb2x1bW4gbmFtZSAqLworCWNv bnN0IGNoYXIqCXRvKQkvKiE8IGluOiBuZXcgY29sdW1uIG5hbWUgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRoaXMgZnVuY3Rpb24gcG9wdWxhdGVz IGEgZGljdF9jb2xfdCBtZW1vcnkgc3RydWN0dXJlIHdpdGgKIHN1cHBsaWVkIGluZm9ybWF0aW9u LiAqLwoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=