From: Jon Olav Hauglid Date: February 15 2012 3:31pm Subject: bzr push into mysql-trunk-wl5534-stage branch (jon.hauglid:3830 to 3831) List-Archive: http://lists.mysql.com/commits/142896 Message-Id: <201202151532.q1FFWLx7014593@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4MzEgSm9uIE9sYXYgSGF1Z2xpZAkyMDEyLTAyLTE1IFttZXJnZV0KICAgICAgTWVyZ2UgZnJv bSBteXNxbC10cnVuayB0byBteXNxbC10cnVuay13bDU1MzQtc3RhZ2UKICAgICAgTm8gY29uZmxp Y3RzCgogICAgYWRkZWQ6CiAgICAgIHNxbC9nbG9iYWxfdGhyZWFkcy5oCiAgICBtb2RpZmllZDoK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnLTEzNjI4MjQ5LnRlc3QK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM3NTYudGVzdAogICAg ICBzcWwvZXZlbnRfc2NoZWR1bGVyLmNjCiAgICAgIHNxbC9rZXljYWNoZXMuY2MKICAgICAgc3Fs L2tleWNhY2hlcy5oCiAgICAgIHNxbC9teXNxbGQuY2MKICAgICAgc3FsL215c3FsZC5oCiAgICAg IHNxbC9ycGxfbWFzdGVyLmNjCiAgICAgIHNxbC9zaWduYWxfaGFuZGxlci5jYwogICAgICBzcWwv c3FsX2NsYXNzLmNjCiAgICAgIHNxbC9zcWxfY2xhc3MuaAogICAgICBzcWwvc3FsX2luc2VydC5j YwogICAgICBzcWwvc3FsX2xpc3QuaAogICAgICBzcWwvc3FsX29wdGltaXplci5jYwogICAgICBz cWwvc3FsX3BhcnNlLmNjCiAgICAgIHNxbC9zcWxfc2hvdy5jYwogICAgICBzcWwvc3FsX3Rlc3Qu Y2MKICAgICAgdW5pdHRlc3QvZ3VuaXQvc3FsX2xpc3QtdC5jYwogMzgzMCBNYXJrbyBNw6RrZWzD pAkyMDEyLTAyLTE1CiAgICAgIE9sZCBjb21waWxlcnMgZG8gbm90IHN1cHBvcnQgNjQtYml0IGF0 b21pY3Mgb24gMzItYml0IFdpbmRvd3MuIFVzZSBtdXRleC4KCiAgICBtb2RpZmllZDoKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3NydjBtb24uaAogICAgICBzdG9yYWdlL2lubm9iYXNl L3Nydi9zcnYwbW9uLmNjCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9k Yi90L2lubm9kYl9idWctMTM2MjgyNDkudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5v ZGIvdC9pbm5vZGJfYnVnLTEzNjI4MjQ5LnRlc3QJMjAxMi0wMi0xNCAxMDoyNzoxNCArMDAwMAor KysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWctMTM2MjgyNDkudGVzdAky MDEyLTAyLTE1IDE0OjUwOjMzICswMDAwCkBAIC0yOSwzNCArMjksMjYgQEAgSU5TRVJUIElOVE8g dDEgVkFMVUVTKDEpLCAoMiksICgzKSwgKDQpOwogIyBSZXF1ZXN0IGEgY3Jhc2ggb24gbmV4dCBl eGVjdXRpb24gb2YgY29tbWl0LgogU0VUIFNFU1NJT04gZGVidWc9IitkLGNyYXNoX2NvbW1pdF9i ZWZvcmUiOwogCisjIFdyaXRlIGZpbGUgdG8gbWFrZSBteXNxbC10ZXN0LXJ1bi5wbCBzdGFydCB1 cCB0aGUgc2VydmVyIGFnYWluCistLWV4ZWMgZWNobyAicmVzdGFydDotLWlubm9kYi1mb3JjZS1y ZWNvdmVyeT0zIiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKwogIyBF eGVjdXRlIHRoZSBzdGF0ZW1lbnQgdGhhdCBjYXVzZXMgdGhlIGNyYXNoLgogLS1lcnJvciAyMDEz CiBDT01NSVQ7CiAKLSMgV3JpdGUgZmlsZSB0byBtYWtlIG15c3FsLXRlc3QtcnVuLnBsIHN0YXJ0 IHVwIHRoZSBzZXJ2ZXIgYWdhaW4KLS0tZXhlYyBlY2hvICJyZXN0YXJ0Oi0taW5ub2RiLWZvcmNl LXJlY292ZXJ5PTMiID4gJE1ZU1FMVEVTVF9WQVJESVIvdG1wL215c3FsZC4xLmV4cGVjdAotCi0j IFR1cm4gb24gcmVjb25uZWN0CiAtLWVuYWJsZV9yZWNvbm5lY3QKLQotIyBDYWxsIHNjcmlwdCB0 aGF0IHdpbGwgcG9sbCB0aGUgc2VydmVyIHdhaXRpbmcgZm9yIGl0IHRvIGJlIGJhY2sgb25saW5l IGFnYWluCiAtLXNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29ubmVjdGVkX2FnYWluLmluYwor LS1kaXNhYmxlX3JlY29ubmVjdAogCiBTRUxFQ1QgKiBGUk9NIHQxOwogCi0jIFR1cm4gb2ZmIHJl Y29ubmVjdCBhZ2FpbgotLS1kaXNhYmxlX3JlY29ubmVjdAorLS1leGVjIGVjaG8gIndhaXQiID4g JE1ZU1FMVEVTVF9WQVJESVIvdG1wL215c3FsZC4xLmV4cGVjdAorLS1zaHV0ZG93bl9zZXJ2ZXIK Ky0tc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5jCiAKLSMgV3JpdGUg ZmlsZSB0byBtYWtlIG15c3FsLXRlc3QtcnVuLnBsIHN0YXJ0IHVwIHRoZSBzZXJ2ZXIgYWdhaW4K IC0tZXhlYyBlY2hvICJyZXN0YXJ0Oi0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTUiID4gJE1ZU1FM VEVTVF9WQVJESVIvdG1wL215c3FsZC4xLmV4cGVjdAotCi0jIFR1cm4gb24gcmVjb25uZWN0CiAt LWVuYWJsZV9yZWNvbm5lY3QKLQotIyBDYWxsIHNjcmlwdCB0aGF0IHdpbGwgcG9sbCB0aGUgc2Vy dmVyIHdhaXRpbmcgZm9yIGl0IHRvIGJlIGJhY2sgb25saW5lIGFnYWluCiAtLXNvdXJjZSBpbmNs dWRlL3dhaXRfdW50aWxfY29ubmVjdGVkX2FnYWluLmluYwotCi0jIFR1cm4gb2ZmIHJlY29ubmVj dCBhZ2FpbgogLS1kaXNhYmxlX3JlY29ubmVjdAogCiBTRUxFQ1QgKiBGUk9NIHQxOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzUzNzU2LnRl c3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzUzNzU2LnRlc3QJ MjAxMS0wMy0xNSAxNToxMToxNyArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90 L2lubm9kYl9idWc1Mzc1Ni50ZXN0CTIwMTItMDItMTUgMTQ6Mzc6MDYgKzAwMDAKQEAgLTEzOSw2 ICsxMzksOSBAQCBJTlNFUlQgSU5UTyBidWdfNTM3NTYgVkFMVUVTICg2NjYsNjY2KTsKICMgUmVx dWVzdCBhIGNyYXNoIG9uIG5leHQgZXhlY3V0aW9uIG9mIGNvbW1pdC4KIFNFVCBTRVNTSU9OIGRl YnVnPSIrZCxjcmFzaF9jb21taXRfYmVmb3JlIjsKICMKKyMgV3JpdGUgZmlsZSB0byBtYWtlIG15 c3FsLXRlc3QtcnVuLnBsIHN0YXJ0IHVwIHRoZSBzZXJ2ZXIgYWdhaW4KKy0tZXhlYyBlY2hvICJy ZXN0YXJ0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKyMKICMgRXhl Y3V0ZSB0aGUgc3RhdGVtZW50IHRoYXQgY2F1c2VzIHRoZSBjcmFzaC4KIC0tZXJyb3IgMjAxMwog Q09NTUlUOwpAQCAtMTU0LDkgKzE1Nyw2IEBAIENPTU1JVDsKIC0tZWNobyAjCiAtLWVjaG8gIyBS ZXN0YXJ0IHNlcnZlci4KICMKLSMgV3JpdGUgZmlsZSB0byBtYWtlIG15c3FsLXRlc3QtcnVuLnBs IHN0YXJ0IHVwIHRoZSBzZXJ2ZXIgYWdhaW4KLS0tZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNR TFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKLSMKICMgVHVybiBvbiByZWNvbm5lY3QK IC0tZW5hYmxlX3JlY29ubmVjdAogIwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9ldmVudF9zY2hl ZHVsZXIuY2MnCi0tLSBhL3NxbC9ldmVudF9zY2hlZHVsZXIuY2MJMjAxMS0xMC0wNiAxMTowNjoz NCArMDAwMAorKysgYi9zcWwvZXZlbnRfc2NoZWR1bGVyLmNjCTIwMTItMDItMTUgMTM6NTc6MTcg KzAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMTEsIE9yYWNs ZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvKiBDb3B5cmln aHQgKGMpIDIwMDYsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjIsNiAr MjIsNyBAQAogI2luY2x1ZGUgImV2ZW50X2RiX3JlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJzcWxf Y29ubmVjdC5oIiAgICAgICAgIC8vIGluaXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxlcl90aHJlYWQK ICNpbmNsdWRlICJzcWxfYWNsLmgiICAgICAgICAgICAgIC8vIFNVUEVSX0FDTAorI2luY2x1ZGUg Imdsb2JhbF90aHJlYWRzLmgiCiAKIC8qKgogICBAYWRkdG9ncm91cCBFdmVudF9TY2hlZHVsZXIK Cj09PSBhZGRlZCBmaWxlICdzcWwvZ2xvYmFsX3RocmVhZHMuaCcKLS0tIGEvc3FsL2dsb2JhbF90 aHJlYWRzLmgJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9zcWwvZ2xvYmFsX3RocmVh ZHMuaAkyMDEyLTAyLTE1IDEzOjU3OjE3ICswMDAwCkBAIC0wLDAgKzEsMjggQEAKKy8qIENvcHly aWdodCAoYykgMjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0Eg Ki8KKworI2lmbmRlZiBHTE9CQUxfVEhSRUFEU19JTkNMVURFRAorI2RlZmluZSBHTE9CQUxfVEhS RUFEU19JTkNMVURFRAorCisvKgorICBUT0RPOiBNYWtlIGEgcHJvcGVyIGludGVyZmFjZSBmb3Ig a2VlcGluZyB0cmFjayBvZiBnbG9iYWwgdGhyZWFkcy4KKyAqLworI2luY2x1ZGUgInNxbF9saXN0 LmgiCisjaW5jbHVkZSAic3FsX2NsYXNzLmgiCisKK2V4dGVybiBJX0xpc3Q8VEhEPiB0aHJlYWRz OworZXh0ZXJuIHVpbnQgdm9sYXRpbGUgdGhyZWFkX2NvdW50OworCisjZW5kaWYgIC8vIEdMT0JB TF9USFJFQURTX0lOQ0xVREVECgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2tleWNhY2hlcy5jYycK LS0tIGEvc3FsL2tleWNhY2hlcy5jYwkyMDExLTA2LTMwIDE1OjUwOjQ1ICswMDAwCisrKyBiL3Nx bC9rZXljYWNoZXMuY2MJMjAxMi0wMi0xNSAxMzo1NzoxNyArMDAwMApAQCAtMSw0ICsxLDQgQEAK LS8qIENvcHlyaWdodCAoYykgMjAwMiwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8qIENvcHlyaWdodCAoYykgMjAwMiwgMjAxMiwgT3Jh Y2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yMSwzMyArMjEsNiBAQAogCiBOQU1FRF9JTElT VCBrZXlfY2FjaGVzOwogCi0vKioKLSAgaWxpbmsgKGludHJ1c2l2ZSBsaXN0IGVsZW1lbnQpIHdp dGggYSBuYW1lCi0qLwotY2xhc3MgTkFNRURfSUxJTksgOnB1YmxpYyBpbGluawotewotcHVibGlj OgotICBjb25zdCBjaGFyICpuYW1lOwotICB1aW50IG5hbWVfbGVuZ3RoOwotICB1Y2hhciogZGF0 YTsKLQotICBOQU1FRF9JTElOSyhJX0xpc3Q8TkFNRURfSUxJTks+ICpsaW5rcywgY29uc3QgY2hh ciAqbmFtZV9hcmcsCi0gICAgICAgICAgICAgdWludCBuYW1lX2xlbmd0aF9hcmcsIHVjaGFyKiBk YXRhX2FyZykKLSAgICA6bmFtZV9sZW5ndGgobmFtZV9sZW5ndGhfYXJnKSwgZGF0YShkYXRhX2Fy ZykKLSAgewotICAgIG5hbWU9IG15X3N0cm5kdXAobmFtZV9hcmcsIG5hbWVfbGVuZ3RoLCBNWUYo TVlfV01FKSk7Ci0gICAgbGlua3MtPnB1c2hfYmFjayh0aGlzKTsKLSAgfQotICBpbmxpbmUgYm9v bCBjbXAoY29uc3QgY2hhciAqbmFtZV9jbXAsIHVpbnQgbGVuZ3RoKQotICB7Ci0gICAgcmV0dXJu IGxlbmd0aCA9PSBuYW1lX2xlbmd0aCAmJiAhbWVtY21wKG5hbWUsIG5hbWVfY21wLCBsZW5ndGgp OwotICB9Ci0gIH5OQU1FRF9JTElOSygpCi0gIHsKLSAgICBteV9mcmVlKCh2b2lkICopIG5hbWUp OwotICB9Ci19OwotCiB1Y2hhciogZmluZF9uYW1lZChJX0xpc3Q8TkFNRURfSUxJTks+ICpsaXN0 LCBjb25zdCBjaGFyICpuYW1lLCB1aW50IGxlbmd0aCwKICAgICAgICAgICAgICAgICBOQU1FRF9J TElOSyAqKmZvdW5kKQogewoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9rZXljYWNoZXMuaCcKLS0t IGEvc3FsL2tleWNhY2hlcy5oCTIwMTEtMDYtMzAgMTU6NTA6NDUgKzAwMDAKKysrIGIvc3FsL2tl eWNhY2hlcy5oCTIwMTItMDItMTUgMTM6NTc6MTcgKzAwMDAKQEAgLTI0LDcgKzI0LDM0IEBAIGV4 dGVybiAiQyIKICAgdHlwZWRlZiBpbnQgKCpwcm9jZXNzX2tleV9jYWNoZV90KSAoY29uc3QgY2hh ciAqLCBLRVlfQ0FDSEUgKik7CiB9CiAKLWNsYXNzIE5BTUVEX0lMSU5LOworLyoqCisgIGlsaW5r IChpbnRydXNpdmUgbGlzdCBlbGVtZW50KSB3aXRoIGEgbmFtZQorKi8KK2NsYXNzIE5BTUVEX0lM SU5LIDpwdWJsaWMgaWxpbms8TkFNRURfSUxJTks+Cit7CitwdWJsaWM6CisgIGNvbnN0IGNoYXIg Km5hbWU7CisgIHVpbnQgbmFtZV9sZW5ndGg7CisgIHVjaGFyKiBkYXRhOworCisgIE5BTUVEX0lM SU5LKElfTGlzdDxOQU1FRF9JTElOSz4gKmxpbmtzLCBjb25zdCBjaGFyICpuYW1lX2FyZywKKyAg ICAgICAgICAgICB1aW50IG5hbWVfbGVuZ3RoX2FyZywgdWNoYXIqIGRhdGFfYXJnKQorICAgIDpu YW1lX2xlbmd0aChuYW1lX2xlbmd0aF9hcmcpLCBkYXRhKGRhdGFfYXJnKQorICB7CisgICAgbmFt ZT0gbXlfc3RybmR1cChuYW1lX2FyZywgbmFtZV9sZW5ndGgsIE1ZRihNWV9XTUUpKTsKKyAgICBs aW5rcy0+cHVzaF9iYWNrKHRoaXMpOworICB9CisKKyAgYm9vbCBjbXAoY29uc3QgY2hhciAqbmFt ZV9jbXAsIHVpbnQgbGVuZ3RoKQorICB7CisgICAgcmV0dXJuIGxlbmd0aCA9PSBuYW1lX2xlbmd0 aCAmJiAhbWVtY21wKG5hbWUsIG5hbWVfY21wLCBsZW5ndGgpOworICB9CisKKyAgfk5BTUVEX0lM SU5LKCkKKyAgeworICAgIG15X2ZyZWUoKHZvaWQgKikgbmFtZSk7CisgIH0KK307CiAKIGNsYXNz IE5BTUVEX0lMSVNUOiBwdWJsaWMgSV9MaXN0PE5BTUVEX0lMSU5LPgogewoKPT09IG1vZGlmaWVk IGZpbGUgJ3NxbC9teXNxbGQuY2MnCi0tLSBhL3NxbC9teXNxbGQuY2MJMjAxMi0wMS0zMCAwNToz NDozMiArMDAwMAorKysgYi9zcWwvbXlzcWxkLmNjCTIwMTItMDItMTUgMTM6NTc6MTcgKzAwMDAK QEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMTEsIE9yYWNsZSBhbmQv b3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvKiBDb3B5cmlnaHQgKGMp IDIwMDAsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtNzEsNiArNzEsOSBA QAogI2luY2x1ZGUgInNxbF9jYWxsYmFjay5oIgogI2luY2x1ZGUgIm9wdF90cmFjZV9jb250ZXh0 LmgiCiAKKyNpbmNsdWRlICJnbG9iYWxfdGhyZWFkcy5oIgorI2luY2x1ZGUgIm15c3FsZC5oIgor CiAjaWZkZWYgV0lUSF9QRVJGU0NIRU1BX1NUT1JBR0VfRU5HSU5FCiAjaW5jbHVkZSAiLi4vc3Rv cmFnZS9wZXJmc2NoZW1hL3Bmc19zZXJ2ZXIuaCIKICNlbmRpZiAvKiBXSVRIX1BFUkZTQ0hFTUFf U1RPUkFHRV9FTkdJTkUgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzcWwvbXlzcWxkLmgnCi0tLSBh L3NxbC9teXNxbGQuaAkyMDEyLTAxLTI1IDEwOjA3OjIzICswMDAwCisrKyBiL3NxbC9teXNxbGQu aAkyMDEyLTAyLTE1IDEzOjU3OjE3ICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0 IChjKSAyMDEwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRz IHJlc2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDEwLCAyMDEyLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKQEAgLTEwNyw3ICsxMDcsNiBAQCBleHRlcm4gYm9vbCBvcHRfaWdub3JlX2J1 aWx0aW5faW5ub2RiOwogZXh0ZXJuIG15X2Jvb2wgb3B0X2NoYXJhY3Rlcl9zZXRfY2xpZW50X2hh bmRzaGFrZTsKIGV4dGVybiBib29sIHZvbGF0aWxlIGFib3J0X2xvb3A7CiBleHRlcm4gYm9vbCBp bl9ib290c3RyYXA7Ci1leHRlcm4gdWludCB2b2xhdGlsZSB0aHJlYWRfY291bnQ7CiBleHRlcm4g dWludCBjb25uZWN0aW9uX2NvdW50OwogZXh0ZXJuIG15X2Jvb2wgb3B0X3NhZmVfdXNlcl9jcmVh dGU7CiBleHRlcm4gbXlfYm9vbCBvcHRfc2FmZV9zaG93X2RiLCBvcHRfbG9jYWxfaW5maWxlLCBv cHRfbXlpc2FtX3VzZV9tbWFwOwpAQCAtMjMzLDcgKzIzMiw2IEBAIGV4dGVybiBNWVNRTF9GSUxF ICpib290c3RyYXBfZmlsZTsKIGV4dGVybiBteV9ib29sIG9sZF9tb2RlOwogZXh0ZXJuIExFWF9T VFJJTkcgb3B0X2luaXRfY29ubmVjdCwgb3B0X2luaXRfc2xhdmU7CiBleHRlcm4gaW50IGJvb3Rz dHJhcF9lcnJvcjsKLWV4dGVybiBJX0xpc3Q8VEhEPiB0aHJlYWRzOwogZXh0ZXJuIGNoYXIgZXJy X3NoYXJlZF9kaXJbXTsKIGV4dGVybiBUWVBFTElCIHRocmVhZF9oYW5kbGluZ190eXBlbGliOwog ZXh0ZXJuIG15X2RlY2ltYWwgZGVjaW1hbF96ZXJvOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9y cGxfbWFzdGVyLmNjJwotLS0gYS9zcWwvcnBsX21hc3Rlci5jYwkyMDEyLTAxLTIyIDE3OjAwOjIx ICswMDAwCisrKyBiL3NxbC9ycGxfbWFzdGVyLmNjCTIwMTItMDItMTUgMTM6NTc6MTcgKzAwMDAK QEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTAsIDIwMTEsIE9yYWNsZSBhbmQv b3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvKiBDb3B5cmlnaHQgKGMp IDIwMTAsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTcsNiArMTcsNyBA QAogI2luY2x1ZGUgInNxbF9wcml2LmgiCiAjaW5jbHVkZSAidW5pcmVnLmgiCiAjaW5jbHVkZSAi c3FsX3BhcnNlLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja19hY2Nlc3MKKyNp bmNsdWRlICJnbG9iYWxfdGhyZWFkcy5oIgogI2lmZGVmIEhBVkVfUkVQTElDQVRJT04KIAogI2lu Y2x1ZGUgInNxbF9hY2wuaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1VQRVJfQUNM Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NpZ25hbF9oYW5kbGVyLmNjJwotLS0gYS9zcWwvc2ln bmFsX2hhbmRsZXIuY2MJMjAxMS0xMi0wMiAxMzozMzowOCArMDAwMAorKysgYi9zcWwvc2lnbmFs X2hhbmRsZXIuY2MJMjAxMi0wMi0xNSAxMzo1NzoxNyArMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8q IENvcHlyaWdodCAoYykgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKy8qIENvcHlyaWdodCAoYykgMjAxMSwgMjAxMiBPcmFjbGUgYW5kL29y IGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQog ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgInN5c192YXJzLmgi CiAjaW5jbHVkZSAibXlfc3RhY2t0cmFjZS5oIgorI2luY2x1ZGUgImdsb2JhbF90aHJlYWRzLmgi CiAKICNpZmRlZiBfX1dJTl9fCiAjaW5jbHVkZSA8Y3J0ZGJnLmg+Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3FsL3NxbF9jbGFzcy5jYycKLS0tIGEvc3FsL3NxbF9jbGFzcy5jYwkyMDEyLTAyLTA4IDE1 OjI1OjE3ICswMDAwCisrKyBiL3NxbC9zcWxfY2xhc3MuY2MJMjAxMi0wMi0xNSAxMzo1NzoxNyAr MDAwMApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICBDb3B5 cmlnaHQgKGMpIDIwMDAsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtNTcs NiArNTcsOCBAQAogI2luY2x1ZGUgInNxbF9wYXJzZS5oIiAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gaXNfdXBkYXRlX3F1ZXJ5CiAjaW5jbHVkZSAic3FsX2NhbGxiYWNrLmgiCiAjaW5jbHVk ZSAibG9jay5oIgorI2luY2x1ZGUgImdsb2JhbF90aHJlYWRzLmgiCisjaW5jbHVkZSAibXlzcWxk LmgiCiAKICNpbmNsdWRlIDxteXNxbC9wc2kvbXlzcWxfc3RhdGVtZW50Lmg+CiAKQEAgLTIwNjks MTcgKzIwNzEsNiBAQCB2b2lkIFRIRDo6Y2xvc2VfYWN0aXZlX3ZpbygpCiAjZW5kaWYKIAogCi1z dHJ1Y3QgSXRlbV9jaGFuZ2VfcmVjb3JkOiBwdWJsaWMgaWxpbmsKLXsKLSAgSXRlbSAqKnBsYWNl OwotICBJdGVtICpvbGRfdmFsdWU7Ci0gIC8qIFBsYWNlbWVudCBuZXcgd2FzIGhpZGRlbiBieSBg bmV3JyBpbiBpbGluayAoVE9ETzogY2hlY2spOiAqLwotICBzdGF0aWMgdm9pZCAqb3BlcmF0b3Ig bmV3KHNpemVfdCBzaXplLCB2b2lkICptZW0pIHsgcmV0dXJuIG1lbTsgfQotICBzdGF0aWMgdm9p ZCBvcGVyYXRvciBkZWxldGUodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkge30KLSAgc3RhdGljIHZv aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKnB0ciwgdm9pZCAqbWVtKSB7IC8qIG5ldmVyIGNhbGxl ZCAqLyB9Ci19OwotCi0KIC8qCiAgIFJlZ2lzdGVyIGFuIGl0ZW0gdHJlZSB0cmVlIHRyYW5zZm9y bWF0aW9uLCBwZXJmb3JtZWQgYnkgdGhlIHF1ZXJ5CiAgIG9wdGltaXplci4gV2UgbmVlZCBhIHBv aW50ZXIgdG8gcnVudGltZV9tZW1yb290IGJlY2F1c2UgaXQgbWF5IGJlICE9Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3FsL3NxbF9jbGFzcy5oJwotLS0gYS9zcWwvc3FsX2NsYXNzLmgJMjAxMi0wMi0w MiAxNTowNDo1NCArMDAwMAorKysgYi9zcWwvc3FsX2NsYXNzLmgJMjAxMi0wMi0xNSAxNTozMTow NyArMDAwMApAQCAtMTA1MSw3ICsxMDUxLDcgQEAgY2xhc3MgU2VydmVyX3NpZGVfY3Vyc29yOwog ICBiZSB1c2VkIGV4cGxpY2l0bHkuCiAqLwogCi1jbGFzcyBTdGF0ZW1lbnQ6IHB1YmxpYyBpbGlu aywgcHVibGljIFF1ZXJ5X2FyZW5hCitjbGFzcyBTdGF0ZW1lbnQ6IHB1YmxpYyBRdWVyeV9hcmVu YQogewogICBTdGF0ZW1lbnQoY29uc3QgU3RhdGVtZW50ICZyaHMpOyAgICAgICAgICAgICAgLyog bm90IGltcGxlbWVudGVkOiAqLwogICBTdGF0ZW1lbnQgJm9wZXJhdG9yPShjb25zdCBTdGF0ZW1l bnQgJnJocyk7ICAgLyogbm9uLWNvcHlhYmxlICovCkBAIC0xMjA0LDYgKzEyMDQsNyBAQCBwdWJs aWM6CiAgICAgQ2xvc2UgYWxsIGN1cnNvcnMgb2YgdGhpcyBjb25uZWN0aW9uIHRoYXQgdXNlIHRh YmxlcyBvZiBhIHN0b3JhZ2UKICAgICBlbmdpbmUgdGhhdCBoYXMgdHJhbnNhY3Rpb24tc3BlY2lm aWMgc3RhdGUgYW5kIHRoZXJlZm9yZSBjYW4gbm90CiAgICAgc3Vydml2ZSBDT01NSVQgb3IgUk9M TEJBQ0suIEN1cnJlbnRseSBhbGwgYnV0IE15SVNBTSBjdXJzb3JzIGFyZSBjbG9zZWQuCisgICAg Q1VSUkVOVExZIE5PVCBJTVBMRU1FTlRFRCEKICAgKi8KICAgdm9pZCBjbG9zZV90cmFuc2llbnRf Y3Vyc29ycygpOwogICB2b2lkIGVyYXNlKFN0YXRlbWVudCAqc3RhdGVtZW50KTsKQEAgLTEyMTMs NyArMTIxNCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgIEhBU0ggc3RfaGFzaDsKICAgSEFTSCBu YW1lc19oYXNoOwotICBJX0xpc3Q8U3RhdGVtZW50PiB0cmFuc2llbnRfY3Vyc29yX2xpc3Q7CiAg IFN0YXRlbWVudCAqbGFzdF9mb3VuZF9zdGF0ZW1lbnQ7CiB9OwogCkBAIC0xNjU0LDcgKzE2NTQs MTIgQEAgZXh0ZXJuIExvZ190aHJvdHRsZSBsb2dfdGhyb3R0bGVfcW5pOwogICB5ZXQgYW5vdGhl ciB0aW1lLgogKi8KIAotc3RydWN0IEl0ZW1fY2hhbmdlX3JlY29yZDsKK3N0cnVjdCBJdGVtX2No YW5nZV9yZWNvcmQ6IHB1YmxpYyBpbGluazxJdGVtX2NoYW5nZV9yZWNvcmQ+Cit7CisgIEl0ZW0g KipwbGFjZTsKKyAgSXRlbSAqb2xkX3ZhbHVlOworfTsKKwogdHlwZWRlZiBJX0xpc3Q8SXRlbV9j aGFuZ2VfcmVjb3JkPiBJdGVtX2NoYW5nZV9saXN0OwogCiAKQEAgLTIxNDgsNyArMjE1Myw4IEBA IG15X21pY3JvX3RpbWVfdG9fdGltZXZhbCh1bG9uZ2xvbmcgbWljcm8KICAgYSB0aHJlYWQvY29u bmVjdGlvbiBkZXNjcmlwdG9yCiAqLwogCi1jbGFzcyBUSEQgOnB1YmxpYyBTdGF0ZW1lbnQsCitj bGFzcyBUSEQgOnB1YmxpYyBpbGluazxUSEQ+LAorICAgICAgICAgICBwdWJsaWMgU3RhdGVtZW50 LAogICAgICAgICAgICBwdWJsaWMgT3Blbl90YWJsZXNfc3RhdGUsCiAgICAgICAgICAgIHB1Ymxp YyBNRExfY29udGV4dF9vd25lcgogewoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfaW5zZXJ0 LmNjJwotLS0gYS9zcWwvc3FsX2luc2VydC5jYwkyMDEyLTAyLTAyIDE1OjA0OjU0ICswMDAwCisr KyBiL3NxbC9zcWxfaW5zZXJ0LmNjCTIwMTItMDItMTUgMTU6MzE6MDcgKzAwMDAKQEAgLTgxLDYg KzgxLDcgQEAKICNpbmNsdWRlICJkZWxheWFibGVfaW5zZXJ0X29wZXJhdGlvbi5oIgogI2luY2x1 ZGUgInNxbF90bXBfdGFibGUuaCIgICAgLy8gdG1wIHRhYmxlcwogI2luY2x1ZGUgInNxbF9vcHRp bWl6ZXIuaCIgICAgLy8gSk9JTgorI2luY2x1ZGUgImdsb2JhbF90aHJlYWRzLmgiCiAKICNpbmNs dWRlICJkZWJ1Z19zeW5jLmgiCiAKQEAgLTE4MzgsNyArMTgzOSw3IEBAIGludCBjaGVja190aGF0 X2FsbF9maWVsZHNfYXJlX2dpdmVuX3ZhbHUKIAogICAgQG5vdGUgdGhhdCBjdXN0b20gb3BlcmF0 b3IgbmV3L2RlbGV0ZSBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIGlsaW5rIGNsYXNzLgogKi8KLWNs YXNzIGRlbGF5ZWRfcm93IDpwdWJsaWMgaWxpbmsgeworY2xhc3MgZGVsYXllZF9yb3cgOnB1Ymxp YyBpbGluazxkZWxheWVkX3Jvdz4gewogcHVibGljOgogICBjaGFyICpyZWNvcmQ7CiAgIGVudW1f ZHVwbGljYXRlcyBkdXA7CkBAIC0xOTgwLDcgKzE5ODEsNyBAQCBib29sIGRlbGF5ZWRfcm93Ojpj b3B5X2NvbnRleHQoVEhEICp0aGQsCiAKICAgIEBub3RlIHRoYXQgY3VzdG9tIG9wZXJhdG9yIG5l dy9kZWxldGUgYXJlIGluaGVyaXRlZCBmcm9tIHRoZSBpbGluayBjbGFzcy4KICovCi1jbGFzcyBE ZWxheWVkX2luc2VydCA6cHVibGljIGlsaW5rIHsKK2NsYXNzIERlbGF5ZWRfaW5zZXJ0IDpwdWJs aWMgaWxpbms8RGVsYXllZF9pbnNlcnQ+IHsKICAgdWludCBsb2Nrc19pbl9tZW1vcnk7CiAgIHRo cl9sb2NrX3R5cGUgZGVsYXllZF9sb2NrOwogcHVibGljOgoKPT09IG1vZGlmaWVkIGZpbGUgJ3Nx bC9zcWxfbGlzdC5oJwotLS0gYS9zcWwvc3FsX2xpc3QuaAkyMDExLTEwLTA2IDExOjA2OjM0ICsw MDAwCisrKyBiL3NxbC9zcWxfbGlzdC5oCTIwMTItMDItMTUgMTM6NTc6MTcgKzAwMDAKQEAgLTEs NiArMSw2IEBACiAjaWZuZGVmIElOQ0xVREVTX01ZU1FMX1NRTF9MSVNUX0gKICNkZWZpbmUgSU5D TFVERVNfTVlTUUxfU1FMX0xJU1RfSAotLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFj bGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLyogQ29weXJp Z2h0IChjKSAyMDAwLCAyMDEyLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmln aHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTU3Myw0 MSArNTczLDQzIEBAIHB1YmxpYzoKIH07CiAKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz IGJhc2VfaWxpc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgYmFzZV9pbGlzdF9pdGVy YXRvcjsKKwogLyoKICAgQSBzaW1wbGUgaW50cnVzaXZlIGxpc3Qgd2hpY2ggYXV0b21hdGljbHkg cmVtb3ZlcyBlbGVtZW50IGZyb20gbGlzdAogICBvbiBkZWxldGUgKGZvciBUSEQgZWxlbWVudCkK KyAgTk9URTogdGhpcyBpbmhlcmVudGx5IHVuc2FmZSwgc2luY2Ugd2UgcmVseSBvbiA8VD4gdG8g aGF2ZQorICB0aGUgc2FtZSBsYXlvdXQgYXMgaWxpbms8VD4gKHNlZSBiYXNlX2lsaXN0OjpzZW50 aW5lbCkuCisgIFBsZWFzZSBjb25zaWRlciB1c2luZyBhIGRpZmZlcmVudCBzdHJhdGVneSBmb3Ig bGlua2luZyBvYmplY3RzLgogKi8KIAotc3RydWN0IGlsaW5rCit0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KK2NsYXNzIGlsaW5rCiB7Ci0gIHN0cnVjdCBpbGluayAqKnByZXYsKm5leHQ7Ci0gIHN0YXRp YyB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHRocm93ICgpCi0gIHsKLSAgICByZXR1 cm4gKHZvaWQqKW15X21hbGxvYygodWludClzaXplLCBNWUYoTVlfV01FIHwgTVlfRkFFIHwgTUVf RkFUQUxFUlJPUikpOwotICB9Ci0gIHN0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw dHJfYXJnLCBzaXplX3Qgc2l6ZSkKLSAgewotICAgICBteV9mcmVlKHB0cl9hcmcpOwotICB9Cisg IFQgKipwcmV2LCAqbmV4dDsKK3B1YmxpYzoKKyAgaWxpbmsoKSA6IHByZXYoTlVMTCksIG5leHQo TlVMTCkge30KIAotICBpbmxpbmUgaWxpbmsoKQotICB7Ci0gICAgcHJldj0wOyBuZXh0PTA7Ci0g IH0KLSAgaW5saW5lIHZvaWQgdW5saW5rKCkKKyAgdm9pZCB1bmxpbmsoKQogICB7CiAgICAgLyog RXh0cmEgdGVzdHMgYmVjYXVzZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSB0byBiZSBsaW5rZWQgKi8K ICAgICBpZiAocHJldikgKnByZXY9IG5leHQ7CiAgICAgaWYgKG5leHQpIG5leHQtPnByZXY9cHJl djsKLSAgICBwcmV2PTAgOyBuZXh0PTA7CisgICAgcHJldj0gTlVMTDsKKyAgICBuZXh0PSBOVUxM OwogICB9CisKICAgdmlydHVhbCB+aWxpbmsoKSB7IHVubGluaygpOyB9CQkvKmxpbnQgLWUxNzQw ICovCisKKyAgZnJpZW5kIGNsYXNzIGJhc2VfaWxpc3Q8VD47CisgIGZyaWVuZCBjbGFzcyBiYXNl X2lsaXN0X2l0ZXJhdG9yPFQ+OwogfTsKIAogCiAvKiBOZWVkZWQgdG8gYmUgYWJsZSB0byBoYXZl IGFuIElfTGlzdCBvZiBjaGFyKiBzdHJpbmdzIGluIG15c3FsZC5jYy4gKi8KIAotY2xhc3MgaV9z dHJpbmc6IHB1YmxpYyBpbGluaworY2xhc3MgaV9zdHJpbmc6IHB1YmxpYyBpbGluazxpX3N0cmlu Zz4KIHsKIHB1YmxpYzoKICAgY29uc3QgY2hhciogcHRyOwpAQCAtNjE2LDcgKzYxOCw3IEBAIHB1 YmxpYzoKIH07CiAKIC8qIG5lZWRlZCBmb3IgbGlua2VkIGxpc3Qgb2YgdHdvIHN0cmluZ3MgZm9y IHJlcGxpY2F0ZS1yZXdyaXRlLWRiICovCi1jbGFzcyBpX3N0cmluZ19wYWlyOiBwdWJsaWMgaWxp bmsKK2NsYXNzIGlfc3RyaW5nX3BhaXI6IHB1YmxpYyBpbGluazxpX3N0cmluZ19wYWlyPgogewog cHVibGljOgogICBjb25zdCBjaGFyKiBrZXk7CkBAIC02MzAsMzggKzYzMiw0OCBAQCBwdWJsaWM6 CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSV9MaXN0X2l0ZXJhdG9yOwogCiAKK3RlbXBsYXRl PHR5cGVuYW1lIFQ+CiBjbGFzcyBiYXNlX2lsaXN0CiB7Ci0gIHN0cnVjdCBpbGluayAqZmlyc3Q7 Ci0gIHN0cnVjdCBpbGluayBsYXN0OworICBUICpmaXJzdDsKKyAgaWxpbms8VD4gc2VudGluZWw7 CiBwdWJsaWM6Ci0gIGlubGluZSB2b2lkIGVtcHR5KCkgeyBmaXJzdD0gJmxhc3Q7IGxhc3QucHJl dj0gJmZpcnN0OyB9CisgIHZvaWQgZW1wdHkoKSB7CisgICAgZmlyc3Q9IHN0YXRpY19jYXN0PFQq Pigmc2VudGluZWwpOworICAgIHNlbnRpbmVsLnByZXY9ICZmaXJzdDsKKyAgfQogICBiYXNlX2ls aXN0KCkgeyBlbXB0eSgpOyB9Ci0gIGlubGluZSBib29sIGlzX2VtcHR5KCkgeyAgcmV0dXJuIGZp cnN0ID09ICZsYXN0OyB9Ci0gIGlubGluZSB2b2lkIHB1c2hfZnJvbnQoaWxpbmsgKmEpCisgIGJv b2wgaXNfZW1wdHkoKSB7IHJldHVybiBmaXJzdCA9PSBzdGF0aWNfY2FzdDxUKj4oJnNlbnRpbmVs KTsgfQorCisgIC8vLyBQdXNoZXMgbmV3IGVsZW1lbnQgaW4gZnJvbnQgb2YgbGlzdC4KKyAgdm9p ZCBwdXNoX2Zyb250KFQgKmEpCiAgIHsKICAgICBmaXJzdC0+cHJldj0gJmEtPm5leHQ7Ci0gICAg YS0+bmV4dD1maXJzdDsgYS0+cHJldj0gJmZpcnN0OyBmaXJzdD1hOworICAgIGEtPm5leHQ9IGZp cnN0OworICAgIGEtPnByZXY9ICZmaXJzdDsKKyAgICBmaXJzdD0gYTsKICAgfQotICBpbmxpbmUg dm9pZCBwdXNoX2JhY2soaWxpbmsgKmEpCisKKyAgLy8vIFB1c2hlcyBuZXcgZWxlbWVudCB0byB0 aGUgZW5kIG9mIHRoZSBsaXN0LCBpLmUuIGluIGZyb250IG9mIHRoZSBzZW50aW5lbC4KKyAgdm9p ZCBwdXNoX2JhY2soVCAqYSkKICAgewotICAgICpsYXN0LnByZXY9IGE7Ci0gICAgYS0+bmV4dD0g Jmxhc3Q7Ci0gICAgYS0+cHJldj0gbGFzdC5wcmV2OwotICAgIGxhc3QucHJldj0gJmEtPm5leHQ7 CisgICAgKnNlbnRpbmVsLnByZXY9IGE7CisgICAgYS0+bmV4dD0gc3RhdGljX2Nhc3Q8VCo+KCZz ZW50aW5lbCk7CisgICAgYS0+cHJldj0gc2VudGluZWwucHJldjsKKyAgICBzZW50aW5lbC5wcmV2 PSAmYS0+bmV4dDsKICAgfQotICBpbmxpbmUgc3RydWN0IGlsaW5rICpnZXQoKQorCisgIC8vIFVu bGluayBmaXJzdCBlbGVtZW50LCBhbmQgcmV0dXJuIGl0LgorICBUICpnZXQoKQogICB7Ci0gICAg c3RydWN0IGlsaW5rICpmaXJzdF9saW5rPWZpcnN0OwotICAgIGlmIChmaXJzdF9saW5rID09ICZs YXN0KQotICAgICAgcmV0dXJuIDA7Ci0gICAgZmlyc3RfbGluay0+dW5saW5rKCk7CQkJLy8gVW5s aW5rIGZyb20gbGlzdAorICAgIGlmIChpc19lbXB0eSgpKQorICAgICAgcmV0dXJuIE5VTEw7Cisg ICAgVCAqZmlyc3RfbGluaz0gZmlyc3Q7CisgICAgZmlyc3RfbGluay0+dW5saW5rKCk7CiAgICAg cmV0dXJuIGZpcnN0X2xpbms7CiAgIH0KLSAgaW5saW5lIHN0cnVjdCBpbGluayAqaGVhZCgpCi0g IHsKLSAgICByZXR1cm4gKGZpcnN0ICE9ICZsYXN0KSA/IGZpcnN0IDogMDsKLSAgfQorCisgIFQg KmhlYWQoKSB7IHJldHVybiBpc19lbXB0eSgpID8gTlVMTCA6IGZpcnN0OyB9CiAKICAgLyoqCiAg ICAgTW92ZXMgbGlzdCBlbGVtZW50cyB0byBuZXcgb3duZXIsIGFuZCBlbXB0aWVzIGN1cnJlbnQg b3duZXIgKGkuZS4gdGhpcykuCkBAIC02NzQsMTEgKzY4NiwxMSBAQCBwdWJsaWM6CiAgIHsKICAg ICBEQlVHX0FTU0VSVChuZXdfb3duZXItPmlzX2VtcHR5KCkpOwogICAgIG5ld19vd25lci0+Zmly c3Q9IGZpcnN0OwotICAgIG5ld19vd25lci0+bGFzdD0gbGFzdDsKKyAgICBuZXdfb3duZXItPnNl bnRpbmVsPSBzZW50aW5lbDsKICAgICBlbXB0eSgpOwogICB9CiAKLSAgZnJpZW5kIGNsYXNzIGJh c2VfaWxpc3RfaXRlcmF0b3I7CisgIGZyaWVuZCBjbGFzcyBiYXNlX2lsaXN0X2l0ZXJhdG9yPFQ+ OwogIHByaXZhdGU6CiAgIC8qCiAgICAgV2UgZG9uJ3Qgd2FudCB0byBhbGxvdyBjb3B5aW5nIG9m IHRoaXMgY2xhc3MsIGFzIHRoYXQgd291bGQgZ2l2ZSB1cwpAQCAtNjkwLDE4ICs3MDIsMjQgQEAg cHVibGljOgogfTsKIAogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgYmFzZV9pbGlzdF9p dGVyYXRvcgogewotICBiYXNlX2lsaXN0ICpsaXN0OwotICBzdHJ1Y3QgaWxpbmsgKiplbCwqY3Vy cmVudDsKKyAgYmFzZV9pbGlzdDxUPiAqbGlzdDsKKyAgVCAqKmVsLCAqY3VycmVudDsKIHB1Ymxp YzoKLSAgYmFzZV9pbGlzdF9pdGVyYXRvcihiYXNlX2lsaXN0ICZsaXN0X3BhcikgOmxpc3QoJmxp c3RfcGFyKSwKLSAgICBlbCgmbGlzdF9wYXIuZmlyc3QpLGN1cnJlbnQoMCkge30KLSAgdm9pZCAq bmV4dCh2b2lkKQorICBiYXNlX2lsaXN0X2l0ZXJhdG9yKGJhc2VfaWxpc3Q8VD4gJmxpc3RfcGFy KSA6CisgICAgbGlzdCgmbGlzdF9wYXIpLAorICAgIGVsKCZsaXN0X3Bhci5maXJzdCksCisgICAg Y3VycmVudChOVUxMKQorICB7fQorCisgIFQgKm5leHQodm9pZCkKICAgewogICAgIC8qIFRoaXMg aXMgY29kZWQgdG8gYWxsb3cgcHVzaF9iYWNrKCkgd2hpbGUgaXRlcmF0aW5nICovCiAgICAgY3Vy cmVudD0gKmVsOwotICAgIGlmIChjdXJyZW50ID09ICZsaXN0LT5sYXN0KSByZXR1cm4gMDsKKyAg ICBpZiAoY3VycmVudCA9PSBzdGF0aWNfY2FzdDxUKj4oJmxpc3QtPnNlbnRpbmVsKSkKKyAgICAg IHJldHVybiBOVUxMOwogICAgIGVsPSAmY3VycmVudC0+bmV4dDsKICAgICByZXR1cm4gY3VycmVu dDsKICAgfQpAQCAtNzA5LDE4ICs3MjcsMTcgQEAgcHVibGljOgogCiAKIHRlbXBsYXRlIDxjbGFz cyBUPgotY2xhc3MgSV9MaXN0IDpwcml2YXRlIGJhc2VfaWxpc3QKK2NsYXNzIElfTGlzdCA6cHJp dmF0ZSBiYXNlX2lsaXN0PFQ+CiB7CiBwdWJsaWM6Ci0gIElfTGlzdCgpIDpiYXNlX2lsaXN0KCkJ e30KLSAgaW5saW5lIHZvaWQgZW1wdHkoKQkJeyBiYXNlX2lsaXN0OjplbXB0eSgpOyB9Ci0gIGlu bGluZSBib29sIGlzX2VtcHR5KCkgICAgICAgIHsgcmV0dXJuIGJhc2VfaWxpc3Q6OmlzX2VtcHR5 KCk7IH0gCi0gIGlubGluZSB2b2lkIHB1c2hfZnJvbnQoVCogYSkJeyBiYXNlX2lsaXN0OjpwdXNo X2Zyb250KGEpOyB9Ci0gIGlubGluZSB2b2lkIHB1c2hfYmFjayhUKiBhKQl7IGJhc2VfaWxpc3Q6 OnB1c2hfYmFjayhhKTsgfQotICBpbmxpbmUgVCogZ2V0KCkJCXsgcmV0dXJuIChUKikgYmFzZV9p bGlzdDo6Z2V0KCk7IH0KLSAgaW5saW5lIFQqIGhlYWQoKQkJeyByZXR1cm4gKFQqKSBiYXNlX2ls aXN0OjpoZWFkKCk7IH0KLSAgaW5saW5lIHZvaWQgbW92ZV9lbGVtZW50c190byhJX0xpc3Q8VD4q IG5ld19vd25lcikgewotICAgIGJhc2VfaWxpc3Q6Om1vdmVfZWxlbWVudHNfdG8obmV3X293bmVy KTsKKyAgdXNpbmcgYmFzZV9pbGlzdDxUPjo6ZW1wdHk7CisgIHVzaW5nIGJhc2VfaWxpc3Q8VD46 OmlzX2VtcHR5OworICB1c2luZyBiYXNlX2lsaXN0PFQ+OjpnZXQ7CisgIHVzaW5nIGJhc2VfaWxp c3Q8VD46OnB1c2hfZnJvbnQ7CisgIHVzaW5nIGJhc2VfaWxpc3Q8VD46OnB1c2hfYmFjazsKKyAg dXNpbmcgYmFzZV9pbGlzdDxUPjo6aGVhZDsKKyAgdm9pZCBtb3ZlX2VsZW1lbnRzX3RvKElfTGlz dDxUPiogbmV3X293bmVyKSB7CisgICAgYmFzZV9pbGlzdDxUPjo6bW92ZV9lbGVtZW50c190byhu ZXdfb3duZXIpOwogICB9CiAjaWZuZGVmIF9saW50CiAgIGZyaWVuZCBjbGFzcyBJX0xpc3RfaXRl cmF0b3I8VD47CkBAIC03MjgsMTEgKzc0NSwxMiBAQCBwdWJsaWM6CiB9OwogCiAKLXRlbXBsYXRl IDxjbGFzcyBUPiBjbGFzcyBJX0xpc3RfaXRlcmF0b3IgOnB1YmxpYyBiYXNlX2lsaXN0X2l0ZXJh dG9yCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gCitjbGFzcyBJX0xpc3RfaXRlcmF0b3IgOnB1YmxpYyBi YXNlX2lsaXN0X2l0ZXJhdG9yPFQ+CiB7CiBwdWJsaWM6Ci0gIElfTGlzdF9pdGVyYXRvcihJX0xp c3Q8VD4gJmEpIDogYmFzZV9pbGlzdF9pdGVyYXRvcihhKSB7fQotICBpbmxpbmUgVCogb3BlcmF0 b3IrKyhpbnQpIHsgcmV0dXJuIChUKikgYmFzZV9pbGlzdF9pdGVyYXRvcjo6bmV4dCgpOyB9Cisg IElfTGlzdF9pdGVyYXRvcihJX0xpc3Q8VD4gJmEpIDogYmFzZV9pbGlzdF9pdGVyYXRvcjxUPihh KSB7fQorICBpbmxpbmUgVCogb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuIGJhc2VfaWxpc3RfaXRl cmF0b3I8VD46Om5leHQoKTsgfQogfTsKIAogLyoqCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3Nx bF9vcHRpbWl6ZXIuY2MnCi0tLSBhL3NxbC9zcWxfb3B0aW1pemVyLmNjCTIwMTItMDItMTQgMTQ6 NDI6MTIgKzAwMDAKKysrIGIvc3FsL3NxbF9vcHRpbWl6ZXIuY2MJMjAxMi0wMi0xNSAxMzo1Nzox NyArMDAwMApAQCAtOTQ0LDcgKzk0NCw3IEBAIHZvaWQgcmVzZXRfbmpfY291bnRlcnMoTGlzdDxU QUJMRV9MSVNUPgogICBSZXR1cm4gaW4gY29uZF92YWx1ZSBGQUxTRSBpZiBjb25kaXRpb24gaXMg aW1wb3NzaWJsZSAoMSA9IDIpCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotY2xhc3MgQ09ORF9D TVAgOnB1YmxpYyBpbGluayB7CitjbGFzcyBDT05EX0NNUCA6cHVibGljIGlsaW5rPENPTkRfQ01Q PiB7CiBwdWJsaWM6CiAgIHN0YXRpYyB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpCiAg IHsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX3BhcnNlLmNjJwotLS0gYS9zcWwvc3FsX3Bh cnNlLmNjCTIwMTItMDItMDggMDY6NDU6MzEgKzAwMDAKKysrIGIvc3FsL3NxbF9wYXJzZS5jYwky MDEyLTAyLTE1IDEzOjU3OjE3ICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0IChj KSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDEyLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKQEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlICJzcWxfYm9vdHN0cmFwLmgiCiAj aW5jbHVkZSAib3B0X2V4cGxhaW4uaCIKICNpbmNsdWRlICJzcWxfcmV3cml0ZS5oIgorI2luY2x1 ZGUgImdsb2JhbF90aHJlYWRzLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiB1c2luZyBzdGQ6 Om1heDsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX3Nob3cuY2MnCi0tLSBhL3NxbC9zcWxf c2hvdy5jYwkyMDEyLTAyLTA4IDEyOjQ5OjMzICswMDAwCisrKyBiL3NxbC9zcWxfc2hvdy5jYwky MDEyLTAyLTE1IDE0OjAxOjA2ICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0IChj KSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDEyLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJvcHRfdHJhY2UuaCIgICAgIC8v IE9wdGltaXplciB0cmFjZSBpbmZvcm1hdGlvbiBzY2hlbWEgdGFibGVzCiAjaW5jbHVkZSAic3Fs X3RtcF90YWJsZS5oIiAvLyBUbXAgdGFibGVzCiAjaW5jbHVkZSAic3FsX29wdGltaXplci5oIiAv LyBKT0lOCisjaW5jbHVkZSAiZ2xvYmFsX3RocmVhZHMuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRo bT4KIHVzaW5nIHN0ZDo6bWF4OwpAQCAtMTk5NSw3ICsxOTk2LDcgQEAgdmlld19zdG9yZV9jcmVh dGVfaW5mbyhUSEQgKnRoZCwgVEFCTEVfTAogICByZXR1cm5zIGZvciBlYWNoIHRocmVhZDogdGhy ZWFkIGlkLCB1c2VyLCBob3N0LCBkYiwgY29tbWFuZCwgaW5mbwogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KIAotY2xhc3MgdGhyZWFkX2luZm8gOnB1YmxpYyBpbGluayB7CitjbGFzcyB0aHJlYWRfaW5m byA6cHVibGljIGlsaW5rPHRocmVhZF9pbmZvPiB7CiBwdWJsaWM6CiAgIHN0YXRpYyB2b2lkICpv cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpCiAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3Fs X3Rlc3QuY2MnCi0tLSBhL3NxbC9zcWxfdGVzdC5jYwkyMDExLTEyLTE0IDEyOjMyOjU1ICswMDAw CisrKyBiL3NxbC9zcWxfdGVzdC5jYwkyMDEyLTAyLTE1IDEzOjU3OjE3ICswMDAwCkBAIC0xLDQg KzEsNCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAy MDEyLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog CiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNs dWRlICJldmVudHMuaCIKICNlbmRpZgogCisjaW5jbHVkZSAiZ2xvYmFsX3RocmVhZHMuaCIKKwog c3RhdGljIGNvbnN0IGNoYXIgKmxvY2tfZGVzY3JpcHRpb25zW10gPQogewogICAvKiBUTF9VTkxP Q0sgICAgICAgICAgICAgICAgICAqLyAgIk5vIGxvY2siLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3Vu aXR0ZXN0L2d1bml0L3NxbF9saXN0LXQuY2MnCi0tLSBhL3VuaXR0ZXN0L2d1bml0L3NxbF9saXN0 LXQuY2MJMjAxMS0xMi0yMCAwOTo1MTowNSArMDAwMAorKysgYi91bml0dGVzdC9ndW5pdC9zcWxf bGlzdC10LmNjCTIwMTItMDItMTUgMTM6NTc6MTcgKzAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiBD b3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFs bCByaWdodHMgcmVzZXJ2ZWQuCisvKiBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTIsIE9yYWNsZSBh bmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTQyLDE2ICsxNDIsMTYgQEAgVEVTVF9GKFNxbExpc3RU ZXN0LCBEZWVwQ29weSkKIHsKICAgaW50IHZhbHVlc1tdID0gezExLCAyMiwgMzMsIDQyLCA1fTsK ICAgaW5zZXJ0X3ZhbHVlcyh2YWx1ZXMsICZtX2ludF9saXN0KTsKLSAgTUVNX1JPT1QgKm1lbV9y b290PSAoTUVNX1JPT1QqKSBtYWxsb2MoMSA8PCAyMCk7Ci0gIGluaXRfYWxsb2Nfcm9vdChtZW1f cm9vdCwgNDA5NiwgNDA5Nik7Ci0gIExpc3Q8aW50PiBsaXN0X2NvcHkobV9pbnRfbGlzdCwgbWVt X3Jvb3QpOworICBNRU1fUk9PVCBtZW1fcm9vdDsKKyAgaW5pdF9hbGxvY19yb290KCZtZW1fcm9v dCwgNDA5NiwgNDA5Nik7CisgIExpc3Q8aW50PiBsaXN0X2NvcHkobV9pbnRfbGlzdCwgJm1lbV9y b290KTsKICAgRVhQRUNUX0VRKGxpc3RfY29weS5lbGVtZW50cywgbV9pbnRfbGlzdC5lbGVtZW50 cyk7CiAgIHdoaWxlICghbGlzdF9jb3B5LmlzX2VtcHR5KCkpCiAgIHsKICAgICBFWFBFQ1RfRVEo Km1faW50X2xpc3QucG9wKCksICpsaXN0X2NvcHkucG9wKCkpOwogICB9CiAgIEVYUEVDVF9UUlVF KG1faW50X2xpc3QuaXNfZW1wdHkoKSk7Ci0gIGZyZWUobWVtX3Jvb3QpOworICBmcmVlX3Jvb3Qo Jm1lbV9yb290LCBNWUYoMCkpOwogfQogCiAKQEAgLTE3NSw3ICsxNzUsNyBAQCBURVNUX0YoU3Fs TGlzdFRlc3QsIEl0ZXJhdGUpCiAKIAogLy8gQSBzaW1wbGUgaGVscGVyIGNsYXNzIGZvciB0ZXN0 aW5nIGludHJ1c2l2ZSBsaXN0cy4KLWNsYXNzIExpbmtlZF9ub2RlIDogcHVibGljIGlsaW5rCitj bGFzcyBMaW5rZWRfbm9kZSA6IHB1YmxpYyBpbGluazxMaW5rZWRfbm9kZT4KIHsKIHB1YmxpYzoK ICAgTGlua2VkX25vZGUoaW50IHZhbCkgOiBtX3ZhbHVlKHZhbCkge30KQEAgLTE4Myw2ICsxODMs NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICBpbnQgbV92YWx1ZTsKIH07Citjb25zdCBMaW5rZWRf bm9kZSAqIGNvbnN0IG51bGxfbm9kZT0gTlVMTDsKIAogCiAvLyBBbiBleGFtcGxlIG9mIGEgdGVz dCB3aXRob3V0IGFueSBmaXh0dXJlLgpAQCAtMTkxLDE3ICsxOTIsMTcgQEAgVEVTVChTcWxJbGlz dFRlc3QsIENvbnN0cnVjdEFuZERlc3RydWN0KQogICBJX0xpc3Q8TGlua2VkX25vZGU+IGlfbGlz dDsKICAgSV9MaXN0X2l0ZXJhdG9yPExpbmtlZF9ub2RlPiBpX2xpc3RfaXRlcihpX2xpc3QpOwog ICBFWFBFQ1RfVFJVRShpX2xpc3QuaXNfZW1wdHkoKSk7Ci0gIGNvbnN0IExpbmtlZF9ub2RlICpu dWxsX25vZGU9IE5VTEw7CiAgIEVYUEVDVF9FUShudWxsX25vZGUsIGlfbGlzdF9pdGVyKyspOwog fQogCiAKIC8vIFRlc3RzIGl0ZXJhdGlvbiBvdmVyIGludHJ1c2l2ZSBsaXN0cy4KLVRFU1QoU3Fs SWxpc3RUZXN0LCBJdGVyYXRlKQorVEVTVChTcWxJbGlzdFRlc3QsIFB1c2hCYWNrQW5kSXRlcmF0 ZSkKIHsKICAgSV9MaXN0PExpbmtlZF9ub2RlPiBpX2xpc3Q7CiAgIElfTGlzdF9pdGVyYXRvcjxM aW5rZWRfbm9kZT4gaV9saXN0X2l0ZXIoaV9saXN0KTsKICAgaW50IHZhbHVlc1tdID0gezExLCAy MiwgMzMsIDQyLCA1fTsKKyAgRVhQRUNUX0VRKG51bGxfbm9kZSwgaV9saXN0LmhlYWQoKSk7CiAg IGZvciAoaW50IGl4PSAwOyBpeCA8IGFycmF5X3NpemUodmFsdWVzKTsgKytpeCkKICAgewogICAg IGlfbGlzdC5wdXNoX2JhY2sobmV3IExpbmtlZF9ub2RlKHZhbHVlc1tpeF0pKTsKQEAgLTIxMyw2 ICsyMTQsMTIgQEAgVEVTVChTcWxJbGlzdFRlc3QsIEl0ZXJhdGUpCiAgIHsKICAgICBFWFBFQ1Rf RVEodmFsdWVzW3ZhbHVlX251bWJlcisrXSwgbm9kZS0+Z2V0X3ZhbHVlKCkpOwogICB9CisgIGZv ciAodmFsdWVfbnVtYmVyPSAwOyAobm9kZT0gaV9saXN0LmdldCgpKTsgKyt2YWx1ZV9udW1iZXIp CisgIHsKKyAgICBFWFBFQ1RfRVEodmFsdWVzW3ZhbHVlX251bWJlcl0sIG5vZGUtPmdldF92YWx1 ZSgpKTsKKyAgICBkZWxldGUgbm9kZTsKKyAgfQorICBFWFBFQ1RfRVEoYXJyYXlfc2l6ZSh2YWx1 ZXMpLCB2YWx1ZV9udW1iZXIpOwogfQogCiAvLyBBbm90aGVyIGl0ZXJhdGlvbiB0ZXN0IG92ZXIg aW50cnVzaXZlIGxpc3RzLgpAQCAtMjMyLDYgKzIzOSw4IEBAIFRFU1QoU3FsSWxpc3RUZXN0LCBQ dXNoRnJvbnRBbmRJdGVyYXRlKQogICB7CiAgICAgRVhQRUNUX0VRKHZhbHVlc1t2YWx1ZV9udW1i ZXItLV0sIG5vZGUtPmdldF92YWx1ZSgpKTsKICAgfQorICB3aGlsZSAoKG5vZGU9IGlfbGlzdC5n ZXQoKSkpCisgICAgZGVsZXRlIG5vZGU7CiB9CiAKIHN0YXRpYyBpbnQgY21wX3Rlc3Qodm9pZCAq YSwgdm9pZCAqYiwgdm9pZCAqYykKCk5vIGJ1bmRsZSAocmVhc29uOiB1c2VsZXNzIGZvciBwdXNo IGVtYWlscyku