From: Jon Olav Hauglid Date: June 1 2011 8:07am Subject: bzr commit into mysql-5.5 branch (jon.hauglid:3416) Bug#11853126 List-Archive: http://lists.mysql.com/commits/138496 X-Bug: 11853126 Message-Id: <201106010807.p5187QRj031032@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3391874969593788946==" --===============3391874969593788946== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vZXhwb3J0L2hvbWUveC9teXNxbC01LjUtYnVnMTE4NTMxMjYvIGJhc2VkIG9u IHJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDExMDUzMTA5MTIzMi1hejB5eXQwbThwamlv YWYwCgogMzQxNiBKb24gT2xhdiBIYXVnbGlkCTIwMTEtMDYtMDEKICAgICAgQnVnIzExODUzMTI2 IFJFLUVOQUJMRSBDT05DVVJSRU5UIFJFQURTIFdISUxFIENSRUFUSU5HCiAgICAgICAgICAgICAg ICAgICBTRUNPTkRBUlkgSU5ERVggSU4gSU5OT0RCCiAgICAgIAogICAgICBUaGUgcGF0Y2hlcyBm b3IgQnVnIzExNzUxMzg4IGFuZCBCdWcjMTE3ODQwNTYgZW5hYmxlZCBjb25jdXJyZW50CiAgICAg IHJlYWRzIHdoaWxlIGNyZWF0aW5nIHNlY29uZGFyeSBpbmRleGVzIGluIElubm9EQi4gSG93ZXZl ciwgdGhleQogICAgICBpbnRyb2R1Y2VkIGEgcmVncmVzc2lvbi4gVGhpcyByZWdyZXNzaW9uIG9j Y3VyZWQgaWYgQUxURVIgVEFCTEUKICAgICAgZmFpbGVkIGFmdGVyIHRoZSBpbmRleCBoYWQgYmVl biBhZGRlZCwgZm9yIGV4YW1wbGUgZHVyaW5nIHRoZQogICAgICBsb2NrIHVwZ3JhZGUgbmVlZGVk IHRvIHVwZGF0ZSAuRlJNLiBJZiB0aGlzIGhhcHBlbmVkLCBJbm5vREIKICAgICAgYW5kIHRoZSBz ZXJ2ZXIgZ290IG91dCBvZiBzeW5jIHdpdGggcmVnYXJkcyB0byB3aGljaCBpbmRleGVzCiAgICAg IGFjdHVhbGx5IGV4aXN0ZWQuIFRoZXJlZm9yZSB0aGUgcGF0Y2ggZm9yIEJ1ZyMxMTgxNTYwMCBh Z2FpbgogICAgICBkaXNhYmxlZCBjb25jdXJyZW50IHJlYWRzLgogICAgICAKICAgICAgVGhpcyBw YXRjaCByZS1lbmFibGVzIGNvbmN1cnJlbnQgcmVhZHMuIFRoZSBvcmlnaW5hbCByZWdyZXNzaW9u CiAgICAgIGlzIGZpeGVkIGJ5IHNwbGl0dGluZyB0aGUgQUREIElOREVYIG9wZXJhdGlvbiBpbnRv IHR3byBwYXJ0cy4KICAgICAgRmlyc3QgdGhlIG5ldyBpbmRleCBpcyBjcmVhdGVkIGJ1dCBub3Qg bWFkZSBhY3RpdmUuIFRoaXMgaXMKICAgICAgZG9uZSB3aGlsZSBjb25jdXJyZW50IHJlYWRzIGFy ZSBhbGxvd2VkLiBUaGUgc2Vjb25kIHBhcnQgb2YKICAgICAgdGhlIG9wZXJhdGlvbiBtYWtlcyB0 aGUgaW5kZXggYWN0aXZlIChvciByZXZlcnRzIHRoZSBjaGFuZ2UpLgogICAgICBUaGlzIGlzIGRv bmUgYWZ0ZXIgbG9jayB1cGdyYWRlLCB3aGljaCBwcmV2ZW50cyB0aGUgb3JpZ2luYWwKICAgICAg cmVncmVzc2lvbi4KICAgICAgCiAgICAgIEluIG9yZGVyIHRvIGltcGxlbWVudCB0aGlzIGNoYW5n ZSwgdGhlIHBhdGNoIGNoYW5nZXMgdGhlIHN0b3JhZ2UKICAgICAgQVBJIGZvciBpbi1wbGFjZSBp bmRleCBjcmVhdGlvbi4gaGFuZGxlcjo6YWRkX2luZGV4KCkgaXMgc3BsaXQKICAgICAgaW50byB0 d28gZnVuY3Rpb25zLCBoYW5kbGVyX2FkZF9pbmRleCgpIGFuZAogICAgICBoYW5kbGVyOjpmaW5h bF9hZGRfaW5kZXgoKS4gVGhlIGZvcm1lciBmb3IgY3JlYXRpbmcgaW5kZXhlcyB3aXRob3V0CiAg ICAgIG1ha2luZyB0aGVtIHZpc2libGUgYW5kIHRoZSBsYXR0ZXIgZm9yIGNvbW1pdGluZyAoaS5l LiBtYWtpbmcKICAgICAgdmlzaWJsZSkgbmV3IGluZGV4ZXMgb3IgcmV2ZXJ0aW5nIHRoZSBjaGFu Z2VzLgogICAgICAKICAgICAgTGFyZ2UgcGFydHMgb2YgdGhpcyBwYXRjaCB3ZXJlIHdyaXR0ZW4g YnkgTWFya28gTcOka2Vsw6QuCiAgICAgIAogICAgICBUZXN0IGNhc2UgYWRkZWQgdG8gaW5ub2Ri X215c3FsX2xvY2sudGVzdC4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9yL2lubm9k Yl9teXNxbF9sb2NrLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX3N5bmMu cmVzdWx0CiAgICAgIG15c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfbG9jay50ZXN0CiAgICAgIG15 c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfc3luYy50ZXN0CiAgICAgIHNxbC9oYV9wYXJ0aXRpb24u Y2MKICAgICAgc3FsL2hhX3BhcnRpdGlvbi5oCiAgICAgIHNxbC9oYW5kbGVyLmgKICAgICAgc3Fs L3NxbF90YWJsZS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwo9PT0gbW9kaWZpZWQgZmlsZSAnbXlz cWwtdGVzdC9yL2lubm9kYl9teXNxbF9sb2NrLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL2lu bm9kYl9teXNxbF9sb2NrLnJlc3VsdAkyMDExLTAzLTA5IDE1OjA2OjEzICswMDAwCisrKyBiL215 c3FsLXRlc3Qvci9pbm5vZGJfbXlzcWxfbG9jay5yZXN1bHQJMjAxMS0wNi0wMSAwODowNjo1NSAr MDAwMApAQCAtMTUzLDYgKzE1Myw3IEBAIERST1AgVklFVyB2MTsKICMgICAgICAgICAgICAgIEtF WSBOTyAwIEZPUiBUQUJMRSBJTiBFUlJPUiBMT0cgCiAjCiBEUk9QIFRBQkxFIElGIEVYSVNUUyB0 MTsKKyMgVGVzdCAxOiBTZWNvbmRhcnkgaW5kZXgKICMgQ29ubmVjdGlvbiBkZWZhdWx0CiBDUkVB VEUgVEFCTEUgdDEgKGlkIElOVCBQUklNQVJZIEtFWSwgdmFsdWUgSU5UKSBFTkdJTkUgPSBJbm5v REI7CiBJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEsIDEyMzQ1KTsKQEAgLTE2NCw5ICsxNjUsMjgg QEAgaWQJdmFsdWUKIFNFVCBsb2NrX3dhaXRfdGltZW91dD0xOwogQUxURVIgVEFCTEUgdDEgQURE IElOREVYIGlkeCh2YWx1ZSk7CiBFUlJPUiBIWTAwMDogTG9jayB3YWl0IHRpbWVvdXQgZXhjZWVk ZWQ7IHRyeSByZXN0YXJ0aW5nIHRyYW5zYWN0aW9uCitBTFRFUiBUQUJMRSB0MSBBREQgSU5ERVgg aWR4KHZhbHVlKTsKK0VSUk9SIEhZMDAwOiBMb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZDsgdHJ5 IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24KICMgQ29ubmVjdGlvbiBkZWZhdWx0CiBTRUxFQ1QgKiBG Uk9NIHQxOwogaWQJdmFsdWUKIDEJMTIzNDUKIENPTU1JVDsKIERST1AgVEFCTEUgdDE7CisjIFRl c3QgMjogUHJpbWFyeSBpbmRleAorQ1JFQVRFIFRBQkxFIHQxKGEgSU5UIE5PVCBOVUxMLCBiIElO VCBOT1QgTlVMTCkgZW5naW5lPWlubm9kYjsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMSwgMTIz NDUpLCAoMiwgMjM0NTYpOworIyBDb25uZWN0aW9uIGNvbjEKK1NFVCBTRVNTSU9OIGRlYnVnPSAi K2QsYWx0ZXJfdGFibGVfcm9sbGJhY2tfbmV3X2luZGV4IjsKK0FMVEVSIFRBQkxFIHQxIEFERCBQ UklNQVJZIEtFWShhKTsKK0VSUk9SIEhZMDAwOiBVbmtub3duIGVycm9yCitTRUxFQ1QgKiBGUk9N IHQxOworYQliCisxCTEyMzQ1CisyCTIzNDU2CisjIENvbm5lY3Rpb24gZGVmYXVsdAorU0VMRUNU ICogRlJPTSB0MTsKK2EJYgorMQkxMjM0NQorMgkyMzQ1NgorRFJPUCBUQUJMRSB0MTsKCj09PSBt b2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX3N5bmMucmVzdWx0JwotLS0g YS9teXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX3N5bmMucmVzdWx0CTIwMTEtMDQtMDcgMDk6NDE6 MjAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdAkyMDEx LTA2LTAxIDA4OjA2OjU1ICswMDAwCkBAIC05NCw2ICs5NCw3NCBAQCBTRVQgREVCVUdfU1lOQz0g J1JFU0VUJzsKICMgQnVnIzQyMjMwIGR1cmluZyBhZGQgaW5kZXgsIGNhbm5vdCBkbyBxdWVyaWVz IG9uIHN0b3JhZ2UgZW5naW5lcwogIyAgICAgICAgICAgdGhhdCBpbXBsZW1lbnQgYWRkX2luZGV4 CiAjCi0jCi0jIERJU0FCTEVEIGR1ZSB0byBCdWcjMTE4MTU2MDAKLSMKK0RST1AgREFUQUJBU0Ug SUYgRVhJU1RTIGRiMTsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHQxOworIyBUZXN0IDE6IFNlY29u ZGFyeSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcyAob3JpZ2luYWwgdGVzdCBjYXNlKS4K KyMgQ29ubmVjdGlvbiBkZWZhdWx0CitDUkVBVEUgREFUQUJBU0UgZGIxOworQ1JFQVRFIFRBQkxF IGRiMS50MShpZCBJTlQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksIHZhbHVl IElOVCkgZW5naW5lPWlubm9kYjsKK0lOU0VSVCBJTlRPIGRiMS50MSh2YWx1ZSkgVkFMVUVTICgx KSwgKDIpOworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwg bWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoKK0FMVEVSIFRBQkxFIGRiMS50MSBB REQgSU5ERVgodmFsdWUpOworIyBDb25uZWN0aW9uIGNvbjEKK1NFVCBERUJVR19TWU5DPSAibm93 IFdBSVRfRk9SIG1hbmFnZSI7CitVU0UgZGIxOworU0VMRUNUICogRlJPTSB0MTsKK2lkCXZhbHVl CisxCTEKKzIJMgorU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKKyMgQ29ubmVj dGlvbiBkZWZhdWx0CisjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIGRiMS50MSBBREQgSU5ERVgodmFs dWUpCitEUk9QIERBVEFCQVNFIGRiMTsKKyMgVGVzdCAyOiBQcmltYXJ5IGluZGV4IChpbXBsaWNp dCksIHNob3VsZCBibG9jayByZWFkcy4KK0NSRUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVMTCwg YiBJTlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5vZGI7CitTRVQgREVCVUdfU1lOQz0gImFsdGVyX3Rh YmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOworIyBTZW5kaW5n OgorQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSBJTkRFWChhKTsKKyMgQ29ubmVjdGlvbiBjb24x CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworVVNFIHRlc3Q7CisjIFNl bmRpbmc6CitTRUxFQ1QgKiBGUk9NIHQxOworIyBDb25uZWN0aW9uIGNvbjIKKyMgV2FpdGluZyBm b3IgU0VMRUNUIHRvIGJlIGJsb2NrZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKK1NFVCBE RUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisjIENvbm5lY3Rpb24gZGVmYXVsdAorIyBS ZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIElOREVYKGEpCisjIENvbm5lY3Rpb24g Y29uMQorIyBSZWFwaW5nOiBTRUxFQ1QgKiBGUk9NIHQxCithCWIKKyMgVGVzdCAzOiBQcmltYXJ5 IGluZGV4IChleHBsaWNpdCksIHNob3VsZCBibG9jayByZWFkcy4KKyMgQ29ubmVjdGlvbiBkZWZh dWx0CitBTFRFUiBUQUJMRSB0MSBEUk9QIElOREVYIGE7CitTRVQgREVCVUdfU1lOQz0gImFsdGVy X3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOworIyBTZW5k aW5nOgorQUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIChhKTsKKyMgQ29ubmVjdGlvbiBj b24xCitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworIyBTZW5kaW5nOgor U0VMRUNUICogRlJPTSB0MTsKKyMgQ29ubmVjdGlvbiBjb24yCisjIFdhaXRpbmcgZm9yIFNFTEVD VCB0byBiZSBibG9ja2VkIGJ5IHRoZSBtZXRhZGF0YSBsb2NrIG9uIHQxCitTRVQgREVCVUdfU1lO Qz0gIm5vdyBTSUdOQUwgcXVlcnkiOworIyBDb25uZWN0aW9uIGRlZmF1bHQKKyMgUmVhcGluZzog QUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIChhKQorIyBDb25uZWN0aW9uIGNvbjEKKyMg UmVhcGluZzogU0VMRUNUICogRlJPTSB0MQorYQliCisjIFRlc3QgNDogU2Vjb25kYXJ5IHVuaXF1 ZSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcy4KKyMgQ29ubmVjdGlvbiBkZWZhdWx0CitT RVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJ VF9GT1IgcXVlcnkiOworIyBTZW5kaW5nOgorQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYik7 CisjIENvbm5lY3Rpb24gY29uMQorU0VUIERFQlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFuYWdl IjsKK1NFTEVDVCAqIEZST00gdDE7CithCWIKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBx dWVyeSI7CisjIENvbm5lY3Rpb24gZGVmYXVsdAorIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBB REQgVU5JUVVFIChiKQorU0VUIERFQlVHX1NZTkM9ICJSRVNFVCI7CitEUk9QIFRBQkxFIHQxOwoK PT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfbG9jay50ZXN0Jwot LS0gYS9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdAkyMDExLTAzLTA5IDE1OjA2 OjEzICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfbG9jay50ZXN0CTIwMTEt MDYtMDEgMDg6MDY6NTUgKzAwMDAKQEAgLTI5MCw2ICsyOTAsOCBAQCBEUk9QIFRBQkxFIElGIEVY SVNUUyB0MTsKIAogLS1jb25uZWN0IChjb24xLGxvY2FsaG9zdCxyb290KQogCistLWVjaG8gIyBU ZXN0IDE6IFNlY29uZGFyeSBpbmRleAorCiAtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKIGNv bm5lY3Rpb24gZGVmYXVsdDsKIENSRUFURSBUQUJMRSB0MSAoaWQgSU5UIFBSSU1BUlkgS0VZLCB2 YWx1ZSBJTlQpIEVOR0lORSA9IElubm9EQjsKQEAgLTMwMCw2ICszMDIsMTAgQEAgU0VMRUNUICog RlJPTSB0MTsKIC0tZWNobyAjIENvbm5lY3Rpb24gY29uMQogLS1jb25uZWN0aW9uIGNvbjEKIFNF VCBsb2NrX3dhaXRfdGltZW91dD0xOworIyBUZXN0IHdpdGggdHdvIHRpbWVvdXRzLCBhcyB0aGUg Zmlyc3QgdmVyc2lvbiBvZiB0aGlzIHBhdGNoCisjIG9ubHkgd29ya2VkIHdpdGggb25lIHRpbWVv dXQuCistLWVycm9yIEVSX0xPQ0tfV0FJVF9USU1FT1VUCitBTFRFUiBUQUJMRSB0MSBBREQgSU5E RVggaWR4KHZhbHVlKTsKIC0tZXJyb3IgRVJfTE9DS19XQUlUX1RJTUVPVVQKIEFMVEVSIFRBQkxF IHQxIEFERCBJTkRFWCBpZHgodmFsdWUpOwogCkBAIC0zMDgsNiArMzE0LDIyIEBAIEFMVEVSIFRB QkxFIHQxIEFERCBJTkRFWCBpZHgodmFsdWUpOwogU0VMRUNUICogRlJPTSB0MTsKIENPTU1JVDsK IERST1AgVEFCTEUgdDE7CisKKy0tZWNobyAjIFRlc3QgMjogUHJpbWFyeSBpbmRleAorQ1JFQVRF IFRBQkxFIHQxKGEgSU5UIE5PVCBOVUxMLCBiIElOVCBOT1QgTlVMTCkgZW5naW5lPWlubm9kYjsK K0lOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMSwgMTIzNDUpLCAoMiwgMjM0NTYpOworCistLWVjaG8g IyBDb25uZWN0aW9uIGNvbjEKKy0tY29ubmVjdGlvbiBjb24xCitTRVQgU0VTU0lPTiBkZWJ1Zz0g IitkLGFsdGVyX3RhYmxlX3JvbGxiYWNrX25ld19pbmRleCI7CistLWVycm9yIEVSX1VOS05PV05f RVJST1IKK0FMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWShhKTsKK1NFTEVDVCAqIEZST00g dDE7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorLS1jb25uZWN0aW9uIGRlZmF1bHQK K1NFTEVDVCAqIEZST00gdDE7CitEUk9QIFRBQkxFIHQxOwogZGlzY29ubmVjdCBjb24xOwogCiAK Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdCcK LS0tIGEvbXlzcWwtdGVzdC90L2lubm9kYl9teXNxbF9zeW5jLnRlc3QJMjAxMS0wMy0yMiAxMzoz NDowNCArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdAkyMDEx LTA2LTAxIDA4OjA2OjU1ICswMDAwCkBAIC0xNTIsMTMzICsxNTIsMTI5IEBAIGRpc2Nvbm5lY3Qg Y29uMTsKIC0tZWNobyAjICAgICAgICAgICB0aGF0IGltcGxlbWVudCBhZGRfaW5kZXgKIC0tZWNo byAjCiAKLS0tZWNobyAjCi0tLWVjaG8gIyBESVNBQkxFRCBkdWUgdG8gQnVnIzExODE1NjAwCi0t LWVjaG8gIworLS1kaXNhYmxlX3dhcm5pbmdzCitEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBkYjE7 CitEUk9QIFRBQkxFIElGIEVYSVNUUyB0MTsKKy0tZW5hYmxlX3dhcm5pbmdzCisKK2Nvbm5lY3Qo Y29uMSxsb2NhbGhvc3Qscm9vdCk7Citjb25uZWN0KGNvbjIsbG9jYWxob3N0LHJvb3QpOworCist LWVjaG8gIyBUZXN0IDE6IFNlY29uZGFyeSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcyAo b3JpZ2luYWwgdGVzdCBjYXNlKS4KKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25u ZWN0aW9uIGRlZmF1bHQ7CitDUkVBVEUgREFUQUJBU0UgZGIxOworQ1JFQVRFIFRBQkxFIGRiMS50 MShpZCBJTlQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksIHZhbHVlIElOVCkg ZW5naW5lPWlubm9kYjsKK0lOU0VSVCBJTlRPIGRiMS50MSh2YWx1ZSkgVkFMVUVTICgxKSwgKDIp OworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdl IFdBSVRfRk9SIHF1ZXJ5IjsKKy0tZWNobyAjIFNlbmRpbmc6CistLXNlbmQgQUxURVIgVEFCTEUg ZGIxLnQxIEFERCBJTkRFWCh2YWx1ZSkKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25u ZWN0aW9uIGNvbjE7CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworIyBO ZWl0aGVyIG9mIHRoZXNlIHR3byBzdGF0ZW1lbnRzIHNob3VsZCBiZSBibG9ja2VkCitVU0UgZGIx OworU0VMRUNUICogRlJPTSB0MTsKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7 CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1l Y2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgZGIxLnQxIEFERCBJTkRFWCh2YWx1ZSkKKy0tcmVh cAorRFJPUCBEQVRBQkFTRSBkYjE7CisKKy0tZWNobyAjIFRlc3QgMjogUHJpbWFyeSBpbmRleCAo aW1wbGljaXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCisKK0NSRUFURSBUQUJMRSB0MShhIElOVCBO T1QgTlVMTCwgYiBJTlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5vZGI7CitTRVQgREVCVUdfU1lOQz0g ImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOwor LS1lY2hvICMgU2VuZGluZzoKKy0tc2VuZCBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIElOREVY KGEpCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQorY29ubmVjdGlvbiBjb24xOworU0VUIERF QlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFuYWdlIjsKK1VTRSB0ZXN0OworLS1lY2hvICMgU2Vu ZGluZzoKKy0tc2VuZCBTRUxFQ1QgKiBGUk9NIHQxCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29u MgorY29ubmVjdGlvbiBjb24yOworLS1lY2hvICMgV2FpdGluZyBmb3IgU0VMRUNUIHRvIGJlIGJs b2NrZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKK2xldCAkd2FpdF9jb25kaXRpb249IFNF TEVDVCBDT1VOVCgqKT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAorICBX SEVSRSBzdGF0ZT0gJ1dhaXRpbmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCisgIEFORCBpbmZv PSdTRUxFQ1QgKiBGUk9NIHQxJzsKKy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5j CitTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworCistLWVjaG8gIyBDb25uZWN0 aW9uIGRlZmF1bHQKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKKy0tZWNobyAjIFJlYXBpbmc6IEFMVEVS IFRBQkxFIHQxIEFERCBVTklRVUUgSU5ERVgoYSkKKy0tcmVhcAorCistLWVjaG8gIyBDb25uZWN0 aW9uIGNvbjEKK2Nvbm5lY3Rpb24gY29uMTsKKy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAqIEZS T00gdDEKKy0tcmVhcAorCistLWVjaG8gIyBUZXN0IDM6IFByaW1hcnkgaW5kZXggKGV4cGxpY2l0 KSwgc2hvdWxkIGJsb2NrIHJlYWRzLgorCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKK2Nv bm5lY3Rpb24gZGVmYXVsdDsKK0FMVEVSIFRBQkxFIHQxIERST1AgSU5ERVggYTsKK1NFVCBERUJV R19TWU5DPSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBXQUlUX0ZPUiBx dWVyeSI7CistLWVjaG8gIyBTZW5kaW5nOgorLS1zZW5kIEFMVEVSIFRBQkxFIHQxIEFERCBQUklN QVJZIEtFWSAoYSkKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25uZWN0aW9uIGNvbjE7 CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworLS1lY2hvICMgU2VuZGlu ZzoKKy0tc2VuZCBTRUxFQ1QgKiBGUk9NIHQxCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29uMgor Y29ubmVjdGlvbiBjb24yOworLS1lY2hvICMgV2FpdGluZyBmb3IgU0VMRUNUIHRvIGJlIGJsb2Nr ZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKK2xldCAkd2FpdF9jb25kaXRpb249IFNFTEVD VCBDT1VOVCgqKT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAorICBXSEVS RSBzdGF0ZT0gJ1dhaXRpbmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCisgIEFORCBpbmZvPSdT RUxFQ1QgKiBGUk9NIHQxJzsKKy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCitT RVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworCistLWVjaG8gIyBDb25uZWN0aW9u IGRlZmF1bHQKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKKy0tZWNobyAjIFJlYXBpbmc6IEFMVEVSIFRB QkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSkKKy0tcmVhcAorCistLWVjaG8gIyBDb25uZWN0aW9u IGNvbjEKK2Nvbm5lY3Rpb24gY29uMTsKKy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAqIEZST00g dDEKKy0tcmVhcAorCistLWVjaG8gIyBUZXN0IDQ6IFNlY29uZGFyeSB1bmlxdWUgaW5kZXgsIHNo b3VsZCBub3QgYmxvY2sgcmVhZHMuCisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29u bmVjdGlvbiBkZWZhdWx0OworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5 cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKy0tZWNobyAjIFNlbmRpbmc6CistLXNl bmQgQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKKworLS1lY2hvICMgQ29ubmVjdGlvbiBj b24xCitjb25uZWN0aW9uIGNvbjE7CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5h Z2UiOworU0VMRUNUICogRlJPTSB0MTsKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVy eSI7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0Owor LS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKKy0tcmVhcAog Ci0jLS1kaXNhYmxlX3dhcm5pbmdzCi0jRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgZGIxOwotI0RS T1AgVEFCTEUgSUYgRVhJU1RTIHQxOwotIy0tZW5hYmxlX3dhcm5pbmdzCi0jCi0jY29ubmVjdChj b24xLGxvY2FsaG9zdCxyb290KTsKLSNjb25uZWN0KGNvbjIsbG9jYWxob3N0LHJvb3QpOwotIwot Iy0tZWNobyAjIFRlc3QgMTogU2Vjb25kYXJ5IGluZGV4LCBzaG91bGQgbm90IGJsb2NrIHJlYWRz IChvcmlnaW5hbCB0ZXN0IGNhc2UpLgotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAot I2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSNDUkVBVEUgREFUQUJBU0UgZGIxOwotI0NSRUFURSBUQUJM RSBkYjEudDEoaWQgSU5UIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLCB2YWx1 ZSBJTlQpIGVuZ2luZT1pbm5vZGI7Ci0jSU5TRVJUIElOVE8gZGIxLnQxKHZhbHVlKSBWQUxVRVMg KDEpLCAoMik7Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdO QUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBB TFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZhbHVlKQotIwotIy0tZWNobyAjIENvbm5lY3Rp b24gY29uMQotI2Nvbm5lY3Rpb24gY29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZP UiBtYW5hZ2UiOwotIyAjIE5laXRoZXIgb2YgdGhlc2UgdHdvIHN0YXRlbWVudHMgc2hvdWxkIGJl IGJsb2NrZWQKLSNVU0UgZGIxOwotI1NFTEVDVCAqIEZST00gdDE7Ci0jU0VUIERFQlVHX1NZTkM9 ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNj b25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgZGIxLnQx IEFERCBJTkRFWCh2YWx1ZSkKLSMtLXJlYXAKLSNEUk9QIERBVEFCQVNFIGRiMTsKLSMKLSMtLWVj aG8gIyBUZXN0IDI6IFByaW1hcnkgaW5kZXggKGltcGxpY2l0KSwgc2hvdWxkIGJsb2NrIHJlYWRz LgotIwotI0NSRUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVMTCwgYiBJTlQgTk9UIE5VTEwpIGVu Z2luZT1pbm5vZGI7Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBT SUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2Vu ZCBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIElOREVYKGEpCi0jCi0jLS1lY2hvICMgQ29ubmVj dGlvbiBjb24xCi0jY29ubmVjdGlvbiBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRf Rk9SIG1hbmFnZSI7Ci0jVVNFIHRlc3Q7Ci0jLS1lY2hvICMgU2VuZGluZzoKLSMtLXNlbmQgU0VM RUNUICogRlJPTSB0MQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMgotI2Nvbm5lY3Rpb24g Y29uMjsKLSMtLWVjaG8gIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUgYmxvY2tlZCBieSB0aGUg bWV0YWRhdGEgbG9jayBvbiB0MQotI2xldCAkd2FpdF9jb25kaXRpb249IFNFTEVDVCBDT1VOVCgq KT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAotIyAgV0hFUkUgc3RhdGU9 ICdXYWl0aW5nIGZvciB0YWJsZSBtZXRhZGF0YSBsb2NrJwotIyAgQU5EIGluZm89J1NFTEVDVCAq IEZST00gdDEnOwotIy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCi0jU0VUIERF QlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRl ZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFC TEUgdDEgQUREIFVOSVFVRSBJTkRFWChhKQotIy0tcmVhcAotIwotIy0tZWNobyAjIENvbm5lY3Rp b24gY29uMQotI2Nvbm5lY3Rpb24gY29uMTsKLSMtLWVjaG8gIyBSZWFwaW5nOiBTRUxFQ1QgKiBG Uk9NIHQxCi0jLS1yZWFwCi0jCi0jLS1lY2hvICMgVGVzdCAzOiBQcmltYXJ5IGluZGV4IChleHBs aWNpdCksIHNob3VsZCBibG9jayByZWFkcy4KLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1 bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jQUxURVIgVEFCTEUgdDEgRFJPUCBJTkRFWCBhOwot I1NFVCBERUJVR19TWU5DPSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBX QUlUX0ZPUiBxdWVyeSI7Ci0jLS1lY2hvICMgU2VuZGluZzoKLSMtLXNlbmQgQUxURVIgVEFCTEUg dDEgQUREIFBSSU1BUlkgS0VZIChhKQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nv bm5lY3Rpb24gY29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOwot Iy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1zZW5kIFNFTEVDVCAqIEZST00gdDEKLSMKLSMtLWVjaG8g IyBDb25uZWN0aW9uIGNvbjIKLSNjb25uZWN0aW9uIGNvbjI7Ci0jLS1lY2hvICMgV2FpdGluZyBm b3IgU0VMRUNUIHRvIGJlIGJsb2NrZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKLSNsZXQg JHdhaXRfY29uZGl0aW9uPSBTRUxFQ1QgQ09VTlQoKik9IDEgRlJPTSBpbmZvcm1hdGlvbl9zY2hl bWEucHJvY2Vzc2xpc3QKLSMgIFdIRVJFIHN0YXRlPSAnV2FpdGluZyBmb3IgdGFibGUgbWV0YWRh dGEgbG9jaycKLSMgIEFORCBpbmZvPSdTRUxFQ1QgKiBGUk9NIHQxJzsKLSMtLXNvdXJjZSBpbmNs dWRlL3dhaXRfY29uZGl0aW9uLmluYwotI1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVy eSI7Ci0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Ci0jY29ubmVjdGlvbiBkZWZhdWx0 OwotIy0tZWNobyAjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSkK LSMtLXJlYXAKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKLSNjb25uZWN0aW9uIGNvbjE7 Ci0jLS1lY2hvICMgUmVhcGluZzogU0VMRUNUICogRlJPTSB0MQotIy0tcmVhcAotIwotIy0tZWNo byAjIFRlc3QgNDogU2Vjb25kYXJ5IHVuaXF1ZSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFk cy4KLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7 Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdl IFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBBTFRFUiBUQUJM RSB0MSBBREQgVU5JUVVFIChiKQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nvbm5l Y3Rpb24gY29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOwotI1NF TEVDVCAqIEZST00gdDE7Ci0jU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMK LSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1l Y2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKLSMtLXJlYXAKLSMK LSNkaXNjb25uZWN0IGNvbjE7Ci0jZGlzY29ubmVjdCBjb24yOwotI1NFVCBERUJVR19TWU5DPSAi UkVTRVQiOwotI0RST1AgVEFCTEUgdDE7CitkaXNjb25uZWN0IGNvbjE7CitkaXNjb25uZWN0IGNv bjI7CitTRVQgREVCVUdfU1lOQz0gIlJFU0VUIjsKK0RST1AgVEFCTEUgdDE7CiAKIAogIyBDaGVj ayB0aGF0IGFsbCBjb25uZWN0aW9ucyBvcGVuZWQgYnkgdGVzdCBjYXNlcyBpbiB0aGlzIGZpbGUg YXJlIHJlYWxseQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYV9wYXJ0aXRpb24uY2MnCi0tLSBh L3NxbC9oYV9wYXJ0aXRpb24uY2MJMjAxMS0wNS0yMSAwODoyMTowOCArMDAwMAorKysgYi9zcWwv aGFfcGFydGl0aW9uLmNjCTIwMTEtMDYtMDEgMDg6MDY6NTUgKzAwMDAKQEAgLTY2NTYsMjIgKzY2 NTYsMjkgQEAgYm9vbCBoYV9wYXJ0aXRpb246OmNoZWNrX2lmX2luY29tcGF0aWJsZQogCiAKIC8q KgotICBTdXBwb3J0IG9mIGZhc3Qgb3Igb25saW5lIGFkZC9kcm9wIGluZGV4CisgIFN1cHBvcnQg b2YgaW4tcGxhY2UgYWRkL2Ryb3AgaW5kZXgKICovCi1pbnQgaGFfcGFydGl0aW9uOjphZGRfaW5k ZXgoVEFCTEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cykKK2lu dCBoYV9wYXJ0aXRpb246OmFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZv LCB1aW50IG51bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJf YWRkX2luZGV4ICoqYWRkKQogewogICBoYW5kbGVyICoqZmlsZTsKICAgaW50IHJldD0gMDsKIAog ICBEQlVHX0VOVEVSKCJoYV9wYXJ0aXRpb246OmFkZF9pbmRleCIpOworICAqYWRkPSBuZXcgaGFu ZGxlcl9hZGRfaW5kZXgodGFibGUsIGtleV9pbmZvLCBudW1fb2Zfa2V5cyk7CiAgIC8qCiAgICAg VGhlcmUgaGFzIGFscmVhZHkgYmVlbiBhIGNoZWNrIGluIGZpeF9wYXJ0aXRpb25fZnVuYyBpbiBt eXNxbF9hbHRlcl90YWJsZQogICAgIGJlZm9yZSB0aGlzIGNhbGwsIHdoaWNoIGNoZWNrcyBmb3Ig dW5pcXVlL3ByaW1hcnkga2V5IHZpb2xhdGlvbnMgb2YgdGhlCiAgICAgcGFydGl0aW9uaW5nIGZ1 bmN0aW9uLiBTbyBubyBuZWVkIGZvciBleHRyYSBjaGVjayBoZXJlLgogICAqLwogICBmb3IgKGZp bGU9IG1fZmlsZTsgKmZpbGU7IGZpbGUrKykKLSAgICBpZiAoKHJldD0gICgqZmlsZSktPmFkZF9p bmRleCh0YWJsZV9hcmcsIGtleV9pbmZvLCBudW1fb2Zfa2V5cykpKQorICB7CisgICAgaGFuZGxl cl9hZGRfaW5kZXggKmFkZF9pbmRleDsKKyAgICBpZiAoKHJldD0gKCpmaWxlKS0+YWRkX2luZGV4 KHRhYmxlX2FyZywga2V5X2luZm8sIG51bV9vZl9rZXlzLCAmYWRkX2luZGV4KSkpCisgICAgICBn b3RvIGVycjsKKyAgICBpZiAoKHJldD0gKCpmaWxlKS0+ZmluYWxfYWRkX2luZGV4KGFkZF9pbmRl eCwgdHJ1ZSkpKQogICAgICAgZ290byBlcnI7CisgIH0KICAgREJVR19SRVRVUk4ocmV0KTsKIGVy cjoKICAgaWYgKGZpbGUgPiBtX2ZpbGUpCkBAIC02Njk2LDYgKzY3MDMsNDIgQEAgZXJyOgogfQog CiAKKy8qKgorICAgU2Vjb25kIHBoYXNlIG9mIGluLXBsYWNlIGFkZCBpbmRleC4KKworICAgQG5v dGUgSWYgY29tbWl0IGlzIGZhbHNlLCBpbmRleCBjaGFuZ2VzIGFyZSByb2xsZWQgYmFjayBieSBk cm9wcGluZyB0aGUKKyAgICAgICAgIGFkZGVkIGluZGV4ZXMuIElmIGNvbW1pdCBpcyB0cnVlLCBu b3RoaW5nIGlzIGRvbmUgYXMgdGhlIGluZGV4ZXMKKyAgICAgICAgIHdlcmUgYWxyZWFkeSBtYWRl IGFjdGl2ZSBpbiA6OmFkZF9pbmRleCgpCisgKi8KKworaW50IGhhX3BhcnRpdGlvbjo6ZmluYWxf YWRkX2luZGV4KGhhbmRsZXJfYWRkX2luZGV4ICphZGQsIGJvb2wgY29tbWl0KQoreworICBEQlVH X0VOVEVSKCJoYV9wYXJ0aXRpb246OmZpbmFsX2FkZF9pbmRleCIpOworICAvLyBSb2xsYmFjayBi eSBkcm9wcGluZyBpbmRleGVzLgorICBpZiAoIWNvbW1pdCkKKyAgeworICAgIFRBQkxFICp0YWJs ZV9hcmc9IGFkZC0+dGFibGU7CisgICAgdWludCBudW1fb2Zfa2V5cz0gYWRkLT5udW1fb2Zfa2V5 czsKKyAgICBoYW5kbGVyICoqZmlsZTsKKyAgICB1aW50ICprZXlfbnVtYmVycz0gKHVpbnQqKSBo YV90aGQoKS0+YWxsb2Moc2l6ZW9mKHVpbnQpICogbnVtX29mX2tleXMpOworICAgIHVpbnQgb2xk X251bV9vZl9rZXlzPSB0YWJsZV9hcmctPnMtPmtleXM7CisgICAgdWludCBpOworICAgIC8qIFRo ZSBuZXdseSBjcmVhdGVkIGtleXMgaGF2ZSB0aGUgbGFzdCBpZCdzICovCisgICAgZm9yIChpPSAw OyBpIDwgbnVtX29mX2tleXM7IGkrKykKKyAgICAgIGtleV9udW1iZXJzW2ldPSBpICsgb2xkX251 bV9vZl9rZXlzOworICAgIGlmICghdGFibGVfYXJnLT5rZXlfaW5mbykKKyAgICAgIHRhYmxlX2Fy Zy0+a2V5X2luZm89IGFkZC0+a2V5X2luZm87CisgICAgZm9yIChmaWxlPSBtX2ZpbGU7ICpmaWxl OyBmaWxlKyspCisgICAgeworICAgICAgKHZvaWQpICgqZmlsZSktPnByZXBhcmVfZHJvcF9pbmRl eCh0YWJsZV9hcmcsIGtleV9udW1iZXJzLCBudW1fb2Zfa2V5cyk7CisgICAgICAodm9pZCkgKCpm aWxlKS0+ZmluYWxfZHJvcF9pbmRleCh0YWJsZV9hcmcpOworICAgIH0KKyAgICBpZiAodGFibGVf YXJnLT5rZXlfaW5mbyA9PSBhZGQtPmtleV9pbmZvKQorICAgICAgdGFibGVfYXJnLT5rZXlfaW5m bz0gTlVMTDsKKyAgfQorICBEQlVHX1JFVFVSTigwKTsKK30KKwogaW50IGhhX3BhcnRpdGlvbjo6 cHJlcGFyZV9kcm9wX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIHVpbnQgKmtleV9udW0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG51bV9vZl9rZXlzKQogewoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NxbC9oYV9wYXJ0aXRpb24uaCcKLS0tIGEvc3FsL2hhX3BhcnRpdGlvbi5o CTIwMTEtMDQtMjAgMTc6NTM6MDggKzAwMDAKKysrIGIvc3FsL2hhX3BhcnRpdGlvbi5oCTIwMTEt MDYtMDEgMDg6MDY6NTUgKzAwMDAKQEAgLTEwNTUsNyArMTA1NSw5IEBAIHB1YmxpYzoKICAgICBU aGV5IGFyZSB1c2VkIGZvciBvbi1saW5lL2Zhc3QgYWx0ZXIgdGFibGUgYWRkL2Ryb3AgaW5kZXg6 CiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLwotICB2aXJ0dWFsIGludCBhZGRfaW5kZXgoVEFC TEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cyk7CisgIHZpcnR1 YWwgaW50IGFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51 bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hZGRfaW5kZXggKiph ZGQpOworICB2aXJ0dWFsIGludCBmaW5hbF9hZGRfaW5kZXgoaGFuZGxlcl9hZGRfaW5kZXggKmFk ZCwgYm9vbCBjb21taXQpOwogICB2aXJ0dWFsIGludCBwcmVwYXJlX2Ryb3BfaW5kZXgoVEFCTEUg KnRhYmxlX2FyZywgdWludCAqa2V5X251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQgbnVtX29mX2tleXMpOwogICB2aXJ0dWFsIGludCBmaW5hbF9kcm9wX2luZGV4KFRB QkxFICp0YWJsZV9hcmcpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYW5kbGVyLmgnCi0tLSBh L3NxbC9oYW5kbGVyLmgJMjAxMS0wNS0wNSAyMzo1MDozMSArMDAwMAorKysgYi9zcWwvaGFuZGxl ci5oCTIwMTEtMDYtMDEgMDg6MDY6NTUgKzAwMDAKQEAgLTExNTksNiArMTE1OSwyNyBAQCB1aW50 IGNhbGN1bGF0ZV9rZXlfbGVuKFRBQkxFICosIHVpbnQsIGNvCiAqLwogI2RlZmluZSBtYWtlX3By ZXZfa2V5cGFydF9tYXAoTikgKCgoa2V5X3BhcnRfbWFwKTEgPDwgKE4pKSAtIDEpCiAKKworLyoq CisgIEluZGV4IGNyZWF0aW9uIGNvbnRleHQuCisgIENyZWF0ZWQgYnkgaGFuZGxlcjo6YWRkX2lu ZGV4KCkgYW5kIGZyZWVkIGJ5IGhhbmRsZXI6OmZpbmFsX2FkZF9pbmRleCgpLgorKi8KKworY2xh c3MgaGFuZGxlcl9hZGRfaW5kZXgKK3sKK3B1YmxpYzoKKyAgLyogVGFibGUgd2hlcmUgdGhlIGlu ZGV4ZXMgYXJlIGFkZGVkICovCisgIFRBQkxFKiBjb25zdCB0YWJsZTsKKyAgLyogSW5kZXhlcyBi ZWluZyBjcmVhdGVkICovCisgIEtFWSogY29uc3Qga2V5X2luZm87CisgIC8qIFNpemUgb2Yga2V5 X2luZm9bXSAqLworICBjb25zdCB1aW50IG51bV9vZl9rZXlzOworICBoYW5kbGVyX2FkZF9pbmRl eChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvX2FyZywgdWludCBudW1fb2Zfa2V5c19h cmcpCisgICAgOiB0YWJsZSAodGFibGVfYXJnKSwga2V5X2luZm8gKGtleV9pbmZvX2FyZyksIG51 bV9vZl9rZXlzIChudW1fb2Zfa2V5c19hcmcpCisgIHt9CisgIHZpcnR1YWwgfmhhbmRsZXJfYWRk X2luZGV4KCkge30KK307CisKIC8qKgogICBUaGUgaGFuZGxlciBjbGFzcyBpcyB0aGUgaW50ZXJm YWNlIGZvciBkeW5hbWljYWxseSBsb2FkYWJsZQogICBzdG9yYWdlIGVuZ2luZXMuIERvIG5vdCBh ZGQgaWZkZWZzIGFuZCB0YWtlIGNhcmUgd2hlbiBhZGRpbmcgb3IKQEAgLTE3MTcsOCArMTczOCwz NiBAQCBwdWJsaWM6CiAKICAgdmlydHVhbCB1bG9uZyBpbmRleF9mbGFncyh1aW50IGlkeCwgdWlu dCBwYXJ0LCBib29sIGFsbF9wYXJ0cykgY29uc3QgPTA7CiAKLSAgdmlydHVhbCBpbnQgYWRkX2lu ZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMpCisv KioKKyAgIEZpcnN0IHBoYXNlIG9mIGluLXBsYWNlIGFkZCBpbmRleC4KKyAgIEhhbmRsZXJzIGFy ZSBzdXBwb3NlZCB0byBjcmVhdGUgbmV3IGluZGV4ZXMgaGVyZSBidXQgbm90IG1ha2UgdGhlbQor ICAgdmlzaWJsZS4KKworICAgQHBhcmFtIHRhYmxlX2FyZyAgIFRhYmxlIHRvIGFkZCBpbmRleCB0 bworICAgQHBhcmFtIGtleV9pbmZvICAgIEluZm9ybWF0aW9uIGFib3V0IG5ldyBpbmRleGVzCisg ICBAcGFyYW0gbnVtX29mX2tleSAgTnVtYmVyIG9mIG5ldyBpbmRleGVzCisgICBAcGFyYW0gYWRk W291dF0gICAgQ29udGV4dCBvZiBoYW5kbGVyIHNwZWNpZmljIGluZm9ybWF0aW9uIG5lZWRlZAor ICAgICAgICAgICAgICAgICAgICAgIGZvciBmaW5hbF9hZGRfaW5kZXgoKS4KKworICAgQG5vdGUg VGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggbGVzcyB0aGFuIGV4Y2x1c2l2ZSBtZXRh ZGF0YQorICAgbG9jayBkZXBlbmRpbmcgb24gd2hpY2ggZmxhZ3MgYXJlIGxpc3RlZCBpbiBhbHRl cl90YWJsZV9mbGFncy4KKyovCisgIHZpcnR1YWwgaW50IGFkZF9pbmRleChUQUJMRSAqdGFibGVf YXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAg ICAgICAgaGFuZGxlcl9hZGRfaW5kZXggKiphZGQpCisgIHsgcmV0dXJuIChIQV9FUlJfV1JPTkdf Q09NTUFORCk7IH0KKworLyoqCisgICBTZWNvbmQgYW5kIGxhc3QgcGhhc2Ugb2YgaW4tcGxhY2Ug YWRkIGluZGV4LgorICAgQ29tbWl0IG9yIHJvbGxiYWNrIHBlbmRpbmcgbmV3IGluZGV4ZXMuCisK KyAgIEBwYXJhbSBhZGQgICAgIENvbnRleHQgb2YgaGFuZGxlciBzcGVjaWZpYyBpbmZvcm1hdGlv biBmcm9tIGFkZF9pbmRleCgpLgorICAgQHBhcmFtIGNvbW1pdCAgSWYgdHJ1ZSwgY29tbWl0LiBJ ZiBmYWxzZSwgcm9sbGJhY2sgaW5kZXggY2hhbmdlcy4KKworICAgQG5vdGUgVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgd2l0aCBleGNsdXNpdmUgbWV0YWRhdGEgbG9jay4KKyovCisgIHZpcnR1YWwg aW50IGZpbmFsX2FkZF9pbmRleChoYW5kbGVyX2FkZF9pbmRleCAqYWRkLCBib29sIGNvbW1pdCkK ICAgeyByZXR1cm4gKEhBX0VSUl9XUk9OR19DT01NQU5EKTsgfQorCiAgIHZpcnR1YWwgaW50IHBy ZXBhcmVfZHJvcF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCB1aW50ICprZXlfbnVtLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBudW1fb2Zfa2V5cykKICAgeyByZXR1cm4g KEhBX0VSUl9XUk9OR19DT01NQU5EKTsgfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfdGFi bGUuY2MnCi0tLSBhL3NxbC9zcWxfdGFibGUuY2MJMjAxMS0wNS0yMSAwODoyMTowOCArMDAwMAor KysgYi9zcWwvc3FsX3RhYmxlLmNjCTIwMTEtMDYtMDEgMDg6MDY6NTUgKzAwMDAKQEAgLTU2ODAs NiArNTY4MCw4IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQsY2hhciAqbmUKICAg dWludCBpbmRleF9kcm9wX2NvdW50PSAwOwogICB1aW50ICppbmRleF9kcm9wX2J1ZmZlcj0gTlVM TDsKICAgdWludCBpbmRleF9hZGRfY291bnQ9IDA7CisgIGhhbmRsZXJfYWRkX2luZGV4ICphZGQ9 IE5VTEw7CisgIGJvb2wgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7CiAgIHVpbnQg KmluZGV4X2FkZF9idWZmZXI9IE5VTEw7CiAgIHVpbnQgY2FuZGlkYXRlX2tleV9jb3VudD0gMDsK ICAgYm9vbCBub19wazsKQEAgLTY0MzQsNiArNjQzNiw5IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFi bGUoVEhEICp0aGQsY2hhciAqbmUKICAgfQogICB0aGQtPmNvdW50X2N1dGVkX2ZpZWxkcz0gQ0hF Q0tfRklFTERfSUdOT1JFOwogCisgIGlmIChlcnJvcikKKyAgICBnb3RvIGVycl9uZXdfdGFibGVf Y2xlYW51cDsKKwogICAvKiBJZiB3ZSBkaWQgbm90IG5lZWQgdG8gY29weSwgd2UgbWlnaHQgc3Rp bGwgbmVlZCB0byBhZGQvZHJvcCBpbmRleGVzLiAqLwogICBpZiAoISBuZXdfdGFibGUpCiAgIHsK QEAgLTY0NjUsNyArNjQ3MCw4IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQsY2hh ciAqbmUKICAgICAgICAgICBrZXlfcGFydC0+ZmllbGQ9IHRhYmxlLT5maWVsZFtrZXlfcGFydC0+ ZmllbGRucl07CiAgICAgICB9CiAgICAgICAvKiBBZGQgdGhlIGluZGV4ZXMuICovCi0gICAgICBp ZiAoKGVycm9yPSB0YWJsZS0+ZmlsZS0+YWRkX2luZGV4KHRhYmxlLCBrZXlfaW5mbywgaW5kZXhf YWRkX2NvdW50KSkpCisgICAgICBpZiAoKGVycm9yPSB0YWJsZS0+ZmlsZS0+YWRkX2luZGV4KHRh YmxlLCBrZXlfaW5mbywgaW5kZXhfYWRkX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmYWRkKSkpCiAgICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAg RXhjaGFuZ2UgdGhlIGtleV9pbmZvIGZvciB0aGUgZXJyb3IgbWVzc2FnZS4gSWYgd2UgZXhjaGFu Z2UKQEAgLTY0NzcsMTEgKzY0ODMsMjcgQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShUSEQgKnRo ZCxjaGFyICpuZQogICAgICAgICB0YWJsZS0+a2V5X2luZm89IHNhdmVfa2V5X2luZm87CiAgICAg ICAgIGdvdG8gZXJyX25ld190YWJsZV9jbGVhbnVwOwogICAgICAgfQorICAgICAgcGVuZGluZ19p bnBsYWNlX2FkZF9pbmRleD0gdHJ1ZTsKICAgICB9CiAgICAgLyplbmQgb2YgaWYgKGluZGV4X2Fk ZF9jb3VudCkqLwogCiAgICAgaWYgKGluZGV4X2Ryb3BfY291bnQpCiAgICAgeworICAgICAgLyog Q3VycmVudGx5IHdlIG11c3QgZmluYWxpemUgYWRkIGluZGV4IGlmIHdlIGFsc28gZHJvcCBpbmRl eGVzICovCisgICAgICBpZiAocGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleCkKKyAgICAgIHsKKyAg ICAgICAgLyogQ29tbWl0dGluZyBpbmRleCBjaGFuZ2VzIG5lZWRzIGV4Y2x1c2l2ZSBtZXRhZGF0 YSBsb2NrLiAqLworICAgICAgICBEQlVHX0FTU0VSVCh0aGQtPm1kbF9jb250ZXh0LmlzX2xvY2tf b3duZXIoTURMX2tleTo6VEFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YWJsZV9saXN0LT5kYiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2xpc3QtPnRhYmxlX25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRExfRVhDTFVT SVZFKSk7CisgICAgICAgIGlmICgoZXJyb3I9IHRhYmxlLT5maWxlLT5maW5hbF9hZGRfaW5kZXgo YWRkLCB0cnVlKSkpCisgICAgICAgIHsKKyAgICAgICAgICB0YWJsZS0+ZmlsZS0+cHJpbnRfZXJy b3IoZXJyb3IsIE1ZRigwKSk7CisgICAgICAgICAgZ290byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7 CisgICAgICAgIH0KKyAgICAgICAgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7Cisg ICAgICB9CiAgICAgICAvKiBUaGUgcHJlcGFyZV9kcm9wX2luZGV4KCkgbWV0aG9kIHRha2VzIGFu IGFycmF5IG9mIGtleSBudW1iZXJzLiAqLwogICAgICAga2V5X251bWJlcnM9ICh1aW50KikgdGhk LT5hbGxvYyhzaXplb2YodWludCkgKiBpbmRleF9kcm9wX2NvdW50KTsKICAgICAgIGtleW5vX3A9 IGtleV9udW1iZXJzOwpAQCAtNjUyMiwxMSArNjU0NCwxNCBAQCBib29sIG15c3FsX2FsdGVyX3Rh YmxlKFRIRCAqdGhkLGNoYXIgKm5lCiAgIH0KICAgLyplbmQgb2YgaWYgKCEgbmV3X3RhYmxlKSBm b3IgYWRkL2Ryb3AgaW5kZXgqLwogCi0gIGlmIChlcnJvcikKLSAgICBnb3RvIGVycl9uZXdfdGFi bGVfY2xlYW51cDsKLQogICBpZiAodGFibGUtPnMtPnRtcF90YWJsZSAhPSBOT19UTVBfVEFCTEUp CiAgIHsKKyAgICAvKgorICAgICAgSW4tcGxhY2Ugb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRl ZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcywgc28KKyAgICAgIHdlIGRvbid0IGhhdmUgdG8gY2FsbCBm aW5hbF9hZGRfaW5kZXgoKSBpbiB0aGlzIGNhc2UuIFRoZSBhc3NlcnQKKyAgICAgIHZlcmlmaWVz IHRoYXQgaW4tcGxhY2UgYWRkIGluZGV4IGhhcyBub3QgYmVlbiBkb25lLgorICAgICovCisgICAg REJVR19BU1NFUlQoIXBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXgpOwogICAgIC8qIENsb3NlIGxv Y2sgaWYgdGhpcyBpcyBhIHRyYW5zYWN0aW9uYWwgdGFibGUgKi8KICAgICBpZiAodGhkLT5sb2Nr KQogICAgIHsKQEAgLTY1OTMsOCArNjYxOCwzMCBAQCBib29sIG15c3FsX2FsdGVyX3RhYmxlKFRI RCAqdGhkLGNoYXIgKm5lCiAgICAgbXlfY2FzZWRuX3N0cihmaWxlc19jaGFyc2V0X2luZm8sIG9s ZF9uYW1lKTsKIAogICBpZiAod2FpdF93aGlsZV90YWJsZV9pc191c2VkKHRoZCwgdGFibGUsIEhB X0VYVFJBX1BSRVBBUkVfRk9SX1JFTkFNRSkpCisgIHsKKyAgICBpZiAocGVuZGluZ19pbnBsYWNl X2FkZF9pbmRleCkKKyAgICB7CisgICAgICBwZW5kaW5nX2lucGxhY2VfYWRkX2luZGV4PSBmYWxz ZTsKKyAgICAgIHRhYmxlLT5maWxlLT5maW5hbF9hZGRfaW5kZXgoYWRkLCBmYWxzZSk7CisgICAg fQorICAgIC8vIE1hcmsgdGhpcyBUQUJMRSBpbnN0YW5jZSBhcyBzdGFsZSB0byBhdm9pZCBvdXQt b2Ytc3luYyBpbmRleCBpbmZvcm1hdGlvbi4KKyAgICB0YWJsZS0+bV9uZWVkc19yZW9wZW49IHRy dWU7CiAgICAgZ290byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7Ci0KKyAgfQorICBpZiAocGVuZGlu Z19pbnBsYWNlX2FkZF9pbmRleCkKKyAgeworICAgIHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9 IGZhbHNlOworICAgIERCVUdfRVhFQ1VURV9JRigiYWx0ZXJfdGFibGVfcm9sbGJhY2tfbmV3X2lu ZGV4IiwgeworICAgICAgdGFibGUtPmZpbGUtPmZpbmFsX2FkZF9pbmRleChhZGQsIGZhbHNlKTsK KyAgICAgIG15X2Vycm9yKEVSX1VOS05PV05fRVJST1IsIE1ZRigwKSk7CisgICAgICBnb3RvIGVy cl9uZXdfdGFibGVfY2xlYW51cDsKKyAgICB9KTsKKyAgICBpZiAoKGVycm9yPSB0YWJsZS0+Zmls ZS0+ZmluYWxfYWRkX2luZGV4KGFkZCwgdHJ1ZSkpKQorICAgIHsKKyAgICAgIHRhYmxlLT5maWxl LT5wcmludF9lcnJvcihlcnJvciwgTVlGKDApKTsKKyAgICAgIGdvdG8gZXJyX25ld190YWJsZV9j bGVhbnVwOworICAgIH0KKyAgfQogCiAgIGNsb3NlX2FsbF90YWJsZXNfZm9yX25hbWUodGhkLCB0 YWJsZS0+cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSAhPSB0YWJsZV9u YW1lIHx8IG5ld19kYiAhPSBkYik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9oYW5kbGVyL2hhX2lubm9kYi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hh X2lubm9kYi5jYwkyMDExLTA1LTMxIDA5OjEyOjMyICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaGFuZGxlci9oYV9pbm5vZGIuY2MJMjAxMS0wNi0wMSAwODowNjo1NSArMDAwMApAQCAtMjYy Nyw4ICsyNjI3LDEwIEBAIGlubm9iYXNlX2FsdGVyX3RhYmxlX2ZsYWdzKAogCXVpbnQJZmxhZ3Mp CiB7CiAJcmV0dXJuKEhBX0lOUExBQ0VfQUREX0lOREVYX05PX1JFQURfV1JJVEUKKwkJfCBIQV9J TlBMQUNFX0FERF9JTkRFWF9OT19XUklURQogCQl8IEhBX0lOUExBQ0VfRFJPUF9JTkRFWF9OT19S RUFEX1dSSVRFCiAJCXwgSEFfSU5QTEFDRV9BRERfVU5JUVVFX0lOREVYX05PX1JFQURfV1JJVEUK KwkJfCBIQV9JTlBMQUNFX0FERF9VTklRVUVfSU5ERVhfTk9fV1JJVEUKIAkJfCBIQV9JTlBMQUNF X0RST1BfVU5JUVVFX0lOREVYX05PX1JFQURfV1JJVEUKIAkJfCBIQV9JTlBMQUNFX0FERF9QS19J TkRFWF9OT19SRUFEX1dSSVRFKTsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9o YV9pbm5vZGIuaAkyMDExLTA0LTExIDE0OjAzOjMyICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaGFuZGxlci9oYV9pbm5vZGIuaAkyMDExLTA2LTAxIDA4OjA2OjU1ICswMDAwCkBAIC0yMTUs NyArMjE1LDkgQEAgY2xhc3MgaGFfaW5ub2Jhc2U6IHB1YmxpYyBoYW5kbGVyCiAJYm9vbCBwcmlt YXJ5X2tleV9pc19jbHVzdGVyZWQoKTsKIAlpbnQgY21wX3JlZihjb25zdCB1Y2hhciAqcmVmMSwg Y29uc3QgdWNoYXIgKnJlZjIpOwogCS8qKiBGYXN0IGluZGV4IGNyZWF0aW9uIChzbWFydCBBTFRF UiBUQUJMRSkgQHNlZSBoYW5kbGVyMGFsdGVyLmNjIEB7ICovCi0JaW50IGFkZF9pbmRleChUQUJM RSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzKTsKKwlpbnQgYWRk X2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMs CisJCSAgICAgIGhhbmRsZXJfYWRkX2luZGV4ICoqYWRkKTsKKwlpbnQgZmluYWxfYWRkX2luZGV4 KGhhbmRsZXJfYWRkX2luZGV4ICphZGQsIGJvb2wgY29tbWl0KTsKIAlpbnQgcHJlcGFyZV9kcm9w X2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIHVpbnQgKmtleV9udW0sCiAJCQkgICAgICAgdWludCBu dW1fb2Zfa2V5cyk7CiAJaW50IGZpbmFsX2Ryb3BfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZyk7Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIu Y2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCTIwMTEt MDUtMzEgMDk6MTI6MzIgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRs ZXIwYWx0ZXIuY2MJMjAxMS0wNi0wMSAwODowNjo1NSArMDAwMApAQCAtNjQwLDYgKzY0MCwxOCBA QCBpbm5vYmFzZV9jcmVhdGVfdGVtcG9yYXJ5X3RhYmxlbmFtZSgKIAlyZXR1cm4obmFtZSk7CiB9 CiAKK2NsYXNzIGhhX2lubm9iYXNlX2FkZF9pbmRleCA6IHB1YmxpYyBoYW5kbGVyX2FkZF9pbmRl eAoreworcHVibGljOgorCS8qKiB0YWJsZSB3aGVyZSB0aGUgaW5kZXhlcyBhcmUgYmVpbmcgY3Jl YXRlZCAqLworCWRpY3RfdGFibGVfdCogaW5kZXhlZF90YWJsZTsKKwloYV9pbm5vYmFzZV9hZGRf aW5kZXgoVEFCTEUqIHRhYmxlLCBLRVkqIGtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzLAorCQkJ ICAgICAgZGljdF90YWJsZV90KiBpbmRleGVkX3RhYmxlX2FyZykgOgorCQloYW5kbGVyX2FkZF9p bmRleCh0YWJsZSwga2V5X2luZm8sIG51bV9vZl9rZXlzKSwKKwkJaW5kZXhlZF90YWJsZSAoaW5k ZXhlZF90YWJsZV9hcmcpIHt9CisJfmhhX2lubm9iYXNlX2FkZF9pbmRleCgpIHt9Cit9OworCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKIENyZWF0ZSBpbmRleGVzLgogQHJldHVybgkwIG9yIGVycm9yIG51bWJl ciAqLwpAQCAtNjQ3LDEyICs2NTksMTUgQEAgVU5JVl9JTlRFUk4KIGludAogaGFfaW5ub2Jhc2U6 OmFkZF9pbmRleCgKIC8qPT09PT09PT09PT09PT09PT09PSovCi0JVEFCTEUqCXRhYmxlLAkJLyoh PCBpbjogVGFibGUgd2hlcmUgaW5kZXhlcyBhcmUgY3JlYXRlZCAqLwotCUtFWSoJa2V5X2luZm8s CS8qITwgaW46IEluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwotCXVpbnQJbnVtX29mX2tleXMpCS8q ITwgaW46IE51bWJlciBvZiBpbmRleGVzIHRvIGJlIGNyZWF0ZWQgKi8KKwlUQUJMRSoJCQl0YWJs ZSwJCS8qITwgaW46IFRhYmxlIHdoZXJlIGluZGV4ZXMKKwkJCQkJCWFyZSBjcmVhdGVkICovCisJ S0VZKgkJCWtleV9pbmZvLAkvKiE8IGluOiBJbmRleGVzCisJCQkJCQl0byBiZSBjcmVhdGVkICov CisJdWludAkJCW51bV9vZl9rZXlzLAkvKiE8IGluOiBOdW1iZXIgb2YgaW5kZXhlcworCQkJCQkJ dG8gYmUgY3JlYXRlZCAqLworCWhhbmRsZXJfYWRkX2luZGV4KioJYWRkKQkJLyohPCBvdXQ6IGNv bnRleHQgKi8KIHsKIAlkaWN0X2luZGV4X3QqKglpbmRleDsJCS8qITwgSW5kZXggdG8gYmUgY3Jl YXRlZCAqLwotCWRpY3RfdGFibGVfdCoJaW5ub2RiX3RhYmxlOwkvKiE8IElubm9EQiB0YWJsZSBp biBkaWN0aW9uYXJ5ICovCiAJZGljdF90YWJsZV90KglpbmRleGVkX3RhYmxlOwkvKiE8IFRhYmxl IHdoZXJlIGluZGV4ZXMgYXJlIGNyZWF0ZWQgKi8KIAltZXJnZV9pbmRleF9kZWZfdCogaW5kZXhf ZGVmczsJLyohPCBJbmRleCBkZWZpbml0aW9ucyAqLwogCW1lbV9oZWFwX3QqICAgICBoZWFwOwkJ LyohPCBIZWFwIGZvciBpbmRleCBkZWZpbml0aW9ucyAqLwpAQCAtNjY4LDYgKzY4Myw4IEBAIGhh X2lubm9iYXNlOjphZGRfaW5kZXgoCiAJdXRfYShrZXlfaW5mbyk7CiAJdXRfYShudW1fb2Zfa2V5 cyk7CiAKKwkqYWRkID0gTlVMTDsKKwogCWlmIChzcnZfY3JlYXRlZF9uZXdfcmF3IHx8IHNydl9m b3JjZV9yZWNvdmVyeSkgewogCQlEQlVHX1JFVFVSTihIQV9FUlJfV1JPTkdfQ09NTUFORCk7CiAJ fQpAQCAtNjgzLDE1ICs3MDAsMTYgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAkJREJVR19S RVRVUk4oLTEpOwogCX0KIAotCWlubm9kYl90YWJsZSA9IGluZGV4ZWRfdGFibGUKLQkJPSBkaWN0 X3RhYmxlX2dldChwcmVidWlsdC0+dGFibGUtPm5hbWUsIEZBTFNFKTsKKwlpbmRleGVkX3RhYmxl ID0gZGljdF90YWJsZV9nZXQocHJlYnVpbHQtPnRhYmxlLT5uYW1lLCBGQUxTRSk7CiAKLQlpZiAo VU5JVl9VTkxJS0VMWSghaW5ub2RiX3RhYmxlKSkgeworCWlmIChVTklWX1VOTElLRUxZKCFpbmRl eGVkX3RhYmxlKSkgewogCQlEQlVHX1JFVFVSTihIQV9FUlJfTk9fU1VDSF9UQUJMRSk7CiAJfQog CisJdXRfYShpbmRleGVkX3RhYmxlID09IHByZWJ1aWx0LT50YWJsZSk7CisKIAkvKiBDaGVjayB0 aGF0IGluZGV4IGtleXMgYXJlIHNlbnNpYmxlICovCi0JZXJyb3IgPSBpbm5vYmFzZV9jaGVja19p bmRleF9rZXlzKGtleV9pbmZvLCBudW1fb2Zfa2V5cywgaW5ub2RiX3RhYmxlKTsKKwllcnJvciA9 IGlubm9iYXNlX2NoZWNrX2luZGV4X2tleXMoa2V5X2luZm8sIG51bV9vZl9rZXlzLCBwcmVidWls dC0+dGFibGUpOwogCiAJaWYgKFVOSVZfVU5MSUtFTFkoZXJyb3IpKSB7CiAJCURCVUdfUkVUVVJO KGVycm9yKTsKQEAgLTcwMCw3ICs3MTgsNyBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCS8q IENoZWNrIGVhY2ggaW5kZXgncyBjb2x1bW4gbGVuZ3RoIHRvIG1ha2Ugc3VyZSB0aGV5IGRvIG5v dAogCWV4Y2VlZCBsaW1pdCAqLwogCWZvciAodWxpbnQgaSA9IDA7IGkgPCBudW1fb2Zfa2V5czsg aSsrKSB7Ci0JCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tfY29sdW1uX2xlbmd0aChpbm5vZGJfdGFi bGUsCisJCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tfY29sdW1uX2xlbmd0aChwcmVidWlsdC0+dGFi bGUsCiAJCQkJCQkgICAgICZrZXlfaW5mb1tpXSk7CiAKIAkJaWYgKGVycm9yKSB7CkBAIC03MjMs NyArNzQxLDcgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAludW1fb2ZfaWR4ID0gbnVtX29m X2tleXM7CiAKIAlpbmRleF9kZWZzID0gaW5ub2Jhc2VfY3JlYXRlX2tleV9kZWYoCi0JCXRyeCwg aW5ub2RiX3RhYmxlLCBoZWFwLCBrZXlfaW5mbywgbnVtX29mX2lkeCk7CisJCXRyeCwgcHJlYnVp bHQtPnRhYmxlLCBoZWFwLCBrZXlfaW5mbywgbnVtX29mX2lkeCk7CiAKIAluZXdfcHJpbWFyeSA9 IERJQ1RfQ0xVU1RFUkVEICYgaW5kZXhfZGVmc1swXS5pbmRfdHlwZTsKIApAQCAtNzM3LDcgKzc1 NSw3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJdHJ4X3NldF9kaWN0X29wZXJhdGlvbih0 cngsIFRSWF9ESUNUX09QX0lOREVYKTsKIAogCS8qIEFjcXVpcmUgYSBsb2NrIG9uIHRoZSB0YWJs ZSBiZWZvcmUgY3JlYXRpbmcgYW55IGluZGV4ZXMuICovCi0JZXJyb3IgPSByb3dfbWVyZ2VfbG9j a190YWJsZShwcmVidWlsdC0+dHJ4LCBpbm5vZGJfdGFibGUsCisJZXJyb3IgPSByb3dfbWVyZ2Vf bG9ja190YWJsZShwcmVidWlsdC0+dHJ4LCBwcmVidWlsdC0+dGFibGUsCiAJCQkJICAgICBuZXdf cHJpbWFyeSA/IExPQ0tfWCA6IExPQ0tfUyk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShlcnJvciAh PSBEQl9TVUNDRVNTKSkgewpAQCAtNzUxLDcgKzc2OSw3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5k ZXgoCiAJcm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7CiAJZGljdF9sb2NrZWQg PSBUUlVFOwogCi0JdXRfZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhpbm5vZGJf dGFibGUsIEZBTFNFKSk7CisJdXRfZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhw cmVidWlsdC0+dGFibGUsIEZBTFNFKSk7CiAKIAkvKiBJZiBhIG5ldyBwcmltYXJ5IGtleSBpcyBk ZWZpbmVkIGZvciB0aGUgdGFibGUgd2UgbmVlZAogCXRvIGRyb3AgdGhlIG9yaWdpbmFsIHRhYmxl IGFuZCByZWJ1aWxkIGFsbCBpbmRleGVzLiAqLwpAQCAtNzU5LDE1ICs3NzcsMTUgQEAgaGFfaW5u b2Jhc2U6OmFkZF9pbmRleCgKIAlpZiAoVU5JVl9VTkxJS0VMWShuZXdfcHJpbWFyeSkpIHsKIAkJ LyogVGhpcyB0cmFuc2FjdGlvbiBzaG91bGQgYmUgdGhlIG9ubHkgb25lCiAJCW9wZXJhdGluZyBv biB0aGUgdGFibGUuICovCi0JCXV0X2EoaW5ub2RiX3RhYmxlLT5uX215c3FsX2hhbmRsZXNfb3Bl bmVkID09IDEpOworCQl1dF9hKHByZWJ1aWx0LT50YWJsZS0+bl9teXNxbF9oYW5kbGVzX29wZW5l ZCA9PSAxKTsKIAogCQljaGFyKgluZXdfdGFibGVfbmFtZSA9IGlubm9iYXNlX2NyZWF0ZV90ZW1w b3JhcnlfdGFibGVuYW1lKAotCQkJaGVhcCwgJzEnLCBpbm5vZGJfdGFibGUtPm5hbWUpOworCQkJ aGVhcCwgJzEnLCBwcmVidWlsdC0+dGFibGUtPm5hbWUpOwogCiAJCS8qIENsb25lIHRoZSB0YWJs ZS4gKi8KIAkJdHJ4X3NldF9kaWN0X29wZXJhdGlvbih0cngsIFRSWF9ESUNUX09QX1RBQkxFKTsK IAkJaW5kZXhlZF90YWJsZSA9IHJvd19tZXJnZV9jcmVhdGVfdGVtcG9yYXJ5X3RhYmxlKAotCQkJ bmV3X3RhYmxlX25hbWUsIGluZGV4X2RlZnMsIGlubm9kYl90YWJsZSwgdHJ4KTsKKwkJCW5ld190 YWJsZV9uYW1lLCBpbmRleF9kZWZzLCBwcmVidWlsdC0+dGFibGUsIHRyeCk7CiAKIAkJaWYgKCFp bmRleGVkX3RhYmxlKSB7CiAKQEAgLTc4MSwxMSArNzk5LDEyIEBAIGhhX2lubm9iYXNlOjphZGRf aW5kZXgoCiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVycm9yID0gY29udmVydF9lcnJv cl9jb2RlX3RvX215c3FsKAotCQkJCQl0cngtPmVycm9yX3N0YXRlLCBpbm5vZGJfdGFibGUtPmZs YWdzLAorCQkJCQl0cngtPmVycm9yX3N0YXRlLAorCQkJCQlwcmVidWlsdC0+dGFibGUtPmZsYWdz LAogCQkJCQl1c2VyX3RoZCk7CiAJCQl9CiAKLQkJCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3Jf ZHVwX2luZGV4ZXMoaW5ub2RiX3RhYmxlLAorCQkJdXRfZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9k dXBfaW5kZXhlcyhwcmVidWlsdC0+dGFibGUsCiAJCQkJCQkJICAgICAgRkFMU0UpKTsKIAkJCW1l bV9oZWFwX2ZyZWUoaGVhcCk7CiAJCQl0cnhfZ2VuZXJhbF9yb2xsYmFja19mb3JfbXlzcWwodHJ4 LCBOVUxMKTsKQEAgLTgwMCwxNyArODE5LDE1IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAK IAkvKiBDcmVhdGUgdGhlIGluZGV4ZXMgaW4gU1lTX0lOREVYRVMgYW5kIGxvYWQgaW50byBkaWN0 aW9uYXJ5LiAqLwogCi0JZm9yICh1bGludCBpID0gMDsgaSA8IG51bV9vZl9pZHg7IGkrKykgewor CWZvciAobnVtX2NyZWF0ZWQgPSAwOyBudW1fY3JlYXRlZCA8IG51bV9vZl9pZHg7IG51bV9jcmVh dGVkKyspIHsKIAotCQlpbmRleFtpXSA9IHJvd19tZXJnZV9jcmVhdGVfaW5kZXgodHJ4LCBpbmRl eGVkX3RhYmxlLAotCQkJCQkJICAmaW5kZXhfZGVmc1tpXSk7CisJCWluZGV4W251bV9jcmVhdGVk XSA9IHJvd19tZXJnZV9jcmVhdGVfaW5kZXgoCisJCQl0cngsIGluZGV4ZWRfdGFibGUsICZpbmRl eF9kZWZzW251bV9jcmVhdGVkXSk7CiAKLQkJaWYgKCFpbmRleFtpXSkgeworCQlpZiAoIWluZGV4 W251bV9jcmVhdGVkXSkgewogCQkJZXJyb3IgPSB0cngtPmVycm9yX3N0YXRlOwogCQkJZ290byBl cnJvcl9oYW5kbGluZzsKIAkJfQotCi0JCW51bV9jcmVhdGVkKys7CiAJfQogCiAJdXRfYWQoZXJy b3IgPT0gREJfU1VDQ0VTUyk7CkBAIC04MzIsNyArODQ5LDcgQEAgaGFfaW5ub2Jhc2U6OmFkZF9p bmRleCgKIAlpZiAoVU5JVl9VTkxJS0VMWShuZXdfcHJpbWFyeSkpIHsKIAkJLyogQSBwcmltYXJ5 IGtleSBpcyB0byBiZSBidWlsdC4gIEFjcXVpcmUgYW4gZXhjbHVzaXZlCiAJCXRhYmxlIGxvY2sg YWxzbyBvbiB0aGUgdGFibGUgdGhhdCBpcyBiZWluZyBjcmVhdGVkLiAqLwotCQl1dF9hZChpbmRl eGVkX3RhYmxlICE9IGlubm9kYl90YWJsZSk7CisJCXV0X2FkKGluZGV4ZWRfdGFibGUgIT0gcHJl YnVpbHQtPnRhYmxlKTsKIAogCQllcnJvciA9IHJvd19tZXJnZV9sb2NrX3RhYmxlKHByZWJ1aWx0 LT50cngsIGluZGV4ZWRfdGFibGUsCiAJCQkJCSAgICAgTE9DS19YKTsKQEAgLTg0Niw3ICs4NjMs NyBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCS8qIFJlYWQgdGhlIGNsdXN0ZXJlZCBpbmRl eCBvZiB0aGUgdGFibGUgYW5kIGJ1aWxkIGluZGV4ZXMKIAliYXNlZCBvbiB0aGlzIGluZm9ybWF0 aW9uIHVzaW5nIHRlbXBvcmFyeSBmaWxlcyBhbmQgbWVyZ2Ugc29ydC4gKi8KIAllcnJvciA9IHJv d19tZXJnZV9idWlsZF9pbmRleGVzKHByZWJ1aWx0LT50cngsCi0JCQkJCWlubm9kYl90YWJsZSwg aW5kZXhlZF90YWJsZSwKKwkJCQkJcHJlYnVpbHQtPnRhYmxlLCBpbmRleGVkX3RhYmxlLAogCQkJ CQlpbmRleCwgbnVtX29mX2lkeCwgdGFibGUpOwogCiBlcnJvcl9oYW5kbGluZzoKQEAgLTg1NCw2 MyArODcxLDE1IEBAIGVycm9yX2hhbmRsaW5nOgogCWRpY3Rpb25hcnkgd2hpY2ggd2VyZSBkZWZp bmVkLiAqLwogCiAJc3dpdGNoIChlcnJvcikgewotCQljb25zdCBjaGFyKglvbGRfbmFtZTsKLQkJ Y2hhcioJCXRtcF9uYW1lOwogCWNhc2UgREJfU1VDQ0VTUzoKIAkJdXRfYSghZGljdF9sb2NrZWQp OwotCQlyb3dfbXlzcWxfbG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKLQkJZGljdF9sb2NrZWQg PSBUUlVFOwogCisJCXV0X2QobXV0ZXhfZW50ZXIoJmRpY3Rfc3lzLT5tdXRleCkpOwogCQl1dF9k KGRpY3RfdGFibGVfY2hlY2tfZm9yX2R1cF9pbmRleGVzKHByZWJ1aWx0LT50YWJsZSwgVFJVRSkp OwotCi0JCWlmICghbmV3X3ByaW1hcnkpIHsKLQkJCWVycm9yID0gcm93X21lcmdlX3JlbmFtZV9p bmRleGVzKHRyeCwgaW5kZXhlZF90YWJsZSk7Ci0KLQkJCWlmIChlcnJvciAhPSBEQl9TVUNDRVNT KSB7Ci0JCQkJcm93X21lcmdlX2Ryb3BfaW5kZXhlcyh0cngsIGluZGV4ZWRfdGFibGUsCi0JCQkJ CQkgICAgICAgaW5kZXgsIG51bV9jcmVhdGVkKTsKLQkJCX0KLQotCQkJZ290byBjb252ZXJ0X2Vy cm9yOwotCQl9Ci0KLQkJLyogSWYgYSBuZXcgcHJpbWFyeSBrZXkgd2FzIGRlZmluZWQgZm9yIHRo ZSB0YWJsZSBhbmQKLQkJdGhlcmUgd2FzIG5vIGVycm9yIGF0IHRoaXMgcG9pbnQsIHdlIGNhbiBu b3cgcmVuYW1lCi0JCXRoZSBvbGQgdGFibGUgYXMgYSB0ZW1wb3JhcnkgdGFibGUsIHJlbmFtZSB0 aGUgbmV3Ci0JCXRlbXBvcmFyeSB0YWJsZSBhcyB0aGUgb2xkIHRhYmxlIGFuZCBkcm9wIHRoZSBv bGQgdGFibGUuICovCi0JCW9sZF9uYW1lID0gaW5ub2RiX3RhYmxlLT5uYW1lOwotCQl0bXBfbmFt ZSA9IGlubm9iYXNlX2NyZWF0ZV90ZW1wb3JhcnlfdGFibGVuYW1lKGhlYXAsICcyJywKLQkJCQkJ CQkgICAgICAgb2xkX25hbWUpOwotCi0JCWVycm9yID0gcm93X21lcmdlX3JlbmFtZV90YWJsZXMo aW5ub2RiX3RhYmxlLCBpbmRleGVkX3RhYmxlLAotCQkJCQkJdG1wX25hbWUsIHRyeCk7Ci0KLQkJ aWYgKGVycm9yICE9IERCX1NVQ0NFU1MpIHsKLQotCQkJcm93X21lcmdlX2Ryb3BfdGFibGUodHJ4 LCBpbmRleGVkX3RhYmxlKTsKLQotCQkJc3dpdGNoIChlcnJvcikgewotCQkJY2FzZSBEQl9UQUJM RVNQQUNFX0FMUkVBRFlfRVhJU1RTOgotCQkJY2FzZSBEQl9EVVBMSUNBVEVfS0VZOgotCQkJCWlu bm9iYXNlX2NvbnZlcnRfdGFibGVuYW1lKHRtcF9uYW1lKTsKLQkJCQlteV9lcnJvcihIQV9FUlJf VEFCTEVfRVhJU1QsIE1ZRigwKSwgdG1wX25hbWUpOwotCQkJCWVycm9yID0gSEFfRVJSX1RBQkxF X0VYSVNUOwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlnb3RvIGNvbnZlcnRfZXJyb3I7 Ci0JCQl9Ci0JCQlicmVhazsKLQkJfQotCi0JCXRyeF9jb21taXRfZm9yX215c3FsKHByZWJ1aWx0 LT50cngpOwotCQlyb3dfcHJlYnVpbHRfZnJlZShwcmVidWlsdCwgVFJVRSk7Ci0JCXByZWJ1aWx0 ID0gcm93X2NyZWF0ZV9wcmVidWlsdChpbmRleGVkX3RhYmxlKTsKLQotCQlpbmRleGVkX3RhYmxl LT5uX215c3FsX2hhbmRsZXNfb3BlbmVkKys7Ci0KLQkJZXJyb3IgPSByb3dfbWVyZ2VfZHJvcF90 YWJsZSh0cngsIGlubm9kYl90YWJsZSk7Ci0JCWlubm9kYl90YWJsZSA9IGluZGV4ZWRfdGFibGU7 Ci0JCWdvdG8gY29udmVydF9lcnJvcjsKKwkJdXRfZChtdXRleF9leGl0KCZkaWN0X3N5cy0+bXV0 ZXgpKTsKKyAgICAgICAgICAgICAgICAqYWRkID0gbmV3IGhhX2lubm9iYXNlX2FkZF9pbmRleCh0 YWJsZSwga2V5X2luZm8sIG51bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZWRfdGFibGUpOworCQlicmVhazsKIAogCWNhc2Ug REJfVE9PX0JJR19SRUNPUkQ6CiAJCW15X2Vycm9yKEhBX0VSUl9UT19CSUdfUk9XLCBNWUYoMCkp OwpAQCAtOTI2LDcgKzg5NSw3IEBAIGVycm9yOgogCQl0cngtPmVycm9yX3N0YXRlID0gREJfU1VD Q0VTUzsKIAogCQlpZiAobmV3X3ByaW1hcnkpIHsKLQkJCWlmIChpbmRleGVkX3RhYmxlICE9IGlu bm9kYl90YWJsZSkgeworCQkJaWYgKGluZGV4ZWRfdGFibGUgIT0gcHJlYnVpbHQtPnRhYmxlKSB7 CiAJCQkJcm93X21lcmdlX2Ryb3BfdGFibGUodHJ4LCBpbmRleGVkX3RhYmxlKTsKIAkJCX0KIAkJ fSBlbHNlIHsKQEAgLTkzOCwzOCArOTA3LDE2MSBAQCBlcnJvcjoKIAkJCXJvd19tZXJnZV9kcm9w X2luZGV4ZXModHJ4LCBpbmRleGVkX3RhYmxlLAogCQkJCQkgICAgICAgaW5kZXgsIG51bV9jcmVh dGVkKTsKIAkJfQotCi1jb252ZXJ0X2Vycm9yOgotCQlpZiAoZXJyb3IgPT0gREJfU1VDQ0VTUykg ewotCQkJLyogQnVpbGQgaW5kZXggaXMgc3VjY2Vzc2Z1bC4gV2Ugd2lsbCBuZWVkIHRvCi0JCQly ZWJ1aWxkIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLiAgUmVzZXQgdGhlCi0JCQlpbmRleCBlbnRy eSBjb3VudCBpbiB0aGUgdHJhbnNsYXRpb24gdGFibGUKLQkJCXRvIHplcm8sIHNvIHRoYXQgdHJh bnNsYXRpb24gdGFibGUgd2lsbCBiZSByZWJ1aWx0ICovCi0JCQlzaGFyZS0+aWR4X3RyYW5zX3Ri bC5pbmRleF9jb3VudCA9IDA7Ci0JCX0KLQotCQllcnJvciA9IGNvbnZlcnRfZXJyb3JfY29kZV90 b19teXNxbChlcnJvciwKLQkJCQkJCSAgICBpbm5vZGJfdGFibGUtPmZsYWdzLAotCQkJCQkJICAg IHVzZXJfdGhkKTsKIAl9CiAKLQltZW1faGVhcF9mcmVlKGhlYXApOwogCXRyeF9jb21taXRfZm9y X215c3FsKHRyeCk7CiAJaWYgKHByZWJ1aWx0LT50cngpIHsKIAkJdHJ4X2NvbW1pdF9mb3JfbXlz cWwocHJlYnVpbHQtPnRyeCk7CiAJfQogCiAJaWYgKGRpY3RfbG9ja2VkKSB7Ci0JCXV0X2QoZGlj dF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMoaW5ub2RiX3RhYmxlLCBGQUxTRSkpOwogCQly b3dfbXlzcWxfdW5sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCX0KIAogCXRyeF9mcmVlX2Zv cl9teXNxbCh0cngpOworCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisKKwkvKiBUaGVyZSBtaWdodCBi ZSB3b3JrIGZvciB1dGlsaXR5IHRocmVhZHMuKi8KKwlzcnZfYWN0aXZlX3dha2VfbWFzdGVyX3Ro cmVhZCgpOworCisJREJVR19SRVRVUk4oY29udmVydF9lcnJvcl9jb2RlX3RvX215c3FsKGVycm9y LCBwcmVidWlsdC0+dGFibGUtPmZsYWdzLAorCQkJCQkJdXNlcl90aGQpKTsKK30KKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCitGaW5hbGl6ZSBvciB1bmRvIGFkZF9pbmRleCgpLgorQHJldHVybgkwIG9yIGVy cm9yIG51bWJlciAqLworVU5JVl9JTlRFUk4KK2ludAoraGFfaW5ub2Jhc2U6OmZpbmFsX2FkZF9p bmRleCgKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PSovCisJaGFuZGxlcl9hZGRfaW5kZXgq CWFkZF9hcmcsLyohPCBpbjogY29udGV4dCBmcm9tIGFkZF9pbmRleCgpICovCisJYm9vbAkJCWNv bW1pdCkJLyohPCBpbjogdHJ1ZT1jb21taXQsIGZhbHNlPXJvbGxiYWNrICovCit7CisJaGFfaW5u b2Jhc2VfYWRkX2luZGV4KglhZGQ7CisJdHJ4X3QqCQkJdHJ4OworCWludAkJCWVycgk9IDA7CisK KwlEQlVHX0VOVEVSKCJoYV9pbm5vYmFzZTo6ZmluYWxfYWRkX2luZGV4Iik7CisKKwl1dF9hZChh ZGRfYXJnKTsKKwlhZGQgPSBzdGF0aWNfY2FzdDxjbGFzcyBoYV9pbm5vYmFzZV9hZGRfaW5kZXgq PihhZGRfYXJnKTsKKworCS8qIENyZWF0ZSBhIGJhY2tncm91bmQgdHJhbnNhY3Rpb24gZm9yIHRo ZSBvcGVyYXRpb25zIG9uCisJdGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZXMuICovCisJdHJ4ID0g aW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHVzZXJfdGhkKTsKKwl0cnhfc3RhcnRfaWZfbm90X3N0YXJ0 ZWQodHJ4KTsKKworCS8qIEZsYWcgdGhpcyB0cmFuc2FjdGlvbiBhcyBhIGRpY3Rpb25hcnkgb3Bl cmF0aW9uLCBzbyB0aGF0CisJdGhlIGRhdGEgZGljdGlvbmFyeSB3aWxsIGJlIGxvY2tlZCBpbiBj cmFzaCByZWNvdmVyeS4gKi8KKwl0cnhfc2V0X2RpY3Rfb3BlcmF0aW9uKHRyeCwgVFJYX0RJQ1Rf T1BfSU5ERVgpOworCisJLyogTGF0Y2ggdGhlIElubm9EQiBkYXRhIGRpY3Rpb25hcnkgZXhjbHVz aXZlbHkgc28gdGhhdCBubyBkZWFkbG9ja3MKKwlvciBsb2NrIHdhaXRzIGNhbiBoYXBwZW4gaW4g aXQgZHVyaW5nIGFuIGluZGV4IGNyZWF0ZSBvcGVyYXRpb24uICovCisJcm93X215c3FsX2xvY2tf ZGF0YV9kaWN0aW9uYXJ5KHRyeCk7CisKKwlpZiAoYWRkLT5pbmRleGVkX3RhYmxlICE9IHByZWJ1 aWx0LT50YWJsZSkgeworCQl1bGludAllcnJvcjsKKworCQkvKiBXZSBjb3BpZWQgdGhlIHRhYmxl IChuZXdfcHJpbWFyeSkuICovCisJCWlmIChjb21taXQpIHsKKwkJCW1lbV9oZWFwX3QqCWhlYXA7 CisJCQljaGFyKgkJdG1wX25hbWU7CisKKwkJCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7 CisKKwkJCS8qIEEgbmV3IHByaW1hcnkga2V5IHdhcyBkZWZpbmVkIGZvciB0aGUgdGFibGUKKwkJ CWFuZCB0aGVyZSB3YXMgbm8gZXJyb3IgYXQgdGhpcyBwb2ludC4gV2UgY2FuCisJCQlub3cgcmVu YW1lIHRoZSBvbGQgdGFibGUgYXMgYSB0ZW1wb3JhcnkgdGFibGUsCisJCQlyZW5hbWUgdGhlIG5l dyB0ZW1wb3JhcnkgdGFibGUgYXMgdGhlIG9sZAorCQkJdGFibGUgYW5kIGRyb3AgdGhlIG9sZCB0 YWJsZS4gKi8KKwkJCXRtcF9uYW1lID0gaW5ub2Jhc2VfY3JlYXRlX3RlbXBvcmFyeV90YWJsZW5h bWUoCisJCQkJaGVhcCwgJzInLCBwcmVidWlsdC0+dGFibGUtPm5hbWUpOworCisJCQllcnJvciA9 IHJvd19tZXJnZV9yZW5hbWVfdGFibGVzKAorCQkJCXByZWJ1aWx0LT50YWJsZSwgYWRkLT5pbmRl eGVkX3RhYmxlLAorCQkJCXRtcF9uYW1lLCB0cngpOworCisJCQlzd2l0Y2ggKGVycm9yKSB7CisJ CQljYXNlIERCX1RBQkxFU1BBQ0VfQUxSRUFEWV9FWElTVFM6CisJCQljYXNlIERCX0RVUExJQ0FU RV9LRVk6CisJCQkJaW5ub2Jhc2VfY29udmVydF90YWJsZW5hbWUodG1wX25hbWUpOworCQkJCW15 X2Vycm9yKEhBX0VSUl9UQUJMRV9FWElTVCwgTVlGKDApLCB0bXBfbmFtZSk7CisJCQkJZXJyID0g SEFfRVJSX1RBQkxFX0VYSVNUOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllcnIgPSBj b252ZXJ0X2Vycm9yX2NvZGVfdG9fbXlzcWwoCisJCQkJCWVycm9yLCBwcmVidWlsdC0+dGFibGUt PmZsYWdzLAorCQkJCQl1c2VyX3RoZCk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCW1lbV9oZWFw X2ZyZWUoaGVhcCk7CisJCX0KKworCQlpZiAoIWNvbW1pdCB8fCBlcnIpIHsKKwkJCWVycm9yID0g cm93X21lcmdlX2Ryb3BfdGFibGUodHJ4LCBhZGQtPmluZGV4ZWRfdGFibGUpOworCQkJdHJ4X2Nv bW1pdF9mb3JfbXlzcWwocHJlYnVpbHQtPnRyeCk7CisJCX0gZWxzZSB7CisJCQlkaWN0X3RhYmxl X3QqCW9sZF90YWJsZSA9IHByZWJ1aWx0LT50YWJsZTsKKwkJCXRyeF9jb21taXRfZm9yX215c3Fs KHByZWJ1aWx0LT50cngpOworCQkJcm93X3ByZWJ1aWx0X2ZyZWUocHJlYnVpbHQsIFRSVUUpOwor CQkJZXJyb3IgPSByb3dfbWVyZ2VfZHJvcF90YWJsZSh0cngsIG9sZF90YWJsZSk7CisJCQlhZGQt PmluZGV4ZWRfdGFibGUtPm5fbXlzcWxfaGFuZGxlc19vcGVuZWQrKzsKKwkJCXByZWJ1aWx0ID0g cm93X2NyZWF0ZV9wcmVidWlsdChhZGQtPmluZGV4ZWRfdGFibGUpOworCQl9CisKKwkJZXJyID0g Y29udmVydF9lcnJvcl9jb2RlX3RvX215c3FsKAorCQkJZXJyb3IsIHByZWJ1aWx0LT50YWJsZS0+ ZmxhZ3MsIHVzZXJfdGhkKTsKKwl9IGVsc2UgeworCQkvKiBXZSBjcmVhdGVkIHNlY29uZGFyeSBp bmRleGVzICghbmV3X3ByaW1hcnkpLiAqLworCisJCWlmIChjb21taXQpIHsKKwkJCWVyciA9IGNv bnZlcnRfZXJyb3JfY29kZV90b19teXNxbCgKKwkJCQlyb3dfbWVyZ2VfcmVuYW1lX2luZGV4ZXMo dHJ4LCBwcmVidWlsdC0+dGFibGUpLAorCQkJCXByZWJ1aWx0LT50YWJsZS0+ZmxhZ3MsIHVzZXJf dGhkKTsKKwkJfQorCisJCWlmICghY29tbWl0IHx8IGVycikgeworCQkJZGljdF9pbmRleF90Kglp bmRleDsKKwkJCWRpY3RfaW5kZXhfdCoJbmV4dF9pbmRleDsKKworCQkJZm9yIChpbmRleCA9IGRp Y3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KAorCQkJCSAgICAgcHJlYnVpbHQtPnRhYmxlKTsKKwkJ CSAgICAgaW5kZXg7IGluZGV4ID0gbmV4dF9pbmRleCkgeworCisJCQkJbmV4dF9pbmRleCA9IGRp Y3RfdGFibGVfZ2V0X25leHRfaW5kZXgoaW5kZXgpOworCisJCQkJaWYgKCppbmRleC0+bmFtZSA9 PSBURU1QX0lOREVYX1BSRUZJWCkgeworCQkJCQlyb3dfbWVyZ2VfZHJvcF9pbmRleCgKKwkJCQkJ CWluZGV4LCBwcmVidWlsdC0+dGFibGUsIHRyeCk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJ LyogSWYgaW5kZXggaXMgc3VjY2Vzc2Z1bGx5IGJ1aWx0LCB3ZSB3aWxsIG5lZWQgdG8gcmVidWls ZCBpbmRleAorCXRyYW5zbGF0aW9uIHRhYmxlLiBTZXQgdmFsaWQgaW5kZXggZW50cnkgY291bnQg aW4gdGhlIHRyYW5zbGF0aW9uCisJdGFibGUgdG8gemVyby4gKi8KKwlpZiAoZXJyID09IDAgJiYg Y29tbWl0KSB7CisJCXNoYXJlLT5pZHhfdHJhbnNfdGJsLmluZGV4X2NvdW50ID0gMDsKKwl9CisK Kwl0cnhfY29tbWl0X2Zvcl9teXNxbCh0cngpOworCWlmIChwcmVidWlsdC0+dHJ4KSB7CisJCXRy eF9jb21taXRfZm9yX215c3FsKHByZWJ1aWx0LT50cngpOworCX0KKworCXV0X2QoZGljdF90YWJs ZV9jaGVja19mb3JfZHVwX2luZGV4ZXMocHJlYnVpbHQtPnRhYmxlLCBGQUxTRSkpOworCXJvd19t eXNxbF91bmxvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7CisKKwl0cnhfZnJlZV9mb3JfbXlzcWwo dHJ4KTsKIAogCS8qIFRoZXJlIG1pZ2h0IGJlIHdvcmsgZm9yIHV0aWxpdHkgdGhyZWFkcy4qLwog CXNydl9hY3RpdmVfd2FrZV9tYXN0ZXJfdGhyZWFkKCk7CiAKLQlEQlVHX1JFVFVSTihlcnJvcik7 CisJZGVsZXRlIGFkZDsKKwlEQlVHX1JFVFVSTihlcnIpOwogfQogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK Cg== --===============3391874969593788946== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-5.5-bug11853126/ # testament_sha1: 48c147f7e5209b32c68ac54375cc6d5adc39a150 # timestamp: 2011-06-01 10:07:03 +0200 # base_revision_id: jimmy.yang@stripped\ # az0yyt0m8pjioaf0 # # Begin bundle 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 --===============3391874969593788946==--