From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Mamoru TASAKA To: git-commits@fedoraproject.org Subject: [rpms/ruby] rawhide: Update to Ruby 4.0.6 Date: Wed, 15 Jul 2026 11:31:04 GMT Message-ID: <178411506428.1.3635553133519927399.rpms-ruby-60c304fbcb77@fedoraproject.org> List-ID: X-Git-Repo: rpms/ruby X-Git-Branch: rawhide X-Git-Rev: 60c304fbcb77d93ededbd305f7528ea56b306514 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcnVieQpCcmFuY2gg OiByYXdoaWRlCkNvbW1pdCA6IDYwYzMwNGZiY2I3N2Q5M2VkZWRiZDMwNWY3NTI4ZWE1NmIzMDY1 MTQKQXV0aG9yIDogTWFtb3J1IFRBU0FLQSA8bXRhc2FrYUBmZWRvcmFwcm9qZWN0Lm9yZz4KRGF0 ZSAgIDogMjAyNi0wNy0xNVQyMDoyNzo1NyswOTowMApTdGF0cyAgOiArMjMvLTE3NzQgaW4gNCBm aWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvcnVieS9j LzYwYzMwNGZiY2I3N2Q5M2VkZWRiZDMwNWY3NTI4ZWE1NmIzMDY1MTQ/YnJhbmNoPXJhd2hpZGUK CkxvZzoKVXBkYXRlIHRvIFJ1YnkgNC4wLjYKCi0tLQpkaWZmIC0tZ2l0IGEvcnVieS0yLjcuMC1J bml0aWFsaXplLUFCUlQtaG9vay5wYXRjaCBiL3J1YnktMi43LjAtSW5pdGlhbGl6ZS1BQlJULWhv b2sucGF0Y2gKaW5kZXggODZkOTdmYy4uZDMyOGViYyAxMDA2NDQKLS0tIGEvcnVieS0yLjcuMC1J bml0aWFsaXplLUFCUlQtaG9vay5wYXRjaAorKysgYi9ydWJ5LTIuNy4wLUluaXRpYWxpemUtQUJS VC1ob29rLnBhdGNoCkBAIC01Niw4ICs1Niw4IEBAIGRpZmYgLS1naXQgYS9ydWJ5LmMgYi9ydWJ5 LmMKIGluZGV4IGIwMGZjMTUwMmQuLjMyYjg4Zjc0OTYgMTAwNjQ0CiAtLS0gYS9ydWJ5LmMKICsr KyBiL3J1YnkuYwotQEAgLTE3NzMsMTAgKzE3NzMsMTQgQEAgcHJvY19vcHRpb25zKGxvbmcgYXJn YywgY2hhciAqKmFyZ3YsIHJ1YnlfY21kbGluZV9vcHRpb25zX3QgKm9wdCwgaW50IGVudm9wdCkK LSAKK0BAIC0xNzkzLDEwICsxNzkzLDE0IEBAIHByb2Nfb3B0aW9ucyhsb25nIGFyZ2MsIGNoYXIg Kiphcmd2LCBydWJ5X2NtZGxpbmVfb3B0aW9uc190ICpvcHQsIGludCBlbnZvcHQpCisgVkFMVUUg cmJfZGVmaW5lX2dlbV9tb2R1bGVzKFZBTFVFLCBWQUxVRSk7CiAgdm9pZCBJbml0X2J1aWx0aW5f ZmVhdHVyZXModm9pZCk7CiAgCiArLyogYWJydC5jICovCgpkaWZmIC0tZ2l0IGEvcnVieS1wcjE2 OTQ3LW9wZW5zc2wtNF8wXzItZnJvbS1ydWJ5XzRfMC5wYXRjaCBiL3J1YnktcHIxNjk0Ny1vcGVu c3NsLTRfMF8yLWZyb20tcnVieV80XzAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGM0ZWYxYzEuLjAwMDAwMDAKLS0tIGEvcnVieS1wcjE2OTQ3LW9wZW5zc2wtNF8wXzItZnJv bS1ydWJ5XzRfMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NDcgKzAsMCBAQAotRnJvbSAw NTc2NDUyMDMwZDQ0NDU1MjUwY2U2N2VjZDRjYTUxMmIyMWM3ZGJlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogS2F6dWtpIFlhbWFndWNoaSA8a0ByaGUuanA+Ci1EYXRlOiBUaHUsIDE0 IE1heSAyMDI2IDAwOjQ2OjU0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBNZXJnZSBvcGVu c3NsLTQuMC4xCi0KLVRoZSBjaGFuZ2VzIGNhbiBiZSBmb3VuZCBhdDoKLQotICAgIGh0dHBzOi8v Z2l0aHViLmNvbS9ydWJ5L29wZW5zc2wvY29tcGFyZS92NC4wLjAuLi52NC4wLjEKLS0tLQotIGV4 dC9vcGVuc3NsL0hpc3RvcnkubWQgICAgICAgICAgICAgfCAyMCArKysrKysrCi0gZXh0L29wZW5z c2wvbGliL29wZW5zc2wvdmVyc2lvbi5yYiB8ICAyICstCi0gZXh0L29wZW5zc2wvb3BlbnNzbC5n ZW1zcGVjICAgICAgICB8ICAyICstCi0gZXh0L29wZW5zc2wvb3NzbF9jaXBoZXIuYyAgICAgICAg ICB8IDEzICsrLS0tCi0gZXh0L29wZW5zc2wvb3NzbF9vY3NwLmMgICAgICAgICAgICB8ICA0ICst Ci0gZXh0L29wZW5zc2wvb3NzbF9wa2NzNy5jICAgICAgICAgICB8ICAyICstCi0gZXh0L29wZW5z c2wvb3NzbF9wa2V5X2VjLmMgICAgICAgICB8ICAyICstCi0gZXh0L29wZW5zc2wvb3NzbF9zc2wu YyAgICAgICAgICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIHRlc3Qv b3BlbnNzbC90ZXN0X2NpcGhlci5yYiAgICAgICAgfCA2NyArKysrKysrKysrKysrLS0tLS0tLS0t LQotIHRlc3Qvb3BlbnNzbC90ZXN0X2RpZ2VzdC5yYiAgICAgICAgfCAyOCArKysrKystLS0tCi0g dGVzdC9vcGVuc3NsL3Rlc3RfZmlwcy5yYiAgICAgICAgICB8ICAyICstCi0gdGVzdC9vcGVuc3Ns L3Rlc3Rfb2NzcC5yYiAgICAgICAgICB8IDI5ICsrKysrKysrKysKLSB0ZXN0L29wZW5zc2wvdGVz dF9wa2NzMTIucmIgICAgICAgIHwgMzggKysrKysrKysrKystLQotIHRlc3Qvb3BlbnNzbC90ZXN0 X3BrZXlfZWMucmIgICAgICAgfCAgOSArKysKLSB0ZXN0L29wZW5zc2wvdGVzdF9zc2wucmIgICAg ICAgICAgIHwgNjYgKysrKysrKysrKysrKysrLS0tLS0tLQotIDE1IGZpbGVzIGNoYW5nZWQsIDI2 MyBpbnNlcnRpb25zKCspLCAxMDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leHQvb3Bl bnNzbC9IaXN0b3J5Lm1kIGIvZXh0L29wZW5zc2wvSGlzdG9yeS5tZAotaW5kZXggNDE5MjM3ZmYx NjdmOWEuLmM3OGM3ZTQ2MzM0ZGRiIDEwMDY0NAotLS0tIGEvZXh0L29wZW5zc2wvSGlzdG9yeS5t ZAotKysrIGIvZXh0L29wZW5zc2wvSGlzdG9yeS5tZAotQEAgLTEsMyArMSwyMyBAQAotK1ZlcnNp b24gNC4wLjEKLSs9PT09PT09PT09PT09Ci0rCi0rTm90YWJsZSBjaGFuZ2VzCi0rLS0tLS0tLS0t LS0tLS0tCi0rCi0rKiBBZGQgYHN5bmNfY2xvc2VgIGtleXdvcmQgYXJndW1lbnQgdG8gYE9wZW5T U0w6OlNTTDo6U1NMU29ja2V0Lm5ld2AgYXMgYQotKyAgc2hvcnQtaGFuZCBmb3Igc2V0dGluZyBg c3luY19jbG9zZWAgYXR0cmlidXRlIG9uIHRoZSBjcmVhdGVkIGBTU0xTb2NrZXRgCi0rICBpbnN0 YW5jZS4KLSsgIFtbR2l0SHViICM5NTVdXShodHRwczovL2dpdGh1Yi5jb20vcnVieS9vcGVuc3Ns L2lzc3Vlcy85NTUpCi0rICBbW0dpdEh1YiAjOTk2XV0oaHR0cHM6Ly9naXRodWIuY29tL3J1Ynkv b3BlbnNzbC9wdWxsLzk5NikKLSsKLSsKLStCdWcgZml4ZXMKLSstLS0tLS0tLS0KLSsKLSsqIEZp eCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBgT3BlblNTTDo6T0NTUDo6QmFzaWNSZXNwb25z ZSNzdGF0dXNgLgotKyAgW1tHaXRIdWIgIzEwMDRdXShodHRwczovL2dpdGh1Yi5jb20vcnVieS9v cGVuc3NsL3B1bGwvMTAwNCkKLSsKLSsKLSBWZXJzaW9uIDQuMC4wCi0gPT09PT09PT09PT09PQot IAotZGlmZiAtLWdpdCBhL2V4dC9vcGVuc3NsL2xpYi9vcGVuc3NsL3ZlcnNpb24ucmIgYi9leHQv b3BlbnNzbC9saWIvb3BlbnNzbC92ZXJzaW9uLnJiCi1pbmRleCA4ODU3MDU2MmUyNTVjMy4uNDVj MTUwYmUxMTA1YmEgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9saWIvb3BlbnNzbC92ZXJzaW9u LnJiCi0rKysgYi9leHQvb3BlbnNzbC9saWIvb3BlbnNzbC92ZXJzaW9uLnJiCi1AQCAtMiw1ICsy LDUgQEAKLSAKLSBtb2R1bGUgT3BlblNTTAotICAgIyBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgUnVi eS9PcGVuU1NMLgotLSAgVkVSU0lPTiA9ICI0LjAuMCIKLSsgIFZFUlNJT04gPSAiNC4wLjEiCi0g ZW5kCi1kaWZmIC0tZ2l0IGEvZXh0L29wZW5zc2wvb3BlbnNzbC5nZW1zcGVjIGIvZXh0L29wZW5z c2wvb3BlbnNzbC5nZW1zcGVjCi1pbmRleCA3MDcyZDU5OWQ4NmQ2OS4uYzU5NGM2ZjE3NzY1Mzgg MTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9vcGVuc3NsLmdlbXNwZWMKLSsrKyBiL2V4dC9vcGVu c3NsL29wZW5zc2wuZ2Vtc3BlYwotQEAgLTEsNiArMSw2IEBACi0gR2VtOjpTcGVjaWZpY2F0aW9u Lm5ldyBkbyB8c3BlY3wKLSAgIHNwZWMubmFtZSAgICAgICAgICA9ICJvcGVuc3NsIgotLSAgc3Bl Yy52ZXJzaW9uICAgICAgID0gIjQuMC4wIgotKyAgc3BlYy52ZXJzaW9uICAgICAgID0gIjQuMC4x IgotICAgc3BlYy5hdXRob3JzICAgICAgID0gWyJNYXJ0aW4gQm9zc2xldCIsICJTSElCQVRBIEhp cm9zaGkiLCAiWmFjaGFyeSBTY290dCIsICJLYXp1a2kgWWFtYWd1Y2hpIl0KLSAgIHNwZWMuZW1h aWwgICAgICAgICA9IFsicnVieS1jb3JlQHJ1YnktbGFuZy5vcmciXQotICAgc3BlYy5zdW1tYXJ5 ICAgICAgID0gJXF7U1NML1RMUyBhbmQgZ2VuZXJhbC1wdXJwb3NlIGNyeXB0b2dyYXBoeSBmb3Ig UnVieX0KLWRpZmYgLS1naXQgYS9leHQvb3BlbnNzbC9vc3NsX2NpcGhlci5jIGIvZXh0L29wZW5z c2wvb3NzbF9jaXBoZXIuYwotaW5kZXggZGI2NWU5OTg4OGQzYmYuLmYzY2QyNDdjOGZkZmJjIDEw MDY0NAotLS0tIGEvZXh0L29wZW5zc2wvb3NzbF9jaXBoZXIuYwotKysrIGIvZXh0L29wZW5zc2wv b3NzbF9jaXBoZXIuYwotQEAgLTQwMSw5ICs0MDEsOSBAQCBvc3NsX2NpcGhlcl91cGRhdGUoaW50 IGFyZ2MsIFZBTFVFICphcmd2LCBWQUxVRSBzZWxmKQotICAgICB9Ci0gICAgIG91dF9sZW4gPSBp bl9sZW4gKyBFVlBfTUFYX0JMT0NLX0xFTkdUSDsKLSAKLS0gICAgaWYgKE5JTF9QKHN0cikpIHsK LS0gICAgICAgIHN0ciA9IHJiX3N0cl9uZXcoMCwgb3V0X2xlbik7Ci0tICAgIH0gZWxzZSB7Ci0r ICAgIGlmIChOSUxfUChzdHIpKQotKyAgICAgICAgc3RyID0gcmJfc3RyX2J1Zl9uZXcob3V0X2xl bik7Ci0rICAgIGVsc2UgewotICAgICAgICAgU3RyaW5nVmFsdWUoc3RyKTsKLSAgICAgICAgIGlm ICgobG9uZylyYl9zdHJfY2FwYWNpdHkoc3RyKSA+PSBvdXRfbGVuKQotICAgICAgICAgICAgIHJi X3N0cl9tb2RpZnkoc3RyKTsKLUBAIC00MTEsOSArNDExLDkgQEAgb3NzbF9jaXBoZXJfdXBkYXRl KGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgc2VsZikKLSAgICAgICAgICAgICByYl9zdHJf bW9kaWZ5X2V4cGFuZChzdHIsIG91dF9sZW4gLSBSU1RSSU5HX0xFTihzdHIpKTsKLSAgICAgfQot IAotLSAgICBpZiAoIW9zc2xfY2lwaGVyX3VwZGF0ZV9sb25nKGN0eCwgKHVuc2lnbmVkIGNoYXIg KilSU1RSSU5HX1BUUihzdHIpLCAmb3V0X2xlbiwgaW4sIGluX2xlbikpCi0tICAgICAgICBvc3Ns X3JhaXNlKGVDaXBoZXJFcnJvciwgTlVMTCk7Ci0tICAgIGFzc2VydChvdXRfbGVuIDw9IFJTVFJJ TkdfTEVOKHN0cikpOwotKyAgICBpZiAoIW9zc2xfY2lwaGVyX3VwZGF0ZV9sb25nKGN0eCwgKHVu c2lnbmVkIGNoYXIgKilSU1RSSU5HX1BUUihzdHIpLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZvdXRfbGVuLCBpbiwgaW5fbGVuKSkKLSsgICAgICAgIG9zc2xfcmFpc2UoZUNp cGhlckVycm9yLCAiRVZQX0NpcGhlclVwZGF0ZSIpOwotICAgICByYl9zdHJfc2V0X2xlbihzdHIs IG91dF9sZW4pOwotIAotICAgICByZXR1cm4gc3RyOwotQEAgLTQ1Niw3ICs0NTYsNiBAQCBvc3Ns X2NpcGhlcl9maW5hbChWQUxVRSBzZWxmKQotICAgICAgICAgICAgIG9zc2xfcmFpc2UoZUNpcGhl ckVycm9yLCAiY2lwaGVyIGZpbmFsIGZhaWxlZCIpOwotICAgICAgICAgfQotICAgICB9Ci0tICAg IGFzc2VydChvdXRfbGVuIDw9IFJTVFJJTkdfTEVOKHN0cikpOwotICAgICByYl9zdHJfc2V0X2xl bihzdHIsIG91dF9sZW4pOwotIAotICAgICByZXR1cm4gc3RyOwotZGlmZiAtLWdpdCBhL2V4dC9v cGVuc3NsL29zc2xfb2NzcC5jIGIvZXh0L29wZW5zc2wvb3NzbF9vY3NwLmMKLWluZGV4IDkzZDhi Yzg1NjcxZWFjLi5kZGI2N2ZjZjA3YTdjZSAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29zc2xf b2NzcC5jCi0rKysgYi9leHQvb3BlbnNzbC9vc3NsX29jc3AuYwotQEAgLTkwNSw4ICs5MDUsOCBA QCBvc3NsX29jc3BicmVzX2dldF9zdGF0dXMoVkFMVUUgc2VsZikKLSAgICAgaW50IGNvdW50ID0g T0NTUF9yZXNwX2NvdW50KGJzKTsKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr KSB7Ci0gICAgICAgICBPQ1NQX1NJTkdMRVJFU1AgKnNpbmdsZSA9IE9DU1BfcmVzcF9nZXQwKGJz LCBpKTsKLS0gICAgICAgIEFTTjFfVElNRSAqcmV2dGltZSwgKnRoaXN1cGQsICpuZXh0dXBkOwot LSAgICAgICAgaW50IHJlYXNvbjsKLSsgICAgICAgIEFTTjFfVElNRSAqcmV2dGltZSA9IE5VTEws ICp0aGlzdXBkID0gTlVMTCwgKm5leHR1cGQgPSBOVUxMOwotKyAgICAgICAgaW50IHJlYXNvbiA9 IC0xOwotIAotICAgICAgICAgaW50IHN0YXR1cyA9IE9DU1Bfc2luZ2xlX2dldDBfc3RhdHVzKHNp bmdsZSwgJnJlYXNvbiwgJnJldnRpbWUsICZ0aGlzdXBkLCAmbmV4dHVwZCk7Ci0gICAgICAgICBp ZiAoc3RhdHVzIDwgMCkKLWRpZmYgLS1naXQgYS9leHQvb3BlbnNzbC9vc3NsX3BrY3M3LmMgYi9l eHQvb3BlbnNzbC9vc3NsX3BrY3M3LmMKLWluZGV4IDZlNTFmZDQyYjkwZmFjLi5hZTBkMzViNzIz NTkyMyAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29zc2xfcGtjczcuYwotKysrIGIvZXh0L29w ZW5zc2wvb3NzbF9wa2NzNy5jCi1AQCAtMTAxMCw3ICsxMDEwLDcgQEAgc3RhdGljIFZBTFVFCi0g b3NzbF9wa2NzN3NpX2dldF9zaWduZWRfdGltZShWQUxVRSBzZWxmKQotIHsKLSAgICAgUEtDUzdf U0lHTkVSX0lORk8gKnA3c2k7Ci0tICAgIEFTTjFfVFlQRSAqYXNuMW9iajsKLSsgICAgY29uc3Qg QVNOMV9UWVBFICphc24xb2JqOwotIAotICAgICBHZXRQS0NTN3NpKHNlbGYsIHA3c2kpOwotIAot ZGlmZiAtLWdpdCBhL2V4dC9vcGVuc3NsL29zc2xfcGtleV9lYy5jIGIvZXh0L29wZW5zc2wvb3Nz bF9wa2V5X2VjLmMKLWluZGV4IGJiMTk1MzNlZGY0NzQ0Li4zNWYwMzE4MTlkYzZlYiAxMDA2NDQK LS0tLSBhL2V4dC9vcGVuc3NsL29zc2xfcGtleV9lYy5jCi0rKysgYi9leHQvb3BlbnNzbC9vc3Ns X3BrZXlfZWMuYwotQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgVkFMVUUgb3NzbF9lY19ncm91 cF9pbml0aWFsaXplKGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgc2VsZikKLSAKLSAgICAg ICAgIGJyZWFrOwotICAgICAgIGRlZmF1bHQ6Ci0tICAgICAgICBvc3NsX3JhaXNlKHJiX2VBcmdF cnJvciwgIndyb25nIG51bWJlciBvZiBhcmd1bWVudHMiKTsKLSsgICAgICAgIG9zc2xfcmFpc2Uo cmJfZUFyZ0Vycm9yLCAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyAoZ2l2ZW4gJWQsIGV4cGVj dGVkIDEgb3IgNCkiLCBhcmdjKTsKLSAgICAgfQotIAotICAgICBBU1NVTUUoZ3JvdXApOwotZGlm ZiAtLWdpdCBhL2V4dC9vcGVuc3NsL29zc2xfc3NsLmMgYi9leHQvb3BlbnNzbC9vc3NsX3NzbC5j Ci1pbmRleCA2MzBkNDZlNDNmMjU2ZS4uYzZkZWMzMmE5ZTVlODIgMTAwNjQ0Ci0tLS0gYS9leHQv b3BlbnNzbC9vc3NsX3NzbC5jCi0rKysgYi9leHQvb3BlbnNzbC9vc3NsX3NzbC5jCi1AQCAtNDcs NyArNDcsNyBAQCBzdGF0aWMgSUQgaWRfaV9jZXJ0X3N0b3JlLCBpZF9pX2NhX2ZpbGUsIGlkX2lf Y2FfcGF0aCwgaWRfaV92ZXJpZnlfbW9kZSwKLSAgICAgICAgICAgaWRfaV9zZXNzaW9uX3JlbW92 ZV9jYiwgaWRfaV9ucG5fc2VsZWN0X2NiLCBpZF9pX25wbl9wcm90b2NvbHMsCi0gICAgICAgICAg IGlkX2lfYWxwbl9zZWxlY3RfY2IsIGlkX2lfYWxwbl9wcm90b2NvbHMsIGlkX2lfc2VydmVybmFt ZV9jYiwKLSAgICAgICAgICAgaWRfaV92ZXJpZnlfaG9zdG5hbWUsIGlkX2lfa2V5bG9nX2NiLCBp ZF9pX3RtcF9kaF9jYWxsYmFjazsKLS1zdGF0aWMgSUQgaWRfaV9pbywgaWRfaV9jb250ZXh0LCBp ZF9pX2hvc3RuYW1lOwotK3N0YXRpYyBJRCBpZF9pX2lvLCBpZF9pX2NvbnRleHQsIGlkX2lfaG9z dG5hbWUsIGlkX2lfc3luY19jbG9zZTsKLSAKLSBzdGF0aWMgaW50IG9zc2xfc3NsX2V4X3B0cl9p ZHg7Ci0gc3RhdGljIGludCBvc3NsX3NzbGN0eF9leF9wdHJfaWR4OwotQEAgLTE1OTAsMzIgKzE1 OTAsMzEgQEAgb3NzbF9zc2xfc19hbGxvYyhWQUxVRSBrbGFzcykKLSB9Ci0gCi0gc3RhdGljIFZB TFVFCi0tcGVlcl9pcF9hZGRyZXNzKFZBTFVFIHNlbGYpCi0rcGVlcl9pcF9hZGRyZXNzKFZBTFVF IGlvKQotIHsKLS0gICAgVkFMVUUgcmVtb3RlX2FkZHJlc3MgPSByYl9mdW5jYWxsKHJiX2F0dHJf Z2V0KHNlbGYsIGlkX2lfaW8pLCByYl9pbnRlcm4oInJlbW90ZV9hZGRyZXNzIiksIDApOwotKyAg ICBWQUxVRSByZW1vdGVfYWRkcmVzcyA9IHJiX2Z1bmNhbGwoaW8sIHJiX2ludGVybigicmVtb3Rl X2FkZHJlc3MiKSwgMCk7Ci0gCi0gICAgIHJldHVybiByYl9mdW5jYWxsKHJlbW90ZV9hZGRyZXNz LCByYl9pbnRlcm4oImluc3BlY3Rfc29ja2FkZHIiKSwgMCk7Ci0gfQotIAotIHN0YXRpYyBWQUxV RQotLWZhbGxiYWNrX3BlZXJfaXBfYWRkcmVzcyhWQUxVRSBzZWxmLCBWQUxVRSBhcmdzKQotK2Zh bGxiYWNrX3BlZXJfaXBfYWRkcmVzcyhWQUxVRSBzZWxmLCBWQUxVRSBleGMpCi0gewotICAgICBy ZXR1cm4gcmJfc3RyX25ld19jc3RyKCIobnVsbCkiKTsKLSB9Ci0gCi0gc3RhdGljIFZBTFVFCi0t cGVlcmFkZHJfaXBfc3RyKFZBTFVFIHNlbGYpCi0rcGVlcmFkZHJfaXBfc3RyKFZBTFVFIGlvKQot IHsKLS0gICAgVkFMVUUgcmJfbUVycm5vID0gcmJfY29uc3RfZ2V0KHJiX2NPYmplY3QsIHJiX2lu dGVybigiRXJybm8iKSk7Ci0tICAgIFZBTFVFIHJiX2VTeXN0ZW1DYWxsRXJyb3IgPSByYl9jb25z dF9nZXQocmJfbUVycm5vLCByYl9pbnRlcm4oIlN5c3RlbUNhbGxFcnJvciIpKTsKLS0KLS0gICAg cmV0dXJuIHJiX3Jlc2N1ZTIocGVlcl9pcF9hZGRyZXNzLCBzZWxmLCBmYWxsYmFja19wZWVyX2lw X2FkZHJlc3MsIChWQUxVRSkwLCByYl9lU3lzdGVtQ2FsbEVycm9yLCBOVUxMKTsKLSsgICAgcmV0 dXJuIHJiX3Jlc2N1ZTIocGVlcl9pcF9hZGRyZXNzLCBpbywgZmFsbGJhY2tfcGVlcl9pcF9hZGRy ZXNzLCBRbmlsLAotKyAgICAgICAgICAgICAgICAgICAgICByYl9lU3lzdGVtQ2FsbEVycm9yLCAo VkFMVUUpMCk7Ci0gfQotIAotIC8qCi0gICogY2FsbC1zZXE6Ci0gICogICAgU1NMU29ja2V0Lm5l dyhpbykgPT4gYVNTTFNvY2tldAotICAqICAgIFNTTFNvY2tldC5uZXcoaW8sIGN0eCkgPT4gYVNT TFNvY2tldAotKyAqICAgIFNTTFNvY2tldC5uZXcoaW8sIGN0eCwgc3luY19jbG9zZTopID0+IGFT U0xTb2NrZXQKLSAgKgotICAqIENyZWF0ZXMgYSBuZXcgU1NMIHNvY2tldCBmcm9tIF9pb18gd2hp Y2ggbXVzdCBiZSBhIHJlYWwgSU8gb2JqZWN0IChub3QgYW4KLSAgKiBJTy1saWtlIG9iamVjdCB0 aGF0IHJlc3BvbmRzIHRvIHJlYWQvd3JpdGUpLgotQEAgLTE2MjMsNiArMTYyMiwxMCBAQCBwZWVy YWRkcl9pcF9zdHIoVkFMVUUgc2VsZikKLSAgKiBJZiBfY3R4XyBpcyBwcm92aWRlZCB0aGUgU1NM IFNvY2tldHMgaW5pdGlhbCBwYXJhbXMgd2lsbCBiZSB0YWtlbiBmcm9tCi0gICogdGhlIGNvbnRl eHQuCi0gICoKLSsgKiBUaGUgb3B0aW9uYWwgX3N5bmNfY2xvc2VfIGtleXdvcmQgcGFyYW1ldGVy IHNldHMgdGhlIF9zeW5jX2Nsb3NlXyBpbnN0YW5jZQotKyAqIHZhcmlhYmxlLiBTZXR0aW5nIHRo aXMgdG8gK3RydWUrIHdpbGwgY2F1c2UgdGhlIHVuZGVybHlpbmcgc29ja2V0IHRvIGJlCi0rICog Y2xvc2VkIHdoZW4gdGhlIFNTTC9UTFMgY29ubmVjdGlvbiBpcyBzaHV0IGRvd24uCi0rICoKLSAg KiBUaGUgT3BlblNTTDo6QnVmZmVyaW5nIG1vZHVsZSBwcm92aWRlcyBhZGRpdGlvbmFsIElPIG1l dGhvZHMuCi0gICoKLSAgKiBUaGlzIG1ldGhvZCB3aWxsIGZyZWV6ZSB0aGUgU1NMQ29udGV4dCBp ZiBvbmUgaXMgcHJvdmlkZWQ7Ci1AQCAtMTYzMSw2ICsxNjM0LDEwIEBAIHBlZXJhZGRyX2lwX3N0 cihWQUxVRSBzZWxmKQotIHN0YXRpYyBWQUxVRQotIG9zc2xfc3NsX2luaXRpYWxpemUoaW50IGFy Z2MsIFZBTFVFICphcmd2LCBWQUxVRSBzZWxmKQotIHsKLSsgICAgc3RhdGljIElEIGt3X2lkc1sx XTsKLSsgICAgVkFMVUUga3dfYXJnc1sxXTsKLSsgICAgVkFMVUUgb3B0czsKLSsKLSAgICAgVkFM VUUgaW8sIHZfY3R4OwotICAgICBTU0wgKnNzbDsKLSAgICAgU1NMX0NUWCAqY3R4OwotQEAgLTE2 MzksOSArMTY0NiwxOCBAQCBvc3NsX3NzbF9pbml0aWFsaXplKGludCBhcmdjLCBWQUxVRSAqYXJn diwgVkFMVUUgc2VsZikKLSAgICAgaWYgKHNzbCkKLSAgICAgICAgIG9zc2xfcmFpc2UoZVNTTEVy cm9yLCAiU1NMIGFscmVhZHkgaW5pdGlhbGl6ZWQiKTsKLSAKLS0gICAgaWYgKHJiX3NjYW5fYXJn cyhhcmdjLCBhcmd2LCAiMTEiLCAmaW8sICZ2X2N0eCkgPT0gMSkKLSsgICAgaWYgKHJiX3NjYW5f YXJncyhhcmdjLCBhcmd2LCAiMTE6IiwgJmlvLCAmdl9jdHgsICZvcHRzKSA9PSAxKQotICAgICAg ICAgdl9jdHggPSByYl9mdW5jYWxsKGNTU0xDb250ZXh0LCByYl9pbnRlcm4oIm5ldyIpLCAwKTsK LSAKLSsgICAgaWYgKCFrd19pZHNbMF0pIHsKLSsgICAgICAgIGt3X2lkc1swXSA9IHJiX2ludGVy bl9jb25zdCgic3luY19jbG9zZSIpOwotKyAgICB9Ci0rCi0rICAgIHJiX2dldF9rd2FyZ3Mob3B0 cywga3dfaWRzLCAwLCAxLCBrd19hcmdzKTsKLSsgICAgaWYgKGt3X2FyZ3NbMF0gIT0gUXVuZGVm KSB7Ci0rICAgICAgICByYl9pdmFyX3NldChzZWxmLCBpZF9pX3N5bmNfY2xvc2UsIGt3X2FyZ3Nb MF0pOwotKyAgICB9Ci0rCi0gICAgIEdldFNTTENUWCh2X2N0eCwgY3R4KTsKLSAgICAgcmJfaXZh cl9zZXQoc2VsZiwgaWRfaV9jb250ZXh0LCB2X2N0eCk7Ci0gICAgIG9zc2xfc3NsY3R4X3NldHVw KHZfY3R4KTsKLUBAIC0xNjk2LDExICsxNzEyLDE1IEBAIG9zc2xfc3NsX3NldHVwKFZBTFVFIHNl bGYpCi0gICAgIHJldHVybiBRdHJ1ZTsKLSB9Ci0gCi0rc3RhdGljIGludAotK2Vycm5vX21hcHBl ZCh2b2lkKQotK3sKLSAjaWZkZWYgX1dJTjMyCi0tI2RlZmluZSBzc2xfZ2V0X2Vycm9yKHNzbCwg cmV0KSAoZXJybm8gPSByYl93MzJfbWFwX2Vycm5vKFdTQUdldExhc3RFcnJvcigpKSwgU1NMX2dl dF9lcnJvcigoc3NsKSwgKHJldCkpKQotKyAgICByZXR1cm4gcmJfdzMyX21hcF9lcnJubyhXU0FH ZXRMYXN0RXJyb3IoKSk7Ci0gI2Vsc2UKLS0jZGVmaW5lIHNzbF9nZXRfZXJyb3Ioc3NsLCByZXQp IFNTTF9nZXRfZXJyb3IoKHNzbCksIChyZXQpKQotKyAgICByZXR1cm4gZXJybm87Ci0gI2VuZGlm Ci0rfQotIAotIHN0YXRpYyB2b2lkCi0gd3JpdGVfd291bGRfYmxvY2soaW50IG5vbmJsb2NrKQot QEAgLTE3NDEsMTMgKzE3NjEsMTMgQEAgc3RhdGljIHZvaWQKLSBpb193YWl0X3dyaXRhYmxlKFZB TFVFIGlvKQotIHsKLSAjaWZkZWYgSEFWRV9SQl9JT19NQVlCRV9XQUlUCi0tICAgIGlmICghcmJf aW9fbWF5YmVfd2FpdF93cml0YWJsZShlcnJubywgaW8sIFJVQllfSU9fVElNRU9VVF9ERUZBVUxU KSkgewotKyAgICBpZiAoIXJiX2lvX3dhaXQoaW8sIElOVDJOVU0oUlVCWV9JT19XUklUQUJMRSks IFJVQllfSU9fVElNRU9VVF9ERUZBVUxUKSkgewotICAgICAgICAgcmJfcmFpc2UoSU9fVElNRU9V VF9FUlJPUiwgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIHRvIGJlY29tZSB3cml0YWJsZSEiKTsK LSAgICAgfQotICNlbHNlCi0gICAgIHJiX2lvX3QgKmZwdHI7Ci0gICAgIEdldE9wZW5GaWxlKGlv LCBmcHRyKTsKLS0gICAgcmJfaW9fd2FpdF93cml0YWJsZShmcHRyLT5mZCk7Ci0rICAgIHJiX3Ro cmVhZF9mZF93cml0YWJsZShmcHRyLT5mZCk7Ci0gI2VuZGlmCi0gfQotIAotQEAgLTE3NTUsMTMg KzE3NzUsMTMgQEAgc3RhdGljIHZvaWQKLSBpb193YWl0X3JlYWRhYmxlKFZBTFVFIGlvKQotIHsK LSAjaWZkZWYgSEFWRV9SQl9JT19NQVlCRV9XQUlUCi0tICAgIGlmICghcmJfaW9fbWF5YmVfd2Fp dF9yZWFkYWJsZShlcnJubywgaW8sIFJVQllfSU9fVElNRU9VVF9ERUZBVUxUKSkgewotKyAgICBp ZiAoIXJiX2lvX3dhaXQoaW8sIElOVDJOVU0oUlVCWV9JT19SRUFEQUJMRSksIFJVQllfSU9fVElN RU9VVF9ERUZBVUxUKSkgewotICAgICAgICAgcmJfcmFpc2UoSU9fVElNRU9VVF9FUlJPUiwgIlRp bWVkIG91dCB3aGlsZSB3YWl0aW5nIHRvIGJlY29tZSByZWFkYWJsZSEiKTsKLSAgICAgfQotICNl bHNlCi0gICAgIHJiX2lvX3QgKmZwdHI7Ci0gICAgIEdldE9wZW5GaWxlKGlvLCBmcHRyKTsKLS0g ICAgcmJfaW9fd2FpdF9yZWFkYWJsZShmcHRyLT5mZCk7Ci0rICAgIHJiX3RocmVhZF93YWl0X2Zk KGZwdHItPmZkKTsKLSAjZW5kaWYKLSB9Ci0gCi1AQCAtMTc2OSw3ICsxNzg5LDYgQEAgc3RhdGlj IFZBTFVFCi0gb3NzbF9zdGFydF9zc2woVkFMVUUgc2VsZiwgaW50ICgqZnVuYykoU1NMICopLCBj b25zdCBjaGFyICpmdW5jbmFtZSwgVkFMVUUgb3B0cykKLSB7Ci0gICAgIFNTTCAqc3NsOwotLSAg ICBpbnQgcmV0LCByZXQyOwotICAgICBWQUxVRSBjYl9zdGF0ZTsKLSAgICAgaW50IG5vbmJsb2Nr ID0gb3B0cyAhPSBRZmFsc2U7Ci0gCi1AQCAtMTc3OSw3ICsxNzk4LDggQEAgb3NzbF9zdGFydF9z c2woVkFMVUUgc2VsZiwgaW50ICgqZnVuYykoU1NMICopLCBjb25zdCBjaGFyICpmdW5jbmFtZSwg VkFMVUUgb3B0cykKLSAKLSAgICAgVkFMVUUgaW8gPSByYl9hdHRyX2dldChzZWxmLCBpZF9pX2lv KTsKLSAgICAgZm9yICg7OykgewotLSAgICAgICAgcmV0ID0gZnVuYyhzc2wpOwotKyAgICAgICAg aW50IHJldCA9IGZ1bmMoc3NsKTsKLSsgICAgICAgIGludCBzYXZlZF9lcnJubyA9IGVycm5vX21h cHBlZCgpOwotIAotICAgICAgICAgY2Jfc3RhdGUgPSByYl9hdHRyX2dldChzZWxmLCBJRF9jYWxs YmFja19zdGF0ZSk7Ci0gICAgICAgICBpZiAoIU5JTF9QKGNiX3N0YXRlKSkgewotQEAgLTE3OTEs NyArMTgxMSw4IEBAIG9zc2xfc3RhcnRfc3NsKFZBTFVFIHNlbGYsIGludCAoKmZ1bmMpKFNTTCAq KSwgY29uc3QgY2hhciAqZnVuY25hbWUsIFZBTFVFIG9wdHMpCi0gICAgICAgICBpZiAocmV0ID4g MCkKLSAgICAgICAgICAgICBicmVhazsKLSAKLS0gICAgICAgIHN3aXRjaCAoKHJldDIgPSBzc2xf Z2V0X2Vycm9yKHNzbCwgcmV0KSkpIHsKLSsgICAgICAgIGludCBjb2RlID0gU1NMX2dldF9lcnJv cihzc2wsIHJldCk7Ci0rICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICAgICAgICAgY2FzZSBT U0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICBpZiAobm9fZXhjZXB0aW9uX3Aob3B0 cykpIHsgcmV0dXJuIHN5bV93YWl0X3dyaXRhYmxlOyB9Ci0gICAgICAgICAgICAgd3JpdGVfd291 bGRfYmxvY2sobm9uYmxvY2spOwotQEAgLTE4MDUsMTAgKzE4MjYsMTEgQEAgb3NzbF9zdGFydF9z c2woVkFMVUUgc2VsZiwgaW50ICgqZnVuYykoU1NMICopLCBjb25zdCBjaGFyICpmdW5jbmFtZSwg VkFMVUUgb3B0cykKLSAgICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKLSAjaWZkZWYg X19BUFBMRV9fCi0gICAgICAgICAgICAgLyogU2VlIG9zc2xfc3NsX3dyaXRlX2ludGVybmFsKCkg Ki8KLS0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRVBST1RPVFlQRSkKLSsgICAgICAgICAgICBp ZiAoc2F2ZWRfZXJybm8gPT0gRVBST1RPVFlQRSkKLSAgICAgICAgICAgICAgICAgY29udGludWU7 Ci0gI2VuZGlmCi0tICAgICAgICAgICAgaWYgKGVycm5vKSByYl9zeXNfZmFpbChmdW5jbmFtZSk7 Ci0rICAgICAgICAgICAgaWYgKHNhdmVkX2Vycm5vKQotKyAgICAgICAgICAgICAgICByYl9leGNf cmFpc2UocmJfc3lzZXJyX25ldyhzYXZlZF9lcnJubywgZnVuY25hbWUpKTsKLSAgICAgICAgICAg ICAvKiBmYWxsdGhyb3VnaCAqLwotICAgICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICAg ICBWQUxVRSBlcnJvcl9hcHBlbmQgPSBRbmlsOwotQEAgLTE4MjksMTAgKzE4NTEsMTAgQEAgb3Nz bF9zdGFydF9zc2woVkFMVUUgc2VsZiwgaW50ICgqZnVuYykoU1NMICopLCBjb25zdCBjaGFyICpm dW5jbmFtZSwgVkFMVUUgb3B0cykKLSAgICAgICAgICAgICAgIG9zc2xfcmFpc2UoZVNTTEVycm9y LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMlcyByZXR1cm5lZD0lZCBlcnJubz0lZCBw ZWVyYWRkcj0lIlBSSXNWQUxVRSIgc3RhdGU9JXMlIlBSSXNWQUxVRSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgZnVuY25hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHJldDIgPT0g U1NMX0VSUk9SX1NZU0NBTEwgPyAiIFNZU0NBTEwiIDogIiIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgIHJldDIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICBwZWVyYWRkcl9pcF9zdHIoc2VsZiksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgIGNvZGUgPT0gU1NMX0VSUk9SX1NZU0NBTEwgPyAiIFNZU0NBTEwiIDogIiIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAg IHNhdmVkX2Vycm5vLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBwZWVyYWRkcl9pcF9zdHIo aW8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfc3RhdGVfc3RyaW5nX2xvbmcoc3Ns KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfYXBwZW5kKTsKLSAgICAgICAgICAg fQotQEAgLTE5NzQsNiArMTk5Niw3IEBAIG9zc2xfc3NsX3JlYWRfaW50ZXJuYWwoaW50IGFyZ2Ms IFZBTFVFICphcmd2LCBWQUxVRSBzZWxmLCBpbnQgbm9uYmxvY2spCi0gICAgIGZvciAoOzspIHsK LSAgICAgICAgIHJiX3N0cl9sb2NrdG1wKHN0cik7Ci0gICAgICAgICBpbnQgbnJlYWQgPSBTU0xf cmVhZChzc2wsIFJTVFJJTkdfUFRSKHN0ciksIGlsZW4pOwotKyAgICAgICAgaW50IHNhdmVkX2Vy cm5vID0gZXJybm9fbWFwcGVkKCk7Ci0gICAgICAgICByYl9zdHJfdW5sb2NrdG1wKHN0cik7Ci0g Ci0gICAgICAgICBjYl9zdGF0ZSA9IHJiX2F0dHJfZ2V0KHNlbGYsIElEX2NhbGxiYWNrX3N0YXRl KTsKLUBAIC0xOTgzLDcgKzIwMDYsNyBAQCBvc3NsX3NzbF9yZWFkX2ludGVybmFsKGludCBhcmdj LCBWQUxVRSAqYXJndiwgVkFMVUUgc2VsZiwgaW50IG5vbmJsb2NrKQotICAgICAgICAgICAgIHJi X2p1bXBfdGFnKE5VTTJJTlQoY2Jfc3RhdGUpKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIHN3 aXRjaCAoc3NsX2dldF9lcnJvcihzc2wsIG5yZWFkKSkgewotKyAgICAgICAgc3dpdGNoIChTU0xf Z2V0X2Vycm9yKHNzbCwgbnJlYWQpKSB7Ci0gICAgICAgICAgIGNhc2UgU1NMX0VSUk9SX05PTkU6 Ci0gICAgICAgICAgICAgcmJfc3RyX3NldF9sZW4oc3RyLCBucmVhZCk7Ci0gICAgICAgICAgICAg cmV0dXJuIHN0cjsKLUBAIC0yMDA2LDggKzIwMjksOCBAQCBvc3NsX3NzbF9yZWFkX2ludGVybmFs KGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgc2VsZiwgaW50IG5vbmJsb2NrKQotICAgICAg ICAgICAgIGJyZWFrOwotICAgICAgICAgICBjYXNlIFNTTF9FUlJPUl9TWVNDQUxMOgotICAgICAg ICAgICAgIGlmICghRVJSX3BlZWtfZXJyb3IoKSkgewotLSAgICAgICAgICAgICAgICBpZiAoZXJy bm8pCi0tICAgICAgICAgICAgICAgICAgICByYl9zeXNfZmFpbCgwKTsKLSsgICAgICAgICAgICAg ICAgaWYgKHNhdmVkX2Vycm5vKQotKyAgICAgICAgICAgICAgICAgICAgcmJfZXhjX3JhaXNlKHJi X3N5c2Vycl9uZXcoc2F2ZWRfZXJybm8sICJTU0xfcmVhZCIpKTsKLSAgICAgICAgICAgICAgICAg ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgICog VGhlIHVuZGVybHlpbmcgQklPIHJldHVybmVkIDAuIFRoaXMgaXMgYWN0dWFsbHkgYQotQEAgLTIw OTIsNiArMjExNSw3IEBAIG9zc2xfc3NsX3dyaXRlX2ludGVybmFsX3NhZmUoVkFMVUUgX2FyZ3Mp Ci0gCi0gICAgIGZvciAoOzspIHsKLSAgICAgICAgIGludCBud3JpdHRlbiA9IFNTTF93cml0ZShz c2wsIFJTVFJJTkdfUFRSKHN0ciksIG51bSk7Ci0rICAgICAgICBpbnQgc2F2ZWRfZXJybm8gPSBl cnJub19tYXBwZWQoKTsKLSAKLSAgICAgICAgIGNiX3N0YXRlID0gcmJfYXR0cl9nZXQoc2VsZiwg SURfY2FsbGJhY2tfc3RhdGUpOwotICAgICAgICAgaWYgKCFOSUxfUChjYl9zdGF0ZSkpIHsKLUBA IC0yMTAwLDcgKzIxMjQsNyBAQCBvc3NsX3NzbF93cml0ZV9pbnRlcm5hbF9zYWZlKFZBTFVFIF9h cmdzKQotICAgICAgICAgICAgIHJiX2p1bXBfdGFnKE5VTTJJTlQoY2Jfc3RhdGUpKTsKLSAgICAg ICAgIH0KLSAKLS0gICAgICAgIHN3aXRjaCAoc3NsX2dldF9lcnJvcihzc2wsIG53cml0dGVuKSkg ewotKyAgICAgICAgc3dpdGNoIChTU0xfZ2V0X2Vycm9yKHNzbCwgbndyaXR0ZW4pKSB7Ci0gICAg ICAgICAgIGNhc2UgU1NMX0VSUk9SX05PTkU6Ci0gICAgICAgICAgICAgcmV0dXJuIElOVDJOVU0o bndyaXR0ZW4pOwotICAgICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1dSSVRFOgotQEAgLTIx MjEsMTAgKzIxNDUsMTEgQEAgb3NzbF9zc2xfd3JpdGVfaW50ZXJuYWxfc2FmZShWQUxVRSBfYXJn cykKLSAgICAgICAgICAgICAgKiBtYWtlIHRoZSBlcnJvciBoYW5kbGluZyBpbiBsaW5lIHdpdGgg dGhlIHNvY2tldCBsaWJyYXJ5LgotICAgICAgICAgICAgICAqIFtCdWcgIzE0NzEzXSBodHRwczov L2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTQ3MTMKLSAgICAgICAgICAgICAgKi8KLS0gICAg ICAgICAgICBpZiAoZXJybm8gPT0gRVBST1RPVFlQRSkKLSsgICAgICAgICAgICBpZiAoc2F2ZWRf ZXJybm8gPT0gRVBST1RPVFlQRSkKLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gI2VuZGlm Ci0tICAgICAgICAgICAgaWYgKGVycm5vKSByYl9zeXNfZmFpbCgwKTsKLSsgICAgICAgICAgICBp ZiAoc2F2ZWRfZXJybm8pCi0rICAgICAgICAgICAgICAgIHJiX2V4Y19yYWlzZShyYl9zeXNlcnJf bmV3KHNhdmVkX2Vycm5vLCAiU1NMX3dyaXRlIikpOwotICAgICAgICAgICAgIC8qIGZhbGx0aHJv dWdoICovCi0gICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgb3NzbF9yYWlzZShlU1NM RXJyb3IsICJTU0xfd3JpdGUiKTsKLUBAIC0zMzAwLDUgKzMzMjUsNiBAQCBJbml0X29zc2xfc3Ns KHZvaWQpCi0gICAgIERlZklWYXJJRChpbyk7Ci0gICAgIERlZklWYXJJRChjb250ZXh0KTsKLSAg ICAgRGVmSVZhcklEKGhvc3RuYW1lKTsKLSsgICAgRGVmSVZhcklEKHN5bmNfY2xvc2UpOwotICNl bmRpZiAvKiAhZGVmaW5lZChPUEVOU1NMX05PX1NPQ0spICovCi0gfQotZGlmZiAtLWdpdCBhL3Rl c3Qvb3BlbnNzbC90ZXN0X2NpcGhlci5yYiBiL3Rlc3Qvb3BlbnNzbC90ZXN0X2NpcGhlci5yYgot aW5kZXggOTM3NjZjZmM4OGNlMTcuLjZhNDA1ZGEwYTk3NjNmIDEwMDY0NAotLS0tIGEvdGVzdC9v cGVuc3NsL3Rlc3RfY2lwaGVyLnJiCi0rKysgYi90ZXN0L29wZW5zc2wvdGVzdF9jaXBoZXIucmIK LUBAIC0zMiwyOCArMzIsMjggQEAgZGVmIHRlc3RfcGtjczVfa2V5aXZnZW4KLSAgICAgc2FsdCA9 ICJceDAxIiAqIDgKLSAgICAgbnVtID0gMjA0OAotICAgICBwdCA9ICJkYXRhIHRvIGJlIGVuY3J5 cHRlZCIKLS0gICAgY2lwaGVyID0gT3BlblNTTDo6Q2lwaGVyLm5ldygiREVTLUVERTMtQ0JDIiku ZW5jcnlwdAotLSAgICBjaXBoZXIucGtjczVfa2V5aXZnZW4ocGFzcywgc2FsdCwgbnVtLCAiTUQ1 IikKLSsgICAgY2lwaGVyID0gT3BlblNTTDo6Q2lwaGVyLm5ldygiQUVTLTI1Ni1DQkMiKS5lbmNy eXB0Ci0rICAgIGNpcGhlci5wa2NzNV9rZXlpdmdlbihwYXNzLCBzYWx0LCBudW0sICJTSEEyNTYi KQotICAgICBzMSA9IGNpcGhlci51cGRhdGUocHQpIDw8IGNpcGhlci5maW5hbAotIAotLSAgICBk MSA9IG51bS50aW1lcy5pbmplY3QocGFzcyArIHNhbHQpIHt8b3V0LCBffCBPcGVuU1NMOjpEaWdl c3QuZGlnZXN0KCdNRDUnLCBvdXQpIH0KLS0gICAgZDIgPSBudW0udGltZXMuaW5qZWN0KGQxICsg cGFzcyArIHNhbHQpIHt8b3V0LCBffCBPcGVuU1NMOjpEaWdlc3QuZGlnZXN0KCdNRDUnLCBvdXQp IH0KLS0gICAga2V5ID0gKGQxICsgZDIpWzAsIDI0XQotLSAgICBpdiA9IChkMSArIGQyKVsyNCwg OF0KLS0gICAgY2lwaGVyID0gbmV3X2VuY3J5cHRvcigiREVTLUVERTMtQ0JDIiwga2V5OiBrZXks IGl2OiBpdikKLSsgICAgZDEgPSBudW0udGltZXMuaW5qZWN0KHBhc3MgKyBzYWx0KSB7fG91dCwg X3wgT3BlblNTTDo6RGlnZXN0LmRpZ2VzdCgnU0hBMjU2Jywgb3V0KSB9Ci0rICAgIGQyID0gbnVt LnRpbWVzLmluamVjdChkMSArIHBhc3MgKyBzYWx0KSB7fG91dCwgX3wgT3BlblNTTDo6RGlnZXN0 LmRpZ2VzdCgnU0hBMjU2Jywgb3V0KSB9Ci0rICAgIGtleSA9IChkMSArIGQyKVswLCAzMl0KLSsg ICAgaXYgPSAoZDEgKyBkMilbMzIsIDE2XQotKyAgICBjaXBoZXIgPSBuZXdfZW5jcnlwdG9yKCJB RVMtMjU2LUNCQyIsIGtleToga2V5LCBpdjogaXYpCi0gICAgIHMyID0gY2lwaGVyLnVwZGF0ZShw dCkgPDwgY2lwaGVyLmZpbmFsCi0gCi0gICAgIGFzc2VydF9lcXVhbCBzMSwgczIKLSAKLS0gICAg Y2lwaGVyMiA9IE9wZW5TU0w6OkNpcGhlci5uZXcoIkRFUy1FREUzLUNCQyIpLmVuY3J5cHQKLS0g ICAgYXNzZXJ0X3JhaXNlKEFyZ3VtZW50RXJyb3IpIHsgY2lwaGVyMi5wa2NzNV9rZXlpdmdlbihw YXNzLCBzYWx0LCAtMSwgIk1ENSIpIH0KLSsgICAgY2lwaGVyMiA9IE9wZW5TU0w6OkNpcGhlci5u ZXcoIkFFUy0yNTYtQ0JDIikuZW5jcnlwdAotKyAgICBhc3NlcnRfcmFpc2UoQXJndW1lbnRFcnJv cikgeyBjaXBoZXIyLnBrY3M1X2tleWl2Z2VuKHBhc3MsIHNhbHQsIC0xLCAiU0hBMjU2IikgfQot ICAgZW5kCi0gCi0gICBkZWYgdGVzdF9pbmZvCi0tICAgIGNpcGhlciA9IE9wZW5TU0w6OkNpcGhl ci5uZXcoIkRFUy1FREUzLUNCQyIpLmVuY3J5cHQKLS0gICAgYXNzZXJ0X2VxdWFsICJERVMtRURF My1DQkMiLCBjaXBoZXIubmFtZQotLSAgICBhc3NlcnRfZXF1YWwgMjQsIGNpcGhlci5rZXlfbGVu Ci0tICAgIGFzc2VydF9lcXVhbCA4LCBjaXBoZXIuaXZfbGVuCi0rICAgIGNpcGhlciA9IE9wZW5T U0w6OkNpcGhlci5uZXcoIkFFUy0yNTYtQ0JDIikuZW5jcnlwdAotKyAgICBhc3NlcnRfZXF1YWwg IkFFUy0yNTYtQ0JDIiwgY2lwaGVyLm5hbWUKLSsgICAgYXNzZXJ0X2VxdWFsIDMyLCBjaXBoZXIu a2V5X2xlbgotKyAgICBhc3NlcnRfZXF1YWwgMTYsIGNpcGhlci5pdl9sZW4KLSAgIGVuZAotIAot ICAgZGVmIHRlc3RfZHVwCi1AQCAtODAsMTMgKzgwLDEzIEBAIGRlZiB0ZXN0X3Jlc2V0Ci0gICBl bmQKLSAKLSAgIGRlZiB0ZXN0X2tleV9pdl9zZXQKLS0gICAgY2lwaGVyID0gT3BlblNTTDo6Q2lw aGVyLm5ldygiREVTLUVERTMtQ0JDIikuZW5jcnlwdAotLSAgICBhc3NlcnRfcmFpc2UoQXJndW1l bnRFcnJvcikgeyBjaXBoZXIua2V5ID0gIlx4MDEiICogMjMgfQotLSAgICBhc3NlcnRfbm90aGlu Z19yYWlzZWQgeyBjaXBoZXIua2V5ID0gIlx4MDEiICogMjQgfQotLSAgICBhc3NlcnRfcmFpc2Uo QXJndW1lbnRFcnJvcikgeyBjaXBoZXIua2V5ID0gIlx4MDEiICogMjUgfQotLSAgICBhc3NlcnRf cmFpc2UoQXJndW1lbnRFcnJvcikgeyBjaXBoZXIuaXYgPSAiXHgwMSIgKiA3IH0KLS0gICAgYXNz ZXJ0X25vdGhpbmdfcmFpc2VkIHsgY2lwaGVyLml2ID0gIlx4MDEiICogOCB9Ci0tICAgIGFzc2Vy dF9yYWlzZShBcmd1bWVudEVycm9yKSB7IGNpcGhlci5pdiA9ICJceDAxIiAqIDkgfQotKyAgICBj aXBoZXIgPSBPcGVuU1NMOjpDaXBoZXIubmV3KCJBRVMtMjU2LUNCQyIpLmVuY3J5cHQKLSsgICAg YXNzZXJ0X3JhaXNlKEFyZ3VtZW50RXJyb3IpIHsgY2lwaGVyLmtleSA9ICJceDAxIiAqIDMxIH0K LSsgICAgYXNzZXJ0X25vdGhpbmdfcmFpc2VkIHsgY2lwaGVyLmtleSA9ICJceDAxIiAqIDMyIH0K LSsgICAgYXNzZXJ0X3JhaXNlKEFyZ3VtZW50RXJyb3IpIHsgY2lwaGVyLmtleSA9ICJceDAxIiAq IDMzIH0KLSsgICAgYXNzZXJ0X3JhaXNlKEFyZ3VtZW50RXJyb3IpIHsgY2lwaGVyLml2ID0gIlx4 MDEiICogMTUgfQotKyAgICBhc3NlcnRfbm90aGluZ19yYWlzZWQgeyBjaXBoZXIuaXYgPSAiXHgw MSIgKiAxNiB9Ci0rICAgIGFzc2VydF9yYWlzZShBcmd1bWVudEVycm9yKSB7IGNpcGhlci5pdiA9 ICJceDAxIiAqIDE3IH0KLSAgIGVuZAotIAotICAgZGVmIHRlc3RfcmFuZG9tX2tleV9pdgotQEAg LTEwOSw4ICsxMDksOCBAQCBkZWYgdGVzdF9yYW5kb21fa2V5X2l2Ci0gICBlbmQKLSAKLSAgIGRl ZiB0ZXN0X2luaXRpYWxpemUKLS0gICAgY2lwaGVyID0gT3BlblNTTDo6Q2lwaGVyLm5ldygiREVT LUVERTMtQ0JDIikKLS0gICAgYXNzZXJ0X3JhaXNlKFJ1bnRpbWVFcnJvcikgeyBjaXBoZXIuX19z ZW5kX18oOmluaXRpYWxpemUsICJERVMtRURFMy1DQkMiKSB9Ci0rICAgIGNpcGhlciA9IE9wZW5T U0w6OkNpcGhlci5uZXcoIkFFUy0yNTYtQ0JDIikKLSsgICAgYXNzZXJ0X3JhaXNlKFJ1bnRpbWVF cnJvcikgeyBjaXBoZXIuX19zZW5kX18oOmluaXRpYWxpemUsICJBRVMtMjU2LUNCQyIpIH0KLSAg ICAgYXNzZXJ0X3JhaXNlKFJ1bnRpbWVFcnJvcikgeyBPcGVuU1NMOjpDaXBoZXIuYWxsb2NhdGUu ZmluYWwgfQotICAgICBhc3NlcnRfcmFpc2UoT3BlblNTTDo6Q2lwaGVyOjpDaXBoZXJFcnJvcikg ewotICAgICAgIE9wZW5TU0w6OkNpcGhlci5uZXcoIm5vIHN1Y2ggYWxnb3JpdGhtIikKLUBAIC0x MzQsMTMgKzEzNCwxNCBAQCBkZWYgdGVzdF9jdHJfaWZfZXhpc3RzCi0gICBkZWYgdGVzdF91cGRh dGVfd2l0aF9idWZmZXIKLSAgICAgY2lwaGVyID0gT3BlblNTTDo6Q2lwaGVyLm5ldygiYWVzLTEy OC1lY2IiKS5lbmNyeXB0Ci0gICAgIGNpcGhlci5yYW5kb21fa2V5Ci0tICAgIGV4cGVjdGVkID0g Y2lwaGVyLnVwZGF0ZSgiZGF0YSIpIDw8IGNpcGhlci5maW5hbAotLSAgICBhc3NlcnRfZXF1YWwg MTYsIGV4cGVjdGVkLmJ5dGVzaXplCi0rICAgIGV4cGVjdGVkID0gY2lwaGVyLnVwZGF0ZSgiZGF0 YSIgKiAxMCkgPDwgY2lwaGVyLmZpbmFsCi0rICAgIGFzc2VydF9lcXVhbCA0OCwgZXhwZWN0ZWQu Ynl0ZXNpemUKLSAKLSAgICAgIyBCdWZmZXIgaXMgc3VwcGxpZWQKLSAgICAgY2lwaGVyLnJlc2V0 Ci0gICAgIGJ1ZiA9IFN0cmluZy5uZXcKLS0gICAgYXNzZXJ0X3NhbWUgYnVmLCBjaXBoZXIudXBk YXRlKCJkYXRhIiwgYnVmKQotKyAgICBhc3NlcnRfc2FtZSBidWYsIGNpcGhlci51cGRhdGUoImRh dGEiICogMTAsIGJ1ZikKLSsgICAgYXNzZXJ0X2VxdWFsIDMyLCBidWYuYnl0ZXNpemUKLSAgICAg YXNzZXJ0X2VxdWFsIGV4cGVjdGVkLCBidWYgKyBjaXBoZXIuZmluYWwKLSAKLSAgICAgIyBCdWZm ZXIgaXMgZnJvemVuCi1AQCAtMTQ5LDkgKzE1MCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV93aXRoX2J1 ZmZlcgotIAotICAgICAjIEJ1ZmZlciBpcyBhIHNoYXJlZCBzdHJpbmcgW3J1YnktY29yZToxMjAx NDFdIFtCdWcgIzIwOTM3XQotICAgICBjaXBoZXIucmVzZXQKLS0gICAgYnVmID0gIngiICogMTAy NAotLSAgICBzaGFyZWQgPSBidWZbLSgiZGF0YSIuYnl0ZXNpemUgKyAzMikuLi0xXQotLSAgICBh c3NlcnRfc2FtZSBzaGFyZWQsIGNpcGhlci51cGRhdGUoImRhdGEiLCBzaGFyZWQpCi0rICAgIGJ1 ZiA9ICJ4Ii5iICogMTAyNAotKyAgICBzaGFyZWQgPSBidWZbLSgiZGF0YSIuYnl0ZXNpemUgKiAx MCArIDMyKS4uLTFdCi0rICAgIGFzc2VydF9zYW1lIHNoYXJlZCwgY2lwaGVyLnVwZGF0ZSgiZGF0 YSIgKiAxMCwgc2hhcmVkKQotICAgICBhc3NlcnRfZXF1YWwgZXhwZWN0ZWQsIHNoYXJlZCArIGNp cGhlci5maW5hbAotICAgZW5kCi0gCi1AQCAtMTY4LDEyICsxNjksMTIgQEAgZGVmIHRlc3RfQUVT Ci0gICAgICV3KGVjYiBjYmMgY2ZiIG9mYikuZWFjaHt8bW9kZXwKLSAgICAgICBjMSA9IE9wZW5T U0w6OkNpcGhlci5uZXcoImFlcy0yNTYtI3ttb2RlfSIpCi0gICAgICAgYzEuZW5jcnlwdAotLSAg ICAgIGMxLnBrY3M1X2tleWl2Z2VuKCJwYXNzd2QiKQotKyAgICAgIGMxLnBrY3M1X2tleWl2Z2Vu KCJwYXNzd2QiLCAiMTIzNDU2NzgiLCAxMDAwMCwgIlNIQTI1NiIpCi0gICAgICAgY3QgPSBjMS51 cGRhdGUocHQpICsgYzEuZmluYWwKLSAKLSAgICAgICBjMiA9IE9wZW5TU0w6OkNpcGhlci5uZXco ImFlcy0yNTYtI3ttb2RlfSIpCi0gICAgICAgYzIuZGVjcnlwdAotLSAgICAgIGMyLnBrY3M1X2tl eWl2Z2VuKCJwYXNzd2QiKQotKyAgICAgIGMyLnBrY3M1X2tleWl2Z2VuKCJwYXNzd2QiLCAiMTIz NDU2NzgiLCAxMDAwMCwgIlNIQTI1NiIpCi0gICAgICAgYXNzZXJ0X2VxdWFsKHB0LCBjMi51cGRh dGUoY3QpICsgYzIuZmluYWwpCi0gICAgIH0KLSAgIGVuZAotQEAgLTMxMiw2ICszMTMsOSBAQCBk ZWYgdGVzdF9hZXNfZ2NtX3ZhcmlhYmxlX2l2X2xlbgotICAgZW5kCi0gCi0gICBkZWYgdGVzdF9h ZXNfb2NiX3RhZ19sZW4KLSsgICAgIyBBRVMtMTI4LU9DQiBpcyBub3QgRklQUy1hcHByb3ZlZC4K LSsgICAgb21pdF9vbl9maXBzCi0rCi0gICAgICMgUkZDIDcyNTMgQXBwZW5kaXggQTsgdGhlIHNl Y29uZCBzYW1wbGUKLSAgICAga2V5ID0gWyIwMDAxMDIwMzA0MDUwNjA3MDgwOTBBMEIwQzBEMEUw RiJdLnBhY2soIkgqIikKLSAgICAgaXYgID0gWyJCQkFBOTk4ODc3NjY1NTQ0MzMyMjExMDEiXS5w YWNrKCJIKiIpCi1AQCAtMzQ2LDYgKzM1MCw5IEBAIGRlZiB0ZXN0X2Flc19vY2JfdGFnX2xlbgot ICAgZW5kIGlmIGhhc19jaXBoZXI/KCJhZXMtMTI4LW9jYiIpCi0gCi0gICBkZWYgdGVzdF9hZXNf Z2NtX3NpdgotKyAgICAjIEFFUy0xMjgtR0NNLVNJViBpcyBub3QgRklQUy1hcHByb3ZlZC4KLSsg ICAgb21pdF9vbl9maXBzCi0rCi0gICAgICMgUkZDIDg0NTIgQXBwZW5kaXggQy4xLiwgOHRoIGV4 YW1wbGUKLSAgICAga2V5ID0gWyIwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLnBh Y2soIkgqIikKLSAgICAgaXYgID0gWyIwMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXS5wYWNrKCJI KiIpCi1kaWZmIC0tZ2l0IGEvdGVzdC9vcGVuc3NsL3Rlc3RfZGlnZXN0LnJiIGIvdGVzdC9vcGVu c3NsL3Rlc3RfZGlnZXN0LnJiCi1pbmRleCAyZWY4NGNmYTRjN2QyYS4uOTFlZDI0NzQxNDJjNWUg MTAwNjQ0Ci0tLS0gYS90ZXN0L29wZW5zc2wvdGVzdF9kaWdlc3QucmIKLSsrKyBiL3Rlc3Qvb3Bl bnNzbC90ZXN0X2RpZ2VzdC5yYgotQEAgLTYsOCArNiw4IEBACi0gY2xhc3MgT3BlblNTTDo6VGVz dERpZ2VzdCA8IE9wZW5TU0w6OlRlc3RDYXNlCi0gICBkZWYgc2V0dXAKLSAgICAgc3VwZXIKLS0g ICAgQGQxID0gT3BlblNTTDo6RGlnZXN0Lm5ldygiTUQ1IikKLS0gICAgQGQyID0gT3BlblNTTDo6 RGlnZXN0OjpNRDUubmV3Ci0rICAgIEBkMSA9IE9wZW5TU0w6OkRpZ2VzdC5uZXcoIlNIQTI1NiIp Ci0rICAgIEBkMiA9IE9wZW5TU0w6OkRpZ2VzdDo6U0hBMjU2Lm5ldwotICAgZW5kCi0gCi0gICBk ZWYgdGVzdF9pbml0aWFsaXplCi1AQCAtMTcsMTggKzE3LDIwIEBAIGRlZiB0ZXN0X2luaXRpYWxp emUKLSAgIGVuZAotIAotICAgZGVmIHRlc3RfZGlnZXN0Ci0tICAgIG51bGxfaGV4ID0gImQ0MWQ4 Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlIgotKyAgICAjIFNIQTI1NiBudWxsIHZhbHVlIGNh bGN1bGF0ZWQgYnkgYGVjaG8gLW4gIiIgfCBzaGEyNTZzdW1gCi0rICAgIG51bGxfaGV4ID0gImUz YjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1 MmI4NTUiCi0gICAgIG51bGxfYmluID0gW251bGxfaGV4XS5wYWNrKCJIKiIpCi0gICAgIGRhdGEg PSAiREFUQSIKLS0gICAgaGV4ID0gImU0NGY5ZTM0OGU0MWNiMjcyZWZhODczODc3Mjg1NzFiIgot KyAgICAjIFNIQTI1NiBEQVRBIHZhbHVlIGNhbGN1bGF0ZWQgYnkgYGVjaG8gLW4gIkRBVEEiIHwg c2hhMjU2c3VtYAotKyAgICBoZXggPSAiYzk3YzI5YzdhNzFiMzkyYjQzN2VlMDNmZDE3ZjA5YmIx MGI3NWU4Nzk0NjZmYzBlYjc1N2IyYzRhNzhhYzkzOCIKLSAgICAgYmluID0gW2hleF0ucGFjaygi SCoiKQotICAgICBhc3NlcnRfZXF1YWwobnVsbF9iaW4sIEBkMS5kaWdlc3QpCi0gICAgIGFzc2Vy dF9lcXVhbChudWxsX2hleCwgQGQxLmhleGRpZ2VzdCkKLSAgICAgQGQxIDw8IGRhdGEKLSAgICAg YXNzZXJ0X2VxdWFsKGJpbiwgQGQxLmRpZ2VzdCkKLSAgICAgYXNzZXJ0X2VxdWFsKGhleCwgQGQx LmhleGRpZ2VzdCkKLS0gICAgYXNzZXJ0X2VxdWFsKGJpbiwgT3BlblNTTDo6RGlnZXN0LmRpZ2Vz dCgnTUQ1JywgZGF0YSkpCi0tICAgIGFzc2VydF9lcXVhbChoZXgsIE9wZW5TU0w6OkRpZ2VzdC5o ZXhkaWdlc3QoJ01ENScsIGRhdGEpKQotKyAgICBhc3NlcnRfZXF1YWwoYmluLCBPcGVuU1NMOjpE aWdlc3QuZGlnZXN0KCdTSEEyNTYnLCBkYXRhKSkKLSsgICAgYXNzZXJ0X2VxdWFsKGhleCwgT3Bl blNTTDo6RGlnZXN0LmhleGRpZ2VzdCgnU0hBMjU2JywgZGF0YSkpCi0gICBlbmQKLSAKLSAgIGRl ZiB0ZXN0X2VxbAotQEAgLTM4LDkgKzQwLDkgQEAgZGVmIHRlc3RfZXFsCi0gICBlbmQKLSAKLSAg IGRlZiB0ZXN0X2luZm8KLS0gICAgYXNzZXJ0X2VxdWFsKCJNRDUiLCBAZDEubmFtZSwgIm5hbWUi KQotLSAgICBhc3NlcnRfZXF1YWwoIk1ENSIsIEBkMi5uYW1lLCAibmFtZSIpCi0tICAgIGFzc2Vy dF9lcXVhbCgxNiwgQGQxLnNpemUsICJzaXplIikKLSsgICAgYXNzZXJ0X2VxdWFsKCJTSEEyNTYi LCBAZDEubmFtZSwgIm5hbWUiKQotKyAgICBhc3NlcnRfZXF1YWwoIlNIQTI1NiIsIEBkMi5uYW1l LCAibmFtZSIpCi0rICAgIGFzc2VydF9lcXVhbCgzMiwgQGQxLnNpemUsICJzaXplIikKLSAgIGVu ZAotIAotICAgZGVmIHRlc3RfZHVwCi1AQCAtNjAsNyArNjIsMTAgQEAgZGVmIHRlc3RfcmVzZXQK LSAgIGVuZAotIAotICAgZGVmIHRlc3RfZGlnZXN0X2NvbnN0YW50cwotLSAgICAld3tNRDUgU0hB MSBTSEEyMjQgU0hBMjU2IFNIQTM4NCBTSEE1MTJ9LmVhY2ggZG8gfG5hbWV8Ci0rICAgIG5vbl9m aXBzX25hbWVzID0gJXd7TUQ1fQotKyAgICBuYW1lcyA9ICV3e1NIQTEgU0hBMjI0IFNIQTI1NiBT SEEzODQgU0hBNTEyfQotKyAgICBuYW1lcyA9IG5vbl9maXBzX25hbWVzICsgbmFtZXMgdW5sZXNz IE9wZW5TU0wuZmlwc19tb2RlCi0rICAgIG5hbWVzLmVhY2ggZG8gfG5hbWV8Ci0gICAgICAgYXNz ZXJ0X25vdF9uaWwoT3BlblNTTDo6RGlnZXN0Lm5ldyhuYW1lKSkKLSAgICAgICBrbGFzcyA9IE9w ZW5TU0w6OkRpZ2VzdC5jb25zdF9nZXQobmFtZS50cignLScsICdfJykpCi0gICAgICAgYXNzZXJ0 X25vdF9uaWwoa2xhc3MubmV3KQotQEAgLTEyNSw2ICsxMzAsOSBAQCBkZWYgdGVzdF9zaGEzCi0g ICBlbmQKLSAKLSAgIGRlZiB0ZXN0X2ZldGNoZWRfZXZwX21kCi0rICAgICMgS0VDQ0FLLTI1NiBp cyBub3QgRklQUy1hcHByb3ZlZC4KLSsgICAgb21pdF9vbl9maXBzCi0rCi0gICAgICMgUHJlLU5J U1QgS2VjY2FrIGlzIGFuIGV4YW1wbGUgb2YgYSBkaWdlc3QgYWxnb3JpdGhtIHRoYXQgZG9lc24n dCBoYXZlIGFuCi0gICAgICMgTklEIGFuZCByZXF1aXJlcyBkeW5hbWljIGFsbG9jYXRpb24gb2Yg RVZQX01ECi0gICAgIGhleCA9ICJjNWQyNDYwMTg2ZjcyMzNjOTI3ZTdkYjJkY2M3MDNjMGU1MDBi NjUzY2E4MjI3M2I3YmZhZDgwNDVkODVhNDcwIgotZGlmZiAtLWdpdCBhL3Rlc3Qvb3BlbnNzbC90 ZXN0X2ZpcHMucmIgYi90ZXN0L29wZW5zc2wvdGVzdF9maXBzLnJiCi1pbmRleCBlZmMyNjU1ZTI1 YmY1NC4uNjgzZTAwMTFlOGQ3ZmMgMTAwNjQ0Ci0tLS0gYS90ZXN0L29wZW5zc2wvdGVzdF9maXBz LnJiCi0rKysgYi90ZXN0L29wZW5zc2wvdGVzdF9maXBzLnJiCi1AQCAtMzAsNyArMzAsNyBAQCBk ZWYgdGVzdF9maXBzX21vZGVfZ2V0X2lzX2ZhbHNlX29uX2ZpcHNfbW9kZV9kaXNhYmxlZAotICAg ZGVmIHRlc3RfZmlwc19tb2RlX2lzX3JlZW50cmFudAotICAgICByZXR1cm4gaWYgYXdzX2xjPyAj IEFXUy1MQydzIEZJUFMgbW9kZSBpcyBkZWNpZGVkIGF0IGNvbXBpbGUgdGltZS4KLSAKLS0gICAg YXNzZXJ0X3NlcGFyYXRlbHkoWyItcm9wZW5zc2wiXSwgPDx+ImVuZDsiKQotKyAgICBhc3NlcnRf cnVieV9zdGF0dXMoWyItcm9wZW5zc2wiXSwgPDx+ImVuZDsiKQotICAgICAgIE9wZW5TU0wuZmlw c19tb2RlID0gZmFsc2UKLSAgICAgICBPcGVuU1NMLmZpcHNfbW9kZSA9IGZhbHNlCi0gICAgIGVu ZDsKLWRpZmYgLS1naXQgYS90ZXN0L29wZW5zc2wvdGVzdF9vY3NwLnJiIGIvdGVzdC9vcGVuc3Ns L3Rlc3Rfb2NzcC5yYgotaW5kZXggYjliNjZhZDM3YWQwODguLmM0M2ZmNWNiNTUxZjQxIDEwMDY0 NAotLS0tIGEvdGVzdC9vcGVuc3NsL3Rlc3Rfb2NzcC5yYgotKysrIGIvdGVzdC9vcGVuc3NsL3Rl c3Rfb2NzcC5yYgotQEAgLTIxNSw2ICsyMTUsMzUgQEAgZGVmIHRlc3RfYmFzaWNfcmVzcG9uc2Vf ZHVwCi0gICAgIGFzc2VydF9lcXVhbCBicmVzLnRvX2RlciwgYnJlcy5kdXAudG9fZGVyCi0gICBl bmQKLSAKLSsgIGRlZiB0ZXN0X2Jhc2ljX3Jlc3BvbnNlX3N0YXR1c19nb29kCi0rICAgIGJyZXMg PSBPcGVuU1NMOjpPQ1NQOjpCYXNpY1Jlc3BvbnNlLm5ldwotKyAgICBjaWQgPSBPcGVuU1NMOjpP Q1NQOjpDZXJ0aWZpY2F0ZUlkLm5ldyhAY2VydCwgQGNhX2NlcnQsIE9wZW5TU0w6OkRpZ2VzdC5u ZXcoJ1NIQTEnKSkKLSsgICAgYnJlcy5hZGRfc3RhdHVzKGNpZCwgT3BlblNTTDo6T0NTUDo6Vl9D RVJUU1RBVFVTX0dPT0QsIDAsIG5pbCwgLTMwMCwgNTAwLCBuaWwpCi0rICAgIGJyZXMuc2lnbihA b2NzcF9jZXJ0LCBAb2NzcF9rZXksIFtAY2FfY2VydF0pCi0rCi0rICAgIHN0YXR1c2VzID0gYnJl cy5zdGF0dXMKLSsgICAgYXNzZXJ0X2VxdWFsIDEsIHN0YXR1c2VzLnNpemUKLSsgICAgc3RhdHVz ID0gc3RhdHVzZXNbMF0KLSsgICAgYXNzZXJ0X2VxdWFsIGNpZC50b19kZXIsIHN0YXR1c1swXS50 b19kZXIKLSsgICAgYXNzZXJ0X2VxdWFsIE9wZW5TU0w6Ok9DU1A6OlZfQ0VSVFNUQVRVU19HT09E LCBzdGF0dXNbMV0KLSsgICAgYXNzZXJ0X25pbCBzdGF0dXNbM10gIyByZXZ0aW1lIHNob3VsZCBi ZSBuaWwgZm9yIEdPT0Qgc3RhdHVzCi0rICBlbmQKLSsKLSsgIGRlZiB0ZXN0X2Jhc2ljX3Jlc3Bv bnNlX3N0YXR1c19yZXZva2VkCi0rICAgIGJyZXMgPSBPcGVuU1NMOjpPQ1NQOjpCYXNpY1Jlc3Bv bnNlLm5ldwotKyAgICBub3cgPSBUaW1lLmF0KFRpbWUubm93LnRvX2kpCi0rICAgIGNpZCA9IE9w ZW5TU0w6Ok9DU1A6OkNlcnRpZmljYXRlSWQubmV3KEBjZXJ0LCBAY2FfY2VydCwgT3BlblNTTDo6 RGlnZXN0Lm5ldygnU0hBMScpKQotKyAgICBicmVzLmFkZF9zdGF0dXMoY2lkLCBPcGVuU1NMOjpP Q1NQOjpWX0NFUlRTVEFUVVNfUkVWT0tFRCwKLSsgICAgICAgICAgICAgICAgICAgIE9wZW5TU0w6 Ok9DU1A6OlJFVk9LRURfU1RBVFVTX1VOU1BFQ0lGSUVELCBub3cgLSA0MDAsIC0zMDAsIG5pbCwg bmlsKQotKyAgICBicmVzLnNpZ24oQG9jc3BfY2VydCwgQG9jc3Bfa2V5LCBbQGNhX2NlcnRdKQot KwotKyAgICBzdGF0dXNlcyA9IGJyZXMuc3RhdHVzCi0rICAgIGFzc2VydF9lcXVhbCAxLCBzdGF0 dXNlcy5zaXplCi0rICAgIHN0YXR1cyA9IHN0YXR1c2VzWzBdCi0rICAgIGFzc2VydF9lcXVhbCBP cGVuU1NMOjpPQ1NQOjpWX0NFUlRTVEFUVVNfUkVWT0tFRCwgc3RhdHVzWzFdCi0rICAgIGFzc2Vy dF9lcXVhbCBub3cgLSA0MDAsIHN0YXR1c1szXSAjIHJldnRpbWUgc2hvdWxkIGJlIHRoZSByZXZv Y2F0aW9uIHRpbWUKLSsgIGVuZAotKwotICAgZGVmIHRlc3RfYmFzaWNfcmVzcG9uc2VfcmVzcG9u c2Vfb3BlcmF0aW9ucwotICAgICBicmVzID0gT3BlblNTTDo6T0NTUDo6QmFzaWNSZXNwb25zZS5u ZXcKLSAgICAgbm93ID0gVGltZS5hdChUaW1lLm5vdy50b19pKQotZGlmZiAtLWdpdCBhL3Rlc3Qv b3BlbnNzbC90ZXN0X3BrY3MxMi5yYiBiL3Rlc3Qvb3BlbnNzbC90ZXN0X3BrY3MxMi5yYgotaW5k ZXggMWI1MzI4Nzc0ZTRmMmEuLjYxN2MxNTZjYmQ3NTI1IDEwMDY0NAotLS0tIGEvdGVzdC9vcGVu c3NsL3Rlc3RfcGtjczEyLnJiCi0rKysgYi90ZXN0L29wZW5zc2wvdGVzdF9wa2NzMTIucmIKLUBA IC0zLDYgKzMsMjkgQEAKLSAKLSBpZiBkZWZpbmVkPyhPcGVuU1NMKQotIAotKyMgT3BlblNTTDo6 UEtDUzEyLmNyZWF0ZSBjYWxsaW5nIHRoZSBQS0NTMTJfY3JlYXRlKCkgaGFzIHRoZSBhcmd1bWVu dCBtYWNfaXRlcgotKyMgd2hpY2ggdXNlcyBhIE1BQyBrZXkgdXNpbmcgUEtDUzEyS0RGIHdoaWNo IGlzIG5vdCBGSVBTLWFwcHJvdmVkLgotKyMgT3BlblNTTDo6UEtDUzEyLm5ldyB3aXRoIGJhc2U2 NC1lbmNvZGVkIGV4YW1wbGUgY2FsbGluZyBQS0NTMTJfcGFyc2UoKQotKyMgdmVyaWZpZXMgdGhl IE1BQyBrZXkgdXNpbmcgUEtDUzEyS0RGIHdoaWNoIGlzIG5vdCBGSVBTLWFwcHJvdmVkLgotKyMK LSsjIFBCRS1TSEExLTNERVMgdXNlcyBQS0NTMTJLREYgd2hpY2ggaXMgbm90IEZJUFMtYXBwcm92 ZWQgYWNjb3JkaW5nIHRvIHRoZSBSRkMKLSsjIDcyOTIgUEtDUyMxMi4KLSsjIGh0dHBzOi8vZGF0 YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzI5MiNhcHBlbmRpeC1DCi0rIyA+IFRoZSBQ QkVTMSBlbmNyeXB0aW9uIHNjaGVtZSBkZWZpbmVkIGluIFBLQ1MgIzUgcHJvdmlkZXMgYSBudW1i ZXIgb2YKLSsjID4gYWxnb3JpdGhtIGlkZW50aWZpZXJzIGZvciBkZXJpdmluZyBrZXlzIGFuZCBJ VnM7IGhlcmUsIHdlIHNwZWNpZnkgYQotKyMgPiBmZXcgbW9yZSwgYWxsIG9mIHdoaWNoIHVzZSB0 aGUgcHJvY2VkdXJlIGRldGFpbGVkIGluIEFwcGVuZGljZXMgQi4yCi0rIyA+IGFuZCBCLjMgdG8g Y29uc3RydWN0IGtleXMgKGFuZCBJVnMsIHdoZXJlIG5lZWRlZCkuICBBcyBpcyBpbXBsaWVkIGJ5 Ci0rIyA+IHRoZWlyIG5hbWVzLCBhbGwgb2YgdGhlIG9iamVjdCBpZGVudGlmaWVycyBiZWxvdyB1 c2UgdGhlIGhhc2gKLSsjID4gZnVuY3Rpb24gU0hBLTEuCi0rIyA+IC4uLgotKyMgPiBwYmVXaXRo U0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDICBPQkpFQ1QgSURFTlRJRklFUiA6Oj0ge3BrY3MtMTJQ YmVJZHMgM30KLSsjCi0rIyBOb3RlIHRoYXQgdGhlIHBiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURF Uy1DQkMgKHBrY3MxMi1wYmVpZHMgMykgaW4gdGhlIFJGQwotKyMgNzI5MiBQS0NTIzEyIG1lYW5z IFBCRS1TSEExLTNERVMgaW4gT3BlblNTTC4gUEtDUzEyS0RGIGlzIHVzZWQgaW4gUEtDUyMxMi4K LSsjIGh0dHBzOi8vb2lkcmVmLmNvbS8xLjIuODQwLjExMzU0OS4xLjEyLjEuMwotKyMgaHR0cHM6 Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9ibG9iL2VkNTdkMWUwNmRjYTI4Njg5MTkwZTAw ZDk4OTNlMGZkN2VjYzY3YzEvY3J5cHRvL29iamVjdHMvb2JqZWN0cy50eHQjTDM4NQotK3JldHVy biBpZiBPcGVuU1NMLmZpcHNfbW9kZQotKwotIG1vZHVsZSBPcGVuU1NMCi0gICBjbGFzcyBUZXN0 UEtDUzEyIDwgT3BlblNTTDo6VGVzdENhc2UKLSAgICAgREVGQVVMVF9QQkVfUEtFWVMgPSAiUEJF LVNIQTEtM0RFUyIKLUBAIC0yMTAsOCArMjMzLDEzIEBAIGRlZiB0ZXN0X2NyZWF0ZV93aXRoX2tl eXR5cGUKLSAgICAgZW5kCi0gCi0gICAgIGRlZiB0ZXN0X25ld193aXRoX25vX2tleXMKLS0gICAg ICAjIGdlbmVyYXRlZCB3aXRoOgotLSAgICAgICMgICBvcGVuc3NsIHBrY3MxMiAtY2VydHBiZSBQ QkUtU0hBMS0zREVTIC1pbiA8QG15Y2VydD4gLW5va2V5cyAtZXhwb3J0Ci0rICAgICAgIyBHZW5l cmF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIHN0ZXBzOgotKyAgICAgICMgICBQcmludCB0aGUgdmFs dWUgb2YgdGhlIEBteWNlcnQgc3VjaCBhcyBieSBgcHV0cyBAbXljZXJ0LnRvX3NgIGFuZAotKyAg ICAgICMgICBzYXZlIHRoZSB2YWx1ZSBhcyB0aGUgZmlsZSBgbXljZXJ0LnBlbWAuCi0rICAgICAg IyAgIFJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotKyAgICAgICMgICBvcGVuc3NsIHBrY3Mx MiAtY2VydHBiZSBQQkUtU0hBMS0zREVTIC1pbiA8KGNhdCBteWNlcnQucGVtKSBcCi0rICAgICAg IyAgICAgLW5va2V5cyAtZXhwb3J0IC1wYXNzb3V0IHBhc3M6YWJjMTIzIC1vdXQgL3RtcC9wMTIu b3V0Ci0rICAgICAgIyAgIGJhc2U2NCAtdyA2MCAvdG1wL3AxMi5vdXQKLSAgICAgICBzdHIgPSA8 PH5FT0YudW5wYWNrMSgibSIpCi0gTUlJR0pBSUJBekNDQmVvR0NTcUdTSWIzRFFFSEFhQ0NCZHNF Z2dYWE1JSUYwekNDQmM4R0NTcUdTSWIzCi0gRFFFSEJxQ0NCY0F3Z2dXOEFnRUFNSUlGdFFZSktv WklodmNOQVFjQk1Cd0dDaXFHU0liM0RRRU1BUU13Ci1AQCAtMjU5LDggKzI4NywxMCBAQCBkZWYg dGVzdF9uZXdfd2l0aF9ub19rZXlzCi0gICAgIGVuZAotIAotICAgICBkZWYgdGVzdF9uZXdfd2l0 aF9ub19jZXJ0cwotLSAgICAgICMgZ2VuZXJhdGVkIHdpdGg6Ci0tICAgICAgIyAgIG9wZW5zc2wg cGtjczEyIC1pbmtleSBmaXh0dXJlcy9vcGVuc3NsL3BrZXkvcnNhLTEucGVtIC1ub2NlcnRzIC1l eHBvcnQKLSsgICAgICAjIEdlbmVyYXRlZCB3aXRoIHRoZSBmb2xvd2luZyBzdGVwczoKLSsgICAg ICAjICAgb3BlbnNzbCBwa2NzMTIgLWlua2V5IHRlc3Qvb3BlbnNzbC9maXh0dXJlcy9wa2V5L3Jz YS0xLnBlbSBcCi0rICAgICAgIyAgICAgLW5vY2VydHMgLWV4cG9ydCAtcGFzc291dCBwYXNzOmFi YzEyMyAtb3V0IC90bXAvcDEyLm91dAotKyAgICAgICMgICBiYXNlNjQgLXcgNjAgL3RtcC9wMTIu b3V0Ci0gICAgICAgc3RyID0gPDx+RU9GLnVucGFjazEoIm0iKQotIE1JSUo3d0lCQXpDQ0NiVUdD U3FHU0liM0RRRUhBYUNDQ2FZRWdnbWlNSUlKbmpDQ0Nab0dDU3FHU0liMwotIERRRUhBYUNDQ1lz RWdnbUhNSUlKZ3pDQ0NYOEdDeXFHU0liM0RRRU1DZ0VDb0lJSmJqQ0NDV293SEFZSwotZGlmZiAt LWdpdCBhL3Rlc3Qvb3BlbnNzbC90ZXN0X3BrZXlfZWMucmIgYi90ZXN0L29wZW5zc2wvdGVzdF9w a2V5X2VjLnJiCi1pbmRleCA4ODA4NWJjNjhjN2VmNS4uZWM5N2E3NDdhMzNiOGIgMTAwNjQ0Ci0t LS0gYS90ZXN0L29wZW5zc2wvdGVzdF9wa2V5X2VjLnJiCi0rKysgYi90ZXN0L29wZW5zc2wvdGVz dF9wa2V5X2VjLnJiCi1AQCAtMzQ1LDYgKzM0NSwxNSBAQCBkZWYgdGVzdF9lY19ncm91cAotICAg ICBhc3NlcnRfZXF1YWwgZ3JvdXAxLmRlZ3JlZSwgZ3JvdXA0LmRlZ3JlZQotICAgZW5kCi0gCi0r ICBkZWYgdGVzdF9lY19ncm91cF9pbml0aWFsaXplX2Vycm9yX21lc3NhZ2UKLSsgICAgIyBUZXN0 IHRoYXQgcGFzc2luZyAyIGFyZ3VtZW50cyByYWlzZXMgdGhlIGhlbHBmdWwgZXJyb3IKLSsgICAg ZSA9IGFzc2VydF9yYWlzZShBcmd1bWVudEVycm9yKSBkbwotKyAgICAgIE9wZW5TU0w6OlBLZXk6 OkVDOjpHcm91cC5uZXcoOkdGcCwgMTIzKQotKyAgICBlbmQKLSsKLSsgICAgYXNzZXJ0X2VxdWFs KCJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIChnaXZlbiAyLCBleHBlY3RlZCAxIG9yIDQpIiwg ZS5tZXNzYWdlKQotKyAgZW5kCi0rCi0gICBkZWYgdGVzdF9lY19wb2ludAotICAgICBncm91cCA9 IE9wZW5TU0w6OlBLZXk6OkVDOjpHcm91cC5uZXcoInByaW1lMjU2djEiKQotICAgICBrZXkgPSBP cGVuU1NMOjpQS2V5OjpFQy5nZW5lcmF0ZShncm91cCkKLWRpZmYgLS1naXQgYS90ZXN0L29wZW5z c2wvdGVzdF9zc2wucmIgYi90ZXN0L29wZW5zc2wvdGVzdF9zc2wucmIKLWluZGV4IDVkMjBjY2Qx ZjRiMmU0Li5jZTFiMmMxZTk2NmZkMCAxMDA2NDQKLS0tLSBhL3Rlc3Qvb3BlbnNzbC90ZXN0X3Nz bC5yYgotKysrIGIvdGVzdC9vcGVuc3NsL3Rlc3Rfc3NsLnJiCi1AQCAtMzU1LDYgKzM1NSwyMiBA QCBkZWYgdGVzdF9zeW5jX2Nsb3NlCi0gICAgIGVuZAotICAgZW5kCi0gCi0rICBkZWYgdGVzdF9z eW5jX2Nsb3NlX2luaXRpYWxpemVfb3B0Ci0rICAgIHN0YXJ0X3NlcnZlciBkbyB8cG9ydHwKLSsg ICAgICBiZWdpbgotKyAgICAgICAgc29jayA9IFRDUFNvY2tldC5uZXcoIjEyNy4wLjAuMSIsIHBv cnQpCi0rICAgICAgICBzc2wgPSBPcGVuU1NMOjpTU0w6OlNTTFNvY2tldC5uZXcoc29jaywgc3lu Y19jbG9zZTogdHJ1ZSkKLSsgICAgICAgIGFzc2VydF9lcXVhbCB0cnVlLCBzc2wuc3luY19jbG9z ZQotKyAgICAgICAgc3NsLmNvbm5lY3QKLSsgICAgICAgIHNzbC5wdXRzICJhYmMiOyBhc3NlcnRf ZXF1YWwgImFiY1xuIiwgc3NsLmdldHMKLSsgICAgICAgIHNzbC5jbG9zZQotKyAgICAgICAgYXNz ZXJ0X3ByZWRpY2F0ZSBzb2NrLCA6Y2xvc2VkPwotKyAgICAgIGVuc3VyZQotKyAgICAgICAgc29j ayYuY2xvc2UKLSsgICAgICBlbmQKLSsgICAgZW5kCi0rICBlbmQKLSsKLSAgIGRlZiB0ZXN0X2Nv cHlfc3RyZWFtCi0gICAgIHN0YXJ0X3NlcnZlciBkbyB8cG9ydHwKLSAgICAgICBzZXJ2ZXJfY29u bmVjdChwb3J0KSBkbyB8c3NsfAotQEAgLTEwNjQsMzYgKzEwODAsNDYgQEAgZGVmIHRlc3RfdGxz ZXh0X2hvc3RuYW1lCi0gICAgIGVuZAotICAgZW5kCi0gCi0tICBkZWYgdGVzdF9zZXJ2ZXJuYW1l X2NiX3JhaXNlc19hbl9leGNlcHRpb25fb25fdW5rbm93bl9vYmplY3RzCi0tICAgIGhvc3RuYW1l ID0gJ2V4YW1wbGUub3JnJwotLQotLSAgICBjdHgyID0gT3BlblNTTDo6U1NMOjpTU0xDb250ZXh0 Lm5ldwotLSAgICBjdHgyLmNlcnQgPSBAc3ZyX2NlcnQKLS0gICAgY3R4Mi5rZXkgPSBAc3ZyX2tl eQotLSAgICBjdHgyLnNlcnZlcm5hbWVfY2IgPSBsYW1iZGEgeyB8YXJnc3wgT2JqZWN0Lm5ldyB9 Ci0tCi0rICBkZWYgdGVzdF9zZXJ2ZXJuYW1lX2NiX2V4Y2VwdGlvbgotICAgICBzb2NrMSwgc29j azIgPSBzb2NrZXRwYWlyCi0gCi0rICAgIHQgPSBUaHJlYWQubmV3IHsKLSsgICAgICBzMSA9IE9w ZW5TU0w6OlNTTDo6U1NMU29ja2V0Lm5ldyhzb2NrMSkKLSsgICAgICBzMS5ob3N0bmFtZSA9ICJs b2NhbGhvc3QiCi0rICAgICAgYXNzZXJ0X3JhaXNlX3dpdGhfbWVzc2FnZShPcGVuU1NMOjpTU0w6 OlNTTEVycm9yLCAvdW5yZWNvZ25pemVkLm5hbWUvaSkgewotKyAgICAgICAgczEuY29ubmVjdAot KyAgICAgIH0KLSsgICAgfQotKwotKyAgICBjdHgyID0gT3BlblNTTDo6U1NMOjpTU0xDb250ZXh0 Lm5ldwotKyAgICBjdHgyLnNlcnZlcm5hbWVfY2IgPSBsYW1iZGEgeyB8YXJnc3wgcmFpc2UgUnVu dGltZUVycm9yLCAiZm9vIiB9Ci0gICAgIHMyID0gT3BlblNTTDo6U1NMOjpTU0xTb2NrZXQubmV3 KHNvY2syLCBjdHgyKQotKyAgICBhc3NlcnRfcmFpc2Vfd2l0aF9tZXNzYWdlKFJ1bnRpbWVFcnJv ciwgImZvbyIpIHsgczIuYWNjZXB0IH0KLSsgICAgYXNzZXJ0IHQuam9pbgotKyAgZW5zdXJlCi0r ICAgIHNvY2sxLmNsb3NlCi0rICAgIHNvY2syLmNsb3NlCi0rICAgIHQua2lsbC5qb2luCi0rICBl bmQKLSAKLS0gICAgY3R4MSA9IE9wZW5TU0w6OlNTTDo6U1NMQ29udGV4dC5uZXcKLSsgIGRlZiB0 ZXN0X3NlcnZlcm5hbWVfY2JfcmFpc2VzX2FuX2V4Y2VwdGlvbl9vbl91bmtub3duX29iamVjdHMK LSsgICAgc29jazEsIHNvY2syID0gc29ja2V0cGFpcgotIAotLSAgICBzMSA9IE9wZW5TU0w6OlNT TDo6U1NMU29ja2V0Lm5ldyhzb2NrMSwgY3R4MSkKLS0gICAgczEuaG9zdG5hbWUgPSBob3N0bmFt ZQotICAgICB0ID0gVGhyZWFkLm5ldyB7Ci0tICAgICAgYXNzZXJ0X3JhaXNlKE9wZW5TU0w6OlNT TDo6U1NMRXJyb3IpIGRvCi0tICAgICAgICBzMS5jb25uZWN0Ci0tICAgICAgZW5kCi0rICAgICAg czEgPSBPcGVuU1NMOjpTU0w6OlNTTFNvY2tldC5uZXcoc29jazEpCi0rICAgICAgczEuaG9zdG5h bWUgPSAibG9jYWxob3N0IgotKyAgICAgIGFzc2VydF9yYWlzZShPcGVuU1NMOjpTU0w6OlNTTEVy cm9yKSB7IHMxLmNvbm5lY3QgfQotICAgICB9Ci0gCi0tICAgIGFzc2VydF9yYWlzZShBcmd1bWVu dEVycm9yKSBkbwotLSAgICAgIHMyLmFjY2VwdAotLSAgICBlbmQKLS0KLSsgICAgY3R4MiA9IE9w ZW5TU0w6OlNTTDo6U1NMQ29udGV4dC5uZXcKLSsgICAgY3R4Mi5zZXJ2ZXJuYW1lX2NiID0gbGFt YmRhIHsgfGFyZ3N8IE9iamVjdC5uZXcgfQotKyAgICBzMiA9IE9wZW5TU0w6OlNTTDo6U1NMU29j a2V0Lm5ldyhzb2NrMiwgY3R4MikKLSsgICAgYXNzZXJ0X3JhaXNlKEFyZ3VtZW50RXJyb3IpIHsg czIuYWNjZXB0IH0KLSAgICAgYXNzZXJ0IHQuam9pbgotICAgZW5zdXJlCi0tICAgIHNvY2sxLmNs b3NlIGlmIHNvY2sxCi0tICAgIHNvY2syLmNsb3NlIGlmIHNvY2syCi0rICAgIHNvY2sxLmNsb3Nl Ci0rICAgIHNvY2syLmNsb3NlCi0rICAgIHQua2lsbC5qb2luCi0gICBlbmQKLSAKLSAgIGRlZiB0 ZXN0X2FjY2VwdF9lcnJvcnNfaW5jbHVkZV9wZWVyYWRkcgotCi1Gcm9tIDcyZTMzODEzYWQ1ZmE4 NjZiZjM0MzEyNzcwNDk4MTkzM2QyNjE5MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBLYXp1a2kgWWFtYWd1Y2hpIDxrQHJoZS5qcD4KLURhdGU6IFRodSwgMTQgTWF5IDIwMjYgMDA6 NDc6MTUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIE1lcmdlIG9wZW5zc2wtNC4wLjIKLQot VGhlIGNoYW5nZXMgY2FuIGJlIGZvdW5kIGF0OgotCi0gICAgaHR0cHM6Ly9naXRodWIuY29tL3J1 Ynkvb3BlbnNzbC9jb21wYXJlL3Y0LjAuMS4uLnY0LjAuMgotLS0tCi0gZXh0L29wZW5zc2wvSGlz dG9yeS5tZCAgICAgICAgICAgICB8IDIyICsrKysrKysrKwotIGV4dC9vcGVuc3NsL2V4dGNvbmYu cmIgICAgICAgICAgICAgfCAgMyArKwotIGV4dC9vcGVuc3NsL2xpYi9vcGVuc3NsL3ZlcnNpb24u cmIgfCAgMiArLQotIGV4dC9vcGVuc3NsL29wZW5zc2wuZ2Vtc3BlYyAgICAgICAgfCAgMiArLQot IGV4dC9vcGVuc3NsL29wZW5zc2xfbWlzc2luZy5oICAgICAgfCAyMyArKysrKysrKysrCi0gZXh0 L29wZW5zc2wvb3NzbC5jICAgICAgICAgICAgICAgICB8IDIyICsrKysrKystLQotIGV4dC9vcGVu c3NsL29zc2xfYXNuMS5jICAgICAgICAgICAgfCA0NyArKysrKysrKysrLS0tLS0tLS0tCi0gZXh0 L29wZW5zc2wvb3NzbF9iaW8uYyAgICAgICAgICAgICB8ICA2ICsrLQotIGV4dC9vcGVuc3NsL29z c2xfb2NzcC5jICAgICAgICAgICAgfCAgNSArLQotIGV4dC9vcGVuc3NsL29zc2xfcGtleS5oICAg ICAgICAgICAgfCAgMSAtCi0gZXh0L29wZW5zc2wvb3NzbF90cy5jICAgICAgICAgICAgICB8ICAy ICstCi0gZXh0L29wZW5zc2wvb3NzbF94NTA5LmggICAgICAgICAgICB8IDEyICsrLS0tCi0gZXh0 L29wZW5zc2wvb3NzbF94NTA5YXR0ci5jICAgICAgICB8ICA5ICsrLS0KLSBleHQvb3BlbnNzbC9v c3NsX3g1MDljZXJ0LmMgICAgICAgIHwgMTIgKystLS0KLSBleHQvb3BlbnNzbC9vc3NsX3g1MDlj cmwuYyAgICAgICAgIHwgMTAgKystLQotIGV4dC9vcGVuc3NsL29zc2xfeDUwOWV4dC5jICAgICAg ICAgfCAxOSArKysrKystLQotIGV4dC9vcGVuc3NsL29zc2xfeDUwOW5hbWUuYyAgICAgICAgfCAg NSArLQotIGV4dC9vcGVuc3NsL29zc2xfeDUwOXJlcS5jICAgICAgICAgfCAgNCArLQotIGV4dC9v cGVuc3NsL29zc2xfeDUwOXJldm9rZWQuYyAgICAgfCAgNyArLS0KLSBleHQvb3BlbnNzbC9vc3Ns X3g1MDlzdG9yZS5jICAgICAgIHwgMTAgKystLQotIHRlc3Qvb3BlbnNzbC90ZXN0X29zc2wucmIg ICAgICAgICAgfCAxMCArKysrCi0gdGVzdC9vcGVuc3NsL3Rlc3RfcGtleV9yc2EucmIgICAgICB8 IDc0ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIHRlc3Qvb3BlbnNzbC90ZXN0X3Nz bC5yYiAgICAgICAgICAgfCAgOCArKystCi0gMjMgZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlv bnMoKyksIDExMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9vcGVuc3NsL0hpc3Rv cnkubWQgYi9leHQvb3BlbnNzbC9IaXN0b3J5Lm1kCi1pbmRleCBjNzhjN2U0NjMzNGRkYi4uY2Uw MWIzZTBmMjE1ODkgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9IaXN0b3J5Lm1kCi0rKysgYi9l eHQvb3BlbnNzbC9IaXN0b3J5Lm1kCi1AQCAtMSwzICsxLDkgQEAKLStWZXJzaW9uIDQuMC4yCi0r PT09PT09PT09PT09PQotKwotK01lcmdlZCBjaGFuZ2VzIGluIDMuMi40IGFuZCAzLjMuMy4KLSsK LSsKLSBWZXJzaW9uIDQuMC4xCi0gPT09PT09PT09PT09PQotIAotQEAgLTEwMyw2ICsxMDksMTIg QEAgTm90YWJsZSBjaGFuZ2VzCi0gICBbW0dpdEh1YiAjOTgzXV0oaHR0cHM6Ly9naXRodWIuY29t L3J1Ynkvb3BlbnNzbC9wdWxsLzk4MykKLSAKLSAKLStWZXJzaW9uIDMuMy4zCi0rPT09PT09PT09 PT09PQotKwotK01lcmdlZCBjaGFuZ2VzIGluIDMuMi40LgotKwotKwotIFZlcnNpb24gMy4zLjIK LSA9PT09PT09PT09PT09Ci0gCi1AQCAtMTkxLDYgKzIwMywxNiBAQCBBbmQgdmFyaW91cyBub24t dXNlci12aXNpYmxlIGNoYW5nZXMgYW5kIGJ1ZyBmaXhlcy4gUGxlYXNlIHNlZSB0aGUgY29tbWl0 Ci0gaGlzdG9yeSBmb3IgbW9yZSBkZXRhaWxzLgotIAotIAotK1ZlcnNpb24gMy4yLjQKLSs9PT09 PT09PT09PT09Ci0rCi0rTm90YWJsZSBjaGFuZ2VzCi0rLS0tLS0tLS0tLS0tLS0tCi0rCi0rKiBB ZGQgc3VwcG9ydCBmb3IgT3BlblNTTCA0LjAuCi0rICBbW0dpdEh1YiAjMTA1MV1dKGh0dHBzOi8v Z2l0aHViLmNvbS9ydWJ5L29wZW5zc2wvcHVsbC8xMDUxKQotKwotKwotIFZlcnNpb24gMy4yLjMK LSA9PT09PT09PT09PT09Ci0gCi1kaWZmIC0tZ2l0IGEvZXh0L29wZW5zc2wvZXh0Y29uZi5yYiBi L2V4dC9vcGVuc3NsL2V4dGNvbmYucmIKLWluZGV4IGE4OTdjODZiNjU3ZTljLi4wNmVkNGY2YWMz MzRkZCAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL2V4dGNvbmYucmIKLSsrKyBiL2V4dC9vcGVu c3NsL2V4dGNvbmYucmIKLUBAIC0xNjksNiArMTY5LDkgQEAgZGVmIGZpbmRfb3BlbnNzbF9saWJy YXJ5Ci0gIyBhZGRlZCBpbiAzLjUuMAotIGhhdmVfZnVuYygiU1NMX2dldDBfcGVlcl9zaWduYXR1 cmVfbmFtZShOVUxMLCBOVUxMKSIsIHNzbF9oKQotIAotKyMgYWRkZWQgaW4gNC4wLjAKLStoYXZl X2Z1bmMoIkFTTjFfQklUX1NUUklOR19zZXQxKE5VTEwsIE5VTEwsIDAsIDApIiwgIm9wZW5zc2wv YXNuMS5oIikKLSsKLSBMb2dnaW5nOjptZXNzYWdlICI9PT0gQ2hlY2tpbmcgZG9uZS4gPT09XG4i Ci0gCi0gIyBBcHBlbmQgZmxhZ3MgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi1kaWZmIC0t Z2l0IGEvZXh0L29wZW5zc2wvbGliL29wZW5zc2wvdmVyc2lvbi5yYiBiL2V4dC9vcGVuc3NsL2xp Yi9vcGVuc3NsL3ZlcnNpb24ucmIKLWluZGV4IDQ1YzE1MGJlMTEwNWJhLi4zOTVhNzIwYTMxMzM3 MiAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL2xpYi9vcGVuc3NsL3ZlcnNpb24ucmIKLSsrKyBi L2V4dC9vcGVuc3NsL2xpYi9vcGVuc3NsL3ZlcnNpb24ucmIKLUBAIC0yLDUgKzIsNSBAQAotIAot IG1vZHVsZSBPcGVuU1NMCi0gICAjIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiBSdWJ5L09wZW5TU0wu Ci0tICBWRVJTSU9OID0gIjQuMC4xIgotKyAgVkVSU0lPTiA9ICI0LjAuMiIKLSBlbmQKLWRpZmYg LS1naXQgYS9leHQvb3BlbnNzbC9vcGVuc3NsLmdlbXNwZWMgYi9leHQvb3BlbnNzbC9vcGVuc3Ns LmdlbXNwZWMKLWluZGV4IGM1OTRjNmYxNzc2NTM4Li5hZjE3NzVlM2IwN2I3MSAxMDA2NDQKLS0t LSBhL2V4dC9vcGVuc3NsL29wZW5zc2wuZ2Vtc3BlYwotKysrIGIvZXh0L29wZW5zc2wvb3BlbnNz bC5nZW1zcGVjCi1AQCAtMSw2ICsxLDYgQEAKLSBHZW06OlNwZWNpZmljYXRpb24ubmV3IGRvIHxz cGVjfAotICAgc3BlYy5uYW1lICAgICAgICAgID0gIm9wZW5zc2wiCi0tICBzcGVjLnZlcnNpb24g ICAgICAgPSAiNC4wLjEiCi0rICBzcGVjLnZlcnNpb24gICAgICAgPSAiNC4wLjIiCi0gICBzcGVj LmF1dGhvcnMgICAgICAgPSBbIk1hcnRpbiBCb3NzbGV0IiwgIlNISUJBVEEgSGlyb3NoaSIsICJa YWNoYXJ5IFNjb3R0IiwgIkthenVraSBZYW1hZ3VjaGkiXQotICAgc3BlYy5lbWFpbCAgICAgICAg ID0gWyJydWJ5LWNvcmVAcnVieS1sYW5nLm9yZyJdCi0gICBzcGVjLnN1bW1hcnkgICAgICAgPSAl cXtTU0wvVExTIGFuZCBnZW5lcmFsLXB1cnBvc2UgY3J5cHRvZ3JhcGh5IGZvciBSdWJ5fQotZGlm ZiAtLWdpdCBhL2V4dC9vcGVuc3NsL29wZW5zc2xfbWlzc2luZy5oIGIvZXh0L29wZW5zc2wvb3Bl bnNzbF9taXNzaW5nLmgKLWluZGV4IDY1OTJmOWNjZWFmNzE0Li5lZDNiNWI3YzBmNTYxMSAxMDA2 NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29wZW5zc2xfbWlzc2luZy5oCi0rKysgYi9leHQvb3BlbnNz bC9vcGVuc3NsX21pc3NpbmcuaAotQEAgLTI5LDQgKzI5LDI3IEBACi0gIyAgZGVmaW5lIEVWUF9Q S0VZX2VxKGEsIGIpIEVWUF9QS0VZX2NtcChhLCBiKQotICNlbmRpZgotIAotKy8qIGFkZGVkIGlu IDQuMC4wICovCi0rI2lmbmRlZiBIQVZFX0FTTjFfQklUX1NUUklOR19TRVQxCi0rc3RhdGljIGlu bGluZSBpbnQKLStBU04xX0JJVF9TVFJJTkdfc2V0MShBU04xX0JJVF9TVFJJTkcgKmJpdHN0ciwg Y29uc3QgdWludDhfdCAqZGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3Ro LCBpbnQgdW51c2VkX2JpdHMpCi0rewotKyAgICBpZiAobGVuZ3RoID4gSU5UX01BWCB8fCAhQVNO MV9TVFJJTkdfc2V0KGJpdHN0ciwgZGF0YSwgKGludClsZW5ndGgpKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIGJpdHN0ci0+ZmxhZ3MgJj0gfihBU04xX1NUUklOR19GTEFHX0JJVFNfTEVGVCB8 IDB4MDcpOwotKyAgICBiaXRzdHItPmZsYWdzIHw9IEFTTjFfU1RSSU5HX0ZMQUdfQklUU19MRUZU IHwgdW51c2VkX2JpdHM7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGlu dAotK0FTTjFfQklUX1NUUklOR19nZXRfbGVuZ3RoKGNvbnN0IEFTTjFfQklUX1NUUklORyAqYml0 c3RyLCBzaXplX3QgKmxlbmd0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnVu dXNlZF9iaXRzKQotK3sKLSsgICAgKmxlbmd0aCA9IGJpdHN0ci0+bGVuZ3RoOwotKyAgICAqdW51 c2VkX2JpdHMgPSBiaXRzdHItPmZsYWdzICYgMHgwNzsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKyNl bmRpZgotKwotICNlbmRpZiAvKiBfT1NTTF9PUEVOU1NMX01JU1NJTkdfSF8gKi8KLWRpZmYgLS1n aXQgYS9leHQvb3BlbnNzbC9vc3NsLmMgYi9leHQvb3BlbnNzbC9vc3NsLmMKLWluZGV4IDk4MTI3 ZmNiYTAyMzE0Li41NzE2ZTZmMTAwMjgyMCAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29zc2wu YwotKysrIGIvZXh0L29wZW5zc2wvb3NzbC5jCi1AQCAtMzQsNyArMzQsMTEgQEAgb3NzbF8jI25h bWUjI19hcnkyc2swKFZBTFVFIGFyeSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICIgb2YgY2xhc3MgIyN0eXBlIyMiKTsgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICB4ID0gZHVwKHZhbCk7IC8qIE5FRUQgVE8g RFVQICovICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHNrXyMjdHlwZSMjX3B1 c2goc2ssIHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgaWYg KCFza18jI3R5cGUjI19wdXNoKHNrLCB4KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgICAgICAgICAgdHlwZSMjX2ZyZWUoeCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICBza18jI3R5cGUjI19wb3BfZnJlZShzaywgdHlwZSMjX2Zy ZWUpOyAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIG9zc2xfcmFpc2UoZU9TU0xFcnJvciwg TlVMTCk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICB9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgfSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICByZXR1cm4gKFZBTFVFKXNrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLUBAIC01MjMsMTAgKzUyNywxOCBAQCBvc3NsX2ZpcHNfbW9kZV9z ZXQoVkFMVUUgc2VsZiwgVkFMVUUgZW5hYmxlZCkKLSBzdGF0aWMgVkFMVUUKLSBvc3NsX2NyeXB0 b19maXhlZF9sZW5ndGhfc2VjdXJlX2NvbXBhcmUoVkFMVUUgZHVtbXksIFZBTFVFIHN0cjEsIFZB TFVFIHN0cjIpCi0gewotLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwMSA9IChjb25zdCB1bnNp Z25lZCBjaGFyICopU3RyaW5nVmFsdWVQdHIoc3RyMSk7Ci0tICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKnAyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilTdHJpbmdWYWx1ZVB0cihzdHIyKTsKLS0g ICAgbG9uZyBsZW4xID0gUlNUUklOR19MRU4oc3RyMSk7Ci0tICAgIGxvbmcgbGVuMiA9IFJTVFJJ TkdfTEVOKHN0cjIpOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwMTsKLSsgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqcDI7Ci0rICAgIGxvbmcgbGVuMTsKLSsgICAgbG9uZyBsZW4yOwotKwot KyAgICBTdHJpbmdWYWx1ZShzdHIxKTsKLSsgICAgU3RyaW5nVmFsdWUoc3RyMik7Ci0rCi0rICAg IHAxID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilSU1RSSU5HX1BUUihzdHIxKTsKLSsgICAgcDIg PSAoY29uc3QgdW5zaWduZWQgY2hhciAqKVJTVFJJTkdfUFRSKHN0cjIpOwotKyAgICBsZW4xID0g UlNUUklOR19MRU4oc3RyMSk7Ci0rICAgIGxlbjIgPSBSU1RSSU5HX0xFTihzdHIyKTsKLSAKLSAg ICAgaWYgKGxlbjEgIT0gbGVuMikgewotICAgICAgICAgb3NzbF9yYWlzZShyYl9lQXJnRXJyb3Is ICJpbnB1dHMgbXVzdCBiZSBvZiBlcXVhbCBsZW5ndGgiKTsKLWRpZmYgLS1naXQgYS9leHQvb3Bl bnNzbC9vc3NsX2FzbjEuYyBiL2V4dC9vcGVuc3NsL29zc2xfYXNuMS5jCi1pbmRleCA3MWE4N2Yw NDYzNmM5OC4uNjdjMDNiN2Y5OGE5NTIgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9vc3NsX2Fz bjEuYwotKysrIGIvZXh0L29wZW5zc2wvb3NzbF9hc24xLmMKLUBAIC0xMzAsMTUgKzEzMCwxNyBA QCBhc24xaW50ZWdlcl90b19udW0oY29uc3QgQVNOMV9JTlRFR0VSICphaSkKLSAgICAgaWYgKCFh aSkgewotICAgICAgICAgb3NzbF9yYWlzZShyYl9lVHlwZUVycm9yLCAiQVNOMV9JTlRFR0VSIGlz IE5VTEwhIik7Ci0gICAgIH0KLSsKLSsgICAgbnVtID0gb3NzbF9ibl9uZXcoQk5fdmFsdWVfb25l KCkpOwotKyAgICBibiA9IEdldEJOUHRyKG51bSk7Ci0rCi0gICAgIGlmIChBU04xX1NUUklOR190 eXBlKGFpKSA9PSBWX0FTTjFfRU5VTUVSQVRFRCkKLS0gICAgICAgIGJuID0gQVNOMV9FTlVNRVJB VEVEX3RvX0JOKGFpLCBOVUxMKTsKLSsgICAgICAgIGJuID0gQVNOMV9FTlVNRVJBVEVEX3RvX0JO KGFpLCBibik7Ci0gICAgIGVsc2UKLS0gICAgICAgIGJuID0gQVNOMV9JTlRFR0VSX3RvX0JOKGFp LCBOVUxMKTsKLSsgICAgICAgIGJuID0gQVNOMV9JTlRFR0VSX3RvX0JOKGFpLCBibik7Ci0gCi0g ICAgIGlmICghYm4pCi0gICAgICAgICBvc3NsX3JhaXNlKGVPU1NMRXJyb3IsIE5VTEwpOwotLSAg ICBudW0gPSBvc3NsX2JuX25ldyhibik7Ci0tICAgIEJOX2ZyZWUoYm4pOwotIAotICAgICByZXR1 cm4gbnVtOwotIH0KLUBAIC0yMjYsNyArMjI4LDcgQEAgb2JqX3RvX2FzbjFpbnQoVkFMVUUgb2Jq KQotIH0KLSAKLSBzdGF0aWMgQVNOMV9CSVRfU1RSSU5HKgotLW9ial90b19hc24xYnN0cihWQUxV RSBvYmosIGxvbmcgdW51c2VkX2JpdHMpCi0rb2JqX3RvX2FzbjFic3RyKFZBTFVFIG9iaiwgaW50 IHVudXNlZF9iaXRzKQotIHsKLSAgICAgQVNOMV9CSVRfU1RSSU5HICpic3RyOwotIAotQEAgLTIz NCwxMSArMjM2LDExIEBAIG9ial90b19hc24xYnN0cihWQUxVRSBvYmosIGxvbmcgdW51c2VkX2Jp dHMpCi0gICAgICAgICBvc3NsX3JhaXNlKGVBU04xRXJyb3IsICJ1bnVzZWRfYml0cyBmb3IgYSBi aXRzdHJpbmcgdmFsdWUgbXVzdCBiZSBpbiAiXAotICAgICAgICAgICAgICAgICAgICAidGhlIHJh bmdlIDAgdG8gNyIpOwotICAgICBTdHJpbmdWYWx1ZShvYmopOwotLSAgICBpZighKGJzdHIgPSBB U04xX0JJVF9TVFJJTkdfbmV3KCkpKQotLSAgICAgICAgb3NzbF9yYWlzZShlQVNOMUVycm9yLCBO VUxMKTsKLS0gICAgQVNOMV9CSVRfU1RSSU5HX3NldChic3RyLCAodW5zaWduZWQgY2hhciAqKVJT VFJJTkdfUFRSKG9iaiksIFJTVFJJTkdfTEVOSU5UKG9iaikpOwotLSAgICBic3RyLT5mbGFncyAm PSB+KEFTTjFfU1RSSU5HX0ZMQUdfQklUU19MRUZUfDB4MDcpOyAvKiBjbGVhciAqLwotLSAgICBi c3RyLT5mbGFncyB8PSBBU04xX1NUUklOR19GTEFHX0JJVFNfTEVGVCB8IHVudXNlZF9iaXRzOwot KyAgICBpZiAoIShic3RyID0gQVNOMV9CSVRfU1RSSU5HX25ldygpKSkKLSsgICAgICAgIG9zc2xf cmFpc2UoZUFTTjFFcnJvciwgIkFTTjFfQklUX1NUUklOR19uZXciKTsKLSsgICAgaWYgKCFBU04x X0JJVF9TVFJJTkdfc2V0MShic3RyLCAodWludDhfdCAqKVJTVFJJTkdfUFRSKG9iaiksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNUUklOR19MRU4ob2JqKSwgdW51c2VkX2JpdHMp KQotKyAgICAgICAgb3NzbF9yYWlzZShlQVNOMUVycm9yLCAiQVNOMV9CSVRfU1RSSU5HX3NldDEi KTsKLSAKLSAgICAgcmV0dXJuIGJzdHI7Ci0gfQotQEAgLTM2MiwyMiArMzY0LDI1IEBAIGRlY29k ZV9pbnQodW5zaWduZWQgY2hhciogZGVyLCBsb25nIGxlbmd0aCkKLSB9Ci0gCi0gc3RhdGljIFZB TFVFCi0tZGVjb2RlX2JzdHIodW5zaWduZWQgY2hhciogZGVyLCBsb25nIGxlbmd0aCwgbG9uZyAq dW51c2VkX2JpdHMpCi0rZGVjb2RlX2JzdHIodW5zaWduZWQgY2hhciogZGVyLCBsb25nIGxlbmd0 aCwgaW50ICp1bnVzZWRfYml0cykKLSB7Ci0gICAgIEFTTjFfQklUX1NUUklORyAqYnN0cjsKLSAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqcDsKLS0gICAgbG9uZyBsZW47Ci0rICAgIHNpemVfdCBs ZW47Ci0gICAgIFZBTFVFIHJldDsKLSsgICAgaW50IHN0YXRlOwotIAotICAgICBwID0gZGVyOwot LSAgICBpZighKGJzdHIgPSBkMmlfQVNOMV9CSVRfU1RSSU5HKE5VTEwsICZwLCBsZW5ndGgpKSkK LS0gICAgICAgIG9zc2xfcmFpc2UoZUFTTjFFcnJvciwgTlVMTCk7Ci0tICAgIGxlbiA9IGJzdHIt Pmxlbmd0aDsKLS0gICAgKnVudXNlZF9iaXRzID0gMDsKLS0gICAgaWYoYnN0ci0+ZmxhZ3MgJiBB U04xX1NUUklOR19GTEFHX0JJVFNfTEVGVCkKLS0gICAgICAgICp1bnVzZWRfYml0cyA9IGJzdHIt PmZsYWdzICYgMHgwNzsKLS0gICAgcmV0ID0gcmJfc3RyX25ldygoY29uc3QgY2hhciAqKWJzdHIt PmRhdGEsIGxlbik7Ci0rICAgIGlmICghKGJzdHIgPSBkMmlfQVNOMV9CSVRfU1RSSU5HKE5VTEws ICZwLCBsZW5ndGgpKSkKLSsgICAgICAgIG9zc2xfcmFpc2UoZUFTTjFFcnJvciwgImQyaV9BU04x X0JJVF9TVFJJTkciKTsKLSsgICAgaWYgKCFBU04xX0JJVF9TVFJJTkdfZ2V0X2xlbmd0aChic3Ry LCAmbGVuLCB1bnVzZWRfYml0cykpIHsKLSsgICAgICAgIEFTTjFfQklUX1NUUklOR19mcmVlKGJz dHIpOwotKyAgICAgICAgb3NzbF9yYWlzZShlQVNOMUVycm9yLCAiQVNOMV9CSVRfU1RSSU5HX2dl dF9sZW5ndGgiKTsKLSsgICAgfQotKyAgICByZXQgPSBvc3NsX3N0cl9uZXcoKGNvbnN0IGNoYXIg KilBU04xX1NUUklOR19nZXQwX2RhdGEoYnN0ciksIGxlbiwgJnN0YXRlKTsKLSAgICAgQVNOMV9C SVRfU1RSSU5HX2ZyZWUoYnN0cik7Ci0rICAgIGlmIChzdGF0ZSkKLSsgICAgICAgIHJiX2p1bXBf dGFnKHN0YXRlKTsKLSAKLSAgICAgcmV0dXJuIHJldDsKLSB9Ci1AQCAtNzYxLDcgKzc2Niw3IEBA IGludF9vc3NsX2FzbjFfZGVjb2RlMF9wcmltKHVuc2lnbmVkIGNoYXIgKipwcCwgbG9uZyBsZW5n dGgsIGxvbmcgaGxlbiwgaW50IHRhZywKLSB7Ci0gICAgIFZBTFVFIHZhbHVlLCBhc24xZGF0YTsK LSAgICAgdW5zaWduZWQgY2hhciAqcDsKLS0gICAgbG9uZyBmbGFnID0gMDsKLSsgICAgaW50IGZs YWcgPSAwOwotIAotICAgICBwID0gKnBwOwotIAotQEAgLTgxOCw3ICs4MjMsNyBAQCBpbnRfb3Nz bF9hc24xX2RlY29kZTBfcHJpbSh1bnNpZ25lZCBjaGFyICoqcHAsIGxvbmcgbGVuZ3RoLCBsb25n IGhsZW4sIGludCB0YWcsCi0gICAgICAgICBhc24xZGF0YSA9IHJiX29ial9hbGxvYyhrbGFzcyk7 Ci0gICAgICAgICBvc3NsX2FzbjFfaW5pdGlhbGl6ZSg0LCBhcmdzLCBhc24xZGF0YSk7Ci0gICAg ICAgICBpZih0YWcgPT0gVl9BU04xX0JJVF9TVFJJTkcpewotLSAgICAgICAgICAgIHJiX2l2YXJf c2V0KGFzbjFkYXRhLCBzaXZVTlVTRURfQklUUywgTE9ORzJOVU0oZmxhZykpOwotKyAgICAgICAg ICAgIHJiX2l2YXJfc2V0KGFzbjFkYXRhLCBzaXZVTlVTRURfQklUUywgSU5UMk5VTShmbGFnKSk7 Ci0gICAgICAgICB9Ci0gICAgIH0KLSAgICAgZWxzZSB7Ci1kaWZmIC0tZ2l0IGEvZXh0L29wZW5z c2wvb3NzbF9iaW8uYyBiL2V4dC9vcGVuc3NsL29zc2xfYmlvLmMKLWluZGV4IDRlZGRlNTA5MWQw OTMzLi5jYzAzYzVkNWY3MjBlYiAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29zc2xfYmlvLmMK LSsrKyBiL2V4dC9vcGVuc3NsL29zc2xfYmlvLmMKLUBAIC0zMiw3ICszMiwxMSBAQCBvc3NsX21l bWJpbzJzdHIoQklPICpiaW8pCi0gICAgIGludCBzdGF0ZTsKLSAgICAgQlVGX01FTSAqYnVmOwot IAotLSAgICBCSU9fZ2V0X21lbV9wdHIoYmlvLCAmYnVmKTsKLSsgICAgaWYgKEJJT19nZXRfbWVt X3B0cihiaW8sICZidWYpIDw9IDApIHsKLSsgICAgICAgIEJJT19mcmVlKGJpbyk7Ci0rICAgICAg ICBvc3NsX3JhaXNlKGVPU1NMRXJyb3IsICJCSU9fZ2V0X21lbV9wdHIiKTsKLSsgICAgfQotKwot ICAgICByZXQgPSBvc3NsX3N0cl9uZXcoYnVmLT5kYXRhLCBidWYtPmxlbmd0aCwgJnN0YXRlKTsK LSAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICAgaWYgKHN0YXRlKQotZGlmZiAtLWdpdCBhL2V4dC9v cGVuc3NsL29zc2xfb2NzcC5jIGIvZXh0L29wZW5zc2wvb3NzbF9vY3NwLmMKLWluZGV4IGRkYjY3 ZmNmMDdhN2NlLi45ZGQ0YjQ2NmQyODQ0MyAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29zc2xf b2NzcC5jCi0rKysgYi9leHQvb3BlbnNzbC9vc3NsX29jc3AuYwotQEAgLTkyMiw3ICs5MjIsNyBA QCBvc3NsX29jc3BicmVzX2dldF9zdGF0dXMoVkFMVUUgc2VsZikKLSAgICAgICAgIFZBTFVFIGV4 dCA9IHJiX2FyeV9uZXcoKTsKLSAgICAgICAgIGludCBleHRfY291bnQgPSBPQ1NQX1NJTkdMRVJF U1BfZ2V0X2V4dF9jb3VudChzaW5nbGUpOwotICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBl eHRfY291bnQ7IGorKykgewotLSAgICAgICAgICAgIFg1MDlfRVhURU5TSU9OICp4NTA5ZXh0ID0g T0NTUF9TSU5HTEVSRVNQX2dldF9leHQoc2luZ2xlLCBqKTsKLSsgICAgICAgICAgICBjb25zdCBY NTA5X0VYVEVOU0lPTiAqeDUwOWV4dCA9IE9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0KHNpbmdsZSwg aik7Ci0gICAgICAgICAgICAgcmJfYXJ5X3B1c2goZXh0LCBvc3NsX3g1MDlleHRfbmV3KHg1MDll eHQpKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJiX2FyeV9wdXNoKGFyeSwgZXh0KTsKLUBAIC0x MzQxLDcgKzEzNDEsNiBAQCBzdGF0aWMgVkFMVUUKLSBvc3NsX29jc3BzcmVzX2dldF9leHRlbnNp b25zKFZBTFVFIHNlbGYpCi0gewotICAgICBPQ1NQX1NJTkdMRVJFU1AgKnNyZXM7Ci0tICAgIFg1 MDlfRVhURU5TSU9OICpleHQ7Ci0gICAgIGludCBjb3VudCwgaTsKLSAgICAgVkFMVUUgYXJ5Owot IAotQEAgLTEzNTAsNyArMTM0OSw3IEBAIG9zc2xfb2NzcHNyZXNfZ2V0X2V4dGVuc2lvbnMoVkFM VUUgc2VsZikKLSAgICAgY291bnQgPSBPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9jb3VudChzcmVz KTsKLSAgICAgYXJ5ID0gcmJfYXJ5X25ldzIoY291bnQpOwotICAgICBmb3IgKGkgPSAwOyBpIDwg Y291bnQ7IGkrKykgewotLSAgICAgICAgZXh0ID0gT0NTUF9TSU5HTEVSRVNQX2dldF9leHQoc3Jl cywgaSk7Ci0rICAgICAgICBjb25zdCBYNTA5X0VYVEVOU0lPTiAqZXh0ID0gT0NTUF9TSU5HTEVS RVNQX2dldF9leHQoc3JlcywgaSk7Ci0gICAgICAgICByYl9hcnlfcHVzaChhcnksIG9zc2xfeDUw OWV4dF9uZXcoZXh0KSk7IC8qIHdpbGwgZHVwICovCi0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS9l eHQvb3BlbnNzbC9vc3NsX3BrZXkuaCBiL2V4dC9vcGVuc3NsL29zc2xfcGtleS5oCi1pbmRleCAw MjMzNjFiOTBmMjMwNi4uZWZiYTMzYjc1MjkzNzMgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9v c3NsX3BrZXkuaAotKysrIGIvZXh0L29wZW5zc2wvb3NzbF9wa2V5LmgKLUBAIC03MSw3ICs3MSw2 IEBAIHZvaWQgSW5pdF9vc3NsX2RoKHZvaWQpOwotICAqIEVDCi0gICovCi0gZXh0ZXJuIFZBTFVF IGNFQzsKLS1WQUxVRSBvc3NsX2VjX25ldyhFVlBfUEtFWSAqKTsKLSB2b2lkIEluaXRfb3NzbF9l Yyh2b2lkKTsKLSAKLSAjZGVmaW5lIE9TU0xfUEtFWV9CTl9ERUZfR0VUVEVSMChfa2V5dHlwZSwg X3R5cGUsIF9uYW1lLCBfZ2V0KSAgICAgICAgICBcCi1kaWZmIC0tZ2l0IGEvZXh0L29wZW5zc2wv b3NzbF90cy5jIGIvZXh0L29wZW5zc2wvb3NzbF90cy5jCi1pbmRleCBiMzFhODU0YTYzZTlhYy4u MzkzZTA4YWNmZjBjMWUgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9vc3NsX3RzLmMKLSsrKyBi L2V4dC9vcGVuc3NsL29zc2xfdHMuYwotQEAgLTcwNiw3ICs3MDYsNyBAQCBvc3NsX3RzX3Jlc3Bf Z2V0X3RzYV9jZXJ0aWZpY2F0ZShWQUxVRSBzZWxmKQotICAgICBUU19SRVNQICpyZXNwOwotICAg ICBQS0NTNyAqcDc7Ci0gICAgIFBLQ1M3X1NJR05FUl9JTkZPICp0c19pbmZvOwotLSAgICBYNTA5 ICpjZXJ0OwotKyAgICBjb25zdCBYNTA5ICpjZXJ0OwotIAotICAgICBHZXRUU1Jlc3BvbnNlKHNl bGYsIHJlc3ApOwotICAgICBpZiAoIShwNyA9IFRTX1JFU1BfZ2V0X3Rva2VuKHJlc3ApKSkKLWRp ZmYgLS1naXQgYS9leHQvb3BlbnNzbC9vc3NsX3g1MDkuaCBiL2V4dC9vcGVuc3NsL29zc2xfeDUw OS5oCi1pbmRleCBkMjUxNjdlZTdiMDg2OC4uNzE5MzJlZjFhOWE2NDcgMTAwNjQ0Ci0tLS0gYS9l eHQvb3BlbnNzbC9vc3NsX3g1MDkuaAotKysrIGIvZXh0L29wZW5zc2wvb3NzbF94NTA5LmgKLUBA IC0yOSw3ICsyOSw3IEBAIHZvaWQgSW5pdF9vc3NsX3g1MDkodm9pZCk7Ci0gICovCi0gZXh0ZXJu IFZBTFVFIGNYNTA5QXR0cjsKLSAKLS1WQUxVRSBvc3NsX3g1MDlhdHRyX25ldyhYNTA5X0FUVFJJ QlVURSAqKTsKLStWQUxVRSBvc3NsX3g1MDlhdHRyX25ldyhjb25zdCBYNTA5X0FUVFJJQlVURSAq KTsKLSBYNTA5X0FUVFJJQlVURSAqR2V0WDUwOUF0dHJQdHIoVkFMVUUpOwotIHZvaWQgSW5pdF9v c3NsX3g1MDlhdHRyKHZvaWQpOwotIAotQEAgLTM4LDcgKzM4LDcgQEAgdm9pZCBJbml0X29zc2xf eDUwOWF0dHIodm9pZCk7Ci0gICovCi0gZXh0ZXJuIFZBTFVFIGNYNTA5Q2VydDsKLSAKLS1WQUxV RSBvc3NsX3g1MDlfbmV3KFg1MDkgKik7Ci0rVkFMVUUgb3NzbF94NTA5X25ldyhjb25zdCBYNTA5 ICopOwotIFg1MDkgKkdldFg1MDlDZXJ0UHRyKFZBTFVFKTsKLSBYNTA5ICpEdXBYNTA5Q2VydFB0 cihWQUxVRSk7Ci0gdm9pZCBJbml0X29zc2xfeDUwOWNlcnQodm9pZCk7Ci1AQCAtNDYsNyArNDYs NyBAQCB2b2lkIEluaXRfb3NzbF94NTA5Y2VydCh2b2lkKTsKLSAvKgotICAqIFg1MDlDUkwKLSAg Ki8KLS1WQUxVRSBvc3NsX3g1MDljcmxfbmV3KFg1MDlfQ1JMICopOwotK1ZBTFVFIG9zc2xfeDUw OWNybF9uZXcoY29uc3QgWDUwOV9DUkwgKik7Ci0gWDUwOV9DUkwgKkdldFg1MDlDUkxQdHIoVkFM VUUpOwotIHZvaWQgSW5pdF9vc3NsX3g1MDljcmwodm9pZCk7Ci0gCi1AQCAtNTUsMTQgKzU1LDE0 IEBAIHZvaWQgSW5pdF9vc3NsX3g1MDljcmwodm9pZCk7Ci0gICovCi0gZXh0ZXJuIFZBTFVFIGNY NTA5RXh0OwotIAotLVZBTFVFIG9zc2xfeDUwOWV4dF9uZXcoWDUwOV9FWFRFTlNJT04gKik7Ci0r VkFMVUUgb3NzbF94NTA5ZXh0X25ldyhjb25zdCBYNTA5X0VYVEVOU0lPTiAqKTsKLSBYNTA5X0VY VEVOU0lPTiAqR2V0WDUwOUV4dFB0cihWQUxVRSk7Ci0gdm9pZCBJbml0X29zc2xfeDUwOWV4dCh2 b2lkKTsKLSAKLSAvKgotICAqIFg1MDlOYW1lCi0gICovCi0tVkFMVUUgb3NzbF94NTA5bmFtZV9u ZXcoWDUwOV9OQU1FICopOwotK1ZBTFVFIG9zc2xfeDUwOW5hbWVfbmV3KGNvbnN0IFg1MDlfTkFN RSAqKTsKLSBYNTA5X05BTUUgKkdldFg1MDlOYW1lUHRyKFZBTFVFKTsKLSB2b2lkIEluaXRfb3Nz bF94NTA5bmFtZSh2b2lkKTsKLSAKLUBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgSW5pdF9vc3NsX3g1 MDlyZXEodm9pZCk7Ci0gICovCi0gZXh0ZXJuIFZBTFVFIGNYNTA5UmV2OwotIAotLVZBTFVFIG9z c2xfeDUwOXJldm9rZWRfbmV3KFg1MDlfUkVWT0tFRCAqKTsKLStWQUxVRSBvc3NsX3g1MDlyZXZv a2VkX25ldyhjb25zdCBYNTA5X1JFVk9LRUQgKik7Ci0gWDUwOV9SRVZPS0VEICpEdXBYNTA5UmV2 b2tlZFB0cihWQUxVRSk7Ci0gdm9pZCBJbml0X29zc2xfeDUwOXJldm9rZWQodm9pZCk7Ci0gCi1k aWZmIC0tZ2l0IGEvZXh0L29wZW5zc2wvb3NzbF94NTA5YXR0ci5jIGIvZXh0L29wZW5zc2wvb3Nz bF94NTA5YXR0ci5jCi1pbmRleCA0NzY5ZTU2ZTFlODUwMS4uYjA3NzNlN2E3ZGNhMjggMTAwNjQ0 Ci0tLS0gYS9leHQvb3BlbnNzbC9vc3NsX3g1MDlhdHRyLmMKLSsrKyBiL2V4dC9vcGVuc3NsL29z c2xfeDUwOWF0dHIuYwotQEAgLTQ4LDEzICs0OCwxNCBAQCBzdGF0aWMgY29uc3QgcmJfZGF0YV90 eXBlX3Qgb3NzbF94NTA5YXR0cl90eXBlID0gewotICAqIFB1YmxpYwotICAqLwotIFZBTFVFCi0t b3NzbF94NTA5YXR0cl9uZXcoWDUwOV9BVFRSSUJVVEUgKmF0dHIpCi0rb3NzbF94NTA5YXR0cl9u ZXcoY29uc3QgWDUwOV9BVFRSSUJVVEUgKmF0dHIpCi0gewotICAgICBYNTA5X0FUVFJJQlVURSAq bmV3OwotICAgICBWQUxVRSBvYmo7Ci0gCi0gICAgIG9iaiA9IE5ld1g1MDlBdHRyKGNYNTA5QXR0 cik7Ci0tICAgIG5ldyA9IFg1MDlfQVRUUklCVVRFX2R1cChhdHRyKTsKLSsgICAgLyogT3BlblNT TCAxLjEuMSB0YWtlcyBhIG5vbi1jb25zdCBwb2ludGVyICovCi0rICAgIG5ldyA9IFg1MDlfQVRU UklCVVRFX2R1cCgoWDUwOV9BVFRSSUJVVEUgKilhdHRyKTsKLSAgICAgaWYgKCFuZXcpCi0gICAg ICAgICBvc3NsX3JhaXNlKGVYNTA5QXR0ckVycm9yLCAiWDUwOV9BVFRSSUJVVEVfZHVwIik7Ci0g ICAgIFNldFg1MDlBdHRyKG9iaiwgbmV3KTsKLUBAIC0xOTYsNyArMTk3LDcgQEAgb3NzbF94NTA5 YXR0cl9zZXRfdmFsdWUoVkFMVUUgc2VsZiwgVkFMVUUgdmFsdWUpCi0gICAgICAgICBvc3NsX3Jh aXNlKGVYNTA5QXR0ckVycm9yLCAiYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgQVNOMTo6U2V0Iik7 Ci0gCi0gICAgIGlmIChYNTA5X0FUVFJJQlVURV9jb3VudChhdHRyKSkgeyAvKiBwb3B1bGF0ZWQs IHJlc2V0IGZpcnN0ICovCi0tICAgICAgICBBU04xX09CSkVDVCAqb2JqID0gWDUwOV9BVFRSSUJV VEVfZ2V0MF9vYmplY3QoYXR0cik7Ci0rICAgICAgICBjb25zdCBBU04xX09CSkVDVCAqb2JqID0g WDUwOV9BVFRSSUJVVEVfZ2V0MF9vYmplY3QoYXR0cik7Ci0gICAgICAgICBYNTA5X0FUVFJJQlVU RSAqbmV3X2F0dHIgPSBYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfT0JKKE5VTEwsIG9iaiwgMCwg TlVMTCwgLTEpOwotICAgICAgICAgaWYgKCFuZXdfYXR0cikgewotICAgICAgICAgICAgIHNrX0FT TjFfVFlQRV9wb3BfZnJlZShzaywgQVNOMV9UWVBFX2ZyZWUpOwotQEAgLTI0MCw3ICsyNDEsNyBA QCBvc3NsX3g1MDlhdHRyX2dldF92YWx1ZShWQUxVRSBzZWxmKQotIAotICAgICBjb3VudCA9IFg1 MDlfQVRUUklCVVRFX2NvdW50KGF0dHIpOwotICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr KykKLS0gICAgICAgIHNrX0FTTjFfVFlQRV9wdXNoKHNrLCBYNTA5X0FUVFJJQlVURV9nZXQwX3R5 cGUoYXR0ciwgaSkpOwotKyAgICAgICAgc2tfQVNOMV9UWVBFX3B1c2goc2ssIChBU04xX1RZUEUg KilYNTA5X0FUVFJJQlVURV9nZXQwX3R5cGUoYXR0ciwgaSkpOwotIAotICAgICBpZiAoKGxlbiA9 IGkyZF9BU04xX1NFVF9BTlkoc2ssIE5VTEwpKSA8PSAwKSB7Ci0gICAgICAgICBza19BU04xX1RZ UEVfZnJlZShzayk7Ci1kaWZmIC0tZ2l0IGEvZXh0L29wZW5zc2wvb3NzbF94NTA5Y2VydC5jIGIv ZXh0L29wZW5zc2wvb3NzbF94NTA5Y2VydC5jCi1pbmRleCA5NTY3OWM3ZDI0ZWE3Mi4uZGUyNDY3 NTlhYjdhZjMgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9vc3NsX3g1MDljZXJ0LmMKLSsrKyBi L2V4dC9vcGVuc3NsL29zc2xfeDUwOWNlcnQuYwotQEAgLTQ4LDEzICs0OCwxNCBAQCBzdGF0aWMg Y29uc3QgcmJfZGF0YV90eXBlX3Qgb3NzbF94NTA5X3R5cGUgPSB7Ci0gICogUHVibGljCi0gICov Ci0gVkFMVUUKLS1vc3NsX3g1MDlfbmV3KFg1MDkgKng1MDkpCi0rb3NzbF94NTA5X25ldyhjb25z dCBYNTA5ICp4NTA5KQotIHsKLSAgICAgWDUwOSAqbmV3OwotICAgICBWQUxVRSBvYmo7Ci0gCi0g ICAgIG9iaiA9IE5ld1g1MDkoY1g1MDlDZXJ0KTsKLS0gICAgbmV3ID0gWDUwOV9kdXAoeDUwOSk7 Ci0rICAgIC8qIE9wZW5TU0wgMS4xLjEgdGFrZXMgYSBub24tY29uc3QgcG9pbnRlciAqLwotKyAg ICBuZXcgPSBYNTA5X2R1cCgoWDUwOSAqKXg1MDkpOwotICAgICBpZiAoIW5ldykKLSAgICAgICAg IG9zc2xfcmFpc2UoZVg1MDlDZXJ0RXJyb3IsICJYNTA5X2R1cCIpOwotICAgICBTZXRYNTA5KG9i aiwgbmV3KTsKLUBAIC0zNDUsNyArMzQ2LDcgQEAgc3RhdGljIFZBTFVFCi0gb3NzbF94NTA5X2dl dF9zdWJqZWN0KFZBTFVFIHNlbGYpCi0gewotICAgICBYNTA5ICp4NTA5OwotLSAgICBYNTA5X05B TUUgKm5hbWU7Ci0rICAgIGNvbnN0IFg1MDlfTkFNRSAqbmFtZTsKLSAKLSAgICAgR2V0WDUwOShz ZWxmLCB4NTA5KTsKLSAgICAgaWYgKCEobmFtZSA9IFg1MDlfZ2V0X3N1YmplY3RfbmFtZSh4NTA5 KSkpIHsgLyogTk8gRFVQIC0gZG9uJ3QgZnJlZSEgKi8KLUBAIC0zODAsNyArMzgxLDcgQEAgc3Rh dGljIFZBTFVFCi0gb3NzbF94NTA5X2dldF9pc3N1ZXIoVkFMVUUgc2VsZikKLSB7Ci0gICAgIFg1 MDkgKng1MDk7Ci0tICAgIFg1MDlfTkFNRSAqbmFtZTsKLSsgICAgY29uc3QgWDUwOV9OQU1FICpu YW1lOwotIAotICAgICBHZXRYNTA5KHNlbGYsIHg1MDkpOwotICAgICBpZighKG5hbWUgPSBYNTA5 X2dldF9pc3N1ZXJfbmFtZSh4NTA5KSkpIHsgLyogTk8gRFVQIC0gZG9uJ3QgZnJlZSEgKi8KLUBA IC02MDMsMTQgKzYwNCwxMyBAQCBvc3NsX3g1MDlfZ2V0X2V4dGVuc2lvbnMoVkFMVUUgc2VsZikK LSB7Ci0gICAgIFg1MDkgKng1MDk7Ci0gICAgIGludCBjb3VudCwgaTsKLS0gICAgWDUwOV9FWFRF TlNJT04gKmV4dDsKLSAgICAgVkFMVUUgYXJ5OwotIAotICAgICBHZXRYNTA5KHNlbGYsIHg1MDkp OwotICAgICBjb3VudCA9IFg1MDlfZ2V0X2V4dF9jb3VudCh4NTA5KTsKLSAgICAgYXJ5ID0gcmJf YXJ5X25ld19jYXBhKGNvdW50KTsKLSAgICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotLSAg ICAgICAgZXh0ID0gWDUwOV9nZXRfZXh0KHg1MDksIGkpOyAvKiBOTyBEVVAgLSBkb24ndCBmcmVl ISAqLwotKyAgICAgICAgY29uc3QgWDUwOV9FWFRFTlNJT04gKmV4dCA9IFg1MDlfZ2V0X2V4dCh4 NTA5LCBpKTsKLSAgICAgICAgIHJiX2FyeV9wdXNoKGFyeSwgb3NzbF94NTA5ZXh0X25ldyhleHQp KTsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2V4dC9vcGVuc3NsL29zc2xfeDUwOWNybC5jIGIv ZXh0L29wZW5zc2wvb3NzbF94NTA5Y3JsLmMKLWluZGV4IGEyMjE0MjljMzQ3ZDVlLi45YjU5YmRh OWUyYThhZCAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29zc2xfeDUwOWNybC5jCi0rKysgYi9l eHQvb3BlbnNzbC9vc3NsX3g1MDljcmwuYwotQEAgLTU4LDEzICs1OCwxNCBAQCBHZXRYNTA5Q1JM UHRyKFZBTFVFIG9iaikKLSB9Ci0gCi0gVkFMVUUKLS1vc3NsX3g1MDljcmxfbmV3KFg1MDlfQ1JM ICpjcmwpCi0rb3NzbF94NTA5Y3JsX25ldyhjb25zdCBYNTA5X0NSTCAqY3JsKQotIHsKLSAgICAg WDUwOV9DUkwgKnRtcDsKLSAgICAgVkFMVUUgb2JqOwotIAotICAgICBvYmogPSBOZXdYNTA5Q1JM KGNYNTA5Q1JMKTsKLS0gICAgdG1wID0gWDUwOV9DUkxfZHVwKGNybCk7Ci0rICAgIC8qIE9wZW5T U0wgMS4xLjEgdGFrZXMgYSBub24tY29uc3QgcG9pbnRlciAqLwotKyAgICB0bXAgPSBYNTA5X0NS TF9kdXAoKFg1MDlfQ1JMICopY3JsKTsKLSAgICAgaWYgKCF0bXApCi0gICAgICAgICBvc3NsX3Jh aXNlKGVYNTA5Q1JMRXJyb3IsICJYNTA5X0NSTF9kdXAiKTsKLSAgICAgU2V0WDUwOUNSTChvYmos IHRtcCk7Ci1AQCAtMjg5LDcgKzI5MCw3IEBAIG9zc2xfeDUwOWNybF9nZXRfcmV2b2tlZChWQUxV RSBzZWxmKQotICAgICBudW0gPSBza19YNTA5X1JFVk9LRURfbnVtKHNrKTsKLSAgICAgYXJ5ID0g cmJfYXJ5X25ld19jYXBhKG51bSk7Ci0gICAgIGZvcihpPTA7IGk8bnVtOyBpKyspIHsKLS0gICAg ICAgIFg1MDlfUkVWT0tFRCAqcmV2ID0gc2tfWDUwOV9SRVZPS0VEX3ZhbHVlKHNrLCBpKTsKLSsg ICAgICAgIGNvbnN0IFg1MDlfUkVWT0tFRCAqcmV2ID0gc2tfWDUwOV9SRVZPS0VEX3ZhbHVlKHNr LCBpKTsKLSAgICAgICAgIHJiX2FyeV9wdXNoKGFyeSwgb3NzbF94NTA5cmV2b2tlZF9uZXcocmV2 KSk7Ci0gICAgIH0KLSAKLUBAIC00NDMsMTQgKzQ0NCwxMyBAQCBvc3NsX3g1MDljcmxfZ2V0X2V4 dGVuc2lvbnMoVkFMVUUgc2VsZikKLSB7Ci0gICAgIFg1MDlfQ1JMICpjcmw7Ci0gICAgIGludCBj b3VudCwgaTsKLS0gICAgWDUwOV9FWFRFTlNJT04gKmV4dDsKLSAgICAgVkFMVUUgYXJ5OwotIAot ICAgICBHZXRYNTA5Q1JMKHNlbGYsIGNybCk7Ci0gICAgIGNvdW50ID0gWDUwOV9DUkxfZ2V0X2V4 dF9jb3VudChjcmwpOwotICAgICBhcnkgPSByYl9hcnlfbmV3X2NhcGEoY291bnQpOwotICAgICBm b3IgKGk9MDsgaTxjb3VudDsgaSsrKSB7Ci0tICAgICAgICBleHQgPSBYNTA5X0NSTF9nZXRfZXh0 KGNybCwgaSk7IC8qIE5PIERVUCAtIGRvbid0IGZyZWUhICovCi0rICAgICAgICBjb25zdCBYNTA5 X0VYVEVOU0lPTiAqZXh0ID0gWDUwOV9DUkxfZ2V0X2V4dChjcmwsIGkpOwotICAgICAgICAgcmJf YXJ5X3B1c2goYXJ5LCBvc3NsX3g1MDlleHRfbmV3KGV4dCkpOwotICAgICB9Ci0gCi1kaWZmIC0t Z2l0IGEvZXh0L29wZW5zc2wvb3NzbF94NTA5ZXh0LmMgYi9leHQvb3BlbnNzbC9vc3NsX3g1MDll eHQuYwotaW5kZXggZWY2NmVjYzNmZTgzOTAuLjFmZTcyN2QzZjFkMmVhIDEwMDY0NAotLS0tIGEv ZXh0L29wZW5zc2wvb3NzbF94NTA5ZXh0LmMKLSsrKyBiL2V4dC9vcGVuc3NsL29zc2xfeDUwOWV4 dC5jCi1AQCAtNjIsMTMgKzYyLDE0IEBAIHN0YXRpYyBjb25zdCByYl9kYXRhX3R5cGVfdCBvc3Ns X3g1MDlleHRfdHlwZSA9IHsKLSAgKiBQdWJsaWMKLSAgKi8KLSBWQUxVRQotLW9zc2xfeDUwOWV4 dF9uZXcoWDUwOV9FWFRFTlNJT04gKmV4dCkKLStvc3NsX3g1MDlleHRfbmV3KGNvbnN0IFg1MDlf RVhURU5TSU9OICpleHQpCi0gewotICAgICBYNTA5X0VYVEVOU0lPTiAqbmV3OwotICAgICBWQUxV RSBvYmo7Ci0gCi0gICAgIG9iaiA9IE5ld1g1MDlFeHQoY1g1MDlFeHQpOwotLSAgICBuZXcgPSBY NTA5X0VYVEVOU0lPTl9kdXAoZXh0KTsKLSsgICAgLyogT3BlblNTTCAxLjEuMSB0YWtlcyBhIG5v bi1jb25zdCBwb2ludGVyICovCi0rICAgIG5ldyA9IFg1MDlfRVhURU5TSU9OX2R1cCgoWDUwOV9F WFRFTlNJT04gKilleHQpOwotICAgICBpZiAoIW5ldykKLSAgICAgICAgIG9zc2xfcmFpc2UoZVg1 MDlFeHRFcnJvciwgIlg1MDlfRVhURU5TSU9OX2R1cCIpOwotICAgICBTZXRYNTA5RXh0KG9iaiwg bmV3KTsKLUBAIC0zMzgsMTIgKzMzOSwyMCBAQCBvc3NsX3g1MDlleHRfc2V0X3ZhbHVlKFZBTFVF IHNlbGYsIFZBTFVFIGRhdGEpCi0gICAgIEdldFg1MDlFeHQoc2VsZiwgZXh0KTsKLSAgICAgZGF0 YSA9IG9zc2xfdG9fZGVyX2lmX3Bvc3NpYmxlKGRhdGEpOwotICAgICBTdHJpbmdWYWx1ZShkYXRh KTsKLS0gICAgYXNuMXMgPSBYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YShleHQpOwotIAotKyAgICBh c24xcyA9IEFTTjFfT0NURVRfU1RSSU5HX25ldygpOwotKyAgICBpZiAoIWFzbjFzKQotKyAgICAg ICAgb3NzbF9yYWlzZShlWDUwOUV4dEVycm9yLCAiQVNOMV9PQ1RFVF9TVFJJTkdfbmV3Iik7Ci0g ICAgIGlmICghQVNOMV9PQ1RFVF9TVFJJTkdfc2V0KGFzbjFzLCAodW5zaWduZWQgY2hhciAqKVJT VFJJTkdfUFRSKGRhdGEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU1RSSU5H X0xFTklOVChkYXRhKSkpIHsKLSsgICAgICAgIEFTTjFfT0NURVRfU1RSSU5HX2ZyZWUoYXNuMXMp OwotICAgICAgICAgb3NzbF9yYWlzZShlWDUwOUV4dEVycm9yLCAiQVNOMV9PQ1RFVF9TVFJJTkdf c2V0Iik7Ci0gICAgIH0KLSsgICAgaWYgKCFYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YShleHQsIGFz bjFzKSkgewotKyAgICAgICAgQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZShhc24xcyk7Ci0rICAgICAg ICBvc3NsX3JhaXNlKGVYNTA5RXh0RXJyb3IsICJYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YSIpOwot KyAgICB9Ci0rICAgIEFTTjFfT0NURVRfU1RSSU5HX2ZyZWUoYXNuMXMpOwotIAotICAgICByZXR1 cm4gZGF0YTsKLSB9Ci1AQCAtMzg2LDcgKzM5NSw3IEBAIG9zc2xfeDUwOWV4dF9nZXRfdmFsdWUo VkFMVUUgb2JqKQotICAgICBpZiAoIShvdXQgPSBCSU9fbmV3KEJJT19zX21lbSgpKSkpCi0gICAg ICAgICBvc3NsX3JhaXNlKGVYNTA5RXh0RXJyb3IsIE5VTEwpOwotICAgICBpZiAoIVg1MDlWM19F WFRfcHJpbnQob3V0LCBleHQsIDAsIDApKQotLSAgICAgICAgQVNOMV9TVFJJTkdfcHJpbnQob3V0 LCAoQVNOMV9TVFJJTkcgKilYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YShleHQpKTsKLSsgICAgICAg IEFTTjFfU1RSSU5HX3ByaW50KG91dCwgWDUwOV9FWFRFTlNJT05fZ2V0X2RhdGEoZXh0KSk7Ci0g ICAgIHJldCA9IG9zc2xfbWVtYmlvMnN0cihvdXQpOwotIAotICAgICByZXR1cm4gcmV0OwotQEAg LTM5Niw3ICs0MDUsNyBAQCBzdGF0aWMgVkFMVUUKLSBvc3NsX3g1MDlleHRfZ2V0X3ZhbHVlX2Rl cihWQUxVRSBvYmopCi0gewotICAgICBYNTA5X0VYVEVOU0lPTiAqZXh0OwotLSAgICBBU04xX09D VEVUX1NUUklORyAqdmFsdWU7Ci0rICAgIGNvbnN0IEFTTjFfT0NURVRfU1RSSU5HICp2YWx1ZTsK LSAKLSAgICAgR2V0WDUwOUV4dChvYmosIGV4dCk7Ci0gICAgIGlmICgodmFsdWUgPSBYNTA5X0VY VEVOU0lPTl9nZXRfZGF0YShleHQpKSA9PSBOVUxMKQotZGlmZiAtLWdpdCBhL2V4dC9vcGVuc3Ns L29zc2xfeDUwOW5hbWUuYyBiL2V4dC9vcGVuc3NsL29zc2xfeDUwOW5hbWUuYwotaW5kZXggNWIz YzNmNzI2MWRjMjYuLjJiNjZhNGEwOTdjMjllIDEwMDY0NAotLS0tIGEvZXh0L29wZW5zc2wvb3Nz bF94NTA5bmFtZS5jCi0rKysgYi9leHQvb3BlbnNzbC9vc3NsX3g1MDluYW1lLmMKLUBAIC01Mywx MyArNTMsMTQgQEAgc3RhdGljIGNvbnN0IHJiX2RhdGFfdHlwZV90IG9zc2xfeDUwOW5hbWVfdHlw ZSA9IHsKLSAgKiBQdWJsaWMKLSAgKi8KLSBWQUxVRQotLW9zc2xfeDUwOW5hbWVfbmV3KFg1MDlf TkFNRSAqbmFtZSkKLStvc3NsX3g1MDluYW1lX25ldyhjb25zdCBYNTA5X05BTUUgKm5hbWUpCi0g ewotICAgICBYNTA5X05BTUUgKm5ldzsKLSAgICAgVkFMVUUgb2JqOwotIAotICAgICBvYmogPSBO ZXdYNTA5TmFtZShjWDUwOU5hbWUpOwotLSAgICBuZXcgPSBYNTA5X05BTUVfZHVwKG5hbWUpOwot KyAgICAvKiBPcGVuU1NMIDEuMS4xIHRha2VzIGEgbm9uLWNvbnN0IHBvaW50ZXIgKi8KLSsgICAg bmV3ID0gWDUwOV9OQU1FX2R1cCgoWDUwOV9OQU1FICopbmFtZSk7Ci0gICAgIGlmICghbmV3KQot ICAgICAgICAgb3NzbF9yYWlzZShlWDUwOU5hbWVFcnJvciwgIlg1MDlfTkFNRV9kdXAiKTsKLSAg ICAgU2V0WDUwOU5hbWUob2JqLCBuZXcpOwotZGlmZiAtLWdpdCBhL2V4dC9vcGVuc3NsL29zc2xf eDUwOXJlcS5jIGIvZXh0L29wZW5zc2wvb3NzbF94NTA5cmVxLmMKLWluZGV4IDQzM2NjNDYxYTk5 MzNiLi5hZDVkZDA4MDMzMjAzNSAxMDA2NDQKLS0tLSBhL2V4dC9vcGVuc3NsL29zc2xfeDUwOXJl cS5jCi0rKysgYi9leHQvb3BlbnNzbC9vc3NsX3g1MDlyZXEuYwotQEAgLTIzMSw3ICsyMzEsNyBA QCBzdGF0aWMgVkFMVUUKLSBvc3NsX3g1MDlyZXFfZ2V0X3N1YmplY3QoVkFMVUUgc2VsZikKLSB7 Ci0gICAgIFg1MDlfUkVRICpyZXE7Ci0tICAgIFg1MDlfTkFNRSAqbmFtZTsKLSsgICAgY29uc3Qg WDUwOV9OQU1FICpuYW1lOwotIAotICAgICBHZXRYNTA5UmVxKHNlbGYsIHJlcSk7Ci0gICAgIGlm ICghKG5hbWUgPSBYNTA5X1JFUV9nZXRfc3ViamVjdF9uYW1lKHJlcSkpKSB7IC8qIE5PIERVUCAt IGRvbid0IGZyZWUgKi8KLUBAIC0zNTEsNyArMzUxLDcgQEAgb3NzbF94NTA5cmVxX2dldF9hdHRy aWJ1dGVzKFZBTFVFIHNlbGYpCi0gewotICAgICBYNTA5X1JFUSAqcmVxOwotICAgICBpbnQgY291 bnQsIGk7Ci0tICAgIFg1MDlfQVRUUklCVVRFICphdHRyOwotKyAgICBjb25zdCBYNTA5X0FUVFJJ QlVURSAqYXR0cjsKLSAgICAgVkFMVUUgYXJ5OwotIAotICAgICBHZXRYNTA5UmVxKHNlbGYsIHJl cSk7Ci1kaWZmIC0tZ2l0IGEvZXh0L29wZW5zc2wvb3NzbF94NTA5cmV2b2tlZC5jIGIvZXh0L29w ZW5zc2wvb3NzbF94NTA5cmV2b2tlZC5jCi1pbmRleCBiODhjMzkwYzcyNjQxZS4uMDE1MTk2MWU5 ZjZiODUgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9vc3NsX3g1MDlyZXZva2VkLmMKLSsrKyBi L2V4dC9vcGVuc3NsL29zc2xfeDUwOXJldm9rZWQuYwotQEAgLTQ4LDEzICs0OCwxNCBAQCBzdGF0 aWMgY29uc3QgcmJfZGF0YV90eXBlX3Qgb3NzbF94NTA5cmV2X3R5cGUgPSB7Ci0gICogUFVCTElD Ci0gICovCi0gVkFMVUUKLS1vc3NsX3g1MDlyZXZva2VkX25ldyhYNTA5X1JFVk9LRUQgKnJldikK LStvc3NsX3g1MDlyZXZva2VkX25ldyhjb25zdCBYNTA5X1JFVk9LRUQgKnJldikKLSB7Ci0gICAg IFg1MDlfUkVWT0tFRCAqbmV3OwotICAgICBWQUxVRSBvYmo7Ci0gCi0gICAgIG9iaiA9IE5ld1g1 MDlSZXYoY1g1MDlSZXYpOwotLSAgICBuZXcgPSBYNTA5X1JFVk9LRURfZHVwKHJldik7Ci0rICAg IC8qIE9wZW5TU0wgMS4xLjEgdGFrZXMgYSBub24tY29uc3QgcG9pbnRlciAqLwotKyAgICBuZXcg PSBYNTA5X1JFVk9LRURfZHVwKChYNTA5X1JFVk9LRUQgKilyZXYpOwotICAgICBpZiAoIW5ldykK LSAgICAgICAgIG9zc2xfcmFpc2UoZVg1MDlSZXZFcnJvciwgIlg1MDlfUkVWT0tFRF9kdXAiKTsK LSAgICAgU2V0WDUwOVJldihvYmosIG5ldyk7Ci1AQCAtMTg1LDcgKzE4Niw3IEBAIG9zc2xfeDUw OXJldm9rZWRfZ2V0X2V4dGVuc2lvbnMoVkFMVUUgc2VsZikKLSB7Ci0gICAgIFg1MDlfUkVWT0tF RCAqcmV2OwotICAgICBpbnQgY291bnQsIGk7Ci0tICAgIFg1MDlfRVhURU5TSU9OICpleHQ7Ci0r ICAgIGNvbnN0IFg1MDlfRVhURU5TSU9OICpleHQ7Ci0gICAgIFZBTFVFIGFyeTsKLSAKLSAgICAg R2V0WDUwOVJldihzZWxmLCByZXYpOwotZGlmZiAtLWdpdCBhL2V4dC9vcGVuc3NsL29zc2xfeDUw OXN0b3JlLmMgYi9leHQvb3BlbnNzbC9vc3NsX3g1MDlzdG9yZS5jCi1pbmRleCBiZTE0NThjZWM1 ZDcyMS4uNDA4ZTE4YzZjNDE4ZmYgMTAwNjQ0Ci0tLS0gYS9leHQvb3BlbnNzbC9vc3NsX3g1MDlz dG9yZS5jCi0rKysgYi9leHQvb3BlbnNzbC9vc3NsX3g1MDlzdG9yZS5jCi1AQCAtNTEyLDEwICs1 MTIsOCBAQCBzdGF0aWMgdm9pZAotIG9zc2xfeDUwOXN0Y3R4X2ZyZWUodm9pZCAqcHRyKQotIHsK LSAgICAgWDUwOV9TVE9SRV9DVFggKmN0eCA9IHB0cjsKLS0gICAgaWYgKFg1MDlfU1RPUkVfQ1RY X2dldDBfdW50cnVzdGVkKGN0eCkpCi0tICAgICAgICBza19YNTA5X3BvcF9mcmVlKFg1MDlfU1RP UkVfQ1RYX2dldDBfdW50cnVzdGVkKGN0eCksIFg1MDlfZnJlZSk7Ci0tICAgIGlmIChYNTA5X1NU T1JFX0NUWF9nZXQwX2NlcnQoY3R4KSkKLS0gICAgICAgIFg1MDlfZnJlZShYNTA5X1NUT1JFX0NU WF9nZXQwX2NlcnQoY3R4KSk7Ci0rICAgIHNrX1g1MDlfcG9wX2ZyZWUoWDUwOV9TVE9SRV9DVFhf Z2V0MF91bnRydXN0ZWQoY3R4KSwgWDUwOV9mcmVlKTsKLSsgICAgWDUwOV9mcmVlKChYNTA5ICop WDUwOV9TVE9SRV9DVFhfZ2V0MF9jZXJ0KGN0eCkpOwotICAgICBYNTA5X1NUT1JFX0NUWF9mcmVl KGN0eCk7Ci0gfQotIAotQEAgLTczNiw3ICs3MzQsNyBAQCBzdGF0aWMgVkFMVUUKLSBvc3NsX3g1 MDlzdGN0eF9nZXRfY3Vycl9jZXJ0KFZBTFVFIHNlbGYpCi0gewotICAgICBYNTA5X1NUT1JFX0NU WCAqY3R4OwotLSAgICBYNTA5ICp4NTA5OwotKyAgICBjb25zdCBYNTA5ICp4NTA5OwotIAotICAg ICBHZXRYNTA5U3RDdHgoc2VsZiwgY3R4KTsKLSAgICAgeDUwOSA9IFg1MDlfU1RPUkVfQ1RYX2dl dF9jdXJyZW50X2NlcnQoY3R4KTsKLUBAIC03NTgsNyArNzU2LDcgQEAgc3RhdGljIFZBTFVFCi0g b3NzbF94NTA5c3RjdHhfZ2V0X2N1cnJfY3JsKFZBTFVFIHNlbGYpCi0gewotICAgICBYNTA5X1NU T1JFX0NUWCAqY3R4OwotLSAgICBYNTA5X0NSTCAqY3JsOwotKyAgICBjb25zdCBYNTA5X0NSTCAq Y3JsOwotIAotICAgICBHZXRYNTA5U3RDdHgoc2VsZiwgY3R4KTsKLSAgICAgY3JsID0gWDUwOV9T VE9SRV9DVFhfZ2V0MF9jdXJyZW50X2NybChjdHgpOwotZGlmZiAtLWdpdCBhL3Rlc3Qvb3BlbnNz bC90ZXN0X29zc2wucmIgYi90ZXN0L29wZW5zc2wvdGVzdF9vc3NsLnJiCi1pbmRleCA1MTI2Mjk4 NWY1NjU1ZS4uMWI5YmRlNTNlZjcyZDMgMTAwNjQ0Ci0tLS0gYS90ZXN0L29wZW5zc2wvdGVzdF9v c3NsLnJiCi0rKysgYi90ZXN0L29wZW5zc2wvdGVzdF9vc3NsLnJiCi1AQCAtMjQsNiArMjQsMTYg QEAgZGVmIHRlc3RfZml4ZWRfbGVuZ3RoX3NlY3VyZV9jb21wYXJlCi0gICAgIGFzc2VydF9yYWlz ZShBcmd1bWVudEVycm9yKSB7IE9wZW5TU0wuZml4ZWRfbGVuZ3RoX3NlY3VyZV9jb21wYXJlKCJh YWEiLCAiYmJiYiIpIH0KLSAgIGVuZAotIAotKyAgZGVmIHRlc3RfZml4ZWRfbGVuZ3RoX3NlY3Vy ZV9jb21wYXJlX3VhZgotKyAgICBzdHIxID0gIkEiICogMTAwMDAwMAotKyAgICBldmlsX29iaiA9 IE9iamVjdC5uZXcKLSsgICAgZXZpbF9vYmouZGVmaW5lX3NpbmdsZXRvbl9tZXRob2QoOnRvX3N0 cikgZG8KLSsgICAgICBzdHIxLnJlcGxhY2UoIkMiICogMTAwMDAwMCkKLSsgICAgICAiQiIgKiAx MDAwMDAwCi0rICAgIGVuZAotKyAgICBhc3NlcnRfZmFsc2UoT3BlblNTTC5maXhlZF9sZW5ndGhf c2VjdXJlX2NvbXBhcmUoc3RyMSwgZXZpbF9vYmopKQotKyAgZW5kCi0rCi0gICBkZWYgdGVzdF9z ZWN1cmVfY29tcGFyZQotICAgICBhc3NlcnRfZmFsc2UoT3BlblNTTC5zZWN1cmVfY29tcGFyZSgi YWFhIiwgImEiKSkKLSAgICAgYXNzZXJ0X2ZhbHNlKE9wZW5TU0wuc2VjdXJlX2NvbXBhcmUoImFh YSIsICJhYSIpKQotZGlmZiAtLWdpdCBhL3Rlc3Qvb3BlbnNzbC90ZXN0X3BrZXlfcnNhLnJiIGIv dGVzdC9vcGVuc3NsL3Rlc3RfcGtleV9yc2EucmIKLWluZGV4IDg2ZjUxY2Y0Mzg1YTAxLi4xNzE2 YWVmMzgwN2FmOSAxMDA2NDQKLS0tLSBhL3Rlc3Qvb3BlbnNzbC90ZXN0X3BrZXlfcnNhLnJiCi0r KysgYi90ZXN0L29wZW5zc2wvdGVzdF9wa2V5X3JzYS5yYgotQEAgLTQ2Miw1NCArNDYyLDU0IEBA IGRlZiB0ZXN0X3ByaXZhdGVfZW5jb2RpbmcKLSAKLSAgIGRlZiB0ZXN0X3ByaXZhdGVfZW5jb2Rp bmdfZW5jcnlwdGVkCi0gICAgIHJzYSA9IEZpeHR1cmVzLnBrZXkoInJzYTIwNDgiKQotLSAgICBl bmNvZGVkID0gcnNhLnByaXZhdGVfdG9fZGVyKCJhZXMtMTI4LWNiYyIsICJhYmNkZWYiKQotKyAg ICBlbmNvZGVkID0gcnNhLnByaXZhdGVfdG9fZGVyKCJhZXMtMTI4LWNiYyIsICJhYmNkZWZnaCIp Ci0gICAgIGFzbjEgPSBPcGVuU1NMOjpBU04xLmRlY29kZShlbmNvZGVkKSAjIFBLQ1MgIzggRW5j cnlwdGVkUHJpdmF0ZUtleUluZm8KLSAgICAgYXNzZXJ0X2tpbmRfb2YgT3BlblNTTDo6QVNOMTo6 U2VxdWVuY2UsIGFzbjEKLSAgICAgYXNzZXJ0X2VxdWFsIDIsIGFzbjEudmFsdWUuc2l6ZQotICAg ICBhc3NlcnRfbm90X2VxdWFsIHJzYS5wcml2YXRlX3RvX2RlciwgZW5jb2RlZAotLSAgICBhc3Nl cnRfc2FtZV9yc2EgcnNhLCBPcGVuU1NMOjpQS2V5LnJlYWQoZW5jb2RlZCwgImFiY2RlZiIpCi0t ICAgIGFzc2VydF9zYW1lX3JzYSByc2EsIE9wZW5TU0w6OlBLZXkucmVhZChlbmNvZGVkKSB7ICJh YmNkZWYiIH0KLSsgICAgYXNzZXJ0X3NhbWVfcnNhIHJzYSwgT3BlblNTTDo6UEtleS5yZWFkKGVu Y29kZWQsICJhYmNkZWZnaCIpCi0rICAgIGFzc2VydF9zYW1lX3JzYSByc2EsIE9wZW5TU0w6OlBL ZXkucmVhZChlbmNvZGVkKSB7ICJhYmNkZWZnaCIgfQotICAgICBhc3NlcnRfcmFpc2UoT3BlblNT TDo6UEtleTo6UEtleUVycm9yKSB7IE9wZW5TU0w6OlBLZXkucmVhZChlbmNvZGVkLCAiYWJjeHl6 IikgfQotIAotLSAgICBlbmNvZGVkID0gcnNhLnByaXZhdGVfdG9fcGVtKCJhZXMtMTI4LWNiYyIs ICJhYmNkZWYiKQotKyAgICBlbmNvZGVkID0gcnNhLnByaXZhdGVfdG9fcGVtKCJhZXMtMTI4LWNi YyIsICJhYmNkZWZnaCIpCi0gICAgIGFzc2VydF9tYXRjaCAoL0JFR0lOIEVOQ1JZUFRFRCBQUklW QVRFIEtFWS8pLCBlbmNvZGVkLmxpbmVzWzBdCi0tICAgIGFzc2VydF9zYW1lX3JzYSByc2EsIE9w ZW5TU0w6OlBLZXkucmVhZChlbmNvZGVkLCAiYWJjZGVmIikKLSsgICAgYXNzZXJ0X3NhbWVfcnNh IHJzYSwgT3BlblNTTDo6UEtleS5yZWFkKGVuY29kZWQsICJhYmNkZWZnaCIpCi0gCi0gICAgICMg VXNlIG9wZW5zc2wgaW5zdGVhZCBvZiBjZXJ0dG9vbCBkdWUgdG8gaHR0cHM6Ly9naXRsYWIuY29t L2dudXRscy9nbnV0bHMvLS9pc3N1ZXMvMTYzMgotLSAgICAjIG9wZW5zc2wgcGtjczggLWluIHRl c3Qvb3BlbnNzbC9maXh0dXJlcy9wa2V5L3JzYTIwNDgucGVtIC10b3BrOCAtdjIgYWVzLTEyOC1j YmMgLXBhc3NvdXQgcGFzczphYmNkZWYKLSsgICAgIyBvcGVuc3NsIHBrY3M4IC1pbiB0ZXN0L29w ZW5zc2wvZml4dHVyZXMvcGtleS9yc2EyMDQ4LnBlbSAtdG9wazggLXYyIGFlcy0xMjgtY2JjIC1w YXNzb3V0IHBhc3M6YWJjZGVmZ2gKLSAgICAgcGVtID0gPDx+RU9GCi0tICAgIC0tLS0tQkVHSU4g RU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KLS0gICAgTUlJRkxUQlhCZ2txaGtpRzl3MEJCUTB3 U2pBcEJna3Foa2lHOXcwQkJRd3dIQVFJYXk1VjhDRFFpNW9DQWdnQQotLSAgICBNQXdHQ0NxR1NJ YjNEUUlKQlFBd0hRWUpZSVpJQVdVREJBRUNCQkI2ZXlhZ2Nic3ZkUWxNMWtQY0g3a2lCSUlFCi0t ICAgIDBOZzFhcEl5b1BBWjRCZkM0a01OZVNtZUF2M1hzcHhxWWkzdVd6WGlOeVRjb0U2Mzkwc3dy d002V3ZkcFh2TEkKLS0gICAgL24vVjA2a3J4UFo5WDRmQkcya0xVelh0NWYwOWxFdm1RVTFIVzF3 SkdVNVNxM2JOZVhCcmxKRjREekpFNFdXZAotLSAgICB3aFZWdk5NbTQ0Z2hkek4vakdTdzN6KzZk NzE3Tit3YWE3dnJwQkRzSGpoc1BOd3hweXpVdmNGUEZ5c1Rhenh4Ci0tICAgIGtOL2R6aUlCRjZT UktpNnc4VmFKRU1ROGN6R3U1VDNqT2MyZS8xcDMvQVloSExQUzROSGhMUjVPVWgwVEtxTEsKLS0g ICAgdEFOQXFJOVlxQ0FqaHFjWUNtTjNtTVFYWTUyVmZPcUc5aGxYMXg5WlF5cWlIN2wxMDJFV2JQ cW91azZiQ0JMUQotLSAgICB3SGVwUGc0dUs5OVdzZGg2NXFFcnlOblhRNVptTzZhR2I2VDNURkVO Q2FOS21pOE5oKy81ZHI3SjdZZmhJd3BvCi0tICAgIEZxSHZrMGhyWjhyM0VRbHI4L3RkMFliMS9J S3plUTM0NjM4dVhmOVV4SzdDNm8raWxzbUpEUjRQSEpVZlpMMjMKLS0gICAgWWI5cVdKMEdFemQ1 QU1zSTd4Nkt1VXhTdUg5bktuaXY1VHp5dHkzWG1iNEZ3WFV5QURXRTE5Y1Z1YVQrSHJGegotLSAg ICBHcmFLbkEzVVhiRWdXQVU0OC9sNEsySGNBSHlIREQyS2JwOGsrbzF6VWtIMGZXVWRmRTZPVUd0 eDE5RnY0NEpoCi0tICAgIEI3eERuZ0s4SzQ4QzZucmowNi9EU1lmWGxiMlg3V1FpYXBlRzRqdDZV NTd0TEgyWEFqSENrdnUwSUJaKy8vK1AKLS0gICAgeUlXZHVFSFEzdzhGQlJjSXNUTkpvNUNqa0dr NTgwVFZRQi9PQkxXZlg0OEF5M29GOXpnbm9tRElsVmpsOUQwbgotLSAgICBsS3h3L0tNQ0xrdkI3 OHJVZUdicjFLd2ozNkZoR3BUQnczRmdjWUdhNW9XRlpUbGNPZ01UWExxbGJiOUpuRGxBCi0tICAg IFpzN1R1MFdUeU9UVi9EbmU5bkVtMzlEenU2d1JvamlJcG15Z1RENEZJN3JtT3kzQ1lOdkwzWFB2 N1hRajBobnkKLS0gICAgRWUvZkx4dWdZbFFud1BaU3FPVkVRWTJIc0c3QW1FSFJzdnk0YklXSUd0 K3l6QVBaaXh0OU1VZEpoOTF0dFJ0NwotLSAgICBRQS84SjFwQXNHcUV1UXBGNlVVSU5ab3AzSjd0 d2ZoTzR6V1lOL05OUTUyZVdOWDJLTGZqZkdSaHJ2YXR6bVowCi0tICAgIEJ1Q3NDSTlod0VlRTZQ VGxoYlgxUnMxNzdNckRjM3ZscXoyVjNQbzBPckZqWEF5ZzlEUi9PQzRpSzV3T0cyWkQKLS0gICAg N1N0VlNQOGJ6d1FYc3ozZkowYXJkS1hnblUyWURBUDZWeWtqZ3QrbkZJMDlIVi9TMmZhT2MyZy9V SzRZMmtobAotLSAgICBKOTN1L0dITXovS3IzYktXR1kxLzZuUGRJZEZoZVFqc2lOaGQ1Z0k0dFdp azJCM1F3VTltRVRUb1oyTFN2REhVCi0tICAgIGpZQ3lzNTc2eEpMa2RNTTZuSmRxNzJ6NHRDb0VT OUl4eUhWczR1TGpIS0lvL1p0S3IrOHhEbzhJTDRheDNVOCsKLS0gICAgTk1ocy9sd1JlSG1QR2Fo bTFmdTl6TFJiTkNWTDdlMHpyT3FianZLY1NFZnRPYnBWL0xMY1BZWHRFbStsWmNjawotLSAgICAv UE13NDlIU0UzNjRhbktFWENIMWN5VldKd2RaUnBGVUh2UnBMSXJwSHJ1Ny9jdGhoaUVNZExnSzEv eDhzTG9iCi0tICAgIERpeWllTHhIMURQZVhUNFgrejk0RVI0SXVQVk9jVjVBWGMvb21naGlzcEVY NkROVW5uNWpDNGUzV3lhYmpVYncKLS0gICAgTXVPOWxWSDlXaTIveW5FeENxVm1Ra2RiVFh1THdq bmkxZkoyN1E1emIwYUNtaE84ZXE2UDg2OU5DamhKdWlVagotLSAgICBOSTlYdEdMUDUwWVZXRTBr TDhLRUpxbnlGdWRreThLaHprNC9keWl4UUZxaW41R2ZUNHZldHJMdW5HSHk3bFJCCi0tICAgIDNM cG5GcnBNT3IrMHhyMVJXMWs5dmxtalJzSlNpb2pKZlJlWU83Z0gzQjVzd2l3dzJhem9nb0wrNGpo RjFKeGgKLS0gICAgT1lMV2RrS2hQMmpTVkdxdElEdG55ME80bEJtMitoTHBXamlJMG1KUTd3ZEEK LS0gICAgLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KLSstLS0tLUJFR0lOIEVO Q1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCi0rTUlJRk5UQmZCZ2txaGtpRzl3MEJCUTB3VWpBeEJn a3Foa2lHOXcwQkJRd3dKQVFRK1NnOTJIZ3k4RWdWUGY3dAotK0hlbjFxd0lDQ0FBd0RBWUlLb1pJ aHZjTkFna0ZBREFkQmdsZ2hrZ0JaUU1FQVFJRUVCNVVYMnhkRE84L0FLQTgKLSsrWTVDWnlVRWdn VFFrQXJoNG1NUHBuQWUzeE9jREtNejhLQ241bHJMYi82RGxhN1JwOUxIS0drVWZ5STExRVp0Ci0r bStPSXJpd3k5b0RRcXVLeVZ1TFFWR0F4WEtrKzNweXhNcUxCMGkzaExZYW1UM3Z6b1BjdHlWd2p1 UnVLb1UzRQotK0NiRjBZaENveHZXTXZqSHNvbHdZengwMERiTFhvdUU0QkdLdlBqbmh3NWh3dGRv WjlQeDBabkNYQ3hWWGk4ei8KLSttbHc3YTJwdEtFaUhRVmp1UFBidHRxK2RBK2V6N3BiV29uV1Zv ZDVUTWFQdHlFWnU1WGZQRCswcE1ib2NlSFpnCi0rSDhlaGdVaFYzbXpFSmlpc0ZHZzFxOWhqKzRC YUZsNW00dHZxcDQzaW5DQ2RTaEU3OENObk9Qeko3V0NqS0pxaQotK2pHdkhqZU1vVngzclpYSGNa REF6ZkladkRpZ3A5dUFmempSSmpwUkc4c2c1c0RRVkM3dmRVaFFEZTVUb3JLVDIKLStWYjB0ZFZZ eG9FcE1KM2RoVTZEczVKeE1SNkdUTGpzalRxT2tBbDZkYjNIeHVsd2ZFcHI3WWpPcGZPRFIrdHRB Ci0rQmVJY1VjTUxzREhheUlhUWFNTElmdEh4T2tmWDdVeG9GVzlDTUc1VU1RZi9tM2VFZ1ZVd2dL L0U1c1VKUlVUbwotK3loUnpKNE5BUDRmZ2M0WUg5dGJ6dlVyaGZkQ1hDQkVPbjZJbERRTDY2U1py OE1tK0dndTRJajRUbktXWExyWEwKLStuU1RERGE0MmtQT3Z0ZWRLcXhDL3VYRTdycmZoK3V5dzZK Nk9qU2w2dTg2VEllYm5kTHVEbzVEVGRXS2g4cnNnCi0rZnZaWjYzMzJkZk1wOEpDOS80WW5ZSUpk STdhY0luU295SHA1Mk9CKzIrZGdZQ3I1T3JaRmpqS1M3bkVMVmZvNwotK094R3k2dUgzTkhGOXF5 VUVmM01OMTdUUkhJN2pQM3pLYlhjRFRQU3l4TFFrV2UvQ1U1QjI1MUNUbW9UU2lkU1cKLStFaEtu UGxHWllicFZRSjRLR0VMNVVlWThXOVBYUW80RGw3VG1YQkd2dVBxTkY4a01CM1hyUElwaDdHbWlo bVgwCi0rbmxKcUxrOWVpUkZtVUVUUzBJZEF5S0pybTRSOUhmNnJqWUNiWGxhQXB5bHlWVWRTWjJC eGdlb1RZOUJBNktnZgotKzN4bGdNdjAxTW9Va1hNeDIrT0xJYzlNemhCdXRRaUR4aDNtZlMwMTJD aktxVUZySmhSU2E4RE9wVWZWZ21YcHEKLSsvSFA0ZHJXYW1MV1lKUjhGc21KUzExWlljMUVLL2N0 SlRTcHFmZXd2b1VHT1NIb21oaDd6WG4xQWNiNis5LzNwCi0rYmNySmpvUjVLOEpnNk5sRzRkU05r cFkveDkySTdiRkxYRnFFTElINXR0ZURybFFlbjVlQVNqYWl5UFBBb093OAotK0lHZk9tRlM0VlVQ aDFWUDZnOEp0bjVIcjJxWEIzRG9Rb0k2RXZVWmhKNkdKZmk2N214NVZLdXg2RzlNekpraXgKLStH VTFjTDRXeldLMkRVMGwzOVV4WGpTKzRUbU9ZYnJxTFZuVk1qdXNYMGZ3YjhMa0RDL2ZWb2hiaEx3 aEhOd3U2Ci0rblNUU0VwUzl6U0RydjFKWEZ0QXRQdjZYQ1NGczZzc1BXSk13R1NkVGhuN0VmVjBH RWhHMm1DelR5Vmh3eHhRbwotKzZVL1N1cXE0b01ab3JhY1BVQ1p4MEU0dS9iYjRLQm9GQS9lQk5Q SkVOVFIxOElpVitEN3dBeGx4YXVPM04xdDQKLStpSnh3cnJ2U2dRUG1PR3V4cmg1TFZENDFVWFlV V0x0bmR6YWJucEJ5cHBGbjJNYm12cnFKZ29uME1Tczg0Y1RBCi0rN3NjbmJQdTFWM1BwS3kvdDY3 Z3RWdzlVZThoTGpyc2tXQjFKUEZZcjd2Uld2SnpZamZiZmx5cm9GK1FFSjNUQQotKzZyVGZVQzkr ZVBjaTZUK2k5akY0eGNtenFZelJ0bkd0cDVuUlVpdEpHdzB1d0JURHd6ZkkyV0Q2bHR2dnU3bGMK LStwSHV6dlk1ekVhcHV1MUpoakhMVWQrT0U4clZWTTk5OURVWG8vSURMc1d5UkNwaENpWWZWWEpO b2dkOXJCMFRhCi0rNUFoVmdwUmh4a2FyQlVSWnlMVFlqN05SeENzYkhxN1hFeEpOcklkUkcvS2xC UWZ5RXlJelo3RT0KLSstLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQotICAgICBF T0YKLS0gICAgYXNzZXJ0X3NhbWVfcnNhIHJzYSwgT3BlblNTTDo6UEtleS5yZWFkKHBlbSwgImFi Y2RlZiIpCi0rICAgIGFzc2VydF9zYW1lX3JzYSByc2EsIE9wZW5TU0w6OlBLZXkucmVhZChwZW0s ICJhYmNkZWZnaCIpCi0gICBlbmQKLSAKLSAgIGRlZiB0ZXN0X3BhcmFtcwotZGlmZiAtLWdpdCBh L3Rlc3Qvb3BlbnNzbC90ZXN0X3NzbC5yYiBiL3Rlc3Qvb3BlbnNzbC90ZXN0X3NzbC5yYgotaW5k ZXggY2UxYjJjMWU5NjZmZDAuLmU0ZmQ1ODEwNzljNGRkIDEwMDY0NAotLS0tIGEvdGVzdC9vcGVu c3NsL3Rlc3Rfc3NsLnJiCi0rKysgYi90ZXN0L29wZW5zc2wvdGVzdF9zc2wucmIKLUBAIC0xOTA5 LDcgKzE5MDksOSBAQCBkZWYgdGVzdF90bXBfZGhfY2FsbGJhY2sKLSAgICAgICB9Ci0gICAgIH0K LSAgICAgc3RhcnRfc2VydmVyKGN0eF9wcm9jOiBjdHhfcHJvYykgZG8gfHBvcnR8Ci0tICAgICAg c2VydmVyX2Nvbm5lY3QocG9ydCkgeyB8c3NsfAotKyAgICAgIGN0eCA9IE9wZW5TU0w6OlNTTDo6 U1NMQ29udGV4dC5uZXcKLSsgICAgICBjdHguZ3JvdXBzID0gIlAtMjU2IiAjIEV4Y2x1ZGUgUkZD IDc5MTkgZ3JvdXBzCi0rICAgICAgc2VydmVyX2Nvbm5lY3QocG9ydCwgY3R4KSB7IHxzc2x8Ci0g ICAgICAgICBhc3NlcnQgY2FsbGVkLCAiZGggY2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxlZCIKLSAg ICAgICAgIGFzc2VydF9lcXVhbCBkaC50b19kZXIsIHNzbC50bXBfa2V5LnRvX2RlcgotICAgICAg IH0KLUBAIC0yMTcyLDcgKzIxNzQsOSBAQCBkZWYgdGVzdF90bXBfZGgKLSAgICAgICBjdHgudG1w X2RoID0gZGgKLSAgICAgfQotICAgICBzdGFydF9zZXJ2ZXIoY3R4X3Byb2M6IGN0eF9wcm9jKSBk byB8cG9ydHwKLS0gICAgICBzZXJ2ZXJfY29ubmVjdChwb3J0KSB7IHxzc2x8Ci0rICAgICAgY3R4 ID0gT3BlblNTTDo6U1NMOjpTU0xDb250ZXh0Lm5ldwotKyAgICAgIGN0eC5ncm91cHMgPSAiUC0y NTYiICMgRXhjbHVkZSBSRkMgNzkxOSBncm91cHMKLSsgICAgICBzZXJ2ZXJfY29ubmVjdChwb3J0 LCBjdHgpIHsgfHNzbHwKLSAgICAgICAgIGFzc2VydF9lcXVhbCBkaC50b19kZXIsIHNzbC50bXBf a2V5LnRvX2RlcgotICAgICAgIH0KLSAgICAgZW5kCgpkaWZmIC0tZ2l0IGEvcnVieS5zcGVjIGIv cnVieS5zcGVjCmluZGV4IGY2Zjc0ZjIuLjU0YWE2YmQgMTAwNjQ0Ci0tLSBhL3J1Ynkuc3BlYwor KysgYi9ydWJ5LnNwZWMKQEAgLTEsNiArMSw2IEBACiAlZ2xvYmFsIG1ham9yX3ZlcnNpb24gNAog JWdsb2JhbCBtaW5vcl92ZXJzaW9uIDAKLSVnbG9iYWwgdGVlbnlfdmVyc2lvbiA1CislZ2xvYmFs IHRlZW55X3ZlcnNpb24gNgogJWdsb2JhbCBtYWpvcl9taW5vcl92ZXJzaW9uICV7bWFqb3JfdmVy c2lvbn0uJXttaW5vcl92ZXJzaW9ufQogCiAlZ2xvYmFsIHJ1YnlfdmVyc2lvbiAle21ham9yX21p bm9yX3ZlcnNpb259LiV7dGVlbnlfdmVyc2lvbn0KQEAgLTM2LDcgKzM2LDcgQEAKICMjIEJVTkRM RURfR0VNU19WRVJTSU9OUwogCiAjIEJ1bmRsZWQgbGlicmFyaWVzIHZlcnNpb25zCi0lZ2xvYmFs IHJ1YnlnZW1zX3ZlcnNpb24gNC4wLjEwCislZ2xvYmFsIHJ1YnlnZW1zX3ZlcnNpb24gNC4wLjE2 CiAlZ2xvYmFsIHJ1YnlnZW1zX21vbGluaWxsb192ZXJzaW9uIDAuOC4wCiAlZ2xvYmFsIHJ1Ynln ZW1zX25ldF9odHRwX3ZlcnNpb24gMC43LjAKICVnbG9iYWwgcnVieWdlbXNfbmV0X3Byb3RvY29s X3ZlcnNpb24gMC4yLjIKQEAgLTQ4LDE0ICs0OCwxMyBAQAogJWdsb2JhbCBydWJ5Z2Vtc191cmlf dmVyc2lvbiAxLjEuMQogCiAjIERlZmF1bHQgZ2Vtcy4KLSVnbG9iYWwgYnVuZGxlcl92ZXJzaW9u IDQuMC4xMAorJWdsb2JhbCBidW5kbGVyX3ZlcnNpb24gNC4wLjE2CiAlZ2xvYmFsIGJ1bmRsZXJf Y29ubmVjdGlvbl9wb29sX3ZlcnNpb24gMi41LjQKICVnbG9iYWwgYnVuZGxlcl9maWxldXRpbHNf dmVyc2lvbiAxLjguMAogJWdsb2JhbCBidW5kbGVyX25ldF9odHRwX3BlcnNpc3RlbnRfdmVyc2lv biA0LjAuNgogJWdsb2JhbCBidW5kbGVyX3B1Yl9ncnViX3ZlcnNpb24gMC41LjAKICVnbG9iYWwg YnVuZGxlcl9zZWN1cmVyYW5kb21fdmVyc2lvbiAwLjQuMQogJWdsb2JhbCBidW5kbGVyX3Rob3Jf dmVyc2lvbiAxLjQuMAotJWdsb2JhbCBidW5kbGVyX3Rzb3J0X3ZlcnNpb24gMC4yLjAKICVnbG9i YWwgYnVuZGxlcl91cmlfdmVyc2lvbiAxLjEuMQogCiAlZ2xvYmFsIGRhdGVfdmVyc2lvbiAzLjUu MQpAQCAtNjQsNyArNjMsNyBAQAogJWdsb2JhbCBkaWdlc3RfdmVyc2lvbiAzLjIuMQogJWdsb2Jh bCBlbmdsaXNoX3ZlcnNpb24gMC44LjEKICVnbG9iYWwgZXJiX3ZlcnNpb24gNi4wLjEuMQotJWds b2JhbCBlcnJvcl9oaWdobGlnaHRfdmVyc2lvbiAwLjcuMQorJWdsb2JhbCBlcnJvcl9oaWdobGln aHRfdmVyc2lvbiAwLjcuMgogJWdsb2JhbCBldGNfdmVyc2lvbiAxLjQuNgogJWdsb2JhbCBmY250 bF92ZXJzaW9uIDEuMy4wCiAlZ2xvYmFsIGZpbGV1dGlsc192ZXJzaW9uIDEuOC4wCkBAIC0xMjEs NyArMTIwLDcgQEAKICVnbG9iYWwgbWluaXRlc3RfdmVyc2lvbiA2LjAuMAogJWdsb2JhbCBtdXRl eF9tX3ZlcnNpb24gMC4zLjAKICVnbG9iYWwgbmV0X2Z0cF92ZXJzaW9uIDAuMy45Ci0lZ2xvYmFs IG5ldF9pbWFwX3ZlcnNpb24gMC42LjIKKyVnbG9iYWwgbmV0X2ltYXBfdmVyc2lvbiAwLjYuNC4x CiAlZ2xvYmFsIG5ldF9wb3BfdmVyc2lvbiAwLjEuMgogJWdsb2JhbCBuZXRfc210cF92ZXJzaW9u IDAuNS4xCiAlZ2xvYmFsIG5rZl92ZXJzaW9uIDAuMi4wCkBAIC0xOTAsNyArMTg5LDcgQEAKIFN1 bW1hcnk6IEFuIGludGVycHJldGVyIG9mIG9iamVjdC1vcmllbnRlZCBzY3JpcHRpbmcgbGFuZ3Vh Z2UKIE5hbWU6IHJ1YnkKIFZlcnNpb246ICV7cnVieV92ZXJzaW9ufSV7P2RldmVsb3BtZW50X3Jl bGVhc2V9Ci1SZWxlYXNlOiAzNSV7P2Rpc3R9CitSZWxlYXNlOiAzNiV7P2Rpc3R9CiAjIExpY2Vu c2VzLCB3aGljaCBhcmUgbGlrZWx5IG5vdCBpbmNsdWRlZCBpbiBiaW5hcnkgUlBNczoKICMgQXBh Y2hlLTIuMDoKICMgICBiZW5jaG1hcmsvZ2MvcmVkYmxhY2sucmIKQEAgLTI5OSwxMCArMjk4LDYg QEAgUGF0Y2g4OiBydWJ5LTQuMC4xLVN1cHBvcnQtY3VzdG9taXphYmxlLXJ1c3RjX2ZsYWdzLWZv ci1ydXN0Yy1idWlsZHMucGF0Y2gKICMgRml4IGVycm9yIHdpdGggYGdlbSBpbnN0YWxsIC0tZG9j dW1lbnQ9cmRvYyxyaWAKICMgRml4ZWQgaW4gcmRvYyA3LjEuMCBidXQgbm90IGluIDcuMC40CiBQ YXRjaDk6IHJkb2MtcHIxNTMxLWZpeC1tdXRpbHBsZS1kb2N1bWVudC1pbnN0YWxsYXRpb24ucGF0 Y2gKLSMgaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIyMDY5Ci0jIGh0dHBzOi8v Z2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xNjk0NwotIyBCYWNrcG9ydCBydWJ5L29wZW5zc2wg NC4wLjIgZnJvbSBydWJ5IDQuMCBicmFuY2ggdG8gc3VwcG9ydCBvcGVuc3NsIDQuMAotUGF0Y2gx MDogcnVieS1wcjE2OTQ3LW9wZW5zc2wtNF8wXzItZnJvbS1ydWJ5XzRfMC5wYXRjaAogCiBSZXF1 aXJlczogJXtuYW1lfS1saWJzJXs/X2lzYX0gPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KICV7P3dp dGhfcnVieXBpY2s6U3VnZ2VzdHM6IHJ1YnlwaWNrfQpAQCAtNTkzLDcgKzU4OCw2IEBAIFN1bW1h cnk6ICAgIExpYnJhcnkgYW5kIHV0aWxpdGllcyB0byBtYW5hZ2UgYSBSdWJ5IGFwcGxpY2F0aW9u J3MgZ2VtIGRlcGVuZGVuY2llCiBWZXJzaW9uOiAgICAle2J1bmRsZXJfdmVyc2lvbn0KICMgQlNE LTItQ2xhdXNlIE9SIFJ1Ynk6CiAjICAgbGliL2J1bmRsZXIvdmVuZG9yL2ZpbGV1dGlscwotIyAg IGxpYi9idW5kbGVyL3ZlbmRvci90c29ydAogIyAgIGxpYi9idW5kbGVyL3ZlbmRvci91cmkKICMg TUlUOgogIyAgIGxpYi9idW5kbGVyL3ZlbmRvci9jb25uZWN0aW9uX3Bvb2wKQEAgLTYxMSw3ICs2 MDUsNiBAQCBQcm92aWRlczogICBidW5kbGVkKHJ1YnlnZW0tbmV0LWh0dHAtcGVyc2lzdGVudCkg PSAle2J1bmRsZXJfbmV0X2h0dHBfcGVyc2lzdGVudAogUHJvdmlkZXM6ICAgYnVuZGxlZChydWJ5 Z2VtLXB1Yl9ncnViKSA9ICV7YnVuZGxlcl9wdWJfZ3J1Yl92ZXJzaW9ufQogUHJvdmlkZXM6ICAg YnVuZGxlZChydWJ5Z2VtLXNlY3VyZXJhbmRvbSkgPSAle2J1bmRsZXJfc2VjdXJlcmFuZG9tX3Zl cnNpb259CiBQcm92aWRlczogICBidW5kbGVkKHJ1YnlnZW0tdGhvcikgPSAle2J1bmRsZXJfdGhv cl92ZXJzaW9ufQotUHJvdmlkZXM6ICAgYnVuZGxlZChydWJ5Z2VtLXRzb3J0KSA9ICV7YnVuZGxl cl90c29ydF92ZXJzaW9ufQogUHJvdmlkZXM6ICAgYnVuZGxlZChydWJ5Z2VtLXVyaSkgPSAle2J1 bmRsZXJfdXJpX3ZlcnNpb259CiBCdWlsZEFyY2g6ICBub2FyY2gKIApAQCAtODE1LDcgKzgwOCw2 IEBAIHBvcGQKICVwYXRjaCA2IC1wMQogJXBhdGNoIDcgLXAxCiAlcGF0Y2ggOCAtcDEKLSVwYXRj aCAxMCAtcDEKIAogIyBQcm92aWRlIGFuIGV4YW1wbGUgb2YgdXNhZ2Ugb2YgdGhlIHRhcHNldDoK IGNwIC1hICV7U09VUkNFM30gLgpAQCAtMTE1OSwxNSArMTE1MSw2IEBAIG1ha2UgLUMgJXtfdnBh dGhfYnVpbGRkaXJ9IC1zIHJ1bnJ1YnkgVEVTVFJVTl9TQ1JJUFQ9Ii1lIFwiIFwKICAgZXhpdCAx IGlmIEJ1bmRsZXI6OlRob3I6OlZFUlNJT04gIT0gJyV7YnVuZGxlcl90aG9yX3ZlcnNpb259Jzsg XAogXCIiCiAKLSMgVFNvcnQKLW1ha2UgLUMgJXtfdnBhdGhfYnVpbGRkaXJ9IC1zIHJ1bnJ1Ynkg VEVTVFJVTl9TQ1JJUFQ9Ii1lIFwiIFwKLSAgbW9kdWxlIEJ1bmRsZXI7IGVuZDsgXAotICByZXF1 aXJlICdidW5kbGVyL3ZlbmRvci90c29ydC9saWIvdHNvcnQnOyBcCi0gIHB1dHMgJyUle2J1bmRs ZXJfdHNvcnRfdmVyc2lvbn06ICV7YnVuZGxlcl90c29ydF92ZXJzaW9ufSc7IFwKLSAgcHV0cyAl UVtCdW5kbGVyOjpUU29ydDo6VkVSU0lPTjogI3tCdW5kbGVyOjpUU29ydDo6VkVSU0lPTn1dOyBc Ci0gIGV4aXQgMSBpZiBCdW5kbGVyOjpUU29ydDo6VkVSU0lPTiAhPSAnJXtidW5kbGVyX3Rzb3J0 X3ZlcnNpb259JzsgXAotXCIiCi0KICMgVVJJLgogbWFrZSAtQyAle192cGF0aF9idWlsZGRpcn0g LXMgcnVucnVieSBURVNUUlVOX1NDUklQVD0iLWUgXCIgXAogICBtb2R1bGUgQnVuZGxlcjsgZW5k OyBcCkBAIC0xOTY0LDE0ICsxOTQ3LDI3IEBAIG1ha2UgLUMgJXtfdnBhdGhfYnVpbGRkaXJ9IHJ1 bnJ1YnkgVEVTVFJVTl9TQ1JJUFQ9IiBcCiAKIAogJWNoYW5nZWxvZworKiBUdWUgSnVsIDE0IDIw MjYgTWFtb3J1IFRBU0FLQSA8bXRhc2FrYUBmZWRvcmFwcm9qZWN0Lm9yZz4gLSA0LjAuNi0zNgor LSBVcGRhdGUgdG8gUnVieSA0LjAuNgorICBSZXNvbHZlczogcmhieiMyNDk5ODg0CistIFJlc29s dmVzOiBDVkUtMjAyNi00MjI0NSAocmhieiMyNDg0MzI0KQorLSBSZXNvbHZlczogQ1ZFLTIwMjYt NDIyNDYgKHJoYnojMjQ5MjA5MCkKKy0gUmVzb2x2ZXM6IENWRS0yMDI2LTQyMjU2CistIFJlc29s dmVzOiBDVkUtMjAyNi00MjI1NworLSBSZXNvbHZlczogQ1ZFLTIwMjYtNDIyNTggKHJoYnojMjQ4 NzMxOSkKKy0gUmVzb2x2ZXM6IENWRS0yMDI2LTQ3MjQwIChyaGJ6IzI0OTg5MTcpCistIFJlc29s dmVzOiBDVkUtMjAyNi00NzI0MQorLSBSZXNvbHZlczogQ1ZFLTIwMjYtNDcyNDIKKwogKiBTdW4g SnVuIDE0IDIwMjYgTWFtb3J1IFRBU0FLQSA8bXRhc2FrYUBmZWRvcmFwcm9qZWN0Lm9yZz4gLSA0 LjAuNS0zNQogLSBCYWNrcG9ydCBydWJ5L29wZW5zc2wgNC4wLjIgZnJvbSBydWJ5IDQuMCBicmFu Y2ggdG8gc3VwcG9ydCBvcGVuc3NsIDQuMAogCiAqIEZyaSBKdW4gMTIgMjAyNiBZYWFrb3YgU2Vs a293aXR6IDx5c2Vsa293aUByZWRoYXQuY29tPgogLSBSZWJ1aWx0IGZvciBvcGVuc3NsIDQuMAog Ci0qIE1vbiBKdW4gMDggMjAyNiBNYW1vcnUgVEFTQUtBIDxtdGFzYWthQGZlZG9yYXByb2plY3Qu b3JnPi0gNC4wLjUtMzMKKyogTW9uIEp1biAwOCAyMDI2IE1hbW9ydSBUQVNBS0EgPG10YXNha2FA ZmVkb3JhcHJvamVjdC5vcmc+IC0gNC4wLjUtMzMKIC0gVXBkYXRlIHRvIFJ1YnkgNC4wLjUKKy0g UmVzb2x2ZXM6IENWRS0yMDI2LTQxMzE2IChyaGJ6IzI0NjMyMTYpCiAKICogU2F0IEphbiAxNyAy MDI2IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+ CiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDRf TWFzc19SZWJ1aWxkCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggZWU4YTZl OC4uODQxNWRmYyAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBA Ci1TSEE1MTIgKHJ1YnktNC4wLjUudGFyLnh6KSA9IDM3OWQ3OGE2ZDFhZjA0NTVkZjYwZGE0NjU1 MWY0MzQzOGFkM2VlODFmODM3ODc1NTRmYzM0Y2IxYzhmZWJiMWJkMzYzZTNkYzFhMDU3YjM0YTY5 Zjk2NTI2ZWZjMzA4ZDNkY2NjNGI4N2QzNjg4OTdjMmQxY2NmMTc5MDk2NDYzCitTSEE1MTIgKHJ1 YnktNC4wLjYudGFyLnh6KSA9IGM5YzM5MTY3NWEwOThiNWEyN2RkNjg3NTcxYWIwYTE2NGM3ODhj YmI4ZGRjYmFiNmQxN2EzZThiM2M0YmEzODkzNDZiMmU2ZDc4MDdkMzhkYjNlNzRkMjI1YzcwZTM3 OGEyOTZkNjBkMGY0NjVjYjBmY2VjOTcwMjI0MmM4M2M2Cg==