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: =?utf-8?b?RGFuIEhvcsOhayA8ZGFuQGRhbm55LmN6Pg==?= To: git-commits@fedoraproject.org Subject: [rpms/s390utils] rawhide: - rebased to 2.44.0 (rhbz#2509807) Date: Fri, 31 Jul 2026 15:24:15 GMT Message-ID: <178551145592.1.14776496512583733006.rpms-s390utils-a05200ed603b@fedoraproject.org> List-ID: X-Git-Repo: rpms/s390utils X-Git-Branch: rawhide X-Git-Rev: a05200ed603b98b46e4421c3cb132322b463a810 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvczM5MHV0aWxzCkJy YW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogYTA1MjAwZWQ2MDNiOThiNDZlNDQyMWMzY2IxMzIzMjJi NDYzYTgxMApBdXRob3IgOiBEYW4gSG9yw6FrIDxkYW5AZGFubnkuY3o+CkRhdGUgICA6IDIwMjYt MDctMzFUMTU6MjM6MTgrMDA6MDAKU3RhdHMgIDogKzkvLTMzODIgaW4gNCBmaWxlKHMpClVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvczM5MHV0aWxzL2MvYTA1MjAw ZWQ2MDNiOThiNDZlNDQyMWMzY2IxMzIzMjJiNDYzYTgxMD9icmFuY2g9cmF3aGlkZQoKTG9nOgot IHJlYmFzZWQgdG8gMi40NC4wIChyaGJ6IzI1MDk4MDcpCgotLS0KZGlmZiAtLWdpdCBhL3MzOTB1 dGlscy0yLjQzLjEtZmVkb3JhLnBhdGNoIGIvczM5MHV0aWxzLTIuNDMuMS1mZWRvcmEucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNzU0NGIuLjAwMDAwMDAKLS0tIGEvczM5 MHV0aWxzLTIuNDMuMS1mZWRvcmEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMzc0ICswLDAg QEAKLUZyb20gOWQ5ZmNhNmU3MjMyMWZhODNlMjkwOGYyOWViZTE5MjI1NzA4NTgzMyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9KYW49MjBIPUMzPUI2cHBuZXI/PSA8 aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLURhdGU6IFdlZCwgMjIgSnVsIDIwMjYgMTg6MzM6NTMg KzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yM10gUHJlcGFyZSBmb3IgbmV4dCByZWxlYXNlCi1N SU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVNpZ25lZC1vZmYtYnk6IEphbiBI w7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIENIQU5HRUxPRy5tZCB8IDEw ICsrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0t Z2l0IGEvQ0hBTkdFTE9HLm1kIGIvQ0hBTkdFTE9HLm1kCi1pbmRleCA4ZGE4MGRkMC4uOTdmYTM0 NTcgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VMT0cubWQKLSsrKyBiL0NIQU5HRUxPRy5tZAotQEAgLTEs NiArMSwxNiBAQAotIFJlbGVhc2UgaGlzdG9yeSBmb3IgczM5MC10b29scyAoTUlUIHZlcnNpb24p Ci0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSsqIF9f djIueHgueCAoMjB4eC14eC14eClfXwotKwotKyAgRm9yIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiA3 LngKLSsKLSsgIEFkZCBuZXcgdG9vbHMgLyBsaWJyYXJpZXM6Ci0rCi0rICBDaGFuZ2VzIG9mIGV4 aXN0aW5nIHRvb2xzOgotKwotKyAgQnVnIEZpeGVzOgotKwotICogX192Mi40My4xICgyMDI2LTA3 LTIyKV9fCi0gCi0gICBGb3IgTGludXgga2VybmVsIHZlcnNpb246IDcuMQotLS0gCi0yLjU1LjAK LQotCi1Gcm9tIGU1NWUwZTQ3MGEyN2NjMjI0NTAyZmQzOTY5ZmM5OWRlNjc3ZmMxM2MgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4 LmlibS5jb20+Ci1EYXRlOiBUaHUsIDE2IEFwciAyMDI2IDE0OjA1OjM3ICswMjAwCi1TdWJqZWN0 OiBbUEFUQ0ggMDIvMjNdIG9wdGljc21vbjogRml4IHdyb25nIEpTT04gcHJpbnQgZm9yIHR4X2Zh dWx0Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0 PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSAidHhfZmF1bHQi IGZpZWxkIGluIHRoZSBKU09OIG91dHB1dCBhY2NpZGVudGFsbHkgY29udGFpbmVkIHRoZQotcnhf bG9zIHZhbHVlIGluc3RlYWQgb2YgdGhlIHR4X2ZhdWx0IG9uZS4gQ2hhbmdlIGl0IHRvIHRoZSBj b3JyZWN0Ci12YWx1ZS4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW1wYWN0IHRoZSBkYXRhIHJl bGF5ZWQgdG8gZmlybXdhcmUgYXMKLXRoYXQgdXNlcyB0aGUgcmF3IG1vZHVsZSBkYXRhLgotCi1G aXhlczogYzM0YWRiOWNhYmVlICgib3B0aWNzbW9uOiBJbnRyb2R1Y2Ugb3B0aWNzbW9uIHRvb2wi KQotUmV2aWV3ZWQtYnk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNp Z25lZC1vZmYtYnk6IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNp Z25lZC1vZmYtYnk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQot IG9wdGljc21vbi9vcHRpY3Ntb24uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL29wdGljc21vbi9vcHRpY3Ntb24u YyBiL29wdGljc21vbi9vcHRpY3Ntb24uYwotaW5kZXggZWJhZTc1YWQuLjVhNTJmOGE4IDEwMDY0 NAotLS0tIGEvb3B0aWNzbW9uL29wdGljc21vbi5jCi0rKysgYi9vcHRpY3Ntb24vb3B0aWNzbW9u LmMKLUBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIHZvaWQgb3B0aWNzX2pzb25fcHJpbnQoc3Ry dWN0IG9wdGljc21vbl9jdHggKmN0eCwgc3RydWN0IHpwY2lfbmV0ZGV2ICpuZCwKLSAJdXRpbF9m bXRfcGFpcihGTVRfUVVPVEUsICJ0eXBlIiwgb3B0aWNzX3R5cGVfc3RyKG9wdGljc190eXBlKG9p KSkpOwotIAl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9URSwgInJ4X2xvcyIsIG9wdGljc19sb3Nfc3Ry KG9wdGljc19yeF9sb3Mob2kpKSk7Ci0gCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAidHhfbG9z Iiwgb3B0aWNzX2xvc19zdHIob3B0aWNzX3R4X2xvcyhvaSkpKTsKLS0JdXRpbF9mbXRfcGFpcihG TVRfUVVPVEUsICJ0eF9mYXVsdCIsIG9wdGljc19sb3Nfc3RyKG9wdGljc19yeF9sb3Mob2kpKSk7 Ci0rCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAidHhfZmF1bHQiLCBvcHRpY3NfbG9zX3N0cihv cHRpY3NfdHhfZmF1bHQob2kpKSk7Ci0gCWlmIChjdHgtPm9wdHMubW9kdWxlX2luZm8pCi0gCQlt b2R1bGVfaW5mb19wYWlyKG9pKTsKLSAJdXRpbF9mbXRfb2JqX2VuZCgpOwotLS0gCi0yLjU1LjAK LQotCi1Gcm9tIDkwNWMzOTIxYWYzMWIwOTYxNDk3MzhhNDQ4ZTVlMDEyMGY1MzhmYjIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4 LmlibS5jb20+Ci1EYXRlOiBUaHUsIDE2IEFwciAyMDI2IDEzOjQ3OjU4ICswMjAwCi1TdWJqZWN0 OiBbUEFUQ0ggMDMvMjNdIG9wdGljc21vbjogQ2xvc2UgZXBvbGwgZmQgaW4gbW9uaXRvcl93YWl0 X2xvb3AoKQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hh cnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgZXBvbGwg ZmQgKGVwZmQpIGluIG1vbml0b3Jfd2FpdF9sb29wKCkgaXMgbmV2ZXIgY2xvc2VkLiBDbG9zZSBp dCBpbgotYWxsIHJldHVybiBwYXRocy4gQWxzbyB0aGVyZSBpcyBubyBleHBsaWNpdCBjaGVjayBm b3IgYW4gZXJyb3IgcmV0dXJuIG9mCi1lcG9sbF9jcmVhdGUxKCkgYWRkIHRoYXQgdG9vLgotCi1G aXhlczogYzM0YWRiOWNhYmVlICgib3B0aWNzbW9uOiBJbnRyb2R1Y2Ugb3B0aWNzbW9uIHRvb2wi KQotUmV2aWV3ZWQtYnk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNp Z25lZC1vZmYtYnk6IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNp Z25lZC1vZmYtYnk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQot IG9wdGljc21vbi9vcHRpY3Ntb24uYyB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAx IGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9vcHRpY3Ntb24vb3B0aWNzbW9uLmMgYi9vcHRpY3Ntb24vb3B0aWNzbW9uLmMKLWlu ZGV4IDVhNTJmOGE4Li5hN2ZhOWZjMiAxMDA2NDQKLS0tLSBhL29wdGljc21vbi9vcHRpY3Ntb24u YwotKysrIGIvb3B0aWNzbW9uL29wdGljc21vbi5jCi1AQCAtMjcxLDU0ICsyNzEsNTcgQEAgdm9p ZCBvbl9saW5rX2NoYW5nZShzdHJ1Y3QgenBjaV9uZXRkZXYgKm5ldGRldiwgdm9pZCAqYXJnKQot IHN0YXRpYyBpbnQgbW9uaXRvcl93YWl0X2xvb3Aoc3RydWN0IG9wdGljc21vbl9jdHggKmN0eCwg aW50IHNpZ2ZkLCBpbnQgdGltZXJmZCkKLSB7Ci0gCXN0cnVjdCBlcG9sbF9ldmVudCBldmVudHNb TUFYX0VWRU5UU107Ci0rCWludCBpLCBubGZkLCBlcGZkLCBuZmRzLCByZXQgPSAtRUlPOwotIAlz dHJ1Y3Qgc2lnbmFsZmRfc2lnaW5mbyBmZHNpOwotLQlpbnQgaSwgbmxmZCwgZXBmZCwgbmZkczsK LSAJc3RydWN0IGVwb2xsX2V2ZW50IGV2OwotIAl1aW50NjRfdCBleHBpcmF0aW9uczsKLSAJc3Np emVfdCBzcmVhZDsKLSAKLSAJZXBmZCA9IGVwb2xsX2NyZWF0ZTEoRVBPTExfQ0xPRVhFQyk7Ci0r CWlmIChlcGZkIDwgMCkKLSsJCXJldHVybiAtRUlPOwotIAotIAlldi5ldmVudHMgPSBFUE9MTElO OwotIAlldi5kYXRhLmZkID0gc2lnZmQ7Ci0gCWlmIChlcG9sbF9jdGwoZXBmZCwgRVBPTExfQ1RM X0FERCwgc2lnZmQsICZldikgPT0gLTEpCi0tCQlyZXR1cm4gLUVJTzsKLSsJCWdvdG8gb3V0X2Ns b3NlOwotIAotIAlldi5ldmVudHMgPSBFUE9MTElOOwotIAlldi5kYXRhLmZkID0gdGltZXJmZDsK LSAJaWYgKGVwb2xsX2N0bChlcGZkLCBFUE9MTF9DVExfQURELCB0aW1lcmZkLCAmZXYpID09IC0x KQotLQkJcmV0dXJuIC1FSU87Ci0rCQlnb3RvIG91dF9jbG9zZTsKLSAKLSAJbmxmZCA9IGxpbmtf bW9uX25sX3dhaXRmZF9nZXRmZCgmY3R4LT5sY3R4KTsKLSAJZXYuZXZlbnRzID0gRVBPTExJTjsK LSAJZXYuZGF0YS5mZCA9IG5sZmQ7Ci0gCWlmIChlcG9sbF9jdGwoZXBmZCwgRVBPTExfQ1RMX0FE RCwgbmxmZCwgJmV2KSA9PSAtMSkKLS0JCXJldHVybiAtRUlPOwotKwkJZ290byBvdXRfY2xvc2U7 Ci0gCi0gCXdoaWxlICgxKSB7Ci0gCQluZmRzID0gZXBvbGxfd2FpdChlcGZkLCBldmVudHMsIE1B WF9FVkVOVFMsIC0xKTsKLSAJCWlmIChuZmRzIDwgMCkKLS0JCQlyZXR1cm4gbmZkczsKLSsJCQln b3RvIG91dF9jbG9zZTsKLSAJCWZvciAoaSA9IDA7IGkgPCBuZmRzOyBpKyspIHsKLSAJCQkvKiBz aWduYWwgZmQgKi8KLSAJCQlpZiAoZXZlbnRzW2ldLmRhdGEuZmQgPT0gc2lnZmQpIHsKLSAJCQkJ c3JlYWQgPSByZWFkKHNpZ2ZkLCAmZmRzaSwgc2l6ZW9mKGZkc2kpKTsKLSAJCQkJaWYgKHNyZWFk ICE9IHNpemVvZihmZHNpKSkKLS0JCQkJCXJldHVybiAtRUlPOwotKwkJCQkJZ290byBvdXRfY2xv c2U7Ci0gCQkJCXN3aXRjaCAoZmRzaS5zc2lfc2lnbm8pIHsKLSAJCQkJY2FzZSBTSUdJTlQ6Ci0g CQkJCWNhc2UgU0lHVEVSTToKLSAJCQkJY2FzZSBTSUdRVUlUOgotLQkJCQkJcmV0dXJuIDA7Ci0r CQkJCQlyZXQgPSAwOwotKwkJCQkJZ290byBvdXRfY2xvc2U7Ci0gCQkJCS8qIFVuZXhwZWN0ZWQg c2lnbmFsICovCi0gCQkJCWRlZmF1bHQ6Ci0tCQkJCQlyZXR1cm4gLUVJTzsKLSsJCQkJCWdvdG8g b3V0X2Nsb3NlOwotIAkJCQl9Ci0gCQkJCS8qIHRpbWVyIGZkICovCi0gCQkJfSBlbHNlIGlmIChl dmVudHNbaV0uZGF0YS5mZCA9PSB0aW1lcmZkKSB7Ci0gCQkJCXNyZWFkID0gcmVhZCh0aW1lcmZk LCAmZXhwaXJhdGlvbnMsIHNpemVvZih1aW50NjRfdCkpOwotIAkJCQlpZiAoc3JlYWQgIT0gc2l6 ZW9mKHVpbnQ2NF90KSkKLS0JCQkJCXJldHVybiAtRUlPOwotKwkJCQkJZ290byBvdXRfY2xvc2U7 Ci0gCQkJCWlmICghZXhwaXJhdGlvbnMpCi0gCQkJCQljb250aW51ZTsKLSAJCQkJZHVtcF9hbGxf YWRhcHRlcl9kYXRhKGN0eCk7Ci1AQCAtMzI4LDcgKzMzMSw5IEBAIHN0YXRpYyBpbnQgbW9uaXRv cl93YWl0X2xvb3Aoc3RydWN0IG9wdGljc21vbl9jdHggKmN0eCwgaW50IHNpZ2ZkLCBpbnQgdGlt ZXJmZCkKLSAJCQl9Ci0gCQl9Ci0gCX0KLS0JcmV0dXJuIDA7Ci0rb3V0X2Nsb3NlOgotKwljbG9z ZShlcGZkKTsKLSsJcmV0dXJuIHJldDsKLSB9Ci0gCi0gc3RhdGljIGludCBtb25pdG9yX21vZGUo c3RydWN0IG9wdGljc21vbl9jdHggKmN0eCkKLS0tIAotMi41NS4wCi0KLQotRnJvbSAxZjMzOWE5 ZTdlZTYwNjExYjUwNTU3MzVhMDI5NjMyNmM3OTJiNzA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotRGF0ZTog VGh1LCAxNiBBcHIgMjAyNiAxMzowODoyNyArMDIwMAotU3ViamVjdDogW1BBVENIIDA0LzIzXSBv cHRpY3Ntb246IFJldHVybiBlcnJvcnMgZnJvbSBtb25pdG9yX3dhaXRfbG9vcCgpIGluCi0gbW9u aXRvcl9tb2RlKCkKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRG9uJ3Qg aWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgbW9uaXRvcl93YWl0X2xvb3AoKSBidXQgaW5zdGVh ZCBmb3J3YXJkCi1pdCB0byB0aGUgY2FsbGVyLgotCi1GaXhlczogYzM0YWRiOWNhYmVlICgib3B0 aWNzbW9uOiBJbnRyb2R1Y2Ugb3B0aWNzbW9uIHRvb2wiKQotUmV2aWV3ZWQtYnk6IEphbiBIw7Zw cG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE5pa2xhcyBTY2hu ZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBIw7ZwcG5l ciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIG9wdGljc21vbi9vcHRpY3Ntb24uYyB8 IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQot ZGlmZiAtLWdpdCBhL29wdGljc21vbi9vcHRpY3Ntb24uYyBiL29wdGljc21vbi9vcHRpY3Ntb24u YwotaW5kZXggYTdmYTlmYzIuLjZkNzU5NWIxIDEwMDY0NAotLS0tIGEvb3B0aWNzbW9uL29wdGlj c21vbi5jCi0rKysgYi9vcHRpY3Ntb24vb3B0aWNzbW9uLmMKLUBAIC0zODEsNyArMzgxLDcgQEAg c3RhdGljIGludCBtb25pdG9yX21vZGUoc3RydWN0IG9wdGljc21vbl9jdHggKmN0eCkKLSAJCWdv dG8gY2xvc2VfdGltZXJmZDsKLSAJfQotIAotLQltb25pdG9yX3dhaXRfbG9vcChjdHgsIHNpZ2Zk LCB0aW1lcmZkKTsKLSsJcmV0ID0gbW9uaXRvcl93YWl0X2xvb3AoY3R4LCBzaWdmZCwgdGltZXJm ZCk7Ci0gCi0gCWxpbmtfbW9uX25sX3dhaXRmZF9kZXN0cm95KCZjdHgtPmxjdHgpOwotIAl1dGls X2ZtdF9leGl0KCk7Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gNjg0N2I2YThjZjYwNTEwYTYzYzVl NGYzMmNhNDI5Y2E5ZjVkMjRhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pa2xh cyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLURhdGU6IFRodSwgMTYgQXByIDIw MjYgMTE6NDY6NTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yM10gb3B0aWNzbW9uOiBGaXgg ZXJyb3IgcGF0aCBmcmVlIG9mIHN0cnVjdCBvcHRpY3MgaW4KLSBldGh0b29sX25sX2dldF9vcHRp Y3MoKQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1XaGVuIGV0aHRvb2xf bmxfZ2V0X29wdGljcygpIGZhaWxzIGFmdGVyIGV0aHRvb2xfbmxfY2IoKSBoYXMgYWxsb2NhdGVk Ci1vaS0+cmF3IHRoaXMgbWVtb3J5IHdvdWxkIGxlYWsgYmVjYXVzZSBvbmx5IHRoZSBzdHJ1Y3Qg b3B0aWNzKiBpdHNlbGYKLXdhcyBmcmVlZC4gRml4IHRoaXMgYnkgdXNpbmcgb3B0aWNzX2ZyZWUo KSBhbmQgcmVseWluZyBvbiBmcmVlKG9pLT5yYXcpCi1iZWluZyBhIG5vLW9wIGZvciBOVUxMIHBv aW50ZXJzIGluIGNvbWJpbmF0aW9uIHdpdGggdXNpbmcgdXRpbF96YWxsb2MoKQotdG8gaGFuZGxl IGVycm9ycyBib3RoIGJlZm9yZSBhbmQgYWZ0ZXIgb2ktPnJhdyB3YXMgYWxsb2NhdGVkLgotCi1G aXhlczogYzM0YWRiOWNhYmVlICgib3B0aWNzbW9uOiBJbnRyb2R1Y2Ugb3B0aWNzbW9uIHRvb2wi KQotUmV2aWV3ZWQtYnk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNp Z25lZC1vZmYtYnk6IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNp Z25lZC1vZmYtYnk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQot IG9wdGljc21vbi9ldGh0b29sLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9vcHRpY3Ntb24vZXRodG9vbC5jIGIv b3B0aWNzbW9uL2V0aHRvb2wuYwotaW5kZXggMTAzNjQ0YTEuLmE0NDhlYjI1IDEwMDY0NAotLS0t IGEvb3B0aWNzbW9uL2V0aHRvb2wuYwotKysrIGIvb3B0aWNzbW9uL2V0aHRvb2wuYwotQEAgLTI3 Miw3ICsyNzIsNyBAQCBpbnQgZXRodG9vbF9ubF9nZXRfb3B0aWNzKHN0cnVjdCBldGh0b29sX25s X2N0eCAqY3R4LCBjb25zdCBjaGFyICpuZXRkZXYsIHN0cnVjdAotIAlyZXR1cm4gcmM7Ci0gCi0g b3V0X2Vycl9mcmVlX29pOgotLQlmcmVlKCpvaSk7Ci0rCW9wdGljc19mcmVlKCpvaSk7Ci0gCSpv aSA9IE5VTEw7Ci0gCXJldHVybiByYzsKLSB9Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gMzY5NmQ2 YmQwODU4MDA2YmFjZTE4MTljM2JhNDM2NDkxZjc1MGM3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLURhdGU6 IFRodSwgMTYgQXByIDIwMjYgMTQ6NDA6NDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8yM10g b3B0aWNzbW9uOiBIYW5kbGUgZXJyb3IgcmV0dXJuIG9mIGV0aHRvb2xfbmxfY29ubmVjdCgpCi1N SU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLURvbid0IGp1c3QgaWdub3JlIHRo ZSByZXR1cm4gb2YgZXRodG9vbF9ubF9jb25uZWN0KCkuIFRoaXMgd291bGQgYWxzbwotb3RoZXJ3 aXNlIGxlYWQgdG8gaW52YWxpZCBzb2NrZXQgYWNjZXNzZXMgbGF0ZXIuIEFsc28gbWFrZQotZXRo dG9vbF9ubF9jb25uZWN0KCkgcmV0dXJuIG5lZ2F0aXZlIGVycm9yIHZhbHVlcyBpbnN0ZWFkIG9m Ci1FWElUX0ZBSUxVUkUuCi0KLVJldmlld2VkLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxp bnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxp bnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4 LmlibS5jb20+Ci0tLS0KLSBvcHRpY3Ntb24vZXRodG9vbC5jICAgfCA2ICsrKy0tLQotIG9wdGlj c21vbi9vcHRpY3Ntb24uYyB8IDQgKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL2V0aHRvb2wuYyBi L29wdGljc21vbi9ldGh0b29sLmMKLWluZGV4IGE0NDhlYjI1Li5hYzFhMDdmYiAxMDA2NDQKLS0t LSBhL29wdGljc21vbi9ldGh0b29sLmMKLSsrKyBiL29wdGljc21vbi9ldGh0b29sLmMKLUBAIC01 NiwxMyArNTYsMTMgQEAgaW50IGV0aHRvb2xfbmxfY29ubmVjdChzdHJ1Y3QgZXRodG9vbF9ubF9j dHggKmN0eCkKLSAJc2sgPSBubF9zb2NrZXRfYWxsb2MoKTsKLSAJaWYgKCFzaykgewotIAkJbmxf cGVycm9yKE5MRV9OT01FTSwgImFsbG9jIik7Ci0tCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwotKwkJ cmV0dXJuIC1FTk9NRU07Ci0gCX0KLSAKLSAJcmMgPSBnZW5sX2Nvbm5lY3Qoc2spOwotIAlpZiAo cmMpIHsKLSAJCW5sX3BlcnJvcihyYywgImNvbm5lY3QiKTsKLS0JCXJjID0gRVhJVF9GQUlMVVJF OwotKwkJcmMgPSAtRUlPOwotIAkJZ290byBlcnJfZnJlZTsKLSAJfQotIAotQEAgLTcyLDcgKzcy LDcgQEAgaW50IGV0aHRvb2xfbmxfY29ubmVjdChzdHJ1Y3QgZXRodG9vbF9ubF9jdHggKmN0eCkK LSAJCQlmcHJpbnRmKHN0ZGVyciwgIkV0aHRvb2wgbmV0bGluayBmYW1pbHkgbm90IGZvdW5kXG4i KTsKLSAJCWVsc2UKLSAJCQlubF9wZXJyb3IoZXRodG9vbF9pZCwgImN0cmwgcmVzb2x2ZSIpOwot LQkJcmMgPSBFWElUX0ZBSUxVUkU7Ci0rCQlyYyA9IC1FSU87Ci0gCQlnb3RvIGVycl9jbG9zZTsK LSAJfQotIAljdHgtPnNrID0gc2s7Ci1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL29wdGljc21vbi5j IGIvb3B0aWNzbW9uL29wdGljc21vbi5jCi1pbmRleCA2ZDc1OTViMS4uYzUwMjc1ZDQgMTAwNjQ0 Ci0tLS0gYS9vcHRpY3Ntb24vb3B0aWNzbW9uLmMKLSsrKyBiL29wdGljc21vbi9vcHRpY3Ntb24u YwotQEAgLTM5OCw3ICszOTgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0g CWludCByZXQ7Ci0gCi0gCXBhcnNlX2NtZGxpbmUoYXJnYywgYXJndiwgJmN0eC5vcHRzKTsKLS0J ZXRodG9vbF9ubF9jb25uZWN0KCZjdHguZXRodG9vbF9jdHgpOwotKwlyZXQgPSBldGh0b29sX25s X2Nvbm5lY3QoJmN0eC5ldGh0b29sX2N0eCk7Ci0rCWlmIChyZXQpCi0rCQlyZXR1cm4gcmV0Owot IAlpZiAoY3R4Lm9wdHMubW9uaXRvcikKLSAJCXJldCA9IG1vbml0b3JfbW9kZSgmY3R4KTsKLSAJ ZWxzZQotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIDhiMzhiZjM3YjA2YWQ4MWQ5MzJmMzU0NTMzMGMz ZGFhNjQ2OTViYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgU2NobmVs bGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1EYXRlOiBUaHUsIDMwIEFwciAyMDI2IDE3OjEz OjE2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjNdIG9wdGljc21vbjogRml4IHdyb25nIHNp emUgY2hlY2sgZm9yCi0gT1BUSUNTX1FTRlAyOF9MT1NfSU1QTEVNRU5URURfT0ZGU0VUCi1NSU1F LVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1D b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBjb2RlIGFjY2Vzc2VzIE9QVElD U19RU0ZQMjhfTE9TX0lNUExFTUVOVEVEX09GRlNFVCBzbyB0aGUgc2l6ZSBuZWVkcwotdG8gYmUg b25lIGxhcmdlciBmb3IgdGhlIExPUyB0byBiZSBhY2Nlc3NpYmxlLgotCi1GaXhlczogYzM0YWRi OWNhYmVlICgib3B0aWNzbW9uOiBJbnRyb2R1Y2Ugb3B0aWNzbW9uIHRvb2wiKQotUmV2aWV3ZWQt Ynk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6 IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6 IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIG9wdGljc21vbi9v cHRpY3NfaW5mby5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL29wdGljc19pbmZvLmMgYi9vcHRp Y3Ntb24vb3B0aWNzX2luZm8uYwotaW5kZXggZmMwNDFkYTMuLjAwZDhkNzIzIDEwMDY0NAotLS0t IGEvb3B0aWNzbW9uL29wdGljc19pbmZvLmMKLSsrKyBiL29wdGljc21vbi9vcHRpY3NfaW5mby5j Ci1AQCAtNjYsNyArNjYsNyBAQCBib29sIG9wdGljc19sb3NfaW1wbGVtZW50ZWQoc3RydWN0IG9w dGljcyAqb2kpCi0gCX0gZWxzZSBpZiAodHlwZSA9PSBPUFRJQ1NfVFlQRV9RU0ZQMjgpIHsKLSAJ CWlmIChvaS0+c2l6ZSA8IE9QVElDU19RU0ZQMjhfTE9TX09GRlNFVCArIDEpCi0gCQkJcmV0dXJu IGZhbHNlOwotLQkJaWYgKG9pLT5zaXplIDwgT1BUSUNTX1FTRlAyOF9MT1NfSU1QTEVNRU5URURf T0ZGU0VUKQotKwkJaWYgKG9pLT5zaXplIDwgT1BUSUNTX1FTRlAyOF9MT1NfSU1QTEVNRU5URURf T0ZGU0VUICsgMSkKLSAJCQlyZXR1cm4gZmFsc2U7Ci0gCQlpbXBsZW1lbnRlZCA9IG9pLT5yYXdb T1BUSUNTX1FTRlAyOF9MT1NfSU1QTEVNRU5URURfT0ZGU0VUXTsKLSAJCS8qCi0tLSAKLTIuNTUu MAotCi0KLUZyb20gZTdiYzRhNWQzMTAzZjc0NWNhZDU3NWEzYWNmNDhiYWYyN2E0ZDc2MiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGlu dXguaWJtLmNvbT4KLURhdGU6IE1vbiwgNCBNYXkgMjAyNiAxMzo0MTozNCArMDIwMAotU3ViamVj dDogW1BBVENIIDA4LzIzXSBvcHRpY3Ntb246IEVuZm9yY2UgMSBzZWNvbmQgYXMgbWluaW1hbCBp bnRlcnZhbAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hh cnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1TbyBmYXIgaXQg d2FzIHBvc3NpYmxlIGZvciB0aGUgdXNlciB0byBzcGVjaWZ5IGFuIGludGVydmFsIG9mIDAgd2hp Y2gKLXdvdWxkIHJlc3VsdCBpbiBub3QgcmUtYXJtaW5nIHRoZSB0aW1lciBhdCBhbGwgdGh1cyBk aXNhYmxpbmcgaW50ZXJ2YWwKLWJhc2VkIGRhdGEgY29sbGVjdGlvbi4gV2hpbGUgdGhpcyB3b3Vs ZCBzdGlsbCBkbyBvcHRpY3MgZGF0YSBjb2xsZWN0aW9uCi1vbiBzdGFydHVwIGFuZCBsaW5rIGNo YW5nZXMgdGhlIGludGVudGlvbiBpcyB0byBjb2xsZWN0IGRhdGEgYXQgbGVhc3QKLWV2ZXJ5IDI0 IGhvdXJzLiBJZiBpbnRlcnZhbCBpcyBnaXZlbiBhcyAwIHRyZWF0IHRoaXMgYXMgbWluaW11bSB1 cGRhdGUKLWludGVydmFsIG9mIDEgc2Vjb25kLgotCi1GaXhlczogYzM0YWRiOWNhYmVlICgib3B0 aWNzbW9uOiBJbnRyb2R1Y2Ugb3B0aWNzbW9uIHRvb2wiKQotUmV2aWV3ZWQtYnk6IEphbiBIw7Zw cG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE5pa2xhcyBTY2hu ZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBIw7ZwcG5l ciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIG9wdGljc21vbi9vcHRpY3Ntb24uYyB8 IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9v cHRpY3Ntb24vb3B0aWNzbW9uLmMgYi9vcHRpY3Ntb24vb3B0aWNzbW9uLmMKLWluZGV4IGM1MDI3 NWQ0Li5mODYwNTZkNCAxMDA2NDQKLS0tLSBhL29wdGljc21vbi9vcHRpY3Ntb24uYwotKysrIGIv b3B0aWNzbW9uL29wdGljc21vbi5jCi1AQCAtOTYsNiArOTYsOCBAQCBzdGF0aWMgdm9pZCBwYXJz ZV9jbWRsaW5lKGludCBhcmdjLCBjaGFyICphcmd2W10sIHN0cnVjdCBvcHRpb25zICpvcHRzKQot IAkJCX0KLSAJCQlpZiAoc2Vjb25kcyA8IDg2NDAwKQotIAkJCQlvcHRzLT5pbnRlcnZhbF9zZWNv bmRzID0gc2Vjb25kczsKLSsJCQlpZiAoc2Vjb25kcyA8IDEpCi0rCQkJCW9wdHMtPmludGVydmFs X3NlY29uZHMgPSAxOwotIAkJCWJyZWFrOwotIAkJY2FzZSAnaCc6Ci0gCQkJdXRpbF9wcmdfcHJp bnRfaGVscCgpOwotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIGU4NTUwYTRmOGRjNjE4MjJjMTgxNmRh NWIxN2QxODU0NDg2OGVlMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMg U2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1EYXRlOiBUdWUsIDkgRGVjIDIwMjUg MTc6NTM6NTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8yM10gb3B0aWNzbW9uOiB6cGNpbW9u OiBSZW5hbWUgb3B0aWNzbW9uIHRvIHpwY2ltb24KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50 LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp bmc6IDhiaXQKLQotVGhlIG9wdGljc21vbiB0b29sIHN0YXJ0ZWQgb3V0IGFzIGEgdG9vbCBmb3Ig bW9uaXRvcmluZyB0aGUgaGVhbHRoIG9mCi1vcHRpY2FsIG1vZHVsZXMgaW4gZGlyZWN0bHkgYXR0 YWNoZWQgUENJIE5JQ3MuIEluIHRoZSBmdXR1cmUgaG93ZXZlciBpdAotd2lsbCBhbHNvIG1vbml0 b3IgdGhlIGhlYWx0aCBvZiBvdGhlciBQQ0kgZGV2aWNlcy4gSW4gcGFydGljdWxhciBpbgotYSBm aXJzdCBzdGVwIGl0IHdpbGwgbW9uaXRvciB0aGUgaGVhbHRoIG9mIGRpcmVjdGx5IGF0dGFjaGVk IE5WTWUKLWRldmljZXMuCi0KLVRvIHJlZmxlY3QgdGhpcyBicm9hZGVuaW5nIG9mIGl0cyBzY29w ZSByZW5hbWUgb3B0aWNzbW9uIHRvIHpwY2ltb24uIEFkZAotenBjaW1vbi5zZXJ2aWNlIGFuZCBp bnN0YWxsIGl0IGJvdGggdW5kZXIgdGhlIG5ldyBuYW1lIGFuZCBzeW1saW5rZWQgYXMKLW9wdGlj c21vbi5zZXJ2aWNlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gU2luY2UgdXNlcnMgYXJl IGV4cGVjdGVkCi10byBtb3N0bHkganVzdCBlbmFibGUgdGhlIHNlcnZpY2UgdGhpcyBrZWVwcyBv bGQgaW5zdHJ1Y3Rpb25zIGp1c3QKLXdvcmtpbmcuCi0KLVJldmlld2VkLWJ5OiBKYW4gSMO2cHBu ZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBOaWtsYXMgU2NobmVs bGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gSMO2cHBuZXIg PGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci0tLS0KLSAuZ2l0aWdub3JlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKy0tLQotIE1ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gUkVBRE1FLm1kICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQotIHNjcmlwdHMvZGJnaW5m by5zaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3lzdGVtZC9NYWtlZmls ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrKy0KLSAuLi5wdGljc21vbi5z ZXJ2aWNlLmluID0+IHpwY2ltb24uc2VydmljZS5pbn0gfCAgNiArKystLS0KLSB7b3B0aWNzbW9u ID0+IHpwY2ltb259L01ha2VmaWxlICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrLS0tLS0t LS0tCi0gLi4uL2F1dG9jb21wbGV0aW9uX2dlbmVyYXRvcl9ob3N0LmMgICAgICAgICAgIHwgIDMg KystCi0ge29wdGljc21vbiA9PiB6cGNpbW9ufS9ldGh0b29sLmMgICAgICAgICAgICAgIHwgIDAK LSB7b3B0aWNzbW9uID0+IHpwY2ltb259L2V0aHRvb2wuaCAgICAgICAgICAgICAgfCAgMAotIHtv cHRpY3Ntb24gPT4genBjaW1vbn0vbGlua19tb24uYyAgICAgICAgICAgICB8ICAwCi0ge29wdGlj c21vbiA9PiB6cGNpbW9ufS9saW5rX21vbi5oICAgICAgICAgICAgIHwgIDAKLSB7b3B0aWNzbW9u ID0+IHpwY2ltb259L29wdGljc19pbmZvLmMgICAgICAgICAgfCAgMAotIHtvcHRpY3Ntb24gPT4g enBjaW1vbn0vb3B0aWNzX2luZm8uaCAgICAgICAgICB8ICAwCi0ge29wdGljc21vbiA9PiB6cGNp bW9ufS9vcHRpY3Nfc2NscC5jICAgICAgICAgIHwgIDAKLSB7b3B0aWNzbW9uID0+IHpwY2ltb259 L29wdGljc19zY2xwLmggICAgICAgICAgfCAgMAotIG9wdGljc21vbi9vcHRpY3Ntb24uOCA9PiB6 cGNpbW9uL3pwY2ltb24uOCAgICB8IDEwICsrKysrLS0tLS0KLSBvcHRpY3Ntb24vb3B0aWNzbW9u LmMgPT4genBjaW1vbi96cGNpbW9uLmMgICAgfCAgNSArKy0tLQotIC4uLi9vcHRpY3Ntb25fY2xp LmggPT4genBjaW1vbi96cGNpbW9uX2NsaS5oICB8ICAwCi0gMTkgZmlsZXMgY2hhbmdlZCwgMzkg aW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCi0gcmVuYW1lIHN5c3RlbWQve29wdGljc21v bi5zZXJ2aWNlLmluID0+IHpwY2ltb24uc2VydmljZS5pbn0gKDY2JSkKLSByZW5hbWUge29wdGlj c21vbiA9PiB6cGNpbW9ufS9NYWtlZmlsZSAoNzklKQotIHJlbmFtZSB7b3B0aWNzbW9uID0+IHpw Y2ltb259L2F1dG9jb21wbGV0aW9uX2dlbmVyYXRvcl9ob3N0LmMgKDcyJSkKLSByZW5hbWUge29w dGljc21vbiA9PiB6cGNpbW9ufS9ldGh0b29sLmMgKDEwMCUpCi0gcmVuYW1lIHtvcHRpY3Ntb24g PT4genBjaW1vbn0vZXRodG9vbC5oICgxMDAlKQotIHJlbmFtZSB7b3B0aWNzbW9uID0+IHpwY2lt b259L2xpbmtfbW9uLmMgKDEwMCUpCi0gcmVuYW1lIHtvcHRpY3Ntb24gPT4genBjaW1vbn0vbGlu a19tb24uaCAoMTAwJSkKLSByZW5hbWUge29wdGljc21vbiA9PiB6cGNpbW9ufS9vcHRpY3NfaW5m by5jICgxMDAlKQotIHJlbmFtZSB7b3B0aWNzbW9uID0+IHpwY2ltb259L29wdGljc19pbmZvLmgg KDEwMCUpCi0gcmVuYW1lIHtvcHRpY3Ntb24gPT4genBjaW1vbn0vb3B0aWNzX3NjbHAuYyAoMTAw JSkKLSByZW5hbWUge29wdGljc21vbiA9PiB6cGNpbW9ufS9vcHRpY3Nfc2NscC5oICgxMDAlKQot IHJlbmFtZSBvcHRpY3Ntb24vb3B0aWNzbW9uLjggPT4genBjaW1vbi96cGNpbW9uLjggKDg4JSkK LSByZW5hbWUgb3B0aWNzbW9uL29wdGljc21vbi5jID0+IHpwY2ltb24venBjaW1vbi5jICg5OCUp Ci0gcmVuYW1lIG9wdGljc21vbi9vcHRpY3Ntb25fY2xpLmggPT4genBjaW1vbi96cGNpbW9uX2Ns aS5oICgxMDAlKQotCi1kaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKLWluZGV4 IDM2YTJjODUxLi4zN2VjNGQ4YiAxMDA2NDQKLS0tLSBhLy5naXRpZ25vcmUKLSsrKyBiLy5naXRp Z25vcmUKLUBAIC0xMDIsOSArMTAyLDExIEBAIGxzc3RwL19sc3N0cAotIGxzc3RwL2xzc3RwLmJh c2gKLSBtb25fdG9vbHMvbW9uX2Zzc3RhdGQKLSBtb25fdG9vbHMvbW9uX3Byb2NkCi0tb3B0aWNz bW9uL29wdGljc21vbgotLW9wdGljc21vbi9fb3B0aWNzbW9uCi0tb3B0aWNzbW9uL29wdGljc21v bi5iYXNoCi0renBjaW1vbi96cGNpbW9uCi0renBjaW1vbi96cGNpbW9uLmJhc2gKLSt6cGNpbW9u L196cGNpbW9uCi0renBjaW1vbi9vcHRpY3Ntb24uYmFzaAotK3pwY2ltb24vX29wdGljc21vbgot IG9zYXNubXBkL29zYXNubXBkCi0gcWV0aGFycC9xZXRoYXJwCi0gcWV0aHFvYXQvcWV0aHFvYXQK LWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA0ZGJjZThjYy4uNWFhZmI1 NmMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0xNSw3ICsxNSw3 IEBAIFRPT0xfRElSUyA9IHppcGwgemR1bXAgZmRhc2QgZGFzZGZtdCBkYXNkdmlldyB0dW5lZGFz ZCBcCi0gCSAgIHZtY3AgbWFuIG1vbl90b29scyBkYXNkaW5mbyB2bXVyIGNwdXBsdWdkIGlwbF90 b29scyBcCi0gCSAgIHppb21vbiBpdWN2dGVybSBoeXB0b3AgY21zZnMtZnVzZSBxZXRocW9hdCB6 ZmNwZHVtcCB6ZHNmcyBjcHVtZiBcCi0gCSAgIHN5c3RlbWQgaG1jZHJ2ZnMgY3BhY2ZzdGF0cyB6 ZGV2IGR1bXAydGFyIHprZXkgbmV0Ym9vdCBldGMgenBjaWN0bCBcCi0tCSAgIGxzc3RwIGhzY2kg aHNhdm1jb3JlIGNocmVpcGwtZmNwLW1wYXRoIGFwX3Rvb2xzIHJ1c3Qgb3B0aWNzbW9uIFwKLSsJ ICAgbHNzdHAgaHNjaSBoc2F2bWNvcmUgY2hyZWlwbC1mY3AtbXBhdGggYXBfdG9vbHMgcnVzdCB6 cGNpbW9uIFwKLSAJICAgenB3ciB6bWVtdG9wbwotIAotIGVsc2UKLWRpZmYgLS1naXQgYS9SRUFE TUUubWQgYi9SRUFETUUubWQKLWluZGV4IDkxZDYxYzVhLi40MDQ1YjBmOCAxMDA2NDQKLS0tLSBh L1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAtMzE2LDcgKzMxNiw3IEBAIGJ1aWxkIG9w dGlvbnM6Ci0gfCBnbGliYy1zdGF0aWMgfCBgSEFWRV9MSUJDX1NUQVRJQ2AgfCB6ZmNwZHVtcCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gfCBvcGVuc3NsICAgICAgfCBgSEFWRV9P UEVOU1NMYCAgICAgfCB6a2V5LCBsaWJla21md2ViLCBsaWJrbWlwY2xpZW50LCAgICAgICB8Ci0g fCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCB6Z2V0ZHVtcCwgcnVzdC9wdmF0 dGVzdCwgcnVzdC9wdmltZywgICB8Ci0tfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgfCB6Z2V0ZHVtcC9wdnNlY3JldCwgb3B0aWNzbW9uICAgICAgICAgICB8Ci0rfCAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCB6Z2V0ZHVtcC9wdnNlY3JldCwgenBjaW1vbiAg ICAgICAgICAgICB8Ci0gfCBjcnlwdHNldHVwICAgfCBgSEFWRV9DUllQVFNFVFVQMmAgfCB6a2V5 LWNyeXB0c2V0dXAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gfCBqc29uLWMgICAgICAgfCBg SEFWRV9KU09OQ2AgICAgICAgfCB6a2V5LWNyeXB0c2V0dXAsIGxpYmVrbWZ3ZWIsICAgICAgICAg ICB8Ci0gfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCBsaWJrbWlwY2xpZW50 ICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci1AQCAtMzI2LDcgKzMyNiw3IEBAIGJ1aWxkIG9w dGlvbnM6Ci0gfCBsaWJ4bWwyICAgICAgfCBgSEFWRV9MSUJYTUwyYCAgICAgfCBsaWJrbWlwY2xp ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gfCBzeXN0ZW1kICAgICAgfCBgSEFWRV9T WVNURU1EYCAgICAgfCBoc2F2bWNvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0g fCBsaWJ1ZGV2ICAgICAgfCBgSEFWRV9MSUJVREVWYCAgICAgfCBjcGFjZnN0YXRzZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8Ci0tfCBsaWJubDMgICAgICAgfCBgSEFWRV9MSUJOTDNgICAg ICAgfCBvcHRpY3Ntb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rfCBsaWJubDMg ICAgICAgfCBgSEFWRV9MSUJOTDNgICAgICAgfCB6cGNpbW9uICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8Ci0gCi0gVGhpcyB0YWJsZSBsaXN0cyBhZGRpdGlvbmFsIGJ1aWxkIG9yIGlu c3RhbGwgb3B0aW9uczoKLSAKLUBAIC0zNzQsMTAgKzM3NCwxMCBAQCB0aGUgZGlmZmVyZW50IHRv b2xzIGFyZSBwcm92aWRlZDoKLSAKLSAgIFRoZSBydW50aW1lIHJlcXVpcmVtZW50cyBhcmU6IG9w ZW5zc2wtbGlicyAoPj0gMS4xLjEpIGFuZCBsaWJjdXJsLgotIAotLSogb3B0aWNzbW9uOgotLSAg Rm9yIGJ1aWxkaW5nIG9wdGljc21vbiBPcGVuU1NMIGFuZCB0aGUgTmV0bGluayBMaWJyYXJ5IFN1 aXRlIChsaWJubDMpIGFyZQotKyogenBjaW1vbjoKLSsgIEZvciBidWlsZGluZyB6cGNpbW9uIE9w ZW5TU0wgYW5kIHRoZSBOZXRsaW5rIExpYnJhcnkgU3VpdGUgKGxpYm5sMykgYXJlCi0gICByZXF1 aXJlZC4KLS0gIFRpcDogeW91IG1heSBza2lwIHRoZSBvcHRpY3Ntb24gYnVpbGQgYnkgYWRkaW5n Ci0rICBUaXA6IHlvdSBtYXkgc2tpcCB0aGUgenBjaW1vbiBidWlsZCBieSBhZGRpbmcKLSAgIGBI QVZFX09QRU5TU0w9MGAgb3IgYEhBVkVfTElCTkwzPTBgCi0gCi0gKiBvc2Fzbm1wZDoKLWRpZmYg LS1naXQgYS9zY3JpcHRzL2RiZ2luZm8uc2ggYi9zY3JpcHRzL2RiZ2luZm8uc2gKLWluZGV4IGU1 YzM1YmJmLi5lYzYyMjdmMSAxMDA3NTUKLS0tLSBhL3NjcmlwdHMvZGJnaW5mby5zaAotKysrIGIv c2NyaXB0cy9kYmdpbmZvLnNoCi1AQCAtNjI5LDcgKzYyOSw3IEBAIE5FVFdPUktfQ01EUz0iaXAg LWJyIGFcCi0gICA6bnN0YXQgLWF6XAotICAgOm9wZW5zc2wgZW5naW5lICMgZGVwcmVjYXRlZCBp biBPcGVuU1NMIDMublwKLSAgIDpvcGVuc3NsIGxpc3QgLS1wcm92aWRlcnMgMj4vZGV2L251bGwg IyByZWRpcmVjdCBoZWxwIG9uIG9sZGVyIHN5c3RlbXNcCi0tICA6b3B0aWNzbW9uIC0tbW9kdWxl LWluZm9cCi0rICA6b3B0aWNzbW9uIC0tbW9kdWxlLWluZm9cICMgTm93IGNhbGxlZCB6cGNpbW9u IGJ1dCBrZXB0IGZvciBjb21wYXRpYmlsaXR5Ci0gICA6cm91dGUgLW5cCi0gICAiCi0gCi1kaWZm IC0tZ2l0IGEvc3lzdGVtZC9NYWtlZmlsZSBiL3N5c3RlbWQvTWFrZWZpbGUKLWluZGV4IDkzODhm ZDljLi4yOWUyOWI2MyAxMDA2NDQKLS0tLSBhL3N5c3RlbWQvTWFrZWZpbGUKLSsrKyBiL3N5c3Rl bWQvTWFrZWZpbGUKLUBAIC00LDcgKzQsNyBAQCBTWVNURU1fVU5JVFMgPSB0dHlydW4tZ2V0dHlA LnNlcnZpY2UgaXVjdnR0eS1sb2dpbkAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgY3BhY2Zz dGF0c2Quc2VydmljZSBjcHVwbHVnZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICBkdW1wY29u Zi5zZXJ2aWNlIGNwaS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICBtb25fZnNzdGF0ZC5zZXJ2 aWNlIG1vbl9wcm9jZC5zZXJ2aWNlIFwKLS0gICAgICAgICAgICAgICBvcHRpY3Ntb24uc2Vydmlj ZQotKyAgICAgICAgICAgICAgIHpwY2ltb24uc2VydmljZQotIAotIGFsbDoKLSAKLUBAIC0xOSw2 ICsxOSw5IEBAIGluc3RhbGw6IHN5c3RlbV91bml0cwotIAkgICQoSU5TVEFMTCkgLWcgJChHUk9V UCkgLW8gJChPV05FUikgXAotIAkgICAgICAgICAgICAgLW0gNjQ0ICQkdW5pdCAkKERFU1RESVIp JChTWVNURU1EU1lTVEVNVU5JVERJUikgOyBcCi0gCWRvbmUKLSsJIyBNYWtlIHRoZSBsZWdhY3kg b3B0aWNzbW9uLnNlcnZpY2UgYSBsaW5rIHRvIHpwY2ltb24uc2VydmljZQotKwlsbiAtc2YgenBj aW1vbi5zZXJ2aWNlIFwKLSsJCSQoREVTVERJUikkKFNZU1RFTURTWVNURU1VTklURElSKS9vcHRp Y3Ntb24uc2VydmljZQotIAotIGVsc2UKLSAKLWRpZmYgLS1naXQgYS9zeXN0ZW1kL29wdGljc21v bi5zZXJ2aWNlLmluIGIvc3lzdGVtZC96cGNpbW9uLnNlcnZpY2UuaW4KLXNpbWlsYXJpdHkgaW5k ZXggNjYlCi1yZW5hbWUgZnJvbSBzeXN0ZW1kL29wdGljc21vbi5zZXJ2aWNlLmluCi1yZW5hbWUg dG8gc3lzdGVtZC96cGNpbW9uLnNlcnZpY2UuaW4KLWluZGV4IDMzNWQ5MTY1Li5jZjFlYTEyMiAx MDA2NDQKLS0tLSBhL3N5c3RlbWQvb3B0aWNzbW9uLnNlcnZpY2UuaW4KLSsrKyBiL3N5c3RlbWQv enBjaW1vbi5zZXJ2aWNlLmluCi1AQCAtMSw1ICsxLDUgQEAKLSAjCi0tIyBTeXN0ZW1kIHVuaXQg Zm9yIG1vbl9mc3N0YXRkIChtb25pdG9yIHovVk0gZ3Vlc3QgZmlsZSBzeXN0ZW1zKQotKyMgU3lz dGVtZCB1bml0IGZvciB6cGNpbW9uIFBDSSBOSUMgb3B0aWNhbCBtb2R1bGUgbW9uaXRvcmluZwot ICMKLSAjIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyNAotICMKLUBAIC05LDExICs5LDExIEBACi0g Ci0gW1VuaXRdCi0gRGVzY3JpcHRpb249TW9uaXRvciBoZWFsdGggb2YgZGlyZWN0bHkgYXR0YWNo ZWQgUENJIE5JQyBvcHRpY2FsIG1vZHVsZXMKLS0jIERvY3VtZW50YXRpb249bWFuOm9wdGljc21v bgotKyMgRG9jdW1lbnRhdGlvbj1tYW46enBjaW1vbgotIAotIFtTZXJ2aWNlXQotIFR5cGU9ZXhl YwotLUV4ZWNTdGFydD1AdXNyc2Jpbl9wYXRoQC9vcHRpY3Ntb24gLS1zZW5kLXJlcG9ydCAtLW1v bml0b3IgLS1pbnRlcnZhbCA4NjQwMAotK0V4ZWNTdGFydD1AdXNyc2Jpbl9wYXRoQC96cGNpbW9u IC0tc2VuZC1yZXBvcnQgLS1tb25pdG9yIC0taW50ZXJ2YWwgODY0MDAKLSBLaWxsTW9kZT1jb250 cm9sLWdyb3VwCi0gCi0gW0luc3RhbGxdCi1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL01ha2VmaWxl IGIvenBjaW1vbi9NYWtlZmlsZQotc2ltaWxhcml0eSBpbmRleCA3OSUKLXJlbmFtZSBmcm9tIG9w dGljc21vbi9NYWtlZmlsZQotcmVuYW1lIHRvIHpwY2ltb24vTWFrZWZpbGUKLWluZGV4IGU0MmI2 MzI5Li40M2ZjMmEwNCAxMDA2NDQKLS0tLSBhL29wdGljc21vbi9NYWtlZmlsZQotKysrIGIvenBj aW1vbi9NYWtlZmlsZQotQEAgLTIsOCArMiw4IEBAIGluY2x1ZGUgLi4vY29tbW9uLm1hawotIAot IFRFU1RTIDo9IHRlc3RzLwotIAotLXpzaC1jb21wbGV0aW9ucyA9IF9vcHRpY3Ntb24KLS1iYXNo LWNvbXBsZXRpb25zID0gb3B0aWNzbW9uLmJhc2gKLSt6c2gtY29tcGxldGlvbnMgPSBfenBjaW1v bgotK2Jhc2gtY29tcGxldGlvbnMgPSB6cGNpbW9uLmJhc2gKLSAKLSBpbmNsdWRlIC4uL2NvbW1v bl9hdXRvY29tcC5tYWsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIGxpYnMgPSQocm9vdGRpcikvbGli enBjaS9saWJ6cGNpLmEgJChyb290ZGlyKS9saWJ1dGlsL2xpYnV0aWwuYQotIGlmbmVxICgke0hB VkVfT1BFTlNTTH0sMCkKLSBjaGVja19kZXBfb3BlbnNzbDoKLSAJJChjYWxsIGNoZWNrX2RlcCwg XAotLQkJIm9wdGljc21vbiIsIFwKLSsJCSJ6cGNpbW9uIiwgXAotIAkJIm9wZW5zc2wvZXZwLmgi LCBcCi0gCQkib3BlbnNzbC1kZXZlbCIsIFwKLSAJCSJIQVZFX09QRU5TU0w9MCIpCi1AQCAtMjIs NyArMjIsNyBAQCBlbmRpZiAjIEhBVkVfT1BFTlNTTAotIGlmbmVxICgke0hBVkVfTElCTkwzfSww KQotIGNoZWNrX2RlcF9saWJubDM6Ci0gCSQoY2FsbCBjaGVja19kZXAsIFwKLS0JCSJvcHRpY3Nt b24iLCBcCi0rCQkienBjaW1vbiIsIFwKLSAJCSJuZXRsaW5rL3NvY2tldC5oIiwgXAotIAkJImxp Ym5sMy1kZXZlbCIsIFwKLSAJCSJIQVZFX0xJQk5MMz0wIikKLUBAIC02OSwyMCArNjksMjIgQEAg ZW5kaWYKLSBBTExfQ1BQRkxBR1MgKz0gJChMSUJfQ0ZMQUdTKQotIExETElCUyArPSAkKExJQl9M RkxBR1MpCi0gCi0tQlVJTERUQVJHRVQgKz0gb3B0aWNzbW9uCi0rQlVJTERUQVJHRVQgKz0genBj aW1vbgotIAotIGFsbDogJHtCVUlMRFRBUkdFVH0KLSAKLS1vcHRpY3Ntb246IG9wdGljc21vbi5v IG9wdGljc19pbmZvLm8gb3B0aWNzX3NjbHAubyBldGh0b29sLm8gbGlua19tb24ubyAkKGxpYnMp Ci0renBjaW1vbjogenBjaW1vbi5vIG9wdGljc19pbmZvLm8gb3B0aWNzX3NjbHAubyBldGh0b29s Lm8gbGlua19tb24ubyAkKGxpYnMpCi0gCi0gaW5zdGFsbDogYWxsCi0gCSQoSU5TVEFMTCkgLWQg LW0gNzU1ICQoREVTVERJUikkKEJJTkRJUikgJChERVNURElSKSQoTUFORElSKS9tYW44Ci0tCSQo SU5TVEFMTCkgLWcgJChHUk9VUCkgLW8gJChPV05FUikgLW0gNzU1IG9wdGljc21vbiAkKERFU1RE SVIpJChCSU5ESVIpCi0tCSQoSU5TVEFMTCkgLWcgJChHUk9VUCkgLW8gJChPV05FUikgLW0gNjQ0 IG9wdGljc21vbi44IFwKLSsJJChJTlNUQUxMKSAtZyAkKEdST1VQKSAtbyAkKE9XTkVSKSAtbSA3 NTUgenBjaW1vbiAkKERFU1RESVIpJChCSU5ESVIpCi0rCSQoSU5TVEFMTCkgLWcgJChHUk9VUCkg LW8gJChPV05FUikgLW0gNjQ0IHpwY2ltb24uOCBcCi0gCQkkKERFU1RESVIpJChNQU5ESVIpL21h bjgKLSsJbG4gLXNmIHpwY2ltb24gJChERVNURElSKSQoQklORElSKS9vcHRpY3Ntb24KLSsJbG4g LXNmIHpwY2ltb24uOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjgvb3B0aWNzbW9uLjgKLSBlbmRp ZiAjIEhBVkVfT1BFTlNTTDM9MCBvciBIQVZFX0xJQk5MMz0wCi0gCi0gY2xlYW46Ci0tCXJtIC1m ICoubyAqfiBvcHRpY3Ntb24gY29yZQotKwlybSAtZiAqLm8gKn4genBjaW1vbiBjb3JlCi0gCi0g LlBIT05ZOiBhbGwgaW5zdGFsbCBjbGVhbgotZGlmZiAtLWdpdCBhL29wdGljc21vbi9hdXRvY29t cGxldGlvbl9nZW5lcmF0b3JfaG9zdC5jIGIvenBjaW1vbi9hdXRvY29tcGxldGlvbl9nZW5lcmF0 b3JfaG9zdC5jCi1zaW1pbGFyaXR5IGluZGV4IDcyJQotcmVuYW1lIGZyb20gb3B0aWNzbW9uL2F1 dG9jb21wbGV0aW9uX2dlbmVyYXRvcl9ob3N0LmMKLXJlbmFtZSB0byB6cGNpbW9uL2F1dG9jb21w bGV0aW9uX2dlbmVyYXRvcl9ob3N0LmMKLWluZGV4IDRjZTlmZGYxLi5hZWVmYWIyZiAxMDA2NDQK LS0tLSBhL29wdGljc21vbi9hdXRvY29tcGxldGlvbl9nZW5lcmF0b3JfaG9zdC5jCi0rKysgYi96 cGNpbW9uL2F1dG9jb21wbGV0aW9uX2dlbmVyYXRvcl9ob3N0LmMKLUBAIC02LDEwICs2LDExIEBA Ci0gCi0gI2luY2x1ZGUgImxpYi91dGlsX2F1dG9jb21wLmgiCi0gCi0tI2luY2x1ZGUgIm9wdGlj c21vbl9jbGkuaCIKLSsjaW5jbHVkZSAienBjaW1vbl9jbGkuaCIKLSAKLSBpbnQgbWFpbih2b2lk KQotIHsKLSsJZ2VuZXJhdGVfYXV0b2NvbXAob3B0X3ZlYywgInpwY2ltb24iKTsKLSAJZ2VuZXJh dGVfYXV0b2NvbXAob3B0X3ZlYywgIm9wdGljc21vbiIpOwotIAotIAlyZXR1cm4gMDsKLWRpZmYg LS1naXQgYS9vcHRpY3Ntb24vZXRodG9vbC5jIGIvenBjaW1vbi9ldGh0b29sLmMKLXNpbWlsYXJp dHkgaW5kZXggMTAwJQotcmVuYW1lIGZyb20gb3B0aWNzbW9uL2V0aHRvb2wuYwotcmVuYW1lIHRv IHpwY2ltb24vZXRodG9vbC5jCi1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL2V0aHRvb2wuaCBiL3pw Y2ltb24vZXRodG9vbC5oCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIG9wdGlj c21vbi9ldGh0b29sLmgKLXJlbmFtZSB0byB6cGNpbW9uL2V0aHRvb2wuaAotZGlmZiAtLWdpdCBh L29wdGljc21vbi9saW5rX21vbi5jIGIvenBjaW1vbi9saW5rX21vbi5jCi1zaW1pbGFyaXR5IGlu ZGV4IDEwMCUKLXJlbmFtZSBmcm9tIG9wdGljc21vbi9saW5rX21vbi5jCi1yZW5hbWUgdG8genBj aW1vbi9saW5rX21vbi5jCi1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL2xpbmtfbW9uLmggYi96cGNp bW9uL2xpbmtfbW9uLmgKLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVuYW1lIGZyb20gb3B0aWNz bW9uL2xpbmtfbW9uLmgKLXJlbmFtZSB0byB6cGNpbW9uL2xpbmtfbW9uLmgKLWRpZmYgLS1naXQg YS9vcHRpY3Ntb24vb3B0aWNzX2luZm8uYyBiL3pwY2ltb24vb3B0aWNzX2luZm8uYwotc2ltaWxh cml0eSBpbmRleCAxMDAlCi1yZW5hbWUgZnJvbSBvcHRpY3Ntb24vb3B0aWNzX2luZm8uYwotcmVu YW1lIHRvIHpwY2ltb24vb3B0aWNzX2luZm8uYwotZGlmZiAtLWdpdCBhL29wdGljc21vbi9vcHRp Y3NfaW5mby5oIGIvenBjaW1vbi9vcHRpY3NfaW5mby5oCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUK LXJlbmFtZSBmcm9tIG9wdGljc21vbi9vcHRpY3NfaW5mby5oCi1yZW5hbWUgdG8genBjaW1vbi9v cHRpY3NfaW5mby5oCi1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL29wdGljc19zY2xwLmMgYi96cGNp bW9uL29wdGljc19zY2xwLmMKLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVuYW1lIGZyb20gb3B0 aWNzbW9uL29wdGljc19zY2xwLmMKLXJlbmFtZSB0byB6cGNpbW9uL29wdGljc19zY2xwLmMKLWRp ZmYgLS1naXQgYS9vcHRpY3Ntb24vb3B0aWNzX3NjbHAuaCBiL3pwY2ltb24vb3B0aWNzX3NjbHAu aAotc2ltaWxhcml0eSBpbmRleCAxMDAlCi1yZW5hbWUgZnJvbSBvcHRpY3Ntb24vb3B0aWNzX3Nj bHAuaAotcmVuYW1lIHRvIHpwY2ltb24vb3B0aWNzX3NjbHAuaAotZGlmZiAtLWdpdCBhL29wdGlj c21vbi9vcHRpY3Ntb24uOCBiL3pwY2ltb24venBjaW1vbi44Ci1zaW1pbGFyaXR5IGluZGV4IDg4 JQotcmVuYW1lIGZyb20gb3B0aWNzbW9uL29wdGljc21vbi44Ci1yZW5hbWUgdG8genBjaW1vbi96 cGNpbW9uLjgKLWluZGV4IGE4MTA3OTJkLi4zYzI3NGI0NSAxMDA2NDQKLS0tLSBhL29wdGljc21v bi9vcHRpY3Ntb24uOAotKysrIGIvenBjaW1vbi96cGNpbW9uLjgKLUBAIC0zMCwyMCArMzAsMjAg QEAKLSAuICBicgotIC4uCi0gLgotLS5USCBvcHRpY3Ntb24gOCAiT2N0IDIwMjQiIHMzOTAtdG9v bHMgenBjaWN0bAotKy5USCB6cGNpbW9uIDggIk9jdCAyMDI0IiBzMzkwLXRvb2xzIHpwY2ljdGwK LSAuCi0gLlNIIE5BTUUKLS1vcHRpY3Ntb24gLSBNb25pdG9yIG9wdGljYWwgbW9kdWxlcyBmb3Ig ZGlyZWN0bHkgYXR0YWNoZWQgUENJIGJhc2VkIE5JQ3MKLSt6cGNpbW9uIC0gTW9uaXRvciBvcHRp Y2FsIG1vZHVsZXMgZm9yIGRpcmVjdGx5IGF0dGFjaGVkIFBDSSBiYXNlZCBOSUNzCi0gLgotIC4K LSAuU0ggU1lOT1BTSVMKLS0uQiAib3B0aWNzbW9uIgotKy5CICJ6cGNpbW9uIgotIC5JICJPUFRJ T05TIgotIC4KLSAuCi0gLlNIIERFU0NSSVBUSU9OCi0gVXNlCi0tLkIgb3B0aWNzbW9uCi0rLkIg enBjaW1vbgotIHRvIG1vbml0b3IgdGhlIGhlYWx0aCBvZiB0aGUgb3B0aWNhbCBtb2R1bGVzIG9m IGRpcmVjdGx5IGF0dGFjaGVkIFBDSSBiYXNlZAotIE5JQ3MuIFdoZW4gZXhlY3V0ZWQgd2l0aG91 dCB0aGUgXGZCLS1tb25pdG9yXGZSIG9wdGlvbiBpdCB3aWxsIGNvbGxlY3Qgb3B0aWNhbAotIG1v ZHVsZSBkYXRhIGZyb20gYWxsIGF2YWlsYWJsZSBQQ0kgbmV0d29yayBpbnRlcmZhY2UgcGh5c2lj YWwgZnVuY3Rpb25zIGFuZAotQEAgLTgwLDcgKzgwLDcgQEAgb24iLgotIAotIC5CIEV4YW1wbGU6 IEV4dHJhY3QgbW9kdWxlIGluZm9ybWF0aW9uIGZvciB0aGUgZmlyc3QgYWRhcHRlcgotIAotLS5D TCBvcHRpY3Ntb24gLS1tb2R1bGUtaW5mbyB8IGpxIC1yICcuYWRhcHRlcnNbMF0ubmV0ZGV2c1sw XS5vcHRpY3MubW9kdWxlX2luZm8nIHwgYmFzZTY0IC1kIHwgaGV4ZHVtcCAtQwotKy5DTCB6cGNp bW9uIC0tbW9kdWxlLWluZm8gfCBqcSAtciAnLmFkYXB0ZXJzWzBdLm5ldGRldnNbMF0ub3B0aWNz Lm1vZHVsZV9pbmZvJyB8IGJhc2U2NCAtZCB8IGhleGR1bXAgLUMKLSAuUFAKLSAuUFAKLSAuCi1k aWZmIC0tZ2l0IGEvb3B0aWNzbW9uL29wdGljc21vbi5jIGIvenBjaW1vbi96cGNpbW9uLmMKLXNp bWlsYXJpdHkgaW5kZXggOTglCi1yZW5hbWUgZnJvbSBvcHRpY3Ntb24vb3B0aWNzbW9uLmMKLXJl bmFtZSB0byB6cGNpbW9uL3pwY2ltb24uYwotaW5kZXggZjg2MDU2ZDQuLjdkZjg3ZTgxIDEwMDY0 NAotLS0tIGEvb3B0aWNzbW9uL29wdGljc21vbi5jCi0rKysgYi96cGNpbW9uL3pwY2ltb24uYwot QEAgLTMxLDcgKzMxLDcgQEAKLSAjaW5jbHVkZSAibGlua19tb24uaCIKLSAjaW5jbHVkZSAib3B0 aWNzX2luZm8uaCIKLSAjaW5jbHVkZSAib3B0aWNzX3NjbHAuaCIKLS0jaW5jbHVkZSAib3B0aWNz bW9uX2NsaS5oIgotKyNpbmNsdWRlICJ6cGNpbW9uX2NsaS5oIgotIAotICNkZWZpbmUgQVBJX0xF VkVMIDEKLSAKLUBAIC01Miw4ICs1Miw3IEBAIHN0cnVjdCBvcHRpY3Ntb25fY3R4IHsKLSB9Owot IAotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXRpbF9wcmcgcHJnID0gewotLQkuZGVzYyA9ICJVc2Ug b3B0aWNzbW9uIHRvIG1vbml0b3IgdGhlIGhlYWx0aCBvZiB0aGUgb3B0aWNhbCBtb2R1bGVzXG4i Ci0tCQkib2YgZGlyZWN0bHkgYXR0YWNoZWQgUENJIGJhc2VkIE5JQ3MiLAotKwkuZGVzYyA9ICJV c2UgenBjaW1vbiB0byBtb25pdG9yIHRoZSBoZWFsdGggb2YgUENJIGRldmljZXMiLAotIAkuY29w eXJpZ2h0X3ZlYyA9IHsgewotIAkJCQkgICAub3duZXIgPSAiSUJNIENvcnAuIiwKLSAJCQkJICAg LnB1Yl9maXJzdCA9IDIwMjQsCi1kaWZmIC0tZ2l0IGEvb3B0aWNzbW9uL29wdGljc21vbl9jbGku aCBiL3pwY2ltb24venBjaW1vbl9jbGkuaAotc2ltaWxhcml0eSBpbmRleCAxMDAlCi1yZW5hbWUg ZnJvbSBvcHRpY3Ntb24vb3B0aWNzbW9uX2NsaS5oCi1yZW5hbWUgdG8genBjaW1vbi96cGNpbW9u X2NsaS5oCi0tLSAKLTIuNTUuMAotCi0KLUZyb20gOGE0YTRlMDU1NzllYjY5NzcyMWI1OWI4ZTcx OGNkYjFkOTZhZWI1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pa2xhcyBTY2hu ZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLURhdGU6IFdlZCwgMTcgSnVuIDIwMjYgMjE6 NDU6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yM10gbGlidXRpbC91dGlsX2ZtdDogQWRk IHV0aWxfZm10X3R5cGVfdG9fbmFtZSgpCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4 Yml0Ci0KLUFkZCBhIGZ1bmN0aW9uIHRvIGdldCB0aGUgdGV4dHVhbCBuYW1lIG9mIGFuIGVudW0g dXRpbF9mbXRfdCB2YWx1ZS4gVG8KLW1ha2UgdGhpcyByb2J1c3QgdG8gY2hhbmdlcyBpbiB0aGUg b3JkZXIgb2YgZWxlbWVudHMgaW4gdGhlIGZvcm1hdCBhcnJheQotaW5pdGlhbGl6ZSB0aGlzIHVz aW5nIG5hbWVkIGluZGljZXMuCi0KLVJldmlld2VkLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVy QGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxl QGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxp bnV4LmlibS5jb20+Ci0tLS0KLSBpbmNsdWRlL2xpYi91dGlsX2ZtdC5oIHwgMTAgKysrKysrKysr KwotIGxpYnV0aWwvdXRpbF9mbXQuYyAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi91dGlsX2ZtdC5oIGIvaW5jbHVkZS9saWIvdXRp bF9mbXQuaAotaW5kZXggMWQzYjlhZjkuLmFjNTdjZDRmIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9s aWIvdXRpbF9mbXQuaAotKysrIGIvaW5jbHVkZS9saWIvdXRpbF9mbXQuaAotQEAgLTE1Nyw2ICsx NTcsMTYgQEAgdm9pZCB1dGlsX2ZtdF9leGl0KHZvaWQpOwotICAqLwotIGJvb2wgdXRpbF9mbXRf bmFtZV90b190eXBlKGNvbnN0IGNoYXIgKm5hbWUsIGVudW0gdXRpbF9mbXRfdCAqdHlwZSk7Ci0g Ci0rLyoqCi0rICogdXRpbF9mbXRfdHlwZV90b19uYW1lKCkgLSBHZXQgbmFtZSBvZiBnaXZlbiBm b3JtYXQgdHlwZSBpZGVudGlmaWVyLgotKyAqIEB0eXBlOiBGb3JtYXQgdHlwZSBpZGVudGlmaWVy Ci0rICoKLSsgKiBHZXQgdGhlIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gZm9ybWF0 IHR5cGUgaWRlbnRpZmllci4KLSsgKgotKyAqIFJldHVybjogbmFtZSBvZiB0aGUgZm9ybWF0IHR5 cGUKLSsgKi8KLStjb25zdCBjaGFyICp1dGlsX2ZtdF90eXBlX3RvX25hbWUoZW51bSB1dGlsX2Zt dF90IHR5cGUpOwotKwotIC8qKgotICAqIHV0aWxfZm10X3NldF9pbmRlbnQoKSAtIFNldCBpbmRl bnRhdGlvbiBwYXJhbWV0ZXJzLgotICAqIEBiYXNlICAgIDogQmFzZSBpbmRlbnRhdGlvbiBsZXZl bCB0byBhcHBseSB0byBhbGwgb3V0cHV0IGxpbmVzIChkZWZhdWx0IDApCi1kaWZmIC0tZ2l0IGEv bGlidXRpbC91dGlsX2ZtdC5jIGIvbGlidXRpbC91dGlsX2ZtdC5jCi1pbmRleCAzMWJiZTcwNC4u ZjRlMDVmYWUgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsL3V0aWxfZm10LmMKLSsrKyBiL2xpYnV0aWwv dXRpbF9mbXQuYwotQEAgLTg5LDExICs4OSwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKLSAJ Y29uc3QgY2hhciAqbmFtZTsKLSAJZW51bSB1dGlsX2ZtdF90IGZtdDsKLSB9IGZvcm1hdHNbXSA9 IHsKLS0JeyAianNvbiIsIEZNVF9KU09OIH0sCi0tCXsgImpzb24tc2VxIiwgRk1UX0pTT05TRVEg fSwKLS0JeyAianNvbmwiLCBGTVRfSlNPTkwgfSwKLS0JeyAicGFpcnMiLCBGTVRfUEFJUlMgfSwK LS0JeyAiY3N2IiwgIEZNVF9DU1YgfSwKLSsJW0ZNVF9KU09OXSA9IHsKLSsJCS5uYW1lID0gImpz b24iLAotKwkJLmZtdCA9IEZNVF9KU09OCi0rCX0sCi0rCVtGTVRfSlNPTlNFUV0gPSB7Ci0rCQku bmFtZSA9ICJqc29uLXNlcSIsCi0rCQkuZm10ID0gRk1UX0pTT05TRVEKLSsJfSwKLSsJW0ZNVF9K U09OTF0gPSB7Ci0rCQkubmFtZSA9ICJqc29ubCIsCi0rCQkuZm10ID0gRk1UX0pTT05MCi0rCX0s Ci0rCVtGTVRfUEFJUlNdID0gewotKwkJLm5hbWUgPSAicGFpcnMiLAotKwkJLmZtdCA9IEZNVF9Q QUlSUwotKwl9LAotKwlbRk1UX0NTVl0gPSB7Ci0rCQkubmFtZSA9ICJjc3YiLAotKwkJLmZtdCA9 IEZNVF9DU1YKLSsJfSwKLSB9OwotIAotIC8qIFNpZ25hbCBtYXNrIGZvciBibG9ja2luZyBJTlQg YW5kIFRFUk0gc2lnbmFscy4gKi8KLUBAIC0xMTIsNiArMTI3LDExIEBAIGJvb2wgdXRpbF9mbXRf bmFtZV90b190eXBlKGNvbnN0IGNoYXIgKm5hbWUsIGVudW0gdXRpbF9mbXRfdCAqdHlwZSkKLSAJ cmV0dXJuIGZhbHNlOwotIH0KLSAKLStjb25zdCBjaGFyICp1dGlsX2ZtdF90eXBlX3RvX25hbWUo ZW51bSB1dGlsX2ZtdF90IHR5cGUpCi0rewotKwlyZXR1cm4gZm9ybWF0c1t0eXBlXS5uYW1lOwot K30KLSsKLSBib29sIHV0aWxfZm10X2lzX2pzb24oZW51bSB1dGlsX2ZtdF90IHR5cGUpCi0gewot IAlzd2l0Y2ggKHR5cGUpIHsKLS0tIAotMi41NS4wCi0KLQotRnJvbSAyYzYzYzY5YWY0NDhmZDg0 MjIyNjQ1ZjUzYWE5OGNkZmQ1NGM3MTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog TmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotRGF0ZTogV2VkLCAxNyBK dW4gMjAyNiAyMTo0ODo0NyArMDIwMAotU3ViamVjdDogW1BBVENIIDExLzIzXSB6cGNpbW9uOiBB bGxvdyBzZXR0aW5nIG91dHB1dCBmb3JtYXQgYW5kIHVzZSBKU09OIExpbmVzCi0gaW4gc3lzdGVt ZCB1bml0Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLUludHJvZHVjZSBz ZXBhcmF0ZSAnLS1mb3JtYXQnIG9wdGlvbiB0byBzZXQgb3V0cHV0IGZvcm1hdC4gVXNlIHRoZSBu ZXcKLUpTT04gTGluZXMgZm9ybWF0IGV4cGxpY2l0bHkgaW4gdGhlIHN5c3RlbWQgdW5pdC4gU2lu Y2UgSlNPTiBMaW5lcwotZm9ybWF0IG9ubHkgdXNlcyBwcmludGFibGUgY2hhcmFjdGVycyB0aGlz IHJlbW92ZXMgdGhlIG5lZWQgZm9yIHBhc3NpbmcKLSctYScgdG8gc3lzdGVtY3RsIHN0YXR1cy4g QXQgdGhlIHNhbWUgdGltZSBKU09OLVNFUSBpcyBtb3JlIGVhc2lseQotcGFyc2FibGUgdXNpbmcg J2pxIC0tc2VxJyBzbyBrZWVwIGl0IHRoZSBkZWZhdWx0IGZvciBlYXNpZXIgc2NyaXB0aW5nLgot Ci1SZXZpZXdlZC1ieTogSmFuIEjDtnBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgotU2ln bmVkLW9mZi1ieTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotU2ln bmVkLW9mZi1ieTogSmFuIEjDtnBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgotLS0tCi0g c3lzdGVtZC96cGNpbW9uLnNlcnZpY2UuaW4gfCAgMiArLQotIHpwY2ltb24venBjaW1vbi44ICAg ICAgICAgIHwgIDggKysrKysrKwotIHpwY2ltb24venBjaW1vbi5jICAgICAgICAgIHwgNDMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSB6cGNpbW9uL3pwY2ltb25fY2xp LmggICAgICB8ICA5ICsrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzdGVtZC96cGNpbW9uLnNlcnZpY2Uu aW4gYi9zeXN0ZW1kL3pwY2ltb24uc2VydmljZS5pbgotaW5kZXggY2YxZWExMjIuLjliZTBjYWE0 IDEwMDY0NAotLS0tIGEvc3lzdGVtZC96cGNpbW9uLnNlcnZpY2UuaW4KLSsrKyBiL3N5c3RlbWQv enBjaW1vbi5zZXJ2aWNlLmluCi1AQCAtMTMsNyArMTMsNyBAQCBEZXNjcmlwdGlvbj1Nb25pdG9y IGhlYWx0aCBvZiBkaXJlY3RseSBhdHRhY2hlZCBQQ0kgTklDIG9wdGljYWwgbW9kdWxlcwotIAot IFtTZXJ2aWNlXQotIFR5cGU9ZXhlYwotLUV4ZWNTdGFydD1AdXNyc2Jpbl9wYXRoQC96cGNpbW9u IC0tc2VuZC1yZXBvcnQgLS1tb25pdG9yIC0taW50ZXJ2YWwgODY0MDAKLStFeGVjU3RhcnQ9QHVz cnNiaW5fcGF0aEAvenBjaW1vbiAtLXNlbmQtcmVwb3J0IC0tbW9uaXRvciAtLWZvcm1hdCBqc29u bCAtLWludGVydmFsIDg2NDAwCi0gS2lsbE1vZGU9Y29udHJvbC1ncm91cAotIAotIFtJbnN0YWxs XQotZGlmZiAtLWdpdCBhL3pwY2ltb24venBjaW1vbi44IGIvenBjaW1vbi96cGNpbW9uLjgKLWlu ZGV4IDNjMjc0YjQ1Li45YjE2ZmE5MSAxMDA2NDQKLS0tLSBhL3pwY2ltb24venBjaW1vbi44Ci0r KysgYi96cGNpbW9uL3pwY2ltb24uOAotQEAgLTg0LDYgKzg0LDE0IEBAIG9uIi4KLSAuUFAKLSAu UFAKLSAuCi0rLlNTIE91dHB1dCBGb3JtYXQgT3B0aW9ucwotKy5PRCBmb3JtYXQgIiIgPEZPUk1B VD4KLStTZXQgdGhlIG91dHB1dCBmb3JtYXQgb3V0IG9mIGpzb24sIGpzb24tc2VxLCBqc29ubCwg cGFpcnMsIGFuZCBjc3YuIE5vdGUgdGhhdAotK29ubHkganNvbi1zZXEgYW5kIGpzb25sIHNlcXVl bmNlIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCBmb3IgbW9uaXRvcmluZyBtb2RlIGFzCi0rdGhleSBo YW5kbGUgYSBjb250aW51b3VzIHN0cmVhbSBvZiB1cGRhdGVzIHdlbGwuIFdoaWxlIHRoZXkgYXJl IG5vdCBzdXBwb3J0ZWQKLStpbiBxdWVyeSBtb2RlLgotKy5QUAotKy4KLSAuU1MgR2VuZXJhbCBP cHRpb25zCi0gLk9EIGhlbHAgImgiICIiCi0gUHJpbnQgdXNhZ2UgaW5mb3JtYXRpb24sIHRoZW4g ZXhpdC4KLWRpZmYgLS1naXQgYS96cGNpbW9uL3pwY2ltb24uYyBiL3pwY2ltb24venBjaW1vbi5j Ci1pbmRleCA3ZGY4N2U4MS4uOThhMjg3MWEgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL3pwY2ltb24u YwotKysrIGIvenBjaW1vbi96cGNpbW9uLmMKLUBAIC00MCw2ICs0MCw4IEBAIHN0cnVjdCBvcHRp b25zIHsKLSAJYm9vbCByZXBvcnQ7Ci0gCWJvb2wgbW9kdWxlX2luZm87Ci0gCWJvb2wgcXVpZXQ7 Ci0rCWVudW0gdXRpbF9mbXRfdCBmb3JtYXQ7Ci0rCWJvb2wgZXhwbGljaXRfZm9ybWF0OwotIAot IAl1aW50MzJfdCBpbnRlcnZhbF9zZWNvbmRzOwotIH07Ci1AQCAtNjMsNiArNjUsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHV0aWxfcHJnIHByZyA9IHsKLSAKLSBzdGF0aWMgdm9pZCBwYXJzZV9j bWRsaW5lKGludCBhcmdjLCBjaGFyICphcmd2W10sIHN0cnVjdCBvcHRpb25zICpvcHRzKQotIHsK LSsJZW51bSB1dGlsX2ZtdF90IGZtdDsKLSAJdWludDMyX3Qgc2Vjb25kczsKLSAJaW50IGNtZCwg cmV0OwotIAotQEAgLTg1LDYgKzg4LDEyIEBAIHN0YXRpYyB2b2lkIHBhcnNlX2NtZGxpbmUoaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgc3RydWN0IG9wdGlvbnMgKm9wdHMpCi0gCQljYXNlIE9QVF9E VU1QOgotIAkJCW9wdHMtPm1vZHVsZV9pbmZvID0gdHJ1ZTsKLSAJCQlicmVhazsKLSsJCWNhc2Ug T1BUX0ZPUk1BVDoKLSsJCQlpZiAoIXV0aWxfZm10X25hbWVfdG9fdHlwZShvcHRhcmcsICZmbXQp KQotKwkJCQllcnJ4KEVYSVRfRkFJTFVSRSwgIlVua25vd24gZm9ybWF0ICVzIiwgb3B0YXJnKTsK LSsJCQlvcHRzLT5mb3JtYXQgPSBmbXQ7Ci0rCQkJb3B0cy0+ZXhwbGljaXRfZm9ybWF0ID0gdHJ1 ZTsKLSsJCQlicmVhazsKLSAJCWNhc2UgJ2knOgotIAkJCXJldCA9IHNzY2FuZihvcHRhcmcsICIl dSIsICZzZWNvbmRzKTsKLSAJCQlpZiAocmV0ICE9IDEpIHsKLUBAIC0yMjQsNyArMjMzLDcgQEAg c3RhdGljIHZvaWQgZHVtcF9hbGxfYWRhcHRlcl9kYXRhKHN0cnVjdCBvcHRpY3Ntb25fY3R4ICpj dHgpCi0gCi0gc3RhdGljIGludCBvbmVzaG90X21vZGUoc3RydWN0IG9wdGljc21vbl9jdHggKmN0 eCkKLSB7Ci0tCXV0aWxfZm10X2luaXQoc3Rkb3V0LCBGTVRfSlNPTiwgRk1UX0RFRkFVTFQsIEFQ SV9MRVZFTCk7Ci0rCXV0aWxfZm10X2luaXQoc3Rkb3V0LCBjdHgtPm9wdHMuZm9ybWF0LCBGTVRf REVGQVVMVCwgQVBJX0xFVkVMKTsKLSAJaWYgKCFjdHgtPm9wdHMucXVpZXQpCi0gCQl1dGlsX2Zt dF9vYmpfc3RhcnQoRk1UX0xJU1QsICJhZGFwdGVycyIpOwotIAlkdW1wX2FsbF9hZGFwdGVyX2Rh dGEoY3R4KTsKLUBAIC0zNzUsNyArMzg0LDcgQEAgc3RhdGljIGludCBtb25pdG9yX21vZGUoc3Ry dWN0IG9wdGljc21vbl9jdHggKmN0eCkKLSAJCWdvdG8gY2xvc2VfdGltZXJmZDsKLSAJfQotIAot LQl1dGlsX2ZtdF9pbml0KHN0ZG91dCwgRk1UX0pTT05TRVEsIEZNVF9ERUZBVUxULCBBUElfTEVW RUwpOwotKwl1dGlsX2ZtdF9pbml0KHN0ZG91dCwgY3R4LT5vcHRzLmZvcm1hdCwgRk1UX0RFRkFV TFQsIEFQSV9MRVZFTCk7Ci0gCXJldCA9IGxpbmtfbW9uX25sX3dhaXRmZF9jcmVhdGUoJmN0eC0+ bGN0eCwgb25fbGlua19jaGFuZ2UsIGN0eCk7Ci0gCWlmIChyZXQpIHsKLSAJCWZwcmludGYoc3Rk ZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBsaW5rIG1vbml0b3Jpbmcgc29ja2V0XG4iKTsKLUBAIC0z OTMsMTIgKzQwMiw0MiBAQCBjbG9zZV90aW1lcmZkOgotIAlyZXR1cm4gcmV0OwotIH0KLSAKLStz dGF0aWMgYm9vbCBpc19zdXBwb3J0ZWRfZm10KGVudW0gdXRpbF9mbXRfdCBmbXQsIGJvb2wgbW9u aXRvcikKLSt7Ci0rCXN3aXRjaCAoZm10KSB7Ci0rCWNhc2UgRk1UX0pTT046Ci0rCWNhc2UgRk1U X1BBSVJTOgotKwkJcmV0dXJuIG1vbml0b3IgPyBmYWxzZSA6IHRydWU7Ci0rCWNhc2UgRk1UX0pT T05MOgotKwljYXNlIEZNVF9KU09OU0VROgotKwkJcmV0dXJuIG1vbml0b3IgPyB0cnVlIDogZmFs c2U7Ci0rCWRlZmF1bHQ6Ci0rCQlyZXR1cm4gZmFsc2U7Ci0rCX0KLSt9Ci0rCi0rc3RhdGljIGlu dCBzZXRfZm9ybWF0KHN0cnVjdCBvcHRpb25zICpvcHRzKQotK3sKLSsJaWYgKCFvcHRzLT5leHBs aWNpdF9mb3JtYXQpCi0rCQlvcHRzLT5mb3JtYXQgPSAob3B0cy0+bW9uaXRvcikgPyBGTVRfSlNP TlNFUSA6IEZNVF9KU09OOwotKwotKwlpZiAoIWlzX3N1cHBvcnRlZF9mbXQob3B0cy0+Zm9ybWF0 LCBvcHRzLT5tb25pdG9yKSkgewotKwkJd2FybngoIkZvcm1hdCAlcyBpcyBub3Qgc3VwcG9ydGVk IGluICVzIG1vZGUiLAotKwkJICAgICAgdXRpbF9mbXRfdHlwZV90b19uYW1lKG9wdHMtPmZvcm1h dCksIChvcHRzLT5tb25pdG9yKSA/ICJtb25pdG9yIiA6ICJxdWVyeSIpOwotKwkJcmV0dXJuIC1F SU5WQUw7Ci0rCX0KLSsJcmV0dXJuIDA7Ci0rfQotKwotIGludCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKLSB7Ci0gCXN0cnVjdCBvcHRpY3Ntb25fY3R4IGN0eCA9IHsgLm9wdHMgPSB7IC5p bnRlcnZhbF9zZWNvbmRzID0gODY0MDAgfSB9OwotIAlpbnQgcmV0OwotIAotIAlwYXJzZV9jbWRs aW5lKGFyZ2MsIGFyZ3YsICZjdHgub3B0cyk7Ci0rCXJldCA9IHNldF9mb3JtYXQoJmN0eC5vcHRz KTsKLSsJaWYgKHJldCkKLSsJCXJldHVybiByZXQ7Ci0gCXJldCA9IGV0aHRvb2xfbmxfY29ubmVj dCgmY3R4LmV0aHRvb2xfY3R4KTsKLSAJaWYgKHJldCkKLSAJCXJldHVybiByZXQ7Ci1kaWZmIC0t Z2l0IGEvenBjaW1vbi96cGNpbW9uX2NsaS5oIGIvenBjaW1vbi96cGNpbW9uX2NsaS5oCi1pbmRl eCBjNjlmMzQ5YS4uZjVhMGRjM2UgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL3pwY2ltb25fY2xpLmgK LSsrKyBiL3pwY2ltb24venBjaW1vbl9jbGkuaAotQEAgLTcsOSArNywxMSBAQAotICNpZm5kZWYg T1BUSUNTTU9OX0NMSV9ICi0gI2RlZmluZSBPUFRJQ1NNT05fQ0xJX0gKLSAKLSsjaW5jbHVkZSAi bGliL3V0aWxfZm10LmgiCi0gI2luY2x1ZGUgImxpYi91dGlsX29wdC5oIgotIAotICNkZWZpbmUg T1BUX0RVTVAgMTI4Ci0rI2RlZmluZSBPUFRfRk9STUFUIDEyOQotIAotIHN0YXRpYyBzdHJ1Y3Qg dXRpbF9vcHQgb3B0X3ZlY1tdID0gewotIAlVVElMX09QVF9TRUNUSU9OKCJPUEVSQVRJT04gT1BU SU9OUyIpLAotQEAgLTQxLDYgKzQzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgdXRpbF9vcHQgb3B0X3Zl Y1tdID0gewotIAkJCSJpbiB0aGUgYWJzZW5jZSBvZiBsaW5rIHN0YXRlIGNoYW5nZXMuIEEgdmFs dWUgbGFyZ2VyIHRoYW4gIgotIAkJCSIyNCBob3VycyAoODY0MDAgc2Vjb25kcykgaXMgY2xhbXBl ZCBkb3duIHRvIDI0IGhvdXJzLiIsCi0gCX0sCi0rCVVUSUxfT1BUX1NFQ1RJT04oIk9VVFBVVCBG T1JNQVQgT1BUSU9OUyIpLAotKwl7Ci0rCQkub3B0aW9uID0geyAiZm9ybWF0IiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsIE9QVF9GT1JNQVQgfSwKLSsJCS5hcmd1bWVudCA9ICJGT1JNQVQiLAot KwkJLmZsYWdzID0gVVRJTF9PUFRfRkxBR19OT1NIT1JULAotKwkJLmRlc2MgPSAiT3V0cHV0IGZv cm1hdCAoIiBGTVRfVFlQRV9OQU1FUyAiKSIsCi0rCX0sCi0gCVVUSUxfT1BUX1NFQ1RJT04oIkdF TkVSQUwgT1BUSU9OUyIpLAotIAlVVElMX09QVF9IRUxQLAotIAlVVElMX09QVF9WRVJTSU9OLAot LS0gCi0yLjU1LjAKLQotCi1Gcm9tIGY5ZWY4YTAxMDY2OWU2NTFkNzM2ZTIzYTFkZDc2ZTEyNDQ4 MzY3N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgU2NobmVsbGUgPHNj aG5lbGxlQGxpbnV4LmlibS5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDI2IDEzOjUyOjM3ICsw MjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMjNdIHV0aWxfdGltZTogenBjaW1vbjogVXNlIGEgY29u c3RhbnQgZm9yIHNlY29uZHMgcGVyIGRheQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlw ZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog OGJpdAotCi1SZXBsYWNlIHRoZSBtYWdpYyB2YWx1ZSA4NjQwMCB3aXRoIGEgbmV3IHV0aWxfdGlt ZS5oIGNvbnN0YW50Ci1TRUNfUEVSX0RBWS4KLQotUmV2aWV3ZWQtYnk6IEphbiBIw7ZwcG5lciA8 aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE5pa2xhcyBTY2huZWxsZSA8 c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBIw7ZwcG5lciA8aG9l cHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIGluY2x1ZGUvbGliL3V0aWxfdGltZS5oIHwgMiAr KwotIHpwY2ltb24venBjaW1vbi5jICAgICAgIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWIv dXRpbF90aW1lLmggYi9pbmNsdWRlL2xpYi91dGlsX3RpbWUuaAotaW5kZXggNDJiOTc0MWEuLjIx ZTJkNzhlIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saWIvdXRpbF90aW1lLmgKLSsrKyBiL2luY2x1 ZGUvbGliL3V0aWxfdGltZS5oCi1AQCAtMTksNiArMTksOCBAQAotIAotICNkZWZpbmUgTVNFQ19Q RVJfU0VDCTEwMDBMCi0gCi0rI2RlZmluZSBTRUNfUEVSX0RBWQkoMjQgKiA2MCAqIDYwKQotKwot IC8qKgotICAqIENvbnZlcnQgbmFub3NlY29uZHMgdG8gbWljcm9zZWNvbmRzCi0gICoKLWRpZmYg LS1naXQgYS96cGNpbW9uL3pwY2ltb24uYyBiL3pwY2ltb24venBjaW1vbi5jCi1pbmRleCA5OGEy ODcxYS4uNDBiNmVkZDcgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL3pwY2ltb24uYwotKysrIGIvenBj aW1vbi96cGNpbW9uLmMKLUBAIC0yNCw2ICsyNCw3IEBACi0gI2luY2x1ZGUgImxpYi91dGlsX29w dC5oIgotICNpbmNsdWRlICJsaWIvdXRpbF9mbXQuaCIKLSAjaW5jbHVkZSAibGliL3V0aWxfbGli Yy5oIgotKyNpbmNsdWRlICJsaWIvdXRpbF90aW1lLmgiCi0gCi0gI2luY2x1ZGUgPG9wZW5zc2wv ZXZwLmg+Ci0gCi1AQCAtMTAyLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2NtZGxpbmUo aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgc3RydWN0IG9wdGlvbnMgKm9wdHMpCi0gCQkJCQlvcHRh cmcpOwotIAkJCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0gCQkJfQotLQkJCWlmIChzZWNvbmRzIDwg ODY0MDApCi0rCQkJaWYgKHNlY29uZHMgPCBTRUNfUEVSX0RBWSkKLSAJCQkJb3B0cy0+aW50ZXJ2 YWxfc2Vjb25kcyA9IHNlY29uZHM7Ci0gCQkJaWYgKHNlY29uZHMgPCAxKQotIAkJCQlvcHRzLT5p bnRlcnZhbF9zZWNvbmRzID0gMTsKLS0tIAotMi41NS4wCi0KLQotRnJvbSAxMTNlOWViZmVmNjcy NTNmNGZhZWU3OThkMmZlNzg1ZjE4MmY5ZWVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotRGF0ZTogVGh1LCA5 IEFwciAyMDI2IDE1OjMyOjQ3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMjNdIHpwY2ltb246 IFNwbGl0IG9wdGljcyBtb25pdG9yaW5nIG91dCBpbnRvIHNlcGFyYXRlCi0gbW9uaXRvcgotTUlN RS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAot Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1JbnRyb2R1Y2UgdGhlIGNvbmNlcHQg b2YgYSBnZW5lcmljIHpQQ0kgZGV2aWNlIG1vbml0b3IgYnkgY3JlYXRpbmcgdGhlCi16cGNpbW9u X29wcyBvcGVyYXRpb25zIHN0cnVjdCB0dXJuaW5nIGFsbCBvcHRpY3Mgc3BlY2lmaWMgY2FsbHMg aW50bwotYWJzdHJhY3QgbW9uaXRvciBjYWxscy4gSGFuZGxlIG1vbml0b3JzIGFzIGEgc3RhdGlj IGFycmF5IG9mIHpwY2ltb25fb3BzCi1iYXNlZCBtb25pdG9ycyBvZiB3aGljaCB0aGUgbm93IHNw bGl0IG91dCBvcHRpY3MgbW9uaXRvciBpcyBjdXJyZW50bHkKLXRoZSBvbmx5IG9uZS4gQWxsIG9w ZXJhdGlvbnMgYXJlIGluIHByaW5jaXBsZSBvcHRpb25hbCB0aG91Z2ggYSBtb25pdG9yCi13aGlj aCBwcm92aWRlcyBhbiBpbml0IG9wZXJhdGlvbiBtdXN0IGFsc28gcHJvdmlkZSB0aGUgY29ycmVz cG9uZGluZwotZGVzdHJveSBvcGVyYXRpb24uCi0KLUtlZXAgdGhlIGJhc2U2NCBiYXNlZCBKU09O IHBhaXIgYXMgbm9uIG9wdGljcyBzcGVjaWZpYyBmb3IgbGF0ZXIgcmUtdXNlCi1hbmQgbWFrZSBp dCBqdXN0IHNraXAgdGhlIG91dHB1dCBpbiB0aGUgdmVyeSB1bmxpa2VseSBjYXNlIHRoYXQgZW5j b2RpbmcKLWZhaWxzLiBJbiBmb2xsb3cgb24gY29tbWl0cyBhIG1vbml0b3IgZm9yIE5WTWUgZGV2 aWNlcyBjb2xsZWN0aW5nIFNNQVJUCi1kYXRhIHdpbGwgYmUgYWRkZWQuCi0KLVJldmlld2VkLWJ5 OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBO aWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBK YW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci0tLS0KLSB6cGNpbW9uL01ha2Vm aWxlICAgIHwgICAyICstCi0genBjaW1vbi9vcHRpY3Ntb24uYyB8IDE3NyArKysrKysrKysrKysr KysrKysrCi0genBjaW1vbi9vcHRpY3Ntb24uaCB8ICAyMCArKysKLSB6cGNpbW9uL3pwY2ltb24u YyAgIHwgNDA2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g enBjaW1vbi96cGNpbW9uLmggICB8ICA1MiArKysrKysKLSA1IGZpbGVzIGNoYW5nZWQsIDQ1NCBp bnNlcnRpb25zKCspLCAyMDMgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHpwY2lt b24vb3B0aWNzbW9uLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgenBjaW1vbi9vcHRpY3Ntb24uaAot IGNyZWF0ZSBtb2RlIDEwMDY0NCB6cGNpbW9uL3pwY2ltb24uaAotCi1kaWZmIC0tZ2l0IGEvenBj aW1vbi9NYWtlZmlsZSBiL3pwY2ltb24vTWFrZWZpbGUKLWluZGV4IDQzZmMyYTA0Li5jYzBhOGFm MCAxMDA2NDQKLS0tLSBhL3pwY2ltb24vTWFrZWZpbGUKLSsrKyBiL3pwY2ltb24vTWFrZWZpbGUK LUBAIC03Myw3ICs3Myw3IEBAIEJVSUxEVEFSR0VUICs9IHpwY2ltb24KLSAKLSBhbGw6ICR7QlVJ TERUQVJHRVR9Ci0gCi0tenBjaW1vbjogenBjaW1vbi5vIG9wdGljc19pbmZvLm8gb3B0aWNzX3Nj bHAubyBldGh0b29sLm8gbGlua19tb24ubyAkKGxpYnMpCi0renBjaW1vbjogenBjaW1vbi5vIG9w dGljc21vbi5vIG9wdGljc19pbmZvLm8gb3B0aWNzX3NjbHAubyBldGh0b29sLm8gbGlua19tb24u byAkKGxpYnMpCi0gCi0gaW5zdGFsbDogYWxsCi0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVT VERJUikkKEJJTkRJUikgJChERVNURElSKSQoTUFORElSKS9tYW44Ci1kaWZmIC0tZ2l0IGEvenBj aW1vbi9vcHRpY3Ntb24uYyBiL3pwY2ltb24vb3B0aWNzbW9uLmMKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwMC4uNGRhNDU2ZjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3pwY2lt b24vb3B0aWNzbW9uLmMKLUBAIC0wLDAgKzEsMTc3IEBACi0rLyoKLSsgKiB6cGNpbW9uIC0gUmVw b3J0IG1vbml0b3JpbmcgZGF0YSB0byBmaXJtd2FyZQotKyAqCi0rICogQ29weXJpZ2h0IElCTSBD b3JwLiAyMDI0Ci0rICoKLSsgKiBzMzkwLXRvb2xzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscy4KLSsgKi8KLSsjaW5jbHVk ZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8bGludXgvaWYuaD4KLSsjaW5jbHVkZSA8c3RkYm9vbC5o PgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgImxpYi9wY2lfbGlzdC5oIgotKyNpbmNsdWRlICJsaWIv dXRpbF9mbXQuaCIKLSsjaW5jbHVkZSAibGliL3V0aWxfbGliYy5oIgotKwotKyNpbmNsdWRlICJl dGh0b29sLmgiCi0rI2luY2x1ZGUgImxpbmtfbW9uLmgiCi0rI2luY2x1ZGUgIm9wdGljc19pbmZv LmgiCi0rI2luY2x1ZGUgIm9wdGljc19zY2xwLmgiCi0rI2luY2x1ZGUgIm9wdGljc21vbi5oIgot KyNpbmNsdWRlICJ6cGNpbW9uLmgiCi0rCi0rc3RhdGljIHZvaWQgb3B0aWNzX2pzb25fcHJpbnQo c3RydWN0IG9wdGlvbnMgKm9wdHMsIHN0cnVjdCB6cGNpX25ldGRldiAqbmQsIHN0cnVjdCBvcHRp Y3MgKm9pKQotK3sKLSsJdXRpbF9mbXRfb2JqX3N0YXJ0KEZNVF9ERUZBVUxULCAibmV0ZGV2Iik7 Ci0rCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAibmFtZSIsIG5kLT5uYW1lKTsKLSsJdXRpbF9m bXRfcGFpcihGTVRfUVVPVEUsICJvcGVyc3RhdGUiLCB6cGNpX29wZXJzdGF0ZV9zdHIobmQtPm9w ZXJzdGF0ZSkpOwotKwl1dGlsX2ZtdF9vYmpfc3RhcnQoRk1UX0RFRkFVTFQsICJvcHRpY3MiKTsK LSsJdXRpbF9mbXRfcGFpcihGTVRfUVVPVEUsICJ0eXBlIiwgb3B0aWNzX3R5cGVfc3RyKG9wdGlj c190eXBlKG9pKSkpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9URSwgInJ4X2xvcyIsIG9wdGlj c19sb3Nfc3RyKG9wdGljc19yeF9sb3Mob2kpKSk7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RF LCAidHhfbG9zIiwgb3B0aWNzX2xvc19zdHIob3B0aWNzX3R4X2xvcyhvaSkpKTsKLSsJdXRpbF9m bXRfcGFpcihGTVRfUVVPVEUsICJ0eF9mYXVsdCIsIG9wdGljc19sb3Nfc3RyKG9wdGljc190eF9m YXVsdChvaSkpKTsKLSsJaWYgKG9wdHMtPm1vZHVsZV9pbmZvKQotKwkJenBjaW1vbl9qc29uX2Jh c2U2NF9wYWlyKCJtb2R1bGVfaW5mbyIsIG9pLT5yYXcsIChpbnQpb2ktPnNpemUpOwotKwl1dGls X2ZtdF9vYmpfZW5kKCk7Ci0rCXV0aWxfZm10X29ial9lbmQoKTsKLSt9Ci0rCi0rc3RhdGljIGlu dCBvcHRpY3Ntb25fY29sbGVjdF9hZGFwdGVyX2RhdGEoc3RydWN0IHpwY2ltb25fY3R4ICpjdHgs IHN0cnVjdCB6cGNpX2RldiAqemRldikKLSt7Ci0rCXN0cnVjdCBvcHRpb25zICpvcHRzID0gJmN0 eC0+b3B0czsKLSsJc3RydWN0IG9wdGljcyAqKm9pczsKLSsJaW50IG51bV9vaXMgPSAwOwotKwlj aGFyICpwY2lfYWRkcjsKLSsJaW50IGksIHJjOwotKwotKwkvKiBGaWx0ZXIgbm9uLU5JQyBkZXZp Y2VzIGFuZCBWRnMgKi8KLSsJaWYgKHpwY2lfaXNfdmYoemRldikgfHwgIXpkZXYtPm51bV9uZXRk ZXZzKQotKwkJcmV0dXJuIC1FTk9ERVY7Ci0rCW9pcyA9IChzdHJ1Y3Qgb3B0aWNzICoqKXV0aWxf emFsbG9jKHNpemVvZihvaXNbMF0pICogemRldi0+bnVtX25ldGRldnMpOwotKwlmb3IgKGkgPSAw OyBpIDwgemRldi0+bnVtX25ldGRldnM7IGkrKykgewotKwkJcmMgPSBldGh0b29sX25sX2dldF9v cHRpY3MoJmN0eC0+b3B0aWNzbW9uX2N0eC5ldGh0b29sX2N0eCwgemRldi0+bmV0ZGV2c1tpXS5u YW1lLAotKwkJCQkJICAgJm9pc1tpXSk7Ci0rCQlpZiAocmMpCi0rCQkJZ290byBmcmVlX29pczsK LSsJCW51bV9vaXMrKzsKLSsJfQotKwlpZiAoIW9wdHMtPnF1aWV0KSB7Ci0rCQl1dGlsX2ZtdF9v Ympfc3RhcnQoRk1UX0RFRkFVTFQsICJhZGFwdGVyIik7Ci0rCQl1dGlsX2ZtdF9wYWlyKEZNVF9R VU9URSwgInBmdCIsIHpwY2lfcGZ0X3N0cih6ZGV2KSk7Ci0rCQl1dGlsX2ZtdF9vYmpfc3RhcnQo Rk1UX0RFRkFVTFQsICJpZHMiKTsKLSsJCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAiZmlkIiwg IjB4JTB4IiwgemRldi0+ZmlkKTsKLSsJCWlmICh6ZGV2LT51aWRfaXNfdW5pcXVlKQotKwkJCXV0 aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAidWlkIiwgIjB4JTB4IiwgemRldi0+dWlkKTsKLSsJCXBj aV9hZGRyID0genBjaV9wY2lfYWRkcih6ZGV2KTsKLSsJCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RF LCAicGNpX2FkZHJlc3MiLCBwY2lfYWRkcik7Ci0rCQlmcmVlKHBjaV9hZGRyKTsKLSsJCXV0aWxf Zm10X29ial9lbmQoKTsKLSsJCXV0aWxfZm10X29ial9zdGFydChGTVRfTElTVCwgIm5ldGRldnMi KTsKLSsJCWZvciAoaSA9IDA7IGkgPCB6ZGV2LT5udW1fbmV0ZGV2czsgaSsrKQotKwkJCW9wdGlj c19qc29uX3ByaW50KG9wdHMsICZ6ZGV2LT5uZXRkZXZzW2ldLCBvaXNbaV0pOwotKwkJdXRpbF9m bXRfb2JqX2VuZCgpOyAvKiBuZXRkZXZzIGxpc3QgKi8KLSsJCXV0aWxfZm10X29ial9lbmQoKTsg LyogYWRhcHRlciAqLwotKwkJZmZsdXNoKHN0ZG91dCk7Ci0rCX0KLSsJaWYgKG9wdHMtPnJlcG9y dCkgewotKwkJZm9yIChpID0gMDsgaSA8IHpkZXYtPm51bV9uZXRkZXZzOyBpKyspIHsKLSsJCQly YyA9IHNjbHBfaXNzdWVfb3B0aWNzX3JlcG9ydCh6ZGV2LCBvaXNbaV0pOwotKwkJCWlmIChyYyA9 PSAtRU5PVFNVUCkgewotKwkJCQlmcHJpbnRmKHN0ZGVyciwgIlNraXBwaW5nICVzIHdoaWNoIGRv ZXMgbm90IHN1cHBvcnQgcmVwb3J0aW5nXG4iLAotKwkJCQkJemRldi0+bmV0ZGV2c1tpXS5uYW1l KTsKLSsJCQl9IGVsc2UgaWYgKHJjIDwgMCkgewotKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9y IGlzc3VpbmcgU0NMUCBmb3Igb3B0aWNzIGRhdGEgZmFpbGVkOiAlc1xuIiwKLSsJCQkJCXN0cmVy cm9yKC1yYykpOwotKwkJCX0KLSsJCX0KLSsJfQotK2ZyZWVfb2lzOgotKwlmb3IgKGkgPSAwOyBp IDwgbnVtX29pczsgaSsrKQotKwkJb3B0aWNzX2ZyZWUob2lzW2ldKTsKLSsJZnJlZSgodm9pZCAq KW9pcyk7Ci0rCXJldHVybiByYzsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgb25fbGlua19jaGFuZ2Uo c3RydWN0IHpwY2lfbmV0ZGV2ICpjaGFuZ2VfbmV0ZGV2LCB2b2lkICphcmcpCi0rewotKwlzdHJ1 Y3QgenBjaW1vbl9jdHggKmN0eCA9IGFyZzsKLSsJc3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gTlVM TDsKLSsJc3RydWN0IHpwY2lfbmV0ZGV2ICpuZXRkZXY7Ci0rCWludCByZWxvYWRzID0gMTsKLSsK LSsJZG8gewotKwkJaWYgKGN0eC0+enBjaV9saXN0KSB7Ci0rCQkJemRldiA9IHpwY2lfZmluZF9i eV9uZXRkZXYoY3R4LT56cGNpX2xpc3QsIGNoYW5nZV9uZXRkZXYtPm5hbWUsCi0rCQkJCQkJICAg Jm5ldGRldik7Ci0rCQkJaWYgKHpkZXYpIHsKLSsJCQkJLyogU2tpcCBkYXRhIGNvbGxlY3Rpb24g aWYgb3BlcmF0aW9uYWwgc3RhdGUgaXMKLSsJCQkJICogdW5jaGFuZ2VkCi0rCQkJCSAqLwotKwkJ CQlpZiAobmV0ZGV2LT5vcGVyc3RhdGUgPT0gY2hhbmdlX25ldGRldi0+b3BlcnN0YXRlKQotKwkJ CQkJcmV0dXJuOwotKwkJCQkvKiBVcGRhdGUgb3BlcmF0aW9uIHN0YXRlIGZvciBWRnMgZXZlbiB0 aG91Z2gKLSsJCQkJICogdGhleSBhcmUgc2tpcHBlZCBqdXN0IGZvciBhIGNvbnNpc3RlbnQgdmll dwotKwkJCQkgKi8KLSsJCQkJbmV0ZGV2LT5vcGVyc3RhdGUgPSBjaGFuZ2VfbmV0ZGV2LT5vcGVy c3RhdGU7Ci0rCQkJCS8qIE9ubHkgY29sbGVjdCBvcHRpY3MgZGF0YSBmb3IgUEZzICovCi0rCQkJ CWlmICghenBjaV9pc192Zih6ZGV2KSkKLSsJCQkJCW9wdGljc21vbl9jb2xsZWN0X2FkYXB0ZXJf ZGF0YShjdHgsIHpkZXYpOwotKwkJCQlyZXR1cm47Ci0rCQkJfQotKwkJfQotKwkJLyogQ291bGQg YmUgdW5pbml0YWxpemVkIGxpc3Qgb3IgYSBuZXcgZGV2aWNlLCByZXRyeSBhZnRlciByZWxvYWQg ICovCi0rCQl6cGNpX2xpc3RfcmVsb2FkKCZjdHgtPnpwY2lfbGlzdCk7Ci0rCQlyZWxvYWRzLS07 Ci0rCX0gd2hpbGUgKHJlbG9hZHMgPiAwKTsKLSt9Ci0rCi0rc3RhdGljIGludCBvcHRpY3Ntb25f b3Blbl9tb25pdG9yKHN0cnVjdCB6cGNpbW9uX2N0eCAqY3R4KQotK3sKLSsJaW50IHJldDsKLSsK LSsJcmV0ID0gbGlua19tb25fbmxfd2FpdGZkX2NyZWF0ZSgmY3R4LT5vcHRpY3Ntb25fY3R4Lmxj dHgsIG9uX2xpbmtfY2hhbmdlLCBjdHgpOwotKwlpZiAocmV0KSB7Ci0rCQlmcHJpbnRmKHN0ZGVy ciwgIkZhaWxlZCB0byBjcmVhdGUgbGluayBtb25pdG9yaW5nIHNvY2tldFxuIik7Ci0rCQlyZXQg PSAtRUlPOwotKwl9Ci0rCXJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbnQgb3B0aWNzbW9u X2dldF9tb25pdG9yX2ZkKHN0cnVjdCB6cGNpbW9uX2N0eCAqY3R4KQotK3sKLSsJcmV0dXJuIGxp bmtfbW9uX25sX3dhaXRmZF9nZXRmZCgmY3R4LT5vcHRpY3Ntb25fY3R4LmxjdHgpOwotK30KLSsK LStzdGF0aWMgdm9pZCBvcHRpY3Ntb25fbW9uaXRvcl9mZF9oYW5kbGUoc3RydWN0IHpwY2ltb25f Y3R4ICpjdHgpCi0rewotKwlsaW5rX21vbl9ubF93YWl0ZmRfcmVhZCgmY3R4LT5vcHRpY3Ntb25f Y3R4LmxjdHgpOwotK30KLSsKLStzdGF0aWMgdm9pZCBvcHRpY3Ntb25fY2xvc2VfbW9uaXRvcihz dHJ1Y3QgenBjaW1vbl9jdHggKmN0eCkKLSt7Ci0rCWxpbmtfbW9uX25sX3dhaXRmZF9kZXN0cm95 KCZjdHgtPm9wdGljc21vbl9jdHgubGN0eCk7Ci0rfQotKwotK3N0YXRpYyBpbnQgb3B0aWNzbW9u X2luaXQoc3RydWN0IHpwY2ltb25fY3R4ICpjdHgpCi0rewotKwlyZXR1cm4gZXRodG9vbF9ubF9j b25uZWN0KCZjdHgtPm9wdGljc21vbl9jdHguZXRodG9vbF9jdHgpOwotK30KLSsKLStzdGF0aWMg dm9pZCBvcHRpY3Ntb25fZGVzdHJveShzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCkKLSt7Ci0rCWV0 aHRvb2xfbmxfY2xvc2UoJmN0eC0+b3B0aWNzbW9uX2N0eC5ldGh0b29sX2N0eCk7Ci0rfQotKwot K2NvbnN0IHN0cnVjdCB6cGNpbW9uX29wcyBvcHRpY3Ntb25fb3BzID0gewotKwkuY29sbGVjdF9h ZGFwdGVyX2RhdGEgPSBvcHRpY3Ntb25fY29sbGVjdF9hZGFwdGVyX2RhdGEsCi0rCS5vcGVuX21v bml0b3IgPSBvcHRpY3Ntb25fb3Blbl9tb25pdG9yLAotKwkuZ2V0X21vbml0b3JfZmQgPSBvcHRp Y3Ntb25fZ2V0X21vbml0b3JfZmQsCi0rCS5tb25pdG9yX2ZkX2hhbmRsZSA9IG9wdGljc21vbl9t b25pdG9yX2ZkX2hhbmRsZSwKLSsJLmNsb3NlX21vbml0b3IgPSBvcHRpY3Ntb25fY2xvc2VfbW9u aXRvciwKLSsJLmluaXQgPSBvcHRpY3Ntb25faW5pdCwKLSsJLmRlc3Ryb3kgPSBvcHRpY3Ntb25f ZGVzdHJveSwKLSt9OwotZGlmZiAtLWdpdCBhL3pwY2ltb24vb3B0aWNzbW9uLmggYi96cGNpbW9u L29wdGljc21vbi5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjA0Nzk4 MjAxCi0tLS0gL2Rldi9udWxsCi0rKysgYi96cGNpbW9uL29wdGljc21vbi5oCi1AQCAtMCwwICsx LDIwIEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjUKLSsgKgotKyAqIHMzOTAt dG9vbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNF TlNFIGZvciBkZXRhaWxzLgotKyAqLwotKyNpZm5kZWYgWlBDSU1PTl9PUFRJQ1NNT05fSAotKyNk ZWZpbmUgWlBDSU1PTl9PUFRJQ1NNT05fSAotKyNpbmNsdWRlICJldGh0b29sLmgiCi0rI2luY2x1 ZGUgImxpbmtfbW9uLmgiCi0rCi0rc3RydWN0IG9wdGlvbnM7Ci0rCi0rc3RydWN0IG9wdGljc21v bl9jdHggewotKwlzdHJ1Y3QgZXRodG9vbF9ubF9jdHggZXRodG9vbF9jdHg7Ci0rCXN0cnVjdCBs aW5rX21vbl9ubF9jdHggbGN0eDsKLSt9OwotKwotK2V4dGVybiBjb25zdCBzdHJ1Y3QgenBjaW1v bl9vcHMgb3B0aWNzbW9uX29wczsKLSsjZW5kaWYgLyogWlBDSU1PTl9PUFRJQ1NNT05fSCAqLwot ZGlmZiAtLWdpdCBhL3pwY2ltb24venBjaW1vbi5jIGIvenBjaW1vbi96cGNpbW9uLmMKLWluZGV4 IDQwYjZlZGQ3Li4zMjU1MGZmMCAxMDA2NDQKLS0tLSBhL3pwY2ltb24venBjaW1vbi5jCi0rKysg Yi96cGNpbW9uL3pwY2ltb24uYwotQEAgLTEsNTcgKzEsNDcgQEAKLSAvKgotLSAqIG9wdGljc21v biAtIFJlcG9ydCBvcHRpY3MgbW9uaXRvcmluZyBkYXRhIHRvIGZpcm13YXJlCi0rICogenBjaW1v biAtIFJlcG9ydCBtb25pdG9yaW5nIGRhdGEgdG8gZmlybXdhcmUKLSAgKgotICAqIENvcHlyaWdo dCBJQk0gQ29ycC4gMjAyNAotICAqCi0gICogczM5MC10b29scyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMuCi0gICovCi0r I2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNsdWRlIDxzdGRi b29sLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNs dWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8c3RkYm9vbC5oPgotLSNpbmNsdWRlIDxlcnJuby5o PgotIAotKyNpbmNsdWRlIDxsaW51eC9pZi5oPgotICNpbmNsdWRlIDxzeXMvZXBvbGwuaD4KLSAj aW5jbHVkZSA8c3lzL3NpZ25hbGZkLmg+Ci0tI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRl IDxzeXMvdGltZXJmZC5oPgotLSNpbmNsdWRlIDx0aW1lLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2lm Lmg+Ci0gCi0tI2luY2x1ZGUgImxpYi91dGlsX2xpc3QuaCIKLSsjaW5jbHVkZSA8b3BlbnNzbC9l dnAuaD4KLSsKLSAjaW5jbHVkZSAibGliL3BjaV9saXN0LmgiCi0tI2luY2x1ZGUgImxpYi91dGls X3ByZy5oIgotLSNpbmNsdWRlICJsaWIvdXRpbF9vcHQuaCIKLSAjaW5jbHVkZSAibGliL3V0aWxf Zm10LmgiCi0gI2luY2x1ZGUgImxpYi91dGlsX2xpYmMuaCIKLSsjaW5jbHVkZSAibGliL3V0aWxf b3B0LmgiCi0rI2luY2x1ZGUgImxpYi91dGlsX3ByZy5oIgotICNpbmNsdWRlICJsaWIvdXRpbF90 aW1lLmgiCi0rI2luY2x1ZGUgImxpYi96dF9jb21tb24uaCIKLSAKLS0jaW5jbHVkZSA8b3BlbnNz bC9ldnAuaD4KLS0KLS0jaW5jbHVkZSAiZXRodG9vbC5oIgotLSNpbmNsdWRlICJsaW5rX21vbi5o IgotLSNpbmNsdWRlICJvcHRpY3NfaW5mby5oIgotLSNpbmNsdWRlICJvcHRpY3Nfc2NscC5oIgot KyNpbmNsdWRlICJvcHRpY3Ntb24uaCIKLSsjaW5jbHVkZSAienBjaW1vbi5oIgotICNpbmNsdWRl ICJ6cGNpbW9uX2NsaS5oIgotIAotICNkZWZpbmUgQVBJX0xFVkVMIDEKLSAKLS1zdHJ1Y3Qgb3B0 aW9ucyB7Ci0tCWJvb2wgbW9uaXRvcjsKLS0JYm9vbCByZXBvcnQ7Ci0tCWJvb2wgbW9kdWxlX2lu Zm87Ci0tCWJvb2wgcXVpZXQ7Ci0tCWVudW0gdXRpbF9mbXRfdCBmb3JtYXQ7Ci0tCWJvb2wgZXhw bGljaXRfZm9ybWF0OwotLQotLQl1aW50MzJfdCBpbnRlcnZhbF9zZWNvbmRzOwotK3N0cnVjdCB6 cGNpbW9uX21vbml0b3IgewotKwljb25zdCBzdHJ1Y3QgenBjaW1vbl9vcHMgKm9wczsKLSsJdWlu dDMyX3QgaW5pdGlhbGl6ZWQgOiAxOwotKwl1aW50MzJfdCBvcGVuZWQgOiAxOwotIH07Ci0gCi0t c3RydWN0IG9wdGljc21vbl9jdHggewotLQlzdHJ1Y3Qgb3B0aW9ucyBvcHRzOwotLQlzdHJ1Y3Qg ZXRodG9vbF9ubF9jdHggZXRodG9vbF9jdHg7Ci0tCXN0cnVjdCBsaW5rX21vbl9ubF9jdHggbGN0 eDsKLS0Jc3RydWN0IHV0aWxfbGlzdCAqenBjaV9saXN0OwotK3N0YXRpYyBzdHJ1Y3QgenBjaW1v bl9tb25pdG9yIG1vbml0b3JzW10gPSB7Ci0rCXsub3BzID0gJm9wdGljc21vbl9vcHMsIC5pbml0 aWFsaXplZCA9IDAsIC5vcGVuZWQgPSAwfSwKLSB9OwotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dXRpbF9wcmcgcHJnID0gewotQEAgLTEyMiwxNzEgKzExMiwxMzEgQEAgc3RhdGljIHZvaWQgcGFy c2VfY21kbGluZShpbnQgYXJnYywgY2hhciAqYXJndltdLCBzdHJ1Y3Qgb3B0aW9ucyAqb3B0cykK LSAJfSB3aGlsZSAoY21kICE9IC0xKTsKLSB9Ci0gCi0tc3RhdGljIGludCBtb2R1bGVfaW5mb19w YWlyKHN0cnVjdCBvcHRpY3MgKm9pKQotK3ZvaWQgenBjaW1vbl9qc29uX2Jhc2U2NF9wYWlyKGNo YXIgKm5hbWUsIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKLSB7Ci0tCXNpemVfdCBiNjRfY2FsY2xl biwgYjY0bGVuOwotLQlpbnQgcmMgPSBFWElUX1NVQ0NFU1M7Ci0rCWludCBiNjRfY2FsY2xlbiwg YjY0bGVuOwotIAljaGFyICpiNjQ7Ci0gCi0tCWI2NF9jYWxjbGVuID0gKG9pLT5zaXplIC8gMykg KiA0OwotLQlpZiAob2ktPnNpemUgJSAzID4gMCkKLSsJYjY0X2NhbGNsZW4gPSAobGVuIC8gMykg KiA0OwotKwlpZiAobGVuICUgMyA+IDApCi0gCQliNjRfY2FsY2xlbiArPSA0OwotIAotIAliNjQg PSB1dGlsX3phbGxvYyhiNjRfY2FsY2xlbiArIDEpOyAvKiBhZGRzIE5VTCBieXRlICovCi0tCWI2 NGxlbiA9IEVWUF9FbmNvZGVCbG9jaygodW5zaWduZWQgY2hhciAqKWI2NCwgb2ktPnJhdywgb2kt PnNpemUpOwotKwliNjRsZW4gPSBFVlBfRW5jb2RlQmxvY2soKHVuc2lnbmVkIGNoYXIgKiliNjQs ICh1bnNpZ25lZCBjaGFyICopYnVmLCBsZW4pOwotIAlpZiAoYjY0bGVuICE9IGI2NF9jYWxjbGVu KSB7Ci0tCQlmcHJpbnRmKHN0ZGVyciwgImVuY29kaW5nIGJhc2U2NCB2aWEgb3BlbnNzbCBmYWls ZWRcbiIpOwotLQkJcmMgPSBFWElUX0ZBSUxVUkU7Ci0rCQl3YXJueCgiZW5jb2RpbmcgYmFzZTY0 IHZpYSBvcGVuc3NsIGZhaWxlZFxuIik7Ci0gCQlnb3RvIG91dDsKLSAJfQotLQl1dGlsX2ZtdF9w YWlyKEZNVF9RVU9URSwgIm1vZHVsZV9pbmZvIiwgYjY0KTsKLSsJdXRpbF9mbXRfcGFpcihGTVRf UVVPVEUsIG5hbWUsIGI2NCk7Ci0gb3V0OgotIAlmcmVlKGI2NCk7Ci0tCXJldHVybiByYzsKLS19 Ci0tCi0tc3RhdGljIHZvaWQgb3B0aWNzX2pzb25fcHJpbnQoc3RydWN0IG9wdGljc21vbl9jdHgg KmN0eCwgc3RydWN0IHpwY2lfbmV0ZGV2ICpuZCwgc3RydWN0IG9wdGljcyAqb2kpCi0tewotLQl1 dGlsX2ZtdF9vYmpfc3RhcnQoRk1UX0RFRkFVTFQsICJuZXRkZXYiKTsKLS0JdXRpbF9mbXRfcGFp cihGTVRfUVVPVEUsICJuYW1lIiwgbmQtPm5hbWUpOwotLQl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9U RSwgIm9wZXJzdGF0ZSIsIHpwY2lfb3BlcnN0YXRlX3N0cihuZC0+b3BlcnN0YXRlKSk7Ci0tCXV0 aWxfZm10X29ial9zdGFydChGTVRfREVGQVVMVCwgIm9wdGljcyIpOwotLQl1dGlsX2ZtdF9wYWly KEZNVF9RVU9URSwgInR5cGUiLCBvcHRpY3NfdHlwZV9zdHIob3B0aWNzX3R5cGUob2kpKSk7Ci0t CXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAicnhfbG9zIiwgb3B0aWNzX2xvc19zdHIob3B0aWNz X3J4X2xvcyhvaSkpKTsKLS0JdXRpbF9mbXRfcGFpcihGTVRfUVVPVEUsICJ0eF9sb3MiLCBvcHRp Y3NfbG9zX3N0cihvcHRpY3NfdHhfbG9zKG9pKSkpOwotLQl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9U RSwgInR4X2ZhdWx0Iiwgb3B0aWNzX2xvc19zdHIob3B0aWNzX3R4X2ZhdWx0KG9pKSkpOwotLQlp ZiAoY3R4LT5vcHRzLm1vZHVsZV9pbmZvKQotLQkJbW9kdWxlX2luZm9fcGFpcihvaSk7Ci0tCXV0 aWxfZm10X29ial9lbmQoKTsKLS0JdXRpbF9mbXRfb2JqX2VuZCgpOwotLX0KLS0KLS1zdGF0aWMg aW50IGR1bXBfYWRhcHRlcl9kYXRhKHN0cnVjdCBvcHRpY3Ntb25fY3R4ICpjdHgsIHN0cnVjdCB6 cGNpX2RldiAqemRldikKLS17Ci0tCXN0cnVjdCBvcHRpY3MgKipvaXM7Ci0tCWludCBudW1fb2lz ID0gMDsKLS0JY2hhciAqcGNpX2FkZHI7Ci0tCWludCBpLCByYzsKLS0KLS0Jb2lzID0gdXRpbF96 YWxsb2Moc2l6ZW9mKG9pc1swXSkgKiB6ZGV2LT5udW1fbmV0ZGV2cyk7Ci0tCWZvciAoaSA9IDA7 IGkgPCB6ZGV2LT5udW1fbmV0ZGV2czsgaSsrKSB7Ci0tCQlyYyA9IGV0aHRvb2xfbmxfZ2V0X29w dGljcygmY3R4LT5ldGh0b29sX2N0eCwgemRldi0+bmV0ZGV2c1tpXS5uYW1lLCAmb2lzW2ldKTsK LS0JCWlmIChyYykKLS0JCQlnb3RvIGZyZWVfb2lzOwotLQkJbnVtX29pcysrOwotLQl9Ci0tCWlm ICghY3R4LT5vcHRzLnF1aWV0KSB7Ci0tCQl1dGlsX2ZtdF9vYmpfc3RhcnQoRk1UX0RFRkFVTFQs ICJhZGFwdGVyIik7Ci0tCQl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9URSwgInBmdCIsIHpwY2lfcGZ0 X3N0cih6ZGV2KSk7Ci0tCQl1dGlsX2ZtdF9vYmpfc3RhcnQoRk1UX0RFRkFVTFQsICJpZHMiKTsK LS0JCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAiZmlkIiwgIjB4JTB4IiwgemRldi0+ZmlkKTsK LS0JCWlmICh6ZGV2LT51aWRfaXNfdW5pcXVlKQotLQkJCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RF LCAidWlkIiwgIjB4JTB4IiwgemRldi0+dWlkKTsKLS0JCXBjaV9hZGRyID0genBjaV9wY2lfYWRk cih6ZGV2KTsKLS0JCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAicGNpX2FkZHJlc3MiLCBwY2lf YWRkcik7Ci0tCQlmcmVlKHBjaV9hZGRyKTsKLS0JCXV0aWxfZm10X29ial9lbmQoKTsKLS0JCXV0 aWxfZm10X29ial9zdGFydChGTVRfTElTVCwgIm5ldGRldnMiKTsKLS0JCWZvciAoaSA9IDA7IGkg PCB6ZGV2LT5udW1fbmV0ZGV2czsgaSsrKQotLQkJCW9wdGljc19qc29uX3ByaW50KGN0eCwgJnpk ZXYtPm5ldGRldnNbaV0sIG9pc1tpXSk7Ci0tCQl1dGlsX2ZtdF9vYmpfZW5kKCk7IC8qIG5ldGRl dnMgbGlzdCAqLwotLQkJdXRpbF9mbXRfb2JqX2VuZCgpOyAvKiBhZGFwdGVyICovCi0tCQlmZmx1 c2goc3Rkb3V0KTsKLS0JfQotLQlpZiAoY3R4LT5vcHRzLnJlcG9ydCkgewotLQkJZm9yIChpID0g MDsgaSA8IHpkZXYtPm51bV9uZXRkZXZzOyBpKyspIHsKLS0JCQlyYyA9IHNjbHBfaXNzdWVfb3B0 aWNzX3JlcG9ydCh6ZGV2LCBvaXNbaV0pOwotLQkJCWlmIChyYyA9PSAtRU5PVFNVUCkgewotLQkJ CQlmcHJpbnRmKHN0ZGVyciwgIlNraXBwaW5nICVzIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgcmVw b3J0aW5nXG4iLAotLQkJCQkJemRldi0+bmV0ZGV2c1tpXS5uYW1lKTsKLS0JCQl9IGVsc2UgaWYg KHJjIDwgMCkgewotLQkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGlzc3VpbmcgU0NMUCBmb3Ig b3B0aWNzIGRhdGEgZmFpbGVkOiAlc1xuIiwKLS0JCQkJCXN0cmVycm9yKC1yYykpOwotLQkJCX0K LS0JCX0KLS0JfQotLWZyZWVfb2lzOgotLQlmb3IgKGkgPSAwOyBpIDwgbnVtX29pczsgaSsrKQot LQkJb3B0aWNzX2ZyZWUob2lzW2ldKTsKLS0JZnJlZShvaXMpOwotLQlyZXR1cm4gcmM7Ci0gfQot IAotLXN0YXRpYyB2b2lkIHpwY2lfbGlzdF9yZWxvYWQoc3RydWN0IHV0aWxfbGlzdCAqKnpwY2lf bGlzdCkKLSt2b2lkIHpwY2lfbGlzdF9yZWxvYWQoc3RydWN0IHV0aWxfbGlzdCAqKnpwY2lfbGlz dCkKLSB7Ci0gCWlmICgqenBjaV9saXN0KQotIAkJenBjaV9mcmVlX2Rldl9saXN0KCp6cGNpX2xp c3QpOwotIAkqenBjaV9saXN0ID0genBjaV9kZXZfbGlzdCgpOwotIH0KLSAKLS1zdGF0aWMgdm9p ZCBkdW1wX2FsbF9hZGFwdGVyX2RhdGEoc3RydWN0IG9wdGljc21vbl9jdHggKmN0eCkKLStzdGF0 aWMgdm9pZCBjb2xsZWN0X2FsbF9hZGFwdGVyX2RhdGEoc3RydWN0IHpwY2ltb25fY3R4ICpjdHgp Ci0gewotIAlzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7Ci0rCWludCBpOwotIAotIAl6cGNpX2xpc3Rf cmVsb2FkKCZjdHgtPnpwY2lfbGlzdCk7Ci0gCXV0aWxfbGlzdF9pdGVyYXRlKGN0eC0+enBjaV9s aXN0LCB6ZGV2KSB7Ci0tCQkvKiBGaWx0ZXIgbm9uLU5JQyBkZXZpY2VzIGFuZCBWRnMgKi8KLS0J CWlmICh6cGNpX2lzX3ZmKHpkZXYpIHx8ICF6ZGV2LT5udW1fbmV0ZGV2cykKLS0JCQljb250aW51 ZTsKLS0JCWR1bXBfYWRhcHRlcl9kYXRhKGN0eCwgemRldik7Ci0rCQlmb3IgKGkgPSAwOyBpIDwg KGludClBUlJBWV9TSVpFKG1vbml0b3JzKTsgaSsrKQotKwkJCWlmIChtb25pdG9yc1tpXS5vcHMt PmNvbGxlY3RfYWRhcHRlcl9kYXRhKQotKwkJCQltb25pdG9yc1tpXS5vcHMtPmNvbGxlY3RfYWRh cHRlcl9kYXRhKGN0eCwgemRldik7Ci0gCX0KLSB9Ci0gCi0tc3RhdGljIGludCBvbmVzaG90X21v ZGUoc3RydWN0IG9wdGljc21vbl9jdHggKmN0eCkKLSsjZGVmaW5lIE1BWF9FVkVOVFMgOAotKwot K3N0YXRpYyBpbnQgbW9uaXRvcl9lcG9sbF9tb25fZmRzX3ByZXBhcmUoc3RydWN0IHpwY2ltb25f Y3R4ICpjdHgsIGludCBlcGZkLCBpbnQgbW9uX2Zkc1tdKQotIHsKLS0JdXRpbF9mbXRfaW5pdChz dGRvdXQsIGN0eC0+b3B0cy5mb3JtYXQsIEZNVF9ERUZBVUxULCBBUElfTEVWRUwpOwotLQlpZiAo IWN0eC0+b3B0cy5xdWlldCkKLS0JCXV0aWxfZm10X29ial9zdGFydChGTVRfTElTVCwgImFkYXB0 ZXJzIik7Ci0tCWR1bXBfYWxsX2FkYXB0ZXJfZGF0YShjdHgpOwotLQlpZiAoIWN0eC0+b3B0cy5x dWlldCkKLS0JCXV0aWxfZm10X29ial9lbmQoKTsKLS0JdXRpbF9mbXRfZXhpdCgpOwotKwlzdHJ1 Y3QgZXBvbGxfZXZlbnQgZXY7Ci0rCWludCBtb25faWR4OwotIAotLQlyZXR1cm4gRVhJVF9TVUND RVNTOwotKwlmb3IgKG1vbl9pZHggPSAwOyBtb25faWR4IDwgKGludClBUlJBWV9TSVpFKG1vbml0 b3JzKTsgbW9uX2lkeCsrKSB7Ci0rCQlpZiAoIW1vbml0b3JzW21vbl9pZHhdLm9wcy0+Z2V0X21v bml0b3JfZmQpIHsKLSsJCQltb25fZmRzW21vbl9pZHhdID0gLTE7Ci0rCQkJY29udGludWU7Ci0r CQl9Ci0rCQltb25fZmRzW21vbl9pZHhdID0gbW9uaXRvcnNbbW9uX2lkeF0ub3BzLT5nZXRfbW9u aXRvcl9mZChjdHgpOwotKwkJaWYgKG1vbl9mZHNbbW9uX2lkeF0gPCAwKQotKwkJCXJldHVybiAt RUlPOwotKwkJZXYuZXZlbnRzID0gRVBPTExJTjsKLSsJCWV2LmRhdGEuZmQgPSBtb25fZmRzW21v bl9pZHhdOwotKwkJaWYgKGVwb2xsX2N0bChlcGZkLCBFUE9MTF9DVExfQURELCBtb25fZmRzW21v bl9pZHhdLCAmZXYpID09IC0xKQotKwkJCXJldHVybiAtRUlPOwotKwl9Ci0rCXJldHVybiAwOwot IH0KLSAKLS12b2lkIG9uX2xpbmtfY2hhbmdlKHN0cnVjdCB6cGNpX25ldGRldiAqbmV0ZGV2LCB2 b2lkICphcmcpCi0rc3RhdGljIHZvaWQgbW9uaXRvcl9lcG9sbF9tb25fZmRzKHN0cnVjdCB6cGNp bW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZXBvbGxfZXZlbnQgZXZlbnQsCi0rCQkJCSAgY29uc3QgaW50 IG1vbl9mZHNbXSkKLSB7Ci0tCXN0cnVjdCBvcHRpY3Ntb25fY3R4ICpjdHggPSBhcmc7Ci0tCXN0 cnVjdCB6cGNpX25ldGRldiAqZm91bmRfbmV0ZGV2OwotLQlzdHJ1Y3QgenBjaV9kZXYgKnpkZXYg PSBOVUxMOwotLQlpbnQgcmVsb2FkcyA9IDE7Ci0rCWludCBtb25faWR4OwotIAotLQlkbyB7Ci0t CQlpZiAoY3R4LT56cGNpX2xpc3QpIHsKLS0JCQl6ZGV2ID0genBjaV9maW5kX2J5X25ldGRldihj dHgtPnpwY2lfbGlzdCwgbmV0ZGV2LT5uYW1lLCAmZm91bmRfbmV0ZGV2KTsKLS0JCQlpZiAoemRl dikgewotLQkJCQkvKiBTa2lwIGRhdGEgY29sbGVjdGlvbiBpZiBvcGVyYXRpb25hbCBzdGF0ZSBp cwotLQkJCQkgKiB1bmNoYW5nZWQKLS0JCQkJICovCi0tCQkJCWlmIChmb3VuZF9uZXRkZXYtPm9w ZXJzdGF0ZSA9PSBuZXRkZXYtPm9wZXJzdGF0ZSkKLS0JCQkJCXJldHVybjsKLS0JCQkJLyogVXBk YXRlIG9wZXJhdGlvbiBzdGF0ZSBmb3IgVkZzIGV2ZW4gdGhvdWdoCi0tCQkJCSAqIHRoZXkgYXJl IHNraXBwZWQganVzdCBmb3IgYSBjb25zaXN0ZW50IHZpZXcKLS0JCQkJICovCi0tCQkJCWZvdW5k X25ldGRldi0+b3BlcnN0YXRlID0gbmV0ZGV2LT5vcGVyc3RhdGU7Ci0tCQkJCS8qIE9ubHkgY29s bGVjdCBvcHRpY3MgZGF0YSBmb3IgUEZzICovCi0tCQkJCWlmICghenBjaV9pc192Zih6ZGV2KSkK LS0JCQkJCWR1bXBfYWRhcHRlcl9kYXRhKGN0eCwgemRldik7Ci0tCQkJCXJldHVybjsKLS0JCQl9 Ci0tCQl9Ci0tCQkvKiBDb3VsZCBiZSB1bmluaXRhbGl6ZWQgbGlzdCBvciBhIG5ldyBkZXZpY2Us IHJldHJ5IGFmdGVyIHJlbG9hZCAgKi8KLS0JCXpwY2lfbGlzdF9yZWxvYWQoJmN0eC0+enBjaV9s aXN0KTsKLS0JCXJlbG9hZHMtLTsKLS0JfSB3aGlsZSAocmVsb2FkcyA+IDApOwotKwlmb3IgKG1v bl9pZHggPSAwOyBtb25faWR4IDwgKGludClBUlJBWV9TSVpFKG1vbml0b3JzKTsgbW9uX2lkeCsr KSB7Ci0rCQlpZiAoZXZlbnQuZGF0YS5mZCAhPSBtb25fZmRzW21vbl9pZHhdKQotKwkJCWNvbnRp bnVlOwotKwkJaWYgKCFtb25pdG9yc1ttb25faWR4XS5vcHMtPm1vbml0b3JfZmRfaGFuZGxlKQot KwkJCWNvbnRpbnVlOwotKwkJbW9uaXRvcnNbbW9uX2lkeF0ub3BzLT5tb25pdG9yX2ZkX2hhbmRs ZShjdHgpOwotKwl9Ci0gfQotIAotLSNkZWZpbmUgTUFYX0VWRU5UUyA4Ci0tCi0tc3RhdGljIGlu dCBtb25pdG9yX3dhaXRfbG9vcChzdHJ1Y3Qgb3B0aWNzbW9uX2N0eCAqY3R4LCBpbnQgc2lnZmQs IGludCB0aW1lcmZkKQotK3N0YXRpYyBpbnQgbW9uaXRvcl9lcG9sbChzdHJ1Y3QgenBjaW1vbl9j dHggKmN0eCwgY29uc3QgaW50IG1vbl9mZHNbXSwgaW50IGVwZmQsIGludCBzaWdmZCwKLSsJCQkg aW50IHRpbWVyZmQpCi0gewotIAlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXZlbnRzW01BWF9FVkVOVFNd OwotLQlpbnQgaSwgbmxmZCwgZXBmZCwgbmZkcywgcmV0ID0gLUVJTzsKLSAJc3RydWN0IHNpZ25h bGZkX3NpZ2luZm8gZmRzaTsKLS0Jc3RydWN0IGVwb2xsX2V2ZW50IGV2OwotIAl1aW50NjRfdCBl eHBpcmF0aW9uczsKLSAJc3NpemVfdCBzcmVhZDsKLSsJaW50IGksIG5mZHM7Ci0rCi0rCW5mZHMg PSBlcG9sbF93YWl0KGVwZmQsIGV2ZW50cywgTUFYX0VWRU5UUywgLTEpOwotKwlpZiAobmZkcyA8 IDApCi0rCQlyZXR1cm4gbmZkczsKLSsJZm9yIChpID0gMDsgaSA8IG5mZHM7IGkrKykgewotKwkJ Lyogc2lnbmFsIGZkICovCi0rCQlpZiAoZXZlbnRzW2ldLmRhdGEuZmQgPT0gc2lnZmQpIHsKLSsJ CQlzcmVhZCA9IHJlYWQoc2lnZmQsICZmZHNpLCBzaXplb2YoZmRzaSkpOwotKwkJCWlmIChzcmVh ZCAhPSBzaXplb2YoZmRzaSkpCi0rCQkJCXJldHVybiAtRUlPOwotKwkJCXN3aXRjaCAoZmRzaS5z c2lfc2lnbm8pIHsKLSsJCQljYXNlIFNJR0lOVDoKLSsJCQljYXNlIFNJR1RFUk06Ci0rCQkJY2Fz ZSBTSUdRVUlUOgotKwkJCQlyZXR1cm4gLUVJTlRSOwotKwkJCS8qIFVuZXhwZWN0ZWQgc2lnbmFs ICovCi0rCQkJZGVmYXVsdDoKLSsJCQkJcmV0dXJuIC1FSU87Ci0rCQkJfQotKwkJCS8qIHRpbWVy IGZkICovCi0rCQl9IGVsc2UgaWYgKGV2ZW50c1tpXS5kYXRhLmZkID09IHRpbWVyZmQpIHsKLSsJ CQlzcmVhZCA9IHJlYWQodGltZXJmZCwgJmV4cGlyYXRpb25zLCBzaXplb2YodWludDY0X3QpKTsK LSsJCQlpZiAoc3JlYWQgIT0gc2l6ZW9mKHVpbnQ2NF90KSkKLSsJCQkJcmV0dXJuIC1FSU87Ci0r CQkJaWYgKCFleHBpcmF0aW9ucykKLSsJCQkJY29udGludWU7Ci0rCQkJY29sbGVjdF9hbGxfYWRh cHRlcl9kYXRhKGN0eCk7Ci0rCQkJLyogbmV0bGluayBmZCAqLwotKwkJfSBlbHNlIHsKLSsJCQlt b25pdG9yX2Vwb2xsX21vbl9mZHMoY3R4LCBldmVudHNbaV0sIG1vbl9mZHMpOwotKwkJfQotKwl9 Ci0rCXJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IG1vbml0b3Jfd2FpdF9sb29wKHN0cnVj dCB6cGNpbW9uX2N0eCAqY3R4LCBpbnQgc2lnZmQsIGludCB0aW1lcmZkKQotK3sKLSsJaW50IG1v bl9mZHNbQVJSQVlfU0laRShtb25pdG9ycyldOwotKwlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXY7Ci0r CWludCBlcGZkLCByZXQgPSAtRUlPOwotIAotIAllcGZkID0gZXBvbGxfY3JlYXRlMShFUE9MTF9D TE9FWEVDKTsKLSAJaWYgKGVwZmQgPCAwKQotQEAgLTMwMiw1MiArMjUyLDU3IEBAIHN0YXRpYyBp bnQgbW9uaXRvcl93YWl0X2xvb3Aoc3RydWN0IG9wdGljc21vbl9jdHggKmN0eCwgaW50IHNpZ2Zk LCBpbnQgdGltZXJmZCkKLSAJaWYgKGVwb2xsX2N0bChlcGZkLCBFUE9MTF9DVExfQURELCB0aW1l cmZkLCAmZXYpID09IC0xKQotIAkJZ290byBvdXRfY2xvc2U7Ci0gCi0tCW5sZmQgPSBsaW5rX21v bl9ubF93YWl0ZmRfZ2V0ZmQoJmN0eC0+bGN0eCk7Ci0tCWV2LmV2ZW50cyA9IEVQT0xMSU47Ci0t CWV2LmRhdGEuZmQgPSBubGZkOwotLQlpZiAoZXBvbGxfY3RsKGVwZmQsIEVQT0xMX0NUTF9BREQs IG5sZmQsICZldikgPT0gLTEpCi0rCXJldCA9IG1vbml0b3JfZXBvbGxfbW9uX2Zkc19wcmVwYXJl KGN0eCwgZXBmZCwgbW9uX2Zkcyk7Ci0rCWlmIChyZXQpCi0gCQlnb3RvIG91dF9jbG9zZTsKLSAK LSAJd2hpbGUgKDEpIHsKLS0JCW5mZHMgPSBlcG9sbF93YWl0KGVwZmQsIGV2ZW50cywgTUFYX0VW RU5UUywgLTEpOwotLQkJaWYgKG5mZHMgPCAwKQotLQkJCWdvdG8gb3V0X2Nsb3NlOwotLQkJZm9y IChpID0gMDsgaSA8IG5mZHM7IGkrKykgewotLQkJCS8qIHNpZ25hbCBmZCAqLwotLQkJCWlmIChl dmVudHNbaV0uZGF0YS5mZCA9PSBzaWdmZCkgewotLQkJCQlzcmVhZCA9IHJlYWQoc2lnZmQsICZm ZHNpLCBzaXplb2YoZmRzaSkpOwotLQkJCQlpZiAoc3JlYWQgIT0gc2l6ZW9mKGZkc2kpKQotLQkJ CQkJZ290byBvdXRfY2xvc2U7Ci0tCQkJCXN3aXRjaCAoZmRzaS5zc2lfc2lnbm8pIHsKLS0JCQkJ Y2FzZSBTSUdJTlQ6Ci0tCQkJCWNhc2UgU0lHVEVSTToKLS0JCQkJY2FzZSBTSUdRVUlUOgotLQkJ CQkJcmV0ID0gMDsKLS0JCQkJCWdvdG8gb3V0X2Nsb3NlOwotLQkJCQkvKiBVbmV4cGVjdGVkIHNp Z25hbCAqLwotLQkJCQlkZWZhdWx0OgotLQkJCQkJZ290byBvdXRfY2xvc2U7Ci0tCQkJCX0KLS0J CQkJLyogdGltZXIgZmQgKi8KLS0JCQl9IGVsc2UgaWYgKGV2ZW50c1tpXS5kYXRhLmZkID09IHRp bWVyZmQpIHsKLS0JCQkJc3JlYWQgPSByZWFkKHRpbWVyZmQsICZleHBpcmF0aW9ucywgc2l6ZW9m KHVpbnQ2NF90KSk7Ci0tCQkJCWlmIChzcmVhZCAhPSBzaXplb2YodWludDY0X3QpKQotLQkJCQkJ Z290byBvdXRfY2xvc2U7Ci0tCQkJCWlmICghZXhwaXJhdGlvbnMpCi0tCQkJCQljb250aW51ZTsK LS0JCQkJZHVtcF9hbGxfYWRhcHRlcl9kYXRhKGN0eCk7Ci0tCQkJCS8qIG5ldGxpbmsgZmQgKi8K LS0JCQl9IGVsc2UgaWYgKGV2ZW50c1tpXS5kYXRhLmZkID09IG5sZmQpIHsKLS0JCQkJbGlua19t b25fbmxfd2FpdGZkX3JlYWQoJmN0eC0+bGN0eCk7Ci0tCQkJfQotLQkJfQotKwkJcmV0ID0gbW9u aXRvcl9lcG9sbChjdHgsIG1vbl9mZHMsIGVwZmQsIHNpZ2ZkLCB0aW1lcmZkKTsKLSsJCWlmIChy ZXQpCi0rCQkJYnJlYWs7Ci0gCX0KLSBvdXRfY2xvc2U6Ci0rCS8qIEdldHRpbmcgaW50ZXJydXB0 ZWQgYnkgYSBzaWduYWwgaXMgbm90IGFuIGVycm9yICovCi0rCWlmIChyZXQgPT0gLUVJTlRSKQot KwkJcmV0ID0gMDsKLSAJY2xvc2UoZXBmZCk7Ci0gCXJldHVybiByZXQ7Ci0gfQotIAotLXN0YXRp YyBpbnQgbW9uaXRvcl9tb2RlKHN0cnVjdCBvcHRpY3Ntb25fY3R4ICpjdHgpCi0rc3RhdGljIHZv aWQgenBjaW1vbl9jbG9zZV9tb25pdG9yKHN0cnVjdCB6cGNpbW9uX2N0eCAqY3R4KQotK3sKLSsJ aW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCAoaW50KUFSUkFZX1NJWkUobW9uaXRvcnMpOyBp KyspIHsKLSsJCWlmICghbW9uaXRvcnNbaV0ub3BzLT5jbG9zZV9tb25pdG9yIHx8ICFtb25pdG9y c1tpXS5vcGVuZWQpCi0rCQkJY29udGludWU7Ci0rCQltb25pdG9yc1tpXS5vcHMtPmNsb3NlX21v bml0b3IoY3R4KTsKLSsJCW1vbml0b3JzW2ldLm9wZW5lZCA9IDA7Ci0rCX0KLSt9Ci0rCi0rc3Rh dGljIGludCB6cGNpbW9uX29wZW5fbW9uaXRvcihzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCkKLSt7 Ci0rCWludCBpLCByZXQgPSAtRU5YSU87Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCAoaW50KUFSUkFZ X1NJWkUobW9uaXRvcnMpOyBpKyspIHsKLSsJCWlmICghbW9uaXRvcnNbaV0ub3BzLT5vcGVuX21v bml0b3IgfHwgbW9uaXRvcnNbaV0ub3BlbmVkKQotKwkJCWNvbnRpbnVlOwotKwkJaWYgKG1vbml0 b3JzW2ldLm9wZW5lZCkKLSsJCQlnb3RvIGVycm9yOwotKwkJcmV0ID0gbW9uaXRvcnNbaV0ub3Bz LT5vcGVuX21vbml0b3IoY3R4KTsKLSsJCWlmIChyZXQpCi0rCQkJZ290byBlcnJvcjsKLSsJCW1v bml0b3JzW2ldLm9wZW5lZCA9IDE7Ci0rCX0KLSsJcmV0dXJuIDA7Ci0rCi0rZXJyb3I6Ci0rCXpw Y2ltb25fY2xvc2VfbW9uaXRvcihjdHgpOwotKwlyZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMg aW50IG1vbml0b3JfbW9kZShzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCkKLSB7Ci0gCXN0cnVjdCBp dGltZXJzcGVjIHRpbWVyc3BlYzsKLSAJaW50IHNpZ2ZkLCB0aW1lcmZkLCByZXQ7Ci1AQCAtMzg2 LDIwICszNDEsNjcgQEAgc3RhdGljIGludCBtb25pdG9yX21vZGUoc3RydWN0IG9wdGljc21vbl9j dHggKmN0eCkKLSAJfQotIAotIAl1dGlsX2ZtdF9pbml0KHN0ZG91dCwgY3R4LT5vcHRzLmZvcm1h dCwgRk1UX0RFRkFVTFQsIEFQSV9MRVZFTCk7Ci0tCXJldCA9IGxpbmtfbW9uX25sX3dhaXRmZF9j cmVhdGUoJmN0eC0+bGN0eCwgb25fbGlua19jaGFuZ2UsIGN0eCk7Ci0tCWlmIChyZXQpIHsKLS0J CWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBsaW5rIG1vbml0b3Jpbmcgc29ja2V0 XG4iKTsKLS0JCWdvdG8gY2xvc2VfdGltZXJmZDsKLS0JfQotKwlyZXQgPSB6cGNpbW9uX29wZW5f bW9uaXRvcihjdHgpOwotKwlpZiAocmV0IDwgMCkKLSsJCWdvdG8gY2xlYW51cF9mbXQ7Ci0gCi0g CXJldCA9IG1vbml0b3Jfd2FpdF9sb29wKGN0eCwgc2lnZmQsIHRpbWVyZmQpOwotIAotLQlsaW5r X21vbl9ubF93YWl0ZmRfZGVzdHJveSgmY3R4LT5sY3R4KTsKLSsJenBjaW1vbl9jbG9zZV9tb25p dG9yKGN0eCk7Ci0rY2xlYW51cF9mbXQ6Ci0gCXV0aWxfZm10X2V4aXQoKTsKLS1jbG9zZV9zaWdu YWxmZDoKLS0JY2xvc2Uoc2lnZmQpOwotIGNsb3NlX3RpbWVyZmQ6Ci0gCWNsb3NlKHRpbWVyZmQp OwotK2Nsb3NlX3NpZ25hbGZkOgotKwljbG9zZShzaWdmZCk7Ci0rCXJldHVybiByZXQ7Ci0rfQot KwotK3N0YXRpYyBpbnQgb25lc2hvdF9tb2RlKHN0cnVjdCB6cGNpbW9uX2N0eCAqY3R4KQotK3sK LSsJdXRpbF9mbXRfaW5pdChzdGRvdXQsIGN0eC0+b3B0cy5mb3JtYXQsIEZNVF9ERUZBVUxULCBB UElfTEVWRUwpOwotKwlpZiAoIWN0eC0+b3B0cy5xdWlldCkKLSsJCXV0aWxfZm10X29ial9zdGFy dChGTVRfTElTVCwgImFkYXB0ZXJzIik7Ci0rCi0rCWNvbGxlY3RfYWxsX2FkYXB0ZXJfZGF0YShj dHgpOwotKwotKwlpZiAoIWN0eC0+b3B0cy5xdWlldCkKLSsJCXV0aWxfZm10X29ial9lbmQoKTsK LSsJdXRpbF9mbXRfZXhpdCgpOwotKwotKwlyZXR1cm4gRVhJVF9TVUNDRVNTOwotK30KLSsKLStz dGF0aWMgdm9pZCB6cGNpbW9uX2Rlc3Ryb3koc3RydWN0IHpwY2ltb25fY3R4ICpjdHgpCi0rewot KwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgaSA8IChpbnQpQVJSQVlfU0laRShtb25pdG9ycyk7 IGkrKykgewotKwkJaWYgKCFtb25pdG9yc1tpXS5vcHMtPmRlc3Ryb3kgfHwgIW1vbml0b3JzW2ld LmluaXRpYWxpemVkKQotKwkJCWNvbnRpbnVlOwotKwkJbW9uaXRvcnNbaV0ub3BzLT5kZXN0cm95 KGN0eCk7Ci0rCQltb25pdG9yc1tpXS5pbml0aWFsaXplZCA9IGZhbHNlOwotKwl9Ci0rfQotKwot K3N0YXRpYyBpbnQgenBjaW1vbl9pbml0KHN0cnVjdCB6cGNpbW9uX2N0eCAqY3R4KQotK3sKLSsJ aW50IGksIHJldCA9IC1FTlhJTzsKLSsKLSsJZm9yIChpID0gMDsgaSA8IChpbnQpQVJSQVlfU0la RShtb25pdG9ycyk7IGkrKykgewotKwkJaWYgKCFtb25pdG9yc1tpXS5vcHMtPmluaXQpCi0rCQkJ Y29udGludWU7Ci0rCQlpZiAobW9uaXRvcnNbaV0uaW5pdGlhbGl6ZWQpCi0rCQkJZ290byBlcnJv cjsKLSsJCXJldCA9IG1vbml0b3JzW2ldLm9wcy0+aW5pdChjdHgpOwotKwkJaWYgKHJldCkKLSsJ CQlnb3RvIGVycm9yOwotKwkJbW9uaXRvcnNbaV0uaW5pdGlhbGl6ZWQgPSAxOwotKwl9Ci0rCXJl dHVybiAwOwotKwotK2Vycm9yOgotKwl6cGNpbW9uX2Rlc3Ryb3koY3R4KTsKLSAJcmV0dXJuIHJl dDsKLSB9Ci0gCi1AQCAtNDMyLDIxICs0MzQsMjEgQEAgc3RhdGljIGludCBzZXRfZm9ybWF0KHN0 cnVjdCBvcHRpb25zICpvcHRzKQotIAotIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK LSB7Ci0tCXN0cnVjdCBvcHRpY3Ntb25fY3R4IGN0eCA9IHsgLm9wdHMgPSB7IC5pbnRlcnZhbF9z ZWNvbmRzID0gODY0MDAgfSB9OwotKwlzdHJ1Y3QgenBjaW1vbl9jdHggY3R4ID0geyAub3B0cyA9 IHsgLmludGVydmFsX3NlY29uZHMgPSBTRUNfUEVSX0RBWSB9IH07Ci0gCWludCByZXQ7Ci0gCi0g CXBhcnNlX2NtZGxpbmUoYXJnYywgYXJndiwgJmN0eC5vcHRzKTsKLSAJcmV0ID0gc2V0X2Zvcm1h dCgmY3R4Lm9wdHMpOwotIAlpZiAocmV0KQotIAkJcmV0dXJuIHJldDsKLS0JcmV0ID0gZXRodG9v bF9ubF9jb25uZWN0KCZjdHguZXRodG9vbF9jdHgpOwotKwlyZXQgPSB6cGNpbW9uX2luaXQoJmN0 eCk7Ci0gCWlmIChyZXQpCi0gCQlyZXR1cm4gcmV0OwotIAlpZiAoY3R4Lm9wdHMubW9uaXRvcikK LSAJCXJldCA9IG1vbml0b3JfbW9kZSgmY3R4KTsKLSAJZWxzZQotIAkJcmV0ID0gb25lc2hvdF9t b2RlKCZjdHgpOwotLQlldGh0b29sX25sX2Nsb3NlKCZjdHguZXRodG9vbF9jdHgpOwotKwl6cGNp bW9uX2Rlc3Ryb3koJmN0eCk7Ci0gCi0gCWlmIChjdHguenBjaV9saXN0KQotIAkJenBjaV9mcmVl X2Rldl9saXN0KGN0eC56cGNpX2xpc3QpOwotZGlmZiAtLWdpdCBhL3pwY2ltb24venBjaW1vbi5o IGIvenBjaW1vbi96cGNpbW9uLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw MC4uNzY4ZDU5MjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3pwY2ltb24venBjaW1vbi5oCi1AQCAt MCwwICsxLDUyIEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjQKLSsgKgotKyAq IHMzOTAtdG9vbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2UuIFNl ZSBMSUNFTlNFIGZvciBkZXRhaWxzLgotKyAqLwotKyNpZm5kZWYgWlBDSU1PTl9aUENJTU9OX0gK LSsjZGVmaW5lIFpQQ0lNT05fWlBDSU1PTl9ICi0rI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSsjaW5j bHVkZSA8c3RkaW50Lmg+Ci0rCi0rI2luY2x1ZGUgImxpYi91dGlsX2ZtdC5oIgotKwotKyNpbmNs dWRlICJvcHRpY3Ntb24uaCIKLSsKLSsjZGVmaW5lIEFQSV9MRVZFTCAxCi0rCi0rc3RydWN0IG9w dGlvbnMgewotKwl1aW50MzJfdCBpbnRlcnZhbF9zZWNvbmRzOwotKwotKwlib29sIG1vbml0b3I7 Ci0rCWJvb2wgcmVwb3J0OwotKwlib29sIHF1aWV0OwotKwllbnVtIHV0aWxfZm10X3QgZm9ybWF0 OwotKwlib29sIGV4cGxpY2l0X2Zvcm1hdDsKLSsKLSsJLyogT3B0aWNzIE1vbml0b3JpbmcgU3Bl Y2lmaWMgKi8KLSsJYm9vbCBtb2R1bGVfaW5mbzsKLSt9OwotKwotK3N0cnVjdCB6cGNpbW9uX2N0 eCB7Ci0rCXN0cnVjdCBvcHRpb25zIG9wdHM7Ci0rCXN0cnVjdCB1dGlsX2xpc3QgKnpwY2lfbGlz dDsKLSsJc3RydWN0IG9wdGljc21vbl9jdHggb3B0aWNzbW9uX2N0eDsKLSt9OwotKwotK3N0cnVj dCB6cGNpbW9uX29wcyB7Ci0rCWludCAoKmNvbGxlY3RfYWRhcHRlcl9kYXRhKShzdHJ1Y3QgenBj aW1vbl9jdHggKmN0eCwgc3RydWN0IHpwY2lfZGV2ICp6ZGV2KTsKLSsKLSsJaW50ICgqb3Blbl9t b25pdG9yKShzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCk7Ci0rCWludCAoKmdldF9tb25pdG9yX2Zk KShzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCk7Ci0rCXZvaWQgKCptb25pdG9yX2ZkX2hhbmRsZSko c3RydWN0IHpwY2ltb25fY3R4ICpjdHgpOwotKwl2b2lkICgqY2xvc2VfbW9uaXRvcikoc3RydWN0 IHpwY2ltb25fY3R4ICpjdHgpOwotKwotKwlpbnQgKCppbml0KShzdHJ1Y3QgenBjaW1vbl9jdHgg KmN0eCk7Ci0rCXZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCk7Ci0rfTsK LSsKLSt2b2lkIHpwY2lfbGlzdF9yZWxvYWQoc3RydWN0IHV0aWxfbGlzdCAqKnpwY2lfbGlzdCk7 Ci0rCi0rdm9pZCB6cGNpbW9uX2pzb25fYmFzZTY0X3BhaXIoY2hhciAqbmFtZSwgdWludDhfdCAq YnVmLCBpbnQgbGVuKTsKLSsjZW5kaWYgLyogWlBDSU1PTl9aUENJTU9OX0ggKi8KLS0tIAotMi41 NS4wCi0KLQotRnJvbSA3OGRkODJkMTI5YzllZjAzMzg2MTlkZmEzMDYxYzZkYjljZWMzZjlkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBs aW51eC5pYm0uY29tPgotRGF0ZTogVGh1LCAxOCBKdW4gMjAyNiAxNjo0MDowOSArMDIwMAotU3Vi amVjdDogW1BBVENIIDE0LzIzXSBsaWJ6cGNpOiBFeHRyYWN0IGdldF9kZXZpY2Vfbm9kZSgpIGZy b20genBjaWN0bCB0bwotIGxpYnpwY2kKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKLQotVGhlIGdldF9kZXZpY2Vfbm9kZSgpIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSBuYW1l IG9mIGFuIE5WTWUncwotY29udHJvbGxlciBkZXZpY2UgZS5nLiAibnZtZTAiIGFzIGltcGxlbWVu dGVkIGluIHpwY2ljdGwgaXMgZ2VuZXJhbGx5Ci11c2VmdWwgYW5kIHdpbGwgYmUgbmVlZGVkIGZv ciBOVk1lIFNNQVJUIGRhdGEgY29sbGVjdGlvbiBpbiB6cGNpbW9uIGFzCi13ZWxsLiBNb3ZlIGl0 IHRvIGxpYnpwY2kgYW5kIHJlbmFtZSBpdCB0byB6cGNpX2dldF9udm1lX2RldmljZV9ub2RlKCkg dG8KLWFjY291bnQgZm9yIHRoZSBjaGFuZ2UgaW4gbmFtZXNwYWNlLgotCi1JdCB3b3VsZCBiZSB0 ZW1wdGluZyB0byBwYXNzIGEgc3RydWN0IHpwY2lfZGV2KiBpbnN0ZWFkIG9mIGEgY29uc3QgY2hh cioKLWJ1dCBhcyB6cGNpY3RsIHVzZXMgYW4gaW5jb21wYXRpYmxlIHN0cnVjdCB6cGNpX2Rldmlj ZSogdGhpcyB3aWxsCi1yZXF1aXJlIGEgbGFyZ2VyIHJld29yay4gUHJpb3JpdGl6ZSBtaW5pbWl6 aW5nIGNvZGUgZHVwbGljYXRpb24gZm9yIG5vdy4KLQotUmV2aWV3ZWQtYnk6IEphbiBIw7ZwcG5l ciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE5pa2xhcyBTY2huZWxs ZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBIw7ZwcG5lciA8 aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIGluY2x1ZGUvbGliL3BjaV9saXN0LmggfCAg NCArKysrCi0gbGlienBjaS9wY2lfbGlzdC5jICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQotIHpwY2ljdGwvenBjaWN0bC5jICAgICAgfCAzMyArKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlv bnMoKyksIDMyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWIvcGNpX2xp c3QuaCBiL2luY2x1ZGUvbGliL3BjaV9saXN0LmgKLWluZGV4IDViMjkxOGJjLi4yMjZhODJkOSAx MDA2NDQKLS0tLSBhL2luY2x1ZGUvbGliL3BjaV9saXN0LmgKLSsrKyBiL2luY2x1ZGUvbGliL3Bj aV9saXN0LmgKLUBAIC0xNyw2ICsxNyw4IEBACi0gCi0gI2luY2x1ZGUgInV0aWxfbGlzdC5oIgot IAotKyNkZWZpbmUgUENJX0JERl9MRU4gMTMgLyogRERERDpCQjpkZC5mXDAgKi8KLSsKLSBlbnVt IHpwY2lfcGZ0IHsKLSAJWlBDSV9QRlRfVU5DTEFTU0lGSUVEID0gMHgwMCwKLSAKLUBAIC05Niw0 ICs5OCw2IEBAIG9wZXJzdGF0ZV90IHpwY2lfb3BlcnN0YXRlX2Zyb21fc3RyKGNvbnN0IGNoYXIg Km9wZXJfc3RyKTsKLSBzdHJ1Y3QgenBjaV9kZXYgKnpwY2lfZmluZF9ieV9uZXRkZXYoc3RydWN0 IHV0aWxfbGlzdCAqenBjaV9saXN0LCBjaGFyICpuZXRkZXZfbmFtZSwKLSAJCQkJICAgICBzdHJ1 Y3QgenBjaV9uZXRkZXYgKipuZXRkZXYpOwotIAotK2NoYXIgKnpwY2lfZ2V0X252bWVfZGV2aWNl X25vZGUoY29uc3QgY2hhciAqcGNpX2FkZHIpOwotKwotICNlbmRpZiAvKiBMSUJfWlBDSV9QQ0lf TElTVF9IICovCi1kaWZmIC0tZ2l0IGEvbGlienBjaS9wY2lfbGlzdC5jIGIvbGlienBjaS9wY2lf bGlzdC5jCi1pbmRleCBlMGQ1NmU0NC4uZTgxYmI0YjggMTAwNjQ0Ci0tLS0gYS9saWJ6cGNpL3Bj aV9saXN0LmMKLSsrKyBiL2xpYnpwY2kvcGNpX2xpc3QuYwotQEAgLTIwLDYgKzIwLDcgQEAKLSAj aW5jbHVkZSAibGliL3V0aWxfbGlzdC5oIgotICNpbmNsdWRlICJsaWIvdXRpbF9wYXRoLmgiCi0g I2luY2x1ZGUgImxpYi91dGlsX3NjYW5kaXIuaCIKLSsjaW5jbHVkZSAibGliL3V0aWxfc3lzLmgi Ci0gCi0gLyoqCi0gICogR2V0IHRoZSBmdW5jdGlvbiB0eXBlIG5hbWUgZm9yIHRoZSBnaXZlbiBk ZXZpY2UKLUBAIC0xMzcsNyArMTM4LDcgQEAgY29uc3QgY2hhciAqenBjaV9vcGVyc3RhdGVfc3Ry KG9wZXJzdGF0ZV90IHN0YXRlKQotIHN0YXRpYyBpbnQgenBjaV9wb3B1bGF0ZV9mcm9tX3Nsb3Rf ZGlyKHN0cnVjdCB6cGNpX2RldiAqemRldiwgY29uc3QgY2hhciAqc2xvdF9kaXIsCi0gCQkJCSAg ICAgICBjb25zdCBjaGFyICpzbG90X25hbWUpCi0gewotLQljaGFyIGJ1Zl9hZGRyWzExXTsgLyog ImRkZGQ6YmI6ZGRcMCIgKi8KLSsJY2hhciBidWZfYWRkcltQQ0lfQkRGX0xFTl07Ci0gCXVpbnQ4 X3QgYnVzLCBkZjsKLSAJdWludDMyX3QgZG9tYWluOwotIAlpbnQgdmFsLCByYzsKLUBAIC0zODcs MyArMzg4LDQ2IEBAIHN0cnVjdCB6cGNpX2RldiAqenBjaV9maW5kX2J5X25ldGRldihzdHJ1Y3Qg dXRpbF9saXN0ICp6cGNpX2xpc3QsIGNoYXIgKm5ldGRldl9uCi0gCX0KLSAJcmV0dXJuIE5VTEw7 Ci0gfQotKwotKy8qKgotKyAqIEdldCB0aGUgTlZNZSBkZXZpY2UgZmlsZSBuYW1lIGdpdmVuIGEg UENJIGFkZHJlc3MKLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBOVk1lIGRl dmljZSBmaWxlICIvZGV2L252bWVYIgotKyAqIGZvciBhIGdpdmVuIFBDSSBhZGRyZXNzLiBUaGUg ZGV2aWNlIG5hbWUgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0Ci0rICogdGhlIHBhdGggL2Rldi9u dm1lWCB3aGljaCBpcyB0aGUgTlZNZSdzIGNvbnRyb2xsZXIncyBjaGFyYWN0ZXIKLSsgKiBkZXZp Y2UgdXNlZCBmb3IgZXhhbXBsZSB0byByZXRyaWV2ZSBTLk0uQS5SLlQuIGRhdGEuCi0rICoKLSsg KiBAcGFyYW1baW5dCXBjaV9hZGRyCVRoZSAiRERERDpiYjpkZC5mIiBmb3JtYXQgUENJIGFkZHJl c3MKLSsgKgotKyAqIEByZXR1cm4gVGhlIE5WTWUgZGV2aWNlIGZpbGUgbmFtZSBpZiBvbmUgaXMg Zm91bmQgTlVMTCBvdGhlcndpc2UKLSsgKi8KLStjaGFyICp6cGNpX2dldF9udm1lX2RldmljZV9u b2RlKGNvbnN0IGNoYXIgKnBjaV9hZGRyKQotK3sKLSsJY2hhciAqcGF0aCwgKmRldiA9IE5VTEw7 Ci0rCWNoYXIgZGV2X2FkZHJbUENJX0JERl9MRU5dOwotKwlzdHJ1Y3QgZGlyZW50ICoqZGVfdmVj OwotKwlpbnQgY291bnQsIGk7Ci0rCi0rCXBhdGggPSB1dGlsX3BhdGhfc3lzZnMoImJ1cy9wY2kv ZGV2aWNlcy8lcy9udm1lIiwgcGNpX2FkZHIpOwotKwljb3VudCA9IHV0aWxfc2NhbmRpcigmZGVf dmVjLCBhbHBoYXNvcnQsIHBhdGgsICJudm1lKiIpOwotKwlpZiAoY291bnQgPT0gLTEpIHsKLSsJ CXdhcm54KCJDb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgJXM6ICVzIiwgcGF0aCwgc3RyZXJyb3Io ZXJybm8pKTsKLSsJCWdvdG8gZXhpdF9wYXRoOwotKwl9Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCBj b3VudDsgaSsrKSB7Ci0rCQl1dGlsX2FzcHJpbnRmKCZkZXYsICIvZGV2LyVzIiwgZGVfdmVjW2ld LT5kX25hbWUpOwotKwkJaWYgKHV0aWxfc3lzX2dldF9kZXZfYWRkcihkZXYsIGRldl9hZGRyKSAh PSAwKQotKwkJCWdvdG8gZnJlZV9jb250aW51ZTsKLSsJCWlmIChzdHJjbXAoZGV2X2FkZHIsIHBj aV9hZGRyKSA9PSAwKQotKwkJCWJyZWFrOwotK2ZyZWVfY29udGludWU6Ci0rCQlmcmVlKGRldik7 Ci0rCQlkZXYgPSBOVUxMOwotKwl9Ci0rCi0rCXV0aWxfc2NhbmRpcl9mcmVlKGRlX3ZlYywgY291 bnQpOwotK2V4aXRfcGF0aDoKLSsJZnJlZShwYXRoKTsKLSsJcmV0dXJuIGRldjsKLSt9Ci1kaWZm IC0tZ2l0IGEvenBjaWN0bC96cGNpY3RsLmMgYi96cGNpY3RsL3pwY2ljdGwuYwotaW5kZXggNDIx NDAzYWMuLjhjOGNlNDgyIDEwMDY0NAotLS0tIGEvenBjaWN0bC96cGNpY3RsLmMKLSsrKyBiL3pw Y2ljdGwvenBjaWN0bC5jCi1AQCAtMTgsOCArMTgsOCBAQAotICNpbmNsdWRlICJsaWIvdXRpbF9v cHQuaCIKLSAjaW5jbHVkZSAibGliL3V0aWxfcGF0aC5oIgotICNpbmNsdWRlICJsaWIvdXRpbF9w cmcuaCIKLS0jaW5jbHVkZSAibGliL3V0aWxfc2NhbmRpci5oIgotICNpbmNsdWRlICJsaWIvdXRp bF9zeXMuaCIKLSsjaW5jbHVkZSAibGliL3BjaV9saXN0LmgiCi0gI2luY2x1ZGUgImxpYi9wY2lf c2NscC5oIgotIAotICNpbmNsdWRlICJ6cGNpY3RsLmgiCi1AQCAtMTg3LDM1ICsxODcsNiBAQCBz dGF0aWMgdm9pZCBzeXNmc193cml0ZV92YWx1ZShzdHJ1Y3QgenBjaV9kZXZpY2UgKnBkZXYsIGNv bnN0IGNoYXIgKmF0dHIsCi0gCWZyZWUocGF0aCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIGdldF9k ZXZpY2Vfbm9kZShzdHJ1Y3QgenBjaV9kZXZpY2UgKnBkZXYpCi0tewotLQlzdHJ1Y3QgZGlyZW50 ICoqZGVfdmVjOwotLQljaGFyICpwYXRoLCAqZGV2OwotLQljaGFyIHNsb3RbMTNdOwotLQlpbnQg Y291bnQsIGk7Ci0tCi0tCXBhdGggPSB1dGlsX3BhdGhfc3lzZnMoImJ1cy9wY2kvZGV2aWNlcy8l cy9udm1lIiwgcGRldi0+c2xvdCk7Ci0tCWNvdW50ID0gdXRpbF9zY2FuZGlyKCZkZV92ZWMsIGFs cGhhc29ydCwgcGF0aCwgIm52bWUqIik7Ci0tCWlmIChjb3VudCA9PSAtMSkgewotLQkJd2Fybngo IkNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykp OwotLQkJZnJlZShwYXRoKTsKLS0JCXJldHVybjsKLS0JfQotLQotLQlmb3IgKGkgPSAwOyBpIDwg Y291bnQ7IGkrKykgewotLQkJdXRpbF9hc3ByaW50ZigmZGV2LCAiL2Rldi8lcyIsIGRlX3ZlY1tp XS0+ZF9uYW1lKTsKLS0JCWlmICh1dGlsX3N5c19nZXRfZGV2X2FkZHIoZGV2LCBzbG90KSAhPSAw KQotLQkJCWNvbnRpbnVlOwotLQkJaWYgKHN0cmNtcChzbG90LCBwZGV2LT5zbG90KSA9PSAwKSB7 Ci0tCQkJcGRldi0+ZGV2aWNlID0gZGV2OwotLQkJCWJyZWFrOwotLQkJfQotLQl9Ci0tCi0tCXV0 aWxfc2NhbmRpcl9mcmVlKGRlX3ZlYywgY291bnQpOwotLQlmcmVlKHBhdGgpOwotLX0KLS0KLSBz dGF0aWMgaW50IGRldmljZV9leGlzdHMoY2hhciAqZGV2KQotIHsKLSAJY2hhciAqcGF0aDsKLUBA IC0yNTgsNyArMjI5LDcgQEAgc3RhdGljIHZvaWQgZ2V0X2RldmljZV9pbmZvKHN0cnVjdCB6cGNp X2RldmljZSAqcGRldiwgY2hhciAqZGV2KQotIAkgKiBTLk0uQS5SLlQuIGRhdGEgYXQgYSBsYXRl ciBwb2ludC4KLSAJICovCi0gCWlmICghcGRldi0+ZGV2aWNlICYmIHBkZXYtPmNsYXNzID09IFBD SV9DTEFTU19OVk1FKQotLQkJZ2V0X2RldmljZV9ub2RlKHBkZXYpOwotKwkJcGRldi0+ZGV2aWNl ID0genBjaV9nZXRfbnZtZV9kZXZpY2Vfbm9kZShwZGV2LT5zbG90KTsKLSB9Ci0gCi0gLyoKLS0t IAotMi41NS4wCi0KLQotRnJvbSBhOWRiYjhhMWEyYmNmZWZlZmZlZTBjODBlYzczYTgwMWM1NDNj N2U3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmlrbGFzIFNjaG5lbGxlIDxzY2hu ZWxsZUBsaW51eC5pYm0uY29tPgotRGF0ZTogTW9uLCAyMiBKdW4gMjAyNiAxMjozNjozMCArMDIw MAotU3ViamVjdDogW1BBVENIIDE1LzIzXSB6cGNpbW9uOiBGYWN0b3Igb3V0IEpTT04gcHJpbnRp bmcgb2YgY29tbW9uIFBDSSBhZGFwdGVyCi0gYXR0cmlidXRlcwotTUlNRS1WZXJzaW9uOiAxLjAK LUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zl ci1FbmNvZGluZzogOGJpdAotCi1Tb21lIG9mIHRoZSBhdHRyaWJ1dGVzIHByaW50ZWQgYXMgSlNP TiBieSBvcHRpY3Ntb24gYXJlIGNvbW1vbiB0byBhbGwKLVBDSSBhZGFwdGVycyBmYWN0b3IgdGhl c2Ugb3V0IGludG8gcmV1c2FibGUgaGVscGVyIGZ1bmN0aW9ucwotenBjaV9hZGFwdGVyX2pzb25f cHJpbnRfc3RhcnQoKSBhbmQgenBjaV9hZGFwdGVyX2pzb25fcHJpbnRfZW5kKCkuCi0KLVJldmll d2VkLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2Zm LWJ5OiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2Zm LWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci0tLS0KLSB6cGNpbW9u L29wdGljc21vbi5jIHwgMTQgKystLS0tLS0tLS0tLS0KLSB6cGNpbW9uL3pwY2ltb24uYyAgIHwg MjEgKysrKysrKysrKysrKysrKysrKysrCi0genBjaW1vbi96cGNpbW9uLmggICB8ICAyICsrCi0g MyBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL3pwY2ltb24vb3B0aWNzbW9uLmMgYi96cGNpbW9uL29wdGljc21vbi5jCi1pbmRl eCA0ZGE0NTZmMS4uMmZhYTIxZDAgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL29wdGljc21vbi5jCi0r KysgYi96cGNpbW9uL29wdGljc21vbi5jCi1AQCAtNDUsNyArNDUsNiBAQCBzdGF0aWMgaW50IG9w dGljc21vbl9jb2xsZWN0X2FkYXB0ZXJfZGF0YShzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCwgc3Ry dWN0IHpwY2lfZAotIAlzdHJ1Y3Qgb3B0aW9ucyAqb3B0cyA9ICZjdHgtPm9wdHM7Ci0gCXN0cnVj dCBvcHRpY3MgKipvaXM7Ci0gCWludCBudW1fb2lzID0gMDsKLS0JY2hhciAqcGNpX2FkZHI7Ci0g CWludCBpLCByYzsKLSAKLSAJLyogRmlsdGVyIG5vbi1OSUMgZGV2aWNlcyBhbmQgVkZzICovCi1A QCAtNjAsMjEgKzU5LDEyIEBAIHN0YXRpYyBpbnQgb3B0aWNzbW9uX2NvbGxlY3RfYWRhcHRlcl9k YXRhKHN0cnVjdCB6cGNpbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgenBjaV9kCi0gCQludW1fb2lzKys7 Ci0gCX0KLSAJaWYgKCFvcHRzLT5xdWlldCkgewotLQkJdXRpbF9mbXRfb2JqX3N0YXJ0KEZNVF9E RUZBVUxULCAiYWRhcHRlciIpOwotLQkJdXRpbF9mbXRfcGFpcihGTVRfUVVPVEUsICJwZnQiLCB6 cGNpX3BmdF9zdHIoemRldikpOwotLQkJdXRpbF9mbXRfb2JqX3N0YXJ0KEZNVF9ERUZBVUxULCAi aWRzIik7Ci0tCQl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9URSwgImZpZCIsICIweCUweCIsIHpkZXYt PmZpZCk7Ci0tCQlpZiAoemRldi0+dWlkX2lzX3VuaXF1ZSkKLS0JCQl1dGlsX2ZtdF9wYWlyKEZN VF9RVU9URSwgInVpZCIsICIweCUweCIsIHpkZXYtPnVpZCk7Ci0tCQlwY2lfYWRkciA9IHpwY2lf cGNpX2FkZHIoemRldik7Ci0tCQl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9URSwgInBjaV9hZGRyZXNz IiwgcGNpX2FkZHIpOwotLQkJZnJlZShwY2lfYWRkcik7Ci0tCQl1dGlsX2ZtdF9vYmpfZW5kKCk7 Ci0rCQl6cGNpX2FkYXB0ZXJfanNvbl9wcmludF9zdGFydCh6ZGV2KTsKLSAJCXV0aWxfZm10X29i al9zdGFydChGTVRfTElTVCwgIm5ldGRldnMiKTsKLSAJCWZvciAoaSA9IDA7IGkgPCB6ZGV2LT5u dW1fbmV0ZGV2czsgaSsrKQotIAkJCW9wdGljc19qc29uX3ByaW50KG9wdHMsICZ6ZGV2LT5uZXRk ZXZzW2ldLCBvaXNbaV0pOwotIAkJdXRpbF9mbXRfb2JqX2VuZCgpOyAvKiBuZXRkZXZzIGxpc3Qg Ki8KLS0JCXV0aWxfZm10X29ial9lbmQoKTsgLyogYWRhcHRlciAqLwotKwkJenBjaV9hZGFwdGVy X2pzb25fcHJpbnRfZW5kKCk7Ci0gCQlmZmx1c2goc3Rkb3V0KTsKLSAJfQotIAlpZiAob3B0cy0+ cmVwb3J0KSB7Ci1kaWZmIC0tZ2l0IGEvenBjaW1vbi96cGNpbW9uLmMgYi96cGNpbW9uL3pwY2lt b24uYwotaW5kZXggMzI1NTBmZjAuLmUzMGYyNTFlIDEwMDY0NAotLS0tIGEvenBjaW1vbi96cGNp bW9uLmMKLSsrKyBiL3pwY2ltb24venBjaW1vbi5jCi1AQCAtMTEyLDYgKzExMiwyNyBAQCBzdGF0 aWMgdm9pZCBwYXJzZV9jbWRsaW5lKGludCBhcmdjLCBjaGFyICphcmd2W10sIHN0cnVjdCBvcHRp b25zICpvcHRzKQotIAl9IHdoaWxlIChjbWQgIT0gLTEpOwotIH0KLSAKLSt2b2lkIHpwY2lfYWRh cHRlcl9qc29uX3ByaW50X3N0YXJ0KHN0cnVjdCB6cGNpX2RldiAqemRldikKLSt7Ci0rCWNoYXIg KnBjaV9hZGRyOwotKwotKwl1dGlsX2ZtdF9vYmpfc3RhcnQoRk1UX0RFRkFVTFQsICJhZGFwdGVy Iik7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAicGZ0IiwgenBjaV9wZnRfc3RyKHpkZXYp KTsKLSsJdXRpbF9mbXRfb2JqX3N0YXJ0KEZNVF9ERUZBVUxULCAiaWRzIik7Ci0rCXV0aWxfZm10 X3BhaXIoRk1UX1FVT1RFLCAiZmlkIiwgIjB4JTB4IiwgemRldi0+ZmlkKTsKLSsJaWYgKHpkZXYt PnVpZF9pc191bmlxdWUpCi0rCQl1dGlsX2ZtdF9wYWlyKEZNVF9RVU9URSwgInVpZCIsICIweCUw eCIsIHpkZXYtPnVpZCk7Ci0rCXBjaV9hZGRyID0genBjaV9wY2lfYWRkcih6ZGV2KTsKLSsJdXRp bF9mbXRfcGFpcihGTVRfUVVPVEUsICJwY2lfYWRkcmVzcyIsIHBjaV9hZGRyKTsKLSsJZnJlZShw Y2lfYWRkcik7Ci0rCXV0aWxfZm10X29ial9lbmQoKTsKLSt9Ci0rCi0rdm9pZCB6cGNpX2FkYXB0 ZXJfanNvbl9wcmludF9lbmQodm9pZCkKLSt7Ci0rCXV0aWxfZm10X29ial9lbmQoKTsgLyogYWRh cHRlciAqLwotK30KLSsKLSB2b2lkIHpwY2ltb25fanNvbl9iYXNlNjRfcGFpcihjaGFyICpuYW1l LCB1aW50OF90ICpidWYsIGludCBsZW4pCi0gewotIAlpbnQgYjY0X2NhbGNsZW4sIGI2NGxlbjsK LWRpZmYgLS1naXQgYS96cGNpbW9uL3pwY2ltb24uaCBiL3pwY2ltb24venBjaW1vbi5oCi1pbmRl eCA3NjhkNTkyMS4uY2IxMjQwNTYgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL3pwY2ltb24uaAotKysr IGIvenBjaW1vbi96cGNpbW9uLmgKLUBAIC00OCw1ICs0OCw3IEBAIHN0cnVjdCB6cGNpbW9uX29w cyB7Ci0gCi0gdm9pZCB6cGNpX2xpc3RfcmVsb2FkKHN0cnVjdCB1dGlsX2xpc3QgKip6cGNpX2xp c3QpOwotIAotK3ZvaWQgenBjaV9hZGFwdGVyX2pzb25fcHJpbnRfc3RhcnQoc3RydWN0IHpwY2lf ZGV2ICp6ZGV2KTsKLSt2b2lkIHpwY2lfYWRhcHRlcl9qc29uX3ByaW50X2VuZCh2b2lkKTsKLSB2 b2lkIHpwY2ltb25fanNvbl9iYXNlNjRfcGFpcihjaGFyICpuYW1lLCB1aW50OF90ICpidWYsIGlu dCBsZW4pOwotICNlbmRpZiAvKiBaUENJTU9OX1pQQ0lNT05fSCAqLwotLS0gCi0yLjU1LjAKLQot Ci1Gcm9tIDJlY2VlZGViMTExNDUzOTQ5YWM3ODY4NWMyMWMwZjZhMDVmMDJiY2QgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4Lmli bS5jb20+Ci1EYXRlOiBNb24sIDIyIEp1biAyMDI2IDEyOjQzOjA3ICswMjAwCi1TdWJqZWN0OiBb UEFUQ0ggMTYvMjNdIHpwY2ltb246IEFkZCBOVk1lIFNNQVJUIGRhdGEgbW9uaXRvcgotTUlNRS1W ZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1BZGQgYSBuZXcgbW9uaXRvciB3aGljaCB1 c2VzIGxpYm52bWUgdG8gY29sbGVjdCBTTUFSVCBkYXRhIGZyb20gTlZNZXMuCi1UaGlzIG1vbml0 b3Igb25seSBpbXBsZW1lbnRzIHRoZSAuY29sbGVjdF9hZGFwdGVyX2RhdGEgb3BlcmF0aW9uIHNp bmNlCi1pdCBjYXJyaWVzIG5vIHN0YXRlIGFjcm9zcyBkYXRhIGNvbGxlY3Rpb25zLiBOZXZlcnRo ZWxlc3MgZm9yIGZ1dHVyZQotc3ltbWV0cnkgYW5kIHBvc3NpYmxlIGZ1dHVyZSBleHBhbnNpb24g YWxzbyBhZGQgYW4gZW1wdHkgc3RydWN0Ci1udm1lbW9uX2N0eC4KLQotUmV2aWV3ZWQtYnk6IEph biBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE5pa2xh cyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBI w7ZwcG5lciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIFJFQURNRS5tZCAgICAgICAg ICAgICAgfCAgNyArLS0KLSBpbmNsdWRlL2xpYi9wY2lfc2NscC5oIHwgIDIgKwotIHpwY2ltb24v TWFrZWZpbGUgICAgICAgfCAyMiArKysrKysrKystCi0genBjaW1vbi9udm1lbW9uLmMgICAgICB8 IDk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHpwY2ltb24v bnZtZW1vbi5oICAgICAgfCAxMyArKysrKysKLSB6cGNpbW9uL3pwY2ltb24uOCAgICAgIHwgMjYg KysrKysrKy0tLS0KLSB6cGNpbW9uL3pwY2ltb24uYyAgICAgIHwgIDUgKysrCi0genBjaW1vbi96 cGNpbW9uLmggICAgICB8ICA0ICsrCi0genBjaW1vbi96cGNpbW9uX2NsaS5oICB8ICA4ICsrKysK LSA5IGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLSBj cmVhdGUgbW9kZSAxMDA2NDQgenBjaW1vbi9udm1lbW9uLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQg enBjaW1vbi9udm1lbW9uLmgKLQotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAot aW5kZXggNDA0NWIwZjguLmFiM2RjZDRlIDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0rKysgYi9S RUFETUUubWQKLUBAIC0zMjcsNiArMzI3LDcgQEAgYnVpbGQgb3B0aW9uczoKLSB8IHN5c3RlbWQg ICAgICB8IGBIQVZFX1NZU1RFTURgICAgICB8IGhzYXZtY29yZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKLSB8IGxpYnVkZXYgICAgICB8IGBIQVZFX0xJQlVERVZgICAgICB8IGNwYWNm c3RhdHNkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSB8IGxpYm5sMyAgICAgICB8IGBI QVZFX0xJQk5MM2AgICAgICB8IHpwY2ltb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKLSt8IGxpYm52bWUgICAgICB8IGBIQVZFX0xJQk5WTUVgICAgICB8IHpwY2ltb24gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAKLSBUaGlzIHRhYmxlIGxpc3RzIGFkZGl0aW9u YWwgYnVpbGQgb3IgaW5zdGFsbCBvcHRpb25zOgotIAotQEAgLTM3NSwxMCArMzc2LDEwIEBAIHRo ZSBkaWZmZXJlbnQgdG9vbHMgYXJlIHByb3ZpZGVkOgotICAgVGhlIHJ1bnRpbWUgcmVxdWlyZW1l bnRzIGFyZTogb3BlbnNzbC1saWJzICg+PSAxLjEuMSkgYW5kIGxpYmN1cmwuCi0gCi0gKiB6cGNp bW9uOgotLSAgRm9yIGJ1aWxkaW5nIHpwY2ltb24gT3BlblNTTCBhbmQgdGhlIE5ldGxpbmsgTGli cmFyeSBTdWl0ZSAobGlibmwzKSBhcmUKLS0gIHJlcXVpcmVkLgotKyAgRm9yIGJ1aWxkaW5nIHpw Y2ltb24gT3BlblNTTCwgdGhlIE5ldGxpbmsgTGlicmFyeSBTdWl0ZSAobGlibmwzKSwKLSsgIGFu ZCBsaWJudm1lIGFyZSByZXF1aXJlZC4KLSAgIFRpcDogeW91IG1heSBza2lwIHRoZSB6cGNpbW9u IGJ1aWxkIGJ5IGFkZGluZwotLSAgYEhBVkVfT1BFTlNTTD0wYCBvciBgSEFWRV9MSUJOTDM9MGAK LSsgIGBIQVZFX09QRU5TU0w9MGAgb3IgYEhBVkVfTElCTkwzPTBgIG9yIGBIQVZFX0xJQk5WTUU9 MGAuCi0gCi0gKiBvc2Fzbm1wZDoKLSAgIFlvdSBuZWVkIGF0IGxlYXN0IHRoZSBORVQtU05NUCA1 LjEueCBwYWNrYWdlIChuZXQtc25tcC1kZXZlbC5ycG0pCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aWIvcGNpX3NjbHAuaCBiL2luY2x1ZGUvbGliL3BjaV9zY2xwLmgKLWluZGV4IDY4OGE3Yjc2Li5j MDc1YjI2NCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGliL3BjaV9zY2xwLmgKLSsrKyBiL2luY2x1 ZGUvbGliL3BjaV9zY2xwLmgKLUBAIC0yMSw5ICsyMSwxMSBAQAotICNkZWZpbmUgU0NMUF9FUlJO T1RJRllfQVFfREVDT05GCQkxCi0gI2RlZmluZSBTQ0xQX0VSUk5PVElGWV9BUV9SRVBPUlRfRVJS CQkyCi0gI2RlZmluZSBTQ0xQX0VSUk5PVElGWV9BUV9PUFRJQ1NfREFUQQkJMwotKyNkZWZpbmUg U0NMUF9FUlJOT1RJRllfQVFfTlZNRV9TTUFSVF9EQVRBCTQKLSAKLSAjZGVmaW5lIFNDTFBfRVJS Tk9USUZZX0lEX1pQQ0lDVEwJCTB4NDcxMwotICNkZWZpbmUgU0NMUF9FUlJOT1RJRllfSURfT1BU SUNTTU9OCQkweDQ3MTQKLSsjZGVmaW5lIFNDTFBfRVJSTk9USUZZX0lEX05WTUVNT04JCTB4NDcx NQotIAotICNkZWZpbmUgU0NMUF9FUlJOT1RJRllfREFUQV9TSVpFCQk0MDU0Ci0gCi1kaWZmIC0t Z2l0IGEvenBjaW1vbi9NYWtlZmlsZSBiL3pwY2ltb24vTWFrZWZpbGUKLWluZGV4IGNjMGE4YWYw Li5jZTgxNWEzMSAxMDA2NDQKLS0tLSBhL3pwY2ltb24vTWFrZWZpbGUKLSsrKyBiL3pwY2ltb24v TWFrZWZpbGUKLUBAIC0yOSw2ICsyOSwxNiBAQCBjaGVja19kZXBfbGlibmwzOgotIEJVSUxEVEFS R0VUICs9IGNoZWNrX2RlcF9saWJubDMKLSBlbmRpZiAjIEhBVkVfTElCTkwzCi0gCi0raWZuZXEg KCR7SEFWRV9MSUJOVk1FfSwwKQotK2NoZWNrX2RlcF9saWJudm1lOgotKwkkKGNhbGwgY2hlY2tf ZGVwLCBcCi0rCQkienBjaW1vbiIsIFwKLSsJCSJsaWJudm1lLmgiLCBcCi0rCQkibGlibnZtZS1k ZXZlbCIsIFwKLSsJCSJIQVZFX0xJQk5WTUU9MCIpCi0rQlVJTERUQVJHRVQgKz0gY2hlY2tfZGVw X2xpYm52bWUKLStlbmRpZiAjIEhBVkVfTElCTlZNRQotKwotIGlmZXEgKCR7SEFWRV9PUEVOU1NM fSwwKQotIAotIGFsbDoKLUBAIC00NCw2ICs1NCwxMyBAQCBhbGw6Ci0gaW5zdGFsbDoKLSAJJChT S0lQKSBIQVZFX0xJQk5MMz0wCi0gCi0rZWxzZSBpZmVxICgke0hBVkVfTElCTlZNRX0sMCkKLSth bGw6Ci0rCSQoU0tJUCkgSEFWRV9MSUJOVk1FPTAKLSsKLStpbnN0YWxsOgotKwkkKFNLSVApIEhB VkVfTElCTlZNRT0wCi0rCi0gZWxzZQotIAotIGlmbmVxICgkKHNoZWxsIHNoIC1jICdjb21tYW5k IC12IHBrZy1jb25maWcnKSwpCi1AQCAtNTgsMTIgKzc1LDE1IEBAIExJQl9MRkxBR1MgKz0gJChz aGVsbCAkKFBLR19DT05GSUcpIC0tc2lsZW5jZS1lcnJvcnMgLS1saWJzIGxpYm5sLWdlbmwtMy4w KQotIExJQl9MRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tc2lsZW5jZS1lcnJvcnMg LS1saWJzIGxpYm5sLXJvdXRlLTMuMCkKLSAKLSBMSUJfTEZMQUdTICs9ICQoc2hlbGwgJChQS0df Q09ORklHKSAtLXNpbGVuY2UtZXJyb3JzIC0tbGlicyBsaWJjcnlwdG8pCi0rTElCX0xGTEFHUyAr PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1zaWxlbmNlLWVycm9ycyAtLWxpYnMgbGlibnZtZSkK LSBlbHNlCi0gTElCX0NGTEFHUyArPSAtSSAvdXNyL2luY2x1ZGUvbGlibmwzLwotIExJQl9MRkxB R1MgKz0gLWxubC1yb3V0ZS0zIC1sbmwtZ2VubC0zIC1sbmwtMwotIAotIExJQl9DRkxBR1MgKz0g LUkgL3Vzci9pbmNsdWRlL29wZW5zc2wvCi0gTElCX0xGTEFHUyArPSAtbGNyeXB0bwotKwotK0xJ Ql9MRkxBR1MgKz0gLWxudm1lCi0gZW5kaWYKLSAKLSBBTExfQ1BQRkxBR1MgKz0gJChMSUJfQ0ZM QUdTKQotQEAgLTczLDcgKzkzLDcgQEAgQlVJTERUQVJHRVQgKz0genBjaW1vbgotIAotIGFsbDog JHtCVUlMRFRBUkdFVH0KLSAKLS16cGNpbW9uOiB6cGNpbW9uLm8gb3B0aWNzbW9uLm8gb3B0aWNz X2luZm8ubyBvcHRpY3Nfc2NscC5vIGV0aHRvb2wubyBsaW5rX21vbi5vICQobGlicykKLSt6cGNp bW9uOiB6cGNpbW9uLm8gbnZtZW1vbi5vIG9wdGljc21vbi5vIG9wdGljc19pbmZvLm8gb3B0aWNz X3NjbHAubyBldGh0b29sLm8gbGlua19tb24ubyAkKGxpYnMpCi0gCi0gaW5zdGFsbDogYWxsCi0g CSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKEJJTkRJUikgJChERVNURElSKSQoTUFO RElSKS9tYW44Ci1kaWZmIC0tZ2l0IGEvenBjaW1vbi9udm1lbW9uLmMgYi96cGNpbW9uL252bWVt b24uYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi44NWE1ZDBhZAotLS0t IC9kZXYvbnVsbAotKysrIGIvenBjaW1vbi9udm1lbW9uLmMKLUBAIC0wLDAgKzEsOTggQEAKLSsv KgotKyAqIHpwY2ltb24gLSBSZXBvcnQgbW9uaXRvcmluZyBkYXRhIHRvIGZpcm13YXJlCi0rICoK LSsgKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjUKLSsgKgotKyAqIHMzOTAtdG9vbHMgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZvciBkZXRh aWxzLgotKyAqLwotKyNpbmNsdWRlIDxlcnIuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5j bHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8c3RkYm9vbC5oPgotKyNpbmNsdWRlIDxzdGRpby5o PgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUg PHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxsaWJudm1lLmg+Ci0rCi0rI2luY2x1ZGUgImxpYi9wY2lf bGlzdC5oIgotKyNpbmNsdWRlICJsaWIvcGNpX3NjbHAuaCIKLSsjaW5jbHVkZSAibGliL3V0aWxf Zm10LmgiCi0rCi0rI2luY2x1ZGUgIm52bWVtb24uaCIKLSsjaW5jbHVkZSAienBjaW1vbi5oIgot KwotK3N0YXRpYyB2b2lkIG52bWVfanNvbl9wcmludChzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCwg c3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBjb25zdCBjaGFyICpuYW1lLAotKwkJCSAgICBzdHJ1Y3Qg bnZtZV9zbWFydF9sb2cgKmxvZykKLSt7Ci0rCXpwY2lfYWRhcHRlcl9qc29uX3ByaW50X3N0YXJ0 KHpkZXYpOwotKwl1dGlsX2ZtdF9vYmpfc3RhcnQoRk1UX0RFRkFVTFQsICJudm1lZGV2Iik7Ci0r CXV0aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAiZGV2IiwgbmFtZSk7Ci0rCWlmIChjdHgtPm9wdHMu c21hcnRfYmxvYikKLSsJCXpwY2ltb25fanNvbl9iYXNlNjRfcGFpcigic21hcnQtbG9nLXJhdyIs ICh1aW50OF90ICopbG9nLCBzaXplb2YoKmxvZykpOwotKwl1dGlsX2ZtdF9vYmpfZW5kKCk7Ci0r CXpwY2lfYWRhcHRlcl9qc29uX3ByaW50X2VuZCgpOwotKwlmZmx1c2goc3Rkb3V0KTsKLSt9Ci0r Ci0rc3RhdGljIGludCBzY2xwX2lzc3VlX252bWVfc21hcnRfcmVwb3J0KHN0cnVjdCB6cGNpX2Rl diAqemRldiwgY29uc3QgdWludDhfdCAqc21hcnQsIGludCBzbWFydF9sZW4pCi0rewotKwljaGFy ICpwY2lfYWRkcjsKLSsJaW50IHJjOwotKwotKwlpZiAoemRldi0+cGZ0ICE9IFpQQ0lfUEZUX05W TUUpCi0rCQlyZXR1cm4gLUVOT1RTVVA7Ci0rCXBjaV9hZGRyID0genBjaV9wY2lfYWRkcih6ZGV2 KTsKLSsJcmMgPSB6cGNpX3NjbHBfaXNzdWVfYWN0aW9uKHBjaV9hZGRyLCBTQ0xQX0VSUk5PVElG WV9BUV9OVk1FX1NNQVJUX0RBVEEsCi0rCQkJCSAgICAoY2hhciAqKXNtYXJ0LCBzbWFydF9sZW4s IFNDTFBfRVJSTk9USUZZX0lEX05WTUVNT04pOwotKwlmcmVlKHBjaV9hZGRyKTsKLSsJcmV0dXJu IHJjOwotK30KLSsKLStzdGF0aWMgaW50IG52bWVtb25fY29sbGVjdF9hZGFwdGVyX2RhdGEoc3Ry dWN0IHpwY2ltb25fY3R4ICpjdHgsIHN0cnVjdCB6cGNpX2RldiAqemRldikKLSt7Ci0rCXN0cnVj dCBudm1lX3NtYXJ0X2xvZyBsb2cgPSB7fTsKLSsJaW50IG52bWVfZmQsIHJjID0gLUVOT0RFVjsK LSsJY2hhciAqZGV2LCAqcGNpX2FkZHI7Ci0rCi0rCWlmICh6ZGV2LT5wZnQgIT0gWlBDSV9QRlRf TlZNRSkKLSsJCXJldHVybiAtRU5PREVWOwotKwotKwlwY2lfYWRkciA9IHpwY2lfcGNpX2FkZHIo emRldik7Ci0rCWRldiA9IHpwY2lfZ2V0X252bWVfZGV2aWNlX25vZGUocGNpX2FkZHIpOwotKwlp ZiAoIWRldikKLSsJCWdvdG8gZXhpdF9mcmVlX2FkZHI7Ci0rCi0rCW52bWVfZmQgPSBvcGVuYXQo QVRfRkRDV0QsIGRldiwgT19SRE9OTFkpOwotKwlpZiAobnZtZV9mZCA8IDApIHsKLSsJCXdhcm4o IkZhaWxlZCB0byBvcGVuICVzIiwgZGV2KTsKLSsJCXJjID0gLWVycm5vOwotKwkJZ290byBleGl0 X2ZyZWVfZGV2OwotKwl9Ci0rCi0rCXJjID0gbnZtZV9nZXRfbG9nX3NtYXJ0KG52bWVfZmQsIE5W TUVfTlNJRF9BTEwsIGZhbHNlLCAmbG9nKTsKLSsJaWYgKHJjKSB7Ci0rCQl3YXJueCgiR2V0dGlu ZyBOVk1lIFNNQVJUIGxvZyBmYWlsZWQgJWQiLCByYyk7Ci0rCQlnb3RvIGV4aXRfY2xvc2U7Ci0r CX0KLSsJaWYgKCFjdHgtPm9wdHMucXVpZXQpCi0rCQludm1lX2pzb25fcHJpbnQoY3R4LCB6ZGV2 LCBkZXYsICZsb2cpOwotKwlpZiAoY3R4LT5vcHRzLnJlcG9ydCkgewotKwkJcmMgPSBzY2xwX2lz c3VlX252bWVfc21hcnRfcmVwb3J0KHpkZXYsICh1aW50OF90ICopJmxvZywgc2l6ZW9mKGxvZykp OwotKwkJaWYgKHJjIDwgMCAmJiByYyAhPSAtRU5PVFNVUCkKLSsJCQl3YXJueCgiRXJyb3IgaXNz dWluZyBTQ0xQIGZvciBOVk1lIFNNQVJUIGxvZyBmYWlsZWQiKTsKLSsJfQotKwotK2V4aXRfY2xv c2U6Ci0rCWNsb3NlKG52bWVfZmQpOwotK2V4aXRfZnJlZV9kZXY6Ci0rCWZyZWUoZGV2KTsKLStl eGl0X2ZyZWVfYWRkcjoKLSsJZnJlZShwY2lfYWRkcik7Ci0rCXJldHVybiByYzsKLSt9Ci0rCi0r Y29uc3Qgc3RydWN0IHpwY2ltb25fb3BzIG52bWVtb25fb3BzID0gewotKwkuY29sbGVjdF9hZGFw dGVyX2RhdGEgPSBudm1lbW9uX2NvbGxlY3RfYWRhcHRlcl9kYXRhLAotK307Ci1kaWZmIC0tZ2l0 IGEvenBjaW1vbi9udm1lbW9uLmggYi96cGNpbW9uL252bWVtb24uaAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAwLi4wNjU4YmNhYQotLS0tIC9kZXYvbnVsbAotKysrIGIvenBj aW1vbi9udm1lbW9uLmgKLUBAIC0wLDAgKzEsMTMgQEAKLSsvKgotKyAqIENvcHlyaWdodCBJQk0g Q29ycC4gMjAyNQotKyAqCi0rICogczM5MC10b29scyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMuCi0rICovCi0rI2lmbmRl ZiBaUENJTU9OX05WTUVNT05fSAotKyNkZWZpbmUgWlBDSU1PTl9OVk1FTU9OX0gKLSsKLStzdHJ1 Y3QgbnZtZW1vbl9jdHgge307Ci0rCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCB6cGNpbW9uX29wcyBu dm1lbW9uX29wczsKLSsjZW5kaWYgLyogWlBDSU1PTl9OVk1FTU9OX0ggKi8KLWRpZmYgLS1naXQg YS96cGNpbW9uL3pwY2ltb24uOCBiL3pwY2ltb24venBjaW1vbi44Ci1pbmRleCA5YjE2ZmE5MS4u NmNjNmFiMjkgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL3pwY2ltb24uOAotKysrIGIvenBjaW1vbi96 cGNpbW9uLjgKLUBAIC0zMyw3ICszMyw3IEBACi0gLlRIIHpwY2ltb24gOCAiT2N0IDIwMjQiIHMz OTAtdG9vbHMgenBjaWN0bAotIC4KLSAuU0ggTkFNRQotLXpwY2ltb24gLSBNb25pdG9yIG9wdGlj YWwgbW9kdWxlcyBmb3IgZGlyZWN0bHkgYXR0YWNoZWQgUENJIGJhc2VkIE5JQ3MKLSt6cGNpbW9u IC0gTW9uaXRvciBoZWFsdGggb2YgZGlyZWN0bHkgYXR0YWNoZWQgUENJIGRldmljZXMgaW5jbHVk aW5nIE5WTWVzIGFuZCBOSUNzLgotIC4KLSAuCi0gLlNIIFNZTk9QU0lTCi1AQCAtNDUsMjYgKzQ1 LDI5IEBAIHpwY2ltb24gLSBNb25pdG9yIG9wdGljYWwgbW9kdWxlcyBmb3IgZGlyZWN0bHkgYXR0 YWNoZWQgUENJIGJhc2VkIE5JQ3MKLSBVc2UKLSAuQiB6cGNpbW9uCi0gdG8gbW9uaXRvciB0aGUg aGVhbHRoIG9mIHRoZSBvcHRpY2FsIG1vZHVsZXMgb2YgZGlyZWN0bHkgYXR0YWNoZWQgUENJIGJh c2VkCi0tTklDcy4gV2hlbiBleGVjdXRlZCB3aXRob3V0IHRoZSBcZkItLW1vbml0b3JcZlIgb3B0 aW9uIGl0IHdpbGwgY29sbGVjdCBvcHRpY2FsCi0tbW9kdWxlIGRhdGEgZnJvbSBhbGwgYXZhaWxh YmxlIFBDSSBuZXR3b3JrIGludGVyZmFjZSBwaHlzaWNhbCBmdW5jdGlvbnMgYW5kCi0tcHJpbnQg YSBzdW1tYXJ5IGluIEpTT04gZm9ybWF0LiBBZGQgdGhlIFxmQi0tc2VuZC1yZXBvcnRcZlIgb3B0 aW9uIHRvIHJlcG9ydAotLXRoaXMgZGF0YSB0byB0aGUgc3VwcG9ydCBlbGVtZW50LgotLQotK05J Q3MgYXMgd2VsbCBhcyB0aGUgaGVhbHRoIG9mIE5WTWUgZGV2aWNlcyB1c2luZyB0aGVpciBTTUFS VCBkYXRhLiBXaGVuCi0rZXhlY3V0ZWQgd2l0aG91dCB0aGUgXGZCLS1tb25pdG9yXGZSIG9wdGlv biBpdCB3aWxsIGNvbGxlY3QgaGVhbHRoIGRhdGEgZnJvbQotK2FsbCBhdmFpbGFibGUgYW5kIHJl bGV2YW50IFBDSSBkZXZpY2VzIGFuZCBwcmludCBhIHN1bW1hcnkgaW4gSlNPTiBmb3JtYXQuIEFk ZAotK3RoZSBcZkItLXNlbmQtcmVwb3J0XGZSIG9wdGlvbiB0byByZXBvcnQgdGhpcyBkYXRhIHRv IHRoZSBzdXBwb3J0IGVsZW1lbnQuCi0gCi0gLgotIC4KLSAuU0ggT1BUSU9OUwotIC5TUyBPcGVy YXRpb24gT3B0aW9ucwotIC5PRCBtb25pdG9yICJtIgotLVJ1biBjb250aW51b3VzbHkgYW5kIHJl cG9ydCBvbiBsaW5rIHN0YXRlIGNoYW5nZXMgYW5kIHBlcmlvZGljYWxseQotK1J1biBjb250aW51 b3VzbHkgYW5kIG1vbml0b3IgYWxsIHN1cHBvcnRlZCBkZXZpY2VzLiBPbiBsaW5rIHN0YXRlIGNo YW5nZXMKLStvcHRpY2FsIG1vZHVsZSBkYXRhIGlzIGNvbGxlY3RlZCBhbmQgTlZNZSBTTUFSVCBk YXRhIGlzIGNvbGxlY3RlZCBvbiBob3RwbHVnLgotK01vcmVvdmVyIGV2ZXJ5Ci0rLkIgLS1pbnRl cnZhbAotK3NlY29uZHMgZGF0YSBmcm9tIGFsbCBhZGFwdGVycyBpcyBjb2xsZWN0ZWQgYXMgYSB3 aG9sZSBzeXN0ZW0gc25hcHNob3QuCi0gLlBQCi0gLgotIC5PRCBzZW5kLXJlcG9ydCAiciIKLS1S ZXBvcnQgdGhlIG9wdGljcyBoZWFsdGggZGF0YSB0byB0aGUgU3VwcG9ydCBFbGVtZW50IChTRSkK LStSZXBvcnQgdGhlIG9wdGljcyBhbmQgTlZNZSBoZWFsdGggZGF0YSB0byB0aGUgU3VwcG9ydCBF bGVtZW50IChTRSkKLSAuUFAKLSAuCi0gLk9EIHF1aWV0ICJxIgotLUJlIHF1aWV0IGFuZCBkb24n dCBwcmludCBvcHRpY3MgaGVhbHRoIHN1bW1hcnkKLStCZSBxdWlldCBhbmQgZG9uJ3QgcHJpbnQg aGVhbHRoIHN1bW1hcmllcy4KLSAuUFAKLSAuCi0gLk9EIGludGVydmFsICJpIiAic2Vjb25kcyIK LUBAIC04NCw2ICs4NywxMSBAQCBvbiIuCi0gLlBQCi0gLlBQCi0gLgotKy5PRCBzbWFydC1sb2ct cmF3ICIiCi0rSW5jbHVkZSBhIGJhc2U2NCBlbmNvZGVkIGJpbmFyeSBkdW1wIG9mIGVhY2ggTlZN ZSdzIFNNQVJUIGRhdGEuIFRoaXMgbWF0Y2hlcwotKyJudm1lIHNtYXJ0LWxvZyAtLW91dHB1dC1m b3JtYXQ9YmluYXJ5IC9kZXYvbnZtZVgiLgotKy5QUAotKy4KLSAuU1MgT3V0cHV0IEZvcm1hdCBP cHRpb25zCi0gLk9EIGZvcm1hdCAiIiA8Rk9STUFUPgotIFNldCB0aGUgb3V0cHV0IGZvcm1hdCBv dXQgb2YganNvbiwganNvbi1zZXEsIGpzb25sLCBwYWlycywgYW5kIGNzdi4gTm90ZSB0aGF0Ci1k aWZmIC0tZ2l0IGEvenBjaW1vbi96cGNpbW9uLmMgYi96cGNpbW9uL3pwY2ltb24uYwotaW5kZXgg ZTMwZjI1MWUuLjYyNWExMzYzIDEwMDY0NAotLS0tIGEvenBjaW1vbi96cGNpbW9uLmMKLSsrKyBi L3pwY2ltb24venBjaW1vbi5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJsaWIvdXRp bF90aW1lLmgiCi0gI2luY2x1ZGUgImxpYi96dF9jb21tb24uaCIKLSAKLSsjaW5jbHVkZSAibnZt ZW1vbi5oIgotICNpbmNsdWRlICJvcHRpY3Ntb24uaCIKLSAjaW5jbHVkZSAienBjaW1vbi5oIgot ICNpbmNsdWRlICJ6cGNpbW9uX2NsaS5oIgotQEAgLTQyLDYgKzQzLDcgQEAgc3RydWN0IHpwY2lt b25fbW9uaXRvciB7Ci0gCi0gc3RhdGljIHN0cnVjdCB6cGNpbW9uX21vbml0b3IgbW9uaXRvcnNb XSA9IHsKLSAJey5vcHMgPSAmb3B0aWNzbW9uX29wcywgLmluaXRpYWxpemVkID0gMCwgLm9wZW5l ZCA9IDB9LAotKwl7Lm9wcyA9ICZudm1lbW9uX29wcywgLmluaXRpYWxpemVkICA9IDAsIC5vcGVu ZWQgPSAwfSwKLSB9OwotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXRpbF9wcmcgcHJnID0gewot QEAgLTc5LDYgKzgxLDkgQEAgc3RhdGljIHZvaWQgcGFyc2VfY21kbGluZShpbnQgYXJnYywgY2hh ciAqYXJndltdLCBzdHJ1Y3Qgb3B0aW9ucyAqb3B0cykKLSAJCWNhc2UgT1BUX0RVTVA6Ci0gCQkJ b3B0cy0+bW9kdWxlX2luZm8gPSB0cnVlOwotIAkJCWJyZWFrOwotKwkJY2FzZSBPUFRfU01BUlRf RFVNUDoKLSsJCQlvcHRzLT5zbWFydF9ibG9iID0gdHJ1ZTsKLSsJCQlicmVhazsKLSAJCWNhc2Ug T1BUX0ZPUk1BVDoKLSAJCQlpZiAoIXV0aWxfZm10X25hbWVfdG9fdHlwZShvcHRhcmcsICZmbXQp KQotIAkJCQllcnJ4KEVYSVRfRkFJTFVSRSwgIlVua25vd24gZm9ybWF0ICVzIiwgb3B0YXJnKTsK LWRpZmYgLS1naXQgYS96cGNpbW9uL3pwY2ltb24uaCBiL3pwY2ltb24venBjaW1vbi5oCi1pbmRl eCBjYjEyNDA1Ni4uZGEyMmVhYmUgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL3pwY2ltb24uaAotKysr IGIvenBjaW1vbi96cGNpbW9uLmgKLUBAIC0xMSw2ICsxMSw3IEBACi0gCi0gI2luY2x1ZGUgImxp Yi91dGlsX2ZtdC5oIgotIAotKyNpbmNsdWRlICJudm1lbW9uLmgiCi0gI2luY2x1ZGUgIm9wdGlj c21vbi5oIgotIAotICNkZWZpbmUgQVBJX0xFVkVMIDEKLUBAIC0yNiwxMiArMjcsMTUgQEAgc3Ry dWN0IG9wdGlvbnMgewotIAotIAkvKiBPcHRpY3MgTW9uaXRvcmluZyBTcGVjaWZpYyAqLwotIAli b29sIG1vZHVsZV9pbmZvOwotKwkvKiBOVk1lIE1vbml0b3JpbmcgU3BlY2lmaWMgKi8KLSsJYm9v bCBzbWFydF9ibG9iOwotIH07Ci0gCi0gc3RydWN0IHpwY2ltb25fY3R4IHsKLSAJc3RydWN0IG9w dGlvbnMgb3B0czsKLSAJc3RydWN0IHV0aWxfbGlzdCAqenBjaV9saXN0OwotIAlzdHJ1Y3Qgb3B0 aWNzbW9uX2N0eCBvcHRpY3Ntb25fY3R4OwotKwlzdHJ1Y3QgbnZtZW1vbl9jdHggbnZtZW1vbl9j dHg7Ci0gfTsKLSAKLSBzdHJ1Y3QgenBjaW1vbl9vcHMgewotZGlmZiAtLWdpdCBhL3pwY2ltb24v enBjaW1vbl9jbGkuaCBiL3pwY2ltb24venBjaW1vbl9jbGkuaAotaW5kZXggZjVhMGRjM2UuLjNh MGYyMWExIDEwMDY0NAotLS0tIGEvenBjaW1vbi96cGNpbW9uX2NsaS5oCi0rKysgYi96cGNpbW9u L3pwY2ltb25fY2xpLmgKLUBAIC0xMiw2ICsxMiw3IEBACi0gCi0gI2RlZmluZSBPUFRfRFVNUCAx MjgKLSAjZGVmaW5lIE9QVF9GT1JNQVQgMTI5Ci0rI2RlZmluZSBPUFRfU01BUlRfRFVNUCAxMzAK LSAKLSBzdGF0aWMgc3RydWN0IHV0aWxfb3B0IG9wdF92ZWNbXSA9IHsKLSAJVVRJTF9PUFRfU0VD VElPTigiT1BFUkFUSU9OIE9QVElPTlMiKSwKLUBAIC0zNSw2ICszNiwxMyBAQCBzdGF0aWMgc3Ry dWN0IHV0aWxfb3B0IG9wdF92ZWNbXSA9IHsKLSAJCQkiVGhpcyBtYXRjaGVzICdldGh0b29sIC0t bW9kdWxlLWluZm8gPG5ldGRldj4gcmF3IG9uJyIsCi0gCQkuZmxhZ3MgPSBVVElMX09QVF9GTEFH X05PU0hPUlQsCi0gCX0sCi0rCXsKLSsJCS5vcHRpb24gPSB7ICJzbWFydC1sb2ctcmF3Iiwgbm9f YXJndW1lbnQsIE5VTEwsIE9QVF9TTUFSVF9EVU1QIH0sCi0rCQkuZGVzYyA9ICJJbmNsdWRlIGEg YmFzZTY0IGVuY29kZWQgYmluYXJ5IGR1bXAgb2YgdGhlICIKLSsJCQkiU01BUlQgbG9nIGRhdGEg Zm9yIGVhY2ggTlZNZS4gIgotKwkJCSJUaGlzIG1hdGNoZXMgJ252bWUgc21hcnQtbG9nIC0tcmF3 LWJpbmFyeSA8ZGV2PiciLAotKwkJLmZsYWdzID0gVVRJTF9PUFRfRkxBR19OT1NIT1JULAotKwl9 LAotIAlVVElMX09QVF9TRUNUSU9OKCJPUFRJT05TIFdJVEggQVJHVU1FTlRTIiksCi0gCXsKLSAJ CS5vcHRpb24gPSB7ICJpbnRlcnZhbCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnaScgfSwK LS0tIAotMi41NS4wCi0KLQotRnJvbSBmMWExMWEwMWRmZjk2MzJjMDdiYTllYzNjMDAxYmVkMWIw ZWYyZmZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmlrbGFzIFNjaG5lbGxlIDxz Y2huZWxsZUBsaW51eC5pYm0uY29tPgotRGF0ZTogVHVlLCAyMSBBcHIgMjAyNiAxMTo0NDowOSAr MDIwMAotU3ViamVjdDogW1BBVENIIDE3LzIzXSB6cGNpbW9uOiBBZGQgSlNPTiBvdXRwdXQgZm9y IFNNQVJUIGRhdGEgZGV0YWlscwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAot Ci1UaGlzIHVzZXMgdGhlIHNhbWUgZm9ybWF0IGFzOgotCi0gICBudm1lIHNtYXJ0LWxvZyAtLW91 dHB1dC1mb3JtYXQ9anNvbiAvZGV2L252bWVYCi0KLU9uZSBjb21wbGljYXRpb24gYmVpbmcgdGhh dCBzZXZlcmFsIHZhbHVlcyBpbiB0aGUgU01BUlQgZGF0YSB1c2UKLXVuc2lnbmVkIDEyOCBiaXQg aW50ZWdlcnMuIEJvdGggR0NDIGFuZCBDbGFuZyBzdXBwb3J0IF9fdWludDEyOF90IGFzCi1hIEMg ZXh0ZW5zaW9uIGJ1dCBkb24ndCBvZmZlciBwcmludGYoKSBzdXBwb3J0IGZvciBpdC4gSnVzdCBs aWtlCi1udm1lLWNsaSBhZGQgYSBjdXN0b20gdWludDEyOF90IHRvIHN0cmluZyBmdW5jdGlvbi4u Ci0KLVJldmlld2VkLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci1T aWduZWQtb2ZmLWJ5OiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1T aWduZWQtb2ZmLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci0tLS0K LSB6cGNpbW9uL252bWVtb24uYyB8IDEwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvenBjaW1vbi9udm1lbW9uLmMgYi96cGNpbW9uL252 bWVtb24uYwotaW5kZXggODVhNWQwYWQuLmE1MTZiNGFhIDEwMDY0NAotLS0tIGEvenBjaW1vbi9u dm1lbW9uLmMKLSsrKyBiL3pwY2ltb24vbnZtZW1vbi5jCi1AQCAtMjMsMTQgKzIzLDExNiBAQAot ICNpbmNsdWRlICJudm1lbW9uLmgiCi0gI2luY2x1ZGUgInpwY2ltb24uaCIKLSAKLSsvKioKLSsg KiBSZWFkcyBhIENQVSBuYXRpdmUgMTI4IGJpdCB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gdGhlIGJp bmFyeSBidWZmZXIgQGRhdGEKLSsgKiBjb250YWluaW5nIHRoZSB2YWx1ZSBpbiB0aGUgMTI4IGJp dCBsaXR0bGUgZW5kaWFuIGZvcm1hdCB1c2VkIGJ5IHRoZQotKyAqIE5WTWUgc3RhbmRhcmQuCi0r ICoKLSsgKiBAcmV0dXJuIHRoZSAxMjggYml0IHZhbHVlIGVuY29kZWQgaW4gdGhlIGRhdGEgYnVm ZmVyLgotKyAqLwotK3N0YXRpYyBfX3VpbnQxMjhfdCBudm1lX2xlMTI4X3RvX2NwdShjb25zdCBf X3U4IGRhdGFbMTZdKQotK3sKLSsJX191aW50MTI4X3QgdTsKLSsJaW50IGk7Ci0rCi0rCXUgPSBk YXRhWzBdOwotKwlmb3IgKGkgPSAxOyBpIDwgKGludClzaXplb2YodSk7IGkrKykKLSsJCXUgfD0g KF9fdWludDEyOF90KWRhdGFbaV0gPDwgKDggKiBpKTsKLSsJcmV0dXJuIHU7Ci0rfQotKwotKyNk ZWZpbmUgTUFYX1VJTlQxMjhfREVDSU1BTF9MRU4gKDQxKSAvKiBsZW5ndGggb2YgMl4xMjgtMSBp biBkZWNpbWFsICsgMCBieXRlICovCi0rCi0rLyoqCi0rICogV3JpdGUgdGhlIGRlY2ltYWwgc3Ry aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXNzZWQgdW5zaWduZWQgMTI4IGJpdCB2YWx1ZSBA dmFsIGludG8KLSsgKiB0aGUgYnVmZmVyIEBidWYgZm9yIG91dHB1dCBpbiBKU09OLiBUaGUgcmVw cmVzZW50YXRpb24gZG9lcyBub3QgaW5jbHVkZQotKyAqIHF1b3Rlcy4KLSsgKi8KLStzdGF0aWMg dm9pZCBudm1lX3UxMjhfdG9fanNvbl92YWwoX191aW50MTI4X3QgdmFsLCBjaGFyIGJ1ZltNQVhf VUlOVDEyOF9ERUNJTUFMX0xFTl0pCi0rewotKwljb25zdCBjaGFyICpkaWdpdF9hc2NpaSA9ICIw MTIzNDU2Nzg5IjsKLSsJaW50IHBvcyA9IE1BWF9VSU5UMTI4X0RFQ0lNQUxfTEVOIC0gMTsKLSsJ aW50IG1vZF90ZW47Ci0rCWludCBsZW47Ci0rCi0rCS8qIFdyaXRlIGRpZ2l0cyByaWdodCB0byBs ZWZ0IGF0IHRoZSBlbmQgb2YgcmVzICovCi0rCWRvIHsKLSsJCW1vZF90ZW4gPSB2YWwgJSAxMDsK LSsJCXZhbCAvPSAxMDsKLSsJCWJ1Zltwb3MtLV0gPSBkaWdpdF9hc2NpaVttb2RfdGVuXTsKLSsJ fSB3aGlsZSAodmFsKTsKLSsJLyogTW92ZSBkaWdpdHMgdG8gdGhlIGZyb250ICovCi0rCWxlbiA9 IE1BWF9VSU5UMTI4X0RFQ0lNQUxfTEVOIC0gMSAtIHBvczsKLSsJbWVtbW92ZShidWYsICZidWZb cG9zICsgMV0sIGxlbik7Ci0rCWJ1ZltsZW5dID0gJ1wwJzsKLSt9Ci0rCi0rc3RhdGljIHZvaWQg bnZtZV9qc29uX3ByaW50X3NtYXJ0X2xvZyhzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCwgc3RydWN0 IG52bWVfc21hcnRfbG9nICpsb2cpCi0rewotKwljaGFyIHUxMjhfbnVtX2J1ZltNQVhfVUlOVDEy OF9ERUNJTUFMX0xFTl07Ci0rCXVuc2lnbmVkIGludCB0ZW1wZXJhdHVyZTsKLSsKLSsJLyogV2hp bGUgc29tZSBmaWVsZHMgaW4gc3RydWN0IG52bWVfc21hcnRfbG9nIGFyZSBfX2xlWFgKLSsJICog dGVtcGVyYXR1cmUgaXMgYW4gYXJyYXkgb2YgdHdvIHU4IG9mIHRoZSBsaXR0bGUgZW5kaWFuIGRh dGEKLSsJICogaW4gS2VsdmluLgotKwkgKi8KLSsJdGVtcGVyYXR1cmUgPSBsb2ctPnRlbXBlcmF0 dXJlWzFdIDw8IDggfCBsb2ctPnRlbXBlcmF0dXJlWzBdOwotKwotKwl1dGlsX2ZtdF9vYmpfc3Rh cnQoRk1UX0RFRkFVTFQsICJzbWFydC1sb2ciKTsKLSsJdXRpbF9mbXRfcGFpcihGTVRfREVGQVVM VCwgImNyaXRpY2FsX3dhcm5pbmciLCAiJWQiLCBsb2ctPmNyaXRpY2FsX3dhcm5pbmcpOwotKwl1 dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAidGVtcGVyYXR1cmUiLCAiJWQiLCB0ZW1wZXJhdHVy ZSk7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQsICJhdmFpbF9zcGFyZSIsICIlZCIsIGxv Zy0+YXZhaWxfc3BhcmUpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAic3BhcmVfdGhy ZXNoIiwgIiVkIiwgbG9nLT5zcGFyZV90aHJlc2gpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZB VUxULCAicGVyY2VudF91c2VkIiwgIiVkIiwgbG9nLT5wZXJjZW50X3VzZWQpOwotKwl1dGlsX2Zt dF9wYWlyKEZNVF9ERUZBVUxULCAiZW5kdXJhbmNlX2dycF9jcml0aWNhbF93YXJuaW5nX3N1bW1h cnkiLCAiJWQiLAotKwkJICAgICAgbG9nLT5lbmR1X2dycF9jcml0X3dhcm5fc3VtcnkpOwotKwlu dm1lX3UxMjhfdG9fanNvbl92YWwobnZtZV9sZTEyOF90b19jcHUobG9nLT5kYXRhX3VuaXRzX3Jl YWQpLCB1MTI4X251bV9idWYpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAiZGF0YV91 bml0c19yZWFkIiwgIiVzIiwgdTEyOF9udW1fYnVmKTsKLSsJbnZtZV91MTI4X3RvX2pzb25fdmFs KG52bWVfbGUxMjhfdG9fY3B1KGxvZy0+ZGF0YV91bml0c193cml0dGVuKSwgdTEyOF9udW1fYnVm KTsKLSsJdXRpbF9mbXRfcGFpcihGTVRfREVGQVVMVCwgImRhdGFfdW5pdHNfd3JpdHRlbiIsICIl cyIsIHUxMjhfbnVtX2J1Zik7Ci0rCW52bWVfdTEyOF90b19qc29uX3ZhbChudm1lX2xlMTI4X3Rv X2NwdShsb2ctPmhvc3RfcmVhZHMpLCB1MTI4X251bV9idWYpOwotKwl1dGlsX2ZtdF9wYWlyKEZN VF9ERUZBVUxULCAiaG9zdF9yZWFkX2NvbW1hbmRzIiwgIiVzIiwgdTEyOF9udW1fYnVmKTsKLSsJ bnZtZV91MTI4X3RvX2pzb25fdmFsKG52bWVfbGUxMjhfdG9fY3B1KGxvZy0+aG9zdF93cml0ZXMp LCB1MTI4X251bV9idWYpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAiaG9zdF93cml0 ZV9jb21tYW5kcyIsICIlcyIsIHUxMjhfbnVtX2J1Zik7Ci0rCW52bWVfdTEyOF90b19qc29uX3Zh bChudm1lX2xlMTI4X3RvX2NwdShsb2ctPmN0cmxfYnVzeV90aW1lKSwgdTEyOF9udW1fYnVmKTsK LSsJdXRpbF9mbXRfcGFpcihGTVRfREVGQVVMVCwgImNvbnRyb2xsZXJfYnVzeV90aW1lIiwgIiVz IiwgdTEyOF9udW1fYnVmKTsKLSsJbnZtZV91MTI4X3RvX2pzb25fdmFsKG52bWVfbGUxMjhfdG9f Y3B1KGxvZy0+cG93ZXJfY3ljbGVzKSwgdTEyOF9udW1fYnVmKTsKLSsJdXRpbF9mbXRfcGFpcihG TVRfREVGQVVMVCwgInBvd2VyX2N5Y2xlcyIsICIlcyIsIHUxMjhfbnVtX2J1Zik7Ci0rCS8qIDJe MTI4IGhvdXJzIGlzIDIuOCoxMF4yNCB0aW1lcyB0aGUgYWdlIG9mIHRoZSB1bml2ZXJzZSA7KSAq LwotKwludm1lX3UxMjhfdG9fanNvbl92YWwobnZtZV9sZTEyOF90b19jcHUobG9nLT5wb3dlcl9v bl9ob3VycyksIHUxMjhfbnVtX2J1Zik7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQsICJw b3dlcl9vbl9ob3VycyIsICIlcyIsIHUxMjhfbnVtX2J1Zik7Ci0rCW52bWVfdTEyOF90b19qc29u X3ZhbChudm1lX2xlMTI4X3RvX2NwdShsb2ctPnVuc2FmZV9zaHV0ZG93bnMpLCB1MTI4X251bV9i dWYpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAidW5zYWZlX3NodXRkb3ducyIsICIl cyIsIHUxMjhfbnVtX2J1Zik7Ci0rCW52bWVfdTEyOF90b19qc29uX3ZhbChudm1lX2xlMTI4X3Rv X2NwdShsb2ctPm1lZGlhX2Vycm9ycyksIHUxMjhfbnVtX2J1Zik7Ci0rCXV0aWxfZm10X3BhaXIo Rk1UX0RFRkFVTFQsICJtZWRpYV9lcnJvcnMiLCAiJXMiLCB1MTI4X251bV9idWYpOwotKwludm1l X3UxMjhfdG9fanNvbl92YWwobnZtZV9sZTEyOF90b19jcHUobG9nLT5udW1fZXJyX2xvZ19lbnRy aWVzKSwgdTEyOF9udW1fYnVmKTsKLSsJdXRpbF9mbXRfcGFpcihGTVRfREVGQVVMVCwgIm51bV9l cnJfbG9nX2VudHJpZXMiLCAiJXMiLCB1MTI4X251bV9idWYpOwotKwl1dGlsX2ZtdF9wYWlyKEZN VF9ERUZBVUxULCAid2FybmluZ190ZW1wX3RpbWUiLCAiJWQiLCBsZTMydG9oKGxvZy0+d2Fybmlu Z190ZW1wX3RpbWUpKTsKLSsJdXRpbF9mbXRfcGFpcihGTVRfREVGQVVMVCwgImNyaXRpY2FsX2Nv bXBfdGltZSIsICIlZCIsIGxlMzJ0b2gobG9nLT5jcml0aWNhbF9jb21wX3RpbWUpKTsKLSsJdXRp bF9mbXRfcGFpcihGTVRfREVGQVVMVCwgInRlbXBlcmF0dXJlX3NlbnNvcl8xIiwgIiVkIiwgbGUx NnRvaChsb2ctPnRlbXBfc2Vuc29yWzBdKSk7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQs ICJ0ZW1wZXJhdHVyZV9zZW5zb3JfMiIsICIlZCIsIGxlMTZ0b2gobG9nLT50ZW1wX3NlbnNvclsx XSkpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAidGVtcGVyYXR1cmVfc2Vuc29yXzMi LCAiJWQiLCBsZTE2dG9oKGxvZy0+dGVtcF9zZW5zb3JbMl0pKTsKLSsJdXRpbF9mbXRfcGFpcihG TVRfREVGQVVMVCwgInRobV90ZW1wMV90cmFuc19jb3VudCIsICIlZCIsCi0rCQkgICAgICBsZTMy dG9oKGxvZy0+dGhtX3RlbXAxX3RyYW5zX2NvdW50KSk7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX0RF RkFVTFQsICJ0aG1fdGVtcDJfdHJhbnNfY291bnQiLCAiJWQiLAotKwkJICAgICAgbGUzMnRvaChs b2ctPnRobV90ZW1wMl90cmFuc19jb3VudCkpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxU LCAidGhtX3RlbXAxX3RvdGFsX3RpbWUiLCAiJWQiLAotKwkJICAgICAgbGUzMnRvaChsb2ctPnRo bV90ZW1wMV90b3RhbF90aW1lKSk7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQsICJ0aG1f dGVtcDJfdG90YWxfdGltZSIsICIlZCIsCi0rCQkgICAgICBsZTMydG9oKGxvZy0+dGhtX3RlbXAy X3RvdGFsX3RpbWUpKTsKLSsJdXRpbF9mbXRfb2JqX2VuZCgpOyAvKiBzbWFydC1sb2cgKi8KLSsK LSsJaWYgKGN0eC0+b3B0cy5zbWFydF9ibG9iKQotKwkJenBjaW1vbl9qc29uX2Jhc2U2NF9wYWly KCJzbWFydC1sb2ctcmF3IiwgKHVpbnQ4X3QgKilsb2csIHNpemVvZigqbG9nKSk7Ci0rfQotKwot IHN0YXRpYyB2b2lkIG52bWVfanNvbl9wcmludChzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCwgc3Ry dWN0IHpwY2lfZGV2ICp6ZGV2LCBjb25zdCBjaGFyICpuYW1lLAotIAkJCSAgICBzdHJ1Y3QgbnZt ZV9zbWFydF9sb2cgKmxvZykKLSB7Ci0gCXpwY2lfYWRhcHRlcl9qc29uX3ByaW50X3N0YXJ0KHpk ZXYpOwotIAl1dGlsX2ZtdF9vYmpfc3RhcnQoRk1UX0RFRkFVTFQsICJudm1lZGV2Iik7Ci0gCXV0 aWxfZm10X3BhaXIoRk1UX1FVT1RFLCAiZGV2IiwgbmFtZSk7Ci0tCWlmIChjdHgtPm9wdHMuc21h cnRfYmxvYikKLS0JCXpwY2ltb25fanNvbl9iYXNlNjRfcGFpcigic21hcnQtbG9nLXJhdyIsICh1 aW50OF90ICopbG9nLCBzaXplb2YoKmxvZykpOwotKwludm1lX2pzb25fcHJpbnRfc21hcnRfbG9n KGN0eCwgbG9nKTsKLSAJdXRpbF9mbXRfb2JqX2VuZCgpOwotIAl6cGNpX2FkYXB0ZXJfanNvbl9w cmludF9lbmQoKTsKLSAJZmZsdXNoKHN0ZG91dCk7Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gNGZk NjA3YWU1Y2E5ZWMzNzE0Y2EyMzU0NDc1ZjlhOGI4Y2FhY2UwOSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLURh dGU6IFRodSwgMjMgQXByIDIwMjYgMTQ6MjA6NDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8y M10genBjaW1vbjogTW9uaXRvciBmb3IgaG90cGx1ZyBvZiBOVk1lcyB0byB0cmlnZ2VyIFNNQVJU Ci0gY29sbGVjdGlvbgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFp bjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Vc2Ug bGlidWRldiB0byBtb25pdG9yIGZvciAiY2hhbmdlIiBldmVudHMgaW4gdGhlICJudm1lIiBzdWJz eXN0ZW0gdGhhdAotdXNlIHRoZSAicGNpZSIgdHJhbnNwb3J0IHRvIHRyaWdnZXIgTlZNZSBTTUFS VCBkYXRhIGNvbGxlY3Rpb24uIE9ubHkKLWNvbGxlY3QgZGF0YSBmcm9tIHRoZSBOVk1lIHJlZmVy ZW5jZWQgYnkgdGhlIHVkZXYgZXZlbnQuCi0KLUFzc2lzdGVkLWJ5OiBJQk0gQm9iOjEuMC4xCi1S ZXZpZXdlZC1ieTogSmFuIEjDtnBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgotU2lnbmVk LW9mZi1ieTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotU2lnbmVk LW9mZi1ieTogSmFuIEjDtnBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgotLS0tCi0gUkVB RE1FLm1kICAgICAgICAgfCAgIDIgKy0KLSB6cGNpbW9uL01ha2VmaWxlICB8ICAxOCArKysrKysr KwotIHpwY2ltb24vbnZtZW1vbi5jIHwgMTEwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKLSB6cGNpbW9uL252bWVtb24uaCB8ICAgNyArKy0KLSA0IGZpbGVz IGNoYW5nZWQsIDEzNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCi1pbmRleCBhYjNkY2Q0ZS4uMzViYjdhZGEgMTAwNjQ0 Ci0tLS0gYS9SRUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAotQEAgLTMyNSw3ICszMjUsNyBAQCBi dWlsZCBvcHRpb25zOgotIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgcnVz dC9wdmF0dGVzdCwgcnVzdC9wdnNlY3JldCwgICAgICAgICAgfAotIHwgbGlieG1sMiAgICAgIHwg YEhBVkVfTElCWE1MMmAgICAgIHwgbGlia21pcGNsaWVudCAgICAgICAgICAgICAgICAgICAgICAg ICAgfAotIHwgc3lzdGVtZCAgICAgIHwgYEhBVkVfU1lTVEVNRGAgICAgIHwgaHNhdm1jb3JlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotLXwgbGlidWRldiAgICAgIHwgYEhBVkVfTElC VURFVmAgICAgIHwgY3BhY2ZzdGF0c2QgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotK3wg bGlidWRldiAgICAgIHwgYEhBVkVfTElCVURFVmAgICAgIHwgY3BhY2ZzdGF0c2QsIHpwY2ltb24g ICAgICAgICAgICAgICAgICAgfAotIHwgbGlibmwzICAgICAgIHwgYEhBVkVfTElCTkwzYCAgICAg IHwgenBjaW1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotIHwgbGlibnZtZSAg ICAgIHwgYEhBVkVfTElCTlZNRWAgICAgIHwgenBjaW1vbiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAotIAotZGlmZiAtLWdpdCBhL3pwY2ltb24vTWFrZWZpbGUgYi96cGNpbW9uL01h a2VmaWxlCi1pbmRleCBjZTgxNWEzMS4uYTk3OTIxNjQgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL01h a2VmaWxlCi0rKysgYi96cGNpbW9uL01ha2VmaWxlCi1AQCAtMzksNiArMzksMTYgQEAgY2hlY2tf ZGVwX2xpYm52bWU6Ci0gQlVJTERUQVJHRVQgKz0gY2hlY2tfZGVwX2xpYm52bWUKLSBlbmRpZiAj IEhBVkVfTElCTlZNRQotIAotK2lmbmVxICgke0hBVkVfTElCVURFVn0sMCkKLStjaGVja19kZXBf bGlidWRldjoKLSsJJChjYWxsIGNoZWNrX2RlcCwgXAotKwkJInpwY2ltb24iLCBcCi0rCQkibGli dWRldi5oIiwgXAotKwkJInN5c3RlbWQtZGV2ZWwiLCBcCi0rCQkiSEFWRV9MSUJOVk1FPTAiKQot K0JVSUxEVEFSR0VUICs9IGNoZWNrX2RlcF9saWJ1ZGV2Ci0rZW5kaWYgIyBIQVZFX0xJQlVERVYK LSsKLSBpZmVxICgke0hBVkVfT1BFTlNTTH0sMCkKLSAKLSBhbGw6Ci1AQCAtNjEsNiArNzEsMTIg QEAgYWxsOgotIGluc3RhbGw6Ci0gCSQoU0tJUCkgSEFWRV9MSUJOVk1FPTAKLSAKLStlbHNlIGlm ZXEgKCR7SEFWRV9MSUJVREVWfSwwKQotK2FsbDoKLSsJJChTS0lQKSBIQVZFX0xJQlVERVY9MAot KwotK2luc3RhbGw6Ci0rCSQoU0tJUCkgSEFWRV9MSUJVREVWPTAKLSBlbHNlCi0gCi0gaWZuZXEg KCQoc2hlbGwgc2ggLWMgJ2NvbW1hbmQgLXYgcGtnLWNvbmZpZycpLCkKLUBAIC03Niw2ICs5Miw3 IEBAIExJQl9MRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tc2lsZW5jZS1lcnJvcnMg LS1saWJzIGxpYm5sLXJvdXRlLTMuMCkKLSAKLSBMSUJfTEZMQUdTICs9ICQoc2hlbGwgJChQS0df Q09ORklHKSAtLXNpbGVuY2UtZXJyb3JzIC0tbGlicyBsaWJjcnlwdG8pCi0gTElCX0xGTEFHUyAr PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1zaWxlbmNlLWVycm9ycyAtLWxpYnMgbGlibnZtZSkK LStMSUJfTEZMQUdTICs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLXNpbGVuY2UtZXJyb3JzIC0t bGlicyBsaWJ1ZGV2KQotIGVsc2UKLSBMSUJfQ0ZMQUdTICs9IC1JIC91c3IvaW5jbHVkZS9saWJu bDMvCi0gTElCX0xGTEFHUyArPSAtbG5sLXJvdXRlLTMgLWxubC1nZW5sLTMgLWxubC0zCi1AQCAt ODQsNiArMTAxLDcgQEAgTElCX0NGTEFHUyArPSAtSSAvdXNyL2luY2x1ZGUvb3BlbnNzbC8KLSBM SUJfTEZMQUdTICs9IC1sY3J5cHRvCi0gCi0gTElCX0xGTEFHUyArPSAtbG52bWUKLStMSUJfTEZM QUdTICs9IC1sdWRldgotIGVuZGlmCi0gCi0gQUxMX0NQUEZMQUdTICs9ICQoTElCX0NGTEFHUykK LWRpZmYgLS1naXQgYS96cGNpbW9uL252bWVtb24uYyBiL3pwY2ltb24vbnZtZW1vbi5jCi1pbmRl eCBhNTE2YjRhYS4uMTRmMDg4YzAgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL252bWVtb24uYwotKysr IGIvenBjaW1vbi9udm1lbW9uLmMKLUBAIC0xNSw2ICsxNSw3IEBACi0gI2luY2x1ZGUgPHN0cmlu Zy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8bGlibnZtZS5oPgotKyNpbmNs dWRlIDxsaWJ1ZGV2Lmg+Ci0gCi0gI2luY2x1ZGUgImxpYi9wY2lfbGlzdC5oIgotICNpbmNsdWRl ICJsaWIvcGNpX3NjbHAuaCIKLUBAIC0xOTUsNiArMTk2LDExNSBAQCBleGl0X2ZyZWVfYWRkcjoK LSAJcmV0dXJuIHJjOwotIH0KLSAKLStzdGF0aWMgaW50IG52bWVtb25fb3Blbl9tb25pdG9yKHN0 cnVjdCB6cGNpbW9uX2N0eCAqY3R4KQotK3sKLSsJc3RydWN0IG52bWVtb25fY3R4ICpuY3R4ID0g JmN0eC0+bnZtZW1vbl9jdHg7Ci0rCWludCByZXQgPSAtRUlOVkFMOwotKwotKwluY3R4LT51ZGV2 ID0gdWRldl9uZXcoKTsKLSsJaWYgKCFuY3R4LT51ZGV2KQotKwkJcmV0dXJuIC1FTk9NRU07Ci0r Ci0rCW5jdHgtPm1vbiA9IHVkZXZfbW9uaXRvcl9uZXdfZnJvbV9uZXRsaW5rKG5jdHgtPnVkZXYs ICJrZXJuZWwiKTsKLSsJaWYgKCFuY3R4LT5tb24pIHsKLSsJCXJldCA9IC1FTk9NRU07Ci0rCQln b3RvIGVycm9yX3VkZXY7Ci0rCX0KLSsKLSsJaWYgKHVkZXZfbW9uaXRvcl9maWx0ZXJfYWRkX21h dGNoX3N1YnN5c3RlbV9kZXZ0eXBlKG5jdHgtPm1vbiwgIm52bWUiLCBOVUxMKSA8IDApCi0rCQln b3RvIGVycm9yX21vbjsKLSsKLSsJLyogTm90ZTogVGhpcyBleHBsaWNpdCB1ZGV2X21vbml0b3Jf ZW5hYmxlX3JlY2VpdmluZygpIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCBuZWVkZWQgYW55bW9yZQot KwkgKiBpbiB1ZGV2IHYyNTcrLiBJdCdzIGhhcm1sZXNzIHRob3VnaCBzbyB3ZSBkbyBpdCBmb3Ig ZWFzaWVyIGJhY2twb3J0aW5nLgotKwkgKi8KLSsJaWYgKHVkZXZfbW9uaXRvcl9lbmFibGVfcmVj ZWl2aW5nKG5jdHgtPm1vbikgPCAwKQotKwkJZ290byBlcnJvcl9tb247Ci0rCi0rCXJldHVybiAw OwotKwotK2Vycm9yX21vbjoKLSsJdWRldl9tb25pdG9yX3VucmVmKG5jdHgtPm1vbik7Ci0rCW5j dHgtPm1vbiA9IE5VTEw7Ci0rZXJyb3JfdWRldjoKLSsJdWRldl91bnJlZihuY3R4LT51ZGV2KTsK LSsJbmN0eC0+dWRldiA9IE5VTEw7Ci0rCXJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbnQg bnZtZW1vbl9nZXRfbW9uaXRvcl9mZChzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCkKLSt7Ci0rCXN0 cnVjdCBudm1lbW9uX2N0eCAqbmN0eCA9ICZjdHgtPm52bWVtb25fY3R4OwotKwotKwlpZiAoIW5j dHgtPm1vbikKLSsJCXJldHVybiAtMTsKLSsJcmV0dXJuIHVkZXZfbW9uaXRvcl9nZXRfZmQobmN0 eC0+bW9uKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgbnZtZW1vbl9tb25pdG9yX2ZkX2hhbmRsZShz dHJ1Y3QgenBjaW1vbl9jdHggKmN0eCkKLSt7Ci0rCWNvbnN0IGNoYXIgKmFjdGlvbiwgKnRyYW5z cG9ydCwgKmV2ZW50X3BjaV9hZGRyOwotKwlzdHJ1Y3QgbnZtZW1vbl9jdHggKm5jdHggPSAmY3R4 LT5udm1lbW9uX2N0eDsKLSsJc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsICpwY2lfZGV2OwotKwlz dHJ1Y3QgenBjaV9kZXYgKnpkZXY7Ci0rCWNoYXIgKnpkZXZfcGNpX2FkZHI7Ci0rCi0rCWRldiA9 IHVkZXZfbW9uaXRvcl9yZWNlaXZlX2RldmljZShuY3R4LT5tb24pOwotKwlpZiAoIWRldikKLSsJ CXJldHVybjsKLSsKLSsJYWN0aW9uID0gdWRldl9kZXZpY2VfZ2V0X2FjdGlvbihkZXYpOwotKwl0 cmFuc3BvcnQgPSB1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFsdWUoZGV2LCAiTlZNRV9UUlRZ UEUiKTsKLSsKLSsJLyogQ2hhbmdlIGV2ZW50cyBhcmUgbGF0ZSBlbm91Z2ggdGhhdCB0aGUgL2Rl di9udm1lWCBpcyByZWFkeSBmb3IKLSsJICogcmVhZGluZyBTTUFSVCBkYXRhIGFuZCB3ZSdyZSBv bmx5IGludGVyZXN0ZWQgaW4gZGlyZWN0bHkgUENJZQotKwkgKiBhdHRhY2hlZCBOVk1lcwotKwkg Ki8KLSsJaWYgKGFjdGlvbiAmJiBzdHJjbXAoYWN0aW9uLCAiY2hhbmdlIikgPT0gMCAmJiB0cmFu c3BvcnQgJiYKLSsJICAgIHN0cmNtcCh0cmFuc3BvcnQsICJwY2llIikgPT0gMCkgewotKwkJcGNp X2RldiA9IHVkZXZfZGV2aWNlX2dldF9wYXJlbnRfd2l0aF9zdWJzeXN0ZW1fZGV2dHlwZShkZXYs ICJwY2kiLCBOVUxMKTsKLSsJCWlmICghcGNpX2RldikKLSsJCQlnb3RvIG91dDsKLSsJCWV2ZW50 X3BjaV9hZGRyID0gdWRldl9kZXZpY2VfZ2V0X3N5c25hbWUocGNpX2Rldik7Ci0rCQlpZiAoIWV2 ZW50X3BjaV9hZGRyKQotKwkJCWdvdG8gb3V0OwotKwotKwkJenBjaV9saXN0X3JlbG9hZCgmY3R4 LT56cGNpX2xpc3QpOwotKwkJaWYgKGN0eC0+enBjaV9saXN0KSB7Ci0rCQkJdXRpbF9saXN0X2l0 ZXJhdGUoY3R4LT56cGNpX2xpc3QsIHpkZXYpIHsKLSsJCQkJaWYgKHpkZXYtPnBmdCAhPSBaUENJ X1BGVF9OVk1FKQotKwkJCQkJY29udGludWU7Ci0rCQkJCXpkZXZfcGNpX2FkZHIgPSB6cGNpX3Bj aV9hZGRyKHpkZXYpOwotKwkJCQlpZiAoc3RyY21wKHpkZXZfcGNpX2FkZHIsIGV2ZW50X3BjaV9h ZGRyKSA9PSAwKSB7Ci0rCQkJCQlmcmVlKHpkZXZfcGNpX2FkZHIpOwotKwkJCQkJbnZtZW1vbl9j b2xsZWN0X2FkYXB0ZXJfZGF0YShjdHgsIHpkZXYpOwotKwkJCQkJYnJlYWs7Ci0rCQkJCX0KLSsJ CQkJZnJlZSh6ZGV2X3BjaV9hZGRyKTsKLSsJCQl9Ci0rCQl9Ci0rCX0KLStvdXQ6Ci0rCXVkZXZf ZGV2aWNlX3VucmVmKGRldik7Ci0rfQotKwotK3N0YXRpYyB2b2lkIG52bWVtb25fY2xvc2VfbW9u aXRvcihzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCkKLSt7Ci0rCXN0cnVjdCBudm1lbW9uX2N0eCAq bmN0eCA9ICZjdHgtPm52bWVtb25fY3R4OwotKwotKwlpZiAobmN0eC0+bW9uKSB7Ci0rCQl1ZGV2 X21vbml0b3JfdW5yZWYobmN0eC0+bW9uKTsKLSsJCW5jdHgtPm1vbiA9IE5VTEw7Ci0rCX0KLSsJ aWYgKG5jdHgtPnVkZXYpIHsKLSsJCXVkZXZfdW5yZWYobmN0eC0+dWRldik7Ci0rCQluY3R4LT51 ZGV2ID0gTlVMTDsKLSsJfQotK30KLSsKLSBjb25zdCBzdHJ1Y3QgenBjaW1vbl9vcHMgbnZtZW1v bl9vcHMgPSB7Ci0gCS5jb2xsZWN0X2FkYXB0ZXJfZGF0YSA9IG52bWVtb25fY29sbGVjdF9hZGFw dGVyX2RhdGEsCi0rCS5vcGVuX21vbml0b3IgPSBudm1lbW9uX29wZW5fbW9uaXRvciwKLSsJLmdl dF9tb25pdG9yX2ZkID0gbnZtZW1vbl9nZXRfbW9uaXRvcl9mZCwKLSsJLm1vbml0b3JfZmRfaGFu ZGxlID0gbnZtZW1vbl9tb25pdG9yX2ZkX2hhbmRsZSwKLSsJLmNsb3NlX21vbml0b3IgPSBudm1l bW9uX2Nsb3NlX21vbml0b3IsCi0gfTsKLWRpZmYgLS1naXQgYS96cGNpbW9uL252bWVtb24uaCBi L3pwY2ltb24vbnZtZW1vbi5oCi1pbmRleCAwNjU4YmNhYS4uYjVhMzExOTMgMTAwNjQ0Ci0tLS0g YS96cGNpbW9uL252bWVtb24uaAotKysrIGIvenBjaW1vbi9udm1lbW9uLmgKLUBAIC03LDcgKzcs MTIgQEAKLSAjaWZuZGVmIFpQQ0lNT05fTlZNRU1PTl9ICi0gI2RlZmluZSBaUENJTU9OX05WTUVN T05fSAotIAotLXN0cnVjdCBudm1lbW9uX2N0eCB7fTsKLSsjaW5jbHVkZSA8bGlidWRldi5oPgot KwotK3N0cnVjdCBudm1lbW9uX2N0eCB7Ci0rCXN0cnVjdCB1ZGV2ICp1ZGV2OwotKwlzdHJ1Y3Qg dWRldl9tb25pdG9yICptb247Ci0rfTsKLSAKLSBleHRlcm4gY29uc3Qgc3RydWN0IHpwY2ltb25f b3BzIG52bWVtb25fb3BzOwotICNlbmRpZiAvKiBaUENJTU9OX05WTUVNT05fSCAqLwotLS0gCi0y LjU1LjAKLQotCi1Gcm9tIGY5NmYwOWE1YzljN2JhODExMzJhYTZiYzI1ZGY3YWJmM2U5MDMxZjQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxl QGxpbnV4LmlibS5jb20+Ci1EYXRlOiBUaHUsIDMwIEFwciAyMDI2IDE1OjMzOjQzICswMjAwCi1T dWJqZWN0OiBbUEFUQ0ggMTkvMjNdIG52bWVtb246IGxpYnpwY2k6IFNraXAgU0NMUCBvbiBOVk1l cyB3aXRoIG5vbi1JQk0KLSBzdWJzeXN0ZW0gdmVuZG9yIElECi1NSU1FLVZlcnNpb246IDEuMAot Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBTQ0xQIFdyaXRlIEV2ZW50IERhdGEgQWN0aW9uIFF1YWxp ZmllciA0IGlzIG9ubHkgYXZhaWxhYmxlIGZvcgotTlZNZXMgd2l0aCBzdWJzeXN0ZW0gdmVuZG9y IElEIG1hdGNoaW5nIElCTS4gQWRkIGJvdGggSURzIHRvIHN0cnVjdAotenBjaV9kZXYgaW4gbGli enBjaS4gQWxzbyBhZGQgdGhlbSB0byB0aGUgbGlienBjaV9leGFtcGxlIG91dHB1dAotYW5kIGFk anVzdCBpdHMgb3V0cHV0IHRvIG11bHRpbGluZSB0byBoYW5kbGUgbW9yZSBkYXRhLgotCi1SZXZp ZXdlZC1ieTogSmFuIEjDtnBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgotU2lnbmVkLW9m Zi1ieTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotU2lnbmVkLW9m Zi1ieTogSmFuIEjDtnBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgotLS0tCi0gaW5jbHVk ZS9saWIvcGNpX2xpc3QuaCAgICB8ICA0ICsrKysKLSBsaWJ6cGNpL2xpYnpwY2lfZXhhbXBsZS5j IHwgMTIgKysrKysrKystLS0tCi0gbGlienBjaS9wY2lfbGlzdC5jICAgICAgICB8IDEwICsrKysr KysrKysKLSB6cGNpbW9uL252bWVtb24uYyAgICAgICAgIHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5n ZWQsIDIzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNs dWRlL2xpYi9wY2lfbGlzdC5oIGIvaW5jbHVkZS9saWIvcGNpX2xpc3QuaAotaW5kZXggMjI2YTgy ZDkuLjIwNGI3MTBkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saWIvcGNpX2xpc3QuaAotKysrIGIv aW5jbHVkZS9saWIvcGNpX2xpc3QuaAotQEAgLTE4LDYgKzE4LDcgQEAKLSAjaW5jbHVkZSAidXRp bF9saXN0LmgiCi0gCi0gI2RlZmluZSBQQ0lfQkRGX0xFTiAxMyAvKiBEREREOkJCOmRkLmZcMCAq LwotKyNkZWZpbmUgUENJX1ZFTkRPUl9JRF9JQk0gMHgxMDE0Ci0gCi0gZW51bSB6cGNpX3BmdCB7 Ci0gCVpQQ0lfUEZUX1VOQ0xBU1NJRklFRCA9IDB4MDAsCi1AQCAtNjcsNiArNjgsOSBAQCBzdHJ1 Y3QgenBjaV9kZXYgewotIAlib29sIHVpZF9pc191bmlxdWU7Ci0gCS8qIENvbmZpZ3VyYXRpb24g c3RhdGUgMCAtIFN0YW5kYnksIDEgQ29uZmlndXJlZCAqLwotIAlib29sIGNvbmY7Ci0rCS8qIENv bW1vbiBQQ0kgYXR0cmlidXRlcyAqLwotKwl1aW50MTZfdCBzdWJzeXN0ZW1fdmVuZG9yOwotKwl1 aW50MTZfdCBzdWJzeXN0ZW1fZGV2aWNlOwotIAotIAkvKiBBc3NvY2lhdGVkIG5ldGRldnMgaWYg YW55ICovCi0gCWludCBudW1fbmV0ZGV2czsKLWRpZmYgLS1naXQgYS9saWJ6cGNpL2xpYnpwY2lf ZXhhbXBsZS5jIGIvbGlienBjaS9saWJ6cGNpX2V4YW1wbGUuYwotaW5kZXggNTgzODQ2YjQuLmE5 Yjg1MDllIDEwMDY0NAotLS0tIGEvbGlienBjaS9saWJ6cGNpX2V4YW1wbGUuYwotKysrIGIvbGli enBjaS9saWJ6cGNpX2V4YW1wbGUuYwotQEAgLTEyLDEzICsxMiwxNyBAQCBzdGF0aWMgdm9pZCB6 cGNpX3ByaW50KHN0cnVjdCB6cGNpX2RldiAqemRldikKLSAJaW50IGk7Ci0gCi0gCWlmICghemRl di0+Y29uZikgewotLQkJcHJpbnRmKCJmaWQ6ICU4eCBhZGRyZXNzOiAlc1xuIiwgemRldi0+Zmlk LCBwY2lfYWRkcik7Ci0rCQlwcmludGYoImZpZDpcdCU0eCBhZGRyZXNzOiAlc1xuIiwgemRldi0+ ZmlkLCBwY2lfYWRkcik7Ci0gCX0gZWxzZSB7Ci0tCQlwcmludGYoImZpZDogJTh4IGFkZHJlc3M6 ICVzIHVpZDogJTR4JXMgcGNoaWQ6ICU0eCB2Zm46ICU0ZCBwb3J0OiAlMWQgcGZ0OiAlcyAiLAot KwkJcHJpbnRmKCJmaWQ6XHQlNHggYWRkcmVzczogJXMgdWlkOiAlNHglcyBwY2hpZDogJTR4IHZm bjogJTRkXG4iLAotIAkJICAgICAgIHpkZXYtPmZpZCwgcGNpX2FkZHIsIHpkZXYtPnVpZCwgKHpk ZXYtPnVpZF9pc191bmlxdWUpID8gIiAodW5pcXVlKSIgOiAiIiwKLS0JCSAgICAgICB6ZGV2LT5w Y2hpZCwgemRldi0+dmZuLCB6ZGV2LT5wb3J0LCB6cGNpX3BmdF9zdHIoemRldikpOwotKwkJICAg ICAgIHpkZXYtPnBjaGlkLCB6ZGV2LT52Zm4pOwotKwkJcHJpbnRmKCJcbiIpOwotKwkJcHJpbnRm KCJcdHBvcnQ6ICUxZCBwZnQ6ICVzIHN1YnN5c3RlbV9kZXZpY2U6ICU0eCBzdWJzeXN0ZW1fdmVu ZG9yOiAlNHhcbiIsCi0rCQkgICAgICAgemRldi0+cG9ydCwgenBjaV9wZnRfc3RyKHpkZXYpLCB6 ZGV2LT5zdWJzeXN0ZW1fZGV2aWNlLAotKwkJICAgICAgIHpkZXYtPnN1YnN5c3RlbV92ZW5kb3Ip OwotIAkJaWYgKHpkZXYtPm51bV9uZXRkZXZzKSB7Ci0tCQkJcHJpbnRmKCJuZXRkZXZzOiAiKTsK LSsJCQlwcmludGYoIlx0bmV0ZGV2czogIik7Ci0gCQkJZm9yIChpID0gMDsgaSA8IHpkZXYtPm51 bV9uZXRkZXZzOyBpKyspIHsKLSAJCQkJcHJpbnRmKCIlcyAoJXMpIiwgemRldi0+bmV0ZGV2c1tp XS5uYW1lLAotIAkJCQkgICAgICAgenBjaV9vcGVyc3RhdGVfc3RyKHpkZXYtPm5ldGRldnNbaV0u b3BlcnN0YXRlKSk7Ci1kaWZmIC0tZ2l0IGEvbGlienBjaS9wY2lfbGlzdC5jIGIvbGlienBjaS9w Y2lfbGlzdC5jCi1pbmRleCBlODFiYjRiOC4uYTEyNWJmNzEgMTAwNjQ0Ci0tLS0gYS9saWJ6cGNp L3BjaV9saXN0LmMKLSsrKyBiL2xpYnpwY2kvcGNpX2xpc3QuYwotQEAgLTI2Miw2ICsyNjIsMTYg QEAgc3RhdGljIGludCB6cGNpX3BvcHVsYXRlX2Zyb21fZGV2X2RpcihzdHJ1Y3QgenBjaV9kZXYg KnpkZXYpCi0gCQlnb3RvIG91dF9wYXRoOwotIAl6ZGV2LT5wZnQgPSB2YWw7Ci0gCi0rCXJjID0g dXRpbF9maWxlX3JlYWRfaSgmdmFsLCAxNiwgIiVzL3N1YnN5c3RlbV9kZXZpY2UiLCBwYXRoKTsK LSsJaWYgKHJjKQotKwkJZ290byBvdXRfcGF0aDsKLSsJemRldi0+c3Vic3lzdGVtX2RldmljZSA9 IHZhbDsKLSsKLSsJcmMgPSB1dGlsX2ZpbGVfcmVhZF9pKCZ2YWwsIDE2LCAiJXMvc3Vic3lzdGVt X3ZlbmRvciIsIHBhdGgpOwotKwlpZiAocmMpCi0rCQlnb3RvIG91dF9wYXRoOwotKwl6ZGV2LT5z dWJzeXN0ZW1fdmVuZG9yID0gdmFsOwotKwotIAlpZiAodXRpbF9wYXRoX2lzX3JlYWRhYmxlKCIl cy9uZXQiLCBwYXRoKSkgewotIAkJcmMgPSB6cGNpX3BvcHVsYXRlX25ldGRldmljZXMoemRldiwg cGF0aCk7Ci0gCQlpZiAocmMpCi1kaWZmIC0tZ2l0IGEvenBjaW1vbi9udm1lbW9uLmMgYi96cGNp bW9uL252bWVtb24uYwotaW5kZXggMTRmMDg4YzAuLmJkNWVmMWE3IDEwMDY0NAotLS0tIGEvenBj aW1vbi9udm1lbW9uLmMKLSsrKyBiL3pwY2ltb24vbnZtZW1vbi5jCi1AQCAtMTQ0LDcgKzE0NCw3 IEBAIHN0YXRpYyBpbnQgc2NscF9pc3N1ZV9udm1lX3NtYXJ0X3JlcG9ydChzdHJ1Y3QgenBjaV9k ZXYgKnpkZXYsIGNvbnN0IHVpbnQ4X3QgKnNtCi0gCWNoYXIgKnBjaV9hZGRyOwotIAlpbnQgcmM7 Ci0gCi0tCWlmICh6ZGV2LT5wZnQgIT0gWlBDSV9QRlRfTlZNRSkKLSsJaWYgKHpkZXYtPnBmdCAh PSBaUENJX1BGVF9OVk1FIHx8IHpkZXYtPnN1YnN5c3RlbV92ZW5kb3IgIT0gUENJX1ZFTkRPUl9J RF9JQk0pCi0gCQlyZXR1cm4gLUVOT1RTVVA7Ci0gCXBjaV9hZGRyID0genBjaV9wY2lfYWRkcih6 ZGV2KTsKLSAJcmMgPSB6cGNpX3NjbHBfaXNzdWVfYWN0aW9uKHBjaV9hZGRyLCBTQ0xQX0VSUk5P VElGWV9BUV9OVk1FX1NNQVJUX0RBVEEsCi0tLSAKLTIuNTUuMAotCi0KLUZyb20gMWRhMzI4OTIx YjQxOTQ0NWQyNGY1NjllN2NmODUwODJiZWM5YzY4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLURhdGU6IEZy aSwgMjYgSnVuIDIwMjYgMTU6MTM6MjIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yM10gZGJn aW5mby5zaDogTGV0IHpwY2ltb24gbG9nIGJvdGggb3B0aWNhbCBtb2R1bGUgYW5kCi0gU01BUlQg ZGF0YQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1BZGQgenBjaW1vbiBk YXRhIGNvbGxlY3Rpb24gd2l0aCBib3RoIFNNQVJUIGxvZyBhbmQgb3B0aWNhbCBtb2R1bGUgZGF0 YS4KLURvIHNvIGluIHRoZSBaIGRldmljZSBzdWJzeXN0ZW0gY29tbWFuZHMgc2VjdGlvbiB0byBh Y2NvdW50IGZvciB0aGUgZmFjdAotdGhhdCB6cGNpbW9uIGlzIG5vIGxvbmdlciBuZXR3b3JrIHNw ZWNpZmljLiBBdCB0aGUgc2FtZSB0aW1lIGtlZXAgdGhlCi1leGlzdGluZyBvcHRpY3Ntb24gaW52 b2NhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aGVuIGV4ZWN1dGVkIG9uIHN5c3RlbXMKLXdpdGhv dXQgenBjaW1vbi4KLQotUmV2aWV3ZWQtYnk6IEphbiBIw7ZwcG5lciA8aG9lcHBuZXJAbGludXgu aWJtLmNvbT4KLVJldmlld2VkLWJ5OiBKw7ZybiBTaWdsZW4gPHNpZ2xlbkBkZS5pYm0uY29tPgot U2lnbmVkLW9mZi1ieTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgot U2lnbmVkLW9mZi1ieTogSmFuIEjDtnBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgotLS0t Ci0gc2NyaXB0cy9kYmdpbmZvLnNoIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspCi0KLWRpZmYgLS1naXQgYS9zY3JpcHRzL2RiZ2luZm8uc2ggYi9zY3JpcHRzL2RiZ2luZm8u c2gKLWluZGV4IGVjNjIyN2YxLi5hNWUzODY2ZSAxMDA3NTUKLS0tLSBhL3NjcmlwdHMvZGJnaW5m by5zaAotKysrIGIvc2NyaXB0cy9kYmdpbmZvLnNoCi1AQCAtNTE1LDYgKzUxNSw3IEBAIENNRFM9 IiR7Q01EU31cCi0gICA6bHNwY2kgLXZ2dlwKLSAgIDpsc3RhcGVcCi0gICA6c21jX2RiZ1wKLSsg IDp6cGNpbW9uIC0tbW9kdWxlLWluZm8gLS1zbWFydC1sb2ctcmF3XAotICAgIgotIAotICMgYmxv Y2sgZGV2aWNlIGFuZCBvdGhlciBzY3NpIGRldmljZSBjb21tYW5kcyAoaW4gbm9uIGFscGhhYmV0 aWNhbCBvcmRlcikKLS0tIAotMi41NS4wCi0KLQotRnJvbSA3NTg2YTFhZDU5M2Y5OWJkN2ViMmRh ZWMzOWYwMWQ0YWVlZTNjZjA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmlrbGFz IFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotRGF0ZTogVGh1LCAyMyBKdWwgMjAy NiAxNjo1NTo1MCArMDIwMAotU3ViamVjdDogW1BBVENIIDIxLzIzXSB6cGNpbW9uOiBBZGQgbWlz c2luZyBpbmNsdWRlIGZvciBfX3BhY2tlZCBhdHRyaWJ1dGUKLU1JTUUtVmVyc2lvbjogMS4wCi1D b250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDhiaXQKLQotVGhlIF9fcGFja2VkIGF0dHJpYnV0ZSBpcyB1c2VkIHdpdGhvdXQg aW5jbHVkaW5nIHRoZSBuZWNlc3NhcnkKLXp0X2NvbW1vbi5oIGhlYWRlciwgYWRkIGl0LiBOb3Rl IHRoYXQgbHVja2lseSB0aGUgc3RydWN0IGFzIGl0IGN1cnJlbnRseQotZXhpc3RzIGRvZXNuJ3Qg YWN0dWFsbHkgcmVxdWlyZWQgX19wYWNrZWQgYXMgdGhlIG5hdHVyYWwgYWxpZ25tZW50Ci1sZWF2 ZXMgbm8gaG9sZXMuIFN0aWxsIGlmIGluIHRoZSBmdXR1cmUgdGhlIHJlc2VydmVkIGZpZWxkIGlz IHNwbGl0IHVwCi1pdCB3b3VsZCBuZWVkIGl0IGFuZCB0aGlzIGtlZXBzIGl0IGNvbnNpc3RlbnQg d2l0aCB0aGUga2VybmVsCi1kZWNsYXJhdGlvbi4KLQotUmV2aWV3ZWQtYnk6IEphbiBIw7ZwcG5l ciA8aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE5pa2xhcyBTY2huZWxs ZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBIw7ZwcG5lciA8 aG9lcHBuZXJAbGludXguaWJtLmNvbT4KLS0tLQotIHpwY2ltb24vb3B0aWNzX3NjbHAuaCB8IDEg KwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvenBjaW1v bi9vcHRpY3Nfc2NscC5oIGIvenBjaW1vbi9vcHRpY3Nfc2NscC5oCi1pbmRleCBiMjExZTlhYy4u NGIyOTViYzUgMTAwNjQ0Ci0tLS0gYS96cGNpbW9uL29wdGljc19zY2xwLmgKLSsrKyBiL3pwY2lt b24vb3B0aWNzX3NjbHAuaAotQEAgLTEsNiArMSw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgot IAotICNpbmNsdWRlICJsaWIvcGNpX2xpc3QuaCIKLSsjaW5jbHVkZSAibGliL3p0X2NvbW1vbi5o IgotIAotICNpbmNsdWRlICJvcHRpY3NfaW5mby5oIgotIAotLS0gCi0yLjU1LjAKLQotCi1Gcm9t IDBmMGU4Y2YzM2I4MDdjYWViYjlkOGU4YTY1MmMwZTczMjZlYTQ4ZDcgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+ Ci1EYXRlOiBUaHUsIDIzIEp1bCAyMDI2IDE2OjU1OjUzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0gg MjIvMjNdIHpwY2ltb246IE1ha2Ugb3B0aWNzX2xvc19pbXBsZW1lbnRlKCkgc3RhdGljCi1NSU1F LVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1D b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVNwYXJzZSBub3RlZCB0aGF0IG9wdGlj c19sb3NfaW1wbGVtZW50ZSgpIGNhbiBiZSBzdGF0aWMuIE1ha2UgaXQgc28uCi0KLVJldmlld2Vk LWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5 OiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1TaWduZWQtb2ZmLWJ5 OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci0tLS0KLSB6cGNpbW9uL29w dGljc19pbmZvLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS96cGNpbW9uL29wdGljc19pbmZvLmMgYi96cGNpbW9u L29wdGljc19pbmZvLmMKLWluZGV4IDAwZDhkNzIzLi5iM2JjMzUzNSAxMDA2NDQKLS0tLSBhL3pw Y2ltb24vb3B0aWNzX2luZm8uYwotKysrIGIvenBjaW1vbi9vcHRpY3NfaW5mby5jCi1AQCAtNTMs NyArNTMsNyBAQCBlbnVtIG9wdGljc190eXBlIG9wdGljc190eXBlKHN0cnVjdCBvcHRpY3MgKm9p KQotIAl9OwotIH0KLSAKLS1ib29sIG9wdGljc19sb3NfaW1wbGVtZW50ZWQoc3RydWN0IG9wdGlj cyAqb2kpCi0rc3RhdGljIGJvb2wgb3B0aWNzX2xvc19pbXBsZW1lbnRlZChzdHJ1Y3Qgb3B0aWNz ICpvaSkKLSB7Ci0gCWVudW0gb3B0aWNzX3R5cGUgdHlwZSA9IG9wdGljc190eXBlKG9pKTsKLSAJ dWludDhfdCBpbXBsZW1lbnRlZDsKLS0tIAotMi41NS4wCi0KLQotRnJvbSA5MTEyM2U1ZDQ1ZWQ5 ZmQyMjdkNmU5YzU5MGVjODI0ODRkYmI3YmM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogTmlrbGFzIFNjaG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgotRGF0ZTogVGh1LCAy MyBKdWwgMjAyNiAxNjo1NTo1NCArMDIwMAotU3ViamVjdDogW1BBVENIIDIzLzIzXSBsaWIvenRf Y29tbW9uLmg6IHpwY2ltb246IEFkZCBfX2ZvcmNlIGFuZCB1c2UgaXQgdG8KLSBhbm5vdGF0ZSBs ZTMydG9oKCkgY29udmVyc2lvbnMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK LQotV2hlbiB1c2luZyBzcGFyc2Ugb24genBjaW1vbiBzZXZlcmFsIHdhcm5pbmdzIGxpa2UgdGhl IG9uZSBiZWxvdyBhcmUKLWdlbmVyYXRlZDoKLQotICB3YXJuaW5nOiBpbmNvcnJlY3QgdHlwZSBp biBhcmd1bWVudCAxIChkaWZmZXJlbnQgYmFzZSB0eXBlcykKLSAgICAgZXhwZWN0ZWQgdW5zaWdu ZWQgaW50IFt1c2VydHlwZV0gX19ic3gKLSAgICAgZ290IHJlc3RyaWN0ZWQgX19sZTMyIFt1c2Vy dHlwZV0gd2FybmluZ190ZW1wX3RpbWUKLQotVGhpcyBpcyBiZWNhdXNlIHNldmVyYWwgbWVtYmVy cyBpbiBzdHJ1Y3QgbnZtZV9zbWFydF9sb2cgYXJlIG1hcmtlZCBhcwotX19sZTMyLiBUaGVzZSBt ZW1iZXJzIGFyZSBjb3JyZWN0bHkgY29udmVydGVkIHRvIGhvc3QgZW5kaWFubmVzcyBiZWZvcmUK LXVzZSB2aWEgbGUzMnRvaCgpIHJlc3BlY3RpdmVseSBsZTE2dG9oKCkuIFNpbmNlIHRoZXNlIGZ1 bmN0aW9ucyB0YWtlCi10aGVpciBwYXJhbWV0ZXJzIGFzIHBsYWluIHVpbnQzMl90IG9yIHVpbnQx Nl90IGhvd2V2ZXIgdGhlIGltcGxpY2l0Ci1jb252ZXJzaW9uIHRyaWdnZXJzIHRoZSBhYm92ZSB3 YXJuaW5nLiBGaXggdGhpcyBieSBhZGRpbmcgdGhlIF9fZm9yY2UKLWF0dHJpYnV0ZSBhbmQgdXNp bmcgaXQgdG8gbWFyayB0eXBlIGNvbnZlcnNpb25zIGluIHRoZSBsZVhYdG9oKCkgY2FsbHMuCi0K LVJldmlld2VkLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci1TaWdu ZWQtb2ZmLWJ5OiBOaWtsYXMgU2NobmVsbGUgPHNjaG5lbGxlQGxpbnV4LmlibS5jb20+Ci1TaWdu ZWQtb2ZmLWJ5OiBKYW4gSMO2cHBuZXIgPGhvZXBwbmVyQGxpbnV4LmlibS5jb20+Ci0tLS0KLSBp bmNsdWRlL2xpYi96dF9jb21tb24uaCB8ICA1ICsrKysrCi0genBjaW1vbi9udm1lbW9uLmMgICAg ICAgfCAyNCArKysrKysrKysrKysrKystLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIwIGlu c2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi96 dF9jb21tb24uaCBiL2luY2x1ZGUvbGliL3p0X2NvbW1vbi5oCi1pbmRleCBjNTM2M2ZlMi4uNzhm MmE5YjggMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpYi96dF9jb21tb24uaAotKysrIGIvaW5jbHVk ZS9saWIvenRfY29tbW9uLmgKLUBAIC03Miw2ICs3MiwxMSBAQAotICNkZWZpbmUgX19zZWN0aW9u KHgpIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCN4KSkpCi0gI2RlZmluZSBfX25vaW5saW5l IF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpCi0gI2RlZmluZSBfX2JpZ19lbmRpYW4KLSsj aWZkZWYgX19DSEVDS0VSX18KLSsjIGRlZmluZSBfX2ZvcmNlIF9fYXR0cmlidXRlX18oKGZvcmNl KSkKLSsjZWxzZQotKyMgZGVmaW5lIF9fZm9yY2UKLSsjZW5kaWYKLSAvKiBUaGUgTGludXgga2Vy bmVsIChpbiBzdGRkZWYuaCkgYW5kIGdsaWJjIChzeXMvY2RlZnMuaCkgZGVmaW5lCi0gICogX19h bHdheXNfaW5saW5lLiBUaGVyZWZvcmUgdW5kZWZpbmUgaXQgZmlyc3QgdG8gYWxsb3cgdGhlIGhl YWRlcnMKLSAgKiB0byBiZSBpbmNsdWRlZCBmaXJzdC4KLWRpZmYgLS1naXQgYS96cGNpbW9uL252 bWVtb24uYyBiL3pwY2ltb24vbnZtZW1vbi5jCi1pbmRleCBiZDVlZjFhNy4uMWU0YzFhYTggMTAw NjQ0Ci0tLS0gYS96cGNpbW9uL252bWVtb24uYwotKysrIGIvenBjaW1vbi9udm1lbW9uLmMKLUBA IC0yMCw2ICsyMCw3IEBACi0gI2luY2x1ZGUgImxpYi9wY2lfbGlzdC5oIgotICNpbmNsdWRlICJs aWIvcGNpX3NjbHAuaCIKLSAjaW5jbHVkZSAibGliL3V0aWxfZm10LmgiCi0rI2luY2x1ZGUgImxp Yi96dF9jb21tb24uaCIKLSAKLSAjaW5jbHVkZSAibnZtZW1vbi5oIgotICNpbmNsdWRlICJ6cGNp bW9uLmgiCi1AQCAtMTA4LDE5ICsxMDksMjQgQEAgc3RhdGljIHZvaWQgbnZtZV9qc29uX3ByaW50 X3NtYXJ0X2xvZyhzdHJ1Y3QgenBjaW1vbl9jdHggKmN0eCwgc3RydWN0IG52bWVfc21hcnQKLSAJ dXRpbF9mbXRfcGFpcihGTVRfREVGQVVMVCwgIm1lZGlhX2Vycm9ycyIsICIlcyIsIHUxMjhfbnVt X2J1Zik7Ci0gCW52bWVfdTEyOF90b19qc29uX3ZhbChudm1lX2xlMTI4X3RvX2NwdShsb2ctPm51 bV9lcnJfbG9nX2VudHJpZXMpLCB1MTI4X251bV9idWYpOwotIAl1dGlsX2ZtdF9wYWlyKEZNVF9E RUZBVUxULCAibnVtX2Vycl9sb2dfZW50cmllcyIsICIlcyIsIHUxMjhfbnVtX2J1Zik7Ci0tCXV0 aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQsICJ3YXJuaW5nX3RlbXBfdGltZSIsICIlZCIsIGxlMzJ0 b2gobG9nLT53YXJuaW5nX3RlbXBfdGltZSkpOwotLQl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxU LCAiY3JpdGljYWxfY29tcF90aW1lIiwgIiVkIiwgbGUzMnRvaChsb2ctPmNyaXRpY2FsX2NvbXBf dGltZSkpOwotLQl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAidGVtcGVyYXR1cmVfc2Vuc29y XzEiLCAiJWQiLCBsZTE2dG9oKGxvZy0+dGVtcF9zZW5zb3JbMF0pKTsKLS0JdXRpbF9mbXRfcGFp cihGTVRfREVGQVVMVCwgInRlbXBlcmF0dXJlX3NlbnNvcl8yIiwgIiVkIiwgbGUxNnRvaChsb2ct PnRlbXBfc2Vuc29yWzFdKSk7Ci0tCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQsICJ0ZW1wZXJh dHVyZV9zZW5zb3JfMyIsICIlZCIsIGxlMTZ0b2gobG9nLT50ZW1wX3NlbnNvclsyXSkpOwotKwl1 dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAid2FybmluZ190ZW1wX3RpbWUiLCAiJWQiLAotKwkJ ICAgICAgbGUzMnRvaCgoX19mb3JjZSB1aW50MzJfdClsb2ctPndhcm5pbmdfdGVtcF90aW1lKSk7 Ci0rCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQsICJjcml0aWNhbF9jb21wX3RpbWUiLCAiJWQi LAotKwkJICAgICAgbGUzMnRvaCgoX19mb3JjZSB1aW50MzJfdClsb2ctPmNyaXRpY2FsX2NvbXBf dGltZSkpOwotKwl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAidGVtcGVyYXR1cmVfc2Vuc29y XzEiLCAiJWQiLAotKwkJICAgICAgbGUxNnRvaCgoX19mb3JjZSB1aW50MTZfdClsb2ctPnRlbXBf c2Vuc29yWzBdKSk7Ci0rCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFVTFQsICJ0ZW1wZXJhdHVyZV9z ZW5zb3JfMiIsICIlZCIsCi0rCQkgICAgICBsZTE2dG9oKChfX2ZvcmNlIHVpbnQxNl90KWxvZy0+ dGVtcF9zZW5zb3JbMV0pKTsKLSsJdXRpbF9mbXRfcGFpcihGTVRfREVGQVVMVCwgInRlbXBlcmF0 dXJlX3NlbnNvcl8zIiwgIiVkIiwKLSsJCSAgICAgIGxlMTZ0b2goKF9fZm9yY2UgdWludDE2X3Qp bG9nLT50ZW1wX3NlbnNvclsyXSkpOwotIAl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZBVUxULCAidGht X3RlbXAxX3RyYW5zX2NvdW50IiwgIiVkIiwKLS0JCSAgICAgIGxlMzJ0b2gobG9nLT50aG1fdGVt cDFfdHJhbnNfY291bnQpKTsKLSsJCSAgICAgIGxlMzJ0b2goKF9fZm9yY2UgdWludDMyX3QpbG9n LT50aG1fdGVtcDFfdHJhbnNfY291bnQpKTsKLSAJdXRpbF9mbXRfcGFpcihGTVRfREVGQVVMVCwg InRobV90ZW1wMl90cmFuc19jb3VudCIsICIlZCIsCi0tCQkgICAgICBsZTMydG9oKGxvZy0+dGht X3RlbXAyX3RyYW5zX2NvdW50KSk7Ci0rCQkgICAgICBsZTMydG9oKChfX2ZvcmNlIHVpbnQzMl90 KWxvZy0+dGhtX3RlbXAyX3RyYW5zX2NvdW50KSk7Ci0gCXV0aWxfZm10X3BhaXIoRk1UX0RFRkFV TFQsICJ0aG1fdGVtcDFfdG90YWxfdGltZSIsICIlZCIsCi0tCQkgICAgICBsZTMydG9oKGxvZy0+ dGhtX3RlbXAxX3RvdGFsX3RpbWUpKTsKLSsJCSAgICAgIGxlMzJ0b2goKF9fZm9yY2UgdWludDMy X3QpbG9nLT50aG1fdGVtcDFfdG90YWxfdGltZSkpOwotIAl1dGlsX2ZtdF9wYWlyKEZNVF9ERUZB VUxULCAidGhtX3RlbXAyX3RvdGFsX3RpbWUiLCAiJWQiLAotLQkJICAgICAgbGUzMnRvaChsb2ct PnRobV90ZW1wMl90b3RhbF90aW1lKSk7Ci0rCQkgICAgICBsZTMydG9oKChfX2ZvcmNlIHVpbnQz Ml90KWxvZy0+dGhtX3RlbXAyX3RvdGFsX3RpbWUpKTsKLSAJdXRpbF9mbXRfb2JqX2VuZCgpOyAv KiBzbWFydC1sb2cgKi8KLSAKLSAJaWYgKGN0eC0+b3B0cy5zbWFydF9ibG9iKQotLS0gCi0yLjU1 LjAKLQoKZGlmZiAtLWdpdCBhL3MzOTB1dGlscy0yLjQ0LjAtZmVkb3JhLnBhdGNoIGIvczM5MHV0 aWxzLTIuNDQuMC1mZWRvcmEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3MzOTB1dGlscy0yLjQ0LjAtZmVkb3JhLnBh dGNoCgpkaWZmIC0tZ2l0IGEvczM5MHV0aWxzLnNwZWMgYi9zMzkwdXRpbHMuc3BlYwppbmRleCBk YzQ4MDI3Li4xMWRiY2M0IDEwMDY0NAotLS0gYS9zMzkwdXRpbHMuc3BlYworKysgYi9zMzkwdXRp bHMuc3BlYwpAQCAtMTYsOCArMTYsOCBAQAogCiBOYW1lOiAgICAgICAgICAgczM5MHV0aWxzCiBT dW1tYXJ5OiAgICAgICAgVXRpbGl0aWVzIGFuZCBkYWVtb25zIGZvciBJQk0geiBTeXN0ZW1zCi1W ZXJzaW9uOiAgICAgICAgMi40My4xCi1SZWxlYXNlOiAgICAgICAgMiV7P2Rpc3R9CitWZXJzaW9u OiAgICAgICAgMi40NC4wCitSZWxlYXNlOiAgICAgICAgMSV7P2Rpc3R9CiBFcG9jaDogICAgICAg ICAgMgogIyBNSVQgY292ZXJzIG5lYXJseSBhbGwgdGhlIGZpbGVzLCBleGNlcHQgaW5pdCBmaWxl cyAoTEdQTC0yLjEtb3ItbGF0ZXIpCiAjCkBAIC03OCw3ICs3OCw3IEBAIFBhdGNoMDogICAgICAg ICBzMzkwLXRvb2xzLXppcGwtaW52ZXJ0LXNjcmlwdC1vcHRpb25zLnBhdGNoCiBQYXRjaDE6ICAg ICAgICAgczM5MC10b29scy16aXBsLWJsc2NmZy1ycG0tbnZyLXNvcnQucGF0Y2gKIAogIyB1cHN0 cmVhbSBmaXhlcy91cGRhdGVzCi1QYXRjaDEwMDogICAgICAgczM5MHV0aWxzLSV7dmVyc2lvbn0t ZmVkb3JhLnBhdGNoCisjUGF0Y2gxMDA6ICAgICAgIHMzOTB1dGlscy0lJXt2ZXJzaW9ufS1mZWRv cmEucGF0Y2gKIAogIyBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQ2hhbmdlcy9FbmNv dXJhZ2VJNjg2TGVhZlJlbW92YWwKIEV4Y2x1ZGVBcmNoOiAgICAle2l4ODZ9CkBAIC0xMDQsNyAr MTA0LDYgQEAgUmVxdWlyZXM6ICAgICAgIHMzOTB1dGlscy16aW9tb24gPSAle2Vwb2NofTole3Zl cnNpb259LSV7cmVsZWFzZX0KIFJlcXVpcmVzOiAgICAgICBzMzkwdXRpbHMtc2UtZGF0YSA9ICV7 ZXBvY2h9OiV7dmVyc2lvbn0tJXtyZWxlYXNlfQogJWVuZGlmCiAKLUJ1aWxkUmVxdWlyZXM6ICBn aXQKIEJ1aWxkUmVxdWlyZXM6ICBtYWtlCiBCdWlsZFJlcXVpcmVzOiAgZ2NjLWMrKwogQnVpbGRS ZXF1aXJlczogIGdsaWIyLWRldmVsCkBAIC0xMjUsOCArMTI0LDcgQEAgVGhlIHMzOTB1dGlscyBw YWNrYWdlcyBjb250YWluIGEgc2V0IG9mIHVzZXIgc3BhY2UgdXRpbGl0aWVzIHRoYXQgc2hvdWxk IHRvCiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIHpTZXJpZXMgKHMzOTApIExpbnV4IGtlcm5l bCBhbmQgZGV2aWNlIGRyaXZlcnMuCiAKICVwcmVwCi0jIGdpdF9hbSBtZXRob2QgbmVlZGVkIGZv ciB0aGUgcGF0Y2hzZXQgd2l0aCBmaWxlIHJlbmFtaW5ncwotJWF1dG9zZXR1cCAtbiBzMzkwLXRv b2xzLSV7dmVyc2lvbn0gLXAxIC1TIGdpdF9hbQorJWF1dG9zZXR1cCAtbiBzMzkwLXRvb2xzLSV7 dmVyc2lvbn0gLXAxCiAKICVpZiAwJXs/cmhlbH0KIHB1c2hkIHJ1c3QKQEAgLTExNDcsNiArMTE0 NSw5IEBAIFVzZXItc3BhY2UgZGV2ZWxvcG1lbnQgZmlsZXMgZm9yIHRoZSBzMzkwL3MzOTB4IGFy Y2hpdGVjdHVyZS4KIAogCiAlY2hhbmdlbG9nCisqIEZyaSBKdWwgMzEgMjAyNiBEYW4gSG9yw6Fr IDxkYW5bYXRdZGFubnkuY3o+IC0gMjoyLjQ0LjAtMQorLSByZWJhc2VkIHRvIDIuNDQuMCAocmhi eiMyNTA5ODA3KQorCiAqIE1vbiBKdWwgMjcgMjAyNiBEYW4gSG9yw6FrIDxkYW5bYXRdZGFubnku Y3o+IC0gMjoyLjQzLjEtMgogLSBpbmNsdWRlIHpwY2ltb24gZmVhdHVyZQogCgpkaWZmIC0tZ2l0 IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggNGVmNGI5NC4uNTViODc2OCAxMDA2NDQKLS0tIGEv c291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAotU0hBNTEyIChzMzkwLXRvb2xz LTIuNDMuMS50YXIuZ3opID0gNGUzODExYTQ4MTNhOGI1YmEzMDdhNzk2ODYzMDJjMDA1MzFkYTAy YjFmODNjNWQ5Y2NiYzI4ZjZkNTE1OWExOGVhY2Q1NTgxYmNhNTZhNTg5NDdkZGY2ODgxMTYyMzFk YzE0MzM4MDg1ZDQwMjMxNTM5Y2U5Nzg1OGJhMDA2MDUKLVNIQTUxMiAoczM5MC10b29scy0yLjQz LjEtcnVzdC12ZW5kb3IudGFyLnh6KSA9IGU3MzU3MzAzZmIyMjQzYjIzMDM0ZGQxNmQ3YzRlZjY0 MWFiMTQxYWQ0YjMzMDFiNzI0NWYyYzE4ODZkYjM0MTNhN2EwM2U3YWM3MTg1NDk1MzJmM2NhNTBk YTNmZGQwNDA4ZTk5YzMyNTRiNWFhMWJhZDg5YzVjZmU0ZmY4NDJjCitTSEE1MTIgKHMzOTAtdG9v bHMtMi40NC4wLnRhci5neikgPSA2ZjJmN2ZhNDU1NzNiMWEyNTE1YzRlYTE0M2ZmMDg3NzcxMTcx MzcyNGM3MzdmOWFhYTRmODUzZjYxNDJmMjE1NjI4YzEwZDE4MjdmOTRjZjU0YTUwYzFmZWM3NTdm ZDM3MTBmM2U0YjYwZjYxMjViMGVlOTUyMDAyZTQzZGJmNworU0hBNTEyIChzMzkwLXRvb2xzLTIu NDQuMC1ydXN0LXZlbmRvci50YXIueHopID0gN2MwNzA4YTY1OTNkOWEyZmYzMDdlOWU0NmM2M2Yx OTE1MzIxNzBkYjQzZjdmNWU0ZjY4YzY0NjczZGJiN2YxZGFlNTY2M2Y2MDIzNmQ1NGIwYzY3ZDli YmMzYjUyM2FlZGNkZjg3NDczNzdlNjNmODJmMzc2NzU4NmZhM2U4YzQK