From: Jon Olav Hauglid Date: May 15 2011 11:19am Subject: bzr commit into mysql-5.5 branch (jon.hauglid:3384) Bug#11853126 List-Archive: http://lists.mysql.com/commits/137372 X-Bug: 11853126 Message-Id: <201105151119.p4FBJcoY029029@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4174088881050106019==" --===============4174088881050106019== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vZXhwb3J0L2hvbWUveC9teXNxbC01LjUtYnVnMTE4NTMxMjYvIGJhc2VkIG9u IHJldmlkOnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTA1MTQxNjI2NDkteDhsdWtob3dm OXByazRhYgoKIDMzODQgSm9uIE9sYXYgSGF1Z2xpZAkyMDExLTA1LTE1CiAgICAgIEJ1ZyMxMTg1 MzEyNiBSRS1FTkFCTEUgQ09OQ1VSUkVOVCBSRUFEUyBXSElMRSBDUkVBVElORwogICAgICAgICAg ICAgICAgICAgU0VDT05EQVJZIElOREVYIElOIElOTk9EQgogICAgICAKICAgICAgVGhlIHBhdGNo ZXMgZm9yIEJ1ZyMxMTc1MTM4OCBhbmQgQnVnIzExNzg0MDU2IGVuYWJsZWQgY29uY3VycmVudAog ICAgICByZWFkcyB3aGlsZSBjcmVhdGluZyBzZWNvbmRhcnkgaW5kZXhlcyBpbiBJbm5vREIuIEhv d2V2ZXIsIHRoZXkKICAgICAgaW50cm9kdWNlZCBhIHJlZ3Jlc3Npb24uIFRoaXMgcmVncmVzc2lv biBvY2N1cmVkIGlmIEFMVEVSIFRBQkxFCiAgICAgIGZhaWxlZCBhZnRlciB0aGUgaW5kZXggaGFk IGJlZW4gYWRkZWQsIGZvciBleGFtcGxlIGR1cmluZyB0aGUKICAgICAgbG9jayB1cGdyYWRlIG5l ZWRlZCB0byB1cGRhdGUgLkZSTS4gSWYgdGhpcyBoYXBwZW5lZCwgSW5ub0RCCiAgICAgIGFuZCB0 aGUgc2VydmVyIGdvdCBvdXQgb2Ygc3luYyB3aXRoIHJlZ2FyZHMgdG8gd2hpY2ggaW5kZXhlcwog ICAgICBhY3R1YWxseSBleGlzdGVkLiBUaGVyZWZvcmUgdGhlIHBhdGNoIGZvciBCdWcjMTE4MTU2 MDAgYWdhaW4KICAgICAgZGlzYWJsZWQgY29uY3VycmVudCByZWFkcy4KICAgICAgCiAgICAgIFRo aXMgcGF0Y2ggcmUtZW5hYmxlcyBjb25jdXJyZW50IHJlYWRzLiBUaGUgb3JpZ2luYWwgcmVncmVz c2lvbgogICAgICBpcyBmaXhlZCBieSBzcGxpdHRpbmcgdGhlIEFERCBJTkRFWCBvcGVyYXRpb24g aW50byB0d28gcGFydHMuCiAgICAgIEZpcnN0IHRoZSBuZXcgaW5kZXggaXMgY3JlYXRlZCBidXQg bm90IG1hZGUgYWN0aXZlLiBUaGlzIGlzCiAgICAgIGRvbmUgd2hpbGUgY29uY3VycmVudCByZWFk cyBhcmUgYWxsb3dlZC4gVGhlIHNlY29uZCBwYXJ0IG9mCiAgICAgIHRoZSBvcGVyYXRpb24gbWFr ZXMgdGhlIGluZGV4IGFjdGl2ZSAob3IgcmV2ZXJ0cyB0aGUgY2hhbmdlKS4KICAgICAgVGhpcyBp cyBkb25lIGFmdGVyIGxvY2sgdXBncmFkZSwgd2hpY2ggcHJldmVudHMgdGhlIG9yaWdpbmFsCiAg ICAgIHJlZ3Jlc3Npb24uCiAgICAgIAogICAgICBJbiBvcmRlciB0byBpbXBsZW1lbnQgdGhpcyBj aGFuZ2UsIHRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBzdG9yYWdlCiAgICAgIEFQSSBmb3IgaW4tcGxh Y2UgaW5kZXggY3JlYXRpb24uIGhhbmRsZXI6OmFkZF9pbmRleCgpIGlzIHNwbGl0CiAgICAgIGlu dG8gdHdvIGZ1bmN0aW9ucywgaGFuZGxlcl9hZGRfaW5kZXgoKSBhbmQKICAgICAgaGFuZGxlcjo6 ZmluYWxfYWRkX2luZGV4KCkuIFRoZSBmb3JtZXIgZm9yIGNyZWF0aW5nIGluZGV4ZXMgd2l0aG91 dAogICAgICBtYWtpbmcgdGhlIHZpc2libGUgYW5kIHRoZSBsYXR0ZXIgZm9yIGNvbW1pdGluZyAo aS5lLiBtYWtpbmcKICAgICAgdmlzaWJsZSkgbmV3IGluZGV4ZXMgb3IgcmV2ZXJ0aW5nIHRoZSBj aGFuZ2VzLgogICAgICAKICAgICAgTGFyZ2UgcGFydHMgb2YgdGhpcyBwYXRjaCB3ZXJlIHdyaXR0 ZW4gYnkgTWFya28gTcOka2Vsw6QuCiAgICAgIAogICAgICBUZXN0IGNhc2UgYWRkZWQgdG8gaW5u b2RiX215c3FsX2xvY2sudGVzdC4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9yL2lu bm9kYl9teXNxbF9sb2NrLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX3N5 bmMucmVzdWx0CiAgICAgIG15c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfbG9jay50ZXN0CiAgICAg IG15c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfc3luYy50ZXN0CiAgICAgIHNxbC9oYV9wYXJ0aXRp b24uY2MKICAgICAgc3FsL2hhX3BhcnRpdGlvbi5oCiAgICAgIHNxbC9oYW5kbGVyLmgKICAgICAg c3FsL3NxbF90YWJsZS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2Ri LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwo9PT0gbW9kaWZpZWQgZmlsZSAn bXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9sb2NrLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9y L2lubm9kYl9teXNxbF9sb2NrLnJlc3VsdAkyMDExLTAzLTA5IDE1OjA2OjEzICswMDAwCisrKyBi L215c3FsLXRlc3Qvci9pbm5vZGJfbXlzcWxfbG9jay5yZXN1bHQJMjAxMS0wNS0xNSAxMToxOToy NiArMDAwMApAQCAtMTcwLDMgKzE3MCwyNyBAQCBpZAl2YWx1ZQogMQkxMjM0NQogQ09NTUlUOwog RFJPUCBUQUJMRSB0MTsKKyMKKyMgQnVnIzExODE1NjAwIFtFUlJPUl0gSU5OT0RCIENPVUxEIE5P VCBGSU5EIElOREVYIFBSSU1BUlkKKyMgICAgICAgICAgICAgIEtFWSBOTyAwIEZPUiBUQUJMRSBJ TiBFUlJPUiBMT0cgCisjCitEUk9QIFRBQkxFIElGIEVYSVNUUyB0MTsKK0NSRUFURSBUQUJMRSB0 MSAoaWQgSU5UIFBSSU1BUlkgS0VZLCB2YWx1ZSBJTlQpIEVOR0lORSA9IElubm9EQjsKK0lOU0VS VCBJTlRPIHQxIFZBTFVFUyAoMSwgMTIzNDUpOworIyBDb25uZWN0aW9uIGRlZmF1bHQKK1NUQVJU IFRSQU5TQUNUSU9OOworU0VMRUNUICogRlJPTSB0MTsKK2lkCXZhbHVlCisxCTEyMzQ1CisjIENv bm5lY3Rpb24gY29uMQorU0VUIGxvY2tfd2FpdF90aW1lb3V0PTE7CitBTFRFUiBUQUJMRSB0MSBB REQgSU5ERVggaWR4KHZhbHVlKTsKK0VSUk9SIEhZMDAwOiBMb2NrIHdhaXQgdGltZW91dCBleGNl ZWRlZDsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24KK0FMVEVSIFRBQkxFIHQxIEFERCBJTkRF WCBpZHgodmFsdWUpOworRVJST1IgSFkwMDA6IExvY2sgd2FpdCB0aW1lb3V0IGV4Y2VlZGVkOyB0 cnkgcmVzdGFydGluZyB0cmFuc2FjdGlvbgorIyBDb25uZWN0aW9uIGRlZmF1bHQKK1NFTEVDVCAq IEZST00gdDE7CitpZAl2YWx1ZQorMQkxMjM0NQorQ09NTUlUOworRFJPUCBUQUJMRSB0MTsKCj09 PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX3N5bmMucmVzdWx0Jwot LS0gYS9teXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX3N5bmMucmVzdWx0CTIwMTEtMDQtMDcgMDk6 NDE6MjAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdAky MDExLTA1LTE1IDExOjE5OjI2ICswMDAwCkBAIC05NCw2ICs5NCw3NCBAQCBTRVQgREVCVUdfU1lO Qz0gJ1JFU0VUJzsKICMgQnVnIzQyMjMwIGR1cmluZyBhZGQgaW5kZXgsIGNhbm5vdCBkbyBxdWVy aWVzIG9uIHN0b3JhZ2UgZW5naW5lcwogIyAgICAgICAgICAgdGhhdCBpbXBsZW1lbnQgYWRkX2lu ZGV4CiAjCi0jCi0jIERJU0FCTEVEIGR1ZSB0byBCdWcjMTE4MTU2MDAKLSMKK0RST1AgREFUQUJB U0UgSUYgRVhJU1RTIGRiMTsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHQxOworIyBUZXN0IDE6IFNl Y29uZGFyeSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcyAob3JpZ2luYWwgdGVzdCBjYXNl KS4KKyMgQ29ubmVjdGlvbiBkZWZhdWx0CitDUkVBVEUgREFUQUJBU0UgZGIxOworQ1JFQVRFIFRB QkxFIGRiMS50MShpZCBJTlQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksIHZh bHVlIElOVCkgZW5naW5lPWlubm9kYjsKK0lOU0VSVCBJTlRPIGRiMS50MSh2YWx1ZSkgVkFMVUVT ICgxKSwgKDIpOworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdO QUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoKK0FMVEVSIFRBQkxFIGRiMS50 MSBBREQgSU5ERVgodmFsdWUpOworIyBDb25uZWN0aW9uIGNvbjEKK1NFVCBERUJVR19TWU5DPSAi bm93IFdBSVRfRk9SIG1hbmFnZSI7CitVU0UgZGIxOworU0VMRUNUICogRlJPTSB0MTsKK2lkCXZh bHVlCisxCTEKKzIJMgorU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKKyMgQ29u bmVjdGlvbiBkZWZhdWx0CisjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIGRiMS50MSBBREQgSU5ERVgo dmFsdWUpCitEUk9QIERBVEFCQVNFIGRiMTsKKyMgVGVzdCAyOiBQcmltYXJ5IGluZGV4IChpbXBs aWNpdCksIHNob3VsZCBibG9jayByZWFkcy4KK0NSRUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVM TCwgYiBJTlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5vZGI7CitTRVQgREVCVUdfU1lOQz0gImFsdGVy X3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOworIyBTZW5k aW5nOgorQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSBJTkRFWChhKTsKKyMgQ29ubmVjdGlvbiBj b24xCitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworVVNFIHRlc3Q7Cisj IFNlbmRpbmc6CitTRUxFQ1QgKiBGUk9NIHQxOworIyBDb25uZWN0aW9uIGNvbjIKKyMgV2FpdGlu ZyBmb3IgU0VMRUNUIHRvIGJlIGJsb2NrZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKK1NF VCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisjIENvbm5lY3Rpb24gZGVmYXVsdAor IyBSZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIElOREVYKGEpCisjIENvbm5lY3Rp b24gY29uMQorIyBSZWFwaW5nOiBTRUxFQ1QgKiBGUk9NIHQxCithCWIKKyMgVGVzdCAzOiBQcmlt YXJ5IGluZGV4IChleHBsaWNpdCksIHNob3VsZCBibG9jayByZWFkcy4KKyMgQ29ubmVjdGlvbiBk ZWZhdWx0CitBTFRFUiBUQUJMRSB0MSBEUk9QIElOREVYIGE7CitTRVQgREVCVUdfU1lOQz0gImFs dGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOworIyBT ZW5kaW5nOgorQUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIChhKTsKKyMgQ29ubmVjdGlv biBjb24xCitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworIyBTZW5kaW5n OgorU0VMRUNUICogRlJPTSB0MTsKKyMgQ29ubmVjdGlvbiBjb24yCisjIFdhaXRpbmcgZm9yIFNF TEVDVCB0byBiZSBibG9ja2VkIGJ5IHRoZSBtZXRhZGF0YSBsb2NrIG9uIHQxCitTRVQgREVCVUdf U1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworIyBDb25uZWN0aW9uIGRlZmF1bHQKKyMgUmVhcGlu ZzogQUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIChhKQorIyBDb25uZWN0aW9uIGNvbjEK KyMgUmVhcGluZzogU0VMRUNUICogRlJPTSB0MQorYQliCisjIFRlc3QgNDogU2Vjb25kYXJ5IHVu aXF1ZSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcy4KKyMgQ29ubmVjdGlvbiBkZWZhdWx0 CitTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2Ug V0FJVF9GT1IgcXVlcnkiOworIyBTZW5kaW5nOgorQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAo Yik7CisjIENvbm5lY3Rpb24gY29uMQorU0VUIERFQlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFu YWdlIjsKK1NFTEVDVCAqIEZST00gdDE7CithCWIKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05B TCBxdWVyeSI7CisjIENvbm5lY3Rpb24gZGVmYXVsdAorIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSB0 MSBBREQgVU5JUVVFIChiKQorU0VUIERFQlVHX1NZTkM9ICJSRVNFVCI7CitEUk9QIFRBQkxFIHQx OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfbG9jay50ZXN0 JwotLS0gYS9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdAkyMDExLTAzLTA5IDE1 OjA2OjEzICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfbG9jay50ZXN0CTIw MTEtMDUtMTUgMTE6MTk6MjYgKzAwMDAKQEAgLTMxMSw2ICszMTEsNDQgQEAgRFJPUCBUQUJMRSB0 MTsKIGRpc2Nvbm5lY3QgY29uMTsKIAogCistLWVjaG8gIworLS1lY2hvICMgQnVnIzExODE1NjAw IFtFUlJPUl0gSU5OT0RCIENPVUxEIE5PVCBGSU5EIElOREVYIFBSSU1BUlkKKy0tZWNobyAjICAg ICAgICAgICAgICBLRVkgTk8gMCBGT1IgVEFCTEUgSU4gRVJST1IgTE9HIAorLS1lY2hvICMKKwor LS1kaXNhYmxlX3dhcm5pbmdzCitEUk9QIFRBQkxFIElGIEVYSVNUUyB0MTsKKy0tZW5hYmxlX3dh cm5pbmdzCisKK0NSRUFURSBUQUJMRSB0MSAoaWQgSU5UIFBSSU1BUlkgS0VZLCB2YWx1ZSBJTlQp IEVOR0lORSA9IElubm9EQjsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMSwgMTIzNDUpOworCist LWNvbm5lY3QgKGNvbjEsbG9jYWxob3N0LHJvb3QpCisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVm YXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworU1RBUlQgVFJBTlNBQ1RJT047CitTRUxFQ1QgKiBG Uk9NIHQxOworCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKKy0tY29ubmVjdGlvbiBjb24xCitT RVQgbG9ja193YWl0X3RpbWVvdXQ9MTsKKyMgVGVzdCB3aXRoIHR3byB0aW1lb3V0cywgYXMgdGhl IGZpcnN0IHZlcnNpb24gb2YgdGhpcyBwYXRjaAorIyBvbmx5IHdvcmtlZCB3aXRoIG9uZSB0aW1l b3V0LgorLS1lcnJvciBFUl9MT0NLX1dBSVRfVElNRU9VVAorQUxURVIgVEFCTEUgdDEgQUREIElO REVYIGlkeCh2YWx1ZSk7CistLWVycm9yIEVSX0xPQ0tfV0FJVF9USU1FT1VUCitBTFRFUiBUQUJM RSB0MSBBREQgSU5ERVggaWR4KHZhbHVlKTsKKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0 CistLWNvbm5lY3Rpb24gZGVmYXVsdAorU0VMRUNUICogRlJPTSB0MTsKK0NPTU1JVDsKKworRFJP UCBUQUJMRSB0MTsKK2Rpc2Nvbm5lY3QgY29uMTsKKworCiAjIENoZWNrIHRoYXQgYWxsIGNvbm5l Y3Rpb25zIG9wZW5lZCBieSB0ZXN0IGNhc2VzIGluIHRoaXMgZmlsZSBhcmUgcmVhbGx5CiAjIGdv bmUgc28gZXhlY3V0aW9uIG9mIG90aGVyIHRlc3RzIHdvbid0IGJlIGFmZmVjdGVkIGJ5IHRoZWly IHByZXNlbmNlLgogLS1zb3VyY2UgaW5jbHVkZS93YWl0X3VudGlsX2NvdW50X3Nlc3Npb25zLmlu YwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfc3luYy50ZXN0 JwotLS0gYS9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdAkyMDExLTAzLTIyIDEz OjM0OjA0ICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfc3luYy50ZXN0CTIw MTEtMDUtMTUgMTE6MTk6MjYgKzAwMDAKQEAgLTE1MiwxMzMgKzE1MiwxMjkgQEAgZGlzY29ubmVj dCBjb24xOwogLS1lY2hvICMgICAgICAgICAgIHRoYXQgaW1wbGVtZW50IGFkZF9pbmRleAogLS1l Y2hvICMKIAotLS1lY2hvICMKLS0tZWNobyAjIERJU0FCTEVEIGR1ZSB0byBCdWcjMTE4MTU2MDAK LS0tZWNobyAjCistLWRpc2FibGVfd2FybmluZ3MKK0RST1AgREFUQUJBU0UgSUYgRVhJU1RTIGRi MTsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHQxOworLS1lbmFibGVfd2FybmluZ3MKKworY29ubmVj dChjb24xLGxvY2FsaG9zdCxyb290KTsKK2Nvbm5lY3QoY29uMixsb2NhbGhvc3Qscm9vdCk7CisK Ky0tZWNobyAjIFRlc3QgMTogU2Vjb25kYXJ5IGluZGV4LCBzaG91bGQgbm90IGJsb2NrIHJlYWRz IChvcmlnaW5hbCB0ZXN0IGNhc2UpLgorCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKK2Nv bm5lY3Rpb24gZGVmYXVsdDsKK0NSRUFURSBEQVRBQkFTRSBkYjE7CitDUkVBVEUgVEFCTEUgZGIx LnQxKGlkIElOVCBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCBQUklNQVJZIEtFWSwgdmFsdWUgSU5U KSBlbmdpbmU9aW5ub2RiOworSU5TRVJUIElOVE8gZGIxLnQxKHZhbHVlKSBWQUxVRVMgKDEpLCAo Mik7CitTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5h Z2UgV0FJVF9GT1IgcXVlcnkiOworLS1lY2hvICMgU2VuZGluZzoKKy0tc2VuZCBBTFRFUiBUQUJM RSBkYjEudDEgQUREIElOREVYKHZhbHVlKQorCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKK2Nv bm5lY3Rpb24gY29uMTsKK1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7Cisj IE5laXRoZXIgb2YgdGhlc2UgdHdvIHN0YXRlbWVudHMgc2hvdWxkIGJlIGJsb2NrZWQKK1VTRSBk YjE7CitTRUxFQ1QgKiBGUk9NIHQxOworU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5 IjsKKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25uZWN0aW9uIGRlZmF1bHQ7Cist LWVjaG8gIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZhbHVlKQorLS1y ZWFwCitEUk9QIERBVEFCQVNFIGRiMTsKKworLS1lY2hvICMgVGVzdCAyOiBQcmltYXJ5IGluZGV4 IChpbXBsaWNpdCksIHNob3VsZCBibG9jayByZWFkcy4KKworQ1JFQVRFIFRBQkxFIHQxKGEgSU5U IE5PVCBOVUxMLCBiIElOVCBOT1QgTlVMTCkgZW5naW5lPWlubm9kYjsKK1NFVCBERUJVR19TWU5D PSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBXQUlUX0ZPUiBxdWVyeSI7 CistLWVjaG8gIyBTZW5kaW5nOgorLS1zZW5kIEFMVEVSIFRBQkxFIHQxIEFERCBVTklRVUUgSU5E RVgoYSkKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25uZWN0aW9uIGNvbjE7CitTRVQg REVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworVVNFIHRlc3Q7CistLWVjaG8gIyBT ZW5kaW5nOgorLS1zZW5kIFNFTEVDVCAqIEZST00gdDEKKworLS1lY2hvICMgQ29ubmVjdGlvbiBj b24yCitjb25uZWN0aW9uIGNvbjI7CistLWVjaG8gIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUg YmxvY2tlZCBieSB0aGUgbWV0YWRhdGEgbG9jayBvbiB0MQorbGV0ICR3YWl0X2NvbmRpdGlvbj0g U0VMRUNUIENPVU5UKCopPSAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0Cisg IFdIRVJFIHN0YXRlPSAnV2FpdGluZyBmb3IgdGFibGUgbWV0YWRhdGEgbG9jaycKKyAgQU5EIGlu Zm89J1NFTEVDVCAqIEZST00gdDEnOworLS1zb3VyY2UgaW5jbHVkZS93YWl0X2NvbmRpdGlvbi5p bmMKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisKKy0tZWNobyAjIENvbm5l Y3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1lY2hvICMgUmVhcGluZzogQUxU RVIgVEFCTEUgdDEgQUREIFVOSVFVRSBJTkRFWChhKQorLS1yZWFwCisKKy0tZWNobyAjIENvbm5l Y3Rpb24gY29uMQorY29ubmVjdGlvbiBjb24xOworLS1lY2hvICMgUmVhcGluZzogU0VMRUNUICog RlJPTSB0MQorLS1yZWFwCisKKy0tZWNobyAjIFRlc3QgMzogUHJpbWFyeSBpbmRleCAoZXhwbGlj aXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAor Y29ubmVjdGlvbiBkZWZhdWx0OworQUxURVIgVEFCTEUgdDEgRFJPUCBJTkRFWCBhOworU0VUIERF QlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9S IHF1ZXJ5IjsKKy0tZWNobyAjIFNlbmRpbmc6CistLXNlbmQgQUxURVIgVEFCTEUgdDEgQUREIFBS SU1BUlkgS0VZIChhKQorCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKK2Nvbm5lY3Rpb24gY29u MTsKK1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7CistLWVjaG8gIyBTZW5k aW5nOgorLS1zZW5kIFNFTEVDVCAqIEZST00gdDEKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24y Citjb25uZWN0aW9uIGNvbjI7CistLWVjaG8gIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUgYmxv Y2tlZCBieSB0aGUgbWV0YWRhdGEgbG9jayBvbiB0MQorbGV0ICR3YWl0X2NvbmRpdGlvbj0gU0VM RUNUIENPVU5UKCopPSAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0CisgIFdI RVJFIHN0YXRlPSAnV2FpdGluZyBmb3IgdGFibGUgbWV0YWRhdGEgbG9jaycKKyAgQU5EIGluZm89 J1NFTEVDVCAqIEZST00gdDEnOworLS1zb3VyY2UgaW5jbHVkZS93YWl0X2NvbmRpdGlvbi5pbmMK K1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisKKy0tZWNobyAjIENvbm5lY3Rp b24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1lY2hvICMgUmVhcGluZzogQUxURVIg VEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIChhKQorLS1yZWFwCisKKy0tZWNobyAjIENvbm5lY3Rp b24gY29uMQorY29ubmVjdGlvbiBjb24xOworLS1lY2hvICMgUmVhcGluZzogU0VMRUNUICogRlJP TSB0MQorLS1yZWFwCisKKy0tZWNobyAjIFRlc3QgNDogU2Vjb25kYXJ5IHVuaXF1ZSBpbmRleCwg c2hvdWxkIG5vdCBibG9jayByZWFkcy4KKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citj b25uZWN0aW9uIGRlZmF1bHQ7CitTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9r ZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOworLS1lY2hvICMgU2VuZGluZzoKKy0t c2VuZCBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIChiKQorCistLWVjaG8gIyBDb25uZWN0aW9u IGNvbjEKK2Nvbm5lY3Rpb24gY29uMTsKK1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1h bmFnZSI7CitTRUxFQ1QgKiBGUk9NIHQxOworU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1 ZXJ5IjsKKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25uZWN0aW9uIGRlZmF1bHQ7 CistLWVjaG8gIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIChiKQorLS1yZWFw CiAKLSMtLWRpc2FibGVfd2FybmluZ3MKLSNEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBkYjE7Ci0j RFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7Ci0jLS1lbmFibGVfd2FybmluZ3MKLSMKLSNjb25uZWN0 KGNvbjEsbG9jYWxob3N0LHJvb3QpOwotI2Nvbm5lY3QoY29uMixsb2NhbGhvc3Qscm9vdCk7Ci0j Ci0jLS1lY2hvICMgVGVzdCAxOiBTZWNvbmRhcnkgaW5kZXgsIHNob3VsZCBub3QgYmxvY2sgcmVh ZHMgKG9yaWdpbmFsIHRlc3QgY2FzZSkuCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0 Ci0jY29ubmVjdGlvbiBkZWZhdWx0OwotI0NSRUFURSBEQVRBQkFTRSBkYjE7Ci0jQ1JFQVRFIFRB QkxFIGRiMS50MShpZCBJTlQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksIHZh bHVlIElOVCkgZW5naW5lPWlubm9kYjsKLSNJTlNFUlQgSU5UTyBkYjEudDEodmFsdWUpIFZBTFVF UyAoMSksICgyKTsKLSNTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJ R05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOwotIy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1zZW5k IEFMVEVSIFRBQkxFIGRiMS50MSBBREQgSU5ERVgodmFsdWUpCi0jCi0jLS1lY2hvICMgQ29ubmVj dGlvbiBjb24xCi0jY29ubmVjdGlvbiBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRf Rk9SIG1hbmFnZSI7Ci0jICMgTmVpdGhlciBvZiB0aGVzZSB0d28gc3RhdGVtZW50cyBzaG91bGQg YmUgYmxvY2tlZAotI1VTRSBkYjE7Ci0jU0VMRUNUICogRlJPTSB0MTsKLSNTRVQgREVCVUdfU1lO Qz0gIm5vdyBTSUdOQUwgcXVlcnkiOwotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAot I2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSMtLWVjaG8gIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSBkYjEu dDEgQUREIElOREVYKHZhbHVlKQotIy0tcmVhcAotI0RST1AgREFUQUJBU0UgZGIxOwotIwotIy0t ZWNobyAjIFRlc3QgMjogUHJpbWFyeSBpbmRleCAoaW1wbGljaXQpLCBzaG91bGQgYmxvY2sgcmVh ZHMuCi0jCi0jQ1JFQVRFIFRBQkxFIHQxKGEgSU5UIE5PVCBOVUxMLCBiIElOVCBOT1QgTlVMTCkg ZW5naW5lPWlubm9kYjsKLSNTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlz IFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOwotIy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1z ZW5kIEFMVEVSIFRBQkxFIHQxIEFERCBVTklRVUUgSU5ERVgoYSkKLSMKLSMtLWVjaG8gIyBDb25u ZWN0aW9uIGNvbjEKLSNjb25uZWN0aW9uIGNvbjE7Ci0jU0VUIERFQlVHX1NZTkM9ICJub3cgV0FJ VF9GT1IgbWFuYWdlIjsKLSNVU0UgdGVzdDsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBT RUxFQ1QgKiBGUk9NIHQxCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24yCi0jY29ubmVjdGlv biBjb24yOwotIy0tZWNobyAjIFdhaXRpbmcgZm9yIFNFTEVDVCB0byBiZSBibG9ja2VkIGJ5IHRo ZSBtZXRhZGF0YSBsb2NrIG9uIHQxCi0jbGV0ICR3YWl0X2NvbmRpdGlvbj0gU0VMRUNUIENPVU5U KCopPSAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0Ci0jICBXSEVSRSBzdGF0 ZT0gJ1dhaXRpbmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCi0jICBBTkQgaW5mbz0nU0VMRUNU ICogRlJPTSB0MSc7Ci0jLS1zb3VyY2UgaW5jbHVkZS93YWl0X2NvbmRpdGlvbi5pbmMKLSNTRVQg REVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOwotIwotIy0tZWNobyAjIENvbm5lY3Rpb24g ZGVmYXVsdAotI2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSMtLWVjaG8gIyBSZWFwaW5nOiBBTFRFUiBU QUJMRSB0MSBBREQgVU5JUVVFIElOREVYKGEpCi0jLS1yZWFwCi0jCi0jLS1lY2hvICMgQ29ubmVj dGlvbiBjb24xCi0jY29ubmVjdGlvbiBjb24xOwotIy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAq IEZST00gdDEKLSMtLXJlYXAKLSMKLSMtLWVjaG8gIyBUZXN0IDM6IFByaW1hcnkgaW5kZXggKGV4 cGxpY2l0KSwgc2hvdWxkIGJsb2NrIHJlYWRzLgotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVm YXVsdAotI2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSNBTFRFUiBUQUJMRSB0MSBEUk9QIElOREVYIGE7 Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdl IFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBBTFRFUiBUQUJM RSB0MSBBREQgUFJJTUFSWSBLRVkgKGEpCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCi0j Y29ubmVjdGlvbiBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7 Ci0jLS1lY2hvICMgU2VuZGluZzoKLSMtLXNlbmQgU0VMRUNUICogRlJPTSB0MQotIwotIy0tZWNo byAjIENvbm5lY3Rpb24gY29uMgotI2Nvbm5lY3Rpb24gY29uMjsKLSMtLWVjaG8gIyBXYWl0aW5n IGZvciBTRUxFQ1QgdG8gYmUgYmxvY2tlZCBieSB0aGUgbWV0YWRhdGEgbG9jayBvbiB0MQotI2xl dCAkd2FpdF9jb25kaXRpb249IFNFTEVDVCBDT1VOVCgqKT0gMSBGUk9NIGluZm9ybWF0aW9uX3Nj aGVtYS5wcm9jZXNzbGlzdAotIyAgV0hFUkUgc3RhdGU9ICdXYWl0aW5nIGZvciB0YWJsZSBtZXRh ZGF0YSBsb2NrJwotIyAgQU5EIGluZm89J1NFTEVDVCAqIEZST00gdDEnOwotIy0tc291cmNlIGlu Y2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCi0jU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1 ZXJ5IjsKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1 bHQ7Ci0jLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIChh KQotIy0tcmVhcAotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nvbm5lY3Rpb24gY29u MTsKLSMtLWVjaG8gIyBSZWFwaW5nOiBTRUxFQ1QgKiBGUk9NIHQxCi0jLS1yZWFwCi0jCi0jLS1l Y2hvICMgVGVzdCA0OiBTZWNvbmRhcnkgdW5pcXVlIGluZGV4LCBzaG91bGQgbm90IGJsb2NrIHJl YWRzLgotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAotI2Nvbm5lY3Rpb24gZGVmYXVs dDsKLSNTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5h Z2UgV0FJVF9GT1IgcXVlcnkiOwotIy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1zZW5kIEFMVEVSIFRB QkxFIHQxIEFERCBVTklRVUUgKGIpCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCi0jY29u bmVjdGlvbiBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7Ci0j U0VMRUNUICogRlJPTSB0MTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOwot IwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAotI2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSMt LWVjaG8gIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIChiKQotIy0tcmVhcAot IwotI2Rpc2Nvbm5lY3QgY29uMTsKLSNkaXNjb25uZWN0IGNvbjI7Ci0jU0VUIERFQlVHX1NZTkM9 ICJSRVNFVCI7Ci0jRFJPUCBUQUJMRSB0MTsKK2Rpc2Nvbm5lY3QgY29uMTsKK2Rpc2Nvbm5lY3Qg Y29uMjsKK1NFVCBERUJVR19TWU5DPSAiUkVTRVQiOworRFJPUCBUQUJMRSB0MTsKIAogCiAjIENo ZWNrIHRoYXQgYWxsIGNvbm5lY3Rpb25zIG9wZW5lZCBieSB0ZXN0IGNhc2VzIGluIHRoaXMgZmls ZSBhcmUgcmVhbGx5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2hhX3BhcnRpdGlvbi5jYycKLS0t IGEvc3FsL2hhX3BhcnRpdGlvbi5jYwkyMDExLTA1LTEwIDEzOjI0OjM0ICswMDAwCisrKyBiL3Nx bC9oYV9wYXJ0aXRpb24uY2MJMjAxMS0wNS0xNSAxMToxOToyNiArMDAwMApAQCAtNjY1NCwyMCAr NjY1NCwyNyBAQCBib29sIGhhX3BhcnRpdGlvbjo6Y2hlY2tfaWZfaW5jb21wYXRpYmxlCiAvKioK ICAgU3VwcG9ydCBvZiBmYXN0IG9yIG9ubGluZSBhZGQvZHJvcCBpbmRleAogKi8KLWludCBoYV9w YXJ0aXRpb246OmFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50 IG51bV9vZl9rZXlzKQoraW50IGhhX3BhcnRpdGlvbjo6YWRkX2luZGV4KFRBQkxFICp0YWJsZV9h cmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaGFuZGxlcl9hZGRfaW5kZXggKiphZGQpCiB7CiAgIGhhbmRsZXIgKipmaWxlOwog ICBpbnQgcmV0PSAwOwogCiAgIERCVUdfRU5URVIoImhhX3BhcnRpdGlvbjo6YWRkX2luZGV4Iik7 CisgICphZGQ9IG5ldyBoYW5kbGVyX2FkZF9pbmRleCh0YWJsZSwga2V5X2luZm8sIG51bV9vZl9r ZXlzKTsKICAgLyoKICAgICBUaGVyZSBoYXMgYWxyZWFkeSBiZWVuIGEgY2hlY2sgaW4gZml4X3Bh cnRpdGlvbl9mdW5jIGluIG15c3FsX2FsdGVyX3RhYmxlCiAgICAgYmVmb3JlIHRoaXMgY2FsbCwg d2hpY2ggY2hlY2tzIGZvciB1bmlxdWUvcHJpbWFyeSBrZXkgdmlvbGF0aW9ucyBvZiB0aGUKICAg ICBwYXJ0aXRpb25pbmcgZnVuY3Rpb24uIFNvIG5vIG5lZWQgZm9yIGV4dHJhIGNoZWNrIGhlcmUu CiAgICovCiAgIGZvciAoZmlsZT0gbV9maWxlOyAqZmlsZTsgZmlsZSsrKQotICAgIGlmICgocmV0 PSAgKCpmaWxlKS0+YWRkX2luZGV4KHRhYmxlX2FyZywga2V5X2luZm8sIG51bV9vZl9rZXlzKSkp CisgIHsKKyAgICBoYW5kbGVyX2FkZF9pbmRleCAqYWRkX2luZGV4OworICAgIGlmICgocmV0PSAo KmZpbGUpLT5hZGRfaW5kZXgodGFibGVfYXJnLCBrZXlfaW5mbywgbnVtX29mX2tleXMsICZhZGRf aW5kZXgpKSkKKyAgICAgIGdvdG8gZXJyOworICAgIGlmICgocmV0PSAoKmZpbGUpLT5maW5hbF9h ZGRfaW5kZXgoYWRkX2luZGV4LCB0cnVlKSkpCiAgICAgICBnb3RvIGVycjsKKyAgfQogICBEQlVH X1JFVFVSTihyZXQpOwogZXJyOgogICBpZiAoZmlsZSA+IG1fZmlsZSkKQEAgLTY2OTIsNiArNjY5 OSwzNCBAQCBlcnI6CiB9CiAKIAoraW50IGhhX3BhcnRpdGlvbjo6ZmluYWxfYWRkX2luZGV4KGhh bmRsZXJfYWRkX2luZGV4ICphZGQsIGJvb2wgY29tbWl0KQoreworICBEQlVHX0VOVEVSKCJoYV9w YXJ0aXRpb246OmZpbmFsX2FkZF9pbmRleCIpOworICAvLyBSb2xsYmFjayBieSBkcm9wcGluZyBp bmRleGVzLgorICBpZiAoIWNvbW1pdCkKKyAgeworICAgIFRBQkxFICp0YWJsZV9hcmc9IGFkZC0+ dGFibGU7CisgICAgdWludCBudW1fb2Zfa2V5cz0gYWRkLT5udW1fb2Zfa2V5czsKKyAgICBoYW5k bGVyICoqZmlsZTsKKyAgICB1aW50ICprZXlfbnVtYmVycz0gKHVpbnQqKSBoYV90aGQoKS0+YWxs b2Moc2l6ZW9mKHVpbnQpICogbnVtX29mX2tleXMpOworICAgIHVpbnQgb2xkX251bV9vZl9rZXlz PSB0YWJsZV9hcmctPnMtPmtleXM7CisgICAgdWludCBpOworICAgIC8qIFRoZSBuZXdseSBjcmVh dGVkIGtleXMgaGF2ZSB0aGUgbGFzdCBpZCdzICovCisgICAgZm9yIChpPSAwOyBpIDwgbnVtX29m X2tleXM7IGkrKykKKyAgICAgIGtleV9udW1iZXJzW2ldPSBpICsgb2xkX251bV9vZl9rZXlzOwor ICAgIGlmICghdGFibGVfYXJnLT5rZXlfaW5mbykKKyAgICAgIHRhYmxlX2FyZy0+a2V5X2luZm89 IGFkZC0+a2V5X2luZm87CisgICAgZm9yIChmaWxlPSBtX2ZpbGU7ICpmaWxlOyBmaWxlKyspCisg ICAgeworICAgICAgKHZvaWQpICgqZmlsZSktPnByZXBhcmVfZHJvcF9pbmRleCh0YWJsZV9hcmcs IGtleV9udW1iZXJzLCBudW1fb2Zfa2V5cyk7CisgICAgICAodm9pZCkgKCpmaWxlKS0+ZmluYWxf ZHJvcF9pbmRleCh0YWJsZV9hcmcpOworICAgIH0KKyAgICBpZiAodGFibGVfYXJnLT5rZXlfaW5m byA9PSBhZGQtPmtleV9pbmZvKQorICAgICAgdGFibGVfYXJnLT5rZXlfaW5mbz0gTlVMTDsKKyAg fQorICBEQlVHX1JFVFVSTigwKTsKK30KKwogaW50IGhhX3BhcnRpdGlvbjo6cHJlcGFyZV9kcm9w X2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIHVpbnQgKmtleV9udW0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50IG51bV9vZl9rZXlzKQogewoKPT09IG1vZGlmaWVkIGZpbGUg J3NxbC9oYV9wYXJ0aXRpb24uaCcKLS0tIGEvc3FsL2hhX3BhcnRpdGlvbi5oCTIwMTEtMDQtMjAg MTc6NTM6MDggKzAwMDAKKysrIGIvc3FsL2hhX3BhcnRpdGlvbi5oCTIwMTEtMDUtMTUgMTE6MTk6 MjYgKzAwMDAKQEAgLTEwNTUsNyArMTA1NSw5IEBAIHB1YmxpYzoKICAgICBUaGV5IGFyZSB1c2Vk IGZvciBvbi1saW5lL2Zhc3QgYWx0ZXIgdGFibGUgYWRkL2Ryb3AgaW5kZXg6CiAgICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICAqLwotICB2aXJ0dWFsIGludCBhZGRfaW5kZXgoVEFCTEUgKnRhYmxlX2Fy ZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cyk7CisgIHZpcnR1YWwgaW50IGFkZF9p bmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzLAor ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hZGRfaW5kZXggKiphZGQpOworICB2aXJ0 dWFsIGludCBmaW5hbF9hZGRfaW5kZXgoaGFuZGxlcl9hZGRfaW5kZXggKmFkZCwgYm9vbCBjb21t aXQpOwogICB2aXJ0dWFsIGludCBwcmVwYXJlX2Ryb3BfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZywg dWludCAqa2V5X251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgbnVt X29mX2tleXMpOwogICB2aXJ0dWFsIGludCBmaW5hbF9kcm9wX2luZGV4KFRBQkxFICp0YWJsZV9h cmcpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYW5kbGVyLmgnCi0tLSBhL3NxbC9oYW5kbGVy LmgJMjAxMS0wNS0wNSAyMzo1MDozMSArMDAwMAorKysgYi9zcWwvaGFuZGxlci5oCTIwMTEtMDUt MTUgMTE6MTk6MjYgKzAwMDAKQEAgLTExNTksNiArMTE1OSwyNyBAQCB1aW50IGNhbGN1bGF0ZV9r ZXlfbGVuKFRBQkxFICosIHVpbnQsIGNvCiAqLwogI2RlZmluZSBtYWtlX3ByZXZfa2V5cGFydF9t YXAoTikgKCgoa2V5X3BhcnRfbWFwKTEgPDwgKE4pKSAtIDEpCiAKKworLyoqCisgIEluZGV4IGNy ZWF0aW9uIGNvbnRleHQuCisgIENyZWF0ZWQgYnkgaGFuZGxlcjo6YWRkX2luZGV4KCkgYW5kIGZy ZWVkIGJ5IGhhbmRsZXI6OmZpbmFsX2FkZF9pbmRleCgpLgorKi8KKworY2xhc3MgaGFuZGxlcl9h ZGRfaW5kZXgKK3sKK3B1YmxpYzoKKyAgLyogVGFibGUgd2hlcmUgdGhlIGluZGV4ZXMgYXJlIGFk ZGVkICovCisgIFRBQkxFKiBjb25zdCB0YWJsZTsKKyAgLyogSW5kZXhlcyBiZWluZyBjcmVhdGVk ICovCisgIEtFWSogY29uc3Qga2V5X2luZm87CisgIC8qIFNpemUgb2Yga2V5X2luZm9bXSAqLwor ICBjb25zdCB1aW50IG51bV9vZl9rZXlzOworICBoYW5kbGVyX2FkZF9pbmRleChUQUJMRSAqdGFi bGVfYXJnLCBLRVkgKmtleV9pbmZvX2FyZywgdWludCBudW1fb2Zfa2V5c19hcmcpCisgICAgOiB0 YWJsZSAodGFibGVfYXJnKSwga2V5X2luZm8gKGtleV9pbmZvX2FyZyksIG51bV9vZl9rZXlzIChu dW1fb2Zfa2V5c19hcmcpCisgIHt9CisgIHZpcnR1YWwgfmhhbmRsZXJfYWRkX2luZGV4KCkge30K K307CisKIC8qKgogICBUaGUgaGFuZGxlciBjbGFzcyBpcyB0aGUgaW50ZXJmYWNlIGZvciBkeW5h bWljYWxseSBsb2FkYWJsZQogICBzdG9yYWdlIGVuZ2luZXMuIERvIG5vdCBhZGQgaWZkZWZzIGFu ZCB0YWtlIGNhcmUgd2hlbiBhZGRpbmcgb3IKQEAgLTE3MTcsOCArMTczOCwzNiBAQCBwdWJsaWM6 CiAKICAgdmlydHVhbCB1bG9uZyBpbmRleF9mbGFncyh1aW50IGlkeCwgdWludCBwYXJ0LCBib29s IGFsbF9wYXJ0cykgY29uc3QgPTA7CiAKLSAgdmlydHVhbCBpbnQgYWRkX2luZGV4KFRBQkxFICp0 YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMpCisvKioKKyAgIEZpcnN0 IHBoYXNlIG9mIGluLXBsYWNlIGFkZCBpbmRleC4KKyAgIEhhbmRsZXJzIGFyZSBzdXBwb3NlZCB0 byBjcmVhdGUgbmV3IGluZGV4ZXMgaGVyZSBidXQgbm90IG1ha2UgdGhlbQorICAgdmlzaWJsZS4K KworICAgQHBhcmFtIHRhYmxlX2FyZyAgIFRhYmxlIHRvIGFkZCBpbmRleCB0bworICAgQHBhcmFt IGtleV9pbmZvICAgIEluZm9ybWF0aW9uIGFib3V0IG5ldyBpbmRleGVzCisgICBAcGFyYW0gbnVt X29mX2tleSAgTnVtYmVyIG9mIG5ldyBpbmRleGVzCisgICBAcGFyYW0gYWRkW291dF0gICAgQ29u dGV4dCBvZiBoYW5kbGVyIHNwZWNpZmljIGluZm9ybWF0aW9uIG5lZWRlZAorICAgICAgICAgICAg ICAgICAgICAgIGZvciBmaW5hbF9hZGRfaW5kZXgoKS4KKworICAgQG5vdGUgVGhpcyBmdW5jdGlv biBjYW4gYmUgY2FsbGVkIHdpdGggbGVzcyB0aGFuIGV4Y2x1c2l2ZSBtZXRhZGF0YQorICAgbG9j ayBkZXBlbmRpbmcgb24gd2hpY2ggZmxhZ3MgYXJlIGxpc3RlZCBpbiBhbHRlcl90YWJsZV9mbGFn cy4KKyovCisgIHZpcnR1YWwgaW50IGFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtl eV9pbmZvLCB1aW50IG51bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl cl9hZGRfaW5kZXggKiphZGQpCisgIHsgcmV0dXJuIChIQV9FUlJfV1JPTkdfQ09NTUFORCk7IH0K KworLyoqCisgICBTZWNvbmQgYW5kIGxhc3QgcGhhc2Ugb2YgaW4tcGxhY2UgYWRkIGluZGV4Lgor ICAgQ29tbWl0IG9yIHJvbGxiYWNrIHBlbmRpbmcgbmV3IGluZGV4ZXMuCisKKyAgIEBwYXJhbSBh ZGQgICAgIENvbnRleHQgb2YgaGFuZGxlciBzcGVjaWZpYyBpbmZvcm1hdGlvbiBmcm9tIGFkZF9p bmRleCgpLgorICAgQHBhcmFtIGNvbW1pdCAgSWYgdHJ1ZSwgY29tbWl0LiBJZiBmYWxzZSwgcm9s bGJhY2sgaW5kZXggY2hhbmdlcy4KKworICAgQG5vdGUgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg d2l0aCBleGNsdXNpdmUgbWV0YWRhdGEgbG9jay4KKyovCisgIHZpcnR1YWwgaW50IGZpbmFsX2Fk ZF9pbmRleChoYW5kbGVyX2FkZF9pbmRleCAqYWRkLCBib29sIGNvbW1pdCkKICAgeyByZXR1cm4g KEhBX0VSUl9XUk9OR19DT01NQU5EKTsgfQorCiAgIHZpcnR1YWwgaW50IHByZXBhcmVfZHJvcF9p bmRleChUQUJMRSAqdGFibGVfYXJnLCB1aW50ICprZXlfbnVtLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludCBudW1fb2Zfa2V5cykKICAgeyByZXR1cm4gKEhBX0VSUl9XUk9O R19DT01NQU5EKTsgfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfdGFibGUuY2MnCi0tLSBh L3NxbC9zcWxfdGFibGUuY2MJMjAxMS0wNS0wNiAwODoyNzowNCArMDAwMAorKysgYi9zcWwvc3Fs X3RhYmxlLmNjCTIwMTEtMDUtMTUgMTE6MTk6MjYgKzAwMDAKQEAgLTU2NzgsNiArNTY3OCw4IEBA IGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQsY2hhciAqbmUKICAgdWludCBpbmRleF9k cm9wX2NvdW50PSAwOwogICB1aW50ICppbmRleF9kcm9wX2J1ZmZlcj0gTlVMTDsKICAgdWludCBp bmRleF9hZGRfY291bnQ9IDA7CisgIGhhbmRsZXJfYWRkX2luZGV4ICphZGQ9IE5VTEw7CisgIGJv b2wgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7CiAgIHVpbnQgKmluZGV4X2FkZF9i dWZmZXI9IE5VTEw7CiAgIHVpbnQgY2FuZGlkYXRlX2tleV9jb3VudD0gMDsKICAgYm9vbCBub19w azsKQEAgLTY0MzIsNiArNjQzNCw5IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQs Y2hhciAqbmUKICAgfQogICB0aGQtPmNvdW50X2N1dGVkX2ZpZWxkcz0gQ0hFQ0tfRklFTERfSUdO T1JFOwogCisgIGlmIChlcnJvcikKKyAgICBnb3RvIGVycl9uZXdfdGFibGVfY2xlYW51cDsKKwog ICAvKiBJZiB3ZSBkaWQgbm90IG5lZWQgdG8gY29weSwgd2UgbWlnaHQgc3RpbGwgbmVlZCB0byBh ZGQvZHJvcCBpbmRleGVzLiAqLwogICBpZiAoISBuZXdfdGFibGUpCiAgIHsKQEAgLTY0NjMsNyAr NjQ2OCw4IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQsY2hhciAqbmUKICAgICAg ICAgICBrZXlfcGFydC0+ZmllbGQ9IHRhYmxlLT5maWVsZFtrZXlfcGFydC0+ZmllbGRucl07CiAg ICAgICB9CiAgICAgICAvKiBBZGQgdGhlIGluZGV4ZXMuICovCi0gICAgICBpZiAoKGVycm9yPSB0 YWJsZS0+ZmlsZS0+YWRkX2luZGV4KHRhYmxlLCBrZXlfaW5mbywgaW5kZXhfYWRkX2NvdW50KSkp CisgICAgICBpZiAoKGVycm9yPSB0YWJsZS0+ZmlsZS0+YWRkX2luZGV4KHRhYmxlLCBrZXlfaW5m bywgaW5kZXhfYWRkX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmYWRkKSkpCiAgICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAgRXhjaGFuZ2UgdGhl IGtleV9pbmZvIGZvciB0aGUgZXJyb3IgbWVzc2FnZS4gSWYgd2UgZXhjaGFuZ2UKQEAgLTY0NzUs MTEgKzY0ODEsMjcgQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShUSEQgKnRoZCxjaGFyICpuZQog ICAgICAgICB0YWJsZS0+a2V5X2luZm89IHNhdmVfa2V5X2luZm87CiAgICAgICAgIGdvdG8gZXJy X25ld190YWJsZV9jbGVhbnVwOwogICAgICAgfQorICAgICAgcGVuZGluZ19pbnBsYWNlX2FkZF9p bmRleD0gdHJ1ZTsKICAgICB9CiAgICAgLyplbmQgb2YgaWYgKGluZGV4X2FkZF9jb3VudCkqLwog CiAgICAgaWYgKGluZGV4X2Ryb3BfY291bnQpCiAgICAgeworICAgICAgLyogQ3VycmVudGx5IHdl IG11c3QgZmluYWxpemUgYWRkIGluZGV4IGlmIHdlIGFsc28gZHJvcCBpbmRleGVzICovCisgICAg ICBpZiAocGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleCkKKyAgICAgIHsKKyAgICAgICAgLyogQ29t bWl0dGluZyBpbmRleCBjaGFuZ2VzIG5lZWRzIGV4Y2x1c2l2ZSBtZXRhZGF0YSBsb2NrLiAqLwor ICAgICAgICBEQlVHX0FTU0VSVCh0aGQtPm1kbF9jb250ZXh0LmlzX2xvY2tfb3duZXIoTURMX2tl eTo6VEFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YWJsZV9saXN0LT5kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhYmxlX2xpc3QtPnRhYmxlX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRExfRVhDTFVTSVZFKSk7CisgICAg ICAgIGlmICgoZXJyb3I9IHRhYmxlLT5maWxlLT5maW5hbF9hZGRfaW5kZXgoYWRkLCB0cnVlKSkp CisgICAgICAgIHsKKyAgICAgICAgICB0YWJsZS0+ZmlsZS0+cHJpbnRfZXJyb3IoZXJyb3IsIE1Z RigwKSk7CisgICAgICAgICAgZ290byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7CisgICAgICAgIH0K KyAgICAgICAgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7CisgICAgICB9CiAgICAg ICAvKiBUaGUgcHJlcGFyZV9kcm9wX2luZGV4KCkgbWV0aG9kIHRha2VzIGFuIGFycmF5IG9mIGtl eSBudW1iZXJzLiAqLwogICAgICAga2V5X251bWJlcnM9ICh1aW50KikgdGhkLT5hbGxvYyhzaXpl b2YodWludCkgKiBpbmRleF9kcm9wX2NvdW50KTsKICAgICAgIGtleW5vX3A9IGtleV9udW1iZXJz OwpAQCAtNjUyMCwxMSArNjU0MiwxNCBAQCBib29sIG15c3FsX2FsdGVyX3RhYmxlKFRIRCAqdGhk LGNoYXIgKm5lCiAgIH0KICAgLyplbmQgb2YgaWYgKCEgbmV3X3RhYmxlKSBmb3IgYWRkL2Ryb3Ag aW5kZXgqLwogCi0gIGlmIChlcnJvcikKLSAgICBnb3RvIGVycl9uZXdfdGFibGVfY2xlYW51cDsK LQogICBpZiAodGFibGUtPnMtPnRtcF90YWJsZSAhPSBOT19UTVBfVEFCTEUpCiAgIHsKKyAgICAv KgorICAgICAgSW4tcGxhY2Ugb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9y YXJ5IHRhYmxlcywgc28KKyAgICAgIHdlIGRvbid0IGhhdmUgdG8gY2FsbCBmaW5hbF9hZGRfaW5k ZXgoKSBpbiB0aGlzIGNhc2UuIFRoZSBhc3NlcnQKKyAgICAgIHZlcmlmaWVzIHRoYXQgaW4tcGxh Y2UgYWRkIGluZGV4IGhhcyBub3QgYmVlbiBkb25lLgorICAgICovCisgICAgREJVR19BU1NFUlQo IXBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXgpOwogICAgIC8qIENsb3NlIGxvY2sgaWYgdGhpcyBp cyBhIHRyYW5zYWN0aW9uYWwgdGFibGUgKi8KICAgICBpZiAodGhkLT5sb2NrKQogICAgIHsKQEAg LTY1OTEsOCArNjYxNiwyMiBAQCBib29sIG15c3FsX2FsdGVyX3RhYmxlKFRIRCAqdGhkLGNoYXIg Km5lCiAgICAgbXlfY2FzZWRuX3N0cihmaWxlc19jaGFyc2V0X2luZm8sIG9sZF9uYW1lKTsKIAog ICBpZiAod2FpdF93aGlsZV90YWJsZV9pc191c2VkKHRoZCwgdGFibGUsIEhBX0VYVFJBX1BSRVBB UkVfRk9SX1JFTkFNRSkpCisgIHsKKyAgICBpZiAocGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleCkK KyAgICB7CisgICAgICBwZW5kaW5nX2lucGxhY2VfYWRkX2luZGV4PSBmYWxzZTsKKyAgICAgIHRh YmxlLT5maWxlLT5maW5hbF9hZGRfaW5kZXgoYWRkLCBmYWxzZSk7CisgICAgfQorICAgIC8vIE1h cmsgdGhpcyBUQUJMRSBpbnN0YW5jZSBhcyBzdGFsZSB0byBhdm9pZCBvdXQtb2Ytc3luYyBpbmRl eCBpbmZvcm1hdGlvbi4KKyAgICB0YWJsZS0+bV9uZWVkc19yZW9wZW49IHRydWU7CiAgICAgZ290 byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7Ci0KKyAgfQorICBpZiAocGVuZGluZ19pbnBsYWNlX2Fk ZF9pbmRleCkKKyAgeworICAgIHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9IGZhbHNlOworICAg IGlmICh0YWJsZS0+ZmlsZS0+ZmluYWxfYWRkX2luZGV4KGFkZCwgdHJ1ZSkpCisgICAgICBnb3Rv IGVycl9uZXdfdGFibGVfY2xlYW51cDsKKyAgfQogCiAgIGNsb3NlX2FsbF90YWJsZXNfZm9yX25h bWUodGhkLCB0YWJsZS0+cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSAh PSB0YWJsZV9uYW1lIHx8IG5ld19kYiAhPSBkYik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9o YW5kbGVyL2hhX2lubm9kYi5jYwkyMDExLTA1LTA2IDA4OjI3OjA0ICswMDAwCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MJMjAxMS0wNS0xNSAxMToxOToyNiArMDAw MApAQCAtMjYyMSw4ICsyNjIxLDEwIEBAIGlubm9iYXNlX2FsdGVyX3RhYmxlX2ZsYWdzKAogCXVp bnQJZmxhZ3MpCiB7CiAJcmV0dXJuKEhBX0lOUExBQ0VfQUREX0lOREVYX05PX1JFQURfV1JJVEUK KwkJfCBIQV9JTlBMQUNFX0FERF9JTkRFWF9OT19XUklURQogCQl8IEhBX0lOUExBQ0VfRFJPUF9J TkRFWF9OT19SRUFEX1dSSVRFCiAJCXwgSEFfSU5QTEFDRV9BRERfVU5JUVVFX0lOREVYX05PX1JF QURfV1JJVEUKKwkJfCBIQV9JTlBMQUNFX0FERF9VTklRVUVfSU5ERVhfTk9fV1JJVEUKIAkJfCBI QV9JTlBMQUNFX0RST1BfVU5JUVVFX0lOREVYX05PX1JFQURfV1JJVEUKIAkJfCBIQV9JTlBMQUNF X0FERF9QS19JTkRFWF9OT19SRUFEX1dSSVRFKTsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aGFuZGxlci9oYV9pbm5vZGIuaAkyMDExLTA0LTExIDE0OjAzOjMyICswMDAwCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuaAkyMDExLTA1LTE1IDExOjE5OjI2ICswMDAw CkBAIC0yMTUsNyArMjE1LDkgQEAgY2xhc3MgaGFfaW5ub2Jhc2U6IHB1YmxpYyBoYW5kbGVyCiAJ Ym9vbCBwcmltYXJ5X2tleV9pc19jbHVzdGVyZWQoKTsKIAlpbnQgY21wX3JlZihjb25zdCB1Y2hh ciAqcmVmMSwgY29uc3QgdWNoYXIgKnJlZjIpOwogCS8qKiBGYXN0IGluZGV4IGNyZWF0aW9uIChz bWFydCBBTFRFUiBUQUJMRSkgQHNlZSBoYW5kbGVyMGFsdGVyLmNjIEB7ICovCi0JaW50IGFkZF9p bmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzKTsK KwlpbnQgYWRkX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVt X29mX2tleXMsCisJCSAgICAgIGhhbmRsZXJfYWRkX2luZGV4ICoqYWRkKTsKKwlpbnQgZmluYWxf YWRkX2luZGV4KGhhbmRsZXJfYWRkX2luZGV4ICphZGQsIGJvb2wgY29tbWl0KTsKIAlpbnQgcHJl cGFyZV9kcm9wX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIHVpbnQgKmtleV9udW0sCiAJCQkgICAg ICAgdWludCBudW1fb2Zfa2V5cyk7CiAJaW50IGZpbmFsX2Ryb3BfaW5kZXgoVEFCTEUgKnRhYmxl X2FyZyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRs ZXIwYWx0ZXIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVy LmNjCTIwMTEtMDQtMTEgMTQ6MDM6MzIgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5k bGVyL2hhbmRsZXIwYWx0ZXIuY2MJMjAxMS0wNS0xNSAxMToxOToyNiArMDAwMApAQCAtNjE5LDYg KzYxOSwxOCBAQCBpbm5vYmFzZV9jcmVhdGVfdGVtcG9yYXJ5X3RhYmxlbmFtZSgKIAlyZXR1cm4o bmFtZSk7CiB9CiAKK2NsYXNzIGhhX2lubm9iYXNlX2FkZF9pbmRleCA6IHB1YmxpYyBoYW5kbGVy X2FkZF9pbmRleAoreworcHVibGljOgorCS8qKiB0YWJsZSB3aGVyZSB0aGUgaW5kZXhlcyBhcmUg YmVpbmcgY3JlYXRlZCAqLworCWRpY3RfdGFibGVfdCogaW5kZXhlZF90YWJsZTsKKwloYV9pbm5v YmFzZV9hZGRfaW5kZXgoVEFCTEUqIHRhYmxlLCBLRVkqIGtleV9pbmZvLCB1aW50IG51bV9vZl9r ZXlzLAorCQkJICAgICAgZGljdF90YWJsZV90KiBpbmRleGVkX3RhYmxlX2FyZykgOgorCQloYW5k bGVyX2FkZF9pbmRleCh0YWJsZSwga2V5X2luZm8sIG51bV9vZl9rZXlzKSwKKwkJaW5kZXhlZF90 YWJsZSAoaW5kZXhlZF90YWJsZV9hcmcpIHt9CisJfmhhX2lubm9iYXNlX2FkZF9pbmRleCgpIHt9 Cit9OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIENyZWF0ZSBpbmRleGVzLgogQHJldHVybgkwIG9yIGVy cm9yIG51bWJlciAqLwpAQCAtNjI2LDEyICs2MzgsMTUgQEAgVU5JVl9JTlRFUk4KIGludAogaGFf aW5ub2Jhc2U6OmFkZF9pbmRleCgKIC8qPT09PT09PT09PT09PT09PT09PSovCi0JVEFCTEUqCXRh YmxlLAkJLyohPCBpbjogVGFibGUgd2hlcmUgaW5kZXhlcyBhcmUgY3JlYXRlZCAqLwotCUtFWSoJ a2V5X2luZm8sCS8qITwgaW46IEluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwotCXVpbnQJbnVtX29m X2tleXMpCS8qITwgaW46IE51bWJlciBvZiBpbmRleGVzIHRvIGJlIGNyZWF0ZWQgKi8KKwlUQUJM RSoJCQl0YWJsZSwJCS8qITwgaW46IFRhYmxlIHdoZXJlIGluZGV4ZXMKKwkJCQkJCWFyZSBjcmVh dGVkICovCisJS0VZKgkJCWtleV9pbmZvLAkvKiE8IGluOiBJbmRleGVzCisJCQkJCQl0byBiZSBj cmVhdGVkICovCisJdWludAkJCW51bV9vZl9rZXlzLAkvKiE8IGluOiBOdW1iZXIgb2YgaW5kZXhl cworCQkJCQkJdG8gYmUgY3JlYXRlZCAqLworCWhhbmRsZXJfYWRkX2luZGV4KioJYWRkKQkJLyoh PCBvdXQ6IGNvbnRleHQgKi8KIHsKIAlkaWN0X2luZGV4X3QqKglpbmRleDsJCS8qITwgSW5kZXgg dG8gYmUgY3JlYXRlZCAqLwotCWRpY3RfdGFibGVfdCoJaW5ub2RiX3RhYmxlOwkvKiE8IElubm9E QiB0YWJsZSBpbiBkaWN0aW9uYXJ5ICovCiAJZGljdF90YWJsZV90KglpbmRleGVkX3RhYmxlOwkv KiE8IFRhYmxlIHdoZXJlIGluZGV4ZXMgYXJlIGNyZWF0ZWQgKi8KIAltZXJnZV9pbmRleF9kZWZf dCogaW5kZXhfZGVmczsJLyohPCBJbmRleCBkZWZpbml0aW9ucyAqLwogCW1lbV9oZWFwX3QqICAg ICBoZWFwOwkJLyohPCBIZWFwIGZvciBpbmRleCBkZWZpbml0aW9ucyAqLwpAQCAtNjQ3LDYgKzY2 Miw4IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJdXRfYShrZXlfaW5mbyk7CiAJdXRfYShu dW1fb2Zfa2V5cyk7CiAKKwkqYWRkID0gTlVMTDsKKwogCWlmIChzcnZfY3JlYXRlZF9uZXdfcmF3 IHx8IHNydl9mb3JjZV9yZWNvdmVyeSkgewogCQlEQlVHX1JFVFVSTihIQV9FUlJfV1JPTkdfQ09N TUFORCk7CiAJfQpAQCAtNjYyLDE1ICs2NzksMTYgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgK IAkJREJVR19SRVRVUk4oLTEpOwogCX0KIAotCWlubm9kYl90YWJsZSA9IGluZGV4ZWRfdGFibGUK LQkJPSBkaWN0X3RhYmxlX2dldChwcmVidWlsdC0+dGFibGUtPm5hbWUsIEZBTFNFKTsKKwlpbmRl eGVkX3RhYmxlID0gZGljdF90YWJsZV9nZXQocHJlYnVpbHQtPnRhYmxlLT5uYW1lLCBGQUxTRSk7 CiAKLQlpZiAoVU5JVl9VTkxJS0VMWSghaW5ub2RiX3RhYmxlKSkgeworCWlmIChVTklWX1VOTElL RUxZKCFpbmRleGVkX3RhYmxlKSkgewogCQlEQlVHX1JFVFVSTihIQV9FUlJfTk9fU1VDSF9UQUJM RSk7CiAJfQogCisgICAgICAgIHV0X2EoaW5kZXhlZF90YWJsZSA9PSBwcmVidWlsdC0+dGFibGUp OworCiAJLyogQ2hlY2sgdGhhdCBpbmRleCBrZXlzIGFyZSBzZW5zaWJsZSAqLwotCWVycm9yID0g aW5ub2Jhc2VfY2hlY2tfaW5kZXhfa2V5cyhrZXlfaW5mbywgbnVtX29mX2tleXMsIGlubm9kYl90 YWJsZSk7CisJZXJyb3IgPSBpbm5vYmFzZV9jaGVja19pbmRleF9rZXlzKGtleV9pbmZvLCBudW1f b2Zfa2V5cywgcHJlYnVpbHQtPnRhYmxlKTsKIAogCWlmIChVTklWX1VOTElLRUxZKGVycm9yKSkg ewogCQlEQlVHX1JFVFVSTihlcnJvcik7CkBAIC02OTEsNyArNzA5LDcgQEAgaGFfaW5ub2Jhc2U6 OmFkZF9pbmRleCgKIAludW1fb2ZfaWR4ID0gbnVtX29mX2tleXM7CiAKIAlpbmRleF9kZWZzID0g aW5ub2Jhc2VfY3JlYXRlX2tleV9kZWYoCi0JCXRyeCwgaW5ub2RiX3RhYmxlLCBoZWFwLCBrZXlf aW5mbywgbnVtX29mX2lkeCk7CisJCXRyeCwgcHJlYnVpbHQtPnRhYmxlLCBoZWFwLCBrZXlfaW5m bywgbnVtX29mX2lkeCk7CiAKIAluZXdfcHJpbWFyeSA9IERJQ1RfQ0xVU1RFUkVEICYgaW5kZXhf ZGVmc1swXS5pbmRfdHlwZTsKIApAQCAtNzA1LDcgKzcyMyw3IEBAIGhhX2lubm9iYXNlOjphZGRf aW5kZXgoCiAJdHJ4X3NldF9kaWN0X29wZXJhdGlvbih0cngsIFRSWF9ESUNUX09QX0lOREVYKTsK IAogCS8qIEFjcXVpcmUgYSBsb2NrIG9uIHRoZSB0YWJsZSBiZWZvcmUgY3JlYXRpbmcgYW55IGlu ZGV4ZXMuICovCi0JZXJyb3IgPSByb3dfbWVyZ2VfbG9ja190YWJsZShwcmVidWlsdC0+dHJ4LCBp bm5vZGJfdGFibGUsCisJZXJyb3IgPSByb3dfbWVyZ2VfbG9ja190YWJsZShwcmVidWlsdC0+dHJ4 LCBwcmVidWlsdC0+dGFibGUsCiAJCQkJICAgICBuZXdfcHJpbWFyeSA/IExPQ0tfWCA6IExPQ0tf Uyk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShlcnJvciAhPSBEQl9TVUNDRVNTKSkgewpAQCAtNzE5 LDcgKzczNyw3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJcm93X215c3FsX2xvY2tfZGF0 YV9kaWN0aW9uYXJ5KHRyeCk7CiAJZGljdF9sb2NrZWQgPSBUUlVFOwogCi0JdXRfZChkaWN0X3Rh YmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhpbm5vZGJfdGFibGUsIEZBTFNFKSk7CisJdXRfZChk aWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhwcmVidWlsdC0+dGFibGUsIEZBTFNFKSk7 CiAKIAkvKiBJZiBhIG5ldyBwcmltYXJ5IGtleSBpcyBkZWZpbmVkIGZvciB0aGUgdGFibGUgd2Ug bmVlZAogCXRvIGRyb3AgdGhlIG9yaWdpbmFsIHRhYmxlIGFuZCByZWJ1aWxkIGFsbCBpbmRleGVz LiAqLwpAQCAtNzI3LDE1ICs3NDUsMTUgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAlpZiAo VU5JVl9VTkxJS0VMWShuZXdfcHJpbWFyeSkpIHsKIAkJLyogVGhpcyB0cmFuc2FjdGlvbiBzaG91 bGQgYmUgdGhlIG9ubHkgb25lCiAJCW9wZXJhdGluZyBvbiB0aGUgdGFibGUuICovCi0JCXV0X2Eo aW5ub2RiX3RhYmxlLT5uX215c3FsX2hhbmRsZXNfb3BlbmVkID09IDEpOworCQl1dF9hKHByZWJ1 aWx0LT50YWJsZS0+bl9teXNxbF9oYW5kbGVzX29wZW5lZCA9PSAxKTsKIAogCQljaGFyKgluZXdf dGFibGVfbmFtZSA9IGlubm9iYXNlX2NyZWF0ZV90ZW1wb3JhcnlfdGFibGVuYW1lKAotCQkJaGVh cCwgJzEnLCBpbm5vZGJfdGFibGUtPm5hbWUpOworCQkJaGVhcCwgJzEnLCBwcmVidWlsdC0+dGFi bGUtPm5hbWUpOwogCiAJCS8qIENsb25lIHRoZSB0YWJsZS4gKi8KIAkJdHJ4X3NldF9kaWN0X29w ZXJhdGlvbih0cngsIFRSWF9ESUNUX09QX1RBQkxFKTsKIAkJaW5kZXhlZF90YWJsZSA9IHJvd19t ZXJnZV9jcmVhdGVfdGVtcG9yYXJ5X3RhYmxlKAotCQkJbmV3X3RhYmxlX25hbWUsIGluZGV4X2Rl ZnMsIGlubm9kYl90YWJsZSwgdHJ4KTsKKwkJCW5ld190YWJsZV9uYW1lLCBpbmRleF9kZWZzLCBw cmVidWlsdC0+dGFibGUsIHRyeCk7CiAKIAkJaWYgKCFpbmRleGVkX3RhYmxlKSB7CiAKQEAgLTc0 OSwxMSArNzY3LDEyIEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJCQkJYnJlYWs7CiAJCQlk ZWZhdWx0OgogCQkJCWVycm9yID0gY29udmVydF9lcnJvcl9jb2RlX3RvX215c3FsKAotCQkJCQl0 cngtPmVycm9yX3N0YXRlLCBpbm5vZGJfdGFibGUtPmZsYWdzLAorCQkJCQl0cngtPmVycm9yX3N0 YXRlLAorCQkJCQlwcmVidWlsdC0+dGFibGUtPmZsYWdzLAogCQkJCQl1c2VyX3RoZCk7CiAJCQl9 CiAKLQkJCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMoaW5ub2RiX3RhYmxl LAorCQkJdXRfZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhwcmVidWlsdC0+dGFi bGUsCiAJCQkJCQkJICAgICAgRkFMU0UpKTsKIAkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJCQl0 cnhfZ2VuZXJhbF9yb2xsYmFja19mb3JfbXlzcWwodHJ4LCBOVUxMKTsKQEAgLTc2OCwxNyArNzg3 LDE1IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAKIAkvKiBDcmVhdGUgdGhlIGluZGV4ZXMg aW4gU1lTX0lOREVYRVMgYW5kIGxvYWQgaW50byBkaWN0aW9uYXJ5LiAqLwogCi0JZm9yICh1bGlu dCBpID0gMDsgaSA8IG51bV9vZl9pZHg7IGkrKykgeworCWZvciAobnVtX2NyZWF0ZWQgPSAwOyBu dW1fY3JlYXRlZCA8IG51bV9vZl9pZHg7IG51bV9jcmVhdGVkKyspIHsKIAotCQlpbmRleFtpXSA9 IHJvd19tZXJnZV9jcmVhdGVfaW5kZXgodHJ4LCBpbmRleGVkX3RhYmxlLAotCQkJCQkJICAmaW5k ZXhfZGVmc1tpXSk7CisJCWluZGV4W251bV9jcmVhdGVkXSA9IHJvd19tZXJnZV9jcmVhdGVfaW5k ZXgoCisJCQl0cngsIGluZGV4ZWRfdGFibGUsICZpbmRleF9kZWZzW251bV9jcmVhdGVkXSk7CiAK LQkJaWYgKCFpbmRleFtpXSkgeworCQlpZiAoIWluZGV4W251bV9jcmVhdGVkXSkgewogCQkJZXJy b3IgPSB0cngtPmVycm9yX3N0YXRlOwogCQkJZ290byBlcnJvcl9oYW5kbGluZzsKIAkJfQotCi0J CW51bV9jcmVhdGVkKys7CiAJfQogCiAJdXRfYWQoZXJyb3IgPT0gREJfU1VDQ0VTUyk7CkBAIC04 MDAsNyArODE3LDcgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAlpZiAoVU5JVl9VTkxJS0VM WShuZXdfcHJpbWFyeSkpIHsKIAkJLyogQSBwcmltYXJ5IGtleSBpcyB0byBiZSBidWlsdC4gIEFj cXVpcmUgYW4gZXhjbHVzaXZlCiAJCXRhYmxlIGxvY2sgYWxzbyBvbiB0aGUgdGFibGUgdGhhdCBp cyBiZWluZyBjcmVhdGVkLiAqLwotCQl1dF9hZChpbmRleGVkX3RhYmxlICE9IGlubm9kYl90YWJs ZSk7CisJCXV0X2FkKGluZGV4ZWRfdGFibGUgIT0gcHJlYnVpbHQtPnRhYmxlKTsKIAogCQllcnJv ciA9IHJvd19tZXJnZV9sb2NrX3RhYmxlKHByZWJ1aWx0LT50cngsIGluZGV4ZWRfdGFibGUsCiAJ CQkJCSAgICAgTE9DS19YKTsKQEAgLTgxNCw3ICs4MzEsNyBAQCBoYV9pbm5vYmFzZTo6YWRkX2lu ZGV4KAogCS8qIFJlYWQgdGhlIGNsdXN0ZXJlZCBpbmRleCBvZiB0aGUgdGFibGUgYW5kIGJ1aWxk IGluZGV4ZXMKIAliYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uIHVzaW5nIHRlbXBvcmFyeSBmaWxl cyBhbmQgbWVyZ2Ugc29ydC4gKi8KIAllcnJvciA9IHJvd19tZXJnZV9idWlsZF9pbmRleGVzKHBy ZWJ1aWx0LT50cngsCi0JCQkJCWlubm9kYl90YWJsZSwgaW5kZXhlZF90YWJsZSwKKwkJCQkJcHJl YnVpbHQtPnRhYmxlLCBpbmRleGVkX3RhYmxlLAogCQkJCQlpbmRleCwgbnVtX29mX2lkeCwgdGFi bGUpOwogCiBlcnJvcl9oYW5kbGluZzoKQEAgLTgyMiw2MyArODM5LDE1IEBAIGVycm9yX2hhbmRs aW5nOgogCWRpY3Rpb25hcnkgd2hpY2ggd2VyZSBkZWZpbmVkLiAqLwogCiAJc3dpdGNoIChlcnJv cikgewotCQljb25zdCBjaGFyKglvbGRfbmFtZTsKLQkJY2hhcioJCXRtcF9uYW1lOwogCWNhc2Ug REJfU1VDQ0VTUzoKIAkJdXRfYSghZGljdF9sb2NrZWQpOwotCQlyb3dfbXlzcWxfbG9ja19kYXRh X2RpY3Rpb25hcnkodHJ4KTsKLQkJZGljdF9sb2NrZWQgPSBUUlVFOwogCisJCXV0X2QobXV0ZXhf ZW50ZXIoJmRpY3Rfc3lzLT5tdXRleCkpOwogCQl1dF9kKGRpY3RfdGFibGVfY2hlY2tfZm9yX2R1 cF9pbmRleGVzKHByZWJ1aWx0LT50YWJsZSwgVFJVRSkpOwotCi0JCWlmICghbmV3X3ByaW1hcnkp IHsKLQkJCWVycm9yID0gcm93X21lcmdlX3JlbmFtZV9pbmRleGVzKHRyeCwgaW5kZXhlZF90YWJs ZSk7Ci0KLQkJCWlmIChlcnJvciAhPSBEQl9TVUNDRVNTKSB7Ci0JCQkJcm93X21lcmdlX2Ryb3Bf aW5kZXhlcyh0cngsIGluZGV4ZWRfdGFibGUsCi0JCQkJCQkgICAgICAgaW5kZXgsIG51bV9jcmVh dGVkKTsKLQkJCX0KLQotCQkJZ290byBjb252ZXJ0X2Vycm9yOwotCQl9Ci0KLQkJLyogSWYgYSBu ZXcgcHJpbWFyeSBrZXkgd2FzIGRlZmluZWQgZm9yIHRoZSB0YWJsZSBhbmQKLQkJdGhlcmUgd2Fz IG5vIGVycm9yIGF0IHRoaXMgcG9pbnQsIHdlIGNhbiBub3cgcmVuYW1lCi0JCXRoZSBvbGQgdGFi bGUgYXMgYSB0ZW1wb3JhcnkgdGFibGUsIHJlbmFtZSB0aGUgbmV3Ci0JCXRlbXBvcmFyeSB0YWJs ZSBhcyB0aGUgb2xkIHRhYmxlIGFuZCBkcm9wIHRoZSBvbGQgdGFibGUuICovCi0JCW9sZF9uYW1l ID0gaW5ub2RiX3RhYmxlLT5uYW1lOwotCQl0bXBfbmFtZSA9IGlubm9iYXNlX2NyZWF0ZV90ZW1w b3JhcnlfdGFibGVuYW1lKGhlYXAsICcyJywKLQkJCQkJCQkgICAgICAgb2xkX25hbWUpOwotCi0J CWVycm9yID0gcm93X21lcmdlX3JlbmFtZV90YWJsZXMoaW5ub2RiX3RhYmxlLCBpbmRleGVkX3Rh YmxlLAotCQkJCQkJdG1wX25hbWUsIHRyeCk7Ci0KLQkJaWYgKGVycm9yICE9IERCX1NVQ0NFU1Mp IHsKLQotCQkJcm93X21lcmdlX2Ryb3BfdGFibGUodHJ4LCBpbmRleGVkX3RhYmxlKTsKLQotCQkJ c3dpdGNoIChlcnJvcikgewotCQkJY2FzZSBEQl9UQUJMRVNQQUNFX0FMUkVBRFlfRVhJU1RTOgot CQkJY2FzZSBEQl9EVVBMSUNBVEVfS0VZOgotCQkJCWlubm9iYXNlX2NvbnZlcnRfdGFibGVuYW1l KHRtcF9uYW1lKTsKLQkJCQlteV9lcnJvcihIQV9FUlJfVEFCTEVfRVhJU1QsIE1ZRigwKSwgdG1w X25hbWUpOwotCQkJCWVycm9yID0gSEFfRVJSX1RBQkxFX0VYSVNUOwotCQkJCWJyZWFrOwotCQkJ ZGVmYXVsdDoKLQkJCQlnb3RvIGNvbnZlcnRfZXJyb3I7Ci0JCQl9Ci0JCQlicmVhazsKLQkJfQot Ci0JCXRyeF9jb21taXRfZm9yX215c3FsKHByZWJ1aWx0LT50cngpOwotCQlyb3dfcHJlYnVpbHRf ZnJlZShwcmVidWlsdCwgVFJVRSk7Ci0JCXByZWJ1aWx0ID0gcm93X2NyZWF0ZV9wcmVidWlsdChp bmRleGVkX3RhYmxlKTsKLQotCQlpbmRleGVkX3RhYmxlLT5uX215c3FsX2hhbmRsZXNfb3BlbmVk Kys7Ci0KLQkJZXJyb3IgPSByb3dfbWVyZ2VfZHJvcF90YWJsZSh0cngsIGlubm9kYl90YWJsZSk7 Ci0JCWlubm9kYl90YWJsZSA9IGluZGV4ZWRfdGFibGU7Ci0JCWdvdG8gY29udmVydF9lcnJvcjsK KwkJdXRfZChtdXRleF9leGl0KCZkaWN0X3N5cy0+bXV0ZXgpKTsKKyAgICAgICAgICAgICAgICAq YWRkID0gbmV3IGhhX2lubm9iYXNlX2FkZF9pbmRleCh0YWJsZSwga2V5X2luZm8sIG51bV9vZl9r ZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu ZGV4ZWRfdGFibGUpOworCQlicmVhazsKIAogCWNhc2UgREJfVE9PX0JJR19SRUNPUkQ6CiAJCW15 X2Vycm9yKEhBX0VSUl9UT19CSUdfUk9XLCBNWUYoMCkpOwpAQCAtODk0LDcgKzg2Myw3IEBAIGVy cm9yOgogCQl0cngtPmVycm9yX3N0YXRlID0gREJfU1VDQ0VTUzsKIAogCQlpZiAobmV3X3ByaW1h cnkpIHsKLQkJCWlmIChpbmRleGVkX3RhYmxlICE9IGlubm9kYl90YWJsZSkgeworCQkJaWYgKGlu ZGV4ZWRfdGFibGUgIT0gcHJlYnVpbHQtPnRhYmxlKSB7CiAJCQkJcm93X21lcmdlX2Ryb3BfdGFi bGUodHJ4LCBpbmRleGVkX3RhYmxlKTsKIAkJCX0KIAkJfSBlbHNlIHsKQEAgLTkwNiwzOCArODc1 LDE1NyBAQCBlcnJvcjoKIAkJCXJvd19tZXJnZV9kcm9wX2luZGV4ZXModHJ4LCBpbmRleGVkX3Rh YmxlLAogCQkJCQkgICAgICAgaW5kZXgsIG51bV9jcmVhdGVkKTsKIAkJfQotCi1jb252ZXJ0X2Vy cm9yOgotCQlpZiAoZXJyb3IgPT0gREJfU1VDQ0VTUykgewotCQkJLyogQnVpbGQgaW5kZXggaXMg c3VjY2Vzc2Z1bC4gV2Ugd2lsbCBuZWVkIHRvCi0JCQlyZWJ1aWxkIGluZGV4IHRyYW5zbGF0aW9u IHRhYmxlLiAgUmVzZXQgdGhlCi0JCQlpbmRleCBlbnRyeSBjb3VudCBpbiB0aGUgdHJhbnNsYXRp b24gdGFibGUKLQkJCXRvIHplcm8sIHNvIHRoYXQgdHJhbnNsYXRpb24gdGFibGUgd2lsbCBiZSBy ZWJ1aWx0ICovCi0JCQlzaGFyZS0+aWR4X3RyYW5zX3RibC5pbmRleF9jb3VudCA9IDA7Ci0JCX0K LQotCQllcnJvciA9IGNvbnZlcnRfZXJyb3JfY29kZV90b19teXNxbChlcnJvciwKLQkJCQkJCSAg ICBpbm5vZGJfdGFibGUtPmZsYWdzLAotCQkJCQkJICAgIHVzZXJfdGhkKTsKIAl9CiAKLQltZW1f aGVhcF9mcmVlKGhlYXApOwogCXRyeF9jb21taXRfZm9yX215c3FsKHRyeCk7CiAJaWYgKHByZWJ1 aWx0LT50cngpIHsKIAkJdHJ4X2NvbW1pdF9mb3JfbXlzcWwocHJlYnVpbHQtPnRyeCk7CiAJfQog CiAJaWYgKGRpY3RfbG9ja2VkKSB7Ci0JCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2lu ZGV4ZXMoaW5ub2RiX3RhYmxlLCBGQUxTRSkpOwogCQlyb3dfbXlzcWxfdW5sb2NrX2RhdGFfZGlj dGlvbmFyeSh0cngpOwogCX0KIAogCXRyeF9mcmVlX2Zvcl9teXNxbCh0cngpOworCW1lbV9oZWFw X2ZyZWUoaGVhcCk7CisKKwkvKiBUaGVyZSBtaWdodCBiZSB3b3JrIGZvciB1dGlsaXR5IHRocmVh ZHMuKi8KKwlzcnZfYWN0aXZlX3dha2VfbWFzdGVyX3RocmVhZCgpOworCisJREJVR19SRVRVUk4o Y29udmVydF9lcnJvcl9jb2RlX3RvX215c3FsKGVycm9yLCBwcmVidWlsdC0+dGFibGUtPmZsYWdz LAorCQkJCQkJdXNlcl90aGQpKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitGaW5hbGl6ZSBvciB1 bmRvIGFkZF9pbmRleCgpLgorQHJldHVybgkwIG9yIGVycm9yIG51bWJlciAqLworVU5JVl9JTlRF Uk4KK2ludAoraGFfaW5ub2Jhc2U6OmZpbmFsX2FkZF9pbmRleCgKKy8qPT09PT09PT09PT09PT09 PT09PT09PT09PSovCisJaGFuZGxlcl9hZGRfaW5kZXgqCWFkZF9hcmcsLyohPCBpbjogY29udGV4 dCBmcm9tIGFkZF9pbmRleCgpICovCisJYm9vbAkJCWNvbW1pdCkJLyohPCBpbjogdHJ1ZT1jb21t aXQsIGZhbHNlPXJvbGxiYWNrICovCit7CisJaGFfaW5ub2Jhc2VfYWRkX2luZGV4KglhZGQ7CisJ dHJ4X3QqCQkJdHJ4OworCWludAkJCWVycgk9IDA7CisKKwlEQlVHX0VOVEVSKCJoYV9pbm5vYmFz ZTo6ZmluYWxfYWRkX2luZGV4Iik7CisKKwlhZGQgPSBzdGF0aWNfY2FzdDxjbGFzcyBoYV9pbm5v YmFzZV9hZGRfaW5kZXgqPihhZGRfYXJnKTsKKworCS8qIENyZWF0ZSBhIGJhY2tncm91bmQgdHJh bnNhY3Rpb24gZm9yIHRoZSBvcGVyYXRpb25zIG9uCisJdGhlIGRhdGEgZGljdGlvbmFyeSB0YWJs ZXMuICovCisJdHJ4ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHVzZXJfdGhkKTsKKwl0cnhfc3Rh cnRfaWZfbm90X3N0YXJ0ZWQodHJ4KTsKKworCS8qIEZsYWcgdGhpcyB0cmFuc2FjdGlvbiBhcyBh IGRpY3Rpb25hcnkgb3BlcmF0aW9uLCBzbyB0aGF0CisJdGhlIGRhdGEgZGljdGlvbmFyeSB3aWxs IGJlIGxvY2tlZCBpbiBjcmFzaCByZWNvdmVyeS4gKi8KKwl0cnhfc2V0X2RpY3Rfb3BlcmF0aW9u KHRyeCwgVFJYX0RJQ1RfT1BfSU5ERVgpOworCisJLyogTGF0Y2ggdGhlIElubm9EQiBkYXRhIGRp Y3Rpb25hcnkgZXhjbHVzaXZlbHkgc28gdGhhdCBubyBkZWFkbG9ja3MKKwlvciBsb2NrIHdhaXRz IGNhbiBoYXBwZW4gaW4gaXQgZHVyaW5nIGFuIGluZGV4IGNyZWF0ZSBvcGVyYXRpb24uICovCisJ cm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7CisKKwlpZiAoYWRkLT5pbmRleGVk X3RhYmxlICE9IHByZWJ1aWx0LT50YWJsZSkgeworCQl1bGludAllcnJvcjsKKworCQkvKiBXZSBj b3BpZWQgdGhlIHRhYmxlIChuZXdfcHJpbWFyeSkuICovCisJCWlmIChjb21taXQpIHsKKwkJCW1l bV9oZWFwX3QqCWhlYXA7CisJCQljaGFyKgkJdG1wX25hbWU7CisKKwkJCWhlYXAgPSBtZW1faGVh cF9jcmVhdGUoMTAyNCk7CisKKwkJCS8qIEEgbmV3IHByaW1hcnkga2V5IHdhcyBkZWZpbmVkIGZv ciB0aGUgdGFibGUKKwkJCWFuZCB0aGVyZSB3YXMgbm8gZXJyb3IgYXQgdGhpcyBwb2ludC4gV2Ug Y2FuCisJCQlub3cgcmVuYW1lIHRoZSBvbGQgdGFibGUgYXMgYSB0ZW1wb3JhcnkgdGFibGUsCisJ CQlyZW5hbWUgdGhlIG5ldyB0ZW1wb3JhcnkgdGFibGUgYXMgdGhlIG9sZAorCQkJdGFibGUgYW5k IGRyb3AgdGhlIG9sZCB0YWJsZS4gKi8KKwkJCXRtcF9uYW1lID0gaW5ub2Jhc2VfY3JlYXRlX3Rl bXBvcmFyeV90YWJsZW5hbWUoCisJCQkJaGVhcCwgJzInLCBwcmVidWlsdC0+dGFibGUtPm5hbWUp OworCisJCQllcnJvciA9IHJvd19tZXJnZV9yZW5hbWVfdGFibGVzKAorCQkJCXByZWJ1aWx0LT50 YWJsZSwgYWRkLT5pbmRleGVkX3RhYmxlLAorCQkJCXRtcF9uYW1lLCB0cngpOworCisJCQlzd2l0 Y2ggKGVycm9yKSB7CisJCQljYXNlIERCX1RBQkxFU1BBQ0VfQUxSRUFEWV9FWElTVFM6CisJCQlj YXNlIERCX0RVUExJQ0FURV9LRVk6CisJCQkJaW5ub2Jhc2VfY29udmVydF90YWJsZW5hbWUodG1w X25hbWUpOworCQkJCW15X2Vycm9yKEhBX0VSUl9UQUJMRV9FWElTVCwgTVlGKDApLCB0bXBfbmFt ZSk7CisJCQkJZXJyID0gSEFfRVJSX1RBQkxFX0VYSVNUOworCQkJCWJyZWFrOworCQkJZGVmYXVs dDoKKwkJCQllcnIgPSBjb252ZXJ0X2Vycm9yX2NvZGVfdG9fbXlzcWwoCisJCQkJCWVycm9yLCBw cmVidWlsdC0+dGFibGUtPmZsYWdzLAorCQkJCQl1c2VyX3RoZCk7CisJCQkJYnJlYWs7CisJCQl9 CisKKwkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJCX0KKworCQlpZiAoIWNvbW1pdCB8fCBlcnIp IHsKKwkJCXJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgYWRkLT5pbmRleGVkX3RhYmxlKTsKKwkJ fQorCisJCXRyeF9jb21taXRfZm9yX215c3FsKHByZWJ1aWx0LT50cngpOworCQl7CisJCQlkaWN0 X3RhYmxlX3QqCW9sZF90YWJsZSA9IHByZWJ1aWx0LT50YWJsZTsKKwkJCXJvd19wcmVidWlsdF9m cmVlKHByZWJ1aWx0LCBUUlVFKTsKKwkJCWVycm9yID0gcm93X21lcmdlX2Ryb3BfdGFibGUodHJ4 LCBvbGRfdGFibGUpOworCQl9CisJCWFkZC0+aW5kZXhlZF90YWJsZS0+bl9teXNxbF9oYW5kbGVz X29wZW5lZCsrOworCQlwcmVidWlsdCA9IHJvd19jcmVhdGVfcHJlYnVpbHQoYWRkLT5pbmRleGVk X3RhYmxlKTsKKwkJZXJyID0gY29udmVydF9lcnJvcl9jb2RlX3RvX215c3FsKAorCQkJZXJyb3Is IHByZWJ1aWx0LT50YWJsZS0+ZmxhZ3MsIHVzZXJfdGhkKTsKKwl9IGVsc2UgeworCQkvKiBXZSBj cmVhdGVkIHNlY29uZGFyeSBpbmRleGVzICghbmV3X3ByaW1hcnkpLiAqLworCisJCWlmIChjb21t aXQpIHsKKwkJCWVyciA9IGNvbnZlcnRfZXJyb3JfY29kZV90b19teXNxbCgKKwkJCQlyb3dfbWVy Z2VfcmVuYW1lX2luZGV4ZXModHJ4LCBwcmVidWlsdC0+dGFibGUpLAorCQkJCXByZWJ1aWx0LT50 YWJsZS0+ZmxhZ3MsIHVzZXJfdGhkKTsKKwkJfQorCisJCWlmICghY29tbWl0IHx8IGVycikgewor CQkJZGljdF9pbmRleF90KglpbmRleDsKKwkJCWRpY3RfaW5kZXhfdCoJbmV4dF9pbmRleDsKKwor CQkJZm9yIChpbmRleCA9IGRpY3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KAorCQkJCSAgICAgcHJl YnVpbHQtPnRhYmxlKTsKKwkJCSAgICAgaW5kZXg7IGluZGV4ID0gbmV4dF9pbmRleCkgeworCisJ CQkJbmV4dF9pbmRleCA9IGRpY3RfdGFibGVfZ2V0X25leHRfaW5kZXgoaW5kZXgpOworCisJCQkJ aWYgKCppbmRleC0+bmFtZSA9PSBURU1QX0lOREVYX1BSRUZJWCkgeworCQkJCQlyb3dfbWVyZ2Vf ZHJvcF9pbmRleCgKKwkJCQkJCWluZGV4LCBwcmVidWlsdC0+dGFibGUsIHRyeCk7CisJCQkJfQor CQkJfQorCQl9CisJfQorCisJLyogV2Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgaW5kZXggdHJhbnNs YXRpb24gdGFibGUuIFNldAorCXZhbGlkIGluZGV4IGVudHJ5IGNvdW50IGluIHRoZSB0cmFuc2xh dGlvbiB0YWJsZSB0byB6ZXJvICovCisJc2hhcmUtPmlkeF90cmFuc190YmwuaW5kZXhfY291bnQg PSAwOworCisJdHJ4X2NvbW1pdF9mb3JfbXlzcWwodHJ4KTsKKwlpZiAocHJlYnVpbHQtPnRyeCkg eworCQl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWlsdC0+dHJ4KTsKKwl9CisKKwl1dF9kKGRp Y3RfdGFibGVfY2hlY2tfZm9yX2R1cF9pbmRleGVzKHByZWJ1aWx0LT50YWJsZSwgRkFMU0UpKTsK Kwlyb3dfbXlzcWxfdW5sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOworCisJdHJ4X2ZyZWVfZm9y X215c3FsKHRyeCk7CiAKIAkvKiBUaGVyZSBtaWdodCBiZSB3b3JrIGZvciB1dGlsaXR5IHRocmVh ZHMuKi8KIAlzcnZfYWN0aXZlX3dha2VfbWFzdGVyX3RocmVhZCgpOwogCi0JREJVR19SRVRVUk4o ZXJyb3IpOworCWRlbGV0ZSBhZGQ7CisJREJVR19SRVRVUk4oZXJyKTsKIH0KIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCgo= --===============4174088881050106019== 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: 096b34e6249a6ddcb39779f5056002e478cba7c4 # timestamp: 2011-05-15 13:19:29 +0200 # base_revision_id: vinay.fisrekar@stripped\ # x8lukhowf9prk4ab # # Begin bundle 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 --===============4174088881050106019==--