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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: - Upgrade to the FSF GDB snapshot: 7.0.50.20100121 Date: Thu, 23 Jul 2026 18:29:21 GMT Message-ID: <178483136147.1.8235045396195343621.rpms-gdb-79563d6f81f0@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 79563d6f81f0d52d39f1d87f28aef92e56be9188 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogNzk1NjNkNmY4MWYwZDUyZDM5ZjFkODdmMjhhZWY5MmU1NmJlOTE4OAog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDEtMjFUMTY6MDk6MTErMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzc4NDEvLTI0NDkgaW4gMTQgZmlsZShzKQogICAgICAgICAgICBV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzc5NTYzZDZm ODFmMGQ1MmQzOWYxZDg3ZjI4YWVmOTJlNTZiZTkxODg/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAg ICAgICAgICAgIExvZzoKICAgICAgICAgICAgLSBVcGdyYWRlIHRvIHRoZSBGU0YgR0RCIHNuYXBz aG90OiA3LjAuNTAuMjAxMDAxMjEKLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMyBjb21t aXQ6CiAgICBjY2RlMTUzMDQ3OWNjOTY2Mzc0MzUxMDM4MDU3YjlkZGE5MGFhMjUxCi0gW2V4cHIt Y3VtdWxhdGl2ZV0gQXJjaGVyIGJyYW5jaCBpcyBub3cgaW5jbHVkZWQuCgotLS0KZGlmZiAtLWdp dCBhLy5jdnNpZ25vcmUgYi8uY3ZzaWdub3JlCmluZGV4IGE1YzM5MTUuLjFjYWZmZDQgMTAwNjQ0 Ci0tLSBhLy5jdnNpZ25vcmUKKysrIGIvLmN2c2lnbm9yZQpAQCAtMSwyICsxLDIgQEAKLWdkYi03 LjAuNTAuMjAxMDAxMTgudGFyLmJ6MgorZ2RiLTcuMC41MC4yMDEwMDEyMS50YXIuYnoyCiBsaWJz dGRjKystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVh ZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gK aW5kZXggNDMzOTQ0ZC4uYmQ4OWRkNSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAw NTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTEx LDExICsxMSwxMSBAQAogCiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUgT3B0aW9ucyk6IERv Y3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9j L2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZG9jL2dkYi50ZXhp bmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAwMzoyMDowNC4wMDAw MDAwMDAgKzAxMDAKLUBAIC05OTUsNiArOTk1LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdz IGVudGlyZSBzeW1ib2wgdGEKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEwLTAxLTIxIDE1OjExOjA5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTAxLTIxIDE1OjEzOjAyLjAw MDAwMDAwMCArMDEwMAorQEAgLTk5Nyw2ICs5OTcsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxl J3MgZW50aXJlIHN5bWJvbCB0YQogIHRoZSBkZWZhdWx0LCB3aGljaCBpcyB0byByZWFkIGl0IGlu Y3JlbWVudGFsbHkgYXMgaXQgaXMgbmVlZGVkLgogIFRoaXMgbWFrZXMgc3RhcnR1cCBzbG93ZXIs IGJ1dCBtYWtlcyBmdXR1cmUgb3BlcmF0aW9ucyBmYXN0ZXIuCiAgCkBAIC0yOCwxMCArMjgsMTAg QEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBlbmQg dGFibGUKICAKICBAbm9kZSBNb2RlIE9wdGlvbnMKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tYWluLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL21haW4uYwkyMDEwLTAxLTE1 IDAzOjE4OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL21h aW4uYwkyMDEwLTAxLTE1IDAzOjIwOjA0LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDEtMjEgMTU6MTE6MTguMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbWFpbi5jCTIwMTAtMDEtMjEgMTU6MTM6 MDIuMDAwMDAwMDAwICswMTAwCiBAQCAtMzgyLDYgKzM4Miw3IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCiAgICAgICAgeyJ4ZGIiLCBub19hcmd1bWVudCwgJnhkYl9jb21tYW5kcywgMX0s CiAgICAgICAgeyJkYngiLCBub19hcmd1bWVudCwgJmRieF9jb21tYW5kcywgMX0sCkBAIC00MCw3 ICs0MCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWluLmMKICAgICAgICB7 InIiLCBub19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKICAgICAgICB7InF1 aWV0Iiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0sCiAgICAgICAgeyJxIiwgbm9fYXJndW1lbnQs ICZxdWlldCwgMX0sCi1AQCAtMTAzMCw2ICsxMDMxLDcgQEAgT3B0aW9uczpcblxuXAorQEAgLTEw MzMsNiArMTAzNCw3IEBAIE9wdGlvbnM6XG5cblwKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwK ICAgIC0tcXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIgb24gc3Rh cnR1cC5cblwKICAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBmaWxlcyBv biBmaXJzdCBhY2Nlc3MuXG5cCkBAIC00OCwxMCArNDgsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL21haW4uYwogICIpLCBzdHJlYW0pOwogICAgZnB1dHNfdW5maWx0ZXJlZCAo XygiXAogICAgLS1zZT1GSUxFICAgICAgICAgIFVzZSBGSUxFIGFzIHN5bWJvbCBmaWxlIGFuZCBl eGVjdXRhYmxlIGZpbGUuXG5cCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmls ZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvc3ltZmlsZS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMC0wMS0xNSAw MzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1m aWxlLmMJMjAxMC0wMS0xNSAwMzoyMDowNC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUw LjIwMTAwMTIxLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDEwLTAxLTIxIDE1OjExOjA5LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5bWZpbGUuYwkyMDEwLTAxLTIx IDE1OjEzOjAyLjAwMDAwMDAwMCArMDEwMAogQEAgLTc5LDYgKzc5LDcgQEAgc3RhdGljIHZvaWQg Y2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAogIAogIC8qIEdsb2JhbCB2YXJpYWJsZXMgb3du ZWQgYnkgdGhpcyBmaWxlICovCkBAIC02MCwxOSArNjAsMTkgQEAgSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3N5bWZpbGUuYwogIAogIC8qIEV4dGVybmFsIHZhcmlhYmxlcyBhbmQgZnVu Y3Rpb25zIHJlZmVyZW5jZWQuICovCiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv ZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZHdhcmYycmVhZC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kd2FyZjJyZWFk LmMJMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0xNSAwMzoyMDoxOC4wMDAwMDAwMDAgKzAx MDAKLUBAIC01MCw2ICs1MCw3IEBACi0gI2luY2x1ZGUgImFkZHJtYXAuaCIKLSAjaW5jbHVkZSAi YmxvY2suaCIKLSAjaW5jbHVkZSAiZi1sYW5nLmgiCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0yMSAxNToxMTowOS4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0yMSAxNTox MzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC01Myw2ICs1Myw3IEBACisgI2luY2x1ZGUgInR5cGVw cmludC5oIgorICNpbmNsdWRlICJqdi1sYW5nLmgiCisgI2luY2x1ZGUgInZlYy5oIgogKyNpbmNs dWRlICJ0b3AuaCIKICAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSAiZ2RiX3N0cmlu Zy5oIgotQEAgLTEyMjYsNyArMTIyNyw4IEBAIGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUKK0BAIC0xMjM3LDcgKzEyMzgsOCBAQCBkd2FyZjJfaGFzX2luZm8gKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlCiAgCiAgICAgICAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChvYmpm aWxlLT5vYmZkLCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zLCBOVUxMKTsKICAgICAgfQpAQCAtODIs MTAgKzgyLDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMK ICAJICAmJiBkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldi5hc2VjdGlvbiAhPSBOVUxMKTsKICB9 CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdG9wLmgKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi90b3AuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvdG9wLmgJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90b3AuaAkyMDEwLTAxLTE1IDAzOjIwOjA0LjAwMDAw MDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvdG9wLmgJMjAxMC0w MS0wMSAwODozMTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi90b3AuaAkyMDEwLTAxLTIxIDE1OjEzOjAyLjAwMDAwMDAwMCArMDEwMAogQEAgLTYzLDYgKzYz LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKICAKICAvKiBGcm9tIHJhbmRv bSBwbGFjZXMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUw NjEwLnBhdGNoIGIvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKaW5kZXgg NTZkNzViOS4uNTU3ODU3MCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAw NTA2MTAucGF0Y2gKKysrIGIvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gK QEAgLTE5LDExICsxOSwxMSBAQCBQcm9wb3NlZCB1cHN0cmVhbSBidXQgbmV2ZXIgY29tbWl0dGVk IHVwc3RyZWFtLgogICAgICAgICAoc291cmNlX2NvbW1hbmQpOiBVcGRhdGUgZG9jdW1lbnRhdGlv bi4gIENoZWNrIHBlcm1pc3Npb25zIGlmCiAgICAgICAgIEZST01fVFRZIGlzIC0xLgogCi1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY2xpL2NsaS1jbWRzLmMKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9jbGkvY2xpLWNtZHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMC0wMS0xNSAwMzoxNjo0My4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jbGkvY2xpLWNtZHMu YwkyMDEwLTAxLTE1IDAzOjE5OjEzLjAwMDAwMDAwMCArMDEwMAotQEAgLTM3LDYgKzM3LDcgQEAK Ky0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTAtMDEt MTggMDc6MjU6MjIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIv Y2xpL2NsaS1jbWRzLmMJMjAxMC0wMS0yMSAxNToxMjoyOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0z OCw2ICszOCw3IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1ZGUgInNvdXJjZS5o IgogICNpbmNsdWRlICJkaXNhc20uaCIKQEAgLTMxLDE4ICszMSw5IEBAIEluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9jbGkvY2xpLWNtZHMuYwogIGV4dGVybiB2b2lkIGRpc2Nvbm5lY3Rf b3Jfc3RvcF90cmFjaW5nIChpbnQgZnJvbV90dHkpOwogIAogICNpbmNsdWRlICJ1aS1vdXQuaCIK LUBAIC00NzUsNyArNDc2LDcgQEAgc291cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21f dHR5KQotIAotICAgaWYgKGZkID09IC0xKQotICAgICB7Ci0tICAgICAgaWYgKGZyb21fdHR5KQot KyAgICAgIGlmIChmcm9tX3R0eSA+IDApCi0gCXBlcnJvcl93aXRoX25hbWUgKGZpbGUpOwotICAg ICAgIGVsc2UKLSAJewotQEAgLTQ4NCw2ICs0ODUsMjkgQEAgc291cmNlX3NjcmlwdCAoY2hhciAq ZmlsZSwgaW50IGZyb21fdHR5KQotIAl9Ci0gICAgIH0KK0BAIC00ODgsNiArNDg5LDI5IEBAIGZp bmRfYW5kX29wZW5fc2NyaXB0IChpbnQgZnJvbV90dHksIGNoYXIKKyAJICAgICAgZmlsZSwgT19S RE9OTFksICZmdWxsX3BhdGhuYW1lKTsKKyAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0 aG5hbWUpOwogIAogKyNpZmRlZiBIQVZFX0dFVFVJRAogKyAgaWYgKGZyb21fdHR5ID09IC0xKQpA QCAtNjIsMTUgKzUzLDI0IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jbGkvY2xp LWNtZHMuYwogKwkgIHdhcm5pbmcgKF8oIm5vdCB1c2luZyB1bnRydXN0ZWQgZmlsZSBcIiVzXCIi KSwgZmlsZSk7CiArCSAgY2xvc2UgKGZkKTsKICsJICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBz KTsKLSsJICByZXR1cm47CisrCSAgcmV0dXJuIDA7CiArCX0KICsgICAgfQogKyNlbmRpZgogKwot ICAgaXNfcHl0aG9uID0gc291cmNlX3B5dGhvbjsKLSAgIGlmIChzdHJsZW4gKGZpbGUpID4gMyAm JiAhc3RyY21wICgmZmlsZVtzdHJsZW4gKGZpbGUpIC0gM10sICIucHkiKSkKLSAgICAgaXNfcHl0 aG9uID0gMTsKLUBAIC00OTUsNiArNTE5LDcgQEAgc291cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwg aW50IGZyb21fdHR5KQorICAgLyogVXNlIHRoZSBmdWxsIHBhdGggbmFtZSwgaWYgaXQgaXMgZm91 bmQuICAqLworICAgaWYgKGZ1bGxfcGF0aG5hbWUgIT0gTlVMTCAmJiBmZCAhPSAtMSkKKyAgICAg eworQEAgLTQ5Niw3ICs1MjAsNyBAQCBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoaW50IGZyb21fdHR5 LCBjaGFyCisgCisgICBpZiAoZmQgPT0gLTEpCisgICAgIHsKKy0gICAgICBpZiAoZnJvbV90dHkp CisrICAgICAgaWYgKGZyb21fdHR5ID4gMCkKKyAJcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7Cisg ICAgICAgZWxzZQorIAl7CitAQCAtNTU0LDYgKzU3OCw3IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIg KmZpbGUsIGludCBmcm9tX3R0eSkKICAgIGVsc2UKICAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3Ry ZWFtLCBmaWxlKTsKICAKQEAgLTc4LDEwICs3OCwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvY2xpL2NsaS1jbWRzLmMKICAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwog IH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z2RiaW5pdC5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZ2RiaW5pdC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAJMjAxMC0wMS0xNSAwMzoxODoyMy4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2Ri aW5pdC5leHAJMjAxMC0wMS0yMSAxNToxMToxOC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEs OTggQEAKICsjICAgQ29weXJpZ2h0IDIwMDUKICsjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCkBAIC0xODEsMTcgKzE4MSwxNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiArfQogKwogK3JlbW90ZV9leGVjIGJ1 aWxkICJybSAuZ2RiaW5pdCIKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUJMjAxMC0wMS0x NSAwMzoxODoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUJMjAxMC0wMS0yMSAxNToxMToxOC4wMDAw MDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEgQEAKICtlY2hvICJcbmluIGdkYmluaXQiCi1JbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9tYWluLmMJMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9tYWluLmMJMjAxMC0wMS0xNSAwMzoxODoyMy4wMDAwMDAwMDAgKzAx MDAKLUBAIC04MTUsNyArODE1LDcgQEAgRXhjZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgaWdu b3JlZC4gKAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDEt MjEgMTU6MTE6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIv bWFpbi5jCTIwMTAtMDEtMjEgMTU6MTE6MTguMDAwMDAwMDAwICswMTAwCitAQCAtODE4LDcgKzgx OCw3IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGlnbm9yZWQuICgKICAgICAgIGRl YnVnZ2luZyBvciB3aGF0IGRpcmVjdG9yeSB5b3UgYXJlIGluLiAgKi8KICAKICAgIGlmIChob21l X2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKQEAgLTIwMCw3ICsyMDAsNyBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbWFpbi5jCiAgCiAgICAvKiBOb3cgcGVyZm9ybSBhbGwg dGhlIGFjdGlvbnMgaW5kaWNhdGVkIGJ5IHRoZSBhcmd1bWVudHMuICAqLwogICAgaWYgKGNkYXJn ICE9IE5VTEwpCi1AQCAtODg0LDcgKzg4NCw3IEBAIENhbid0IGF0dGFjaCB0byBwcm9jZXNzIGFu ZCBzcGVjaWZ5IGEgY28KK0BAIC04ODcsNyArODg3LDcgQEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nl c3MgYW5kIHNwZWNpZnkgYSBjbwogICAgLyogUmVhZCB0aGUgLmdkYmluaXQgZmlsZSBpbiB0aGUg Y3VycmVudCBkaXJlY3RvcnksICppZiogaXQgaXNuJ3QKICAgICAgIHRoZSBzYW1lIGFzIHRoZSAk SE9NRS8uZ2RiaW5pdCBmaWxlIChpdCBzaG91bGQgZXhpc3QsIGFsc28pLiAgKi8KICAgIGlmIChs b2NhbF9nZGJpbml0ICYmICFpbmhpYml0X2dkYmluaXQpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy10 ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2ggYi9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUt cmVzdWx0cy5wYXRjaAppbmRleCA4MWUwYzAyLi43NWY2OGIzIDEwMDY0NAotLS0gYS9nZGItNi43 LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAorKysgYi9nZGItNi43LXRlc3RzdWl0ZS1z dGFibGUtcmVzdWx0cy5wYXRjaApAQCAtMTAyLDE1NCArMTAyLDMgQEAgZnJhbWVzLWludmFsaWQg Y2FuIGhhcHBlbiBhc3luY2hyb25vdXNseS4KICAKICBzZXQgdGltZW91dCAkb2xkdGltZW91dAog IHJldHVybiAwCi0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAw OS0xMi9tc2cwMDIzNC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0ZTogRml4IGEgcmFj ZSBieSBtZSAtIHdhdGNodGhyZWFkcy1yZW9yZGVyLmV4cAotCi1IaSwKLQotdGhlcmUgaXMgYSBi dWcgZXhwbGFpbmFibGUgYnkgbWFuIHB0aHJlYWRfY29uZF9zaWduYWw6Ci0JVGhlIFsuLi5dIHB0 aHJlYWRfY29uZF9zaWduYWwoKSBmdW5jdGlvbnMgc2hhbGwgaGF2ZSBubyBlZmZlY3QgaWYKLQl0 aGVyZSBhcmUgbm8gdGhyZWFkcyBjdXJyZW50bHkgYmxvY2tlZCBvbiBjb25kLgotCi1tZWFuaW5n IGEgcmFjZSBmb3IgdGhlIHRlc3RjYXNlLgotCStGQUlMOiBnZGIudGhyZWFkcy93YXRjaHRocmVh ZHMtcmVvcmRlci5leHA6IHJlb3JkZXIxOiBjb250aW51ZSBhICh0aW1lb3V0KQotCi1PbmUgY2Fu IHJlcHJvZHVjZSB0aGUgcmFjZSBvbiBDVlMgSEVBRCBieToKLSMJLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5jCi0jCSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYwotIwlAQCAtODksNiArODksNyBA QCB0aHJlYWQxX2Z1bmMgKHZvaWQgKnVudXNlZCkKLSMJICAgaW50IGk7Ci0jCSAgIHZvbGF0aWxl IGludCByd2F0Y2hfc3RvcmU7Ci0jCSAKLSMJK3NsZWVwKDEpOwotIwkgICB0aHJlYWQxX3RpZCA9 IGdldHRpZCAoKTsKLSMJICAgaSA9IHB0aHJlYWRfY29uZF9zaWduYWwgKCZ0aHJlYWQxX3RpZF9j b25kKTsKLSMJICAgYXNzZXJ0IChpID09IDApOwotIwlAQCAtMzE3LDYgKzMxOCw3IEBAIG1haW4g KGludCBhcmdjLCBjaGFyICoqYXJndikKLSMJIAotIwkgICBpZiAodGhyZWFkMV90aWQgPT0gMCkK LSMJICAgICB7Ci0jCStzbGVlcCgyKTsKLSMJICAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAo JnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0jCSAgICAgICBhc3NlcnQg KGkgPT0gMCk7Ci0jCSAKLQotRml4ZWQ7IGdkYnN0b3BfbXV0ZXggZ290IHJlbW92ZWQgYXMgaXQg YmVjYW1lIHJlZHVuZGFudCB0aGVyZS4KLQotR29pbmcgdG8gY2hlY2sgaXQgaW4gYXMgb2J2aW91 cyBpbiBzZXZlcmFsIGRheXMgKGNvZGUgaXMgYnkgbWUgKyBpdCBpcyBqdXN0Ci1hIHRlc3RjYXNl KS4KLQotCi1Tb3JyeSwKLUphbgotCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDA5LTEyLTE3ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi50aHJlYWRz L3dhdGNodGhyZWFkcy1yZW9yZGVyLmMgKGdkYnN0b3BfbXV0ZXgpOiBSZW1vdmUuCi0JKHRocmVh ZDFfZnVuYyk6IFByb3RlY3QgdGhyZWFkMV90aWRfY29uZCBieSB0aHJlYWQxX3RpZF9tdXRleC4g IFJlbW92ZQotCWdkYnN0b3BfbXV0ZXggaGFuZGxpbmcuCi0JKHRocmVhZDJfZnVuYyk6IFByb3Rl Y3QgdGhyZWFkMl90aWRfY29uZCBieSB0aHJlYWQyX3RpZF9tdXRleC4gIFJlbW92ZQotCWdkYnN0 b3BfbXV0ZXggaGFuZGxpbmcuCi0JKG1haW4pOiBNb3ZlIHRocmVhZDFfdGlkX211dGV4IGFuZCB0 aHJlYWQyX3RpZF9tdXRleCBsb2NrcyBiZWZvcmUKLQlwdGhyZWFkX2NyZWF0ZS4gIFJlbW92ZSBn ZGJzdG9wX211dGV4IGhhbmRsaW5nLiAgTmV3IGNvbW1lbnQuICBSZW1vdmUKLQlwdGhyZWFkX2Nv bmRfd2FpdCBjb25kaXRpb25hbGl6YXRpb25zLgotCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYwotQEAgLTM0LDggKzM0LDYgQEAKLSAgICBvdGhl cndpc2UuICAqLwotICNkZWZpbmUgVElNRU9VVCAoZ2V0dGlkICgpID09IGdldHBpZCgpID8gMTAg OiAxNSkKLSAKLS1zdGF0aWMgcHRocmVhZF9tdXRleF90IGdkYnN0b3BfbXV0ZXggPSBQVEhSRUFE X0VSUk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJfTlA7Ci0tCi0gc3RhdGljIHBpZF90IHRocmVh ZDFfdGlkOwotIHN0YXRpYyBwdGhyZWFkX2NvbmRfdCB0aHJlYWQxX3RpZF9jb25kID0gUFRIUkVB RF9DT05EX0lOSVRJQUxJWkVSOwotIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgdGhyZWFkMV90aWRf bXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJfTlA7Ci1AQCAtOTAs MTIgKzg4LDExIEBAIHRocmVhZDFfZnVuYyAodm9pZCAqdW51c2VkKQotICAgdm9sYXRpbGUgaW50 IHJ3YXRjaF9zdG9yZTsKLSAKLSAgIHRocmVhZDFfdGlkID0gZ2V0dGlkICgpOwotKwotKyAgdGlt ZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKLSAgIGkgPSBwdGhyZWFkX2NvbmRf c2lnbmFsICgmdGhyZWFkMV90aWRfY29uZCk7Ci0gICBhc3NlcnQgKGkgPT0gMCk7Ci0tCi0tICAv KiBCZSBzdXJlIEdEQiBpcyBhbHJlYWR5IHN0b3BwZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLwot LSAgdGltZWRfbXV0ZXhfbG9jayAoJmdkYnN0b3BfbXV0ZXgpOwotLSAgaSA9IHB0aHJlYWRfbXV0 ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7Ci0rICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sg KCZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0gICBhc3NlcnQgKGkgPT0gMCk7Ci0gCi0gICByd2F0Y2hf c3RvcmUgPSB0aHJlYWQxX3J3YXRjaDsKLUBAIC0xMTUsMTIgKzExMiwxMSBAQCB0aHJlYWQyX2Z1 bmMgKHZvaWQgKnVudXNlZCkKLSAgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7Ci0gCi0gICB0 aHJlYWQyX3RpZCA9IGdldHRpZCAoKTsKLSsKLSsgIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQy X3RpZF9tdXRleCk7Ci0gICBpID0gcHRocmVhZF9jb25kX3NpZ25hbCAoJnRocmVhZDJfdGlkX2Nv bmQpOwotICAgYXNzZXJ0IChpID09IDApOwotLQotLSAgLyogQmUgc3VyZSBHREIgaXMgYWxyZWFk eSBzdG9wcGVkIGJlZm9yZSBjb250aW51aW5nLiAgKi8KLS0gIHRpbWVkX211dGV4X2xvY2sgKCZn ZGJzdG9wX211dGV4KTsKLS0gIGkgPSBwdGhyZWFkX211dGV4X3VubG9jayAoJmdkYnN0b3BfbXV0 ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGhyZWFkMl90aWRfbXV0ZXgpOwot ICAgYXNzZXJ0IChpID09IDApOwotIAotICAgcndhdGNoX3N0b3JlID0gdGhyZWFkMl9yd2F0Y2g7 Ci1AQCAtMjY3LDcgKzI2Myw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAKLSAg IHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKLSAKLS0gIHRpbWVkX211dGV4X2xvY2sgKCZnZGJzdG9w X211dGV4KTsKLSsgIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0rICB0 aW1lZF9tdXRleF9sb2NrICgmdGhyZWFkMl90aWRfbXV0ZXgpOwotIAotICAgdGltZWRfbXV0ZXhf bG9jayAoJnRlcm1pbmF0ZV9tdXRleCk7Ci0gCi1AQCAtMzA2LDMwICszMDMsMjEgQEAgbWFpbiAo aW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgIHN0YXRlX3dhaXQgKHRyYWNlciwgIlQgKHN0 b3BwZWQpIik7Ci0gICAgIH0KLSAKLS0gIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQxX3RpZF9t dXRleCk7Ci0tICB0aW1lZF9tdXRleF9sb2NrICgmdGhyZWFkMl90aWRfbXV0ZXgpOwotLQotLSAg LyogTGV0IHRoZSB0aHJlYWRzIHN0YXJ0LiAgKi8KLS0gIGkgPSBwdGhyZWFkX211dGV4X3VubG9j ayAoJmdkYnN0b3BfbXV0ZXgpOwotLSAgYXNzZXJ0IChpID09IDApOwotKyAgLyogVGhyZWFkcyBh cmUgbm93IHdhaXRpbmcgYXQgdGltZWRfbXV0ZXhfbG9jayAodGhyZWFkMV90aWRfbXV0ZXgpIGFu ZCBzbwotKyAgICAgdGhleSBjb3VsZCBub3QgdHJpZ2dlciB0aGUgd2F0Y2hwb2ludHMgYmVmb3Jl IEdEQiBnZXRzIHVuc3RvcHBlZCBsYXRlci4KLSsgICAgIFRocmVhZHMgZ2V0IHJlc3VtZWQgYXQg cHRocmVhZF9jb25kX3dhaXQgYmVsb3cuICAqLwotIAotICAgcHJpbnRmICgiV2FpdGluZyB0aWxs IHRoZSB0aHJlYWRzIGluaXRpYWxpemUgdGhlaXIgVElEcy5cbiIpOwotIAotLSAgaWYgKHRocmVh ZDFfdGlkID09IDApCi0tICAgIHsKLS0gICAgICBpID0gcHRocmVhZF9jb25kX3dhaXQgKCZ0aHJl YWQxX3RpZF9jb25kLCAmdGhyZWFkMV90aWRfbXV0ZXgpOwotLSAgICAgIGFzc2VydCAoaSA9PSAw KTsKLSsgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQx X3RpZF9tdXRleCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0gCi0tICAgICAgYXNzZXJ0ICh0aHJl YWQxX3RpZCA+IDApOwotLSAgICB9Ci0rICBhc3NlcnQgKHRocmVhZDFfdGlkID4gMCk7Ci0gCi0t ICBpZiAodGhyZWFkMl90aWQgPT0gMCkKLS0gICAgewotLSAgICAgIGkgPSBwdGhyZWFkX2NvbmRf d2FpdCAoJnRocmVhZDJfdGlkX2NvbmQsICZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0tICAgICAgYXNz ZXJ0IChpID09IDApOwotKyAgaSA9IHB0aHJlYWRfY29uZF93YWl0ICgmdGhyZWFkMl90aWRfY29u ZCwgJnRocmVhZDJfdGlkX211dGV4KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSAKLS0gICAgICBh c3NlcnQgKHRocmVhZDJfdGlkID4gMCk7Ci0tICAgIH0KLSsgIGFzc2VydCAodGhyZWFkMl90aWQg PiAwKTsKLSAKLSAgIHByaW50ZiAoIlRocmVhZCAxIFRJRCA9ICVsdSwgdGhyZWFkIDIgVElEID0g JWx1LCBQSUQgPSAlbHUuXG4iLAotIAkgICh1bnNpZ25lZCBsb25nKSB0aHJlYWQxX3RpZCwgKHVu c2lnbmVkIGxvbmcpIHRocmVhZDJfdGlkLAotCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1pbmxpbmlu Zy1hZGRvbi5wYXRjaCBiL2dkYi02LjgtaW5saW5pbmctYWRkb24ucGF0Y2gKaW5kZXggYjQxYjgw Ny4uN2I4NGVmOSAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaAorKysg Yi9nZGItNi44LWlubGluaW5nLWFkZG9uLnBhdGNoCkBAIC01LDEwICs1LDEwIEBAIGNhdXNpbmc6 IEZBSUw6IGdkYi5iYXNlL3Vud2luZG9uc2lnbmFsLmV4cDogdW53aW5kb25zaWduYWwsIHN0YWNr IHVud291bmQKIHJlc3VtZSgpIC0+IHRhcmdldF9yZXN1bWUoKSBtb3ZlIG9mIGNsZWFyX2lubGlu ZV9mcmFtZV9zdGF0ZSgpIGlzIGZvcjoKIGdkYi5taS9taS1uc21vcmlidW5kLmV4cAogCi1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMK K0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUt YnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMJMjAxMC0wMS0wMSAwODozMjowNC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUt YnQuYwkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMJMjAxMC0wMS0w MSAwODozMjowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90 ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwkyMDEwLTAxLTIxIDE1OjE0OjQ3LjAwMDAwMDAw MCArMDEwMAogQEAgLTEzLDEwICsxMywxNiBAQAogICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwpAQCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwogIAogIGlubGluZSBpbnQgZnVuYzEodm9p ZCkKICB7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQv aW5saW5lLWNtZHMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9n ZGIub3B0L2lubGluZS1jbWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1jbWRzLmMJMjAxMC0wMS0wMSAwODoz MjowNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5jCTIwMTAtMDEtMTUgMTE6NTA6NTkuMDAwMDAwMDAwICsw MTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9p bmxpbmUtY21kcy5jCTIwMTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuYwkyMDEw LTAxLTIxIDE1OjE0OjQ3LjAwMDAwMDAwMCArMDEwMAogQEAgLTEzLDEzICsxMywxOSBAQAogICAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCiAgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwpAQCAtNTQsMTAgKzU0LDEwIEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5j CiAgaW5saW5lIGludCBmdW5jMSh2b2lkKQogIHsKICAgIGJhciAoKTsKLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5leHAKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIub3B0L2lubGluZS1jbWRzLmV4cAkyMDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGlu ZS1jbWRzLmV4cAkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhw CTIwMTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEw MDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhwCTIwMTAtMDEtMjEgMTU6 MTQ6NDcuMDAwMDAwMDAwICswMTAwCiBAQCAtMjMwLDcgKzIzMCw3IEBAIHNldCBsaW5lMyBbZ2Ri X2dldF9saW5lX251bWJlciAic2V0IGJyZWEKICBnZGJfYnJlYWtwb2ludCAkbGluZTMKICBnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiY29uc2VjdXRpdmUgZnVuYzEiCkBAIC0xMTAsMTAgKzEx MCwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQv aW5saW5lLWNtZHMuZXhwCiArZ2RiX3Rlc3QgImluZm8gZnJhbWUiICJpbmxpbmVkIGludG8gZnJh bWUuKiIgIm91dGVyX2lubGluZTIgaW5saW5lZCIKICtnZGJfdGVzdCAiZmluaSIgIiIgInVwIGZy b20gb3V0ZXJfaW5saW5lMiIKICtnZGJfdGVzdCAiaW5mbyBmcmFtZSIgIiBpbiBtYWluIFxbXlxu XF0qXG4gc291cmNlIGxhbmd1YWdlLioiICJtYWluIG5vdCBpbmxpbmVkIgotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuYworSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2Nh bHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvaW5saW5lLWxvY2Fscy5jCTIwMTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5s aW5lLWxvY2Fscy5jCTIwMTAtMDEtMTUgMTE6NTA6NTkuMDAwMDAwMDAwICswMTAwCistLS0gZ2Ri LTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxz LmMJMjAxMC0wMS0wMSAwODozMjowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMJMjAxMC0wMS0yMSAx NToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMywxMSArMTMsMTYgQEAKICAgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQogICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KQEAgLTEzMywxMCArMTMzLDEwIEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMKICAK ICBpbmxpbmUgaW50IGZ1bmMxKGludCBhcmcxKQogIHsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4cAorSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri Lm9wdC9pbmxpbmUtbG9jYWxzLmV4cAkyMDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1s b2NhbHMuZXhwCTIwMTAtMDEtMTUgMTE6NTA6NTkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu MC41MC4yMDEwMDEyMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4 cAkyMDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAx MDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCTIwMTAtMDEtMjEg MTU6MTQ6NDcuMDAwMDAwMDAwICswMTAwCiBAQCAtNzcsNiArNzcsOSBAQCBpZiB7ICEgJG5vX2Zy YW1lcyB9IHsKICAKICAjIE1ha2Ugc3VyZSB0aGF0IGxvY2FscyBvbiB0aGUgc3RhY2sgYXJlIGZv dW5kLiAgVGhpcyBpcyBhbiBhcnJheSB0bwpAQCAtMTU1LDEwICsxNTUsMTAgQEAgSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhw CiArICAgIHNldHVwX2tmYWlsICotKi0qICJnY2MvZGVidWcub3B0aW1pemF0aW9uIgogK30KICBn ZGJfdGVzdCAicHJpbnQgYXJyYXlcWzBcXSIgIlxcXCQkZGVjaW1hbCA9IDE4NCIgInByaW50IGxv Y2FsICgzKSIKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9mcmFtZS5jCitJbmRleDog Z2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZnJhbWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvZnJhbWUuYwkyMDEwLTAxLTE1IDAzOjIyOjE0LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2ZyYW1lLmMJMjAxMC0wMS0xNSAx MTo1MDo1OS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2Ri L2ZyYW1lLmMJMjAxMC0wMS0yMSAxNToxMzoyNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9mcmFtZS5jCTIwMTAtMDEtMjEgMTU6MTQ6NDcuMDAwMDAwMDAwICsw MTAwCiBAQCAtMzE2LDcgKzMxNiw3IEBAIGZwcmludF9mcmFtZSAoc3RydWN0IHVpX2ZpbGUgKmZp bGUsIHN0cnUKICBzdGF0aWMgc3RydWN0IGZyYW1lX2luZm8gKgogIHNraXBfaW5saW5lZF9mcmFt ZXMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKQEAgLTE5NSwxMCArMTk1LDEwIEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9mcmFtZS5jCiAgCXsKICAJICBzYWwtPnN5bXRhYiA9 IFNZTUJPTF9TWU1UQUIgKHN5bSk7CiAgCSAgc2FsLT5saW5lID0gU1lNQk9MX0xJTkUgKHN5bSk7 Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0wMS0xNSAxMTo0OTo0OS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9icmVha3BvaW50LmMJ MjAxMC0wMS0xNSAxMTo1MjoyMC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTIxLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAxLTIxIDE1OjE0OjQxLjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAxLTIx IDE1OjE0OjQ3LjAwMDAwMDAwMCArMDEwMAogQEAgLTYyLDYgKzYyLDcgQEAKICAjaW5jbHVkZSAi aml0LmgiCiAgI2luY2x1ZGUgInhtbC1zeXNjYWxsLmgiCkBAIC0yMDcsNyArMjA3LDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYwogIAogIC8qIHJlYWRsaW5l IGluY2x1ZGUgZmlsZXMgKi8KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKLUBAIC0z NTYwLDEwICszNTYxLDI0IEBAIGJwc3RhdF9jaGVja19icmVha3BvaW50X2NvbmRpdGlvbnMgKGJw c3QKK0BAIC0zNTU4LDEwICszNTU5LDI0IEBAIGJwc3RhdF9jaGVja19icmVha3BvaW50X2NvbmRp dGlvbnMgKGJwc3QKICAgIGNvbnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYmwgPSBicy0+YnJlYWtw b2ludF9hdDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpiID0gYmwtPm93bmVyOwogIApAQCAtMjM2 LDcgKzIzNiw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9icmVha3BvaW50LmMK ICAgICAgewogICAgICAgIGludCB2YWx1ZV9pc196ZXJvID0gMDsKICAgICAgICAKLUBAIC0zNzMx LDYgKzM3NDYsMTIgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZQor QEAgLTM3MjksNiArMzc0NCwxMiBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNz X3NwYWNlCiAgCQkgIGJzLT5wcmludCA9IDA7CiAgCQl9CiAgCSAgICAgIGJzLT5jb21tYW5kcyA9 IGNvcHlfY29tbWFuZF9saW5lcyAoYnMtPmNvbW1hbmRzKTsKQEAgLTI0OSw3ICsyNDksNyBAQCBJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2ludC5jCiAgCSAgICB9CiAgCiAg CSAgLyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250IHN0b3Agb3IgZG9u dCBwcmludC4gICovCi1AQCAtNjAzOSw5ICs2MDYwLDkgQEAgc2V0X21vbWVudGFyeV9icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTYwNDMsOSArNjA2NCw5IEBAIHNldF9tb21lbnRhcnlf YnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2gKICB7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsK ICAKQEAgLTI2MiwxMCArMjYyLDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9i cmVha3BvaW50LmMKICAKICAgIGIgPSBzZXRfcmF3X2JyZWFrcG9pbnQgKGdkYmFyY2gsIHNhbCwg dHlwZSk7CiAgICBiLT5lbmFibGVfc3RhdGUgPSBicF9lbmFibGVkOwotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2lubGluZS1mcmFtZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvaW5saW5lLWZyYW1lLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL2lubGluZS1mcmFtZS5jCTIwMTAtMDEtMDEgMDg6MzE6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5saW5lLWZyYW1lLmMJMjAxMC0wMS0x NSAxMTo1MDo1OS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcv Z2RiL2lubGluZS1mcmFtZS5jCTIwMTAtMDEtMDEgMDg6MzE6MzYuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvaW5saW5lLWZyYW1lLmMJMjAxMC0wMS0yMSAxNTox NDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yMTMsNiArMjEzLDEyIEBAIGlubGluZV9mcmFtZV9z bmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJhbWUKICAgIGlmIChmcmFtZV9ibG9jayA9PSBOVUxMKQog ICAgICByZXR1cm4gMDsKQEAgLTM0MiwxMCArMzQyLDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuYwogIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGhpZGRl biBmdW5jdGlvbnMgaW5saW5lZCBpbnRvIHRoZSBjdXJyZW50CiAgICAgZnJhbWUuICAqLwogIAot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1t YXJrZXJzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9pbmxpbmUtbWFya2Vycy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbWFya2Vycy5jCTIwMTAtMDEtMDEgMDg6 MzI6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvaW5saW5lLW1hcmtlcnMuYwkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAw MCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5v cHQvaW5saW5lLW1hcmtlcnMuYwkyMDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1tYXJr ZXJzLmMJMjAxMC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xNSwxMSArMTUs NiBAQAogIAogIGV4dGVybiBpbnQgeCwgeTsKQEAgLTM1OCwxMCArMzU4LDEwIEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbWFya2Vycy5j CiAgdm9pZCBtYXJrZXIodm9pZCkKICB7CiAgICB4ICs9IHk7IC8qIHNldCBicmVha3BvaW50IDIg aGVyZSAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnRocmVhZC5oCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidGhyZWFkLmgKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2dkYnRocmVhZC5oCTIwMTAtMDEtMTUgMDM6MjI6 MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidGhyZWFk LmgJMjAxMC0wMS0xNSAxMTo1MToxOS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIw MTAwMTIxLm9yaWcvZ2RiL2dkYnRocmVhZC5oCTIwMTAtMDEtMjEgMTU6MTE6MDkuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidGhyZWFkLmgJMjAxMC0wMS0y MSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOTUsNiArMTk1LDEyIEBAIHN0cnVjdCB0 aHJlYWRfaW5mbwogICAgLyogRnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8gZnJlZSBQUklWQVRF LiAgSWYgdGhpcyBpcyBOVUxMLCB0aGVuCiAgICAgICB4ZnJlZSB3aWxsIGJlIGNhbGxlZCBvbiBQ UklWQVRFLiAgKi8KQEAgLTM3NSwxMSArMzc1LDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9nZGJ0aHJlYWQuaAogIH07CiAgCiAgLyogQ3JlYXRlIGFuIGVtcHR5IHRocmVhZCBs aXN0LCBvciBlbXB0eSB0aGUgZXhpc3Rpbmcgb25lLiAgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9pbmZjbWQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2luZmNt ZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9pbmZjbWQu YwkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2luZmNtZC5jCTIwMTAtMDEtMTUgMTE6NTE6NTMuMDAwMDAwMDAwICswMTAwCi1A QCAtMTQzOCwxMSArMTQzOCwxMSBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQg KmFyZykKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2luZmNtZC5jCTIwMTAtMDEt MjEgMTU6MTE6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIv aW5mY21kLmMJMjAxMC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNDM5LDEx ICsxNDM5LDExIEBAIGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQogICAg ICAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlOwogIAogICAgICAgIHZhbHVlX3R5cGUgPSBUWVBF X1RBUkdFVF9UWVBFIChTWU1CT0xfVFlQRSAoYS0+ZnVuY3Rpb24pKTsKQEAgLTM5Myw3ICszOTMs NyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mY21kLmMKICAJcHJpbnRfcmV0 dXJuX3ZhbHVlIChTWU1CT0xfVFlQRSAoYS0+ZnVuY3Rpb24pLCB2YWx1ZV90eXBlKTsKICAgICAg fQogIAotQEAgLTE1NTAsNiArMTU1MCwxNiBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJv bCAqZnVuY3Rpb24sCitAQCAtMTU1MSw2ICsxNTUxLDE2IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1 Y3Qgc3ltYm9sICpmdW5jdGlvbiwKICAgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1l X2lkIChmcmFtZSk7CiAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRf Y2xlYW51cCwgJnRocmVhZCk7CiAgCkBAIC00MTAsNyArNDEwLDcgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCiAgICB0cC0+cHJvY2VlZF90b19maW5pc2ggPSAxOyAg ICAvKiBXZSB3YW50IHN0b3BfcmVnaXN0ZXJzLCBwbGVhc2UuLi4gICovCiAgICBjYXJncyA9IHht YWxsb2MgKHNpemVvZiAoKmNhcmdzKSk7CiAgCi1AQCAtMTU3MCw3ICsxNTgwLDkgQEAgZmluaXNo X2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLAorQEAgLTE1NzEsNyArMTU4MSw5IEBA IGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwKICBzdGF0aWMgdm9pZAog IGZpbmlzaF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICB7CkBAIC00MjEsNyAr NDIxLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCiAgICBzdHJ1 Y3Qgc3ltYm9sICpmdW5jdGlvbjsKICAKICAgIGludCBhc3luY19leGVjID0gMDsKLUBAIC0xNjAx LDQ1ICsxNjEzLDYzIEBAIGZpbmlzaF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkK K0BAIC0xNjAyLDQ1ICsxNjE0LDYzIEBAIGZpbmlzaF9jb21tYW5kIChjaGFyICphcmcsIGludCBm cm9tX3R0eSkKICAgIGlmICghdGFyZ2V0X2hhc19leGVjdXRpb24pCiAgICAgIGVycm9yIChfKCJU aGUgcHJvZ3JhbSBpcyBub3QgcnVubmluZy4iKSk7CiAgCkBAIC01MDIsNyArNTAyLDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCiAgCiAgICAvKiBQcmludCBpbmZv IG9uIHRoZSBzZWxlY3RlZCBmcmFtZSwgaW5jbHVkaW5nIGxldmVsIG51bWJlciBidXQgbm90CiAg ICAgICBzb3VyY2UuICAqLwotQEAgLTE2NTMsMTAgKzE2ODMsMTQgQEAgZmluaXNoX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorQEAgLTE2NTQsMTAgKzE2ODQsMTQgQEAgZmluaXNo X2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogICAgICAgIHByaW50X3N0YWNrX2Zy YW1lIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCAxLCBMT0NBVElPTik7CiAgICAgIH0KICAK QEAgLTUxOCwxMSArNTE4LDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZj bWQuYwogIH0KICAMCiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMK K0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90YXJnZXQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0xNSAwMzoyMjoz MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuYwky MDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAotQEAgLTIyNDEsNiArMjI0MSw3IEBA IHRhcmdldF9yZXN1bWUgKHB0aWRfdCBwdGlkLCBpbnQgc3RlcCwgZW4KKy0tLSBnZGItNy4wLjUw LjIwMTAwMTIxLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0yMSAx NToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMjE2LDYgKzIyMTYsNyBAQCB0YXJnZXRfcmVz dW1lIChwdGlkX3QgcHRpZCwgaW50IHN0ZXAsIGVuCiAgewogICAgc3RydWN0IHRhcmdldF9vcHMg KnQ7CiAgCkBAIC01MzAsMTAgKzUzMCwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvdGFyZ2V0LmMKICAgIHRhcmdldF9kY2FjaGVfaW52YWxpZGF0ZSAoKTsKICAKICAgIGZvciAo dCA9IGN1cnJlbnRfdGFyZ2V0LmJlbmVhdGg7IHQgIT0gTlVMTDsgdCA9IHQtPmJlbmVhdGgpCi1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5saW5lLWZyYW1lLmgKK0luZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTIxL2dkYi9pbmxpbmUtZnJhbWUuaAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvaW5saW5lLWZyYW1lLmgJMjAxMC0wMS0wMSAwODozMToz Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJh bWUuaAkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIvaW5saW5lLWZyYW1lLmgJMjAxMC0wMS0wMSAwODozMTozNi4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pbmxpbmUtZnJhbWUuaAky MDEwLTAxLTIxIDE1OjE0OjQ3LjAwMDAwMDAwMCArMDEwMAogQEAgLTQzLDYgKzQzLDEwIEBAIHZv aWQgY2xlYXJfaW5saW5lX2ZyYW1lX3N0YXRlIChwdGlkX3QgcHQKICAKICB2b2lkIHN0ZXBfaW50 b19pbmxpbmVfZnJhbWUgKHB0aWRfdCBwdGlkKTsKQEAgLTU0NSwxOSArNTQ1LDE5IEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuaAogIC8qIFJldHVybiB0aGUg bnVtYmVyIG9mIGhpZGRlbiBmdW5jdGlvbnMgaW5saW5lZCBpbnRvIHRoZSBjdXJyZW50CiAgICAg ZnJhbWUuICAqLwogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQu YworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEt MTUgMTE6NDY6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv ZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMTE6NTI6NTkuMDAwMDAwMDAwICswMTAwCi1AQCAtNDA3 OCw2ICs0MDc4LDcgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwot ICAgQ09SRV9BRERSIGJhc2VhZGRyOworLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIv ZHdhcmYycmVhZC5jCTIwMTAtMDEtMjEgMTU6MTQ6NDEuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMjEgMTU6MTU6MDkuMDAw MDAwMDAwICswMTAwCitAQCAtNDEzNyw2ICs0MTM3LDcgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgcwogICAgc3RydWN0IGJsb2NrICpibG9jazsKKyAgIHVuc2lnbmVk IGRpZV9jaGlsZHJlbiA9IDA7CiAgICBpbnQgaW5saW5lZF9mdW5jID0gKGRpZS0+dGFnID09IERX X1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpOwogKyAgc3RydWN0IHR5cGUgKnR5cGU7CiAgCiAgICBp ZiAoaW5saW5lZF9mdW5jKQogICAgICB7Ci1AQCAtNDEwOSw3ICs0MTEwLDEwIEBAIHJlYWRfZnVu Y19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKK0BAIC00MTc4LDcgKzQxNzksMTAgQEAg cmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogICAgYWRkX3RvX2N1X2Z1 bmNfbGlzdCAobmFtZSwgbG93cGMsIGhpZ2hwYywgY3UpOwogIAogICAgbmV3ID0gcHVzaF9jb250 ZXh0ICgwLCBsb3dwYyk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNo ZXIucGF0Y2gKaW5kZXggNjdlNjUxMC4uMmU4OTQ1MCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5w YXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDcgKzIsNyBAQCBodHRwOi8vc291cmNl d2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dk Yi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDgx ODEwYTIwYjJkMmMzYmYxOGUxNTFkZTNjZGRmYzk2NDQ1YjNjNDYKK2NvbW1pdCBjY2RlMTUzMDQ3 OWNjOTY2Mzc0MzUxMDM4MDU3YjlkZGE5MGFhMjUxCiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBt ZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci10cm9tZXktZGVsYXllZC1zeW1maWxlCkBAIC0xMSw3 ICsxMSw3IEBAIGFyY2hlci1wbXVsZG9vbi1uZXh0LW92ZXItdGhyb3cKIGFyY2hlci1qYW5rcmF0 b2NodmlsLWZvcnRyYW4tbW9kdWxlCiBhcmNoZXItamFua3JhdG9jaHZpbC13YXRjaHBvaW50CiBh cmNoZXItamFua3JhdG9jaHZpbC12bGEKLVRPRE86YXJjaGVyLWtlaXRocy1leHByLWN1bXVsYXRp dmUKK2FyY2hlci1rZWl0aHMtZXhwci1jdW11bGF0aXZlCiAKIAogZGlmZiAtLWdpdCBhL2dkYi9N YWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgpAQCAtMTg4LDM4ICsxODgsMjcgQEAgaW5kZXgg ZmY4Yjg2ZS4uZjQ1MGE3YiAxMDA2NDQKICAjCiAgIyBEZXBlbmRlbmN5IHRyYWNraW5nLiAgTW9z dCBvZiB0aGlzIGlzIGNvbmRpdGlvbmFsIG9uIEdOVSBNYWtlIGJlaW5nCiAgIyBmb3VuZCBieSBj b25maWd1cmU7IGlmIEdOVSBNYWtlIGlzIG5vdCBmb3VuZCwgd2UgZmFsbCBiYWNrIHRvIGEKLWRp ZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCi1pbmRleCAxN2Q2NGZiLi5lMGViMTYwIDEw MDY0NAotLS0tIGEvZ2RiL05FV1MKLSsrKyBiL2dkYi9ORVdTCi1AQCAtNjY5LDYgKzY2OSwxMyBA QCB4ODYveDg2XzY0IERhcndpbgkJaVszNDU2N104Ni0qLWRhcndpbioKLSAKLSB4ODZfNjQgTWlu R1cJCQl4ODZfNjQtKi1taW5ndyoKLSAKLSsqIE5ldyBuYXRpdmUgY29uZmlndXJhdGlvbnMKLSsK LSt4ODYveDg2XzY0IERhcndpbgkJaVszNDU2N104Ni0qLWRhcndpbioKLSsKLStpbmZvIG9zIHBy b2Nlc3NlcwotKyAgU2hvdyBvcGVyYXRpbmcgc3lzdGVtIGluZm9ybWF0aW9uIGFib3V0IHByb2Nl c3Nlcy4KLSsKLSAqIE5ldyB0YXJnZXRzCi0gCi0gTGF0dGljZSBNaWNvMzIgICAgICAgICAgICAg ICAgICBsbTMyLSoKIGRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dkYi9hZGEtbGFuZy5j Ci1pbmRleCAyNGRlZjk1Li40NjgyMDQ1IDEwMDY0NAoraW5kZXggNDBiNzBhYi4uYjI5MWQ0MCAx MDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysgYi9nZGIvYWRhLWxhbmcuYwotQEAgLTE2 NDQsNyArMTY0NCw3IEBAIGFkYV90eXBlX29mX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyciwgaW50 IGJvdW5kcykKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgIHdoaWxlIChhcml0eSA+IDAp Ci0gICAgICAgICB7Ci0tICAgICAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gYWxsb2Nf dHlwZV9jb3B5ICh2YWx1ZV90eXBlIChhcnIpKTsKLSsJICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlw ZSA9IGFsbG9jX3R5cGVfY29weSAodmFsdWVfdHlwZSAoYXJyKSk7Ci0gICAgICAgICAgIHN0cnVj dCB0eXBlICphcnJheV90eXBlID0gYWxsb2NfdHlwZV9jb3B5ICh2YWx1ZV90eXBlIChhcnIpKTsK LSAgICAgICAgICAgc3RydWN0IHZhbHVlICpsb3cgPSBkZXNjX29uZV9ib3VuZCAoZGVzY3JpcHRv ciwgYXJpdHksIDApOwotICAgICAgICAgICBzdHJ1Y3QgdmFsdWUgKmhpZ2ggPSBkZXNjX29uZV9i b3VuZCAoZGVzY3JpcHRvciwgYXJpdHksIDEpOwotQEAgLTEwOTM3LDYgKzEwOTM3LDQwIEBAIGFk YV9vcGVyYXRvcl9sZW5ndGggKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpv cGxlbnAsIGludCAqYXJnc3ApCitAQCAtNDc4MSwxNCArNDc4MSwxMCBAQCBhZGFfbG9va3VwX3N5 bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jazAsCisgCisg c3RhdGljIHN0cnVjdCBzeW1ib2wgKgorIGFkYV9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25z dCBjaGFyICpuYW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICps aW5rYWdlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBi bG9jayAqYmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbikKKyB7CistICBpZiAobGlua2FnZV9uYW1lID09IE5VTEwpCistICAgIGxpbmth Z2VfbmFtZSA9IG5hbWU7CistICByZXR1cm4gYWRhX2xvb2t1cF9zeW1ib2wgKGxpbmthZ2VfbmFt ZSwgYmxvY2tfc3RhdGljX2Jsb2NrIChibG9jayksIGRvbWFpbiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCk7CisrICByZXR1cm4gYWRhX2xvb2t1cF9zeW1ib2wgKG5hbWUsIGJs b2NrX3N0YXRpY19ibG9jayAoYmxvY2spLCBkb21haW4sIE5VTEwpOworIH0KKyAKKyAKK0BAIC0x MDkzMSw2ICsxMDkyNyw0MCBAQCBhZGFfb3BlcmF0b3JfbGVuZ3RoIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgcGMsIGludCAqb3BsZW5wLCBpbnQgKmFyZ3NwKQogICAgICB9CiAgfQogIApA QCAtMjYwLDcgKzI0OSw3IEBAIGluZGV4IDI0ZGVmOTUuLjQ2ODIwNDUgMTAwNjQ0CiAgc3RhdGlj IGNoYXIgKgogIGFkYV9vcF9uYW1lIChlbnVtIGV4cF9vcGNvZGUgb3Bjb2RlKQogIHsKLUBAIC0x MTMyNSw2ICsxMTM1OSw3IEBAIHBhcnNlICh2b2lkKQorQEAgLTExMzE5LDYgKzExMzQ5LDcgQEAg cGFyc2UgKHZvaWQpCiAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBhZGFfZXhw X2Rlc2NyaXB0b3IgPSB7CiAgICBhZGFfcHJpbnRfc3ViZXhwLAogICAgYWRhX29wZXJhdG9yX2xl bmd0aCwKQEAgLTMwMSwxMSArMjkwLDM2IEBAIGluZGV4IDVjOWU1NTguLjU1YTE4NzMgMTAwNjQ0 CiAgICBpMzg2X3NldF9kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggKDgpOwogIAogICAgLyogT3ZlcnJp ZGUgdGhlIEdOVS9MaW51eCBpbmZlcmlvciBzdGFydHVwIGhvb2suICAqLworZGlmZiAtLWdpdCBh L2dkYi9heC1nZGIuYyBiL2dkYi9heC1nZGIuYworaW5kZXggNTc3NmJiMC4uNjA5OWU5OSAxMDA2 NDQKKy0tLSBhL2dkYi9heC1nZGIuYworKysrIGIvZ2RiL2F4LWdkYi5jCitAQCAtMTgxMCw3ICsx ODEwLDcgQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVt ZW50ICoqcGMsCisgCisgCS8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJvbCBpcyBuZWNlc3Nh cnkgdG8gZ2V0IHRoZSBMT0NfUkVHSVNURVIKKyAJICAgc3ltYm9sIGluc3RlYWQgb2YgdGhlIExP Q19BUkcgb25lIChpZiBib3RoIGV4aXN0KS4gICovCistCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1i b2wgKGIsIHRoaXNfbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7CisrCXN5bSA9IGxvb2t1cF9ibG9j a19zeW1ib2wgKGIsIHRoaXNfbmFtZSwgVkFSX0RPTUFJTik7CisgCWlmICghc3ltKQorIAkgIGVy cm9yIChfKCJubyBgJXMnIGZvdW5kIiksIHRoaXNfbmFtZSk7CisgCiBkaWZmIC0tZ2l0IGEvZ2Ri L2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXggNDhhYzIxYi4uODAwMDNiOCAxMDA2NDQKK2lu ZGV4IDQ4YWMyMWIuLjBlY2NlY2IgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suYwogKysrIGIvZ2Ri L2Jsb2NrLmMKLUBAIC0zMTgsNiArMzE4LDI1IEBAIGFsbG9jYXRlX2Jsb2NrIChzdHJ1Y3Qgb2Jz dGFjayAqb2JzdGFjaykKK0BAIC0yMjcsOCArMjI3LDkgQEAgYmxvY2tfc2V0X3Njb3BlIChzdHJ1 Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpzY29wZSwKKyAgIEJMT0NLX05BTUVTUEFDRSAo YmxvY2spLT5zY29wZSA9IHNjb3BlOworIH0KKyAKKy0vKiBUaGlzIHJldHVybnMgdGhlIHVzaW5n IGRpcmVjdGl2ZXMgbGlzdCBhc3NvY2lhdGVkIHdpdGggQkxPQ0ssIGlmCistICAgYW55LiAgKi8K KysvKiBUaGlzIHJldHVybnMgdGhlIGZpcnN0IHVzaW5nIGRpcmVjdGl2ZXMgYXNzb2NpYXRlZCB3 aXRoIEJMT0NLLCBpZgorKyAgIGFueS4gIEVhY2ggQkxPQ0tfTkFNRVNQQUNFKCktPlVTSU5HIGFs cmVhZHkgY29udGFpbnMgYWxsIHRoZSBuYW1lc3BhY2VzCisrICAgaW1wb3J0ZWQgYXQgdGhhdCBj b2RlIHBvaW50IC0gZXZlbiB0aG9zZSBmcm9tIGl0cyBwYXJlbnQgYmxvY2tzLiAgKi8KKyAKKyBz dHJ1Y3QgdXNpbmdfZGlyZWN0ICoKKyBibG9ja191c2luZyAoY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaykKK0BAIC0zMTgsNiArMzE5LDI1IEBAIGFsbG9jYXRlX2Jsb2NrIChzdHJ1Y3Qgb2JzdGFj ayAqb2JzdGFjaykKICAgIEJMT0NLX1NVUEVSQkxPQ0sgKGJsKSA9IE5VTEw7CiAgICBCTE9DS19E SUNUIChibCkgPSBOVUxMOwogICAgQkxPQ0tfTkFNRVNQQUNFIChibCkgPSBOVUxMOwpAQCAtMzY3 LDcgKzM4MSw3IEBAIGluZGV4IDdlZWRiNmMuLmIxNDc4MjYgMTAwNjQ0CiArCiAgI2VuZGlmIC8q IEJMT0NLX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9p bnQuYwotaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKK2luZGV4IGQ0MDRlZTcuLjJiZTM5 N2YgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysgYi9nZGIvYnJlYWtwb2ludC5j CiBAQCAtNjEsNiArNjEsNyBAQApAQCAtMzc4LDcgKzM5Miw3IEBAIGluZGV4IDBkYzg0NzQuLjFh MzA5YjUgMTAwNjQ0CiAgCiAgLyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcyAqLwogICNpbmNsdWRl ICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTYxNiw2ICs2MTcsNTMgQEAgZ2V0X2JyZWFrcG9p bnQgKGludCBudW0pCitAQCAtNjE0LDYgKzYxNSw1MyBAQCBnZXRfYnJlYWtwb2ludCAoaW50IG51 bSkKICB9CiAgCiAgDApAQCAtNDMyLDcgKzQ0Niw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUg MTAwNjQ0CiAgLyogY29uZGl0aW9uIE4gRVhQIC0tIHNldCBicmVhayBjb25kaXRpb24gb2YgYnJl YWtwb2ludCBOIHRvIEVYUC4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBAIC02MzYsNDIgKzY4NCw3 IEBAIGNvbmRpdGlvbl9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK0BAIC02MzQs NDIgKzY4Miw3IEBAIGNvbmRpdGlvbl9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkK ICAgIEFMTF9CUkVBS1BPSU5UUyAoYikKICAgICAgaWYgKGItPm51bWJlciA9PSBibnVtKQogICAg ICAgIHsKQEAgLTQ3Niw3ICs0OTAsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAog IAlyZXR1cm47CiAgICAgICAgfQogIAotQEAgLTE4NzAsNiArMTg4MywzNiBAQCBjcmVhdGVfbG9u Z2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoY2hhciAqZnVuY19uYW1lKQorQEAgLTE4NjgsNiArMTg4 MSwzNiBAQCBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoY2hhciAqZnVuY19uYW1l KQogICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgfQogIApAQCAtNTEzLDcgKzUyNyw3IEBA IGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgdm9pZAogIHVwZGF0ZV9icmVha3BvaW50 c19hZnRlcl9leGVjICh2b2lkKQogIHsKLUBAIC0xOTExLDcgKzE5NTQsNyBAQCB1cGRhdGVfYnJl YWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0xOTA5LDcgKzE5NTIsNyBAQCB1cGRhdGVf YnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgICAgLyogVGhyZWFkIGV2ZW50IGJyZWFr cG9pbnRzIG11c3QgYmUgc2V0IGFuZXcgYWZ0ZXIgYW4gZXhlYygpLAogICAgICAgICBhcyBtdXN0 IG92ZXJsYXkgZXZlbnQgYW5kIGxvbmdqbXAgbWFzdGVyIGJyZWFrcG9pbnRzLiAgKi8KICAgICAg aWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9l dmVudApAQCAtNTIyLDcgKzUzNiw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAg ICAgICAgewogIAlkZWxldGVfYnJlYWtwb2ludCAoYik7CiAgCWNvbnRpbnVlOwotQEAgLTE5MjYs NyArMTk2OSw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQorQEAgLTE5 MjQsNyArMTk2Nyw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQogIAog ICAgICAvKiBMb25nam1wIGFuZCBsb25nam1wLXJlc3VtZSBicmVha3BvaW50cyBhcmUgYWxzbyBt ZWFuaW5nbGVzcwogICAgICAgICBhZnRlciBhbiBleGVjLiAgKi8KQEAgLTUzMiw3ICs1NDYsNyBA QCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogICAgICAgIHsKICAJZGVsZXRlX2JyZWFr cG9pbnQgKGIpOwogIAljb250aW51ZTsKLUBAIC0xOTg3LDYgKzIwMzEsNyBAQCB1cGRhdGVfYnJl YWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0xOTg1LDYgKzIwMjksNyBAQCB1cGRhdGVf YnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9i cmVha3BvaW50ICgiX2xvbmdqbXAiKTsKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3Bv aW50ICgic2lnbG9uZ2ptcCIpOwogICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQg KCJfc2lnbG9uZ2ptcCIpOwpAQCAtNTQwLDcgKzU1NCw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5 YjUgMTAwNjQ0CiAgfQogIAogIGludAotQEAgLTIwMTAsNiArMjA1NSw3IEBAIGRldGFjaF9icmVh a3BvaW50cyAoaW50IHBpZCkKK0BAIC0yMDA4LDYgKzIwNTMsNyBAQCBkZXRhY2hfYnJlYWtwb2lu dHMgKGludCBwaWQpCiAgICAgIGlmIChiLT5pbnNlcnRlZCkKICAgICAgICB2YWwgfD0gcmVtb3Zl X2JyZWFrcG9pbnRfMSAoYiwgbWFya19pbnNlcnRlZCk7CiAgICB9CkBAIC01NDgsNyArNTYyLDcg QEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgIGRvX2NsZWFudXBzIChvbGRfY2hh aW4pOwogICAgcmV0dXJuIHZhbDsKICB9Ci1AQCAtMjEwOSwxMiArMjE1NSwxNCBAQCByZW1vdmVf YnJlYWtwb2ludF8xIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmIsIGluc2VydGlvbl9zdGF0ZV90IGlz KQorQEAgLTIxMDcsMTIgKzIxNTMsMTQgQEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3RydWN0IGJw X2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKICAJcmV0dXJuIHZhbDsKICAgICAg ICBiLT5pbnNlcnRlZCA9IChpcyA9PSBtYXJrX2luc2VydGVkKTsKICAgICAgfQpAQCAtNTY1LDcg KzU3OSw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgICAgICAgdmFsID0gdGFy Z2V0X3JlbW92ZV93YXRjaHBvaW50IChiLT5hZGRyZXNzLCBiLT5sZW5ndGgsIAogIAkJCQkgICAg ICBiLT53YXRjaHBvaW50X3R5cGUpOwogIAotQEAgLTI4OTQsNiArMjk0MiwxMiBAQCBwcmludF9p dF90eXBpY2FsIChicHN0YXQgYnMpCitAQCAtMjg5Miw2ICsyOTQwLDEyIEBAIHByaW50X2l0X3R5 cGljYWwgKGJwc3RhdCBicykKICAgICAgICByZXN1bHQgPSBQUklOVF9OT1RISU5HOwogICAgICAg IGJyZWFrOwogIApAQCAtNTc4LDcgKzU5Miw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAw NjQ0CiAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludDoKICAgICAgY2FzZSBicF9oYXJkd2FyZV93YXRj aHBvaW50OgogICAgICAgIGFubm90YXRlX3dhdGNocG9pbnQgKGItPm51bWJlcik7Ci1AQCAtMjk4 MSw2ICszMDM1LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQorQEAgLTI5NzksNiAr MzAzMyw4IEBAIHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKICAgICAgY2FzZSBicF9ub25l OgogICAgICBjYXNlIGJwX2xvbmdqbXA6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBA IC01ODcsNyArNjAxLDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgY2Fz ZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgogICAgICBj YXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtMzM4NSw4ICszNDQxLDEyIEBAIGJwc3RhdF9jaGVja19s b2NhdGlvbiAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwKK0BAIC0zMzgzLDggKzM0Mzks MTIgQEAgYnBzdGF0X2NoZWNrX2xvY2F0aW9uIChjb25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJs LAogIAogIC8qIElmIEJTIHJlZmVycyB0byBhIHdhdGNocG9pbnQsIGRldGVybWluZSBpZiB0aGUg d2F0Y2hlZCB2YWx1ZXMKICAgICBoYXMgYWN0dWFsbHkgY2hhbmdlZCwgYW5kIHdlIHNob3VsZCBz dG9wLiAgSWYgbm90LCBzZXQgQlMtPnN0b3AKQEAgLTYwMiw3ICs2MTYsNyBAQCBpbmRleCAwZGM4 NDc0Li4xYTMwOWI1IDEwMDY0NAogIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMp CiAgewogICAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCA9IGJzLT5icmVha3BvaW50X2F0 OwotQEAgLTM0NzUsOCArMzUzNSwxMCBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnBzdGF0 IGJzKQorQEAgLTM0NzMsOCArMzUzMywxMCBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnBz dGF0IGJzKQogIAkgICAgIGFueXRoaW5nIGZvciB0aGlzIHdhdGNocG9pbnQuICAqLwogIAkgIGJz LT5wcmludF9pdCA9IHByaW50X2l0X25vb3A7CiAgCSAgYnMtPnN0b3AgPSAwOwpAQCAtNjEzLDcg KzYyNyw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgfQogIAogIAotQEAgLTM1 OTAsNiArMzY1Miw4IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug KmFzcGFjZSwKK0BAIC0zNTg4LDYgKzM2NTAsOCBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVj dCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCiAgCiAgICAgICAgZm9yIChibCA9IGItPmxvYzsgYmwg IT0gTlVMTDsgYmwgPSBibC0+bmV4dCkKICAJewpAQCAtNjIyLDcgKzYzNiw3IEBAIGluZGV4IDBk Yzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCSAgLyogRm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzLCB3 ZSBsb29rIG9ubHkgYXQgdGhlIGZpcnN0IGxvY2F0aW9uLgogIAkgICAgIFRoZSB3YXRjaHBvaW50 X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29yayBvbiBlbnRpcmUgZXhwcmVzc2lvbiwKICAJICAgICBu b3QgdGhlIGluZGl2aWR1YWwgbG9jYXRpb25zLiAgRm9yIHJlYWQgd2F0Y2hvcGludHMsIHRoZQot QEAgLTM2MDcsNiArMzY3MSw3IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nf c3BhY2UgKmFzcGFjZSwKK0BAIC0zNjA1LDYgKzM2NjksNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMg KHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCiAgCSAgLyogQ29tZSBoZXJlIGlmIGl0J3Mg YSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBtYXRjaGVzICovCiAgCiAgCSAg YnMgPSBicHN0YXRfYWxsb2MgKGJsLCBicyk7CS8qIEFsbG9jIGEgYnBzdGF0IHRvIGV4cGxhaW4g c3RvcCAqLwpAQCAtNjMwLDcgKzY0NCw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0 CiAgCiAgCSAgLyogQXNzdW1lIHdlIHN0b3AuICBTaG91bGQgd2UgZmluZCB3YXRjaHBvaW50IHRo YXQgaXMgbm90IGFjdHVhbGx5CiAgCSAgICAgdHJpZ2dlcmVkLCBvciBpZiBjb25kaXRpb24gb2Yg YnJlYWtwb2ludCBpcyBmYWxzZSwgd2UnbGwgcmVzZXQKLUBAIC0zNjE0LDEyICszNjc5LDIyIEBA IGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC0z NjEyLDEyICszNjc3LDIyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKmFzcGFjZSwKICAJICBicy0+c3RvcCA9IDE7CiAgCSAgYnMtPnByaW50ID0gMTsKICAKQEAg LTY1Nyw3ICs2NzEsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIAkgICAgLyog V2UgZG8gbm90IHN0b3AgZm9yIHRoZXNlLiAgKi8KICAJICAgIGJzLT5zdG9wID0gMDsKICAJICBl bHNlCi1AQCAtMzgyOSw2ICszOTA0LDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKK0BAIC0z ODI3LDYgKzM5MDIsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogICAgc3RydWN0IGJwc3Rh dF93aGF0IHJldHZhbDsKICAKICAgIHJldHZhbC5jYWxsX2R1bW15ID0gMDsKQEAgLTY2NSw3ICs2 NzksNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogICAgZm9yICg7IGJzICE9IE5V TEw7IGJzID0gYnMtPm5leHQpCiAgICAgIHsKICAgICAgICBlbnVtIGNsYXNzIGJzX2NsYXNzID0g bm9fZWZmZWN0OwotQEAgLTM4NzUsMTAgKzM5NTEsMTUgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBi cykKK0BAIC0zODczLDEwICszOTQ5LDE1IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCiAgCSAg ICBic19jbGFzcyA9IG5vX2VmZmVjdDsKICAJICBicmVhazsKICAJY2FzZSBicF9sb25nam1wOgpA QCAtNjgxLDcgKzY5NSw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCSAgYnJl YWs7CiAgCWNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgCSAgaWYgKGJzLT5zdG9wKQotQEAgLTM5MDEs NiArMzk4Miw3IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtMzg5OSw2ICszOTgwLDcg QEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKICAJY2FzZSBicF90aHJlYWRfZXZlbnQ6CiAgCWNh c2UgYnBfb3ZlcmxheV9ldmVudDoKICAJY2FzZSBicF9sb25nam1wX21hc3RlcjoKQEAgLTY4OSw3 ICs3MDMsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIAkgIGJzX2NsYXNzID0g YnBfbm9zdG9wOwogIAkgIGJyZWFrOwogIAljYXNlIGJwX2NhdGNocG9pbnQ6Ci1AQCAtNDA0NSw2 ICs0MTI3LDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3Bv aW50ICpiLAorQEAgLTQwNDMsNiArNDEyNSw4IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0 aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICAgICAge2JwX2FjY2Vzc193YXRjaHBvaW50LCAi YWNjIHdhdGNocG9pbnQifSwKICAgICAge2JwX2xvbmdqbXAsICJsb25nam1wIn0sCiAgICAgIHti cF9sb25nam1wX3Jlc3VtZSwgImxvbmdqbXAgcmVzdW1lIn0sCkBAIC02OTgsNyArNzEyLDcgQEAg aW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAge2JwX3N0ZXBfcmVzdW1lLCAic3Rl cCByZXN1bWUifSwKICAgICAge2JwX3dhdGNocG9pbnRfc2NvcGUsICJ3YXRjaHBvaW50IHNjb3Bl In0sCiAgICAgIHticF9jYWxsX2R1bW15LCAiY2FsbCBkdW1teSJ9LAotQEAgLTQwNTIsNiArNDEz Niw3IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAq YiwKK0BAIC00MDUwLDYgKzQxMzQsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgIHticF90aHJlYWRfZXZlbnQsICJ0aHJlYWQgZXZl bnRzIn0sCiAgICAgIHticF9vdmVybGF5X2V2ZW50LCAib3ZlcmxheSBldmVudHMifSwKICAgICAg e2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0ZXIifSwKQEAgLTcwNiw3ICs3MjAsNyBA QCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogICAgICB7YnBfY2F0Y2hwb2ludCwgImNh dGNocG9pbnQifSwKICAgICAge2JwX3RyYWNlcG9pbnQsICJ0cmFjZXBvaW50In0sCiAgICAgIHti cF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRyYWNlcG9pbnQifSwKLUBAIC00MTc2LDYgKzQyNjEs OCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIs CitAQCAtNDE3NCw2ICs0MjU5LDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpiLAogICAgICAgIGNhc2UgYnBfZmluaXNoOgogICAgICAgIGNhc2Ug YnBfbG9uZ2ptcDoKICAgICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgpAQCAtNzE1LDcgKzcy OSw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgICAgICAgY2FzZSBicF9zdGVw X3Jlc3VtZToKICAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6CiAgICAgICAgY2FzZSBi cF9jYWxsX2R1bW15OgotQEAgLTQxODMsNiArNDI3MCw3IEBAIHByaW50X29uZV9icmVha3BvaW50 X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MTgxLDYgKzQyNjgsNyBAQCBw cmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAg ICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6CiAgICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50Ogog ICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC03MjMsNyArNzM3LDcgQEAgaW5kZXgg MGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgICBjYXNlIGJwX3RyYWNlcG9pbnQ6CiAgICAg ICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6Ci1A QCAtNDgyMSw2ICs0OTA5LDggQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3Bv aW50ICpicHQpCitAQCAtNDgxOSw2ICs0OTA3LDggQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfZmluaXNoOgogICAgICBjYXNlIGJw X2xvbmdqbXA6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC03MzIsNyArNzQ2LDcg QEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgY2FzZSBicF9zdGVwX3Jlc3Vt ZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgogICAgICBjYXNlIGJwX2NhbGxfZHVt bXk6Ci1AQCAtNDgyOSw2ICs0OTE5LDcgQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBi cmVha3BvaW50ICpicHQpCitAQCAtNDgyNyw2ICs0OTE3LDcgQEAgYWxsb2NhdGVfYnBfbG9jYXRp b24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfb3ZlcmxheV9ldmVudDoK ICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBA IC03NDAsNyArNzU0LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgICBs b2MtPmxvY190eXBlID0gYnBfbG9jX3NvZnR3YXJlX2JyZWFrcG9pbnQ7CiAgICAgICAgYnJlYWs7 CiAgICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtwb2ludDoKLUBAIC01MDE1LDggKzUxMDYsNyBA QCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC01 MDEzLDggKzUxMDQsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChzdHJ1Y3QgYnJlYWtw b2ludCAqYikKICB9CiAgCiAgLyogQ2FsbCB0aGlzIHJvdXRpbmUgd2hlbiBzdGVwcGluZyBhbmQg bmV4dGluZyB0byBlbmFibGUgYSBicmVha3BvaW50CkBAIC03NTAsNyArNzY0LDcgQEAgaW5kZXgg MGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAKICB2b2lkCiAgc2V0X2xvbmdqbXBfYnJlYWtwb2lu dCAoaW50IHRocmVhZCkKLUBAIC01MDI5LDEwICs1MTE5LDExIEBAIHNldF9sb25nam1wX2JyZWFr cG9pbnQgKGludCB0aHJlYWQpCitAQCAtNTAyNywxMCArNTExNywxMSBAQCBzZXRfbG9uZ2ptcF9i cmVha3BvaW50IChpbnQgdGhyZWFkKQogICAgICAgY2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUg dGhlbSBmb3IgdGhlIHJlcXVlc3RlZCB0aHJlYWQuICAqLwogICAgQUxMX0JSRUFLUE9JTlRTX1NB RkUgKGIsIHRlbXApCiAgICAgIGlmIChiLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNl CkBAIC03NjQsNyArNzc4LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAJY2xv bmUtPnRocmVhZCA9IHRocmVhZDsKICAgICAgICB9CiAgfQotQEAgLTUwNDQsNyArNTEzNSw3IEBA IGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCitAQCAtNTA0Miw3ICs1MTMz LDcgQEAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkKICAgIHN0cnVjdCBi cmVha3BvaW50ICpiLCAqdGVtcDsKICAKICAgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCB0ZW1w KQpAQCAtNzczLDcgKzc4Nyw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgICAg ICAgewogIAlpZiAoYi0+dGhyZWFkID09IHRocmVhZCkKICAJICBkZWxldGVfYnJlYWtwb2ludCAo Yik7Ci1AQCAtNjExOSw2ICs2MjEwLDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIp CitAQCAtNjExNyw2ICs2MjA4LDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAg ICAgICAgY2FzZSBicF9maW5pc2g6CiAgICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICAgIGNh c2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC03ODIsNyArNzk2LDcgQEAgaW5kZXggMGRjODQ3NC4u MWEzMDliNSAxMDA2NDQKICAgICAgICBjYXNlIGJwX3N0ZXBfcmVzdW1lOgogICAgICAgIGNhc2Ug YnBfY2FsbF9kdW1teToKICAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6Ci1AQCAtNjEy Nyw2ICs2MjIwLDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNjEyNSw2 ICs2MjE4LDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAgICAgICAgY2FzZSBi cF9vdmVybGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgogICAgICAgIGNhc2Ug YnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC03OTAsNyArODA0LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEz MDliNSAxMDA2NDQKICAJYnJlYWs7CiAgICAgICAgfQogIAotQEAgLTc1MTEsNiArNzYwNSw3IEBA IHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzCitAQCAtNzUwOSw2 ICs3NjAzLDcgQEAgc3RydWN0IHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MK ICB7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKICAgIHN0cnVjdCBicmVha3Bv aW50ICpicmVha3BvaW50MjsKQEAgLTc5OCw3ICs4MTIsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMw OWI1IDEwMDY0NAogIH07CiAgCiAgLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZmV0Y2hf aW5mZXJpb3JfZXZlbnQgdmlhIHRoZQotQEAgLTc1MjUsNiArNzYyMCw3IEBAIHVudGlsX2JyZWFr X2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCitAQCAtNzUyMyw2ICs3NjE4LDcgQEAg dW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKICAgIGRlbGV0ZV9i cmVha3BvaW50IChhLT5icmVha3BvaW50KTsKICAgIGlmIChhLT5icmVha3BvaW50MikKICAgICAg ZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQyKTsKQEAgLTgwNiw3ICs4MjAsNyBAQCBp bmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIH0KICAKICB2b2lkCi1AQCAtNzUzNiw2ICs3 NjMyLDggQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGlu dCBhbnl3aGVyZSkKK0BAIC03NTM0LDYgKzc2MzAsOCBAQCB1bnRpbF9icmVha19jb21tYW5kIChj aGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogICAgc3RydWN0IGJyZWFrcG9p bnQgKmJyZWFrcG9pbnQ7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDIgPSBOVUxM OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKQEAgLTgxNSw3ICs4MjksNyBAQCBpbmRl eCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIAogICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7 CiAgCi1AQCAtNzU3NCw2ICs3NjcyLDkgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJn LCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTcyLDYgKzc2NzAsOSBAQCB1bnRp bF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQog IAogICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3Bv aW50KTsKICAKQEAgLTgyNSw3ICs4MzksNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0 NAogICAgLyogS2VlcCB3aXRoaW4gdGhlIGN1cnJlbnQgZnJhbWUsIG9yIGluIGZyYW1lcyBjYWxs ZWQgYnkgdGhlIGN1cnJlbnQKICAgICAgIG9uZS4gICovCiAgCi1AQCAtNzU4Niw2ICs3Njg3LDEw IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55 d2hlcmUpCitAQCAtNzU4NCw2ICs3Njg1LDEwIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIg KmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgCQkJCQkgICAgICBmcmFtZV91bndp bmRfY2FsbGVyX2lkIChmcmFtZSksCiAgCQkJCQkgICAgICBicF91bnRpbCk7CiAgICAgICAgbWFr ZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50Mik7CkBAIC04MzYsNyArODUw LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgfQogIAogICAgcHJvY2Vl ZCAoLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVMVCwgMCk7Ci1AQCAtNzYwMiw2ICs3NzA3LDcgQEAg dW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVy ZSkKK0BAIC03NjAwLDYgKzc3MDUsNyBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogIAogICAgICAgIGFyZ3MtPmJyZWFrcG9pbnQg PSBicmVha3BvaW50OwogICAgICAgIGFyZ3MtPmJyZWFrcG9pbnQyID0gYnJlYWtwb2ludDI7CkBA IC04NDQsNyArODU4LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAKICAgICAg ICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwogICAgICAgIGFkZF9jb250aW51YXRpb24g KGluZmVyaW9yX3RocmVhZCAoKSwKLUBAIC04ODIzLDYgKzg5MjksNyBAQCBkZWxldGVfY29tbWFu ZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCitAQCAtODc4NSw2ICs4ODkxLDcgQEAgZGVsZXRl X2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkgICAgJiYgYi0+dHlwZSAhPSBi cF90aHJlYWRfZXZlbnQKICAJICAgICYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAogIAkg ICAgJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpAQCAtODUyLDcgKzg2Niw3IEBAIGlu ZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCSAgICAmJiBiLT5udW1iZXIgPj0gMCkKICAJ ICB7CiAgCSAgICBicmVha3NfdG9fZGVsZXRlID0gMTsKLUBAIC04ODQyLDYgKzg5NDksNyBAQCBk ZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCitAQCAtODgwNCw2ICs4OTEx LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkJJiYgYi0+ dHlwZSAhPSBicF9qaXRfZXZlbnQKICAJCSYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAog IAkJJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpAQCAtODYwLDcgKzg3NCw3IEBAIGlu ZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCQkmJiBiLT5udW1iZXIgPj0gMCkKICAJICAg ICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogIAkgIH0KLUBAIC05MTUyLDYgKzkyNjAsNyBAQCBi cmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCitAQCAtOTExNCw2ICs5MjIyLDcgQEAg YnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQogIAkgcmVzZXQgbGF0ZXIgYnkgYnJl YWtwb2ludF9yZV9zZXQuICAqLwogICAgICBjYXNlIGJwX292ZXJsYXlfZXZlbnQ6CiAgICAgIGNh c2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC04NjgsNyArODgyLDcgQEAgaW5kZXggMGRjODQ3NC4u MWEzMDliNSAxMDA2NDQKICAgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CiAgICAgICAgYnJl YWs7CiAgCi1AQCAtOTE3NCw2ICs5MjgzLDggQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lk ICpiaW50KQorQEAgLTkxMzYsNiArOTI0NSw4IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9p ZCAqYmludCkKICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF9sb25nam1w OgogICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgpAQCAtODc3LDcgKzg5MSw3IEBAIGluZGV4 IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgogICAgICAg IGJyZWFrOwogICAgICB9Ci1AQCAtOTIxNiw2ICs5MzI3LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQg KHZvaWQpCitAQCAtOTE3OCw2ICs5Mjg5LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAg ICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoIl9sb25nam1wIik7CiAgICBjcmVh dGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKICAgIGNyZWF0ZV9s b25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKQEAgLTg4NSw3ICs4OTks NyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIH0KICAMCiAgLyogUmVzZXQgdGhl IHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVha3BvaW50OgotQEAgLTEwMTc3LDYgKzEwMjg5LDIy IEBAIGFsbF90cmFjZXBvaW50cyAoKQorQEAgLTEwMTczLDYgKzEwMjg1LDIyIEBAIGFsbF90cmFj ZXBvaW50cyAoKQogICAgcmV0dXJuIHRwX3ZlYzsKICB9CiAgCkBAIC05MDgsNyArOTIyLDcgQEAg aW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBp cyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRz LgogICAgIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgot QEAgLTEwNzIxLDQgKzEwODQ5LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJl aGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAorQEAgLTEwNzE3LDQg KzEwODQ1LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYg YWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAogICAgYXV0b21hdGljX2hhcmR3YXJlX2Jy ZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChi cmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwpAQCAtOTYzLDMwICs5NzcsMTczIEBAIGluZGV4 IDZiMzczYTMuLjU5YWE0MTIgMTAwNjQ0CiAgLyogUmV0dXJuIGEgdHJhY2Vwb2ludCB3aXRoIHRo ZSBnaXZlbiBudW1iZXIgaWYgZm91bmQuICAqLwogIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAq Z2V0X3RyYWNlcG9pbnQgKGludCBudW0pOwogIAotZGlmZiAtLWdpdCBhL2dkYi9jLWxhbmcuYyBi L2dkYi9jLWxhbmcuYwotaW5kZXggZDYyMDg4MS4uZDRhMjI5ZCAxMDA2NDQKLS0tLSBhL2dkYi9j LWxhbmcuYwotKysrIGIvZ2RiL2MtbGFuZy5jCi1AQCAtNzE3LDcgKzcxNyw3IEBAIGNfZ2V0X3N0 cmluZyAoc3RydWN0IHZhbHVlICp2YWx1ZSwgZ2RiX2J5dGUgKipidWZmZXIsIGludCAqbGVuZ3Ro LAotICAgICAgSWYgbGVuZ3RoIHJldHVybmVkIGZyb20gcmVhZF9zdHJpbmcgd2FzID4gMCwgcmV0 dXJuIHRoZSBudW1iZXIgb2YKLSAgICAgIGNoYXJhY3RlcnMgcmVhZCBieSBkaXZpZGluZyB0aGUg bnVtYmVyIG9mIGJ5dGVzIGJ5IHdpZHRoLiAgKi8KLSAgIGlmICgqbGVuZ3RoICE9IDApCi0tICAg ICAqbGVuZ3RoID0gKmxlbmd0aCAvIHdpZHRoOwotKyAgICAqbGVuZ3RoID0gKmxlbmd0aCAvIHdp ZHRoOwotIAotICAgKmNoYXJfdHlwZSA9IGVsZW1lbnRfdHlwZTsKK2RpZmYgLS1naXQgYS9nZGIv Yy1leHAueSBiL2dkYi9jLWV4cC55CitpbmRleCA4ZTAwOTc5Li45MmVmYjM5IDEwMDY0NAorLS0t IGEvZ2RiL2MtZXhwLnkKKysrKyBiL2dkYi9jLWV4cC55CitAQCAtNDE4LDYgKzQxOCwyNCBAQCBl eHAgICAgIDogICAgICAgZXhwICcoJyBub25lbXB0eV90eXBlbGlzdCAnKScgY29uc3Rfb3Jfdm9s YXRpbGUKKyAJCQl9CisgCTsKKyAKKysvKgorK2V4cCAgICAgOiAgICAgICBCTE9DS05BTUUgJygn IG5vbmVtcHR5X3R5cGVsaXN0ICcpJworKwkJCXsgaW50IGk7CisrCQkJICB3cml0ZV9leHBfZWx0 X29wY29kZSAoVFlQRV9JTlNUQU5DRV9MT09LVVApOworKwkJCSAgd3JpdGVfZXhwX2VsdF9zeW0g KCQxLnN5bSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRV9MT09L VVApOworKworKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFRZUEVfSU5TVEFOQ0UpOworKwkJ CSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgJDxpdmVjPjNbMF0pOworKwkJCSAg Zm9yIChpID0gMDsgaSA8ICQ8aXZlYz4zWzBdOyArK2kpCisrCQkJICAgIHdyaXRlX2V4cF9lbHRf dHlwZSAoJDx0dmVjPjNbaSArIDFdKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCgoTE9O R0VTVCkgJDxpdmVjPjNbMF0pOworKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFRZUEVfSU5T VEFOQ0UpOworKwkJCSAgZG9fY2xlYW51cHMgKHR5cGVsaXN0X2NsZWFudXApOworKwkJCX0KKysJ OworKyovCisrCisgcmN1cmx5CToJJ30nCisgCQkJeyAkJCA9IGVuZF9hcmdsaXN0ICgpIC0gMTsg fQorIAk7CitAQCAtNzg1LDEyICs4MDMsMTMgQEAgcXVhbGlmaWVkX25hbWU6CXR5cGViYXNlIENP TE9OQ09MT04gbmFtZQorIAk7CisgCisgdmFyaWFibGU6CXF1YWxpZmllZF9uYW1lCisrCXwJQ09M T05DT0xPTiBxdWFsaWZpZWRfbmFtZQorIAl8CUNPTE9OQ09MT04gbmFtZQorIAkJCXsKKyAJCQkg IGNoYXIgKm5hbWUgPSBjb3B5X25hbWUgKCQyKTsKKyAJCQkgIHN0cnVjdCBzeW1ib2wgKnN5bTsK KyAJCQkgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbDsKKy0KKysJCQkgIAorIAkJCSAg c3ltID0KKyAJCQkgICAgbG9va3VwX3N5bWJvbCAobmFtZSwgKGNvbnN0IHN0cnVjdCBibG9jayAq KSBOVUxMLAorIAkJCQkJICAgVkFSX0RPTUFJTiwgKGludCAqKSBOVUxMKTsKK0BAIC0yMDMzLDYg KzIwNTIsMTMgQEAgc3RhdGljIGludCBsYXN0X3dhc19zdHJ1Y3RvcDsKKyBzdGF0aWMgaW50Cisg eXlsZXggKHZvaWQpCisgeworKyAgLyogbmFtZV9wcmVmaXggc3RvcmVzIHRoZSBmdWxsIHF1YWxp ZmljYXRpb24gb2YgYSB2YXJpYWJsZSB0aGF0IGlzCisrICAgICBzcGVjaWZpZWQgaW4gdGhlIGV4 cHJlc3Npb24uIEl0IGlzIHVzZWQgdG8gZWxlbWluYXRlIGNvbmZ1c2lvbiAKKysgICAgIGR1cmlu ZyBsb29rdXAuKi8KKysgIHN0YXRpYyBjaGFyICpuYW1lX3ByZWZpeCA9IE5VTEw7CisrICBzdGF0 aWMgaW50IG5hbWVfcHJlZml4X2xlbiA9IDA7CisrICBzdGF0aWMgaW50IHRlcm1pbmF0ZV9wcmVm aXggPSAwOworKyAgCisgICBpbnQgYzsKKyAgIGludCBuYW1lbGVuOworICAgdW5zaWduZWQgaW50 IGk7CitAQCAtMjA0MSw5ICsyMDY3LDE5IEBAIHl5bGV4ICh2b2lkKQorICAgY2hhciAqY29weTsK ICAKLUBAIC0xMDQwLDYgKzEwNDAsOSBAQCBldmFsdWF0ZV9zdWJleHBfYyAoc3RydWN0IHR5cGUg KmV4cGVjdF90eXBlLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotICAgcmV0dXJuIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUpOwotIH0KKyAg IGxhc3Rfd2FzX3N0cnVjdG9wID0gMDsKKy0KKysgIAorICByZXRyeToKKy0KKysgIAorKyAgaWYg KHRlcm1pbmF0ZV9wcmVmaXgKKysgICAgICB8fCBsZXhwdHIgIT0gbmFtZV9wcmVmaXggKyBuYW1l X3ByZWZpeF9sZW4pCisrICAgIHsKKysgICAgICAvKiBTb21lIHRva2VuIHdhcyBza2lwcGVkLCBz byBjbGVhciBuYW1lX3ByZWZpeC4gKi8KKysgICAgICBuYW1lX3ByZWZpeCA9IE5VTEw7CisrICAg ICAgbmFtZV9wcmVmaXhfbGVuID0gMDsKKysgICAgfQorKyAgICAKKysgIHRlcm1pbmF0ZV9wcmVm aXggPSAxOworKyAgCSAgCSAgCisgICAvKiBDaGVjayBpZiB0aGlzIGlzIGEgbWFjcm8gaW52b2Nh dGlvbiB0aGF0IHdlIG5lZWQgdG8gZXhwYW5kLiAgKi8KKyAgIGlmICghIHNjYW5uaW5nX21hY3Jv X2V4cGFuc2lvbiAoKSkKKyAgICAgeworQEAgLTIwNzksMTAgKzIxMTUsMTkgQEAgeXlsZXggKHZv aWQpCisgCSAgICAmJiBwYXJzZV9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfY3Bs dXMpCisgCSAgYnJlYWs7CiAgCi0rDAotKy8qIFByZXByb2Nlc3NpbmcgYW5kIHBhcnNpbmcgQyBh bmQgQysrIGV4cHJlc3Npb25zLiAgKi8KKysJaWYgKHRva2VudGFiMltpXS50b2tlbiA9PSBDT0xP TkNPTE9OKQorKwkgIHsKKysJICAgIG5hbWVfcHJlZml4X2xlbiArPSAyOworKwkgICAgdGVybWlu YXRlX3ByZWZpeCA9IDA7CisrCSAgICBpZiAobmFtZV9wcmVmaXggPT0gTlVMTCkKKysJICAgICAg bmFtZV9wcmVmaXggPSBsZXhwdHI7CisrCSAgfQogKworIAlsZXhwdHIgKz0gMjsKKyAJeXlsdmFs Lm9wY29kZSA9IHRva2VudGFiMltpXS5vcGNvZGU7CisgCWlmIChpbl9wYXJzZV9maWVsZCAmJiB0 b2tlbnRhYjJbaV0udG9rZW4gPT0gQVJST1cpCisgCSAgbGFzdF93YXNfc3RydWN0b3AgPSAxOwor KwkKKyAJcmV0dXJuIHRva2VudGFiMltpXS50b2tlbjsKKyAgICAgICB9CiAgCi0gDAotIC8qIFRh YmxlIG1hcHBpbmcgb3Bjb2RlcyBpbnRvIHN0cmluZ3MgZm9yIHByaW50aW5nIG9wZXJhdG9ycwot QEAgLTExNDAsNiArMTE0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3Ig ZXhwX2Rlc2NyaXB0b3JfYyA9CitAQCAtMjExMSw2ICsyMTU2LDggQEAgeXlsZXggKHZvaWQpCisg ICAgICAgICByZXR1cm4gMDsKKyAKKyAgICAgY2FzZSAnICc6CisrICAgICAgbmFtZV9wcmVmaXhf bGVuKys7CisrICAgICAgdGVybWluYXRlX3ByZWZpeCA9IDA7CisgICAgIGNhc2UgJ1x0JzoKKyAg ICAgY2FzZSAnXG4nOgorICAgICAgIGxleHB0cisrOworQEAgLTIyNjgsMTEgKzIzMTUsMTMgQEAg eXlsZXggKHZvaWQpCisgICAgIGVycm9yICgiSW52YWxpZCBjaGFyYWN0ZXIgJyVjJyBpbiBleHBy ZXNzaW9uLiIsIGMpOworIAorICAgLyogSXQncyBhIG5hbWUuICBTZWUgaG93IGxvbmcgaXQgaXMu ICAqLworKyAgCisgICBuYW1lbGVuID0gMDsKKyAgIGZvciAoYyA9IHRva3N0YXJ0W25hbWVsZW5d OworICAgICAgICAoYyA9PSAnXycgfHwgYyA9PSAnJCcgfHwgKGMgPj0gJzAnICYmIGMgPD0gJzkn KQorIAl8fCAoYyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChjID49ICdBJyAmJiBjIDw9ICdaJykg fHwgYyA9PSAnPCcpOykKKyAgICAgeworKyAgICAKKyAgICAgICAvKiBUZW1wbGF0ZSBwYXJhbWV0 ZXIgbGlzdHMgYXJlIHBhcnQgb2YgdGhlIG5hbWUuCisgCSBGSVhNRTogVGhpcyBtaXNoYW5kbGVz IGBwcmludCAkYTw0JiYkYT4zJy4gICovCisgCitAQCAtMjM1NywxNCArMjQwNiwyOSBAQCB5eWxl eCAodm9pZCkKKyAgICAgIGN1cnJlbnRseSBhcyBuYW1lcyBvZiB0eXBlczsgTkFNRSBmb3Igb3Ro ZXIgc3ltYm9scy4KKyAgICAgIFRoZSBjYWxsZXIgaXMgbm90IGNvbnN0cmFpbmVkIHRvIGNhcmUg YWJvdXQgdGhlIGRpc3RpbmN0aW9uLiAgKi8KKyAgIHsKKysgICAgY2hhciAqdG1wID0gY29weTsK KyAgICAgc3RydWN0IHN5bWJvbCAqc3ltOworICAgICBpbnQgaXNfYV9maWVsZF9vZl90aGlzID0g MDsKKyAgICAgaW50IGhleHR5cGU7CisgCistICAgIHN5bSA9IGxvb2t1cF9zeW1ib2wgKGNvcHks IGV4cHJlc3Npb25fY29udGV4dF9ibG9jaywKKysgICAgaWYgKG5hbWVfcHJlZml4ICE9IE5VTEwp CisrICAgICAgdG1wID0gc2F2ZXN0cmluZyAobmFtZV9wcmVmaXgsIG5hbWVfcHJlZml4X2xlbitu YW1lbGVuKTsKKysKKysgICAgc3ltID0gbG9va3VwX3N5bWJvbCAodG1wLCBleHByZXNzaW9uX2Nv bnRleHRfYmxvY2ssCisgCQkJIFZBUl9ET01BSU4sCisgCQkJIHBhcnNlX2xhbmd1YWdlLT5sYV9s YW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cworIAkJCSA/ICZpc19hX2ZpZWxkX29mX3RoaXMgOiAo aW50ICopIE5VTEwpOworKwkJCSAKKysgICAgLyogS2VlcCB0aGlzIG5hbWUgYXMgdGhlIHByZWZp eCBmb3IgdGhlIG5leHQgbmFtZS4gKi8KKysgICAgaWYgKHN5bSkKKysgICAgICB7CisrCWlmIChu YW1lX3ByZWZpeCA9PSBOVUxMKQorKwkgIG5hbWVfcHJlZml4ID0gdG9rc3RhcnQ7CisrCisrCW5h bWVfcHJlZml4X2xlbiArPSBuYW1lbGVuOworKwl0ZXJtaW5hdGVfcHJlZml4ID0gMDsKKysgICAg ICB9CisrCisgICAgIC8qIENhbGwgbG9va3VwX3N5bXRhYiwgbm90IGxvb2t1cF9wYXJ0aWFsX3N5 bXRhYiwgaW4gY2FzZSB0aGVyZSBhcmUKKyAgICAgICAgbm8gcHN5bXRhYnMgKGNvZmYsIHhjb2Zm LCBvciBzb21lIGZ1dHVyZSBjaGFuZ2UgdG8gYmxvdyBhd2F5IHRoZQorICAgICAgICBwc3ltdGFi cyBvbmNlIG9uY2Ugc3ltYm9scyBhcmUgcmVhZCkuICAqLworQEAgLTI0MjMsNiArMjQ4Nyw3IEBA IHl5bGV4ICh2b2lkKQorICAgICB5eWx2YWwuc3N5bS5pc19hX2ZpZWxkX29mX3RoaXMgPSBpc19h X2ZpZWxkX29mX3RoaXM7CisgICAgIGlmIChpbl9wYXJzZV9maWVsZCAmJiAqbGV4cHRyID09ICdc MCcpCisgICAgICAgc2F3X25hbWVfYXRfZW9mID0gMTsKKysgICAgICAgIAorICAgICByZXR1cm4g TkFNRTsKKyAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL2MtbGFuZy5jIGIvZ2RiL2MtbGFuZy5j CitpbmRleCBkNjIwODgxLi4zNGNiMzRhIDEwMDY0NAorLS0tIGEvZ2RiL2MtbGFuZy5jCisrKysg Yi9nZGIvYy1sYW5nLmMKK0BAIC0xMTQwLDYgKzExNDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX2MgPQogIHsKICAgIHByaW50X3N1YmV4cF9z dGFuZGFyZCwKICAgIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKQEAgLTk5NSwxNjMgKzExNTIs MTE3IEBAIGluZGV4IGQ2MjA4ODEuLmQ0YTIyOWQgMTAwNjQ0CiAgICBkdW1wX3N1YmV4cF9ib2R5 X3N0YW5kYXJkLAogICAgZXZhbHVhdGVfc3ViZXhwX2MKIGRpZmYgLS1naXQgYS9nZGIvYy10eXBl cHJpbnQuYyBiL2dkYi9jLXR5cGVwcmludC5jCi1pbmRleCBkMWFmNDgxLi4xYzkzMGI1IDEwMDY0 NAoraW5kZXggZDFhZjQ4MS4uOTZiMDcwNSAxMDA2NDQKIC0tLSBhL2dkYi9jLXR5cGVwcmludC5j CiArKysgYi9nZGIvYy10eXBlcHJpbnQuYwotQEAgLTU1OCw3ICs1NTgsMTIgQEAgY190eXBlX3By aW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOwotIAotICAgICAgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIlsiKTsKLS0gICAgICBpZiAoVFlQRV9MRU5HVEggKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKSA+IDAKLSsgICAgICBpZiAoVFlQRV9BUlJBWV9VUFBFUl9CT1VO RF9JU19EV0FSRl9CTE9DSyAodHlwZSkpCi0rCXsKLSsJICAvKiBObyBfKCkgLSBwcmludGVkIHNv dXJjZXMgc2hvdWxkIG5vdCBiZSBsb2NhbGUgZGVwZW5kZW50LiAgKi8KLSsJICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICJ2YXJpYWJsZSIpOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoVFlQRV9M RU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA+IDAKLSAJJiYgIVRZUEVfQVJSQVlfVVBQ RVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiJWQiLAotIAkJCSAgKFRZUEVfTEVOR1RIICh0eXBlKQotZGlmZiAtLWdpdCBhL2dkYi9jbGkv Y2xpLWNtZHMuYyBiL2dkYi9jbGkvY2xpLWNtZHMuYwotaW5kZXggNDgzMzg5OC4uOTkyYzQ2ZiAx MDA2NDQKLS0tLSBhL2dkYi9jbGkvY2xpLWNtZHMuYwotKysrIGIvZ2RiL2NsaS9jbGktY21kcy5j Ci1AQCAtNDcsNiArNDcsOCBAQCBleHRlcm4gdm9pZCBkaXNjb25uZWN0X29yX3N0b3BfdHJhY2lu ZyAoaW50IGZyb21fdHR5KTsKLSAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCi0gI2luY2x1 ZGUgImNsaS9jbGktY21kcy5oIgotIAotKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi0rCi0g I2lmZGVmIFRVSQotICNpbmNsdWRlICJ0dWkvdHVpLmgiCQkvKiBGb3IgdHVpX2FjdGl2ZSBldC5h bC4gICAqLwotICNlbmRpZgotQEAgLTE4NCw2ICsxODYsNyBAQCBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqc2hvd2NoZWNrbGlzdDsKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgImMtbGFu Zy5oIgorICNpbmNsdWRlICJ0eXBlcHJpbnQuaCIKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisrI2lu Y2x1ZGUgImp2LWxhbmcuaCIKICAKLSAvKiBDb21tYW5kIHRyYWNpbmcgc3RhdGUuICAqLworICNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCisgI2luY2x1ZGUgPGVycm5vLmg+CitAQCAtNDAsOCArNDEs NiBAQCBzdGF0aWMgdm9pZCBjcF90eXBlX3ByaW50X21ldGhvZF9hcmdzIChzdHJ1Y3QgdHlwZSAq bXR5cGUsIGNoYXIgKnByZWZpeCwKKyAJCQkJICAgICAgIGNoYXIgKnZhcnN0cmluZywgaW50IHN0 YXRpY3AsCisgCQkJCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKICAKLStzdGF0aWMg aW50IHNvdXJjZV9weXRob24gPSAwOwotIGludCBzb3VyY2VfdmVyYm9zZSA9IDA7Ci0gaW50IHRy YWNlX2NvbW1hbmRzID0gMDsKLSAMCi1AQCAtNDQ4LDYgKzQ1MSw3IEBAIHNvdXJjZV9zY3JpcHQg KGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKLSAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51 cHM7Ci0gICBjaGFyICpmdWxsX3BhdGhuYW1lID0gTlVMTDsKLSAgIGludCBmZDsKLSsgIGludCBp c19weXRob247Cistc3RhdGljIHZvaWQgY190eXBlX3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICos IHN0cnVjdCB1aV9maWxlICopOworLQorIHN0YXRpYyB2b2lkIGNwX3R5cGVfcHJpbnRfZGVyaXZh dGlvbl9pbmZvIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKLSAgIGlmIChm aWxlID09IE5VTEwgfHwgKmZpbGUgPT0gMCkKLSAgICAgewotQEAgLTQ4MCw4ICs0ODQsMTYgQEAg c291cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21fdHR5KQotIAl9Ci0gICAgIH0KKyBz dGF0aWMgdm9pZCBjX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB1aV9maWxlICosIGludCwKK0BAIC0xOTcsNiArMTk2LDIzIEBAIGNwX3R5cGVfcHJpbnRf bWV0aG9kX2FyZ3MgKHN0cnVjdCB0eXBlICptdHlwZSwgY2hhciAqcHJlZml4LCBjaGFyICp2YXJz dHJpbmcsCisgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZvaWQiKTsKICAKLSsgIGlz X3B5dGhvbiA9IHNvdXJjZV9weXRob247Ci0rICBpZiAoc3RybGVuIChmaWxlKSA+IDMgJiYgIXN0 cmNtcCAoJmZpbGVbc3RybGVuIChmaWxlKSAtIDNdLCAiLnB5IikpCi0rICAgIGlzX3B5dGhvbiA9 IDE7CisgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CiArCi0gICBzdHJlYW0gPSBm ZG9wZW4gKGZkLCBGT1BFTl9SVCk7Ci0tICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUp OworKyAgLyogRm9yIG5vbi1zdGF0aWMgbWV0aG9kcywgcmVhZCBxdWFsaWZpZXJzIGZyb20gdGhl IHR5cGUgb2YKKysgICAgIFRISVMuICAqLworKyAgaWYgKCFzdGF0aWNwKQorKyAgICB7CisrICAg ICAgc3RydWN0IHR5cGUgKmRvbWFpbjsKICsKLSsgIGlmIChpc19weXRob24pCi0rICAgIHNvdXJj ZV9weXRob25fc2NyaXB0IChzdHJlYW0sIGZpbGUpOwotKyAgZWxzZQotKyAgICBzY3JpcHRfZnJv bV9maWxlIChzdHJlYW0sIGZpbGUpOwotIAotICAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7 Ci0gfQotQEAgLTQ5NSwxNSArNTA3LDMwIEBAIHNvdXJjZV92ZXJib3NlX2NsZWFudXAgKHZvaWQg Km9sZF92YWx1ZSkKLSAgIHhmcmVlIChvbGRfdmFsdWUpOworKyAgICAgIGdkYl9hc3NlcnQgKG5h cmdzID4gMCk7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFIChhcmdzWzBdLnR5cGUpID09 IFRZUEVfQ09ERV9QVFIpOworKyAgICAgIGRvbWFpbiA9IFRZUEVfVEFSR0VUX1RZUEUgKGFyZ3Nb MF0udHlwZSk7CisrCisrICAgICAgaWYgKFRZUEVfQ09OU1QgKGRvbWFpbikpCisrCWZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIiBjb25zdCIpOworKworKyAgICAgIGlmIChUWVBFX1ZPTEFUSUxF IChkb21haW4pKQorKwlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgdm9sYXRpbGUiKTsKKysg ICAgfQogIH0KICAKLSsvKiBBIGhlbHBlciBmb3Igc291cmNlX2NvbW1hbmQuICBMb29rIGZvciBh biBhcmd1bWVudCBpbiAqQVJHUy4KLSsgICBVcGRhdGUgKkFSR1MgYnkgc3RyaXBwaW5nIGxlYWRp bmcgd2hpdGVzcGFjZS4gIElmIGFuIGFyZ3VtZW50IGlzCi0rICAgZm91bmQsIHJldHVybiBpdCAo YSBjaGFyYWN0ZXIpLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCi0rc3RhdGljIGludAotK2Zp bmRfYXJndW1lbnQgKGNoYXIgKiphcmdzKQotK3sKLSsgIGludCByZXN1bHQgPSAwOwotKyAgd2hp bGUgKGlzc3BhY2UgKCgqYXJncylbMF0pKQotKyAgICArKyphcmdzOwotKyAgaWYgKCgqYXJncylb MF0gPT0gJy0nICYmIGlzYWxwaGEgKCgqYXJncylbMV0pKQotKyAgICB7Ci0rICAgICAgcmVzdWx0 ID0gKCphcmdzKVsxXTsKLSsgICAgICAqYXJncyArPSAzOwotKyAgICB9Ci0rICByZXR1cm4gcmVz dWx0OwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHNvdXJjZV9jb21tYW5kIChjaGFyICphcmdzLCBp bnQgZnJvbV90dHkpCi0gewotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwczsKLS0gIGNo YXIgKmZpbGUgPSBhcmdzOwotLSAgaW50ICpvbGRfc291cmNlX3ZlcmJvc2UgPSB4bWFsbG9jIChz aXplb2YoaW50KSk7CiAgCi0tICAqb2xkX3NvdXJjZV92ZXJib3NlID0gc291cmNlX3ZlcmJvc2U7 Ci0tICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHNvdXJjZV92ZXJib3NlX2NsZWFudXAs IG9sZF9zb3VyY2VfdmVyYm9zZSk7Ci0rICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfcmVz dG9yZV9pbnRlZ2VyICgmc291cmNlX3ZlcmJvc2UpOwotKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVf aW50ZWdlciAoJnNvdXJjZV9weXRob24pOworQEAgLTM1MywxMCArMzY5LDE0IEBAIGNfdHlwZV9w cmludF9tb2RpZmllciAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s CisgCisgLyogUHJpbnQgb3V0IHRoZSBhcmd1bWVudHMgb2YgVFlQRSwgd2hpY2ggc2hvdWxkIGhh dmUgVFlQRV9DT0RFX01FVEhPRAorICAgIG9yIFRZUEVfQ09ERV9GVU5DLCB0byBTVFJFQU0uICBB cnRpZmljaWFsIGFyZ3VtZW50cywgc3VjaCBhcyAidGhpcyIKKy0gICBpbiBub24tc3RhdGljIG1l dGhvZHMsIGFyZSBkaXNwbGF5ZWQuICAqLworKyAgIGluIG5vbi1zdGF0aWMgbWV0aG9kcywgYXJl IGRpc3BsYXllZCBpZiBTSE9XX0FSVElGSUNJQUwgaXMKKysgICBub24temVyby4gTEFOR1VBR0Ug aXMgdGhlIGxhbmd1YWdlIGluIHdoaWNoIFRZUEUgd2FzIGRlZmluZWQuICBUaGlzIGlzCisrICAg YSBuZWNlc3NhcnkgZXZpbCBzaW5jZSB0aGlzIGNvZGUgaXMgdXNlZCBieSB0aGUgQywgQysrLCBh bmQgSmF2YQorKyAgIGJhY2tlbmRzLiAqLwogIAotICAgLyogLXYgY2F1c2VzIHRoZSBzb3VyY2Ug Y29tbWFuZCB0byBydW4gaW4gdmVyYm9zZSBtb2RlLgotICAgICAgV2Ugc3RpbGwgaGF2ZSB0byBi ZSBhYmxlIHRvIGhhbmRsZSBmaWxlbmFtZXMgd2l0aCBzcGFjZXMgaW4gYQotQEAgLTUxMSwyMyAr NTM4LDI4IEBAIHNvdXJjZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCistc3Rh dGljIHZvaWQKKy1jX3R5cGVfcHJpbnRfYXJncyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0pCisrdm9pZAorK2NfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKysJCSAgIGludCBzaG93X2FydGlmaWNpYWws IGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisgeworICAgaW50IGksIGxlbjsKKyAgIHN0cnVjdCBm aWVsZCAqYXJnczsKK0BAIC0zNjgsMTMgKzM4OCwxOSBAQCBjX3R5cGVfcHJpbnRfYXJncyAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgCi0gICBpZiAoYXJncykK KyAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpKyspCiAgICAgIHsKLS0g ICAgICAvKiBNYWtlIHN1cmUgbGVhZGluZyB3aGl0ZSBzcGFjZSBkb2VzIG5vdCBicmVhayB0aGUg Y29tcGFyaXNvbnMuICAqLwotLSAgICAgIHdoaWxlIChpc3NwYWNlKGFyZ3NbMF0pKQotLQlhcmdz Kys7Ci0tCi0tICAgICAgLyogSXMgLXYgdGhlIGZpcnN0IHRoaW5nIGluIHRoZSBzdHJpbmc/ICAq LwotLSAgICAgIGlmIChhcmdzWzBdID09ICctJyAmJiBhcmdzWzFdID09ICd2JyAmJiBpc3NwYWNl IChhcmdzWzJdKSkKLSsgICAgICB3aGlsZSAoMSkKKysgICAgICBpZiAoVFlQRV9GSUVMRF9BUlRJ RklDSUFMICh0eXBlLCBpKSAmJiAhc2hvd19hcnRpZmljaWFsKQorKwljb250aW51ZTsKKysKKyAg ICAgICBpZiAocHJpbnRlZF9hbnkpCiAgCXsKLS0JICBzb3VyY2VfdmVyYm9zZSA9IDE7Ci0tCi0t CSAgLyogVHJpbSAtdiBhbmQgd2hpdGVzcGFjZSBmcm9tIHRoZSBmaWxlbmFtZS4gICovCi0tCSAg ZmlsZSA9ICZhcmdzWzNdOwotLQkgIHdoaWxlIChpc3NwYWNlIChmaWxlWzBdKSkKLS0JICAgIGZp bGUrKzsKLSsJICBpbnQgYXJnID0gZmluZF9hcmd1bWVudCAoJmFyZ3MpOwotKwkgIGlmICghYXJn KQotKwkgICAgYnJlYWs7Ci0rCSAgc3dpdGNoIChhcmcpCi0rCSAgICB7Ci0rCSAgICBjYXNlICd2 JzoKLSsJICAgICAgc291cmNlX3ZlcmJvc2UgPSAxOwotKwkgICAgICBicmVhazsKLSsJICAgIGNh c2UgJ3AnOgotKwkgICAgICBzb3VyY2VfcHl0aG9uID0gMTsKLSsJICAgICAgYnJlYWs7Ci0rCSAg ICBkZWZhdWx0OgotKwkgICAgICBlcnJvciAoXygidW5yZWNvZ25pemVkIG9wdGlvbiAtJWMiKSwg YXJnKTsKLSsJICAgIH0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOworIAkg IHdyYXBfaGVyZSAoIiAgICAiKTsKICAJfQotICAgICB9CiAgCi0tICBzb3VyY2Vfc2NyaXB0IChm aWxlLCBmcm9tX3R0eSk7Ci0rICBzb3VyY2Vfc2NyaXB0IChhcmdzLCBmcm9tX3R0eSk7Ci0rCi0r ICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKLSB9CistICAgICAgY19wcmludF90eXBlIChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCAiIiwgc3RyZWFtLCAtMSwgMCk7CisrICAgICAgaWYg KGxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpCisrCWphdmFfcHJpbnRfdHlwZSAoVFlQRV9GSUVM RF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOworKyAgICAgIGVsc2UKKysJY19w cmludF90eXBlIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCAiIiwgc3RyZWFtLCAtMSwgMCk7 CisgICAgICAgcHJpbnRlZF9hbnkgPSAxOworICAgICB9CiAgCitAQCAtNTU4LDcgKzU4NCwxMiBA QCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLAorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CiAgCi1A QCAtMTMwOSw3ICsxMzQxLDkgQEAgUmVhZCBjb21tYW5kcyBmcm9tIGEgZmlsZSBuYW1lZCBGSUxF LlxuXAotIE9wdGlvbmFsIC12IHN3aXRjaCAoYmVmb3JlIHRoZSBmaWxlbmFtZSkgY2F1c2VzIGVh Y2ggY29tbWFuZCBpblxuXAotIEZJTEUgdG8gYmUgZWNob2VkIGFzIGl0IGlzIGV4ZWN1dGVkLlxu XAotIE5vdGUgdGhhdCB0aGUgZmlsZSBcIiVzXCIgaXMgcmVhZCBhdXRvbWF0aWNhbGx5IGluIHRo aXMgd2F5XG5cCi0td2hlbiBHREIgaXMgc3RhcnRlZC4iKSwgZ2RiaW5pdCk7Ci0rd2hlbiBHREIg aXMgc3RhcnRlZC5cblwKLStPcHRpb25hbCAtcCBzd2l0Y2ggKGJlZm9yZSB0aGUgZmlsZW5hbWUp IGNhdXNlcyBGSUxFIHRvIGJlIGV2YWx1YXRlZFxuXAotK2FzIFB5dGhvbiBjb2RlLiIpLCBnZGJp bml0KTsKLSAgIGMgPSBhZGRfY21kICgic291cmNlIiwgY2xhc3Nfc3VwcG9ydCwgc291cmNlX2Nv bW1hbmQsCi0gCSAgICAgICBzb3VyY2VfaGVscF90ZXh0LCAmY21kbGlzdCk7Ci0gICBzZXRfY21k X2NvbXBsZXRlciAoYywgZmlsZW5hbWVfY29tcGxldGVyKTsKKyAgICAgICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICJbIik7CistICAgICAgaWYgKFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSkgPiAwCisrICAgICAgaWYgKFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfRFdB UkZfQkxPQ0sgKHR5cGUpKQorKwl7CisrCSAgLyogTm8gXygpIC0gcHJpbnRlZCBzb3VyY2VzIHNo b3VsZCBub3QgYmUgbG9jYWxlIGRlcGVuZGVudC4gICovCisrCSAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAidmFyaWFibGUiKTsKKysJfQorKyAgICAgIGVsc2UgaWYgKFRZUEVfTEVOR1RIIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPiAwCisgCSYmICFUWVBFX0FSUkFZX1VQUEVSX0JPVU5E X0lTX1VOREVGSU5FRCAodHlwZSkpCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwK KyAJCQkgIChUWVBFX0xFTkdUSCAodHlwZSkKK0BAIC01OTEsNyArNjIyLDcgQEAgY190eXBlX3By aW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwKKyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIpIik7CisgICAgICAgaWYgKCFkZW1hbmdsZWRfYXJncykKKy0JY190eXBlX3ByaW50X2Fy Z3MgKHR5cGUsIHN0cmVhbSk7CisrCWNfdHlwZV9wcmludF9hcmdzICh0eXBlLCBzdHJlYW0sIDEs IGxhbmd1YWdlX2MpOworICAgICAgIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgc2hvdywKKyAJCQkJICAgcGFzc2VkX2FfcHRyLCAw KTsKKyAgICAgICBicmVhazsKIGRpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQuYyBiL2dkYi9jb2Zm cmVhZC5jCi1pbmRleCBlY2E2NjE4Li4wNTc5Y2U2IDEwMDY0NAoraW5kZXggOGU1ZGNhOS4uN2U3 ZmI4YiAxMDA2NDQKIC0tLSBhL2dkYi9jb2ZmcmVhZC5jCiArKysgYi9nZGIvY29mZnJlYWQuYwot QEAgLTIxMjYsNiArMjEyNiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBjb2ZmX3N5bV9mbnMg PQorQEAgLTIxMjMsNiArMjEyMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBjb2ZmX3N5bV9m bnMgPQogICAgY29mZl9uZXdfaW5pdCwJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBn YmwgdG8gZW50aXJlIHN5bXRhYiAqLwogICAgY29mZl9zeW1maWxlX2luaXQsCQkvKiBzeW1faW5p dDogcmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCiAgICBjb2ZmX3N5 bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIg Ki8KQEAgLTExODcsMjQ5ICsxMjk4LDggQEAgaW5kZXggZWJkZTg3Ni4uOTA3YjI3NSAxMDA2NDQK ICAvKiBSZWxvY2F0ZWQgZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMuICovCiAgI3VuZGVmIFJF TE9DX1NSQ0RJUgogIAotZGlmZiAtLWdpdCBhL2dkYi9jb25maWcvaTM4Ni9ubS1pMzg2LmggYi9n ZGIvY29uZmlnL2kzODYvbm0taTM4Ni5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uNWYyMzdjYwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2NvbmZpZy9pMzg2L25tLWkz ODYuaAotQEAgLTAsMCArMSwxMjUgQEAKLSsvKiBOYXRpdmUgbWFjcm8gZGVmaW5pdGlvbnMgZm9y IEdEQiBvbiBhbiBJbnRlbCBpWzM0NTZdODYuCi0rICAgQ29weXJpZ2h0IDIwMDEsIDIwMDQsIDIw MDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KLSsKLSsjaWZuZGVmIE5NX0kzODZfSAotKyNkZWZpbmUgTk1fSTM4Nl9IIDEK LSsKLSsvKiBIYXJkd2FyZS1hc3Npc3RlZCBicmVha3BvaW50cyBhbmQgd2F0Y2hwb2ludHMuICAq LwotKwotKy8qIFRhcmdldHMgc2hvdWxkIGRlZmluZSB0aGlzIHRvIHVzZSB0aGUgZ2VuZXJpYyB4 ODYgd2F0Y2hwb2ludCBzdXBwb3J0LiAgKi8KLSsjaWZkZWYgSTM4Nl9VU0VfR0VORVJJQ19XQVRD SFBPSU5UUwotKwotKy8qIEFkZCB3YXRjaHBvaW50IG1ldGhvZHMgdG8gdGhlIHByb3ZpZGVkIHRh cmdldF9vcHMuICBUYXJnZXRzIHdoaWNoIGNhbGwKLSsgICB0aGlzIHNob3VsZCBhbHNvIGRlZmlu ZSBJMzg2X1dBVENIUE9JTlRTX0lOX1RBUkdFVF9WRUNUT1IuICAqLwotK3N0cnVjdCB0YXJnZXRf b3BzOwotK3ZvaWQgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICopOwot KwotKy8qIENsZWFyIHRoZSByZWZlcmVuY2UgY291bnRzIGFuZCBmb3JnZXQgZXZlcnl0aGluZyB3 ZSBrbmV3IGFib3V0IERSaS4gICovCi0rZXh0ZXJuIHZvaWQgaTM4Nl9jbGVhbnVwX2RyZWdzICh2 b2lkKTsKLSsKLSsvKiBJbnNlcnQgYSB3YXRjaHBvaW50IHRvIHdhdGNoIGEgbWVtb3J5IHJlZ2lv biB3aGljaCBzdGFydHMgYXQKLSsgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBM RU4gYnl0ZXMuICBXYXRjaCBtZW1vcnkgYWNjZXNzZXMKLSsgICBvZiB0aGUgdHlwZSBUWVBFLiAg UmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICovCi0rZXh0ZXJuIGludCBpMzg2 X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUpOwot KwotKy8qIFJlbW92ZSBhIHdhdGNocG9pbnQgdGhhdCB3YXRjaGVkIHRoZSBtZW1vcnkgcmVnaW9u IHdoaWNoIHN0YXJ0cyBhdAotKyAgIGFkZHJlc3MgQUREUiwgd2hvc2UgbGVuZ3RoIGlzIExFTiBi eXRlcywgYW5kIGZvciBhY2Nlc3NlcyBvZiB0aGUKLSsgICB0eXBlIFRZUEUuICBSZXR1cm4gMCBv biBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLiAgKi8KLStleHRlcm4gaW50IGkzODZfcmVtb3ZlX3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSk7Ci0rCi0rLyogUmV0 dXJuIG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9yeSByZWdpb24gdGhhdCBzdGFydHMg YXQKLSsgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0ZXMuICAqLwot K2V4dGVybiBpbnQgaTM4Nl9yZWdpb25fb2tfZm9yX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuKTsKLSsKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIGluZmVyaW9yIGhhcyBz b21lIGJyZWFrL3dhdGNocG9pbnQgdGhhdAotKyAgIHRyaWdnZXJlZC4gICovCi0rZXh0ZXJuIGlu dCBpMzg2X3N0b3BwZWRfYnlfaHdicCAodm9pZCk7Ci0rCi0rLyogSWYgdGhlIGluZmVyaW9yIGhh cyBzb21lIGJyZWFrL3dhdGNocG9pbnQgdGhhdCB0cmlnZ2VyZWQsIHNldAotKyAgIHRoZSBhZGRy ZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGJyZWFrL3dhdGNocG9pbnQgYW5kIHJldHVybgotKyAg IHRydWUuICBPdGhlcndpc2UsIHJldHVybiBmYWxzZS4gICovCi0rZXh0ZXJuIGludCBpMzg2X3N0 b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKik7Ci0r Ci0rLyogSW5zZXJ0IGEgaGFyZHdhcmUtYXNzaXN0ZWQgYnJlYWtwb2ludCBhdCBCUF9UR1QtPnBs YWNlZF9hZGRyZXNzLgotKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIEVCVVNZIG9uIGZhaWx1cmUu ICAqLwotK3N0cnVjdCBicF90YXJnZXRfaW5mbzsKLStleHRlcm4gaW50IGkzODZfaW5zZXJ0X2h3 X2JyZWFrcG9pbnQgKHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0KTsKLSsKLSsvKiBSZW1v dmUgYSBoYXJkd2FyZS1hc3Npc3RlZCBicmVha3BvaW50IGF0IEJQX1RHVC0+cGxhY2VkX2FkZHJl c3MuCi0rICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICovCi0rZXh0ZXJu IGludCAgaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGJwX3RhcmdldF9pbmZvICpi cF90Z3QpOwotKwotK2V4dGVybiBpbnQgaTM4Nl9zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaWQp OwotKwotKyNpZm5kZWYgSTM4Nl9XQVRDSFBPSU5UU19JTl9UQVJHRVRfVkVDVE9SCi0rCi0rLyog UmV0dXJucyB0aGUgbnVtYmVyIG9mIGhhcmR3YXJlIHdhdGNocG9pbnRzIG9mIHR5cGUgVFlQRSB0 aGF0IHdlIGNhbgotKyAgIHNldC4gIFZhbHVlIGlzIHBvc2l0aXZlIGlmIHdlIGNhbiBzZXQgQ05U IHdhdGNocG9pbnRzLCB6ZXJvIGlmCi0rICAgc2V0dGluZyB3YXRjaHBvaW50cyBvZiB0eXBlIFRZ UEUgaXMgbm90IHN1cHBvcnRlZCwgYW5kIG5lZ2F0aXZlIGlmCi0rICAgQ05UIGlzIG1vcmUgdGhh biB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd2F0Y2hwb2ludHMgb2YgdHlwZSBUWVBFCi0rICAgdGhh dCB3ZSBjYW4gc3VwcG9ydC4gIFRZUEUgaXMgb25lIG9mIGJwX2hhcmR3YXJlX3dhdGNocG9pbnQs Ci0rICAgYnBfcmVhZF93YXRjaHBvaW50LCBicF93cml0ZV93YXRjaHBvaW50LCBvciBicF9oYXJk d2FyZV9icmVha3BvaW50LgotKyAgIENOVCBpcyB0aGUgbnVtYmVyIG9mIHN1Y2ggd2F0Y2hwb2lu dHMgdXNlZCBzbyBmYXIgKGluY2x1ZGluZyB0aGlzCi0rICAgb25lKS4gIE9USEVSVFlQRSBpcyBu b24temVybyBpZiBvdGhlciB0eXBlcyBvZiB3YXRjaHBvaW50cyBhcmUKLSsgICBjdXJyZW50bHkg ZW5hYmxlZC4KLSsKLSsgICBXZSBhbHdheXMgcmV0dXJuIDEgaGVyZSBiZWNhdXNlIHdlIGRvbid0 IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uCi0rICAgYWJvdXQgcG9zc2libGUgb3ZlcmxhcCBvZiBh ZGRyZXNzZXMgdGhhdCB0aGV5IHdhbnQgdG8gd2F0Y2guICBBcyBhbgotKyAgIGV4dHJlbWUgZXhh bXBsZSwgY29uc2lkZXIgdGhlIGNhc2Ugd2hlcmUgYWxsIHRoZSB3YXRjaHBvaW50cyB3YXRjaAot KyAgIHRoZSBzYW1lIGFkZHJlc3MgYW5kIHRoZSBzYW1lIHJlZ2lvbiBsZW5ndGg6IHRoZW4gd2Ug Y2FuIGhhbmRsZSBhCi0rICAgdmlydHVhbGx5IHVubGltaXRlZCBudW1iZXIgb2Ygd2F0Y2hwb2lu dHMsIGR1ZSB0byBkZWJ1ZyByZWdpc3RlcgotKyAgIHNoYXJpbmcgaW1wbGVtZW50ZWQgdmlhIHJl ZmVyZW5jZSBjb3VudHMgaW4gaTM4Ni1uYXQuYy4gICovCi0rCi0rI2RlZmluZSBUQVJHRVRfQ0FO X1VTRV9IQVJEV0FSRV9XQVRDSFBPSU5UKHR5cGUsIGNudCwgb3QpIDEKLSsKLSsvKiBSZXR1cm5z IG5vbi16ZXJvIGlmIHdlIGNhbiB1c2UgaGFyZHdhcmUgd2F0Y2hwb2ludHMgdG8gd2F0Y2ggYQot KyAgIHJlZ2lvbiB3aG9zZSBhZGRyZXNzIGlzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4u ICAqLwotKwotKyNkZWZpbmUgVEFSR0VUX1JFR0lPTl9PS19GT1JfSFdfV0FUQ0hQT0lOVChhZGRy LCBsZW4pIFwKLSsgIGkzODZfcmVnaW9uX29rX2Zvcl93YXRjaHBvaW50IChhZGRyLCBsZW4pCi0r Ci0rLyogQWZ0ZXIgYSB3YXRjaHBvaW50IHRyYXAsIHRoZSBQQyBwb2ludHMgdG8gdGhlIGluc3Ry dWN0aW9uIGFmdGVyIHRoZQotKyAgIG9uZSB0aGF0IGNhdXNlZCB0aGUgdHJhcC4gIFRoZXJlZm9y ZSB3ZSBkb24ndCBuZWVkIHRvIHN0ZXAgb3ZlciBpdC4KLSsgICBCdXQgd2UgZG8gbmVlZCB0byBy ZXNldCB0aGUgc3RhdHVzIHJlZ2lzdGVyIHRvIGF2b2lkIGFub3RoZXIgdHJhcC4gICovCi0rCi0r I2RlZmluZSBIQVZFX0NPTlRJTlVBQkxFX1dBVENIUE9JTlQgMQotKwotKyNkZWZpbmUgU1RPUFBF RF9CWV9XQVRDSFBPSU5UKFcpICAgICAgIChpMzg2X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoKSAh PSAwKQotKwotKyNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfZGF0YV9hZGRyZXNzKHRhcmdldCwgeCkg XAotKyAgaTM4Nl9zdG9wcGVkX2RhdGFfYWRkcmVzcyh0YXJnZXQsIHgpCi0rCi0rLyogVXNlIHRo ZXNlIG1hY3JvcyBmb3Igd2F0Y2hwb2ludCBpbnNlcnRpb24vcmVtb3ZhbC4gICovCi0rCi0rI2Rl ZmluZSB0YXJnZXRfaW5zZXJ0X3dhdGNocG9pbnQoYWRkciwgbGVuLCB0eXBlKSBcCi0rICBpMzg2 X2luc2VydF93YXRjaHBvaW50IChhZGRyLCBsZW4sIHR5cGUpCi0rCi0rI2RlZmluZSB0YXJnZXRf cmVtb3ZlX3dhdGNocG9pbnQoYWRkciwgbGVuLCB0eXBlKSBcCi0rICBpMzg2X3JlbW92ZV93YXRj aHBvaW50IChhZGRyLCBsZW4sIHR5cGUpCi0rCi0rI2RlZmluZSB0YXJnZXRfaW5zZXJ0X2h3X2Jy ZWFrcG9pbnQoYnBfdGd0KSBcCi0rICBpMzg2X2luc2VydF9od19icmVha3BvaW50IChicF90Z3Qp Ci0rCi0rI2RlZmluZSB0YXJnZXRfcmVtb3ZlX2h3X2JyZWFrcG9pbnQoYnBfdGd0KSBcCi0rICBp Mzg2X3JlbW92ZV9od19icmVha3BvaW50IChicF90Z3QpCi0rCi0rI2VuZGlmIC8qIEkzODZfV0FU Q0hQT0lOVFNfSU5fVEFSR0VUX1ZFQ1RPUiAqLwotKwotKyNlbmRpZiAvKiBJMzg2X1VTRV9HRU5F UklDX1dBVENIUE9JTlRTICovCi0rCi0rI2VuZGlmIC8qIE5NX0kzODZfSCAqLwotZGlmZiAtLWdp dCBhL2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmggYi9nZGIvY29uZmlnL2kzODYvbm0tbGlu dXg2NC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTlkNzEwYQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAotQEAgLTAsMCAr MSw1NCBAQAotKy8qIE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUvTGludXggeDg2LTY0LgotKwotKyAg IENvcHlyaWdodCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5 Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgQ29udHJpYnV0ZWQg YnkgSmlyaSBTbWlkLCBTdVNFIExhYnMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZu ZGVmIE5NX0xJTlVYNjRfSAotKyNkZWZpbmUgTk1fTElOVVg2NF9ICi0rCi0rLyogR05VL0xpbnV4 IHN1cHBvcnRzIHRoZSBpMzg2IGhhcmR3YXJlIGRlYnVnZ2luZyByZWdpc3RlcnMuICAqLwotKyNk ZWZpbmUgSTM4Nl9VU0VfR0VORVJJQ19XQVRDSFBPSU5UUwotKyNkZWZpbmUgSTM4Nl9XQVRDSFBP SU5UU19JTl9UQVJHRVRfVkVDVE9SCi0rCi0rI2luY2x1ZGUgImkzODYvbm0taTM4Ni5oIgotKyNp bmNsdWRlICJjb25maWcvbm0tbGludXguaCIKLSsKLSsvKiBTdXBwb3J0IGZvciA4LWJ5dGUgd2lk ZSBoYXJkd2FyZSB3YXRjaHBvaW50cy4gICovCi0rI2RlZmluZSBUQVJHRVRfSEFTX0RSX0xFTl84 IDEKLSsKLSsvKiBQcm92aWRlIGFjY2VzcyB0byB0aGUgaTM4NiBoYXJkd2FyZSBkZWJ1Z2dpbmcg cmVnaXN0ZXJzLiAgKi8KLSsKLStleHRlcm4gdm9pZCBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJv bCAodW5zaWduZWQgbG9uZyBjb250cm9sKTsKLSsjZGVmaW5lIEkzODZfRFJfTE9XX1NFVF9DT05U Uk9MKGNvbnRyb2wpIFwKLSsgIGFtZDY0X2xpbnV4X2RyX3NldF9jb250cm9sIChjb250cm9sKQot KwotK2V4dGVybiB2b2lkIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JF X0FERFIgYWRkcik7Ci0rI2RlZmluZSBJMzg2X0RSX0xPV19TRVRfQUREUihyZWdudW0sIGFkZHIp IFwKLSsgIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChyZWdudW0sIGFkZHIpCi0rCi0rZXh0ZXJu IHZvaWQgYW1kNjRfbGludXhfZHJfcmVzZXRfYWRkciAoaW50IHJlZ251bSk7Ci0rI2RlZmluZSBJ Mzg2X0RSX0xPV19SRVNFVF9BRERSKHJlZ251bSkgXAotKyAgYW1kNjRfbGludXhfZHJfcmVzZXRf YWRkciAocmVnbnVtKQotKwotK2V4dGVybiB1bnNpZ25lZCBsb25nIGFtZDY0X2xpbnV4X2RyX2dl dF9zdGF0dXMgKHZvaWQpOwotKyNkZWZpbmUgSTM4Nl9EUl9MT1dfR0VUX1NUQVRVUygpIFwKLSsg IGFtZDY0X2xpbnV4X2RyX2dldF9zdGF0dXMgKCkKLSsKLSsjZW5kaWYgLyogbm0tbGludXg2NC5o ICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy9taXBzL25tLWlyaXg1LmggYi9nZGIvY29uZmln L21pcHMvbm0taXJpeDUuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ5 YWM0MjAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9jb25maWcvbWlwcy9ubS1pcml4NS5oCi1A QCAtMCwwICsxLDQ0IEBACi0rLyogRGVmaW5pdGlvbnMgZm9yIG5hdGl2ZSBzdXBwb3J0IG9mIGly aXg1LgotKwotKyAgIENvcHlyaWdodCAxOTkzLCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDA3 LCAyMDA4LCAyMDA5Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KLSsKLSsjZGVmaW5lIFRBUkdFVF9IQVNfSEFSRFdBUkVfV0FUQ0hQT0lO VFMKLSsKLSsvKiBUQVJHRVRfQ0FOX1VTRV9IQVJEV0FSRV9XQVRDSFBPSU5UIGlzIG5vdyBkZWZp bmVkIHRvIGdvIHRocm91Z2gKLSsgICB0aGUgdGFyZ2V0IHZlY3Rvci4gIEZvciBJcml4NSwgcHJv Y2ZzX2Nhbl91c2VfaHdfd2F0Y2hwb2ludCgpCi0rICAgc2hvdWxkIGJlIGludm9rZWQuICAqLwot KwotKy8qIFdoZW4gYSBoYXJkd2FyZSB3YXRjaHBvaW50IGZpcmVzIG9mZiB0aGUgUEMgd2lsbCBi ZSBsZWZ0IGF0IHRoZQotKyAgIGluc3RydWN0aW9uIHdoaWNoIGNhdXNlZCB0aGUgd2F0Y2hwb2lu dC4gIEl0IHdpbGwgYmUgbmVjZXNzYXJ5IGZvcgotKyAgIEdEQiB0byBzdGVwIG92ZXIgdGhlIHdh dGNocG9pbnQuICovCi0rCi0rI2RlZmluZSBTVE9QUEVEX0JZX1dBVENIUE9JTlQoVykgXAotKyAg ICAgcHJvY2ZzX3N0b3BwZWRfYnlfd2F0Y2hwb2ludChpbmZlcmlvcl9wdGlkKQotK2V4dGVybiBp bnQgcHJvY2ZzX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAocHRpZF90KTsKLSsKLSsvKiBVc2UgdGhl c2UgbWFjcm9zIGZvciB3YXRjaHBvaW50IGluc2VydGlvbi9kZWxldGlvbi4gICovCi0rLyogdHlw ZSBjYW4gYmUgMDogd3JpdGUgd2F0Y2gsIDE6IHJlYWQgd2F0Y2gsIDI6IGFjY2VzcyB3YXRjaCAo cmVhZC93cml0ZSkgKi8KLSsjZGVmaW5lIHRhcmdldF9pbnNlcnRfd2F0Y2hwb2ludChBRERSLCBM RU4sIFRZUEUpIFwKLSsgICAgIHByb2Nmc19zZXRfd2F0Y2hwb2ludCAoaW5mZXJpb3JfcHRpZCwg QUREUiwgTEVOLCBUWVBFLCAwKQotKyNkZWZpbmUgdGFyZ2V0X3JlbW92ZV93YXRjaHBvaW50KEFE RFIsIExFTiwgVFlQRSkgXAotKyAgICAgcHJvY2ZzX3NldF93YXRjaHBvaW50IChpbmZlcmlvcl9w dGlkLCBBRERSLCAwLCAwLCAwKQotK2V4dGVybiBpbnQgcHJvY2ZzX3NldF93YXRjaHBvaW50IChw dGlkX3QsIENPUkVfQUREUiwgaW50LCBpbnQsIGludCk7Ci0rCi0rI2RlZmluZSBUQVJHRVRfUkVH SU9OX1NJWkVfT0tfRk9SX0hXX1dBVENIUE9JTlQoU0laRSkgMQotKwogZGlmZiAtLWdpdCBhL2dk Yi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1pbmRleCA3ZjI2YzY0Li4wNTQyZjdlIDEwMDc1 NQoraW5kZXggNDk4MDEwNi4uYmU2OTQ4OCAxMDA3NTUKIC0tLSBhL2dkYi9jb25maWd1cmUKICsr KyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzYsNiArNjc2LDggQEAgUkVQT1JUX0JVR1NfVE8KQEAg LTE1NDQsNyArMTQxNCw3IEBAIGluZGV4IDdmMjZjNjQuLjA1NDJmN2UgMTAwNzU1CiAgCiAgICAj IEZsYWdzIG5lZWRlZCB0byBjb21waWxlIFB5dGhvbiBjb2RlICh0YWtlbiBmcm9tIHB5dGhvbi1j b25maWcgLS1jZmxhZ3MpLgogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuYWMgYi9nZGIvY29u ZmlndXJlLmFjCi1pbmRleCBlYmIwYTk1Li5jOGViYWZlIDEwMDY0NAoraW5kZXggYTc1NmEyZC4u YjQ0ZTIxZCAxMDA2NDQKIC0tLSBhL2dkYi9jb25maWd1cmUuYWMKICsrKyBiL2dkYi9jb25maWd1 cmUuYWMKIEBAIC0xMDgsNiArMTA4LDUxIEBAIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcmVsb2Nh dGVkLXNvdXJjZXM9UEFUSF0sIFthdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0CkBAIC0x NjA4LDQyICsxNDc4LDYxMSBAQCBpbmRleCBlYmIwYTk1Li5jOGViYWZlIDEwMDY0NAogICAgRU5B QkxFX0NGTEFHUz0iJEVOQUJMRV9DRkxBR1MgXCQoU1VCRElSX1BZVEhPTl9DRkxBR1MpIgogIAog ICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRob24gY29kZSAodGFrZW4gZnJvbSBweXRo b24tY29uZmlnIC0tY2ZsYWdzKS4KLWRpZmYgLS1naXQgYS9nZGIvZGJ4cmVhZC5jIGIvZ2RiL2Ri eHJlYWQuYwotaW5kZXggODE2YTM1NS4uZTlmNTZmOSAxMDA2NDQKLS0tLSBhL2dkYi9kYnhyZWFk LmMKLSsrKyBiL2dkYi9kYnhyZWFkLmMKLUBAIC0zNTcwLDYgKzM1NzAsNyBAQCBzdGF0aWMgc3Ry dWN0IHN5bV9mbnMgYW91dF9zeW1fZm5zID0KLSAgIGRieF9uZXdfaW5pdCwJCS8qIHN5bV9uZXdf aW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAqLwotICAgZGJ4X3N5bWZp bGVfaW5pdCwJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3Jl YWQoKSAqLwotICAgZGJ4X3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9s IGZpbGUgaW50byBzeW10YWIgKi8KLSsgIE5VTEwsCQkJCS8qIHN5bV9yZWFkX3BzeW1ib2xzICov Ci0gICBkYnhfc3ltZmlsZV9maW5pc2gsCQkvKiBzeW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZp bGUsIGNsZWFudXAgKi8KLSAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzLCAvKiBzeW1fb2Zmc2V0 czogcGFyc2UgdXNlcidzIG9mZnNldHMgdG8KLSAJCQkgICAgICBpbnRlcm5hbCBmb3JtICovCi1k aWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLWlu ZGV4IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0Ci0tLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCi0r KysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtOTYyLDggKzk2MiwxMCBAQCBDb25uZWN0IHRv IHByb2Nlc3MgSUQgQHZhcntudW1iZXJ9LCBhcyB3aXRoIHRoZSBAY29kZXthdHRhY2h9IGNvbW1h bmQuCi0gQGl0ZW14IC14IEB2YXJ7ZmlsZX0KLSBAY2luZGV4IEBjb2Rley0tY29tbWFuZH0KLSBA Y2luZGV4IEBjb2Rley14fQotLUV4ZWN1dGUgQHZhbHVle0dEQk59IGNvbW1hbmRzIGZyb20gZmls ZSBAdmFye2ZpbGV9LiAgQHhyZWZ7Q29tbWFuZAotLUZpbGVzLCwgQ29tbWFuZCBmaWxlc30uCi0r RXhlY3V0ZSBjb21tYW5kcyBmcm9tIGZpbGUgQHZhcntmaWxlfS4gIElmIEB2YXJ7ZmlsZX0gZW5k cyBpbgotK0BzYW1wey5weX0sIHRoZW4gdGhlIGZpbGUgaXMgZXZhbHVhdGVkIGFzIFB5dGhvbiBj b2RlLiAgSWYgUHl0aG9uCi0rc3VwcG9ydCBpcyBub3QgZW5hYmxlZCBpbiB0aGlzIEB2YWx1ZXtH REJOfSwgdGhlbiBhbiBlcnJvciBvY2N1cnMuCi0rQHhyZWZ7Q29tbWFuZCBGaWxlcywsIENvbW1h bmQgZmlsZXN9LgotIAotIEBpdGVtIC1ldmFsLWNvbW1hbmQgQHZhcntjb21tYW5kfQotIEBpdGVt eCAtZXggQHZhcntjb21tYW5kfQotQEAgLTExNTUsNiArMTE1NywxNiBAQCBmb3IgcmVtb3RlIGRl YnVnZ2luZy4KLSBSdW4gdXNpbmcgQHZhcntkZXZpY2V9IGZvciB5b3VyIHByb2dyYW0ncyBzdGFu ZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgotIEBjIEZJWE1FOiBraW5nZG9uIHRoaW5rcyB0aGVyZSBp cyBtb3JlIHRvIC10dHkuICBJbnZlc3RpZ2F0ZS4KK2RpZmYgLS1naXQgYS9nZGIvY3AtbmFtZS1w YXJzZXIueSBiL2dkYi9jcC1uYW1lLXBhcnNlci55CitpbmRleCA4MWY2YTVkLi4wOTdkYjY1IDEw MDY0NAorLS0tIGEvZ2RiL2NwLW5hbWUtcGFyc2VyLnkKKysrKyBiL2dkYi9jcC1uYW1lLXBhcnNl ci55CitAQCAtMzg5LDcgKzM4OSw3IEBAIGZ1bmN0aW9uCisgCQl8CWNvbG9uX2V4dF9vbmx5IGZ1 bmN0aW9uX2FyZ2xpc3Qgc3RhcnRfb3B0CisgCQkJeyAkJCA9IGZpbGxfY29tcCAoREVNQU5HTEVf Q09NUE9ORU5UX1RZUEVEX05BTUUsICQxLCAkMi5jb21wKTsKKyAJCQkgIGlmICgkMykgJCQgPSBm aWxsX2NvbXAgKERFTUFOR0xFX0NPTVBPTkVOVF9MT0NBTF9OQU1FLCAkJCwgJDMpOyB9CistCisr CQl8CWNvbG9uX2V4dF9vbmx5CisgCQl8CWNvbnZlcnNpb25fb3BfbmFtZSBzdGFydF9vcHQKKyAJ CQl7ICQkID0gJDEuY29tcDsKKyAJCQkgIGlmICgkMikgJCQgPSBmaWxsX2NvbXAgKERFTUFOR0xF X0NPTVBPTkVOVF9MT0NBTF9OQU1FLCAkJCwgJDIpOyB9CitkaWZmIC0tZ2l0IGEvZ2RiL2NwLW5h bWVzcGFjZS5jIGIvZ2RiL2NwLW5hbWVzcGFjZS5jCitpbmRleCAwNGI2NjViLi4yMWUwMTNhIDEw MDY0NAorLS0tIGEvZ2RiL2NwLW5hbWVzcGFjZS5jCisrKysgYi9nZGIvY3AtbmFtZXNwYWNlLmMK K0BAIC0zNCwxNCArMzQsMTcgQEAKKyAjaW5jbHVkZSAiYnVpbGRzeW0uaCIKKyAKKyBzdGF0aWMg c3RydWN0IHN5bWJvbCAqbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29uc3QgY2hhciAqbmFtZSwK Ky0JCQkJCSAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCSAgICAgIGNvbnN0 IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkJCQkgICAgICBjb25zdCBkb21haW5fZW51bSBkb21h aW4sCisgCQkJCQkgICAgICBjb25zdCBjaGFyICpzY29wZSwKKyAJCQkJCSAgICAgIGludCBzY29w ZV9sZW4pOworIAorK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBfc3ltYm9sX2luX25h bWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOworKworIHN0YXRpYyBzdHJ1 Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkg IGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCSAgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywKKyAJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorIAkJCQkJICBpbnQgYW5v bnltb3VzX25hbWVzcGFjZSk7CitAQCAtMTE3LDcgKzEyMCw3IEBAIGNwX3NjYW5fZm9yX2Fub255 bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCisgCQkgYW5vbnlt b3VzIG5hbWVzcGFjZS4gIFNvIGFkZCBzeW1ib2xzIGluIGl0IHRvIHRoZQorIAkJIG5hbWVzcGFj ZSBnaXZlbiBieSB0aGUgcHJldmlvdXMgY29tcG9uZW50IGlmIHRoZXJlIGlzCisgCQkgb25lLCBv ciB0byB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBpZiB0aGVyZSBpc24ndC4gICovCistCSAgICAgIGNw X2FkZF91c2luZ19kaXJlY3RpdmUgKGRlc3QsIHNyYyk7CisrCSAgICAgIGNwX2FkZF91c2luZ19k aXJlY3RpdmUgKGRlc3QsIHNyYywgIiIsICIiLCAwKTsKKyAJICAgIH0KKyAJICAvKiBUaGUgIisg MiIgaXMgZm9yIHRoZSAiOjoiLiAgKi8KKyAJICBwcmV2aW91c19jb21wb25lbnQgPSBuZXh0X2Nv bXBvbmVudCArIDI7CitAQCAtMTMyLDcgKzEzNSw4IEBAIGNwX3NjYW5fZm9yX2Fub255bW91c19u YW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCisgICAgaGFzIGFscmVhZHkg YmVlbiBhZGRlZCwgZG9uJ3QgYWRkIGl0IHR3aWNlLiAgKi8KICAKLStAaXRlbSAtUAotK0BjaW5k ZXggQGNvZGV7LVB9Ci0rQGl0ZW14IC0tcHl0aG9uCisgdm9pZAorLWNwX2FkZF91c2luZ19kaXJl Y3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykKKytjcF9hZGRfdXNpbmdf ZGlyZWN0aXZlIChjb25zdCBjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIGNvbnN0IGNoYXIq IGFsaWFzLAorKwkJCWNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLCBjb25zdCBpbnQgbGluZV9udW1i ZXIpCisgeworICAgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3VycmVudDsKKyAgIHN0cnVjdCB1c2lu Z19kaXJlY3QgKm5ldzsKK0BAIC0xNDYsNyArMTUwLDggQEAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2 ZSAoY29uc3QgY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKQorIAlyZXR1cm47CisgICAgIH0K KyAKKy0gIHVzaW5nX2RpcmVjdGl2ZXMgPSBjcF9hZGRfdXNpbmcgKGRlc3QsIHNyYywgdXNpbmdf ZGlyZWN0aXZlcyk7CisrICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3VzaW5nIChkZXN0LCBz cmMsIGFsaWFzLCBkZWNsYXJhdGlvbiwKKysJCQkJICAgbGluZV9udW1iZXIsIHVzaW5nX2RpcmVj dGl2ZXMpOworIAorIH0KKyAKK0BAIC0xOTksNyArMjA0LDEwIEBAIGNwX2lzX2Fub255bW91cyAo Y29uc3QgY2hhciAqbmFtZXNwYWNlKQorIH0KKyAKKyAvKiBDcmVhdGUgYSBuZXcgc3RydWN0IHVz aW5nIGRpcmVjdCB3aGljaCBpbXBvcnRzIHRoZSBuYW1lc3BhY2UgU1JDCistICAgaW50byB0aGUg c2NvcGUgREVTVC4KKysgICBpbnRvIHRoZSBzY29wZSBERVNULiAgQUxJQVMgaXMgdGhlIG5hbWUg b2YgdGhlIGltcG9ydGVkIG5hbWVzcGFjZQorKyAgIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYg QUxJQVMgaXMgYW4gZW1wdHkgc3RyaW5nICB0aGVuIHRoZQorKyAgIG5hbWVzcGFjZSBpcyBrbm93 biBieSBpdHMgb3JpZ2luYWwgbmFtZS4KKysKKyAgICBTZXQgaXRzIG5leHQgbWVtYmVyIGluIHRo ZSBsaW5rZWQgbGlzdCB0byBORVhUOyBhbGxvY2F0ZSBhbGwgbWVtb3J5CisgICAgdXNpbmcgeG1h bGxvYy4gIEl0IGNvcGllcyB0aGUgc3RyaW5ncywgc28gTkFNRSBjYW4gYmUgYSB0ZW1wb3JhcnkK KyAgICBzdHJpbmcuICAqLworQEAgLTIwNywxNCArMjE1LDIxIEBAIGNwX2lzX2Fub255bW91cyAo Y29uc3QgY2hhciAqbmFtZXNwYWNlKQorIHN0cnVjdCB1c2luZ19kaXJlY3QgKgorIGNwX2FkZF91 c2luZyAoY29uc3QgY2hhciAqZGVzdCwKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywK KysgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFsaWFzLAorKyAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqZGVjbGFyYXRpb24sCisrICAgICAgICAgICAgICBjb25zdCBpbnQgbGluZV9udW1iZXIs CisgCSAgICAgIHN0cnVjdCB1c2luZ19kaXJlY3QgKm5leHQpCisgeworICAgc3RydWN0IHVzaW5n X2RpcmVjdCAqcmV0dmFsOworIAorICAgcmV0dmFsID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg dXNpbmdfZGlyZWN0KSk7CistICByZXR2YWwtPmltcG9ydF9zcmMgPSBzYXZlc3RyaW5nIChzcmMs IHN0cmxlbihzcmMpKTsKKy0gIHJldHZhbC0+aW1wb3J0X2Rlc3QgPSBzYXZlc3RyaW5nIChkZXN0 LCBzdHJsZW4oZGVzdCkpOworKyAgcmV0dmFsLT5pbXBvcnRfc3JjID0gc2F2ZXN0cmluZyAoc3Jj LCBzdHJsZW4gKHNyYykpOworKyAgcmV0dmFsLT5pbXBvcnRfZGVzdCA9IHNhdmVzdHJpbmcgKGRl c3QsIHN0cmxlbiAoZGVzdCkpOworKyAgcmV0dmFsLT5hbGlhcyA9IHNhdmVzdHJpbmcgKGFsaWFz LCBzdHJsZW4gKGFsaWFzKSk7CisrICByZXR2YWwtPmRlY2xhcmF0aW9uID0gc2F2ZXN0cmluZyAo ZGVjbGFyYXRpb24sIHN0cmxlbiAoZGVjbGFyYXRpb24pKTsKKysgIHJldHZhbC0+bGluZV9udW1i ZXIgPSBsaW5lX251bWJlcjsKKyAgIHJldHZhbC0+bmV4dCA9IG5leHQ7CisrICByZXR2YWwtPnNl YXJjaGVkID0gMDsKKyAKKyAgIHJldHVybiByZXR2YWw7CisgfQorQEAgLTIyOSwxMiArMjQ0LDQ4 IEBAIGNwX2FkZF91c2luZyAoY29uc3QgY2hhciAqZGVzdCwKKyAKKyBzdHJ1Y3Qgc3ltYm9sICoK KyBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAorLQkJCSAgIGNv bnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2Nr LAorIAkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CistICByZXR1cm4gbG9va3Vw X25hbWVzcGFjZV9zY29wZSAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluLAorLQkJ CQkgYmxvY2tfc2NvcGUgKGJsb2NrKSwgMCk7CisrICBzdHJ1Y3Qgc3ltYm9sICpzeW07IAorKyAg Y29uc3QgY2hhciAqc2NvcGUgPSBibG9ja19zY29wZSAoYmxvY2spOworKworKyAgc3ltID0gbG9v a3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwgYmxvY2ssIGRvbWFpbiwgc2NvcGUsIDApOworKyAg aWYgKHN5bSAhPSBOVUxMKQorKyAgICByZXR1cm4gc3ltOworKworKyAgcmV0dXJuIGNwX2xvb2t1 cF9zeW1ib2xfbmFtZXNwYWNlKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKKyt9CisrCisr LyogU2VhcmNoZXMgZm9yIE5BTUUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLCBhbmQgYnkgYXBw bHlpbmcgcmVsZXZhbnQgaW1wb3J0CisrICAgc3RhdGVtZW50cyBiZWxvbmdpbmcgdG8gQkxPQ0sg YW5kIGl0cyBwYXJlbnRzLiAgU0NPUEUgaXMgdGhlIG5hbWVzcGFjZQorKyAgIHNjb3BlIG9mIHRo ZSBjb250ZXh0IGluIHdoaWNoIHRoZSBzZWFyY2ggaXMgYmVpbmcgZXZhbHVhdGVkLiAgKi8KKysK KytzdHJ1Y3Qgc3ltYm9sKgorK2NwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFy ICpzY29wZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQor K3sKKysgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKysKKysgIC8qIEZpcnN0LCB0cnkgdG8gZmluZCB0 aGUgc3ltYm9sIGluIHRoZSBnaXZlbiBuYW1lc3BhY2UuICAqLworKyAgc3ltID0gY3BfbG9va3Vw X3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKKysgIGlm ICggc3ltICE9IE5VTEwpCisrICAgIHJldHVybiBzeW07CisrICAgIAorKyAgLyogU2VhcmNoIGZv ciBuYW1lIGluIG5hbWVzcGFjZXMgaW1wb3J0ZWQgdG8gdGhpcyBhbmQgcGFyZW50IGJsb2Nrcy4g ICovCisrICB3aGlsZSAoYmxvY2sgIT0gTlVMTCkKKysgICAgeworKyAgICAgIHN5bSA9IGNwX2xv b2t1cF9zeW1ib2xfaW1wb3J0cyhzY29wZSxuYW1lLCBibG9jaywgZG9tYWluLDAsMSk7CisrCisr ICAgICAgaWYgKHN5bSkKKysgICAgICAgIHJldHVybiBzeW07CisrCisrICAgICAgYmxvY2sgPSBC TE9DS19TVVBFUkJMT0NLKGJsb2NrKTsKKysgICAgfQorKworKyAgcmV0dXJuIE5VTEw7CisgfQor IAorIC8qIExvb2t1cCBOQU1FIGF0IG5hbWVzcGFjZSBzY29wZSAob3IsIGluIEMgdGVybXMsIGlu IHN0YXRpYyBhbmQKK0BAIC0yNTIsOSArMzAzLDggQEAgY3BfbG9va3VwX3N5bWJvbF9ub25sb2Nh bCAoY29uc3QgY2hhciAqbmFtZSwKKyAgICAiQTo6eCIsIGFuZCBpZiB0aGF0IGNhbGwgZmFpbHMs IHRoZW4gdGhlIGZpcnN0IGNhbGwgbG9va3MgZm9yCisgICAgIngiLiAgKi8KKyAKKy1zdGF0aWMg c3RydWN0IHN5bWJvbCAqCisrc3RydWN0IHN5bWJvbCAqCisgbG9va3VwX25hbWVzcGFjZV9zY29w ZSAoY29uc3QgY2hhciAqbmFtZSwKKy0JCQljb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgCQkJ Y29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAJCQljb25zdCBkb21haW5fZW51bSBkb21haW4s CisgCQkJY29uc3QgY2hhciAqc2NvcGUsCitAQCAtMjc2LDggKzMyNiw3IEBAIGxvb2t1cF9uYW1l c3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCisgCSAgbmV3X3Njb3BlX2xlbiArPSAyOwor IAl9CisgICAgICAgbmV3X3Njb3BlX2xlbiArPSBjcF9maW5kX2ZpcnN0X2NvbXBvbmVudCAoc2Nv cGUgKyBuZXdfc2NvcGVfbGVuKTsKKy0gICAgICBzeW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3Bl IChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLAorLQkJCQkgICAgZG9tYWluLCBzY29wZSwgbmV3 X3Njb3BlX2xlbik7CisrICAgICAgc3ltID0gbG9va3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwg YmxvY2ssIGRvbWFpbiwgc2NvcGUsIG5ld19zY29wZV9sZW4pOworICAgICAgIGlmIChzeW0gIT0g TlVMTCkKKyAJcmV0dXJuIHN5bTsKKyAgICAgfQorQEAgLTI4OCwyNSArMzM3LDk4IEBAIGxvb2t1 cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCisgICBuYW1lc3BhY2UgPSBhbGxv Y2EgKHNjb3BlX2xlbiArIDEpOworICAgc3RybmNweSAobmFtZXNwYWNlLCBzY29wZSwgc2NvcGVf bGVuKTsKKyAgIG5hbWVzcGFjZVtzY29wZV9sZW5dID0gJ1wwJzsKKy0gIHJldHVybiBjcF9sb29r dXBfc3ltYm9sX25hbWVzcGFjZSAobmFtZXNwYWNlLCBuYW1lLCBsaW5rYWdlX25hbWUsCistCQkJ CSAgICAgYmxvY2ssIGRvbWFpbik7CisrICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1l c3BhY2UgKG5hbWVzcGFjZSwgbmFtZSxibG9jaywgZG9tYWluKTsKKyB9CisgCistLyogTG9vayB1 cCBOQU1FIGluIHRoZSBDKysgbmFtZXNwYWNlIE5BTUVTUEFDRSwgYXBwbHlpbmcgdGhlIHVzaW5n CistICAgZGlyZWN0aXZlcyB0aGF0IGFyZSBhY3RpdmUgaW4gQkxPQ0suICBPdGhlciBhcmd1bWVu dHMgYXJlIGFzIGluCisrLyogTG9vayB1cCBOQU1FIGluIHRoZSBDKysgbmFtZXNwYWNlIE5BTUVT UEFDRS4gT3RoZXIgYXJndW1lbnRzIGFyZSBhcyBpbgorICAgIGNwX2xvb2t1cF9zeW1ib2xfbm9u bG9jYWwuICAqLworIAorK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKKytjcF9sb29rdXBfc3ltYm9s X2luX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorKwkJCSAgICAgICBjb25zdCBj aGFyICpuYW1lLAorKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorKwkJCSAg ICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisreworKworKyAgaWYgKG5hbWVzcGFjZVsw XSA9PSAnXDAnKQorKyAgICB7CisrICAgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAobmFt ZSwgYmxvY2ssZG9tYWluLCAwKTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgY2hh ciAqY29uY2F0ZW5hdGVkX25hbWUKKysJPSBhbGxvY2EgKHN0cmxlbiAobmFtZXNwYWNlKSArIDIg KyBzdHJsZW4gKG5hbWUpICsgMSk7CisrICAgICAgc3RyY3B5IChjb25jYXRlbmF0ZWRfbmFtZSwg bmFtZXNwYWNlKTsKKysgICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1lLCAiOjoiKTsKKysg ICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lKTsKKysgICAgICByZXR1cm4gbG9v a3VwX3N5bWJvbF9maWxlIChjb25jYXRlbmF0ZWRfbmFtZSwgYmxvY2ssIGRvbWFpbiwKKysJCQkJ Y3BfaXNfYW5vbnltb3VzIChuYW1lc3BhY2UpKTsKKysgICAgfQorK30KKysKKysvKiBVc2VkIGZv ciBjbGVhbnVwcyB0byByZXNldCB0aGUgInNlYXJjaGVkIiBmbGFnIGluY2FzZQorKyAgIG9mIGFu IGVycm9yLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Jlc2V0X2RpcmVjdGl2ZV9zZWFyY2hlZCAo dm9pZCAqZGF0YSkKKyt7CisrICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpkaXJlY3QgPSBkYXRhOwor KyAgZGlyZWN0LT5zZWFyY2hlZCA9IDA7CisrfQorKworKy8qIFNlYXJjaCBmb3IgTkFNRSBieSBh cHBseWluZyBhbGwgaW1wb3J0IHN0YXRlbWVudHMgYmVsb25naW5nCisrICAgdG8gQkxPQ0sgd2hp Y2ggYXJlIGFwcGxpY2FibGUgaW4gU0NPUEUuIElmIERFQ0xBUkFUSU9OX09OTFkgdGhlIHNlYXJj aAorKyAgIGlzIHJlc3RyaWN0ZWQgdG8gdXNpbmcgZGVjbGFyYXRpb25zLgorKyAgIEV4YW1wbGU6 CisrCisrICAgICBuYW1lc3BhY2UgQXsKKysgICAgICAgaW50IHg7CisrICAgICB9CisrICAgICB1 c2luZyBBOjp4OworKworKyAgIElmIFNFQVJDSF9QQVJFTlRTIHRoZSBzZWFyY2ggd2lsbCBpbmNs dWRlIGltcG9ydHMgd2hpY2ggYXJlIGFwcGxpY2FibGUgaW4KKysgICBwYXJlbnRzIG9mIHNjb3Bl cy4KKysgICBFeGFtcGxlOgorKworKyAgICAgbmFtZXNwYWNlIEF7CisrICAgICAgIHVzaW5nIG5h bWVzcGFjZSBYOworKyAgICAgICBuYW1lc3BhY2UgQnsKKysgICAgICAgICB1c2luZyBuYW1lc3Bh Y2UgWTsKKysgICAgICAgfQorKyAgICAgfQorKworKyAgIElmIFNDT1BFIGlzICJBOjpCIiBhbmQg U0VBUkNIX1BBUkVOVFMgaXMgdHJ1ZSB0aGUgaW1wb3J0cyBvZiBuYW1lc3BhY2VzIFgKKysgICBh bmQgWSB3aWxsIGJlIGNvbnNpZGVyZWQuIElmIFNFQVJDSF9QQVJFTlRTIGlzIGZhbHNlIG9ubHkg dGhlIGltcG9ydCBvZiBZCisrICAgaXMgY29uc2lkZXJlZC4gICovCisrCisgc3RydWN0IHN5bWJv bCAqCistY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSwK Ky0JCQkgICAgY29uc3QgY2hhciAqbmFtZSwKKy0JCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9u YW1lLAorLQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorLQkJCSAgICBjb25zdCBk b21haW5fZW51bSBkb21haW4pCisrY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzIChjb25zdCBjaGFy ICpzY29wZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGRlY2xhcmF0aW9uX29ubHksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgc2VhcmNoX3BhcmVudHMpCisgeworLSAgY29uc3Qgc3RydWN0IHVz aW5nX2RpcmVjdCAqY3VycmVudDsKKy0gIHN0cnVjdCBzeW1ib2wgKnN5bTsKKysgIHN0cnVjdCB1 c2luZ19kaXJlY3QgKmN1cnJlbnQ7CisrICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBOVUxMOworKyAg aW50IGRpcmVjdGl2ZV9tYXRjaDsKKysgIGludCBjdXJyZW50X2xpbmU7CisrICBzdHJ1Y3QgY2xl YW51cCAqc2VhcmNoZWRfY2xlYW51cDsKKysKKysgIGlmKCFkZWNsYXJhdGlvbl9vbmx5KQorKyAg ICAvKiBGaXJzdCwgdHJ5IHRvIGZpbmQgdGhlIHN5bWJvbCBpbiB0aGUgZ2l2ZW4gbmFtZXNwYWNl LiAgKi8KKysgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLCBu YW1lLCBibG9jaywgZG9tYWluKTsKKyAKKy0gIC8qIEZpcnN0LCBnbyB0aHJvdWdoIHRoZSB1c2lu ZyBkaXJlY3RpdmVzLiAgSWYgYW55IG9mIHRoZW0gYWRkIG5ldworKyAgaWYgKCBzeW0gIT0gTlVM TCkKKysgICAgcmV0dXJuIHN5bTsKKysKKysgIGlmIChoYXNfc3RhY2tfZnJhbWVzICgpKQorKyAg ICBjdXJyZW50X2xpbmUgPSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAoZ2V0X3NlbGVjdGVk X2ZyYW1lIChOVUxMKSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDApLmxpbmU7CisrICBlbHNlCisrICAgIGN1cnJlbnRfbGluZSA9IDA7CisrCisrICAv KiBHbyB0aHJvdWdoIHRoZSB1c2luZyBkaXJlY3RpdmVzLiAgSWYgYW55IG9mIHRoZW0gYWRkIG5l dworICAgICAgbmFtZXMgdG8gdGhlIG5hbWVzcGFjZSB3ZSdyZSBzZWFyY2hpbmcgaW4sIHNlZSBp ZiB3ZSBjYW4gZmluZCBhCisgICAgICBtYXRjaCBieSBhcHBseWluZyB0aGVtLiAgKi8KKyAKK0BA IC0zMTQsMzkgKzQzNiw3OCBAQCBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3QgY2hh ciAqbmFtZXNwYWNlLAorICAgICAgICBjdXJyZW50ICE9IE5VTEw7CisgICAgICAgIGN1cnJlbnQg PSBjdXJyZW50LT5uZXh0KQorICAgICB7CistICAgICAgaWYgKHN0cmNtcCAobmFtZXNwYWNlLCBj dXJyZW50LT5pbXBvcnRfZGVzdCkgPT0gMCkKKysgIAorKyAgICAgIC8qIElmIHRoZSBpbXBvcnQg ZGVzdGluYXRpb24gaXMgdGhlIGN1cnJlbnQgc2NvcGUgb3Igb25lIG9mIGl0cyBhbmNlc3RvcnMg dGhlbgorKyAgICAgICAgIGl0IGlzIGFwcGxpY2FibGUuICAqLworKyAgICAgIGRpcmVjdGl2ZV9t YXRjaCA9IHNlYXJjaF9wYXJlbnRzID8KKysgICAgICAgICAgICAgICAgICAgICAgICBzdHJuY21w IChzY29wZSwgY3VycmVudC0+aW1wb3J0X2Rlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RybGVuKGN1cnJlbnQtPmltcG9ydF9kZXN0KSkgPT0gMCA6CisrICAgICAgICAg ICAgICAgICAgICAgICAgc3RyY21wIChzY29wZSwgY3VycmVudC0+aW1wb3J0X2Rlc3QpID09IDA7 CisrCisrICAgICAgaWYgKGRpcmVjdGl2ZV9tYXRjaCAmJgorKyAgICAgICAgICBjdXJyZW50LT5s aW5lX251bWJlciA8IGN1cnJlbnRfbGluZSAmJgorKyAgICAgICAgICAhY3VycmVudC0+c2VhcmNo ZWQpCisgCXsKKy0JICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY3VycmVudC0+ aW1wb3J0X3NyYywKKy0JCQkJCSAgICBuYW1lLAorLQkJCQkJICAgIGxpbmthZ2VfbmFtZSwKKy0J CQkJCSAgICBibG9jaywKKy0JCQkJCSAgICBkb21haW4pOworKwkgIGN1cnJlbnQtPnNlYXJjaGVk ID0gMTsKKysJICBzZWFyY2hlZF9jbGVhbnVwID0gbWFrZV9jbGVhbnVwIChyZXNldF9kaXJlY3Rp dmVfc2VhcmNoZWQsIGN1cnJlbnQpOworKworKwkgIC8qIElmIHRoZXJlIGlzIGFuIGltcG9ydCBv ZiBhIHNpbmdsZSBkZWNsYXJhdGlvbiwgY29tcGFyZSB0aGUgaW1wb3J0ZWQKKysJICAgICBkZWNs YXJhdGlvbiB3aXRoIHRoZSBzb3VnaHQgb3V0IG5hbWUuIElmIHRoZXJlIGlzIGEgbWF0Y2ggcGFz cworKwkgICAgIGN1cnJlbnQtPmltcG9ydF9zcmMgYXMgTkFNRVNQQUNFIHRvIGRpcmVjdCB0aGUg c2VhcmNoIHRvd2FyZHMgdGhlCisrCSAgICAgaW1wb3J0ZWQgbmFtZXNwYWNlLiAgKi8KKysJICBp ZiAoc3RyY21wICgiIiwgY3VycmVudC0+ZGVjbGFyYXRpb24pICE9IDApCisrCSAgICB7CisrCSAg ICBpZiAoc3RyY21wIChuYW1lLCBjdXJyZW50LT5kZWNsYXJhdGlvbikgPT0gMCkKKysJICAgICAg eworKwkgICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY3VycmVudC0+ aW1wb3J0X3NyYywKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5hbWUsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9j aywKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7 CisrCSAgICAgIH0KKysKKysJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKKysJICAgIGlmIChz eW0pCisrCSAgICAgIHJldHVybiBzeW07CisrCisrCSAgICBjb250aW51ZTsKKysJICAgIH0KKysJ ICAgCisrCSAgaWYgKGRlY2xhcmF0aW9uX29ubHkpCisrCSAgICB7CisrCSAgICBjdXJyZW50LT5z ZWFyY2hlZCA9IDA7CisrCSAgICBkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsK KysJICAgIGNvbnRpbnVlOworKwkgICAgfQorKworKwkgIGlmIChzdHJjbXAgKG5hbWUsIGN1cnJl bnQtPmFsaWFzKSA9PSAwKQorKwkgICAgLyogSWYgdGhlIGltcG9ydCBpcyBjcmVhdGluZyBhbiBh bGlhcyBhbmQgdGhlIGFsaWFzIG1hdGNoZXMgdGhlCisrCSAgICAgICBzb3VnaHQgbmFtZS4gUGFz cyBjdXJyZW50LT5pbm5lciBhcyB0aGUgTkFNRSB0byBkaXJlY3QgdGhlCisrCSAgICAgICBzZWFy Y2ggdG93YXJkcyB0aGUgYWxpYXNlZCBuYW1lc3BhY2UgKi8KKysJICAgIHsKKysJICAgIHN5bSA9 IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChzY29wZSwKKysJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LT5pbXBvcnRfc3JjLAorKwkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7CisrCSAgICB9IGVsc2UgaWYgKHN0 cmNtcCAoIiIsIGN1cnJlbnQtPmFsaWFzKSA9PSAwKXsKKysJICAgIC8qIElmIHRoaXMgaW1wb3J0 IHN0YXRlbWVudCBjcmVhdGVzIG5vIGFsaWFzLCBwYXNzIGN1cnJlbnQtPmlubmVyIGFzCisrCSAg ICAgICBOQU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0aGUgaW1wb3J0ZWQg bmFtZXNwYWNlLiAqLworKwkgICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGN1 cnJlbnQtPmltcG9ydF9zcmMsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZSwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywK KysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sCisrCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwKTsKKysJICAgIH0KKysKKysJICBjdXJyZW50LT5zZWFyY2hl ZCA9IDA7CisrCSAgZGlzY2FyZF9jbGVhbnVwcyAoc2VhcmNoZWRfY2xlYW51cCk7CisrCisgCSAg aWYgKHN5bSAhPSBOVUxMKQorIAkgICAgcmV0dXJuIHN5bTsKKyAJfQorICAgICB9CisgCistICAv KiBXZSBkaWRuJ3QgZmluZCBhbnl0aGluZyBieSBhcHBseWluZyBhbnkgb2YgdGhlIHVzaW5nIGRp cmVjdGl2ZXMKKy0gICAgIHRoYXQgYXJlIHN0aWxsIGFwcGxpY2FibGU7IHNvIGxldCdzIHNlZSBp ZiB3ZSd2ZSBnb3QgYSBtYXRjaAorLSAgICAgdXNpbmcgdGhlIGN1cnJlbnQgbmFtZXNwYWNlLiAg Ki8KKy0gIAorLSAgaWYgKG5hbWVzcGFjZVswXSA9PSAnXDAnKQorLSAgICB7CistICAgICAgcmV0 dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywKKy0JCQkJ IGRvbWFpbiwgMCk7CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIGNoYXIgKmNvbmNh dGVuYXRlZF9uYW1lCistCT0gYWxsb2NhIChzdHJsZW4gKG5hbWVzcGFjZSkgKyAyICsgc3RybGVu IChuYW1lKSArIDEpOworLSAgICAgIHN0cmNweSAoY29uY2F0ZW5hdGVkX25hbWUsIG5hbWVzcGFj ZSk7CistICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgIjo6Iik7CistICAgICAgc3Ry Y2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFtZSk7CistICAgICAgc3ltID0gbG9va3VwX3N5bWJv bF9maWxlIChjb25jYXRlbmF0ZWRfbmFtZSwgbGlua2FnZV9uYW1lLAorLQkJCQlibG9jaywgZG9t YWluLCAKKy0JCQkJY3BfaXNfYW5vbnltb3VzIChuYW1lc3BhY2UpKTsKKy0gICAgICByZXR1cm4g c3ltOworLSAgICB9CisrICByZXR1cm4gTlVMTDsKKyB9CisgCisgLyogTG9vayB1cCBOQU1FIGlu IEJMT0NLJ3Mgc3RhdGljIGJsb2NrIGFuZCBpbiBnbG9iYWwgYmxvY2tzLiAgSWYKK0BAIC0zNTYs MTcgKzUxNywxNSBAQCBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFt ZXNwYWNlLAorIAorIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKKyBsb29rdXBfc3ltYm9sX2ZpbGUg KGNvbnN0IGNoYXIgKm5hbWUsCistCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJ ICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkgICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluLAorIAkJICAgIGludCBhbm9ueW1vdXNfbmFtZXNwYWNlKQorIHsKKyAgIHN0cnVjdCBz eW1ib2wgKnN5bSA9IE5VTEw7CisgCistICBzeW0gPSBsb29rdXBfc3ltYm9sX3N0YXRpYyAobmFt ZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKKysgIHN5bSA9IGxvb2t1cF9zeW1ib2xf c3RhdGljIChuYW1lLCBibG9jaywgZG9tYWluKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAg cmV0dXJuIHN5bTsKKy0KKyAgIGlmIChhbm9ueW1vdXNfbmFtZXNwYWNlKQorICAgICB7CisgICAg ICAgLyogU3ltYm9scyBkZWZpbmVkIGluIGFub255bW91cyBuYW1lc3BhY2VzIGhhdmUgZXh0ZXJu YWwgbGlua2FnZQorQEAgLTM3NiwxMiArNTM1LDExIEBAIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29u c3QgY2hhciAqbmFtZSwKKyAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmdsb2JhbF9ibG9jayA9 IGJsb2NrX2dsb2JhbF9ibG9jayAoYmxvY2spOworICAgICAgIAorICAgICAgIGlmIChnbG9iYWxf YmxvY2sgIT0gTlVMTCkKKy0Jc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGxp bmthZ2VfbmFtZSwgZ2xvYmFsX2Jsb2NrLAorLQkJCQkgICAgICAgZG9tYWluKTsKKysJc3ltID0g bG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGdsb2JhbF9ibG9jaywgZG9tYWluKTsKKyAg ICAgfQorICAgZWxzZQorICAgICB7CistICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9nbG9iYWwg KG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICAgICAgc3ltID0gbG9va3Vw X3N5bWJvbF9nbG9iYWwgKG5hbWUsIGJsb2NrLCBkb21haW4pOworICAgICB9CisgCisgICBpZiAo c3ltICE9IE5VTEwpCitAQCAtNDAyLDYgKzU2MCw3IEBAIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29u c3QgY2hhciAqbmFtZSwKKyAgICAgICBzeW0gPSBsb29rdXBfcG9zc2libGVfbmFtZXNwYWNlX3N5 bWJvbCAobmFtZSk7CisgICAgICAgaWYgKHN5bSAhPSBOVUxMKQorIAlyZXR1cm4gc3ltOworKwor ICAgICB9CisgCisgICByZXR1cm4gTlVMTDsKK0BAIC00MjksOSArNTg4LDggQEAgY3BfbG9va3Vw X25lc3RlZF90eXBlIChzdHJ1Y3QgdHlwZSAqcGFyZW50X3R5cGUsCisgCSAgIGxvb2t1cF9zeW1i b2xfbmFtZXNwYWNlIHdvcmtzIHdoZW4gbG9va2luZyB0aGVtIHVwLiAgKi8KKyAKKyAJY29uc3Qg Y2hhciAqcGFyZW50X25hbWUgPSBUWVBFX1RBR19OQU1FIChwYXJlbnRfdHlwZSk7CistCXN0cnVj dCBzeW1ib2wgKnN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChwYXJlbnRfbmFtZSwK KysJc3RydWN0IHN5bWJvbCAqc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHBh cmVudF9uYW1lLAorIAkJCQkJCQkgbmVzdGVkX25hbWUsCistCQkJCQkJCSBOVUxMLAorIAkJCQkJ CQkgYmxvY2ssCisgCQkJCQkJCSBWQVJfRE9NQUlOKTsKKyAJaWYgKHN5bSA9PSBOVUxMIHx8IFNZ TUJPTF9DTEFTUyAoc3ltKSAhPSBMT0NfVFlQRURFRikKK0BAIC02NzcsNyArODM1LDcgQEAgY2hl Y2tfb25lX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBs ZW4sCisgCisgICBtZW1jcHkgKG5hbWVfY29weSwgbmFtZSwgbGVuKTsKKyAgIG5hbWVfY29weVts ZW5dID0gJ1wwJzsKKy0gIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lX2Nv cHksIE5VTEwsIFZBUl9ET01BSU4pOworKyAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxv Y2ssIG5hbWVfY29weSwgVkFSX0RPTUFJTik7CisgCisgICBpZiAoc3ltID09IE5VTEwpCisgICAg IHsKK0BAIC03MTgsNyArODc2LDcgQEAgbG9va3VwX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wg KGNvbnN0IGNoYXIgKm5hbWUpCisgICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOworIAorICAgICAg IHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGdldF9wb3NzaWJsZV9uYW1lc3BhY2VfYmxvY2sg KG9iamZpbGUpLAorLQkJCQkgbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7CisrCQkJCSBuYW1lLCBW QVJfRE9NQUlOKTsKKyAKKyAgICAgICBpZiAoc3ltICE9IE5VTEwpCisgCXJldHVybiBzeW07Citk aWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuYyBiL2dkYi9jcC1zdXBwb3J0LmMKK2luZGV4IGMz MWZjZmYuLmZjMjk0YWUgMTAwNjQ0CistLS0gYS9nZGIvY3Atc3VwcG9ydC5jCisrKysgYi9nZGIv Y3Atc3VwcG9ydC5jCitAQCAtMTkwLDcgKzE5MCw4IEBAIG1hbmdsZWRfbmFtZV90b19jb21wIChj b25zdCBjaGFyICptYW5nbGVkX25hbWUsIGludCBvcHRpb25zLAorICAgcmV0dXJuIHJldDsKKyB9 CisgCistLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBjb250YWluaW5nIG1ldGhvZCBQ SFlTTkFNRS4gICovCisrLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciBuYW1lc3Bh Y2UgY29udGFpbmluZworKyAgIGZ1bmN0aW9uLCBtZXRob2QsIG9yIHZhcmlhYmxlIFBIWVNOQU1F LiAgKi8KKyAKKyBjaGFyICoKKyBjcF9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGNvbnN0IGNo YXIgKnBoeXNuYW1lKQorQEAgLTg0MCw5ICs4NDEsOSBAQCByZWFkX2luX3BzeW10YWJzIChjb25z dCBjaGFyICpmdW5jX25hbWUpCisgICAgIGlmIChwcy0+cmVhZGluKQorICAgICAgIGNvbnRpbnVl OworIAorLSAgICBpZiAoKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIGZ1bmNfbmFtZSwgTlVM TCwgMSwgVkFSX0RPTUFJTikKKysgICAgaWYgKChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBm dW5jX25hbWUsIDEsIFZBUl9ET01BSU4pCisgCSAhPSBOVUxMKQorLQl8fCAobG9va3VwX3BhcnRp YWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCBOVUxMLCAwLCBWQVJfRE9NQUlOKQorKwl8fCAobG9v a3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCAwLCBWQVJfRE9NQUlOKQorIAkgICAg IT0gTlVMTCkpCisgICAgICAgcHN5bXRhYl90b19zeW10YWIgKHBzKTsKKyAgIH0KK2RpZmYgLS1n aXQgYS9nZGIvY3Atc3VwcG9ydC5oIGIvZ2RiL2NwLXN1cHBvcnQuaAoraW5kZXggYTYyOTk1NS4u MmFmZGI0OCAxMDA2NDQKKy0tLSBhL2dkYi9jcC1zdXBwb3J0LmgKKysrKyBiL2dkYi9jcC1zdXBw b3J0LmgKK0BAIC0zOCwxNSArMzgsMzMgQEAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudDsKKyAK KyAvKiBUaGlzIHN0cnVjdCBpcyBkZXNpZ25lZCB0byBzdG9yZSBkYXRhIGZyb20gdXNpbmcgZGly ZWN0aXZlcy4gIEl0CisgICAgc2F5cyB0aGF0IG5hbWVzIGZyb20gbmFtZXNwYWNlIElNUE9SVF9T UkMgc2hvdWxkIGJlIHZpc2libGUgd2l0aGluCistICAgbmFtZXNwYWNlIElNUE9SVF9ERVNULiBJ TVBPUlRfREVTVCBzaG91bGQgYWx3YXlzIGJlIGEgc3RyaWN0IGluaXRpYWwKKy0gICBzdWJzdHJp bmcgb2YgSU1QT1JUX1NSQy4gVGhlc2UgZm9ybSBhIGxpbmtlZCBsaXN0OyBORVhUIGlzIHRoZSBu ZXh0IGVsZW1lbnQKKy0gICBvZiB0aGUgbGlzdC4gICovCisrICAgbmFtZXNwYWNlIElNUE9SVF9E RVNULiAgSU1QT1JUX0RFU1Qgc2hvdWxkIGFsd2F5cyBiZSBhIHN0cmljdCBpbml0aWFsCisrICAg c3Vic3RyaW5nIG9mIElNUE9SVF9TUkMuICBUaGVzZSBmb3JtIGEgbGlua2VkIGxpc3Q7IE5FWFQg aXMgdGhlIG5leHQKKysgICBlbGVtZW50IG9mIHRoZSBsaXN0LiAgQUxJQVMgaXMgc2V0IHRvIGEg bm9uIGVtcHR5IHN0cmluZyBpZiB0aGUgaW1wb3J0ZWQKKysgICBuYW1lc3BhY2UgaGFzIGJlZW4g YWxpYXNlZC5FZzoKKysgICAgICAgbmFtZXNwYWNlIEM9QTo6QjsKKysgICBBTElBUyA9ICJDIgor KyAgIERFQ0xBUkFUSU9OIGlzIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBkZWNsYXJhdGlvbiwg aWYgdGhpcyBpbXBvcnQgCisrICAgc3RhdGVtZW50IHJlcHJlc2VudHMgb25lLiBFZzoKKysgICAg ICAgdXNpbmcgQTo6eDsKKysgICBXaGVyZSB4IGlzIHZhcmlhYmxlIGluIG5hbWVzcGFjZSBBLiBk ZWNsYXJhdGlvbiBpcyBzZXQgdG8geC4gIAorKyovCisgCisgc3RydWN0IHVzaW5nX2RpcmVjdAor IHsKKyAgIGNoYXIgKmltcG9ydF9zcmM7CisgICBjaGFyICppbXBvcnRfZGVzdDsKKysKKysgIGNo YXIgKmFsaWFzOworKworKyAgY2hhciAqZGVjbGFyYXRpb247CisrCisrICBpbnQgbGluZV9udW1i ZXI7CisrCisgICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXh0OworKworKyAgLyogVXNlZCBkdXJp bmcgaW1wb3J0IHNlYXJjaCB0byB0ZW1wb3Jhcmx5IG1hcmsgdGhpcyBub2RlIGFzIHNlYXJjZWQu ICAqLworKyAgaW50IHNlYXJjaGVkOworIH07CisgCisgCitAQCAtNTQsNiArNzIsNyBAQCBzdHJ1 Y3QgdXNpbmdfZGlyZWN0CisgCisgZXh0ZXJuIGNoYXIgKmNwX2Nhbm9uaWNhbGl6ZV9zdHJpbmcg KGNvbnN0IGNoYXIgKnN0cmluZyk7CisgCisrCisgZXh0ZXJuIGNoYXIgKmNwX2NsYXNzX25hbWVf ZnJvbV9waHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25hbWUpOworIAorIGV4dGVybiBjaGFyICpt ZXRob2RfbmFtZV9mcm9tX3BoeXNuYW1lIChjb25zdCBjaGFyICpwaHlzbmFtZSk7CitAQCAtNzks MTAgKzk4LDE2IEBAIGV4dGVybiBpbnQgY3BfdmFsaWRhdGVfb3BlcmF0b3IgKGNvbnN0IGNoYXIg KmlucHV0KTsKKyBleHRlcm4gaW50IGNwX2lzX2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNw YWNlKTsKKyAKKyBleHRlcm4gdm9pZCBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChjb25zdCBjaGFy ICpkZXN0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KnNyYyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq c3JjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFs aWFzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRl Y2xhcmF0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu dCBsaW5lX251bWJlcik7CisgCisgZXh0ZXJuIHN0cnVjdCB1c2luZ19kaXJlY3QgKmNwX2FkZF91 c2luZyAoY29uc3QgY2hhciAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYWxpYXMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGVjbGFyYXRpb24sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxpbmVfbnVtYmVyLAor IAkJCQkJICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXh0KTsKKyAKKyBleHRlcm4gdm9pZCBjcF9p bml0aWFsaXplX25hbWVzcGFjZSAodm9pZCk7CitAQCAtOTksMTUgKzEyNCwyMCBAQCBleHRlcm4g dm9pZCBjcF9zZXRfYmxvY2tfc2NvcGUgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwKKyBl eHRlcm4gdm9pZCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0 IHN5bWJvbCAqc3ltYm9sKTsKKyAKKyBleHRlcm4gc3RydWN0IHN5bWJvbCAqY3BfbG9va3VwX3N5 bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCQkgY29uc3QgY2hhciAqbGlu a2FnZV9uYW1lLAorIAkJCQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorIAkJCQkJCSBj b25zdCBkb21haW5fZW51bSBkb21haW4pOworIAorK3N0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9z eW1ib2xfaW1wb3J0cyAoY29uc3QgY2hhciAqc2NvcGUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRv bWFpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWNs YXJhdGlvbl9vbmx5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHNlYXJjaF9wYXJlbnRzKTsKKysKKyBleHRlcm4gc3RydWN0IHN5bWJvbCAqY3BfbG9va3Vw X3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSwKKy0JCQkJCQkgIGNvbnN0 IGNoYXIgKm5hbWUsCistCQkJCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCistCQkJCQkJ ICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorLQkJCQkJCSAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKTsKKyAKKyBleHRlcm4gc3RydWN0IHR5cGUgKmNwX2xvb2t1cF9uZXN0ZWRfdHlwZSAo c3RydWN0IHR5cGUgKnBhcmVudF90eXBlLAorIAkJCQkJICAgY29uc3QgY2hhciAqbmVzdGVkX25h bWUsCitkaWZmIC0tZ2l0IGEvZ2RiL2RieHJlYWQuYyBiL2dkYi9kYnhyZWFkLmMKK2luZGV4IDZl ZjY3NjcuLjVmNDgyNWMgMTAwNjQ0CistLS0gYS9nZGIvZGJ4cmVhZC5jCisrKysgYi9nZGIvZGJ4 cmVhZC5jCitAQCAtMzU2NSw2ICszNTY1LDcgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5zIGFvdXRf c3ltX2ZucyA9CisgICBkYnhfbmV3X2luaXQsCQkvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhp bmcgZ2JsIHRvIGVudGlyZSBzeW10YWIgKi8KKyAgIGRieF9zeW1maWxlX2luaXQsCS8qIHN5bV9p bml0OiByZWFkIGluaXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KKyAgIGRieF9z eW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFi ICovCisrICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLworICAgZGJ4X3N5bWZpbGVf ZmluaXNoLAkJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCisg ICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywgLyogc3ltX29mZnNldHM6IHBhcnNlIHVzZXIncyBv ZmZzZXRzIHRvCisgCQkJICAgICAgaW50ZXJuYWwgZm9ybSAqLworZGlmZiAtLWdpdCBhL2dkYi9k b2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitpbmRleCBkNzE2ZDBkLi4zNWRj MTg1IDEwMDY0NAorLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGIu dGV4aW5mbworQEAgLTExNTksNiArMTE1OSwxNiBAQCBmb3IgcmVtb3RlIGRlYnVnZ2luZy4KKyBS dW4gdXNpbmcgQHZhcntkZXZpY2V9IGZvciB5b3VyIHByb2dyYW0ncyBzdGFuZGFyZCBpbnB1dCBh bmQgb3V0cHV0LgorIEBjIEZJWE1FOiBraW5nZG9uIHRoaW5rcyB0aGVyZSBpcyBtb3JlIHRvIC10 dHkuICBJbnZlc3RpZ2F0ZS4KKyAKKytAaXRlbSAtUAorK0BjaW5kZXggQGNvZGV7LVB9CisrQGl0 ZW14IC0tcHl0aG9uCiArQGNpbmRleCBAY29kZXstLXB5dGhvbn0KICtDaGFuZ2UgaW50ZXJwcmV0 YXRpb24gb2YgY29tbWFuZCBsaW5lIHNvIHRoYXQgdGhlIGFyZ3VtZW50IGltbWVkaWF0ZWx5CiAr Zm9sbG93aW5nIHRoaXMgc3dpdGNoIGlzIHRha2VuIHRvIGJlIHRoZSBuYW1lIG9mIGEgUHl0aG9u IHNjcmlwdCBmaWxlLgpAQCAtMTY1NCw3ICsyMDkzLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2Zj NSAxMDA2NDQKICBAYyByZXNvbHZlIHRoZSBzaXR1YXRpb24gb2YgdGhlc2UgZXZlbnR1YWxseQog IEBpdGVtIC10dWkKICBAY2luZGV4IEBjb2Rley0tdHVpfQotQEAgLTE5MTAxLDcgKzE5MTEzLDcg QEAgY29tbWFuZDoKK0BAIC0xOTE0NSw3ICsxOTE1NSw3IEBAIGNvbW1hbmQ6CiAgQHRhYmxlIEBj b2RlCiAgQGtpbmRleCBzb3VyY2UKICBAY2luZGV4IGV4ZWN1dGUgY29tbWFuZHMgZnJvbSBhIGZp bGUKQEAgLTE2NjMsMTkgKzIxMDIsNyBAQCBpbmRleCAyNTNlMjUxLi42ZDczZmM1IDEwMDY0NAog IEV4ZWN1dGUgdGhlIGNvbW1hbmQgZmlsZSBAdmFye2ZpbGVuYW1lfS4KICBAZW5kIHRhYmxlCiAg Ci1AQCAtMTkxMTgsNiArMTkxMzAsMTEgQEAgSWYgQGNvZGV7LXZ9LCBmb3IgdmVyYm9zZSBtb2Rl LCBpcyBnaXZlbiB0aGVuIEB2YWx1ZXtHREJOfSBkaXNwbGF5cwotIGVhY2ggY29tbWFuZCBhcyBp dCBpcyBleGVjdXRlZC4gIFRoZSBvcHRpb24gbXVzdCBiZSBnaXZlbiBiZWZvcmUKLSBAdmFye2Zp bGVuYW1lfSwgYW5kIGlzIGludGVycHJldGVkIGFzIHBhcnQgb2YgdGhlIGZpbGVuYW1lIGFueXdo ZXJlIGVsc2UuCi0gCi0rSWYgQHZhcntmaWxlbmFtZX0gZW5kcyBpbiBAc2FtcHsucHl9LCBvciBp ZiBAY29kZXstcH0sIGZvciBQeXRob24sIGlzCi0rZ2l2ZW4gdGhlbiBAdmFsdWV7R0RCTn0gZXZh bHVhdGVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhcyBQeXRob24KLStjb2RlLiAgSWYgUHl0 aG9uIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluIHRvIEB2YWx1ZXtHREJOfSwgdGhlbiBhbgot K2Vycm9yIG9jY3Vycy4KLSsKLSBDb21tYW5kcyB0aGF0IHdvdWxkIGFzayBmb3IgY29uZmlybWF0 aW9uIGlmIHVzZWQgaW50ZXJhY3RpdmVseSBwcm9jZWVkCi0gd2l0aG91dCBhc2tpbmcgd2hlbiB1 c2VkIGluIGEgY29tbWFuZCBmaWxlLiAgTWFueSBAdmFsdWV7R0RCTn0gY29tbWFuZHMgdGhhdAot IG5vcm1hbGx5IHByaW50IG1lc3NhZ2VzIHRvIHNheSB3aGF0IHRoZXkgYXJlIGRvaW5nIG9taXQg dGhlIG1lc3NhZ2VzCi1AQCAtMTkzNzksOCArMTkzOTYsNiBAQCBjb250YWluaW5nIEBjb2Rle2Vu ZH0uICBGb3IgZXhhbXBsZToKK0BAIC0xOTQyOCw4ICsxOTQzOCw2IEBAIGNvbnRhaW5pbmcgQGNv ZGV7ZW5kfS4gIEZvciBleGFtcGxlOgogIAogIEBzbWFsbGV4YW1wbGUKICAoQHZhbHVle0dEQlB9 KSBweXRob24KQEAgLTE2ODQsNyArMjExMSw3IEBAIGluZGV4IDI1M2UyNTEuLjZkNzNmYzUgMTAw NjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMTkzOTMsNiArMTk0MDgsMTQgQEAgaW4g YSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWlu dCBzZXQKK0BAIC0xOTQ0Miw2ICsxOTQ1MCwxNCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlz IGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIEBjb2Rle21haW50IHNldAogIHB5dGhvbiBwcmludC1z dGFja306IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNrCiAgcHJp bnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24gc3RhY2sgcHJpbnRp bmcgaXMKICBkaXNhYmxlZC4KQEAgLTE2OTksNyArMjEyNiw3IEBAIGluZGV4IDI1M2UyNTEuLjZk NzNmYzUgMTAwNjQ0CiAgQGVuZCB0YWJsZQogIAogIEBub2RlIFB5dGhvbiBBUEkKLUBAIC0xOTQw MCw2ICsxOTQyMywxNCBAQCBkaXNhYmxlZC4KK0BAIC0xOTQ0OSw2ICsxOTQ2NSwxNCBAQCBkaXNh YmxlZC4KICBAY2luZGV4IHB5dGhvbiBhcGkKICBAY2luZGV4IHByb2dyYW1taW5nIGluIHB5dGhv bgogIApAQCAtMTcxNCw3ICsyMTQxLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQK ICBAY2luZGV4IHB5dGhvbiBzdGRvdXQKICBAY2luZGV4IHB5dGhvbiBwYWdpbmF0aW9uCiAgQXQg c3RhcnR1cCwgQHZhbHVle0dEQk59IG92ZXJyaWRlcyBQeXRob24ncyBAY29kZXtzeXMuc3Rkb3V0 fSBhbmQKLUBAIC0xOTQxMiwxMyArMTk0NDMsMTcgQEAgc2l0dWF0aW9uLCBhIFB5dGhvbiBAY29k ZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KK0BAIC0xOTQ2MSwxMyAr MTk0ODUsMTcgQEAgc2l0dWF0aW9uLCBhIFB5dGhvbiBAY29kZXtLZXlib2FyZEludGVycnVwdH0g ZXhjZXB0aW9uIGlzIHRocm93bi4KICAqIEJhc2ljIFB5dGhvbjo6ICAgICAgICAgICAgICAgIEJh c2ljIFB5dGhvbiBGdW5jdGlvbnMuCiAgKiBFeGNlcHRpb24gSGFuZGxpbmc6OgogICogQXV0by1s b2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2Rl LgpAQCAtMTczMyw3ICsyMTYwLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICAq IEZyYW1lcyBJbiBQeXRob246OiAgICAgICAgICAgIEFjZXNzaW5nIGluZmVyaW9yIHN0YWNrIGZy YW1lcyBmcm9tIFB5dGhvbi4KICAqIExhenkgU3RyaW5ncyBJbiBQeXRob246OiAgICAgIFB5dGhv biByZXByZXNlbnRhdGlvbiBvZiBsYXp5IHN0cmluZ3MuCiAgQGVuZCBtZW51Ci1AQCAtMTk0NDYs NiArMTk0ODEsMTIgQEAgY29tbWFuZCBhcyBoYXZpbmcgb3JpZ2luYXRlZCBmcm9tIHRoZSB1c2Vy IGludm9raW5nIGl0IGludGVyYWN0aXZlbHkuCitAQCAtMTk0OTUsNiArMTk1MjMsMTIgQEAgY29t bWFuZCBhcyBoYXZpbmcgb3JpZ2luYXRlZCBmcm9tIHRoZSB1c2VyIGludm9raW5nIGl0IGludGVy YWN0aXZlbHkuCiAgSXQgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUuICBJZiBvbWl0dGVkLCBpdCBk ZWZhdWx0cyB0byBAY29kZXtGYWxzZX0uCiAgQGVuZCBkZWZ1bgogIApAQCAtMTc0Niw3ICsyMTcz LDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICBAZmluZGV4IGdkYi5wYXJhbWV0 ZXIKICBAZGVmdW4gcGFyYW1ldGVyIHBhcmFtZXRlcgogIFJldHVybiB0aGUgdmFsdWUgb2YgYSBA dmFsdWV7R0RCTn0gcGFyYW1ldGVyLiAgQHZhcntwYXJhbWV0ZXJ9IGlzIGEKLUBAIC0xOTQ2Miw2 ICsxOTUwMyw3IEBAIGEgUHl0aG9uIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLCBhbmQg cmV0dXJuZWQuCitAQCAtMTk1MTEsNiArMTk1NDUsNyBAQCBhIFB5dGhvbiB2YWx1ZSBvZiB0aGUg YXBwcm9wcmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgogIEBkZWZ1biBoaXN0b3J5IG51bWJlcgog IFJldHVybiBhIHZhbHVlIGZyb20gQHZhbHVle0dEQk59J3MgdmFsdWUgaGlzdG9yeSAoQHB4cmVm e1ZhbHVlCiAgSGlzdG9yeX0pLiAgQHZhcntudW1iZXJ9IGluZGljYXRlcyB3aGljaCBoaXN0b3J5 IGVsZW1lbnQgdG8gcmV0dXJuLgpAQCAtMTc1NCw3ICsyMTgxLDcgQEAgaW5kZXggMjUzZTI1MS4u NmQ3M2ZjNSAxMDA2NDQKICBJZiBAdmFye251bWJlcn0gaXMgbmVnYXRpdmUsIHRoZW4gQHZhbHVl e0dEQk59IHdpbGwgdGFrZSBpdHMgYWJzb2x1dGUgdmFsdWUKICBhbmQgY291bnQgYmFja3dhcmQg ZnJvbSB0aGUgbGFzdCBlbGVtZW50IChpLmUuLCB0aGUgbW9zdCByZWNlbnQgZWxlbWVudCkgdG8K ICBmaW5kIHRoZSB2YWx1ZSB0byByZXR1cm4uICBJZiBAdmFye251bWJlcn0gaXMgemVybywgdGhl biBAdmFsdWV7R0RCTn0gd2lsbAotQEAgLTE5NDg2LDYgKzE5NTI4LDIxIEBAIGNvbXB1dGUgdmFs dWVzLCBmb3IgZXhhbXBsZSwgaXQgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCB0aGUgdmFsdWUgb2Yg YQorQEAgLTE5NTM1LDYgKzE5NTcwLDIxIEBAIGNvbXB1dGUgdmFsdWVzLCBmb3IgZXhhbXBsZSwg aXQgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCB0aGUgdmFsdWUgb2YgYQogIGNvbnZlbmllbmNlIHZh cmlhYmxlIChAcHhyZWZ7Q29udmVuaWVuY2UgVmFyc30pIGFzIGEgQGNvZGV7Z2RiLlZhbHVlfS4K ICBAZW5kIGRlZnVuCiAgCkBAIC0xNzc2LDcgKzIyMDMsNyBAQCBpbmRleCAyNTNlMjUxLi42ZDcz ZmM1IDEwMDY0NAogIEBmaW5kZXggZ2RiLndyaXRlCiAgQGRlZnVuIHdyaXRlIHN0cmluZwogIFBy aW50IGEgc3RyaW5nIHRvIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQg c3RyZWFtLgotQEAgLTE5NTAwLDYgKzE5NTU3LDExIEBAIEZsdXNoIEB2YWx1ZXtHREJOfSdzIHBh Z2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLiAgRmx1c2hpbmcKK0BAIC0xOTU0OSw2ICsx OTU5OSwxMSBAQCBGbHVzaCBAdmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0 IHN0cmVhbS4gIEZsdXNoaW5nCiAgZnVuY3Rpb24uCiAgQGVuZCBkZWZ1bgogIApAQCAtMTc4OCw3 ICsyMjE1LDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICBAbm9kZSBFeGNlcHRp b24gSGFuZGxpbmcKICBAc3Vic3Vic2VjdGlvbiBFeGNlcHRpb24gSGFuZGxpbmcKICBAY2luZGV4 IHB5dGhvbiBleGNlcHRpb25zCi1AQCAtMTk3MzgsNiArMTk4MDAsOSBAQCBtb2R1bGU6CitAQCAt MTk3ODcsNiArMTk4NDIsOSBAQCBtb2R1bGU6CiAgVGhpcyBmdW5jdGlvbiBsb29rcyB1cCBhIHR5 cGUgYnkgbmFtZS4gIEB2YXJ7bmFtZX0gaXMgdGhlIG5hbWUgb2YgdGhlCiAgdHlwZSB0byBsb29r IHVwLiAgSXQgbXVzdCBiZSBhIHN0cmluZy4KICAKQEAgLTE3OTgsNyArMjIyNSw3IEBAIGluZGV4 IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0CiAgT3JkaW5hcmlseSwgdGhpcyBmdW5jdGlvbiB3aWxs IHJldHVybiBhbiBpbnN0YW5jZSBvZiBAY29kZXtnZGIuVHlwZX0uCiAgSWYgdGhlIG5hbWVkIHR5 cGUgY2Fubm90IGJlIGZvdW5kLCBpdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4KICBAZW5kIGRl ZnVuCi1AQCAtMTk4NjAsNyArMTk5MjUsNyBAQCBJZiB0aGUgdHlwZSBkb2VzIG5vdCBoYXZlIGEg dGFyZ2V0LCB0aGlzIG1ldGhvZCB3aWxsIHRocm93IGFuCitAQCAtMTk5MDksNyArMTk5NjcsNyBA QCBJZiB0aGUgdHlwZSBkb2VzIG5vdCBoYXZlIGEgdGFyZ2V0LCB0aGlzIG1ldGhvZCB3aWxsIHRo cm93IGFuCiAgZXhjZXB0aW9uLgogIEBlbmQgZGVmbWV0aG9kCiAgCkBAIC0xODA3LDcgKzIyMzQs NyBAQCBpbmRleCAyNTNlMjUxLi42ZDczZmM1IDEwMDY0NAogIElmIHRoaXMgQGNvZGV7Z2RiLlR5 cGV9IGlzIGFuIGluc3RhbnRpYXRpb24gb2YgYSB0ZW1wbGF0ZSwgdGhpcyB3aWxsCiAgcmV0dXJu IGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZQog IEB2YXJ7bn10aCB0ZW1wbGF0ZSBhcmd1bWVudC4KLUBAIC0xOTg2OCw3ICsxOTkzMyw4IEBAIHJl dHVybiBhIG5ldyBAY29kZXtnZGIuVHlwZX0gd2hpY2ggcmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0 aGUKK0BAIC0xOTkxNyw3ICsxOTk3NSw4IEBAIHJldHVybiBhIG5ldyBAY29kZXtnZGIuVHlwZX0g d2hpY2ggcmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUKICBJZiB0aGlzIEBjb2Rle2dkYi5UeXBl fSBpcyBub3QgYSB0ZW1wbGF0ZSB0eXBlLCB0aGlzIHdpbGwgdGhyb3cgYW4KICBleGNlcHRpb24u ICBPcmRpbmFyaWx5LCBvbmx5IENAdHsrK30gY29kZSB3aWxsIGhhdmUgdGVtcGxhdGUgdHlwZXMu CiAgCkBAIC0xODE3LDcgKzIyNDQsNyBAQCBpbmRleCAyNTNlMjUxLi42ZDczZmM1IDEwMDY0NAog IEBlbmQgZGVmbWV0aG9kCiAgQGVuZCB0YWJsZQogIAotQEAgLTIwMjIyLDYgKzIwMjg4LDEyMSBA QCBpbXBvcnQgZ2RiLmxpYnN0ZGN4eC52NgorQEAgLTIwMjcxLDYgKzIwMzMwLDEyMSBAQCBpbXBv cnQgZ2RiLmxpYnN0ZGN4eC52NgogIGdkYi5saWJzdGRjeHgudjYucmVnaXN0ZXJfcHJpbnRlcnMg KGdkYi5jdXJyZW50X29iamZpbGUgKCkpCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKQEAgLTE5Mzks NyArMjM2Niw3IEBAIGluZGV4IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0CiAgQG5vZGUgQ29tbWFu ZHMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24gQ29tbWFuZHMgSW4gUHl0aG9uCiAgCi1AQCAt MjA0NzQsNiArMjA2NTUsMTM1IEBAIHJlZ2lzdHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRoIEB2 YWx1ZXtHREJOfS4gIERlcGVuZGluZyBvbiBob3cgdGhlCitAQCAtMjA1MjMsNiArMjA2OTcsMTM1 IEBAIHJlZ2lzdHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRoIEB2YWx1ZXtHREJOfS4gIERlcGVu ZGluZyBvbiBob3cgdGhlCiAgUHl0aG9uIGNvZGUgaXMgcmVhZCBpbnRvIEB2YWx1ZXtHREJOfSwg eW91IG1heSBuZWVkIHRvIGltcG9ydCB0aGUKICBAY29kZXtnZGJ9IG1vZHVsZSBleHBsaWNpdGx5 LgogIApAQCAtMjA3NSw3ICsyNTAyLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQK ICBAbm9kZSBGdW5jdGlvbnMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24gV3JpdGluZyBuZXcg Y29udmVuaWVuY2UgZnVuY3Rpb25zCiAgCi1AQCAtMjA1NzgsNiArMjA4ODgsODIgQEAgd2hpY2gg aXMgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nfSwgZm9y IG1vcmUKK0BAIC0yMDYyNyw2ICsyMDkzMCw4MiBAQCB3aGljaCBpcyB1c2VkIHRvIGZvcm1hdCB0 aGUgdmFsdWUuICBAeHJlZntQcmV0dHkgUHJpbnRpbmd9LCBmb3IgbW9yZQogIGluZm9ybWF0aW9u LgogIEBlbmQgZGVmaXZhcgogIApAQCAtMjE1OCw3ICsyNTg1LDcgQEAgaW5kZXggMjUzZTI1MS4u NmQ3M2ZjNSAxMDA2NDQKICBAbm9kZSBGcmFtZXMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24g QWNlc3NpbmcgaW5mZXJpb3Igc3RhY2sgZnJhbWVzIGZyb20gUHl0aG9uLgogIAotQEAgLTIwNjQy LDYgKzIxMDI4LDE0IEBAIGZ1bmN0aW9uIHRvIGEgc3RyaW5nLgorQEAgLTIwNjkxLDYgKzIxMDcw LDE0IEBAIGZ1bmN0aW9uIHRvIGEgc3RyaW5nLgogIFJldHVybnMgdGhlIGZyYW1lJ3MgcmVzdW1l IGFkZHJlc3MuCiAgQGVuZCBkZWZtZXRob2QKICAKQEAgLTIxNzMsNyArMjYwMCw3IEBAIGluZGV4 IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0CiAgQGRlZm1ldGhvZCBGcmFtZSBvbGRlcgogIFJldHVy biB0aGUgZnJhbWUgdGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4KICBAZW5kIGRlZm1ldGhvZAotQEAg LTIwNjUwLDEwICsyMTA0NCwxOCBAQCBSZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMg ZnJhbWUuCitAQCAtMjA2OTksMTAgKzIxMDg2LDE4IEBAIFJldHVybiB0aGUgZnJhbWUgdGhhdCBj YWxsZWQgdGhpcyBmcmFtZS4KICBSZXR1cm4gdGhlIGZyYW1lIGNhbGxlZCBieSB0aGlzIGZyYW1l LgogIEBlbmQgZGVmbWV0aG9kCiAgCkBAIC0yMzY1LDEwICsyNzkyLDEwIEBAIGluZGV4IDk5MTAw ZDcuLjU5MTUyNDkgMTAwNjQ0CiAgICAgICAgaWYgKGZkZV90YWJsZSA9PSBOVUxMKQogIAljb250 aW51ZTsKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwot aW5kZXggNWUyN2QzOC4uNjI4YmE4OCAxMDA2NDQKK2luZGV4IGVkMjFlZGYuLjFiMTBjYjcgMTAw NjQ0CiAtLS0gYS9nZGIvZHdhcmYyZXhwci5jCiArKysgYi9nZGIvZHdhcmYyZXhwci5jCi1AQCAt ODQ4LDYgKzg0OCwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250 ZXh0ICpjdHgsCitAQCAtODY4LDYgKzg2OCwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCSAgY3R4LT5pbml0aWFsaXplZCA9IDA7CiAgCSAg Z290byBub19wdXNoOwogIApAQCAtMjcxOCwxOSArMzE0NSwyMiBAQCBpbmRleCBmYTBiZDExLi5m ZGVhMmI0IDEwMDY0NAogIAogICNlbmRpZiAvKiBkd2FyZjJsb2MuaCAqLwogZGlmZiAtLWdpdCBh L2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCi1pbmRleCAyNDM4NTljLi4yZmNj ZWM1IDEwMDY0NAoraW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKIC0tLSBhL2dkYi9kd2Fy ZjJyZWFkLmMKICsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC00OCw2ICs0OCw4IEBACitAQCAt NDgsNiArNDgsMTEgQEAKICAjaW5jbHVkZSAiZ2RiY21kLmgiCiAgI2luY2x1ZGUgImJsb2NrLmgi CiAgI2luY2x1ZGUgImFkZHJtYXAuaCIKICsjaW5jbHVkZSAiYmxvY2suaCIKICsjaW5jbHVkZSAi Zi1sYW5nLmgiCisrI2luY2x1ZGUgInR5cGVwcmludC5oIgorKyNpbmNsdWRlICJqdi1sYW5nLmgi CisrI2luY2x1ZGUgInZlYy5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJn ZGJfc3RyaW5nLmgiCi1AQCAtOTYsNyArOTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWJuYW1lc19o ZWFkZXIKK0BAIC05Niw3ICsxMDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWJuYW1lc19oZWFkZXIK ICBfUFVCTkFNRVNfSEVBREVSOwogICNkZWZpbmUgX0FDVFVBTF9QVUJOQU1FU19IRUFERVJfU0la RSAxMwogIApAQCAtMjczOSw3ICszMTY5LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2 NDQKICAgICBCZWNhdXNlIG9mIGFsaWdubWVudCBjb25zdHJhaW50cywgdGhpcyBzdHJ1Y3R1cmUg aGFzIHBhZGRpbmcgYW5kIGNhbm5vdAogICAgIGJlIG1hcHBlZCBkaXJlY3RseSBvbnRvIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIC5kZWJ1Z19pbmZvIHNlY3Rpb24uICAqLwogIHR5cGVkZWYgc3RydWN0 IGFyYW5nZXNfaGVhZGVyCi1AQCAtMTUzLDcgKzE1NSwxMCBAQCBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbworQEAgLTE1Myw3ICsxNTgsMTAgQEAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8K ICAgIGFzZWN0aW9uICphc2VjdGlvbjsKICAgIGdkYl9ieXRlICpidWZmZXI7CiAgICBiZmRfc2l6 ZV90eXBlIHNpemU7CkBAIC0yNzUxLDcgKzMxODEsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1 IDEwMDY0NAogIH07CiAgCiAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQotQEAgLTMzMyw2ICsz MzgsMTkgQEAgc3RydWN0IGR3YXJmMl9jdQorQEAgLTMzMyw2ICszNDEsMTkgQEAgc3RydWN0IGR3 YXJmMl9jdQogICAgICAgRElFcyBmb3IgbmFtZXNwYWNlcywgd2UgZG9uJ3QgbmVlZCB0byB0cnkg dG8gaW5mZXIgdGhlbQogICAgICAgZnJvbSBtYW5nbGVkIG5hbWVzLiAgKi8KICAgIHVuc2lnbmVk IGludCBoYXNfbmFtZXNwYWNlX2luZm8gOiAxOwpAQCAtMjc3MSwxNyArMzIwMSw0MSBAQCBpbmRl eCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIH07CiAgCiAgLyogUGVyc2lzdGVudCBkYXRhIGhl bGQgZm9yIGEgY29tcGlsYXRpb24gdW5pdCwgZXZlbiB3aGVuIG5vdAotQEAgLTc4OCw2ICs4MDYs OSBAQCBzdGF0aWMgdm9pZCBzY2FuX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IHBhcnRpYWxfZGll X2luZm8gKiwKK0BAIC00ODcsOCArNTA4LDcgQEAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8KKyAg ICAgdW5zaWduZWQgaW50IGhhc19ieXRlX3NpemUgOiAxOworIAorICAgICAvKiBUaGUgbmFtZSBv ZiB0aGlzIERJRS4gIE5vcm1hbGx5IHRoZSB2YWx1ZSBvZiBEV19BVF9uYW1lLCBidXQKKy0gICAg ICAgc29tZXRpbWVzIERXX1RBR19NSVBTX2xpbmthZ2VfbmFtZSBvciBhIHN0cmluZyBjb21wdXRl ZCBpbiBzb21lCistICAgICAgIG90aGVyIGZhc2hpb24uICAqLworKyAgICAgICBzb21ldGltZXMg YSBkZWZhdWx0IG5hbWUgZm9yIHVubmFtZWQgRElFcy4gICovCisgICAgIGNoYXIgKm5hbWU7Cisg CisgICAgIC8qIFRoZSBzY29wZSB0byBwcmVwZW5kIHRvIG91ciBjaGlsZHJlbi4gIFRoaXMgaXMg Z2VuZXJhbGx5CitAQCAtNjc3LDYgKzY5NywxMSBAQCBzdHJ1Y3QgZmllbGRfaW5mbworICAgICBp bnQgbmZuZmllbGRzOworICAgfTsKKyAKKysvKiBBIHZlY3RvciB1c2VkIGR1cmluZyBsaW5rYWdl IG5hbWUgZ2VuZXJhdGlvbi4gICovCisrdHlwZWRlZiBzdHJ1Y3QgZGllX2luZm8gKmRpZV9pbmZv X3A7CisrREVGX1ZFQ19QIChkaWVfaW5mb19wKTsKKytzdGF0aWMgVkVDKGRpZV9pbmZvX3ApICpk aWVfbGlzdDsKKysKKyAvKiBPbmUgaXRlbSBvbiB0aGUgcXVldWUgb2YgY29tcGlsYXRpb24gdW5p dHMgdG8gcmVhZCBpbiBmdWxsIHN5bWJvbHMKKyAgICBmb3IuICAqLworIHN0cnVjdCBkd2FyZjJf cXVldWVfaXRlbQorQEAgLTc4OCw3ICs4MTMsMTAgQEAgc3RhdGljIHZvaWQgc2Nhbl9wYXJ0aWFs X3N5bWJvbHMgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICosCiAgc3RhdGljIHZvaWQgYWRkX3Bh cnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqLAogIAkJCQlzdHJ1Y3QgZHdh cmYyX2N1ICopOwogIAorLXN0YXRpYyBpbnQgcGRpX25lZWRzX25hbWVzcGFjZSAoZW51bSBkd2Fy Zl90YWcgdGFnKTsKICtzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfY29tcF91bml0X2hlYWQgKHN0cnVj dCBjb21wX3VuaXRfaGVhZCAqLCBnZGJfYnl0ZSAqLAogKwkJCQkgICAgICBiZmQgKik7CiArCi0g c3RhdGljIGludCBwZGlfbmVlZHNfbmFtZXNwYWNlIChlbnVtIGR3YXJmX3RhZyB0YWcpOworK3N0 YXRpYyBpbnQgZGllX25lZWRzX25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBk d2FyZjJfY3UgKik7CiAgCiAgc3RhdGljIHZvaWQgYWRkX3BhcnRpYWxfbmFtZXNwYWNlIChzdHJ1 Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLAotQEAgLTgxMyw2ICs4MzQsMTAgQEAgc3RhdGljIHZv aWQgZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFiIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKik7Cisg CQkJCSAgIENPUkVfQUREUiAqbG93cGMsIENPUkVfQUREUiAqaGlnaHBjLAorQEAgLTgxMyw2ICs4 NDEsMTAgQEAgc3RhdGljIHZvaWQgZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFiIChzdHJ1Y3QgcGFy dGlhbF9zeW10YWIgKik7CiAgCiAgc3RhdGljIHZvaWQgcHN5bXRhYl90b19zeW10YWJfMSAoc3Ry dWN0IHBhcnRpYWxfc3ltdGFiICopOwogIApAQCAtMjc5Miw3ICszMjQ2LDMyIEBAIGluZGV4IDI0 Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3JlYWRfYWJicmV2cyAo YmZkICphYmZkLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCiAgc3RhdGljIHZvaWQgZHdhcmYy X2ZyZWVfYWJicmV2X3RhYmxlICh2b2lkICopOwotQEAgLTk5NSw2ICsxMDIwLDE1IEBAIHN0YXRp YyB2b2lkIHJlYWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpOworQEAgLTk0MCw2ICs5NzIsMTEgQEAgc3RhdGljIHN0cnVjdCB0eXBlICp0YWdfdHlw ZV90b190eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKKyAKKyBz dGF0aWMgc3RydWN0IHR5cGUgKnJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1 Y3QgZHdhcmYyX2N1ICopOworIAorK3N0YXRpYyBjaGFyICpwaHlzbmFtZV9wcmVmaXggKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworKworK3N0YXRpYyB2b2lkIHBo eXNuYW1lX3ByZWZpeF8xIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgZGllX2luZm8gKiwKKysJ CQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqKTsKKysKKyBzdGF0aWMgY2hhciAqZGV0ZXJtaW5l X3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKik7CisgCisg c3RhdGljIGNoYXIgKnR5cGVuYW1lX2NvbmNhdCAoc3RydWN0IG9ic3RhY2sgKiwKK0BAIC05ODQs MTcgKzEwMjEsMjUgQEAgc3RhdGljIHZvaWQgZHdhcmYyX2F0dGFjaF9mbl9maWVsZHNfdG9fdHlw ZSAoc3RydWN0IGZpZWxkX2luZm8gKiwKKyAKKyBzdGF0aWMgdm9pZCBwcm9jZXNzX3N0cnVjdHVy ZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7CisgCistc3Rh dGljIGNvbnN0IGNoYXIgKmRldGVybWluZV9jbGFzc19uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwKKy0JCQkJCSBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CistCisgc3RhdGljIHZvaWQgcmVhZF9j b21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworIAor IHN0YXRpYyB2b2lkIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqKTsKKyAKKytzdGF0aWMgdm9pZCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworKworIHN0YXRpYyB2b2lk IHJlYWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up OwogIAogIHN0YXRpYyB2b2lkIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCkBAIC0yODA4LDE3ICszMjg3LDE5IEBAIGlu ZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgc3RhdGljIGNvbnN0IGNoYXIgKm5hbWVzcGFj ZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJCQkJICAgaW50ICppc19hbm9ueW1vdXMs IHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTAzMCw2ICsxMDY0LDkgQEAgc3RhdGljIHZv aWQgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwor QEAgLTEwMjgsNyArMTA3MywxMCBAQCBzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfZnVsbF9kaWUgKGNv bnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCiAgCi0gc3RhdGljIGNoYXIgKmR3 YXJmMl9saW5rYWdlX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICop OworIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3 YXJmMl9jdSAqKTsKICAKKy1zdGF0aWMgY2hhciAqZHdhcmYyX2xpbmthZ2VfbmFtZSAoc3RydWN0 IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Cisrc3RhdGljIGNoYXIgKmR3YXJmMl9w aHlzbmFtZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7CisrCiArc3Rh dGljIGNoYXIgKmZvcnRyYW5fbW9kdWxlX2xpbmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsCiArCQkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLSsKKyAKICBzdGF0aWMgY2hhciAq ZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICosIHN0cnVjdCBkd2FyZjJfY3UgKiwKICAJ CQkJICAgICAgIHN0cnVjdCBvYnN0YWNrICopOwotIAotQEAgLTExNDQsNiArMTE4MSw5IEBAIHN0 YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CitAQCAtMTE0NCw2ICsxMTky LDkgQEAgc3RhdGljIHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKICAKICBzdGF0 aWMgdm9pZCBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0ICh2b2lkICopOwogIApAQCAtMjgyOCw3 ICszMzA5LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICBzdGF0aWMgc3RydWN0 IHR5cGUgKnNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0eXBlICosCiAg CQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKLUBAIC0xMTYzLDIyICsxMjAzLDMxIEBAIHN0 YXRpYyB2b2lkIGR3YXJmMl9jbGVhcl9tYXJrcyAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq KTsKK0BAIC0xMTYzLDIyICsxMjE0LDMxIEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9jbGVhcl9tYXJr cyAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKICBzdGF0aWMgc3RydWN0IHR5cGUg KmdldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KTsKICAKQEAgLTI4NjksNyArMzM1MCw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0 CiAgfQogIAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgY2FuIGVpdGhlciBsb29rIGZv ciAiLjxuYW1lPiIsIG9yIGZvcgotQEAgLTEyNzEsMTAgKzEzMjAsMTMgQEAgZHdhcmYyX2xvY2F0 ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmlnbm9yZV9wdHIp CitAQCAtMTI3MSwxMCArMTMzMSwxMyBAQCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zIChiZmQgKmFi ZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqaWdub3JlX3B0cikKICB9CiAgCiAgLyogRGVjb21w cmVzcyBhIHNlY3Rpb24gdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyB6bGliLiAgU3RvcmUgdGhl CkBAIC0yODg1LDcgKzMzNjYsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogICAg ICAgICAgICAgICAgICAgICAgICAgICBnZGJfYnl0ZSAqKm91dGJ1ZiwgYmZkX3NpemVfdHlwZSAq b3V0c2l6ZSkKICB7CiAgICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwotQEAgLTEyOTEsNiAr MTM0Myw3IEBAIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgYXNlY3Rpb24gKnNlY3RwLAorQEAgLTEyOTEsNiArMTM1NCw3IEBAIHpsaWJfZGVjb21wcmVz c19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAogICAg el9zdHJlYW0gc3RybTsKICAgIGludCByYzsKICAgIGludCBoZWFkZXJfc2l6ZSA9IDEyOwpAQCAt Mjg5Myw3ICszMzc0LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAKICAgIGlm IChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCiAgICAgICAg fHwgYmZkX2JyZWFkIChjb21wcmVzc2VkX2J1ZmZlciwgY29tcHJlc3NlZF9zaXplLCBhYmZkKSAh PSBjb21wcmVzc2VkX3NpemUpCi1AQCAtMTMyMCw4ICsxMzczLDEzIEBAIHpsaWJfZGVjb21wcmVz c19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAorQEAg LTEzMjAsOCArMTM4NCwxMyBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKICAgIHN0cm0uYXZhaWxfaW4gPSBjb21wcmVz c2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsKICAgIHN0cm0ubmV4dF9pbiA9IChCeXRlZiopIGNvbXBy ZXNzZWRfYnVmZmVyICsgaGVhZGVyX3NpemU7CiAgICBzdHJtLmF2YWlsX291dCA9IHVuY29tcHJl c3NlZF9zaXplOwpAQCAtMjkwOSw3ICszMzkwLDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAx MDA2NDQKICAgIHJjID0gaW5mbGF0ZUluaXQgKCZzdHJtKTsKICAgIHdoaWxlIChzdHJtLmF2YWls X2luID4gMCkKICAgICAgewotQEAgLTEzNDIsMjYgKzE0MDAsMTc2IEBAIHpsaWJfZGVjb21wcmVz c19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAorQEAg LTEzNDIsMjYgKzE0MTEsMTc2IEBAIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAogICAgICBlcnJvciAoXygiRHdhcmYgRXJy b3I6IGNvbmNsdWRpbmcgRFdBUkYgdW5jb21wcmVzc2lvbiBpbiAnJXMnOiAlZCIpLAogICAgICAg ICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKICAKQEAgLTMwOTEsNyArMzU3Miw3 IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgCiAgICBpZiAoaW5mby0+YXNlY3Rp b24gPT0gTlVMTCB8fCBpbmZvLT5zaXplID09IDApCiAgICAgIHJldHVybjsKLUBAIC0xMzc0LDcg KzE1ODIsNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTM3NCw3ICsxNTkzLDcgQEAg ZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvICppbmZvKQogICAgICAgIC8qIFVwb24gZGVjb21wcmVzc2lvbiwgdXBk YXRlIHRoZSBidWZmZXIgYW5kIGl0cyBzaXplLiAgKi8KICAgICAgICBpZiAoc3RybmNtcCAoaGVh ZGVyLCAiWkxJQiIsIHNpemVvZiAoaGVhZGVyKSkgPT0gMCkKICAgICAgICAgIHsKQEAgLTMxMDAs NyArMzU4MSw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgCQkJCSAgICZpbmZv LT5zaXplKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQotQEAgLTEzOTcsNyArMTYw NSw3IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BAIC0xMzk3LDcgKzE2MTYsNyBAQCBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gKmluZm8pCiAgCiAgICAgICAgaWYgKHJldGJ1ZiAhPSBNQVBfRkFJTEVEKQog IAl7CkBAIC0zMTA5LDcgKzM1OTAsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAog IAkgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZiArIChzZWN0cC0+ZmlsZXBvcyAmIChwYWdlc2l6ZSAt IDEpKSA7CiAgCSAgcmV0dXJuOwogIAl9Ci1AQCAtMTQwNSw4ICsxNjEzLDE1IEBAIGR3YXJmMl9y ZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyAqaW5mbykKK0BAIC0xNDA1LDggKzE2MjQsMTUgQEAgZHdhcmYyX3JlYWRfc2VjdGlv biAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpp bmZvKQogICNlbmRpZgogIAogICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwg bm90LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCkBAIC0zMTI3LDcgKzM2MDgsNyBAQCBpbmRleCAy NDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIAogICAgLyogV2hlbiBkZWJ1Z2dpbmcgLm8gZmlsZXMs IHdlIG1heSBuZWVkIHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUKICAgICAgIGh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAwMTM2Lmh0bWwgLgotQEAgLTE0 MTUsNiArMTYzMCw4IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BAIC0xNDE1LDYgKzE2NDEs OCBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCiAgICByZXRidWYgPSBzeW1maWxlX3JlbG9jYXRl X2RlYnVnX3NlY3Rpb24gKGFiZmQsIHNlY3RwLCBidWYpOwogICAgaWYgKHJldGJ1ZiAhPSBOVUxM KQogICAgICB7CkBAIC0zMTM2LDcgKzM2MTcsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEw MDY0NAogICAgICAgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZjsKICAgICAgICByZXR1cm47CiAgICAg IH0KLUBAIC0xNDIzLDYgKzE2NDAsMTkgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorQEAgLTE0 MjMsNiArMTY1MSwxOSBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCiAgICAgICAgfHwgYmZkX2Jy ZWFkIChidWYsIGluZm8tPnNpemUsIGFiZmQpICE9IGluZm8tPnNpemUpCiAgICAgIGVycm9yIChf KCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBkYXRhIGZyb20gJyVzJyIpLAogIAkgICBi ZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CkBAIC0zMTU2LDcgKzM2MzcsODAgQEAgaW5kZXggMjQz ODU5Yy4uMmZjY2VjNSAxMDA2NDQKICB9CiAgCiAgLyogRmlsbCBpbiBTRUNUUCwgQlVGUCBhbmQg U0laRVAgd2l0aCBzZWN0aW9uIGluZm8sIGdpdmVuIE9CSkZJTEUgYW5kCi1AQCAtMjU0OCw2ICsy Nzc4LDEzIEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBk aSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMjM4OSwxMSArMjYzMCwxOCBAQCBwYXJ0aWFs X2RpZV9wYXJlbnRfc2NvcGUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksCisgICAgICAg fHwgcGFyZW50LT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUKKyAgICAgICB8fCBwYXJlbnQtPnRh ZyA9PSBEV19UQUdfZW51bWVyYXRpb25fdHlwZSkKKyAgICAgeworKyAgICAgIGNoYXIgKnBhcmVu dF9uYW1lID0gcGFyZW50LT5uYW1lOworKworKyAgICAgIC8qIEcrKyA0LjEgcHJvZHVjZWQgRFdf VEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4gICovCisrICAgICAgaWYgKHBhcmVu dC0+dGFnID09IERXX1RBR19uYW1lc3BhY2UgJiYgcGFyZW50X25hbWUgIT0gTlVMTAorKyAgICAg ICAgICAmJiBzdHJjbXAgKHBhcmVudF9uYW1lLCAiOjoiKSA9PSAwKQorKwlwYXJlbnRfbmFtZSA9 IE5VTEw7CisrCisgICAgICAgaWYgKGdyYW5kcGFyZW50X3Njb3BlID09IE5VTEwpCistCXBhcmVu dC0+c2NvcGUgPSBwYXJlbnQtPm5hbWU7CisrCXBhcmVudC0+c2NvcGUgPSBwYXJlbnRfbmFtZTsK KyAgICAgICBlbHNlCisgCXBhcmVudC0+c2NvcGUgPSB0eXBlbmFtZV9jb25jYXQgKCZjdS0+Y29t cF91bml0X29ic3RhY2ssIGdyYW5kcGFyZW50X3Njb3BlLAorLQkJCQkJIHBhcmVudC0+bmFtZSwg Y3UpOworKwkJCQkJIHBhcmVudF9uYW1lLCBjdSk7CisgICAgIH0KKyAgIGVsc2UgaWYgKHBhcmVu dC0+dGFnID09IERXX1RBR19lbnVtZXJhdG9yKQorICAgICAvKiBFbnVtZXJhdG9ycyBzaG91bGQg bm90IGdldCB0aGUgbmFtZSBvZiB0aGUgZW51bWVyYXRpb24gYXMgYSBwcmVmaXguICAqLworQEAg LTI0MDUsNyArMjY1Myw3IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3RydWN0IHBhcnRp YWxfZGllX2luZm8gKnBkaSwKKyAJIGlnbm9yaW5nIHRoZW0uICAqLworICAgICAgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKKyAJCSBfKCJ1bmhhbmRsZWQgY29udGFpbmluZyBESUUg dGFnICVkIGZvciBESUUgYXQgJWQiKSwKKy0JCSBwYXJlbnQtPnRhZywgcGRpLT5vZmZzZXQpOwor KwkJIHBhcmVudC0+dGFnLCByZWFsX3BkaS0+b2Zmc2V0KTsKKyAgICAgICBwYXJlbnQtPnNjb3Bl ID0gZ3JhbmRwYXJlbnRfc2NvcGU7CisgICAgIH0KKyAKK0BAIC0yNDIwLDEyICsyNjY4LDIyIEBA IHBhcnRpYWxfZGllX2Z1bGxfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKKyAJ CSAgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyB7CisgICBjaGFyICpwYXJlbnRfc2NvcGU7 CisrICBzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcmVhbF9wZGk7CisgCistICBwYXJlbnRfc2Nv cGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHBkaSwgY3UpOworLSAgaWYgKHBhcmVudF9z Y29wZSA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0gIGVsc2UKKysgIC8qIFdlIG5lZWQg dG8gbG9vayBhdCBvdXIgcGFyZW50IERJRTsgaWYgd2UgaGF2ZSBhIERXX0FUX3NwZWNpZmljYXRp b24sCisrICAgICB0aGVuIHRoaXMgbWVhbnMgdGhlIHBhcmVudCBvZiB0aGUgc3BlY2lmaWNhdGlv biBESUUuCisrICAgICBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgZG9lcyB0aGlzIGxvb3AgYWxz bywgYnV0IHdlIGRvIGl0IGhlcmUKKysgICAgIHNpbmNlIHdlIG5lZWQgdG8gZXhhbWluZSByZWFs X3BkaS0+cGFyZW50IG91cnNlbHZlcy4gICovCisrCisrICByZWFsX3BkaSA9IHBkaTsKKysgIHdo aWxlIChyZWFsX3BkaS0+aGFzX3NwZWNpZmljYXRpb24pCisrICAgIHJlYWxfcGRpID0gZmluZF9w YXJ0aWFsX2RpZSAocmVhbF9wZGktPnNwZWNfb2Zmc2V0LCBjdSk7CisrCisrICBwYXJlbnRfc2Nv cGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHJlYWxfcGRpLCBjdSk7CisrICBpZiAocGFy ZW50X3Njb3BlICE9IE5VTEwpCisgICAgIHJldHVybiB0eXBlbmFtZV9jb25jYXQgKE5VTEwsIHBh cmVudF9zY29wZSwgcGRpLT5uYW1lLCBjdSk7CisrCisrICByZXR1cm4gTlVMTDsKKyB9CisgCisg c3RhdGljIHZvaWQKK0BAIC0yNDQxLDEyICsyNjk5LDkgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChz dHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAKKyAg IGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZf VEVYVCAob2JqZmlsZSkpOworIAorLSAgaWYgKHBkaV9uZWVkc19uYW1lc3BhY2UgKHBkaS0+dGFn KSkKKy0gICAgeworLSAgICAgIGFjdHVhbF9uYW1lID0gcGFydGlhbF9kaWVfZnVsbF9uYW1lIChw ZGksIGN1KTsKKy0gICAgICBpZiAoYWN0dWFsX25hbWUpCistCWJ1aWx0X2FjdHVhbF9uYW1lID0g MTsKKy0gICAgfQorKyAgYWN0dWFsX25hbWUgPSBwYXJ0aWFsX2RpZV9mdWxsX25hbWUgKHBkaSwg Y3UpOworKyAgaWYgKGFjdHVhbF9uYW1lKQorKyAgICBidWlsdF9hY3R1YWxfbmFtZSA9IDE7Cisg CisgICBpZiAoYWN0dWFsX25hbWUgPT0gTlVMTCkKKyAgICAgYWN0dWFsX25hbWUgPSBwZGktPm5h bWU7CitAQCAtMjU0Myw2ICsyNzk4LDEzIEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBh cnRpYWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCQkJICAgJm9iamZp bGUtPmdsb2JhbF9wc3ltYm9scywKICAJCQkgICAwLCAoQ09SRV9BRERSKSAwLCBjdS0+bGFuZ3Vh Z2UsIG9iamZpbGUpOwogICAgICAgIGJyZWFrOwpAQCAtMzE3MCw3ICszNzI0LDcwIEBAIGluZGV4 IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CiAg ICAgIGNhc2UgRFdfVEFHX2ludGVyZmFjZV90eXBlOgogICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1 cmVfdHlwZToKLUBAIC0yNjYxLDEyICsyODk4LDEyIEBAIHN0YXRpYyB2b2lkCitAQCAtMjU4Niwz NCArMjg0OCwxNyBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZv ICpwZGksIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICAgIGJyZWFrOworICAgICB9CisgCist ICAvKiBDaGVjayB0byBzZWUgaWYgd2Ugc2hvdWxkIHNjYW4gdGhlIG5hbWUgZm9yIHBvc3NpYmxl IG5hbWVzcGFjZQorLSAgICAgaW5mby4gIE9ubHkgZG8gdGhpcyBpZiB0aGlzIGlzIEMrKywgaWYg d2UgZG9uJ3QgaGF2ZSBuYW1lc3BhY2UKKy0gICAgIGRlYnVnZ2luZyBpbmZvIGluIHRoZSBmaWxl LCBpZiB0aGUgcHN5bSBpcyBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlCistICAgICAob3RoZXJ3aXNl IHdlJ2xsIGhhdmUgcHN5bSA9PSBOVUxMKSwgYW5kIGlmIHdlIGFjdHVhbGx5IGhhZCBhCistICAg ICBtYW5nbGVkIG5hbWUgdG8gYmVnaW4gd2l0aC4gICovCistCistICAvKiBGSVhNRSBkcm93LzIw MDQtMDItMjI6IFdoeSBkb24ndCB3ZSBkbyB0aGlzIGZvciBjbGFzc2VzLCBpLmUuIHRoZQorLSAg ICAgY2FzZXMgd2hpY2ggZG8gbm90IHNldCBQU1lNIGFib3ZlPyAgKi8KKy0KKy0gIGlmIChjdS0+ bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKKy0gICAgICAmJiBjdS0+aGFzX25hbWVzcGFjZV9p bmZvID09IDAKKy0gICAgICAmJiBwc3ltICE9IE5VTEwKKy0gICAgICAmJiBTWU1CT0xfQ1BMVVNf REVNQU5HTEVEX05BTUUgKHBzeW0pICE9IE5VTEwpCistICAgIGNwX2NoZWNrX3Bvc3NpYmxlX25h bWVzcGFjZV9zeW1ib2xzIChTWU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKHBzeW0pLAorLQkJ CQkJIG9iamZpbGUpOworLQorICAgaWYgKGJ1aWx0X2FjdHVhbF9uYW1lKQorICAgICB4ZnJlZSAo YWN0dWFsX25hbWUpOworIH0KKyAKKy0vKiBEZXRlcm1pbmUgd2hldGhlciBhIGRpZSBvZiB0eXBl IFRBRyBsaXZpbmcgaW4gYSBDKysgY2xhc3Mgb3IKKy0gICBuYW1lc3BhY2UgbmVlZHMgdG8gaGF2 ZSB0aGUgbmFtZSBvZiB0aGUgc2NvcGUgcHJlcGVuZGVkIHRvIHRoZQorLSAgIG5hbWUgbGlzdGVk IGluIHRoZSBkaWUuICAqLworKy8qIERldGVybWluZSB3aGV0aGVyIERJRSBuZWVkcyB0byBoYXZl IHRoZSBuYW1lIG9mIHRoZSBzY29wZSBwcmVwZW5kZWQKKysgICB0byB0aGUgbmFtZSBsaXN0ZWQg aW4gdGhlIGRpZS4gICovCisgCisgc3RhdGljIGludAorLXBkaV9uZWVkc19uYW1lc3BhY2UgKGVu dW0gZHdhcmZfdGFnIHRhZykKKytkaWVfbmVlZHNfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgeworLSAgc3dpdGNoICh0YWcpCisrICBzd2l0 Y2ggKGRpZS0+dGFnKQorICAgICB7CisgICAgIGNhc2UgRFdfVEFHX25hbWVzcGFjZToKKyAgICAg Y2FzZSBEV19UQUdfdHlwZWRlZjoKK0BAIC0yNjIzLDcgKzI4NjgsMjMgQEAgcGRpX25lZWRzX25h bWVzcGFjZSAoZW51bSBkd2FyZl90YWcgdGFnKQorICAgICBjYXNlIERXX1RBR191bmlvbl90eXBl OgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorICAgICBjYXNlIERXX1RBR19l bnVtZXJhdG9yOgorKyAgICBjYXNlIERXX1RBR19zdWJwcm9ncmFtOgorKyAgICBjYXNlIERXX1RB R19tZW1iZXI6CisgICAgICAgcmV0dXJuIDE7CisrCisrICAgIGNhc2UgRFdfVEFHX3ZhcmlhYmxl OgorKyAgICAgIHsKKysJc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKysJYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX3NwZWNpZmljYXRpb24sIGN1KTsKKysJaWYgKGF0dHIpCisrCSAgcmV0 dXJuIDE7CisrCWF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOwor KwlpZiAoYXR0ciA9PSBOVUxMICYmIGRpZS0+cGFyZW50LT50YWcgIT0gRFdfVEFHX25hbWVzcGFj ZSkKKysJICByZXR1cm4gMDsKKysJcmV0dXJuIDE7CisrICAgICAgfQorKyAgICAgIGJyZWFrOwor KworICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiAwOworICAgICB9CitAQCAtMjY1NiwxMiAr MjkxNywxMiBAQCBzdGF0aWMgdm9pZAogIGFkZF9wYXJ0aWFsX21vZHVsZSAoc3RydWN0IHBhcnRp YWxfZGllX2luZm8gKnBkaSwgQ09SRV9BRERSICpsb3dwYywKICAJCSAgICBDT1JFX0FERFIgKmhp Z2hwYywgaW50IG5lZWRfcGMsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIHsKQEAgLTMxODcsNyAr MzgwNCwzNSBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIH0KICAKICAvKiBSZWFk IGEgcGFydGlhbCBkaWUgY29ycmVzcG9uZGluZyB0byBhIHN1YnByb2dyYW0gYW5kIGNyZWF0ZSBh IHBhcnRpYWwKLUBAIC0zMzMwLDYgKzM1NjcsMTQgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0yNzUyLDI3ICszMDEzLDYgQEAg Z3Vlc3Nfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpzdHJ1Y3RfcGRp LAorIAorICAgICAgIGlmIChyZWFsX3BkaS0+ZGllX3BhcmVudCAhPSBOVUxMKQorIAlyZXR1cm47 CistCistICAgICAgd2hpbGUgKGNoaWxkX3BkaSAhPSBOVUxMKQorLQl7CistCSAgaWYgKGNoaWxk X3BkaS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQorLQkgICAgeworLQkgICAgICBjaGFyICph Y3R1YWxfY2xhc3NfbmFtZQorLQkJPSBsYW5ndWFnZV9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUg KGN1LT5sYW5ndWFnZV9kZWZuLAorLQkJCQkJCSAgICAgY2hpbGRfcGRpLT5uYW1lKTsKKy0JICAg ICAgaWYgKGFjdHVhbF9jbGFzc19uYW1lICE9IE5VTEwpCistCQl7CistCQkgIHN0cnVjdF9wZGkt Pm5hbWUKKy0JCSAgICA9IG9ic2F2ZXN0cmluZyAoYWN0dWFsX2NsYXNzX25hbWUsCistCQkJCSAg ICBzdHJsZW4gKGFjdHVhbF9jbGFzc19uYW1lKSwKKy0JCQkJICAgICZjdS0+Y29tcF91bml0X29i c3RhY2spOworLQkJICB4ZnJlZSAoYWN0dWFsX2NsYXNzX25hbWUpOworLQkJfQorLQkgICAgICBi cmVhazsKKy0JICAgIH0KKy0KKy0JICBjaGlsZF9wZGkgPSBjaGlsZF9wZGktPmRpZV9zaWJsaW5n OworLQl9CisgICAgIH0KKyB9CisgCitAQCAtMzMyNSw2ICszNTY1LDE0IEBAIHByb2Nlc3NfZGll IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIGNhc2Ug RFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0aW9uOgogICAgICBjYXNlIERXX1RBR19pbXBvcnRlZF9t b2R1bGU6CiAgICAgICAgcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8gPSAxOwpAQCAtMzIw MiwzOCArMzg0NywzNjUgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAgICAgICBp ZiAoZGllLT5jaGlsZCAhPSBOVUxMICYmIChkaWUtPnRhZyA9PSBEV19UQUdfaW1wb3J0ZWRfZGVj bGFyYXRpb24KICAJCQkJIHx8IGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9mb3J0cmFuKSkKICAJ Y29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJUYWcgJyVzJyBoYXMgdW5leHBlY3Rl ZCBjaGlsZHJlbiIpLAotQEAgLTM4ODEsNiArNDEyNiwxMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zMzQwLDQxICsz NTg4LDcxIEBAIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCisgLyogUmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiBESUUsIGJh c2VkIG9uIGl0cyBEV19BVF9uYW1lLgorICAgIElmIHNjb3BlIHF1YWxpZmllcnMgYXJlIGFwcHJv cHJpYXRlIHRoZXkgd2lsbCBiZSBhZGRlZC4gIFRoZSByZXN1bHQKKyAgICB3aWxsIGJlIGFsbG9j YXRlZCBvbiB0aGUgb2JqZmlsZV9vYnN0YWNrLCBvciBOVUxMIGlmIHRoZSBESUUgZG9lcworLSAg IG5vdCBoYXZlIGEgbmFtZS4gICovCisrICAgbm90IGhhdmUgYSBuYW1lLgorKworKyAgIFRoZSBv dXRwdXQgc3RyaW5nIHdpbGwgYmUgY2Fub25pY2FsaXplZCAoaWYgQysrL0phdmEpLiAqLwogIAot ICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmbG9jYWxfc3ltYm9sczsKKyBzdGF0aWMgY29uc3QgY2hh ciAqCisgZHdhcmYyX2Z1bGxfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorIHsKKy0gIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CistICBjaGFyICpwcmVm aXgsICpuYW1lOworLSAgc3RydWN0IHVpX2ZpbGUgKmJ1ZiA9IE5VTEw7CisrICBjaGFyICpuYW1l OwogIAotKyAgc3dpdGNoIChjdS0+bGFuZ3VhZ2UpCisgICBuYW1lID0gZHdhcmYyX25hbWUgKGRp ZSwgY3UpOworLSAgaWYgKCFuYW1lKQorLSAgICByZXR1cm4gTlVMTDsKKyAKKyAgIC8qIFRoZXNl IGFyZSB0aGUgb25seSBsYW5ndWFnZXMgd2Uga25vdyBob3cgdG8gcXVhbGlmeSBuYW1lcyBpbi4g ICovCistICBpZiAoY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2NwbHVzCistICAgICAgJiYgY3Ut Pmxhbmd1YWdlICE9IGxhbmd1YWdlX2phdmEpCistICAgIHJldHVybiBuYW1lOworKyAgaWYgKG5h bWUgIT0gTlVMTAorKyAgICAgICYmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMgfHwg Y3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpKQogKyAgICB7Ci0rICAgIGNhc2UgbGFuZ3Vh Z2VfZm9ydHJhbjoKLSsgICAgICBjdS0+bGFuZ3VhZ2Vfc3BlY2lmaWMuZm9ydHJhbi51c2UgPSBO VUxMOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0gICBpZiAoZGllLT5jaGlsZCAhPSBOVUxM KQotICAgICB7Ci0gICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLUBAIC0zOTA0LDYgKzQx NTYsMTMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi0gCQkJZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSksCi0gCQkJcHJvY2Vz c2luZ19oYXNfbmFtZXNwYWNlX2luZm8pOworKyAgICAgIGlmIChkaWVfbmVlZHNfbmFtZXNwYWNl IChkaWUsIGN1KSkKKysJeworKwkgIGxvbmcgbGVuZ3RoOworKwkgIGNoYXIgKnByZWZpeDsKKysJ ICBzdHJ1Y3QgdWlfZmlsZSAqYnVmOworIAorLSAgLyogSWYgbm8gcHJlZml4IGlzIG5lY2Vzc2Fy eSBmb3IgdGhpcyB0eXBlIG9mIERJRSwgcmV0dXJuIHRoZQorLSAgICAgdW5xdWFsaWZpZWQgbmFt ZS4gIFRoZSBvdGhlciB0aHJlZSB0YWdzIGxpc3RlZCBjb3VsZCBiZSBoYW5kbGVkCistICAgICBp biBwZGlfbmVlZHNfbmFtZXNwYWNlLCBidXQgdGhhdCByZXF1aXJlcyBicm9hZGVyIGNoYW5nZXMu ICAqLworLSAgaWYgKCFwZGlfbmVlZHNfbmFtZXNwYWNlIChkaWUtPnRhZykKKy0gICAgICAmJiBk aWUtPnRhZyAhPSBEV19UQUdfc3VicHJvZ3JhbQorLSAgICAgICYmIGRpZS0+dGFnICE9IERXX1RB R192YXJpYWJsZQorLSAgICAgICYmIGRpZS0+dGFnICE9IERXX1RBR19tZW1iZXIpCistICAgIHJl dHVybiBuYW1lOworKwkgIGJ1ZiA9IG1lbV9maWxlb3BlbiAoKTsKKysJICBwcmVmaXggPSBkZXRl cm1pbmVfcHJlZml4IChkaWUsIGN1KTsKKysJICBpZiAoKnByZWZpeCAhPSAnXDAnKQorKwkgICAg eworKwkgICAgICBjaGFyICpwcmVmaXhlZF9uYW1lID0gdHlwZW5hbWVfY29uY2F0IChOVUxMLCBw cmVmaXgsIG5hbWUsIGN1KTsKKysJICAgICAgZnB1dHNfdW5maWx0ZXJlZCAocHJlZml4ZWRfbmFt ZSwgYnVmKTsKKysJICAgICAgeGZyZWUgKHByZWZpeGVkX25hbWUpOworKwkgICAgfQorKwkgIGVs c2UKKysJICAgIGZwdXRzX3VuZmlsdGVyZWQgKG5hbWUsIGJ1Zik7CiAgCi0rICBzd2l0Y2ggKGN1 LT5sYW5ndWFnZSkKLSsgICAgewotKyAgICBjYXNlIGxhbmd1YWdlX2ZvcnRyYW46Ci0rICAgICAg QkxPQ0tfRk9SVFJBTl9VU0UgKGJsb2NrKSA9IGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFu LnVzZTsKLSsgICAgICBicmVhazsKLSsgICAgfQorLSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZp eCAoZGllLCBjdSk7CistICBpZiAoKnByZWZpeCAhPSAnXDAnKQorLSAgICBuYW1lID0gdHlwZW5h bWVfY29uY2F0ICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgcHJlZml4LAorLQkJCSAg ICBuYW1lLCBjdSk7CisrCSAgbmFtZSA9IHVpX2ZpbGVfb2JzYXZlc3RyaW5nIChidWYsICZjdS0+ b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJCQkgICAgICAgJmxlbmd0aCk7CisrCSAgdWlf ZmlsZV9kZWxldGUgKGJ1Zik7CiArCi0gICAvKiBJZiB3ZSBoYXZlIGFkZHJlc3MgcmFuZ2VzLCBy ZWNvcmQgdGhlbS4gICovCi0gICBkd2FyZjJfcmVjb3JkX2Jsb2NrX3JhbmdlcyAoZGllLCBibG9j aywgYmFzZWFkZHIsIGN1KTsKLSAgIAotQEAgLTUzODUsNiArNTY0NCwyOSBAQCBwcm9jZXNzX2Vu dW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwotIH0KLSAKKysJICBpZiAo Y3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQorKwkgICAgeworKwkgICAgICBjaGFyICpj bmFtZQorKwkJPSBkd2FyZjJfY2Fub25pY2FsaXplX25hbWUgKG5hbWUsIGN1LAorKwkJCQkJICAg ICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKKysJICAgICAgaWYgKGNuYW1lICE9IE5V TEwpCisrCQluYW1lID0gY25hbWU7CisrCSAgICB9CisrCX0KKysgICAgfQorIAorICAgcmV0dXJu IG5hbWU7CisgfQorIAorKy8qIFJlYWQgdGhlIGdpdmVuIERJRSdzIERXX0FUX2RlY2xfbGluZSBu dW1iZXIuICBSZXR1cm4gLTEgaWYgaW4gY2FzZSBvZiBhbgorKyAgIGVycm9yLiAgKi8KKysKKytz dGF0aWMgaW50CisrZHdhcmYyX3JlYWRfZGVjbF9saW5lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGF0dHJpYnV0ZSAqbGluZV9hdHRy OworKworKyAgbGluZV9hdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGVjbF9saW5lLCBj dSk7CisrICBpZiAobGluZV9hdHRyKQorKyAgICByZXR1cm4gRFdfVU5TTkQgKGxpbmVfYXR0cik7 CisrCisrICByZXR1cm4gLTE7CisrfQorKworIC8qIFJlYWQgdGhlIGltcG9ydCBzdGF0ZW1lbnQg c3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiBkaWUgYW5kIHJlY29yZCBpdC4gICovCisgCisgc3RhdGlj IHZvaWQKK0BAIC0zMzg1LDkgKzM2NjMsMTUgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3QgZHdhcmYy X2N1ICppbXBvcnRlZF9jdTsKKyAgIGNvbnN0IGNoYXIgKmltcG9ydGVkX25hbWU7CisgICBjb25z dCBjaGFyICppbXBvcnRlZF9uYW1lX3ByZWZpeDsKKy0gIGNvbnN0IGNoYXIgKmltcG9ydF9wcmVm aXg7CisgICBjaGFyICpjYW5vbmljYWxfbmFtZTsKKy0KKysgIGNvbnN0IGNoYXIgKmltcG9ydF9h bGlhczsKKysgIGNvbnN0IGNoYXIgKmltcG9ydGVkX2RlY2xhcmF0aW9uID0gIiI7CisrICBjb25z dCBjaGFyICppbXBvcnRfcHJlZml4OworKyAgCisrICBpbnQgbGluZV9udW1iZXIgPSAtMTsKKysg IAorKyAgaW50IGlzX2Fub255bW91cyA9IDA7CisrICAKKyAgIGltcG9ydF9hdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfaW1wb3J0LCBjdSk7CisgICBpZiAoaW1wb3J0X2F0dHIgPT0gTlVM TCkKKyAgICAgeworQEAgLTM0MzYsMTcgKzM3MjAsMjcgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50 IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgcmV0 dXJuOworICAgICB9CisgCistICAvKiBGSVhNRTogZHdhcmYyX25hbWUgKGRpZSk7IGZvciB0aGUg bG9jYWwgbmFtZSBhZnRlciBpbXBvcnQuICAqLworLQorLSAgLyogRmlndXJlIG91dCB3aGVyZSB0 aGUgc3RhdGVtZW50IGlzIGJlaW5nIGltcG9ydGVkIHRvLiAgKi8KKysgIC8qIEZpZ3VyZSBvdXQg dGhlIGxvY2FsIG5hbWUgYWZ0ZXIgaW1wb3J0LiAgKi8KKysgIGltcG9ydF9hbGlhcyA9IGR3YXJm Ml9uYW1lKGRpZSwgY3UpOworKyAgaWYoaW1wb3J0X2FsaWFzID09IE5VTEwpeworKyAgICBpbXBv cnRfYWxpYXMgPSAiIjsKKysgIH0KKysgIAorKyAgLyogRGV0ZXJtaW5lIHRoZSBsaW5lIG51bWJl ciBhdCB3aGljaCB0aGUgaW1wb3J0IHdhcyBtYWRlICovCisrICBsaW5lX251bWJlciA9IGR3YXJm Ml9yZWFkX2RlY2xfbGluZShkaWUsIGN1KTsKKysgIAorKyAgLyogRmlndXJlIG91dCB3aGVyZSB0 aGUgc3RhdGVtZW50IGlzIGJlaW5nIGltcG9ydGVkIHRvICovCisgICBpbXBvcnRfcHJlZml4ID0g ZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7CisgCisgICAvKiBGaWd1cmUgb3V0IHdoYXQgdGhl IHNjb3BlIG9mIHRoZSBpbXBvcnRlZCBkaWUgaXMgYW5kIHByZXBlbmQgaXQKKyAgICAgIHRvIHRo ZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBkaWUuICAqLworLSAgaW1wb3J0ZWRfbmFtZV9wcmVmaXgg PSBkZXRlcm1pbmVfcHJlZml4IChpbXBvcnRlZF9kaWUsIGltcG9ydGVkX2N1KTsKKy0KKy0gIGlm IChzdHJsZW4gKGltcG9ydGVkX25hbWVfcHJlZml4KSA+IDApCistICAgIHsKKysgIGltcG9ydGVk X25hbWVfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoaW1wb3J0ZWRfZGllLCBjdSk7CisrICAK KysgIGlmKGltcG9ydGVkX2RpZS0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UpeworKyAgICBpbXBv cnRlZF9kZWNsYXJhdGlvbiA9IGltcG9ydGVkX25hbWU7CisrICAgIGNhbm9uaWNhbF9uYW1lID0g KGNoYXIqKWltcG9ydGVkX25hbWVfcHJlZml4OworKyAgfWVsc2V7CisrICAgIGlmKHN0cmxlbiAo aW1wb3J0ZWRfbmFtZV9wcmVmaXgpID4gMCl7CisgICAgICAgY2Fub25pY2FsX25hbWUgPSBhbGxv Y2EgKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiArIHN0cmxlbiAoaW1wb3J0ZWRf bmFtZSkgKyAxKTsKKyAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9uYW1lLCBpbXBvcnRlZF9uYW1l X3ByZWZpeCk7CisgICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgIjo6Iik7CitAQCAtMzQ1 Nyw4ICszNzUxLDE0IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICAgIGNhbm9uaWNhbF9uYW1lID0gYWxsb2Nh IChzdHJsZW4gKGltcG9ydGVkX25hbWUpICsgMSk7CisgICAgICAgc3RyY3B5IChjYW5vbmljYWxf bmFtZSwgaW1wb3J0ZWRfbmFtZSk7CisgICAgIH0KKy0KKy0gIHVzaW5nX2RpcmVjdGl2ZXMgPSBj cF9hZGRfdXNpbmcgKGltcG9ydF9wcmVmaXgsY2Fub25pY2FsX25hbWUsIHVzaW5nX2RpcmVjdGl2 ZXMpOworKyAgfQorKyAgCisrICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3VzaW5nIChpbXBv cnRfcHJlZml4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fub25pY2Fs X25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfYWxpYXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRlZF9kZWNsYXJhdGlv biwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfZGlyZWN0aXZlcyk7CisgfQor IAorIHN0YXRpYyB2b2lkCitAQCAtMzcyNyw2ICs0MDI3LDE0IEBAIGluaGVyaXRfYWJzdHJhY3Rf ZGllcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cjsKKyAKKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9hYnN0cmFjdF9vcmlnaW4sIGN1KTsKKysgIAorKyAgLyogR0NDIDQuMyBpbmNvcnJlY3RseSB1 c2VzIERXX0FUX3NwZWNpZmljYXRpb24gdG8gaW5kaWNhdGUgZGllIGluaGVyaXRlbmNlCisrICAg ICBpbiB0aGUgY2FzZSBvZiBpbXBvcnQgc3RhdGVtZW50cy4gVGhlIGZvbGxvd2luZyBpcyB0byBh Y2NvbW1vZGF0ZSAKKysgICAgIHRoYXQuICAqLworKyAgaWYoIWF0dHIpeworKyAgICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpOworKyAgfQorKyAgCisg ICBpZiAoIWF0dHIpCisgICAgIHJldHVybjsKKyAKK0BAIC0zODI1LDYgKzQxMzMsNyBAQCByZWFk X2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK KyAgIGNoYXIgKm5hbWU7CisgICBDT1JFX0FERFIgYmFzZWFkZHI7CisgICBzdHJ1Y3QgYmxvY2sg KmJsb2NrOworKyAgdW5zaWduZWQgZGllX2NoaWxkcmVuID0gMDsKKyAgIGludCBpbmxpbmVkX2Z1 bmMgPSAoZGllLT50YWcgPT0gRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSk7CisgCisgICBpZiAo aW5saW5lZF9mdW5jKQorQEAgLTM4NDMsMTMgKzQxNTIsMjMgQEAgcmVhZF9mdW5jX3Njb3BlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCisgICBiYXNlYWRk ciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9i amZpbGUpKTsKKyAKKy0gIG5hbWUgPSBkd2FyZjJfbGlua2FnZV9uYW1lIChkaWUsIGN1KTsKKysg IG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisgCisgICAvKiBJZ25vcmUgZnVuY3Rpb25z IHdpdGggbWlzc2luZyBvciBlbXB0eSBuYW1lcyBhbmQgZnVuY3Rpb25zIHdpdGgKKyAgICAgIG1p c3Npbmcgb3IgaW52YWxpZCBsb3cgYW5kIGhpZ2ggcGMgYXR0cmlidXRlcy4gICovCistICBpZiAo bmFtZSA9PSBOVUxMIHx8ICFkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAmbG93cGMsICZoaWdo cGMsIGN1LCBOVUxMKSkKKysgIGlmIChuYW1lID09IE5VTEwgfHwgIWR3YXJmMl9nZXRfcGNfYm91 bmRzIChkaWUsICZsb3dwYywgJmhpZ2hwYywgY3UsIE5VTEwpKXsKKysgICAgLyogZXhwbG9yZSBh YnN0cmFjdCBvcmlnaW5zIGlmIHByZXNlbnQuIFRoZXkgbWlnaHQgY29udGFpbiB1c2VmdWwgaW5m b3JtYXRpb24KKysgICAgIHN1Y2ggYXMgaW1wb3J0IHN0YXRlbWVudHMuICovCisrICAgIGNoaWxk X2RpZSA9IGRpZS0+Y2hpbGQ7CisrICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50 YWcpCisrICAgICAgeworKwljaGlsZF9kaWUgPSBzaWJsaW5nX2RpZSAoY2hpbGRfZGllKTsKKysJ ZGllX2NoaWxkcmVuKys7CisrICAgICAgfQorKyAgICBpbmhlcml0X2Fic3RyYWN0X2RpZXMoZGll LCBjdSk7CisgICAgIHJldHVybjsKKy0KKysgIH0KKysgIAorICAgbG93cGMgKz0gYmFzZWFkZHI7 CisgICBoaWdocGMgKz0gYmFzZWFkZHI7CisgCitAQCAtMzg3NiwxNCArNDE5NSwxOSBAQCByZWFk X2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK KyAKKyAgIGN1LT5saXN0X2luX3Njb3BlID0gJmxvY2FsX3N5bWJvbHM7CisgCistICBpZiAoZGll LT5jaGlsZCAhPSBOVUxMKQorKyAgc3dpdGNoIChjdS0+bGFuZ3VhZ2UpCisgICAgIHsKKy0gICAg ICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOworLSAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hp bGRfZGllLT50YWcpCistCXsKKy0JICBwcm9jZXNzX2RpZSAoY2hpbGRfZGllLCBjdSk7CistCSAg Y2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7CistCX0KKysgICAgY2FzZSBsYW5n dWFnZV9mb3J0cmFuOgorKyAgICAgIGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZSA9 IE5VTEw7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgIGNoaWxkX2RpZSA9IGRpZS0+Y2hp bGQ7CisrICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQorKyAgICB7CisrICAg ICAgcHJvY2Vzc19kaWUgKGNoaWxkX2RpZSwgY3UpOworKyAgICAgIGNoaWxkX2RpZSA9IHNpYmxp bmdfZGllIChjaGlsZF9kaWUpOworKyAgICAgIGRpZV9jaGlsZHJlbisrOworICAgICB9CisgCisg ICBpbmhlcml0X2Fic3RyYWN0X2RpZXMgKGRpZSwgY3UpOworQEAgLTM4OTksNiArNDIyMywxMyBA QCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKKyAJCQlkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KSwKKyAJCQlwcm9jZXNzaW5nX2hh c19uYW1lc3BhY2VfaW5mbyk7CisgCisrICBzd2l0Y2ggKGN1LT5sYW5ndWFnZSkKKysgICAgewor KyAgICBjYXNlIGxhbmd1YWdlX2ZvcnRyYW46CisrICAgICAgQkxPQ0tfRk9SVFJBTl9VU0UgKGJs b2NrKSA9IGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZTsKKysgICAgICBicmVhazsK KysgICAgfQorKworICAgLyogSWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywgcmVjb3JkIHRoZW0u ICAqLworICAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxvY2ssIGJhc2VhZGRy LCBjdSk7CisgICAKK0BAIC0zOTUyLDcgKzQyODMsNyBAQCByZWFkX2xleGljYWxfYmxvY2tfc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgfQor ICAgbmV3ID0gcG9wX2NvbnRleHQgKCk7CisgCistICBpZiAobG9jYWxfc3ltYm9scyAhPSBOVUxM KQorKyAgaWYgKGxvY2FsX3N5bWJvbHMgIT0gTlVMTCB8fCB1c2luZ19kaXJlY3RpdmVzICE9IE5V TEwpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgYmxvY2sgKmJsb2NrCisgICAgICAgICA9IGZpbmlz aF9ibG9jayAoMCwgJmxvY2FsX3N5bWJvbHMsIG5ldy0+b2xkX2Jsb2NrcywgbmV3LT5zdGFydF9h ZGRyLAorQEAgLTQ1MTcsNyArNDg0OCw3IEBAIGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBmaWVs ZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorIAlyZXR1cm47CisgCisgICAgICAg LyogR2V0IHBoeXNpY2FsIG5hbWUuICAqLworLSAgICAgIHBoeXNuYW1lID0gZHdhcmYyX2xpbmth Z2VfbmFtZSAoZGllLCBjdSk7CisrICAgICAgcGh5c25hbWUgPSBkd2FyZjJfcGh5c25hbWUgKGRp ZSwgY3UpOworIAorICAgICAgIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25n IHdpdGggdGhpcyBvYmpmaWxlLCBzbyB3ZSBkb24ndAorIAkgbmVlZCB0byBkdXBsaWNhdGUgaXQg Zm9yIHRoZSB0eXBlLiAgKi8KK0BAIC00Njc5LDcgKzUwMTAsNyBAQCBkd2FyZjJfYWRkX21lbWJl cl9mbiAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCisgICAg IHJldHVybjsKKyAKKyAgIC8qIEdldCB0aGUgbWFuZ2xlZCBuYW1lLiAgKi8KKy0gIHBoeXNuYW1l ID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7CisrICBwaHlzbmFtZSA9IGR3YXJmMl9w aHlzbmFtZSAoZGllLCBjdSk7CisgCisgICAvKiBMb29rIHVwIG1lbWJlciBmdW5jdGlvbiBuYW1l IGluIGZpZWxkbGlzdC4gICovCisgICBmb3IgKGkgPSAwOyBpIDwgZmlwLT5uZm5maWVsZHM7IGkr KykKK0BAIC01MDEwLDE0ICs1MzQxLDE4IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgICBpZiAoY3UtPmxhbmd1 YWdlID09IGxhbmd1YWdlX2NwbHVzCisgCSAgfHwgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ph dmEpCisgCXsKKy0JICBjb25zdCBjaGFyICpuZXdfcHJlZml4ID0gZGV0ZXJtaW5lX2NsYXNzX25h bWUgKGRpZSwgY3UpOworLQkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0gKGNoYXIgKikgbmV3X3By ZWZpeDsKKysJICBUWVBFX1RBR19OQU1FICh0eXBlKSA9IChjaGFyICopIGR3YXJmMl9mdWxsX25h bWUgKGRpZSwgY3UpOworKwkgIGlmIChkaWUtPnRhZyA9PSBEV19UQUdfc3RydWN0dXJlX3R5cGUK KysJICAgICAgfHwgZGllLT50YWcgPT0gRFdfVEFHX2NsYXNzX3R5cGUpCisrCSAgICBUWVBFX05B TUUgKHR5cGUpID0gVFlQRV9UQUdfTkFNRSAodHlwZSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsK KyAJICAvKiBUaGUgbmFtZSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBhbG9uZyB3aXRoIHRoaXMgb2Jq ZmlsZSwgc28KKyAJICAgICB3ZSBkb24ndCBuZWVkIHRvIGR1cGxpY2F0ZSBpdCBmb3IgdGhlIHR5 cGUuICAqLworLQkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0gbmFtZTsKKysJICBUWVBFX1RBR19O QU1FICh0eXBlKSA9IChjaGFyICopIG5hbWU7CisrCSAgaWYgKGRpZS0+dGFnID09IERXX1RBR19j bGFzc190eXBlKQorKwkgICAgVFlQRV9OQU1FICh0eXBlKSA9IFRZUEVfVEFHX05BTUUgKHR5cGUp OworIAl9CisgICAgIH0KKyAKK0BAIC01MjU4LDUxICs1NTkzLDYgQEAgcmVhZF9lbnVtZXJhdGlv bl90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBy ZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKKyB9CisgCistLyogRGV0ZXJtaW5l IHRoZSBuYW1lIG9mIHRoZSB0eXBlIHJlcHJlc2VudGVkIGJ5IERJRSwgd2hpY2ggc2hvdWxkIGJl CistICAgYSBuYW1lZCBDKysgb3IgSmF2YSBjb21wb3VuZCB0eXBlLiAgUmV0dXJuIHRoZSBuYW1l IGluIHF1ZXN0aW9uLAorLSAgIGFsbG9jYXRlZCBvbiB0aGUgb2JqZmlsZSBvYnN0YWNrLiAgKi8K Ky0KKy1zdGF0aWMgY29uc3QgY2hhciAqCistZGV0ZXJtaW5lX2NsYXNzX25hbWUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKy17CistICBjb25zdCBjaGFyICpu ZXdfcHJlZml4ID0gTlVMTDsKKy0KKy0gIC8qIElmIHdlIGRvbid0IGhhdmUgbmFtZXNwYWNlIGRl YnVnIGluZm8sIGd1ZXNzIHRoZSBuYW1lIGJ5IHRyeWluZworLSAgICAgdG8gZGVtYW5nbGUgdGhl IG5hbWVzIG9mIG1lbWJlcnMsIGp1c3QgbGlrZSB3ZSBkaWQgaW4KKy0gICAgIGd1ZXNzX3N0cnVj dHVyZV9uYW1lLiAgKi8KKy0gIGlmICghcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8pCist ICAgIHsKKy0gICAgICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkOworLQorLSAgICAgIGZvciAoY2hp bGQgPSBkaWUtPmNoaWxkOworLQkgICBjaGlsZCAhPSBOVUxMICYmIGNoaWxkLT50YWcgIT0gMDsK Ky0JICAgY2hpbGQgPSBzaWJsaW5nX2RpZSAoY2hpbGQpKQorLQl7CistCSAgaWYgKGNoaWxkLT50 YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0pCistCSAgICB7CistCSAgICAgIGNoYXIgKnBoeXNfcHJl Zml4CistCQk9IGxhbmd1YWdlX2NsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAoY3UtPmxhbmd1YWdl X2RlZm4sCistCQkJCQkJICAgICBkd2FyZjJfbGlua2FnZV9uYW1lCistCQkJCQkJICAgICAoY2hp bGQsIGN1KSk7CistCistCSAgICAgIGlmIChwaHlzX3ByZWZpeCAhPSBOVUxMKQorLQkJeworLQkJ ICBuZXdfcHJlZml4CistCQkgICAgPSBvYnNhdmVzdHJpbmcgKHBoeXNfcHJlZml4LCBzdHJsZW4g KHBoeXNfcHJlZml4KSwKKy0JCQkJICAgICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsK Ky0JCSAgeGZyZWUgKHBoeXNfcHJlZml4KTsKKy0JCSAgYnJlYWs7CistCQl9CistCSAgICB9Cist CX0KKy0gICAgfQorLQorLSAgaWYgKG5ld19wcmVmaXggPT0gTlVMTCkKKy0gICAgbmV3X3ByZWZp eCA9IGR3YXJmMl9mdWxsX25hbWUgKGRpZSwgY3UpOworLQorLSAgcmV0dXJuIG5ld19wcmVmaXg7 CistfQorLQorIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhIGRpZSB3aGljaCBiZWdpbnMgYW4gZW51 bWVyYXRpb24sIHByb2Nlc3MgYWxsCisgICAgdGhlIGRpZXMgdGhhdCBkZWZpbmUgdGhlIG1lbWJl cnMgb2YgdGhlIGVudW1lcmF0aW9uLCBhbmQgY3JlYXRlIHRoZQorICAgIHN5bWJvbCBmb3IgdGhl IGVudW1lcmF0aW9uIHR5cGUuCitAQCAtNTM4MCw2ICs1NjcwLDI5IEBAIHByb2Nlc3NfZW51bWVy YXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK KyAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CisgfQorIAogKy8qIENyZWF0ZSBh IG5ldyBhcnJheSBkaW1lbnNpb24gcmVmZXJlbmNpbmcgaXRzIHRhcmdldCB0eXBlIFRZUEUuCiAr CiArICAgTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQg YXMgYSBzdGFjayBvZgpAQCAtMzI2MCw3ICs0MjMyLDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2Vj NSAxMDA2NDQKICAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGEgRFdfVEFHX2FycmF5 X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0aGUgRElFJ3MgdHlwZSBmaWVsZC4gIEZvciBu b3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25hbAogICAgIGFycmF5cy4gICovCi1A QCAtNTM5OCw3ICs1NjgwLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTM5Myw3ICs1NzA2LDcgQEAgcmVhZF9hcnJh eV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBz dHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGU7CiAgICBz dHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHI7CkBAIC0zMjY5LDcgKzQyNDEsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAog ICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFyICpuYW1lOwogIAotQEAgLTU0NDUs MTYgKzU3MjcsMTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTQ0MCwxNiArNTc1MywxMSBAQCByZWFkX2FycmF5X3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHR5cGUg PSBlbGVtZW50X3R5cGU7CiAgCiAgICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0g RFdfT1JEX2NvbF9tYWpvcikKQEAgLTMyOTEsNyArNDI2MywxNiBAQCBpbmRleCAyNDM4NTljLi4y ZmNjZWM1IDEwMDY0NAogIAogICAgLyogVW5kZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVj dG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KICAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlW ZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0byB0aGUKLUBAIC01NjU5LDIw ICs1OTM2LDE1NSBAQCByZWFkX25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTU2MzgsNyArNTk0Niw3IEBAIHJlYWRfbmFtZXNwYWNlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgaWYgKGlz X2Fub255bW91cykKKyAJeworIAkgIGNvbnN0IGNoYXIgKnByZXZpb3VzX3ByZWZpeCA9IGRldGVy bWluZV9wcmVmaXggKGRpZSwgY3UpOworLQkgIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKHByZXZp b3VzX3ByZWZpeCwgVFlQRV9OQU1FICh0eXBlKSk7CisrCSAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2 ZSAocHJldmlvdXNfcHJlZml4LCBUWVBFX05BTUUgKHR5cGUpLCAiIiwgIiIsIGR3YXJmMl9yZWFk X2RlY2xfbGluZShkaWUsIGN1KSk7CisgCX0KKyAgICAgfQorIAorQEAgLTU2NTQsMjAgKzU5NjIs MTU1IEBAIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgICAgIH0KICB9CiAgCkBAIC0zMzA0LDE0ICs0Mjg1LDEzIEBAIGluZGV4IDI0 Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgewogLSAgc3RydWN0IGRpZV9pbmZvICpjaGlsZF9kaWUg PSBkaWUtPmNoaWxkOwogKyAgc3RydWN0IHR5cGUgKnR5cGU7Ci0gCi0tICAvKiBGSVhNRTogU3Vw cG9ydCB0aGUgc2VwYXJhdGUgRm9ydHJhbiBtb2R1bGUgbmFtZXNwYWNlcy4gICovCisrCiArICB0 eXBlID0gcmVhZF9tb2R1bGVfdHlwZSAoZGllLCBjdSk7CiArCiArICBpZiAodHlwZSkKICsgICAg bmV3X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CiArfQotIAorKwogKy8qIFJlYWQgYSBGb3J0cmFu IG1vZHVsZSBhcyB0eXBlLgogKwogKyAgIE1vZHVsZXMgcHJlc2VudCBvbmx5IGFzIGRlY2xhcmF0 aW9ucyAtIGJlaW5nIHVzZWQgb25seSBmb3IgRFdfQVRfaW1wb3J0IG9mCkBAIC0zMzQwLDkgKzQz MjAsMTAgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICsgIHR5cGUgPSBpbml0X3R5 cGUgKFRZUEVfQ09ERV9NT0RVTEUsIDAsIDAsIG1vZHVsZV9uYW1lLCBvYmpmaWxlKTsKICsKICsg IC8qIENyZWF0ZSBhIGNvbnRleHQgZm9yIHJlYWRpbmcgdGhlIG1vZHVsZSB2YXJpYWJsZXMuICAq LwotKworIAorLSAgLyogRklYTUU6IFN1cHBvcnQgdGhlIHNlcGFyYXRlIEZvcnRyYW4gbW9kdWxl IG5hbWVzcGFjZXMuICAqLwogKyAgbmV3ID0gcHVzaF9jb250ZXh0ICgwLCAwKTsKLSsKKyAKICsg IHNhdmVfZmlsZV9zeW1ib2xzID0gZmlsZV9zeW1ib2xzOwogKyAgZmlsZV9zeW1ib2xzID0gTlVM TDsKICsgIHNhdmVfZ2xvYmFsX3N5bWJvbHMgPSBnbG9iYWxfc3ltYm9sczsKQEAgLTM0NTAsNyAr NDQzMSw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgfQogIAogIC8qIFJldHVy biB0aGUgbmFtZSBvZiB0aGUgbmFtZXNwYWNlIHJlcHJlc2VudGVkIGJ5IERJRS4gIFNldAotQEAg LTU4MzcsMjkgKzYyNDksMTEzIEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTgzMiwyOSArNjI3NSwxMTMgQEAg cmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAo b2JqZmlsZSk7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBl LCAqY2hhcl90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTM1NzgsNyArNDU1 OSw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgICBjaGFyX3R5cGUgPSBsYW5n dWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7CiAgICB0 eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUpOwog IAotQEAgLTU5NTksNyArNjQ1NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCitAQCAtNTk1NCw3 ICs2NDgxLDYgQEAgc3RhdGljIHN0cnVjdCB0eXBlICoKICByZWFkX3R5cGVkZWYgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwpAQCAtMzU4Niw3ICs0NTY3LDcgQEAgaW5kZXggMjQz ODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwogICAgc3Ry dWN0IHR5cGUgKnRoaXNfdHlwZTsKICAKLUBAIC02MDY3LDggKzY1NjIsNyBAQCByZWFkX3N1YnJh bmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC02MDYyLDggKzY1ODgsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0eXBlICpiYXNlX3R5cGU7CiAg ICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBA IC0zNTk2LDcgKzQ1NzcsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogICAgY2hh ciAqbmFtZTsKICAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKICAgIAotQEAgLTYwODIsNDkgKzY1 NzYsMTAxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTYwNzcsNDkgKzY2MDIsMTAxIEBAIHJlYWRfc3VicmFuZ2Vf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJICAg ICAwLCBOVUxMLCBjdS0+b2JqZmlsZSk7CiAgICAgIH0KICAKQEAgLTM3MzQsNyArNDcxNSw3IEBA IGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUg KGRpZSwgY3UpOwogICAgaWYgKG5hbWUpCi1AQCAtNjU4Myw2ICs3MTI5LDcgQEAgbG9hZF9wYXJ0 aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRy LAorQEAgLTY1NzgsNiArNzE1NSw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdk Yl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKICAJICAmJiBhYmJyZXYtPnRhZyAh PSBEV19UQUdfbGV4aWNhbF9ibG9jawogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR192YXJp YWJsZQogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UKQEAgLTM3NDIsNyAr NDcyMywyOCBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIAkgICYmIGFiYnJldi0+ dGFnICE9IERXX1RBR19tZW1iZXIpCiAgCXsKICAJICAvKiBPdGhlcndpc2Ugd2Ugc2tpcCB0byB0 aGUgbmV4dCBzaWJsaW5nLCBpZiBhbnkuICAqLwotQEAgLTgzMzEsMTAgKzg4NzgsMTIgQEAgdmFy X2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAq c3ltLAorQEAgLTY3ODYsOCArNzM2NCw4IEBAIHJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0 aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKKyAJICAgIH0KKyAJICBicmVhazsKKyAJY2FzZSBEV19B VF9NSVBTX2xpbmthZ2VfbmFtZToKKy0JICBwYXJ0X2RpZS0+bmFtZSA9IERXX1NUUklORyAoJmF0 dHIpOworLQkgIGJyZWFrOworKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfYWRhKQor KwkgICAgcGFydF9kaWUtPm5hbWUgPSBEV19TVFJJTkcgKCZhdHRyKTsKKyAJY2FzZSBEV19BVF9s b3dfcGM6CisgCSAgaGFzX2xvd19wY19hdHRyID0gMTsKKyAJICBwYXJ0X2RpZS0+bG93cGMgPSBE V19BRERSICgmYXR0cik7CitAQCAtNjk4NCw3ICs3NTYyLDggQEAgZml4dXBfcGFydGlhbF9kaWUg KHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKKyAgIC8qIElmIHdlIGZvdW5kIGEg cmVmZXJlbmNlIGF0dHJpYnV0ZSBhbmQgdGhlIERJRSBoYXMgbm8gbmFtZSwgdHJ5CisgICAgICB0 byBmaW5kIGEgbmFtZSBpbiB0aGUgcmVmZXJyZWQgdG8gRElFLiAgKi8KKyAKKy0gIGlmIChwYXJ0 X2RpZS0+bmFtZSA9PSBOVUxMICYmIHBhcnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbikKKysgIGlm IChwYXJ0X2RpZS0+aGFzX3NwZWNpZmljYXRpb24KKysgICAgICAmJiAocGFydF9kaWUtPm5hbWUg PT0gTlVMTCB8fCAhcGFydF9kaWUtPmlzX2V4dGVybmFsKSkKKyAgICAgeworICAgICAgIHN0cnVj dCBwYXJ0aWFsX2RpZV9pbmZvICpzcGVjX2RpZTsKKyAKK0BAIC04MzI2LDEwICs4OTA1LDEyIEBA IHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1i b2wgKnN5bSwKICAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVt b3J5IGxvY2F0aW9uIGlzCiAgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9j aywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAogICAgICAgbm90IGJlIHdvcnRod2hpbGUu ICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKQEAgLTM3NTcs MTYgKzQ3NTksMzUgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICB9CiAgCiAgLyog R2l2ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQg aWYgd2UgbmVlZAotQEAgLTgzNjcsMTAgKzg5MTYsMTcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC04MzUxLDIxICs4OTMyLDI5IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCisgICBiYXNlYWRkciA9 IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZp bGUpKTsKKyAKKy0gIGlmIChkaWUtPnRhZyAhPSBEV19UQUdfbmFtZXNwYWNlKQorLSAgICBuYW1l ID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7CistICBlbHNlCistICAgIG5hbWUgPSBU WVBFX05BTUUgKHR5cGUpOworLQorKyAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKKyAg IGlmIChuYW1lKQorICAgICB7CisrICAgICAgY29uc3QgY2hhciAqbGlua2FnZW5hbWU7CisrCisg ICAgICAgc3ltID0gKHN0cnVjdCBzeW1ib2wgKikgb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywKICAJCQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sKSk7CiAgICAg ICAgT0JKU1RBVCAob2JqZmlsZSwgbl9zeW1zKyspOwogICAgICAgIG1lbXNldCAoc3ltLCAwLCBz aXplb2YgKHN0cnVjdCBzeW1ib2wpKTsKICsgICAgICAvKiBTb21lIG1ldGhvZHMgYXJlIGNhbGxl ZCB3L28gY2hlY2tpbmcgU1lNQk9MX0NPTVBVVEVEX09QUyB2YWxpZGl0eS4gICovCiArICAgICAg U1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbWlzc2luZ19mdW5jczsKICAKLSAg ICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVk IGZvcm0gKGlmIGFueSkuICAqLworLSAgICAgIC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBh bmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4gICovCiAgICAgICAgU1lNQk9M X0xBTkdVQUdFIChzeW0pID0gY3UtPmxhbmd1YWdlOwotICAgICAgIFNZTUJPTF9TRVRfTkFNRVMg KHN5bSwgbmFtZSwgc3RybGVuIChuYW1lKSwgMCwgb2JqZmlsZSk7CistICAgICAgU1lNQk9MX1NF VF9OQU1FUyAoc3ltLCBuYW1lLCBzdHJsZW4gKG5hbWUpLCAwLCBvYmpmaWxlKTsKKysKKysgICAg ICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZv cm0gKGlmIGFueSkuICAqLworKworKyAgICAgIGxpbmthZ2VuYW1lID0gZHdhcmYyX3BoeXNuYW1l IChkaWUsIGN1KTsKKysgICAgICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxpbmthZ2VuYW1lLCBz dHJsZW4gKGxpbmthZ2VuYW1lKSwgMCwgb2JqZmlsZSk7CiArICAgICAgaWYgKGN1LT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQogKwl7CiArCSAgU1lNQk9MX0NQTFVTX0RFTUFOR0xFRF9O QU1FIChzeW0pID0gU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKTsKQEAgLTM3NzUsNyArNDc5Niw3 IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgCiAgICAgICAgLyogRGVmYXVsdCBh c3N1bXB0aW9ucy4KICAgICAgICAgICBVc2UgdGhlIHBhc3NlZCB0eXBlIG9yIGRlY29kZSBpdCBm cm9tIHRoZSBkaWUuICAqLwotQEAgLTg0NzAsNyArOTAyNiwxOCBAQCBuZXdfc3ltYm9sIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorQEAgLTg0NjUsNyArOTA1NCwxOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkgICAgICB2YXJf ZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKICAJICAgICAgYXR0cjIgPSBkd2FyZjJf YXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOwogIAkgICAgICBpZiAoYXR0cjIgJiYgKERX X1VOU05EIChhdHRyMikgIT0gMCkpCkBAIC0zNzk1LDcgKzQ4MTYsMTYgQEAgaW5kZXggMjQzODU5 Yy4uMmZjY2VjNSAxMDA2NDQKICAJICAgICAgZWxzZQogIAkJYWRkX3N5bWJvbF90b19saXN0IChz eW0sIGN1LT5saXN0X2luX3Njb3BlKTsKICAJICAgIH0KLUBAIC04NjMxLDYgKzkxOTgsMTEgQEAg bmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04NjAyLDcgKzkyMDIsNyBAQCBuZXdfc3ltYm9sIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7CisgCSAg YnJlYWs7CisgCWNhc2UgRFdfVEFHX2VudW1lcmF0b3I6CistCSAgU1lNQk9MX0xJTktBR0VfTkFN RSAoc3ltKSA9IChjaGFyICopIGR3YXJmMl9mdWxsX25hbWUgKGRpZSwgY3UpOworKwkgIFNZTUJP TF9MSU5LQUdFX05BTUUgKHN5bSkgPSAoY2hhciAqKSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Cisg CSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbnN0X3ZhbHVlLCBjdSk7CisgCSAg aWYgKGF0dHIpCisgCSAgICB7CitAQCAtODYyNiw2ICs5MjI2LDExIEBAIG5ld19zeW1ib2wgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgCSAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX1RZUEVERUY7CiAgCSAgYWRkX3N5bWJv bF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CiAgCSAgYnJlYWs7CkBAIC0zODA3LDcg KzQ4MzcsMTcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAJZGVmYXVsdDoKICAJ ICAvKiBOb3QgYSB0YWcgd2UgcmVjb2duaXplLiAgSG9wZWZ1bGx5IHdlIGFyZW4ndCBwcm9jZXNz aW5nCiAgCSAgICAgdHJhc2ggZGF0YSwgYnV0IHNpbmNlIHdlIG11c3Qgc3BlY2lmaWNhbGx5IGln bm9yZSB0aGluZ3MKLUBAIC04OTU3LDEyICs5NTI5LDE4IEBAIHJlYWRfdHlwZV9kaWUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04NjM5LDggKzkyNDQs NyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICAgIC8qIEZvciB0aGUgYmVuZWZpdCBvZiBvbGQg dmVyc2lvbnMgb2YgR0NDLCBjaGVjayBmb3IgYW5vbnltb3VzCisgCSBuYW1lc3BhY2VzIGJhc2Vk IG9uIHRoZSBkZW1hbmdsZWQgbmFtZS4gICovCisgICAgICAgaWYgKCFwcm9jZXNzaW5nX2hhc19u YW1lc3BhY2VfaW5mbworLQkgICYmIGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cworLQkg ICYmIGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSkgIT0gTlVM TCkKKysJICAmJiBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCisgCWNwX3NjYW5fZm9y X2Fub255bW91c19uYW1lc3BhY2VzIChzeW0pOworICAgICB9CisgICByZXR1cm4gKHN5bSk7CitA QCAtODk1MiwxMiArOTU1NiwxOCBAQCByZWFkX3R5cGVfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIGNhc2UgRFdfVEFHX25hbWVzcGFjZToKICAg ICAgICB0aGlzX3R5cGUgPSByZWFkX25hbWVzcGFjZV90eXBlIChkaWUsIGN1KTsKICAgICAgICBi cmVhazsKQEAgLTM4MjYsMTAgKzQ4NjYsMTk1IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAw NjQ0CiAgICByZXR1cm4gdGhpc190eXBlOwogIH0KICAKLUBAIC05MTEwLDYgKzk2ODgsMzkgQEAg ZHdhcmYyX2xpbmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQotICAgcmV0dXJuIGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKK0BAIC05MDM5LDEwICs5 NjQ5LDEwMyBAQCBkZXRlcm1pbmVfcHJlZml4IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCisgCSAgICAgU28gaXQgZG9lcyBub3QgbmVlZCBhIHByZWZpeC4gICov CisgCSAgcmV0dXJuICIiOworICAgICAgIGRlZmF1bHQ6CistCXJldHVybiBkZXRlcm1pbmVfcHJl Zml4IChwYXJlbnQsIGN1KTsKKysgICAgICAgIHJldHVybiBkZXRlcm1pbmVfcHJlZml4IChwYXJl bnQsIGN1KTsKKyAgICAgICB9CisgfQorIAorKy8qIERldGVybWluZXMgdGhlIHByZWZpeCBmb3Ig YSBzeW1ib2wncyBwaHlzbmFtZS4gIFVubGlrZSBkZXRlcm1pbmVfcHJlZml4LAorKyAgIHRoaXMg bWV0aG9kIGRvZXMgbm90IHNpbXBseSBsb29rIGF0IHRoZSBESUUncyBpbW1lZGlhdGUgcGFyZW50 LgorKyAgIEl0IHdpbGwgY29tcHV0ZSB0aGUgc3ltYm9sJ3MgcGh5c25hbWUgYnkgc2Nhbm5pbmcg dGhyb3VnaCBhbGwgcGFyZW50CisrICAgRElFcyB1bnRpbCBpdCBnZXRzIHRvIHRoZSBjb21waWxh dGlvbiB1bml0J3MgRElFLiAgKi8KKysKKytzdGF0aWMgY2hhciAqCisrcGh5c25hbWVfcHJlZml4 IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgbG9u ZyBsZW5ndGg7CisrICBzdHJ1Y3QgdWlfZmlsZSAqYnVmOworKyAgc3RydWN0IGRpZV9pbmZvICpk LCAqc3BlY19kaWU7CisrICBzdHJ1Y3QgZHdhcmYyX2N1ICpzcGVjX2N1OworKyAgY2hhciAqbmFt ZTsKKysKKysgIC8qIENvbnN0cnVjdCBhIHN0YWNrIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBESUUn cyBwYXJlbnRzLiAgQ2F1dGlvbgorKyAgICAgbXVzdCBiZSBvYnNlcnZlZCBmb3IgZGVhbGluZyB3 aXRoIERXX0FUX3NwZWNpZmljYXRpb24uICovCisrICBzcGVjX2N1ID0gY3U7CisrICBzcGVjX2Rp ZSA9IGRpZV9zcGVjaWZpY2F0aW9uIChkaWUsICZzcGVjX2N1KTsKKysgIGlmIChzcGVjX2RpZSAh PSBOVUxMKQorKyAgICBkID0gc3BlY19kaWUtPnBhcmVudDsKKysgIGVsc2UKKysgICAgZCA9IGRp ZS0+cGFyZW50OworKyAgd2hpbGUgKGQgIT0gTlVMTCAmJiBkLT50YWcgIT0gRFdfVEFHX2NvbXBp bGVfdW5pdCkKKysgICAgeworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CisrCisrICAg ICAgc3BlY19kaWUgPSBkaWVfc3BlY2lmaWNhdGlvbiAoZCwgJnNwZWNfY3UpOworKyAgICAgIGlm IChzcGVjX2RpZSAhPSBOVUxMKQorKwlkID0gc3BlY19kaWU7CisrCisrICAgICAgVkVDX3F1aWNr X3B1c2ggKGRpZV9pbmZvX3AsIGRpZV9saXN0LCBkKTsKKysgICAgICBkID0gZC0+cGFyZW50Owor KyAgICB9CisrCisrICAvKiBOb3cgcG9wIGFsbCB0aGUgZWxlbWVudHMsIHByaW50aW5nIHRoZWly IG5hbWVzIGFzIHdlIGdvLiAgKi8KKysgIGJ1ZiA9IG1lbV9maWxlb3BlbiAoKTsKKysgIHdoaWxl ICghVkVDX2VtcHR5IChkaWVfaW5mb19wLCBkaWVfbGlzdCkpCisrICAgIHsKKysgICAgICBkID0g VkVDX3BvcCAoZGllX2luZm9fcCwgZGllX2xpc3QpOworKyAgICAgIHBoeXNuYW1lX3ByZWZpeF8x IChidWYsIGQsIGN1KTsKKysKKysgICAgICBpZiAoIVZFQ19lbXB0eSAoZGllX2luZm9fcCwgZGll X2xpc3QpKQorKwl7CisrCSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKKysJ ICAgIGZwdXRzX3VuZmlsdGVyZWQgKCI6OiIsIGJ1Zik7CisrCSAgZWxzZQorKwkgICAgZnB1dHNf dW5maWx0ZXJlZCAoIi4iLCBidWYpOworKwl9CisrICAgIH0KKysKKysgIG5hbWUgPSB1aV9maWxl X29ic2F2ZXN0cmluZyAoYnVmLCAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgJmxlbmd0 aCk7CisrICB1aV9maWxlX2RlbGV0ZSAoYnVmKTsKKysgIHJldHVybiBuYW1lOworK30KKysKKytz dGF0aWMgdm9pZAorK3BoeXNuYW1lX3ByZWZpeF8xIChzdHJ1Y3QgdWlfZmlsZSAqYnVmLCBzdHJ1 Y3QgZGllX2luZm8gKmRpZSwKKysJCSAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK3sKKysgIGNv bnN0IGNoYXIgKm5hbWUgPSBOVUxMOworKyAgZ2RiX2Fzc2VydCAoYnVmICE9IE5VTEwpOworKwor KyAgaWYgKGRpZSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgc3dpdGNoIChkaWUtPnRhZykKKysJ eworKwljYXNlIERXX1RBR19uYW1lc3BhY2U6CisrCSAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUs IGN1KTsKKysJICBpZiAobmFtZSA9PSBOVUxMKQorKwkgICAgbmFtZSA9ICIoYW5vbnltb3VzIG5h bWVzcGFjZSkiOworKwkgIC8qIEcrKyA0LjEgcHJvZHVjZWQgRFdfVEFHX25hbWVzcGFjZSB3aXRo IERXX0FUX25hbWUgIjo6Ii4gICovCisrCSAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiOjoiKSA9 PSAwKQorKwkgICAgbmFtZSA9IE5VTEw7CisrCSAgYnJlYWs7CisrCisrCWNhc2UgRFdfVEFHX2Ns YXNzX3R5cGU6CisrCWNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorKwljYXNlIERXX1RBR191 bmlvbl90eXBlOgorKwljYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorKwljYXNlIERXX1RB R19pbnRlcmZhY2VfdHlwZToKKysJY2FzZSBEV19UQUdfc3VicHJvZ3JhbToKKysJICBuYW1lID0g ZHdhcmYyX25hbWUgKGRpZSwgY3UpOworKwkgIGJyZWFrOworKworKwlkZWZhdWx0OgorKwkgIGJy ZWFrOworKwl9CisrICAgIH0KKysKKysgIGlmIChuYW1lICE9IE5VTEwpCisrICAgIGZwdXRzX3Vu ZmlsdGVyZWQgKG5hbWUsIGJ1Zik7CisrfQorKworIC8qIFJldHVybiBhIG5ld2x5LWFsbG9jYXRl ZCBzdHJpbmcgZm9ybWVkIGJ5IGNvbmNhdGVuYXRpbmcgUFJFRklYIGFuZAorICAgIFNVRkZJWCB3 aXRoIGFwcHJvcHJpYXRlIHNlcGFyYXRvci4gIElmIFBSRUZJWCBvciBTVUZGSVggaXMgTlVMTCBv ciBlbXB0eSwgdGhlbgorICAgIHNpbXBseSBjb3B5IHRoZSBTVUZGSVggb3IgUFJFRklYLCByZXNw ZWN0aXZlbHkuICBJZiBPQlMgaXMgbm9uLW51bGwsCitAQCAtOTA5MiwxNyArOTc5NSwxMTEgQEAg c2libGluZ19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllKQorICAgcmV0dXJuIGRpZS0+c2libGlu ZzsKICB9CiAgCistLyogR2V0IGxpbmthZ2UgbmFtZSBvZiBhIGRpZSwgcmV0dXJuIE5VTEwgaWYg bm90IGZvdW5kLiAgKi8KKysvKiBDb25zdHJ1Y3QgYSBwaHlzbmFtZSBmb3IgdGhlIGdpdmVuIERJ RSBpbiBDVS4gKi8KKyAKKyBzdGF0aWMgY2hhciAqCistZHdhcmYyX2xpbmthZ2VfbmFtZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK2R3YXJmMl9waHlzbmFt ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsKKyAgIHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CisrICBjaGFyICpuYW1lOworKworKyAgbmFtZSA9IGR3YXJm Ml9uYW1lIChkaWUsIGN1KTsKKysKKysgIC8qIFRoZXNlIGFyZSB0aGUgb25seSBsYW5ndWFnZXMg d2Uga25vdyBob3cgdG8gcXVhbGlmeSBuYW1lcyBpbi4gICovCisrICBpZiAoY3UtPmxhbmd1YWdl ICE9IGxhbmd1YWdlX2NwbHVzCisrICAgICAgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2ph dmEpCisrICAgIHJldHVybiBuYW1lOworKworKyAgaWYgKGRpZV9uZWVkc19uYW1lc3BhY2UgKGRp ZSwgY3UpKQorKyAgICB7CisrICAgICAgbG9uZyBsZW5ndGg7CisrICAgICAgY2hhciAqcHJlZml4 OworKyAgICAgIHN0cnVjdCB1aV9maWxlICpidWY7CisrCisrICAgICAgcHJlZml4ID0gcGh5c25h bWVfcHJlZml4IChkaWUsIGN1KTsKKysgICAgICBidWYgPSBtZW1fZmlsZW9wZW4gKCk7CisrICAg ICAgaWYgKCpwcmVmaXggIT0gJ1wwJykKKysJeworKwkgIGNoYXIgKnByZWZpeGVkX25hbWUgPSB0 eXBlbmFtZV9jb25jYXQgKE5VTEwsIHByZWZpeCwgbmFtZSwgY3UpOworKwkgIGZwdXRzX3VuZmls dGVyZWQgKHByZWZpeGVkX25hbWUsIGJ1Zik7CisrCSAgeGZyZWUgKHByZWZpeGVkX25hbWUpOwor Kwl9CisrICAgICAgZWxzZQorKwlmcHV0c191bmZpbHRlcmVkIChuYW1lID8gbmFtZSA6ICIiLCBi dWYpOworKworKyAgICAgIC8qIEZvciBKYXZhIGFuZCBDKysgbWV0aG9kcywgYXBwZW5kIGZvcm1h bCBwYXJhbWV0ZXIgdHlwZQorKwkgaW5mb3JtYXRpb24uICovCisrICAgICAgaWYgKChjdS0+bGFu Z3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMgfHwgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEp CisrCSAgJiYgZGllLT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0pCisrCXsKKysJICBzdHJ1Y3Qg dHlwZSAqdHlwZSA9IHJlYWRfdHlwZV9kaWUgKGRpZSwgY3UpOworKworKwkgIGNfdHlwZV9wcmlu dF9hcmdzICh0eXBlLCBidWYsIDAsIGN1LT5sYW5ndWFnZSk7CisrCisrCSAgaWYgKGN1LT5sYW5n dWFnZSA9PSBsYW5ndWFnZV9qYXZhKQorKwkgICAgeworKwkgICAgICAvKiBGb3IgamF2YSwgd2Ug bXVzdCBhcHBlbmQgdGhlIHJldHVybiB0eXBlIHRvIG1ldGhvZCBuYW1lcy4gKi8KKysJICAgICAg aWYgKGRpZS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQorKwkJamF2YV9wcmludF90eXBlIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgIiIsIGJ1ZiwgMCwgMCk7CisrCSAgICB9CisrCSAgZWxz ZSBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQorKwkgICAgeworKwkgICAgICAv KiBjX3R5cGVfcHJpbnRfYXJncyBhZGRzIGFyZ3VtZW50IHR5cGVzLCBidXQgaXQgZG9lcworKwkJ IG5vdCBhZGQgYW55IG5lY2Vzc2FyeSAiY29uc3QiLiAqLworKwkgICAgICBpZiAoVFlQRV9ORklF TERTICh0eXBlKSA+IDAgJiYgVFlQRV9GSUVMRF9BUlRJRklDSUFMICh0eXBlLCAwKQorKwkJICAm JiBUWVBFX0NPTlNUIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDAp KSkpCisrCQlmcHV0c191bmZpbHRlcmVkICgiIGNvbnN0IiwgYnVmKTsKKysJICAgIH0KKysJfQor KworKyAgICAgIG5hbWUgPSB1aV9maWxlX29ic2F2ZXN0cmluZyAoYnVmLCAmY3UtPm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjaywKKysJCQkJICAgJmxlbmd0aCk7CisrICAgICAgdWlfZmlsZV9kZWxl dGUgKGJ1Zik7CisrCisrICAgICAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykK KysJeworKwkgIGNoYXIgKmNuYW1lCisrCSAgICA9IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAo bmFtZSwgY3UsCisrCQkJCQkmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7CisrCSAgaWYg KGNuYW1lICE9IE5VTEwpCisrCSAgICBuYW1lID0gY25hbWU7CisrCX0KKysgICAgfQorIAorLSAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Cist ICBpZiAoYXR0ciAmJiBEV19TVFJJTkcgKGF0dHIpKQorLSAgICByZXR1cm4gRFdfU1RSSU5HIChh dHRyKTsKKy0gIHJldHVybiBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisrICByZXR1cm4gbmFtZTsK Kyt9CisrCiArLyogUmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgLnN5bXRhYiBuYW1lIGZvciBz eW1ib2xzIGNvbnRhaW5lZCBpbiBGb3J0cmFuCiArICAgbW9kdWxlcy4gIFJldHVybiBEV0FSRjJf TkFNRSBvdGhlcndpc2UuICAqLwogKwpAQCAtMzg2MSwxMiArNTA4NiwxMCBAQCBpbmRleCAyNDM4 NTljLi4yZmNjZWM1IDEwMDY0NAogKyAgICB9CiArCiArICByZXR1cm4gbmFtZTsKLSt9Ci0rCi0g LyogR2V0IG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4gICovCisgfQog IAotIHN0YXRpYyBjaGFyICoKLUBAIC0xMTQ1NSw2ICsxMjA2NiwzNCBAQCBhdHRyX2Zvcm1faXNf Y29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCisgLyogR2V0IG5hbWUgb2YgYSBkaWUs IHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4gICovCitAQCAtMTE0NTAsNiArMTIyNDcsMzQgQEAg YXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQogICAgICB9CiAg fQogIApAQCAtMzkwMSw3ICs1MTI0LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQK ICBzdGF0aWMgdm9pZAogIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCSAgICAgc3RydWN0IGR3YXJmMl9j dSAqY3UpCi1AQCAtMTE0ODQsMzUgKzEyMTIzLDI1IEBAIGR3YXJmMl9zeW1ib2xfbWFya19jb21w dXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTEx NDc5LDM1ICsxMjMwNCwyNSBAQCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAgICAgICBTWU1CT0xfQ09NUFVU RURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzOwogICAgICAgIFNZTUJPTF9MT0NB VElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwogICAgICB9CkBAIC0zOTUyLDcgKzUxNzUsNyBAQCBp bmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogICAgICB9CiAgfQogIAotQEAgLTExODAwLDYg KzEyNDI5LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNv bnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTExNzk1LDYgKzEyNjEwLDMxIEBAIG9mZnNldF9hbmRf dHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogICAg cmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtMzk4 NCw3ICs1MjA3LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAvKiBTZXQgdGhl IHR5cGUgYXNzb2NpYXRlZCB3aXRoIERJRSB0byBUWVBFLiAgU2F2ZSBpdCBpbiBDVSdzIGhhc2gK ICAgICB0YWJsZSBpZiBuZWNlc3NhcnkuICBGb3IgY29udmVuaWVuY2UsIHJldHVybiBUWVBFLiAg Ki8KICAKLUBAIC0xMTgwOCw2ICsxMjQ2Miw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0x MTgwMyw2ICsxMjY0Myw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBzdHJ1Y3QgZHdh cmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsKICAKQEAgLTM5OTMsNyArNTIxNiw3IEBA IGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtl IHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5cwogICAgICAgaW5pdGlh bGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUK ICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lm aWMgYXJlYSBpcwotQEAgLTExOTYzLDIzICsxMjYxOSwxMyBAQCBzaG93X2R3YXJmMl9jbWQgKGNo YXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xMTk1OCwyMyArMTI4MDAsMTMgQEAgc2hvd19k d2FyZjJfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBjbWRfc2hvd19saXN0IChz aG93X2R3YXJmMl9jbWRsaXN0LCBmcm9tX3R0eSwgIiIpOwogIH0KICAKQEAgLTQwMjEsNyArNTI0 NCw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgfQogIAogIC8qIG11bm1hcCBk ZWJ1ZyBzZWN0aW9ucyBmb3IgT0JKRklMRSwgaWYgbmVjZXNzYXJ5LiAgKi8KLUBAIC0xMTk4OCwx NSArMTI2MzQsMTUgQEAgc3RhdGljIHZvaWQKK0BAIC0xMTk4MywxNSArMTI4MTUsMTUgQEAgc3Rh dGljIHZvaWQKICBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHZvaWQgKmQpCiAgewogICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZGF0YSA9IGQ7 CkBAIC00MDQ2LDYgKzUyNjksMTQgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICB9 CiAgCiAgdm9pZCBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7CitAQCAtMTE5OTksNiAr MTI4MzEsNyBAQCB2b2lkIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKTsKKyB2b2lkCisg X2luaXRpYWxpemVfZHdhcmYyX3JlYWQgKHZvaWQpCisgeworKyAgZGllX2xpc3QgPSBWRUNfYWxs b2MgKGRpZV9pbmZvX3AsIDMyKTsKKyAgIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5CisgICAgID0g cmVnaXN0ZXJfb2JqZmlsZV9kYXRhX3dpdGhfY2xlYW51cCAoTlVMTCwgZHdhcmYyX3Blcl9vYmpm aWxlX2ZyZWUpOworIAogZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5j CiBpbmRleCA3OGU5MTYzLi40ZTIwOGQxIDEwMDY0NAogLS0tIGEvZ2RiL2VsZnJlYWQuYwpAQCAt NDEwNCwxNSArNTMzNSwxMCBAQCBpbmRleCA3OGU5MTYzLi40ZTIwOGQxIDEwMDY0NAogICAgZGVm YXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAgVHJhbnNsYXRlIGV4dC4gdG8g aW50LiByZWxvY2F0aW9uICovCiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIHN5bV9zZWdt ZW50czogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbQogZGlmZiAtLWdpdCBhL2dkYi9ldmFs LmMgYi9nZGIvZXZhbC5jCi1pbmRleCAzZGJiYzhiLi40ZGViODJkIDEwMDY0NAoraW5kZXggMjdi Nzg5NS4uOTBjMjlhMyAxMDA2NDQKIC0tLSBhL2dkYi9ldmFsLmMKICsrKyBiL2dkYi9ldmFsLmMK LUBAIC0zOSwxMCArMzksMTIgQEAKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNpbmNsdWRl ICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSsjaW5jbHVkZSAicHl0aG9u L3B5dGhvbi5oIgotICNpbmNsdWRlICJ2YWxwcmludC5oIgorQEAgLTQzLDYgKzQzLDcgQEAKICAj aW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKICAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICAjaW5jbHVk ZSAicHl0aG9uL3B5dGhvbi5oIgpAQCAtNDEyMCw3ICs1MzQ2LDcgQEAgaW5kZXggM2RiYmM4Yi4u NGRlYjgyZCAxMDA2NDQKICAKICAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotQEAgLTY5Niw2 ICs2OTgsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKK0BAIC02OTYsNiArNjk3LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICBsb25nIG1lbV9vZmZzZXQ7CiAgICBzdHJ1Y3QgdHlw ZSAqKmFyZ190eXBlczsKICAgIGludCBzYXZlX3BvczE7CkBAIC00MTI4LDI3ICs1MzU0LDEyNiBA QCBpbmRleCAzZGJiYzhiLi40ZGViODJkIDEwMDY0NAogIAogICAgcGMgPSAoKnBvcykrKzsKICAg IG9wID0gZXhwLT5lbHRzW3BjXS5vcGNvZGU7Ci1AQCAtMTU4OCw2ICsxNTkxLDggQEAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTMzMiw3 ICsxMzM0LDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0 X3R5cGUsCisgICAgICAgYXJndmVjID0gKHN0cnVjdCB2YWx1ZSAqKikgYWxsb2NhIChzaXplb2Yg KHN0cnVjdCB2YWx1ZSAqKSAqIChuYXJncyArIDMpKTsKKyAgICAgICBpZiAob3AgPT0gU1RSVUNU T1BfTUVNQkVSIHx8IG9wID09IFNUUlVDVE9QX01QVFIpCisgCXsKKy0JICBuYXJncysrOworIAkg IC8qIEZpcnN0LCBldmFsdWF0ZSB0aGUgc3RydWN0dXJlIGludG8gYXJnMiAqLworIAkgIHBjMiA9 ICgqcG9zKSsrOwogIAotICAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUgdHlwZSBjb2RlIHdl IGFyZSBkZWFsaW5nIHdpdGguICAqLwotICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5V TExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVh bnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVf cmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVf dHlwZSAoYXJnMSkpOwotICAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworQEAgLTEzNTYs MjEgKzEzNTcsNDAgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCiAgCi1AQCAtMTYwOCw2ICsxNjEzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgICAgIGNvZGUgPSBUWVBFX0NPREUg KHR5cGUpOwotIAkgICAgfQotIAl9IAotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwor IAkgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7 CiAgCi0gICAgICAgc3dpdGNoIChjb2RlKQotIAl7Ci1AQCAtMjA0MCwxMyArMjA0NiwxOSBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAgICAg ICB7Ci0gCWludCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0gCWludCBhcnJh eV9zaXplX2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworLQkgIGlmIChUWVBFX0NPREUgKGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKSkKKy0JICAgICAgIT0gVFlQRV9DT0RFX01FVEhP RFBUUikKKy0JICAgIGVycm9yIChfKCJOb24tcG9pbnRlci10by1tZW1iZXIgdmFsdWUgdXNlZCBp biBwb2ludGVyLXRvLW1lbWJlciAiCistCQkgICAgICJjb25zdHJ1Y3QiKSk7CistCistCSAgaWYg KG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKKysJICB0eXBlID0gY2hlY2tfdHlw ZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworKwkgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkK KyAJICAgIHsKKy0JICAgICAgc3RydWN0IHR5cGUgKm1ldGhvZF90eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJnMSkpOworLQkgICAgICBhcmcxID0gdmFsdWVfemVybyAobWV0aG9k X3R5cGUsIG5vdF9sdmFsKTsKKysJICAgIGNhc2UgVFlQRV9DT0RFX01FVEhPRFBUUjoKKysJICAg ICAgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKKysJCWFyZzEgPSB2YWx1 ZV96ZXJvIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgbm90X2x2YWwpOworKwkgICAgICBlbHNl CisrCQlhcmcxID0gY3BsdXNfbWV0aG9kX3B0cl90b192YWx1ZSAoJmFyZzIsIGFyZzEpOworKwor KwkgICAgICAvKiBOb3csIHNheSB3aGljaCBhcmd1bWVudCB0byBzdGFydCBldmFsdWF0aW5nIGZy b20gKi8KKysJICAgICAgbmFyZ3MrKzsKKysJICAgICAgdGVtID0gMjsKKysJICAgICAgYXJndmVj WzFdID0gYXJnMjsKKysJICAgICAgYnJlYWs7CisrCisrCSAgICBjYXNlIFRZUEVfQ09ERV9NRU1C RVJQVFI6CisrCSAgICAgIC8qIE5vdywgY29udmVydCB0aGVzZSB2YWx1ZXMgdG8gYW4gYWRkcmVz cy4gICovCisrCSAgICAgIGFyZzIgPSB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChU WVBFX0RPTUFJTl9UWVBFICh0eXBlKSksCisrCQkJCSBhcmcyKTsKKysKKysJICAgICAgbWVtX29m ZnNldCA9IHZhbHVlX2FzX2xvbmcgKGFyZzEpOworKworKwkgICAgICBhcmcxID0gdmFsdWVfZnJv bV9wb2ludGVyIChsb29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSks CisrCQkJCQkgdmFsdWVfYXNfbG9uZyAoYXJnMikgKyBtZW1fb2Zmc2V0KTsKKysJICAgICAgYXJn MSA9IHZhbHVlX2luZCAoYXJnMSk7CisrCSAgICAgIHRlbSA9IDE7CisrCSAgICAgIGJyZWFrOwor KworKwkgICAgZGVmYXVsdDoKKysJICAgICAgZXJyb3IgKF8oIk5vbi1wb2ludGVyLXRvLW1lbWJl ciB2YWx1ZSB1c2VkIGluIHBvaW50ZXItdG8tbWVtYmVyICIKKysJCSAgICAgICAiY29uc3RydWN0 IikpOworIAkgICAgfQorLQkgIGVsc2UKKy0JICAgIGFyZzEgPSBjcGx1c19tZXRob2RfcHRyX3Rv X3ZhbHVlICgmYXJnMiwgYXJnMSk7CisgCistCSAgLyogTm93LCBzYXkgd2hpY2ggYXJndW1lbnQg dG8gc3RhcnQgZXZhbHVhdGluZyBmcm9tICovCistCSAgdGVtID0gMjsKKysJICBhcmd2ZWNbMF0g PSBhcmcxOworIAl9CisgICAgICAgZWxzZSBpZiAob3AgPT0gU1RSVUNUT1BfU1RSVUNUIHx8IG9w ID09IFNUUlVDVE9QX1BUUikKKyAJeworQEAgLTE0OTYsOCArMTUxNiw3IEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAl9CisgICAgICAgZWxz ZSBpZiAob3AgPT0gU1RSVUNUT1BfTUVNQkVSIHx8IG9wID09IFNUUlVDVE9QX01QVFIpCisgCXsK Ky0JICBhcmd2ZWNbMV0gPSBhcmcyOworLQkgIGFyZ3ZlY1swXSA9IGFyZzE7CisrCSAgLyogUG9p bnRlciB0byBtZW1iZXIuICBhcmd2ZWMgaXMgYWxyZWFkeSBzZXQgdXAuICAqLworIAl9CisgICAg ICAgZWxzZSBpZiAob3AgPT0gT1BfVkFSX1ZBTFVFKQorIAl7CitAQCAtMTU4OCw2ICsxNjA3LDgg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisg CisgICAgICAgLyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcg d2l0aC4gICovCisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAs IHBvcywgbm9zaWRlKTsKKysgICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xl YW51cCwgMCk7CisrICAgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAo YXJnMSkpOworICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7 CisgICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCitAQCAtMTYwOCw2ICsxNjI5LDcg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisg CSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworIAkgICAgfQorIAl9IAorKyAgICAgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOworIAorICAgICAgIHN3aXRjaCAoY29kZSkKKyAJeworQEAg LTE3NjksNiArMTc5MSwyNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKKyAgICAgICB4ZnJlZSAoZXhwZWN0X3R5cGUpOworICAgICAgIHJldHVy biBhcmcxOworIAorKyAgICBjYXNlIFRZUEVfSU5TVEFOQ0VfTE9PS1VQOgorKyAgICAgIHsKKysJ aW50IGk7CisrCXN0cnVjdCBzeW1ib2wgKnN5bTsKKysJc3RydWN0IHR5cGUgKiphcmdfdHlwZXM7 CisrCSgqcG9zKSArPSAzOworKwlwcmludGYgKCJUWVBFX0lOU1RBTkNFX0xPT0tVUFxuIik7Cisr CWFyZ190eXBlcyA9IChzdHJ1Y3QgdHlwZSAqKikgYWxsb2NhIChUWVBFX05GSUVMRFMgKGV4cGVj dF90eXBlKQorKwkJCQkJICAgICAqIHNpemVvZiAoc3RydWN0IHR5cGUgKikpOworKwlmb3IgKGkg PSAwOyBpIDwgVFlQRV9ORklFTERTIChleHBlY3RfdHlwZSk7ICsraSkKKysJICBhcmdfdHlwZXNb aV0gPSBUWVBFX0ZJRUxEX1RZUEUgKGV4cGVjdF90eXBlLCBpKTsKKysJKHZvaWQpIGZpbmRfb3Zl cmxvYWRfbWF0Y2ggKGFyZ190eXBlcywgVFlQRV9ORklFTERTIChleHBlY3RfdHlwZSksCisrCQkJ CSAgICBOVUxMIC8qIG5vIG5lZWQgZm9yIG5hbWUgKi8sCisrCQkJCSAgICAwIC8qIG5vdCBtZXRo b2QgKi8sCisrCQkJCSAgICAwIC8qIHN0cmljdCBtYXRjaCAqLywKKysJCQkJICAgIE5VTEwsIGV4 cC0+ZWx0c1twYyArIDFdLnN5bWJvbCwgTlVMTCwKKysJCQkJICAgICZzeW0sIE5VTEwpOworKwlp ID0gMDsKKysgICAgICB9CisrICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgQklOT1BfQ09OQ0FU OgorICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3Ms IG5vc2lkZSk7CisgICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChl eHAsIHBvcywgbm9zaWRlKTsKK0BAIC0yMDQwLDEzICsyMDgzLDE5IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIHsKKyAJaW50IHN1 YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKKyAJaW50IGFycmF5X3NpemVfYXJyYXlb TUFYX0ZPUlRSQU5fRElNU107CiArCWludCBieXRlX3N0cmlkZV9hcnJheVtNQVhfRk9SVFJBTl9E SU1TXTsKICAJaW50IG5kaW1lbnNpb25zID0gMSwgaTsKICAJc3RydWN0IHR5cGUgKnRtcF90eXBl OwpAQCAtNDE2NSw3ICs1NDkwLDcgQEAgaW5kZXggM2RiYmM4Yi4uNGRlYjgyZCAxMDA2NDQKICAJ dG1wX3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CiAgCW5kaW1lbnNp b25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7CiAgCi1AQCAtMjA3Niw2ICsyMDg4LDkg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitA QCAtMjA3Niw2ICsyMTI1LDkgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlw ZSAqZXhwZWN0X3R5cGUsCiAgCSAgICB1cHBlciA9IGY3N19nZXRfdXBwZXJib3VuZCAodG1wX3R5 cGUpOwogIAkgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKICAKQEAg LTQxNzUsNyArNTUwMCw3IEBAIGluZGV4IDNkYmJjOGIuLjRkZWI4MmQgMTAwNjQ0CiAgCSAgICBh cnJheV9zaXplX2FycmF5W25hcmdzIC0gaSAtIDFdID0gdXBwZXIgLSBsb3dlciArIDE7CiAgCiAg CSAgICAvKiBaZXJvLW5vcm1hbGl6ZSBzdWJzY3JpcHRzIHNvIHRoYXQgb2Zmc2V0dGluZyB3aWxs IHdvcmsuICovCi1AQCAtMjA5NCwxMyArMjEwOSwyNSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yMDk0LDEzICsyMTQ2LDI1IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogIAkgICAg ICB0bXBfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7 CiAgCSAgfQogIApAQCAtNDIwNSw3ICs1NTMwLDcgQEAgaW5kZXggM2RiYmM4Yi4uNGRlYjgyZCAx MDA2NDQKICAKICAJLyogTGV0IHVzIG5vdyBwbGF5IGEgZGlydHkgdHJpY2s6IHdlIHdpbGwgdGFr ZSBhcmcxIAogIAkgICB3aGljaCBpcyBhIHZhbHVlIG5vZGUgcG9pbnRpbmcgdG8gdGhlIHRvcG1v c3QgbGV2ZWwKLUBAIC0yMTEwLDcgKzIxMzcsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yMTEwLDcgKzIxNzQsNyBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAgcmV0dXJu cyB0aGUgY29ycmVjdCB0eXBlIHZhbHVlICovCiAgCiAgCWRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5 cGUgKGFyZzEsIHRtcF90eXBlKTsKQEAgLTQyMTQsNyArNTUzOSw3IEBAIGluZGV4IDNkYmJjOGIu LjRkZWI4MmQgMTAwNjQ0CiAgICAgICAgfQogIAogICAgICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5E OgotQEAgLTIzNDQsMTQgKzIzNzEsMjIgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjM0NCwxNCArMjQwOCwyMiBAQCBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgICAgICBpZiAoZXhw ZWN0X3R5cGUgJiYgVFlQRV9DT0RFIChleHBlY3RfdHlwZSkgPT0gVFlQRV9DT0RFX1BUUikKICAJ ZXhwZWN0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChjaGVja190eXBlZGVmIChleHBlY3RfdHlw ZSkpOwogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKGV4cGVjdF90eXBlLCBleHAsIHBv cywgbm9zaWRlKTsKQEAgLTQyMzksNyArNTU2NCw3IEBAIGluZGV4IDNkYmJjOGIuLjRkZWI4MmQg MTAwNjQ0CiAgICAgICAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RT KQogIAl7CiAgCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKLUBA IC0yMzYwLDEyICsyMzk1LDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAorQEAgLTIzNjAsMTIgKzI0MzIsMTggQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgLyogSW4gQyB5b3UgY2Fu IGRlcmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUgMXN0IGVsdC4gICovCiAgCSAgICAgIHx8 IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCiAgCSAgICApCkBAIC00MjYzLDcg KzU1ODgsNyBAQCBpbmRleCAzZGJiYzhiLi40ZGViODJkIDEwMDY0NAogIAkgIGVsc2UKICAJICAg IGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1 ZS4iKSk7CiAgCX0KLUBAIC0yMzc1LDkgKzI0MTYsMTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjM3NSw5ICsyNDUzLDE0IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogIAkgZG8u ICAibG9uZyBsb25nIiB2YXJpYWJsZXMgYXJlIHJhcmUgZW5vdWdoIHRoYXQKICAJIEJVSUxUSU5f VFlQRV9MT05HRVNUIHdvdWxkIHNlZW0gdG8gYmUgYSBtaXN0YWtlLiAgKi8KICAgICAgICBpZiAo VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQpAQCAtNDI4MSw3ICs1NjA2LDcgQEAg aW5kZXggM2RiYmM4Yi4uNGRlYjgyZCAxMDA2NDQKICAKICAgICAgY2FzZSBVTk9QX0FERFI6CiAg ICAgICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1lbWJlcnMuICAq LwotQEAgLTI2OTYsNyArMjc0Miw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTI3MTIsNyArMjc5NSw3IEBAIGV2YWx1YXRlX3N1 YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIHsKICAgIGVudW0g ZXhwX29wY29kZSBvcDsKICAgIGludCBwYzsKQEAgLTQyOTAsNyArNTYxNSw3IEBAIGluZGV4IDNk YmJjOGIuLjRkZWI4MmQgMTAwNjQ0CiAgICBzdHJ1Y3Qgc3ltYm9sICp2YXI7CiAgICBzdHJ1Y3Qg dHlwZSAqdHlwZTsKICAKLUBAIC0yNzA3LDEyICsyNzUzLDE3IEBAIGV2YWx1YXRlX3N1YmV4cF93 aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTI3MjMsMTIgKzI4MDYs MTcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpl eHAsCiAgICAgIHsKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgdmFyID0gZXhwLT5l bHRzW3BjICsgMl0uc3ltYm9sOwpAQCAtNDMwOSw3ICs1NjM0LDcgQEAgaW5kZXggM2RiYmM4Yi4u NGRlYjgyZCAxMDA2NDQKICAJICByZXR1cm4gdmFsdWVfY2FzdCAobG9va3VwX3BvaW50ZXJfdHlw ZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAogIAkJCSAgICAgdmFsKTsKICAJfQotQEAgLTI3 NjQsOSArMjgxNSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX3NpemVvZiAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50ICpwb3MpCitAQCAtMjc4MCw5ICsyODY4LDEzIEBAIGV2YWx1YXRlX3N1 YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKICAKICAg ICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgKCpwb3MpICs9IDQ7CkBAIC00MzI3LDE3ICs1 NjUyLDI5IEBAIGluZGV4IDNkYmJjOGIuLjRkZWI4MmQgMTAwNjQ0CiAgICAgIGRlZmF1bHQ6CiAg ICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FW T0lEX1NJREVfRUZGRUNUUyk7CiBkaWZmIC0tZ2l0IGEvZ2RiL2V4cHJlc3Npb24uaCBiL2dkYi9l eHByZXNzaW9uLmgKLWluZGV4IGU0ZTg1OTguLmNhOTZiOWIgMTAwNjQ0CitpbmRleCBjYTIxNmNm Li4yMTk1ZmVmIDEwMDY0NAogLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAogKysrIGIvZ2RiL2V4cHJl c3Npb24uaAotQEAgLTQ0NSw0ICs0NDUsNSBAQCBleHRlcm4gY2hhciAqb3Bfc3RyaW5nIChlbnVt IGV4cF9vcGNvZGUpOworQEAgLTk1LDYgKzk1LDExIEBAIGVudW0gZXhwX29wY29kZQorICAgICAg ICBUWVBFX0lOU1RBTkNFIG51bV90eXBlcyB0eXBlMCAuLi4gdHlwZU4gbnVtX3R5cGVzIFRZUEVf SU5TVEFOQ0UgICovCisgICAgIFRZUEVfSU5TVEFOQ0UsCisgCisrICAgIC8qIFRZUEVfSU5TVEFO Q0VfTE9PS1VQIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBzcGVjaWZpZXMgYSBzcGVjaWZpYworKyAg ICAgICB0eXBlIGluc3RhbnRpYXRpb24gb2YgYSBmdW5jdGlvbiAobm90IGEgbWV0aG9kKS4gSW4g dGhpcyBjYXNlLAorKyAgICAgICB3ZSBtdXN0IHRvc3MgdGhlIHJlc3VsdHMgb2YgdGhlIHBhcnNl ciBhbmQgbWFudWFsbHkgZG8gdGhlIGxvb2t1cC4gKi8KKysgICAgVFlQRV9JTlNUQU5DRV9MT09L VVAsCisrCisgICAgIC8qIGVuZCBvZiBDKysuICAqLworIAorICAgICAvKiBGb3IgTW9kdWxhLTIg aW50ZWdlciBkaXZpc2lvbiBESVYgKi8KK0BAIC00NTEsNCArNDU2LDUgQEAgZXh0ZXJuIGNoYXIg Km9wX3N0cmluZyAoZW51bSBleHBfb3Bjb2RlKTsKICBleHRlcm4gdm9pZCBkdW1wX3Jhd19leHBy ZXNzaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopOwog IGV4dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICos IHN0cnVjdCB1aV9maWxlICopOwogIAogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAoRVhQUkVTU0lP Tl9IKSAqLwogZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYwotaW5kZXgg YjkxNGI0OS4uNzliNDZkMiAxMDA2NDQKK2luZGV4IGI5MTRiNDkuLjY3YzcyMzIgMTAwNjQ0CiAt LS0gYS9nZGIvZi1sYW5nLmMKICsrKyBiL2dkYi9mLWxhbmcuYwogQEAgLTMxLDYgKzMxLDggQEAK QEAgLTQzNDksNyArNTY4Niw3IEBAIGluZGV4IGI5MTRiNDkuLjc5YjQ2ZDIgMTAwNjQ0CiAgCiAg CiAgLyogRm9sbG93aW5nIGlzIGR1YmlvdXMgc3R1ZmYgdGhhdCBoYWQgYmVlbiBpbiB0aGUgeGNv ZmYgcmVhZGVyLiAqLwotQEAgLTMwNiw2ICszMDgsNDggQEAgZl9sYW5ndWFnZV9hcmNoX2luZm8g KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTMwNiw2ICszMDgsNDYgQEAgZl9sYW5ndWFn ZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgbGFpLT5ib29sX3R5cGVf ZGVmYXVsdCA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zMjsKICB9CiAgCkBAIC00MzYxLDcg KzU2OTgsNiBAQCBpbmRleCBiOTE0YjQ5Li43OWI0NmQyIDEwMDY0NAogKwogK3N0YXRpYyBzdHJ1 Y3Qgc3ltYm9sICoKICtmX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUs Ci0rCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCiArCQkJICBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAogKwkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQogK3sKQEAgLTQzNzYs NyArNTcxMiw3IEBAIGluZGV4IGI5MTRiNDkuLjc5YjQ2ZDIgMTAwNjQ0CiArICAgICAgc3RydWN0 IHR5cGUgKnR5cGU7CiArICAgICAgc3RydWN0IHN5bWJvbCAqcmV0dmFsOwogKwotKyAgICAgIHN5 bSA9IGxvb2t1cF9zeW1ib2xfZ2xvYmFsICh1c2UtPm1vZHVsZV9uYW1lLCBOVUxMLCBibG9jaywg TU9EVUxFX0RPTUFJTik7CisrICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9nbG9iYWwgKHVzZS0+ bW9kdWxlX25hbWUsIGJsb2NrLCBNT0RVTEVfRE9NQUlOKTsKICsKICsgICAgICAvKiBNb2R1bGUg bmFtZSBsb29rdXAgc2hvdWxkIG5vdCBmYWlsIHdpdGggY29ycmVjdCBkZWJ1ZyBpbmZvLiAgKi8K ICsgICAgICBpZiAoc3ltID09IE5VTEwpCkBAIC00Mzg2LDggKzU3MjIsNyBAQCBpbmRleCBiOTE0 YjQ5Li43OWI0NmQyIDEwMDY0NAogKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX01PRFVMRSk7CiArICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9NT0RVTEVfQkxP Q0sgKHR5cGUpICE9IE5VTEwpOwogKwotKyAgICAgIHJldHZhbCA9IGxvb2t1cF9ibG9ja19zeW1i b2wgKFRZUEVfTU9EVUxFX0JMT0NLICh0eXBlKSwgbmFtZSwKLSsJCQkJICAgIGxpbmthZ2VfbmFt ZSwgZG9tYWluKTsKKysgICAgICByZXR2YWwgPSBsb29rdXBfYmxvY2tfc3ltYm9sIChUWVBFX01P RFVMRV9CTE9DSyAodHlwZSksIG5hbWUsIGRvbWFpbik7CiArICAgICAgaWYgKHJldHZhbCkKICsJ cmV0dXJuIHJldHZhbDsKICsgICAgfQpAQCAtNDM5OCw3ICs1NzMzLDcgQEAgaW5kZXggYjkxNGI0 OS4uNzliNDZkMiAxMDA2NDQKICAvKiBUaGlzIGlzIGRlY2xhcmVkIGluIGMtbGFuZy5oIGJ1dCBp dCBpcyBzaWxseSB0byBpbXBvcnQgdGhhdCBmaWxlIGZvciB3aGF0CiAgICAgaXMgYWxyZWFkeSBq dXN0IGEgaGFjay4gKi8KICBleHRlcm4gaW50IGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAq LCBzdHJ1Y3QgdWlfZmlsZSAqLAotQEAgLTMzMyw3ICszNzcsNyBAQCBjb25zdCBzdHJ1Y3QgbGFu Z3VhZ2VfZGVmbiBmX2xhbmd1YWdlX2RlZm4gPQorQEAgLTMzMyw3ICszNzUsNyBAQCBjb25zdCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBmX2xhbmd1YWdlX2RlZm4gPQogICAgY192YWx1ZV9wcmludCwJ CS8qIEZJWE1FICovCiAgICBOVUxMLAkJCQkvKiBMYW5ndWFnZSBzcGVjaWZpYyBza2lwX3RyYW1w b2xpbmUgKi8KICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAJLyogbmFtZV9vZl90aGlzICov CkBAIC01MDM4LDQxMiArNjM3Myw2IEBAIGluZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAwNjQ0CiAg c2V0IGNvbXBsYWludHMgMQogIAogIGIgaW50ZXJuYWxfZXJyb3IKLWRpZmYgLS1naXQgYS9nZGIv Z2Ric2VydmVyL2xpbnV4LWkzODYtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWkzODYtbG93 LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iOTVjMWIxCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWkzODYtbG93LmMKLUBAIC0wLDAgKzEs MjEwIEBACi0rLyogR05VL0xpbnV4L2kzODYgc3BlY2lmaWMgbG93IGxldmVsIGludGVyZmFjZSwg Zm9yIHRoZSByZW1vdGUgc2VydmVyIGZvciBHREIuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LCAx OTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDA0LCAyMDA1LCAyMDA2LAotKyAg IDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAic2VydmVyLmgiCi0rI2luY2x1ZGUgImxpbnV4 LWxvdy5oIgotKyNpbmNsdWRlICJpMzg3LWZwLmgiCi0rCi0rI2luY2x1ZGUgImdkYl9wcm9jX3Nl cnZpY2UuaCIKLSsKLSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKwotKyNpZmRlZiBIQVZFX1NZ U19SRUdfSAotKyNpbmNsdWRlIDxzeXMvcmVnLmg+Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBQVFJB Q0VfR0VUX1RIUkVBRF9BUkVBCi0rI2RlZmluZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIDI1Ci0r I2VuZGlmCi0rCi0rLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHJlZy1pMzg2LWxp bnV4LmMuICAqLwotK3ZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eCAodm9pZCk7Ci0rCi0r Ci0rLyogVGhpcyBtb2R1bGUgb25seSBzdXBwb3J0cyBhY2Nlc3MgdG8gdGhlIGdlbmVyYWwgcHVy cG9zZSByZWdpc3RlcnMuICAqLwotKwotKyNkZWZpbmUgaTM4Nl9udW1fcmVncyAxNgotKwotKy8q IFRoaXMgc3R1ZmYgY29tZXMgZnJvbSBpMzg2LWxpbnV4LW5hdC5jLiAgKi8KLSsKLSsvKiBNYXBw aW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2Vy JwotKyAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgYXJyYXkgbGF5b3V0LiAgKi8KLStzdGF0 aWMgaW50IGkzODZfcmVnbWFwW10gPSAKLSt7Ci0rICBFQVggKiA0LCBFQ1ggKiA0LCBFRFggKiA0 LCBFQlggKiA0LAotKyAgVUVTUCAqIDQsIEVCUCAqIDQsIEVTSSAqIDQsIEVESSAqIDQsCi0rICBF SVAgKiA0LCBFRkwgKiA0LCBDUyAqIDQsIFNTICogNCwKLSsgIERTICogNCwgRVMgKiA0LCBGUyAq IDQsIEdTICogNAotK307Ci0rCi0rLyogQ2FsbGVkIGJ5IGxpYnRocmVhZF9kYi4gICovCi0rCi0r cHNfZXJyX2UKLStwc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxl ICpwaCwgCi0rCQkgICAgbHdwaWRfdCBsd3BpZCwgaW50IGlkeCwgdm9pZCAqKmJhc2UpCi0rewot KyAgdW5zaWduZWQgaW50IGRlc2NbNF07Ci0rCi0rICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUX1RI UkVBRF9BUkVBLCBsd3BpZCwKLSsJICAgICAgKHZvaWQgKikgaWR4LCAodW5zaWduZWQgbG9uZykg JmRlc2MpIDwgMCkKLSsgICAgcmV0dXJuIFBTX0VSUjsKLSsKLSsgICooaW50ICopYmFzZSA9IGRl c2NbMV07Ci0rICByZXR1cm4gUFNfT0s7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStpMzg2X2Nhbm5v dF9zdG9yZV9yZWdpc3RlciAoaW50IHJlZ25vKQotK3sKLSsgIHJldHVybiAocmVnbm8gPj0gaTM4 Nl9udW1fcmVncyk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStpMzg2X2Nhbm5vdF9mZXRjaF9yZWdp c3RlciAoaW50IHJlZ25vKQotK3sKLSsgIHJldHVybiAocmVnbm8gPj0gaTM4Nl9udW1fcmVncyk7 Ci0rfQotKwotKwotKyNpZmRlZiBIQVZFX1BUUkFDRV9HRVRSRUdTCi0rI2luY2x1ZGUgPHN5cy9w cm9jZnMuaD4KLSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKwotK3N0YXRpYyB2b2lkCi0raTM4 Nl9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1ZikKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9 IDA7IGkgPCBpMzg2X251bV9yZWdzOyBpKyspCi0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGksICgo Y2hhciAqKSBidWYpICsgaTM4Nl9yZWdtYXBbaV0pOwotKwotKyAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lICgib3JpZ19lYXgiLCAoKGNoYXIgKikgYnVmKSArIE9SSUdfRUFYICogNCk7Ci0rfQot KwotK3N0YXRpYyB2b2lkCi0raTM4Nl9zdG9yZV9ncmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0r ewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgaTM4Nl9udW1fcmVnczsgaSsrKQot KyAgICBzdXBwbHlfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgaTM4Nl9yZWdtYXBbaV0p OwotKwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJvcmlnX2VheCIsICgoY2hhciAqKSBi dWYpICsgT1JJR19FQVggKiA0KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpMzg2X2ZpbGxfZnBy ZWdzZXQgKHZvaWQgKmJ1ZikKLSt7Ci0rICBpMzg3X2NhY2hlX3RvX2ZzYXZlIChidWYpOwotK30K LSsKLStzdGF0aWMgdm9pZAotK2kzODZfc3RvcmVfZnByZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikK LSt7Ci0rICBpMzg3X2ZzYXZlX3RvX2NhY2hlIChidWYpOwotK30KLSsKLStzdGF0aWMgdm9pZAot K2kzODZfZmlsbF9mcHhyZWdzZXQgKHZvaWQgKmJ1ZikKLSt7Ci0rICBpMzg3X2NhY2hlX3RvX2Z4 c2F2ZSAoYnVmKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpMzg2X3N0b3JlX2ZweHJlZ3NldCAo Y29uc3Qgdm9pZCAqYnVmKQotK3sKLSsgIGkzODdfZnhzYXZlX3RvX2NhY2hlIChidWYpOwotK30K LSsKLSsjZW5kaWYgLyogSEFWRV9QVFJBQ0VfR0VUUkVHUyAqLwotKwotK3N0cnVjdCByZWdzZXRf aW5mbyB0YXJnZXRfcmVnc2V0c1tdID0gewotKyNpZmRlZiBIQVZFX1BUUkFDRV9HRVRSRUdTCi0r ICB7IFBUUkFDRV9HRVRSRUdTLCBQVFJBQ0VfU0VUUkVHUywgc2l6ZW9mIChlbGZfZ3JlZ3NldF90 KSwKLSsgICAgR0VORVJBTF9SRUdTLAotKyAgICBpMzg2X2ZpbGxfZ3JlZ3NldCwgaTM4Nl9zdG9y ZV9ncmVnc2V0IH0sCi0rIyBpZmRlZiBIQVZFX1BUUkFDRV9HRVRGUFhSRUdTCi0rICB7IFBUUkFD RV9HRVRGUFhSRUdTLCBQVFJBQ0VfU0VURlBYUkVHUywgc2l6ZW9mIChlbGZfZnB4cmVnc2V0X3Qp LAotKyAgICBFWFRFTkRFRF9SRUdTLAotKyAgICBpMzg2X2ZpbGxfZnB4cmVnc2V0LCBpMzg2X3N0 b3JlX2ZweHJlZ3NldCB9LAotKyMgZW5kaWYKLSsgIHsgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNF X1NFVEZQUkVHUywgc2l6ZW9mIChlbGZfZnByZWdzZXRfdCksCi0rICAgIEZQX1JFR1MsCi0rICAg IGkzODZfZmlsbF9mcHJlZ3NldCwgaTM4Nl9zdG9yZV9mcHJlZ3NldCB9LAotKyNlbmRpZiAvKiBI QVZFX1BUUkFDRV9HRVRSRUdTICovCi0rICB7IDAsIDAsIC0xLCAtMSwgTlVMTCwgTlVMTCB9Ci0r fTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBpMzg2X2JyZWFrcG9pbnRbXSA9IHsg MHhDQyB9OwotKyNkZWZpbmUgaTM4Nl9icmVha3BvaW50X2xlbiAxCi0rCi0rZXh0ZXJuIGludCBk ZWJ1Z190aHJlYWRzOwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStpMzg2X2dldF9wYyAoKQotK3sK LSsgIHVuc2lnbmVkIGxvbmcgcGM7Ci0rCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJl aXAiLCAmcGMpOwotKwotKyAgaWYgKGRlYnVnX3RocmVhZHMpCi0rICAgIGZwcmludGYgKHN0ZGVy ciwgInN0b3AgcGMgKGJlZm9yZSBhbnkgZGVjcmVtZW50KSBpcyAlMDhseFxuIiwgcGMpOwotKyAg cmV0dXJuIHBjOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2kzODZfc2V0X3BjIChDT1JFX0FERFIg bmV3cGMpCi0rewotKyAgaWYgKGRlYnVnX3RocmVhZHMpCi0rICAgIGZwcmludGYgKHN0ZGVyciwg InNldCBwYyB0byAlMDhseFxuIiwgKGxvbmcpIG5ld3BjKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lICgiZWlwIiwgJm5ld3BjKTsKLSt9Ci0rCi0rc3RhdGljIGludAotK2kzODZfYnJlYWtw b2ludF9hdCAoQ09SRV9BRERSIHBjKQotK3sKLSsgIHVuc2lnbmVkIGNoYXIgYzsKLSsKLSsgIHJl YWRfaW5mZXJpb3JfbWVtb3J5IChwYywgJmMsIDEpOwotKyAgaWYgKGMgPT0gMHhDQykKLSsgICAg cmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RydWN0IGxpbnV4X3RhcmdldF9v cHMgdGhlX2xvd190YXJnZXQgPSB7Ci0rICBpbml0X3JlZ2lzdGVyc19pMzg2X2xpbnV4LAotKyAg aTM4Nl9udW1fcmVncywKLSsgIGkzODZfcmVnbWFwLAotKyAgaTM4Nl9jYW5ub3RfZmV0Y2hfcmVn aXN0ZXIsCi0rICBpMzg2X2Nhbm5vdF9zdG9yZV9yZWdpc3RlciwKLSsgIGkzODZfZ2V0X3BjLAot KyAgaTM4Nl9zZXRfcGMsCi0rICBpMzg2X2JyZWFrcG9pbnQsCi0rICBpMzg2X2JyZWFrcG9pbnRf bGVuLAotKyAgTlVMTCwKLSsgIDEsCi0rICBpMzg2X2JyZWFrcG9pbnRfYXQsCi0rICBOVUxMLAot KyAgTlVMTCwKLSsgIE5VTEwsCi0rICBOVUxMLAotKyAgTlVMTCwKLSsgIE5VTEwsCi0rfTsKLWRp ZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni02NC1sb3cuYyBiL2dkYi9nZGJzZXJ2 ZXIvbGludXgteDg2LTY0LWxvdy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uYjgyMTNmNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC14ODYt NjQtbG93LmMKLUBAIC0wLDAgKzEsMTg0IEBACi0rLyogR05VL0xpbnV4L3g4Ni02NCBzcGVjaWZp YyBsb3cgbGV2ZWwgaW50ZXJmYWNlLCBmb3IgdGhlIHJlbW90ZSBzZXJ2ZXIKLSsgICBmb3IgR0RC LgotKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg MjAwOQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCi0rCi0rI2luY2x1ZGUgInNlcnZlci5oIgotKyNpbmNsdWRlICJsaW51eC1sb3cuaCIK LSsjaW5jbHVkZSAiaTM4Ny1mcC5oIgotKwotKyNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNlLmgi Ci0rCi0rLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHJlZy14ODYtNjQtbGludXgu Yy4gICovCi0rdm9pZCBpbml0X3JlZ2lzdGVyc194ODZfNjRfbGludXggKHZvaWQpOwotKwotKyNp bmNsdWRlIDxzeXMvcmVnLmg+Ci0rI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSsjaW5jbHVkZSA8 c3lzL3B0cmFjZS5oPgotKwotKy8qIFRoaXMgZGVmaW5pdGlvbiBjb21lcyBmcm9tIHByY3RsLmgs IGJ1dCBzb21lIGtlcm5lbHMgbWF5IG5vdCBoYXZlIGl0LiAgKi8KLSsjaWZuZGVmIFBUUkFDRV9B UkNIX1BSQ1RMCi0rI2RlZmluZSBQVFJBQ0VfQVJDSF9QUkNUTCAgICAgIDMwCi0rI2VuZGlmCi0r Ci0rLyogVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBjb21lIGZyb20gcHJjdGwuaCwgYnV0IG1h eSBiZSBhYnNlbnQKLSsgICBmb3IgY2VydGFpbiBjb25maWd1cmF0aW9ucy4gICovCi0rI2lmbmRl ZiBBUkNIX0dFVF9GUwotKyNkZWZpbmUgQVJDSF9TRVRfR1MgMHgxMDAxCi0rI2RlZmluZSBBUkNI X1NFVF9GUyAweDEwMDIKLSsjZGVmaW5lIEFSQ0hfR0VUX0ZTIDB4MTAwMwotKyNkZWZpbmUgQVJD SF9HRVRfR1MgMHgxMDA0Ci0rI2VuZGlmCi0rCi0rc3RhdGljIGludCB4ODZfNjRfcmVnbWFwW10g PSB7Ci0rICBSQVggKiA4LCBSQlggKiA4LCBSQ1ggKiA4LCBSRFggKiA4LAotKyAgUlNJICogOCwg UkRJICogOCwgUkJQICogOCwgUlNQICogOCwKLSsgIFI4ICogOCwgUjkgKiA4LCBSMTAgKiA4LCBS MTEgKiA4LAotKyAgUjEyICogOCwgUjEzICogOCwgUjE0ICogOCwgUjE1ICogOCwKLSsgIFJJUCAq IDgsIEVGTEFHUyAqIDgsIENTICogOCwgU1MgKiA4LCAKLSsgIERTICogOCwgRVMgKiA4LCBGUyAq IDgsIEdTICogOCwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSsgIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x LCAtMSwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCi0rICBPUklHX1JB WCAqIDgKLSt9OwotKwotKyNkZWZpbmUgWDg2XzY0X05VTV9HUkVHUyAoc2l6ZW9mKHg4Nl82NF9y ZWdtYXApL3NpemVvZihpbnQpKQotKwotKy8qIENhbGxlZCBieSBsaWJ0aHJlYWRfZGIuICAqLwot KwotK3BzX2Vycl9lCi0rcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hh bmRsZSAqcGgsCi0rICAgICAgICAgICAgICAgICAgICBsd3BpZF90IGx3cGlkLCBpbnQgaWR4LCB2 b2lkICoqYmFzZSkKLSt7Ci0rICBzd2l0Y2ggKGlkeCkKLSsgICAgewotKyAgICBjYXNlIEZTOgot KyAgICAgIGlmIChwdHJhY2UgKFBUUkFDRV9BUkNIX1BSQ1RMLCBsd3BpZCwgYmFzZSwgQVJDSF9H RVRfRlMpID09IDApCi0rCXJldHVybiBQU19PSzsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBH UzoKLSsgICAgICBpZiAocHRyYWNlIChQVFJBQ0VfQVJDSF9QUkNUTCwgbHdwaWQsIGJhc2UsIEFS Q0hfR0VUX0dTKSA9PSAwKQotKwlyZXR1cm4gUFNfT0s7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRl ZmF1bHQ6Ci0rICAgICAgcmV0dXJuIFBTX0JBREFERFI7Ci0rICAgIH0KLSsgIHJldHVybiBQU19F UlI7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0reDg2XzY0X2ZpbGxfZ3JlZ3NldCAodm9pZCAqYnVm KQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFg4Nl82NF9OVU1fR1JFR1M7 IGkrKykKLSsgICAgaWYgKHg4Nl82NF9yZWdtYXBbaV0gIT0gLTEpCi0rICAgICAgY29sbGVjdF9y ZWdpc3RlciAoaSwgKChjaGFyICopIGJ1ZikgKyB4ODZfNjRfcmVnbWFwW2ldKTsKLSt9Ci0rCi0r c3RhdGljIHZvaWQKLSt4ODZfNjRfc3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotK3sK LSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFg4Nl82NF9OVU1fR1JFR1M7IGkrKykK LSsgICAgaWYgKHg4Nl82NF9yZWdtYXBbaV0gIT0gLTEpCi0rICAgICAgc3VwcGx5X3JlZ2lzdGVy IChpLCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9yZWdtYXBbaV0pOwotK30KLSsKLStzdGF0aWMg dm9pZAotK3g4Nl82NF9maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCi0rewotKyAgaTM4N19jYWNo ZV90b19meHNhdmUgKGJ1Zik7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0reDg2XzY0X3N0b3JlX2Zw cmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0rewotKyAgaTM4N19meHNhdmVfdG9fY2FjaGUgKGJ1 Zik7Ci0rfQotKwotK3N0cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1tdID0gewotKyAg eyBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NFVFJFR1MsIHNpemVvZiAoZWxmX2dyZWdzZXRfdCks Ci0rICAgIEdFTkVSQUxfUkVHUywKLSsgICAgeDg2XzY0X2ZpbGxfZ3JlZ3NldCwgeDg2XzY0X3N0 b3JlX2dyZWdzZXQgfSwKLSsgIHsgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNFX1NFVEZQUkVHUywg c2l6ZW9mIChlbGZfZnByZWdzZXRfdCksCi0rICAgIEZQX1JFR1MsCi0rICAgIHg4Nl82NF9maWxs X2ZwcmVnc2V0LCB4ODZfNjRfc3RvcmVfZnByZWdzZXQgfSwKLSsgIHsgMCwgMCwgLTEsIC0xLCBO VUxMLCBOVUxMIH0KLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHg4Nl82NF9i cmVha3BvaW50W10gPSB7IDB4Q0MgfTsKLSsjZGVmaW5lIHg4Nl82NF9icmVha3BvaW50X2xlbiAx Ci0rICAgICAgICAgICAgICAgIAotK2V4dGVybiBpbnQgZGVidWdfdGhyZWFkczsKLSsKLStzdGF0 aWMgQ09SRV9BRERSCi0reDg2XzY0X2dldF9wYyAoKQotK3sKLSsgIHVuc2lnbmVkIGxvbmcgcGM7 Ci0rCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJyaXAiLCAmcGMpOwotKwotKyAgaWYg KGRlYnVnX3RocmVhZHMpCi0rICAgIGZwcmludGYgKHN0ZGVyciwgInN0b3AgcGMgKGJlZm9yZSBh bnkgZGVjcmVtZW50KSBpcyAlMDhseFxuIiwgcGMpOwotKyAgcmV0dXJuIHBjOwotK30KLSsKLStz dGF0aWMgdm9pZAotK3g4Nl82NF9zZXRfcGMgKENPUkVfQUREUiBuZXdwYykKLSt7Ci0rICBpZiAo ZGVidWdfdGhyZWFkcykKLSsgICAgZnByaW50ZiAoc3RkZXJyLCAic2V0IHBjIHRvICUwOGx4XG4i LCAobG9uZykgbmV3cGMpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJyaXAiLCAmbmV3 cGMpOwotK30KLSsKLStzdGF0aWMgaW50Ci0reDg2XzY0X2JyZWFrcG9pbnRfYXQgKENPUkVfQURE UiBwYykKLSt7Ci0rICB1bnNpZ25lZCBjaGFyIGM7Ci0rCi0rICByZWFkX2luZmVyaW9yX21lbW9y eSAocGMsICZjLCAxKTsKLSsgIGlmIChjID09IDB4Q0MpCi0rICAgIHJldHVybiAxOwotKwotKyAg cmV0dXJuIDA7Ci0rfQotKwotK3N0cnVjdCBsaW51eF90YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0 ID0gewotKyAgaW5pdF9yZWdpc3RlcnNfeDg2XzY0X2xpbnV4LAotKyAgLTEsCi0rICBOVUxMLAot KyAgTlVMTCwKLSsgIE5VTEwsCi0rICB4ODZfNjRfZ2V0X3BjLAotKyAgeDg2XzY0X3NldF9wYywK LSsgIHg4Nl82NF9icmVha3BvaW50LCAgCi0rICB4ODZfNjRfYnJlYWtwb2ludF9sZW4sCi0rICBO VUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKyAgMSwKLSsgIHg4Nl82NF9i cmVha3BvaW50X2F0LAotKyAgTlVMTCwKLSsgIE5VTEwsCi0rICBOVUxMLAotKyAgTlVMTCwKLSsg IE5VTEwsCi0rICBOVUxMLAotK307CiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnRocmVhZC5oIGIvZ2Ri L2dkYnRocmVhZC5oCiBpbmRleCBjZDI0ZWFmLi4xMTlhZjdkIDEwMDY0NAogLS0tIGEvZ2RiL2dk YnRocmVhZC5oCkBAIC01NDcwLDcgKzYzOTksNyBAQCBpbmRleCBjZDI0ZWFmLi4xMTlhZjdkIDEw MDY0NAogICAgIG9uY2UgZm9yIGVhY2gga25vd24gdGhyZWFkLiAgKi8KICB0eXBlZGVmIGludCAo KnRocmVhZF9jYWxsYmFja19mdW5jKSAoc3RydWN0IHRocmVhZF9pbmZvICosIHZvaWQgKik7CiBk aWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggMTZiMzRj YS4uYjVlNjExMCAxMDA2NDQKK2luZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAtLS0gYS9n ZGIvZ2RidHlwZXMuYwogKysrIGIvZ2RiL2dkYnR5cGVzLmMKIEBAIC0zOSw2ICszOSw5IEBACkBA IC01ODMyLDcgKzY3NjEsNyBAQCBpbmRleCAxNmIzNGNhLi5iNWU2MTEwIDEwMDY0NAogICAgcmV0 dXJuIHR5cGU7CiAgfQogIAotQEAgLTI4ODksMzMgKzMwNTEsNDIgQEAgdHlwZV9wYWlyX2VxIChj b25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitAQCAtMjk4NiwzMyAr MzE0OCw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lk ICppdGVtX3JocykKICB9CiAgCiAgLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBj b3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsKQEAgLTU4OTAsNyArNjgxOSw3IEBAIGluZGV4IDE2 YjM0Y2EuLmI1ZTYxMTAgMTAwNjQ0CiAgICAgIHJldHVybiB0eXBlOwogIAogICAgLyogVGhpcyB0 eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIgb2JqZmlsZXM7 Ci1AQCAtMjkzMCw4ICszMTAxLDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorQEAgLTMwMjcsOCArMzE5OCwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIG5ld190eXBlID0gYWxsb2NfdHlwZV9hcmNo IChnZXRfdHlwZV9hcmNoICh0eXBlKSk7CiAgCiAgICAvKiBXZSBtdXN0IGFkZCB0aGUgbmV3IHR5 cGUgdG8gdGhlIGhhc2ggdGFibGUgaW1tZWRpYXRlbHksIGluIGNhc2UKQEAgLTU5MDMsNyArNjgz Miw3IEBAIGluZGV4IDE2YjM0Y2EuLmI1ZTYxMTAgMTAwNjQ0CiAgICBzdG9yZWQtPm9sZCA9IHR5 cGU7CiAgICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOwogICAgKnNsb3QgPSBzdG9yZWQ7Ci1AQCAt Mjk0Miw2ICszMTE1LDE5IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorQEAgLTMwMzksNiArMzIxMiwxOSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIFRZUEVfT0JKRklMRV9PV05FRCAobmV3X3R5cGUpID0g MDsKICAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlw ZSk7CiAgCkBAIC01OTIzLDcgKzY4NTIsNyBAQCBpbmRleCAxNmIzNGNhLi5iNWU2MTEwIDEwMDY0 NAogICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCiAgICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0g eHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CiAgICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkp Ci1AQCAtMjk1MCwxMiArMzEzNiw0NSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKK0BAIC0zMDQ3LDEyICszMjMzLDQ1IEBAIGNvcHlfdHlwZV9yZWN1cnNp dmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3 X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7CiAgICBUWVBFX0xFTkdUSCAobmV3 X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIApAQCAtNTk2OSw3ICs2ODk4LDcgQEAgaW5k ZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2NDQKICAgICAgICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUp ID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKICAgICAgICBmb3IgKGkgPSAwOyBp IDwgbmZpZWxkczsgaSsrKQogIAl7Ci1AQCAtMjk2NCw4ICszMTgzLDggQEAgY29weV90eXBlX3Jl Y3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzA2MSw4ICszMjgwLDggQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCSAgVFlQRV9G SUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGkp OwogIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9U WVBFIChuZXdfdHlwZSwgaSkKQEAgLTU5ODAsNyArNjkwOSw3IEBAIGluZGV4IDE2YjM0Y2EuLmI1 ZTYxMTAgMTAwNjQ0CiAgCSAgaWYgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpCiAgCSAgICBU WVBFX0ZJRUxEX05BTUUgKG5ld190eXBlLCBpKSA9IAogIAkgICAgICB4c3RyZHVwIChUWVBFX0ZJ RUxEX05BTUUgKHR5cGUsIGkpKTsKLUBAIC0yOTkyLDI0ICszMjExLDc1IEBAIGNvcHlfdHlwZV9y ZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTMwODksMjQgKzMzMDgsNzUg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCX0KICAg ICAgfQogIApAQCAtNjA2Miw3ICs2OTkxLDcgQEAgaW5kZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2 NDQKICAgIC8qIE1heWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KICAKICAgICAgIE5P VEUgZHJvdy8yMDA1LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNpZmljIGJpdHMg bGlrZQotQEAgLTMwMjcsNiArMzI5NywxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMTI0LDYgKzMzOTQsMTcgQEAgY29weV90eXBlX3JlY3Vy c2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICByZXR1cm4gbmV3X3R5cGU7CiAgfQog IApAQCAtNjA4MCwxMyArNzAwOSwyNSBAQCBpbmRleCAxNmIzNGNhLi5iNWU2MTEwIDEwMDY0NAog IC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRl ciAmIHJlZmVyZW5jZQogICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgogICAgIAotQEAgLTMw NDksNiArMzMzMCwxOTkgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BA IC0zMTQ2LDYgKzM0MjcsMjExIEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUp CiAgICByZXR1cm4gbmV3X3R5cGU7CiAgfQogIAogKy8qIENhbGxiYWNrIHR5cGUgZm9yIG1haW5f dHlwZV9jcmF3bC4gICovCiArdHlwZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jhd2xfaXRlcikgKHN0 cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKTsKICsKKysjaWYgMAorKworKy8qIEFsbG9jYXRl IGEgaGFzaCB0YWJsZSB3aGljaCBpcyB1c2VkIHdoZW4gZnJlZWluZyBhIHN0cnVjdCB0eXBlLiAg Ki8KKysKKytzdGF0aWMgaHRhYl90CisrY3JlYXRlX2RlbGV0ZWRfdHlwZXNfaGFzaCAodm9pZCkK Kyt7CisrICByZXR1cm4gaHRhYl9jcmVhdGUgKDEsIGh0YWJfaGFzaF9wb2ludGVyLCBodGFiX2Vx X3BvaW50ZXIsIE5VTEwpOworK30KKysKKysjZW5kaWYKKysKICsvKiBJdGVyYXRlIGFsbCBtYWlu X3R5cGUgc3RydWN0dXJlcyByZWFjaGFibGUgdGhyb3VnaCBhbnkgYHN0cnVjdCB0eXBlIConIGZy b20KICsgICBUWVBFLiAgSVRFUiB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciBvbmUgdHlwZSBvZiBl YWNoIG1haW5fdHlwZSwgdXNlCiArICAgVFlQRV9DSEFJTiB0cmF2ZXJzYWwgdG8gZmluZCBhbGwg dGhlIHR5cGUgaW5zdGFuY2VzLiAgSVRFUiBpcyBiZWluZyBjYWxsZWQKQEAgLTYyODAsNyArNzIy MSw3IEBAIGluZGV4IDE2YjM0Y2EuLmI1ZTYxMTAgMTAwNjQ0CiAgCiAgLyogSGVscGVyIGZ1bmN0 aW9ucyB0byBpbml0aWFsaXplIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0eXBlcy4gICovCiAgCi1A QCAtMzUzOSw2ICs0MDEzLDExIEBAIHZvaWQKK0BAIC0zNjM2LDYgKzQxMjIsMTEgQEAgdm9pZAog IF9pbml0aWFsaXplX2dkYnR5cGVzICh2b2lkKQogIHsKICAgIGdkYnR5cGVzX2RhdGEgPSBnZGJh cmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0X2luaXQpOwpAQCAtNjI5 Myw3ICs3MjM0LDcgQEAgaW5kZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2NDQKICAKICAgIGFkZF9z ZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1 ZywgXygiXAogZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKLWlu ZGV4IDhlNzNjYTAuLjg1ODg4ZTEgMTAwNjQ0CitpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0 NAogLS0tIGEvZ2RiL2dkYnR5cGVzLmgKICsrKyBiL2dkYi9nZGJ0eXBlcy5oCiBAQCAtMTM4LDYg KzEzOCw4IEBAIGVudW0gdHlwZV9jb2RlCkBAIC02NDYyLDcgKzc0MDMsMjEgQEAgaW5kZXggOGU3 M2NhMC4uODU4ODhlMSAxMDA2NDQKICAgIH0gdHlwZV9zcGVjaWZpYzsKICB9OwogIAotQEAgLTkw MCw5ICs5NzUsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3Qg dHlwZSAqKTsKK0BAIC04MzksMTMgKzkxNCw2IEBAIHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZQor ICAgICBpbnQgaXNfZHluYW1pYyA6IDI7CisgICB9OworIAorLS8qIFN0cnVjdCB1c2VkIGluIGNv bXB1dGluZyB2aXJ0dWFsIGJhc2UgbGlzdCAqLworLXN0cnVjdCB2YmFzZQorLSAgeworLSAgICBz dHJ1Y3QgdHlwZSAqdmJhc2V0eXBlOwkvKiBwb2ludGVyIHRvIHZpcnR1YWwgYmFzZSAqLworLSAg ICBzdHJ1Y3QgdmJhc2UgKm5leHQ7CQkvKiBuZXh0IGluIGNoYWluICovCistICB9OworLQorIC8q IFN0cnVjdCB1c2VkIGZvciByYW5raW5nIGEgZnVuY3Rpb24gZm9yIG92ZXJsb2FkIHJlc29sdXRp b24gKi8KKyBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IKKyAgIHsKK0BAIC05MDAsOSArOTY4LDkgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2Rl ZmluZSBUWVBFX1BPSU5URVJfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cG9pbnRlcl90eXBl CiAgI2RlZmluZSBUWVBFX1JFRkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5yZWZl cmVuY2VfdHlwZQogICNkZWZpbmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRoaXN0eXBlKS0+Y2hh aW4KQEAgLTY0NzUsNyArNzQzMCw3IEBAIGluZGV4IDhlNzNjYTAuLjg1ODg4ZTEgMTAwNjQ0CiAg ICAgY2FsbHMgY2hlY2tfdHlwZWRlZiwgVFlQRV9MRU5HVEggKFZBTFVFX1RZUEUgKFgpKSBpcyBz YWZlLiAgKi8KICAjZGVmaW5lIFRZUEVfTEVOR1RIKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5sZW5n dGgKICAvKiBOb3RlIHRoYXQgVFlQRV9DT0RFIGNhbiBiZSBUWVBFX0NPREVfVFlQRURFRiwgc28g aWYgeW91IHdhbnQgdGhlIHJlYWwKLUBAIC05MTEsMTUgKzk4NiwyNiBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05MTEsMTUgKzk3OSwy NiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsK ICAjZGVmaW5lIFRZUEVfTkZJRUxEUyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUp LT5uZmllbGRzCiAgI2RlZmluZSBUWVBFX0ZJRUxEUyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUo dGhpc3R5cGUpLT5mbGRzX2JuZHMuZmllbGRzCiAgI2RlZmluZSBUWVBFX1RFTVBMQVRFX0FSR1Mo dGhpc3R5cGUpIFRZUEVfQ1BMVVNfU1BFQ0lGSUModGhpc3R5cGUpLT50ZW1wbGF0ZV9hcmdzCkBA IC02NTA0LDcgKzc0NTksNyBAQCBpbmRleCA4ZTczY2EwLi44NTg4OGUxIDEwMDY0NAogIAogIC8q IE1vdG8tc3BlY2lmaWMgc3R1ZmYgZm9yIEZPUlRSQU4gYXJyYXlzICovCiAgCi1AQCAtOTI4LDEx ICsxMDE0LDIzIEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0 eXBlICopOworQEAgLTkyOCwxMSArMTAwNywyMyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9V TkRfSVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAogICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5F RChUWVBFX0lOREVYX1RZUEUoYXJyYXl0eXBlKSkKICAKQEAgLTY1MjksNyArNzQ4NCw3IEBAIGlu ZGV4IDhlNzNjYTAuLjg1ODg4ZTEgMTAwNjQ0CiAgCiAgLyogQysrICovCiAgCi1AQCAtOTYxLDYg KzEwNTksNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlw ZSAqKTsKK0BAIC05NjEsNiArMTA1Miw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4 X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUgVFlQRV9HTkFUX1NQRUNJRklDKHRoaXN0 eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMuZ25hdF9zdHVmZgog ICNkZWZpbmUgVFlQRV9ERVNDUklQVElWRV9UWVBFKHRoaXN0eXBlKSBUWVBFX0dOQVRfU1BFQ0lG SUModGhpc3R5cGUpLT5kZXNjcmlwdGl2ZV90eXBlCiAgI2RlZmluZSBUWVBFX0NBTExJTkdfQ09O VkVOVElPTih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT50eXBlX3NwZWNpZmlj LmNhbGxpbmdfY29udmVudGlvbgpAQCAtNjUzNyw3ICs3NDkyLDcgQEAgaW5kZXggOGU3M2NhMC4u ODU4ODhlMSAxMDA2NDQKICAjZGVmaW5lIFRZUEVfQkFTRUNMQVNTKHRoaXN0eXBlLGluZGV4KSBU WVBFX0ZJRUxEX1RZUEUodGhpc3R5cGUsIGluZGV4KQogICNkZWZpbmUgVFlQRV9OX0JBU0VDTEFT U0VTKHRoaXN0eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+bl9iYXNlY2xhc3Nl cwogICNkZWZpbmUgVFlQRV9CQVNFQ0xBU1NfTkFNRSh0aGlzdHlwZSxpbmRleCkgVFlQRV9GSUVM RF9OQU1FKHRoaXN0eXBlLCBpbmRleCkKLUBAIC05NzksNyArMTA3OCw2IEBAIGV4dGVybiB2b2lk IGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTk3OSw3ICsxMDcx LDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7 CiAgI2RlZmluZSBGSUVMRF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuYml0cG9zKQog ICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBo eXNuYW1lKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXNmbGQpICgodGhpc2Zs ZCkubG9jLnBoeXNhZGRyKQpAQCAtNjU0NSw3ICs3NTAwLDcgQEAgaW5kZXggOGU3M2NhMC4uODU4 ODhlMSAxMDA2NDQKICAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQT1ModGhpc2ZsZCwgYml0cG9zKQkJ CVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9CSVRQT1Ms CQlcCiAgICAgRklFTERfQklUUE9TICh0aGlzZmxkKSA9IChiaXRwb3MpKQotQEAgLTk4OSw5ICsx MDg3LDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUg Kik7CitAQCAtOTg5LDkgKzEwODAsNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90 eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlTQUREUih0aGlzZmxk LCBhZGRyKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lO RF9QSFlTQUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKHRoaXNmbGQpID0gKGFk ZHIpKQpAQCAtNjU1NSw3ICs3NTEwLDcgQEAgaW5kZXggOGU3M2NhMC4uODU4ODhlMSAxMDA2NDQK ICAjZGVmaW5lIEZJRUxEX0FSVElGSUNJQUwodGhpc2ZsZCkgKCh0aGlzZmxkKS5hcnRpZmljaWFs KQogICNkZWZpbmUgRklFTERfQklUU0laRSh0aGlzZmxkKSAoKHRoaXNmbGQpLmJpdHNpemUpCiAg Ci1AQCAtMTAwMiw3ICsxMDk3LDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydWN0IHR5cGUgKik7CitAQCAtMTAwMiw3ICsxMDkwLDYgQEAgZXh0ZXJuIHZvaWQgYWxs b2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBUWVBFX0ZJRUxE X0JJVFBPUyh0aGlzdHlwZSwgbikgRklFTERfQklUUE9TIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwg bikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzdHlwZSwgbikgRklF TERfU1RBVElDX1BIWVNOQU1FIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBU WVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNB RERSIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCkBAIC02NTYzLDcgKzc1MTgsNyBAQCBpbmRl eCA4ZTczY2EwLi44NTg4OGUxIDEwMDY0NAogICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklDSUFM KHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCiAg I2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQ RV9GSUVMRCh0aGlzdHlwZSxuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfUEFDS0VEKHRoaXN0eXBl LCBuKSAoRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKSE9MCkKLUBAIC0xMzMz LDYgKzE0MjcsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3Ry dWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKK0BAIC0xMzMzLDYgKzE0MjAsMTggQEAgZXh0ZXJu IHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5 cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAq bG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAg LTY1ODIsMTYgKzc1MzcsMTYgQEAgaW5kZXggOGU3M2NhMC4uODU4ODhlMSAxMDA2NDQKICBleHRl cm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHR5cGUgKiwKICAJCQkJCXN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9v a3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci1AQCAtMTM2 OSw2ICsxNDc1LDggQEAgZXh0ZXJuIGludCBnZXRfZGlzY3JldGVfYm91bmRzIChzdHJ1Y3QgdHlw ZSAqLCBMT05HRVNUICosIExPTkdFU1QgKik7CitAQCAtMTM3NSw2ICsxNDc0LDggQEAgZXh0ZXJu IGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOwog IAotIGV4dGVybiBpbnQgaXNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICop OworIGV4dGVybiBpbnQgaXNfdW5pcXVlX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3Qg dmFsdWUgKik7CiAgCiArZXh0ZXJuIHZvaWQgdHlwZV9tYXJrX3VzZWQgKHN0cnVjdCB0eXBlICp0 eXBlKTsKICsKICAvKiBPdmVybG9hZCByZXNvbHV0aW9uICovCiAgCiAgI2RlZmluZSBMRU5HVEhf TUFUQ0goYnYpICgoYnYpLT5yYW5rWzBdKQotQEAgLTE0MzEsMTAgKzE1MzksMTEgQEAgZXh0ZXJu IHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOworQEAgLTE0MzcsMTAg KzE1MzgsMTEgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBp bnQpOwogIAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC02NjA1LDIxICs3NTYwLDcyIEBAIGluZGV4IDhlNzNj YTAuLjg1ODg4ZTEgMTAwNjQ0CiArZXh0ZXJuIHZvaWQgZnJlZV9hbGxfdHlwZXMgKHZvaWQpOwog KwogICNlbmRpZiAvKiBHREJUWVBFU19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgt bmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwotaW5kZXggZmY4MzdmMi4uMTcxMDQ4NyAxMDA2 NDQKLS0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvaTM4Ni1saW51eC1uYXQu YwotQEAgLTY5Niw2ICs2OTYsMjEgQEAgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2ln bmVkIGxvbmcgbWFzaykKLSAgICAgfQotIH0KK2RpZmYgLS1naXQgYS9nZGIvZ251LXYzLWFiaS5j IGIvZ2RiL2dudS12My1hYmkuYworaW5kZXggNTMyMTQwMS4uYjE4ODJhMiAxMDA2NDQKKy0tLSBh L2dkYi9nbnUtdjMtYWJpLmMKKysrKyBiL2dkYi9nbnUtdjMtYWJpLmMKK0BAIC0yNiw2ICsyNiw3 IEBACisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisgI2lu Y2x1ZGUgInZhbHByaW50LmgiCisrI2luY2x1ZGUgImMtbGFuZy5oIgogIAotKy8qIFNlZSBpMzg2 X2RyX2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4Nl9saW51eF9kcl9z ZXRfY29udHJvbAotKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBhcyB0aGV5IHdvdWxk IG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoaTM4Nl9saW51eF9kcikuICAqLwotKwot K3N0YXRpYyB2b2lkCi0raTM4Nl9saW51eF9kcl9kZXRhY2ggKHZvaWQpCi0reworICNpbmNsdWRl ICJnZGJfYXNzZXJ0LmgiCisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKK0BAIC00NTYsMTAgKzQ1 Nyw4IEBAIGdudXYzX2ZpbmRfbWV0aG9kX2luIChzdHJ1Y3QgdHlwZSAqZG9tYWluLCBDT1JFX0FE RFIgdm9mZnNldCwKKyAJCSAgICAgIExPTkdFU1QgYWRqdXN0bWVudCkKKyB7CisgICBpbnQgaTsK Ky0gIGNvbnN0IGNoYXIgKnBoeXNuYW1lOworIAorICAgLyogU2VhcmNoIHRoaXMgY2xhc3MgZmly c3QuICAqLworLSAgcGh5c25hbWUgPSBOVUxMOworICAgaWYgKGFkanVzdG1lbnQgPT0gMCkKKyAg ICAgeworICAgICAgIGludCBsZW47CitAQCAtNTg3LDE1ICs1ODYsMjQgQEAgZ251djNfcHJpbnRf bWV0aG9kX3B0ciAoY29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzLAorIAl7CisgCSAgY2hhciAqZGVt YW5nbGVkX25hbWUgPSBjcGx1c19kZW1hbmdsZSAocGh5c25hbWUsCisgCQkJCQkJIERNR0xfQU5T SSB8IERNR0xfUEFSQU1TKTsKKy0JICBpZiAoZGVtYW5nbGVkX25hbWUgIT0gTlVMTCkKKysJICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICImdmlydHVhbCAiKTsKKysJICBpZiAoZGVtYW5nbGVk X25hbWUgPT0gTlVMTCkKKysJICAgIGZwdXRzX2ZpbHRlcmVkIChwaHlzbmFtZSwgc3RyZWFtKTsK KysJICBlbHNlCisgCSAgICB7CistCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiZ2 aXJ0dWFsICIpOworIAkgICAgICBmcHV0c19maWx0ZXJlZCAoZGVtYW5nbGVkX25hbWUsIHN0cmVh bSk7CisgCSAgICAgIHhmcmVlIChkZW1hbmdsZWRfbmFtZSk7CistCSAgICAgIHJldHVybjsKKyAJ ICAgIH0KKysJICByZXR1cm47CisgCX0KKyAgICAgfQorKyAgZWxzZSBpZiAocHRyX3ZhbHVlICE9 IDApCisrICAgIHsKKysgICAgICAvKiBGb3VuZCBhIG5vbi12aXJ0dWFsIGZ1bmN0aW9uOiBwcmlu dCBvdXQgdGhlIHR5cGUuICAqLworKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgiKCIsIHN0cmVhbSk7 CisrICAgICAgY19wcmludF90eXBlICh0eXBlLCAiIiwgc3RyZWFtLCAtMSwgMCk7CisrICAgICAg ZnB1dHNfZmlsdGVyZWQgKCIpICIsIHN0cmVhbSk7CisrICAgIH0KKyAKKyAgIC8qIFdlIGRpZG4n dCBmaW5kIGl0OyBwcmludCB0aGUgcmF3IGRhdGEuICAqLworICAgaWYgKHZiaXQpCitkaWZmIC0t Z2l0IGEvZ2RiL2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYworaW5kZXgg ZmY4MzdmMi4uMTcxMDQ4NyAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCisrKysg Yi9nZGIvaTM4Ni1saW51eC1uYXQuYworQEAgLTY5Niw2ICs2OTYsMjEgQEAgaTM4Nl9saW51eF9k cl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykKKyAgICAgfQorIH0KKyAKKysvKiBT ZWUgaTM4Nl9kcl9sb3dfdHlwZS5kZXRhY2guICBEbyBub3QgdXNlIHdyYXBwZXJzIGkzODZfbGlu dXhfZHJfc2V0X2NvbnRyb2wKKysgICBvciBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHIgYXMgdGhl eSB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hlCisrICAgKGkzODZfbGludXhfZHIpLiAg Ki8KKysKKytzdGF0aWMgdm9pZAorK2kzODZfbGludXhfZHJfZGV0YWNoICh2b2lkKQorK3sKICsg IGludCByZWdudW07CiArCiArICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgRFJf Q09OVFJPTCwgMCk7CkBAIC02NjkzLDEwICs3Njk5LDEwIEBAIGluZGV4IDczMTdlN2QuLmVhOTE0 YTUgMTAwNjQ0CiAgICB9OwogIAogZGlmZiAtLWdpdCBhL2dkYi9pbmZjbWQuYyBiL2dkYi9pbmZj bWQuYwotaW5kZXggMjFhMjIzMy4uMzRhMzcxOCAxMDA2NDQKK2luZGV4IGY5OWE0YWUuLjU1OTk5 MDggMTAwNjQ0CiAtLS0gYS9nZGIvaW5mY21kLmMKICsrKyBiL2dkYi9pbmZjbWQuYwotQEAgLTgw NSw3ICs4MDUsNyBAQCBuZXh0aV9jb21tYW5kIChjaGFyICpjb3VudF9zdHJpbmcsIGludCBmcm9t X3R0eSkKK0BAIC04MDYsNyArODA2LDcgQEAgbmV4dGlfY29tbWFuZCAoY2hhciAqY291bnRfc3Ry aW5nLCBpbnQgZnJvbV90dHkpCiAgICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0cmluZyk7CiAgfQog IApAQCAtNjcwNSw3ICs3NzExLDcgQEAgaW5kZXggMjFhMjIzMy4uMzRhMzcxOCAxMDA2NDQKICBk ZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZykKICB7CiAgICBpbnQg dGhyZWFkID0gKiAoaW50ICopIGFyZzsKLUBAIC04NDUsMTAgKzg0NSwxMyBAQCBzdGVwXzEgKGlu dCBza2lwX3N1YnJvdXRpbmVzLCBpbnQgc2luZ2xlX2luc3QsIGNoYXIgKmNvdW50X3N0cmluZykK K0BAIC04NDYsMTAgKzg0NiwxMyBAQCBzdGVwXzEgKGludCBza2lwX3N1YnJvdXRpbmVzLCBpbnQg c2luZ2xlX2luc3QsIGNoYXIgKmNvdW50X3N0cmluZykKICAKICAgIGlmICghc2luZ2xlX2luc3Qg fHwgc2tpcF9zdWJyb3V0aW5lcykJCS8qIGxlYXZlIHNpIGNvbW1hbmQgYWxvbmUgKi8KICAgICAg ewpAQCAtNjcxOSw3ICs3NzI1LDcgQEAgaW5kZXggMjFhMjIzMy4uMzRhMzcxOCAxMDA2NDQKICAK ICAgICAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwg JnRocmVhZCk7CiAgICAgIH0KLUBAIC0xMTk3LDYgKzEyMDAsMTUgQEAgc2lnbmFsX2NvbW1hbmQg KGNoYXIgKnNpZ251bV9leHAsIGludCBmcm9tX3R0eSkKK0BAIC0xMTk4LDYgKzEyMDEsMTUgQEAg c2lnbmFsX2NvbW1hbmQgKGNoYXIgKnNpZ251bV9leHAsIGludCBmcm9tX3R0eSkKICAgIHByb2Nl ZWQgKChDT1JFX0FERFIpIC0xLCBvdXJzaWcsIDApOwogIH0KICAKQEAgLTY3MzUsNyArNzc0MSw3 IEBAIGluZGV4IDIxYTIyMzMuLjM0YTM3MTggMTAwNjQ0CiAgLyogUHJvY2VlZCB1bnRpbCB3ZSBy ZWFjaCBhIGRpZmZlcmVudCBzb3VyY2UgbGluZSB3aXRoIHBjIGdyZWF0ZXIgdGhhbgogICAgIG91 ciBjdXJyZW50IG9uZSBvciBleGl0IHRoZSBmdW5jdGlvbi4gIFdlIHNraXAgY2FsbHMgaW4gYm90 aCBjYXNlcy4KICAKLUBAIC0xMjEzLDYgKzEyMjUsOCBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGlu dCBmcm9tX3R0eSkKK0BAIC0xMjE0LDYgKzEyMjYsOCBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGlu dCBmcm9tX3R0eSkKICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmM7CiAgICBzdHJ1Y3Qgc3ltdGFiX2Fu ZF9saW5lIHNhbDsKICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQg KCk7CkBAIC02NzQ0LDcgKzc3NTAsNyBAQCBpbmRleCAyMWEyMjMzLi4zNGEzNzE4IDEwMDY0NAog IAogICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7CiAgICBzZXRfc3RlcF9mcmFtZSAoKTsKLUBA IC0xMjQ4LDcgKzEyNjIsMTkgQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCitA QCAtMTI0OSw3ICsxMjYzLDE5IEBAIHVudGlsX25leHRfY29tbWFuZCAoaW50IGZyb21fdHR5KQog IAogICAgdHAtPnN0ZXBfbXVsdGkgPSAwOwkJLyogT25seSBvbmUgY2FsbCB0byBwcm9jZWVkICov CiAgCkBAIC02NzY0LDcgKzc3NzAsNyBAQCBpbmRleCAyMWEyMjMzLi4zNGEzNzE4IDEwMDY0NAog IH0KICAKICBzdGF0aWMgdm9pZAotQEAgLTE0MjUsNiArMTQ1MSw3IEBAIGZpbmlzaF9jb21tYW5k X2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQorQEAgLTE0MjYsNiArMTQ1Miw3IEBAIGZpbmlzaF9j b21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQogICAgaWYgKGJzICE9IE5VTEwgJiYgdHAt PnByb2NlZWRfdG9fZmluaXNoKQogICAgICBvYnNlcnZlcl9ub3RpZnlfbm9ybWFsX3N0b3AgKGJz LCAxIC8qIHByaW50IGZyYW1lICovKTsKICAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5icmVha3Bv aW50KTsKQEAgLTY3NzIsNyArNzc3OCw3IEBAIGluZGV4IDIxYTIyMzMuLjM0YTM3MTggMTAwNjQ0 CiAgfQogIAogIHN0YXRpYyB2b2lkCi1AQCAtMTUwOCw2ICsxNTM1LDcgQEAgZmluaXNoX2Zvcndh cmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitA QCAtMTUwOSw2ICsxNTM2LDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0 aW9uLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJl YWtwb2ludDsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAgICBzdHJ1Y3QgZmluaXNo X2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MgKmNhcmdzOwpAQCAtNjc4MCw3ICs3Nzg2LDcgQEAg aW5kZXggMjFhMjIzMy4uMzRhMzcxOCAxMDA2NDQKICAKICAgIHNhbCA9IGZpbmRfcGNfbGluZSAo Z2V0X2ZyYW1lX3BjIChmcmFtZSksIDApOwogICAgc2FsLnBjID0gZ2V0X2ZyYW1lX3BjIChmcmFt ZSk7Ci1AQCAtMTUxOCw2ICsxNTQ2LDEwIEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9s ICpmdW5jdGlvbiwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTE1MTksNiArMTU0Nywx MCBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSkKICAKICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJl YWtwb2ludCAoYnJlYWtwb2ludCk7CiAgCkBAIC02NzkyLDEwICs3Nzk4LDEwIEBAIGluZGV4IDIx YTIyMzMuLjM0YTM3MTggMTAwNjQ0CiAgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdz KSk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2luZmVyaW9yLmggYi9nZGIvaW5mZXJpb3IuaAotaW5k ZXggOTc5OGVmMS4uZTk3ODNmYiAxMDA2NDQKK2luZGV4IGU1NTdkNmMuLmQ0YWUxZGYgMTAwNjQ0 CiAtLS0gYS9nZGIvaW5mZXJpb3IuaAogKysrIGIvZ2RiL2luZmVyaW9yLmgKLUBAIC0yNzksNiAr Mjc5LDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF9jb21tYW5kIChjaGFyICphcmdz LCBpbnQgZnJvbV90dHkpOworQEAgLTI3NSw2ICsyNzUsOCBAQCBleHRlcm4gdm9pZCBpbnRlcnJ1 cHRfdGFyZ2V0X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSk7CiAgCiAgZXh0ZXJu IHZvaWQgaW50ZXJydXB0X3RhcmdldF8xIChpbnQgYWxsX3RocmVhZHMpOwogIApAQCAtNjgwNSw3 ICs3ODExLDcgQEAgaW5kZXggOTc5OGVmMS4uZTk3ODNmYiAxMDA2NDQKICAKICBleHRlcm4gdm9p ZCBub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QsIGludCwgaW50KTsKIGRpZmYgLS1naXQgYS9n ZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKLWluZGV4IDQyNmI4MTYuLmJkNjUyNTggMTAwNjQ0 CitpbmRleCAwNmYzZWEwLi5mZTM3MTllIDEwMDY0NAogLS0tIGEvZ2RiL2luZnJ1bi5jCiArKysg Yi9nZGIvaW5mcnVuLmMKIEBAIC00NSw2ICs0NSw4IEBACkBAIC02ODE3LDcgKzc4MjMsNyBAQCBp bmRleCA0MjZiODE2Li5iZDY1MjU4IDEwMDY0NAogICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCiAg I2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgogICNpbmNsdWRlICJldmVudC10b3AuaCIKLUBAIC0y MDEzLDYgKzIwMTUsOCBAQCBzdGF0aWMgdm9pZCBpbnNlcnRfc3RlcF9yZXN1bWVfYnJlYWtwb2lu dF9hdF9zYWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTIwMTAsNiArMjAxMiw4IEBA IHN0YXRpYyB2b2lkIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJCQkJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNyX3Nh bCwKICAJCQkJCQkgIHN0cnVjdCBmcmFtZV9pZCBzcl9pZCk7CiAgc3RhdGljIHZvaWQgaW5zZXJ0 X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7 CkBAIC02ODI2LDcgKzc4MzIsNyBAQCBpbmRleCA0MjZiODE2Li5iZDY1MjU4IDEwMDY0NAogIAog IHN0YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0 ZSAqZWNzKTsKICBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBleGVjdXRpb25f Y29udHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC0yOTQyLDYgKzI5NDYsMTAgQEAgaGFuZGxlX2luZmVy aW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKK0BAIC0yOTMw LDYgKzI5MzQsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcykKICAKICAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAo Z2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CiAgCkBAIC02ODM3LDcgKzc4NDMsNyBA QCBpbmRleCA0MjZiODE2Li5iZDY1MjU4IDEwMDY0NAogICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFk LT5zdG9wX2Jwc3RhdAogIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFj ZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAogIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRp ZCk7Ci1AQCAtMzAyNiw2ICszMDM0LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0 IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCitAQCAtMzAxNCw2ICszMDIyLDEwIEBAIGhh bmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3Mp CiAgCiAgICAgICAgc3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2Fj aGUgKGVjcy0+cHRpZCkpOwogIApAQCAtNjg0OCw3ICs3ODU0LDcgQEAgaW5kZXggNDI2YjgxNi4u YmQ2NTI1OCAxMDA2NDQKICAgICAgICAvKiBEbyB3aGF0ZXZlciBpcyBuZWNlc3NhcnkgdG8gdGhl IHBhcmVudCBicmFuY2ggb2YgdGhlIHZmb3JrLiAgKi8KICAgICAgICBoYW5kbGVfdmZvcmtfY2hp bGRfZXhlY19vcl9leGl0ICgxKTsKICAKLUBAIC0zNzg0LDIzICszNzk2LDMzIEBAIHByb2Nlc3Nf ZXZlbnRfc3RvcF90ZXN0OgorQEAgLTM3NzIsMjMgKzM3ODQsMzMgQEAgcHJvY2Vzc19ldmVudF9z dG9wX3Rlc3Q6CiAgCiAgCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9p bnQgPSAxOwogIApAQCAtNjg5NCw3ICs3OTAwLDcgQEAgaW5kZXggNDI2YjgxNi4uYmQ2NTI1OCAx MDA2NDQKICAJa2VlcF9nb2luZyAoZWNzKTsKICAJcmV0dXJuOwogIAotQEAgLTM4MTIsNiArMzgz NCw1MyBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hf Z2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CitAQCAtMzgwMCw2ICszODIyLDUzIEBAIGluZnJ1bjog QlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJn ZXQpXG4iKTsKICAJZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgIT0gTlVMTCk7CiAgCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3Mt PmV2ZW50X3RocmVhZCk7CiAgCkBAIC02OTQ4LDcgKzc5NTQsNyBAQCBpbmRleCA0MjZiODE2Li5i ZDY1MjU4IDEwMDY0NAogIAllY3MtPmV2ZW50X3RocmVhZC0+c3RvcF9zdGVwID0gMTsKICAJcHJp bnRfc3RvcF9yZWFzb24gKEVORF9TVEVQUElOR19SQU5HRSwgMCk7CiAgCXN0b3Bfc3RlcHBpbmcg KGVjcyk7Ci1AQCAtNDgzMSw2ICs0OTAwLDk2IEBAIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVh a3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQorQEAgLTQ4MTks NiArNDg4OCw5NiBAQCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKICAgICAgc2V0X21vbWVudGFyeV9icmVha3Bv aW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9uZ2ptcF9yZXN1bWUpOwogIH0KICAKQEAgLTcw NTcsMTEgKzgwNjMsMzE4IEBAIGluZGV4IDI0YjY2NzMuLjIyZWQ5NjAgMTAwNjQ0CiAgICBvcF9u YW1lX3N0YW5kYXJkLAogICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKICAgIGV2YWx1YXRl X3N1YmV4cF9qYXZhCitkaWZmIC0tZ2l0IGEvZ2RiL2xhbmd1YWdlLmggYi9nZGIvbGFuZ3VhZ2Uu aAoraW5kZXggYWFlZmIwMy4uYzI3NDU3MiAxMDA2NDQKKy0tLSBhL2dkYi9sYW5ndWFnZS5oCisr KysgYi9nZGIvbGFuZ3VhZ2UuaAorQEAgLTIzNyw3ICsyMzcsNiBAQCBzdHJ1Y3QgbGFuZ3VhZ2Vf ZGVmbgorICAgICAgICB2YXJpYWJsZXMuICAqLworIAorICAgICBzdHJ1Y3Qgc3ltYm9sICooKmxh X2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwpIChjb25zdCBjaGFyICosCistCQkJCQkJIGNvbnN0IGNo YXIgKiwKKyAJCQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICosCisgCQkJCQkJIGNvbnN0IGRvbWFp bl9lbnVtKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvbGluZXNwZWMuYyBiL2dkYi9saW5lc3BlYy5j CitpbmRleCA3NDkwMmI2Li5hOWI0ZjFlIDEwMDY0NAorLS0tIGEvZ2RiL2xpbmVzcGVjLmMKKysr KyBiL2dkYi9saW5lc3BlYy5jCitAQCAtNTAsOCArNTAsNiBAQCBleHRlcm4gY2hhciAqb3BlcmF0 b3JfY2hhcnMgKGNoYXIgKiwgY2hhciAqKik7Cisgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9kZWZh dWx0cyAoc3RydWN0IHN5bXRhYiAqKmRlZmF1bHRfc3ltdGFiLAorIAkJCQkgaW50ICpkZWZhdWx0 X2xpbmUpOworIAorLXN0YXRpYyB2b2lkIHNldF9mbGFncyAoY2hhciAqYXJnLCBpbnQgKmlzX3F1 b3RlZCwgY2hhciAqKnBhcmVuX3BvaW50ZXIpOworLQorIHN0YXRpYyBzdHJ1Y3Qgc3ltdGFic19h bmRfbGluZXMgZGVjb2RlX2luZGlyZWN0IChjaGFyICoqYXJncHRyKTsKKyAKKyBzdGF0aWMgY2hh ciAqbG9jYXRlX2ZpcnN0X2hhbGYgKGNoYXIgKiphcmdwdHIsIGludCAqaXNfcXVvdGVfZW5jbG9z ZWQpOworQEAgLTY4OCw5ICs2ODYsNiBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoqYXJncHRyLCBp bnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwKKyAgIHN0cnVj dCBzeW10YWIgKmZpbGVfc3ltdGFiID0gTlVMTDsKKyAKKyAgIGNoYXIgKmNvcHk7CistICAvKiBU aGlzIGlzIE5VTEwgaWYgdGhlcmUgYXJlIG5vIHBhcmVucyBpbiAqQVJHUFRSLCBvciBhIHBvaW50 ZXIgdG8KKy0gICAgIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzIGlmIHRoZXJlIGFyZSBwYXJlbnMu ICAqLworLSAgY2hhciAqcGFyZW5fcG9pbnRlcjsKKyAgIC8qIFRoaXMgc2F5cyB3aGV0aGVyIG9y IG5vdCBzb21ldGhpbmcgaW4gKkFSR1BUUiBpcyBxdW90ZWQgd2l0aAorICAgICAgY29tcGxldGVy X3F1b3RlcyAoaS5lLiB3aXRoIHNpbmdsZSBxdW90ZXMpLiAgKi8KKyAgIGludCBpc19xdW90ZWQ7 CitAQCAtNzExLDEyICs3MDYsOSBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoqYXJncHRyLCBpbnQg ZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwKKyAgIGlmICgqKmFy Z3B0ciA9PSAnKicpCisgICAgIHJldHVybiBkZWNvZGVfaW5kaXJlY3QgKGFyZ3B0cik7CisgCist ICAvKiBTZXQgdmFyaW91cyBmbGFncy4gICdwYXJlbl9wb2ludGVyJyBpcyBpbXBvcnRhbnQgZm9y IG92ZXJsb2FkCistICAgICBjaGVja2luZywgd2hlcmUgd2UgYWxsb3cgdGhpbmdzIGxpa2U6Cist ICAgICAgICAoZ2RiKSBicmVhayBjOjpmKGludCkKKy0gICovCistCistICBzZXRfZmxhZ3MgKCph cmdwdHIsICZpc19xdW90ZWQsICZwYXJlbl9wb2ludGVyKTsKKysgIGlzX3F1b3RlZCA9ICgqYXJn cHRyCisrCSAgICAgICAmJiBzdHJjaHIgKGdldF9nZGJfY29tcGxldGVyX3F1b3RlX2NoYXJhY3Rl cnMgKCksCisrCQkJICAqKmFyZ3B0cikgIT0gTlVMTCk7CisgCisgICAvKiBDaGVjayB0byBzZWUg aWYgaXQncyBhIG11bHRpcGFydCBsaW5lc3BlYyAod2l0aCBjb2xvbnMgb3IKKyAgICAgIHBlcmlv ZHMpLiAgKi8KK0BAIC03MzIsMTAgKzcyNCw3IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdw dHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAorICAg LyogQ2hlY2sgaWYgdGhpcyBpcyBhbiBPYmplY3RpdmUtQyBtZXRob2QgKGFueXRoaW5nIHRoYXQg c3RhcnRzIHdpdGgKKyAgICAgIGEgJysnIG9yICctJyBhbmQgYSAnWycpLiAgKi8KKyAgIGlmIChp c19vYmpjX21ldGhvZF9mb3JtYXQgKHApKQorLSAgICB7CistICAgICAgaXNfb2JqY19tZXRob2Qg PSAxOworLSAgICAgIHBhcmVuX3BvaW50ZXIgID0gTlVMTDsgLyogSnVzdCBhIGNhdGVnb3J5IG5h bWUuICBJZ25vcmUgaXQuICAqLworLSAgICB9CisrICAgIGlzX29iamNfbWV0aG9kID0gMTsKKyAK KyAgIC8qIENoZWNrIGlmIHRoZSBzeW1ib2wgY291bGQgYmUgYW4gT2JqZWN0aXZlLUMgc2VsZWN0 b3IuICAqLworIAorQEAgLTc0OSwxMSArNzM4LDExIEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiph cmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAor IAorICAgLyogRG9lcyBpdCBsb29rIGxpa2UgdGhlcmUgYWN0dWFsbHkgd2VyZSB0d28gcGFydHM/ ICAqLworIAorLSAgaWYgKChwWzBdID09ICc6JyB8fCBwWzBdID09ICcuJykgJiYgcGFyZW5fcG9p bnRlciA9PSBOVUxMKQorKyAgaWYgKHBbMF0gPT0gJzonIHx8IHBbMF0gPT0gJy4nKQorICAgICB7 CisgICAgICAgaWYgKGlzX3F1b3RlZCkKKyAJKmFyZ3B0ciA9ICphcmdwdHIgKyAxOworLSAgICAg IAorKworICAgICAgIC8qIElzIGl0IGEgQysrIG9yIEphdmEgY29tcG91bmQgZGF0YSBzdHJ1Y3R1 cmU/CisgCSBUaGUgY2hlY2sgb24gcFsxXSA9PSAnOicgaXMgY2FwdHVyaW5nIHRoZSBjYXNlIG9m ICI6OiIsCisgCSBzaW5jZSBwWzBdPT0nOicgd2FzIGNoZWNrZWQgYWJvdmUuICAKK0BAIC03NjIs NDggKzc1MSwzMSBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3Rs aW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwKKyAJIGNhbiByZXR1cm4gbm93LiAq LworIAkKKyAgICAgICBpZiAocFswXSA9PSAnLicgfHwgcFsxXSA9PSAnOicpCistCXJldHVybiBk ZWNvZGVfY29tcG91bmQgKGFyZ3B0ciwgZnVuZmlyc3RsaW5lLCBjYW5vbmljYWwsCistCQkJCXNh dmVkX2FyZywgcCwgbm90X2ZvdW5kX3B0cik7CisrCXsKKysJICBzdHJ1Y3Qgc3ltdGFic19hbmRf bGluZXMgdmFsdWVzOworKworKwkgIGlmIChpc19xdW90ZV9lbmNsb3NlZCkKKysJICAgICsrc2F2 ZWRfYXJnOworKwkgIHZhbHVlcyA9IGRlY29kZV9jb21wb3VuZCAoYXJncHRyLCBmdW5maXJzdGxp bmUsIGNhbm9uaWNhbCwKKysJCQkJICAgIHNhdmVkX2FyZywgcCwgbm90X2ZvdW5kX3B0cik7Cisr CSAgaWYgKGlzX3F1b3RlZCAmJiAqKmFyZ3B0ciA9PSAnXCcnKQorKwkgICAgKmFyZ3B0ciA9ICph cmdwdHIgKyAxOworKwkgIHJldHVybiB2YWx1ZXM7CisrCX0KKyAKKyAgICAgICAvKiBObywgdGhl IGZpcnN0IHBhcnQgaXMgYSBmaWxlbmFtZTsgc2V0IGZpbGVfc3ltdGFiIHRvIGJlIHRoYXQgZmls ZSdzCisgCSBzeW10YWIuICBBbHNvLCBtb3ZlIGFyZ3B0ciBwYXN0IHRoZSBmaWxlbmFtZS4gICov CisgCisgICAgICAgZmlsZV9zeW10YWIgPSBzeW10YWJfZnJvbV9maWxlbmFtZSAoYXJncHRyLCBw LCBpc19xdW90ZV9lbmNsb3NlZCwgCisgCQkgICAgICAJCQkgIG5vdF9mb3VuZF9wdHIpOworLSAg ICB9CistI2lmIDAKKy0gIC8qIE5vIG9uZSByZWFsbHkgc2VlbXMgdG8ga25vdyB3aHkgdGhpcyB3 YXMgYWRkZWQuIEl0IGNlcnRhaW5seQorLSAgICAgYnJlYWtzIHRoZSBjb21tYW5kIGxpbmUsIHRo b3VnaCwgd2hlbmV2ZXIgdGhlIHBhc3NlZAorLSAgICAgbmFtZSBpcyBvZiB0aGUgZm9ybSBDbGFz c05hbWU6Ok1ldGhvZC4gVGhpcyBiaXQgb2YgY29kZQorLSAgICAgc2luZ2xlcyBvdXQgdGhlIGNs YXNzIG5hbWUsIGFuZCBpZiBmdW5maXJzdGxpbmUgaXMgc2V0IChmb3IKKy0gICAgIGV4YW1wbGUs IHlvdSBhcmUgc2V0dGluZyBhIGJyZWFrcG9pbnQgYXQgdGhpcyBmdW5jdGlvbiksCistICAgICB5 b3UgZ2V0IGFuIGVycm9yLiBUaGlzIGRpZCBub3Qgb2NjdXIgd2l0aCBlYXJsaWVyCistICAgICB2 ZXJpb25zLCBzbyBJIGFtIGlmZGVmJ2luZyB0aGlzIG91dC4gMy8yOS85OSAqLworLSAgZWxzZQor LSAgICB7CistICAgICAgLyogQ2hlY2sgaWYgd2hhdCB3ZSBoYXZlIHRpbGwgbm93IGlzIGEgc3lt Ym9sIG5hbWUgKi8KKy0KKy0gICAgICAvKiBXZSBtYXkgYmUgbG9va2luZyBhdCBhIHRlbXBsYXRl IGluc3RhbnRpYXRpb24gc3VjaAorLSAgICAgICAgIGFzICJmb288aW50PiIuICBDaGVjayBoZXJl IHdoZXRoZXIgd2Uga25vdyBhYm91dCBpdCwKKy0gICAgICAgICBpbnN0ZWFkIG9mIGZhbGxpbmcg dGhyb3VnaCB0byB0aGUgY29kZSBiZWxvdyB3aGljaAorLSAgICAgICAgIGhhbmRsZXMgb3JkaW5h cnkgZnVuY3Rpb24gbmFtZXMsIGJlY2F1c2UgdGhhdCBjb2RlCistICAgICAgICAgZG9lc24ndCBs aWtlIHNlZWluZyAnPCcgYW5kICc+JyBpbiBhIG5hbWUgLS0gdGhlCistICAgICAgICAgc2tpcF9x dW90ZWQgY2FsbCBkb2Vzbid0IGdvIHBhc3QgdGhlbS4gIFNvIHNlZSBpZiB3ZQorLSAgICAgICAg IGNhbiBmaWd1cmUgaXQgb3V0IHJpZ2h0IG5vdy4gKi8KKy0KKy0gICAgICBjb3B5ID0gKGNoYXIg KikgYWxsb2NhIChwIC0gKmFyZ3B0ciArIDEpOworLSAgICAgIG1lbWNweSAoY29weSwgKmFyZ3B0 ciwgcCAtICphcmdwdHIpOworLSAgICAgIGNvcHlbcCAtICphcmdwdHJdID0gJ1wwMDAnOworLSAg ICAgIHN5bSA9IGxvb2t1cF9zeW1ib2wgKGNvcHksIDAsIFZBUl9ET01BSU4sIDApOworLSAgICAg IGlmIChzeW0pCisrICAgICAgaWYgKGZpbGVfc3ltdGFiICE9IE5VTEwpCisgCXsKKy0JICAqYXJn cHRyID0gKCpwID09ICdcJycpID8gcCArIDEgOiBwOworLQkgIHJldHVybiBzeW1ib2xfZm91bmQg KGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsLCBjb3B5LCBzeW0sIE5VTEwpOworKwkgIC8qIERvdWJs ZS1jaGVjayBpZiB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd1bWVudCBpcyBxdW90ZWQuCisrCSAg ICAgVGhlIHJicmVhayBjb21tYW5kIHVzZXMgc3ludGF4IGxpa2UgdGhpcy4gICovCisrCSAgaWYg KCoqYXJncHRyID09ICdcJycpCisrCSAgICBpc19xdW90ZWQgPSAxOworIAl9CistICAgICAgLyog T3RoZXJ3aXNlIGZhbGwgb3V0IGZyb20gaGVyZSBhbmQgZ28gdG8gZmlsZS9saW5lIHNwZWMKKy0g ICAgICAgICBwcm9jZXNzaW5nLCBldGMuICovCisgICAgIH0KKy0jZW5kaWYKKyAKKyAgIC8qIGZp bGVfc3ltdGFiIGlzIHNwZWNpZmllZCBmaWxlJ3Mgc3ltdGFiLCBvciAwIGlmIG5vIGZpbGUgc3Bl Y2lmaWVkLgorICAgICAgYXJnIG5vIGxvbmdlciBjb250YWlucyB0aGUgZmlsZSBuYW1lLiAgKi8K K0BAIC04MzgsMTAgKzgxMCw2IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBm dW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAorICAgICAgIC8qIGFs bG93IHdvcmQgc2VwYXJhdG9ycyBpbiBtZXRob2QgbmFtZXMgZm9yIE9iai1DICovCisgICAgICAg cCA9IHNraXBfcXVvdGVkX2NoYXJzICgqYXJncHRyLCBOVUxMLCAiIik7CisgICAgIH0KKy0gIGVs c2UgaWYgKHBhcmVuX3BvaW50ZXIgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIHAgPSBwYXJlbl9w b2ludGVyICsgMTsKKy0gICAgfQorICAgZWxzZQorICAgICB7CisgICAgICAgcCA9IHNraXBfcXVv dGVkICgqYXJncHRyKTsKK0BAIC04NTEsNiArODE5LDE1IEBAIGRlY29kZV9saW5lXzEgKGNoYXIg KiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFi LAorICAgaWYgKCpwID09ICc8JykKKyAgICAgcCA9IGZpbmRfdGVtcGxhdGVfbmFtZV9lbmQgKHAp OworIAorKyAgLyogS2VlcCBtZXRob2Qgb3ZlcmxvYWQgaW5mb3JtYXRpb24uICAqLworKyAgcSA9 IHN0cmNociAocCwgJygnKTsKKysgIGlmIChxICE9IE5VTEwpCisrICAgIHAgPSBzdHJyY2hyIChx LCAnKScpICsgMTsKKysKKysgIC8qIE1ha2Ugc3VyZSB3ZSBrZWVwIGltcG9ydGFudCBrZXdvcmRz IGxpa2UgImNvbnN0IiAqLworKyAgaWYgKHN0cm5jbXAgKHAsICIgY29uc3QiLCA2KSA9PSAwKQor KyAgICBwICs9IDY7CisrCisgICBjb3B5ID0gKGNoYXIgKikgYWxsb2NhIChwIC0gKmFyZ3B0ciAr IDEpOworICAgbWVtY3B5IChjb3B5LCAqYXJncHRyLCBwIC0gKmFyZ3B0cik7CisgICBjb3B5W3Ag LSAqYXJncHRyXSA9ICdcMCc7CitAQCAtOTI2LDQ0ICs5MDMsNiBAQCBpbml0aWFsaXplX2RlZmF1 bHRzIChzdHJ1Y3Qgc3ltdGFiICoqZGVmYXVsdF9zeW10YWIsIGludCAqZGVmYXVsdF9saW5lKQor ICAgICB9CisgfQorIAorLXN0YXRpYyB2b2lkCistc2V0X2ZsYWdzIChjaGFyICphcmcsIGludCAq aXNfcXVvdGVkLCBjaGFyICoqcGFyZW5fcG9pbnRlcikKKy17CistICBjaGFyICppaTsKKy0gIGlu dCBoYXNfaWYgPSAwOworLQorLSAgLyogJ2hhc19pZicgaXMgZm9yIHRoZSBzeW50YXg6CistICAg ICAgICAoZ2RiKSBicmVhayBmb28gaWYgKGE9PWIpCistICAqLworLSAgaWYgKChpaSA9IHN0cnN0 ciAoYXJnLCAiIGlmICIpKSAhPSBOVUxMIHx8CistICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJc dGlmICIpKSAhPSBOVUxMIHx8CistICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICIgaWZcdCIpKSAh PSBOVUxMIHx8CistICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJcdGlmXHQiKSkgIT0gTlVMTCB8 fAorLSAgICAgIChpaSA9IHN0cnN0ciAoYXJnLCAiIGlmKCIpKSAhPSBOVUxMIHx8CistICAgICAg KGlpID0gc3Ryc3RyIChhcmcsICJcdGlmKCAiKSkgIT0gTlVMTCkKKy0gICAgaGFzX2lmID0gMTsK Ky0gIC8qIFRlbXBvcmFyaWx5IHphcCBvdXQgImlmIChjb25kaXRpb24pIiB0byBub3QgY29uZnVz ZSB0aGUKKy0gICAgIHBhcmVudGhlc2lzLWNoZWNraW5nIGNvZGUgYmVsb3cuICBUaGlzIGlzIHVu ZG9uZSBiZWxvdy4gRG8gbm90CistICAgICBjaGFuZ2UgaWkhISAgKi8KKy0gIGlmIChoYXNfaWYp CistICAgIHsKKy0gICAgICAqaWkgPSAnXDAnOworLSAgICB9CistCistICAqaXNfcXVvdGVkID0g KCphcmcKKy0JCSYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAo KSwKKy0JCQkgICAqYXJnKSAhPSBOVUxMKTsKKy0KKy0gICpwYXJlbl9wb2ludGVyID0gc3RyY2hy IChhcmcsICcoJyk7CistICBpZiAoKnBhcmVuX3BvaW50ZXIgIT0gTlVMTCkKKy0gICAgKnBhcmVu X3BvaW50ZXIgPSBzdHJyY2hyICgqcGFyZW5fcG9pbnRlciwgJyknKTsKKy0KKy0gIC8qIE5vdyB0 aGF0IHdlJ3JlIHNhZmVseSBwYXN0IHRoZSBwYXJlbl9wb2ludGVyIGNoZWNrLCBwdXQgYmFjayAi IGlmCistICAgICAoY29uZGl0aW9uKSIgc28gb3V0ZXIgbGF5ZXJzIGNhbiBzZWUgaXQuICAqLwor LSAgaWYgKGhhc19pZikKKy0gICAgKmlpID0gJyAnOworLX0KKy0KKyAMCisgCisgLyogRGVjb2Rl IGFyZyBvZiB0aGUgZm9ybSAqUEMuICAqLworQEAgLTEyNjQsNyArMTIwMyw4IEBAIGRlY29kZV9j b21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmlj YWwsCisgICAgICAgLyogUEFTUzI6IHAyLT4iOjpmdW4iLCBwLT4iOmZ1biIgKi8KKyAKKyAgICAg ICAvKiBNb3ZlIHBvaW50ZXIgYWhlYWQgdG8gbmV4dCBkb3VibGUtY29sb24uICAqLworLSAgICAg IHdoaWxlICgqcCAmJiAocFswXSAhPSAnICcpICYmIChwWzBdICE9ICdcdCcpICYmIChwWzBdICE9 ICdcJycpKQorKyAgICAgIHdoaWxlICgqcCAmJiAocFswXSAhPSAnICcpICYmIChwWzBdICE9ICdc dCcpICYmIChwWzBdICE9ICdcJycpCisrCSAgICAgJiYgKCpwICE9ICcoJykpCisgCXsKKyAJICBp ZiAoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCisgCSAg ICBwICs9IGNwX3ZhbGlkYXRlX29wZXJhdG9yIChwKTsKK0BAIC0xMzQyLDggKzEyODIsMTAgQEAg ZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoq KmNhbm9uaWNhbCwKKyAgICAgICBlbHNlCisgCXsKKyAJICAvKiBBdCB0aGlzIHBvaW50IGFyZ3B0 ci0+ImZ1biIuICAqLworKwkgIGNoYXIgKmE7CisgCSAgcCA9ICphcmdwdHI7CistCSAgd2hpbGUg KCpwICYmICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcsJyAmJiAqcCAhPSAnOicp CisrCSAgd2hpbGUgKCpwICYmICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcsJyAm JiAqcCAhPSAnOicKKysJCSAmJiAqcCAhPSAnKCcpCisgCSAgICBwKys7CisgCSAgLyogQXQgdGhp cyBwb2ludCBwLT4iIi4gIFN0cmluZyBlbmRlZC4gICovCisgCSAgLyogTm9wZSwgQysrIG9wZXJh dG9ycyBjb3VsZCBoYXZlIHNwYWNlcyBpbiB0aGVtCitAQCAtMTM1NSw2ICsxMjk3LDE5IEBAIGRl Y29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipj YW5vbmljYWwsCisgCSAgICAgIC8qIFRoZSBhYm92ZSBsb29wIGhhcyBhbHJlYWR5IHN3YWxsb3dl ZCAib3BlcmF0b3IiLiAgKi8KKyAJICAgICAgcCArPSBjcF92YWxpZGF0ZV9vcGVyYXRvciAocCAt IDgpIC0gODsKKyAJICAgIH0KKysKKysJICAvKiBLZWVwIGFueSB0ZW1wbGF0ZSBwYXJhbWV0ZXJz ICovCisrCSAgaWYgKCpwID09ICc8JykKKysJICAgIHAgPSBmaW5kX3RlbXBsYXRlX25hbWVfZW5k IChwKTsKKysKKysJICAvKiBLZWVwIG1ldGhvZCBvdmVybG9hZCBpbmZvcm1hdGlvbi4gICovCisr CSAgYSA9IHN0cmNociAocCwgJygnKTsKKysJICBpZiAoYSAhPSBOVUxMKQorKwkgICAgcCA9IHN0 cnJjaHIgKGEsICcpJykgKyAxOworKworKwkgIC8qIE1ha2Ugc3VyZSB3ZSBrZWVwIGltcG9ydGFu dCBrZXdvcmRzIGxpa2UgImNvbnN0IiAqLworKwkgIGlmIChzdHJuY21wIChwLCAiIGNvbnN0Iiwg NikgPT0gMCkKKysJICAgIHAgKz0gNjsKKyAJfQorIAorICAgICAgIC8qIEFsbG9jYXRlIG91ciBv d24gY29weSBvZiB0aGUgc3Vic3RyaW5nIGJldHdlZW4gYXJncHRyIGFuZAorQEAgLTE1MDksOCAr MTQ2NCwzOSBAQCBmaW5kX21ldGhvZCAoaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmlj YWwsIGNoYXIgKnNhdmVkX2FyZywKKyAgICAgfQorICAgaWYgKGkxID4gMCkKKyAgICAgeworLSAg ICAgIC8qIFRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZmllbGQgd2l0aCB0aGF0IG5hbWUKKy0JIChv dmVybG9hZGVkKS4gIEFzayB0aGUgdXNlciB3aGljaCBvbmUgdG8gdXNlLiAgKi8KKysgICAgICAv KiBJZiB3ZSB3ZXJlIGdpdmVuIGEgc3BlY2lmaWMgb3ZlcmxvYWQgaW5zdGFuY2UsIHVzZSB0aGF0 CisrCSAob3IgZXJyb3IgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kKS4gIE90aGVyd2lzZSBhc2sg dGhlIHVzZXIKKysJIHdoaWNoIG9uZSB0byB1c2UuICAqLworKyAgICAgIGlmIChzdHJjaHIgKHNh dmVkX2FyZywgJygnKSAhPSBOVUxMKQorKwl7CisrCSAgaW50IGk7CisrCSAgZm9yIChpID0gMDsg aSA8IGkxOyArK2kpCisrCSAgICB7CisrCSAgICAgIGNoYXIgKm5hbWUgPSBzYXZlZF9hcmc7Cisr CSAgICAgIGNoYXIgKmNhbm9uID0gY3BfY2Fub25pY2FsaXplX3N0cmluZyAobmFtZSk7CisrCSAg ICAgIGlmIChjYW5vbiAhPSBOVUxMKQorKwkJbmFtZSA9IGNhbm9uOworKworKwkgICAgICBpZiAo c3RyY21wX2l3IChuYW1lLCBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW1fYXJyW2ldKSkgPT0gMCkK KysJCXsKKysJCSAgdmFsdWVzLnNhbHMgPSAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqKQorKwkJ ICAgIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSkpOworKwkJICB2YWx1 ZXMubmVsdHMgPSAxOworKwkJICB2YWx1ZXMuc2Fsc1swXSA9IGZpbmRfZnVuY3Rpb25fc3RhcnRf c2FsIChzeW1fYXJyW2ldLAorKwkJCQkJCQkgICAgZnVuZmlyc3RsaW5lKTsKKysJCSAgaWYgKGNh bm9uKQorKwkJICAgIHhmcmVlIChjYW5vbik7CisrCQkgIHJldHVybiB2YWx1ZXM7CisrCQl9Cisr CisrCSAgICAgIGlmIChjYW5vbikKKysJCXhmcmVlIChjYW5vbik7CisrCSAgICB9CisrCisrCSAg ZXJyb3IgKF8oInRoZSBjbGFzcyBgJXMnIGRvZXMgbm90IGhhdmUgYW55IG1ldGhvZCBpbnN0YW5j ZSBuYW1lZCAlc1xuIiksCisrCQkgICBTWU1CT0xfUFJJTlRfTkFNRSAoc3ltX2NsYXNzKSwgY29w eSk7CisrCX0KKysKKyAgICAgICByZXR1cm4gZGVjb2RlX2xpbmVfMiAoc3ltX2FyciwgaTEsIGZ1 bmZpcnN0bGluZSwgY2Fub25pY2FsKTsKKyAgICAgfQorICAgZWxzZQorQEAgLTE4MTUsNyArMTgw MSw3IEBAIHN5bWJvbF9mb3VuZCAoaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmljYWws IGNoYXIgKmNvcHksCisgCXsKKyAJICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2ID0gQkxPQ0tWRUNU T1IgKFNZTUJPTF9TWU1UQUIgKHN5bSkpOworIAkgIHN0cnVjdCBibG9jayAqYiA9IEJMT0NLVkVD VE9SX0JMT0NLIChidiwgU1RBVElDX0JMT0NLKTsKKy0JICBpZiAobG9va3VwX2Jsb2NrX3N5bWJv bCAoYiwgY29weSwgTlVMTCwgVkFSX0RPTUFJTikgIT0gTlVMTCkKKysJICBpZiAobG9va3VwX2Js b2NrX3N5bWJvbCAoYiwgY29weSwgVkFSX0RPTUFJTikgIT0gTlVMTCkKKyAJICAgIGJ1aWxkX2Nh bm9uaWNhbF9saW5lX3NwZWMgKHZhbHVlcy5zYWxzLCBjb3B5LCBjYW5vbmljYWwpOworIAl9Cisg ICAgICAgcmV0dXJuIHZhbHVlczsKIGRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIv bGludXgtbmF0LmMKLWluZGV4IDAzNTYzY2QuLjgxNDU2MjkgMTAwNjQ0CitpbmRleCA3ZmM5NTg0 Li5iMjg2ZGZkIDEwMDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiArKysgYi9nZGIvbGludXgt bmF0LmMKLUBAIC0yNjQzLDYgKzI2NDMsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRy ZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKK0BAIC0yNjI0 LDYgKzI2MjQsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKICAgIHJldHVybiBscC0+c3RvcHBlZF9k YXRhX2FkZHJlc3NfcDsKICB9CiAgCkBAIC03MTAxLDcgKzg0MTQsNyBAQCBpbmRleCAwMzU2M2Nk Li44MTQ1NjI5IDEwMDY0NAogIC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBlZC4gICovCiAgCiAg c3RhdGljIGludAotQEAgLTU1MTksNiArNTU1Miw4IEBAIGxpbnV4X25hdF9hZGRfdGFyZ2V0IChz dHJ1Y3QgdGFyZ2V0X29wcyAqdCkKK0BAIC01NTAwLDYgKzU1MzMsOCBAQCBsaW51eF9uYXRfYWRk X3RhcmdldCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCiAgICB0LT50b190aHJlYWRfYWRkcmVzc19z cGFjZSA9IGxpbnV4X25hdF90aHJlYWRfYWRkcmVzc19zcGFjZTsKICAgIHQtPnRvX3N0b3BwZWRf Ynlfd2F0Y2hwb2ludCA9IGxpbnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CiAgICB0LT50 b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsK QEAgLTcxMzUsNyArODQ0OCw3IEBAIGluZGV4IDAyYjYxZDMuLjEzYWI1OTUgMTAwNjQ0CiAgICBt YWNob19zeW1maWxlX29mZnNldHMsICAgICAgICAvKiBzeW1fb2Zmc2V0czogIHhsYXRlIGV4dGVy bmFsIHRvIGludGVybmFsIGZvcm0gKi8KICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyog c3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0IGEv Z2RiL21haW4uYyBiL2dkYi9tYWluLmMKLWluZGV4IDBjYzBmNzUuLmUzZmMyZTYgMTAwNjQ0Citp bmRleCBlMjYxMzQ4Li45MmM2M2E3IDEwMDY0NAogLS0tIGEvZ2RiL21haW4uYwogKysrIGIvZ2Ri L21haW4uYwogQEAgLTQwLDYgKzQwLDcgQEAKQEAgLTcxODEsNDAgKzg0OTQsNDAgQEAgaW5kZXgg MGNjMGY3NS4uZTNmYzJlNiAxMDA2NDQKICAJICBjYXNlIE9QVF9TRToKICAJICAgIHN5bWFyZyA9 IG9wdGFyZzsKICAJICAgIGV4ZWNhcmcgPSBvcHRhcmc7Ci1AQCAtNjMxLDcgKzY0MSwzMSBAQCBl eHRlcm4gaW50IGdkYnRrX3Rlc3QgKGNoYXIgKik7Ci0gCXVzZV93aW5kb3dzID0gMDsKLSAgICAg ICB9CitAQCAtNjQxLDcgKzY1MSwzMSBAQCBleHRlcm4gaW50IGdkYnRrX3Rlc3QgKGNoYXIgKik7 CiAgCi0tICAgIGlmIChzZXRfYXJncykKLSsgICAgaWYgKHB5dGhvbl9zY3JpcHQpCi0rICAgICAg ewotKwkvKiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSBweXRob24gc2NyaXB0IHRvIGV2YWx1YXRl LCBhbmQKLSsJICAgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgc2NyaXB0 IGZvcgotKwkgICBwcm9jZXNzaW5nIHRoZXJlLiAgKi8KLSsJaWYgKG9wdGluZCA+PSBhcmdjKQot KwkgIHsKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKLSsJCQkJXygiJXM6 IFB5dGhvbiBzY3JpcHQgZmlsZSBuYW1lIHJlcXVpcmVkXG4iKSwKLSsJCQkJYXJndlswXSk7Ci0r CSAgICBleGl0ICgxKTsKLSsJICB9CisgICAvKiBOb3cgdGhhdCBnZGJfaW5pdCBoYXMgY3JlYXRl ZCB0aGUgaW5pdGlhbCBpbmZlcmlvciwgd2UncmUgaW4gcG9zaXRpb24KKyAgICAgIHRvIHNldCBh cmdzIGZvciB0aGF0IGluZmVyaW9yLiAgKi8KKy0gIGlmIChzZXRfYXJncykKKysgIGlmIChweXRo b25fc2NyaXB0KQorKyAgICB7CisrICAgICAgLyogVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgcHl0 aG9uIHNjcmlwdCB0byBldmFsdWF0ZSwgYW5kCisrCSBzdWJzZXF1ZW50IGFyZ3VtZW50cyBhcmUg cGFzc2VkIHRvIHRoZSBzY3JpcHQgZm9yCisrCSBwcm9jZXNzaW5nIHRoZXJlLiAgKi8KKysgICAg ICBpZiAob3B0aW5kID49IGFyZ2MpCisrCXsKKysJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRlcnIsCisrCQkJICAgICAgXygiJXM6IFB5dGhvbiBzY3JpcHQgZmlsZSBuYW1lIHJlcXVpcmVk XG4iKSwKKysJCQkgICAgICBhcmd2WzBdKTsKKysJICBleGl0ICgxKTsKKysJfQogKwotKwkvKiBG SVhNRTogc2hvdWxkIGhhbmRsZSBpbmZlcmlvciBJL08gaW50ZWxsaWdlbnRseSBoZXJlLgotKwkg ICBFLmcuLCBzaG91bGQgYmUgcG9zc2libGUgdG8gcnVuIGdkYiBpbiBwaXBlbGluZSBhbmQgaGF2 ZQotKwkgICBQeXRob24gKGFuZCBnZGIpIG91dHB1dCBnbyB0byBzdGRlcnIgb3IgZmlsZTsgYW5k IGlmIGEKLSsJICAgcHJvbXB0IGlzIG5lZWRlZCwgb3BlbiB0aGUgdHR5LiAgKi8KLSsJcXVpZXQg PSAxOwotKwkvKiBGSVhNRTogc2hvdWxkIHJlYWQgLmdkYmluaXQgaWYsIGFuZCBvbmx5IGlmLCBh IHByb21wdCBpcwotKwkgICByZXF1ZXN0ZWQgYnkgdGhlIHNjcmlwdC4gIFRob3VnaC4uLiBtYXli ZSB0aGlzIGlzIG5vdAotKwkgICBpZGVhbD8gICovCi0rCS8qIEZJWE1FOiBsaWtld2lzZSwgcmVh ZGluZyBpbiBoaXN0b3J5LiAgKi8KLSsJaW5oaWJpdF9nZGJpbml0ID0gMTsKLSsgICAgICB9Ci0r ICAgIGVsc2UgaWYgKHNldF9hcmdzKQotICAgICAgIHsKLSAJLyogVGhlIHJlbWFpbmluZyBvcHRp b25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQotIAkgICBpbmZlcmlvci4g IFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUgcmVzdAotQEAgLTg2 NCw3ICs4OTgsOCBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvcmUg ZmlsZSBhdCB0aGUgc2FtZSB0aW1lLiIpKTsKKysgICAgICAvKiBGSVhNRTogc2hvdWxkIGhhbmRs ZSBpbmZlcmlvciBJL08gaW50ZWxsaWdlbnRseSBoZXJlLgorKwkgRS5nLiwgc2hvdWxkIGJlIHBv c3NpYmxlIHRvIHJ1biBnZGIgaW4gcGlwZWxpbmUgYW5kIGhhdmUKKysJIFB5dGhvbiAoYW5kIGdk Yikgb3V0cHV0IGdvIHRvIHN0ZGVyciBvciBmaWxlOyBhbmQgaWYgYQorKwkgcHJvbXB0IGlzIG5l ZWRlZCwgb3BlbiB0aGUgdHR5LiAgKi8KKysgICAgICBxdWlldCA9IDE7CisrICAgICAgLyogRklY TUU6IHNob3VsZCByZWFkIC5nZGJpbml0IGlmLCBhbmQgb25seSBpZiwgYSBwcm9tcHQgaXMKKysJ IHJlcXVlc3RlZCBieSB0aGUgc2NyaXB0LiAgVGhvdWdoLi4uIG1heWJlIHRoaXMgaXMgbm90Cisr CSBpZGVhbD8gICovCisrICAgICAgLyogRklYTUU6IGxpa2V3aXNlLCByZWFkaW5nIGluIGhpc3Rv cnkuICAqLworKyAgICAgIGluaGliaXRfZ2RiaW5pdCA9IDE7CisrICAgIH0KKysgIGVsc2UgaWYg KHNldF9hcmdzKQorICAgICB7CisgICAgICAgLyogVGhlIHJlbWFpbmluZyBvcHRpb25zIGFyZSB0 aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQorIAkgaW5mZXJpb3IuICBUaGUgZmlyc3Qg b25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QKK0BAIC04NjcsNyArOTAxLDgg QEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjb3JlIGZpbGUgYXQgdGhl IHNhbWUgdGltZS4iKSk7CiAgICB4ZnJlZSAoY21kYXJnKTsKICAKICAgIC8qIFJlYWQgaW4gdGhl IG9sZCBoaXN0b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4gcmVhZC4g Ki8KQEAgLTcyMjQsNyArODUzNyw3IEBAIGluZGV4IDBjYzBmNzUuLmUzZmMyZTYgMTAwNjQ0CiAg CiAgICBpZiAoYmF0Y2gpCiAgICAgIHsKLUBAIC04OTMsMTMgKzkyOCwyNSBAQCBDYW4ndCBhdHRh Y2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvcmUgZmlsZSBhdCB0aGUgc2FtZSB0aW1lLiIp KTsKK0BAIC04OTYsMTMgKzkzMSwyNSBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3Bl Y2lmeSBhIGNvcmUgZmlsZSBhdCB0aGUgc2FtZSB0aW1lLiIpKTsKICAjZW5kaWYKICAgICAgfQog IApAQCAtNzI1Niw3ICs4NTY5LDcgQEAgaW5kZXggMGNjMGY3NS4uZTNmYzJlNiAxMDA2NDQKICAg ICAgfQogICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8K ICB9Ci1AQCAtOTMxLDcgKzk3OCwxMiBAQCBwcmludF9nZGJfaGVscCAoc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSkKK0BAIC05MzQsNyArOTgxLDEyIEBAIHByaW50X2dkYl9oZWxwIChzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtKQogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogIFRoaXMgaXMgdGhlIEdO VSBkZWJ1Z2dlci4gIFVzYWdlOlxuXG5cCiAgICAgIGdkYiBbb3B0aW9uc10gW2V4ZWN1dGFibGUt ZmlsZSBbY29yZS1maWxlIG9yIHByb2Nlc3MtaWRdXVxuXApAQCAtNzI3MCw3ICs4NTgzLDcgQEAg aW5kZXggMGNjMGY3NS4uZTNmYzJlNiAxMDA2NDQKICBPcHRpb25zOlxuXG5cCiAgIiksIHN0cmVh bSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi1AQCAtOTY5LDcgKzEwMjEsMTMgQEAgT3B0 aW9uczpcblxuXAorQEAgLTk3Miw3ICsxMDI0LDEzIEBAIE9wdGlvbnM6XG5cblwKICAgIC0tbncJ CSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCiAgICAtLW54ICAgICAgICAg ICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChnZGJp bml0LCBzdHJlYW0pOwpAQCAtNzMxNCwxOSArODYyNyw2IEBAIGluZGV4IGIyMjc0MTEuLjNiOTMy ZjAgMTAwNjQ0CiAgICAgICAgc3RydWN0IHZhcm9iaiAqdmFyID0gdmFyb2JqX2dldF9oYW5kbGUg KG5hbWUpOwogIAogICAgICAgIHZhcm9ial91cGRhdGVfb25lICh2YXIsIHByaW50X3ZhbHVlcywg MSAvKiBleHBsaWNpdCAqLyk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLW1haW4uYyBiL2dkYi9t aS9taS1tYWluLmMKLWluZGV4IGRkZTAwNjIuLjgzMmNmY2MgMTAwNjQ0Ci0tLS0gYS9nZGIvbWkv bWktbWFpbi5jCi0rKysgYi9nZGIvbWkvbWktbWFpbi5jCi1AQCAtMTQwMCw3ICsxNDAwLDcgQEAg bWlfY21kX2xpc3RfZmVhdHVyZXMgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJn YykKLSAgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgTlVMTCwgImZyb3plbi12YXJv YmpzIik7Ci0gICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsIE5VTEwsICJwZW5kaW5n LWJyZWFrcG9pbnRzIik7Ci0gICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsIE5VTEws ICJ0aHJlYWQtaW5mbyIpOwotLSAgICAgIAotKwotICNpZiBIQVZFX1BZVEhPTgotICAgICAgIHVp X291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCBOVUxMLCAicHl0aG9uIik7Ci0gI2VuZGlmCiBkaWZm IC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIvbWlwc3JlYWQuYwogaW5kZXggNGVmODE3ZS4u MWM1MzU3NCAxMDA2NDQKIC0tLSBhL2dkYi9taXBzcmVhZC5jCkBAIC03NDMxLDcgKzg3MzEsNyBA QCBpbmRleCBjNjg5NjIyLi5lYjNhZTEwIDEwMDY0NAogICAgQUxMX1BTUEFDRV9PQkpGSUxFUyAo c3MsIG9iamZpbGUpCQkJXAogICAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwgcCkK IGRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCAyODg1NTA2Li43 NzliODE5IDEwMDY0NAoraW5kZXggZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQKIC0tLSBhL2dkYi9w YXJzZS5jCiArKysgYi9nZGIvcGFyc2UuYwogQEAgLTYyLDYgKzYyLDcgQEAgY29uc3Qgc3RydWN0 IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX3N0YW5kYXJkID0KQEAgLTc0NDIsNyArODc0 MiwxOCBAQCBpbmRleCAyODg1NTA2Li43NzliODE5IDEwMDY0NAogICAgICBvcF9uYW1lX3N0YW5k YXJkLAogICAgICBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkLAogICAgICBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQKLUBAIC0xMzU5LDYgKzEzNjAsMTUwIEBAIHBhcnNlcl9mcHJpbnRmIChGSUxF ICp4LCBjb25zdCBjaGFyICp5LCAuLi4pCitAQCAtODQxLDYgKzg0MiwxMCBAQCBvcGVyYXRvcl9s ZW5ndGhfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAorICAg ICAgIGFyZ3MgPSAxOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNlIFRZUEVfSU5TVEFOQ0Vf TE9PS1VQOgorKyAgICAgIG9wbGVuID0gMzsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBP UF9PQkpDX01TR0NBTEw6CS8qIE9iamVjdGl2ZSBDIG1lc3NhZ2UgKG1ldGhvZCkgY2FsbCAqLwor ICAgICAgIG9wbGVuID0gNDsKKyAgICAgICBhcmdzID0gMSArIGxvbmdlc3RfdG9faW50IChleHBy LT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7CitAQCAtMTM2MSw2ICsxMzY2LDE1MCBAQCBw YXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQogICAgdmFfZW5kIChh cmdzKTsKICB9CiAgCkBAIC05NjkxLDcgKzExMDAyLDcgQEAgaW5kZXggMDAwMDAwMC4uNzgzMzg1 ZQogKyAgYnJlYWtwb2ludF9vYmplY3RfZ2V0c2V0CSAgLyogdHBfZ2V0c2V0ICovCiArfTsKIGRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWNtZC5jIGIvZ2RiL3B5dGhvbi9weS1jbWQuYwotaW5k ZXggYWU0NjJkOS4uMjJkMTQwNSAxMDA2NDQKK2luZGV4IGFlNDYyZDkuLmRkMzY0ZGYgMTAwNjQ0 CiAtLS0gYS9nZGIvcHl0aG9uL3B5LWNtZC5jCiArKysgYi9nZGIvcHl0aG9uL3B5LWNtZC5jCiBA QCAtNDksOCArNDksNyBAQCBzdGF0aWMgc3RydWN0IGNtZHB5X2NvbXBsZXRlciBjb21wbGV0ZXJz W10gPQpAQCAtOTcwNCwxNSArMTEwMTUsNyBAQCBpbmRleCBhZTQ2MmQ5Li4yMmQxNDA1IDEwMDY0 NAogIHN0cnVjdCBjbWRweV9vYmplY3QKICB7CiAgICBQeU9iamVjdF9IRUFECi1AQCAtNzAsNyAr NjksNiBAQCB0eXBlZGVmIHN0cnVjdCBjbWRweV9vYmplY3QgY21kcHlfb2JqZWN0OwotIAotIHN0 YXRpYyBQeVR5cGVPYmplY3QgY21kcHlfb2JqZWN0X3R5cGU7Ci0gCi0tCi0gLyogQ29uc3RhbnRz IHVzZWQgYnkgdGhpcyBtb2R1bGUuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqaW52b2tlX2NzdDsK LSBzdGF0aWMgUHlPYmplY3QgKmNvbXBsZXRlX2NzdDsKLUBAIC0yNjMsMTAgKzI2MSwxMyBAQCBj bWRweV9jb21wbGV0ZXIgKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjb21tYW5kLCBjaGFyICp0 ZXh0LCBjaGFyICp3b3JkKQorQEAgLTI2MywxMCArMjYyLDEzIEBAIGNtZHB5X2NvbXBsZXRlciAo c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNvbW1hbmQsIGNoYXIgKnRleHQsIGNoYXIgKndvcmQp CiAgICAgKkJBU0VfTElTVCBpcyBzZXQgdG8gdGhlIGZpbmFsIHByZWZpeCBjb21tYW5kJ3MgbGlz dCBvZgogICAgICpzdWItY29tbWFuZHMuCiAgICAgCkBAIC05NzI4LDcgKzExMDMxLDcgQEAgaW5k ZXggYWU0NjJkOS4uMjJkMTQwNSAxMDA2NDQKICB7CiAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqZWx0OwogICAgaW50IGxlbiA9IHN0cmxlbiAodGV4dCk7Ci1AQCAtMjk5LDcgKzMwMCw3IEBA IHBhcnNlX2NvbW1hbmRfbmFtZSAoY2hhciAqdGV4dCwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KioqYmFzZV9saXN0KQorQEAgLTI5OSw3ICszMDEsNyBAQCBwYXJzZV9jb21tYW5kX25hbWUgKGNo YXIgKnRleHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCkKICAgICAgOwog ICAgaWYgKGkgPCAwKQogICAgICB7CkBAIC05NzM3LDcgKzExMDQwLDcgQEAgaW5kZXggYWU0NjJk OS4uMjJkMTQwNSAxMDA2NDQKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgCi1AQCAt MzA4LDcgKzMwOSw3IEBAIHBhcnNlX2NvbW1hbmRfbmFtZSAoY2hhciAqdGV4dCwgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKioqYmFzZV9saXN0KQorQEAgLTMwOCw3ICszMTAsNyBAQCBwYXJzZV9j b21tYW5kX25hbWUgKGNoYXIgKnRleHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2Vf bGlzdCkKICAgIHByZWZpeF90ZXh0W2kgKyAxXSA9ICdcMCc7CiAgCiAgICB0ZXh0ID0gcHJlZml4 X3RleHQ7CkBAIC05NzQ2LDcgKzExMDQ5LDcgQEAgaW5kZXggYWU0NjJkOS4uMjJkMTQwNSAxMDA2 NDQKICAgIGlmICghZWx0IHx8IGVsdCA9PSAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKikgLTEp CiAgICAgIHsKICAgICAgICBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgXygiY291 bGQgbm90IGZpbmQgY29tbWFuZCBwcmVmaXggJXMiKSwKLUBAIC0zOTksNyArNDAwLDcgQEAgY21k cHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCitA QCAtMzk5LDcgKzQwMSw3IEBAIGNtZHB5X2luaXQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq YXJncywgUHlPYmplY3QgKmt3KQogICAgICAgIHJldHVybiAtMTsKICAgICAgfQogIApAQCAtMTM0 MTksMjMgKzE0NzIyLDIyIEBAIGluZGV4IDkxOTZmMDguLjUyMzBhOGMgMTAwNjQ0CiAgCiAgI2Vu ZGlmIC8qIEdEQl9QWVRIT05fSU5URVJOQUxfSCAqLwogZGlmZiAtLWdpdCBhL2dkYi9weXRob24v cHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCi1pbmRleCA4MjczNzJjLi4xNzFjZDViIDEw MDY0NAoraW5kZXggMjkzODZjOS4uMTk1ZGFjZSAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHl0 aG9uLmMKICsrKyBiL2dkYi9weXRob24vcHl0aG9uLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2lu Y2x1ZGUgIm9ic2VydmVyLmgiCitAQCAtMjgsNiArMjgsNyBAQAogICNpbmNsdWRlICJ2YWx1ZS5o IgogICNpbmNsdWRlICJsYW5ndWFnZS5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiArI2lu Y2x1ZGUgImV2ZW50LWxvb3AuaCIKICAKICAjaW5jbHVkZSA8Y3R5cGUuaD4KICAKLUBAIC00NSwx MSArNDYsMTggQEAgc3RhdGljIGludCBnZGJweV9hdXRvX2xvYWQgPSAxOworQEAgLTQ2LDEwICs0 NywxNyBAQCBzdGF0aWMgaW50IGdkYnB5X2F1dG9fbG9hZCA9IDE7CiAgI2luY2x1ZGUgImNsaS9j bGktZGVjb2RlLmgiCiAgI2luY2x1ZGUgImNoYXJzZXQuaCIKICAjaW5jbHVkZSAidG9wLmgiCiAr I2luY2x1ZGUgInNvbGliLmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICAjaW5jbHVkZSAi cHl0aG9uLWludGVybmFsLmgiCiArI2luY2x1ZGUgImxpbmVzcGVjLmgiCiArI2luY2x1ZGUgInN5 bXRhYi5oIgpAQCAtMTM2MjQsNyArMTQ5MjYsNyBAQCBpbmRleCA4MjczNzJjLi4xNzFjZDViIDEw MDY0NAogIC8qIFBhcnNlIGEgc3RyaW5nIGFuZCBldmFsdWF0ZSBpdCBhcyBhbiBleHByZXNzaW9u LiAgKi8KICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X3BhcnNlX2FuZF9ldmFsIChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi1AQCAtMzQ1LDYgKzQ1MiwxMTQgQEAgZ2RicHlfcGFy c2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK0BAIC0zNjEsNiAr NDY4LDExNCBAQCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFtLCBjaGFyICpmaWxl KQogIAogIAwKICAKQEAgLTEzNzM5LDcgKzE1MDQxLDcgQEAgaW5kZXggODI3MzcyYy4uMTcxY2Q1 YiAxMDA2NDQKICAvKiBQcmludGluZy4gICovCiAgCiAgLyogQSBweXRob24gZnVuY3Rpb24gdG8g d3JpdGUgYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGdkYidzIGZpbHRlcmVkCi1AQCAtMzgxLDYgKzU5 Niw2NyBAQCBnZGJweV9wcmludF9zdGFjayAodm9pZCkKK0BAIC0zOTcsNiArNjEyLDU1IEBAIGdk YnB5X3ByaW50X3N0YWNrICh2b2lkKQogIAogIAwKICAKQEAgLTEzNzkwLDM4ICsxNTA5MiwxMiBA QCBpbmRleCA4MjczNzJjLi4xNzFjZDViIDEwMDY0NAogKyAgZXhpdCAoMCk7CiArfQogKwotK3Zv aWQKLStzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFtLCBjaGFyICpmaWxlKQotK3sK LSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwotKyAgY2xlYW51cCA9IGVuc3VyZV9weXRo b25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsgIFB5UnVu X1NpbXBsZUZpbGUgKHN0cmVhbSwgZmlsZSk7Ci0rCi0rICBmY2xvc2UgKHN0cmVhbSk7Ci0rICBk b19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwogKwwKICsKICAvKiBUaGUgImN1cnJlbnQiIG9i amZpbGUuICBUaGlzIGlzIHNldCB3aGVuIGdkYiBkZXRlY3RzIHRoYXQgYSBuZXcKICAgICBvYmpm aWxlIGhhcyBiZWVuIGxvYWRlZC4gIEl0IGlzIG9ubHkgc2V0IGZvciB0aGUgZHVyYXRpb24gb2Yg YSBjYWxsCiAgICAgdG8gZ2RicHlfbmV3X29iamZpbGU7IGl0IGlzIE5VTEwgYXQgb3RoZXIgdGlt ZXMuICAqLwotQEAgLTUyNSw2ICs4MDEsMTMgQEAgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2Nv bW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKmNtZCkKLSAgIGVycm9yIChfKCJQeXRob24gc2Ny aXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7Ci0gfQotIAot K3ZvaWQKLStzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFtKQotK3sKLSsgIGZjbG9z ZSAoc3RyZWFtKTsKLSsgIGVycm9yIChfKCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0 ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7Ci0rfQotKwotICNlbmRpZiAvKiBIQVZFX1BZVEhP TiAqLwotIAotIAwKLUBAIC02MTYsMTQgKzg5OSwyOCBAQCBFbmFibGVzIG9yIGRpc2FibGVzIGF1 dG8tbG9hZGluZyBvZiBQeXRob24gY29kZSB3aGVuIGFuIG9iamVjdCBpcyBvcGVuZWQuIiksCitA QCAtNjQwLDE0ICs5MDQsMjggQEAgRW5hYmxlcyBvciBkaXNhYmxlcyBhdXRvLWxvYWRpbmcgb2Yg UHl0aG9uIGNvZGUgd2hlbiBhbiBvYmplY3QgaXMgb3BlbmVkLiIpLAogICAgUHlNb2R1bGVfQWRk U3RyaW5nQ29uc3RhbnQgKGdkYl9tb2R1bGUsICJWRVJTSU9OIiwgKGNoYXIqKSB2ZXJzaW9uKTsK ICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50IChnZGJfbW9kdWxlLCAiSE9TVF9DT05GSUci LCAoY2hhciopIGhvc3RfbmFtZSk7CiAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudCAoZ2Ri X21vZHVsZSwgIlRBUkdFVF9DT05GSUciLCAoY2hhciopIHRhcmdldF9uYW1lKTsKQEAgLTEzODUw LDcgKzE1MTI2LDcgQEAgaW5kZXggODI3MzcyYy4uMTcxY2Q1YiAxMDA2NDQKICAKICAgIFB5UnVu X1NpbXBsZVN0cmluZyAoImltcG9ydCBnZGIiKTsKICAgIFB5UnVuX1NpbXBsZVN0cmluZyAoImdk Yi5wcmV0dHlfcHJpbnRlcnMgPSBbXSIpOwotQEAgLTY1OSw2ICs5NTYsMTUgQEAgY2xhc3MgR2Ri T3V0cHV0RmlsZTpcblwKK0BAIC02ODMsNiArOTYxLDE1IEBAIGNsYXNzIEdkYk91dHB1dEZpbGU6 XG5cCiAgXG5cCiAgc3lzLnN0ZGVyciA9IEdkYk91dHB1dEZpbGUoKVxuXAogIHN5cy5zdGRvdXQg PSBHZGJPdXRwdXRGaWxlKClcblwKQEAgLTEzODY2LDcgKzE1MTQyLDcgQEAgaW5kZXggODI3Mzcy Yy4uMTcxY2Q1YiAxMDA2NDQKICAiKTsKICAKICAgIC8qIFJlbGVhc2UgdGhlIEdJTCB3aGlsZSBn ZGIgcnVucy4gICovCi1AQCAtNjc4LDkgKzk4NCwxNCBAQCBzdGF0aWMgUHlNZXRob2REZWYgR2Ri TWV0aG9kc1tdID0KK0BAIC03MDIsOSArOTg5LDE0IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJN ZXRob2RzW10gPQogICAgICAiR2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9LAogICAgeyAiZXhl Y3V0ZSIsIGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUywKICAgICAgIkV4ZWN1dGUg YSBnZGIgY29tbWFuZCIgfSwKQEAgLTEzODgxLDcgKzE1MTU3LDcgQEAgaW5kZXggODI3MzcyYy4u MTcxY2Q1YiAxMDA2NDQKICAgIHsgImRlZmF1bHRfdmlzdWFsaXplciIsIGdkYnB5X2RlZmF1bHRf dmlzdWFsaXplciwgTUVUSF9WQVJBUkdTLAogICAgICAiRmluZCB0aGUgZGVmYXVsdCB2aXN1YWxp emVyIGZvciBhIFZhbHVlLiIgfSwKICAKLUBAIC03MDEsMTEgKzEwMTIsMzkgQEAgUmV0dXJuIGEg c3RyaW5nIGV4cGxhaW5pbmcgdW53aW5kIHN0b3AgcmVhc29uLiIgfSwKK0BAIC03MjUsMTEgKzEw MTcsMzkgQEAgUmV0dXJuIGEgc3RyaW5nIGV4cGxhaW5pbmcgdW53aW5kIHN0b3AgcmVhc29uLiIg fSwKICAgICAgImxvb2t1cF90eXBlIChuYW1lIFssIGJsb2NrXSkgLT4gdHlwZVxuXAogIFJldHVy biBhIFR5cGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbmFtZS4iIH0sCiAgCkBAIC0xMzky MiwyNSArMTUxOTgsMjMgQEAgaW5kZXggODI3MzcyYy4uMTcxY2Q1YiAxMDA2NDQKICAgICAgIldy aXRlIGEgc3RyaW5nIHVzaW5nIGdkYidzIGZpbHRlcmVkIHN0cmVhbS4iIH0sCiAgICB7ICJmbHVz aCIsIGdkYnB5X2ZsdXNoLCBNRVRIX05PQVJHUywKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5 dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAotaW5kZXggZjM1ODI3Yi4uMWE1YjlhOCAxMDA2 NDQKK2luZGV4IDVkOTNmNjcuLjFhNWI5YTggMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhv bi5oCiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1AQCAtMjQsNiArMjQsMTAgQEAKK0BAIC0y Niw2ICsyNiw4IEBAIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVj dCBjb21tYW5kX2xpbmUgKik7CiAgCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29t bWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKKyB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0 IChGSUxFICpzdHJlYW0sIGNoYXIgKmZpbGUpOwogIAotK3ZvaWQgc291cmNlX3B5dGhvbl9zY3Jp cHQgKEZJTEUgKnN0cmVhbSwgY2hhciAqZmlsZSk7Ci0rCiArdm9pZCBydW5fcHl0aG9uX3Njcmlw dCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKICsKICBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmlu dGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJICAg ICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAgICAgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiBkaWZmIC0tZ2l0IGEvZ2RiL3NjbS1s YW5nLmMgYi9nZGIvc2NtLWxhbmcuYwotaW5kZXggMWQwNWY4YS4uZTIwMTVjNCAxMDA2NDQKK2lu ZGV4IDU4OThhYWQuLjIzZTVmMjIgMTAwNjQ0CiAtLS0gYS9nZGIvc2NtLWxhbmcuYwogKysrIGIv Z2RiL3NjbS1sYW5nLmMKLUBAIC0yMzMsNiArMjMzLDcgQEAgY29uc3Qgc3RydWN0IGV4cF9kZXNj cmlwdG9yIGV4cF9kZXNjcmlwdG9yX3NjbSA9CitAQCAtMjMxLDYgKzIzMSw3IEBAIGNvbnN0IHN0 cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9zY20gPQogIHsKICAgIHByaW50X3N1 YmV4cF9zdGFuZGFyZCwKICAgIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKQEAgLTEzOTQ4LDYg KzE1MjIyLDExOCBAQCBpbmRleCAxZDA1ZjhhLi5lMjAxNWM0IDEwMDY0NAogICAgb3BfbmFtZV9z dGFuZGFyZCwKICAgIGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQsCiAgICBldmFsdWF0ZV9leHAK K2RpZmYgLS1naXQgYS9nZGIvc2NtLXZhbHByaW50LmMgYi9nZGIvc2NtLXZhbHByaW50LmMKK2lu ZGV4IDFlOGQ0OGUuLjk1MTg1ZDQgMTAwNjQ0CistLS0gYS9nZGIvc2NtLXZhbHByaW50LmMKKysr KyBiL2dkYi9zY20tdmFscHJpbnQuYworQEAgLTYyLDkgKzYyLDkgQEAgc2NtX2luZmVyaW9yX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCB2YWx1ZSwgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwKKyAgICAgeworICAgICAgIC8qIFhYWDogU2hvdWxkIHdlIGNhY2hlIHRoZXNlIHN5bWJv bHM/ICAqLworICAgICAgIGdkYl9vdXRwdXRfc3ltID0KKy0JbG9va3VwX3N5bWJvbF9nbG9iYWwg KCJnZGJfb3V0cHV0IiwgTlVMTCwgTlVMTCwgVkFSX0RPTUFJTik7CisrCWxvb2t1cF9zeW1ib2xf Z2xvYmFsICgiZ2RiX291dHB1dCIsIE5VTEwsIFZBUl9ET01BSU4pOworICAgICAgIGdkYl9vdXRw dXRfbGVuX3N5bSA9CistCWxvb2t1cF9zeW1ib2xfZ2xvYmFsICgiZ2RiX291dHB1dF9sZW5ndGgi LCBOVUxMLCBOVUxMLCBWQVJfRE9NQUlOKTsKKysJbG9va3VwX3N5bWJvbF9nbG9iYWwgKCJnZGJf b3V0cHV0X2xlbmd0aCIsIE5VTEwsIFZBUl9ET01BSU4pOworIAorICAgICAgIGlmICgoZ2RiX291 dHB1dF9zeW0gPT0gTlVMTCkgfHwgKGdkYl9vdXRwdXRfbGVuX3N5bSA9PSBOVUxMKSkKKyAJcmV0 ID0gLTE7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWRhcndpbi5jIGIvZ2RiL3NvbGliLWRhcndp bi5jCitpbmRleCAzYzcwMDg5Li4wZWU3ZDg1IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLWRhcndp bi5jCisrKysgYi9nZGIvc29saWItZGFyd2luLmMKK0BAIC00MDgsNyArNDA4LDYgQEAgZGFyd2lu X3JlbG9jYXRlX3NlY3Rpb25fYWRkcmVzc2VzIChzdHJ1Y3Qgc29fbGlzdCAqc28sCisgc3RhdGlj IHN0cnVjdCBzeW1ib2wgKgorIGRhcndpbl9sb29rdXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCisgCQkJICBjb25zdCBjaGFyICpuYW1lLAorLQkJCSAgY29uc3Qg Y2hhciAqbGlua2FnZV9uYW1lLAorIAkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQorIHsK KyAgIHJldHVybiBOVUxMOworZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zcHUuYyBiL2dkYi9zb2xp Yi1zcHUuYworaW5kZXggOTRhNzdmYi4uN2VhNjhkMiAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1z cHUuYworKysrIGIvZ2RiL3NvbGliLXNwdS5jCitAQCAtMzI2LDE2ICszMjYsMTMgQEAgc3B1X2Jm ZF9vcGVuIChjaGFyICpwYXRobmFtZSkKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCisgc3B1X2xv b2t1cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCSAgICAg ICBjb25zdCBjaGFyICpuYW1lLAorLQkJICAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwK KyAJCSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisgeworICAgaWYgKGJmZF9nZXRf YXJjaCAob2JqZmlsZS0+b2JmZCkgPT0gYmZkX2FyY2hfc3B1KQorLSAgICByZXR1cm4gbG9va3Vw X2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChvYmpmaWxlLCBuYW1lLCBsaW5rYWdlX25hbWUs CistCQkJCQkgICAgICBkb21haW4pOworKyAgICByZXR1cm4gbG9va3VwX2dsb2JhbF9zeW1ib2xf ZnJvbV9vYmpmaWxlIChvYmpmaWxlLCBuYW1lLCBkb21haW4pOworIAorICAgaWYgKHN2cjRfc29f b3BzLmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAhPSBOVUxMKQorLSAgICByZXR1cm4gc3ZyNF9z b19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChvYmpmaWxlLCBuYW1lLCBsaW5rYWdlX25h bWUsCistCQkJCQkJIGRvbWFpbik7CisrICAgIHJldHVybiBzdnI0X3NvX29wcy5sb29rdXBfbGli X2dsb2JhbF9zeW1ib2wgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7CisgICByZXR1cm4gTlVMTDsK KyB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMK K2luZGV4IDgyNmY4YmYuLjRkZWY4OGQgMTAwNjQ0CistLS0gYS9nZGIvc29saWItc3ZyNC5jCisr KysgYi9nZGIvc29saWItc3ZyNC5jCitAQCAtMTk2MCw3ICsxOTYwLDYgQEAgc3RydWN0IHRhcmdl dF9zb19vcHMgc3ZyNF9zb19vcHM7Cisgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgorIGVsZl9sb29r dXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkgICAgICAg Y29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisg CQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQorIHsKKyAgIGJmZCAqYWJmZDsKK0BA IC0xOTc4LDggKzE5NzcsNyBAQCBlbGZfbG9va3VwX2xpYl9zeW1ib2wgKGNvbnN0IHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorICAgaWYgKGFiZmQgPT0gTlVMTCB8fCBzY2FuX2R5bnRhZyAoRFRf U1lNQk9MSUMsIGFiZmQsIE5VTEwpICE9IDEpCisgICAgIHJldHVybiBOVUxMOworIAorLSAgcmV0 dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZQorLQkJKG9iamZpbGUsIG5hbWUs IGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKKysgIHJldHVybiBsb29rdXBfZ2xvYmFsX3N5bWJvbF9m cm9tX29iamZpbGUgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7CisgfQorIAorIGV4dGVybiBpbml0 aWFsaXplX2ZpbGVfZnR5cGUgX2luaXRpYWxpemVfc3ZyNF9zb2xpYjsgLyogLVdtaXNzaW5nLXBy b3RvdHlwZXMgKi8KK2RpZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCitpbmRl eCA4NDJiMjdjLi5hYzFjNDA3IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLmMKKysrKyBiL2dkYi9z b2xpYi5jCitAQCAtMTE1NCwxMyArMTE1NCwxMiBAQCBzaG93X2F1dG9fc29saWJfYWRkIChzdHJ1 Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorIHN0cnVjdCBzeW1ib2wgKgorIHNvbGli X2dsb2JhbF9sb29rdXAgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJICAgICBj b25zdCBjaGFyICpuYW1lLAorLQkJICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgCQkg ICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CisgICBzdHJ1Y3QgdGFyZ2V0X3NvX29w cyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CisgCisgICBpZiAob3BzLT5sb29r dXBfbGliX2dsb2JhbF9zeW1ib2wgIT0gTlVMTCkKKy0gICAgcmV0dXJuIG9wcy0+bG9va3VwX2xp Yl9nbG9iYWxfc3ltYm9sIChvYmpmaWxlLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Cisr ICAgIHJldHVybiBvcHMtPmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAob2JqZmlsZSwgbmFtZSwg ZG9tYWluKTsKKyAgIHJldHVybiBOVUxMOworIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIvc29saXN0 LmggYi9nZGIvc29saXN0LmgKK2luZGV4IDU3M2Y3MzYuLjUxYmZjZTkgMTAwNjQ0CistLS0gYS9n ZGIvc29saXN0LmgKKysrKyBiL2dkYi9zb2xpc3QuaAorQEAgLTExNyw3ICsxMTcsNiBAQCBzdHJ1 Y3QgdGFyZ2V0X3NvX29wcworICAgICAvKiBIb29rIGZvciBsb29raW5nIHVwIGdsb2JhbCBzeW1i b2xzIGluIGEgbGlicmFyeS1zcGVjaWZpYyB3YXkuICAqLworICAgICBzdHJ1Y3Qgc3ltYm9sICog KCpsb29rdXBfbGliX2dsb2JhbF9zeW1ib2wpIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKyAJCQkJCQkgY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCQkgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAorIAkJCQkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pOworIAorICAgICAvKiBH aXZlbiB0d28gc29fbGlzdCBvYmplY3RzLCBvbmUgZnJvbSB0aGUgR0RCIHRocmVhZCBsaXN0CitA QCAtMTU3LDcgKzE1Niw2IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqY3VycmVudF90 YXJnZXRfc29fb3BzOworIC8qIEhhbmRsZXIgZm9yIGxpYnJhcnktc3BlY2lmaWMgZ2xvYmFsIHN5 bWJvbCBsb29rdXAgaW4gc29saWIuYy4gICovCisgc3RydWN0IHN5bWJvbCAqc29saWJfZ2xvYmFs X2xvb2t1cCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJCSAgICBjb25zdCBj aGFyICpuYW1lLAorLQkJCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCQkgICAg Y29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKKyAKKyAjZW5kaWYKIGRpZmYgLS1naXQgYS9nZGIv c29tcmVhZC5jIGIvZ2RiL3NvbXJlYWQuYwogaW5kZXggYzdiZWFiYS4uZTMxMTY0YyAxMDA2NDQK IC0tLSBhL2dkYi9zb21yZWFkLmMKQEAgLTEzOTYwLDggKzE1MzQ2LDIxIEBAIGluZGV4IGM3YmVh YmEuLmUzMTE2NGMgMTAwNjQ0CiAgICBzb21fc3ltZmlsZV9maW5pc2gsCQkvKiBzeW1fZmluaXNo OiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KICAgIHNvbV9zeW1maWxlX29mZnNldHMs CQkvKiBzeW1fb2Zmc2V0czogIFRyYW5zbGF0ZSBleHQuIHRvIGludC4gcmVsb2NhdGlvbiAqLwog ICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBzeW1fc2VnbWVudHM6IEdldCBzZWdtZW50 IGluZm9ybWF0aW9uIGZyb20KK2RpZmYgLS1naXQgYS9nZGIvc3B1LXRkZXAuYyBiL2dkYi9zcHUt dGRlcC5jCitpbmRleCBjNmRiOGRjLi43MzU5YjUwIDEwMDY0NAorLS0tIGEvZ2RiL3NwdS10ZGVw LmMKKysrKyBiL2dkYi9zcHUtdGRlcC5jCitAQCAtMTg0MSw3ICsxODQxLDcgQEAgc3B1X2NhdGNo X3N0YXJ0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgICAgICBzdHJ1Y3Qgc3ltYm9sICpz eW07CisgICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7CisgCistICAgICAgc3ltID0g bG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssICJtYWluIiwgTlVMTCwgVkFSX0RPTUFJTik7Cisr ICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssICJtYWluIiwgVkFSX0RPTUFJ Tik7CisgICAgICAgaWYgKHN5bSkKKyAJeworIAkgIGZpeHVwX3N5bWJvbF9zZWN0aW9uIChzeW0s IG9iamZpbGUpOwogZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKLWluZGV4 IDZlMTk4ZTAuLjk0YTNlZjkgMTAwNjQ0CitpbmRleCAyY2FmOWQyLi43YWRjMzk5IDEwMDY0NAog LS0tIGEvZ2RiL3N0YWNrLmMKICsrKyBiL2dkYi9zdGFjay5jCiBAQCAtMTMwOSwyNCArMTMwOSwy NCBAQCBiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9leHAsIGludCBzaG93X2xvY2Fs cywgaW50IGZyb21fdHR5KQpAQCAtMTQwMDgsMTAgKzE1NDA3LDEwIEBAIGluZGV4IDZlMTk4ZTAu Ljk0YTNlZjkgMTAwNjQ0CiAgICBmb3IgKGkgPSAwLCBmaSA9IHRyYWlsaW5nOyBmaSAmJiBjb3Vu dC0tOyBpKyssIGZpID0gZ2V0X3ByZXZfZnJhbWUgKGZpKSkKICAgICAgewogZGlmZiAtLWdpdCBh L2dkYi9zeW1maWxlLmMgYi9nZGIvc3ltZmlsZS5jCi1pbmRleCA4OWNjMDdjLi5iNzU5ZjEwIDEw MDY0NAoraW5kZXggYmM1MjQwNi4uNWQ1ZDgzZiAxMDA2NDQKIC0tLSBhL2dkYi9zeW1maWxlLmMK ICsrKyBiL2dkYi9zeW1maWxlLmMKLUBAIC05NjgsMTMgKzk2OCwxNiBAQCBzeW1ib2xfZmlsZV9h ZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFiZmQsCitAQCAtOTY2LDEzICs5NjYsMTYg QEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAogICAg LyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIGJ1cnAgaWYgd2UnZCBiZQogICAgICAgaW50ZXJhY3Rp dmVseSB3aXBpbmcgb3V0IGFueSBleGlzdGluZyBzeW1ib2xzLiAgKi8KICAKQEAgLTE0MDMwLDcg KzE1NDI5LDcgQEAgaW5kZXggODljYzA3Yy4uYjc1OWYxMCAxMDA2NDQKICAgIGRpc2NhcmRfY2xl YW51cHMgKG15X2NsZWFudXBzKTsKICAKICAgIC8qIFdlIGVpdGhlciBjcmVhdGVkIGEgbmV3IG1h cHBlZCBzeW1ib2wgdGFibGUsIG1hcHBlZCBhbiBleGlzdGluZwotQEAgLTEwMDEsNiArMTAwNCw4 IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKK0BA IC05OTksNiArMTAwMiw4IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMg KGJmZCAqYWJmZCwKICAKICAgIGlmICgoZmxhZ3MgJiBPQkpGX1JFQUROT1cpIHx8IHJlYWRub3df c3ltYm9sX2ZpbGVzKQogICAgICB7CkBAIC0xNDAzOSw3ICsxNTQzOCw3IEBAIGluZGV4IDg5Y2Mw N2MuLmI3NTlmMTAgMTAwNjQ0CiAgICAgICAgaWYgKGZyb21fdHR5IHx8IGluZm9fdmVyYm9zZSkK ICAJewogIAkgIHByaW50Zl91bmZpbHRlcmVkIChfKCJleHBhbmRpbmcgdG8gZnVsbCBzeW1ib2xz Li4uIikpOwotQEAgLTIzMjMsNiArMjMyOCw3IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQorQEAg LTIzMjEsNiArMjMyNiw3IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQogIAkgIG9iamZpbGUtPnN5 bXRhYnMgPSBOVUxMOwogIAkgIG9iamZpbGUtPnBzeW10YWJzID0gTlVMTDsKICAJICBvYmpmaWxl LT5wc3ltdGFic19hZGRybWFwID0gTlVMTDsKQEAgLTE0MDQ3LDcgKzE1NDQ2LDcgQEAgaW5kZXgg ODljYzA3Yy4uYjc1OWYxMCAxMDA2NDQKICAJICBvYmpmaWxlLT5mcmVlX3BzeW10YWJzID0gTlVM TDsKICAJICBvYmpmaWxlLT5jcF9uYW1lc3BhY2Vfc3ltdGFiID0gTlVMTDsKICAJICBvYmpmaWxl LT5tc3ltYm9scyA9IE5VTEw7Ci1AQCAtMjMzMyw2ICsyMzM5LDggQEAgcmVyZWFkX3N5bWJvbHMg KHZvaWQpCitAQCAtMjMzMSw2ICsyMzM3LDggQEAgcmVyZWFkX3N5bWJvbHMgKHZvaWQpCiAgCSAg bWVtc2V0ICgmb2JqZmlsZS0+bXN5bWJvbF9kZW1hbmdsZWRfaGFzaCwgMCwKICAJCSAgc2l6ZW9m IChvYmpmaWxlLT5tc3ltYm9sX2RlbWFuZ2xlZF9oYXNoKSk7CiAgCkBAIC0xNDA1Nyw3ICsxNTQ1 Niw3IEBAIGluZGV4IDg5Y2MwN2MuLmI3NTlmMTAgMTAwNjQ0CiAgCSAgb2JqZmlsZS0+bWFjcm9f Y2FjaGUgPSBiY2FjaGVfeG1hbGxvYyAoKTsKICAJICBvYmpmaWxlLT5maWxlbmFtZV9jYWNoZSA9 IGJjYWNoZV94bWFsbG9jICgpOwogZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3lt ZmlsZS5oCi1pbmRleCA3YWU4MTljLi5mM2Y2ZWIzIDEwMDY0NAoraW5kZXggZWZhMDY5ZS4uYjUy MGI5MyAxMDA2NDQKIC0tLSBhL2dkYi9zeW1maWxlLmgKICsrKyBiL2dkYi9zeW1maWxlLmgKIEBA IC0xMzksNiArMTM5LDEyIEBAIHN0cnVjdCBzeW1fZm5zCkBAIC0xNDA3Myw3ICsxNTQ3MiwxNyBA QCBpbmRleCA3YWU4MTljLi5mM2Y2ZWIzIDEwMDY0NAogICAgLyogQ2FsbGVkIHdoZW4gd2UgYXJl IGZpbmlzaGVkIHdpdGggYW4gb2JqZmlsZS4gIFNob3VsZCBkbyBhbGwKICAgICAgIGNsZWFudXAg dGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgb2JqZWN0IGZpbGUgZm9ybWF0IGZvciB0aGUKICAgICAg IHBhcnRpY3VsYXIgb2JqZmlsZS4gICovCi1AQCAtMzg5LDcgKzM5NSw3IEBAIHZvaWQgZnJlZV9z eW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHN5bWZpbGVfc2VnbWVudF9kYXRhICpkYXRhKTsK K0BAIC0zMTUsOCArMzIxLDcgQEAgZXh0ZXJuIGludCBhdXRvX3NvbGliX2xpbWl0OworIAorIGV4 dGVybiB2b2lkIHNldF9pbml0aWFsX2xhbmd1YWdlICh2b2lkKTsKKyAKKy1leHRlcm4gc3RydWN0 IHBhcnRpYWxfc3ltdGFiICphbGxvY2F0ZV9wc3ltdGFiIChjb25zdCBjaGFyICosCistCQkJCQkJ c3RydWN0IG9iamZpbGUgKik7CisrZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqYWxsb2Nh dGVfcHN5bXRhYiAoY29uc3QgY2hhciAqLCBzdHJ1Y3Qgb2JqZmlsZSAqKTsKKyAKKyBleHRlcm4g dm9pZCBkaXNjYXJkX3BzeW10YWIgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqKTsKKyAKK0BAIC0z ODcsNyArMzkyLDcgQEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1Y3Qgc3lt ZmlsZV9zZWdtZW50X2RhdGEgKmRhdGEpOwogIC8qIEZyb20gZHdhcmYycmVhZC5jICovCiAgCiAg ZXh0ZXJuIGludCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICopOwpAQCAtMTQwODIs MTEgKzE1NDkxLDczIEBAIGluZGV4IDdhZTgxOWMuLmYzZjZlYjMgMTAwNjQ0CiAgZXh0ZXJuIHZv aWQgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKICBleHRlcm4gdm9p ZCBkd2FyZjJfYnVpbGRfZnJhbWVfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7CiAgCitkaWZmIC0t Z2l0IGEvZ2RiL3N5bW1pc2MuYyBiL2dkYi9zeW1taXNjLmMKK2luZGV4IDFmM2ViOWUuLmQwOTZk NWMgMTAwNjQ0CistLS0gYS9nZGIvc3ltbWlzYy5jCisrKysgYi9nZGIvc3ltbWlzYy5jCitAQCAt MTE0Myw3ICsxMTQzLDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdub3Jl LCBpbnQgZnJvbV90dHkpCisgICAgIHdoaWxlIChsZW5ndGgtLSkKKyAgICAgICB7CisgCXN5bSA9 IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIFNZTUJPTF9MSU5LQUdFX05BTUUgKCpwc3ltKSwKKy0J CQkJICAgTlVMTCwgU1lNQk9MX0RPTUFJTiAoKnBzeW0pKTsKKysJCQkJICAgU1lNQk9MX0RPTUFJ TiAoKnBzeW0pKTsKKyAJaWYgKCFzeW0pCisgCSAgeworIAkgICAgcHJpbnRmX2ZpbHRlcmVkICgi U3RhdGljIHN5bWJvbCBgIik7CitAQCAtMTE2MCw3ICsxMTYwLDcgQEAgbWFpbnRlbmFuY2VfY2hl Y2tfc3ltdGFicyAoY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCisgICAgIHdoaWxlIChsZW5n dGgtLSkKKyAgICAgICB7CisgCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIFNZTUJPTF9M SU5LQUdFX05BTUUgKCpwc3ltKSwKKy0JCQkJICAgTlVMTCwgU1lNQk9MX0RPTUFJTiAoKnBzeW0p KTsKKysJCQkJICAgU1lNQk9MX0RPTUFJTiAoKnBzeW0pKTsKKyAJaWYgKCFzeW0pCisgCSAgewor IAkgICAgcHJpbnRmX2ZpbHRlcmVkICgiR2xvYmFsIHN5bWJvbCBgIik7CiBkaWZmIC0tZ2l0IGEv Z2RiL3N5bXRhYi5jIGIvZ2RiL3N5bXRhYi5jCi1pbmRleCA0MjYzMjZkLi5iYWM0Y2EzIDEwMDY0 NAoraW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKIC0tLSBhL2dkYi9zeW10YWIuYwogKysr IGIvZ2RiL3N5bXRhYi5jCi1AQCAtMjcxLDcgKzI3MSw3IEBAIGxvb2t1cF9wYXJ0aWFsX3N5bXRh YiAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgImFkYS1s YW5nLmgiCisgI2luY2x1ZGUgInAtbGFuZy5oIgorICNpbmNsdWRlICJhZGRybWFwLmgiCisrI2lu Y2x1ZGUgImNwLXN1cHBvcnQuaCIKKyAKKyAjaW5jbHVkZSAiaGFzaHRhYi5oIgorIAorQEAgLTg1 LDcgKzg2LDYgQEAgc3RhdGljIGludCBmaW5kX2xpbmVfY29tbW9uIChzdHJ1Y3QgbGluZXRhYmxl ICosIGludCwgaW50ICopOworIGNoYXIgKm9wZXJhdG9yX2NoYXJzIChjaGFyICpwLCBjaGFyICoq ZW5kKTsKKyAKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0 IGNoYXIgKm5hbWUsCistCQkJCQkgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCQkJIGNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkJCQkgY29uc3QgZG9tYWluX2VudW0gZG9tYWlu LAorIAkJCQkJIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsCitAQCAtOTMsMjAgKzkzLDE5IEBAIHN0 YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwK KyAKKyBzdGF0aWMKKyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAoY29u c3QgY2hhciAqbmFtZSwKKy0JCQkJCWNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCWNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCistCQkJCQljb25zdCBkb21haW5fZW51bSBkb21haW4p OworKwkJCQkJY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorKwkJCQkJZW51bSBsYW5ndWFnZSBs YW5ndWFnZSwKKysJCQkJCWludCAqaXNfYV9maWVsZF9vZl90aGlzKTsKKyAKKyBzdGF0aWMKKyBz dHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQgYmxvY2tfaW5kZXgs CisgCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2Vf bmFtZSwKKyAJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKKyAKKyBzdGF0aWMKKyBz dHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4 LAorIAkJCQkJICAgY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCSAgIGNvbnN0IGNoYXIgKmxpbmth Z2VfbmFtZSwKKyAJCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7CisgCisgc3RhdGlj IGludCBmaWxlX21hdGNoZXMgKGNoYXIgKiwgY2hhciAqKiwgaW50KTsKK0BAIC0yNzEsNyArMjcw LDcgQEAgbG9va3VwX3BhcnRpYWxfc3ltdGFiIChjb25zdCBjaGFyICpuYW1lKQogICAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIHJlYWxfcGF0aCk7CiAgICAgIH0KICAKQEAgLTE0MDk1LDcgKzE1 NTY2LDcgQEAgaW5kZXggNDI2MzI2ZC4uYmFjNGNhMyAxMDA2NDQKICAgIHsKICAgICAgaWYgKEZJ TEVOQU1FX0NNUCAobmFtZSwgcHN0LT5maWxlbmFtZSkgPT0gMCkKICAgICAgICB7Ci1AQCAtNDE0 LDcgKzQxNCw4IEBAIHN5bWJvbF9pbml0X2xhbmd1YWdlX3NwZWNpZmljIChzdHJ1Y3QgZ2VuZXJh bF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCwKK0BAIC00MTQsNyArNDEzLDggQEAgc3ltYm9sX2luaXRf bGFuZ3VhZ2Vfc3BlY2lmaWMgKHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sLAog ICAgZ3N5bWJvbC0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKICAgIGlmIChnc3ltYm9sLT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9jcGx1cwogICAgICAgIHx8IGdzeW1ib2wtPmxhbmd1YWdlID09IGxhbmd1 YWdlX2phdmEKQEAgLTE0MTA1LDcgKzE1NTc2LDE2IEBAIGluZGV4IDQyNjMyNmQuLmJhYzRjYTMg MTAwNjQ0CiAgICAgIHsKICAgICAgICBnc3ltYm9sLT5sYW5ndWFnZV9zcGVjaWZpYy5jcGx1c19z cGVjaWZpYy5kZW1hbmdsZWRfbmFtZSA9IE5VTEw7CiAgICAgIH0KLUBAIC02OTUsNiArNjk2LDcg QEAgc3ltYm9sX25hdHVyYWxfbmFtZSAoY29uc3Qgc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8g KmdzeW1ib2wpCitAQCAtNDk4LDcgKzQ5OCw3IEBAIHN5bWJvbF9maW5kX2RlbWFuZ2xlZF9uYW1l IChzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCwKKyAgICAgICB8fCBnc3ltYm9s LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9hdXRvKQorICAgICB7CisgICAgICAgZGVtYW5nbGVkID0K Ky0gICAgICAgIGNwbHVzX2RlbWFuZ2xlIChtYW5nbGVkLCBETUdMX1BBUkFNUyB8IERNR0xfQU5T SSk7CisrICAgICAgICBjcGx1c19kZW1hbmdsZSAobWFuZ2xlZCwgRE1HTF9QQVJBTVMgfCBETUdM X0FOU0kgfCBETUdMX1ZFUkJPU0UpOworICAgICAgIGlmIChkZW1hbmdsZWQgIT0gTlVMTCkKKyAJ eworIAkgIGdzeW1ib2wtPmxhbmd1YWdlID0gbGFuZ3VhZ2VfY3BsdXM7CitAQCAtNjk1LDYgKzY5 NSw3IEBAIHN5bWJvbF9uYXR1cmFsX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9p bmZvICpnc3ltYm9sKQogICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOgogICAgICBjYXNlIGxhbmd1 YWdlX2phdmE6CiAgICAgIGNhc2UgbGFuZ3VhZ2Vfb2JqYzoKQEAgLTE0MTEzLDcgKzE1NTkzLDcg QEAgaW5kZXggNDI2MzI2ZC4uYmFjNGNhMyAxMDA2NDQKICAgICAgICBpZiAoZ3N5bWJvbC0+bGFu Z3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWUgIT0gTlVMTCkKICAJ cmV0dXJuIGdzeW1ib2wtPmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xl ZF9uYW1lOwogICAgICAgIGJyZWFrOwotQEAgLTcyMCw2ICs3MjIsNyBAQCBzeW1ib2xfZGVtYW5n bGVkX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sKQorQEAg LTcyMCw2ICs3MjEsNyBAQCBzeW1ib2xfZGVtYW5nbGVkX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5l cmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sKQogICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOgogICAg ICBjYXNlIGxhbmd1YWdlX2phdmE6CiAgICAgIGNhc2UgbGFuZ3VhZ2Vfb2JqYzoKQEAgLTE0MTIx LDcgKzE1NjAxLDcgQEAgaW5kZXggNDI2MzI2ZC4uYmFjNGNhMyAxMDA2NDQKICAgICAgICBpZiAo Z3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWUg IT0gTlVMTCkKICAJcmV0dXJuIGdzeW1ib2wtPmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNp ZmljLmRlbWFuZ2xlZF9uYW1lOwogICAgICAgIGJyZWFrOwotQEAgLTkzMSw3ICs5MzQsMTMgQEAg ZmluZF9wY19zZWN0X3BzeW10YWIgKENPUkVfQUREUiBwYywgc3RydWN0IG9ial9zZWN0aW9uICpz ZWN0aW9uKQorQEAgLTkzMSw3ICs5MzMsMTMgQEAgZmluZF9wY19zZWN0X3BzeW10YWIgKENPUkVf QUREUiBwYywgc3RydWN0IG9ial9zZWN0aW9uICpzZWN0aW9uKQogICAgICAgdGhhbiB0aGUgbGF0 ZXIgdXNlZCBURVhUTE9XL1RFWFRISUdIIG9uZS4gICovCiAgCiAgICBBTExfT0JKRklMRVMgKG9i amZpbGUpCkBAIC0xNDEzNiw3ICsxNTYxNiw3IEBAIGluZGV4IDQyNjMyNmQuLmJhYzRjYTMgMTAw NjQ0CiAgICAgICAgewogIAlzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdDsKICAKLUBAIC05NjQs NiArOTczLDcgQEAgZmluZF9wY19zZWN0X3BzeW10YWIgKENPUkVfQUREUiBwYywgc3RydWN0IG9i al9zZWN0aW9uICpzZWN0aW9uKQorQEAgLTk2NCw2ICs5NzIsNyBAQCBmaW5kX3BjX3NlY3RfcHN5 bXRhYiAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCiAgCSAgICBy ZXR1cm4gcHN0OwogIAkgIH0KICAgICAgICB9CkBAIC0xNDE0NCw3ICsxNTYyNCw3IEBAIGluZGV4 IDQyNjMyNmQuLmJhYzRjYTMgMTAwNjQ0CiAgCiAgICAvKiBFeGlzdGluZyBQU1lNVEFCU19BRERS TUFQIG1hcHBpbmcgaXMgcHJlc2VudCBldmVuIGZvciBQQVJUSUFMX1NZTVRBQnMKICAgICAgIHdo aWNoIHN0aWxsIGhhdmUgbm8gY29ycmVzcG9uZGluZyBmdWxsIFNZTVRBQnMgcmVhZC4gIEJ1dCBp dCBpcyBub3QKLUBAIC0xMjMxLDYgKzEyNDEsMjIgQEAgZml4dXBfcHN5bWJvbF9zZWN0aW9uIChz dHJ1Y3QgcGFydGlhbF9zeW1ib2wgKnBzeW0sIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorQEAg LTEyMzEsNiArMTI0MCwyMiBAQCBmaXh1cF9wc3ltYm9sX3NlY3Rpb24gKHN0cnVjdCBwYXJ0aWFs X3N5bWJvbCAqcHN5bSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgICByZXR1cm4gcHN5bTsK ICB9CiAgCkBAIC0xNDE2Nyw3ICsxNTY0NywyNjYgQEAgaW5kZXggNDI2MzI2ZC4uYmFjNGNhMyAx MDA2NDQKICAvKiBGaW5kIHRoZSBkZWZpbml0aW9uIGZvciBhIHNwZWNpZmllZCBzeW1ib2wgbmFt ZSBOQU1FCiAgICAgaW4gZG9tYWluIERPTUFJTiwgdmlzaWJsZSBmcm9tIGxleGljYWwgYmxvY2sg QkxPQ0suCiAgICAgUmV0dXJucyB0aGUgc3RydWN0IHN5bWJvbCBwb2ludGVyLCBvciB6ZXJvIGlm IG5vIHN5bWJvbCBpcyBmb3VuZC4KLUBAIC0xNTM0LDYgKzE1NjAsNyBAQCBsb29rdXBfZ2xvYmFs X3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUs CitAQCAtMTI1NywxMCArMTI4MiwxNCBAQCBsb29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25z dCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorIHsKKyAgIGNoYXIgKmRl bWFuZ2xlZF9uYW1lID0gTlVMTDsKKyAgIGNvbnN0IGNoYXIgKm1vZGlmaWVkX25hbWUgPSBOVUxM OworLSAgY29uc3QgY2hhciAqbWFuZ2xlZF9uYW1lID0gTlVMTDsKKyAgIHN0cnVjdCBzeW1ib2wg KnJldHVybnZhbDsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChu dWxsX2NsZWFudXAsIDApOworIAorKyAgaWYoc3RybmNtcChuYW1lLCAiOjoiLCAyKSA9PSAwKXsv KiB0aGlzIG11c3QgYmUgYSBnbG9iYWwgbmFtZSAqLworKyAgICBuYW1lID0gbmFtZSsyOworKyAg ICBibG9jayA9IE5VTEw7CisrICB9CisrICAKKyAgIG1vZGlmaWVkX25hbWUgPSBuYW1lOworIAor ICAgLyogSWYgd2UgYXJlIHVzaW5nIEMrKyBvciBKYXZhLCBkZW1hbmdsZSB0aGUgbmFtZSBiZWZv cmUgZG9pbmcgYSBsb29rdXAsIHNvCitAQCAtMTI3MCw3ICsxMjk5LDYgQEAgbG9va3VwX3N5bWJv bF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9j aywKKyAgICAgICBkZW1hbmdsZWRfbmFtZSA9IGNwbHVzX2RlbWFuZ2xlIChuYW1lLCBETUdMX0FO U0kgfCBETUdMX1BBUkFNUyk7CisgICAgICAgaWYgKGRlbWFuZ2xlZF9uYW1lKQorIAl7CistCSAg bWFuZ2xlZF9uYW1lID0gbmFtZTsKKyAJICBtb2RpZmllZF9uYW1lID0gZGVtYW5nbGVkX25hbWU7 CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVtYW5nbGVkX25hbWUpOworIAl9CitAQCAtMTI5 Miw3ICsxMzIwLDYgQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFt ZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAJCSAgICAgIAkJICAgICAgIERNR0xfQU5T SSB8IERNR0xfUEFSQU1TIHwgRE1HTF9KQVZBKTsKKyAgICAgICBpZiAoZGVtYW5nbGVkX25hbWUp CisgCXsKKy0JICBtYW5nbGVkX25hbWUgPSBuYW1lOworIAkgIG1vZGlmaWVkX25hbWUgPSBkZW1h bmdsZWRfbmFtZTsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZW1hbmdsZWRfbmFtZSk7Cisg CX0KK0BAIC0xMzExLDggKzEzMzgsOCBAQCBsb29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25z dCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorICAgICAgIG1vZGlmaWVk X25hbWUgPSBjb3B5OworICAgICB9CisgCistICByZXR1cm52YWwgPSBsb29rdXBfc3ltYm9sX2F1 eCAobW9kaWZpZWRfbmFtZSwgbWFuZ2xlZF9uYW1lLCBibG9jaywKKy0JCQkJIGRvbWFpbiwgbGFu ZywgaXNfYV9maWVsZF9vZl90aGlzKTsKKysgIHJldHVybnZhbCA9IGxvb2t1cF9zeW1ib2xfYXV4 IChtb2RpZmllZF9uYW1lLCBibG9jaywgZG9tYWluLCBsYW5nLAorKwkJCQkgaXNfYV9maWVsZF9v Zl90aGlzKTsKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAKKyAgIHJldHVybiByZXR1cm52 YWw7CitAQCAtMTMzNiw5ICsxMzYzLDkgQEAgbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqbmFt ZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAgICB3ZWxsLiAgKi8KKyAKKyBzdGF0aWMg c3RydWN0IHN5bWJvbCAqCistbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKy0JCSAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ss IGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKKy0JCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2Us IGludCAqaXNfYV9maWVsZF9vZl90aGlzKQorK2xvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorKwkJICAgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluLCBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlLAorKwkJICAgaW50ICppc19hX2ZpZWxk X29mX3RoaXMpCisgeworICAgc3RydWN0IHN5bWJvbCAqc3ltOworICAgY29uc3Qgc3RydWN0IGxh bmd1YWdlX2RlZm4gKmxhbmdkZWY7CitAQCAtMTM1NCw1NSArMTM4MSwxOSBAQCBsb29rdXBfc3lt Ym9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorICAg LyogU2VhcmNoIHNwZWNpZmllZCBibG9jayBhbmQgaXRzIHN1cGVyaW9ycy4gIERvbid0IHNlYXJj aAorICAgICAgU1RBVElDX0JMT0NLIG9yIEdMT0JBTF9CTE9DSy4gICovCisgCistICBzeW0gPSBs b29rdXBfc3ltYm9sX2F1eF9sb2NhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWlu KTsKKysgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X2xvY2FsIChuYW1lLCBibG9jaywgZG9tYWlu LCBsYW5ndWFnZSwgaXNfYV9maWVsZF9vZl90aGlzKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAg ICAgcmV0dXJuIHN5bTsKKyAKKy0gIC8qIElmIHJlcXVlc3RlZCB0byBkbyBzbyBieSB0aGUgY2Fs bGVyIGFuZCBpZiBhcHByb3ByaWF0ZSBmb3IgTEFOR1VBR0UsCistICAgICBjaGVjayB0byBzZWUg aWYgTkFNRSBpcyBhIGZpZWxkIG9mIGB0aGlzJy4gKi8KKy0KKy0gIGxhbmdkZWYgPSBsYW5ndWFn ZV9kZWYgKGxhbmd1YWdlKTsKKy0KKy0gIGlmIChsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0g TlVMTCAmJiBpc19hX2ZpZWxkX29mX3RoaXMgIT0gTlVMTAorLSAgICAgICYmIGJsb2NrICE9IE5V TEwpCistICAgIHsKKy0gICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBOVUxMOworLSAgICAgIC8q ICd0aGlzJyBpcyBvbmx5IGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uJ3MgYmxvY2ssIHNvIGZpbmQg dGhlCistCSBlbmNsb3NpbmcgZnVuY3Rpb24gYmxvY2suICAqLworLSAgICAgIGZvciAoOyBibG9j ayAmJiAhQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKTsKKy0JICAgYmxvY2sgPSBCTE9DS19TVVBFUkJM T0NLIChibG9jaykpOworLQorLSAgICAgIGlmIChibG9jayAmJiAhZGljdF9lbXB0eSAoQkxPQ0tf RElDVCAoYmxvY2spKSkKKy0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIGxhbmdk ZWYtPmxhX25hbWVfb2ZfdGhpcywKKy0JCQkJICAgTlVMTCwgVkFSX0RPTUFJTik7CistICAgICAg aWYgKHN5bSkKKy0JeworLQkgIHN0cnVjdCB0eXBlICp0ID0gc3ltLT50eXBlOworLQorLQkgIC8q IEknbSBub3QgcmVhbGx5IHN1cmUgdGhhdCB0eXBlIG9mIHRoaXMgY2FuIGV2ZXIKKy0JICAgICBi ZSB0eXBlZGVmZWQ7IGp1c3QgYmUgc2FmZS4gICovCistCSAgQ0hFQ0tfVFlQRURFRiAodCk7Cist CSAgaWYgKFRZUEVfQ09ERSAodCkgPT0gVFlQRV9DT0RFX1BUUgorLQkgICAgICB8fCBUWVBFX0NP REUgKHQpID09IFRZUEVfQ09ERV9SRUYpCistCSAgICB0ID0gVFlQRV9UQVJHRVRfVFlQRSAodCk7 CistCistCSAgaWYgKFRZUEVfQ09ERSAodCkgIT0gVFlQRV9DT0RFX1NUUlVDVAorLQkgICAgICAm JiBUWVBFX0NPREUgKHQpICE9IFRZUEVfQ09ERV9VTklPTikKKy0JICAgIGVycm9yIChfKCJJbnRl cm5hbCBlcnJvcjogYCVzJyBpcyBub3QgYW4gYWdncmVnYXRlIiksCistCQkgICBsYW5nZGVmLT5s YV9uYW1lX29mX3RoaXMpOworLQorLQkgIGlmIChjaGVja19maWVsZCAodCwgbmFtZSkpCistCSAg ICB7CistCSAgICAgICppc19hX2ZpZWxkX29mX3RoaXMgPSAxOworLQkgICAgICByZXR1cm4gTlVM TDsKKy0JICAgIH0KKy0JfQorLSAgICB9CisrICAvKiB0aGlzIHN5bWJvbCB3YXMgZm91bmQgdG8g YmUgYSBtZW1iZXIgdmFyaWFibGUKKysgICAgIGRvIG5vdCBwZXJmb3JtIHRoZSBnbG9iYWwgc2Vh cmNoLiAqLworKyAgaWYgKGlzX2FfZmllbGRfb2ZfdGhpcyAmJiAqaXNfYV9maWVsZF9vZl90aGlz KQorKyAgICByZXR1cm4gTlVMTDsKKyAKKyAgIC8qIE5vdyBkbyB3aGF0ZXZlciBpcyBhcHByb3By aWF0ZSBmb3IgTEFOR1VBR0UgdG8gbG9vaworICAgICAgdXAgc3RhdGljIGFuZCBnbG9iYWwgdmFy aWFibGVzLiAgKi8KKy0KKy0gIHN5bSA9IGxhbmdkZWYtPmxhX2xvb2t1cF9zeW1ib2xfbm9ubG9j YWwgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICBsYW5nZGVmID0gbGFu Z3VhZ2VfZGVmIChsYW5ndWFnZSk7CisrICBzeW0gPSBsYW5nZGVmLT5sYV9sb29rdXBfc3ltYm9s X25vbmxvY2FsIChuYW1lLCBibG9jaywgZG9tYWluKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAg ICAgcmV0dXJuIHN5bTsKKyAKK0BAIC0xNDEyLDExICsxNDAzLDExIEBAIGxvb2t1cF9zeW1ib2xf YXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgICAgICBk ZXNpcmVkIG5hbWUgYXMgYSBmaWxlLWxldmVsIHN0YXRpYywgdGhlbiBkbyBwc3ltdGFiLXRvLXN5 bXRhYgorICAgICAgY29udmVyc2lvbiBvbiB0aGUgZmx5IGFuZCByZXR1cm4gdGhlIGZvdW5kIHN5 bWJvbC4gKi8KKyAKKy0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKFNUQVRJQ19C TE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKyAgc3ltID0gbG9va3VwX3N5bWJv bF9hdXhfc3ltdGFicyAoU1RBVElDX0JMT0NLLCBuYW1lLCBkb21haW4pOworICAgaWYgKHN5bSAh PSBOVUxMKQorICAgICByZXR1cm4gc3ltOworIAorLSAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhf cHN5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKyAg c3ltID0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgZG9t YWluKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsKKyAKK0BAIC0xNDI3 LDMwICsxNDE4LDgxIEBAIGxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25z dCBjaGFyICpsaW5rYWdlX25hbWUsCisgICAgRG9uJ3Qgc2VhcmNoIFNUQVRJQ19CTE9DSyBvciBH TE9CQUxfQkxPQ0suICAqLworIAorIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKKy1sb29rdXBfc3lt Ym9sX2F1eF9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAorLQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorLQkJCSBjb25zdCBkb21haW5fZW51 bSBkb21haW4pCisrbG9va3VwX3N5bWJvbF9hdXhfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisrCQkJIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwg ZW51bSBsYW5ndWFnZSBsYW5ndWFnZSwKKysJCQkgaW50ICppc19hX2ZpZWxkX29mX3RoaXMpCisg eworICAgc3RydWN0IHN5bWJvbCAqc3ltOworLSAgY29uc3Qgc3RydWN0IGJsb2NrICpzdGF0aWNf YmxvY2sgPSBibG9ja19zdGF0aWNfYmxvY2sgKGJsb2NrKTsKKysgIGNvbnN0IHN0cnVjdCBibG9j ayAqZ2xvYmFsX2Jsb2NrID0gYmxvY2tfZ2xvYmFsX2Jsb2NrIChibG9jayk7CisrICBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrX2l0ZXJhdG9yID0gYmxvY2s7CisrICBjb25zdCBzdHJ1Y3QgbGFu Z3VhZ2VfZGVmbiAqbGFuZ2RlZjsKKysKKysgIGxhbmdkZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1 YWdlKTsKKyAKKyAgIC8qIENoZWNrIGlmIGVpdGhlciBubyBibG9jayBpcyBzcGVjaWZpZWQgb3Ig aXQncyBhIGdsb2JhbCBibG9jay4gICovCisgCistICBpZiAoc3RhdGljX2Jsb2NrID09IE5VTEwp CisrICBpZiAoZ2xvYmFsX2Jsb2NrID09IE5VTEwpCisgICAgIHJldHVybiBOVUxMOworIAorLSAg d2hpbGUgKGJsb2NrICE9IHN0YXRpY19ibG9jaykKKysgIHdoaWxlIChibG9ja19pdGVyYXRvciAh PSBnbG9iYWxfYmxvY2spCisgICAgIHsKKy0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9i bG9jayAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKKysKKysgICAgICBzeW0g PSBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgYmxvY2tfaXRlcmF0b3IsIGRvbWFpbik7 CisrCisgICAgICAgaWYgKHN5bSAhPSBOVUxMKQorIAlyZXR1cm4gc3ltOworKyAgICAKKysgICAg ICBpZiAobGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMgKQorKyAgICAgICAgeworKyAgICAgICAg ICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGJsb2NrX3Njb3BlIChibG9ja19pdGVy YXRvciksIG5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmxvY2tfaXRlcmF0b3IsIGRvbWFpbiwgMSwgMSk7CisgCistICAgICAgaWYgKEJMT0NLX0ZVTkNU SU9OIChibG9jaykgIT0gTlVMTCAmJiBibG9ja19pbmxpbmVkX3AgKGJsb2NrKSkKKy0JYnJlYWs7 CistICAgICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jayk7CisrICAgICAgICAgIGlm IChzeW0gIT0gTlVMTCkKKysgICAgICAgICAgICByZXR1cm4gc3ltOworKyAgICAgICAgfQorKwor KyAgICAgIGlmIChsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2ZpZWxk X29mX3RoaXMgIT0gTlVMTAorKwkgICYmIEJMT0NLX0ZVTkNUSU9OIChibG9ja19pdGVyYXRvcikp CisrICAgICAgICB7CisrICAgICAgICAgIGlmICghZGljdF9lbXB0eSAoQkxPQ0tfRElDVCAoYmxv Y2tfaXRlcmF0b3IpKSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBzeW0gPSBsb29r dXBfYmxvY2tfc3ltYm9sIChibG9ja19pdGVyYXRvciwKKysJCQkJCSBsYW5nZGVmLT5sYV9uYW1l X29mX3RoaXMsCisrCQkJCQkgVkFSX0RPTUFJTik7CisrCisrCisrICAgICAgICAgICAgICBpZiAo c3ltKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUg KnQgPSBzeW0tPnR5cGU7CisrCisrICAgICAgICAgICAgICAgICAgLyogSSdtIG5vdCByZWFsbHkg c3VyZSB0aGF0IHR5cGUgb2YgdGhpcyBjYW4gZXZlcgorKyAgICAgICAgICAgICAgICAgICAgIGJl IHR5cGVkZWZlZDsganVzdCBiZSBzYWZlLiAgKi8KKysgICAgICAgICAgICAgICAgICBDSEVDS19U WVBFREVGICh0KTsKKysgICAgICAgICAgICAgICAgICBpZiAoVFlQRV9DT0RFICh0KSA9PSBUWVBF X0NPREVfUFRSCisrICAgICAgICAgICAgICAgICAgICAgIHx8IFRZUEVfQ09ERSAodCkgPT0gVFlQ RV9DT0RFX1JFRikKKysgICAgICAgICAgICAgICAgICAgICAgdCA9IFRZUEVfVEFSR0VUX1RZUEUg KHQpOworKworKyAgICAgICAgICAgICAgICAgIGlmIChUWVBFX0NPREUgKHQpICE9IFRZUEVfQ09E RV9TVFJVQ1QKKysgICAgICAgICAgICAgICAgICAgICAgJiYgVFlQRV9DT0RFICh0KSAhPSBUWVBF X0NPREVfVU5JT04pCisrICAgICAgICAgICAgICAgICAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJy b3I6IGAlcycgaXMgbm90IGFuIGFnZ3JlZ2F0ZSIpLAorKyAgICAgICAgICAgICAgICAgICAgICAg IGxhbmdkZWYtPmxhX25hbWVfb2ZfdGhpcyk7CisrCisrICAgICAgICAgICAgICAgICAgaWYgKGNo ZWNrX2ZpZWxkICh0LCBuYW1lKSkKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgICAgICAgKmlzX2FfZmllbGRfb2ZfdGhpcyA9IDE7CisrICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBOVUxMOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAg ICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgIGlmIChCTE9DS19GVU5D VElPTiAoYmxvY2tfaXRlcmF0b3IpICE9IE5VTEwgJiYgYmxvY2tfaW5saW5lZF9wIChibG9ja19p dGVyYXRvcikpCisrICAgICAgICBicmVhazsKKysKKysgICAgICBibG9ja19pdGVyYXRvciA9IEJM T0NLX1NVUEVSQkxPQ0sgKGJsb2NrX2l0ZXJhdG9yKTsKKyAgICAgfQorIAorLSAgLyogV2UndmUg cmVhY2hlZCB0aGUgZWRnZSBvZiB0aGUgZnVuY3Rpb24gd2l0aG91dCBmaW5kaW5nIGEgcmVzdWx0 LiAgKi8KKysgIC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGdsb2JhbCBibG9jayB3aXRob3V0IGZpbmRp bmcgYSByZXN1bHQuICAqLworIAorICAgcmV0dXJuIE5VTEw7CisgfQorQEAgLTE0ODQsMTMgKzE1 MjYsMTIgQEAgbG9va3VwX29iamZpbGVfZnJvbV9ibG9jayAoY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaykKKyAgICBibG9ja19mb3VuZCBhcHByb3ByaWF0ZWx5LiAgKi8KKyAKKyBzdHJ1Y3Qgc3lt Ym9sICoKKy1sb29rdXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqbGlua2FnZV9uYW1lLAorLQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorK2xv b2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAorIAkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisgeworICAgc3RydWN0 IHN5bWJvbCAqc3ltOworIAorLSAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5h bWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKKysgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wg KGJsb2NrLCBuYW1lLCBkb21haW4pOworICAgaWYgKHN5bSkKKyAgICAgeworICAgICAgIGJsb2Nr X2ZvdW5kID0gYmxvY2s7CitAQCAtMTUwNiw3ICsxNTQ3LDYgQEAgbG9va3VwX3N5bWJvbF9hdXhf YmxvY2sgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyBzdHJ1 Y3Qgc3ltYm9sICoKKyBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0 cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsCisgCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsCist CQkJCSAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJICAgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluKQorIHsKKyAgIGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworQEAgLTE1 MjUsNyArMTU2NSw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qg c3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwKKyAgICAgICAgIHsKKyAgICAgICAgICAgYnYg PSBCTE9DS1ZFQ1RPUiAocyk7CisgICAgICAgICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sg KGJ2LCBHTE9CQUxfQkxPQ0spOworLSAgICAgICAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9s IChibG9jaywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKyAgICAgICAgICBzeW0gPSBs b29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKKyAgICAgICAgICAgaWYg KHN5bSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBibG9ja19mb3VuZCA9IGJsb2Nr OworQEAgLTE1MzQsMTYgKzE1NzQsMTYgQEAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpm aWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAogICAgICAgICAgfQogIAog ICAgICAgIC8qIE5vdyBnbyB0aHJvdWdoIHBzeW10YWJzLiAgKi8KQEAgLTE0MTc1LDcgKzE1OTE0 LDQ2IEBAIGluZGV4IDQyNjMyNmQuLmJhYzRjYTMgMTAwNjQ0CiAgICAgICAgQUxMX09CSkZJTEVf UFNZTVRBQlMgKG9iamZpbGUsIHBzKQogICAgICAgICAgewogICAgICAgICAgICBpZiAoIXBzLT5y ZWFkaW4KLUBAIC0xNjAxLDcgKzE2MjgsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAo aW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAorLSAgICAgICAgICAgICAgJiYgbG9v a3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgbGlua2FnZV9uYW1lLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBkb21haW4pKQorKyAgICAgICAgICAgICAg JiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgMSwgZG9tYWluKSkKKyAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICBzID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKKyAgICAg ICAgICAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworICAgICAgICAgICAgICAgYmxvY2sgPSBC TE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7CistICAgICAgICAgICAgICBzeW0g PSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4p OworKyAgICAgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUs IGRvbWFpbik7CisgICAgICAgICAgICAgICByZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rpb24gKHN5 bSwgKHN0cnVjdCBvYmpmaWxlICopb2JqZmlsZSk7CisgICAgICAgICAgICAgfQorICAgICAgICAg fQorQEAgLTE1NTgsOCArMTU5OCw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmls ZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwKKyAgICBzdGF0aWMgc3ltYm9s cy4gICovCisgCisgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgorLWxvb2t1cF9zeW1ib2xfYXV4X3N5 bXRhYnMgKGludCBibG9ja19pbmRleCwKKy0JCQkgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpsaW5rYWdlX25hbWUsCisrbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2Nr X2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAorIAkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFp bikKKyB7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CitAQCAtMTU3Miw3ICsxNjExLDcgQEAgbG9v a3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAorICAgeworICAgICBidiA9 IEJMT0NLVkVDVE9SIChzKTsKKyAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJs b2NrX2luZGV4KTsKKy0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUs IGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKKysgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YmxvY2ssIG5hbWUsIGRvbWFpbik7CisgICAgIGlmIChzeW0pCisgICAgICAgeworIAlibG9ja19m b3VuZCA9IGJsb2NrOworQEAgLTE1OTAsNyArMTYyOSw2IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3N5 bXRhYnMgKGludCBibG9ja19pbmRleCwKKyAKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCisgbG9v a3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFt ZSwKKy0JCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCSAgICBjb25zdCBkb21h aW5fZW51bSBkb21haW4pCisgeworICAgc3RydWN0IHN5bWJvbCAqc3ltOworQEAgLTE2MDEsMTYg KzE2MzksMTUgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRleCwg Y29uc3QgY2hhciAqbmFtZSwKICAgIHN0cnVjdCBzeW10YWIgKnM7CiAgICBjb25zdCBpbnQgcHN5 bXRhYl9pbmRleCA9IChibG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPyAxIDogMCk7CiAgCkBA IC0xNDE4MywzNyArMTU5NjEsMjIyIEBAIGluZGV4IDQyNjMyNmQuLmJhYzRjYTMgMTAwNjQ0CiAr ICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQogICAgewogICAgICBpZiAoIXBz LT5yZWFkaW4KLSAJJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgbGlua2FnZV9u YW1lLAotQEAgLTE4ODYsNyArMTkxMywxMSBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlw ZSAoY29uc3QgY2hhciAqbmFtZSkKLSAgICAgICB9Ci0gICB9CistCSYmIGxvb2t1cF9wYXJ0aWFs X3N5bWJvbCAocHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwKKy0JCQkJICBwc3ltdGFiX2luZGV4LCBk b21haW4pKQorKwkmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCBwc3ltdGFiX2lu ZGV4LCBkb21haW4pKQorICAgICAgIHsKKyAJcyA9IFBTWU1UQUJfVE9fU1lNVEFCIChwcyk7Cisg CWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworIAlibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwg YmxvY2tfaW5kZXgpOworLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwg bGlua2FnZV9uYW1lLCBkb21haW4pOworKwlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9j aywgbmFtZSwgZG9tYWluKTsKKyAJaWYgKCFzeW0pCisgCSAgeworIAkgICAgLyogVGhpcyBzaG91 bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydCB0cnkKK0BAIC0xNjI3LDcg KzE2NjQsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBj b25zdCBjaGFyICpuYW1lLAorIAkgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsCisg CQkJCSAgICAgICBibG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPworIAkJCQkgICAgICAgU1RB VElDX0JMT0NLIDogR0xPQkFMX0JMT0NLKTsKKy0JICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1i b2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7CisrCSAgICBzeW0gPSBsb29r dXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKKyAJICAgIGlmICghc3ltKQor IAkgICAgICBlcnJvciAoXygiSW50ZXJuYWw6ICVzIHN5bWJvbCBgJXMnIGZvdW5kIGluICVzIHBz eW10YWIgYnV0IG5vdCBpbiBzeW10YWIuXG4lcyBtYXkgYmUgYW4gaW5saW5lZCBmdW5jdGlvbiwg b3IgbWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cbihpZiBhIHRlbXBsYXRlLCB0cnkgc3BlY2lm eWluZyBhbiBpbnN0YW50aWF0aW9uOiAlczx0eXBlPikuIiksCisgCQkgICAgIGJsb2NrX2luZGV4 ID09IEdMT0JBTF9CTE9DSyA/ICJnbG9iYWwiIDogInN0YXRpYyIsCitAQCAtMTY0Niw3ICsxNjgz LDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRleCwgY29uc3Qg Y2hhciAqbmFtZSwKKyAKKyBzdHJ1Y3Qgc3ltYm9sICoKKyBiYXNpY19sb29rdXBfc3ltYm9sX25v bmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAorLQkJCSAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2Vf bmFtZSwKKyAJCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorIAkJCSAgICAgIGNv bnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CitAQCAtMTY4MCwxMSArMTcxNiwxMSBAQCBiYXNp Y19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAorICAgICAgdGhhbiB0 aGF0IG9uZSwgc28gSSBkb24ndCB0aGluayB3ZSBzaG91bGQgd29ycnkgYWJvdXQgdGhhdCBmb3IK KyAgICAgIG5vdy4gICovCiAgCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQotKyAgLyog RklYTUU6IC5kZWJ1Z19wdWJuYW1lcyBzaG91bGQgYmUgcmVhZCBpbi4KLSsgICAgIAotKyAgICAg T25lIG1heSBhbHNvIHRyeSB0byB0aGUgZmlyc3QgcGFzcyB3aXRob3V0IHRoZSByZXF1aXJlX3Bh cnRpYWxfc3ltYm9scwotKyAgICAgY2FsbCBidXQgdGhhdCB3b3VsZCBiZWhhdmUgbm9uZGV0ZXJt aW5pc3RpY2FsbHkuICAqLwotKyAgQUxMX1BTWU1UQUJTX1JFUVVJUkVEIChvYmpmaWxlLCBwcykK LSAgIHsKLSAgICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMs IG5hbWUsIE5VTEwsCi0gCQkJCQkgICAgICAxLCBTVFJVQ1RfRE9NQUlOKSkKLUBAIC0xOTM0LDcg KzE5NjUsMTIgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5h bWUpCi0gICAgICAgfQotICAgfQorLSAgc3ltID0gbG9va3VwX3N5bWJvbF9zdGF0aWMgKG5hbWUs IGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICBzeW0gPSBsb29rdXBfc3ltYm9sX3N0 YXRpYyAobmFtZSwgYmxvY2ssIGRvbWFpbik7CisgICBpZiAoc3ltICE9IE5VTEwpCisgICAgIHJl dHVybiBzeW07CiAgCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQotKyAgLyogRklYTUU6 IFNvbWV0aGluZyBsaWtlIC5kZWJ1Z19wdWJuYW1lcyBjb250YWluaW5nIGFsc28gc3RhdGljIHN5 bWJvbHMKLSsgICAgIHNob3VsZCBiZSByZWFkIGluLiAgQ29tcGlsZXIgbmVlZHMgdG8gYmUgdGF1 Z2h0IHRvIGdlbmVyYXRlIGl0IGZpcnN0LgotKyAgICAgCi0rICAgICBPbmUgbWF5IGFsc28gdHJ5 IHRvIHRoZSBmaXJzdCBwYXNzIHdpdGhvdXQgdGhlIHJlcXVpcmVfcGFydGlhbF9zeW1ib2xzCi0r ICAgICBjYWxsIGJ1dCB0aGF0IHdvdWxkIGJlaGF2ZSBub25kZXRlcm1pbmlzdGljYWxseS4gICov Ci0rICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQotICAgewotICAgICBpZiAo IXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgTlVMTCwgMCwg U1RSVUNUX0RPTUFJTikpCi0gICAgICAgewotQEAgLTE5NzUsNyArMjAxMSwyMSBAQCBmaW5kX21h aW5fcHN5bXRhYiAodm9pZCkKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0OwotICAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGU7CistICByZXR1cm4gbG9va3VwX3N5bWJvbF9nbG9iYWwgKG5h bWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICByZXR1cm4gbG9va3VwX3N5bWJv bF9nbG9iYWwgKG5hbWUsIGJsb2NrLCBkb21haW4pOworIH0KKyAKKyAvKiBMb29rdXAgYSBzeW1i b2wgaW4gdGhlIHN0YXRpYyBibG9jayBhc3NvY2lhdGVkIHRvIEJMT0NLLCBpZiB0aGVyZQorQEAg LTE2OTIsMTQgKzE3MjgsMTMgQEAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3Qg Y2hhciAqbmFtZSwKKyAKKyBzdHJ1Y3Qgc3ltYm9sICoKKyBsb29rdXBfc3ltYm9sX3N0YXRpYyAo Y29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJ CSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkgICAgICBjb25zdCBkb21haW5f ZW51bSBkb21haW4pCisgeworICAgY29uc3Qgc3RydWN0IGJsb2NrICpzdGF0aWNfYmxvY2sgPSBi bG9ja19zdGF0aWNfYmxvY2sgKGJsb2NrKTsKKyAKKyAgIGlmIChzdGF0aWNfYmxvY2sgIT0gTlVM TCkKKy0gICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChuYW1lLCBsaW5rYWdlX25h bWUsIHN0YXRpY19ibG9jaywgZG9tYWluKTsKKysgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfYXV4 X2Jsb2NrIChuYW1lLCBzdGF0aWNfYmxvY2ssIGRvbWFpbik7CisgICBlbHNlCisgICAgIHJldHVy biBOVUxMOworIH0KK0BAIC0xNzA5LDcgKzE3NDQsNiBAQCBsb29rdXBfc3ltYm9sX3N0YXRpYyAo Y29uc3QgY2hhciAqbmFtZSwKKyAKKyBzdHJ1Y3Qgc3ltYm9sICoKKyBsb29rdXBfc3ltYm9sX2ds b2JhbCAoY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFt ZSwKKyAJCSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkgICAgICBjb25zdCBk b21haW5fZW51bSBkb21haW4pCisgeworQEAgLTE3MTksMTUgKzE3NTMsMTUgQEAgbG9va3VwX3N5 bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCisgICAvKiBDYWxsIGxpYnJhcnktc3BlY2lm aWMgbG9va3VwIHByb2NlZHVyZS4gICovCisgICBvYmpmaWxlID0gbG9va3VwX29iamZpbGVfZnJv bV9ibG9jayAoYmxvY2spOworICAgaWYgKG9iamZpbGUgIT0gTlVMTCkKKy0gICAgc3ltID0gc29s aWJfZ2xvYmFsX2xvb2t1cCAob2JqZmlsZSwgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwor KyAgICBzeW0gPSBzb2xpYl9nbG9iYWxfbG9va3VwIChvYmpmaWxlLCBuYW1lLCBkb21haW4pOwor ICAgaWYgKHN5bSAhPSBOVUxMKQorICAgICByZXR1cm4gc3ltOworIAorLSAgc3ltID0gbG9va3Vw X3N5bWJvbF9hdXhfc3ltdGFicyAoR0xPQkFMX0JMT0NLLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRv bWFpbik7CisrICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChHTE9CQUxfQkxPQ0ss IG5hbWUsIGRvbWFpbik7CisgICBpZiAoc3ltICE9IE5VTEwpCisgICAgIHJldHVybiBzeW07Cisg CistICByZXR1cm4gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKEdMT0JBTF9CTE9DSywgbmFt ZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKyAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfYXV4X3Bz eW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbik7CisgfQorIAorIGludAorQEAgLTE3 NTEsMTQgKzE3ODUsMTEgQEAgc3ltYm9sX21hdGNoZXNfZG9tYWluIChlbnVtIGxhbmd1YWdlIHN5 bWJvbF9sYW5ndWFnZSwKKyB9CisgCisgLyogTG9vaywgaW4gcGFydGlhbF9zeW10YWIgUFNULCBm b3Igc3ltYm9sIHdob3NlIG5hdHVyYWwgbmFtZSBpcyBOQU1FLgorLSAgIElmIExJTktBR0VfTkFN RSBpcyBub24tTlVMTCwgY2hlY2sgaW4gYWRkaXRpb24gdGhhdCB0aGUgc3ltYm9sJ3MKKy0gICBs aW5rYWdlIG5hbWUgbWF0Y2hlcyBpdC4gIENoZWNrIHRoZSBnbG9iYWwgc3ltYm9scyBpZiBHTE9C QUwsIHRoZQorLSAgIHN0YXRpYyBzeW1ib2xzIGlmIG5vdCAqLworKyAgIENoZWNrIHRoZSBnbG9i YWwgc3ltYm9scyBpZiBHTE9CQUwsIHRoZSBzdGF0aWMgc3ltYm9scyBpZiBub3QuICovCisgCisg c3RydWN0IHBhcnRpYWxfc3ltYm9sICoKKyBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBw YXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpuYW1lLAorLQkJICAgICAgIGNvbnN0IGNo YXIgKmxpbmthZ2VfbmFtZSwgaW50IGdsb2JhbCwKKy0JCSAgICAgICBkb21haW5fZW51bSBkb21h aW4pCisrCQkgICAgICAgaW50IGdsb2JhbCwgZG9tYWluX2VudW0gZG9tYWluKQorIHsKKyAgIHN0 cnVjdCBwYXJ0aWFsX3N5bWJvbCAqdGVtcDsKKyAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnN0 YXJ0LCAqKnBzeW07CitAQCAtMTgxMCw5ICsxODQxLDcgQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9s IChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFtZSwKKyAJaW50ZXJu YWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygiZmFpbGVkIGludGVybmFsIGNvbnNpc3Rl bmN5IGNoZWNrIikpOworIAorICAgICAgIHdoaWxlICh0b3AgPD0gcmVhbF90b3AKKy0JICAgICAm JiAobGlua2FnZV9uYW1lICE9IE5VTEwKKy0JCSA/IHN0cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFN RSAoKnRvcCksIGxpbmthZ2VfbmFtZSkgPT0gMAorLQkJIDogU1lNQk9MX01BVENIRVNfU0VBUkNI X05BTUUgKCp0b3AsbmFtZSkpKQorKwkgICAgICYmIFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1F ICgqdG9wLCBuYW1lKSkKKyAJeworIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZTUJP TF9MQU5HVUFHRSAoKnRvcCksCisgCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoKnRvcCksIGRvbWFp bikpCitAQCAtMTgyOSwxNSArMTg1OCw5IEBAIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0 IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgZm9yIChwc3lt ID0gc3RhcnQ7IHBzeW0gPCBzdGFydCArIGxlbmd0aDsgcHN5bSsrKQorIAl7CisgCSAgaWYgKHN5 bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9MX0xBTkdVQUdFICgqcHN5bSksCistCQkJCSAgICAg U1lNQk9MX0RPTUFJTiAoKnBzeW0pLCBkb21haW4pKQorLQkgICAgeworLQkgICAgICBpZiAobGlu a2FnZV9uYW1lICE9IE5VTEwKKy0JCSAgPyBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKCpw c3ltKSwgbGlua2FnZV9uYW1lKSA9PSAwCistCQkgIDogU1lNQk9MX01BVENIRVNfU0VBUkNIX05B TUUgKCpwc3ltLCBuYW1lKSkKKy0JCXsKKy0JCSAgcmV0dXJuICgqcHN5bSk7CistCQl9CistCSAg ICB9CisrCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoKnBzeW0pLCBkb21haW4pCisrCSAgICAgICYm IFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqcHN5bSwgbmFtZSkpCisrCSAgICByZXR1cm4g KCpwc3ltKTsKKyAJfQorICAgICB9CisgCitAQCAtMTg3OSwyMiArMTkwMiwyNSBAQCBiYXNpY19s b29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkKKyAgIHsKKyAgICAgYnYg PSBCTE9DS1ZFQ1RPUiAocyk7CisgICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBH TE9CQUxfQkxPQ0spOworLSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFt ZSwgTlVMTCwgU1RSVUNUX0RPTUFJTik7CisrICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wg KGJsb2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKKyAgICAgaWYgKHN5bSAmJiAhVFlQRV9JU19P UEFRVUUgKFNZTUJPTF9UWVBFIChzeW0pKSkKKyAgICAgICB7CisgCXJldHVybiBTWU1CT0xfVFlQ RSAoc3ltKTsKKyAgICAgICB9CisgICB9CisgCistICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBz KQorKyAgLyogRklYTUU6IC5kZWJ1Z19wdWJuYW1lcyBzaG91bGQgYmUgcmVhZCBpbi4KKysgICAg IAorKyAgICAgT25lIG1heSBhbHNvIHRyeSB0byB0aGUgZmlyc3QgcGFzcyB3aXRob3V0IHRoZSBy ZXF1aXJlX3BhcnRpYWxfc3ltYm9scworKyAgICAgY2FsbCBidXQgdGhhdCB3b3VsZCBiZWhhdmUg bm9uZGV0ZXJtaW5pc3RpY2FsbHkuICAqLworKyAgQUxMX1BTWU1UQUJTX1JFUVVJUkVEIChvYmpm aWxlLCBwcykKKyAgIHsKKy0gICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5 bWJvbCAocHMsIG5hbWUsIE5VTEwsCistCQkJCQkgICAgICAxLCBTVFJVQ1RfRE9NQUlOKSkKKysg ICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIDEs IFNUUlVDVF9ET01BSU4pKQorICAgICAgIHsKKyAJcyA9IFBTWU1UQUJfVE9fU1lNVEFCIChwcyk7 CisgCWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworIAlibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChi diwgR0xPQkFMX0JMT0NLKTsKKy0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5h bWUsIE5VTEwsIFNUUlVDVF9ET01BSU4pOworKwlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChi bG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJTik7CisgCWlmICghc3ltKQorIAkgIHsKKyAJICAgIC8q IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IGFzIGEgbGFzdCByZXNvcnQKK0BAIC0x OTAzLDcgKzE5MjksNyBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hh ciAqbmFtZSkKKyAJICAgICAqIHRoZSBwc3ltdGFiIGdldHMgaXQgd3JvbmcgaW4gc29tZSBjYXNl cy4KKyAJICAgICAqLworIAkgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIFNUQVRJ Q19CTE9DSyk7CistCSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwg TlVMTCwgU1RSVUNUX0RPTUFJTik7CisrCSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChi bG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJTik7CisgCSAgICBpZiAoIXN5bSkKKyAJICAgICAgZXJy b3IgKF8oIkludGVybmFsOiBnbG9iYWwgc3ltYm9sIGAlcycgZm91bmQgaW4gJXMgcHN5bXRhYiBi dXQgbm90IGluIHN5bXRhYi5cblwKKyAlcyBtYXkgYmUgYW4gaW5saW5lZCBmdW5jdGlvbiwgb3Ig bWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cblwKK0BAIC0xOTI3LDIxICsxOTUzLDI2IEBAIGJh c2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQorICAgeworICAg ICBidiA9IEJMT0NLVkVDVE9SIChzKTsKKyAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAo YnYsIFNUQVRJQ19CTE9DSyk7CistICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2Nr LCBuYW1lLCBOVUxMLCBTVFJVQ1RfRE9NQUlOKTsKKysgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOworICAgICBpZiAoc3ltICYmICFUWVBF X0lTX09QQVFVRSAoU1lNQk9MX1RZUEUgKHN5bSkpKQorICAgICAgIHsKKyAJcmV0dXJuIFNZTUJP TF9UWVBFIChzeW0pOworICAgICAgIH0KKyAgIH0KKyAKKy0gIEFMTF9QU1lNVEFCUyAob2JqZmls ZSwgcHMpCisrICAvKiBGSVhNRTogU29tZXRoaW5nIGxpa2UgLmRlYnVnX3B1Ym5hbWVzIGNvbnRh aW5pbmcgYWxzbyBzdGF0aWMgc3ltYm9scworKyAgICAgc2hvdWxkIGJlIHJlYWQgaW4uICBDb21w aWxlciBuZWVkcyB0byBiZSB0YXVnaHQgdG8gZ2VuZXJhdGUgaXQgZmlyc3QuCisrICAgICAKKysg ICAgIE9uZSBtYXkgYWxzbyB0cnkgdG8gdGhlIGZpcnN0IHBhc3Mgd2l0aG91dCB0aGUgcmVxdWly ZV9wYXJ0aWFsX3N5bWJvbHMKKysgICAgIGNhbGwgYnV0IHRoYXQgd291bGQgYmVoYXZlIG5vbmRl dGVybWluaXN0aWNhbGx5LiAgKi8KKysgIEFMTF9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwg cHMpCisgICB7CistICAgIGlmICghcHMtPnJlYWRpbiAmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wg KHBzLCBuYW1lLCBOVUxMLCAwLCBTVFJVQ1RfRE9NQUlOKSkKKysgICAgaWYgKCFwcy0+cmVhZGlu ICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIDAsIFNUUlVDVF9ET01BSU4pKQor ICAgICAgIHsKKyAJcyA9IFBTWU1UQUJfVE9fU1lNVEFCIChwcyk7CisgCWJ2ID0gQkxPQ0tWRUNU T1IgKHMpOworIAlibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgU1RBVElDX0JMT0NLKTsK Ky0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIE5VTEwsIFNUUlVDVF9E T01BSU4pOworKwlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgU1RSVUNU X0RPTUFJTik7CisgCWlmICghc3ltKQorIAkgIHsKKyAJICAgIC8qIFRoaXMgc2hvdWxkbid0IGJl IG5lY2Vzc2FyeSwgYnV0IGFzIGEgbGFzdCByZXNvcnQKK0BAIC0xOTUwLDcgKzE5ODEsNyBAQCBi YXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkKKyAJICAgICAq IHRoZSBwc3ltdGFiIGdldHMgaXQgd3JvbmcgaW4gc29tZSBjYXNlcy4KKyAJICAgICAqLworIAkg ICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7CistCSAgICBz eW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgTlVMTCwgU1RSVUNUX0RPTUFJ Tik7CisrCSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgU1RSVUNU X0RPTUFJTik7CisgCSAgICBpZiAoIXN5bSkKKyAJICAgICAgZXJyb3IgKF8oIkludGVybmFsOiBz dGF0aWMgc3ltYm9sIGAlcycgZm91bmQgaW4gJXMgcHN5bXRhYiBidXQgbm90IGluIHN5bXRhYi5c blwKKyAlcyBtYXkgYmUgYW4gaW5saW5lZCBmdW5jdGlvbiwgb3IgbWF5IGJlIGEgdGVtcGxhdGUg ZnVuY3Rpb25cblwKK0BAIC0xOTc1LDkgKzIwMDYsMjMgQEAgZmluZF9tYWluX3BzeW10YWIgKHZv aWQpCisgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdDsKKyAgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlOwogIAogLSAgQUxMX1BTWU1UQUJTIChvYmpmaWxlLCBwc3QpCiArICBBTExfT0JKRklM RVMgKG9iamZpbGUpCkBAIC0xNDIyMyw3ICsxNjE4Niw3IEBAIGluZGV4IDQyNjMyNmQuLmJhYzRj YTMgMTAwNjQ0CiArICAgIHJlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChvYmpmaWxlKTsKICsgICAg QUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUsIHBzdCkKICsgICAgewotKyAgICAgIGlmIChs b29rdXBfcGFydGlhbF9zeW1ib2wgKHBzdCwgbWFpbl9uYW1lICgpLCBOVUxMLCAxLCBWQVJfRE9N QUlOKSkKKysgICAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3QsIG1haW5fbmFtZSAo KSwgMSwgVkFSX0RPTUFJTikpCiArCXsKICsJICByZXR1cm4gcHN0OwogKwl9CkBAIC0xNDIzMiw5 ICsxNjE5NSw0OSBAQCBpbmRleCA0MjYzMjZkLi5iYWM0Y2EzIDEwMDY0NAogKwogKyAgQUxMX1BT WU1UQUJTX1JFUVVJUkVEIChvYmpmaWxlLCBwc3QpCiAgICB7Ci0gICAgIGlmIChsb29rdXBfcGFy dGlhbF9zeW1ib2wgKHBzdCwgbWFpbl9uYW1lICgpLCBOVUxMLCAxLCBWQVJfRE9NQUlOKSkKKy0g ICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWluX25hbWUgKCksIE5VTEwsIDEs IFZBUl9ET01BSU4pKQorKyAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3QsIG1haW5f bmFtZSAoKSwgMSwgVkFSX0RPTUFJTikpCiAgICAgICAgewotQEAgLTMyNjEsNyArMzMxMSw3IEBA IHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnVtIGtpbmQsIGludCBuZmls ZXMsIGNoYXIgKmZpbGVzW10sCisgCXJldHVybiAocHN0KTsKKyAgICAgICB9CitAQCAtMTk5NSwx NCArMjA0MCwxMCBAQCBmaW5kX21haW5fcHN5bXRhYiAodm9pZCkKKyAgICBzZWFyY2ggb24gdGhl IHN5bWJvbHMuICBFYWNoIHN5bWJvbCB3aGljaCBpcyBtYXJrZWQgYXMgYmVpbmcgYSBPYmpDL0Mr KworICAgIHN5bWJvbCAobGFuZ3VhZ2VfY3BsdXMgb3IgbGFuZ3VhZ2Vfb2JqYyBzZXQpIGhhcyBi b3RoIHRoZSBlbmNvZGVkIGFuZAorICAgIG5vbi1lbmNvZGVkIG5hbWVzIHRlc3RlZCBmb3IgYSBt YXRjaC4KKy0KKy0gICBJZiBMSU5LQUdFX05BTUUgaXMgbm9uLU5VTEwsIHZlcmlmeSB0aGF0IGFu eSBzeW1ib2wgd2UgZmluZCBoYXMgdGhpcworLSAgIHBhcnRpY3VsYXIgbWFuZ2xlZCBuYW1lLgor ICovCisgCisgc3RydWN0IHN5bWJvbCAqCisgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgY29uc3QgY2hhciAq bGlua2FnZV9uYW1lLAorIAkJICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisgeworICAg c3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKK0BAIC0yMDE1LDkgKzIwNTYsNyBAQCBsb29rdXBf YmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpuYW1l LAorIAkgICBzeW0gPSBkaWN0X2l0ZXJfbmFtZV9uZXh0IChuYW1lLCAmaXRlcikpCisgCXsKKyAJ ICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKHN5bSksCistCQkJ CSAgICAgU1lNQk9MX0RPTUFJTiAoc3ltKSwgZG9tYWluKQorLQkgICAgICAmJiAobGlua2FnZV9u YW1lICE9IE5VTEwKKy0JCSAgPyBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSksIGxp bmthZ2VfbmFtZSkgPT0gMCA6IDEpKQorKwkJCQkgICAgIFNZTUJPTF9ET01BSU4gKHN5bSksIGRv bWFpbikpCisgCSAgICByZXR1cm4gc3ltOworIAl9CisgICAgICAgcmV0dXJuIE5VTEw7CitAQCAt MjAzNyw5ICsyMDc2LDcgQEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2Nr ICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKKyAJICAgc3ltID0gZGljdF9pdGVyX25hbWVfbmV4 dCAobmFtZSwgJml0ZXIpKQorIAl7CisgCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lN Qk9MX0xBTkdVQUdFIChzeW0pLAorLQkJCQkgICAgIFNZTUJPTF9ET01BSU4gKHN5bSksIGRvbWFp bikKKy0JICAgICAgJiYgKGxpbmthZ2VfbmFtZSAhPSBOVUxMCistCQkgID8gc3RyY21wIChTWU1C T0xfTElOS0FHRV9OQU1FIChzeW0pLCBsaW5rYWdlX25hbWUpID09IDAgOiAxKSkKKysJCQkJICAg ICBTWU1CT0xfRE9NQUlOIChzeW0pLCBkb21haW4pKQorIAkgICAgeworIAkgICAgICBzeW1fZm91 bmQgPSBzeW07CisgCSAgICAgIGlmICghU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQorQEAgLTMy NjEsNyArMzI5OCw3IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnVt IGtpbmQsIGludCBuZmlsZXMsIGNoYXIgKmZpbGVzW10sCiAgICAgICBtYXRjaGluZyB0aGUgcmVn ZXhwLiAgVGhhdCB3YXkgd2UgZG9uJ3QgaGF2ZSB0byByZXByb2R1Y2UgYWxsIG9mCiAgICAgICB0 aGUgbWFjaGluZXJ5IGJlbG93LiAqLwogIApAQCAtMTQyNDQsNyArMTYyNDcsNyBAQCBpbmRleCA0 MjYzMjZkLi5iYWM0Y2EzIDEwMDY0NAogICAgICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKipib3Vu ZCwgKipnYm91bmQsICoqc2JvdW5kOwogICAgICBpbnQga2VlcF9nb2luZyA9IDE7CiBkaWZmIC0t Z2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCi1pbmRleCA4MDBmZmQ4Li4zZWQ2OTQ3 IDEwMDY0NAoraW5kZXggODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQKIC0tLSBhL2dkYi9zeW10YWIu aAogKysrIGIvZ2RiL3N5bXRhYi5oCiBAQCAtMzk2LDcgKzM5NiwxMCBAQCB0eXBlZGVmIGVudW0g ZG9tYWluX2VudW1fdGFnCkBAIC0xNDI1OSw3ICsxNjI2Miw1MyBAQCBpbmRleCA4MDBmZmQ4Li4z ZWQ2OTQ3IDEwMDY0NAogIH0KICBkb21haW5fZW51bTsKICAKLUBAIC0xMDY1LDYgKzEwNjgsOCBA QCBleHRlcm4gdm9pZCBjbGVhcl9wY19mdW5jdGlvbl9jYWNoZSAodm9pZCk7CitAQCAtOTkzLDcg Kzk5Niw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sIChjb25zdCBjaGFy ICosIGNvbnN0IHN0cnVjdCBibG9jayAqLAorICAgIHRoYXQgY2FuJ3QgdGhpbmsgb2YgYW55dGhp bmcgYmV0dGVyIHRvIGRvLiAgKi8KKyAKKyBleHRlcm4gc3RydWN0IHN5bWJvbCAqYmFzaWNfbG9v a3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqLAorLQkJCQkJCSAgICBjb25zdCBjaGFy ICosCisgCQkJCQkJICAgIGNvbnN0IHN0cnVjdCBibG9jayAqLAorIAkJCQkJCSAgICBjb25zdCBk b21haW5fZW51bSk7CisgCitAQCAtMTAwNCw3ICsxMDA2LDYgQEAgZXh0ZXJuIHN0cnVjdCBzeW1i b2wgKmJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKiwKKyAgICBpcyBv bmU7IGRvIG5vdGhpbmcgaWYgQkxPQ0sgaXMgTlVMTCBvciBhIGdsb2JhbCBibG9jay4gICovCisg CisgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfc3RhdGljIChjb25zdCBjaGFy ICpuYW1lLAorLQkJCQkJICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCSAgICBj b25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorIAkJCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRv bWFpbik7CisgCitAQCAtMTAxMiw3ICsxMDEzLDYgQEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxv b2t1cF9zeW1ib2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLAorICAgIG5lY2Vzc2FyeSkuICAq LworIAorIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3Qg Y2hhciAqbmFtZSwKKy0JCQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgCQkJCQkg ICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAJCQkJCSAgICBjb25zdCBkb21haW5fZW51 bSBkb21haW4pOworIAorQEAgLTEwMjEsMjEgKzEwMjEsMTggQEAgZXh0ZXJuIHN0cnVjdCBzeW1i b2wgKmxvb2t1cF9zeW1ib2xfZ2xvYmFsIChjb25zdCBjaGFyICpuYW1lLAorICAgIHdpbGwgZml4 IHVwIHRoZSBzeW1ib2wgaWYgbmVjZXNzYXJ5LiAgKi8KKyAKKyBleHRlcm4gc3RydWN0IHN5bWJv bCAqbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkgICAg ICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBi bG9jayAqYmxvY2ssCisgCQkJCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKKyAK KyAvKiBMb29rdXAgYSBwYXJ0aWFsIHN5bWJvbC4gICovCisgCisgZXh0ZXJuIHN0cnVjdCBwYXJ0 aWFsX3N5bWJvbCAqbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIg KiwKKy0JCQkJCQkgICAgIGNvbnN0IGNoYXIgKiwKKyAJCQkJCQkgICAgIGNvbnN0IGNoYXIgKiwg aW50LAorIAkJCQkJCSAgICAgZG9tYWluX2VudW0pOworIAorIC8qIGxvb2t1cCBhIHN5bWJvbCBi eSBuYW1lLCB3aXRoaW4gYSBzcGVjaWZpZWQgYmxvY2sgKi8KKyAKKyBleHRlcm4gc3RydWN0IHN5 bWJvbCAqbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2NrICosIGNvbnN0IGNo YXIgKiwKKy0JCQkJCSAgIGNvbnN0IGNoYXIgKiwKKyAJCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVt KTsKKyAKKyAvKiBsb29rdXAgYSBbc3RydWN0LCB1bmlvbiwgZW51bV0gYnkgbmFtZSwgd2l0aGlu IGEgc3BlY2lmaWVkIGJsb2NrICovCitAQCAtMTA2NSw2ICsxMDYyLDggQEAgZXh0ZXJuIHZvaWQg Y2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpOwogIAogIC8qIGZyb20gc3ltdGFiLmM6ICov CiAgCkBAIC0xNDI2OCwxMSArMTYzMTcsMTkgQEAgaW5kZXggODAwZmZkOC4uM2VkNjk0NyAxMDA2 NDQKICAvKiBsb29rdXAgcGFydGlhbCBzeW1ib2wgdGFibGUgYnkgZmlsZW5hbWUgKi8KICAKICBl eHRlcm4gc3RydWN0IHBhcnRpYWxfc3ltdGFiICpsb29rdXBfcGFydGlhbF9zeW10YWIgKGNvbnN0 IGNoYXIgKik7CitAQCAtMTM2Nyw3ICsxMzY2LDYgQEAgZXh0ZXJuIC8qY29uc3QgKi8gY2hhciAq bWFpbl9uYW1lICh2b2lkKTsKKyAvKiBDaGVjayBnbG9iYWwgc3ltYm9scyBpbiBvYmpmaWxlLiAg Ki8KKyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNv bnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJCSAgY29uc3QgY2hhciAqbmFtZSwK Ky0JCQkJCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCQkgIGNvbnN0IGRvbWFp bl9lbnVtIGRvbWFpbik7CisgCisgZXh0ZXJuIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcwogZGlm ZiAtLWdpdCBhL2dkYi90YXJnZXQuYyBiL2dkYi90YXJnZXQuYwotaW5kZXggZWRmODY5Ny4uYTdl ZDIwNiAxMDA2NDQKK2luZGV4IGU2NjU5YzkuLmVhYmQ5ZmMgMTAwNjQ0CiAtLS0gYS9nZGIvdGFy Z2V0LmMKICsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTEyNCw2ICsxMjQsOCBAQCBzdGF0aWMgaW50 IGRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50KTsKK0BAIC0x MjAsNiArMTIwLDggQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSLCBpbnQsIGludCk7CiAgCiAgc3RhdGljIGludCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hw b2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7CiAgCkBAIC0xNDI4MSw3ICsxNjMzOCw3IEBAIGlu ZGV4IGVkZjg2OTcuLmE3ZWQyMDYgMTAwNjQ0CiAgc3RhdGljIGludCBkZWJ1Z190b19zdG9wcGVk X2J5X3dhdGNocG9pbnQgKHZvaWQpOwogIAogIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9k YXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKLUBAIC02MjQs NiArNjI2LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQorQEAgLTU4Myw2ICs1ODUs NyBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCiAgICAgICAgSU5IRVJJVCAodG9fcmVt b3ZlX2h3X2JyZWFrcG9pbnQsIHQpOwogICAgICAgIElOSEVSSVQgKHRvX2luc2VydF93YXRjaHBv aW50LCB0KTsKICAgICAgICBJTkhFUklUICh0b19yZW1vdmVfd2F0Y2hwb2ludCwgdCk7CkBAIC0x NDI4OSw3ICsxNjM0Niw3IEBAIGluZGV4IGVkZjg2OTcuLmE3ZWQyMDYgMTAwNjQ0CiAgICAgICAg SU5IRVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOwogICAgICAgIElOSEVSSVQgKHRv X2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQpOwogICAgICAgIElOSEVSSVQgKHRvX2hhdmVf Y29udGludWFibGVfd2F0Y2hwb2ludCwgdCk7Ci1AQCAtNzQ3LDYgKzc1MCw5IEBAIHVwZGF0ZV9j dXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC03MTAsNiArNzEzLDkgQEAgdXBkYXRlX2N1cnJlbnRf dGFyZ2V0ICh2b2lkKQogICAgZGVfZmF1bHQgKHRvX3JlbW92ZV93YXRjaHBvaW50LAogIAkgICAg KGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQpKQogIAkgICAgcmV0dXJuX21pbnVzX29uZSk7 CkBAIC0xNDI5OSw3ICsxNjM1Niw3IEBAIGluZGV4IGVkZjg2OTcuLmE3ZWQyMDYgMTAwNjQ0CiAg ICBkZV9mYXVsdCAodG9fc3RvcHBlZF9ieV93YXRjaHBvaW50LAogIAkgICAgKGludCAoKikgKHZv aWQpKQogIAkgICAgcmV0dXJuX3plcm8pOwotQEAgLTMzMDIsNiArMzMwOCwxOSBAQCBkZWJ1Z190 b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQor QEAgLTMyNzcsNiArMzI4MywxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBA IC0xNDMxOSw3ICsxNjM3Niw3IEBAIGluZGV4IGVkZjg2OTcuLmE3ZWQyMDYgMTAwNjQ0CiAgc3Rh dGljIHZvaWQKICBkZWJ1Z190b190ZXJtaW5hbF9pbml0ICh2b2lkKQogIHsKLUBAIC0zNTQ5LDYg KzM1NjgsNyBAQCBzZXR1cF90YXJnZXRfZGVidWcgKHZvaWQpCitAQCAtMzUyNCw2ICszNTQzLDcg QEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQogICAgY3VycmVudF90YXJnZXQudG9fcmVtb3Zl X2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludDsKICAgIGN1cnJl bnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0gZGVidWdfdG9faW5zZXJ0X3dhdGNocG9p bnQ7CiAgICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2ludCA9IGRlYnVnX3RvX3Jl bW92ZV93YXRjaHBvaW50OwpAQCAtMTQzMjgsMTAgKzE2Mzg1LDEwIEBAIGluZGV4IGVkZjg2OTcu LmE3ZWQyMDYgMTAwNjQ0CiAgICBjdXJyZW50X3RhcmdldC50b19zdG9wcGVkX2RhdGFfYWRkcmVz cyA9IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzOwogICAgY3VycmVudF90YXJnZXQudG9f d2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93 aXRoaW5fcmFuZ2U7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCi1p bmRleCBhMDIwYmY3Li4yYzVlNThlIDEwMDY0NAoraW5kZXggNzEwM2FiMi4uNzQxYjJlNSAxMDA2 NDQKIC0tLSBhL2dkYi90YXJnZXQuaAogKysrIGIvZ2RiL3RhcmdldC5oCi1AQCAtNDE5LDYgKzQx OSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCitAQCAtNDIyLDYgKzQyMiw3IEBAIHN0cnVjdCB0YXJn ZXRfb3BzCiAgICAgIGludCAoKnRvX3JlbW92ZV9od19icmVha3BvaW50KSAoc3RydWN0IGdkYmFy Y2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICopOwogICAgICBpbnQgKCp0b19yZW1vdmVfd2F0 Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwogICAgICBpbnQgKCp0b19pbnNlcnRfd2F0 Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwpAQCAtMTQzMzksNyArMTYzOTYsNyBAQCBp bmRleCBhMDIwYmY3Li4yYzVlNThlIDEwMDY0NAogICAgICBpbnQgKCp0b19zdG9wcGVkX2J5X3dh dGNocG9pbnQpICh2b2lkKTsKICAgICAgaW50IHRvX2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQ7 CiAgICAgIGludCB0b19oYXZlX2NvbnRpbnVhYmxlX3dhdGNocG9pbnQ7Ci1AQCAtMTI2Miw2ICsx MjYzLDE1IEBAIGV4dGVybiBjaGFyICpub3JtYWxfcGlkX3RvX3N0ciAocHRpZF90IHB0aWQpOwor QEAgLTEyNzQsNiArMTI3NSwxNSBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19zdHIgKHB0 aWRfdCBwdGlkKTsKICAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludChhZGRyLCBsZW4s IHR5cGUpCVwKICAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dhdGNocG9pbnQpIChh ZGRyLCBsZW4sIHR5cGUpCiAgCkBAIC0xNDM1NSw3ICsxNjQxMiw3IEBAIGluZGV4IGEwMjBiZjcu LjJjNWU1OGUgMTAwNjQ0CiAgI2RlZmluZSB0YXJnZXRfaW5zZXJ0X2h3X2JyZWFrcG9pbnQoZ2Ri YXJjaCwgYnBfdGd0KSBcCiAgICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF9od19icmVh a3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQogIAotQEAgLTEzMDIsNiArMTMxMiwyMCBAQCBleHRl cm4gaW50IHRhcmdldF9zZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgc3RhcnRfYWRkciwKK0BAIC0x MzE0LDYgKzEzMjQsMjAgQEAgZXh0ZXJuIGludCB0YXJnZXRfc2VhcmNoX21lbW9yeSAoQ09SRV9B RERSIHN0YXJ0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkdF U1QgcGF0dGVybl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9B RERSICpmb3VuZF9hZGRycCk7CiAgCkBAIC0xNTU3NiwxOSArMTc2MzMsNiBAQCBpbmRleCAwZWY2 YzRiLi4zMzBlZDg3IDEwMDY0NAogKwl1bnN1cHBvcnRlZCAiJHRlc3QgKG5vIEdDQykiCiArICAg IH0KICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLWluZGV4IGQ3MTY0MWIuLmRiZTg2ZWIgMTAw NjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCi1AQCAtNjA2LDcgKzYwNiw3IEBAIGdkYl90ZXN0ICJo ZWxwIHN0ZXBpIiAiU3RlcCBvbmUgaW5zdHJ1Y3Rpb24gZXhhY3RseVwuXFtcclxuXF0rQXJndW1l bnQgTiBtZWFucyBkCi0gZ2RiX3Rlc3QgImhlbHAgc2lnbmFsIiAiQ29udGludWUgcHJvZ3JhbSBn aXZpbmcgaXQgc2lnbmFsLioiICJoZWxwIHNpZ25hbCIKLSAjIHRlc3QgaGVscCBzb3VyY2UKLSAj IHZ4Z2RiIHJlYWRzIC52eGdkYmluaXQKLS1nZGJfdGVzdCAiaGVscCBzb3VyY2UiICJSZWFkIGNv bW1hbmRzIGZyb20gYSBmaWxlIG5hbWVkIEZJTEVcLlxbXHJcblxdK09wdGlvbmFsIC12IHN3aXRj aCBcXChiZWZvcmUgdGhlIGZpbGVuYW1lXFwpIGNhdXNlcyBlYWNoIGNvbW1hbmQgaW5cW1xyXG5c XStGSUxFIHRvIGJlIGVjaG9lZCBhcyBpdCBpcyBleGVjdXRlZFwuXFtcclxuXF0rTm90ZSB0aGF0 IHRoZSBmaWxlIFwiXFteXCJcXSpcIiBpcyByZWFkIGF1dG9tYXRpY2FsbHkgaW4gdGhpcyB3YXlc W1xyXG5cXSt3aGVuIEdEQiBpcyBzdGFydGVkXC4iICJoZWxwIHNvdXJjZSIKLStnZGJfdGVzdCAi aGVscCBzb3VyY2UiICJSZWFkIGNvbW1hbmRzIGZyb20gYSBmaWxlIG5hbWVkIEZJTEVcLlxbXHJc blxdK09wdGlvbmFsIC12IHN3aXRjaCBcXChiZWZvcmUgdGhlIGZpbGVuYW1lXFwpIGNhdXNlcyBl YWNoIGNvbW1hbmQgaW5cW1xyXG5cXStGSUxFIHRvIGJlIGVjaG9lZCBhcyBpdCBpcyBleGVjdXRl ZFwuXFtcclxuXF0rTm90ZSB0aGF0IHRoZSBmaWxlIFwiXFteXCJcXSpcIiBpcyByZWFkIGF1dG9t YXRpY2FsbHkgaW4gdGhpcyB3YXlcW1xyXG5cXSt3aGVuIEdEQiBpcyBzdGFydGVkXC5cW1xyXG5c XStPcHRpb25hbCAtcCBzd2l0Y2ggXFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxcKSBjYXVzZXMgRklM RSB0byBiZSBldmFsdWF0ZWRcW1xyXG5cXSthcyBQeXRob24gY29kZVwuIiAiaGVscCBzb3VyY2Ui Ci0gIyB0ZXN0IGhlbHAgc3RhY2sKLSB0ZXN0X2NsYXNzX2hlbHAgInN0YWNrIiB7Ci0gICAgICJF eGFtaW5pbmcgdGhlIHN0YWNrXC4uKlxbXHJcblxdKyIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKIG5ldyBmaWxlIG1vZGUgMTAw NjQ0CiBpbmRleCAwMDAwMDAwLi5lZWI3Yjg1CkBAIC0xNTY0NywyNCArMTc2OTEsNiBAQCBpbmRl eCAwMDAwMDAwLi42ZDgyZTczCiArCiArZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGlj c3RydWN0fQogK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmFkaXguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9yYWRpeC5leHAKLWluZGV4IDlmZDZjYjUuLjkzYWExNDIgMTAwNjQ0Ci0tLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3JhZGl4LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9yYWRpeC5leHAKLUBAIC0xNjMsMTMgKzE2Myw2IEBAIGdkYl90ZXN0ICJzZXQgcmFkaXgiIFwK LSAgICAgIklucHV0IGFuZCBvdXRwdXQgcmFkaWNlcyBub3cgc2V0IHRvIGRlY2ltYWwgMTAsIGhl eCBhLCBvY3RhbCAxMlwuIiBcCi0gICAgICJSZXNldCByYWRpY2VzIgotIAotLWdkYl90ZXN0ICJz ZXQgaW5wdXQtcmFkaXggMCIgXAotLSAgICAiTm9uc2Vuc2UgaW5wdXQgcmFkaXggYGBkZWNpbWFs IDAnJzsgaW5wdXQgcmFkaXggdW5jaGFuZ2VkXFwuIiBcCi0tICAgICJSZWplY3QgaW5wdXQtcmFk aXggMCIKLS1nZGJfdGVzdCAic2hvdyBpbnB1dC1yYWRpeCIgXAotLSAgICAiRGVmYXVsdCBpbnB1 dCByYWRpeCBmb3IgZW50ZXJpbmcgbnVtYmVycyBpcyAxMFxcLiIgXAotLSAgICAiSW5wdXQgcmFk aXggdW5jaGFuZ2VkIGFmdGVyIHJlamVjdGluZyAwIgotLQotIGdkYl90ZXN0ICJzZXQgaW5wdXQt cmFkaXggMSIgXAotICAgICAiTm9uc2Vuc2UgaW5wdXQgcmFkaXggYGBkZWNpbWFsIDEnJzsgaW5w dXQgcmFkaXggdW5jaGFuZ2VkXFwuIiBcCi0gICAgICJSZWplY3QgaW5wdXQtcmFkaXggMSIKIGRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGlu ZGV4IDAwMDAwMDAuLmM1ZDVlZTAKQEAgLTE1OTU3LDYgKzE3OTgzLDM2NCBAQCBpbmRleCBjOTkw YTY0Li5jOTY0ZGI5IDEwMDY0NAogIAogIGFsbCBpbmZvIGluc3RhbGwtaW5mbyBkdmkgaW5zdGFs bCB1bmluc3RhbGwgaW5zdGFsbGNoZWNrIGNoZWNrOgogIAlAZWNobyAiTm90aGluZyB0byBiZSBk b25lIGZvciAkQC4uLiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxv Y2F0ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxvY2F0ZS5leHAKK2luZGV4IGY4 MWEyMTIuLjMwZDM2MmEgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxv Y2F0ZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cAorQEAg LTMwLDcgKzMwLDcgQEAgcHJvYyBnZXRfZnVuY19hZGRyZXNzIHsgZnVuYyB9IHsKKyAgICAgZ2xv YmFsIGdkYl9wcm9tcHQgaGV4CisgCisgICAgIHNldCByZnVuYyBbc3RyaW5nX3RvX3JlZ2V4cCAk ZnVuY10KKy0gICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICcke2Z1bmN9JyIgImdldCBhZGRy ZXNzIG9mICR7ZnVuY30iIHsKKysgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICR7ZnVuY30i ICJnZXQgYWRkcmVzcyBvZiAke2Z1bmN9IiB7CisgCS1yZSAiXFxcJFxbMC05XF0rID0gXFx7Lipc XH0gKDB8KCRoZXgpIDwke3JmdW5jfT4pXFtcclxuXF0rJHtnZGJfcHJvbXB0fSAkIiB7CisgCSAg ICAjICQxID0ge2ludCAoKX0gMHgyNCA8ZnVuY3Rpb25fYmFyPgorIAkgICAgIyBCdXQgaWYgdGhl IGZ1bmN0aW9uIGlzIGF0IHplcm8sIHRoZSBuYW1lIG1heSBiZSBvbWl0dGVkLgorQEAgLTEzMCw3 ICsxMzAsNyBAQCBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZX0gMCAtcyAke2Z1 bmMxX3NlY30gMHgxMDAwMCAtcyAke2Z1bmMyX3NlY30gMAorIAkieSIKKyAKKyAjIE1ha2Ugc3Vy ZSB0aGUgZnVuY3Rpb24gYWRkcmVzc2VzIHdlcmUgdXBkYXRlZC4KKy1nZGJfdGVzdCAiYnJlYWsg KickZnVuYzFfbmFtZSciIFwKKytnZGJfdGVzdCAiYnJlYWsgKiRmdW5jMV9uYW1lIiBcCisgICAg ICJCcmVha3BvaW50ICRkZWNpbWFsIGF0IDB4MS4uLi46IGZpbGUgLioiCistZ2RiX3Rlc3QgImJy ZWFrIConJGZ1bmMyX25hbWUnIiBcCisrZ2RiX3Rlc3QgImJyZWFrICokZnVuYzJfbmFtZSIgXAor ICAgICAiQnJlYWtwb2ludCAkZGVjaW1hbCBhdCAweDIuLi4uOiBmaWxlIC4qIgorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuY2MgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9jcGx1c2Z1bmNzLmNjCitpbmRleCBmNGY3OGE2Li4xMWRiYTA2IDEwMDY0NAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvY3BsdXNmdW5jcy5jYworQEAgLTE5NSw2ICsxOTUsMTIgQEAgY2hhciAqCWRtX3R5cGVf Y2hhcl9zdGFyIChjaGFyICogcCkJCXsgcmV0dXJuIHA7IH0KKyBpbnQJZG1fdHlwZV9mb29fcmVm IChmb28gJiBmb28pCQl7IHJldHVybiBmb28uaWZvbzsgfQorIGludCAqCWRtX3R5cGVfaW50X3N0 YXIgKGludCAqIHApCQl7IHJldHVybiBwOyB9CisgbG9uZyAqCWRtX3R5cGVfbG9uZ19zdGFyIChs b25nICogcCkJCXsgcmV0dXJuIHA7IH0KKytpbnQJZG1fdHlwZV9zaG9ydCAoc2hvcnQgaSkJCQl7 IHJldHVybiBpOyB9CisraW50CWRtX3R5cGVfbG9uZyAobG9uZyBpKQkJCXsgcmV0dXJuIGk7IH0K KyBpbnQJZG1fdHlwZV91bnNpZ25lZF9pbnQgKHVuc2lnbmVkIGludCBpKQl7IHJldHVybiBpOyB9 CisraW50CWRtX3R5cGVfdW5zaWduZWRfc2hvcnQgKHVuc2lnbmVkIHNob3J0IGkpCXsgcmV0dXJu IGk7IH0KKytpbnQJZG1fdHlwZV91bnNpZ25lZF9sb25nICh1bnNpZ25lZCBsb25nIGkpCXsgcmV0 dXJuIGk7IH0KKyBpbnQJZG1fdHlwZV92b2lkICh2b2lkKQkJCXsgcmV0dXJuIDA7IH0KKyB2b2lk ICoJZG1fdHlwZV92b2lkX3N0YXIgKHZvaWQgKiBwKQkJeyByZXR1cm4gcDsgfQorK3R5cGVkZWYg aW50IG15aW50OworK2ludAlkbV90eXBlX3R5cGVkZWYgKG15aW50IGkpCQl7IHJldHVybiBpOyB9 CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAoraW5kZXggZjMyMjU4Ni4uNDQzYWY3YSAx MDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuZXhwCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAorQEAgLTY2LDkgKzY2LDI1IEBAIHNl dCBkbV90eXBlX3Vuc2lnbmVkX2ludAkidW5zaWduZWQiCisgc2V0IGRtX3R5cGVfdm9pZAkJInZv aWQiCisgc2V0IGRtX3R5cGVfdm9pZF9zdGFyCQkidm9pZCoiCisgCisrIyBTb21lIG90aGVyIHZh Z2FyaWVzIG9mIEdEQidzIHR5cGUgcHJpbnRpbmcgbWFjaGluZXJ5LiAgVGhlIGludGVnZXIgdHlw ZXMKKysjIG1heSBoYXZlIHVuc2lnbmVkIGJlZm9yZSBvciBhZnRlciB0aGVpciBsZW5ndGgsIGFu ZCBtYXkgaGF2ZSAiaW50IgorKyMgYXBwZW5kZWQuICBUaGUgY2hhciogY29udmVyc2lvbiBvcGVy YXRvciBtYXkgaGF2ZSBuYW1lICJjaGFyKiIgZXZlbiBpZgorKyMgdGhlIHR5cGUgaXMgImNoYXIg KiIsIGJlY2F1c2UgdGhlIG5hbWUgY29tZXMgZnJvbSB0aGUgZGVidWcgaW5mb3JtYXRpb24KKysj IGFuZCB0aGUgdHlwZSBmcm9tIEdEQi4gIEZ1bmN0aW9uIHR5cGVzIG1heSBub3Qgc2VlIHRocm91 Z2ggdHlwZWRlZnMuCisrCisrc2V0IGRtX3R5cGVfc2hvcnQJCSJzaG9ydCIKKytzZXQgZG1fdHlw ZV9sb25nCQkibG9uZyIKKytzZXQgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAkidW5zaWduZWQgc2hv cnQiCisrc2V0IGRtX3R5cGVfdW5zaWduZWRfbG9uZwkidW5zaWduZWQgbG9uZyIKKytzZXQgZG1f b3BlcmF0b3JfY2hhcl9zdGFyCSJjaGFyKiIKKytzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyX3F1 b3RlZAkiY2hhclxcKiIKKytzZXQgZG1fdHlwZV90eXBlZGVmCQkwCisrCisgcHJvYyBwcm9iZV9k ZW1hbmdsZXIgeyB9IHsKKyAgICAgZ2xvYmFsIGdkYl9wcm9tcHQKKyAgICAgZ2xvYmFsIGRtX29w ZXJhdG9yX2NvbW1hCisrICAgIGdsb2JhbCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIKKysgICAgZ2xv YmFsIGRtX29wZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWQKKyAgICAgZ2xvYmFsIGRtX3R5cGVfY2hh cl9zdGFyCisgICAgIGdsb2JhbCBkbV90eXBlX2NoYXJfc3Rhcl9xdW90ZWQKKyAgICAgZ2xvYmFs IGRtX3R5cGVfZm9vX3JlZgorQEAgLTc3LDYgKzkzLDExIEBAIHByb2MgcHJvYmVfZGVtYW5nbGVy IHsgfSB7CisgICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2ludAorICAgICBnbG9iYWwgZG1f dHlwZV92b2lkCisgICAgIGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgorKyAgICBnbG9iYWwgZG1f dHlwZV9zaG9ydAorKyAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAorKyAgICBnbG9i YWwgZG1fdHlwZV9sb25nCisrICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcKKysgICAg Z2xvYmFsIGRtX3R5cGVfdHlwZWRlZgorIAorICAgICBzZW5kX2dkYiAicHJpbnQgJmZvbzo6b3Bl cmF0b3IsKGZvbyYpXG4iCisgICAgIGdkYl9leHBlY3QgeworQEAgLTk3LDYgKzExOCwyNiBAQCBw cm9jIHByb2JlX2RlbWFuZ2xlciB7IH0geworIAl9CisgICAgIH0KKyAKKysgICAgc2VuZF9nZGIg InByaW50ICZmb286Om9wZXJhdG9yIGNoYXIqKCRkbV90eXBlX3ZvaWQpXG4iCisrICAgIGdkYl9l eHBlY3QgeworKwktcmUgIi4qZm9vOjpvcGVyYXRvciBjaGFyIFxcKlxcKHZvaWRcXCkuKlxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCSAgICAjIHYyIGRlbWFuZ2xlciBvciBHREIgdHlwZSBwcmludGVy CisrCSAgICBzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyICJjaGFyICoiCisrCSAgICBzZXQgZG1f b3BlcmF0b3JfY2hhcl9zdGFyX3F1b3RlZCAiY2hhciBcXCoiCisrCSAgICBwYXNzICJkZXRlY3Qg ZG1fb3BlcmF0b3JfY2hhcl9zdGFyIgorKwl9CisrCS1yZSAiLipmb286Om9wZXJhdG9yIGNoYXJc XCpcXChcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAjIHYzIGRlbWFuZ2xlcgorKwkg ICAgcGFzcyAiZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3RhciIKKysJfQorKwktcmUgIi4qJGdk Yl9wcm9tcHQgJCIgeworKwkgICAgZmFpbCAiZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3RhciIK KysJfQorKwl0aW1lb3V0IHsKKysJICAgIGZhaWwgImRldGVjdCBkbV9vcGVyYXRvcl9jaGFyX3N0 YXIiCisrCX0KKysgICAgfQorKworICAgICBzZW5kX2dkYiAicHJpbnQgJmRtX3R5cGVfY2hhcl9z dGFyXG4iCisgICAgIGdkYl9leHBlY3QgeworIAktcmUgIi4qZG1fdHlwZV9jaGFyX3N0YXJcXChj aGFyIFxcKlxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKK0BAIC0xNjYsNiArMjA3LDExIEBAIHBy b2MgcHJvYmVfZGVtYW5nbGVyIHsgfSB7CisgCSAgICAjIHYzIGRlbWFuZ2xlcgorIAkgICAgcGFz cyAiZGV0ZWN0IGRtX3R5cGVfbG9uZ19zdGFyIgorIAl9CisrCS1yZSAiLipkbV90eXBlX2xvbmdf c3RhclxcKGxvbmcgaW50IFxcKlxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgICMgR0ND IHYzIGFuZCBHREIncyB0eXBlIHByaW50ZXIKKysJICAgIHNldCBkbV90eXBlX2xvbmdfc3RhciAi bG9uZyBpbnQgKiIKKysJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX2xvbmdfc3RhciIKKysJfQor IAktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworIAkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfbG9u Z19zdGFyIgorIAl9CitAQCAtMjMwLDYgKzI3NiwxMDEgQEAgcHJvYyBwcm9iZV9kZW1hbmdsZXIg eyB9IHsKKyAJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3ZvaWRfc3RhciAodGltZW91dCkiCisg CX0KKyAgICAgfQorKworKyAgICBzZW5kX2dkYiAicHJpbnQgJmRtX3R5cGVfc2hvcnRcbiIKKysg ICAgZ2RiX2V4cGVjdCB7CisrCS1yZSAiLipkbV90eXBlX3Nob3J0XFwoc2hvcnRcXCkuKlxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCSAgICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJzCisrCSAgICBwYXNz ICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKKysJfQorKwktcmUgIi4qZG1fdHlwZV9zaG9ydFxcKHNo b3J0IGludFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgICMgR0RCIHR5cGUgcHJpbnRl cgorKwkgICAgc2V0IGRtX3R5cGVfc2hvcnQgInNob3J0IGludCIKKysJICAgIHBhc3MgImRldGVj dCBkbV90eXBlX3Nob3J0IgorKwl9CisrCS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7CisrCSAgICBm YWlsICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKKysJfQorKwl0aW1lb3V0IHsKKysJICAgIGZhaWwg ImRldGVjdCBkbV90eXBlX3Nob3J0ICh0aW1lb3V0KSIKKysJfQorKyAgICB9CisrCisrICAgIHNl bmRfZ2RiICJwcmludCAmZG1fdHlwZV91bnNpZ25lZF9zaG9ydFxuIgorKyAgICBnZGJfZXhwZWN0 IHsKKysJLXJlICIuKmRtX3R5cGVfdW5zaWduZWRfc2hvcnRcXCh1bnNpZ25lZCBzaG9ydFxcKS4q XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgICMgdjIgYW5kIHYzIGRlbWFuZ2xlcnMKKysJICAg IHBhc3MgImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgorKwl9CisrCS1yZSAiLipkbV90 eXBlX3Vuc2lnbmVkX3Nob3J0XFwoc2hvcnQgdW5zaWduZWQgaW50XFwpLipcclxuJGdkYl9wcm9t cHQgJCIgeworKwkgICAgIyBHREIgdHlwZSBwcmludGVyCisrCSAgICBzZXQgZG1fdHlwZV91bnNp Z25lZF9zaG9ydCAic2hvcnQgdW5zaWduZWQgaW50IgorKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5 cGVfdW5zaWduZWRfc2hvcnQiCisrCX0KKysJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKKysJICAg IGZhaWwgImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgorKwl9CisrCXRpbWVvdXQgewor KwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQgKHRpbWVvdXQpIgorKwl9 CisrICAgIH0KKysKKysgICAgc2VuZF9nZGIgInByaW50ICZkbV90eXBlX2xvbmdcbiIKKysgICAg Z2RiX2V4cGVjdCB7CisrCS1yZSAiLipkbV90eXBlX2xvbmdcXChsb25nXFwpLipcclxuJGdkYl9w cm9tcHQgJCIgeworKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycworKwkgICAgcGFzcyAiZGV0 ZWN0IGRtX3R5cGVfbG9uZyIKKysJfQorKwktcmUgIi4qZG1fdHlwZV9sb25nXFwobG9uZyBpbnRc XCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAjIEdEQiB0eXBlIHByaW50ZXIKKysJICAg IHNldCBkbV90eXBlX2xvbmcgImxvbmcgaW50IgorKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVf bG9uZyIKKysJfQorKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworKwkgICAgZmFpbCAiZGV0ZWN0 IGRtX3R5cGVfbG9uZyIKKysJfQorKwl0aW1lb3V0IHsKKysJICAgIGZhaWwgImRldGVjdCBkbV90 eXBlX2xvbmcgKHRpbWVvdXQpIgorKwl9CisrICAgIH0KKysKKysgICAgc2VuZF9nZGIgInByaW50 ICZkbV90eXBlX3Vuc2lnbmVkX2xvbmdcbiIKKysgICAgZ2RiX2V4cGVjdCB7CisrCS1yZSAiLipk bV90eXBlX3Vuc2lnbmVkX2xvbmdcXCh1bnNpZ25lZCBsb25nXFwpLipcclxuJGdkYl9wcm9tcHQg JCIgeworKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycworKwkgICAgcGFzcyAiZGV0ZWN0IGRt X3R5cGVfdW5zaWduZWRfbG9uZyIKKysJfQorKwktcmUgIi4qZG1fdHlwZV91bnNpZ25lZF9sb25n XFwobG9uZyB1bnNpZ25lZCBpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAjIEdE QiB0eXBlIHByaW50ZXIKKysJICAgIHNldCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcgImxvbmcgdW5z aWduZWQgaW50IgorKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKKysJ fQorKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVf dW5zaWduZWRfbG9uZyIKKysJfQorKwl0aW1lb3V0IHsKKysJICAgIGZhaWwgImRldGVjdCBkbV90 eXBlX3Vuc2lnbmVkX2xvbmcgKHRpbWVvdXQpIgorKwl9CisrICAgIH0KKysKKysgICAgc2VuZF9n ZGIgInByaW50ICZkbV90eXBlX3R5cGVkZWZcbiIKKysgICAgZ2RiX2V4cGVjdCB7CisrCS1yZSAi LipkbV90eXBlX3R5cGVkZWZcXChpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAj IHYyIGFuZCB2MyBkZW1hbmdsZXJzCisrCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV90eXBlZGVm IgorKwl9CisrCS1yZSAiLipkbV90eXBlX3R5cGVkZWZcXChteWludFxcKS4qXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysJICAgICMgR0RCIHR5cGUgcHJpbnRlcgorKwkgICAgc2V0IGRtX3R5cGVfdHlw ZWRlZiAxCisrCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV90eXBlZGVmIgorKwl9CisrCS1yZSAi LiokZ2RiX3Byb21wdCAkIiB7CisrCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV90eXBlZGVmIgor Kwl9CisrCXRpbWVvdXQgeworKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdHlwZWRlZiAodGlt ZW91dCkiCisrCX0KKysgICAgfQorIH0KKyAKKyAjCitAQCAtMzUxLDggKzQ5Miw5IEBAIHByb2Mg cHJpbnRfYWRkciB7IG5hbWUgfSB7CisgCisgcHJvYyB0ZXN0X2xvb2t1cF9vcGVyYXRvcl9mdW5j dGlvbnMge30geworICAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY29tbWEKKysgICAgZ2xvYmFsIGRt X29wZXJhdG9yX2NoYXJfc3RhcgorICAgICBnbG9iYWwgZG1fdHlwZV9jaGFyX3N0YXIKKy0gICAg Z2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyX3F1b3RlZAorKyAgICBnbG9iYWwgZG1fb3BlcmF0b3Jf Y2hhcl9zdGFyX3F1b3RlZAorICAgICBnbG9iYWwgZG1fdHlwZV9mb29fcmVmCisgICAgIGdsb2Jh bCBkbV90eXBlX3ZvaWQKKyAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCitAQCAtNDEwLDgg KzU1Miw4IEBAIHByb2MgdGVzdF9sb29rdXBfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKKyAKKyAg ICAgaW5mb19mdW5jICJvcGVyYXRvciBpbnQoIgkiaW50IGZvbzo6b3BlcmF0b3IgaW50KCRkbV90 eXBlX3ZvaWQpOyIKKyAgICAgaW5mb19mdW5jICJvcGVyYXRvcigpKCIJInZvaWQgZm9vOjpvcGVy YXRvcigpKCRkbV90eXBlX2Zvb19yZWYpOyIKKy0gICAgaW5mb19mdW5jICJvcGVyYXRvciAkZG1f dHlwZV9jaGFyX3N0YXJfcXVvdGVkXCgiIFwKKy0JCQkJImNoYXIgKmZvbzo6b3BlcmF0b3IgJGRt X3R5cGVfY2hhcl9zdGFyXCgkZG1fdHlwZV92b2lkKTsiCisrICAgIGluZm9fZnVuYyAib3BlcmF0 b3IgJGRtX29wZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWRcKCIgXAorKwkJCQkiY2hhciAqZm9vOjpv cGVyYXRvciAkZG1fb3BlcmF0b3JfY2hhcl9zdGFyXCgkZG1fdHlwZV92b2lkKTsiCisgCisgfQor IAorQEAgLTQyNiw2ICs1NjgsNyBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25z IHt9IHsKKyAgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50CisgICAgIGdsb2JhbCBkbV90 eXBlX3ZvaWQKKyAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCisrICAgIGdsb2JhbCBkbV9v cGVyYXRvcl9jaGFyX3N0YXIKKyAKKyAgICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciooJGRt X3R5cGVfZm9vX3JlZikiCisgICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IlKCRkbV90eXBl X2Zvb19yZWYpIgorQEAgLTQ3OSw3ICs2MjIsNyBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3Jf ZnVuY3Rpb25zIHt9IHsKKyAgICAgfQorIAorICAgICBwcmludF9hZGRyICJmb286Om9wZXJhdG9y IGludCgkZG1fdHlwZV92b2lkKSIKKy0gICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciAkZG1f dHlwZV9jaGFyX3N0YXJcKCRkbV90eXBlX3ZvaWQpIgorKyAgICBwcmludF9hZGRyICJmb286Om9w ZXJhdG9yICRkbV9vcGVyYXRvcl9jaGFyX3N0YXJcKCRkbV90eXBlX3ZvaWQpIgorIH0KKyAKKyAj CitAQCAtNDg5LDE3ICs2MzIsMjEgQEAgcHJvYyB0ZXN0X3BhZGRyX29wZXJhdG9yX2Z1bmN0aW9u cyB7fSB7CisgcHJvYyB0ZXN0X3BhZGRyX292ZXJsb2FkZWRfZnVuY3Rpb25zIHt9IHsKKyAgICAg Z2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50CisgICAgIGdsb2JhbCBkbV90eXBlX3ZvaWQKKysg ICAgZ2xvYmFsIGRtX3R5cGVfc2hvcnQKKysgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfc2hv cnQKKysgICAgZ2xvYmFsIGRtX3R5cGVfbG9uZworKyAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25l ZF9sb25nCisgCisgICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV92b2lkKSIK KyAgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGNoYXIpIgorICAgICBwcmludF9hZGRyICJv dmVybG9hZDFhcmcoc2lnbmVkIGNoYXIpIgorICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmco dW5zaWduZWQgY2hhcikiCistICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyhzaG9ydCkiCist ICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyh1bnNpZ25lZCBzaG9ydCkiCisrICAgIHByaW50 X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV9zaG9ydCkiCisrICAgIHByaW50X2FkZHIgIm92 ZXJsb2FkMWFyZygkZG1fdHlwZV91bnNpZ25lZF9zaG9ydCkiCisgICAgIHByaW50X2FkZHIgIm92 ZXJsb2FkMWFyZyhpbnQpIgorICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoJGRtX3R5cGVf dW5zaWduZWRfaW50KSIKKy0gICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGxvbmcpIgorLSAg ICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcodW5zaWduZWQgbG9uZykiCisrICAgIHByaW50X2Fk ZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV9sb25nKSIKKysgICAgcHJpbnRfYWRkciAib3Zlcmxv YWQxYXJnKCRkbV90eXBlX3Vuc2lnbmVkX2xvbmcpIgorICAgICBwcmludF9hZGRyICJvdmVybG9h ZDFhcmcoZmxvYXQpIgorICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoZG91YmxlKSIKKyAK K0BAIC01MjIsMTcgKzY2OSwzMSBAQCBwcm9jIHRlc3RfcGFkZHJfaGFpcnlfZnVuY3Rpb25zIHt9 IHsKKyAgICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyCisgICAgIGdsb2JhbCBkbV90eXBlX2lu dF9zdGFyCisgICAgIGdsb2JhbCBkbV90eXBlX2xvbmdfc3RhcgorKyAgICBnbG9iYWwgZG1fdHlw ZV90eXBlZGVmCisgCisgICAgIHByaW50X2FkZHJfMiAiaGFpcnlmdW5jMSIgImhhaXJ5ZnVuYzEo aW50KSIKKy0gICAgcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihpbnQgKCop KCRkbV90eXBlX2NoYXJfc3RhcikpIgorLSAgICBwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzMiICJo YWlyeWZ1bmMzKGludCAoKikoc2hvcnQgKCopKCRkbV90eXBlX2xvbmdfc3RhcikpKSIKKy0gICAg cHJpbnRfYWRkcl8yICJoYWlyeWZ1bmM0IiAiaGFpcnlmdW5jNChpbnQgKCopKHNob3J0ICgqKSgk ZG1fdHlwZV9jaGFyX3N0YXIpKSkiCistCistICAgICMgZ2RiLWduYXRzIGJ1ZyBnZGIvMTk6Cist ICAgICMgImdkYiB2MyBkZW1hbmdsZXIgZmFpbHMgb24gaGFpcnlmdW5jNSBoYWlyeWZ1bmM2IGhh aXJ5ZnVuYzciCistICAgIHByaW50X2FkZHJfMl9rZmFpbCAiaGFpcnlmdW5jNSIgImhhaXJ5ZnVu YzUoaW50ICgqKCopKCRkbV90eXBlX2NoYXJfc3RhcikpKGxvbmcpKSIgImhhaXJ5ZnVuYzUoaW50 ICgqKShsb25nKSAoKikoY2hhciopKSIgImdkYi8xOSIKKy0gICAgcHJpbnRfYWRkcl8yX2tmYWls ICJoYWlyeWZ1bmM2IiAiaGFpcnlmdW5jNihpbnQgKCooKikoJGRtX3R5cGVfaW50X3N0YXIpKShs b25nKSkiICJoYWlyeWZ1bmM2KGludCAoKikobG9uZykgKCopKGludCopKSIgImdkYi8xOSIKKy0g ICAgcHJpbnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM3IiAiaGFpcnlmdW5jNyhpbnQgKCooKiko aW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkobG9uZykpIiAiaGFpcnlmdW5jNyhpbnQgKCop KGxvbmcpICgqKShpbnQgKCopKGNoYXIqKSkpIiAiZ2RiLzE5IgorKworKyAgICBpZiB7JGRtX3R5 cGVfdHlwZWRlZiA9PSAwfSB7CisrCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jMiIgImhhaXJ5ZnVu YzIoaW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSIKKysJcHJpbnRfYWRkcl8yICJoYWlyeWZ1 bmMzIiAiaGFpcnlmdW5jMyhpbnQgKCopKHNob3J0ICgqKSgkZG1fdHlwZV9sb25nX3N0YXIpKSki CisrCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jNCIgImhhaXJ5ZnVuYzQoaW50ICgqKShzaG9ydCAo KikoJGRtX3R5cGVfY2hhcl9zdGFyKSkpIgorKworKwkjIGdkYi1nbmF0cyBidWcgZ2RiLzE5Ogor KwkjICJnZGIgdjMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUgaGFpcnlmdW5jNiBoYWly eWZ1bmM3IgorKwlwcmludF9hZGRyXzJfa2ZhaWwgImhhaXJ5ZnVuYzUiICJoYWlyeWZ1bmM1KGlu dCAoKigqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKShsb25nKSkiICJoYWlyeWZ1bmM1KGludCAoKiko bG9uZykgKCopKGNoYXIqKSkiICJnZGIvMTkiCisrCXByaW50X2FkZHJfMl9rZmFpbCAiaGFpcnlm dW5jNiIgImhhaXJ5ZnVuYzYoaW50ICgqKCopKCRkbV90eXBlX2ludF9zdGFyKSkobG9uZykpIiAi aGFpcnlmdW5jNihpbnQgKCopKGxvbmcpICgqKShpbnQqKSkiICJnZGIvMTkiCisrCXByaW50X2Fk ZHJfMl9rZmFpbCAiaGFpcnlmdW5jNyIgImhhaXJ5ZnVuYzcoaW50ICgqKCopKGludCAoKikoJGRt X3R5cGVfY2hhcl9zdGFyKSkpKGxvbmcpKSIgImhhaXJ5ZnVuYzcoaW50ICgqKShsb25nKSAoKiko aW50ICgqKShjaGFyKikpKSIgImdkYi8xOSIKKysgICAgfSBlbHNlIHsKKysJcHJpbnRfYWRkcl8y ICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihQRlBjX2kpIgorKwlwcmludF9hZGRyXzIgImhhaXJ5 ZnVuYzMiICJoYWlyeWZ1bmMzKFBGUEZQbF9zX2kpIgorKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVu YzQiICJoYWlyeWZ1bmM0KFBGUEZQY19zX2kpIgorKworKwkjIGdkYi1nbmF0cyBidWcgZ2RiLzE5 OgorKwkjICJnZGIgdjMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUgaGFpcnlmdW5jNiBo YWlyeWZ1bmM3IgorKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzUiICJoYWlyeWZ1bmM1KFBGUGNf UEZsX2kpIgorKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzYiICJoYWlyeWZ1bmM2KFBGUGlfUEZs X2kpIgorKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzciICJoYWlyeWZ1bmM3KFBGUEZQY19pX1BG bF9pKSIKKysgICAgfQorIH0KKyAKKyBwcm9jIGRvX3Rlc3RzIHt9IHsKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9jdHRpLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N0dGku ZXhwCitpbmRleCA0NTRjNmY0Li44Zjg4YWQ3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvY3R0aS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N0dGkuZXhwCitAQCAt ODUsMTEgKzg1LDYgQEAgZ2RiX3Rlc3QgInByaW50IGMiICJcXCRcWzAtOVxdKyA9IDE5NCAuKiIK KyBnZGJfdGVzdCAicHJpbnQgZiIgIlxcJFxbMC05XF0rID0gOSIKKyBnZGJfdGVzdCAicHJpbnQg aSIgIlxcJFxbMC05XF0rID0gNCIKKyAKKy0jIFRPRE86IHRoaXMgbmVlZHMgbW9yZSB3b3JrIGJl Zm9yZSBhY3R1YWxseSBkZXBsb3lpbmcgaXQuCistIyBTbyBiYWlsIG91dCBoZXJlLgorLQorLWlm IHsgWyB0ZXN0X2NvbXBpbGVyX2luZm8gZ2NjLSpdIH0gdGhlbiB7IGNvbnRpbnVlIH0KKy0KKyBn ZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgYWRkPGludD4oMiwyKSIgInByaW50IGFkZDxpbnQ+KDIs MikiIHsKKyAgICAgLXJlICJcXCRcWzAtOVxdKyA9IDRcclxuJGdkYl9wcm9tcHQgJCIgeworIAlw YXNzICJwcmludCBhZGQ8aW50PigyLDIpIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2V4cGFuZC1zYWxzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4cGFuZC1zYWxzLmV4 cAoraW5kZXggMjVlYzRhOS4uZTRmZDU5YiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2V4cGFuZC1zYWxzLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhwYW5kLXNh bHMuZXhwCitAQCAtNDYsNyArNDYsNyBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY2Fs bGVyIiAiLipjYWxsZXItbGluZS4qIgorIAorICMgVGVzdCBHREIgY2F1Z2h0IHRoaXMgcmV0dXJu IGNhbGwgYW5kIG5vdCB0aGUgbmV4dCBvbmUgdGhyb3VnaCBCOjpCKCkKKyBnZGJfdGVzdCAiYnQi IFwKKy0JICIjMCBcW15cclxuXF0qIEEgXFteXHJcblxdKlxyXG4jMSBcW15cclxuXF0qIG1haW4g XFteXHJcblxdKiIgXAorKwkgIiMwIFxbXlxyXG5cXSogKEE6Oik/QSBcW15cclxuXF0qXHJcbiMx IFxbXlxyXG5cXSogbWFpbiBcW15cclxuXF0qIiBcCisgCSAiYnQgZnJvbSBBIgorIAorIGdkYl9j b250aW51ZV90b19icmVha3BvaW50ICJuZXh0IGNhbGxlciBmdW5jIiAiLipmdW5jLWxpbmUuKiIK IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNjIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvZ2RiOTU5My5jYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAw MDAuLjc4M2M5NjIKQEAgLTE2MzE1LDI1ICsxODY5OSwyODQ0IEBAIGluZGV4IDAwMDAwMDAuLmVl OWFlZmYKICsgICIuKm5leHRfY2FzZXMudW50aWwgKCkuKiIgXAogKyAgIm5leHQgcGFzdCBjYXRj aCA2IgogKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAg InN0ZXAgaW50byB1bnRpbCIKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgIi4qZnVuY3Rpb24xICgp LioiIFwKKysgICJzdGVwIGludG8gdW50aWwiCisrCisrZ2RiX3Rlc3QgInVudGlsICRsaW5lIiBc CisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAidW50aWwtb3Zlci10aHJvdyIKKysKKytnZGJf dGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAoKS4qIiBcCisrICAibmV4dCBw YXN0IGNhdGNoIDciCisrCisrZ2RiX3Rlc3QgInN0ZXAiIFwKKysgICIuKmZ1bmN0aW9uMSAoKS4q IiBcCisrICAic3RlcCBpbnRvIHVudGlsLCBmb3IgYWR2YW5jZSIKKysKKytnZGJfdGVzdCAiYWR2 YW5jZSAkbGluZSIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgImFkdmFuY2Utb3Zlci10 aHJvdyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmNjIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5jYworaW5kZXggZmZmZmI0Yy4uYjQwNmE1 OSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MKK0BAIC0xMzgsNiArMTM4LDcgQEAg Y2xhc3MgRGlhbW9uZCA6IHB1YmxpYyBQYWRkaW5nLCBwdWJsaWMgTGVmdCwgcHVibGljIFJpZ2h0 CisgeworIHB1YmxpYzoKKyAgIHZpcnR1YWwgaW50IHZnZXRfYmFzZSAoKTsKKysgIGludCAoKmZ1 bmNfcHRyKSAoaW50KTsKKyB9OworIAorIGludCBEaWFtb25kOjp2Z2V0X2Jhc2UgKCkKK0BAIC0x NDUsNiArMTQ2LDEyIEBAIGludCBEaWFtb25kOjp2Z2V0X2Jhc2UgKCkKKyAgIHJldHVybiB0aGlz LT5MZWZ0Ojp4ICsgMjAwMDsKKyB9CisgCisraW50CisrZnVuYyAoaW50IHgpCisreworKyAgcmV0 dXJuIDE5ICsgeDsKKyt9CisrCisgaW50IG1haW4gKCkKKyB7CisgICBBIGE7CitAQCAtMTYyLDYg KzE2OSw3IEBAIGludCBtYWluICgpCisgICBpbnQgKERpYW1vbmQ6OipyaWdodF92cG1mKSAoKTsK KyAgIGludCAoQmFzZTo6KmJhc2VfdnBtZikgKCk7CisgICBpbnQgRGlhbW9uZDo6KmRpYW1vbmRf cG1pOworKyAgaW50ICgqIERpYW1vbmQ6OipkaWFtb25kX3BmdW5jX3B0cikgKGludCk7CisgCisg ICBQTUkgbnVsbF9wbWk7CisgICBQTUYgbnVsbF9wbWY7CitAQCAtMTc5LDYgKzE4Nyw3IEBAIGlu dCBtYWluICgpCisgCisgICBkaWFtb25kLkxlZnQ6OnggPSA3NzsKKyAgIGRpYW1vbmQuUmlnaHQ6 OnggPSA4ODsKKysgIGRpYW1vbmQuZnVuY19wdHIgPSBmdW5jOworIAorICAgLyogU29tZSB2YWxp ZCBwb2ludGVyIHRvIG1lbWJlcnMgZnJvbSBhIGJhc2UgY2xhc3MuICAqLworICAgbGVmdF9wbWYg PSAoaW50IChEaWFtb25kOjoqKSAoKSkgKGludCAoTGVmdDo6KikgKCkpICgmQmFzZTo6Z2V0X3gp OworQEAgLTE5MywxMSArMjAyLDE5IEBAIGludCBtYWluICgpCisgICAvKiBBIHBvaW50ZXIgdG8g ZGF0YSBtZW1iZXIgZnJvbSBhIGJhc2UgY2xhc3MuICAqLworICAgZGlhbW9uZF9wbWkgPSAoaW50 IERpYW1vbmQ6OiopIChpbnQgTGVmdDo6KikgJkJhc2U6Ong7CisgCisrICAvKiBBIHBvaW50ZXIg dG8gZGF0YSBtZW1iZXIsIHdoZXJlIHRoZSBtZW1iZXIgaXMgaXRzZWxmIGEgcG9pbnRlciB0bwor KyAgICAgYSBmdW5jdGlvbi4gICovCisrICBkaWFtb25kX3BmdW5jX3B0ciA9IChpbnQgKCogRGlh bW9uZDo6KikgKGludCkpICZEaWFtb25kOjpmdW5jX3B0cjsKKysKKyAgIG51bGxfcG1pID0gTlVM TDsKKyAgIG51bGxfcG1mID0gTlVMTDsKKyAKKyAgIHBtaSA9IE5VTEw7IC8qIEJyZWFrcG9pbnQg MSBoZXJlLiAgKi8KKyAKKysgIC8vIEludmFsaWQgKHVzZXMgZGlhbW9uZF9wZnVuY19wdHIgYXMg YSBmdW5jdGlvbik6CisrICAvLyBkaWFtb25kLipkaWFtb25kX3BmdW5jX3B0ciAoMjApOworKyAg KGRpYW1vbmQuKmRpYW1vbmRfcGZ1bmNfcHRyKSAoMjApOworKworICAgayA9IChhLipwbWYpKDMp OworIAorICAgcG1pID0gJkE6OmpqOworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L21lbWJlci1wdHIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAKK2lu ZGV4IDY4MzJmM2IuLmJhZjA4ZDcgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9t ZW1iZXItcHRyLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAK K0BAIC0zOTAsNiArMzkwLDMzIEBAIGdkYl90ZXN0X211bHRpcGxlICJwcmludCAoKGludCkgcG1p KSA9PSAoKGNoYXIgKikgJmEuaiAtIChjaGFyICopICYgYSkiICRuYW1lIHsKKyAgICAgfQorIH0K KyAKKysjIENoZWNrIHBvaW50ZXJzIHRvIGRhdGEgbWVtYmVycywgd2hpY2ggYXJlIHRoZW1zZWx2 ZXMgcG9pbnRlcnMgdG8KKysjIGZ1bmN0aW9ucy4gIFRoZXNlIGJlaGF2ZSBsaWtlIGRhdGEgbWVt YmVycywgbm90IGxpa2UgcG9pbnRlcnMgdG8KKysjIG1lbWJlciBmdW5jdGlvbnMuCisrCisrZ2Ri X3Rlc3QgInB0eXBlIGRpYW1vbmRfcGZ1bmNfcHRyIiBcCisrICAgICJ0eXBlID0gaW50IFxcKFxc KkRpYW1vbmQ6OlxcKlxcKVxcKGludFxcKSIKKysKKytnZGJfdGVzdCAicHR5cGUgZGlhbW9uZC4q ZGlhbW9uZF9wZnVuY19wdHIiIFwKKysgICAgInR5cGUgPSBpbnQgXFwoXFwqXFwpXFwoaW50XFwp IgorKworKyMgVGhpcyBvbmUgaXMgaW52YWxpZDsgKCkgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4g LiosIHNvIGl0IHRyaWVzIHRvCisrIyBjYWxsIHRoZSBtZW1iZXIgcG9pbnRlciBhcyBhIG5vcm1h bCBwb2ludGVyLXRvLWZ1bmN0aW9uLgorKworK2dkYl90ZXN0ICJwcmludCBkaWFtb25kLipkaWFt b25kX3BmdW5jX3B0ciAoMjApIiBcCisrICAgICJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZnVuY3Rp b24gdG8gYmUgY2FsbGVkLiIKKysKKysjIFdpdGggcGFyZW50aGVzZXMsIGl0IGlzIHZhbGlkLgor KworK2dkYl90ZXN0ICJwcmludCAoZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19wdHIpICgyMCkiIFwK KysgICAgIiR2aG4gPSAzOSIKKysKKysjIE1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBpbnRlcnBy ZXQgdGhpcyBhcyBlaXRoZXIgYSBtZW1iZXIgcG9pbnRlcgorKyMgY2FsbCBvciBhIG1lbWJlciBm dW5jdGlvbiBjYWxsLgorKworK2dkYl90ZXN0ICJwcmludCBkaWFtb25kLmZ1bmNfcHRyICgyMCki IFwKKysgICAgIiR2aG4gPSAzOSIKKysKKyAjID09PT09PT09PT09PT09PT09PT09PT09PT09Cisg IyBwb2ludGVyIHRvIG1lbWJlciBmdW5jdGlvbgorICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT0KK0BAIC00MjAsNyArNDQ3LDcgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInB0eXBlIHBtZiIgJG5h bWUgeworIAorIHNldCBuYW1lICJwcmludCBwbWYiCisgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50 IHBtZiIgJG5hbWUgeworLSAgICAtcmUgIiR2aG4gPSAkaGV4IDxBOjpiYXJcXChpbnRcXCk+XHJc biRnZGJfcHJvbXB0ICQiIHsKKysgICAgLXJlICIkdmhuID0gXFwoaW50IFxcKEE6OlxcKlxcKVxc KEEgXFwqLCBpbnRcXClcXCkgJGhleCA8QTo6YmFyXFwoaW50XFwpPlxyXG4kZ2RiX3Byb21wdCAk IiB7CisgCXBhc3MgJG5hbWUKKyAgICAgfQorICAgICAtcmUgIiR2aG4gPSAuKm5vdCBzdXBwb3J0 ZWQgd2l0aCBIUCBhQ0MuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CitAQCAtNjA4LDYgKzYzNSw5IEBA IGdkYl90ZXN0X211bHRpcGxlICJwcmludCAoYS4qcG1mKSgzKSIgJG5hbWUgeworICAgICB9Cisg fQorIAorK2dkYl90ZXN0ICJwdHlwZSBhLipwbWYiICJ0eXBlID0gaW50IFxcKEEgXFwqLCBpbnRc XCkiCisrZ2RiX3Rlc3QgInB0eXBlIChhLipwbWYpKDMpIiAidHlwZSA9IGludCIKKysKKyAjIFBy aW50IG91dCBhIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgd2hpY2ggcmVxdWlyZXMgbG9va2luZyBp bnRvCisgIyBhIGJhc2UgY2xhc3MuCisgZ2RiX3Rlc3QgInByaW50IGRpYW1vbmRfcG1pIiAiJHZo biA9ICZCYXNlOjp4IgorQEAgLTY1OCw1ICs2ODgsNSBAQCBnZGJfdGVzdCAicHJpbnQgbnVsbF9w bWkgPSAmQTo6aiIgIiR2aG4gPSAmQTo6aiIKKyBnZGJfdGVzdCAicHJpbnQgbnVsbF9wbWkgPSAw IiAiJHZobiA9IE5VTEwiCisgCisgZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mIiAiJHZobiA9IE5V TEwiCistZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0gJkE6OmZvbyIgIiR2aG4gPSAkaGV4IDxB Ojpmb28gP1xcKGludFxcKT4iCisrZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0gJkE6OmZvbyIg IiR2aG4gPSBcXChpbnQgXFwoQTo6XFwqXFwpXFwoQSBcXCosIGludFxcKVxcKSAkaGV4IDxBOjpm b28gP1xcKGludFxcKT4iCisgZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0gMCIgIiR2aG4gPSBO VUxMIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBs ZS1pbXBvcnRzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW11bHRpcGxlLWlt cG9ydHMuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42YjE4MGQ2Cist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbXVsdGlw bGUtaW1wb3J0cy5jYworQEAgLTAsMCArMSwyMCBAQAorK25hbWVzcGFjZSBBIHsKKysgIGludCB4 ID0gMTE7CisrICBuYW1lc3BhY2V7CisrICAgIGludCB4eCA9IDIyOworKyAgfQorK30KKysKKyt1 c2luZyBuYW1lc3BhY2UgQTsKKysKKytuYW1lc3BhY2V7CisrICBpbnQgeHh4ID0gMzM7CisrfTsK KysKKytpbnQgbWFpbigpCisreworKyAgeDsKKysgIHh4OworKyAgeHh4OworKyAgcmV0dXJuIDA7 CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBs ZS1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBsZS1p bXBvcnRzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU0YmI5ZjgK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0 aXBsZS1pbXBvcnRzLmV4cAorQEAgLTAsMCArMSw0OSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKworK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwK Kyt9CisrCisrc2V0IHBybXNfaWQgMAorK3NldCBidWdfaWQgMAorKworK3NldCB0ZXN0ZmlsZSBu YW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCisr c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhl Y3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBj b21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgR2V0IHRoaW5n cyBzdGFydGVkLgorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyB0ZXN0IHByaW50aW5nIG9mIG5h bWVzcGFjZSBpbXBvcnRlZCB3aXRoaW4KKysjIHRoZSBmdW5jdGlvbi4KKysKKytpZiAhW3J1bnRv X21haW5dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1h aW4iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl90ZXN0ICJwcmludCB4IiAiXFwkXFswLTlc XS4qID0gMTEiCisrZ2RiX3Rlc3QgInByaW50IHh4IiAiXFwkXFswLTlcXS4qID0gMjIiCisrZ2Ri X3Rlc3QgInByaW50IHh4eCIgIlxcJFxbMC05XF0uKiA9IDMzIgorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5jYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5jYworbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLjk3MjNmODcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5jYworQEAgLTAsMCArMSwzNiBA QAorK25hbWVzcGFjZSBBCisreworKyAgbmFtZXNwYWNlIEIKKysgIHsKKysgICAgaW50IGFiID0g MTE7CisrICB9CisrfQorKworK25hbWVzcGFjZSBDCisreworKyAgbmFtZXNwYWNlIEQKKysgIHsK KysgICAgdXNpbmcgbmFtZXNwYWNlIEE6OkI7CisrCisrICAgIGludAorKyAgICBzZWNvbmQoKQor KyAgICB7CisrICAgICAgYWI7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgIH0KKysKKysg IGludAorKyAgZmlyc3QoKQorKyAgeworKyAgICAvL2FiOworKyAgICByZXR1cm4gRDo6c2Vjb25k KCk7CisrICB9CisrfQorKworK2ludAorK21haW4oKQorK3sKKysgIC8vYWI7CisrICByZXR1cm4g Qzo6Zmlyc3QoKTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNw YWNlLW5lc3RlZC1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1u ZXN0ZWQtaW1wb3J0cy5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5k Mjc5ZmI1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3Bh Y2UtbmVzdGVkLWltcG9ydHMuZXhwCitAQCAtMCwwICsxLDU3IEBACisrIyBDb3B5cmlnaHQgMjAw OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisrCisraWYgJHRyYWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAorK30KKysKKytzZXQgcHJtc19pZCAwCisrc2V0IGJ1Z19pZCAwCisrCisrc2V0IHRlc3Rm aWxlIG5hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNj Cisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgR2V0IHRo aW5ncyBzdGFydGVkLgorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6 ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisraWYgIVtydW50b19tYWluXSB0 aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWluIgorKyAg ICBjb250aW51ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQgYWIiICJObyBzeW1ib2wgLiogaW4g Y3VycmVudCBjb250ZXh0LiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworK2dkYl9icmVha3BvaW50IEM6OmZpcnN0CisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgIkM6OmZpcnN0IgorKworK2dkYl90ZXN0ICJwcmludCBhYiIgIk5vIHN5bWJvbCAu KiBpbiBjdXJyZW50IGNvbnRleHQuIgorK2dkYl90ZXN0ICJwcmludCBDOjpEOjphYiIgIj0gMTEi CisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKytnZGJf YnJlYWtwb2ludCBDOjpEOjpzZWNvbmQKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQzo6 RDo6c2Vjb25kIgorKworK2dkYl90ZXN0ICJwcmludCBhYiIgIj0gMTEiCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuY2MgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5jYworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLmQxYzY4YWIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS1uby1pbXBvcnRzLmNjCitAQCAtMCwwICsxLDM3IEBACisrCisr bmFtZXNwYWNlIEEKKyt7CisrICBpbnQgX2EgPSAxMTsKKysKKysgIG5hbWVzcGFjZSBCeworKwor KyAgICBpbnQgYWIgPSAyMjsKKysKKysgICAgbmFtZXNwYWNlIEN7CisrCisrICAgICAgaW50IGFi YyA9IDMzOworKworKyAgICAgIGludCBzZWNvbmQoKXsKKysgICAgICAgIHJldHVybiAwOworKyAg ICAgIH0KKysKKysgICAgfQorKworKyAgICBpbnQgZmlyc3QoKXsKKysgICAgICBfYTsKKysgICAg ICBhYjsKKysgICAgICBDOjphYmM7CisrICAgICAgcmV0dXJuIEM6OnNlY29uZCgpOworKyAgICB9 CisrICB9CisrfQorKworKworK2ludAorK21haW4oKQorK3sKKysgIEE6Ol9hOworKyAgQTo6Qjo6 YWI7CisrICBBOjpCOjpDOjphYmM7CisrICByZXR1cm4gQTo6Qjo6Zmlyc3QoKTsKKyt9CitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTUwODEwMworLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuZXhwCitAQCAtMCwwICsx LDc2IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgJHRyYWNlbGV2ZWwgdGhl biB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQgcHJtc19pZCAwCisrc2V0 IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1uby1pbXBvcnRzCisrc2V0IHNy Y2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKKysg ICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4g LTEKKyt9CisrCisrIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrCisrZ2RiX2V4aXQKKytnZGJfc3Rh cnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2Jp bmZpbGV9CisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KytpZiAhW3J1bnRvX21haW5dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBi cmVha3BvaW50IG1haW4iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl90ZXN0ICJwcmludCBB OjpfYSIgIj0gMTEiCisrZ2RiX3Rlc3QgInByaW50IEE6OkI6OmFiIiAiPSAyMiIKKytnZGJfdGVz dCAicHJpbnQgQTo6Qjo6Qzo6YWJjIiAiPSAzMyIKKysKKytnZGJfdGVzdCAicHJpbnQgX2EiICJO byBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKytnZGJfdGVzdCAicHJpbnQgYWIiICJO byBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKytnZGJfdGVzdCAicHJpbnQgYWJjIiAi Tm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC4iCisrCisrIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKytnZGJfYnJlYWtwb2ludCBBOjpCOjpmaXJzdAor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJBOjpCOjpmaXJzdCIKKysKKytnZGJfdGVzdCAi cHJpbnQgQTo6X2EiICI9IDExIgorK2dkYl90ZXN0ICJwcmludCBBOjpCOjphYiIgIj0gMjIiCisr Z2RiX3Rlc3QgInByaW50IEE6OkI6OkM6OmFiYyIgIj0gMzMiCisrCisrZ2RiX3Rlc3QgInByaW50 IF9hIiAiPSAxMSIKKytnZGJfdGVzdCAicHJpbnQgYWIiICI9IDIyIgorK2dkYl90ZXN0ICJwcmlu dCBDOjphYmMiICI9IDMzIgorKworK2dkYl90ZXN0ICJwcmludCBhYmMiICJObyBzeW1ib2wgLiog aW4gY3VycmVudCBjb250ZXh0LiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworK2dkYl9icmVha3BvaW50IEE6OkI6OkM6OnNlY29uZAorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJBOjpCOjpDOjpzZWNvbmQiCisrCisrZ2RiX3Rlc3QgInByaW50 IEE6Ol9hIiAiPSAxMSIKKytnZGJfdGVzdCAicHJpbnQgQTo6Qjo6YWIiICI9IDIyIgorK2dkYl90 ZXN0ICJwcmludCBBOjpCOjpDOjphYmMiICI9IDMzIgorKworK2dkYl90ZXN0ICJwcmludCBfYSIg Ij0gMTEiCisrZ2RiX3Rlc3QgInByaW50IGFiIiAiPSAyMiIKKytnZGJfdGVzdCAicHJpbnQgYWJj IiAiPSAzMyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVj dXJzaXZlLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5jYwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ2ZDRjMTgKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUuY2MKK0BA IC0wLDAgKzEsNDcgQEAKKytuYW1lc3BhY2UgQXsKKysgIGludCBheCA9IDk7CisrfQorKworK25h bWVzcGFjZSBCeworKyAgdXNpbmcgbmFtZXNwYWNlIEE7CisrfQorKworK25hbWVzcGFjZSBDewor KyAgdXNpbmcgbmFtZXNwYWNlIEI7CisrfQorKworK3VzaW5nIG5hbWVzcGFjZSBDOworKworKy8v LS0tLS0tLS0tLS0tLS0tCisrbmFtZXNwYWNlIER7CisrICB1c2luZyBuYW1lc3BhY2UgRDsKKysg IGludCBkeCA9IDk5OworK30KKyt1c2luZyBuYW1lc3BhY2UgRDsKKysKKysvLy0tLS0tLS0tLS0t LS0tLQorK25hbWVzcGFjZXsKKysgIG5hbWVzcGFjZXsKKysgICAgaW50IHh4ID0gOTk5OworKyAg fQorK30KKysKKysvLy0tLS0tLS0tLS0tLS0tLQorK25hbWVzcGFjZSBFeworKyAgaW50IGV4ID0g OTk5OTsKKyt9CisrCisrbmFtZXNwYWNlIEZ7CisrICBuYW1lc3BhY2UgRkUgPSBFOworK30KKysK KytuYW1lc3BhY2UgR3sKKysgIG5hbWVzcGFjZSBHRiA9IEY7CisrfQorKworKy8vLS0tLS0tLS0t LS0tLS0tLQorK2ludCBtYWluKCl7CisrICB1c2luZyBuYW1lc3BhY2UgRDsKKysgIG5hbWVzcGFj ZSBHWCA9IEc7CisrICByZXR1cm4gYXggKyBkeCArIHh4ICsgRzo6R0Y6OkZFOjpleDsKKyt9Citk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmV4cAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjU1NDM3NTcKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUuZXhwCitAQCAtMCwwICsx LDc1IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgJHRyYWNlbGV2ZWwgdGhl biB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQgcHJtc19pZCAwCisrc2V0 IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1yZWN1cnNpdmUKKytzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0geworKyAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAt MQorK30KKysKKytpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworKyAgICByZXR1 cm4gLTE7CisrfQorKworKworKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKworK2dkYl9leGl0Cisr Z2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xv YWQgJHtiaW5maWxlfQorKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAgIHBlcnJvciAi Y291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisr IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIHRlc3QgcHJp bnRpbmcgZnJvbSBuYW1lc3BhY2UgaW1wb3J0ZWQgaW50bworKyMgaW1wb3J0ZWQgbmFtZXNwYWNl CisrCisrZ2RiX3Rlc3QgInByaW50IGF4IiAiPSA5IgorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyB0ZXN0IHRoYXQgZ2RiIGNhbiBwcmludCB3aXRo b3V0IGZhbGxpbmcgCisrIyBpbnRvIHNlYXJjaCBsb29wCisrCisrZ2RiX3Rlc3QgInByaW50IGR4 IiAiPSA5OSIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworKyMgdGVzdCBwcmludGluZyBmcm9tIG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvCisrIyBpbXBv cnRlZCBuYW1lc3BhY2Ugd2hlcmUgaW1wb3J0cyBhcmUgaW1wbGljaXQKKysjIGFub255bW91cyBu YW1lc3BhY2UgaW1wb3J0cy4KKysKKytnZGJfdGVzdCAicHJpbnQgeHgiICI9IDk5OSIKKysKKysj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgVGVzdCBwcmlu dGluZyB1c2luZyByZWN1cnNpdmUgbmFtZXNwYWNlCisrIyBhbGlhc2VzLgorKworK3NldHVwX2tm YWlsICJnZGIvMTA1NDEiICIqLSotKiIKKytnZGJfdGVzdCAicHR5cGUgRzo6R0YiICI9IG5hbWVz cGFjZSBGIgorKworK3NldHVwX2tmYWlsICJnZGIvMTA1NDEiICIqLSotKiIKKytnZGJfdGVzdCAi cHJpbnQgRzo6R0Y6OkZFOjpleCIgIj0gOTk5OSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uYW1lc3BhY2Utc3RyZXNzLWRlY2xhcmF0aW9ucy5jYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmNjCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uMTczZTQ5YgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuY2MKK0BAIC0wLDAg KzEsOTMgQEAKKytpbnQgYTsKKytpbnQgYjsKKytpbnQgYzsKKytpbnQgZDsKKytpbnQgZTsKKytp bnQgZjsKKytpbnQgZzsKKytpbnQgaDsKKytpbnQgaTsKKytpbnQgajsKKytpbnQgazsKKytpbnQg bDsKKytpbnQgbTsKKytpbnQgbjsKKytpbnQgbzsKKytpbnQgcDsKKytpbnQgcTsKKytpbnQgcjsK KytpbnQgczsKKytpbnQgdDsKKytpbnQgdTsKKytpbnQgdjsKKytpbnQgdzsKKytpbnQgeDsKKytp bnQgeTsKKytpbnQgejsKKysKKytuYW1lc3BhY2UgQQorK3sKKysgIGludCB4eXo7CisrCisrICB1 c2luZyA6OmE7CisrICB1c2luZyA6OmI7CisrICB1c2luZyA6OmM7CisrICB1c2luZyA6OmQ7Cisr ICB1c2luZyA6OmU7CisrICB1c2luZyA6OmY7CisrICB1c2luZyA6Omc7CisrICB1c2luZyA6Omg7 CisrICB1c2luZyA6Omk7CisrICB1c2luZyA6Omo7CisrICB1c2luZyA6Oms7CisrICB1c2luZyA6 Omw7CisrICB1c2luZyA6Om07CisrICB1c2luZyA6Om47CisrICB1c2luZyA6Om87CisrICB1c2lu ZyA6OnA7CisrICB1c2luZyA6OnE7CisrICB1c2luZyA6OnI7CisrICB1c2luZyA6OnM7CisrICB1 c2luZyA6OnQ7CisrICB1c2luZyA6OnU7CisrICB1c2luZyA6OnY7CisrICB1c2luZyA6Onc7Cisr ICB1c2luZyA6Ong7CisrICB1c2luZyA6Onk7CisrICB1c2luZyA6Ono7CisrCisrfQorKworK3Vz aW5nIEE6OmE7CisrdXNpbmcgQTo6YjsKKyt1c2luZyBBOjpjOworK3VzaW5nIEE6OmQ7CisrdXNp bmcgQTo6ZTsKKyt1c2luZyBBOjpmOworK3VzaW5nIEE6Omc7CisrdXNpbmcgQTo6aDsKKyt1c2lu ZyBBOjppOworK3VzaW5nIEE6Omo7CisrdXNpbmcgQTo6azsKKyt1c2luZyBBOjpsOworK3VzaW5n IEE6Om07CisrdXNpbmcgQTo6bjsKKyt1c2luZyBBOjpvOworK3VzaW5nIEE6OnA7CisrdXNpbmcg QTo6cTsKKyt1c2luZyBBOjpyOworK3VzaW5nIEE6OnM7CisrdXNpbmcgQTo6dDsKKyt1c2luZyBB Ojp1OworK3VzaW5nIEE6OnY7CisrdXNpbmcgQTo6dzsKKyt1c2luZyBBOjp4OworK3VzaW5nIEE6 Onk7CisrdXNpbmcgQTo6ejsKKysKKyt1c2luZyBuYW1lc3BhY2UgQTsKKysKKytpbnQgbWFpbiAo KQorK3sKKysgIHJldHVybiAwOworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRp b25zLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRp b25zLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmYyMmExNGUKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3Mt ZGVjbGFyYXRpb25zLmV4cAorQEAgLTAsMCArMSw1MCBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKworK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwK Kyt9CisrCisrc2V0IHBybXNfaWQgMAorK3NldCBidWdfaWQgMAorKworK3NldCB0ZXN0ZmlsZSBu YW1lc3BhY2Utc3RyZXNzLWRlY2xhcmF0aW9ucworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNj Cisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmIFtnZXRf Y29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CisrICAgIHJldHVybiAtMTsKKyt9CisrCisrIyBH ZXQgdGhpbmdzIHN0YXJ0ZWQuCisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYg IVtydW50b19tYWluXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtw b2ludCBtYWluIgorKyAgICBjb250aW51ZQorK30KKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgVGVzdCB0aGF0IHRoZSBzZWFyY2ggY2FuIGZhaWwg ZWZmaWNpZW50bHkgCisrCisrZ2RiX3Rlc3QgInByaW50IGZha2V4IiAiTm8gc3ltYm9sIFwiZmFr ZXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZS1zdHJlc3MuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Ut c3RyZXNzLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjM0MDgzZQor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVz cy5jYworQEAgLTAsMCArMSw2MCBAQAorKworK25hbWVzcGFjZSBBeyBpbnQgeDsgfQorK25hbWVz cGFjZSBCeyBpbnQgeDsgfQorK25hbWVzcGFjZSBDeyBpbnQgeDsgfQorK25hbWVzcGFjZSBEeyBp bnQgeDsgfQorK25hbWVzcGFjZSBFeyBpbnQgeDsgfQorK25hbWVzcGFjZSBGeyBpbnQgeDsgfQor K25hbWVzcGFjZSBHeyBpbnQgeDsgfQorK25hbWVzcGFjZSBIeyBpbnQgeDsgfQorK25hbWVzcGFj ZSBJeyBpbnQgeDsgfQorK25hbWVzcGFjZSBKeyBpbnQgeDsgfQorK25hbWVzcGFjZSBLeyBpbnQg eDsgfQorK25hbWVzcGFjZSBMeyBpbnQgeDsgfQorK25hbWVzcGFjZSBNeyBpbnQgeDsgfQorK25h bWVzcGFjZSBOeyBpbnQgeDsgfQorK25hbWVzcGFjZSBPeyBpbnQgeDsgfQorK25hbWVzcGFjZSBQ eyBpbnQgeDsgfQorK25hbWVzcGFjZSBReyBpbnQgeDsgfQorK25hbWVzcGFjZSBSeyBpbnQgeDsg fQorK25hbWVzcGFjZSBTeyBpbnQgeDsgfQorK25hbWVzcGFjZSBUeyBpbnQgeDsgfQorK25hbWVz cGFjZSBVeyBpbnQgeDsgfQorK25hbWVzcGFjZSBWeyBpbnQgeDsgfQorK25hbWVzcGFjZSBXeyBp bnQgeDsgfQorK25hbWVzcGFjZSBYeyBpbnQgeDsgfQorK25hbWVzcGFjZSBZeyBpbnQgeDsgfQor K25hbWVzcGFjZSBaeyBpbnQgeDsgfQorKworKworK2ludCBtYWluKCl7CisrCisrICB1c2luZyBu YW1lc3BhY2UgQTsKKysgIHVzaW5nIG5hbWVzcGFjZSBCOworKyAgdXNpbmcgbmFtZXNwYWNlIEM7 CisrICB1c2luZyBuYW1lc3BhY2UgRDsKKysgIHVzaW5nIG5hbWVzcGFjZSBFOworKyAgdXNpbmcg bmFtZXNwYWNlIEY7CisrICB1c2luZyBuYW1lc3BhY2UgRzsKKysgIHVzaW5nIG5hbWVzcGFjZSBI OworKyAgdXNpbmcgbmFtZXNwYWNlIEk7CisrICB1c2luZyBuYW1lc3BhY2UgSjsKKysgIHVzaW5n IG5hbWVzcGFjZSBLOworKyAgdXNpbmcgbmFtZXNwYWNlIEw7CisrICB1c2luZyBuYW1lc3BhY2Ug TTsKKysgIHVzaW5nIG5hbWVzcGFjZSBOOworKyAgdXNpbmcgbmFtZXNwYWNlIE87CisrICB1c2lu ZyBuYW1lc3BhY2UgUDsKKysgIHVzaW5nIG5hbWVzcGFjZSBROworKyAgdXNpbmcgbmFtZXNwYWNl IFI7CisrICB1c2luZyBuYW1lc3BhY2UgUzsKKysgIHVzaW5nIG5hbWVzcGFjZSBUOworKyAgdXNp bmcgbmFtZXNwYWNlIFU7CisrICB1c2luZyBuYW1lc3BhY2UgVjsKKysgIHVzaW5nIG5hbWVzcGFj ZSBXOworKyAgdXNpbmcgbmFtZXNwYWNlIFg7CisrICB1c2luZyBuYW1lc3BhY2UgWTsKKysgIHVz aW5nIG5hbWVzcGFjZSBaOworKworKyAgcmV0dXJuIDA7CisrfQorXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0 cmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utc3RyZXNzLmV4cAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjE4MDY1MjMKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuZXhwCitAQCAtMCww ICsxLDUwIEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgJHRyYWNlbGV2ZWwg dGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQgcHJtc19pZCAwCisr c2V0IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1zdHJlc3MKKytzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0geworKyAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAt MQorK30KKysKKytpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworKyAgICByZXR1 cm4gLTE7CisrfQorKworKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKworK2dkYl9leGl0CisrZ2Ri X3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQg JHtiaW5maWxlfQorKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAgIHBlcnJvciAiY291 bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisrIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIFRlc3QgdGhhdCB0 aGUgc2VhcmNoIGNhbiBmYWlsIGVmZmljaWVudGx5IAorKworK2dkYl90ZXN0ICJwcmludCB5IiAi Tm8gc3ltYm9sIFwieVwiIGluIGN1cnJlbnQgY29udGV4dC4iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlLXVzaW5nLmNjCitpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNpbmcuY2MKK0BAIC0xLDI2ICsxLDEyOSBAQAorK25hbWVz cGFjZSBNCisreworKyAgaW50IHggPSA5MTE7CisrfQorKworK25hbWVzcGFjZSBOCisreworKyAg aW50IHggPSA5MTI7CisrfQorKworK2ludCBtYXJrZXIxMCAoKQorK3sKKysgIHVzaW5nIG5hbWVz cGFjZSBNOworKyAgaW50IHkgPSB4ICsgMTsgICAgICAgLy8gbWFya2VyMTAgc3RvcAorKyAgdXNp bmcgbmFtZXNwYWNlIE47CisrICByZXR1cm4geTsKKyt9CisrCisrbmFtZXNwYWNlIEoKKyt7Cisr ICBpbnQganggPSA0NDsKKyt9CisrCisrbmFtZXNwYWNlIEsKKyt7CisrICBpbnQKKysgIG1hcmtl cjkgKCkKKysgIHsKKysgICAgLy94OworKyAgICByZXR1cm4gbWFya2VyMTAgKCk7CisrICB9Cisr fQorKworK25hbWVzcGFjZSBMCisreworKyAgdXNpbmcgbmFtZXNwYWNlIEo7CisrICBpbnQKKysg IG1hcmtlcjggKCkKKysgIHsKKysgICAgang7CisrICAgIHJldHVybiBLOjptYXJrZXI5ICgpOwor KyAgfQorK30KKysKKytuYW1lc3BhY2UgRworK3sKKysgIG5hbWVzcGFjZSBICisrICB7CisrICAg IGludCBnaHggPSA2OworKyAgfQorK30KKysKKytuYW1lc3BhY2UgSQorK3sgIAorKyAgaW50Cisr ICBtYXJrZXI3ICgpCisrICB7CisrICAgIHVzaW5nIG5hbWVzcGFjZSBHOjpIOworKyAgICBnaHg7 CisrICAgIHJldHVybiBMOjptYXJrZXI4ICgpOworKyAgfQorK30KKysKKytuYW1lc3BhY2UgRQor K3sKKysgIG5hbWVzcGFjZSBGCisrICB7CisrICAgIGludCBlZnggPSA1OworKyAgfQorK30KKysK Kyt1c2luZyBuYW1lc3BhY2UgRTo6RjsKKytpbnQKKyttYXJrZXI2ICgpCisreworKyAgZWZ4Owor KyAgcmV0dXJuIEk6Om1hcmtlcjcgKCk7CisrfQorKworIG5hbWVzcGFjZSBBCisgeworICAgaW50 IF9hID0gMTsKKyAgIGludCB4ID0gMjsKKyB9CisgCistaW50IG1hcmtlcjQoKXsKKy0JdXNpbmcg QTo6eDsKKy0JcmV0dXJuIDA7CisrbmFtZXNwYWNlIEMKKyt7CisrICBpbnQgY2MgPSAzOworK30K KysKKytuYW1lc3BhY2UgRAorK3sKKysgIGludCBkeCA9IDQ7CisrfQorKworK3VzaW5nIG5hbWVz cGFjZSBDOworK2ludAorK21hcmtlcjUgKCkKKyt7CisrICBjYzsKKysgIHJldHVybiBtYXJrZXI2 ICgpOworK30KKysKKytpbnQKKyttYXJrZXI0ICgpCisreworKyAgdXNpbmcgRDo6ZHg7CisrICBy ZXR1cm4gbWFya2VyNSAoKTsKKyB9CisgCistaW50IG1hcmtlcjMoKXsKKy0JcmV0dXJuIG1hcmtl cjQoKTsKKytpbnQKKyttYXJrZXIzICgpCisreworKyAgcmV0dXJuIG1hcmtlcjQgKCk7CisgfQor IAorLWludCBtYXJrZXIyKCkKKytpbnQKKyttYXJrZXIyICgpCisgeworICAgbmFtZXNwYWNlIEIg PSBBOworICAgQjo6X2E7CistICByZXR1cm4gbWFya2VyMygpOworKyAgcmV0dXJuIG1hcmtlcjMg KCk7CisgfQorIAorLWludCBtYXJrZXIxKCkKKytpbnQKKyttYXJrZXIxICgpCisgeworICAgaW50 IHRvdGFsID0gMDsKKyAgIHsKK0BAIC0yOSwxNyArMTMyLDE4IEBAIGludCBtYXJrZXIxKCkKKyAg ICAgICB1c2luZyBuYW1lc3BhY2UgQTsKKyAgICAgICBpbnQgYyA9IDI7CisgICAgICAgeworLSAg ICAgICAgaW50IGQgPSAzOworLSAgICAgICAgdG90YWwgPSBfYSArIGIgKyBjICsgZCArIG1hcmtl cjIoKTsgLy8gbWFya2VyMSBzdG9wCisrCWludCBkID0gMzsKKysJdG90YWwgPSBfYSArIGIgKyBj ICsgZCArIG1hcmtlcjIgKCk7IC8vIG1hcmtlcjEgc3RvcAorICAgICAgIH0KKyAgICAgfQorICAg fQorICAgcmV0dXJuIHRvdGFsOworIH0KKyAKKy1pbnQgbWFpbigpCisraW50CisrbWFpbiAoKQor IHsKKyAgIHVzaW5nIG5hbWVzcGFjZSBBOworICAgX2E7CistICByZXR1cm4gbWFya2VyMSgpOwor KyAgcmV0dXJuIG1hcmtlcjEgKCk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZS11c2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Ut dXNpbmcuZXhwCitpbmRleCAzMTk1NTJiLi4wNjczMDg4IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbmFtZXNwYWNlLXVzaW5nLmV4cAorQEAgLTI4LDYgKzI4LDExIEBAIGlmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7ZGViCisgICAgIHJldHVybiAtMQorIH0KKyAKKytpZiBbZ2V0X2NvbXBpbGVyX2luZm8g JHtiaW5maWxlfV0geworKyAgICByZXR1cm4gLTE7CisrfQorKworKworICMgR2V0IHRoaW5ncyBz dGFydGVkLgorIAorIGdkYl9leGl0CitAQCAtNDYsNDIgKzUxLDE1NSBAQCBpZiAhW3J1bnRvX21h aW5dIHRoZW4geworIAorIGdkYl90ZXN0ICJwcmludCBfYSIgIj0gMSIKKyAKKysjIFRlc3QgdGhh dCBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiB0aGV5IAorKyMgYXJlIG5vdCBpbXBvcnRlZAor KworK2dkYl9icmVha3BvaW50IG1hcmtlcjMKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi bWFya2VyMyIKKysKKysjc2VuZF9nZGIgImJyZWFrIG1hcmtlcjNcbiIKKysjc2VuZF9nZGIgImNv bnRpbnVlXG4iCisrCisrZ2RiX3Rlc3QgInByaW50IF9hIiAiTm8gc3ltYm9sIFwiX2FcIiBpbiBj dXJyZW50IGNvbnRleHQuIiAiUHJpbnQgX2Egd2l0aG91dCBpbXBvcnQiCisrCisrZ2RiX2V4aXQK KytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJf bG9hZCAke2JpbmZpbGV9CisrCisrCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyAjIHRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGltcG9ydGVkIGludG8g CisgIyBhIHNjb3BlIGNvbnRhaW5pbmcgdGhlIHBjLgorIAorK2lmICFbcnVudG9fbWFpbl0gdGhl biB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKKysgICAg Y29udGludWUKKyt9CisrCisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1h cmtlcjEgc3RvcCJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjEgc3RvcCIK KyAKKyBnZGJfdGVzdCAicHJpbnQgX2EiICI9IDEiICJwcmludCBfYSBpbiBhIG5lc3RlZCBzY29w ZSIKKyAKKysKKytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0KKysKKysjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgdGVzdCBwcmludGluZyBvZiBuYW1lc3Bh Y2UgaW1wb3J0ZWQgaW50byAKKysjIGZpbGUgc2NvcGUuCisrCisrCisraWYgIVtydW50byBtYXJr ZXI1XSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYXJr ZXI1IgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQgY2MiICI9IDMiCisr CisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisrCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGFs aWFzZXMKKyAKKy1zZXR1cF9rZmFpbCAiZ2RiLzc5MzUiICIqLSotKiIKKyBpZiAhW3J1bnRvIG1h cmtlcjJdIHRoZW4geworICAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1h cmtlcjIiCisgICAgIGNvbnRpbnVlCisgfQorIAorLWdkYl90ZXN0ICJwcmludCBCOjphIiAiPSAx IgorK2dkYl90ZXN0ICJwcmludCBCOjpfYSIgIj0gMSIKKysKKytnZGJfdGVzdCAicHJpbnQgX2Ei ICJObyBzeW1ib2wgXCJfYVwiIGluIGN1cnJlbnQgY29udGV4dC4iICJwcmludCBfYSBpbiBuYW1l c3BhY2UgYWxpYXMgc2NvcGUiCisrZ2RiX3Rlc3QgInByaW50IHgiICJObyBzeW1ib2wgXCJ4XCIg aW4gY3VycmVudCBjb250ZXh0LiIgInByaW50IHggaW4gbmFtZXNwYWNlIGFsaWFzIHNjb3BlIgor KworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworIAorICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBUZXN0IHRoYXQgbmFtZXMgYXJlIG5vdCBwcmlu dGVkIHdoZW4gdGhleSAKKyAjIGFyZSBub3QgaW1wb3J0ZWQKKyAKKy1nZGJfYnJlYWtwb2ludCAi bWFya2VyMyIKKy1nZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyMyIKKytpZiB7IVty dW50byBtYXJrZXIzXX0geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50 IG1hcmtlcjMiCisrfQorIAorLWdkYl90ZXN0ICJwcmludCBfYSIgIk5vIHN5bWJvbCBcIl9hXCIg aW4gY3VycmVudCBjb250ZXh0LiIgIlByaW50IGEgd2l0aG91dCBpbXBvcnQiCisrIyBnY2MtNC0z IHB1dHMgaW1wb3J0IHN0YXRlbWVudHMgZm9yIGFsaWFzZXMgaW4KKysjIHRoZSBnbG9iYWwgc2Nv cGUgaW5zdGVhZCBvZiB0aGUgY29ycmVzcG9uZGluZworKyMgZnVuY3Rpb24gc2NvcGUuIFRoZXNl IHdyb25nIGltcG9ydCBzdGF0ZW1lbnRzIHRocm93CisrIyB0aGlzIHRlc3Qgb2ZmLiBUaGlzIGlz IGZpeGVkIGluIGdjYy00LTQuCisraWYgW3Rlc3RfY29tcGlsZXJfaW5mbyBnY2MtNC0zLSpdIHRo ZW4geyBzZXR1cF94ZmFpbCAqLSotKiB9CisrCisrZ2RiX3Rlc3QgInByaW50IF9hIiAiTm8gc3lt Ym9sIFwiX2FcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAiUHJpbnQgX2Egd2l0aG91dCBpbXBvcnQi CisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFRl c3QgcHJpbnRpbmcgb2YgaW5kaXZpZHVhbGx5IGltcG9ydGVkIGVsZW1lbnRzCisgCistc2V0dXBf a2ZhaWwgImdkYi83OTM2IiAiKi0qLSoiCisgaWYgIVtydW50byBtYXJrZXI0XSB0aGVuIHsKKyAg ICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYXJrZXI0IgorICAgICBjb250 aW51ZQorIH0KKyAKKy1nZGJfdGVzdCAicHJpbnQgeCIgIj0gMiIKKytnZGJfdGVzdCAicHJpbnQg ZHgiICI9IDQiCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKysjIFRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGFsaWFzZXMKKysKKytpZiAhW3J1bnRv IG1hcmtlcjVdIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBtYXJrZXI1Igor KyAgICBjb250aW51ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQgZWZ4IiAiPSA1IgorKworKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBUZXN0IHByaW50 aW5nIG9mIHZhcmlhYmxlcyBpbXBvcnRlZCBmcm9tCisrIyBuZXN0ZWQgbmFtZXNwYWNlcworKwor K2lmICFbcnVudG8gSTo6bWFya2VyN10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVu IHRvIGJyZWFrcG9pbnQgSTo6bWFya2VyNyIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX3Rl c3QgInByaW50IGdoeCIgIj0gNiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworKyMgVGVzdCB0aGF0IHZhcmlhYmxlcyBhcmUgbm90IHByaW50ZWQgaW4g YSBuYW1lc3BhY2UKKysjIHRoYXQgaXMgc2libGluZyB0byB0aGUgbmFtZXNwYWNlIGNvbnRhaW5p bmcgYW4gaW1wb3J0CisrCisraWYgIVtydW50byBMOjptYXJrZXI4XSB0aGVuIHsKKysgICAgcGVy cm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBMOjptYXJrZXI4IgorKyAgICBjb250aW51 ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQgangiICI9IDQ0IgorKworK2dkYl9icmVha3BvaW50 ICJLOjptYXJrZXI5IgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJLOjptYXJrZXI5Igor KworK2dkYl90ZXN0ICJwcmludCBqeCIgIk5vIHN5bWJvbCBcImp4XCIgaW4gY3VycmVudCBjb250 ZXh0LiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor KyMgVGVzdCB0aGF0IHZhcmlhYmxlcyBhcmUgb25seSBwcmludGVkIGFmdGVyIHRoZSBsaW5lCisr IyBjb250YWluaW5nIHRoZSBpbXBvcnQKKysKKytpZiAhW3J1bnRvX21haW5dIHRoZW4geworKyAg ICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4iCisrICAgIGNvbnRpbnVl CisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIxMCBz dG9wIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyMTAgc3RvcCIKKysKKysj IEFzc2VydCB0aGF0IE06OnggaXMgcHJpbnRlZCBhbmQgbm90IE46OngKKytnZGJfdGVzdCAicHJp bnQgeCIgIj0gOTExIiAicHJpbnQgeCAoZnJvbSBNOjp4KSIKKysKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLmV4cAoraW5kZXggNDM2MmZkOC4uZjdjZmQ1NyAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS5leHAKK0BAIC0yNCw2ICsyNCw3IEBACisgIyBmb3IgbmFtZXNwYWNlcy4KKyAjIE5v dGU6IEFzIG9mIDIwMDAtMDYtMDMsIHRoZXkgcGFzc2VkIHVuZGVyIGcrKyAtIGRqYgorIAorK2xv YWRfbGliICJjcC1zdXBwb3J0LmV4cCIKKyAKKyBpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKyAgICAg ICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorQEAgLTI0MSwxMSArMjQyLDE2IEBAIGdkYl90ZXN0ICJw dHlwZSBFIiAidHlwZSA9IG5hbWVzcGFjZSBDOjpEOjpFIgorIGdkYl90ZXN0ICJwdHlwZSBDQ2xh c3MiICJ0eXBlID0gKGNsYXNzIEM6OkNDbGFzcyBce1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6OkND bGFzcyBceylcclxuICAgIGludCB4O1xyXG5cfSIKKyBnZGJfdGVzdCAicHR5cGUgQ0NsYXNzOjpO ZXN0ZWRDbGFzcyIgInR5cGUgPSAoY2xhc3MgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyBce1xyXG4g IHB1YmxpYzp8c3RydWN0IEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHspXHJcbiAgICBpbnQgeTtc clxuXH0iCisgZ2RiX3Rlc3QgInB0eXBlIE5lc3RlZENsYXNzIiAiTm8gc3ltYm9sIFwiTmVzdGVk Q2xhc3NcIiBpbiBjdXJyZW50IGNvbnRleHQuIgorLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiot Ki0qIgorLWdkYl90ZXN0ICJwdHlwZSA6OkM6OkNDbGFzcyIgInR5cGUgPSBjbGFzcyBDOjpDQ2xh c3MgXHtcclxuICBwdWJsaWM6XHJcbiAgICBpbnQgeDtcclxuXH0iCistc2V0dXBfa2ZhaWwgImdk Yi8xNDQ4IiAiKi0qLSoiCistZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6Q0NsYXNzOjpOZXN0ZWRDbGFz cyIgInR5cGUgPSBjbGFzcyBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIFx7XHJcbiAgcHVibGljOlxy XG4gICAgaW50IHk7XHJcblx9IgorLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgorK2Nw X3Rlc3RfcHR5cGVfY2xhc3MgXAorKwkicHR5cGUgOjpDOjpDQ2xhc3MiICIiICJjbGFzcyIgIkM6 OkNDbGFzcyIgXAorKwl7CisrCSAgICB7IGZpZWxkIHB1YmxpYyAiaW50IHg7IiB9CisrCX0KKytj cF90ZXN0X3B0eXBlX2NsYXNzIFwKKysJInB0eXBlIDo6Qzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIg IiIgImNsYXNzIiAiQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgXAorKwl7CisrCSAgICB7IGZpZWxk IHB1YmxpYyAiaW50IHk7IiB9CisrCX0KKyBnZGJfdGVzdCAicHR5cGUgOjpDOjpOZXN0ZWRDbGFz cyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQ1wiLiIKKyBnZGJf dGVzdCAicHR5cGUgQzo6Q0NsYXNzIiAiTm8gc3ltYm9sIFwiQ0NsYXNzXCIgaW4gbmFtZXNwYWNl IFwiQzo6Q1wiLiIKKyBnZGJfdGVzdCAicHR5cGUgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgIk5v IHR5cGUgXCJDQ2xhc3NcIiB3aXRoaW4gY2xhc3Mgb3IgbmFtZXNwYWNlIFwiQzo6Q1wiLiIKK0BA IC0yNTUsOCArMjYxLDExIEBAIGdkYl90ZXN0ICJwdHlwZSBDOjpOZXN0ZWRDbGFzcyIgIk5vIHN5 bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wiCisgCisgZ2RiX3Rlc3Qg InByaW50IGNPdGhlckZpbGUiICJcXCRcWzAtOVxdLiogPSAzMTYiCisgZ2RiX3Rlc3QgInB0eXBl IE90aGVyRmlsZUNsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpPdGhlckZpbGVDbGFzcyBce1xyXG4g IHB1YmxpYzp8c3RydWN0IEM6Ok90aGVyRmlsZUNsYXNzIFx7KVxyXG4gICAgaW50IHo7XHJcblx9 IgorLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgorLWdkYl90ZXN0ICJwdHlwZSA6OkM6 Ok90aGVyRmlsZUNsYXNzIiAidHlwZSA9IGNsYXNzIEM6Ok90aGVyRmlsZUNsYXNzIFx7XHJcbiAg cHVibGljOlxyXG4gICAgaW50IHo7XHJcblx9IgorK2NwX3Rlc3RfcHR5cGVfY2xhc3MgXAorKwki cHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgIiIgImNsYXNzIiAiQzo6T3RoZXJGaWxlQ2xhc3Mi IFwKKysJeworKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB6OyIgfQorKwl9CisgZ2RiX3Rlc3Qg InB0eXBlIEM6Ok90aGVyRmlsZUNsYXNzIiAiTm8gc3ltYm9sIFwiT3RoZXJGaWxlQ2xhc3NcIiBp biBuYW1lc3BhY2UgXCJDOjpDXCIuIgorIAorICMgU29tZSBhbm9ueW1vdXMgbmFtZXNwYWNlIHRl c3RzLgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cAoraW5kZXggMWJmYTBmMy4uOWZkMzFhOCAx MDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3Avb3ZlcmxvYWQuZXhwCitAQCAtNzQsMTIgKzc0LDEyIEBAIHNldCBy ZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxc KTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdc XChjaGFyXFwpOyIKKyBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJs b2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpOyIKKyBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2Rz fSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCk7IgorLXNldCByZV9tZXRo b2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCk7IgorLXNl dCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwodW5zaWdu ZWQgc2hvcnRcXCk7IgorK3NldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3Zl cmxvYWQxYXJnXFwoc2hvcnQoIGludCk/XFwpOyIKKytzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRo b2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBzaG9ydHxzaG9ydCB1bnNpZ25l ZCkoIGludCk/XFwpOyIKKyBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92 ZXJsb2FkMWFyZ1xcKGludFxcKTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dz fWludCBvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBpbnRcXCk7IgorLXNldCByZV9tZXRob2RzCSIk e3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwobG9uZ1xcKTsiCistc2V0IHJlX21l dGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25n XFwpOyIKKytzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFy Z1xcKGxvbmcoIGludCk/XFwpOyIKKytzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9 aW50IG92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xc KTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdc XChmbG9hdFxcKTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVy bG9hZDFhcmdcXChkb3VibGVcXCk7IgorIHNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3 c31pbnQgb3ZlcmxvYWRmbmFyZ1xcKCh2b2lkfClcXCk7IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL292bGRicmVhay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmxkYnJl YWsuZXhwCitpbmRleCA1YjA2YjMxLi4zZTQ3Yzc3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3Avb3ZsZGJyZWFrLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3ZsZGJy ZWFrLmV4cAorQEAgLTEyNywxMCArMTI3LDI0IEBAIHByb2Mgc2V0X2JwX292ZXJsb2FkZWQge25h bWUgZXhwZWN0ZWRtZW51IG15Y2hvaWNlIGJwbnVtYmVyIGxpbmVudW1iZXJ9IHsKKyB9CisgCisg IyBUaGlzIGlzIHRoZSBleHBlY3RlZCBtZW51IGZvciBvdmVybG9hZDFhcmcuCistIyBOb3RlIHRo ZSBhcmcgdHlwZSB2YXJpYXRpb25zIG9uIGxpbmVzIDYgYW5kIDEzLgorKyMgTm90ZSB0aGUgYXJn IHR5cGUgdmFyaWF0aW9ucyBmb3Igdm9pZCBhbmQgaW50ZWdlciB0eXBlcy4KKyAjIFRoaXMgYWNj b21tb2RhdGVzIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBnKysuCisgCistc2V0IG1lbnVfb3Zlcmxv YWQxYXJnICJcXFxbMFxcXF0gY2FuY2VsXHJcblxcXFsxXFxcXSBhbGxcclxuXFxcWzJcXFxdIGZv bzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZToxMjFcclxuXFxcWzNcXFxd IGZvbzo6b3ZlcmxvYWQxYXJnXFwoZmxvYXRcXCkgYXQuKiRzcmNmaWxlOjEyMFxyXG5cXFxbNFxc XF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpIGF0Liokc3JjZmlsZToxMTlc clxuXFxcWzVcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE4 XHJcblxcXFs2XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBpbnR8dW5zaWduZWQp XFwpIGF0Liokc3JjZmlsZToxMTdcclxuXFxcWzdcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoaW50 XFwpIGF0Liokc3JjZmlsZToxMTZcclxuXFxcWzhcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5z aWduZWQgc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjExNVxyXG5cXFxbOVxcXF0gZm9vOjpvdmVybG9h ZDFhcmdcXChzaG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHJcblxcXFsxMFxcXF0gZm9vOjpvdmVy bG9hZDFhcmdcXCh1bnNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNcclxuXFxcWzExXFxc XSBmb286Om92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJcclxu XFxcWzEyXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxy XG5cXFxbMTNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6 MTEwXHJcbj4gJCIKKytzZXQgICAgbWVudV9vdmVybG9hZDFhcmcgIlxcXFswXFxcXSBjYW5jZWxc clxuIgorK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzFcXFxdIGFsbFxyXG4iCisrYXBw ZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbMlxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChkb3Vi bGVcXCkgYXQuKiRzcmNmaWxlOjEyMVxyXG4iCisrYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJc XFxbM1xcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHJc biIKKythcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs0XFxcXSBmb286Om92ZXJsb2FkMWFy Z1xcKCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6 MTE5XHJcbiIKKythcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs1XFxcXSBmb286Om92ZXJs b2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMThcclxuIgorK2FwcGVuZCBt ZW51X292ZXJsb2FkMWFyZyAiXFxcWzZcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVk IGludHx1bnNpZ25lZClcXCkgYXQuKiRzcmNmaWxlOjExN1xyXG4iCisrYXBwZW5kIG1lbnVfb3Zl cmxvYWQxYXJnICJcXFxbN1xcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNm aWxlOjExNlxyXG4iCisrYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbOFxcXF0gZm9vOjpv dmVybG9hZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBh dC4qJHNyY2ZpbGU6MTE1XHJcbiIKKythcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs5XFxc XSBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE0XHJc biIKKythcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFsxMFxcXF0gZm9vOjpvdmVybG9hZDFh cmdcXCh1bnNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNcclxuIgorK2FwcGVuZCBtZW51 X292ZXJsb2FkMWFyZyAiXFxcWzExXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFy XFwpIGF0Liokc3JjZmlsZToxMTJcclxuIgorK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxc WzEyXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyXG4i CisrYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbMTNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJn XFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6MTEwXHJcbiIKKythcHBlbmQgbWVudV9vdmVybG9h ZDFhcmcgIj4gJCIKKyAKKyAjIFNldCBtdWx0aXBsZS1zeW1ib2xzIHRvICJhc2siLCB0byBhbGxv dyB1cyB0byB0ZXN0IHRoZSB1c2UKKyAjIG9mIHRoZSBtdWx0aXBsZS1jaG9pY2UgbWVudSB3aGVu IGJyZWFraW5nIG9uIGFuIG92ZXJsb2FkZWQgbWV0aG9kLgorQEAgLTE1NywxNyArMTcxLDE3IEBA IHNldF9icF9vdmVybG9hZGVkICJmb286Om92ZXJsb2FkMWFyZyIgIiRtZW51X292ZXJsb2FkMWFy ZyIgMTMgICAxMyAxMTAKKyAKKyBnZGJfdGVzdCAiaW5mbyBicmVhayIgXAorICAgICAiTnVtICAg ICBUeXBlXFtcdCBcXStEaXNwIEVuYiBBZGRyZXNzXFtcdCBcXStXaGF0LioKKy1cWzAtOVxdK1xb XHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluIGF0 Liokc3JjZmlsZTo0OVxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxb XHQgXF0rJGhleFxbXHQgXF0raW4gbWFpbihcXCgofHZvaWQpXFwpKT8gYXQuKiRzcmNmaWxlOjQ5 XHIKKyBcW1x0IFxdK2JyZWFrcG9pbnQgYWxyZWFkeSBoaXQgMSB0aW1lXHIKKyBcWzAtOVxdK1xb XHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92 ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyCisgXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHIKKyBcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExM1xyCistXFswLTlcXStc W1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpv dmVybG9hZDFhcmdcXChzaG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKKy1cWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVccgorK1xbMC05XF0r XFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6 b3ZlcmxvYWQxYXJnXFwoc2hvcnQoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTRccgorK1xbMC05 XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZv bzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIHNob3J0fHNob3J0IHVuc2lnbmVkKSggaW50KT9c XCkgYXQuKiRzcmNmaWxlOjExNVxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtl ZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQu KiRzcmNmaWxlOjExNlxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxb XHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5zaWdu ZWQgaW50KVxcKSBhdC4qJHNyY2ZpbGU6MTE3XHIKKy1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGxv bmdcXCkgYXQuKiRzcmNmaWxlOjExOFxyCistXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAg IGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25l ZCBsb25nXFwpIGF0Liokc3JjZmlsZToxMTlccgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50 ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9u ZyggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOFxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9p bnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgo dW5zaWduZWQgbG9uZ3xsb25nIHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOVxy CisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQg XF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKKyBc WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStp biBmb286Om92ZXJsb2FkMWFyZ1xcKGRvdWJsZVxcKSBhdC4qJHNyY2ZpbGU6MTIxXHIKKyBcWzAt OVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBm b286Om92ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjExMCIgXAorQEAgLTIx NSwxNyArMjI5LDE3IEBAIGdkYl9leHBlY3QgeworIAorIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBc CisgICAgICJOdW0gICAgIFR5cGVcW1x0IFxdK0Rpc3AgRW5iIEFkZHJlc3NcW1x0IFxdK1doYXQu KgorLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0 IFxdK2luIG1haW4gYXQuKiRzcmNmaWxlOjQ5XHIKKytcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluKFxcKCh8dm9pZClcXCkpPyBh dC4qJHNyY2ZpbGU6NDlccgorIFxbXHQgXF0rYnJlYWtwb2ludCBhbHJlYWR5IGhpdCAxIHRpbWVc cgorIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0 IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTExXHIKKyBc WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStp biBmb286Om92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJccgor IFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxd K2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEz XHIKKy1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtc dCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTRccgor LVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxd K2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjEx NVxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxb XHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydCggaW50KT9cXCkgYXQuKiRzcmNmaWxl OjExNFxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5z aWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJl YWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFy Z1xcKGludFxcKSBhdC4qJHNyY2ZpbGU6MTE2XHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1 bnNpZ25lZHx1bnNpZ25lZCBpbnQpXFwpIGF0Liokc3JjZmlsZToxMTdccgorLVxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwobG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHIKKy1cWzAtOVxdK1xbXHQgXF0r YnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2Fk MWFyZ1xcKHVuc2lnbmVkIGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOVxyCisrXFswLTlcXStcW1x0 IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVy bG9hZDFhcmdcXChsb25nKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHIKKytcWzAtOVxdK1xb XHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92 ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4q JHNyY2ZpbGU6MTE5XHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtc dCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGZsb2F0XFwpIGF0Liokc3Jj ZmlsZToxMjBccgorIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxd KyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmls ZToxMjFccgorIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRo ZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6 MTEwIiBcCitAQCAtMjk2LDEyICszMTAsMTIgQEAgZ2RiX3Rlc3QgImluZm8gYnJlYWsiIFwKKyAg ICAgIk51bSAgICAgVHlwZVxbXHQgXF0rRGlzcCBFbmIgQWRkcmVzc1xbXHQgXF0rV2hhdC4qCisg XFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0r aW4gZm9vOjpvdmVybG9hZDFhcmdcXChkb3VibGVcXCkgYXQuKiRzcmNmaWxlOjEyMVxyCisgXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKKy1cWzAtOVxd K1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286 Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOVxyCistXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXChsb25nXFwpIGF0Liokc3JjZmlsZToxMThccgorK1xbMC05XF0r XFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6 b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIGxvbmd8bG9uZyB1bnNpZ25lZCkoIGludCk/XFwpIGF0 Liokc3JjZmlsZToxMTlccgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlc W1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZyggaW50KT9cXCkg YXQuKiRzcmNmaWxlOjExOFxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAg eVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5z aWduZWQgaW50KVxcKSBhdC4qJHNyY2ZpbGU6MTE3XHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xc KGludFxcKSBhdC4qJHNyY2ZpbGU6MTE2XHIKKy1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2ln bmVkIHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVccgorLVxbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo c2hvcnRcXCkgYXQuKiRzcmNmaWxlOjExNFxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5z aWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHIK KytcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBc XStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE0 XHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtc dCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxl OjExM1xyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2Zp bGU6MTEyXHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSsk aGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjEx MVxyCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcmVhbGNwcC5jYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL3JlYWxjcHAuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi44ZTRmNzJhCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9yZWFsY3BwLmNjCitAQCAtMCwwICsxLDQwOSBAQAorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysj aW5jbHVkZSA8aW9zdHJlYW0+CisrCisrLy8gRm9yd2FyZCBkZWNscworK2NsYXNzIGJhc2U7Cisr Y2xhc3MgZGVyaXZlZDsKKysKKysvLyBBIHNpbXBsZSB0ZW1wbGF0ZSB3aXRoIHNwZWNpYWxpemF0 aW9ucworK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorK2NsYXNzIHRjbGFzcworK3sKKytwdWJsaWM6 CisrICB2b2lkIGRvX3NvbWV0aGluZyAoKSB7IH0gLy8gdGNsYXNzPFQ+Ojpkb19zb21ldGhpbmcK Kyt9OworKworK3RlbXBsYXRlIDw+Cisrdm9pZCB0Y2xhc3M8Y2hhcj46OmRvX3NvbWV0aGluZyAo KSB7IH0gLy8gdGNsYXNzPGNoYXI+Ojpkb19zb21ldGhpbmcKKysKKyt0ZW1wbGF0ZSA8PgorK3Zv aWQgdGNsYXNzPGludD46OmRvX3NvbWV0aGluZyAoKSB7IH0gLy8gdGNsYXNzPGludD46OmRvX3Nv bWV0aGluZworKworK3RlbXBsYXRlPD4KKyt2b2lkIHRjbGFzczxsb25nPjo6ZG9fc29tZXRoaW5n ICgpIHsgfSAvLyB0Y2xhc3M8bG9uZz46OmRvX3NvbWV0aGluZworKworK3RlbXBsYXRlPD4KKyt2 b2lkIHRjbGFzczxzaG9ydD46OmRvX3NvbWV0aGluZyAoKSB7IH0gLy8gdGNsYXNzPHNob3J0Pjo6 ZG9fc29tZXRoaW5nCisrCisrLy8gQSBzaW1wbGUgdGVtcGxhdGUgd2l0aCBtdWx0aXBsZSB0ZW1w bGF0ZSBwYXJhbWV0ZXJzCisrdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEMsIGNs YXNzIEQsIGNsYXNzIEU+Cisrdm9pZCBmbHViYmVyICh2b2lkKSAvLyBmbHViYmVyCisreworKyAg QSBhOworKyAgQiBiOworKyAgQyBjOworKyAgRCBkOworKyAgRSBlOworKworKyAgKythOworKyAg KytiOworKyAgKytjOworKyAgKytkOworKyAgKytlOworK30KKysKKysvLyBTb21lIGNvbnRyaXZl ZCBwb2xpY2llcworK3RlbXBsYXRlIDxjbGFzcyBUPgorK3N0cnVjdCBvcGVyYXRpb25fMQorK3sK KysgIHN0YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzE8VD46OmZ1 bmN0aW9uCisrfTsKKysKKyt0ZW1wbGF0ZSA8Y2xhc3MgVD4KKytzdHJ1Y3Qgb3BlcmF0aW9uXzIK Kyt7CisrICBzdGF0aWMgdm9pZCBmdW5jdGlvbiAodm9pZCkgeyB9IC8vIG9wZXJhdGlvbl8yPFQ+ OjpmdW5jdGlvbgorK307CisrCisrdGVtcGxhdGUgPGNsYXNzIFQ+Cisrc3RydWN0IG9wZXJhdGlv bl8zCisreworKyAgc3RhdGljIHZvaWQgZnVuY3Rpb24gKHZvaWQpIHsgfSAvLyBvcGVyYXRpb25f MzxUPjo6ZnVuY3Rpb24KKyt9OworKworK3RlbXBsYXRlIDxjbGFzcyBUPgorK3N0cnVjdCBvcGVy YXRpb25fNAorK3sKKysgIHN0YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0 aW9uXzQ8VD46OmZ1bmN0aW9uCisrfTsKKysKKysvLyBBIHBvbGljeS1iYXNlZCBjbGFzcyB3LyBh bmQgdy9vIGRlZmF1bHQgcG9saWN5CisrdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4K KytjbGFzcyBwb2xpY3kgOiBwdWJsaWMgUG9saWN5CisreworK3B1YmxpYzoKKysgIHBvbGljeSAo VCBvYmopIDogb2JqXyAob2JqKSB7IH0gLy8gcG9saWN5PFQsIFBvbGljeT46OnBvbGljeQorKwor K3ByaXZhdGU6CisrICBUIG9ial87CisrfTsKKysKKyt0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg UG9saWN5ID0gb3BlcmF0aW9uXzE8VD4gPgorK2NsYXNzIHBvbGljeWQgOiBwdWJsaWMgUG9saWN5 CisreworK3B1YmxpYzoKKysgIHBvbGljeWQgKFQgb2JqKSA6IG9ial8gKG9iaikgeyB9IC8vIHBv bGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZAorKyAgfnBvbGljeWQgKHZvaWQpIHsgfSAvLyBwb2xp Y3lkPFQsIFBvbGljeT46On5wb2xpY3lkCisrCisrcHJpdmF0ZToKKysgIFQgb2JqXzsKKyt9Owor KworK3R5cGVkZWYgcG9saWN5PGludCwgb3BlcmF0aW9uXzE8dm9pZCo+ID4gcG9saWN5MTsKKyt0 eXBlZGVmIHBvbGljeTxpbnQsIG9wZXJhdGlvbl8yPHZvaWQqPiA+IHBvbGljeTI7CisrdHlwZWRl ZiBwb2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPiBwb2xpY3kzOworK3R5cGVkZWYgcG9s aWN5PGludCwgb3BlcmF0aW9uXzQ8dm9pZCo+ID4gcG9saWN5NDsKKysKKyt0eXBlZGVmIHBvbGlj eWQ8aW50PiBwb2xpY3lkMTsKKyt0eXBlZGVmIHBvbGljeWQ8bG9uZz4gcG9saWN5ZDI7CisrdHlw ZWRlZiBwb2xpY3lkPGNoYXI+IHBvbGljeWQzOworK3R5cGVkZWYgcG9saWN5ZDxiYXNlPiBwb2xp Y3lkNDsKKyt0eXBlZGVmIHBvbGljeWQ8dGNsYXNzPGludD4gPiBwb2xpY3lkNTsKKysKKytjbGFz cyBmbHVmZiB7IH07Cisrc3RhdGljIGZsdWZmICpnX2ZsdWZmID0gbmV3IGZsdWZmICgpOworKwor K2NsYXNzIGJhc2UKKyt7CisrcHJvdGVjdGVkOgorKyAgaW50IGZvb187CisrCisrcHVibGljOgor KyAgYmFzZSAodm9pZCkgOiBmb29fICg0MikgeyB9IC8vIGJhc2U6OmJhc2Uodm9pZCkKKysgIGJh c2UgKGludCBmb28pIDogZm9vXyAoZm9vKSB7IH0gLy8gYmFzZTo6YmFzZShpbnQpCisrICB+YmFz ZSAodm9pZCkgeyB9IC8vIGJhc2U6On5iYXNlCisrCisrICAvLyBTb21lIG92ZXJsb2FkZWQgbWV0 aG9kcworKyAgaW50IG92ZXJsb2FkICh2b2lkKSBjb25zdCB7IHJldHVybiAwOyB9IC8vIGJhc2U6 Om92ZXJsb2FkKHZvaWQpIGNvbnN0CisrICBpbnQgb3ZlcmxvYWQgKGludCBpKSBjb25zdCB7IHJl dHVybiAxOyB9IC8vIGJhc2U6Om92ZXJsb2FkKGludCkgY29uc3QKKysgIGludCBvdmVybG9hZCAo c2hvcnQgcykgY29uc3QgeyByZXR1cm4gMjsgfSAvLyBiYXNlOjpvdmVybG9hZChzaG9ydCkgY29u c3QKKysgIGludCBvdmVybG9hZCAobG9uZyBsKSBjb25zdCB7IHJldHVybiAzOyB9IC8vIGJhc2U6 Om92ZXJsb2FkKGxvbmcpIGNvbnN0CisrICBpbnQgb3ZlcmxvYWQgKGNoYXIqIGEpIGNvbnN0IHsg cmV0dXJuIDQ7IH0gLy8gYmFzZTo6b3ZlcmxvYWQoY2hhciopIGNvbnN0CisrICBpbnQgb3Zlcmxv YWQgKGJhc2UmIGIpIGNvbnN0IHsgcmV0dXJuIDU7IH0gLy8gYmFzZTo6b3ZlcmxvYWQoYmFzZSYp IGNvbnN0CisrCisrICAvLyBPcGVyYXRvcnMKKysgIGludCBvcGVyYXRvcisgKGJhc2UgY29uc3Qm IG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yKworKyAgeyByZXR1cm4gZm9vXyArIG8uZm9vXzsg fQorKworKyAgYmFzZSBvcGVyYXRvcisrICh2b2lkKSAvLyBiYXNlOjpvcGVyYXRvcisrCisrICB7 ICsrZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrCisrICBiYXNlIG9wZXJhdG9yKz0oYmFzZSBjb25z dCYgbykgLy8gYmFzZTo6b3BlcmF0b3IrPQorKyAgeyBmb29fICs9IG8uZm9vXzsgcmV0dXJuICp0 aGlzOyB9CisrCisrICBpbnQgb3BlcmF0b3ItIChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNl OjpvcGVyYXRvci0KKysgIHsgcmV0dXJuIGZvb18gLSBvLmZvb187IH0KKysKKysgIGJhc2Ugb3Bl cmF0b3ItLSAodm9pZCkgLy8gYmFzZTo6b3BlcmF0b3ItLQorKyAgeyAtLWZvb187IHJldHVybiAq dGhpczsgfQorKworKyAgYmFzZSBvcGVyYXRvci09IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpv cGVyYXRvci09CisrICB7IGZvb18gLT0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KKysKKysgIGlu dCBvcGVyYXRvciogKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yKgorKyAg eyByZXR1cm4gZm9vXyAqIG8uZm9vXzsgfQorKworKyAgYmFzZSBvcGVyYXRvcio9IChiYXNlIGNv bnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvcio9CisrICB7IGZvb18gKj0gby5mb29fOyByZXR1cm4g KnRoaXM7IH0KKysKKysgIGludCBvcGVyYXRvci8gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJh c2U6Om9wZXJhdG9yLworKyAgeyByZXR1cm4gZm9vXyAvIG8uZm9vXzsgfQorKworKyAgYmFzZSBv cGVyYXRvci89IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvci89CisrICB7IGZvb18g Lz0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KKysKKysgIGludCBvcGVyYXRvciUgKGJhc2UgY29u c3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yJQorKyAgeyByZXR1cm4gZm9vXyAlIG8uZm9v XzsgfQorKyAgCisrICBiYXNlIG9wZXJhdG9yJT0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9w ZXJhdG9yJT0KKysgIHsgZm9vXyAlPSBvLmZvb187IHJldHVybiAqdGhpczsgfQorKworKyAgYm9v bCBvcGVyYXRvcjwgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPAorKyAg eyByZXR1cm4gZm9vXyA8IG8uZm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRvcjw9IChiYXNlIGNv bnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcjw9CisrICB7IHJldHVybiBmb29fIDw9IG8u Zm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRvcj4gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJh c2U6Om9wZXJhdG9yPgorKyAgeyByZXR1cm4gZm9vXyA+IG8uZm9vXzsgfQorKworKyAgYm9vbCBv cGVyYXRvcj49IChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcj49CisrICB7 IHJldHVybiBmb29fID49IG8uZm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRvciE9IChiYXNlIGNv bnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvciE9CisrICB7IHJldHVybiBmb29fICE9IG8u Zm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRvcj09IChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBi YXNlOjpvcGVyYXRvcj09CisrICB7IHJldHVybiBmb29fID09IG8uZm9vXzsgfQorKworKyAgYm9v bCBvcGVyYXRvciEgKHZvaWQpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yIQorKyAgeyByZXR1cm4g IWZvb187IH0KKysKKysgIGJvb2wgb3BlcmF0b3ImJiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8g YmFzZTo6b3BlcmF0b3ImJgorKyAgeyByZXR1cm4gZm9vXyAmJiBvLmZvb187IH0KKysKKysgIGJv b2wgb3BlcmF0b3J8fCAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3J8fAor KyAgeyByZXR1cm4gZm9vXyB8fCBvLmZvb187IH0KKysKKysgIGludCBvcGVyYXRvcjw8IChpbnQg dmFsdWUpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPDwKKysgIHsgcmV0dXJuIGZvb18gIDw8IHZh bHVlOyB9CisrCisrICBiYXNlIG9wZXJhdG9yPDw9IChpbnQgdmFsdWUpIC8vIGJhc2U6Om9wZXJh dG9yPDw9CisrICB7IGZvb18gPDw9IHZhbHVlOyByZXR1cm4gKnRoaXM7IH0KKysKKysgIGludCBv cGVyYXRvcj4+IChpbnQgdmFsdWUpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPj4KKysgIHsgcmV0 dXJuIGZvb18gID4+IHZhbHVlOyB9CisrCisrICBiYXNlIG9wZXJhdG9yPj49IChpbnQgdmFsdWUp IC8vIGJhc2U6Om9wZXJhdG9yPj49CisrICB7IGZvb18gPj49IHZhbHVlOyByZXR1cm4gKnRoaXM7 IH0KKysKKysgIGludCBvcGVyYXRvcn4gKHZvaWQpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yfgor KyAgeyByZXR1cm4gfmZvb187IH0KKysKKysgIGludCBvcGVyYXRvciYgKGJhc2UgY29uc3QmIG8p IGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yJgorKyAgeyByZXR1cm4gZm9vXyAmIG8uZm9vXzsgfQor KworKyAgYmFzZSBvcGVyYXRvciY9IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvciY9 CisrICB7IGZvb18gJj0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KKysKKysgIGludCBvcGVyYXRv cnwgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yfAorKyAgeyByZXR1cm4g Zm9vXyB8IG8uZm9vXzsgfQorKworKyAgYmFzZSBvcGVyYXRvcnw9IChiYXNlIGNvbnN0JiBvKSAv LyBiYXNlOjpvcGVyYXRvcnw9CisrICB7IGZvb18gfD0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0K KysgIAorKyAgaW50IG9wZXJhdG9yXiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3Bl cmF0b3JeCisrICB7IHJldHVybiBmb29fIF4gby5mb29fOyB9CisrCisrICBiYXNlIG9wZXJhdG9y Xj0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yXj0KKysgIHsgZm9vXyBePSBvLmZv b187IHJldHVybiAqdGhpczsgfQorKworKyAgYmFzZSBvcGVyYXRvcj0gKGJhc2UgY29uc3QmIG8p IC8vIGJhc2U6Om9wZXJhdG9yPQorKyAgeyBmb29fID0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0K KysKKysgIHZvaWQgb3BlcmF0b3IoKSAodm9pZCkgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IoKQor KyAgeyByZXR1cm47IH0KKysKKysgIGludCBvcGVyYXRvcltdIChpbnQgaWR4KSBjb25zdCAvLyBi YXNlOjpvcGVyYXRvcltdCisrICB7IHJldHVybiBpZHg7IH0KKysKKysgIHZvaWQqIG9wZXJhdG9y IG5ldyAoc2l6ZV90IHNpemUpIHRocm93ICgpIC8vIGJhc2U6Om9wZXJhdG9yIG5ldworKyAgeyBy ZXR1cm4gbWFsbG9jIChzaXplKTsgfQorKworKyAgdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQq IHB0cikgLy8gYmFzZTo6b3BlcmF0b3IgZGVsZXRlCisrICB7IGZyZWUgKHB0cik7IH0KKysKKysg IHZvaWQqIG9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSkgdGhyb3cgKCkgLy8gYmFzZTo6b3Bl cmF0b3IgbmV3W10KKysgIHsgcmV0dXJuIG1hbGxvYyAoc2l6ZSk7IH0KKysKKysgIHZvaWQgb3Bl cmF0b3IgZGVsZXRlW10gKHZvaWQqIHB0cikgLy8gYmFzZTo6b3BlcmF0b3IgZGVsZXRlW10KKysg IHsgZnJlZSAocHRyKTsgfQorKworKyAgYmFzZSBjb25zdCogb3BlcmF0b3ItPiAodm9pZCkgY29u c3QgLy8gYmFzZTo6b3BlYXJ0b3ItPgorKyAgeyByZXR1cm4gdGhpczsgfQorKworKyAgaW50IG9w ZXJhdG9yLT4qIChiYXNlIGNvbnN0JiBiKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvci0+KgorKyAg eyAgcmV0dXJuIGZvb18gKiBiLmZvb187IH0KKysKKysgIG9wZXJhdG9yIGNoYXIqICgpIGNvbnN0 IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Y2hhcio+ICgiaGVsbG8iKTsgfSAvLyBiYXNlOjpvcGVyYXRv ciBjaGFyKgorKyAgb3BlcmF0b3IgaW50ICgpIGNvbnN0IHsgcmV0dXJuIDIxOyB9IC8vIGJhc2U6 Om9wZXJhdG9yIGludAorKyAgb3BlcmF0b3IgZmx1ZmYqICgpIGNvbnN0IHsgcmV0dXJuIG5ldyBm bHVmZiAoKTsgfSAvLyBiYXNlOjpvcGVyYXRvciBmbHVmZioKKysgIG9wZXJhdG9yIGZsdWZmKiog KCkgY29uc3QgeyByZXR1cm4gJmdfZmx1ZmY7IH0gLy8gYmFzZTo6b3BlcmF0b3IgZmx1ZmYqKgor K307CisrCisrY2xhc3MgYmFzZTEgOiBwdWJsaWMgdmlydHVhbCBiYXNlCisreworK3B1YmxpYzoK KysgIGJhc2UxICh2b2lkKSA6IGZvb18gKDIxKSB7IH0gLy8gYmFzZTE6OmJhc2UxKHZvaWQpCisr ICBiYXNlMSAoaW50IGEpIDogZm9vXyhhKSB7IH0gLy8gYmFzZTE6OmJhc2UxKGludCkKKysgIHZv aWQgYV9mdW5jdGlvbiAodm9pZCkgY29uc3QgeyB9IC8vIGJhc2UxOjphX2Z1bmN0aW9uCisrCisr cHJvdGVjdGVkOgorKyAgaW50IGZvb187CisrfTsKKysKKytjbGFzcyBiYXNlMiA6IHB1YmxpYyB2 aXJ0dWFsIGJhc2UKKyt7CisrcHVibGljOgorKyAgYmFzZTIgKCkgOiBmb29fICgzKSB7IH0gLy8g YmFzZTI6OmJhc2UyCisrCisrcHJvdGVjdGVkOgorKyAgdm9pZCBhX2Z1bmN0aW9uICh2b2lkKSBj b25zdCB7IH0gLy8gYmFzZTI6OmFfZnVuY3Rpb24KKysgIGludCBmb29fOworK307CisrCisrY2xh c3MgZGVyaXZlZCA6IHB1YmxpYyBiYXNlMSwgcHVibGljIGJhc2UyCisreworKyAgcHVibGljOgor KyAgZGVyaXZlZCh2b2lkKSA6IGZvb18gKDQpIHsgfSAvLyBkZXJpdmVkOjpkZXJpdmVkCisrICB2 b2lkIGFfZnVuY3Rpb24gKHZvaWQpIGNvbnN0IC8vIGRlcml2ZWQ6OmFfZnVuY3Rpb24KKysgIHsg CisrICAgIHRoaXMtPmJhc2UxOjphX2Z1bmN0aW9uICgpOworKyAgICB0aGlzLT5iYXNlMjo6YV9m dW5jdGlvbiAoKTsKKysgIH0KKysKKysgIHByb3RlY3RlZDoKKysgIGludCBmb29fOworK307Cisr CisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgLy8gbWFpbgorK3sgLy8gbWFp bgorKyAgZGVyaXZlZCBkOworKyAgdm9pZCAoZGVyaXZlZDo6KnBmdW5jKSAodm9pZCkgY29uc3Qg PSAmZGVyaXZlZDo6YV9mdW5jdGlvbjsKKysgIChkLipwZnVuYykgKCk7CisrCisrICBiYXNlIGEg KDEpLCBiICgzKSwgYyAoOCk7CisrICAodm9pZCkgYS5vdmVybG9hZCAoKTsKKysgICh2b2lkKSBh Lm92ZXJsb2FkIChzdGF0aWNfY2FzdDxpbnQ+ICgwKSk7CisrICAodm9pZCkgYS5vdmVybG9hZCAo c3RhdGljX2Nhc3Q8c2hvcnQ+ICgwKSk7CisrICAodm9pZCkgYS5vdmVybG9hZCAoc3RhdGljX2Nh c3Q8bG9uZz4gKDApKTsKKysgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxjaGFyKj4g KDApKTsKKysgICh2b2lkKSBhLm92ZXJsb2FkIChhKTsKKysKKysgIGludCByOworKyAgciA9IGIg KyBjOworKyAgKythOworKyAgYSArPSBiOworKyAgciA9IGIgLSBjOworKyAgLS1hOworKyAgYSAt PSBiOworKyAgciA9IGIgKiBjOworKyAgYSAqPSBiOworKyAgciA9IGIgLyBjOworKyAgYSAvPSBi OworKyAgciA9IGIgJSBjOworKyAgYSAlPSBiOworKyAgYm9vbCB4ID0gKGIgPCBjKTsKKysgIHgg PSAoYiA8PSBjKTsKKysgIHggPSAoYiA+IGMpOworKyAgeCA9IChiID49IGMpOworKyAgeCA9IChi ICE9IGMpOworKyAgeCA9IChiID09IGMpOworKyAgeCA9ICghYik7CisrICB4ID0gKGIgJiYgYyk7 CisrICB4ID0gKGIgfHwgYyk7CisrICByID0gYiA8PCAyOworKyAgYSA8PD0gMTsKKysgIHIgPSBi ID4+IDI7CisrICBhID4+PSAxOworKyAgciA9IH5iOworKyAgciA9IGIgJiBjOworKyAgYSAmPSBj OworKyAgciA9IGIgfCBjOworKyAgYSB8PSBjOworKyAgciA9IGIgXiBjOworKyAgYSBePSBjOwor KyAgYSA9IGM7CisrICBhICgpOworKyAgaW50IGkgPSBhWzNdOworKyAgZGVyaXZlZCogZiA9IG5l dyBkZXJpdmVkICgpOworKyAgZGVyaXZlZCogZyA9IG5ldyBkZXJpdmVkWzNdOworKyAgZGVsZXRl IGY7CisrICBkZWxldGVbXSBnOworKyAgYS0+b3ZlcmxvYWQgKCk7CisrICByID0gYS0+KmI7Cisr CisrICB0Y2xhc3M8Y2hhcj4gY2hhcl90Y2xhc3M7CisrICB0Y2xhc3M8aW50PiBpbnRfdGNsYXNz OworKyAgdGNsYXNzPHNob3J0PiBzaG9ydF90Y2xhc3M7CisrICB0Y2xhc3M8bG9uZz4gbG9uZ190 Y2xhc3M7CisrICB0Y2xhc3M8YmFzZT4gYmFzZV90Y2xhc3M7CisrICBjaGFyX3RjbGFzcy5kb19z b21ldGhpbmcgKCk7CisrICBpbnRfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsKKysgIHNob3J0X3Rj bGFzcy5kb19zb21ldGhpbmcgKCk7CisrICBsb25nX3RjbGFzcy5kb19zb21ldGhpbmcgKCk7Cisr ICBiYXNlX3RjbGFzcy5kb19zb21ldGhpbmcgKCk7CisrCisrICBmbHViYmVyPGludCwgaW50LCBp bnQsIGludCwgaW50PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBzaG9ydD4g KCk7CisrICBmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgbG9uZz4gKCk7CisrICBmbHViYmVy PGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gKCk7CisrICBmbHViYmVyPGludCwgaW50LCBpbnQs IHNob3J0LCBpbnQ+ICgpOworKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgc2hvcnQ+ ICgpOworKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgbG9uZz4gKCk7CisrICBmbHVi YmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBjaGFyPiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQs IGludCwgbG9uZywgaW50PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgc2hv cnQ+ICgpOworKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBsb25nPiAoKTsKKysgIGZs dWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgY2hhcj4gKCk7CisrICBmbHViYmVyPGludCwgaW50 LCBpbnQsIGNoYXIsIGludD4gKCk7CisrICBmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIHNo b3J0PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgbG9uZz4gKCk7CisrICBm bHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGNoYXI+ICgpOworKyAgZmx1YmJlcjxpbnQsIGlu dCwgc2hvcnQsIGludCwgaW50PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQs IHNob3J0PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIGxvbmc+ICgpOwor KyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgY2hhcj4gKCk7CisrICBmbHViYmVyPGlu dCwgaW50LCBzaG9ydCwgc2hvcnQsIGludD4gKCk7CisrICBmbHViYmVyPHNob3J0LCBpbnQsIHNo b3J0LCBpbnQsIHNob3J0PiAoKTsKKysgIGZsdWJiZXI8bG9uZywgc2hvcnQsIGxvbmcsIHNob3J0 LCBsb25nPiAoKTsKKysKKysgIHBvbGljeTEgcDEgKDEpOworKyAgcDEuZnVuY3Rpb24gKCk7Cisr ICBwb2xpY3kyIHAyICgyKTsKKysgIHAyLmZ1bmN0aW9uICgpOworKyAgcG9saWN5MyBwMyAoMyk7 CisrICBwMy5mdW5jdGlvbiAoKTsKKysgIHBvbGljeTQgcDQgKDQpOworKyAgcDQuZnVuY3Rpb24g KCk7CisrCisrICBwb2xpY3lkMSBwZDEgKDUpOworKyAgcGQxLmZ1bmN0aW9uICgpOworKyAgcG9s aWN5ZDIgcGQyICg2KTsKKysgIHBkMi5mdW5jdGlvbiAoKTsKKysgIHBvbGljeWQzIHBkMyAoNyk7 CisrICBwZDMuZnVuY3Rpb24gKCk7CisrICBwb2xpY3lkNCBwZDQgKGQpOworKyAgcGQ0LmZ1bmN0 aW9uICgpOworKyAgcG9saWN5ZDUgcGQ1IChpbnRfdGNsYXNzKTsKKysgIHBkNS5mdW5jdGlvbiAo KTsKKysKKysgIGJhc2UxIGIxICgzKTsKKysKKysgIHIgPSBhOworKyAgY2hhciogc3RyID0gYTsK KysgIGZsdWZmKiBmbHAgPSBhOworKyAgZmx1ZmYqKiBmbHBwID0gYTsKKyt9CisrCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcmVhbGNwcC5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9yZWFsY3BwLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjRl OTJlNzUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3JlYWxjcHAu ZXhwCitAQCAtMCwwICsxLDg5MSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCisrCisrIyMjCisrIworKyMg U09NRSBJTVBPUlRBTlQgTk9URVMKKysjCisrIyMjCisrCisrIyBUaGUgImluZm8gZnVuYyIgdGVz dHMgaGVyZSBhcmVuJ3QgY29tcGxldGUuIEkndmUgY29tbWVudGVkIHRoZW0KKysjIG91dCBmb3Ig bm93LgorKworKyMgQSBoZWxwZXIgcHJvYyB3aGljaCBzZXRzIGEgYnJlYWtwb2ludCBhdCBGVU5D IGFuZCBhdHRlbXB0cyB0bworKyMgcnVuIHRvIHRoZSBicmVha3BvaW50LgorK3Byb2MgdGVzdF9i cmVha3BvaW50IHtmdW5jfSB7CisrICAgIGdsb2JhbCBERUMKKysKKysgICAgIyBSZXN0YXJ0IGV2 ZXJ5IHRpbWUKKysgICAgaWYgeyFbcnVudG9fbWFpbl19IHsKKysJcGVycm9yICJjb3VsZCBub3Qg cnVuIHRvIG1haW4gd2hlbiBhdHRlbXB0aW5nIHRvIGJyZWFrIGF0ICRmdW5jIgorKwljb250aW51 ZQorKyAgICB9IGVsc2UgeworKwlnZGJfYnJlYWtwb2ludCAiJGZ1bmMiCisrCXNldCBpIFtleHBy IHtbc3RyaW5nIGxhc3QgOiAkZnVuY10gKyAxfV0KKysJc2V0IGVmdW5jIFtlc2NhcGUgW3N0cmlu ZyByYW5nZSAkZnVuYyAkaSBlbmRdXQorKwlnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICJD b250aW51aW5nLlxyXG5cclxuQnJlYWtwb2ludCAkREVDKywuKiRlZnVuYy4qIiBcCisrCSAgICAi Y29udGludWUgdG8gJGZ1bmMiCisrICAgIH0KKyt9CisrCisrIyBFc2NhcGUgZXhwZWN0LXJlc2Vy dmVkIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZworK3Byb2MgZXNjYXBlIHtzdHJpbmd9IHsKKysg ICAgcmVnc3ViIC1hbGwge1wqfSAkc3RyaW5nIHtcKn0gc3RyaW5nCisrICAgIHJlZ3N1YiAtYWxs IHtcKH0gJHN0cmluZyB7XCh9IHN0cmluZworKyAgICByZWdzdWIgLWFsbCB7XCl9ICRzdHJpbmcg e1wpfSBzdHJpbmcKKysgICAgcmVnc3ViIC1hbGwge1xdfSAkc3RyaW5nIHtcXX0gc3RyaW5nCisr ICAgIHJlZ3N1YiAtYWxsIHtcW30gJHN0cmluZyB7XFt9IHN0cmluZworKyAgICByZWdzdWIgLWFs bCB7XCt9ICRzdHJpbmcge1wrfSBzdHJpbmcKKysgICAgcmVnc3ViIC1hbGwge1xefSAkc3RyaW5n IHtcXn0gc3RyaW5nCisrICAgIHJlZ3N1YiAtYWxsIHtcIX0gJHN0cmluZyB7XCF9IHN0cmluZwor KyAgICByZXR1cm4gJHN0cmluZworK30KKysKKysjIEFkZCBhIGZ1bmN0aW9uIHRvIHRoZSBsaXN0 IG9mIHRlc3RlZCBmdW5jdGlvbnMKKysjIEZVTkMgaXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9u ICh3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBnZGIgY29tbWFuZHMpCisrIyBUWVBFIGlzIHRoZSB0 eXBlIG9mIHRoZSBmdW5jdGlvbiwgYXMgZXhwZWN0ZWQgZnJvbSB0aGUgInByaW50IiBjb21tYW5k CisrIyBQUklOVCBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24sIGFzIGV4cGVjdGVkIHJlc3Vs dCBvZiB0aGUgcHJpbnQgY29tbWFuZAorKyMgICpPUiogIi0iLCBpbmRpY2F0aW5nIHRoYXQgRlVO QyBzaG91bGQgYmUgdXNlZCAobmVlZGVkIGZvciB2aXJ0dWFsL2luaGVyaXRlZAorKyMgICBmdW5j cykKKysjIExTVCBpcyBlaXRoZXIgdGhlIGV4cGVjdGVkIHJlc3VsdCBvZiB0aGUgbGlzdCBjb21t YW5kICh0aGUgY29tbWVudCBmcm9tCisrIyAgdGhlIHNvdXJjZSBjb2RlKSAqT1IqICItIiwgaW4g d2hpY2ggY2FzZSBGVU5DIHdpbGwgYmUgdXNlZAorKyMgSU5GIGlzIHRoZSBleHBlY3RlZCByZXN1 bHQgb2YgImluZm8gZnVuYyIKKysjCisrIyBJZiBhbnkgb2YgUFJJTlQsIExTVCwgb3IgSU5GIGlz ICIiLCB0aGUgdGVzdCB3aWxsIGJlIHNraXBwZWQKKysjCisrIyBVc2FnZToKKysjIGFkZCBOQU1F IFRZUEUgUFJJTlQgTFNUIElORk8KKysjIGFkZCBOQU1FIFRZUEUgUFJJTlQgLSBJTkZPCisrcHJv YyBhZGQge2Z1bmMgdHlwZSBwcmludCBsc3QgaW5mfSB7CisrICAgIGdsb2JhbCBhbGxfZnVuY3Rp b25zIENPTlZBUiBBRERSCisrCisrICAgIHNldCBhbGxfZnVuY3Rpb25zKCRmdW5jLHR5cGUpICR0 eXBlCisrICAgIGlmIHskcHJpbnQgPT0gIi0ifSB7CisrCXNldCBwcmludCAkZnVuYworKyAgICB9 CisrCisrICAgICMgQW4gZXhjZXB0aW9uOiBzaW5jZSBnZGIgY2Fub25pY2FsaXplcyBDKysgb3V0 cHV0LAorKyAgICAjICIodm9pZCkiIG11c3QgYmUgbXV0YXRlZCB0byAiKCkiLgorKyAgICBzZXQg cHJpbnQgW3JlZ3N1YiB7XCh2b2lkXCl9ICRwcmludCB7KCl9XQorKworKyAgICBzZXQgYWxsX2Z1 bmN0aW9ucygkZnVuYyxwcmludCkgXAorKwkiJENPTlZBUiA9IHtbZXNjYXBlICR0eXBlXX0gJEFE RFIgPFtlc2NhcGUgJHByaW50XS4qPiIKKysgICAgaWYgeyRsc3QgPT0gIi0ifSB7CisrCXNldCBs c3QgIiRmdW5jIgorKyAgICB9CisrICAgIHNldCBhbGxfZnVuY3Rpb25zKCRmdW5jLGxpc3QpICIu Ki8vIFtlc2NhcGUgJGxzdF0iCisrICAgIHNldCBhbGxfZnVuY3Rpb25zKCRmdW5jLGluZm9fZnVu YykgJGluZgorK30KKysKKytwcm9jIGdldCB7ZnVuYyBjbWR9IHsKKysgICAgZ2xvYmFsIGFsbF9m dW5jdGlvbnMKKysgICAgcmV0dXJuICRhbGxfZnVuY3Rpb25zKCRmdW5jLCRjbWQpCisrfQorKwor KyMgUmV0dXJucyBhIGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgZm9yIGEgZ2l2ZW4gY29tbWFuZAor K3Byb2MgZ2V0X2Z1bmN0aW9ucyB7Y21kfSB7CisrICAgIGdsb2JhbCBhbGxfZnVuY3Rpb25zCisr ICAgIHNldCByZXN1bHQge30KKysgICAgZm9yZWFjaCBpIFthcnJheSBuYW1lcyBhbGxfZnVuY3Rp b25zICosJGNtZF0geworKwlpZiB7JGFsbF9mdW5jdGlvbnMoJGkpICE9ICIifSB7CisrCSAgICBz ZXQgaWR4IFtzdHJpbmcgbGFzdCAsICRpXQorKwkgICAgaWYgeyRpZHggIT0gLTF9IHsKKysJCWxh cHBlbmQgcmVzdWx0IFtzdHJpbmcgcmFuZ2UgJGkgMCBbZXhwciB7JGlkeCAtIDF9XV0KKysJICAg IH0KKysJfQorKyAgICB9CisrCisrICAgIHJldHVybiBbbHNvcnQgJHJlc3VsdF0KKyt9CisrCisr IyBTb21lIGNvbnZlbmllbmNlIHZhcmlhYmxlcyBmb3IgdGhpcyB0ZXN0Cisrc2V0IERFQyB7WzAt OV19OyAjIGEgZGVjaW1hbCBudW1iZXIKKytzZXQgSEVYIHtbMC05YS1mQS1GXX07ICMgYSBoZXhp ZGVjaW1hbCBudW1iZXIKKytzZXQgQ09OVkFSICJcXFwkJERFQysiOyAjIGNvbnZlbmllbmNlIHZh cmlhYmxlIHJlZ2V4cAorK3NldCBBRERSICIweCRIRVgrIjsgIyBhZGRyZXNzCisrCisrIyBBbiBh cnJheSBvZiBmdW5jdGlvbnMvbWV0aG9kcyB0aGF0IHdlIGFyZSB0ZXN0aW5nLi4uCisrIyBFYWNo IGVsZW1lbnQgY29uc2lzdHMgaXMgaW5kZXhlZCBieSBOQU1FLENPTU1BTkQsIHdoZXJlCisrIyBO QU1FIGlzIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBDT01NQU5EIGlzIHRoZSBnZGIgY29tbWFuZCB0 aGF0CisrIyB3ZSBhcmUgdGVzdGluZy4gVGhlIHZhbHVlIG9mIHRoZSBhcnJheSBmb3IgYW55IGlu ZGV4IHBhaXIgaXMKKysjIHRoZSBleHBlY3RlZCByZXN1bHQgb2YgcnVubmluZyBDT01NQU5EIHdp dGggdGhlIE5BTUUgYXMgYXJndW1lbnQuCisrIyBJZiB0aGUgdmFsdWUgaXMgYmxhbmssIHRoZSB0 ZXN0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGhlIGdpdmVuIGZ1bmN0aW9uLgorKworKyMgVGhlIGFy cmF5IGhvbGRpbmcgYWxsIGZ1bmN0aW9ucy9tZXRob2RzIHRvIHRlc3QuIFZhbGlkIHN1YmluZGV4 ZXMKKysjIGFyZSAobm9uZSBuZWVkIGNoYXJhY3RlciBlc2NhcGluZyAtLSAiYWRkIiB3aWxsIHRh a2UgY2FyZSBvZiB0aGF0KToKKysKKysjIGFkZCBuYW1lIHR5cGUgcHJpbnRfbmFtZSBsaXN0IGlu Zm9fZnVuYworKyMgTkFNRSx0eXBlOiB2YWx1ZSBpcyB0eXBlIG9mIGZ1bmN0aW9uIAorKyMgTkFN RSxwcmludDogdmFsdWUgaXMgcHJpbnQgbmFtZSBvZiBmdW5jdGlvbiAoY2FyZWZ1bCB3L2luaGVy aXRlZC92aXJ0dWFsISkKKysjIE5BTUUsbGlzdDogdmFsdWUgaXMgY29tbWVudCBpbiBzb3VyY2Ug Y29kZSBvbiBmaXJzdCBsaW5lIG9mIGZ1bmN0aW9uCisrIyAgICh3aXRob3V0IHRoZSBsZWFkaW5n ICIvLyIpCisrIyBOQU1FLGluZm9fZnVuYzogdmFsdWUgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBv ZiAiaW5mbyBmdW5jIgorK2FycmF5IHNldCBhbGxfZnVuY3Rpb25zIHt9CisrCisrIyAiTm9ybWFs IiBmdW5jdGlvbnMvbWV0aG9kcworK2FkZCB7bWFpbn0gXAorKyAgICB7aW50IChpbnQsIGNoYXIg KiopfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge2ludCBtYWluKGludCwgY2hhciAqKik7 fQorK2FkZCB7ZGVyaXZlZDo6YV9mdW5jdGlvbn0gXAorKyAgICB7dm9pZCAoY29uc3QgZGVyaXZl ZCAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIHt2b2lkIGRlcml2ZWQ6OmFf ZnVuY3Rpb24oKTt9CisrYWRkIHtiYXNlMTo6YV9mdW5jdGlvbn0gXAorKyAgICB7dm9pZCAoY29u c3QgYmFzZTEgKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICB7dm9pZCBiYXNl MTo6YV9mdW5jdGlvbigpO30KKythZGQge2Jhc2UyOjphX2Z1bmN0aW9ufSBcCisrICAgIHt2b2lk IChjb25zdCBiYXNlMiAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIHt2b2lk IGJhc2UyOjphX2Z1bmN0aW9uKCk7fQorKworKyMgQ29uc3RydWN0b3JzCisrYWRkIHtkZXJpdmVk OjpkZXJpdmVkfSBcCisrICAgIHt2b2lkIChkZXJpdmVkICogY29uc3QpfSBcCisrICAgIC0gXAor KyAgICAtIFwKKysgICAge3ZvaWQgZGVyaXZlZDo6ZGVyaXZlZCgpO30KKythZGQge2Jhc2UxOjpi YXNlMSh2b2lkKX0gXAorKyAgICB7dm9pZCAoYmFzZTEgKiBjb25zdCwgY29uc3Qgdm9pZCAqKiBj b25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICB7dm9pZCBiYXNlMTo6YmFzZTEoKTt9 CisrYWRkIHtiYXNlMTo6YmFzZTEoaW50KX0gXAorKyAgICB7dm9pZCAoYmFzZTEgKiBjb25zdCwg aW50KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIHt2b2lkIGJhc2UxOjpiYXNlMShpbnQp O30KKythZGQge2Jhc2UyOjpiYXNlMn0gXAorKyAgICB7dm9pZCAoYmFzZTIgKiBjb25zdCwgY29u c3Qgdm9pZCAqKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICB7dm9pZCBiYXNl Mjo6YmFzZTIoKTt9CisrYWRkIHtiYXNlOjpiYXNlKHZvaWQpfSBcCisrICAgIHt2b2lkIChiYXNl ICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge3ZvaWQgYmFzZTo6YmFzZSgp O30KKythZGQge2Jhc2U6OmJhc2UoaW50KX0gXAorKyAgICB7dm9pZCAoYmFzZSAqIGNvbnN0LCBp bnQpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge3ZvaWQgYmFzZTo6YmFzZSgpO30KKysK KysjIERlc3RydWN0b3JzCisrYWRkIHtiYXNlOjp+YmFzZX0gXAorKyAgICB7dm9pZCAoYmFzZSAq IGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIHt2b2lkIGJhc2U6On5iYXNlKCk7 fQorKworKyMgT3ZlcmxvYWRlZCBtZXRob2RzIChhbGwgYXJlIGNvbnN0IC0tIHdlIHRyeSB0byB1 c2UgdGhlIHZvaWQKKysjIG1ldGhvZCB3aXRoIGFuZCB3aXRob3V0IHNwZWNpZnlpbmcgImNvbnN0 IikKKythZGQge2Jhc2U6Om92ZXJsb2FkKHZvaWQpfSBcCisrICAgIHtpbnQgKGNvbnN0IGJhc2Ug KiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIHtiYXNlOjpvdmVybG9hZCh2b2lkKSBjb25zdH0g XAorKyAgICB7aW50IGJhc2U6Om92ZXJsb2FkKCkgY29uc3Q7fQorK2FkZCB7YmFzZTo6b3Zlcmxv YWQodm9pZCkgY29uc3R9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAorKyAg ICAtIFwKKysgICAge2Jhc2U6Om92ZXJsb2FkKHZvaWQpIGNvbnN0fSBcCisrICAgIHtpbnQgYmFz ZTo6b3ZlcmxvYWQoKSBjb25zdDt9CisrYWRkIHtiYXNlOjpvdmVybG9hZChpbnQpIGNvbnN0fSBc CisrICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgaW50KX0gXAorKyAgICAtIFwKKysgICAg LSBcCisrICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQoaW50KSBjb25zdDt9CisrYWRkIHtiYXNlOjpv dmVybG9hZChzaG9ydCkgY29uc3R9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBz aG9ydCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICB7aW50IGJhc2U6Om92ZXJsb2FkKHNo b3J0KSBjb25zdDt9CisrYWRkIHtiYXNlOjpvdmVybG9hZChsb25nKSBjb25zdH0gXAorKyAgICB7 aW50IChjb25zdCBiYXNlICogY29uc3QsIGxvbmcpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysg ICAge2ludCBiYXNlOjpvdmVybG9hZChsb25nKSBjb25zdDt9CisrYWRkIHtiYXNlOjpvdmVybG9h ZChjaGFyKikgY29uc3R9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjaGFyICop fSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge2ludCBiYXNlOjpvdmVybG9hZChjaGFyICop IGNvbnN0O30KKythZGQge2Jhc2U6Om92ZXJsb2FkKGJhc2UmKSBjb25zdH0gXAorKyAgICB7aW50 IChjb25zdCBiYXNlICogY29uc3QsIGJhc2UgJil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAg ICB7aW50IGJhc2U6Om92ZXJsb2FkKGJhc2UgJikgY29uc3Q7fQorKworKyMgT3BlcmF0b3JzCisr YWRkIHtiYXNlOjpvcGVyYXRvcit9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBj b25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6 b3BlcmF0b3IrK30gXAorKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysg ICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yKz19IFwKKysgICAge2Jhc2UgKGJh c2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0K KythZGQge2Jhc2U6Om9wZXJhdG9yLX0gXAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3Qs IGNvbnN0IGJhc2UgJil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNl OjpvcGVyYXRvci0tfSBcCisrICAgIHtiYXNlIChiYXNlICogY29uc3QpfSBcCisrICAgIC0gXAor KyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3ItPX0gXAorKyAgICB7YmFzZSAo YmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAg LQorK2FkZCB7YmFzZTo6b3BlcmF0b3IqfSBcCisrICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25z dCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jh c2U6Om9wZXJhdG9yKj19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAm KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yL30g XAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAg LSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvci89fSBcCisrICAgIHti YXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAgLSBcCisrICAgIC0gXAor KyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvciV9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAq IGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2Fk ZCB7YmFzZTo6b3BlcmF0b3IlPX0gXAorKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBi YXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0 b3I8fSBcCisrICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwK KysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcjw9fSBcCisr ICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAgLSBc CisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcj59IFwKKysgICAge2Jvb2wg KGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBc CisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yPj19IFwKKysgICAge2Jvb2wgKGNvbnN0IGJh c2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0K KythZGQge2Jhc2U6Om9wZXJhdG9yIT19IFwKKysgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25z dCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jh c2U6Om9wZXJhdG9yPT19IFwKKysgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3Qg YmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJh dG9yIX0gXAorKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysg ICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yJiZ9IFwKKysgICAge2Jvb2wgKGNv bnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisr ICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yfHx9IFwKKysgICAge2Jvb2wgKGNvbnN0IGJhc2Ug KiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKyth ZGQge2Jhc2U6Om9wZXJhdG9yPDx9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBp bnQpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3I8 PD19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgaW50KX0gXAorKyAgICAtIFwKKysgICAg LSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yPj59IFwKKysgICAge2ludCAoY29uc3Qg YmFzZSAqIGNvbnN0LCBpbnQpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7 YmFzZTo6b3BlcmF0b3I+Pj19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgaW50KX0gXAor KyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yfn0gXAorKyAg ICB7aW50IChjb25zdCBiYXNlICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAg LQorK2FkZCB7YmFzZTo6b3BlcmF0b3ImfSBcCisrICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25z dCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jh c2U6Om9wZXJhdG9yJj19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAm KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yfH0g XAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAg LSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcnw9fSBcCisrICAgIHti YXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAgLSBcCisrICAgIC0gXAor KyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcl59IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAq IGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2Fk ZCB7YmFzZTo6b3BlcmF0b3JePX0gXAorKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBi YXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0 b3I9fSBcCisrICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAg LSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcigpfSBcCisrICAgIHt2 b2lkIChjb25zdCBiYXNlICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQor K2FkZCB7YmFzZTo6b3BlcmF0b3JbXX0gXAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3Qs IGludCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRv ciBuZXd9IFwKKysgICAge3ZvaWQgKihzaXplX3QpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysg ICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3IgZGVsZXRlfSBcCisrICAgIHt2b2lkICh2b2lkICop fSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3IgbmV3 W119IFwKKysgICAge3ZvaWQgKihzaXplX3QpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAg LQorK2FkZCB7YmFzZTo6b3BlcmF0b3IgZGVsZXRlW119IFwKKysgICAge3ZvaWQgKHZvaWQgKil9 IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvciBjaGFy Kn0gXAorKyAgICB7Y2hhciAqKGNvbnN0IGJhc2UgKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAg IC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvciBmbHVmZip9IFwKKysgICAge2ZsdWZm ICooY29uc3QgYmFzZSAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKyth ZGQge2Jhc2U6Om9wZXJhdG9yIGZsdWZmKip9IFwKKysgICAge2ZsdWZmICoqKGNvbnN0IGJhc2Ug KiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVy YXRvciBpbnR9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAorKyAgICAtIFwK KysgICAgLSBcCisrICAgIC0KKysKKysjIFRlbXBsYXRlcworK2FkZCB7dGNsYXNzPGNoYXI+Ojpk b19zb21ldGhpbmd9IFwKKysgICAge3ZvaWQgKHRjbGFzczxjaGFyPiAqIGNvbnN0KX0gXAorKyAg ICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge3RjbGFzczxpbnQ+Ojpkb19zb21ldGhpbmd9 IFwKKysgICAge3ZvaWQgKHRjbGFzczxpbnQ+ICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICAt IFwKKysgICAgLQorK2FkZCB7dGNsYXNzPGxvbmc+Ojpkb19zb21ldGhpbmd9IFwKKysgICAge3Zv aWQgKHRjbGFzczxsb25nPiAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0K KythZGQge3RjbGFzczxzaG9ydD46OmRvX3NvbWV0aGluZ30gXAorKyAgICB7dm9pZCAodGNsYXNz PHNob3J0PiAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge3Rj bGFzczxiYXNlPjo6ZG9fc29tZXRoaW5nfSBcCisrICAgIHt2b2lkICh0Y2xhc3M8YmFzZT4gKiBj b25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtmbHViYmVyPGludCwg aW50LCBpbnQsIGludCwgaW50Pn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisr ICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwg c2hvcnQ+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysgICAgZmx1YmJlciBc CisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBsb25nPn0gXAorKyAg ICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRk IHtmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgY2hhcj59IFwKKysgICAge3ZvaWQgKHZvaWQp fSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQs IGludCwgaW50LCBzaG9ydCwgaW50Pn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBc CisrICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIHNo b3J0LCBzaG9ydD59IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHVi YmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgbG9uZz59 IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAg LQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgY2hhcj59IFwKKysgICAge3Zv aWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1 YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBpbnQ+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAor KyAgICAtIFwKKysgICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQs IGludCwgbG9uZywgc2hvcnQ+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysg ICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywg bG9uZz59IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwK KysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBjaGFyPn0gXAorKyAg ICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRk IHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGludD59IFwKKysgICAge3ZvaWQgKHZvaWQp fSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQs IGludCwgaW50LCBjaGFyLCBzaG9ydD59IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0g XAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBj aGFyLCBsb25nPn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJi ZXIgXAorKyAgICAtCisrYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGNoYXI+fSBc CisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysgICAgZmx1YmJlciBcCisrICAgIC0K KythZGQge2ZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIGludD59IFwKKysgICAge3ZvaWQg KHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJl cjxpbnQsIGludCwgc2hvcnQsIGludCwgc2hvcnQ+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAor KyAgICAtIFwKKysgICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQs IHNob3J0LCBpbnQsIGxvbmc+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysg ICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQs IGNoYXI+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysgICAgZmx1YmJlciBc CisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBzaG9ydCwgaW50Pn0gXAor KyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAorKyAgICAtCisr YWRkIHtmbHViYmVyPHNob3J0LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0Pn0gXAorKyAgICB7dm9p ZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRkIHtmbHVi YmVyPGxvbmcsIHNob3J0LCBsb25nLCBzaG9ydCwgbG9uZz59IFwKKysgICAge3ZvaWQgKHZvaWQp fSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7dGNsYXNzPGJhc2U+ Ojpkb19zb21ldGhpbmd9IFwKKysgICAge3ZvaWQgKHRjbGFzczxiYXNlPiAqIGNvbnN0KX0gXAor KyAgICAtIFwKKysgICAge3RjbGFzczxUPjo6ZG9fc29tZXRoaW5nfSBcCisrICAgIC0KKythZGQg e3BvbGljeTE6OnBvbGljeX0gXAorKyAgICB7dm9pZCAocG9saWN5PGludCwgb3BlcmF0aW9uXzE8 dm9pZCo+ID4gKiBjb25zdCwgaW50KX0gXAorKyAgICB7cG9saWN5PGludCwgb3BlcmF0aW9uXzE8 dm9pZCo+ID46OnBvbGljeX0gXAorKyAgICB7cG9saWN5PFQsIFBvbGljeT46OnBvbGljeX0gXAor KyAgICAtCisrYWRkIHtwb2xpY3kyOjpwb2xpY3l9IFwKKysgICAge3ZvaWQgKHBvbGljeTxpbnQs IG9wZXJhdGlvbl8yPHZvaWQqPiA+ICogY29uc3QsIGludCl9IFwKKysgICAge3BvbGljeTxpbnQs IG9wZXJhdGlvbl8yPHZvaWQqPiA+Ojpwb2xpY3l9IFwKKysgICAge3BvbGljeTxULCBQb2xpY3k+ Ojpwb2xpY3l9IFwKKysgICAgLQorK2FkZCB7cG9saWN5Mzo6cG9saWN5fSBcCisrICAgIHt2b2lk IChwb2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPiAqIGNvbnN0LCBpbnQpfSBcCisrICAg IHtwb2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPjo6cG9saWN5fSBcCisrICAgIHtwb2xp Y3k8VCwgUG9saWN5Pjo6cG9saWN5fSBcCisrICAgIC0KKythZGQge3BvbGljeTQ6OnBvbGljeX0g XAorKyAgICB7dm9pZCAocG9saWN5PGludCwgb3BlcmF0aW9uXzQ8dm9pZCo+ID4gKiBjb25zdCwg aW50KX0gXAorKyAgICB7cG9saWN5PGludCwgb3BlcmF0aW9uXzQ8dm9pZCo+ID46OnBvbGljeX0g XAorKyAgICB7cG9saWN5PFQsIFBvbGljeT46OnBvbGljeX0gXAorKyAgICAtCisrYWRkIHtwb2xp Y3kxOjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlvbl8x PHZvaWQqPjo6ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAor KyAgICAtCisrYWRkIHtwb2xpY3kyOjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwK KysgICAge29wZXJhdGlvbl8yPHZvaWQqPjo6ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8y PFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3kzOjpmdW5jdGlvbn0gXAorKyAg ICB7dm9pZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlvbl8zPHZvaWQqPjo6ZnVuY3Rpb259IFwK KysgICAge29wZXJhdGlvbl8zPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3k0 OjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlvbl80PHZv aWQqPjo6ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl80PFQ+OjpmdW5jdGlvbn0gXAorKyAg ICAtCisrYWRkIHtwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+Ojpwb2xpY3lkfSBcCisr ICAgIHt2b2lkIChwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+ICogY29uc3QsIGludCl9 IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKKysgICAg LQorK2FkZCB7cG9saWN5ZDE6OnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8aW50LCBv cGVyYXRpb25fMTxpbnQ+ID4gKiBjb25zdCwgaW50KX0gXAorKyAgICB7cG9saWN5ZDxpbnQsIG9w ZXJhdGlvbl8xPGludD4gPjo6cG9saWN5ZH0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpw b2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46 On5wb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+ ICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5 ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkMTo6fnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBv bGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID4gKiBjb25zdCl9IFwKKysgICAge3BvbGljeWQ8 aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46On5wb2xpY3lkfSBcCisrICAgIHtwb2xpY3lkPFQsIFBv bGljeT46On5wb2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9u XzE8bG9uZz4gPjo6cG9saWN5ZH0gXAorKyAgICB7dm9pZCAocG9saWN5ZDxsb25nLCBvcGVyYXRp b25fMTxsb25nPiA+ICogY29uc3QsIGxvbmcpfSBcCisrICAgIC0gXAorKyAgICB7cG9saWN5ZDxU LCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQyOjpwb2xpY3lkfSBc CisrICAgIHt2b2lkIChwb2xpY3lkPGxvbmcsIG9wZXJhdGlvbl8xPGxvbmc+ID4gKiBjb25zdCwg bG9uZyl9IFwKKysgICAge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6cG9saWN5 ZH0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisrICAgIC0KKythZGQg e3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6fnBvbGljeWR9IFwKKysgICAge3Zv aWQgKHBvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPiAqIGNvbnN0KX0gXAorKyAgICAt IFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7 cG9saWN5ZDI6On5wb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGxvbmcsIG9wZXJhdGlv bl8xPGxvbmc+ID4gKiBjb25zdCl9IFwKKysgICAge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8 bG9uZz4gPjo6fnBvbGljeWR9IFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9 IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+Ojpwb2xp Y3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID4gKiBj b25zdCwgY2hhcil9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGlj eWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDM6OnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBv bGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiAqIGNvbnN0LCBjaGFyKX0gXAorKyAgICB7 cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+Ojpwb2xpY3lkfSBcCisrICAgIHtwb2xp Y3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDxjaGFyLCBv cGVyYXRpb25fMTxjaGFyPiA+Ojp+cG9saWN5ZH0gXAorKyAgICB7dm9pZCAocG9saWN5ZDxjaGFy LCBvcGVyYXRpb25fMTxjaGFyPiA+ICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICB7cG9saWN5 ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkMzo6fnBvbGlj eWR9IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiAqIGNv bnN0KX0gXAorKyAgICB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+Ojp+cG9saWN5 ZH0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAorKyAgICAtCisrYWRk IHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46OnBvbGljeWR9IFwKKysgICAge3Zv aWQgKHBvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPiAqIGNvbnN0LCBiYXNlKX0gXAor KyAgICAtIFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAorKyAgICAtCisr YWRkIHtwb2xpY3lkNDo6cG9saWN5ZH0gXAorKyAgICB7dm9pZCAocG9saWN5ZDxiYXNlLCBvcGVy YXRpb25fMTxiYXNlPiA+ICogY29uc3QsIGJhc2UpfSBcCisrICAgIHtwb2xpY3lkPGJhc2UsIG9w ZXJhdGlvbl8xPGJhc2U+ID46OnBvbGljeWR9IFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6 cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ ID46On5wb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJh c2U+ID4gKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5w b2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQ0Ojp+cG9saWN5ZH0gXAorKyAgICB7dm9p ZCAocG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+ICogY29uc3QpfSBcCisrICAgIHtw b2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46On5wb2xpY3lkfSBcCisrICAgIHtwb2xp Y3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQ8dGNsYXNz PGludD4sIG9wZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID4gPjo6cG9saWN5ZH0gXAorKyAgICB7dm9p ZCAocG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICogY29u c3QsIHRjbGFzczxpbnQ+KX0gXAorKyAgICAtIFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6 cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkNTo6cG9saWN5ZH0gXAorKyAgICB7dm9p ZCAocG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICogY29u c3QsIHRjbGFzczxpbnQ+KX0gXAorKyAgICB7cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9u XzE8dGNsYXNzPGludD4gPiA+Ojpwb2xpY3lkfSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46 OnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9u XzE8dGNsYXNzPGludD4gPiA+Ojp+cG9saWN5ZH0gXAorKyAgICB7dm9pZCAocG9saWN5ZDx0Y2xh c3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICogY29uc3QpfSBcCisrICAgIC0g XAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtw b2xpY3lkNTo6fnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8dGNsYXNzPGludD4sIG9w ZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID4gPiAqIGNvbnN0KX0gXAorKyAgICB7cG9saWN5ZDx0Y2xh c3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojp+cG9saWN5ZH0gXAorKyAgICB7 cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkPGlu dCwgb3BlcmF0aW9uXzE8aW50PiA+OjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwK KysgICAge29wZXJhdGlvbl8xPGludD46OmZ1bmN0aW9ufVwKKysgICAge29wZXJhdGlvbl8xPFQ+ OjpmdW5jdGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkMTo6ZnVuY3Rpb259IFwKKysgICAg e3ZvaWQgKHZvaWQpfSBcCisrICAgIHtvcGVyYXRpb25fMTxpbnQ+OjpmdW5jdGlvbn0gXAorKyAg ICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCisrICAgIC0KKythZGQge3BvbGljeWQyOjpm dW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlvbl8xPGxvbmc+ OjpmdW5jdGlvbn0gXAorKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCisrICAgIC0K KythZGQge3BvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPjo6ZnVuY3Rpb259IFwKKysg ICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIHtvcGVyYXRpb25fMTxjaGFyPjo6ZnVuY3Rpb259IFwK KysgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lk Mzo6ZnVuY3Rpb259IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIHtvcGVyYXRpb25fMTxj aGFyPjo6ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAorKyAg ICAtCisrYWRkIHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46OmZ1bmN0aW9ufSBc CisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICB7b3BlcmF0aW9uXzE8YmFzZT46OmZ1bmN0aW9u fSBcCisrICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259IFwKKysgICAgLQorK2FkZCB7cG9s aWN5ZDQ6OmZ1bmN0aW9ufSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICB7b3BlcmF0aW9u XzE8YmFzZT46OmZ1bmN0aW9ufSBcCisrICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259IFwK KysgICAgLQorK2FkZCB7cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGlu dD4gPiA+OjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlv bl8xPHRjbGFzczxpbnQ+ID46OmZ1bmN0aW9ufSBcCisrICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVu Y3Rpb259IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDU6OmZ1bmN0aW9ufSBcCisrICAgIHt2b2lk ICh2b2lkKX0gXAorKyAgICB7b3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPjo6ZnVuY3Rpb259IFwK KysgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisrIyBUaGUgYmVsb3cg dGVzdCBkZWZhdWx0IHRlbXBsYXRlIGFyZ3VtZW50cworK2FkZCB7cG9saWN5ZDxpbnQ+Ojpwb2xp Y3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+ICogY29u c3QsIGludCl9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9 IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDxsb25nPjo6cG9saWN5ZH0gXAorKyAgICB7dm9pZCAo cG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+ICogY29uc3QsIGxvbmcpfSBcCisrICAg IC0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisrICAgIC0KKythZGQg e3BvbGljeWQ8Y2hhcj46OnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8Y2hhciwgb3Bl cmF0aW9uXzE8Y2hhcj4gPiAqIGNvbnN0LCBjaGFyKX0gXAorKyAgICAtIFwKKysgICAge3BvbGlj eWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkPGJhc2U+Ojpw b2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4g KiBjb25zdCwgYmFzZSl9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBv bGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDx0Y2xhc3M8aW50PiA+Ojpwb2xpY3lkfSBc CisrICAgIHt2b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+ID4sIG9wZXJhdGlvbl8xPHRjbGFzczxp bnQ+ID4gPiAqIGNvbnN0LCBpbnQpfSBcCisrICAgIC0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xp Y3k+Ojpwb2xpY3lkfSBcCisrICAgIC0KKysKKysjIFN0YXJ0IHRoZSB0ZXN0CisraWYgeyR0cmFj ZWxldmVsfSB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytpZiB7W3NraXBfY3Bs dXNfdGVzdHNdfSB7IGNvbnRpbnVlIH0KKysKKysjCisrIyB0ZXN0IHJ1bm5pbmcgcHJvZ3JhbXMK KysjCisrc2V0IHBybXNfaWQgMAorK3NldCBidWdfaWQgMAorKworK3NldCB0ZXN0ZmlsZSAicmVh bGNwcCIKKytzZXQgc3JjZmlsZSAiJHt0ZXN0ZmlsZX0uY2MiCisrc2V0IGJpbmZpbGUgW2ZpbGUg am9pbiAkb2JqZGlyICRzdWJkaXIgJHRlc3RmaWxlXQorKworK2lmICB7W2dkYl9jb21waWxlIFtm aWxlIGpvaW4gJHNyY2RpciAkc3ViZGlyICRzcmNmaWxlXSAkYmluZmlsZSBcCisrCSAgZXhlY3V0 YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICIkdGVzdGZpbGUuZXhw IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYge1tnZXRfY29tcGlsZXJfaW5mbyAkYmluZmls ZSAiYysrIl19IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0 CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgW2ZpbGUgam9pbiAkc3JjZGlyICRzdWJkaXJdCisrZ2Ri X2xvYWQgJGJpbmZpbGUKKysKKysjIFNldCB0aGUgbGlzdHNpemUgdG8gb25lLiBUaGlzIHdpbGwg aGVscCB3aXRoIHRlc3RpbmcgImxpc3QiLgorK2dkYl90ZXN0ICJzZXQgbGlzdHNpemUgMSIKKysK KysjICJwcmludCBNRVRIT0QiCisrZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rpb25zIHByaW50XSB7 CisrICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSIgW2dldCAkbmFtZSBwcmludF0gInByaW50ICRu YW1lIgorK30KKysKKysjICJsaXN0IE1FVEhPRCIKKytmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlv bnMgbGlzdF0geworKyAgICBnZGJfdGVzdCAibGlzdCAkbmFtZSIgW2dldCAkbmFtZSBsaXN0XSAi bGlzdCAkbmFtZSIKKyt9CisrCisrIyBSdW5uaW5nIHRvIGJyZWFrcG9pbnQgLS0gdXNlIGFueSBm dW5jdGlvbiB3ZSBjYW4gImxpc3QiCisrZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rpb25zIGxpc3Rd IHsKKysgICAgIyBTa2lwICJtYWluIiwgc2luY2UgdGVzdF9icmVha3BvaW50IHVzZXMgaXQKKysg ICAgaWYge1tzdHJpbmcgY29tcGFyZSAkbmFtZSAibWFpbiJdICE9IDB9IHsKKysJdGVzdF9icmVh a3BvaW50ICRuYW1lCisrICAgIH0KKyt9CisrCisrIyAiaW5mbyBmdW5jIE1FVEhPRCIKKytpZiB7 ZmFsc2V9IHsKKytmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgImluZm9fZnVuYyJdIHsKKysg ICAgcmVnc3ViIC1hbGwge1wqfSAkbmFtZSB7XCp9IG4KKysgICAgcmVnc3ViIC1hbGwge1xefSAk biB7XF59IG4KKysgICAgcmVnc3ViIC1hbGwge1xdfSAkbiB7XF19IG4KKysgICAgcmVnc3ViIC1h bGwge1xbfSAkbiB7XFt9IG4KKysgICAgZ2RiX3Rlc3QgImluZm8gZnVuYyAkbiIgW2dldCAkbmFt ZSBpbmZvX2Z1bmNdICJpbmZvIGZ1bmMgJG5hbWUiCisrfQorK30KKysKKysjIFdoYXQgb2YgdGhl c2UgaXMgbm90IGNvdmVyZWQgYnkgYWJvdmU/CisrIyBvcGVyYXRvci1zcGVjaWZpYyB0ZXN0cyAo J3AgYSArIGInLCAncHJpbnQgY291dCA8PCAiaGVsbG8iJywgZXRjKQorKyMgb3ZlcmxvYWRlZCBv cGVyYXRvcnMgJiBjdG9ycworKyMgb3BlcmF0b3IgbmFtZXMgd2l0aCBzcGFjZXMgaW4gdGhlbSAo b3RoZXIgdGhhbiBkZWxldGUgYW5kIG5ldykKKysjIHB0eXBlIG9mIGNsYXNzZXMvdGVtcGxhdGVz CisrIyBiYWNrdHJhY2VzCisrIyBwcmludGluZyBkYXRhIG1lbWJlcnMKKysjIGNhdGNoaW5nLCB0 aHJvd2luZyBleGNlcHRpb25zCisrIyBTVEwgKGVzcCBjb250YWluZXJzIGFuZCBpdGVyYXRvcnMp CisrIyBpbmhlcml0YW5jZSB0ZXN0cworKyMgY29tcGxldGlvbiBzY29waW5nCisrCisrZ2RiX2V4 aXQKKytyZXR1cm4gMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2lu Zy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYworbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLjZkOWMyZjEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYworQEAgLTAsMCArMSw0OCBAQAorK25hbWVzcGFj ZSBBCisreworKyAgaW50IHggPSAxMTsKKyt9CisrCisraW50IHggPSAyMjsKKytpbnQgeSA9IDA7 CisrCisrY2xhc3MgQgorK3sKKytwdWJsaWM6CisrICBpbnQgeDsKKysKKysgIGludAorKyAgZnVu YygpCisrICB7CisrICAgIHggPSAzMzsKKysgICAgeSs9eDsgLy8gbWFya2VyMQorKworKyAgICAg IHsKKysgICAgICAgIGludCB4ID0gNDQ7CisrICAgICAgICB5Kz14OyAvLyBtYXJrZXIyCisrCisr ICAgICAgICAgIHsKKysgICAgICAgICAgICBpbnQgeCA9IDU1OworKyAgICAgICAgICAgIHkrPXg7 IC8vIG1hcmtlcjMKKysKKysgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaW50IHog PSB4OyAvL3ByZXZlbnQgZ2NjIGZyb20gb3B0aW1pemluZyBhd2F5IHRoaXMgc2NvcGUKKysgICAg ICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEE7CisrICAgICAgICAgICAgICAgIHkrPXg7IC8v IG1hcmtlcjQKKysKKysgICAgICAgICAgICAgICAgdXNpbmcgQTo6eDsKKysgICAgICAgICAgICAg ICAgeSs9eDsgLy8gbWFya2VyNQorKyAgICAgICAgICAgICAgICAKKysgICAgICAgICAgICAgICAg cmV0dXJuIHRoaXMtPng7CisrICAgICAgICAgICAgICB9CisrICAgICAgICAgIH0KKysgICAgICB9 CisrICB9CisrfTsKKysKKytpbnQKKyttYWluKCkKKyt7CisrICBCIHRoZUI7CisrICByZXR1cm4g dGhlQi5mdW5jKCk7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRv d2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFkb3dpbmcuZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjkyMmVlZAorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc2hhZG93aW5nLmV4cAorQEAgLTAsMCArMSw5MSBAQAorKyMg Q29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgICBz dHJhY2UgJHRyYWNlbGV2ZWwKKyt9CisrCisrc2V0IHBybXNfaWQgMAorK3NldCBidWdfaWQgMAor KworK3NldCB0ZXN0ZmlsZSBzaGFkb3dpbmcKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwor K3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytpZiAgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4 ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKysKKytpZiBbZ2V0X2Nv bXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworKyAgICByZXR1cm4gLTE7CisrfQorKworKyMgR2V0 IHRoaW5ncyBzdGFydGVkLgorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworK2lmICFb cnVudG9fbWFpbl0gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9p bnQgbWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIFRlc3QgcHJpbnRpbmcgb2YgY2xhc3MgdmFyaWFibGUg aXMgbm90IHNoYWRvd2VkCisrIyBieSBnbG9iYWwgdmFyaWFibGUKKysKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyMSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIm1hcmtlcjEiCisrCisrZ2RiX3Rlc3QgInByaW50IHgiICI9IDMzIiAiUHJpbnQgY2xh c3MgeCBzaGFkb3dpbmcgZ2xvYmFsIHgiCisrCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIFRlc3QgcHJpbnRpbmcgbG9jYWwgdmFyaWFibGUgaXMg bm90IHNoYWRvd2VkCisrIyBieSBjbGFzcyB2YXJpYWJsZQorKworK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIyIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAibWFya2VyMiIKKysKKytnZGJfdGVzdCAicHJpbnQgeCIgIj0gNDQiICJQcmludCBsb2NhbCB4 IHNoYWRvd2luZyBjbGFzcyB4IgorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisrIyBUZXN0IGlubmVyIHNjb3BlIHggaXMgcHJpbnRlZCBub3Qgb3V0ZXIg c2NvcGUKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyMyJd CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjMiCisrCisrZ2RiX3Rlc3QgInBy aW50IHgiICI9IDU1IiAiUHJpbnQgaW5uZXIgc2NvcGUgeCIKKysKKysjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgVGVzdCBwcmludGluZyBsb2NhbCB2YXJp YWJsZSBpcyBub3Qgc2hhZG93ZWQKKysjIGJ5IG5hbWVzcGFjZSB2YXJpYWJsZQorKworK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXI0Il0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAibWFya2VyNCIKICsKLStnZGJfdGVzdCAidW50aWwgJGxpbmUiIFwKLSsg ICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJ1bnRpbC1vdmVyLXRocm93IgorK2dkYl90ZXN0ICJw cmludCB4IiAiPSA1NSIgIlByaW50IGxvY2FsIHggbm90IG5hbWVzcGFjZSB4IgogKwotK2dkYl90 ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnVudGlsICgpLioiIFwKLSsgICJuZXh0IHBh c3QgY2F0Y2ggNyIKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworKyMgVGVzdCBpbXBvcnRlZCBuYW1lc3BhY2UgZWxlbWVudCBpcyBwcmludGVkCiArCi0rZ2Ri X3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0rICAic3RlcCBpbnRvIHVu dGlsLCBmb3IgYWR2YW5jZSIKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi bWFya2VyNSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjUiCiArCi0rZ2Ri X3Rlc3QgImFkdmFuY2UgJGxpbmUiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJhZHZh bmNlLW92ZXItdGhyb3ciCisraWYgW3Rlc3RfY29tcGlsZXJfaW5mbyBnY2MtNC0zLSpdIHRoZW4g eyBzZXR1cF94ZmFpbCAqLSotKiB9CisrCisrZ2RiX3Rlc3QgInByaW50IHgiICI9IDExIiAiUHJp bnQgaW1wb3J0ZWQgbmFtZXNwYWNlIHgiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1hcmFuZ2VzLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5n ZXMuUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmQ1YjljYTUKQEAgLTE2 NTI2LDYgKzIxNzI5LDE2OSBAQCBpbmRleCAwMDAwMDAwLi4zOTYzMmQ1CiArCiArIyBGYWlsZWQg Z2RiX2xvYWQgd291bGQgYWJvcnQgdGhlIHRlc3RjYXNlIGV4ZWN1dGlvbiBlYXJsaWVyLgogK3Bh c3MgImZpbGUgbG9hZGVkIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItZW1wdHktbmFtZXNwYWNlLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVtcHR5 LW5hbWVzcGFjZS5TCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uN2IwM2Zm MQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lbXB0 eS1uYW1lc3BhY2UuUworQEAgLTAsMCArMSwxMDggQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKysKKysvKiBUZXN0IEcrKyA0LjEgcHJvZHVjaW5nIERXX1RBR19uYW1l c3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLworKworKwkuZGF0YQorK3ZhcjoJLjRieXRl CTEKKysKKysJLnNlY3Rpb24gLmRlYnVnX2luZm8KKysuTGN1MV9iZWdpbjoKKysJLyogQ1UgaGVh ZGVyICovCisrCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENv bXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1MV9zdGFydDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYg VmVyc2lvbiAqLworKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJi cmV2IHNlY3Rpb24gKi8KKysJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KKysKKysJLyog Q1UgZGllICovCisrCS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0 ICovCisrCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkuYXNjaWkJ IkdOVSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLmJ5dGUJNAkJCQkvKiBE V19MQU5HX0NfcGx1c19wbHVzIChDKyspICovCisrCisrLkx0eXBlX2ludDoKKysJLnVsZWIxMjgJ MgkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLworKwkuYXNjaWkJCSJpbnRcMCIJCQkv KiBEV19BVF9uYW1lICovCisrCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5i eXRlCQk1CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJl djogRFdfVEFHX25hbWVzcGFjZSAqLworKwkuYXNjaWkJCSI6OlwwIgkJCS8qIERXX0FUX25hbWUg Ki8KKysKKysJLnVsZWIxMjgJNwkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIChsb2NhdGlv bikgKi8KKysJLmFzY2lpCQkidmFyXDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkuYnl0ZQkJMmYg LSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2Fk ZHIgKi8KKysJLjRieXRlCQl2YXIJCQkvKiAgIDxhZGRyPiAqLworKzI6CS40Ynl0ZQkJLkx0eXBl X2ludC0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCisrCS5ieXRlCQkwCQkJLyogRW5k IG9mIGNoaWxkcmVuIG9mIERXX1RBR19uYW1lc3BhY2UgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBF bmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KKysKKysuTGN1MV9lbmQ6CisrCisrLyogQWJicmV2IHRh YmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKKysuTGFiYnJldjFfYmVnaW46CisrCS51 bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFH X2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxl YjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1f c3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkudWxl YjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdf QVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworKworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgy NAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4g Ki8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkv KiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUg Ki8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDNl CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRh MSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVs ZWIxMjgJMHgzOQkJCS8qIERXX1RBR19uYW1lc3BhY2UgKi8KKysJLmJ5dGUJCTEJCQkvKiBoYXNf Y2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEy OAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAk3CQkJ LyogQWJicmV2IGNvZGUgKGxvY2F0aW9uKSAqLworKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFH X3ZhcmlhYmxlICovCisrCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4 CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJp bmcgKi8KKysJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KKysJLnVsZWIxMjgJ MHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5 cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHkt bmFtZXNwYWNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNw YWNlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjFhOGRhMTYKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFt ZXNwYWNlLmV4cAorQEAgLTAsMCArMSw0MyBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMK KysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor KworKyMgVGVzdCBHKysgNC4xIHByb2R1Y2luZyBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRf bmFtZSAiOjoiLgorKworKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdo aWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KKysjIEZvciBub3cgcGljayBhIHNhbXBs aW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisrICAg ICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCisr ICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0q LWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAgcmV0 dXJuIDAgIAorK30KKysKKytzZXQgdGVzdGZpbGUgImR3Mi1lbXB0eS1uYW1lc3BhY2UiCisrc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUworK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9LngKKysK KytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfSIgb2JqZWN0IHtub2RlYnVnfV0gIT0gIiIg fSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisr CisrIyBgcCB2YXInIGJlbG93IGNhbiB3b3JrIHdpdGhvdXQgaWRlbnRpZmllZCBEV0FSRiBESUUg anVzdCBiYXNlZCBvbiBpdHMgRUxGIHN5bWJvbC4KKysjIENhdGNoIGl0IGhlcmUgYXMgYHR5cGUg PSA8ZGF0YSB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4nLgorK2dkYl90ZXN0ICJwdHlwZSB2YXIi ICJ0eXBlID0gaW50IgorKworK2dkYl90ZXN0ICJwIHZhciIgIiA9IDEiCiBkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAw MDAwMC4uMWYwMmQ5MApAQCAtMTg0NTIsNDQgKzIzODE4LDYgQEAgaW5kZXggYWE0ZTUxOS4uZjg3 Mjc3ZCAxMDA2NDQKICAKICAjIFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5h cnkgdG8gdGVzdCBlaXRoZXIgQyBvciBDKysKICAjIHZhbHVlcy4gCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHl0aG9uLmV4cAotaW5kZXggOTUxYzI5NS4uOWRkMGMxMiAxMDA2NDQKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHl0aG9uLmV4cAotQEAgLTI2LDMwICsyNiw5IEBAIGdkYl9leGl0Ci0gZ2RiX3N0YXJ0 Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gCi0tZ2RiX3Rlc3RfbXVs dGlwbGUgInB5dGhvbiBwcmludCAyMyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAt cmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAi cHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0g ICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQotLX0KLS0KLS0jIFVzYWdlOiBnZGJfcHlfdGVzdF9t dWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgotLSMgUnVuIGEgdGVz dCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0LgotLSMg QWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VM VC4KLS0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwgb3RoZXJ3aXNlLgot LXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30gewotLSAgICBnbG9iYWwgZ2Ri X3Byb21wdAotLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRhcmdzIHsKLS0JaWYge1tnZGJf dGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7Ci0tCSAgICAtcmUgIlxbXHJc blxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+KSQiIHsKLS0JCXBhc3MgIiRu YW1lIC0gJGlucHV0IgotLQkgICAgfQotLQl9XX0gewotLQkgICAgcmV0dXJuIDEKLS0JfQotLSAg ICB9Ci0tICAgIHJldHVybiAwCi0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVu c3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQotIH0K LSAKLSBnZGJfcHlfdGVzdF9tdWx0aXBsZSAibXVsdGktbGluZSBweXRob24gY29tbWFuZCIgXAog ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWZv cmtvZmYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWZvcmtv ZmYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjRkYzMwOGIKQEAgLTE5 MDMzLDYgKzI0MzYxLDI3IEBAIGluZGV4IDAwMDAwMDAuLjFkYzkzYWIKICtpZiB7W2lzdGFyZ2V0 ICIqLSotbGludXgqIl19IHsKICsgICAgdGVzdCBjaGlsZCBGT0xMT1dfQ0hJTEQKICt9CitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvY3Atc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1aXRl L2xpYi9jcC1zdXBwb3J0LmV4cAoraW5kZXggNmZiZWU4NC4uMTE4OWNmZCAxMDA2NDQKKy0tLSBh L2dkYi90ZXN0c3VpdGUvbGliL2NwLXN1cHBvcnQuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2xp Yi9jcC1zdXBwb3J0LmV4cAorQEAgLTIyMiw3ICsyMjIsNyBAQCBwcm9jIGNwX3Rlc3RfcHR5cGVf Y2xhc3MgeyBpbl9jb21tYW5kIGluX3Rlc3RuYW1lIGluX2tleSBpbl90YWcgaW5fY2xhc3NfdGFi bGUgeworIAorICAgICBzZXQgcGFyc2Vfb2theSAwCisgICAgIGdkYl90ZXN0X211bHRpcGxlICIk aW5fY29tbWFuZCIgIiRpbl90ZXN0bmFtZSAvLyBwYXJzZSBmYWlsZWQiIHsKKy0JLXJlICJ0eXBl ID0gKHN0cnVjdHxjbGFzcykke3dzb3B0fShcW0EtWmEtejAtOV9cXSopJHt3c29wdH0oKDpcW15c e1xdKik/KSR7d3NvcHR9XHsoLiopXH0ke3dzb3B0fShcW15cclxuXF0qKVxbXHJcblxdKyRnZGJf cHJvbXB0ICQiIHsKKysJLXJlICJ0eXBlID0gKHN0cnVjdHxjbGFzcykke3dzb3B0fShcW0EtWmEt ejAtOV86XF0qKSR7d3NvcHR9KCg6XFteXHtcXSopPykke3dzb3B0fVx7KC4qKVx9JHt3c29wdH0o XFteXHJcblxdKilcW1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7CisgCSAgICBzZXQgcGFyc2Vfb2th eSAgICAgICAgICAxCisgCSAgICBzZXQgYWN0dWFsX2tleSAgICAgICAgICAkZXhwZWN0X291dCgx LHN0cmluZykKKyAJICAgIHNldCBhY3R1YWxfdGFnICAgICAgICAgICRleHBlY3Rfb3V0KDIsc3Ry aW5nKQorQEAgLTIzMSw2ICsyMzEsNyBAQCBwcm9jIGNwX3Rlc3RfcHR5cGVfY2xhc3MgeyBpbl9j b21tYW5kIGluX3Rlc3RuYW1lIGluX2tleSBpbl90YWcgaW5fY2xhc3NfdGFibGUgeworIAkgICAg c2V0IGFjdHVhbF90YWlsICAgICAgICAgJGV4cGVjdF9vdXQoNixzdHJpbmcpCisgCX0KKyAgICAg fQorKyAgICAKKyAgICAgaWYgeyAhICRwYXJzZV9va2F5IH0gdGhlbiB7IHJldHVybiB9CisgCisg ICAgICMgQ2hlY2sgdGhlIGFjdHVhbCBrZXkuICBJdCB3b3VsZCBiZSBuaWNlIHRvIHJlcXVpcmUg dGhhdCBpdCBtYXRjaAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiBpbmRleCA5YjA2YTJmLi40MTlkNWE5IDEwMDY0NAog LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cApAQCAtMTkxMjYsMTAgKzI0NDc1LDEwIEBA IGluZGV4IDE2YTIwN2MuLmMzY2ZmMDYgMTAwNjQ0CiAgewogICAgc3RydWN0IHRocmVhZF9pbmZv ICp0cCwgKm5leHQ7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3RvcC5jCi1pbmRleCA4 NWU3YjYyLi5iNGYwYmY3IDEwMDY0NAoraW5kZXggOTBlOGYxZS4uNDg5ZTI0YSAxMDA2NDQKIC0t LSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAtMzQ2LDYgKzM0Niw3IEBAIHZvaWQK K0BAIC0zMzcsNiArMzM3LDcgQEAgdm9pZAogIHByZXBhcmVfZXhlY3V0ZV9jb21tYW5kICh2b2lk KQogIHsKICAgIGZyZWVfYWxsX3ZhbHVlcyAoKTsKQEAgLTE5MTk0LDggKzI0NTQzLDEyMCBAQCBp bmRleCBjZTlmNTUxLi41ZjlkNzM5IDEwMDY0NAogIH0KICAKICBzdGF0aWMgdm9pZAorZGlmZiAt LWdpdCBhL2dkYi90eXBlcHJpbnQuaCBiL2dkYi90eXBlcHJpbnQuaAoraW5kZXggN2Q3ZTZiYy4u NmVlNjVjZiAxMDA2NDQKKy0tLSBhL2dkYi90eXBlcHJpbnQuaAorKysrIGIvZ2RiL3R5cGVwcmlu dC5oCitAQCAtMjAsMTAgKzIwLDEzIEBACisgI2lmbmRlZiBUWVBFUFJJTlRfSAorICNkZWZpbmUg VFlQRVBSSU5UX0gKKyAKKytlbnVtIGxhbmd1YWdlOworIHN0cnVjdCB1aV9maWxlOworIAorIHZv aWQgcHJpbnRfdHlwZV9zY2FsYXIgKHN0cnVjdCB0eXBlICogdHlwZSwgTE9OR0VTVCwgc3RydWN0 IHVpX2ZpbGUgKik7CisgCisgdm9pZCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVj dCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKKyAJCQkJICBpbnQsIGludCk7CisrCisr dm9pZCBjX3R5cGVfcHJpbnRfYXJncyAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwg aW50LCBlbnVtIGxhbmd1YWdlKTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nZGIvdWktZmlsZS5j IGIvZ2RiL3VpLWZpbGUuYworaW5kZXggZTZhYWY5My4uMTc2MGI0YyAxMDA2NDQKKy0tLSBhL2dk Yi91aS1maWxlLmMKKysrKyBiL2dkYi91aS1maWxlLmMKK0BAIC0yMiw2ICsyMiw3IEBACisgCisg I2luY2x1ZGUgImRlZnMuaCIKKyAjaW5jbHVkZSAidWktZmlsZS5oIgorKyNpbmNsdWRlICJnZGJf b2JzdGFjay5oIgorICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisgI2luY2x1ZGUgImdkYl9zZWxl Y3QuaCIKKyAKK0BAIC0yNjQsNyArMjY1LDcgQEAgc2V0X3VpX2ZpbGVfZGF0YSAoc3RydWN0IHVp X2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEsCisgfQorIAorIC8qIHVpX2ZpbGUgdXRpbGl0eSBmdW5j dGlvbiBmb3IgY29udmVydGluZyBhIGBgc3RydWN0IHVpX2ZpbGUnJyBpbnRvCistICAgYSBtZW1v cnkgYnVmZmVyJycuICovCisrICAgYSBtZW1vcnkgYnVmZmVyLiAqLworIAorIHN0cnVjdCBhY2N1 bXVsYXRlZF91aV9maWxlCisgeworQEAgLTI5OCw2ICsyOTksMjMgQEAgdWlfZmlsZV94c3RyZHVw IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgbG9uZyAqbGVuZ3RoKQorICAgICAqbGVuZ3RoID0gYWNj Lmxlbmd0aDsKKyAgIHJldHVybiBhY2MuYnVmZmVyOworIH0KKysKKytzdGF0aWMgdm9pZAorK2Rv X3VpX2ZpbGVfb2JzYXZlc3RyaW5nICh2b2lkICpjb250ZXh0LCBjb25zdCBjaGFyICpidWZmZXIs IGxvbmcgbGVuZ3RoKQorK3sKKysgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrID0gKHN0cnVjdCBv YnN0YWNrICopIGNvbnRleHQ7CisrICBvYnN0YWNrX2dyb3cgKG9ic3RhY2ssIGJ1ZmZlciwgbGVu Z3RoKTsKKyt9CisrCisrY2hhciAqCisrdWlfZmlsZV9vYnNhdmVzdHJpbmcgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywKKysJCSAgICAgIGxvbmcgKmxlbmd0 aCkKKyt7CisrICB1aV9maWxlX3B1dCAoZmlsZSwgZG9fdWlfZmlsZV9vYnNhdmVzdHJpbmcsIG9i c3RhY2spOworKyAgKmxlbmd0aCA9IG9ic3RhY2tfb2JqZWN0X3NpemUgKG9ic3RhY2spOworKyAg b2JzdGFja18xZ3JvdyAob2JzdGFjaywgJ1wwJyk7CisrICByZXR1cm4gb2JzdGFja19maW5pc2gg KG9ic3RhY2spOworK30KKyAMCisgLyogQSBwdXJlIG1lbW9yeSBiYXNlZCBgYHN0cnVjdCB1aV9m aWxlJycgdGhhdCBjYW4gYmUgdXNlZCBhbiBvdXRwdXQKKyAgICBidWZmZXIuIFRoZSBidWZmZXJz IGFjY3VtdWxhdGVkIGNvbnRlbnRzIGFyZSBhdmFpbGFibGUgdmlhCitkaWZmIC0tZ2l0IGEvZ2Ri L3VpLWZpbGUuaCBiL2dkYi91aS1maWxlLmgKK2luZGV4IDYxNTU2OTkuLmJiOTRmNGIgMTAwNjQ0 CistLS0gYS9nZGIvdWktZmlsZS5oCisrKysgYi9nZGIvdWktZmlsZS5oCitAQCAtMjAsNiArMjAs NyBAQAorICNpZm5kZWYgVUlfRklMRV9ICisgI2RlZmluZSBVSV9GSUxFX0gKKyAKKytzdHJ1Y3Qg b2JzdGFjazsKKyBzdHJ1Y3QgdWlfZmlsZTsKKyAKKyAvKiBDcmVhdGUgYSBnZW5lcmljIHVpX2Zp bGUgb2JqZWN0IHdpdGggbnVsbCBtZXRob2RzLiAqLworQEAgLTc4LDcgKzc5LDEwIEBAIGV4dGVy biB2b2lkIHVpX2ZpbGVfcHV0IChzdHJ1Y3QgdWlfZmlsZSAqc3JjLCB1aV9maWxlX3B1dF9tZXRo b2RfZnR5cGUgKndyaXRlLCB2CisgICAgbWludXMgdGhhdCBhcHBlbmRlZCBOVUwuICovCisgZXh0 ZXJuIGNoYXIgKnVpX2ZpbGVfeHN0cmR1cCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGxvbmcgKmxl bmd0aCk7CisgCistCisrLyogU2ltaWxhciB0byB1aV9maWxlX3hzdHJkdXAsIGJ1dCByZXR1cm4g YSBuZXcgc3RyaW5nIGFsbG9jYXRlZCBvbgorKyAgIE9CU1RBQ0suICAqLworK2V4dGVybiBjaGFy ICp1aV9maWxlX29ic2F2ZXN0cmluZyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsCisrCQkJCSAgIHN0 cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBsb25nICpsZW5ndGgpOworIAorIGV4dGVybiBsb25nIHVp X2ZpbGVfcmVhZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwgbG9uZyBsZW5ndGhf YnVmKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvdXRpbHMuYyBiL2dkYi91dGlscy5jCitpbmRleCA4 MmE2NmExLi5jMzA1NTA2IDEwMDY0NAorLS0tIGEvZ2RiL3V0aWxzLmMKKysrKyBiL2dkYi91dGls cy5jCitAQCAtMjY1Niw3ICsyNjU2LDEwIEBAIGZwcmludGZfc3ltYm9sX2ZpbHRlcmVkIChzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBjaGFyICpuYW1lLAorICAgIEFzIGFuIGV4dHJhIGhhY2ssIHN0 cmluZzE9PSJGT08oQVJHUykiIG1hdGNoZXMgc3RyaW5nMj09IkZPTyIuCisgICAgVGhpcyAiZmVh dHVyZSIgaXMgdXNlZnVsIHdoZW4gc2VhcmNoaW5nIGZvciBtYXRjaGluZyBDKysgZnVuY3Rpb24g bmFtZXMKKyAgICAoc3VjaCBhcyBpZiB0aGUgdXNlciB0eXBlcyAnYnJlYWsgRk9PJywgd2hlcmUg Rk9PIGlzIGEgbWFuZ2xlZCBDKysKKy0gICBmdW5jdGlvbikuICovCisrICAgZnVuY3Rpb24pLgor KworKyAgIEFzIGFuIGV4dHJhLXNwZWNpYWwgaGFjaywgd2UgZG8gdGhlIHNhbWUgd2l0aCAnICcs IHNvIHRoYXQKKysgICAiRk9PKEFSR1MpIGNvbnN0IiBjYW4gbWF0Y2ggIkZPTyIsIHRvby4gICov CisgCisgaW50Cisgc3RyY21wX2l3IChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpz dHJpbmcyKQorQEAgLTI2ODEsNyArMjY4NCw3IEBAIHN0cmNtcF9pdyAoY29uc3QgY2hhciAqc3Ry aW5nMSwgY29uc3QgY2hhciAqc3RyaW5nMikKKyAJICBzdHJpbmcyKys7CisgCX0KKyAgICAgfQor LSAgcmV0dXJuICgqc3RyaW5nMSAhPSAnXDAnICYmICpzdHJpbmcxICE9ICcoJykgfHwgKCpzdHJp bmcyICE9ICdcMCcpOworKyAgcmV0dXJuICgqc3RyaW5nMSAhPSAnICcgJiYgKnN0cmluZzEgIT0g J1wwJyAmJiAqc3RyaW5nMSAhPSAnKCcpIHx8ICgqc3RyaW5nMiAhPSAnXDAnICYmICpzdHJpbmcy ICE9ICcoJyk7CisgfQorIAorIC8qIFRoaXMgaXMgbGlrZSBzdHJjbXAgZXhjZXB0IHRoYXQgaXQg aWdub3JlcyB3aGl0ZXNwYWNlIGFuZCB0cmVhdHMKIGRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGgu YyBiL2dkYi92YWxhcml0aC5jCi1pbmRleCAyYjY2Zjg1Li45YzM2ZTU2IDEwMDY0NAoraW5kZXgg ZWQ3NmIwOS4uOGJmMzYzNCAxMDA2NDQKIC0tLSBhL2dkYi92YWxhcml0aC5jCiArKysgYi9nZGIv dmFsYXJpdGguYwogQEAgLTEzOSw3ICsxMzksNiBAQCBhbiBpbnRlZ2VyIG5vciBhIHBvaW50ZXIg b2YgdGhlIHNhbWUgdHlwZS4iKSk7CkBAIC0xOTI4NSw3ICsyNDc0Niw3IEBAIGluZGV4IDJiNjZm ODUuLjljMzZlNTYgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dk Yi92YWxvcHMuYwotaW5kZXggMTY2NzM2OC4uZTFhNmJlZiAxMDA2NDQKK2luZGV4IGNhMzQwODMu LmMyM2ZkNjggMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dkYi92YWxvcHMuYwog QEAgLTM4LDYgKzM4LDcgQEAKQEAgLTE5MzA1LDcgKzI0NzY2LDcgQEAgaW5kZXggMTY2NzM2OC4u ZTFhNmJlZiAxMDA2NDQKICAJICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKChzdHJ1 Y3QgdHlwZSAqKSBOVUxMLAogIAkJCQkJICBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwK ICAJCQkJCSAgbG93X2JvdW5kLAotQEAgLTU3MCw2ICs1NjksNjQgQEAgdmFsdWVfb25lIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgZW51bSBsdmFsX3R5cGUgbHYpCitAQCAtODIyLDYgKzgyMSw2NCBAQCB2 YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlLCBlbnVtIGx2YWxfdHlwZSBsdikKICAgIHJldHVy biB2YWw7CiAgfQogIApAQCAtMTkzNzAsNyArMjQ4MzEsNyBAQCBpbmRleCAxNjY3MzY4Li5lMWE2 YmVmIDEwMDY0NAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdmFsdWVfYXQsIHZhbHVlX2F0X2xh enksIGFuZCB2YWx1ZV9hdF9sYXp5X3N0YWNrLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVl ICoKLUBAIC02NjEsMTUgKzcxOCwyMSBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUg KnZhbCkKK0BAIC05MTMsMTUgKzk3MCwyMSBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFs dWUgKnZhbCkKICAgICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21l bW9yeSkKICAgICAgewpAQCAtMTkzOTksNyArMjQ4NjAsNyBAQCBpbmRleCAxNjY3MzY4Li5lMWE2 YmVmIDEwMDY0NAogIAl9CiAgICAgIH0KICAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0g bHZhbF9yZWdpc3RlcikKLUBAIC0xMDc3LDcgKzExNDAsMTggQEAgYWRkcmVzc19vZl92YXJpYWJs ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgYmxvY2sgKmIpCitAQCAtMTMyOSw3ICsxMzky LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJs b2NrICpiKQogICAgaWYgKChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVl X2xhenkgKHZhbCkpCiAgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVO QykKICAgICAgewpAQCAtMTk0MTksNyArMjQ4ODAsNyBAQCBpbmRleCAxNjY3MzY4Li5lMWE2YmVm IDEwMDY0NAogICAgICAgIHJldHVybiB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxvb2t1cF9wb2ludGVy X3R5cGUgKHR5cGUpLCBhZGRyKTsKICAgICAgfQogIAotQEAgLTExODMsNiArMTI1Nyw3IEBAIHN0 cnVjdCB2YWx1ZSAqCitAQCAtMTQzNSw2ICsxNTA5LDcgQEAgc3RydWN0IHZhbHVlICoKICB2YWx1 ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKICB7CiAgICBzdHJ1Y3QgdHlwZSAq dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKQEAgLTE5NDI3LDcgKzI0 ODg4LDcgQEAgaW5kZXggMTY2NzM2OC4uZTFhNmJlZiAxMDA2NDQKICAKICAgIC8qIElmIHRoZSB1 c2VyIHRyaWVzIHRvIGRvIHNvbWV0aGluZyByZXF1aXJpbmcgYSBwb2ludGVyIHdpdGggYW4KICAg ICAgIGFycmF5IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBwdXNoZWQgdG8gdGhlIHRhcmdldCwgdGhl biB0aGlzIHdvdWxkCi1AQCAtMTE5Miw4ICsxMjY3LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAo c3RydWN0IHZhbHVlICphcmcxKQorQEAgLTE0NDQsOCArMTUxOSwxMiBAQCB2YWx1ZV9jb2VyY2Vf YXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKICAgIGlmIChWQUxVRV9MVkFMIChhcmcxKSAhPSBs dmFsX21lbW9yeSkKICAgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBhZGRyZXNzIG9mIHZh bHVlIG5vdCBsb2NhdGVkIGluIG1lbW9yeS4iKSk7CiAgCkBAIC0xOTQ0MSw3ICsyNDkwMiw5NCBA QCBpbmRleCAxNjY3MzY4Li5lMWE2YmVmIDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHZhbHVl IHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlzIGEgcG9pbnRlcgot QEAgLTMwNDIsOCArMzEyMSw2IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBp bnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMjMyOCwxMiArMjQwNywyNSBAQCBmaW5kX292 ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5hcmdzLAorICAgaWYg KG1ldGhvZCkKKyAgICAgeworICAgICAgIGdkYl9hc3NlcnQgKG9iaik7CisrCisrICAgICAgLyog T0JKIG1heSBiZSBhIHBvaW50ZXIgdmFsdWUgcmF0aGVyIHRoYW4gdGhlIG9iamVjdCBpdHNlbGYu ICAqLworKyAgICAgIG9iaiA9IGNvZXJjZV9yZWYgKG9iaik7CisrICAgICAgd2hpbGUgKFRZUEVf Q09ERSAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAob2JqKSkpID09IFRZUEVfQ09ERV9QVFIp CisrCW9iaiA9IGNvZXJjZV9yZWYgKHZhbHVlX2luZCAob2JqKSk7CisgICAgICAgb2JqX3R5cGVf bmFtZSA9IFRZUEVfTkFNRSAodmFsdWVfdHlwZSAob2JqKSk7CistICAgICAgLyogSGFjazogZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIG9mdGVuIHBhc3NlcyBpbiBhIHBvaW50ZXIKKy0gICAgICAg ICB2YWx1ZSByYXRoZXIgdGhhbiB0aGUgb2JqZWN0IGl0c2VsZiwgc28gdHJ5IGFnYWluLiAgKi8K Ky0gICAgICBpZiAoKCFvYmpfdHlwZV9uYW1lIHx8ICEqb2JqX3R5cGVfbmFtZSkgCistCSAgJiYg KFRZUEVfQ09ERSAodmFsdWVfdHlwZSAob2JqKSkgPT0gVFlQRV9DT0RFX1BUUikpCistCW9ial90 eXBlX25hbWUgPSBUWVBFX05BTUUgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHVlX3R5cGUgKG9iaikp KTsKKysKKysgICAgICAvKiBGaXJzdCBjaGVjayB3aGV0aGVyIHRoaXMgaXMgYSBkYXRhIG1lbWJl ciwgZS5nLiBhIHBvaW50ZXIgdG8KKysJIGEgZnVuY3Rpb24uICAqLworKyAgICAgIGlmIChUWVBF X0NPREUgKGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKG9iaikpKSA9PSBUWVBFX0NPREVfU1RS VUNUKQorKwl7CisrCSAgKnZhbHAgPSBzZWFyY2hfc3RydWN0X2ZpZWxkIChuYW1lLCBvYmosIDAs CisrCQkJCSAgICAgICBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChvYmopKSwgMCk7CisrCSAg aWYgKCp2YWxwKQorKwkgICAgeworKwkgICAgICAqc3RhdGljcCA9IDE7CisrCSAgICAgIHJldHVy biAwOworKwkgICAgfQorKwl9CisgCisgICAgICAgZm5zX3B0ciA9IHZhbHVlX2ZpbmRfb2xvYWRf bWV0aG9kX2xpc3QgKCZ0ZW1wLCBuYW1lLCAKKyAJCQkJCSAgICAgIDAsICZudW1fZm5zLCAKK0BA IC0yMzUzLDE2ICsyNDQ1LDI5IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB0eXBlICoq YXJnX3R5cGVzLCBpbnQgbmFyZ3MsCisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIGNv bnN0IGNoYXIgKnF1YWxpZmllZF9uYW1lID0gU1lNQk9MX0NQTFVTX0RFTUFOR0xFRF9OQU1FIChm c3ltKTsKKysgICAgICBjb25zdCBjaGFyICpxdWFsaWZpZWRfbmFtZSA9IFNZTUJPTF9OQVRVUkFM X05BTUUgKGZzeW0pOworIAorLSAgICAgIC8qIElmIHdlIGhhdmUgYSBDKysgbmFtZSwgdHJ5IHRv IGV4dHJhY3QganVzdCB0aGUgZnVuY3Rpb24KKy0JIHBhcnQuICAqLworLSAgICAgIGlmIChxdWFs aWZpZWRfbmFtZSkKKy0JZnVuY19uYW1lID0gY3BfZnVuY19uYW1lIChxdWFsaWZpZWRfbmFtZSk7 CisrICAgICAgLyogSWYgd2UgaGF2ZSBhIGZ1bmN0aW9uIHdpdGggYSBDKysgbmFtZSwgdHJ5IHRv IGV4dHJhY3QganVzdAorKwkgdGhlIGZ1bmN0aW9uIHBhcnQuICBEbyBub3QgdHJ5IHRoaXMgZm9y IG5vbi1mdW5jdGlvbnMgKGUuZy4KKysJIGZ1bmN0aW9uIHBvaW50ZXJzKS4gICovCisrICAgICAg aWYgKHF1YWxpZmllZF9uYW1lCisrCSAgJiYgVFlQRV9DT0RFIChjaGVja190eXBlZGVmIChTWU1C T0xfVFlQRSAoZnN5bSkpKSA9PSBUWVBFX0NPREVfRlVOQykKKysJeworKwkgIGZ1bmNfbmFtZSA9 IGNwX2Z1bmNfbmFtZSAocXVhbGlmaWVkX25hbWUpOworKworKwkgIC8qIElmIGNwX2Z1bmNfbmFt ZSBkaWQgbm90IHJlbW92ZSBhbnl0aGluZywgdGhlIG5hbWUgb2YgdGhlCisrCSAgICAgc3ltYm9s IGRpZCBub3QgaW5jbHVkZSBzY29wZSBvciBhcmd1bWVudCB0eXBlcyAtIGl0IHdhcworKwkgICAg IHByb2JhYmx5IGEgQy1zdHlsZSBmdW5jdGlvbi4gICovCisrCSAgaWYgKGZ1bmNfbmFtZSAmJiBz dHJjbXAgKGZ1bmNfbmFtZSwgcXVhbGlmaWVkX25hbWUpID09IDApCisrCSAgICB7CisrCSAgICAg IHhmcmVlIChmdW5jX25hbWUpOworKwkgICAgICBmdW5jX25hbWUgPSBOVUxMOworKwkgICAgfQor Kwl9CisgCistICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIEMrKyBuYW1lLCB0aGlzIG11c3QgYmUg YSBDLXN0eWxlIGZ1bmN0aW9uLgorLQkgSnVzdCByZXR1cm4gdGhlIHNhbWUgc3ltYm9sLiAgRG8g dGhlIHNhbWUgaWYgY3BfZnVuY19uYW1lCistCSBmYWlscyBmb3Igc29tZSByZWFzb24uICAqLwor KyAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBDKysgbmFtZSwgdGhpcyBtdXN0IGJlIGEgQy1zdHls ZSBmdW5jdGlvbiBvcgorKwkgbm90IGEgZnVuY3Rpb24gYXQgYWxsLiAgSnVzdCByZXR1cm4gdGhl IHNhbWUgc3ltYm9sLiAgRG8gdGhlCisrCSBzYW1lIGlmIGNwX2Z1bmNfbmFtZSBmYWlscyBmb3Ig c29tZSByZWFzb24uICAqLworICAgICAgIGlmIChmdW5jX25hbWUgPT0gTlVMTCkKKyAgICAgICAg IHsKKyAJICAqc3ltcCA9IGZzeW07CitAQCAtMzA5Niw3ICszMjAxLDcgQEAgdmFsdWVfbWF5YmVf bmFtZXNwYWNlX2VsdCAoY29uc3Qgc3RydWN0IHR5cGUgKmN1cnR5cGUsCisgICBzdHJ1Y3Qgc3lt Ym9sICpzeW07CisgICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdDsKKyAKKy0gIHN5bSA9IGNwX2xvb2t1 cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2VfbmFtZSwgbmFtZSwgTlVMTCwKKysgIHN5bSA9 IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlKG5hbWVzcGFjZV9uYW1lLCBuYW1lLAorIAkJCQkg ICAgZ2V0X3NlbGVjdGVkX2Jsb2NrICgwKSwgCisgCQkJCSAgICBWQVJfRE9NQUlOKTsKKyAKK0BA IC0zMjQwLDcgKzMzNDUsNyBAQCB2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwgaW50 IGNvbXBsYWluKQorIAorICAgLyogQ2FsbGluZyBsb29rdXBfYmxvY2tfc3ltYm9sIGlzIG5lY2Vz c2FyeSB0byBnZXQgdGhlIExPQ19SRUdJU1RFUgorICAgICAgc3ltYm9sIGluc3RlYWQgb2YgdGhl IExPQ19BUkcgb25lIChpZiBib3RoIGV4aXN0KS4gICovCistICBzeW0gPSBsb29rdXBfYmxvY2tf c3ltYm9sIChiLCBuYW1lLCBOVUxMLCBWQVJfRE9NQUlOKTsKKysgIHN5bSA9IGxvb2t1cF9ibG9j a19zeW1ib2wgKGIsIG5hbWUsIFZBUl9ET01BSU4pOworICAgaWYgKHN5bSA9PSBOVUxMKQorICAg ICB7CisgICAgICAgaWYgKGNvbXBsYWluKQorQEAgLTMyOTQsOCArMzM5OSw2IEBAIHZhbHVlX3Ns aWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCiAgICAg ICAgfHwgbG93Ym91bmQgKyBsZW5ndGggLSAxID4gdXBwZXJib3VuZCkKICAgICAgZXJyb3IgKF8o InNsaWNlIG91dCBvZiByYW5nZSIpKTsKICAKQEAgLTE5NzM0LDcgKzI1MjgyLDcgQEAgaW5kZXgg YTQ2MmVlNC4uOTY4Y2RmNCAxMDA2NDQKICsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHZh bHVlX3R5cGVzX21hcmtfdXNlZCk7CiAgfQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2Ri L3ZhbHVlLmgKLWluZGV4IDhhYzYyYjguLjA1MWM4YzUgMTAwNjQ0CitpbmRleCA0MmI0NDk3Li42 Zjk5MjNjIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmgKICsrKyBiL2dkYi92YWx1ZS5oCiBAQCAt MzQyLDExICszNDIsMTYgQEAgZXh0ZXJuIExPTkdFU1QgdW5wYWNrX2ZpZWxkX2FzX2xvbmcgKHN0 cnVjdCB0eXBlICp0eXBlLApAQCAtMTk3NTQsNyArMjUzMDIsNyBAQCBpbmRleCA4YWM2MmI4Li4w NTFjOGM1IDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0 X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgCi1AQCAtNjg0LDcg KzY4OSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRlX3NwYWNlX2luX2lu ZmVyaW9yIChpbnQpOworQEAgLTY4OSw3ICs2OTQsNyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2 YWx1ZV9hbGxvY2F0ZV9zcGFjZV9pbl9pbmZlcmlvciAoaW50KTsKICBleHRlcm4gc3RydWN0IHZh bHVlICp2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGNvbXBsYWluKTsKICAK ICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKHN0cnVjdCB2 YWx1ZSAqYXJyYXksCkBAIC0xOTc2NCw3ICsyNTMxMiw3IEBAIGluZGV4IDhhYzYyYjguLjA1MWM4 YzUgMTAwNjQ0CiAgLyogVXNlciBmdW5jdGlvbiBoYW5kbGVyLiAgKi8KICAKIGRpZmYgLS1naXQg YS9nZGIvdmFyb2JqLmMgYi9nZGIvdmFyb2JqLmMKLWluZGV4IDQ2ZDZiMzQuLjA1MzY3NTMgMTAw NjQ0CitpbmRleCA2ZWM4N2IzLi5iMjc0YWRlIDEwMDY0NAogLS0tIGEvZ2RiL3Zhcm9iai5jCiAr KysgYi9nZGIvdmFyb2JqLmMKIEBAIC0yNiw2ICsyNiw4IEBACkBAIC0xOTc3Niw3NSArMjUzMjQs MjAgQEAgaW5kZXggNDZkNmIzNC4uMDUzNjc1MyAxMDA2NDQKICAKICAjaW5jbHVkZSAiZ2RiX2Fz c2VydC5oIgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMzQ2OCw2ICszNDcwLDE5IEBA IGphdmFfdmFsdWVfb2ZfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhciwgZW51bSB2YXJvYmpf ZGlzcGxheV9mb3JtYXRzIGZvcm1hdCkKLSAgIHJldHVybiBjcGx1c192YWx1ZV9vZl92YXJpYWJs ZSAodmFyLCBmb3JtYXQpOwotIH0KLSAKLSsvKiBJdGVyYXRlIGFsbCB0aGUgZXhpc3RpbmcgVkFS T0JKcyBhbmQgY2FsbCB0aGUgRlVOQyBjYWxsYmFjayBmb3IgdGhlbSB3aXRoIGFuCi0rICAgYXJi aXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuICAqLwotKwotK3N0YXRpYyB2b2lk Ci0rYWxsX3Zhcm9ianMgKHZvaWQgKCpmdW5jKSAoc3RydWN0IHZhcm9iaiAqdmFyLCB2b2lkICpk YXRhKSwgdm9pZCAqZGF0YSkKLSt7Ci0rICBzdHJ1Y3Qgdmxpc3QgKip2bHAsICp2bDsKLSsKLSsg IGZvciAodmxwID0gdmFyb2JqX3RhYmxlOyB2bHAgPCB2YXJvYmpfdGFibGUgKyBWQVJPQkpfVEFC TEVfU0laRTsgdmxwKyspCi0rICAgIGZvciAodmwgPSAqdmxwOyB2bCAhPSBOVUxMOyB2bCA9IHZs LT5uZXh0KQotKyAgICAgICgqZnVuYykgKHZsLT52YXIsIGRhdGEpOwotK30KLSsKLSAvKiBJdGVy YXRlIGFsbCB0aGUgZXhpc3RpbmcgX3Jvb3RfIFZBUk9CSnMgYW5kIGNhbGwgdGhlIEZVTkMgY2Fs bGJhY2sgZm9yIHRoZW0KLSAgICB3aXRoIGFuIGFyYml0cmFyeSBjYWxsZXIgc3VwcGxpZWQgREFU QSBwb2ludGVyLiAgKi8KLSAKLUBAIC0zNDg1LDYgKzM1MDAsNDMgQEAgYWxsX3Jvb3RfdmFyb2Jq cyAodm9pZCAoKmZ1bmMpIChzdHJ1Y3QgdmFyb2JqICp2YXIsIHZvaWQgKmRhdGEpLCB2b2lkICpk YXRhKQorQEAgLTM0OTUsNyArMzQ5Nyw3IEBAIGFsbF9yb290X3Zhcm9ianMgKHZvaWQgKCpmdW5j KSAoc3RydWN0IHZhcm9iaiAqdmFyLCB2b2lkICpkYXRhKSwgdm9pZCAqZGF0YSkKICAgICAgICAo KmZ1bmMpICh2YXJfcm9vdC0+cm9vdHZhciwgZGF0YSk7CiAgICAgIH0KICB9CistDAogKwotKy8q IEhlbHBlciBmb3IgdmFyb2JqX3R5cGVzX21hcmtfdXNlZC4gIENhbGwgdHlwZV9tYXJrX3VzZWQg Zm9yIGFueSBUWVBFcwotKyAgIHJlZmVyZW5jZWQgZnJvbSB0aGlzIFZBUi4gICovCi0rCi0rc3Rh dGljIHZvaWQKLSt2YXJvYmpfdHlwZXNfbWFya191c2VkX2l0ZXIgKHN0cnVjdCB2YXJvYmogKnZh ciwgdm9pZCAqdW51c2VkKQotK3sKLSsgIC8qIEV2ZW4gRkxPQVRJTkcgb3IgSVNfSU5WQUxJRCBW QVJzIHdpdGggbm9uLU5VTEwgVFlQRSByZWZlcmVuY2VzIHdpbGwKLSsgICAgIGZyZWUgdGhlbSBp biBmcmVlX3ZhcmlhYmxlLiAgU3RpbGwgRVhQIG1heSBhbHNvIHJlZmVyZW5jZSBUWVBFcwotKyAg ICAgYnV0IHRoZXNlIGJlbG9uZyB0byBTWU1CT0xzIHdoaWNoIHNob3VsZCBiZSBhbHdheXMgYXNz b2NpYXRlZCB3aXRoCi0rICAgICBhbiBPQkpGSUxFIChhbmQgdGhlcmVmb3JlIG5vdCB1c2VmdWwg dG8gYmUgdHlwZV9tYXJrX3VzZWQpLiAgKi8KLSsKLSsgIHR5cGVfbWFya191c2VkICh2YXItPnR5 cGUpOwotKyAgaWYgKHZhci0+dmFsdWUpCi0rICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBl ICh2YXItPnZhbHVlKSk7Ci0rCi0rICAvKiBDaGVjayBWQVJPQkpST09UcyBvbmx5IG9uY2UgZHVy aW5nIHRoZSB2YXJvYmpfdHlwZXNfbWFya191c2VkIHBhc3MuICAqLwotKwotKyAgaWYgKHZhci0+ cm9vdC0+cm9vdHZhciA9PSB2YXIpCi0rICAgIHsKLSsgICAgICBpZiAodmFyLT5yb290LT5leHAp Ci0rCWV4cF90eXBlc19tYXJrX3VzZWQgKHZhci0+cm9vdC0+ZXhwKTsKLSsgICAgfQotK30KLSsK LSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRo aXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Zhcm9ial90eXBlc19t YXJrX3VzZWQgKHZvaWQpCi0rewotKyAgLyogQ2hlY2sgYWxsIHRoZSBWQVJPQkpzLCBldmVuIG5v bi1yb290IG9uZXMuICBDaGlsZCBWQVJPQkpzIGNhbiByZWZlcmVuY2UKLSsgICAgIHR5cGVzIGZy b20gb3RoZXIgT0JKRklMRXMgdGhyb3VnaCBUWVBFX0lTX09QQVFVRSByZXNvbHV0aW9ucyBieQot KyAgICAgY2hlY2tfdHlwZWRlZi4gIFN1Y2ggdHlwZXMgcmVmZXJlbmNlcyB3aWxsIG5vdCBiZSBp bnRlcmNvbm5lY3RlZCBpbnRvIHRoZQotKyAgICAgc2FtZSBUWVBFX0dST1VQLiAgKi8KLSsKLSsg IGFsbF92YXJvYmpzICh2YXJvYmpfdHlwZXNfbWFya191c2VkX2l0ZXIsIE5VTEwpOwotK30KLSAM CiAgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfdmFyb2JqICh2b2lkKTsKICB2b2lkCisgX2luaXRp YWxpemVfdmFyb2JqICh2b2lkKQogZGlmZiAtLWdpdCBhL2dkYi94Y29mZnJlYWQuYyBiL2dkYi94 Y29mZnJlYWQuYwotaW5kZXggNjMwMWI2MS4uNDdjMmFjYiAxMDA2NDQKK2luZGV4IDI1Y2MyZDku LjY3ODQ2NTQgMTAwNjQ0CiAtLS0gYS9nZGIveGNvZmZyZWFkLmMKICsrKyBiL2dkYi94Y29mZnJl YWQuYwotQEAgLTMwMzUsNiArMzAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyB4Y29mZl9z eW1fZm5zID0KK0BAIC0zMDMwLDYgKzMwMzAsNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgeGNv ZmZfc3ltX2ZucyA9CiAgICB4Y29mZl9uZXdfaW5pdCwJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBh bnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAqLwogICAgeGNvZmZfc3ltZmlsZV9pbml0LAkJ Lyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQoKSAqLwog ICAgeGNvZmZfaW5pdGlhbF9zY2FuLAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmlsZSBp bnRvIHN5bXRhYiAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2gg Yi9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCmluZGV4IGZiNGY1NmQuLmE1Y2UxNjAgMTAw NjQ0Ci0tLSBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2gKKysrIGIvZ2RiLWJ6NTM5NTkw LWdudS1pZnVuYy5wYXRjaApAQCAtMSw0MSArMSw2NSBAQAotZ2RiLwotMjAwOS0xMS0yNCAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgoraHR0cDovL3NvdXJjZXdh cmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIv d2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKLQlUcmFuc3BhcmVudCBHTlUtSUZVTkNzIHN1 cHBvcnQuCi0JKiBlbGZyZWFkLmMgKHJlY29yZF9taW5pbWFsX3N5bWJvbCk6IEFwcGx5IGFsc28g Zm9yIG1zdF90ZXh0X2dudV9pZnVuYy4KLQkoZWxmX3N5bXRhYl9yZWFkKTogU2V0IGFsc28gbXN0 X3RleHRfZ251X2lmdW5jLgotCSogZ2RidHlwZXMuYyAoaW5pdF90eXBlKTogU3VwcG9ydCBUWVBF X0ZMQUdfR05VX0lGVU5DLgotCShnZGJ0eXBlc19wb3N0X2luaXQpOiBJbml0aWFsaXplIGJ1aWx0 aW5fZnVuY19mdW5jX3B0ci4KLQkob2JqZmlsZV90eXBlKTogSW5pdGlhbGl6ZSBub2RlYnVnX3Rl eHRfZ251X2lmdW5jX3N5bWJvbC4KLQkqIGdkYnR5cGVzLmggKGVudW0gdHlwZV9mbGFnX3ZhbHVl IDxUWVBFX0ZMQUdfR05VX0lGVU5DPikKLQkoVFlQRV9HTlVfSUZVTkMsIHN0cnVjdCBtYWluX3R5 cGUgPGZsYWdfZ251X2lmdW5jPikKLQkoc3RydWN0IGJ1aWx0aW5fdHlwZSA8YnVpbHRpbl9mdW5j X2Z1bmNfcHRyPikKLQkoc3RydWN0IG9iamZpbGVfdHlwZSA8bm9kZWJ1Z190ZXh0X2dudV9pZnVu Y19zeW1ib2w+KTogTmV3LgotCSogaW5mY2FsbC5jIChmaW5kX2Z1bmN0aW9uX2FkZHIgPFRZUEVf R05VX0lGVU5DIChmdHlwZSk+KTogTmV3LgotCSogbWluc3ltcy5jIChsb29rdXBfbWluaW1hbF9z eW1ib2xfdGV4dCwgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wpCi0JKGZpbmRfc29saWJfdHJh bXBvbGluZV90YXJnZXQpOiBTdXBwb3J0IGFsc28gbXN0X3RleHRfZ251X2lmdW5jLgotCShpbl9n bnVfaWZ1bmNfc3R1Yik6IE5ldy4KLQkqIHBhcnNlLmMgKHdyaXRlX2V4cF9tc3ltYm9sIDxtc3Rf dGV4dF9nbnVfaWZ1bmM+KTogTmV3LgotCSogc29saWItc3ZyNC5jIChzdnI0X2luX2R5bnN5bV9y ZXNvbHZlX2NvZGUpOiBDYWxsIGFsc28KLQlpbl9nbnVfaWZ1bmNfc3R1Yi4KLQkqIHN5bW1pc2Mu YyAoZHVtcF9tc3ltYm9scyA8bXN0X3RleHRfZ251X2lmdW5jPik6IE5ldy4KLQkqIHN5bXRhYi5j IChzZWFyY2hfc3ltYm9scyk6IFN1cHBvcnQgYWxzbyBtc3RfdGV4dF9nbnVfaWZ1bmMuCi0JKiBz eW10YWIuaCAoZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIDxtc3RfdGV4dF9nbnVfaWZ1bmM+KQot CShpbl9nbnVfaWZ1bmNfc3R1Yik6IE5ldy4KLQkqIGxpbmVzcGVjLmM6IEluY2x1ZGUgaW5mY2Fs bC5oLgotCShtaW5zeW1fZm91bmQgPE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRf Z251X2lmdW5jPik6IE5ldy4KK0dJVCBzbmFwc2hvdDoKK2NvbW1pdCA3OTExNjVkZjA3ZmQyMmQz ODFkZWYxMzE4OTU0YzM4OWE2MDZmODFhCiAKLWdkYi90ZXN0c3VpdGUvCi0yMDA5LTExLTI0ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CithcmNoZXItamFua3Jh dG9jaHZpbC1pZnVuYwogCi0JVHJhbnNwYXJlbnQgR05VLUlGVU5DcyBzdXBwb3J0LgotCSogZ2Ri LmJhc2UvZ251LWlmdW5jLWxpYi5jLCBnZGIuYmFzZS9nbnUtaWZ1bmMuYywKLQlnZGIuYmFzZS9n bnUtaWZ1bmMuZXhwOiBOZXcuCi0KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZy ZWFkLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9hbHBoYS1saW51eC10ZGVwLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2VsZnJlYWQuYwky MDEwLTAxLTE1IDExOjQ1OjM0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDEyOjE3OjE2LjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvYWxwaGEtbGludXgtdGRlcC5jCTIwMTAtMDEt MDEgMDg6MzE6MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIv YWxwaGEtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitA QCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJzeW10YWIuaCIKKyAjaW5jbHVkZSAicmVnc2V0 LmgiCisgI2luY2x1ZGUgInJlZ2NhY2hlLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAK KyAjaW5jbHVkZSAiYWxwaGEtdGRlcC5oIgorIAorQEAgLTIzNiw2ICsyMzcsOSBAQCBhbHBoYV9s aW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCisgCisgICBzZXRfZ2RiYXJjaF9yZWdz ZXRfZnJvbV9jb3JlX3NlY3Rpb24KKyAgICAgKGdkYmFyY2gsIGFscGhhX2xpbnV4X3JlZ3NldF9m cm9tX2NvcmVfc2VjdGlvbik7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIpOworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5n LXByb3RvdHlwZXMuICAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2FtZDY0LWxp bnV4LXRkZXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIv YW1kNjQtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEg MTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMTU1Nyw2ICsxNTU3LDkgQEAgYW1kNjRfbGlu dXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgorICAgYW1kNjRfbGludXhfcmVjb3JkX3Rk ZXAuYXJnNiA9IEFNRDY0X1I5X1JFR05VTTsKKyAKKyAgIHRkZXAtPmkzODZfc3lzY2FsbF9yZWNv cmQgPSBhbWQ2NF9saW51eF9zeXNjYWxsX3JlY29yZDsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkcik7CisgfQorIAwKKyAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIx L2dkYi9hcm0tbGludXgtdGRlcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDEy MS5vcmlnL2dkYi9hcm0tbGludXgtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MjkuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYXJtLWxpbnV4LXRkZXAuYwkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTkwNyw2ICs5MDcsOSBAQCBhcm1f bGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gCisgICBzZXRfZ2RiYXJjaF9kaXNw bGFjZWRfc3RlcF9mcmVlX2Nsb3N1cmUgKGdkYmFyY2gsCisgCQkJCQkgICBzaW1wbGVfZGlzcGxh Y2VkX3N0ZXBfZnJlZV9jbG9zdXJlKTsKKyAgIHNldF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2xv Y2F0aW9uIChnZGJhcmNoLCBkaXNwbGFjZWRfc3RlcF9hdF9lbnRyeV9wb2ludCk7CisrCisrICBz ZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJCSAg bGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAvKiBQcm92aWRlIGEg cHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLworSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMjEvZ2RiL2VsZnJlYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAu NTAuMjAxMDAxMjEub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTAtMDEtMjEgMTU6MTM6MjcuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZWxmcmVhZC5jCTIwMTAtMDEt MjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCiBAQCAtMTg0LDcgKzE4NCw4IEBAIHJlY29yZF9t aW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwpAQCAtNTgsMTAgKzgyLDgwIEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKICAJCX0KICAJICAgICAg ZWxzZSBpZiAoKHN5bS0+bmFtZVswXSA9PSAnLicgJiYgc3ltLT5uYW1lWzFdID09ICdMJykKICAJ CSAgICAgICB8fCAoKHN5bS0+ZmxhZ3MgJiBCU0ZfTE9DQUwpCi1JbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvZ2RidHlwZXMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Zy di1saW51eC10ZGVwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcv Z2RiL2Zydi1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozMi4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9mcnYtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEg MTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMzIsNiArMzIsNyBAQAorICNpbmNsdWRlICJm cmFtZS11bndpbmQuaCIKKyAjaW5jbHVkZSAicmVnc2V0LmgiCisgI2luY2x1ZGUgImdkYl9zdHJp bmcuaCIKKysjaW5jbHVkZSAibGludXgtdGRlcC5oIgorIAorIC8qIERlZmluZSB0aGUgc2l6ZSAo aW4gYnl0ZXMpIG9mIGFuIEZSLVYgaW5zdHJ1Y3Rpb24uICAqLworIHN0YXRpYyBjb25zdCBpbnQg ZnJ2X2luc3RyX3NpemUgPSA0OworQEAgLTQ4Niw3ICs0ODcsMjEgQEAgZnJ2X2xpbnV4X3JlZ3Nl dF9mcm9tX2NvcmVfc2VjdGlvbiAoc3RydQorICAgcmV0dXJuIE5VTEw7CisgfQorIAorLQwKKytz dGF0aWMgQ09SRV9BRERSCisrZnJ2X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJICAgICAgQ09SRV9BRERSIGFkZHIsCisrCQkJ CSAgICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGZy dl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwgdGFyZyk7CisrICBD T1JFX0FERFIgcmVzb2x2ZWQ7CisrCisrICByZXNvbHZlZCA9IGxpbnV4X2NvbnZlcnRfZnJvbV9m dW5jX2FuZF9wdHIgKGdkYmFyY2gsIGFkZHIsIHBjKTsKKysgIGlmIChyZXNvbHZlZCAhPSBwYykK KysgICAgcGMgPSBmcnZfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29s dmVkLCB0YXJnKTsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBmcnZf bGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpCisgeworQEAgLTQ5NCw2ICs1MDksMTAgQEAgZnJ2X2xpbnV4X2luaXRfYWJpIChz dHJ1Y3QgZ2RiYXJjaF9pbmZvIAorICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2Ri YXJjaCwgJmZydl9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOyAKKyAgIHNldF9nZGJhcmNo X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoZ2RiYXJjaCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZnJ2X2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbik7 CisrCisrICBpZiAoZnJ2X2FiaSAoZ2RiYXJjaCkgPT0gRlJWX0FCSV9GRFBJQykKKysgICAgc2V0 X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJCQkgIGZy dl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7CisgfQorIAorIHN0YXRpYyBlbnVt IGdkYl9vc2FiaQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Zydi10ZGVwLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2dkYnR5cGVzLmMJMjAx MC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9nZGJ0eXBlcy5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCistLS0g Z2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9mcnYtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6 MzIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZnJ2LXRkZXAu YwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTExNjksNyArMTE2OSw3 IEBAIGZpbmRfZnVuY19kZXNjciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gKKyAgIHJldHVybiBk ZXNjcjsKKyB9CisgCistc3RhdGljIENPUkVfQUREUgorK0NPUkVfQUREUgorIGZydl9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBh ZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9vcHMg KnRhcmcpCisgeworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Zydi10ZGVwLmgKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2Zydi10ZGVwLmgJMjAx MC0wMS0wMSAwODozMTozMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIx L2dkYi9mcnYtdGRlcC5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAt MTE4LDMgKzExOCw2IEBAIENPUkVfQUREUiBmcnZfZmV0Y2hfb2JqZmlsZV9saW5rX21hcCAoc3QK KyBzdHJ1Y3QgdGFyZ2V0X3NvX29wczsKKyBleHRlcm4gc3RydWN0IHRhcmdldF9zb19vcHMgZnJ2 X3NvX29wczsKKyAKKytDT1JFX0FERFIgZnJ2X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJCSAgQ09SRV9BRERSIGFkZHIsCisrCQkJCQkg IHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dk Yi9nZGJ0eXBlcy5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidHlwZXMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAw MDAwMCArMDEwMAogQEAgLTE5NDYsNiArMTk0Niw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2Nv ZGUgY29kZSwgaW50IGxlbmcKICAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9IDE7CiAgICBpZiAo ZmxhZ3MgJiBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UpCkBAIC03MSwxNiArMTY1LDE2IEBAIElu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5jCiAgCiAgICBpZiAobmFtZSkK ICAgICAgVFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1l KSwKLUBAIC0zODQ2LDYgKzM4NDgsOCBAQCBnZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVjdCBnZGJh cmNoICpnZGJhCitAQCAtMzk1NSw2ICszOTU3LDggQEAgZ2RidHlwZXNfcG9zdF9pbml0IChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYQogICAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGJ1aWx0aW5fdHlw ZS0+YnVpbHRpbl92b2lkKTsKICAgIGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cgogICAg ICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGxvb2t1cF9mdW5jdGlvbl90eXBlIChidWlsdGluX3R5 cGUtPmJ1aWx0aW5fdm9pZCkpOwotKyAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfZnVuY19w dHIKLSsgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVp bHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyKSk7CisrICBidWlsdGluX3R5cGUtPmJ1aWx0aW5f ZnVuY19mdW5jCisrICAgID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVp bHRpbl9mdW5jX3B0cik7CiAgCiAgICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIEdEQiBpbnRl cm5hbCBmdW5jdGlvbi4gICovCiAgICBidWlsdGluX3R5cGUtPmludGVybmFsX2ZuCi1AQCAtMzk2 Miw2ICszOTY2LDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCitA QCAtNDA3MSw2ICs0MDc1LDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUpCiAgCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOwogICAg VFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9sKQogICAg ICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7CkBAIC05MiwxMCArMTg2LDEwIEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5jCiAgICBvYmpmaWxlX3R5cGUtPm5v ZGVidWdfZGF0YV9zeW1ib2wKICAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQsCiAgCQkg Z2RiYXJjaF9pbnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAsCi1JbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAxMTo0OToyNi4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMTUgMTI6MTY6NDku MDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9nZGJ0eXBl cy5oCTIwMTAtMDEtMjEgMTU6MTQ6NDEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvZ2RidHlwZXMuaAkyMDEwLTAxLTIxIDE1OjE2OjM5LjAwMDAwMDAwMCArMDEw MAogQEAgLTE4OCw2ICsxODgsNyBAQCBlbnVtIHR5cGVfZmxhZ192YWx1ZQogICAgVFlQRV9GTEFH X0ZJWEVEX0lOU1RBTkNFID0gKDEgPDwgMTUpLAogICAgVFlQRV9GTEFHX1NUVUJfU1VQUE9SVEVE ID0gKDEgPDwgMTYpLApAQCAtMTI1LDE4ICsyMTksMTggQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2dkYnR5cGVzLmgKICAgIHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNl IDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX29iamZpbGVfb3duZWQgOiAxOwogICAgdW5zaWdu ZWQgaW50IGZsYWdfZGlzY2FyZGFibGUgOiAxOwotQEAgLTEyNTAsNiArMTI1OCwxMCBAQCBzdHJ1 Y3QgYnVpbHRpbl90eXBlCitAQCAtMTI0Myw2ICsxMjUxLDEwIEBAIHN0cnVjdCBidWlsdGluX3R5 cGUKICAgICAgICgqKSAoKSBjYW4gc2VydmVyIGFzIGEgZ2VuZXJpYyBmdW5jdGlvbiBwb2ludGVy LiAgKi8KICAgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfcHRyOwogIAotKyAgLyogYHBvaW50 ZXIgdG8gZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24gKHJldHVybmluZyB2 b2lkKScgdHlwZS4KKysgIC8qIGBmdW5jdGlvbiByZXR1cm5pbmcgcG9pbnRlciB0byBmdW5jdGlv biAocmV0dXJuaW5nIHZvaWQpJyB0eXBlLgogKyAgICAgVGhlIGZpbmFsIHZvaWQgcmV0dXJuIHR5 cGUgaXMgbm90IHNpZ25pZmljYW50IGZvciBpdC4gICovCi0rICBzdHJ1Y3QgdHlwZSAqYnVpbHRp bl9mdW5jX2Z1bmNfcHRyOworKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19mdW5jOwogKwog IAogICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KICAKLUBAIC0xMjkyLDYgKzEzMDQs NyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCitAQCAtMTI4NSw2ICsxMjk3LDcgQEAgc3RydWN0IG9i amZpbGVfdHlwZQogIAogICAgLyogVHlwZXMgdXNlZCBmb3Igc3ltYm9scyB3aXRoIG5vIGRlYnVn IGluZm9ybWF0aW9uLiAgKi8KICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfc3ltYm9sOwpA QCAtMTQ0LDc3ICsyMzgsMjYwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0 eXBlcy5oCiAgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19kYXRhX3N5bWJvbDsKICAgIHN0cnVjdCB0 eXBlICpub2RlYnVnX3Vua25vd25fc3ltYm9sOwogICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGxz X3N5bWJvbDsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZjYWxsLmMKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLWxpbnV4LXRkZXAuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvaW5mY2FsbC5jCTIwMTAtMDEtMDEgMDg6 MzE6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mY2Fs bC5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtMjg2LDYgKzI4Niwy NyBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3RpCi0gICBlbHNlCi0g ICAgIGVycm9yIChfKCJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZnVuY3Rpb24gdG8gYmUgY2FsbGVk LiIpKTsKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2hwcGEtbGludXgtdGRlcC5j CTIwMTAtMDEtMDEgMDg6MzE6MzMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEw MDEyMS9nZGIvaHBwYS1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgInJlZ3NldC5oIgorICNpbmNsdWRl ICJyZWdjYWNoZS5oIgorICNpbmNsdWRlICJocHBhLXRkZXAuaCIKKysjaW5jbHVkZSAibGludXgt dGRlcC5oIgogIAotKyAgaWYgKFRZUEVfR05VX0lGVU5DIChmdHlwZSkpCi0rICAgIHsKLSsgICAg ICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3B0cjsKKyAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgor IAorQEAgLTUxMyw3ICs1MTQsMjEgQEAgaHBwYV9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rp b24gKHN0cgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorLQwKICsKLSsgICAgICBmdW5hZGRyICs9 IGdkYmFyY2hfZGVwcmVjYXRlZF9mdW5jdGlvbl9zdGFydF9vZmZzZXQgKGdkYmFyY2gpOworK3N0 YXRpYyBDT1JFX0FERFIKKytocHBhMzJfbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCQkJIENPUkVfQUREUiBhZGRyLAorKwkJCQkJ IHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGhwcGEzMl9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwgdGFyZyk7CisrICBDT1JF X0FERFIgcmVzb2x2ZWQ7CiArCi0rICAgICAgLyogQ2FzdCBGVU5BRERSIHRvIGRyb3AgVFlQRV9H TlVfSUZVTkMgYW5kIGJlaW5nIGFibGUgdG8gY2FsbCBnbnUtaWZ1bmMKLSsJIEZVTkFERFIgd2l0 aG91dCBjYXVzaW5nIGRlYWRsb2NrIGJ5IHRoaXMgYmxvY2sgb2YgY29kZS4gICovCisrICByZXNv bHZlZCA9IGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKGdkYmFyY2gsIGFkZHIsIHBj KTsKKysgIGlmIChyZXNvbHZlZCAhPSBwYykKKysgICAgcGMgPSBocHBhMzJfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLCB0YXJnKTsKICsKLSsgICAgICBmdW5j X2Z1bmNfcHRyID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1bmNfcHRy OwotKyAgICAgIGZ1bmN0aW9uID0gdmFsdWVfZnJvbV9wb2ludGVyIChmdW5jX2Z1bmNfcHRyLCBm dW5hZGRyKTsKKysgIHJldHVybiBwYzsKKyt9CisgCisgLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMu ICAqLworIGV4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUgX2luaXRpYWxpemVfaHBwYV9saW51 eF90ZGVwOworQEAgLTU1NSw2ICs1NzAsMTAgQEAgaHBwYV9saW51eF9pbml0X2FiaSAoc3RydWN0 IGdkYmFyY2hfaW5mbworICAgLyogRW5hYmxlIFRMUyBzdXBwb3J0LiAgKi8KKyAgIHNldF9nZGJh cmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRyZXNzIChnZGJhcmNoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2cjRfZmV0Y2hfb2JqZmlsZV9saW5r X21hcCk7CiArCi0rICAgICAgLyogZ251LWlmdW5jcyBoYXZlIG5vIGFyZ3VtZW50cy4gICovCi0r ICAgICAgZnVuY3Rpb24gPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBOVUxM KTsKKysgIGlmICh0ZGVwLT5ieXRlc19wZXJfYWRkcmVzcyA9PSA0KQorKyAgICBzZXRfZ2RiYXJj aF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJICAgICAgIGhwcGEz Ml9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7CisgfQorIAorIHZvaWQKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLXRkZXAuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxMC0wMS0xOSAxMDozOTox Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLXRkZXAu YwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTEyNDcsNyArMTI0Nyw3 IEBAIGhwcGE2NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGIKKyB9CisgDAorIAor LXN0YXRpYyBDT1JFX0FERFIKKytDT1JFX0FERFIKKyBocHBhMzJfY29udmVydF9mcm9tX2Z1bmNf cHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkciwKKyAJCQkJ ICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisgeworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL2hwcGEtdGRlcC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5v cmlnL2dkYi9ocHBhLXRkZXAuaAkyMDEwLTAxLTAxIDA4OjMxOjMzLjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2hwcGEtdGRlcC5oCTIwMTAtMDEtMjEgMTU6MTU6 NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMjQ2LDQgKzI0Niw4IEBAIGV4dGVybiBpbnQgaHBwYV9p bl9zb2xpYl9jYWxsX3RyYW1wb2xpbmUKKyAJCQkJCSAgQ09SRV9BRERSIHBjLCBjaGFyICpuYW1l KTsKKyBleHRlcm4gQ09SRV9BRERSIGhwcGFfc2tpcF90cmFtcG9saW5lX2NvZGUgKHN0cnVjdCBm cmFtZV9pbmZvICosIENPUkVfQUREUiBwYyk7CisgCisrZXh0ZXJuIENPUkVfQUREUiBocHBhMzJf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJ CQkJCSAgICBDT1JFX0FERFIgYWRkciwKKysJCQkJCQkgICAgc3RydWN0IHRhcmdldF9vcHMgKnRh cmcpOwogKwotKyAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChmdW5jdGlvbik7Cisg I2VuZGlmICAvKiBocHBhLXRkZXAuaCAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L2kzODYtbGludXgtdGRlcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5v cmlnL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTA0IDE1OjU3OjQzLjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2kzODYtbGludXgtdGRlcC5jCTIwMTAt MDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtNzk4LDYgKzc5OCw5IEBAIGkzODZf bGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaTM4Nl9saW51eF9nZXRfc3lzY2FsbF9udW1iZXIpOworIAorICAgc2V0 X2dkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZSAoZ2RiYXJjaCwgbGludXhfZ2V0X3NpZ2luZm9fdHlw ZSk7CiArCi0rICAgICAgLyogVGhpcyBpcyBgaW50JyBhcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhl IGZpbmFsIGZ1bmN0aW9uLiAgKi8KLSsgICAgICB2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQ RSAodmFsdWVfdHlwZSk7Ci0rICAgIH0KKysgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkcik7CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3Np bmctcHJvdG90eXBlcy4gICovCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvaWE2NC1s aW51eC10ZGVwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2Ri L2lhNjQtbGludXgtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MzYuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvaWE2NC1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAx NToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNiw2ICsyNiw3IEBACisgI2luY2x1ZGUgIm9z YWJpLmgiCisgI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAic3ltdGFiLmgiCisr I2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAvKiBUaGUgc2lndHJhbXAgY29kZSBpcyBpbiBh IG5vbi1yZWFkYWJsZSAoZXhlY3V0YWJsZS1vbmx5KSByZWdpb24KKyAgICBvZiBtZW1vcnkgY2Fs bGVkIHRoZSBgYGdhdGUgcGFnZScnLiAgVGhlIGFkZHJlc3NlcyBpbiBxdWVzdGlvbgorQEAgLTEz OSw2ICsxNDAsOSBAQCBpYTY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCisg ICAvKiBFbmFibGUgVExTIHN1cHBvcnQuICAqLworICAgc2V0X2dkYmFyY2hfZmV0Y2hfdGxzX2xv YWRfbW9kdWxlX2FkZHJlc3MgKGdkYmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3ZyNF9mZXRjaF9vYmpmaWxlX2xpbmtfbWFwKTsKICsKLSAgIGlm IChyZXR2YWxfdHlwZSAhPSBOVUxMKQotICAgICAqcmV0dmFsX3R5cGUgPSB2YWx1ZV90eXBlOwot ICAgcmV0dXJuIGZ1bmFkZHIgKyBnZGJhcmNoX2RlcHJlY2F0ZWRfZnVuY3Rpb25fc3RhcnRfb2Zm c2V0IChnZGJhcmNoKTsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW5lc3BlYy5j CisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJ CQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAvKiBQcm92 aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLworSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2luZmNhbGwuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGluZXNwZWMuYwkyMDEwLTAxLTEyIDA2OjQ4OjU2 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbmVzcGVjLmMJ MjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00MCw2ICs0MCw3IEBACi0g I2luY2x1ZGUgImludGVycHMuaCIKLSAjaW5jbHVkZSAibWkvbWktY21kcy5oIgorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaW5mY2FsbC5jCTIwMTAtMDEtMDEgMDg6MzE6MzYuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvaW5mY2FsbC5jCTIwMTAt MDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMjUyLDkgKzI1MiwxNyBAQCBmaW5k X2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3RpCisgICAgICAgaWYgKFRZUEVfQ09E RSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisgCSAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0g VFlQRV9DT0RFX01FVEhPRCkKKyAJeworLQkgIGZ1bmFkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBmdW5hZGRyLAorLQkJCQkJCQkmY3VycmVudF90YXJn ZXQpOworLQkgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7CisrCSAgQ09S RV9BRERSIGZ1bmFkZHIyOworKworKwkgIGZ1bmFkZHIyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21f ZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKKysJCQkJCQkJICZjdXJyZW50X3Rhcmdl dCk7CisrCisrCSAgLyogSWYgVFlQRV9HTlVfSUZVTkMgaXMgY3VycmVudGx5IG5vdCByZXNvbHZh YmxlIGtlZXAgaXRzIHR5cGUuICAqLworKwkgIGlmIChmdW5hZGRyMiAhPSBmdW5hZGRyIHx8ICFU WVBFX0dOVV9JRlVOQyAoZnR5cGUpKQorKwkgICAgeworKwkgICAgICBmdW5hZGRyID0gZnVuYWRk cjI7CisrCSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7CisrCSAg ICB9CisgCX0KKyAgICAgfQorICAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfSU5UKQorSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xpbnV4LXRkZXAuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDEtMTQgMjI6 MjA6MTEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbGludXgt dGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMjMsNiArMjMs OCBAQAorICNpbmNsdWRlICJhdXh2LmgiCiAgI2luY2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRl ICJlbGYvY29tbW9uLmgiCisrI2luY2x1ZGUgInZhbHVlLmgiCiArI2luY2x1ZGUgImluZmNhbGwu aCIKICAKLSAvKiBXZSBzaGFyZSB0aGlzIG9uZSB3aXRoIHN5bXRhYi5jLCBidXQgaXQgaXMgbm90 IGV4cG9ydGVkIHdpZGVseS4gKi8KKyAvKiBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIGZvciBh cmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3QKKyAgICBleHRlbmQvb3ZlcnJpZGUgdGhlIHN0YW5kYXJk IHNpZ2luZm8gc3RydWN0dXJlLiAgKi8KK0BAIC0xNTIsMyArMTU0LDQzIEBAIGxpbnV4X2hhc19z aGFyZWRfYWRkcmVzc19zcGFjZSAodm9pZCkKICAKLUBAIC0xODY3LDYgKzE4NjgsMjIgQEAgbWlu c3ltX2ZvdW5kIChpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3QgbQotICAgcGMgPSBnZGJhcmNoX2Nv bnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuc2Fsc1swXS5wYywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKKyAgIHJldHVy biB0YXJnZXRfaXNfdWNsaW51eDsKKyB9CiArCi0rICAvKiBDYWxsIGdudS1pZnVuYyB0byByZXNv bHZlIGJyZWFrcG9pbnQgYXQgaXRzIHJldHVybmVkIGZ1bmN0aW9uLiAgKi8KLSsgIGlmIChNU1lN Qk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYykKLSsgICAgewotKyAgICAg IHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfcHRyOwotKyAgICAgIHN0cnVjdCB2YWx1ZSAqZnVuY3Rp b247CisrLyogQ2FsbCBnbnUtaWZ1bmMgdG8gcmVzb2x2ZSBicmVha3BvaW50IGF0IGl0cyByZXR1 cm5lZCBmdW5jdGlvbi4gICovCiArCi0rICAgICAgZnVuY19mdW5jX3B0ciA9IGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jX3B0cjsKLSsgICAgICBmdW5jdGlvbiA9IHZh bHVlX2Zyb21fcG9pbnRlciAoZnVuY19mdW5jX3B0ciwgcGMpOworK0NPUkVfQUREUgorK2xpbnV4 X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JF X0FERFIgZnVuY19wdHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9B RERSIHBjKQorK3sKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3RydWN0IG1pbmltYWxfc3ltYm9s ICptc3ltYm9sOworKyAgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgKmFkZHJlc3M7CiArCi0rICAg ICAgLyogZ251LWlmdW5jcyBoYXZlIG5vIGFyZ3VtZW50cy4gICovCi0rICAgICAgZnVuY3Rpb24g PSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBOVUxMKTsKKysgIGlmICghdGFy Z2V0X2hhc19leGVjdXRpb24pCisrICAgIHJldHVybiBwYzsKICsKLSsgICAgICBwYyA9IHZhbHVl X2FzX2FkZHJlc3MgKGZ1bmN0aW9uKTsKLSsgICAgfQorKyAgbXN5bWJvbCA9IGxvb2t1cF9taW5p bWFsX3N5bWJvbF9ieV9wYyAoZnVuY19wdHIpOworKyAgaWYgKG1zeW1ib2wgPT0gTlVMTCkKKysg ICAgcmV0dXJuIHBjOworKyAgaWYgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgIT0gbXN0X3RleHRf Z251X2lmdW5jKQorKyAgICByZXR1cm4gcGM7CisrCisrICAvKiBOb3QgYXQgdGhlIGdudS1pZnVu YyBlbnRyeSBwb2ludD8gICovCisrICBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wp ICE9IGZ1bmNfcHRyKQorKyAgICByZXR1cm4gcGM7CisrCisrICBmdW5jdGlvbiA9IGFsbG9jYXRl X3ZhbHVlIChmdW5jX2Z1bmNfdHlwZSk7CisrICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24s IHBjKTsKKysKKysgIC8qIGdudS1pZnVuY3MgaGF2ZSBubyBhcmd1bWVudHMuICBGVU5DVElPTiBp cyB0aGUgY29kZSBpbnN0cnVjdGlvbiBhZGRyZXNzCisrICAgICB3aGlsZSBBRERSRVNTIGlzIGEg ZnVuY3Rpb24gZGVzY3JpcHRvci4gICovCisrICBhZGRyZXNzID0gY2FsbF9mdW5jdGlvbl9ieV9o YW5kIChmdW5jdGlvbiwgMCwgTlVMTCk7CisrCisrICByZXR1cm4gdmFsdWVfYXNfYWRkcmVzcyAo YWRkcmVzcyk7CisrfQorKworK0NPUkVfQUREUgorK2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIsCisrCQkJCSAg c3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisreworKyAgcmV0dXJuIGxpbnV4X2NvbnZlcnRfZnJv bV9mdW5jX2FuZF9wdHIgKGdkYmFyY2gsIGFkZHIsIGFkZHIpOworK30KK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9saW51eC10ZGVwLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUw LjIwMTAwMTIxLm9yaWcvZ2RiL2xpbnV4LXRkZXAuaAkyMDEwLTAxLTAxIDA4OjMxOjM3LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xpbnV4LXRkZXAuaAkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTIyLDQgKzIyLDExIEBACisgCisg c3RydWN0IHR5cGUgKmxpbnV4X2dldF9zaWdpbmZvX3R5cGUgKHN0cnVjdCBnZGJhcmNoICopOwor IAorK0NPUkVfQUREUiBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRyIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKKysJCQkJCSAgIENPUkVfQUREUiBmdW5jX3B0ciwgQ09SRV9BRERSIHBj KTsKKysKKytDT1JFX0FERFIgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCQkJICAgIENPUkVfQUREUiBhZGRyLAorKwkJCQkJICAg IHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKKysKKyAjZW5kaWYgLyogbGludXgtdGRlcC5oICov CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbTMyci1saW51eC10ZGVwLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL20zMnItbGludXgtdGRlcC5j CTIwMTAtMDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEw MDEyMS9nZGIvbTMyci1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyAKKyAj aW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgorKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCisgI2luY2x1 ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAic3ltdGFiLmgiCisgCitAQCAtNDIyLDYgKzQy Myw5IEBAIG0zMnJfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8KKyAgIC8qIEVu YWJsZSBUTFMgc3VwcG9ydC4gICovCisgICBzZXRfZ2RiYXJjaF9mZXRjaF90bHNfbG9hZF9tb2R1 bGVfYWRkcmVzcyAoZ2RiYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdnI0X2ZldGNoX29iamZpbGVfbGlua19tYXApOwogKwotICAgaWYgKHBjICE9 IHZhbHVlcy5zYWxzWzBdLnBjKQotICAgICB2YWx1ZXMuc2Fsc1swXSA9IGZpbmRfcGNfc2VjdF9s aW5lIChwYywgTlVMTCwgMCk7CisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp OworIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9taW5zeW1zLmMKKyAvKiBQ cm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9taW5zeW1zLmMJMjAx MC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9taW5zeW1zLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5jCTIwMTAt MDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9n ZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKKyAjaW5j bHVkZSAiZnJhbWUtdW53aW5kLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCisrI2luY2x1 ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAKKyBzdGF0aWMgaW50CitAQCAtMTMzLDYgKzEzNCw5IEBA IG1pY3JvYmxhemVfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmMKKyAgIC8qIFRyYW1wb2xp bmVzLiAgKi8KKyAgIHRyYW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gsCisgCQkJ CSZtaWNyb2JsYXplX2xpbnV4X3NpZ2hhbmRsZXJfdHJhbXBfZnJhbWUpOworKworKyAgc2V0X2dk YmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJCQkgIGxpbnV4 X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgdm9pZAorSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL21pbnN5bXMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIvbWluc3ltcy5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbWluc3ltcy5jCTIwMTAtMDEtMjEg MTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCiBAQCAtMzMxLDggKzMzMSw5IEBAIGxvb2t1cF9taW5p bWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICoKICAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9s LT5oYXNoX25leHQpCiAgCSAgICB7CkBAIC0yNjIsMTAgKzUzOSw5MyBAQCBJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvbWluc3ltcy5jCiAgCSAgICAmJiBzdHJjbXAgKFNZTUJPTF9MSU5L QUdFX05BTUUgKG1zeW1ib2wpLAogIAkJICAgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHRzeW1i b2wpKSA9PSAwKQogIAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7Ci1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcGFyc2UuYworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL21pcHMtbGludXgtdGRlcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41 MC4yMDEwMDEyMS5vcmlnL2dkYi9taXBzLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjM3 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pcHMtbGludXgt dGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMzgsNiArMzgs NyBAQAorICNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisgI2luY2x1ZGUgIm1pcHMt bGludXgtdGRlcC5oIgorICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCisrI2luY2x1ZGUgImxpbnV4 LXRkZXAuaCIKKyAKKyBzdGF0aWMgc3RydWN0IHRhcmdldF9zb19vcHMgbWlwc19zdnI0X3NvX29w czsKKyAKK0BAIC0xMjI1LDYgKzEyMjYsOSBAQCBtaXBzX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvCisgCXRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0dXJlLCB0ZGVzY19k YXRhLCBNSVBTX1JFU1RBUlRfUkVHTlVNLAorIAkJCQkgInJlc3RhcnQiKTsKKyAgICAgfQorKwor KyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJ CQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgLyogUHJvdmlk ZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbW4xMDMwMC1saW51eC10ZGVwLmMJ MjAxMC0wMS0wMSAwODozMTozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTIxL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAw MCArMDEwMAorQEAgLTMyLDYgKzMyLDcgQEAKKyAjaW5jbHVkZSAiZnJhbWUuaCIKKyAjaW5jbHVk ZSAidHJhZC1mcmFtZS5oIgorICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgorKyNpbmNsdWRlICJs aW51eC10ZGVwLmgiCisgCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorQEAgLTcxOCw2ICs3MTks OSBAQCBhbTMzX2xpbnV4X2luaXRfb3NhYmkgKHN0cnVjdCBnZGJhcmNoX2luCisgCisgICB0cmFt cF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51eF9zaWdmcmFtZSk7 CisgICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51eF9y dF9zaWdmcmFtZSk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRk ciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwor IH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3Rv dHlwZXMuICAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL29iamMtbGFuZy5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9vYmpjLWxhbmcuYwky MDEwLTAxLTE0IDA5OjAzOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL29iamMtbGFuZy5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitA QCAtMTE3OCwxNiArMTE3OCw2IEBAIGZpbmRfbWV0aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFi LCBjaGEKKyAKKyAJICBRVUlUOworIAorLQkgIC8qIFRoZSBtaW5pbWFsIHN5bWJvbCBtaWdodCBw b2ludCB0byBhIGZ1bmN0aW9uIGRlc2NyaXB0b3I7CistCSAgICAgcmVzb2x2ZSBpdCB0byB0aGUg YWN0dWFsIGNvZGUgYWRkcmVzcyBpbnN0ZWFkLiAgKi8KKy0JICBwYyA9IGdkYmFyY2hfY29udmVy dF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHBjLAorLQkJCQkJCSAgICZjdXJyZW50X3Rh cmdldCk7CistCistCSAgaWYgKHN5bXRhYikKKy0JICAgIGlmIChwYyA8IEJMT0NLX1NUQVJUIChi bG9jaykgfHwgcGMgPj0gQkxPQ0tfRU5EIChibG9jaykpCistCSAgICAgIC8qIE5vdCBpbiB0aGUg c3BlY2lmaWVkIHN5bXRhYi4gICovCistCSAgICAgIGNvbnRpbnVlOworLQorIAkgIHN5bW5hbWUg PSBTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKTsKKyAJICBpZiAoc3ltbmFtZSA9PSBOVUxM KQorIAkgICAgY29udGludWU7CitAQCAtMTIyMyw2ICsxMjEzLDE3IEBAIGZpbmRfbWV0aG9kcyAo c3RydWN0IHN5bXRhYiAqc3ltdGFiLCBjaGEKKyAJICAgICAgKChuc2VsZWN0b3IgPT0gTlVMTCkg fHwgKHN0cmNtcCAoc2VsZWN0b3IsIG5zZWxlY3RvcikgIT0gMCkpKQorIAkgICAgY29udGludWU7 CisgCisrCSAgLyogVGhlIG1pbmltYWwgc3ltYm9sIG1pZ2h0IHBvaW50IHRvIGEgZnVuY3Rpb24g ZGVzY3JpcHRvcjsKKysJICAgICByZXNvbHZlIGl0IHRvIHRoZSBhY3R1YWwgY29kZSBhZGRyZXNz IGluc3RlYWQuICBEZWxheSB0aGUgY2FsbCBhcworKwkgICAgIGl0cyByZXNvbHV0aW9uIG1heSBi ZSBleHBlbnNpdmUuICAqLworKwkgIHBjID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwgcGMsCisrCQkJCQkJICAgJmN1cnJlbnRfdGFyZ2V0KTsKKysKKysJICBp ZiAoc3ltdGFiKQorKwkgICAgaWYgKHBjIDwgQkxPQ0tfU1RBUlQgKGJsb2NrKSB8fCBwYyA+PSBC TE9DS19FTkQgKGJsb2NrKSkKKysJICAgICAgLyogTm90IGluIHRoZSBzcGVjaWZpZWQgc3ltdGFi LiAgKi8KKysJICAgICAgY29udGludWU7CisrCisgCSAgc3ltID0gZmluZF9wY19mdW5jdGlvbiAo cGMpOworIAkgIGlmIChzeW0gIT0gTlVMTCkKKyAJICAgIHsKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTIxL2dkYi9wYXJzZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcGFyc2UuYwkyMDEwLTAxLTE1IDEyOjE2OjQ5LjAwMDAw MDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvcGFyc2UuYwkyMDEw LTAxLTIxIDE1OjEzOjI2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL3BhcnNlLmMJMjAxMC0wMS0yMSAxNToxNjoxNS4wMDAwMDAwMDAgKzAxMDAKIEBAIC01MTYs NiArNTE2LDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wKICAJ d3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3RleHRf c3ltYm9sKTsKICAgICAgICBicmVhazsKQEAgLTI3OCwxMCArNjM4LDY2IEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9wYXJzZS5jCiAgICAgIGNhc2UgbXN0X2RhdGE6CiAgICAgIGNh c2UgbXN0X2ZpbGVfZGF0YToKICAgICAgY2FzZSBtc3RfYnNzOgotSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L3BwYy1saW51eC10ZGVwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9y aWcvZ2RiL3BwYy1saW51eC10ZGVwLmMJMjAxMC0wMS0wNCAxNTo1Nzo0NC4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9wcGMtbGludXgtdGRlcC5jCTIwMTAtMDEt MjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRl ICJhcmNoLXV0aWxzLmgiCisgI2luY2x1ZGUgInNwdS10ZGVwLmgiCisgI2luY2x1ZGUgInhtbC1z eXNjYWxsLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAiZmVhdHVy ZXMvcnM2MDAwL3Bvd2VycGMtMzJsLmMiCisgI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9wb3dl cnBjLWFsdGl2ZWMzMmwuYyIKK0BAIC02NzIsOCArNjczLDE5IEBAIHBwYzY0X2xpbnV4X2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyICgKKyAgICAgICByZXMgPSBiZmRfZ2V0X3NlY3Rpb25fY29u dGVudHMgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0aW9uLAorIAkJCQkgICAgICAmYnVmLCBhZGRy IC0gcy0+YWRkciwgOCk7CisgICAgICAgaWYgKHJlcyAhPSAwKQorLQlyZXR1cm4gZXh0cmFjdF91 bnNpZ25lZF9pbnRlZ2VyIChidWYsIDgsIGJ5dGVfb3JkZXIpCistCQktIGJmZF9zZWN0aW9uX3Zt YSAocy0+YmZkLCBzLT50aGVfYmZkX3NlY3Rpb24pICsgcy0+YWRkcjsKKysJeworKwkgIENPUkVf QUREUiBwYywgcmVzb2x2ZWQ7CisrCSAgCisrCSAgcGMgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVn ZXIgKGJ1ZiwgOCwgYnl0ZV9vcmRlcikKKysJICAgICAgIC0gYmZkX3NlY3Rpb25fdm1hIChzLT5i ZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikgKyBzLT5hZGRyOworKworKwkgIHJlc29sdmVkID0gbGlu dXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRkciwgcGMpOworKwkgIGlm IChyZXNvbHZlZCAhPSBwYykKKysJICAgIHBjID0gcHBjNjRfbGludXhfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLAorKwkJCQkJCQkgdGFyZyk7CisrCisrCSAg cmV0dXJuIHBjOworKwl9CisgICAgfQorIAorICAgcmV0dXJuIGFkZHI7CitJbmRleDogZ2RiLTcu MC41MC4yMDEwMDEyMS9nZGIvc2gtbGludXgtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMC0wMS0xNSAxMjoxNjo0MS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zb2xpYi1zdnI0LmMJ MjAxMC0wMS0xNSAxMjoxNzo0MC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTIxLm9yaWcvZ2RiL3NoLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjQxLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3NoLWxpbnV4LXRkZXAuYwkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTI1LDYgKzI1LDcgQEAKKyAKKyAj aW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgorICNpbmNsdWRlICJzaC10ZGVwLmgiCisrI2luY2x1ZGUg ImxpbnV4LXRkZXAuaCIKKyAKKyAjZGVmaW5lIFJFR1N4MTYoYmFzZSkgXAorICAgeyhiYXNlKSwg ICAgICAwfSwgXAorQEAgLTg5LDYgKzkwLDkgQEAgc2hfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBn ZGJhcmNoX2luZm8gaQorICAgICAgIHRkZXAtPmNvcmVfZ3JlZ21hcCA9IChzdHJ1Y3Qgc2hfY29y ZWZpbGVfcmVnbWFwICopZ3JlZ3NfdGFibGU7CisgICAgICAgdGRlcC0+Y29yZV9mcHJlZ21hcCA9 IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZnByZWdzX3RhYmxlOworICAgICB9CisrCisr ICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJ CSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAvKiBQcm92aWRl IGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3NvbGliLXN2cjQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDEtMjEgMTU6MTU6 MjIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvc29saWItc3Zy NC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCiBAQCAtMTI1Nyw3ICsxMjU3 LDggQEAgc3ZyNF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcAogIAkgICAmJiBw YyA8IGluZm8tPmludGVycF90ZXh0X3NlY3RfaGlnaCkKICAJICB8fCAocGMgPj0gaW5mby0+aW50 ZXJwX3BsdF9zZWN0X2xvdwpAQCAtMjkyLDEwICs3MDgsNTQgQEAgSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYwogIH0KICAKICAvKiBHaXZlbiBhbiBleGVjdXRhYmxl J3MgQUJGRCBhbmQgdGFyZ2V0LCBjb21wdXRlIHRoZSBlbnRyeS1wb2ludAotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bW1pc2MuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL3NwYXJjLWxpbnV4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvc3ltbWlzYy5jCTIwMTAtMDEtMTUgMDM6MjI6MzIuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltbWlzYy5jCTIwMTAtMDEtMTUgMTI6MTY6 NDkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9zcGFy Yy1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zcGFyYy1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNTox NTo0MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgInN5bXRh Yi5oIgorICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgi CisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAic3BhcmMtdGRlcC5oIgor IAorQEAgLTI3OSw2ICsyODAsOSBAQCBzcGFyYzMyX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2Ri YXJjaF9pCisgICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7CisgCisgICBzZXRf Z2RiYXJjaF93cml0ZV9wYyAoZ2RiYXJjaCwgc3BhcmNfbGludXhfd3JpdGVfcGMpOworKworKyAg c2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJCQkg IGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgLyogUHJvdmlkZSBh IHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc3BhcmM2NC1saW51eC10ZGVwLmMJMjAx MC0wMS0wMSAwODozMTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIx L2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCAr MDEwMAorQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSAic3ltdGFiLmgiCisgI2luY2x1ZGUg InRyYWQtZnJhbWUuaCIKKyAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKKysjaW5jbHVkZSAibGlu dXgtdGRlcC5oIgorIAorICNpbmNsdWRlICJzcGFyYzY0LXRkZXAuaCIKKyAKK0BAIC0yNDQsNiAr MjQ1LDkgQEAgc3BhcmM2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaQorICAgdGRl cC0+c3RlcF90cmFwID0gc3BhcmM2NF9saW51eF9zdGVwX3RyYXA7CisgCisgICBzZXRfZ2RiYXJj aF93cml0ZV9wYyAoZ2RiYXJjaCwgc3BhcmM2NF9saW51eF93cml0ZV9wYyk7CisrCisrICBzZXRf Z2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGlu dXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAMCisgCitJbmRleDogZ2RiLTcu MC41MC4yMDEwMDEyMS9nZGIvc3ltbWlzYy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4y MDEwMDEyMS5vcmlnL2dkYi9zeW1taXNjLmMJMjAxMC0wMS0yMSAxNToxMzoyNy4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW1taXNjLmMJMjAxMC0wMS0yMSAx NToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yOTQsNiArMjk0LDkgQEAgZHVtcF9tc3ltYm9s cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAogIAljYXNlIG1zdF90ZXh0OgogIAkgIG1zX3R5 cGUgPSAnVCc7CkBAIC0zMDYsMTEgKzc2NiwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvc3ltbWlzYy5jCiAgCWNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6CiAgCSAgbXNfdHlw ZSA9ICdTJzsKICAJICBicmVhazsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW10 YWIuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5bXRhYi5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zeW10YWIuYwkyMDEwLTAxLTE1IDAz OjIyOjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRh Yi5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtMzI1Nyw3ICszMjU3 LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudQorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc3ltdGFiLmMJMjAxMC0wMS0yMSAxNToxMzoyNy4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW10YWIuYwkyMDEwLTAx LTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTMyNDQsNyArMzI0NCw3IEBAIHNlYXJj aF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKICAgIHttc3RfZmlsZV9kYXRhLCBt c3Rfc29saWJfdHJhbXBvbGluZSwgbXN0X2FicywgbXN0X3Vua25vd259OwogICAgc3RhdGljIGVu dW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczRbXQogICAgPQpAQCAtMzE5LDEwICs3NzksMTAg QEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRhYi5jCiAgICBlbnVtIG1pbmlt YWxfc3ltYm9sX3R5cGUgb3VydHlwZTsKICAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0 eXBlMjsKICAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsKLUluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9zeW10YWIuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL3N5bXRhYi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9zeW10YWIuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAw ICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9zeW10YWIuaAkyMDEwLTAx LTIxIDE1OjExOjA5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L3N5bXRhYi5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCiBAQCAtMjgwLDYg KzI4MCw4IEBAIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZQogIHsKICAgIG1zdF91bmtub3duID0g MCwJCS8qIFVua25vd24gdHlwZSwgdGhlIGRlZmF1bHQgKi8KQEAgLTMzMiw3ICs3OTIsNyBAQCBJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgKICAgIG1zdF9kYXRhLAkJCS8q IEdlbmVyYWxseSBpbml0aWFsaXplZCBkYXRhICovCiAgICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxs eSB1bmluaXRpYWxpemVkIGRhdGEgKi8KICAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29s dXRlIChub25yZWxvY2F0YWJsZSkgKi8KLUBAIC0xMTYzLDYgKzExNjUsOCBAQCBleHRlcm4gc3Ry dWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluCitAQCAtMTE1Nyw2ICsxMTU5LDggQEAgZXh0 ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbgogIAogIGV4dGVybiBzdHJ1Y3Qg bWluaW1hbF9zeW1ib2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoQ09SRV9BRERSKTsK ICAKQEAgLTM0MSwxMSArODAxLDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9z eW10YWIuaAogIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wKICAgICpsb29rdXBfbWluaW1h bF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAoQ09SRV9BRERSLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKik7 CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2du dS1pZnVuYy1saWIuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCTIwMTAtMDEtMTUgMTI6MTY6NDku MDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDQ1IEBACisrKysgZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwkyMDEwLTAxLTIxIDE1OjE1 OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw1NCBAQAogKy8qIFRoaXMgdGVzdGNhc2Ug aXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCiArICAgQ29weXJpZ2h0IDIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0zNjgsNiArODI4LDEyIEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxp Yi5jCiArdHlwZWRlZiBpbnQgKCpmaW5hbF90KSAoaW50IGFyZyk7CiArCiArc3RhdGljIGludAor K2luaXRfc3R1YiAoaW50IGFyZykKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGlu dAogK2ZpbmFsIChpbnQgYXJnKQogK3sKICsgIHJldHVybiBhcmcgKyAxOwpAQCAtMzc5LDYgKzg0 NSw4IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z251LWlmdW5jLWxpYi5jCiArZ251X2lmdW5jX3ByZSAodm9pZCkKICt7CiArICBhc3NlcnQgKCFn bnVfaWZ1bmNfaW5pdGlhbGl6ZWQpOworKworKyAgZ251X2lmdW5jX2luaXRpYWxpemVkID0gMTsK ICt9CiArCiArZmluYWxfdCBnbnVfaWZ1bmNYICh2b2lkKSBhc20gKCJnbnVfaWZ1bmMiKTsKQEAg LTM4NywxNCArODU1LDE1IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCiArZmluYWxfdAogK2dudV9pZnVuY1ggKHZvaWQp CiArewotKyAgZ251X2lmdW5jX2luaXRpYWxpemVkID0gMTsKLSsKLSsgIHJldHVybiBmaW5hbDsK KysgIGlmICghZ251X2lmdW5jX2luaXRpYWxpemVkKQorKyAgICByZXR1cm4gaW5pdF9zdHViOwor KyAgZWxzZQorKyAgICByZXR1cm4gZmluYWw7CiArfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwkyMDEw LTAxLTE1IDEyOjE2OjQ5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAw MDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwzNiBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC00MzIsMTEgKzkwMSwxMSBAQCBJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5j CiArCiArICByZXR1cm4gMDsJLyogYnJlYWstYXQtZXhpdCAqLwogK30KLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAorSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2du dS1pZnVuYy5leHAJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAg KzEsNzIgQEAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z251LWlmdW5jLmV4cAkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTAs MCArMSwxMTUgQEAKICsjIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC00NjQsNyArOTMzLDE0IEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAog K3NldCBsaWJzcmMgJHtsaWJmaWxlfS5jCiArc2V0IGxpYl9zbyAke29iamRpcn0vJHtzdWJkaXJ9 LyR7bGliZmlsZX0uc28KICsKKytzZXQgbGliX25vZGVidWdfc29fYmFzZSAke2xpYmZpbGV9LW5v ZGVidWcuc28KKytzZXQgbGliX25vZGVidWdfc28gJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2xpYl9u b2RlYnVnX3NvX2Jhc2V9CisrCisrIyB7ZGVidWd9IHByb3ZpZGVzIERXQVJGIHN5bWJvbCBnbnVf aWZ1bmNYIGNvbmZ1c2luZyB0aGUgRUxGIHN5bWJvbAorKyMgZ251X2lmdW5jIGR1cmluZyBhZGRy ZXNzLT5zeW1ib2wgcmVzb2x1dGlvbiBmb3IgcHJpbnRpbmcgdGhlIHN5bWJvbC4KKysjIFN0aWxs IHdlIG5lZWQgaXQgaGVyZSBmb3IgInN0ZXAicGluZyBpbnRvIHRoZSBmdW5jdGlvbi4KICtzZXQg bGliX29wdHMgW2xpc3QgZGVidWddCisrc2V0IGxpYl9ub2RlYnVnX29wdHMgW2xpc3RdCiArc2V0 IGV4ZWNfb3B0cyBbbGlzdCBkZWJ1ZyBzaGxpYj0kbGliX3NvXQogKwogK2lmIFtnZXRfY29tcGls ZXJfaW5mbyAke2JpbmZpbGV9XSB7CkBAIC00ODcsNyArOTYzLDggQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCiArICAgIHJl dHVybiAxOwogK30KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJl YWstYXQtbmV4dGNhbGwiXQorKyMgVGhlICJpZiIgY29uZGl0aW9uIGlzIGFydGlmaWNhbCB0byB0 ZXN0IHJlZ3Jlc3Npb24gb2YgYSBmb3JtYXQgcGF0Y2guCisrZ2RiX2JyZWFrcG9pbnQgIltnZGJf Z2V0X2xpbmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2FsbCJdIGlmIGkgJiYgZ251X2lmdW5jIChp KSAhPSA0MiIKICsKICtnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWst YXQtY2FsbCJdCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWF0LWNhbGwiICIu KmJyZWFrLWF0LWNhbGwuKiIKQEAgLTUwMiwxMCArOTc5LDY3IEBAIEluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAogKwogKyMgVGVz dCBHREIgd2lsbCBub3QgYnJlYWsgYmVmb3JlIHRoZSBmaW5hbCBjaG9zZW4gaW1wbGVtZW50YXRp b24uCiArCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWF0LW5leHRjYWxsIiAi LipicmVhay1hdC1uZXh0Y2FsbC4qIgorKyMgQWxzbyB0ZXN0IGEgZm9ybWF0IHBhdGNoIHJlZ3Jl c3Npb246CisrIyBDb250aW51aW5nLgorKyMgRXJyb3IgaW4gdGVzdGluZyBicmVha3BvaW50IGNv bmRpdGlvbjoKKysjIEF0dGVtcHQgdG8gdGFrZSBhZGRyZXNzIG9mIHZhbHVlIG5vdCBsb2NhdGVk IGluIG1lbW9yeS4KKysjIAorKyMgQnJlYWtwb2ludCAyLCBtYWluICgpIGF0IC4vZ2RiLmJhc2Uv Z251LWlmdW5jLmM6MzMKKysKKytnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLlxyXG5c clxuQnJlYWtwb2ludCAuKiAoYXR8aW4pIC4qYnJlYWstYXQtbmV4dGNhbGwuKiIgXAorKwkgImNv bnRpbnVlIHRvIGJyZWFrLWF0LW5leHRjYWxsIgogKwogK2dkYl9icmVha3BvaW50ICJnbnVfaWZ1 bmMiCiArCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5leHRjYWxsIGdudV9pZnVuYyIK ICsKLStnZGJfdGVzdCAiZnJhbWUiICIjMCArZmluYWwgXFwoLioiICJuZXh0Y2FsbCBnbnVfaWZ1 bmMgc2tpcHBlZCIKKytnZGJfdGVzdCAiZnJhbWUiICIjMCArKDB4XFswLTlhLWZcXSsgaW4gKyk/ ZmluYWwgXFwoLioiICJuZXh0Y2FsbCBnbnVfaWZ1bmMgc2tpcHBlZCIKKysKKysKKysjIENvbXBh cmUgdGhlIHR3byBkaWZmZXJlbnQgYWRkcmVzc2VzOgorKworK2dkYl90ZXN0ICJwIGdudV9pZnVu YyIgIiA9IHs8dGV4dCB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz59IDB4XFswLTlhLWZcXSsgPGZp bmFsPiIgInAgZ251X2lmdW5jIGV4ZWN1dGluZyIKKytnZGJfdGVzdCAiaW5mbyBzeW0gZ251X2lm dW5jIiAiZmluYWwgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9pZnVuYyBleGVjdXRpbmci CisrCisrc2V0IHRlc3QgImluZm8gYWRkciBnbnVfaWZ1bmMiCisrZ2RiX3Rlc3RfbXVsdGlwbGUg JHRlc3QgJHRlc3QgeworKyAgICAtcmUgIlN5bWJvbCBcImdudV9pZnVuY1wiIGlzIGF0ICgweFxb MC05YS1mXF0rKSBpbiAuKiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9Cisr fQorK2dkYl90ZXN0ICJpbmZvIHN5bSAkZXhwZWN0X291dCgxLHN0cmluZykiICJnbnVfaWZ1bmMg aW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIDxnbnVfaWZ1bmMtYWRkcmVzcz4iCisrCisrIyA8Kmdu dV9pZnVuYz4gd291bGQgYmUgYW4gaW5jb3JyZWN0IHJlc29sdXRpb24gZnJvbSBEV19BVF9NSVBT X2xpbmthZ2VfbmFtZS4KKysjIFdlIGRvIG5vdCB1c2Uge2RlYnVnfSBidWlsZCBvcHRpb24gZm9y IHRoaXMgcHVycG9zZS4KKysKKytpZiB7IFtnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtz dWJkaXJ9LyRsaWJzcmMgJGxpYl9ub2RlYnVnX3NvICRsaWJfbm9kZWJ1Z19vcHRzXSAhPSAiIn0g eworKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgZWl0aGVyICRsaWJzcmMuIgorKyAg ICByZXR1cm4gLTEKKyt9CisrCisrY2xlYW5fcmVzdGFydCAkbGliX25vZGVidWdfc29fYmFzZQor KworK2dkYl90ZXN0ICJwIGdudV9pZnVuYyIgIiA9IHs8dGV4dCBnbnUtaWZ1bmMgdmFyaWFibGUs IG5vIGRlYnVnIGluZm8+fSAweFxbMC05YS1mXF0rIDxnbnVfaWZ1bmM+IiAicCBnbnVfaWZ1bmMg bm90IGV4ZWN1dGluZyB3aXRob3V0IGRlYnVnIgorK2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1 bmMiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9pZnVuYyBub3QgZXhl Y3V0aW5nIHdpdGhvdXQgZGVidWciCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIveHRl bnNhLWxpbnV4LXRkZXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3Jp Zy9nZGIveHRlbnNhLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjQ2LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMJMjAx MC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMiw2ICsyMiw3IEBACisgCisg I2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAic3ltdGFiLmgiCisrI2luY2x1ZGUg ImxpbnV4LXRkZXAuaCIKKyAKKyAvKiBPUyBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiBvZiBnZGJh cmNoLiAgKi8KKyAKK0BAIC0zMCw2ICszMSw5IEBAIHh0ZW5zYV9saW51eF9pbml0X2FiaSAoc3Ry dWN0IGdkYmFyY2hfaW4KKyB7CisgICBzZXRfc29saWJfc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZz ZXRzCisgICAgIChnZGJhcmNoLCBzdnI0X2lscDMyX2ZldGNoX2xpbmtfbWFwX29mZnNldHMpOwor KworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisr CQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgLyogUHJv dmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KCmRp ZmYgLS1naXQgYS9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoIGIvZ2RiLWVtcHR5LW5hbWVzcGFj ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFhNzY1NC4uMDAwMDAwMAot LS0gYS9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICsw LDAgQEAKLSMjI2dkYi8KLSMjIzIwMDktMTItMjAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSMjIwotIyMjCUZpeCBjb21wYXRpYmlsaXR5IHdpdGggRysrLTQu MS4KLSMjIwkqIGR3YXJmMnJlYWQuYyAocGFydGlhbF9kaWVfcGFyZW50X3Njb3BlKTogTmV3IHZh cmlhYmxlIFBBUkVOVF9OQU1FLgotIyMjCUlnbm9yZSBwYXJlbnQgbmFtZXNwYWNlcyB3aXRoIG5h bWUgIjo6Ii4KLSMjIwkocGh5c25hbWVfcHJlZml4XzEpOiBJZ25vcmUgbmFtZXNwYWNlcyB3aXRo IG5hbWUgIjo6Ii4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMDktMTItMjAgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmR3YXJmMi9kdzItZW1wdHkt bmFtZXNwYWNlLmV4cCwgZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNlLlM6Ci0JTmV3Lgot Ci0jIyMtLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0jIyMrKysgYi9nZGIvZHdhcmYycmVhZC5jCi0j IyNAQCAtMjM1NSwxMSArMjM1NSwxOCBAQCBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHN0cnVj dCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksCi0jIyMgICAgICAgfHwgcGFyZW50LT50YWcgPT0gRFdf VEFHX2ludGVyZmFjZV90eXBlCi0jIyMgICAgICAgfHwgcGFyZW50LT50YWcgPT0gRFdfVEFHX3Vu aW9uX3R5cGUpCi0jIyMgICAgIHsKLSMjIysgICAgICBjaGFyICpwYXJlbnRfbmFtZSA9IHBhcmVu dC0+bmFtZTsKLSMjIysKLSMjIysgICAgICAvKiBHKysgNC4xIHByb2R1Y2VkIERXX1RBR19uYW1l c3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLwotIyMjKyAgICAgIGlmIChwYXJlbnQtPnRh ZyA9PSBEV19UQUdfbmFtZXNwYWNlICYmIHBhcmVudF9uYW1lICE9IE5VTEwKLSMjIysgICAgICAg ICAgJiYgc3RyY21wIChwYXJlbnRfbmFtZSwgIjo6IikgPT0gMCkKLSMjIysJcGFyZW50X25hbWUg PSBOVUxMOwotIyMjKwotIyMjICAgICAgIGlmIChncmFuZHBhcmVudF9zY29wZSA9PSBOVUxMKQot IyMjLQlwYXJlbnQtPnNjb3BlID0gcGFyZW50LT5uYW1lOwotIyMjKwlwYXJlbnQtPnNjb3BlID0g cGFyZW50X25hbWU7Ci0jIyMgICAgICAgZWxzZQotIyMjIAlwYXJlbnQtPnNjb3BlID0gdHlwZW5h bWVfY29uY2F0ICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLCBncmFuZHBhcmVudF9zY29wZSwKLSMj Iy0JCQkJCSBwYXJlbnQtPm5hbWUsIGN1KTsKLSMjIysJCQkJCSBwYXJlbnRfbmFtZSwgY3UpOwot IyMjICAgICB9Ci0jIyMgICBlbHNlIGlmIChwYXJlbnQtPnRhZyA9PSBEV19UQUdfZW51bWVyYXRp b25fdHlwZSkKLSMjIyAgICAgLyogRW51bWVyYXRvcnMgc2hvdWxkIG5vdCBnZXQgdGhlIG5hbWUg b2YgdGhlIGVudW1lcmF0aW9uIGFzIGEgcHJlZml4LiAgKi8KLSMjI0BAIC05MDA4LDYgKzkwMTUs OSBAQCBwaHlzbmFtZV9wcmVmaXhfMSAoc3RydWN0IHVpX2ZpbGUgKmJ1Ziwgc3RydWN0IGRpZV9p bmZvICpkaWUsCi0jIyMgCSAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKLSMjIyAJICBp ZiAobmFtZSA9PSBOVUxMKQotIyMjIAkgICAgbmFtZSA9ICIoYW5vbnltb3VzIG5hbWVzcGFjZSki OwotIyMjKwkgIC8qIEcrKyA0LjEgcHJvZHVjZWQgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FU X25hbWUgIjo6Ii4gICovCi0jIyMrCSAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiOjoiKSA9PSAw KQotIyMjKwkgICAgbmFtZSA9IE5VTEw7Ci0jIyMgCSAgYnJlYWs7Ci0jIyMgCi0jIyMgCWNhc2Ug RFdfVEFHX2NsYXNzX3R5cGU6Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5TCi1AQCAtMCwwICsxLDEwOCBAQAotKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29w eXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIFRlc3QgRysrIDQuMSBwcm9k dWNpbmcgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4gICovCi0rCi0rCS5k YXRhCi0rdmFyOgkuNGJ5dGUJMQotKwotKwkuc2VjdGlvbiAuZGVidWdfaW5mbwotKy5MY3UxX2Jl Z2luOgotKwkvKiBDVSBoZWFkZXIgKi8KLSsJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0 CQkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLwotKy5MY3UxX3N0YXJ0OgotKwkuMmJ5 dGUJMgkJCQkvKiBEV0FSRiBWZXJzaW9uICovCi0rCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkv KiBPZmZzZXQgaW50byBhYmJyZXYgc2VjdGlvbiAqLwotKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIg c2l6ZSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERX X1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmFzY2lpCSJmaWxlMS50eHRcMCIJCQkvKiBEV19BVF9u YW1lICovCi0rCS5hc2NpaQkiR05VIEMgMy4zLjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLwot KwkuYnl0ZQk0CQkJCS8qIERXX0xBTkdfQ19wbHVzX3BsdXMgKEMrKykgKi8KLSsKLSsuTHR5cGVf aW50OgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5h c2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTQJCQkvKiBEV19BVF9i eXRlX3NpemUgKi8KLSsJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwotKwkudWxl YjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfbmFtZXNwYWNlICovCi0rCS5hc2NpaQkJIjo6XDAi CQkJLyogRFdfQVRfbmFtZSAqLwotKwotKwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBEV19UQUdf dmFyaWFibGUgKGxvY2F0aW9uKSAqLwotKwkuYXNjaWkJCSJ2YXJcMCIJCQkvKiBEV19BVF9uYW1l ICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJ MwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcgkJCS8qICAgPGFkZHI+ICovCi0r MjoJLjRieXRlCQkuTHR5cGVfaW50LS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJ LmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgRFdfVEFHX25hbWVzcGFjZSAqLwotKwot KwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKwotKy5MY3UxX2VuZDoK LSsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgotKy5MYWJi cmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4 CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkxCQkJLyogaGFzX2No aWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJ MHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3By b2R1Y2VyICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGVi MTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDI0CQkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYnl0ZQkJMAkJ CS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0r CS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4YgkJCS8q IERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICov Ci0rCS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkudWxlYjEyOAkweGIJ CQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0r CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJy ZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM5CQkJLyogRFdfVEFHX25hbWVzcGFjZSAqLwotKwku Ynl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9u YW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0r Ci0rCS51bGViMTI4CTcJCQkvKiBBYmJyZXYgY29kZSAobG9jYXRpb24pICovCi0rCS51bGViMTI4 CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRy ZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJ CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDIJCQkvKiBEV19BVF9sb2NhdGlv biAqLwotKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkudWxlYjEyOAkw eDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0 ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5leHAKLUBAIC0wLDAgKzEsNDMgQEAK LSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3QgRysrIDQuMSBwcm9kdWNpbmcg RFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4KLSsKLSsjIFRoaXMgdGVzdCBj YW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBn YXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7 IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNk Kl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBw b3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxl ICJkdzItZW1wdHktbmFtZXNwYWNlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQg ZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS54Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJs ZX0iIG9iamVjdCB7bm9kZWJ1Z31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Y2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotKwotKyMgYHAgdmFyJyBiZWxvdyBjYW4gd29yayB3 aXRob3V0IGlkZW50aWZpZWQgRFdBUkYgRElFIGp1c3QgYmFzZWQgb24gaXRzIEVMRiBzeW1ib2wu Ci0rIyBDYXRjaCBpdCBoZXJlIGFzIGB0eXBlID0gPGRhdGEgdmFyaWFibGUsIG5vIGRlYnVnIGlu Zm8+Jy4KLStnZGJfdGVzdCAicHR5cGUgdmFyIiAidHlwZSA9IGludCIKLSsKLStnZGJfdGVzdCAi cCB2YXIiICIgPSAxIgoKZGlmZiAtLWdpdCBhL2dkYi1zb2xpYi1kaXNwbGF5LnBhdGNoIGIvZ2Ri LXNvbGliLWRpc3BsYXkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZGFjMzQyMAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1zb2xpYi1kaXNwbGF5LnBhdGNoCkBAIC0w LDAgKzEsNTggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAx L21zZzAwNDg1Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IHNvbGliLWRpc3BsYXkuZXhwIGNy YXNoCisKK1sgTWFkZSBtb3JlIHNhZmUgZm9yIGRvd25zdHJlYW0gcGF0Y2ggKyBwb3J0ZWQgZm9y IFZMQS4gIF0KKworSGksCisKK2l0IGlzIGEgdGVzdHN1aXRlIHJlZ3Jlc3Npb24gYWdhaW5zdCBn ZGItNy4wIGFsdGhvdWdoIHRoZSBidWcgd2FzIHByb2JhYmx5CitwcmVzZW50IGV2ZW4gaW4gZ2Ri LTcuMCAoaXQgc3RhcnRlZCB0byByZXByb2R1Y2Ugc2luY2Ugb25lIGNvbXBsZXRlbHkKK3VucmVs YXRlZCBEYW5pZWwgSi4ncyBwYXRjaCkuICBUaGlzIHBhdGNoIGZpeGVzICgtbG1jaGVjayBtYXkg YmUgcmVxdWlyZWQpOgorCisgUEFTUzogZ2RiLmJhc2Uvc29saWItZGlzcGxheS5leHA6IGRpc3Bs YXkgYV9nbG9iYWwKKyBQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogZGlzcGxheSBi X2dsb2JhbAorIFBBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBkaXNwbGF5IGNfZ2xv YmFsCistRVJST1I6IFByb2Nlc3Mgbm8gbG9uZ2VyIGV4aXN0cworLVVOUkVTT0xWRUQ6IGdkYi5i YXNlL3NvbGliLWRpc3BsYXkuZXhwOiBhZnRlciByZXJ1bgorLVdBUk5JTkc6IHJlbW90ZV9leHBl Y3Qgc3RhdGVtZW50IHdpdGhvdXQgYSBkZWZhdWx0IGNhc2U/IQorLUZBSUw6IGdkYi5iYXNlL3Nv bGliLWRpc3BsYXkuZXhwOiBDYW4ndCBydW4gdG8gbWFpbiAoMykKKytQQVNTOiBnZGIuYmFzZS9z b2xpYi1kaXNwbGF5LmV4cDogYWZ0ZXIgcmVydW4KKytQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNw bGF5LmV4cDogYWZ0ZXIgcmVydW4KKytQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDog YnJlYWsgMjUKKytQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogY29udGludWUKKytQ QVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogZGlzcGxheSBtYWluX2dsb2JhbAorK1BB U1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBkaXNwbGF5IGFfbG9jYWwKKytQQVNTOiBn ZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogZGlzcGxheSBhX3N0YXRpYworK1BBU1M6IGdkYi5i YXNlL3NvbGliLWRpc3BsYXkuZXhwOiBicmVhayAyNQorK1BBU1M6IGdkYi5iYXNlL3NvbGliLWRp c3BsYXkuZXhwOiBjb250aW51ZQorCitObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1t MzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251LgorCitUaGUgcXVlc3Rpb24gaXMgd2hldGhlciBT WU1CT0xfU1lNVEFCIChzeW1ib2wpIGNhbiBiZSBldmVyIE5VTEwgYXQgdGhpcyBwb2ludC4KK0lN TyBub3QsIGl0IGNhbiBiZSBOVUxMIG9ubHkgdGVtcG9yYXJpbHkgZHVyaW5nIHJlYWRpbmcgc3lt Ym9scy4KKworCitUaGFua3MsCitKYW4KKworCisyMDEwLTAxLTIwICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIHByaW50Y21kLmMgKGRpc3BsYXlfdXNl c19zb2xpYl9wKTogUmVtb3ZlIHZhcmlhYmxlIHNlY3Rpb24uICBBY2Nlc3MKKwlvYmpmaWxlIHZp YSBTWU1CT0xfU1lNVEFCLgorCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvcGFyc2Uu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvcGFyc2UuYwky MDEwLTAxLTIxIDE1OjE2OjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL3BhcnNlLmMJMjAxMC0wMS0yMSAxNToyMTo0NS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0x NDI1LDYgKzE0MjUsMTAgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNz aQorIAlpZiAoc2VjdGlvbiAmJiBvYmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChzZWN0 aW9uLT5vYmpmaWxlLCBkYXRhKSkKKyAJICByZXR1cm4gMTsKKyAKKysJLyogU1lNQk9MX09CSl9T RUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KKysJaWYgKFNZTUJPTF9TWU1UQUIgKHN5 bWJvbCkgJiYgb2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAo c3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCisrCSAgcmV0dXJuIDE7CisrCisgCS8qIENoZWNrIG9i amZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICov CisgCW9iamZpbGUgPSBibG9ja19vYmpmaWxlIChibG9jayk7CisgCgpkaWZmIC0tZ2l0IGEvZ2Ri LXRlc3RzdWl0ZS1saW5lbm8ucGF0Y2ggYi9nZGItdGVzdHN1aXRlLWxpbmVuby5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGViYzgyNy4uMDAwMDAwMAotLS0gYS9nZGItdGVz dHN1aXRlLWxpbmVuby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDQ2MS5odG1sCi1T dWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0ZTogRml4IG1pc3BsYWNlZCBsaW5lIG51bWJlcnMKLQot SGksCi0KLWNvbW1pdCA3YTgyZGZiMmE5YmU2NmYwMjMwMjI5NjQyY2JlZTU0ZWJkYTNiMGRhCi1B dXRob3I6IEpvZWwgQnJvYmVja2VyIDxicm9iZWNrZXJAZ25hdC5jb20+Ci1EYXRlOiAgIEZyaSBK YW4gMSAwNzozMToyOCAyMDEwICswMDAwCi0KLSAgICBVcGRhdGUgY29weXJpZ2h0IHllYXIgaW4g bW9zdCBoZWFkZXJzLgotICAgIAotICAgIEF1dG9tYXRpYyB1cGRhdGUgYnkgY29weXJpZ2h0LnNo LgotCi1yZWdyZXNzZWQ6Ci0KLS1QQVNTOiBnZGIubWkvbWktYnJlYWsuZXhwOiBydW4gdG8gYnJl YWtwb2ludCB3aXRoIGlnbm9yZSBjb3VudAotK0ZBSUw6IGdkYi5taS9taS1icmVhay5leHA6IHJ1 biB0byBicmVha3BvaW50IHdpdGggaWdub3JlIGNvdW50IChzdG9wcGVkIGF0IHdyb25nIHBsYWNl KQotLVBBU1M6IGdkYi5taS9taS1jbGkuZXhwOiBjb250aW51ZSB0byBjYWxsZWU0Ci0rRkFJTDog Z2RiLm1pL21pLWNsaS5leHA6IGNvbnRpbnVlIHRvIGNhbGxlZTQgKHN0b3BwZWQgYXQgd3Jvbmcg cGxhY2UpCi0tUEFTUzogZ2RiLm1pL21pLWNsaS5leHA6IGNoZWNrICpzdG9wcGVkIGZyb20gQ0xJ IGNvbW1hbmQKLStGQUlMOiBnZGIubWkvbWktY2xpLmV4cDogY2hlY2sgKnN0b3BwZWQgZnJvbSBD TEkgY29tbWFuZCAoc3RvcHBlZCBhdCB3cm9uZyBwbGFjZSkKLS1QQVNTOiBnZGIubWkvbWkyLWNs aS5leHA6IGNvbnRpbnVlIHRvIGNhbGxlZTQKLStGQUlMOiBnZGIubWkvbWkyLWNsaS5leHA6IGNv bnRpbnVlIHRvIGNhbGxlZTQgKHN0b3BwZWQgYXQgd3JvbmcgcGxhY2UpCi0KLWR1ZSB0bzoKLQot Iy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL2Jhc2ljcy5jCi0jKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvYmFzaWNzLmMKLSNAQCAtMSw0ICsxLDUgQEAKLSMtLyogQ29weXJpZ2h0IDE5OTks IDIwMDAsIDIwMDQsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0jKy8qIENvcHlyaWdodCAxOTk5LCAyMDAwLCAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5LCAy MDEwCi0jK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0KLVRlc3RlZCBvbiB4ODZf NjQtZmVkb3JhMTItbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0KLTIwMTAtMDEtMTgg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLm1p L21pLWJyZWFrLmV4cCAoc2V0IGxpbmVfY2FsbG1lX2hlYWQsIHNldCBsaW5lX2NhbGxtZV9ib2R5 KTogTmV3LgotCSh0ZXN0X2lnbm9yZV9jb3VudCk6IERlY2xhcmUgbGluZV9jYWxsbWVfYm9keSBn bG9iYWwuCi0JKHJ1biB0byBicmVha3BvaW50IHdpdGggaWdub3JlIGNvdW50KTogVXNlIGxpbmVf Y2FsbG1lX2JvZHkuCi0JKiBnZGIubWkvbWktY2xpLmV4cCAoc2V0IGxpbmVfbWFpbl9oZWFkLCBz ZXQgbGluZV9tYWluX2JvZHkpCi0JKHNldCBsaW5lX21haW5faGVsbG8sIHNldCBsaW5lX21haW5f cmV0dXJuKTogUmVpbmRlbnQuCi0JKHNldCBsaW5lX2NhbGxlZTRfaGVhZCwgc2V0IGxpbmVfY2Fs bGVlNF9ib2R5LCBzZXQgbGluZV9jYWxsZWU0X25leHQpOgotCU5ldy4KLQkoY29udGludWUgdG8g Y2FsbGVlNCk6IFVzZSBsaW5lX2NhbGxlZTRfYm9keS4KLQkoY2hlY2sgKnN0b3BwZWQgZnJvbSBD TEkgY29tbWFuZCk6IFVzZSBsaW5lX2NhbGxlZTRfbmV4dC4KLQkqIGdkYi5taS9taTItY2xpLmV4 cCAoc2V0IGxpbmVfbWFpbl9oZWFkLCBzZXQgbGluZV9tYWluX2JvZHkpCi0JKHNldCBsaW5lX21h aW5faGVsbG8sIHNldCBsaW5lX21haW5fcmV0dXJuKTogUmVpbmRlbnQuCi0JKHNldCBsaW5lX2Nh bGxlZTRfaGVhZCwgc2V0IGxpbmVfY2FsbGVlNF9ib2R5KTogTmV3LgotCShjb250aW51ZSB0byBj YWxsZWU0KTogVXNlIGxpbmVfY2FsbGVlNF9ib2R5LgotCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5taS9taS1icmVhay5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWJyZWFrLmV4 cAotQEAgLTU2LDYgKzU2LDggQEAgc2V0IGxpbmVfY2FsbGVlMV9oZWFkICBbZ2RiX2dldF9saW5l X251bWJlciAiY2FsbGVlMSAoIl0KLSBzZXQgbGluZV9jYWxsZWUxX2JvZHkgIFtleHByICRsaW5l X2NhbGxlZTFfaGVhZCArIDJdCi0gc2V0IGxpbmVfbWFpbl9oZWFkICAgICBbZ2RiX2dldF9saW5l X251bWJlciAibWFpbiAoIl0KLSBzZXQgbGluZV9tYWluX2JvZHkgICAgIFtleHByICRsaW5lX21h aW5faGVhZCArIDJdCi0rc2V0IGxpbmVfY2FsbG1lX2hlYWQgICBbZ2RiX2dldF9saW5lX251bWJl ciAiY2FsbG1lICgiXQotK3NldCBsaW5lX2NhbGxtZV9ib2R5ICAgW2V4cHIgJGxpbmVfY2FsbG1l X2hlYWQgKyAyXQotIAotIHNldCBmdWxsbmFtZSAiZnVsbG5hbWU9XCIke2Z1bGxuYW1lX3N5bnRh eH0ke3NyY2ZpbGV9XCIiCi0gCi1AQCAtMTUyLDYgKzE1NCw3IEBAIHByb2MgdGVzdF9yYnJlYWtf Y3JlYXRpb25fYW5kX2xpc3Rpbmcge30gewotIAotIHByb2MgdGVzdF9pZ25vcmVfY291bnQge30g ewotICAgICBnbG9iYWwgbWlfZ2RiX3Byb21wdAotKyAgICBnbG9iYWwgbGluZV9jYWxsbWVfYm9k eQotIAotICAgICBtaV9nZGJfdGVzdCAiLWJyZWFrLWluc2VydCAtaSAxIGNhbGxtZSIgXAotICAg ICAgICAgIlxcXmRvbmUuKmlnbm9yZT1cIjFcIi4qIiBcCi1AQCAtMTU5LDcgKzE2Miw3IEBAIHBy b2MgdGVzdF9pZ25vcmVfY291bnQge30gewotIAotICAgICBtaV9ydW5fY21kCi0gCi0tICAgIG1p X2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgImNhbGxtZSIgIlx7bmFtZT1cImlcIix2YWx1 ZT1cIjJcIlx9IiAiLipiYXNpY3MuYyIgIjUyIiBcCi0rICAgIG1pX2V4cGVjdF9zdG9wICJicmVh a3BvaW50LWhpdCIgImNhbGxtZSIgIlx7bmFtZT1cImlcIix2YWx1ZT1cIjJcIlx9IiAiLipiYXNp Y3MuYyIgJGxpbmVfY2FsbG1lX2JvZHkgXAotICAgICAgICAgeyIiICJkaXNwPVwia2VlcFwiIiB9 ICJydW4gdG8gYnJlYWtwb2ludCB3aXRoIGlnbm9yZSBjb3VudCIKLSB9Ci0gCi0tLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aS1jbGkuZXhwCi1AQCAtNjMsMTAgKzYzLDEzIEBAIG1pX2dkYl90ZXN0ICItaW50ZXJwcmV0ZXIt ZXhlYyBjb25zb2xlIFwiZmlsZSAkYmluZmlsZVwiIiBcCi0gCi0gbWlfcnVuX3RvX21haW4KLSAK LS1zZXQgbGluZV9tYWluX2hlYWQgICBbZ2RiX2dldF9saW5lX251bWJlciAibWFpbiAoIl0KLS1z ZXQgbGluZV9tYWluX2JvZHkgICBbZXhwciAkbGluZV9tYWluX2hlYWQgKyAyXQotLXNldCBsaW5l X21haW5faGVsbG8gIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJIZWxsbywgV29ybGQhIl0KLS1zZXQg bGluZV9tYWluX3JldHVybiBbZXhwciAkbGluZV9tYWluX2hlbGxvICsgMl0KLStzZXQgbGluZV9t YWluX2hlYWQgICAgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1haW4gKCJdCi0rc2V0IGxpbmVfbWFp bl9ib2R5ICAgIFtleHByICRsaW5lX21haW5faGVhZCArIDJdCi0rc2V0IGxpbmVfbWFpbl9oZWxs byAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJIZWxsbywgV29ybGQhIl0KLStzZXQgbGluZV9tYWlu X3JldHVybiAgW2V4cHIgJGxpbmVfbWFpbl9oZWxsbyArIDJdCi0rc2V0IGxpbmVfY2FsbGVlNF9o ZWFkIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJjYWxsZWU0ICgiXQotK3NldCBsaW5lX2NhbGxlZTRf Ym9keSBbZXhwciAkbGluZV9jYWxsZWU0X2hlYWQgKyAyXQotK3NldCBsaW5lX2NhbGxlZTRfbmV4 dCBbZXhwciAkbGluZV9jYWxsZWU0X2JvZHkgKyAxXQotIAotIG1pX2dkYl90ZXN0ICItaW50ZXJw cmV0ZXItZXhlYyBjb25zb2xlIFwic2V0IGFyZ3MgZm9vYmFyXCIiIFwKLSAgIHtcXmRvbmV9IFwK LUBAIC05Nyw3ICsxMDAsNyBAQCBtaV9nZGJfdGVzdCAiLWludGVycHJldGVyLWV4ZWMgY29uc29s ZSBcImxpc3RcIiIgXAotICAgIi4qXH5cIiRsaW5lX21haW5fYm9keVxbXFxcXHQgXF0qY2FsbGVl MS4qO1xcXFxuXCIuKlxcXmRvbmUiIFwKLSAgICItaW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlIFwi bGlzdFwiIgotIAotLW1pX2V4ZWN1dGVfdG8gImV4ZWMtY29udGludWUiICJicmVha3BvaW50LWhp dCIgImNhbGxlZTQiICIiICIuKmJhc2ljcy5jIiAiMjgiIFwKLSttaV9leGVjdXRlX3RvICJleGVj LWNvbnRpbnVlIiAiYnJlYWtwb2ludC1oaXQiICJjYWxsZWU0IiAiIiAiLipiYXNpY3MuYyIgJGxp bmVfY2FsbGVlNF9ib2R5IFwKLSAgICAgeyAiIiAiZGlzcD1cImtlZXBcIiIgfSAiY29udGludWUg dG8gY2FsbGVlNCIKLSAKLSAjIE5PVEU6IGNhZ25leS8yMDAzLTAyLTAzOiBOb3QgeWV0LgotQEAg LTE1NSw3ICsxNTgsNyBAQCBpZiB7JGFzeW5jfSB7Ci0gICAgIHNldCByZWFzb24gIiIKLSB9Ci0g Ci0tbWlfZXhlY3V0ZV90byAiaW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlIHN0ZXAiICRyZWFzb24g ImNhbGxlZTQiICIiICIuKmJhc2ljcy5jIiAiMjkiIFwKLSttaV9leGVjdXRlX3RvICJpbnRlcnBy ZXRlci1leGVjIGNvbnNvbGUgc3RlcCIgJHJlYXNvbiAiY2FsbGVlNCIgIiIgIi4qYmFzaWNzLmMi ICRsaW5lX2NhbGxlZTRfbmV4dCBcCi0gICAgICIiICJjaGVjayAqc3RvcHBlZCBmcm9tIENMSSBj b21tYW5kIgotIAotICMgTk9URTogY2FnbmV5LzIwMDMtMDItMDM6IE5vdCB5ZXQuCi0tLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY2xpLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWkyLWNsaS5leHAKLUBAIC02MywxMCArNjMsMTIgQEAgbWlfZ2RiX3Rlc3QgIi1pbnRlcnBy ZXRlci1leGVjIGNvbnNvbGUgXCJmaWxlICRiaW5maWxlXCIiIFwKLSAKLSBtaV9ydW5fdG9fbWFp bgotIAotLXNldCBsaW5lX21haW5faGVhZCAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYWluICgi XQotLXNldCBsaW5lX21haW5fYm9keSAgIFtleHByICRsaW5lX21haW5faGVhZCArIDJdCi0tc2V0 IGxpbmVfbWFpbl9oZWxsbyAgW2dkYl9nZXRfbGluZV9udW1iZXIgIkhlbGxvLCBXb3JsZCEiXQot LXNldCBsaW5lX21haW5fcmV0dXJuIFtleHByICRsaW5lX21haW5faGVsbG8gKyAyXQotK3NldCBs aW5lX21haW5faGVhZCAgICBbZ2RiX2dldF9saW5lX251bWJlciAibWFpbiAoIl0KLStzZXQgbGlu ZV9tYWluX2JvZHkgICAgW2V4cHIgJGxpbmVfbWFpbl9oZWFkICsgMl0KLStzZXQgbGluZV9tYWlu X2hlbGxvICAgW2dkYl9nZXRfbGluZV9udW1iZXIgIkhlbGxvLCBXb3JsZCEiXQotK3NldCBsaW5l X21haW5fcmV0dXJuICBbZXhwciAkbGluZV9tYWluX2hlbGxvICsgMl0KLStzZXQgbGluZV9jYWxs ZWU0X2hlYWQgW2dkYl9nZXRfbGluZV9udW1iZXIgImNhbGxlZTQgKCJdCi0rc2V0IGxpbmVfY2Fs bGVlNF9ib2R5IFtleHByICRsaW5lX2NhbGxlZTRfaGVhZCArIDJdCi0gCi0gbWlfZ2RiX3Rlc3Qg Ii1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgXCJzZXQgYXJncyBmb29iYXJcIiIgXAotICAge1xe ZG9uZX0gXAotQEAgLTk3LDcgKzEwMCw3IEBAIG1pX2dkYl90ZXN0ICItaW50ZXJwcmV0ZXItZXhl YyBjb25zb2xlIFwibGlzdFwiIiBcCi0gICAiLipcflwiJGxpbmVfbWFpbl9ib2R5XFtcXFxcdCBc XSpjYWxsZWUxLio7XFxcXG5cIi4qXFxeZG9uZSIgXAotICAgIi1pbnRlcnByZXRlci1leGVjIGNv bnNvbGUgXCJsaXN0XCIiCi0gCi0tbWlfZXhlY3V0ZV90byAiZXhlYy1jb250aW51ZSIgImJyZWFr cG9pbnQtaGl0IiAiY2FsbGVlNCIgIiIgIi4qYmFzaWNzLmMiICIyOCIgXAotK21pX2V4ZWN1dGVf dG8gImV4ZWMtY29udGludWUiICJicmVha3BvaW50LWhpdCIgImNhbGxlZTQiICIiICIuKmJhc2lj cy5jIiAkbGluZV9jYWxsZWU0X2JvZHkgXAotICAgICB7ICIiICJkaXNwPVwia2VlcFwiIiB9IFwK LSAgICAgImNvbnRpbnVlIHRvIGNhbGxlZTQiCi0gCi0KCmRpZmYgLS1naXQgYS9nZGItdW51c2Vk LXJldmVydC5wYXRjaCBiL2dkYi11bnVzZWQtcmV2ZXJ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjJhYmUzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdW51c2Vk LXJldmVydC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitbUkZBL2NvbW1pdCA1LzVdIEFkZCAtV3Vu dXNlZC1mdW5jdGlvbiB0byBjb21waWxlIGZsYWdzLgoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDAzNzEuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMC0wMS9tc2cwMDE2My5odG1sCisKK1JFVkVSVEVECisKKy0tLSBzcmMv Z2RiL2NvbmZpZ3VyZS5hYwkyMDEwLzAxLzE1IDAwOjM0OjM3CTEuMTEyCisrKysgc3JjL2dkYi9j b25maWd1cmUuYWMJMjAxMC8wMS8xOSAwOTo1MjozMQkxLjExMworQEAgLTE1NDQsOCArMTU0NCw3 IEBACisgIyBnZGIvZG9jL2dkYmludC50ZXhpbmZvLgorIGJ1aWxkX3dhcm5pbmdzPSItV2FsbCAt V2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3BvaW50ZXItYXJpdGggXAorIC1XZm9ybWF0 LW5vbmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gXAorLS1Xbm8tdW51c2VkIC1XdW51c2VkLXZh bHVlIC1XdW51c2VkLWZ1bmN0aW9uIFwKKy0tV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2NyaXB0 cyIKKystV25vLXVudXNlZCAtV3VudXNlZC12YWx1ZSAtV25vLXN3aXRjaCAtV25vLWNoYXItc3Vi c2NyaXB0cyIKKyAKKyAjIEVuYWJsZSAtV25vLWZvcm1hdCBieSBkZWZhdWx0IHdoZW4gdXNpbmcg Z2NjIG9uIG1pbmd3IHNpbmNlIG1hbnkKKyAjIEdDQyB2ZXJzaW9ucyBjb21wbGFpbiBhYm91dCAl STY0LgorLS0tIHNyYy9nZGIvY29uZmlndXJlCTIwMTAvMDEvMTUgMDA6MzQ6MzcJMS4yOTcKKysr KyBzcmMvZ2RiL2NvbmZpZ3VyZQkyMDEwLzAxLzE5IDA5OjUyOjMyCTEuMjk4CitAQCAtMTM0MzUs OCArMTM0MzUsNyBAQAorICMgZ2RiL2RvYy9nZGJpbnQudGV4aW5mby4KKyBidWlsZF93YXJuaW5n cz0iLVdhbGwgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdwb2ludGVyLWFyaXRoIFwK KyAtV2Zvcm1hdC1ub25saXRlcmFsIC1Xbm8tcG9pbnRlci1zaWduIFwKKy0tV25vLXVudXNlZCAt V3VudXNlZC12YWx1ZSAtV3VudXNlZC1mdW5jdGlvbiBcCistLVduby1zd2l0Y2ggLVduby1jaGFy LXN1YnNjcmlwdHMiCisrLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVduby1zd2l0Y2ggLVdu by1jaGFyLXN1YnNjcmlwdHMiCisgCisgIyBFbmFibGUgLVduby1mb3JtYXQgYnkgZGVmYXVsdCB3 aGVuIHVzaW5nIGdjYyBvbiBtaW5ndyBzaW5jZSBtYW55CisgIyBHQ0MgdmVyc2lvbnMgY29tcGxh aW4gYWJvdXQgJUk2NC4KKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAxLzE5IDA5OjUwOjQ4 CTEuMTEyNzEKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAxLzE5IDA5OjUyOjMzCTEuMTEy NzIKKyMjIC0xLDExICsxLDUgQEAKKyAyMDEwLTAxLTE5ICBKb2VsIEJyb2JlY2tlciAgPGJyb2Jl Y2tlckBhZGFjb3JlLmNvbT4KKyAKKy0JQWRkIC1XdW51c2VkLWZ1bmN0aW9uIHRvIGNvbXBpbGUg ZmxhZ3MuCistCSogY29uZmlndXJlLmFjOiBBZGQgLVd1bnVzZWQtZnVuY3Rpb24gdG8gYnVpbGRf d2FybmluZ3MuCistCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorLQorLTIwMTAtMDEtMTkgIEpv ZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgorLQorIAkiZGVsZXRlIiBhZGEt bGV4LmM6aW5wdXQgZnVuY3Rpb24sIG5vdCB1c2VkLgorIAkqIGFkYS1sZXgubDogI2RlZmluZSBZ WV9OT19JTlBVVC4KKyAKCmRpZmYgLS1naXQgYS9nZGItd2F0Y2hwb2ludC1jb25kLWdvbmUucGF0 Y2ggYi9nZGItd2F0Y2hwb2ludC1jb25kLWdvbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDEyYTRjNzYuLjAwMDAwMDAKLS0tIGEvZ2RiLXdhdGNocG9pbnQtY29uZC1nb25l LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTEyL21zZzAwMzk0Lmh0bWwKLVN1YmplY3Q6IFtwYXRj aF0gRml4IHdhdGNocG9pbnQtYXQtZXBpbG9ndWUgNy4wIHJlZ3Jlc3Npb24gKHMzOTB4KQotCi1I aSwKLQotYXR0YWNoZWQgdGVzdGNhc2UgcmVncmVzc2VkIDYuOC0+Ny4wIG9uIHNvbWUgczM5MHgg c3lzdGVtcy4KLQotQXQgdGhlIG1vbWVudCBQQyBpcyBhdCBlcGlsb2d1ZSAoYWZ0ZXIgZnJhbWUg cG9pbnRlciBnb3QgZGVzdHJveWVkIGFuZCBQQyBpcwotc3RpbGwgaW4gdGhlIGNhbGxlZWQgZnVu Y3Rpb24pIHdlIG11c3Qgbm90IHRyeSBhbnkgdW53aW5kaW5nIGFzIGl0IGNhbiB0cnkgdG8KLXVu d2luZCBhIGdhcmJhZ2UuCi0KLUNvcnJlY3Qgd2F5IHdvdWxkIGJlIHRvIGltcGxlbWVudCBlcGls b2d1ZSB1bndpbmRlciAoc3VjaCBhcwotYW1kNjRfZXBpbG9ndWVfZnJhbWVfdW53aW5kIG9yIGkz ODZfZXBpbG9ndWVfZnJhbWVfdW53aW5kIG9uZXMpIGJ1dCBpdCB3b3VsZAotbm90IGJlIHNvIGVh c3kgb24gczM5MHggYXMgaXQgd291bGQgbmVlZCBmdWxsIHByb2xvZ3VlLWFuYWx5emVyOiBBZnRl ciBTUCBnZXRzCi1yZXN0b3JlZCB0aGVyZSBjYW4gYmUgdmFyaW91cyBpbnN0cnVjdGlvbnMgYmVm b3JlIHRoZSBsYXN0IGp1bXAgLSBHREIgbmVlZHMgdG8KLWludGVycHJldCB0aGUganVtcCB0byBm aW5kIHRoZSByZWdpc3RlciB2YWx1ZSB3aGVyZSBpdCBpcyBnb2luZyB0byBqdW1wIHRvLgotMDAw MDAwNDgyNzlhYTA5YyA8cm91bmRfYW5kX3JldHVybj46Ci1bLi4uXQotICA0ODI3OWFhMWI4OiBl YiA2ZiBmMCBkMCAwMCAwNCBsbWcgICVyNiwlcjE1LDIwOCglcjE1KQotICA0ODI3OWFhMWJlOiA1 MCAzMiAxMCAwMCAgICAgICBzdCAgICVyMywwKCVyMiwlcjEpCSMgU1AgKCVyMTUpIGlzIGdvbmUg aG9uZQotICA0ODI3OWFhMWMyOiBiMyA3NCAwMCAwMCAgICAgICBsemVyICVyMAotICA0ODI3OWFh MWM2OiAwNyBmNCAgICAgICAgICAgICBiciAgICVyNAkJIyAlcjQgaXMgdGhlIHRhcmdldAotWy4u Ll0KLQotSnVzdCBhbiBlYXN5IGZpeCBpcyB0byBiZSBtb3JlIGNhcmVmdWwgYW5kIGRvIG5vdCB0 cnkgYW55IHVud2luZGluZyBpZiB3ZSBmaW5kCi1QQyBpcyBpbiB0aGUgZXBpbG9ndWUgKHByZXZp b3VzIGluc3RydWN0aW9uIG1vZGlmaWVzIFNQPSVyMTUpLgotCi1JdCBpcyBldmVuIGEgcGVyZm9y bWFuY2Ugb3B0aW1pemF0aW9uIGFuZCBJIHNlZSBubyByZWdyZXNzaW9uIHJpc2sgdGhlcmUuCi0K LVRoZSBzcGVjaWZpYyBzMzkweCBlcnJvciBpczoKLSMwICB0aHJvd19lcnJvciAoZXJyb3I9TUVN T1JZX0VSUk9SLCBmbXQ9MHg4MDQyNjc2YSAiQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVz cyAlcyIpIGF0IGV4Y2VwdGlvbnMuYzo0MTUKLSMxICBpbiBtZW1vcnlfZXJyb3IgKHN0YXR1cz01 LCBtZW1hZGRyPTApIGF0IGNvcmVmaWxlLmM6MjIwCi0jMiAgaW4gcmVhZF9tZW1vcnkgKG1lbWFk ZHI9MCwgbXlhZGRyPTB4M2ZmZmZjN2Y3ZjAgIiIsIGxlbj04KSBhdCBjb3JlZmlsZS5jOjIzOAot IzMgIGluIHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKG1lbWFkZHI9MCwgbGVuPTgsIGJ5 dGVfb3JkZXI9QkZEX0VORElBTl9CSUcpIGF0IGNvcmVmaWxlLmM6MzIxCi0jNCAgaW4gczM5MF9i YWNrY2hhaW5fZnJhbWVfdW53aW5kX2NhY2hlICh0aGlzX2ZyYW1lPTB4ODA2MDg5NTgsIGluZm89 MHg4MDYwOGEwOCkgYXQgczM5MC10ZGVwLmM6MTUyNQotIzUgIGluIHMzOTBfZnJhbWVfdW53aW5k X2NhY2hlICh0aGlzX2ZyYW1lPTB4ODA2MDg5NTgsIHRoaXNfcHJvbG9ndWVfY2FjaGU9MHg4MDYw ODk3MCkgYXQgczM5MC10ZGVwLmM6MTU3MgotIzYgIGluIHMzOTBfZnJhbWVfdGhpc19pZCAodGhp c19mcmFtZT0weDgwNjA4OTU4LCB0aGlzX3Byb2xvZ3VlX2NhY2hlPTB4ODA2MDg5NzAsIHRoaXNf aWQ9MHg4MDYwODliOCkgYXQgczM5MC10ZGVwLmM6MTU4MwotIzcgIGluIGdldF9mcmFtZV9pZCAo Zmk9MHg4MDYwODk1OCkgYXQgZnJhbWUuYzozMzUKLSM4ICBpbiBmcmFtZV9maW5kX2J5X2lkIChp ZD17c3RhY2tfYWRkciA9IDQzOTgwNDQ4MjQ5NTIsIGNvZGVfYWRkciA9IDIxNDc0ODQ5NTIsIHNw ZWNpYWxfYWRkciA9IDAsIHN0YWNrX2FkZHJfcCA9IDEsIGNvZGVfYWRkcl9wID0gMSwgc3BlY2lh bF9hZGRyX3AgPSAwLCBpbmxpbmVfZGVwdGggPSAwfSkgYXQgZnJhbWUuYzo1ODcgCi0jOSAgaW4g d2F0Y2hwb2ludF9jaGVjayAocD0weDgwOTViYmMwKSBhdCBicmVha3BvaW50LmM6MzIwMwotIzEw IGluIGNhdGNoX2Vycm9ycyAoZnVuYz0weDgwMTI2MmMwIDx3YXRjaHBvaW50X2NoZWNrPiwgZnVu Y19hcmdzPTB4ODA5NWJiYzAsIGVycnN0cmluZz0weDgwYTI2NDEwICJFcnJvciBldmFsdWF0aW5n IGV4cHJlc3Npb24gZm9yIHdhdGNocG9pbnQgM1xuIiwgbWFzaz02KSBhdCBleGNlcHRpb25zLmM6 NTEwCi0jMTEgaW4gYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJzPTB4ODA5NWJiYzApIGF0IGJy ZWFrcG9pbnQuYzozNDA0Ci0jMTIgaW4gYnBzdGF0X3N0b3Bfc3RhdHVzIChhc3BhY2U9MHg4MDYx ZmNiMCwgYnBfYWRkcj0yMTQ3NDg1MDQwLCBwdGlkPXtwaWQgPSAxNzM3MiwgbHdwID0gMTczNzIs IHRpZCA9IDB9KSBhdCBicmVha3BvaW50LmM6MzU5NAotIzEzIGluIGhhbmRsZV9pbmZlcmlvcl9l dmVudCAoZWNzPTB4M2ZmZmZjODA1MjApIGF0IGluZnJ1bi5jOjM1ODgKLQotSSBkaWQgbm90IGFu YWx5emUgd2h5IDYuOCBkaWQgbm90IGVycm9yIG91dCwgdGhlIEdEQiBjb2RlIGlzIHNpbWlsYXIg dGhlcmUuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uOgote3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZl ZG9yYTEyLWxpbnV4LWdudSAoQ1ZTIEhFQUQgR0RCKQotczM5MHgtcmhlbDQ4LWxpbnV4LWdudSAo Q1ZTIEhFQUQgR0RCKQotczM5MC1yaGVsNDgtbGludXgtZ251IChDVlMgSEVBRCBHREIpCi1zMzkw eC1yaGVsNTQtbGludXgtZ251IChGZWRvcmEgMTIgR0RCKQotczM5MC1yaGVsNTQtbGludXgtZ251 IChGZWRvcmEgMTIgR0RCKQotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMDktMTItMjUg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogYnJlYWtw b2ludC5jICh3YXRjaHBvaW50X2NoZWNrKTogQ2hlY2sgdGhlIGNhbGwKLQlnZGJhcmNoX2luX2Z1 bmN0aW9uX2VwaWxvZ3VlX3AgYmVmb3JlIGNhbGxpbmcgZnJhbWVfZmluZF9ieV9pZC4KLQlFeHRl bmQgdGhlIGNvbW1lbnQuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDA5LTEyLTI1ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5iYXNlL3dhdGNocG9p bnQtY29uZC1nb25lLmV4cCwgZ2RiLmJhc2Uvd2F0Y2hwb2ludC1jb25kLWdvbmUuYywKLQlnZGIu YmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS1zdHJpcHBlZC5jOiBOZXcuCi0KLS0tLSBhL2dkYi9i cmVha3BvaW50LmMKLSsrKyBiL2dkYi9icmVha3BvaW50LmMKLUBAIC0zMjAwLDYgKzMyMDAsMTcg QEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKLSAgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZnJh bWVfYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0gICAgICAgQ09SRV9BRERSIGZyYW1l X3BjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7Ci0gCi0rICAgICAgLyogaW5fZnVuY3Rpb25fZXBp bG9ndWVfcCgpIHJldHVybnMgYSBub24temVybyB2YWx1ZSBpZiB3ZSdyZSBzdGlsbAotKwkgaW4g dGhlIGZ1bmN0aW9uIGJ1dCB0aGUgc3RhY2sgZnJhbWUgaGFzIGFscmVhZHkgYmVlbiBpbnZhbGlk YXRlZC4KLSsJIFNpbmNlIHdlIGNhbid0IHJlbHkgb24gdGhlIHZhbHVlcyBvZiBsb2NhbCB2YXJp YWJsZXMgYWZ0ZXIgdGhlCi0rCSBzdGFjayBoYXMgYmVlbiBkZXN0cm95ZWQsIHdlIGFyZSB0cmVh dGluZyB0aGUgd2F0Y2hwb2ludCBpbiB0aGF0Ci0rCSBzdGF0ZSBhcyBgbm90IGNoYW5nZWQnIHdp dGhvdXQgZnVydGhlciBjaGVja2luZy4gIERvbid0IG1hcmsKLSsJIHdhdGNocG9pbnRzIGFzIGNo YW5nZWQgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW4gYW4gZXBpbG9ndWUgLQotKwkgZXZlbiBp ZiB0aGV5IGFyZSBpbiBzb21lIG90aGVyIGZyYW1lLCBvdXIgdmlldyBvZiB0aGUgc3RhY2sKLSsJ IGlzIGxpa2VseSB0byBiZSB3cm9uZyBhbmQgZnJhbWVfZmluZF9ieV9pZCBjb3VsZCBlcnJvciBv dXQuICAqLwotKyAgICAgIGlmIChnZGJhcmNoX2luX2Z1bmN0aW9uX2VwaWxvZ3VlX3AgKGZyYW1l X2FyY2gsIGZyYW1lX3BjKSkKLSsJcmV0dXJuIFdQX1ZBTFVFX05PVF9DSEFOR0VEOwotKwotICAg ICAgIGZyID0gZnJhbWVfZmluZF9ieV9pZCAoYi0+d2F0Y2hwb2ludF9mcmFtZSk7Ci0gICAgICAg d2l0aGluX2N1cnJlbnRfc2NvcGUgPSAoZnIgIT0gTlVMTCk7Ci0gCi1AQCAtMzIxNiwxNyArMzIy Nyw2IEBAIHdhdGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCi0gCSAgICB3aXRoaW5fY3VycmVudF9z Y29wZSA9IDA7Ci0gCX0KLSAKLS0gICAgICAvKiBpbl9mdW5jdGlvbl9lcGlsb2d1ZV9wKCkgcmV0 dXJucyBhIG5vbi16ZXJvIHZhbHVlIGlmIHdlJ3JlIHN0aWxsCi0tCSBpbiB0aGUgZnVuY3Rpb24g YnV0IHRoZSBzdGFjayBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIGludmFsaWRhdGVkLgotLQkgU2lu Y2Ugd2UgY2FuJ3QgcmVseSBvbiB0aGUgdmFsdWVzIG9mIGxvY2FsIHZhcmlhYmxlcyBhZnRlciB0 aGUKLS0JIHN0YWNrIGhhcyBiZWVuIGRlc3Ryb3llZCwgd2UgYXJlIHRyZWF0aW5nIHRoZSB3YXRj aHBvaW50IGluIHRoYXQKLS0JIHN0YXRlIGFzIGBub3QgY2hhbmdlZCcgd2l0aG91dCBmdXJ0aGVy IGNoZWNraW5nLiAgRG9uJ3QgbWFyawotLQkgd2F0Y2hwb2ludHMgYXMgY2hhbmdlZCBpZiB0aGUg Y3VycmVudCBmcmFtZSBpcyBpbiBhbiBlcGlsb2d1ZSAtCi0tCSBldmVuIGlmIHRoZXkgYXJlIGlu IHNvbWUgb3RoZXIgZnJhbWUsIG91ciB2aWV3IG9mIHRoZSBzdGFjawotLQkgaXMgbGlrZWx5IHRv IGJlIHdyb25nLiAgKi8KLS0gICAgICBpZiAoZ2RiYXJjaF9pbl9mdW5jdGlvbl9lcGlsb2d1ZV9w IChmcmFtZV9hcmNoLCBmcmFtZV9wYykpCi0tCXJldHVybiBXUF9WQUxVRV9OT1RfQ0hBTkdFRDsK LS0KLSAgICAgICBpZiAod2l0aGluX2N1cnJlbnRfc2NvcGUpCi0gCS8qIElmIHdlIGVuZCB1cCBz dG9wcGluZywgdGhlIGN1cnJlbnQgZnJhbWUgd2lsbCBnZXQgc2VsZWN0ZWQKLSAJICAgaW4gbm9y bWFsX3N0b3AuICBTbyB0aGlzIGNhbGwgdG8gc2VsZWN0X2ZyYW1lIHdvbid0IGFmZmVjdAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWNvbmQt Z29uZS1zdHJpcHBlZC5jCi1AQCAtMCwwICsxLDIzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIAotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAqLwotKwotK3ZvaWQKLStqdW1wZXIgKHZvaWQgKCpq dW1wdG8pICh2b2lkKSkKLSt7Ci0rICAoKmp1bXB0bykgKCk7Ci0rfQotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS5jCi1AQCAt MCwwICsxLDM3IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK LSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIAotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLiAqLwotKwotK2V4dGVybiB2b2lkIGp1bXBlciAodm9pZCAoKmp1bXB0bykgKHZvaWQpKTsK LSsKLStzdGF0aWMgdm9pZAotK2Z1bmMgKHZvaWQpCi0rewotKyAgdm9sYXRpbGUgaW50IGM7Ci0r Ci0rICBjID0gNTsKLSsgIGMgPSAxMDsJLyogd2F0Y2hwb2ludC1oZXJlICovCi0rICBjID0gMjA7 Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAganVtcGVyIChmdW5jKTsKLSsKLSsg IHJldHVybiAwOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvd2F0Y2hwb2ludC1jb25kLWdvbmUuZXhwCi1AQCAtMCwwICsxLDUxIEBACi0rIyBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rc2V0IHRlc3RmaWxlICJ3YXRjaHBvaW50 LWNvbmQtZ29uZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IHNyY2ZpbGVzdHJp cHBlZCAke3Rlc3RmaWxlfS1zdHJpcHBlZC5jCi0rc2V0IG9iamZpbGVzdHJpcHBlZCAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LXN0cmlwcGVkLm8KLStzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0rIyBXZSBuZWVkIHRvIGdlbmVyYXRlIGEgZnVu Y3Rpb24gd2l0aG91dCBEV0FSRiB0byBjcmFzaCBvbGRlciBHREIuCi0rIyBTdGVwcGluZyBpbnRv IGEgZHluYW1pYyBmdW5jdGlvbiB0cmFtcG9saW5lIG9yIHN0ZXBwaW5nIG91dCBvZiBNQUlOIG1h eSB3b3JrCi0rIyBidXQgaXQgaXMgbm90IGEgcmVsaWFibGUgRkFJTCBjYXNlLgotKwotK2lmICB7 IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVzdHJpcHBlZH0iICIk e29iamZpbGVzdHJpcHBlZH0iIG9iamVjdCB7fV0gIT0gIiIKLSsgICAgICB8fCBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke29iamZpbGVzdHJpcHBlZH0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICBnZGJfc3VwcHJl c3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4g dGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9Ci0rCi0rY2xlYW5fcmVzdGFy dCAke3Rlc3RmaWxlfQotKwotKyMgUHJvYmxlbSBkb2VzIG5vdCBvY2N1ciBvdGhlcndpc2UuCi0r Z2RiX3Rlc3QgInNldCBjYW4tdXNlLWh3LXdhdGNocG9pbnRzIDAiCi0rCi0raWYgIVtydW50b19t YWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAid2F0Y2hwb2ludC1oZXJlIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiUGxhY2UgdG8gc2V0IHRoZSB3YXRjaHBvaW50IgotKwotKyMgVGhlIGNvbmRpdGlvbiBgYyA9 PSAzMCcgaXMgdGhlIHN1YmplY3QgYmVpbmcgdGVzdGVkLgotK2dkYl90ZXN0ICJ3YXRjaCBjIGlm IGMgPT0gMzAiICIiICJQbGFjZSB0aGUgd2F0Y2hwb2ludCIKLSsKLSsjIFdlIG1heSBzdGF5IGVp dGhlciBpbiB0aGUgZnVuY3Rpb24gaXRzZWxmIG9yIG9ubHkgYXQgdGhlIGZpcnN0IGluc3RydWN0 aW9uIG9mCi0rIyBpdHMgY2FsbGVyIGRlcGVuZGluZyBvbiB0aGUgZXBpbG9ndWUgdW53aW5kZXIg KG9yIHZhbGlkIGVwaWxvZ3VlIENGSSkgcHJlc2VuY2UuCi0rZ2RiX3Rlc3QgImZpbmlzaCIgXAot KwkgIldhdGNocG9pbnQgLiogZGVsZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRo ZSBibG9jayBpbi4qd2hpY2ggaXRzIGV4cHJlc3Npb24gaXMgdmFsaWQuLippbiAoanVtcGVyfGZ1 bmMpLioiIFwKLSsJICJDYXRjaCB0aGUgbm8gbG9uZ2VyIHZhbGlkIHdhdGNocG9pbnQiCi0KCmRp ZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDNkNTlmY2QuLjIyOGQ0ODQgMTAw NjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0zMiwxMSArMzIsMTEgQEAgTmFt ZTogZ2RiJXs/X3dpdGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBv ZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJl cmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFu dWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIw MDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEy IChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjAuNTAuMjAxMDAxMTgK K1ZlcnNpb246IDcuMC41MC4yMDEwMDEyMQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlu cyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0n IGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBj b21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDIlez9fd2l0aF91cHN0cmVhbTou dXBzdHJlYW19JXtkaXN0fQorUmVsZWFzZTogMSV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0l e2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKwogR3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpA QCAtMzIyLDkgKzMyMiw2IEBAIFBhdGNoMzA5OiBnZGItNi4zLW1hcHBpbmctemVyby1pbm9kZS10 ZXN0LnBhdGNoCiAjIFRlc3QgYSBjcmFzaCBvbiBgZm9jdXMgY21kJywgYGZvY3VzIHByZXYnIGNv bW1hbmRzLgogUGF0Y2gzMTE6IGdkYi02LjMtZm9jdXMtY21kLXByZXYtdGVzdC5wYXRjaAogCi0j IEZpeCBlcnJvciBvbiBhIHN3IHdhdGNocG9pbnQgYWN0aXZlIGF0IGZ1bmN0aW9uIGVwaWxvZ3Vl IChoaXQgb24gczM5MHgpLgotUGF0Y2gzMTQ6IGdkYi13YXRjaHBvaW50LWNvbmQtZ29uZS5wYXRj aAotCiAjIFRlc3QgdmFyaW91cyBmb3JtcyBvZiB0aHJlYWRzIHRyYWNraW5nIGFjcm9zcyBleGVj KCkgKEJaIDQ0Mjc2NSkuCiBQYXRjaDMxNTogZ2RiLTYuOC1iejQ0Mjc2NS10aHJlYWRlZC1leGVj LXRlc3QucGF0Y2gKIApAQCAtNDAzLDkgKzQwMCw2IEBAIFBhdGNoMzkzOiBnZGItcmhlbDUtZ2Nj NDQucGF0Y2gKICMgV29ya2Fyb3VuZCBSSEVMLTUga2VybmVscyBmb3IgZGV0YWNoaW5nIFNJR1NU T1BwZWQgcHJvY2Vzc2VzIChCWiA0OTg1OTUpLgogUGF0Y2gzMzU6IGdkYi1yaGVsNS1jb21wYXQu cGF0Y2gKIAotIyBGaXggYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIEcrKyA0LjEgbmFtZXNw YWNlcyAiOjoiLgotUGF0Y2gzOTU6IGdkYi1lbXB0eS1uYW1lc3BhY2UucGF0Y2gKLQogIyBGaXgg cmVncmVzc2lvbiBieSBweXRob24gb24gaWE2NCBkdWUgdG8gc3RhbGUgY3VycmVudCBmcmFtZS4K IFBhdGNoMzk3OiBnZGItZm9sbG93LWNoaWxkLXN0YWxlLXBhcmVudC5wYXRjaAogCkBAIC00Mjgs OCArNDIyLDExIEBAIFBhdGNoNDA3OiBnZGItbGluZW5vLW1ha2V1cC10ZXN0LnBhdGNoCiAjIFRl c3QgcG93ZXI3IHBwYyBkaXNhc3NlbWJseS4KIFBhdGNoNDA4OiBnZGItcHBjLXBvd2VyNy10ZXN0 LnBhdGNoCiAKLSMgW3BhdGNoXSB0ZXN0c3VpdGU6IEZpeCBtaXNwbGFjZWQgbGluZSBudW1iZXJz Ci1QYXRjaDQxMDogZ2RiLXRlc3RzdWl0ZS1saW5lbm8ucGF0Y2gKKyMgRml4IHNvbGliLWRpc3Bs YXkuZXhwIGNyYXNoCitQYXRjaDQxMTogZ2RiLXNvbGliLWRpc3BsYXkucGF0Y2gKKworIyBSZXZl cnQ6IEFkZCAtV3VudXNlZC1mdW5jdGlvbiB0byBjb21waWxlIGZsYWdzLgorUGF0Y2g0MTI6IGdk Yi11bnVzZWQtcmV2ZXJ0LnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6IG5jdXJzZXMtZGV2ZWwlez9f aXNhfSB0ZXhpbmZvIGdldHRleHQgZmxleCBiaXNvbiBleHBhdC1kZXZlbCV7P19pc2F9CiBSZXF1 aXJlczogcmVhZGxpbmUlez9faXNhfQpAQCAtNjQxLDcgKzYzOCw2IEBAIHJtIC1mIGdkYi9qdi1l eHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDMwNCAt cDEKICVwYXRjaDMwOSAtcDEKICVwYXRjaDMxMSAtcDEKLSVwYXRjaDMxNCAtcDEKICVwYXRjaDMx NSAtcDEKICVwYXRjaDMxNyAtcDEKICVwYXRjaDMxOCAtcDEKQEAgLTY2NSw3ICs2NjEsNiBAQCBy bSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5j CiAlcGF0Y2gzOTAgLXAxCiAlcGF0Y2gzOTEgLXAxCiAlcGF0Y2gzOTIgLXAxCi0lcGF0Y2gzOTUg LXAxCiAlcGF0Y2gzOTcgLXAxCiAlcGF0Y2g0MDAgLXAxCiAlcGF0Y2g0MDMgLXAxCkBAIC02NzYs NyArNjcxLDggQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAu YyBnZGIvcC1leHAuYwogJXBhdGNoNDA2IC1wMQogJXBhdGNoNDA3IC1wMQogJXBhdGNoNDA4IC1w MQotJXBhdGNoNDEwIC1wMQorJXBhdGNoNDExIC1wMQorJXBhdGNoNDEyIC1wMQogIyBBbHdheXMg dmVyaWZ5IGl0cyBhcHBsaWNhYmlsaXR5LgogJXBhdGNoMzkzIC1wMQogJXBhdGNoMzM1IC1wMQpA QCAtMTAwMiw2ICs5OTgsMTEgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIFRodSBKYW4g MjEgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAu NTAuMjAxMDAxMjEtMS5mYzEzCistIFVwZ3JhZGUgdG8gdGhlIEZTRiBHREIgc25hcHNob3Q6IDcu MC41MC4yMDEwMDEyMQorLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMyBjb21taXQ6IGNj ZGUxNTMwNDc5Y2M5NjYzNzQzNTEwMzgwNTdiOWRkYTkwYWEyNTEKKy0gW2V4cHItY3VtdWxhdGl2 ZV0gQXJjaGVyIGJyYW5jaCBpcyBub3cgaW5jbHVkZWQuCisKICogVHVlIEphbiAxOSAyMDEwIEph biBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMC41MC4yMDEwMDEx OC0yLmZjMTMKIC0gRml4IGZhbHNlIFBBU1MtPkZBSUwgb2YgZ2RiLmFyY2gvaTM4Ni1iaWFyY2gt Y29yZS5leHAuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCAyMjIxNzYx Li43ZmE2YTQ0IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMiArMSwy IEBACi0yZmIxYTJhYzc4YjNiZGM0OTViYmFiZDg1ZTMxMGE1ZCAgZ2RiLTcuMC41MC4yMDEwMDEx OC50YXIuYnoyCitmY2ZiZTZjY2IzNmQ4NmJjMDY4OTFmYmQ3MGYxNjY0ZCAgZ2RiLTcuMC41MC4y MDEwMDEyMS50YXIuYnoyCiAwNGU1YzRiMWI5ZTYzMzQyMmNjNDg5OTBmZTYxOTU4ZCAgbGlic3Rk YysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIK